18#include "exodus_config.h"
20#if defined(EXODUS_THREADSAFE)
25#if defined(NC_HAVE_META_H)
26#include "netcdf_meta.h"
29#if NC_HAS_ZSTD == 1 || NC_HAS_BZ2
30#include "netcdf_filter.h"
33#if !defined NC_FillValue
35#define NC_FillValue _FillValue
37#define NC_FillValue "_FillValue"
41#if defined(_WIN32) && defined(_MSC_VER) && _MSC_VER < 1900
52#if defined __STDC__ || defined __cplusplus
58#pragma warning(disable : 4127)
59#pragma warning(disable : 4706)
60#pragma warning(disable : 4701)
63#if defined(__BORLANDC__)
69#if defined(_MSC_VER) && _MSC_VER < 1900
70#define __func__ __FUNCTION__
71#define snprintf _snprintf
74#define snprintf_nowarn(...) (snprintf(__VA_ARGS__) < 0 ? abort() : (void)0)
80#if NC_VERSION_MAJOR > 4 || (NC_VERSION_MAJOR == 4 && NC_VERSION_MINOR >= 6) || NC_HAS_HDF5
81#define EX_CAN_USE_NC_DEF_VAR_FILL 1
91#define MAX_VAR_NAME_LENGTH 32
97#define EXODUS_DEFAULT_SIZE 1
100#define EX_FILE_ID_MASK (0xffff0000)
101#define EX_GRP_ID_MASK (0x0000ffff)
108#if defined(EXODUS_THREADSAFE)
109#if !defined(exerrval)
111typedef struct EX_errval
120#define exerrval ex_errval->errval
123extern pthread_once_t EX_first_init_g;
125typedef struct EX_mutex_struct
127 pthread_mutex_t atomic_lock;
128 pthread_mutexattr_t attribute;
131extern EX_mutex_t EX_g;
132extern int exi_mutex_lock(EX_mutex_t *mutex);
133extern int exi_mutex_unlock(EX_mutex_t *mutex,
const char *func,
int line);
134extern void exi_pthread_first_thread_init(
void);
135extern EX_errval_t *exerrval_get(
void);
137#define EX_FUNC_ENTER() \
140 pthread_once(&EX_first_init_g, exi_pthread_first_thread_init); \
143 exi_mutex_lock(&EX_g); \
144 ex_errval = exerrval_get(); \
146 ex_errval->last_err_num = 0; \
149#define EX_FUNC_ENTER_INT() \
152 pthread_once(&EX_first_init_g, exi_pthread_first_thread_init); \
155 exi_mutex_lock(&EX_g); \
156 ex_errval = exerrval_get(); \
159#define EX_FUNC_LEAVE(error) \
161 exi_mutex_unlock(&EX_g, __func__, __LINE__); \
165#define EX_FUNC_VOID() \
167 exi_mutex_unlock(&EX_g, __func__, __LINE__); \
171#define EX_FUNC_UNLOCK() \
173 exi_mutex_unlock(&EX_g, __func__, __LINE__); \
181#define EX_FUNC_ENTER() \
183 exi_reset_error_status(); \
184 fprintf(stderr, "%d Enter: %s\n", indent, __func__); \
187#define EX_FUNC_ENTER_INT() \
189 fprintf(stderr, "%d Enter: %s\n", indent, __func__); \
192#define EX_FUNC_LEAVE(error) \
195 fprintf(stderr, "%d Leave: %s\n", indent, __func__); \
198#define EX_FUNC_VOID() \
201 fprintf(stderr, "%d Leave: %s\n", indent, __func__); \
204#define EX_FUNC_UNLOCK() \
207 fprintf(stderr, "%d Unlock: %s\n", indent, __func__); \
210#define EX_FUNC_ENTER() \
212 exi_reset_error_status(); \
214#define EX_FUNC_ENTER_INT()
215#define EX_FUNC_LEAVE(error) return error
216#define EX_FUNC_VOID() return
217#define EX_FUNC_UNLOCK()
221#define EX_UNUSED(A) \
241#define ATT_TITLE "title"
242#define ATT_API_VERSION "api_version"
244#define ATT_API_VERSION_BLANK "api version"
245#define ATT_VERSION "version"
246#define ATT_FILESIZE "file_size"
248#define ATT_FLT_WORDSIZE "floating_point_word_size"
251#define ATT_FLT_WORDSIZE_BLANK "floating point word size"
252#define ATT_MAX_NAME_LENGTH "maximum_name_length"
253#define ATT_INT64_STATUS "int64_status"
254#define ATT_NEM_API_VERSION "nemesis_api_version"
255#define ATT_NEM_FILE_VERSION "nemesis_file_version"
256#define ATT_PROCESSOR_INFO "processor_info"
257#define ATT_LAST_WRITTEN_TIME "last_written_time"
259#define DIM_NUM_ASSEMBLY "num_assembly"
260#define DIM_NUM_BLOB "num_blob"
261#define DIM_NUM_NODES "num_nodes"
262#define DIM_NUM_DIM "num_dim"
263#define DIM_NUM_EDGE "num_edge"
264#define DIM_NUM_FACE "num_face"
265#define DIM_NUM_ELEM "num_elem"
266#define DIM_NUM_EL_BLK "num_el_blk"
267#define DIM_NUM_ED_BLK "num_ed_blk"
268#define DIM_NUM_FA_BLK "num_fa_blk"
269#define VAR_COORD "coord"
270#define VAR_COORD_X "coordx"
271#define VAR_COORD_Y "coordy"
272#define VAR_COORD_Z "coordz"
273#define VAR_NAME_COOR "coor_names"
274#define VAR_NAME_EL_BLK "eb_names"
275#define VAR_NAME_NS "ns_names"
276#define VAR_NAME_SS "ss_names"
277#define VAR_NAME_EM "emap_names"
278#define VAR_NAME_EDM "edmap_names"
279#define VAR_NAME_FAM "famap_names"
280#define VAR_NAME_NM "nmap_names"
281#define VAR_NAME_ED_BLK "ed_names"
282#define VAR_NAME_FA_BLK "fa_names"
283#define VAR_NAME_ES "es_names"
284#define VAR_NAME_FS "fs_names"
285#define VAR_NAME_ELS "els_names"
286#define VAR_STAT_EL_BLK "eb_status"
287#define VAR_STAT_ECONN "econn_status"
288#define VAR_STAT_FCONN "fconn_status"
289#define VAR_STAT_ED_BLK "ed_status"
290#define VAR_STAT_FA_BLK "fa_status"
291#define VAR_ID_EL_BLK "eb_prop1"
292#define VAR_ID_ED_BLK "ed_prop1"
293#define VAR_ID_FA_BLK "fa_prop1"
294#define DIM_NUM_ENTITY_ASSEMBLY(num) exi_catstr("num_entity_assembly", num)
295#define VAR_ENTITY_ASSEMBLY(num) exi_catstr("assembly_entity", num)
296#define DIM_NUM_VALUES_BLOB(num) exi_catstr("num_values_blob", num)
297#define VAR_ENTITY_BLOB(num) exi_catstr("blob_entity", num)
298#define EX_ATTRIBUTE_TYPE "_type"
299#define EX_ATTRIBUTE_TYPENAME "_typename"
300#define EX_ATTRIBUTE_NAME "_name"
301#define EX_ATTRIBUTE_ID "_id"
304#define ATT_NAME_ELB "elem_type"
306#define DIM_NUM_EL_IN_BLK(num) exi_catstr("num_el_in_blk", num)
308#define DIM_NUM_NOD_PER_EL(num) exi_catstr("num_nod_per_el", num)
310#define DIM_NUM_ATT_IN_BLK(num) exi_catstr("num_att_in_blk", num)
312#define DIM_NUM_ED_IN_EBLK(num) exi_catstr("num_ed_in_blk", num)
314#define DIM_NUM_NOD_PER_ED(num) exi_catstr("num_nod_per_ed", num)
316#define DIM_NUM_EDG_PER_EL(num) exi_catstr("num_edg_per_el", num)
318#define DIM_NUM_ATT_IN_EBLK(num) exi_catstr("num_att_in_eblk", num)
320#define DIM_NUM_FA_IN_FBLK(num) exi_catstr("num_fa_in_blk", num)
322#define DIM_NUM_NOD_PER_FA(num) exi_catstr("num_nod_per_fa", num)
324#define DIM_NUM_FAC_PER_EL(num) exi_catstr("num_fac_per_el", num)
326#define DIM_NUM_ATT_IN_FBLK(num) exi_catstr("num_att_in_fblk", num)
328#define VAR_CONN(num) exi_catstr("connect", num)
331#define VAR_EBEPEC(num) exi_catstr("ebepecnt", num)
333#define VAR_ATTRIB(num) exi_catstr("attrib", num)
335#define VAR_NAME_ATTRIB(num) exi_catstr("attrib_name", num)
337#define VAR_EB_PROP(num) exi_catstr("eb_prop", num)
339#define VAR_ECONN(num) exi_catstr("edgconn", num)
341#define VAR_EBCONN(num) exi_catstr("ebconn", num)
343#define VAR_EATTRIB(num) exi_catstr("eattrb", num)
345#define VAR_NAME_EATTRIB(num) exi_catstr("eattrib_name", num)
346#define VAR_NATTRIB "nattrb"
347#define VAR_NAME_NATTRIB "nattrib_name"
348#define DIM_NUM_ATT_IN_NBLK "num_att_in_nblk"
350#define VAR_NSATTRIB(num) exi_catstr("nsattrb", num)
351#define VAR_NAME_NSATTRIB(num) exi_catstr("nsattrib_name", num)
352#define DIM_NUM_ATT_IN_NS(num) exi_catstr("num_att_in_ns", num)
354#define VAR_SSATTRIB(num) exi_catstr("ssattrb", num)
355#define VAR_NAME_SSATTRIB(num) exi_catstr("ssattrib_name", num)
356#define DIM_NUM_ATT_IN_SS(num) exi_catstr("num_att_in_ss", num)
358#define VAR_ESATTRIB(num) exi_catstr("esattrb", num)
359#define VAR_NAME_ESATTRIB(num) exi_catstr("esattrib_name", num)
360#define DIM_NUM_ATT_IN_ES(num) exi_catstr("num_att_in_es", num)
362#define VAR_FSATTRIB(num) exi_catstr("fsattrb", num)
363#define VAR_NAME_FSATTRIB(num) exi_catstr("fsattrib_name", num)
364#define DIM_NUM_ATT_IN_FS(num) exi_catstr("num_att_in_fs", num)
366#define VAR_ELSATTRIB(num) exi_catstr("elsattrb", num)
367#define VAR_NAME_ELSATTRIB(num) exi_catstr("elsattrib_name", num)
368#define DIM_NUM_ATT_IN_ELS(num) exi_catstr("num_att_in_els", num)
371#define VAR_ED_PROP(num) exi_catstr("ed_prop", num)
373#define VAR_FCONN(num) exi_catstr("facconn", num)
375#define VAR_FBCONN(num) exi_catstr("fbconn", num)
377#define VAR_FBEPEC(num) exi_catstr("fbepecnt", num)
379#define VAR_FATTRIB(num) exi_catstr("fattrb", num)
381#define VAR_NAME_FATTRIB(num) exi_catstr("fattrib_name", num)
383#define VAR_FA_PROP(num) exi_catstr("fa_prop", num)
386#define ATT_PROP_NAME "name"
387#define VAR_MAP "elem_map"
388#define DIM_NUM_SS "num_side_sets"
389#define VAR_SS_STAT "ss_status"
390#define VAR_SS_IDS "ss_prop1"
392#define DIM_NUM_SIDE_SS(num) exi_catstr("num_side_ss", num)
394#define DIM_NUM_DF_SS(num) exi_catstr("num_df_ss", num)
396#define VAR_FACT_SS(num) exi_catstr("dist_fact_ss", num)
398#define VAR_ELEM_SS(num) exi_catstr("elem_ss", num)
400#define VAR_SIDE_SS(num) exi_catstr("side_ss", num)
402#define VAR_SS_PROP(num) exi_catstr("ss_prop", num)
403#define DIM_NUM_ES "num_edge_sets"
404#define VAR_ES_STAT "es_status"
405#define VAR_ES_IDS "es_prop1"
407#define DIM_NUM_EDGE_ES(num) exi_catstr("num_edge_es", num)
409#define DIM_NUM_DF_ES(num) exi_catstr("num_df_es", num)
411#define VAR_FACT_ES(num) exi_catstr("dist_fact_es", num)
413#define VAR_EDGE_ES(num) exi_catstr("edge_es", num)
415#define VAR_ORNT_ES(num) exi_catstr("ornt_es", num)
417#define VAR_ES_PROP(num) exi_catstr("es_prop", num)
418#define DIM_NUM_FS "num_face_sets"
419#define VAR_FS_STAT "fs_status"
420#define VAR_FS_IDS "fs_prop1"
422#define DIM_NUM_FACE_FS(num) exi_catstr("num_face_fs", num)
424#define DIM_NUM_DF_FS(num) exi_catstr("num_df_fs", num)
426#define VAR_FACT_FS(num) exi_catstr("dist_fact_fs", num)
428#define VAR_FACE_FS(num) exi_catstr("face_fs", num)
430#define VAR_ORNT_FS(num) exi_catstr("ornt_fs", num)
432#define VAR_FS_PROP(num) exi_catstr("fs_prop", num)
433#define DIM_NUM_ELS "num_elem_sets"
435#define DIM_NUM_ELE_ELS(num) exi_catstr("num_ele_els", num)
437#define DIM_NUM_DF_ELS(num) exi_catstr("num_df_els", num)
438#define VAR_ELS_STAT "els_status"
439#define VAR_ELS_IDS "els_prop1"
441#define VAR_ELEM_ELS(num) exi_catstr("elem_els", num)
443#define VAR_FACT_ELS(num) exi_catstr("dist_fact_els", num)
445#define VAR_ELS_PROP(num) exi_catstr("els_prop", num)
446#define DIM_NUM_NS "num_node_sets"
448#define DIM_NUM_NOD_NS(num) exi_catstr("num_nod_ns", num)
450#define DIM_NUM_DF_NS(num) exi_catstr("num_df_ns", num)
451#define VAR_NS_STAT "ns_status"
452#define VAR_NS_IDS "ns_prop1"
454#define VAR_NODE_NS(num) exi_catstr("node_ns", num)
456#define VAR_FACT_NS(num) exi_catstr("dist_fact_ns", num)
458#define VAR_NS_PROP(num) exi_catstr("ns_prop", num)
459#define DIM_NUM_QA "num_qa_rec"
460#define VAR_QA_TITLE "qa_records"
461#define DIM_NUM_INFO "num_info"
462#define VAR_INFO "info_records"
463#define VAR_WHOLE_TIME "time_whole"
464#define VAR_ASSEMBLY_TAB "assembly_var_tab"
465#define VAR_BLOB_TAB "blob_var_tab"
466#define VAR_ELEM_TAB "elem_var_tab"
467#define VAR_EBLK_TAB "edge_var_tab"
468#define VAR_FBLK_TAB "face_var_tab"
469#define VAR_ELSET_TAB "elset_var_tab"
470#define VAR_SSET_TAB "sset_var_tab"
471#define VAR_FSET_TAB "fset_var_tab"
472#define VAR_ESET_TAB "eset_var_tab"
473#define VAR_NSET_TAB "nset_var_tab"
474#define DIM_NUM_GLO_VAR "num_glo_var"
475#define VAR_NAME_GLO_VAR "name_glo_var"
476#define VAR_GLO_VAR "vals_glo_var"
477#define DIM_NUM_NOD_VAR "num_nod_var"
478#define VAR_NAME_NOD_VAR "name_nod_var"
479#define VAR_NOD_VAR "vals_nod_var"
481#define VAR_NOD_VAR_NEW(num) exi_catstr("vals_nod_var", num)
483#define DIM_NUM_ASSEMBLY_VAR "num_assembly_var"
484#define VAR_NAME_ASSEMBLY_VAR "name_assembly_var"
485#define VAR_ASSEMBLY_VAR(num1, num2) exi_catstr2("vals_assembly_var", num1, "assembly", num2)
487#define DIM_NUM_BLOB_VAR "num_blob_var"
488#define VAR_NAME_BLOB_VAR "name_blob_var"
489#define VAR_BLOB_VAR(num1, num2) exi_catstr2("vals_blob_var", num1, "blob", num2)
491#define DIM_NUM_ELE_VAR "num_elem_var"
492#define VAR_NAME_ELE_VAR "name_elem_var"
494#define VAR_ELEM_VAR(num1, num2) exi_catstr2("vals_elem_var", num1, "eb", num2)
495#define DIM_NUM_EDG_VAR "num_edge_var"
496#define VAR_NAME_EDG_VAR "name_edge_var"
498#define VAR_EDGE_VAR(num1, num2) exi_catstr2("vals_edge_var", num1, "eb", num2)
499#define DIM_NUM_FAC_VAR "num_face_var"
500#define VAR_NAME_FAC_VAR "name_face_var"
502#define VAR_FACE_VAR(num1, num2) exi_catstr2("vals_face_var", num1, "fb", num2)
504#define DIM_NUM_NSET_VAR "num_nset_var"
505#define VAR_NAME_NSET_VAR "name_nset_var"
507#define VAR_NS_VAR(num1, num2) exi_catstr2("vals_nset_var", num1, "ns", num2)
508#define DIM_NUM_ESET_VAR "num_eset_var"
510#define VAR_NAME_ESET_VAR "name_eset_var"
511#define VAR_ES_VAR(num1, num2) exi_catstr2("vals_eset_var", num1, "es", num2)
512#define DIM_NUM_FSET_VAR "num_fset_var"
513#define VAR_NAME_FSET_VAR "name_fset_var"
515#define VAR_FS_VAR(num1, num2) exi_catstr2("vals_fset_var", num1, "fs", num2)
516#define DIM_NUM_SSET_VAR "num_sset_var"
517#define VAR_NAME_SSET_VAR "name_sset_var"
519#define VAR_SS_VAR(num1, num2) exi_catstr2("vals_sset_var", num1, "ss", num2)
520#define DIM_NUM_ELSET_VAR "num_elset_var"
521#define VAR_NAME_ELSET_VAR "name_elset_var"
523#define VAR_ELS_VAR(num1, num2) exi_catstr2("vals_elset_var", num1, "es", num2)
529#define DIM_NUM_ASSEMBLY_RED_VAR "num_assembly_red_var"
530#define VAR_NAME_ASSEMBLY_RED_VAR "name_assembly_red_var"
531#define VAR_ASSEMBLY_RED_VAR(num) exi_catstr("vals_red_var_assembly", num)
533#define DIM_NUM_BLOB_RED_VAR "num_blob_red_var"
534#define VAR_NAME_BLOB_RED_VAR "name_blob_red_var"
535#define VAR_BLOB_RED_VAR(num) exi_catstr("vals_red_var_blob", num)
537#define DIM_NUM_ELE_RED_VAR "num_elem_red_var"
538#define VAR_NAME_ELE_RED_VAR "name_elem_red_var"
540#define VAR_ELEM_RED_VAR(num) exi_catstr("vals_red_var_eb", num)
542#define DIM_NUM_EDG_RED_VAR "num_edge_red_var"
543#define VAR_NAME_EDG_RED_VAR "name_edge_red_var"
545#define VAR_EDGE_RED_VAR(num) exi_catstr("vals_red_var_edb", num)
547#define DIM_NUM_FAC_RED_VAR "num_face_red_var"
548#define VAR_NAME_FAC_RED_VAR "name_face_red_var"
550#define VAR_FACE_RED_VAR(num) exi_catstr("vals_red_var_fb", num)
552#define DIM_NUM_NSET_RED_VAR "num_nset_red_var"
553#define VAR_NAME_NSET_RED_VAR "name_nset_red_var"
555#define VAR_NS_RED_VAR(num) exi_catstr("vals_red_var_nset", num)
557#define DIM_NUM_ESET_RED_VAR "num_eset_red_var"
559#define VAR_NAME_ESET_RED_VAR "name_eset_red_var"
560#define VAR_ES_RED_VAR(num) exi_catstr("vals_red_var_eset", num)
562#define DIM_NUM_FSET_RED_VAR "num_fset_red_var"
563#define VAR_NAME_FSET_RED_VAR "name_fset_red_var"
565#define VAR_FS_RED_VAR(num) exi_catstr("vals_red_var_fset", num)
567#define DIM_NUM_SSET_RED_VAR "num_sset_red_var"
568#define VAR_NAME_SSET_RED_VAR "name_sset_red_var"
570#define VAR_SS_RED_VAR(num) exi_catstr("vals_red_var_sset", num)
572#define DIM_NUM_ELSET_RED_VAR "num_elset_red_var"
573#define VAR_NAME_ELSET_RED_VAR "name_elset_red_var"
575#define VAR_ELS_RED_VAR(num) exi_catstr("vals_red_var_elset", num)
579#define DIM_STR "len_string"
581#define DIM_STR_NAME "len_name"
583#define DIM_LIN "len_line"
585#define DIM_N1 "blob_entity"
587#define DIM_TIME "time_step"
588#define VAR_ELEM_NUM_MAP "elem_num_map"
589#define VAR_FACE_NUM_MAP "face_num_map"
590#define VAR_EDGE_NUM_MAP "edge_num_map"
591#define VAR_NODE_NUM_MAP "node_num_map"
592#define DIM_NUM_EM "num_elem_maps"
594#define VAR_ELEM_MAP(num) exi_catstr("elem_map", num)
596#define VAR_EM_PROP(num) exi_catstr("em_prop", num)
597#define DIM_NUM_EDM "num_edge_maps"
599#define VAR_EDGE_MAP(num) exi_catstr("edge_map", num)
601#define VAR_EDM_PROP(num) exi_catstr("edm_prop", num)
602#define DIM_NUM_FAM "num_face_maps"
604#define VAR_FACE_MAP(num) exi_catstr("face_map", num)
606#define VAR_FAM_PROP(num) exi_catstr("fam_prop", num)
607#define DIM_NUM_NM "num_node_maps"
609#define VAR_NODE_MAP(num) exi_catstr("node_map", num)
611#define VAR_NM_PROP(num) exi_catstr("nm_prop", num)
613#define VAR_ASSEMBLY_PROP(num) exi_catstr("assembly_prop", num)
614#define VAR_BLOB_PROP(num) exi_catstr("blob_prop", num)
616#define DIM_NUM_CFRAMES "num_cframes"
617#define DIM_NUM_CFRAME9 "num_cframes_9"
618#define VAR_FRAME_COORDS "frame_coordinates"
619#define VAR_FRAME_IDS "frame_ids"
620#define VAR_FRAME_TAGS "frame_tags"
622#define VAR_ELBLK_IDS_GLOBAL "el_blk_ids_global"
623#define VAR_ELBLK_CNT_GLOBAL "el_blk_cnt_global"
624#define VAR_NS_IDS_GLOBAL "ns_ids_global"
625#define VAR_NS_NODE_CNT_GLOBAL "ns_node_cnt_global"
626#define VAR_NS_DF_CNT_GLOBAL "ns_df_cnt_global"
627#define VAR_SS_IDS_GLOBAL "ss_ids_global"
628#define VAR_SS_SIDE_CNT_GLOBAL "ss_side_cnt_global"
629#define VAR_SS_DF_CNT_GLOBAL "ss_df_cnt_global"
630#define VAR_FILE_TYPE "nem_ftype"
631#define VAR_COMM_MAP "comm_map"
632#define VAR_NODE_MAP_INT "node_mapi"
633#define VAR_NODE_MAP_INT_IDX "node_mapi_idx"
634#define VAR_NODE_MAP_BOR "node_mapb"
635#define VAR_NODE_MAP_BOR_IDX "node_mapb_idx"
636#define VAR_NODE_MAP_EXT "node_mape"
637#define VAR_NODE_MAP_EXT_IDX "node_mape_idx"
638#define VAR_ELEM_MAP_INT "elem_mapi"
639#define VAR_ELEM_MAP_INT_IDX "elem_mapi_idx"
640#define VAR_ELEM_MAP_BOR "elem_mapb"
641#define VAR_ELEM_MAP_BOR_IDX "elem_mapb_idx"
642#define VAR_INT_N_STAT "int_n_stat"
643#define VAR_BOR_N_STAT "bor_n_stat"
644#define VAR_EXT_N_STAT "ext_n_stat"
645#define VAR_INT_E_STAT "int_e_stat"
646#define VAR_BOR_E_STAT "bor_e_stat"
647#define VAR_N_COMM_IDS "n_comm_ids"
648#define VAR_N_COMM_STAT "n_comm_stat"
649#define VAR_N_COMM_INFO_IDX "n_comm_info_idx"
650#define VAR_E_COMM_IDS "e_comm_ids"
651#define VAR_E_COMM_STAT "e_comm_stat"
652#define VAR_E_COMM_INFO_IDX "e_comm_info_idx"
653#define VAR_N_COMM_NIDS "n_comm_nids"
654#define VAR_N_COMM_PROC "n_comm_proc"
655#define VAR_N_COMM_DATA_IDX "n_comm_data_idx"
656#define VAR_E_COMM_EIDS "e_comm_eids"
657#define VAR_E_COMM_SIDS "e_comm_sids"
658#define VAR_E_COMM_PROC "e_comm_proc"
659#define VAR_E_COMM_DATA_IDX "e_comm_data_idx"
661#define DIM_NUM_INT_NODES "num_int_node"
662#define DIM_NUM_BOR_NODES "num_bor_node"
663#define DIM_NUM_EXT_NODES "num_ext_node"
664#define DIM_NUM_INT_ELEMS "num_int_elem"
665#define DIM_NUM_BOR_ELEMS "num_bor_elem"
666#define DIM_NUM_PROCS "num_processors"
667#define DIM_NUM_PROCS_F "num_procs_file"
668#define DIM_NUM_NODES_GLOBAL "num_nodes_global"
669#define DIM_NUM_ELEMS_GLOBAL "num_elems_global"
670#define DIM_NUM_NS_GLOBAL "num_ns_global"
671#define DIM_NUM_SS_GLOBAL "num_ss_global"
672#define DIM_NUM_ELBLK_GLOBAL "num_el_blk_global"
673#define DIM_NUM_N_CMAPS "num_n_cmaps"
674#define DIM_NUM_E_CMAPS "num_e_cmaps"
675#define DIM_NCNT_CMAP "ncnt_cmap"
676#define DIM_ECNT_CMAP "ecnt_cmap"
773#define EXODUS_EXPORT extern
789 int int64_status,
bool is_parallel,
bool is_hdf5,
bool is_pnetcdf,
827 int exoid,
const char *func);
832 size_t *count,
int *dimid,
const char *routine);
835 int beg_time_step,
int end_time_step,
836 void *nodal_var_vals);
839 int beg_time_step,
int end_time_step,
840 const void *nodal_var_vals);
843 int beg_time_step,
int end_time_step,
844 void *nodal_var_vals);
847 int beg_time_step,
int end_time_step,
848 const void *nodal_var_vals);
851 int64_t start_node, int64_t num_nodes,
void *var_vals);
854 int64_t start_node, int64_t num_nodes,
855 const void *nodal_var_vals);
857 void *glob_var_vals);
860 int end_time_step,
void *glob_var_vals);
863 int end_time_step,
void *glob_var_vals);
870 ex_entity_type obj_type,
const char *subtype,
const char *routine);
872 ex_entity_type obj_type,
const char *subtype,
const char *routine);
878 const char *call_rout
881 const char *call_rout
887 int *comp_ws,
int *io_ws);
902 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:267
int64_t ex_entity_id
Definition exodusII.h:421
struct exi_list_item ** exi_get_counter_list(ex_entity_type obj_type)
Definition ex_utils.c:1159
nc_type nc_flt_code(int exoid)
Definition ex_conv.c:319
char * exi_canonicalize_filename(const char *path)
Definition ex_utils.c:2564
int exi_get_dimension(int exoid, const char *DIMENSION, const char *label, size_t *count, int *dimid, const char *routine)
Definition ex_utils.c:1659
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:773
int exi_get_varid(int exoid, ex_entity_type obj_type, ex_entity_id id)
Definition ex_utils.c:2458
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_redef(int exoid, const char *call_func)
Definition ex_utils.c:1866
int exi_check_file_type(const char *path, int *type)
Definition ex_utils.c:183
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:2288
int exi_is_parallel(int exoid)
Definition ex_conv.c:563
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:284
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:691
char * exi_dim_num_objects(ex_entity_type obj_type)
Definition ex_utils.c:631
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:1381
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:1953
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:1108
exi_element_type
Definition exodusII_int.h:678
int exi_default_max_name_length
void exi_iqsort(int v[], int iv[], size_t N)
Definition ex_utils.c:1598
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:468
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:1614
exi_coordinate_frame_type
Definition exodusII_int.h:746
void exi_rm_file_item(int, struct exi_list_item **)
Definition ex_utils.c:1306
void exi_compress_variable(int exoid, int varid, int type)
Definition ex_utils.c:1732
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:391
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:543
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:1708
int exi_persist_redef(int exoid, const char *call_func)
Definition ex_utils.c:1894
char * exi_catstr(const char *, int)
Definition ex_utils.c:527
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:445
EXODUS_EXPORT void exi_reset_error_status(void)
Definition ex_err.c:33
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:283
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:718
char * exi_dim_num_entries_in_object(ex_entity_type, int)
Definition ex_utils.c:663
char * exi_name_of_map(ex_entity_type, int)
Definition ex_utils.c:745
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:1975
int exi_persist_leavedef(int exoid, const char *call_rout)
Definition ex_utils.c:1923
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:1839
int exi_id_lkup(int exoid, ex_entity_type id_type, ex_entity_id num)
Definition ex_utils.c:778
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:1210
int exi_get_file_item(int, struct exi_list_item **)
Definition ex_utils.c:1259
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:322
void exi_trim(char *name)
Definition ex_utils.c:500
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:1070
int exi_comp_ws(int exoid)
Definition ex_conv.c:541
struct exi_obj_stats * exoII_ns
Definition ex_utils.c:26
@ EX_EL_WEDGE
Definition exodusII_int.h:684
@ EX_EL_TRIANGLE
Definition exodusII_int.h:681
@ EX_EL_SPHERE
Definition exodusII_int.h:689
@ EX_EL_TRISHELL
Definition exodusII_int.h:691
@ EX_EL_SHELL
Definition exodusII_int.h:688
@ EX_EL_PYRAMID
Definition exodusII_int.h:692
@ EX_EL_TETRA
Definition exodusII_int.h:685
@ EX_EL_NULL_ELEMENT
Definition exodusII_int.h:680
@ EX_EL_HEX
Definition exodusII_int.h:683
@ EX_EL_TRUSS
Definition exodusII_int.h:686
@ EX_EL_BEAM
Definition exodusII_int.h:687
@ EX_EL_CIRCLE
Definition exodusII_int.h:690
@ EX_EL_QUAD
Definition exodusII_int.h:682
@ EX_EL_UNK
Definition exodusII_int.h:679
@ EX_CF_SPHERICAL
Definition exodusII_int.h:749
@ EX_CF_RECTANGULAR
Definition exodusII_int.h:747
@ EX_CF_CYLINDRICAL
Definition exodusII_int.h:748
#define MAX_ERR_LENGTH
Definition exodusII.h:417
Definition exodusII.h:492
Definition exodusII_int.h:733
exi_element_type elem_type_val
Definition exodusII_int.h:742
int64_t elem_blk_id
Definition exodusII_int.h:735
int num_nodes_per_elem
Definition exodusII_int.h:737
int64_t elem_ctr
Definition exodusII_int.h:741
int num_attr
Definition exodusII_int.h:740
int64_t num_elem_in_blk
Definition exodusII_int.h:736
char elem_type[33]
Definition exodusII_int.h:734
int num_nodes_per_side[6]
Definition exodusII_int.h:739
int num_sides
Definition exodusII_int.h:738
Definition exodusII_int.h:699
unsigned int is_write
Definition exodusII_int.h:720
unsigned int user_compute_wordsize
Definition exodusII_int.h:717
int file_id
Definition exodusII_int.h:700
int compression_level
Definition exodusII_int.h:705
unsigned int has_elems
Definition exodusII_int.h:727
struct exi_file_item * next
Definition exodusII_int.h:729
int time_varid
Definition exodusII_int.h:704
nc_type netcdf_type_code
Definition exodusII_int.h:701
unsigned int persist_define_mode
Definition exodusII_int.h:710
unsigned int has_nodes
Definition exodusII_int.h:724
unsigned int is_parallel
Definition exodusII_int.h:721
unsigned int is_hdf5
Definition exodusII_int.h:722
unsigned int has_edges
Definition exodusII_int.h:725
unsigned int blob_count
Definition exodusII_int.h:708
unsigned int assembly_count
Definition exodusII_int.h:707
int maximum_name_length
Definition exodusII_int.h:703
unsigned int is_pnetcdf
Definition exodusII_int.h:723
unsigned int compression_algorithm
Definition exodusII_int.h:713
unsigned int file_type
Definition exodusII_int.h:719
int int64_status
Definition exodusII_int.h:702
unsigned int shuffle
Definition exodusII_int.h:716
unsigned int quantize_nsd
Definition exodusII_int.h:714
unsigned int in_define_mode
Definition exodusII_int.h:728
unsigned int has_faces
Definition exodusII_int.h:726
Definition exodusII_int.h:754
int value
Definition exodusII_int.h:756
int exo_id
Definition exodusII_int.h:755
struct exi_list_item * next
Definition exodusII_int.h:757
Definition exodusII_int.h:761
char valid_stat
Definition exodusII_int.h:767
int * stat_vals
Definition exodusII_int.h:763
int exoid
Definition exodusII_int.h:765
char valid_ids
Definition exodusII_int.h:766
struct exi_obj_stats * next
Definition exodusII_int.h:769
int64_t * id_vals
Definition exodusII_int.h:762
size_t num
Definition exodusII_int.h:764
char sequential
Definition exodusII_int.h:768