Exodus  7.22
Data File Utilities

This section describes data file utility functions for creating opening a file, initializing a file with global parameters, reading writing information text, inquiring on parameters stored in the data file, and error reporting. More...

Macros

#define ex_create(path, mode, comp_ws, io_ws)   ex_create_int(path, mode, comp_ws, io_ws, EX_API_VERS_NODOT)
 
#define ex_open(path, mode, comp_ws, io_ws, version)   ex_open_int(path, mode, comp_ws, io_ws, version, EX_API_VERS_NODOT)
 

Functions

int ex_close (int exoid)
 
int ex_copy (int in_exoid, int out_exoid)
 
int ex_copy_transient (int in_exoid, int out_exoid)
 
int ex_create_int (const char *path, int cmode, int *comp_ws, int *io_ws, int run_version)
 
int ex_get_group_id (int parent_id, const char *group_name, int *group_id)
 
int ex_get_group_ids (int parent_id, int *num_groups, int *group_ids)
 
int ex_get_info (int exoid, char **info)
 
int ex_get_qa (int exoid, char *qa_record[][4])
 
int ex_open_int (const char *path, int mode, int *comp_ws, int *io_ws, float *version, int run_version)
 
int ex_put_info (int exoid, int num_info, char *info[])
 
int ex_put_qa (int exoid, int num_qa_records, char *qa_record[][4])
 
int ex_update (int exoid)
 
int ex_get_num_props (int exoid, ex_entity_type obj_type)
 
int ex_large_model (int exoid)
 
size_t ex_header_size (int exoid)
 
void ex_err (const char *module_name, const char *message, int err_num)
 
void ex_err_fn (int exoid, const char *module_name, const char *message, int err_num)
 
void ex_set_err (const char *module_name, const char *message, int err_num)
 
const char * ex_strerror (int err_num)
 
void ex_get_err (const char **msg, const char **func, int *err_num)
 
int ex_opts (int options)
 
int ex_inquire (int exoid, ex_inquiry req_info, void_int *, float *, char *)
 
int64_t ex_inquire_int (int exoid, ex_inquiry req_info)
 
int ex_int64_status (int exoid)
 
int ex_set_int64_status (int exoid, int mode)
 
void ex_print_config (void)
 
int ex_set_max_name_length (int exoid, int length)
 
int ex_set_option (int exoid, ex_option_type option, int option_value)
 
int ex_cvt_nodes_to_sides (int exoid, void_int *num_elem_per_set, void_int *num_nodes_per_set, void_int *side_sets_elem_index, void_int *side_sets_node_index, void_int *side_sets_elem_list, void_int *side_sets_node_list, void_int *side_sets_side_list)
 
nc_type nc_flt_code (int exoid)
 
int ex__comp_ws (int exoid)
 
int ex__is_parallel (int exoid)
 
int ex_set_parallel (int exoid, int is_parallel)
 
void ex__reset_error_status ()
 
int ex__check_file_type (const char *path, int *type)
 
void ex__update_max_name_length (int exoid, int length)
 
int ex__get_cpu_ws (void)
 
void ex__iqsort (int v[], int iv[], int N)
 

Variables

const char exodus_unused_symbol_dummy_1
 

Detailed Description

This section describes data file utility functions for creating opening a file, initializing a file with global parameters, reading writing information text, inquiring on parameters stored in the data file, and error reporting.

Macro Definition Documentation

◆ ex_create

◆ ex_open

Function Documentation

◆ ex__check_file_type()

int ex__check_file_type ( const char *  path,
int *  type 
)

◆ ex__comp_ws()

int ex__comp_ws ( int  exoid)

ex__comp_ws() returns 4 (i.e. sizeof(float)) or 8 (i.e. sizeof(double)), depending on the value of floating point word size used to initialize the conversion facility for this file id (exoid).

Parameters
exoidinteger which uniquely identifies the file of interest.

◆ ex__get_cpu_ws()

int ex__get_cpu_ws ( void  )

◆ ex__iqsort()

void ex__iqsort ( int  v[],
int  iv[],
int  N 
)

The following 'indexed qsort' routine is modified from Sedgewicks algorithm It selects the pivot based on the median of the left, right, and center values to try to avoid degenerate cases ocurring when a single value is chosen. It performs a quicksort on intervals down to the EX_QSORT_CUTOFF size and then performs a final insertion sort on the almost sorted final array. Based on data in Sedgewick, the EX_QSORT_CUTOFF value should be between 5 and 20.

See Sedgewick for further details Define DEBUG_QSORT at the top of this file and recompile to compile in code that verifies that the array is sorted.

NOTE: The 'int' implementation below assumes that both the items being sorted and the number of items being sorted are both representable as 'int'.

◆ ex__is_parallel()

int ex__is_parallel ( int  exoid)

ex__is_parallel() returns 1 (true) or 0 (false) depending on whether the file was opened in parallel or serial/file-per-processor mode. Note that in this case parallel assumes the output of a single file, not a parallel run using file-per-processor.

Parameters
exoidinteger which uniquely identifies the file of interest.

◆ ex__reset_error_status()

void ex__reset_error_status ( void  )

