IOSS 2.0
All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Modules Pages
Ioss_Doxygen.h
Go to the documentation of this file.
1
2// clang-format off
3
4/*! \mainpage IOSS API Documentation
5
6\section avail Availability
7
8The IOSS library source code is available on Github at
9https://github.com/sandialabs/seacas
10
11For bug reports, documentation errors, and enhancement suggestions, contact:
12- Gregory D. Sjaardema
13- WEB: https://github.com/sandialabs/seacas
14- EMAIL: gdsjaar@sandia.gov
15- EMAIL: gsjaardema@gmail.com
16
17\section db_types Database Types
18
19The IOSS system supports multiple database formats. The default format is the Sandia-developed Exodus format. The list below shows all supported
20database input and/or output formats. Not all of these may be available on all builds; the supported databases on a particular installation can be
21determined by running the `io_info --config` program.
22
23Type | Input/Output | Description
24-----------------|---------------|--------------------------
25exodus | Input/Output | Sandia-developed database system for unstructured mesh input/output (https://sandialabs.github.io/seacas-docs/sphinx/html/index.html#exodus-library)
26cgns | Input/Output | CFD General Notation System (https://cgns.github.io/)
27generated | Input | Generate an unstructured hex/shell mesh using a token string (Iogn::GeneratedMesh::GeneratedMesh)
28textmesh | Input | Generate an unstructured mesh using a token string
29heartbeat | Output | A text based output for global values
30pamgen | Input | (https://trilinos.github.io/pamgen.html)
31gen_struc | Input | Generate a structured mesh using a token string (IxJxK)
32catalyst_exodus | Output | Visualization pipeline, exodus-based
33catalyst_cgns | Output | Visualization pipeline, cgns-based
34null | Output | No data written to disk, no calculations done by ioss
35exonull | Output | No data written to disk, but uses all of the exodus io database infrastructure/calculations
36adios | Input/Output | Adaptable Input/Output system, (https://adios2.readthedocs.io/en/latest/)
37faodel | Input/Output | (https://github.com/faodel/faodel)
38exodusii | Input/Output | alias for exodus
39genesis | Input/Output | alias for exodus
40par_cgns | Input/Output | alias for parallel CGNS
41
42\section properties Properties
43
44## General Properties
45
46 Property | Value | Description
47 ----------|:--------:|------------
48 LOGGING | on/[off] | enable/disable logging of field input/output
49 LOWERCASE_VARIABLE_NAMES | [on]/off | Convert all variable names read from input database to lowercase; replace ' ' with '_'
50 LOWERCASE_DATABASE_NAMES | on/[off] | Convert all block/set names read from input database to lowercase; replace ' ' with '_'
51 USE_GENERIC_CANONICAL_NAMES | on/[off] | use `block_{id}` as canonical name of an element block instead of the name (if any) stored on the database. The database name will be an alias.
52 IGNORE_DATABASE_NAMES | on/[off] | Do not read any element block, nodeset, ... names if they exist on the database. Use only the canonical generated names (entitytype + _ + id)
53 IGNORE_ATTRIBUTE_NAMES | on/[off] | Do not read the attribute names that may exist on an input database. Instead for an element block with N attributes, the fields will be named `attribute_1` ... `attribute_N`
54 MINIMIZE_OPEN_FILES | on/[off] | If on, then close file after each timestep and then reopen on next output
55 SERIALIZE_IO | integer | The number of files that will be read/written to simultaneously in a parallel file-per-rank run.
56
57## Auto-Decomposition-Related Properties
58
59 Property | Value | Description
60-----------------|:------:|-----------------------------------------------------------
61MODEL_DECOMPOSITION_METHOD | {method} | Decompose a DB with type `MODEL` using `method`
62RESTART_DECOMPOSITION_METHOD | {method} | Decompose a DB with type `RESTART_IN` using `method`
63DECOMPOSITION_METHOD | {method} | Decompose all input DB using `method`
64PARALLEL_CONSISTENCY | [on]/off | On if the client will call Ioss functions consistently on all processors. If off, then the auto-decomp and auto-join cannot be used.
65RETAIN_FREE_NODES | [on]/off | In auto-decomp, will nodes not connected to any elements be retained.
66LOAD_BALANCE_THRESHOLD | {real} [1.4] | CGNS-Structured only -- Load imbalance permitted Load on Proc / Avg Load
67DECOMPOSITION_EXTRA | {name},{multiplier} | Specify the name of the element map or variable used if the decomposition method is `map` or `variable`. If it contains a comma, the value following the comma is used to scale (divide) the values in the map/variable. If it is 'auto', then all values will be scaled by `max_value/processorCount`
68DECOMP_OMITTED_BLOCK_IDS | {id_list} | A integer vector containing the
69element block ids that should be ignored during the parallel decomposition. The blocks will still appear in the decomposition, but will not affect the load balance. If specified via `IOSS_PROPERTIES` can be a comma-separated string of ids.
70DECOMP_OMITTED_BLOCK_NAMES | {name_list} | A comma-separated list of block names that should be ignored during the parallel decomposition. The blocks will still appear in the decomposition, but will not affect the load balance.
71
72### Valid values for Decomposition Method
73
74Method | Description
75:---------:|-------------------
76rcb | recursive coordinate bisection
77rib | recursive inertial bisection
78hsfc | hilbert space-filling curve
79metis_sfc | metis space-filling-curve
80kway | metis kway graph-based
81kway_geom | metis kway graph-based method with geometry speedup
82linear | elements in order first n/p to proc 0, next to proc 1.
83cyclic | elements handed out to id % proc_count
84random | elements assigned randomly to processors in a way that preserves balance (do not use for a real run)
85map | the specified element map contains the mapping of elements to processor. Uses 'processor_id' map by default; otherwise specify name with `DECOMPOSITION_EXTRA` property
86variable | the specified element variable contains the mapping of elements to processor. Uses 'processor_id' variable by default; otherwise specify name with `DECOMPOSITION_EXTRA` property
87external | Files are decomposed externally into a file-per-processor in a parallel run.
88
89## Output File Composition -- Single File output from parallel run instead of file-per-processor
90
91 Property | Value
92-----------------|:------:
93COMPOSE_RESTART | on/[off]
94COMPOSE_RESULTS | on/[off]
95PARALLEL_IO_MODE | netcdf4, hdf5, pnetcdf, (mpiio and mpiposix are deprecated)
96
97## Properties Related to byte size of reals and integers
98
99 Property | Value | Description
100-----------------------|:------:|-----------------------------------------------------------
101 INTEGER_SIZE_DB | [4] / 8 | byte size of integers stored on the database.
102 INTEGER_SIZE_API | [4] / 8 | byte size of integers used in api functions.
103 REAL_SIZE_DB | 4 / [8] | byte size of floating point stored on the database.
104 REAL_SIZE_API | 4 / [8] | byte size of floating point used in api functions.
105
106## Properties related to field and sideset/surface interpretation
107 Property | Value | Description
108--------------------------|:--------:|-----------------------------------------------------------
109 ENABLE_FIELD_RECOGNITION | [on]/off | Does the IOSS library combine scalar fields into higher-order fields (tensor, vector) based on suffix interpretation.
110 IGNORE_REALN_FIELDS | [off]/on | Do not recognize var_1, var_2, ..., var_n as an n-component field. Keep as n scalar fields. Currently ignored for composite fields.
111 FIELD_SUFFIX_SEPARATOR | char / '_'| The character that is used to separate the base field name from the suffix. Default is underscore.
112 FIELD_STRIP_TRAILING_UNDERSCORE | on / [off] | If `FIELD_SUFFIX_SEPARATOR` is empty and there are fields that end with an underscore, then strip the underscore. (`a_x`, `a_y`, `a_z` is vector field `a`).
113 IGNORE_ATTRIBUTE_NAMES | on/[off] | Do not read the attribute names that may exist on an input database. Instead for an element block with N attributes, the fields will be named `attribute_1` ... `attribute_N`
114 SURFACE_SPLIT_TYPE | {type} | Specify how to split sidesets into homogeneous sideblocks. Either an integer or string: 1 or `TOPOLOGY`, 2 or `BLOCK`, 3 or `NO_SPLIT`. Default is `TOPOLOGY` if not specified.
115 DUPLICATE_FIELD_NAME_BEHAVIOR | {behavior} | Determine how to handle duplicate incompatible fields on a database. Valid values are `IGNORE`, `WARNING`, or `ERROR` (default). An incompatible field is two or more fields with the same name, but different sizes or roles or types.
116
117## Output Database-Related Properties
118 Property | Value | Description
119-----------------|:------:|-----------------------------------------------------------
120 OMIT_QA_RECORDS | on/[off] | Do not output any QA records to the output database.
121 OMIT_INFO_RECORDS | on/[off] | Do not output any INFO records to the output database.
122 RETAIN_EMPTY_BLOCKS | on/[off] | If an element block is completely empty (on all ranks) should it be written to the output database.
123 VARIABLE_NAME_CASE | upper/lower | Should all output field names be converted to uppercase or lowercase. Default is leave as is.
124 FILE_TYPE | [netcdf], netcdf4, netcdf-4, hdf5 | Underlying file type (bits on disk format)
125 COMPRESSION_METHOD | [zlib], szip | The compression method to use. `szip` only available if HDF5 is built with that supported.
126 COMPRESSION_LEVEL | [0]-9 | If zlib: In the range [0..9]. A value of 0 indicates no compression, will automatically set `file_type=netcdf4`, recommend <=4
127 COMPRESSION_LEVEL | 4-32 | If szip: An even number in the range 4-32, will automatically set `file_type=netcdf4`.
128 COMPRESSION_SHUFFLE | on/[off] |to enable/disable hdf5's shuffle compression algorithm.
129 MAXIMUM_NAME_LENGTH | [32] | Maximum length of names that will be returned/passed via api call.
130 APPEND_OUTPUT | on/[off] | Append output to end of existing output database
131 APPEND_OUTPUT_AFTER_STEP | {step}| Max step to read from an input db or a db being appended to (typically used with APPEND_OUTPUT)
132 APPEND_OUTPUT_AFTER_TIME | {time}| Max time to read from an input db or a db being appended to (typically used with APPEND_OUTPUT)
133 FILE_PER_STATE | on/[off] | Put data for each output timestep into a separate file.
134 CYCLE_COUNT | {cycle} | If using FILE_PER_STATE, then use {cycle} different files and then overwrite. Otherwise, there will be a maximum of {cycle} time steps in the file. See below.
135 OVERLAY_COUNT | {overlay}| If using FILE_PER_STATE, then put {overlay} timesteps worth of data into each file before going to next file. Otherwise, each output step in the file will be overwritten {overlay} times. See below.
136 ENABLE_DATAWARP | on/[off] | If the system supports Cray DataWarp (burst buffer), should it be used for buffering output files.
137## Deprecated Database-Related Properties
138 Property | Value | Description
139-----------------|:------:|-----------------------------------------------------------
140 LOWER_CASE_VARIABLE_NAMES | [on]/off | Use LOWERCASE_VARIABLE_NAMES
141 LOWER_CASE_DATABASE_NAMES | on/[off] | Use LOWERCASE_DATABASE_NAMES
142
143### Cycle and Overlay Behavior:
144(Properties `CYCLE_COUNT`, `OVERLAY_COUNT`, and `FILE_PER_STATE`)
145The `overlay` specifies the number of output steps which will be
146overlaid on top of the currently written step before advancing to the
147next step on the database.
148
149For example, if output every 0.1 seconds and the overlay count is
150specified as 2, then IOSS will write time 0.1 to step 1 of the
151database. It will then write 0.2 and 0.3 also to step 1. It will
152then increment the database step and write 0.4 to step 2 and overlay
1530.5 and 0.6 on step 2. At the end of the analysis, (assuming it runs
154to completion), the database would have times 0.3, 0.6, 0.9,
155... However, if there were a problem during the analysis, the last
156step on the database would contain an intermediate step.
157
158The `cycle_count` specifies the number of restart steps which will be
159written to the restart database before previously written steps are
160overwritten. For example, if the `cycle` count is 5 and output is
161written every 0.1 seconds, IOSS will write data at times 0.1, 0.2,
1620.3, 0.4, 0.5 to the database. It will then overwrite the first step
163with data from time 0.6, the second with time 0.7. At time 0.8, the
164database would contain data at times 0.6, 0.7, 0.8, 0.4, 0.5. Note
165that time will not necessarily be monotonically increasing on a
166database that specifies the cycle count.
167
168The cycle count and overlay count can both be used at the same time
169also. The basic formula is:
170```
171 db_step = (((output_step - 1) / overlay) % cycle) + 1
172```
173where `output_step` is the step that this would have been on the
174database in a normal write (1,2,3,....) and `db_step` is the step
175number that this will be written to.
176
177If you only want the last step available on the database,
178use `set_cycle_count(1)`.
179
180If `FILE_PER_STATE` is specified, then `cycle` specifies the number of
181separate files which will be created and `overlay` specifies how many
182timesteps will be written to each file. If we have `cycle=2` and
183`overlay=3` and the code is outputting every 0.1 seconds, we will get
1840.1, 0.2, 0.3 in the first file; 0.4, 0.5, 0.6 in the second
185file. Then, the first file will be reopened and steps 0.7, 0.8, and
1860.9 will be written to the first file.
187
188
189## Properties for the heartbeat output
190 Property | Value | Description
191-----------------------|:------:|-----------------------------------------------------------
192 FILE_FORMAT | [default], spyhis, csv, ts_csv, text, ts_text | predefined formats for heartbeat output. The ones starting with `ts_` output timestamps.
193 FLUSH_INTERVAL | int | Minimum time interval between flushing heartbeat data to disk. Default is 10 seconds. Set to 0 to flush every step (bad performance)
194 HEARTBEAT_FLUSH_INTERVAL | int | Minimum time interval between flushing heartbeat data to disk. Default is 10 seconds (Same as FLUSH_INTERVAL, but doesn't affect other database types)
195 TIME_STAMP_FORMAT | [%H:%M:%S] | Format used to format time stamp. See strftime man page
196 SHOW_TIME_STAMP | on/off | Should the output lines be preceded by the timestamp
197 FIELD_SEPARATOR | [, ] | separator to be used between output fields.
198 FULL_PRECISION | on/[off] | output will contain as many digits as needed to fully represent the doubles value. FIELD_WIDTH will be ignored for doubles if this is specified.
199 PRECISION | -1..16 [5] | Precision used for floating point output. If set to `-1`, then the output will contain as many digits as needed to fully represent the doubles value. FIELD_WIDTH will be ignored for doubles if precision is set to -1.
200 FIELD_WIDTH | 0.. | Width of an output field. If 0, then use natural width.
201 SHOW_LABELS | on/[off] | Should each field be preceded by its name (ke=1.3e9, ie=2.0e9)
202 SHOW_LEGEND | [on]/off | Should a legend be printed at the beginning of the output showing the field names for each column of data.
203 SHOW_TIME_FIELD | on/[off] | Should the current analysis time be output as the first field.
204
205## Experimental / Special Purpose
206
207 Property | Value | Description
208-----------------------|:------:|-----------------------------------------------------------
209MEMORY_READ | on/[off] | experimental. Read a file into memory at open time, operate on it without disk accesses.
210MEMORY_WRITE | on/[off] | experimental. Open and read a file into memory or create and optionally write it back out to disk when nc_close() is called.
211ENABLE_FILE_GROUPS | on/[off] | experimental. Opens database in netcdf-4 non-classic mode which is what is required to support groups at netCDF level.
212MINIMAL_NEMESIS_INFO | on/[off] | special case, omit all nemesis data except for nodal communication map
213OMIT_EXODUS_NUM_MAPS | on/[off] | special case, do not output the node and element numbering map.
214EXODUS_CALL_GET_ALL_TIMES| [on] / off | special case -- should the `ex_get_all_times()` function be called. See below.
215
216* `EXODUS_CALL_GET_ALL_TIMES`: Typically only used in `isSerialParallel`
217mode and the client is responsible for making sure that the step times
218are handled correctly. All databases will know about the number of
219timesteps, but if the `ex_get_all_times()` function call is skipped, then
220the times on that database will all be zero. The use case is that in `isSerialParallel`,
221each call to `ex_get_all_times()` for all files is performed
222sequentially, so if you have hundreds to thousands of files, the time
223for the call is additive and since timesteps are record variables in
224netCDF, accessing the data for all timesteps involves lseeks
225throughout the file.
226
227
228## Debugging / Profiling
229
230 Property | Value | Description
231 ----------|:--------:|------------
232 LOGGING | on/[off] | enable/disable logging of field input/output
233 ENABLE_TRACING | on/[off] | show memory and elapsed time during some IOSS calls (mainly decomp).
234 DECOMP_SHOW_PROGRESS | on/[off] | use `ENABLE_TRACING`.
235 DECOMP_SHOW_HWM | on/[off] | show high-water memory during autodecomp
236 IOSS_TIME_FILE_OPEN_CLOSE | on/[off] | show elapsed time during parallel-io file open/close/create/flush
237 CHECK_PARALLEL_CONSISTENCY | on/[off] | check Ioss::GroupingEntity parallel consistency
238 TIME_STATE_INPUT_OUTPUT | on/[off] | show the elapsed time for reading/writing each timestep's data
239
240## Setting properties via an environment variable
241
242Although the properties are usually accessed internally in the
243application calling the IOSS library, it is possible to set the
244properties externally prior to running the application via the setting
245of the environment variable `IOSS_PROPERTIES`. The value of the
246variable is one or more colon-separated property/property-value pairs.
247For example, to set the `DECOMPOSITION_METHOD` and the `FILE_TYPE`
248externally, the following would be used:
249```
250 export IOSS_PROPERTIES="DECOMPOSITION_METHOD=rib:FILE_TYPE=netcdf4"
251```
252If the environment variable is set correctly, there should be an
253informational message output during running of the application similar
254to:
255```
256 IOSS: Adding property 'DECOMPOSITION_METHOD' with value 'rib'
257 IOSS: Adding property 'FILE_TYPE' with value 'netcdf4'
258```
259
260\section license License
261The IOSS library is licensed under the BSD open source license.
262
263 Copyright(C) 1999-2021 National Technology & Engineering Solutions
264 of Sandia, LLC (NTESS). Under the terms of Contract DE-NA0003525 with
265 NTESS, the U.S. Government retains certain rights in this software.
266
267 See packages/seacas/LICENSE for details
268
269 Redistribution and use in source and binary forms, with or without
270 modification, are permitted provided that the following conditions are
271 met:
272
273 * Redistributions of source code must retain the above copyright
274 notice, this list of conditions and the following disclaimer.
275
276 * Redistributions in binary form must reproduce the above
277 copyright notice, this list of conditions and the following
278 disclaimer in the documentation and/or other materials provided
279 with the distribution.
280
281 * Neither the name of NTESS nor the names of its
282 contributors may be used to endorse or promote products derived
283 from this software without specific prior written permission.
284
285 THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
286 "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
287 LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
288 A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
289 OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
290 SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
291 LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
292 DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
293 THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
294 (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
295 OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
296
297*/
298
299// clang-format on