18#include "exodus_config.h"
20#if defined(EXODUS_THREADSAFE)
25#if defined(NC_HAVE_META_H)
26#include "netcdf_meta.h"
29#if defined(_WIN32) && defined(_MSC_VER) && _MSC_VER < 1900
40#if defined __STDC__ || defined __cplusplus
46#pragma warning(disable : 4127)
47#pragma warning(disable : 4706)
48#pragma warning(disable : 4701)
51#if defined(__BORLANDC__)
57#if defined(_MSC_VER) && _MSC_VER < 1900
58#define __func__ __FUNCTION__
59#define snprintf _snprintf
62#define snprintf_nowarn(...) (snprintf(__VA_ARGS__) < 0 ? abort() : (void)0)
68#if NC_VERSION_MAJOR > 4 || (NC_VERSION_MAJOR == 4 && NC_VERSION_MINOR >= 6) || NC_HAS_HDF5
69#define EX_CAN_USE_NC_DEF_VAR_FILL 1
79#define MAX_VAR_NAME_LENGTH 32
85#define EXODUS_DEFAULT_SIZE 1
88#define EX_FILE_ID_MASK (0xffff0000)
89#define EX_GRP_ID_MASK (0x0000ffff)
93#if defined(EXODUS_THREADSAFE)
96typedef struct EX_errval
105#define exerrval ex_errval->errval
108extern pthread_once_t EX_first_init_g;
110typedef struct EX_mutex_struct
112 pthread_mutex_t atomic_lock;
113 pthread_mutexattr_t attribute;
116extern EX_mutex_t EX_g;
117extern int exi_mutex_lock(EX_mutex_t *mutex);
118extern int exi_mutex_unlock(EX_mutex_t *mutex,
const char *func,
int line);
119extern void exi_pthread_first_thread_init(
void);
120extern EX_errval_t *exerrval_get(
void);
122#define EX_FUNC_ENTER() \
125 pthread_once(&EX_first_init_g, exi_pthread_first_thread_init); \
128 exi_mutex_lock(&EX_g); \
129 ex_errval = exerrval_get(); \
131 ex_errval->last_err_num = 0; \
134#define EX_FUNC_ENTER_INT() \
137 pthread_once(&EX_first_init_g, exi_pthread_first_thread_init); \
140 exi_mutex_lock(&EX_g); \
141 ex_errval = exerrval_get(); \
144#define EX_FUNC_LEAVE(error) \
146 exi_mutex_unlock(&EX_g, __func__, __LINE__); \
150#define EX_FUNC_VOID() \
152 exi_mutex_unlock(&EX_g, __func__, __LINE__); \
156#define EX_FUNC_UNLOCK() \
158 exi_mutex_unlock(&EX_g, __func__, __LINE__); \
166#define EX_FUNC_ENTER() \
168 exi_reset_error_status(); \
169 fprintf(stderr, "%d Enter: %s\n", indent, __func__); \
172#define EX_FUNC_ENTER_INT() \
174 fprintf(stderr, "%d Enter: %s\n", indent, __func__); \
177#define EX_FUNC_LEAVE(error) \
180 fprintf(stderr, "%d Leave: %s\n", indent, __func__); \
183#define EX_FUNC_VOID() \
186 fprintf(stderr, "%d Leave: %s\n", indent, __func__); \
189#define EX_FUNC_UNLOCK() \
192 fprintf(stderr, "%d Unlock: %s\n", indent, __func__); \
195#define EX_FUNC_ENTER() \
197 exi_reset_error_status(); \
199#define EX_FUNC_ENTER_INT()
200#define EX_FUNC_LEAVE(error) return error
201#define EX_FUNC_VOID() return
202#define EX_FUNC_UNLOCK()
206#define EX_UNUSED(A) \
226#define ATT_TITLE "title"
227#define ATT_API_VERSION "api_version"
229#define ATT_API_VERSION_BLANK "api version"
230#define ATT_VERSION "version"
231#define ATT_FILESIZE "file_size"
233#define ATT_FLT_WORDSIZE "floating_point_word_size"
236#define ATT_FLT_WORDSIZE_BLANK "floating point word size"
237#define ATT_MAX_NAME_LENGTH "maximum_name_length"
238#define ATT_INT64_STATUS "int64_status"
239#define ATT_NEM_API_VERSION "nemesis_api_version"
240#define ATT_NEM_FILE_VERSION "nemesis_file_version"
241#define ATT_PROCESSOR_INFO "processor_info"
242#define ATT_LAST_WRITTEN_TIME "last_written_time"
244#define DIM_NUM_ASSEMBLY "num_assembly"
245#define DIM_NUM_BLOB "num_blob"
246#define DIM_NUM_NODES "num_nodes"
247#define DIM_NUM_DIM "num_dim"
248#define DIM_NUM_EDGE "num_edge"
249#define DIM_NUM_FACE "num_face"
250#define DIM_NUM_ELEM "num_elem"
251#define DIM_NUM_EL_BLK "num_el_blk"
252#define DIM_NUM_ED_BLK "num_ed_blk"
253#define DIM_NUM_FA_BLK "num_fa_blk"
254#define VAR_COORD "coord"
255#define VAR_COORD_X "coordx"
256#define VAR_COORD_Y "coordy"
257#define VAR_COORD_Z "coordz"
258#define VAR_NAME_COOR "coor_names"
259#define VAR_NAME_EL_BLK "eb_names"
260#define VAR_NAME_NS "ns_names"
261#define VAR_NAME_SS "ss_names"
262#define VAR_NAME_EM "emap_names"
263#define VAR_NAME_EDM "edmap_names"
264#define VAR_NAME_FAM "famap_names"
265#define VAR_NAME_NM "nmap_names"
266#define VAR_NAME_ED_BLK "ed_names"
267#define VAR_NAME_FA_BLK "fa_names"
268#define VAR_NAME_ES "es_names"
269#define VAR_NAME_FS "fs_names"
270#define VAR_NAME_ELS "els_names"
271#define VAR_STAT_EL_BLK "eb_status"
272#define VAR_STAT_ECONN "econn_status"
273#define VAR_STAT_FCONN "fconn_status"
274#define VAR_STAT_ED_BLK "ed_status"
275#define VAR_STAT_FA_BLK "fa_status"
276#define VAR_ID_EL_BLK "eb_prop1"
277#define VAR_ID_ED_BLK "ed_prop1"
278#define VAR_ID_FA_BLK "fa_prop1"
279#define DIM_NUM_ENTITY_ASSEMBLY(num) exi_catstr("num_entity_assembly", num)
280#define VAR_ENTITY_ASSEMBLY(num) exi_catstr("assembly_entity", num)
281#define DIM_NUM_VALUES_BLOB(num) exi_catstr("num_values_blob", num)
282#define VAR_ENTITY_BLOB(num) exi_catstr("blob_entity", num)
283#define EX_ATTRIBUTE_TYPE "_type"
284#define EX_ATTRIBUTE_TYPENAME "_typename"
285#define EX_ATTRIBUTE_NAME "_name"
286#define EX_ATTRIBUTE_ID "_id"
289#define ATT_NAME_ELB "elem_type"
291#define DIM_NUM_EL_IN_BLK(num) exi_catstr("num_el_in_blk", num)
293#define DIM_NUM_NOD_PER_EL(num) exi_catstr("num_nod_per_el", num)
295#define DIM_NUM_ATT_IN_BLK(num) exi_catstr("num_att_in_blk", num)
297#define DIM_NUM_ED_IN_EBLK(num) exi_catstr("num_ed_in_blk", num)
299#define DIM_NUM_NOD_PER_ED(num) exi_catstr("num_nod_per_ed", num)
301#define DIM_NUM_EDG_PER_EL(num) exi_catstr("num_edg_per_el", num)
303#define DIM_NUM_ATT_IN_EBLK(num) exi_catstr("num_att_in_eblk", num)
305#define DIM_NUM_FA_IN_FBLK(num) exi_catstr("num_fa_in_blk", num)
307#define DIM_NUM_NOD_PER_FA(num) exi_catstr("num_nod_per_fa", num)
309#define DIM_NUM_FAC_PER_EL(num) exi_catstr("num_fac_per_el", num)
311#define DIM_NUM_ATT_IN_FBLK(num) exi_catstr("num_att_in_fblk", num)
313#define VAR_CONN(num) exi_catstr("connect", num)
316#define VAR_EBEPEC(num) exi_catstr("ebepecnt", num)
318#define VAR_ATTRIB(num) exi_catstr("attrib", num)
320#define VAR_NAME_ATTRIB(num) exi_catstr("attrib_name", num)
322#define VAR_EB_PROP(num) exi_catstr("eb_prop", num)
324#define VAR_ECONN(num) exi_catstr("edgconn", num)
326#define VAR_EBCONN(num) exi_catstr("ebconn", num)
328#define VAR_EATTRIB(num) exi_catstr("eattrb", num)
330#define VAR_NAME_EATTRIB(num) exi_catstr("eattrib_name", num)
331#define VAR_NATTRIB "nattrb"
332#define VAR_NAME_NATTRIB "nattrib_name"
333#define DIM_NUM_ATT_IN_NBLK "num_att_in_nblk"
335#define VAR_NSATTRIB(num) exi_catstr("nsattrb", num)
336#define VAR_NAME_NSATTRIB(num) exi_catstr("nsattrib_name", num)
337#define DIM_NUM_ATT_IN_NS(num) exi_catstr("num_att_in_ns", num)
339#define VAR_SSATTRIB(num) exi_catstr("ssattrb", num)
340#define VAR_NAME_SSATTRIB(num) exi_catstr("ssattrib_name", num)
341#define DIM_NUM_ATT_IN_SS(num) exi_catstr("num_att_in_ss", num)
343#define VAR_ESATTRIB(num) exi_catstr("esattrb", num)
344#define VAR_NAME_ESATTRIB(num) exi_catstr("esattrib_name", num)
345#define DIM_NUM_ATT_IN_ES(num) exi_catstr("num_att_in_es", num)
347#define VAR_FSATTRIB(num) exi_catstr("fsattrb", num)
348#define VAR_NAME_FSATTRIB(num) exi_catstr("fsattrib_name", num)
349#define DIM_NUM_ATT_IN_FS(num) exi_catstr("num_att_in_fs", num)
351#define VAR_ELSATTRIB(num) exi_catstr("elsattrb", num)
352#define VAR_NAME_ELSATTRIB(num) exi_catstr("elsattrib_name", num)
353#define DIM_NUM_ATT_IN_ELS(num) exi_catstr("num_att_in_els", num)
356#define VAR_ED_PROP(num) exi_catstr("ed_prop", num)
358#define VAR_FCONN(num) exi_catstr("facconn", num)
360#define VAR_FBCONN(num) exi_catstr("fbconn", num)
362#define VAR_FBEPEC(num) exi_catstr("fbepecnt", num)
364#define VAR_FATTRIB(num) exi_catstr("fattrb", num)
366#define VAR_NAME_FATTRIB(num) exi_catstr("fattrib_name", num)
368#define VAR_FA_PROP(num) exi_catstr("fa_prop", num)
371#define ATT_PROP_NAME "name"
372#define VAR_MAP "elem_map"
373#define DIM_NUM_SS "num_side_sets"
374#define VAR_SS_STAT "ss_status"
375#define VAR_SS_IDS "ss_prop1"
377#define DIM_NUM_SIDE_SS(num) exi_catstr("num_side_ss", num)
379#define DIM_NUM_DF_SS(num) exi_catstr("num_df_ss", num)
381#define VAR_FACT_SS(num) exi_catstr("dist_fact_ss", num)
383#define VAR_ELEM_SS(num) exi_catstr("elem_ss", num)
385#define VAR_SIDE_SS(num) exi_catstr("side_ss", num)
387#define VAR_SS_PROP(num) exi_catstr("ss_prop", num)
388#define DIM_NUM_ES "num_edge_sets"
389#define VAR_ES_STAT "es_status"
390#define VAR_ES_IDS "es_prop1"
392#define DIM_NUM_EDGE_ES(num) exi_catstr("num_edge_es", num)
394#define DIM_NUM_DF_ES(num) exi_catstr("num_df_es", num)
396#define VAR_FACT_ES(num) exi_catstr("dist_fact_es", num)
398#define VAR_EDGE_ES(num) exi_catstr("edge_es", num)
400#define VAR_ORNT_ES(num) exi_catstr("ornt_es", num)
402#define VAR_ES_PROP(num) exi_catstr("es_prop", num)
403#define DIM_NUM_FS "num_face_sets"
404#define VAR_FS_STAT "fs_status"
405#define VAR_FS_IDS "fs_prop1"
407#define DIM_NUM_FACE_FS(num) exi_catstr("num_face_fs", num)
409#define DIM_NUM_DF_FS(num) exi_catstr("num_df_fs", num)
411#define VAR_FACT_FS(num) exi_catstr("dist_fact_fs", num)
413#define VAR_FACE_FS(num) exi_catstr("face_fs", num)
415#define VAR_ORNT_FS(num) exi_catstr("ornt_fs", num)
417#define VAR_FS_PROP(num) exi_catstr("fs_prop", num)
418#define DIM_NUM_ELS "num_elem_sets"
420#define DIM_NUM_ELE_ELS(num) exi_catstr("num_ele_els", num)
422#define DIM_NUM_DF_ELS(num) exi_catstr("num_df_els", num)
423#define VAR_ELS_STAT "els_status"
424#define VAR_ELS_IDS "els_prop1"
426#define VAR_ELEM_ELS(num) exi_catstr("elem_els", num)
428#define VAR_FACT_ELS(num) exi_catstr("dist_fact_els", num)
430#define VAR_ELS_PROP(num) exi_catstr("els_prop", num)
431#define DIM_NUM_NS "num_node_sets"
433#define DIM_NUM_NOD_NS(num) exi_catstr("num_nod_ns", num)
435#define DIM_NUM_DF_NS(num) exi_catstr("num_df_ns", num)
436#define VAR_NS_STAT "ns_status"
437#define VAR_NS_IDS "ns_prop1"
439#define VAR_NODE_NS(num) exi_catstr("node_ns", num)
441#define VAR_FACT_NS(num) exi_catstr("dist_fact_ns", num)
443#define VAR_NS_PROP(num) exi_catstr("ns_prop", num)
444#define DIM_NUM_QA "num_qa_rec"
445#define VAR_QA_TITLE "qa_records"
446#define DIM_NUM_INFO "num_info"
447#define VAR_INFO "info_records"
448#define VAR_WHOLE_TIME "time_whole"
449#define VAR_ASSEMBLY_TAB "assembly_var_tab"
450#define VAR_BLOB_TAB "blob_var_tab"
451#define VAR_ELEM_TAB "elem_var_tab"
452#define VAR_EBLK_TAB "edge_var_tab"
453#define VAR_FBLK_TAB "face_var_tab"
454#define VAR_ELSET_TAB "elset_var_tab"
455#define VAR_SSET_TAB "sset_var_tab"
456#define VAR_FSET_TAB "fset_var_tab"
457#define VAR_ESET_TAB "eset_var_tab"
458#define VAR_NSET_TAB "nset_var_tab"
459#define DIM_NUM_GLO_VAR "num_glo_var"
460#define VAR_NAME_GLO_VAR "name_glo_var"
461#define VAR_GLO_VAR "vals_glo_var"
462#define DIM_NUM_NOD_VAR "num_nod_var"
463#define VAR_NAME_NOD_VAR "name_nod_var"
464#define VAR_NOD_VAR "vals_nod_var"
466#define VAR_NOD_VAR_NEW(num) exi_catstr("vals_nod_var", num)
468#define DIM_NUM_ASSEMBLY_VAR "num_assembly_var"
469#define VAR_NAME_ASSEMBLY_VAR "name_assembly_var"
470#define VAR_ASSEMBLY_VAR(num1, num2) exi_catstr2("vals_assembly_var", num1, "assembly", num2)
472#define DIM_NUM_BLOB_VAR "num_blob_var"
473#define VAR_NAME_BLOB_VAR "name_blob_var"
474#define VAR_BLOB_VAR(num1, num2) exi_catstr2("vals_blob_var", num1, "blob", num2)
476#define DIM_NUM_ELE_VAR "num_elem_var"
477#define VAR_NAME_ELE_VAR "name_elem_var"
479#define VAR_ELEM_VAR(num1, num2) exi_catstr2("vals_elem_var", num1, "eb", num2)
480#define DIM_NUM_EDG_VAR "num_edge_var"
481#define VAR_NAME_EDG_VAR "name_edge_var"
483#define VAR_EDGE_VAR(num1, num2) exi_catstr2("vals_edge_var", num1, "eb", num2)
484#define DIM_NUM_FAC_VAR "num_face_var"
485#define VAR_NAME_FAC_VAR "name_face_var"
487#define VAR_FACE_VAR(num1, num2) exi_catstr2("vals_face_var", num1, "fb", num2)
489#define DIM_NUM_NSET_VAR "num_nset_var"
490#define VAR_NAME_NSET_VAR "name_nset_var"
492#define VAR_NS_VAR(num1, num2) exi_catstr2("vals_nset_var", num1, "ns", num2)
493#define DIM_NUM_ESET_VAR "num_eset_var"
495#define VAR_NAME_ESET_VAR "name_eset_var"
496#define VAR_ES_VAR(num1, num2) exi_catstr2("vals_eset_var", num1, "es", num2)
497#define DIM_NUM_FSET_VAR "num_fset_var"
498#define VAR_NAME_FSET_VAR "name_fset_var"
500#define VAR_FS_VAR(num1, num2) exi_catstr2("vals_fset_var", num1, "fs", num2)
501#define DIM_NUM_SSET_VAR "num_sset_var"
502#define VAR_NAME_SSET_VAR "name_sset_var"
504#define VAR_SS_VAR(num1, num2) exi_catstr2("vals_sset_var", num1, "ss", num2)
505#define DIM_NUM_ELSET_VAR "num_elset_var"
506#define VAR_NAME_ELSET_VAR "name_elset_var"
508#define VAR_ELS_VAR(num1, num2) exi_catstr2("vals_elset_var", num1, "es", num2)
514#define DIM_NUM_ASSEMBLY_RED_VAR "num_assembly_red_var"
515#define VAR_NAME_ASSEMBLY_RED_VAR "name_assembly_red_var"
516#define VAR_ASSEMBLY_RED_VAR(num) exi_catstr("vals_red_var_assembly", num)
518#define DIM_NUM_BLOB_RED_VAR "num_blob_red_var"
519#define VAR_NAME_BLOB_RED_VAR "name_blob_red_var"
520#define VAR_BLOB_RED_VAR(num) exi_catstr("vals_red_var_blob", num)
522#define DIM_NUM_ELE_RED_VAR "num_elem_red_var"
523#define VAR_NAME_ELE_RED_VAR "name_elem_red_var"
525#define VAR_ELEM_RED_VAR(num) exi_catstr("vals_red_var_eb", num)
527#define DIM_NUM_EDG_RED_VAR "num_edge_red_var"
528#define VAR_NAME_EDG_RED_VAR "name_edge_red_var"
530#define VAR_EDGE_RED_VAR(num) exi_catstr("vals_red_var_edb", num)
532#define DIM_NUM_FAC_RED_VAR "num_face_red_var"
533#define VAR_NAME_FAC_RED_VAR "name_face_red_var"
535#define VAR_FACE_RED_VAR(num) exi_catstr("vals_red_var_fb", num)
537#define DIM_NUM_NSET_RED_VAR "num_nset_red_var"
538#define VAR_NAME_NSET_RED_VAR "name_nset_red_var"
540#define VAR_NS_RED_VAR(num) exi_catstr("vals_red_var_nset", num)
542#define DIM_NUM_ESET_RED_VAR "num_eset_red_var"
544#define VAR_NAME_ESET_RED_VAR "name_eset_red_var"
545#define VAR_ES_RED_VAR(num) exi_catstr("vals_red_var_eset", num)
547#define DIM_NUM_FSET_RED_VAR "num_fset_red_var"
548#define VAR_NAME_FSET_RED_VAR "name_fset_red_var"
550#define VAR_FS_RED_VAR(num) exi_catstr("vals_red_var_fset", num)
552#define DIM_NUM_SSET_RED_VAR "num_sset_red_var"
553#define VAR_NAME_SSET_RED_VAR "name_sset_red_var"
555#define VAR_SS_RED_VAR(num) exi_catstr("vals_red_var_sset", num)
557#define DIM_NUM_ELSET_RED_VAR "num_elset_red_var"
558#define VAR_NAME_ELSET_RED_VAR "name_elset_red_var"
560#define VAR_ELS_RED_VAR(num) exi_catstr("vals_red_var_elset", num)
564#define DIM_STR "len_string"
566#define DIM_STR_NAME "len_name"
568#define DIM_LIN "len_line"
570#define DIM_N1 "blob_entity"
572#define DIM_TIME "time_step"
573#define VAR_ELEM_NUM_MAP "elem_num_map"
574#define VAR_FACE_NUM_MAP "face_num_map"
575#define VAR_EDGE_NUM_MAP "edge_num_map"
576#define VAR_NODE_NUM_MAP "node_num_map"
577#define DIM_NUM_EM "num_elem_maps"
579#define VAR_ELEM_MAP(num) exi_catstr("elem_map", num)
581#define VAR_EM_PROP(num) exi_catstr("em_prop", num)
582#define DIM_NUM_EDM "num_edge_maps"
584#define VAR_EDGE_MAP(num) exi_catstr("edge_map", num)
586#define VAR_EDM_PROP(num) exi_catstr("edm_prop", num)
587#define DIM_NUM_FAM "num_face_maps"
589#define VAR_FACE_MAP(num) exi_catstr("face_map", num)
591#define VAR_FAM_PROP(num) exi_catstr("fam_prop", num)
592#define DIM_NUM_NM "num_node_maps"
594#define VAR_NODE_MAP(num) exi_catstr("node_map", num)
596#define VAR_NM_PROP(num) exi_catstr("nm_prop", num)
598#define VAR_ASSEMBLY_PROP(num) exi_catstr("assembly_prop", num)
599#define VAR_BLOB_PROP(num) exi_catstr("blob_prop", num)
601#define DIM_NUM_CFRAMES "num_cframes"
602#define DIM_NUM_CFRAME9 "num_cframes_9"
603#define VAR_FRAME_COORDS "frame_coordinates"
604#define VAR_FRAME_IDS "frame_ids"
605#define VAR_FRAME_TAGS "frame_tags"
607#define VAR_ELBLK_IDS_GLOBAL "el_blk_ids_global"
608#define VAR_ELBLK_CNT_GLOBAL "el_blk_cnt_global"
609#define VAR_NS_IDS_GLOBAL "ns_ids_global"
610#define VAR_NS_NODE_CNT_GLOBAL "ns_node_cnt_global"
611#define VAR_NS_DF_CNT_GLOBAL "ns_df_cnt_global"
612#define VAR_SS_IDS_GLOBAL "ss_ids_global"
613#define VAR_SS_SIDE_CNT_GLOBAL "ss_side_cnt_global"
614#define VAR_SS_DF_CNT_GLOBAL "ss_df_cnt_global"
615#define VAR_FILE_TYPE "nem_ftype"
616#define VAR_COMM_MAP "comm_map"
617#define VAR_NODE_MAP_INT "node_mapi"
618#define VAR_NODE_MAP_INT_IDX "node_mapi_idx"
619#define VAR_NODE_MAP_BOR "node_mapb"
620#define VAR_NODE_MAP_BOR_IDX "node_mapb_idx"
621#define VAR_NODE_MAP_EXT "node_mape"
622#define VAR_NODE_MAP_EXT_IDX "node_mape_idx"
623#define VAR_ELEM_MAP_INT "elem_mapi"
624#define VAR_ELEM_MAP_INT_IDX "elem_mapi_idx"
625#define VAR_ELEM_MAP_BOR "elem_mapb"
626#define VAR_ELEM_MAP_BOR_IDX "elem_mapb_idx"
627#define VAR_INT_N_STAT "int_n_stat"
628#define VAR_BOR_N_STAT "bor_n_stat"
629#define VAR_EXT_N_STAT "ext_n_stat"
630#define VAR_INT_E_STAT "int_e_stat"
631#define VAR_BOR_E_STAT "bor_e_stat"
632#define VAR_N_COMM_IDS "n_comm_ids"
633#define VAR_N_COMM_STAT "n_comm_stat"
634#define VAR_N_COMM_INFO_IDX "n_comm_info_idx"
635#define VAR_E_COMM_IDS "e_comm_ids"
636#define VAR_E_COMM_STAT "e_comm_stat"
637#define VAR_E_COMM_INFO_IDX "e_comm_info_idx"
638#define VAR_N_COMM_NIDS "n_comm_nids"
639#define VAR_N_COMM_PROC "n_comm_proc"
640#define VAR_N_COMM_DATA_IDX "n_comm_data_idx"
641#define VAR_E_COMM_EIDS "e_comm_eids"
642#define VAR_E_COMM_SIDS "e_comm_sids"
643#define VAR_E_COMM_PROC "e_comm_proc"
644#define VAR_E_COMM_DATA_IDX "e_comm_data_idx"
646#define DIM_NUM_INT_NODES "num_int_node"
647#define DIM_NUM_BOR_NODES "num_bor_node"
648#define DIM_NUM_EXT_NODES "num_ext_node"
649#define DIM_NUM_INT_ELEMS "num_int_elem"
650#define DIM_NUM_BOR_ELEMS "num_bor_elem"
651#define DIM_NUM_PROCS "num_processors"
652#define DIM_NUM_PROCS_F "num_procs_file"
653#define DIM_NUM_NODES_GLOBAL "num_nodes_global"
654#define DIM_NUM_ELEMS_GLOBAL "num_elems_global"
655#define DIM_NUM_NS_GLOBAL "num_ns_global"
656#define DIM_NUM_SS_GLOBAL "num_ss_global"
657#define DIM_NUM_ELBLK_GLOBAL "num_el_blk_global"
658#define DIM_NUM_N_CMAPS "num_n_cmaps"
659#define DIM_NUM_E_CMAPS "num_e_cmaps"
660#define DIM_NCNT_CMAP "ncnt_cmap"
661#define DIM_ECNT_CMAP "ecnt_cmap"
752#define EXODUS_EXPORT extern
768 int int64_status,
bool is_parallel,
bool is_hdf5,
bool is_pnetcdf,
806 int exoid,
const char *func);
811 size_t *count,
int *dimid,
const char *routine);
814 int beg_time_step,
int end_time_step,
815 void *nodal_var_vals);
818 int beg_time_step,
int end_time_step,
819 const void *nodal_var_vals);
822 int beg_time_step,
int end_time_step,
823 void *nodal_var_vals);
826 int beg_time_step,
int end_time_step,
827 const void *nodal_var_vals);
830 int64_t start_node, int64_t num_nodes,
void *var_vals);
833 int64_t start_node, int64_t num_nodes,
834 const void *nodal_var_vals);
836 void *glob_var_vals);
839 int end_time_step,
void *glob_var_vals);
842 int end_time_step,
void *glob_var_vals);
849 ex_entity_type obj_type,
const char *subtype,
const char *routine);
851 ex_entity_type obj_type,
const char *subtype,
const char *routine);
855 const char *call_rout
861 int *comp_ws,
int *io_ws);
876 const char *ne_var_name,
static char last_pname[MAX_ERR_LENGTH+1]
Definition ex_err.c:20
static int last_err_num
Definition ex_err.c:22
static char last_errmsg[MAX_ERR_LENGTH+1]
Definition ex_err.c:21
ex_entity_type
Definition exodusII.h:259
int64_t ex_entity_id
Definition exodusII.h:324
struct exi_list_item ** exi_get_counter_list(ex_entity_type obj_type)
Definition ex_utils.c:1148
nc_type nc_flt_code(int exoid)
Definition ex_conv.c:316
char * exi_canonicalize_filename(const char *path)
Definition ex_utils.c:2321
int exi_get_dimension(int exoid, const char *DIMENSION, const char *label, size_t *count, int *dimid, const char *routine)
Definition ex_utils.c:1648
struct exi_obj_stats * exoII_es
Definition ex_utils.c:27
struct exi_obj_stats * exoII_nm
Definition ex_utils.c:34
#define EXODUS_EXPORT
Definition exodusII_int.h:752
int exi_put_partial_nodal_var(int exoid, int time_step, int nodal_var_index, int64_t start_node, int64_t num_nodes, const void *nodal_var_vals)
Definition ex_put_partial_nodal_var_int.c:48
int exi_check_file_type(const char *path, int *type)
Definition ex_utils.c:173
struct exi_obj_stats * exoII_ed
Definition ex_utils.c:24
int exi_put_homogenous_block_params(int exoid, size_t block_count, const struct ex_block *blocks)
Definition ex__put_homogenous_block_params.c:18
int exi_populate_header(int exoid, const char *path, int my_mode, int is_parallel, int *comp_ws, int *io_ws)
Definition ex_utils.c:2124
int exi_is_parallel(int exoid)
Definition ex_conv.c:503
struct exi_obj_stats * exoII_fa
Definition ex_utils.c:25
void exi_update_max_name_length(int exoid, int length)
Definition ex_utils.c:273
int exi_get_block_param(int exoid, ex_entity_id id, int ndim, struct exi_elem_blk_parm *elem_blk_parm)
Definition ex_int_get_block_param.c:23
struct exi_obj_stats * exoII_fs
Definition ex_utils.c:28
char * exi_name_var_of_object(ex_entity_type, int, int)
Definition ex_utils.c:680
char * exi_dim_num_objects(ex_entity_type obj_type)
Definition ex_utils.c:620
int exi_get_partial_nodal_var(int exoid, int time_step, int nodal_var_index, int64_t start_node, int64_t num_nodes, void *var_vals)
Definition ex_get_partial_nodal_var_int.c:40
int exi_get_cpu_ws(void)
Definition ex_utils.c:1370
struct exi_file_item * exi_find_file_item(int exoid)
Definition ex_conv.c:29
int exi_check_version(int run_version)
Definition ex_utils.c:1796
struct exi_obj_stats * exoII_em
Definition ex_utils.c:31
void exi_rm_stat_ptr(int exoid, struct exi_obj_stats **obj_ptr)
Definition ex_utils.c:1097
exi_element_type
Definition exodusII_int.h:663
int exi_default_max_name_length
void exi_iqsort(int v[], int iv[], size_t N)
Definition ex_utils.c:1587
int exi_get_name(int exoid, int varid, size_t index, char *name, int name_size, ex_entity_type obj_type, const char *routine)
Definition ex_utils.c:457
int exi_get_nodal_var_multi_time(int exoid, int nodal_var_index, int64_t node_number, int beg_time_step, int end_time_step, void *nodal_var_vals)
Definition ex__get_nodal_var_multi_time.c:67
void exi_iqsort64(int64_t v[], int64_t iv[], int64_t N)
Definition ex_utils.c:1603
exi_coordinate_frame_type
Definition exodusII_int.h:725
void exi_rm_file_item(int, struct exi_list_item **)
Definition ex_utils.c:1295
void exi_compress_variable(int exoid, int varid, int type)
Definition ex_utils.c:1720
int exi_put_name(int exoid, int varid, size_t index, const char *name, ex_entity_type obj_type, const char *subtype, const char *routine)
Definition ex_utils.c:380
int nei_check_file_version(int exoid)
Definition ex_ne_util.c:195
struct exi_obj_stats * exoII_eb
Definition ex_utils.c:23
int exi_check_multiple_open(const char *path, int mode, const char *func)
Definition ex_conv.c:44
struct exi_obj_stats * exoII_fam
Definition ex_utils.c:33
int exi_put_nemesis_version(int exoid)
Definition ex_ne_util.c:155
char * exi_catstr2(const char *, int, const char *, int)
Definition ex_utils.c:532
int exi_get_nodal_var_time(int exoid, int nodal_var_index, int64_t node_number, int beg_time_step, int end_time_step, void *nodal_var_vals)
Definition ex_get_nodal_var_time_int.c:81
void exi_set_compact_storage(int exoid, int varid)
Definition ex_utils.c:1697
char * exi_catstr(const char *, int)
Definition ex_utils.c:516
int exi_put_nodal_var_multi_time(int exoid, int nodal_var_index, int64_t num_nodes, int beg_time_step, int end_time_step, const void *nodal_var_vals)
struct exi_file_item * exi_add_file_item(int exoid)
int exi_get_names(int exoid, int varid, size_t num_entity, char **names, ex_entity_type obj_type, const char *routine)
Definition ex_utils.c:434
int exi_get_glob_var_time(int exoid, int glob_var_index, int beg_time_step, int end_time_step, void *glob_var_vals)
Definition ex_get_glob_var_time_int.c:74
void exi_conv_exit(int exoid)
Definition ex_conv.c:280
struct exi_obj_stats * exoII_els
Definition ex_utils.c:30
char * exi_name_red_var_of_object(ex_entity_type, int)
Definition ex_utils.c:707
void exi_reset_error_status(void)
Definition ex_err.c:33
char * exi_dim_num_entries_in_object(ex_entity_type, int)
Definition ex_utils.c:652
char * exi_name_of_map(ex_entity_type, int)
Definition ex_utils.c:734
struct exi_obj_stats * exoII_edm
Definition ex_utils.c:32
struct exi_obj_stats * exoII_ss
Definition ex_utils.c:29
int exi_get_glob_vars(int exoid, int time_step, int num_glob_vars, void *glob_var_vals)
Definition ex_get_glob_vars_int.c:33
int exi_handle_mode(unsigned int my_mode, int is_parallel, int run_version)
Definition ex_utils.c:1818
int exi_check_valid_file_id(int exoid, const char *func)
Definition ex_conv.c:75
int exi_get_file_type(int exoid, char *ftype)
Definition ex_ne_util.c:114
int exi_leavedef(int exoid, const char *call_rout)
Definition ex_utils.c:1780
int exi_id_lkup(int exoid, ex_entity_type id_type, ex_entity_id num)
Definition ex_utils.c:767
int exi_get_glob_vars_multi_time(int exoid, int num_glob_vars, int beg_time_step, int end_time_step, void *glob_var_vals)
Definition ex__get_glob_vars_multi_time.c:33
int exi_inc_file_item(int, struct exi_list_item **)
Definition ex_utils.c:1199
int exi_get_file_item(int, struct exi_list_item **)
Definition ex_utils.c:1248
int exi_put_names(int exoid, int varid, size_t num_entity, char *const *names, ex_entity_type obj_type, const char *subtype, const char *routine)
Definition ex_utils.c:311
void exi_trim(char *name)
Definition ex_utils.c:489
int exi_conv_init(int exoid, int *comp_wordsize, int *io_wordsize, int file_wordsize, int int64_status, bool is_parallel, bool is_hdf5, bool is_pnetcdf, bool is_write)
Definition ex_conv.c:110
int exi_put_nodal_var_time(int exoid, int nodal_var_index, int64_t num_nodes, int beg_time_step, int end_time_step, const void *nodal_var_vals)
Definition ex__put_nodal_var_multi_time.c:78
int nei_id_lkup(int exoid, const char *ne_var_name, int64_t *idx, ex_entity_id ne_var_id)
Definition ex_ne_util.c:40
struct exi_obj_stats * exi_get_stat_ptr(int exoid, struct exi_obj_stats **obj_ptr)
Definition ex_utils.c:1059
int exi_comp_ws(int exoid)
Definition ex_conv.c:481
struct exi_obj_stats * exoII_ns
Definition ex_utils.c:26
@ EX_EL_WEDGE
Definition exodusII_int.h:669
@ EX_EL_TRIANGLE
Definition exodusII_int.h:666
@ EX_EL_SPHERE
Definition exodusII_int.h:674
@ EX_EL_TRISHELL
Definition exodusII_int.h:676
@ EX_EL_SHELL
Definition exodusII_int.h:673
@ EX_EL_PYRAMID
Definition exodusII_int.h:677
@ EX_EL_TETRA
Definition exodusII_int.h:670
@ EX_EL_NULL_ELEMENT
Definition exodusII_int.h:665
@ EX_EL_HEX
Definition exodusII_int.h:668
@ EX_EL_TRUSS
Definition exodusII_int.h:671
@ EX_EL_BEAM
Definition exodusII_int.h:672
@ EX_EL_CIRCLE
Definition exodusII_int.h:675
@ EX_EL_QUAD
Definition exodusII_int.h:667
@ EX_EL_UNK
Definition exodusII_int.h:664
@ EX_CF_SPHERICAL
Definition exodusII_int.h:728
@ EX_CF_RECTANGULAR
Definition exodusII_int.h:726
@ EX_CF_CYLINDRICAL
Definition exodusII_int.h:727
#define MAX_ERR_LENGTH
Definition exodusII.h:320
Definition exodusII.h:395
Definition exodusII_int.h:712
exi_element_type elem_type_val
Definition exodusII_int.h:721
int64_t elem_blk_id
Definition exodusII_int.h:714
int num_nodes_per_elem
Definition exodusII_int.h:716
int64_t elem_ctr
Definition exodusII_int.h:720
int num_attr
Definition exodusII_int.h:719
int64_t num_elem_in_blk
Definition exodusII_int.h:715
char elem_type[33]
Definition exodusII_int.h:713
int num_nodes_per_side[6]
Definition exodusII_int.h:718
int num_sides
Definition exodusII_int.h:717
Definition exodusII_int.h:684
unsigned int is_write
Definition exodusII_int.h:700
unsigned int user_compute_wordsize
Definition exodusII_int.h:696
int file_id
Definition exodusII_int.h:685
unsigned int has_elems
Definition exodusII_int.h:707
struct exi_file_item * next
Definition exodusII_int.h:708
int time_varid
Definition exodusII_int.h:689
nc_type netcdf_type_code
Definition exodusII_int.h:686
unsigned int has_nodes
Definition exodusII_int.h:704
unsigned int is_parallel
Definition exodusII_int.h:701
unsigned int is_hdf5
Definition exodusII_int.h:702
unsigned int has_edges
Definition exodusII_int.h:705
unsigned int blob_count
Definition exodusII_int.h:691
unsigned int assembly_count
Definition exodusII_int.h:690
unsigned int compression_level
Definition exodusII_int.h:694
int maximum_name_length
Definition exodusII_int.h:688
unsigned int is_pnetcdf
Definition exodusII_int.h:703
unsigned int compression_algorithm
Definition exodusII_int.h:693
unsigned int file_type
Definition exodusII_int.h:699
int int64_status
Definition exodusII_int.h:687
unsigned int shuffle
Definition exodusII_int.h:697
unsigned int has_faces
Definition exodusII_int.h:706
Definition exodusII_int.h:733
int value
Definition exodusII_int.h:735
int exo_id
Definition exodusII_int.h:734
struct exi_list_item * next
Definition exodusII_int.h:736
Definition exodusII_int.h:740
char valid_stat
Definition exodusII_int.h:746
int * stat_vals
Definition exodusII_int.h:742
int exoid
Definition exodusII_int.h:744
char valid_ids
Definition exodusII_int.h:745
struct exi_obj_stats * next
Definition exodusII_int.h:748
int64_t * id_vals
Definition exodusII_int.h:741
size_t num
Definition exodusII_int.h:743
char sequential
Definition exodusII_int.h:747