◆ ex__update_max_name_length()

void ex__update_max_name_length ( int  exoid,
int  length 
)

◆ ex_close()

int ex_close ( int  exoid)

The function ex_close() updates and then closes an open exodus file.

Returns
In case of an error, ex_close() returns a negative number; a warning will return a positive number. Possible causes of errors include:
Parameters
exoidexodus file ID returned from a previous call to ex_create() or ex_open().

The following code segment closes an open exodus file:

Examples
/test/create_mesh.c, /test/CreateEdgeFace.c, /test/rd_wt_mesh.c, /test/ReadEdgeFace.c, /test/test-empty.c, /test/test_nemesis.c, /test/test_ts_files.c, /test/test_ts_nvar.c, /test/test_ts_nvar_rd.c, /test/test_ts_partial_nvar.c, /test/test_ts_partial_nvar_rd.c, /test/testcp.c, /test/testcp_nl.c, /test/testcp_tran.c, /test/testcpd.c, /test/testrd-groups.c, /test/testrd-long-name.c, /test/testrd-nfaced.c, /test/testrd-nsided.c, /test/testrd.c, /test/testrd1.c, /test/testrd_nc.c, /test/testrd_par.c, /test/testrd_ss.c, /test/testrdd.c, /test/testrdwt.c, /test/testwt-compress.c, /test/testwt-groups.c, /test/testwt-long-name.c, /test/testwt-nface-nside.c, /test/testwt-nfaced.c, /test/testwt-nsided.c, /test/testwt-one-attrib.c, /test/testwt-oned.c, /test/testwt-partial.c, /test/testwt-results.c, /test/testwt-zeroe.c, /test/testwt-zeron.c, /test/testwt.c, /test/testwt1.c, /test/testwt2.c, /test/testwt_clb.c, /test/testwt_nc.c, /test/testwt_nossnsdf.c, /test/testwt_ss.c, /test/testwtd.c, /test/testwtm.c, and /test/twod.c.

◆ ex_copy()

int ex_copy ( int  in_exoid,
int  out_exoid 
)

◆ ex_copy_transient()

int ex_copy_transient ( int  in_exoid,
int  out_exoid 
)

◆ ex_create_int()

int ex_create_int ( const char *  path,
int  cmode,
int *  comp_ws,
int *  io_ws,
int  run_version 
)
Note
The ex_create_int() is an internal function called by ex_create(). The user should call ex_create() and not ex_create_int().

The function ex_create() creates a new exodus file and returns an ID that can subsequently be used to refer to the file.

All floating point values in an exodus file are stored as either 4-byte (float) or 8-byte (double) numbers; no mixing of 4- and 8-byte numbers in a single file is allowed. An application code can compute either 4- or 8-byte values and can designate that the values be stored in the exodus file as either 4- or 8-byte numbers; conversion between the 4- and 8-byte values is performed automatically by the API routines. Thus, there are four possible combinations of compute word size and storage (or I/O) word size.

Returns
In case of an error, ex_create() returns a negative number. Possible causes of errors include:
  • Passing a file name that includes a directory that does not exist.
  • Specifying a file name of a file that exists and also specifying a no clobber option.
  • Attempting to create a file in a directory without permission to create files there.
  • Passing an invalid file clobber mode.
Parameters
pathThe file name of the new exodus file. This can be given as either an absolute path name (from the root of the file system) or a relative path name (from the current directory).
cmodeMode. Use one of the following predefined constants:
  • EX_NOCLOBBER To create the new file only if the given file name does not refer to a file that already exists.
  • EX_CLOBBER To create the new file, regardless of whether a file with the same name already exists. If a file with the same name does exist, its contents will be erased.
  • EX_64BIT_OFFSET To create a model that can store individual datasets larger than 2 gigabytes. This modifies the internal storage used by exodusII and also puts the underlying NetCDF file into the 64-bit offset' mode. See largemodel for more details on this mode. A large model file will also be created if the environment variable EXODUS_LARGE_MODEL is defined in the users environment. A message will be printed to standard output if this environment variable is found. EX_LARGE_MODEL is alias.
  • EX_64BIT_DATA To create a model using the CDF5 format which uses the classic model but has 64-bit dimensions and sizes. This type will also be created if the environment variable EXODUS_NETCDF5 is defined in the users environment. A message will be printed to standard output if this environment variable is found.
  • EX_NETCDF4 To create a model using the HDF5-based NetCDF-4 output. An HDF5-based NetCDF-4 file will also be created if the environment variable EXODUS_NETCDF4 is defined in the users environment. A message will be printed to standard output if this environment variable is found.
  • EX_NOSHARE Do not open the underlying NetCDF file in share mode. See the NetCDF documentation for more details.
  • EX_SHARE Do open the underlying NetCDF file in share mode. See the NetCDF documentation for more details.
[in,out]comp_wsThe word size in bytes (0, 4 or 8) of the floating point variables used in the application program. If 0 (zero) is passed, the default sizeof(float) will be used and returned in this variable. WARNING: all exodus functions requiring floats must be passed floats declared with this passed in or returned compute word size (4 or 8).}
io_wsThe word size in bytes (4 or 8) of the floating point data as they are to be stored in the exodus file.
run_version(internally generated) used to verify compatibility of library and include files.

The following code segment creates an exodus file called test.exo:

#include "exodusII.h"
int CPU_word_size, IO_word_size, exoid;
CPU_word_size = sizeof(float); /* use float or double */
IO_word_size = 8; /* store variables as doubles */
/* create exodus file */
exoid = ex_create ("test.exo" /* filename path */
EX_CLOBBER, /* create mode */
&CPU_word_size, /* CPU float word size in bytes */
&IO_word_size); /* I/O float word size in bytes */

◆ ex_cvt_nodes_to_sides()

int ex_cvt_nodes_to_sides ( int  exoid,
void_int num_elem_per_set,
void_int num_nodes_per_set,
void_int side_sets_elem_index,
void_int side_sets_node_index,
void_int side_sets_elem_list,
void_int side_sets_node_list,
void_int side_sets_side_list 
)

The function ex_cvt_nodes_to_sides() is used to convert a side set node list to a side set side list. This routine is provided for application programs that utilize side sets defined by nodes (as was done previous to release 2.0) rather than local faces or edges. The application program must allocate memory for the returned array of sides. The length of this array is the same as the length of the concatenated side sets element list, which can be determined with a call to ex_inquire() or ex_inquire_int().

Returns
In case of an error, ex_cvt_nodes_to_sides() returns a negative number; a warning will return a positive number. Possible causes of errors include:
  • a warning value is returned if no side sets are stored in the file.
  • because the faces of a wedge require a different number of nodes to describe them (quadrilateral vs. triangular faces), the function will abort with a fatal return code if a wedge is encountered in the side set element list.
Parameters
[in]exoidexodus file ID returned from a previous call to ex_create() or ex_open().
[in]num_elem_per_setArray containing the number of sides for each set. The number of sides is equal to the number of elements for each set.
[in]num_nodes_per_setArray containing the number of nodes for each set.
[in]side_sets_elem_indexArray containing indices into the side_sets_elem_list which are the locations of the first element for each set. These indices are 0-based. Unused.
[in]side_sets_node_indexArray containing indices into the side_sets_node_list which are the locations of the first node for each set. These indices are 0-based. Unused.
[in]side_sets_elem_listArray containing the elements for all side sets. Internal element IDs are used in this list (see Section LocalElementIds).
[in]side_sets_node_listArray containing the nodes for all side sets. Internal node IDs are used in this list (see Section LocalNodeIds).
[out]side_sets_side_listReturned array containing the sides for all side sets.

The following code segment will convert side sets described by nodes to side sets described by local side numbers:

int error, exoid, ids[2], num_side_per_set[2],
num_nodes_per_set[2], elem_ind[2], node_ind[2],
elem_list[4], node_list[8], el_lst_len, *side_list;
ids[0] = 30 ; ids[1] = 31;
num_side_per_set[0] = 2; num_side_per_set[1] = 2;
num_nodes_per_set[0] = 4; num_nodes_per_set[1] = 4;
elem_ind[0] = 0; elem_ind[1] = 2;
node_ind[0] = 0; node_ind[1] = 4;
/* side set #1 */
elem_list[0] = 2; elem_list[1] = 2;
node_list[0] = 8; node_list[1] = 5;
node_list[2] = 6; node_list[3] = 7;
/* side set #2 */
elem_list[2] = 1; elem_list[3] = 2;
node_list[4] = 2; node_list[5] = 3;
node_list[6] = 7; node_list[7] = 8;
/* side set element list is same length as side list */
side_list = (int *) calloc (el_lst_len, sizeof(int));
ex_cvt_nodes_to_sides(exoid, num_side_per_set, num_nodes_per_set,
elem_ind, node_ind, elem_list,
node_list, side_list);

Algorithm:

  Read elem_block_ids --> elem_blk_id[array]

  Read element block parameters --> elem_blk_parms[array]

  Determine total number of elements in side set by summing num_elem_per_set

  Build side set element to side set node list index --> ss_elem_node_ndx[array]

  For each element in the side_set_elem_list  {
    If Jth element is not in current element block (e.g. J>elem_ctr) {
      get element block parameters (num_elem_in_blk, ...)
      elem_ctr += num_elem_in_blk

      free old connectity array space
      allocate connectivity array: size=num_elem_in_blk*num_nodes_per_elem
      get connectivity array
    }

    If Jth element is in current element block (e.g. J<=elem_ctr) {
      For each node in element (linear search of up to num_nodes_per_elem) {
        If side set element node[1] == element node[i] {
          Case element type = Hex {
            If side set element node[2] == element node[Hex_table[i,1]]
              Jth side = Hex_table[i,2]

             break
          }
          Case element type = Wedge {
            If side set element node[2] == element node[Wedge_table[i,1]]
              Jth side = Wedge_table[i,2]

            break
          }
        }
      }
    }
  }
Examples
/test/testwt1.c, /test/testwt_nossnsdf.c, /test/testwt_ss.c, and /test/testwtm.c.

◆ ex_err()

void ex_err ( const char *  module_name,
const char *  message,
int  err_num 
)

◆ ex_err_fn()

void ex_err_fn ( int  exoid,
const char *  module_name,
const char *  message,
int  err_num 
)

◆ ex_get_err()

void ex_get_err ( const char **  msg,
const char **  func,
int *  err_num 
)

◆ ex_get_group_id()

int ex_get_group_id ( int  parent_id,
const char *  group_name,
int *  group_id 
)

Given an exoid and group name (NULL gets root group), return id of that group. If the name is NULL, return the root group. If the name contains "/", then the name is assumed to be a full path name and all groups in the file are searched. Otherwise, the name is assumed to be the name of a child group of exoid

◆ ex_get_group_ids()

int ex_get_group_ids ( int  parent_id,
int *  num_groups,
int *  group_ids 
)

Given a file or group 'parent' id, return the number of child groups and the ids of the child groups below the parent. If num_groups is NULL, do not return count; if group_ids is NULL, do not return ids.

Examples
/test/testrd-groups.c.

◆ ex_get_info()

int ex_get_info ( int  exoid,
char **  info 
)

The function ex_get_info() reads information records from the database. The records are MAX_LINE_LENGTH character strings. Memory must be allocated for the information records before this call is made. The number of records can be determined by invoking ex_inquire() or ex_inquire_int().

Returns
In case of an error, ex_get_info() returns a negative number; a warning will return a positive number. Possible causes of errors include:
  • data file not properly opened with call to ex_create() or ex_open()
  • a warning value is returned if no information records were stored.
Parameters
[in]exoidexodus file ID returned from a previous call to ex_create() or ex_open().
[out]infoReturned array containing the information records.

The following code segment will determine the number of information records and read them from an open exodus file :

int error, exoid, num_info;
char *info[MAXINFO];
/* read information records */
for (i=0; i < num_info; i++) {
info[i] = (char *) calloc ((EX_MAX_LINE_LENGTH+1), sizeof(char));
}
Examples
/test/testrd-groups.c, /test/testrd-long-name.c, /test/testrd-nfaced.c, /test/testrd-nsided.c, /test/testrd.c, /test/testrd1.c, /test/testrd_nc.c, /test/testrd_par.c, /test/testrdd.c, and /test/testrdwt.c.

◆ ex_get_num_props()

int ex_get_num_props ( int  exoid,
ex_entity_type  obj_type 
)

◆ ex_get_qa()

int ex_get_qa ( int  exoid,
char *  qa_record[][4] 
)

The function ex_get_qa() reads the QA records from the database. Each QA record contains four MAX_STR_LENGTH byte character strings. The character strings are:

  • the analysis code name
  • the analysis code QA descriptor
  • the analysis date
  • the analysis time

Memory must be allocated for the QA records before this call is made. The number of QA records can be determined by invoking ex_inquire().

Returns
In case of an error, ex_get_qa() returns a negative number; a warning will return a positive number. Possible causes of errors include:
  • data file not properly opened with call to ex_create() or ex_open()
  • a warning value is returned if no QA records were stored.
Parameters
[in]exoidexodus file ID returned from a previous call to ex_create() or ex_open().
[out]qa_recordReturned array containing the QA records.

The following will determine the number of QA records and read them from the open exodus file:

int num_qa_rec, error, exoid
char *qa_record[MAX_QA_REC][4];
/* read QA records */
for (i=0; i<num_qa_rec; i++) {
for (j=0; j<4; j++)
qa_record[i][j] = (char *) calloc ((MAX_STR_LENGTH+1), sizeof(char));
}
error = ex_get_qa (exoid, qa_record);
Examples
/test/testrd-groups.c, /test/testrd-long-name.c, /test/testrd-nfaced.c, /test/testrd-nsided.c, /test/testrd.c, /test/testrd1.c, /test/testrd_nc.c, /test/testrd_par.c, /test/testrdd.c, and /test/testrdwt.c.

◆ ex_header_size()

size_t ex_header_size ( int  exoid)

◆ ex_inquire()

int ex_inquire ( int  exoid,
ex_inquiry  req_info,
void_int ret_int,
float *  ret_float,
char *  ret_char 
)

The function ex_inquire() is used to inquire values of certain data entities in an exodus file. Memory must be allocated for the returned values before this function is invoked.query database.

See also
ex_inquire_int(), ex_inquiry.
Returns
In case of an error, ex_inquire() returns a negative number; a warning will return a positive number. Possible causes of errors include:
  • data file not properly opened with call to ex_create() or ex_open().
  • requested information not stored in the file.
  • invalid request flag.
Parameters
[in]exoidexodus file ID returned from a previous call to ex_create() or ex_open().
[in]req_infoA flag of type ex_inquiry which designates what information is requested. It must be one of the following constants in the table below.
[out]ret_intReturned integer, if an integer value is requested (according to req_info); otherwise, supply a dummy argument.
[out]ret_floatReturned float, if a float value is requested (according to req_info); otherwise, supply a dummy argument. This argument is always a float even if the database IO and/or CPU word size is a double.
[out]ret_charReturned character string, if a character value is requested (according to req_info); otherwise, supply a dummy argument.

As an example, the following will return the number of element block properties stored in the exodus file :

#include "exodusII.h"
int error, exoid, num_props;
float fdum;
char *cdum;
/* determine the number of element block properties */
&fdum, cdum);
/* ...Another way to get the same information */
Examples
/test/ReadEdgeFace.c, /test/testcp.c, /test/testcp_nl.c, /test/testcp_tran.c, /test/testcpd.c, /test/testrd-groups.c, /test/testrd-long-name.c, /test/testrd-nfaced.c, /test/testrd-nsided.c, /test/testrd.c, /test/testrd1.c, /test/testrd_nc.c, /test/testrd_par.c, /test/testrd_ss.c, /test/testrdd.c, and /test/testrdwt.c.

◆ ex_inquire_int()

int64_t ex_inquire_int ( int  exoid,
ex_inquiry  req_info 
)

A variant of ex_inquire() which queries integer-valued information only.

See also
ex_inquire().
Parameters
[in]exoidexodus file ID returned from a previous call to ex_create() or ex_open().
[in]req_infoA flag of type ex_inquiry which designates what information is requested. (See ex_inquire() documentation)
Returns
result of inquiry.

As an example, the following will return the number of nodes, elements, and element blocks stored in the exodus file :

#include "exodusII.h"
int exoid;
int num_nodes = ex_inquire_int(exoid, EX_INQ_NODES);
int num_elems = ex_inquire_int(exoid, EX_INQ_ELEM);
Examples
/test/rd_wt_mesh.c, /test/ReadEdgeFace.c, /test/test_ts_nvar.c, /test/test_ts_nvar_rd.c, /test/test_ts_partial_nvar.c, /test/test_ts_partial_nvar_rd.c, /test/testrd-groups.c, /test/testrd-long-name.c, and /test/testwt-one-attrib.c.

◆ ex_int64_status()

int ex_int64_status ( int  exoid)

ex_int64_status() returns an int that can be tested against the defines listed below to determine which, if any, 'types' in the database are to be stored as int64 types and which, if any, types are passed/returned as int64 types in the API

Defines:
EX_MAPS_INT64_DB All maps (id, order, ...) store int64_t values
EX_IDS_INT64_DB All entity ids (sets, blocks, maps) are int64_t values
EX_BULK_INT64_DB All integer bulk data (local indices, counts, maps); not ids
EX_ALL_INT64_DB (EX_MAPS_INT64_DB | EX_IDS_INT64_DB | EX_BULK_INT64_DB)
EX_MAPS_INT64_API All maps (id, order, ...) passed as int64_t values
EX_IDS_INT64_API All entity ids (sets, blocks, maps) are passed as int64_t values
EX_BULK_INT64_API All integer bulk data (local indices, counts, maps); not ids
EX_INQ_INT64_API Integers passed to/from ex_inquire() are int64_t
EX_ALL_INT64_API (EX_MAPS_INT64_API | EX_IDS_INT64_API | EX_BULK_INT64_API |

EX_INQ_INT64_API) |

◆ ex_large_model()

int ex_large_model ( int  exoid)

Determine whether the new large model storage is being used in this file, or old method. Basically, the difference is whether the coordinates and nodal variables are stored in a blob (xyz components together) or as a variable per component per nodal_variable.

◆ ex_open_int()

int ex_open_int ( const char *  path,
int  mode,
int *  comp_ws,
int *  io_ws,
float *  version,
int  run_version 
)
Note
The ex_open_int() is an internal function called by ex_open(). The user should call ex_open() and not ex_open_int().

The function ex_open() opens an existing exodus file and returns an ID that can subsequently be used to refer to the file, the word size of the floating point values stored in the file, and the version of the exodus database (returned as a float'', regardless of the compute or I/O word size). Multiple files may beopen'' simultaneously.

Returns
In case of an error, ex_open() returns a negative number. Possible causes of errors include:
  • The specified file does not exist.
  • The mode specified is something other than the predefined constant EX_READ or EX_WRITE.
  • Database version is earlier than 2.0.
Parameters
pathThe file name of the exodus file. This can be given as either an absolute path name (from the root of the file system) or a relative path name (from the current directory).
modeAccess mode. Use one of the following predefined constants:
  • EX_READ To open the file just for reading.
  • EX_WRITE To open the file for writing and reading.
[in,out]comp_wsThe word size in bytes (0, 4 or 8) of the floating point variables used in the application program. If 0 (zero) is passed, the default size of floating point values for the machine will be used and returned in this variable. WARNING: all exodus functions requiring reals must be passed reals declared with this passed in or returned compute word size (4 or 8).
[in,out]io_wsThe word size in bytes (0, 4 or 8) of the floating point data as they are stored in the exodus file. If the word size does not match the word size of data stored in the file, a fatal error is returned. If this argument is 0, the word size of the floating point data already stored in the file is returned.
[out]versionReturned exodus database version number. Note that this is always a float, never a double.
[in]run_versionInternally generated to verify library compatibility.

The following opens an exodus file named test.exo for read only, using default settings for compute and I/O word sizes:

int CPU_word_size,IO_word_size, exoid;
float version;
CPU_word_size = sizeof(float); /* float or double */
IO_word_size = 0; /* use what is stored in file */
/* open exodus files */
exoid = ex_open ("test.exo", /* filename path */
EX_READ, /* access mode = READ */
&CPU_word_size, /* CPU word size */
&IO_word_size, /* IO word size */
&version); /* ExodusII library version */

◆ ex_opts()

int ex_opts ( int  options)

The function ex_opts() is used to set message reporting options.

Returns
Returns previous value for the message reporting option.
Parameters
[in]optionsInteger option value. Current options are shown in the table below.
EX_ABORT Causes fatal errors to force program exit. (Default is false.)
EX_DEBUG Causes certain messages to print for debug use. (Default is false.)
EX_VERBOSECauses all error messages to print when true, otherwise no error messages will print. (Default is false.)
Note
Values may be OR'ed together to provide any combination of these capabilities.

For example, the following will cause all messages to print and will cause the program to exit upon receipt of fatal error:

Examples
/test/create_mesh.c, /test/CreateEdgeFace.c, /test/rd_wt_mesh.c, /test/test-empty.c, /test/test_ts_files.c, /test/test_ts_nvar_rd.c, /test/test_ts_partial_nvar.c, /test/test_ts_partial_nvar_rd.c, /test/testcp.c, /test/testcp_nl.c, /test/testcp_tran.c, /test/testcpd.c, /test/testrd-groups.c, /test/testrd-long-name.c, /test/testrd-nfaced.c, /test/testrd-nsided.c, /test/testrd.c, /test/testrd1.c, /test/testrd_nc.c, /test/testrd_par.c, /test/testrd_ss.c, /test/testrdd.c, /test/testrdwt.c, /test/testwt-compress.c, /test/testwt-groups.c, /test/testwt-long-name.c, /test/testwt-nface-nside.c, /test/testwt-nfaced.c, /test/testwt-nsided.c, /test/testwt-one-attrib.c, /test/testwt-oned.c, /test/testwt-partial.c, /test/testwt-results.c, /test/testwt-zeroe.c, /test/testwt-zeron.c, /test/testwt.c, /test/testwt1.c, /test/testwt2.c, /test/testwt_clb.c, /test/testwt_nc.c, /test/testwt_nossnsdf.c, /test/testwt_ss.c, /test/testwtd.c, /test/testwtm.c, and /test/twod.c.

◆ ex_print_config()

void ex_print_config ( void  )

◆ ex_put_info()

int ex_put_info ( int  exoid,
int  num_info,
char *  info[] 
)

The function ex_put_info() writes information records to the database. The records are MAX_LINE_LENGTH character strings.

In case of an error, ex_put_info() returns a negative number; a warning will return a positive number. Possible causes of errors include:

  • data file not properly opened with call to ex_create() or ex_open()
  • data file opened for read only.
  • information records already exist in file.
Parameters
[in]exoidexodus file ID returned from a previous call to ex_create() or ex_open().
[in]num_infoThe number of information records.
[in]infoArray containing the information records. To only define the number of info records instead of defining and outputting, pass NULL for info argument.

The following code will write out three information records to an open exodus file -

int error, exoid, num_info;
char *info[3];
/* write information records */
num_info = 3;
info[0] = "This is the first information record.";
info[1] = "This is the second information record.";
info[2] = "This is the third information record.";
error = ex_put_info(exoid, num_info, info);

The following code will first tell the database that there are three information records, and then later actually output those records.

int error, exoid, num_info;
char *info[3];
/* Define the number of information records that will be written
later. */
num_info = 3;
error = ex_put_info(exoid, num_info, NULL);
/* Now, actually write the information records */
info[0] = "This is the first information record.";
info[1] = "This is the second information record.";
info[2] = "This is the third information record.";
error = ex_put_info(exoid, num_info, info);
Examples
/test/test_ts_files.c, /test/testrdwt.c, /test/testwt-compress.c, /test/testwt-groups.c, /test/testwt-long-name.c, /test/testwt-nface-nside.c, /test/testwt-nfaced.c, /test/testwt-nsided.c, /test/testwt-oned.c, /test/testwt-partial.c, /test/testwt-zeroe.c, /test/testwt-zeron.c, /test/testwt.c, /test/testwt1.c, /test/testwt2.c, /test/testwt_clb.c, /test/testwt_nc.c, /test/testwt_nossnsdf.c, /test/testwt_ss.c, /test/testwtd.c, and /test/testwtm.c.

◆ ex_put_qa()

int ex_put_qa ( int  exoid,
int  num_qa_records,
char *  qa_record[][4] 
)

The function ex_put_qa() writes the QA records to the database. Each QA record contains four MAX_STR_LENGTH byte character strings. The character strings are:

  • the analysis code name
  • the analysis code QA descriptor
  • the analysis date
  • the analysis time
Returns
In case of an error, ex_put_qa() returns a negative number; a warning will return a positive number. Possible causes of errors include:
  • data file not properly opened with call to ex_create() or ex_open()
  • data file opened for read only.
  • QA records already exist in file.
Parameters
[in]exoidexodus file ID returned from a previous call to ex_create() or ex_open().
[in]num_qa_recordsThe number of QA records.
[in]qa_recordArray containing the QA records. To only define the number of qa records instead of defining and outputting, pass NULL for qa_record argument.

The following code segment will write out two QA records:

int num_qa_rec, error, exoid;
char *qa_record[2][4];
/* write QA records */
num_qa_rec = 2;
qa_record[0][0] = "TESTWT1";
qa_record[0][1] = "testwt1";
qa_record[0][2] = "07/07/93";
qa_record[0][3] = "15:41:33";
qa_record[1][0] = "FASTQ";
qa_record[1][1] = "fastq";
qa_record[1][2] = "07/07/93";
qa_record[1][3] = "16:41:33";
error = ex_put_qa (exoid, num_qa_rec, qa_record);
Examples
/test/test_ts_files.c, /test/testrdwt.c, /test/testwt-compress.c, /test/testwt-groups.c, /test/testwt-long-name.c, /test/testwt-nface-nside.c, /test/testwt-nfaced.c, /test/testwt-nsided.c, /test/testwt-oned.c, /test/testwt-partial.c, /test/testwt-zeroe.c, /test/testwt-zeron.c, /test/testwt.c, /test/testwt1.c, /test/testwt2.c, /test/testwt_clb.c, /test/testwt_nc.c, /test/testwt_nossnsdf.c, /test/testwt_ss.c, /test/testwtd.c, and /test/testwtm.c.

◆ ex_set_err()

void ex_set_err ( const char *  module_name,
const char *  message,
int  err_num 
)

◆ ex_set_int64_status()

int ex_set_int64_status ( int  exoid,
int  mode 
)

ex_set_int64_status() sets the value of the INT64_API flags which specify how integer types are passed/returned as int64 types in the API

Mode can be one of:
0 All integers are passed as int32_t values.
EX_MAPS_INT64_API All maps (id, order, ...) passed as int64_t values
EX_IDS_INT64_API All entity ids (sets, blocks, maps) are passed as int64_t values
EX_BULK_INT64_API All integer bulk data (local indices, counts, maps); not ids
EX_INQ_INT64_API Integers passed to/from ex_inquire() are int64_t
EX_ALL_INT64_API (EX_MAPS_INT64_API | EX_IDS_INT64_API | EX_BULK_INT64_API |

EX_INQ_INT64_API) |

◆ ex_set_max_name_length()

int ex_set_max_name_length ( int  exoid,
int  length 
)

◆ ex_set_option()

int ex_set_option ( int  exoid,
ex_option_type  option,
int  option_value 
)

◆ ex_set_parallel()

int ex_set_parallel ( int  exoid,
int  is_parallel 
)
Note
Do not use this unless you know what you are doing and why you are doing it. One use is if calling ex_get_partial_set() in a serial mode (proc 0 only) on a file opened in parallel. Make sure to reset the value to original value after done with special case...

ex_set_parallel() sets the parallel setting for a file. returns 1 (true) or 0 (false) depending on the current setting.

Parameters
exoidinteger which uniquely identifies the file of interest.
is_parallel1 if parallel, 0 if serial.

◆ ex_strerror()

const char * ex_strerror ( int  err_num)
Undocumented:
Returns a pointer to a string which gives a text description of the error code err_num. If the error code refers to a NetCDF error, then that string is returned.
std::ostringstream errmsg;
/* Create errmsg here so that the exerrval doesn't get cleared by */
/* the ex_close call. */
int status;
ex_get_err(nullptr, nullptr, &status);
fmt::print(errmsg, "Exodus error ({}) {} at line {} of file '{}' in function '{}'.", status,
ex_strerror(status), lineno, filename, function);

◆ ex_update()

◆ nc_flt_code()

nc_type nc_flt_code ( int  exoid)

nc_flt_code() returns either NC_FLOAT or NC_DOUBLE, based on the parameters with which ex__conv_init() was called. nc_flt_code() is used as the nc_type parameter on ncvardef() calls that define floating point variables.

"exoid" is some integer which uniquely identifies the file of interest.

Variable Documentation

◆ exodus_unused_symbol_dummy_1

const char exodus_unused_symbol_dummy_1
Note
The ex_create_par_int() is an internal function called by ex_create_par(). The user should call ex_create_par() and not ex_create_par_int().

The function ex_create() creates a new exodus file and returns an ID that can subsequently be used to refer to the file.

All floating point values in an exodus file are stored as either 4-byte (float) or 8-byte (double) numbers; no mixing of 4- and 8-byte numbers in a single file is allowed. An application code can compute either 4- or 8-byte values and can designate that the values be stored in the exodus file as either 4- or 8-byte numbers; conversion between the 4- and 8-byte values is performed automatically by the API routines. Thus, there are four possible combinations of compute word size and storage (or I/O) word size.

Returns
In case of an error, ex_create() returns a negative number. Possible causes of errors include:
  • Passing a file name that includes a directory that does not exist.
  • Specifying a file name of a file that exists and also specifying a no clobber option.
  • Attempting to create a file in a directory without permission to create files there.
  • Passing an invalid file clobber mode.
Parameters
pathThe file name of the new exodus file. This can be given as either an absolute path name (from the root of the file system) or a relative path name (from the current directory).
cmodeMode. Use one of the following predefined constants:
  • EX_NOCLOBBER To create the new file only if the given file name does not refer to a file that already exists.
  • EX_CLOBBER To create the new file, regardless of whether a file with the same name already exists. If a file with the same name does exist, its contents will be erased.
  • EX_64BIT_OFFSET To create a model that can store individual datasets larger than 2 gigabytes. This modifies the internal storage used by exodusII and also puts the underlying NetCDF file into the 64-bit offset' mode. See largemodel for more details on this mode. A large model file will also be created if the environment variable EXODUS_LARGE_MODEL is defined in the users environment. A message will be printed to standard output if this environment variable is found. EX_LARGE_MODEL is alias.
  • EX_64BIT_DATA To create a model using the CDF5 format which uses the classic model but has 64-bit dimensions and sizes. This type will also be created if the environment variable EXODUS_NETCDF5 is defined in the users environment. A message will be printed to standard output if this environment variable is found.
  • EX_NETCDF4 To create a model using the HDF5-based NetCDF-4 output. An HDF5-based NetCDF-4 file will also be created if the environment variable EXODUS_NETCDF4 is defined in the users environment. A message will be printed to standard output if this environment variable is found.
  • EX_NOSHARE Do not open the underlying NetCDF file in share mode. See the NetCDF documentation for more details.
  • EX_SHARE Do open the underlying NetCDF file in share mode. See the NetCDF documentation for more details.
[in,out]comp_wsThe word size in bytes (0, 4 or 8) of the floating point variables used in the application program. If 0 (zero) is passed, the default sizeof(float) will be used and returned in this variable. WARNING: all exodus functions requiring floats must be passed floats declared with this passed in or returned compute word size (4 or 8).}
io_wsThe word size in bytes (4 or 8) of the floating point data as they are to be stored in the exodus file.
run_version(internally generated) used to verify compatibility of library and include files.

The following code segment creates an exodus file called test.exo:

#include "exodusII.h"
int CPU_word_size, IO_word_size, exoid;
CPU_word_size = sizeof(float); /* use float or double */
IO_word_size = 8; /* store variables as doubles */
/* create exodus file */
exoid = ex_create ("test.exo" /* filename path */
EX_CLOBBER, /* create mode */
&CPU_word_size, /* CPU float word size in bytes */
&IO_word_size); /* I/O float word size in bytes */
EX_INQ_SS_ELEM_LEN
Definition: exodusII.h:169
ex_inquire_int
int64_t ex_inquire_int(int exoid, ex_inquiry req_info)
Definition: ex_inquire.c:954
ex_put_qa
int ex_put_qa(int exoid, int num_qa_records, char *qa_record[][4])
Definition: ex_put_qa.c:90
ex_opts
int ex_opts(int options)
Definition: ex_opts.c:83
error
error
Definition: ex_put_elem_var_tab.c:115
EX_INQ_NODES
Definition: exodusII.h:162
ex_open
#define ex_open(path, mode, comp_ws, io_ws, version)
Definition: exodusII.h:474
EX_INQ_INFO
Definition: exodusII.h:171
ex_get_info
int ex_get_info(int exoid, char **info)
Definition: ex_get_info.c:75
ex_create
#define ex_create(path, mode, comp_ws, io_ws)
Definition: exodusII.h:444
MAX_STR_LENGTH
#define MAX_STR_LENGTH
Definition: exodusII.h:300
ex__obj_stats::exoid
int exoid
Definition: exodusII_int.h:666
ex_get_qa
int ex_get_qa(int exoid, char *qa_record[][4])
Definition: ex_get_qa.c:83
ex_close
int ex_close(int exoid)
Definition: ex_close.c:73
EX_INQ_QA
Definition: exodusII.h:170
EX_ABORT
Definition: exodusII.h:284
ex_inquire
int ex_inquire(int exoid, ex_inquiry req_info, void_int *, float *, char *)
Definition: ex_inquire.c:1020
EX_INQ_ELEM_BLK
Definition: exodusII.h:164
EX_CLOBBER
#define EX_CLOBBER
Definition: exodusII.h:114
ex_put_info
int ex_put_info(int exoid, int num_info, char *info[])
Definition: ex_put_info.c:102
ex_cvt_nodes_to_sides
int ex_cvt_nodes_to_sides(int exoid, void_int *num_elem_per_set, void_int *num_nodes_per_set, void_int *side_sets_elem_index, void_int *side_sets_node_index, void_int *side_sets_elem_list, void_int *side_sets_node_list, void_int *side_sets_side_list)
Definition: ex_cvt_nodes_to_sides.c:194
EX_READ
#define EX_READ
Definition: exodusII.h:111
exodusII.h
ex_strerror
const char * ex_strerror(int err_num)
Definition: ex_err.c:333
ex_get_err
void ex_get_err(const char **msg, const char **func, int *err_num)
Definition: ex_err.c:300
EX_INQ_EB_PROP
Definition: exodusII.h:173
EX_VERBOSE
Definition: exodusII.h:282
EX_INQ_ELEM
Definition: exodusII.h:163