ExodusII  6.05
exodusII.h
Go to the documentation of this file.
00001 /*
00002  * Copyright (c) 2005 Sandia Corporation. Under the terms of Contract
00003  * DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government
00004  * retains certain rights in this software.
00005  * 
00006  * Redistribution and use in source and binary forms, with or without
00007  * modification, are permitted provided that the following conditions
00008  * are met:
00009  * 
00010  *     * Redistributions of source code must retain the above copyright
00011  *       notice, this list of conditions and the following disclaimer.
00012  * 
00013  *     * Redistributions in binary form must reproduce the above
00014  *       copyright notice, this list of conditions and the following
00015  *       disclaimer in the documentation and/or other materials provided
00016  *       with the distribution.  
00017  * 
00018  *     * Neither the name of Sandia Corporation nor the names of its
00019  *       contributors may be used to endorse or promote products derived
00020  *       from this software without specific prior written permission.
00021  * 
00022  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
00023  * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
00024  * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
00025  * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
00026  * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
00027  * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
00028  * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
00029  * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
00030  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
00031  * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
00032  * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
00033  * OF THE POSSIBILITY OF SUCH DAMAGE.
00034  * 
00035  */
00036 
00037 /*****************************************************************************
00038  *
00039  * exodusII.h - Exodus II API include file
00040  *
00041  *****************************************************************************/
00042 
00043 #ifndef EXODUS_II_HDR
00044 #define EXODUS_II_HDR
00045 
00046 #include "netcdf.h"
00047 
00048 #if defined(PARALLEL_AWARE_EXODUS)
00049 #include "netcdf_par.h"
00050 #endif
00051 
00052 #include <stddef.h>
00053 #include <stdlib.h>
00054 #include <stdint.h>
00055 
00056 #ifndef NC_INT64
00057 #error "NetCDF version 4.1.2 or later is required."
00058 #endif
00059 
00060 /* EXODUS II version number */
00061 #define EX_API_VERS 6.10f
00062 #define EX_API_VERS_NODOT 610
00063 #define EX_VERS EX_API_VERS
00064 #define NEMESIS_API_VERSION  EX_API_VERS
00065 #define NEMESIS_API_VERSION_NODOT EX_API_VERS_NODOT
00066 #define NEMESIS_FILE_VERSION  2.6 
00067 
00068 /*
00069  * need following extern if this include file is used in a C++
00070  * program, to keep the C++ compiler from mangling the function names.
00071  */
00072 #ifdef __cplusplus
00073 extern "C" {
00074 #endif
00075 
00076   /*
00077    * The following are miscellaneous constants used in the EXODUS II
00078    * API. They should already be defined, but are left over from the
00079    * old days...
00080    */
00081 #ifndef EX_TRUE
00082 #define EX_TRUE -1
00083 #endif
00084 
00085 #ifndef EX_FALSE
00086 #define EX_FALSE 0 
00087 #endif
00088 
00089   /**
00090    * \defgroup FileVars Variables controlling the file creation mode.
00091    *@{
00092    */
00093   /* Modes for ex_open */
00094 #define EX_WRITE                0x0001 /**< ex_open(): open existing file for appending. */
00095 #define EX_READ                 0x0002 /**< ex_open(): open file for reading (default) */
00096 
00097 #define EX_NOCLOBBER            0x0004 /**< Don't overwrite existing database, default */
00098 #define EX_CLOBBER              0x0008 /**< Overwrite existing database if it exists */
00099 #define EX_NORMAL_MODEL         0x0010 /**< disable mods that permit storage of larger models */
00100 #define EX_LARGE_MODEL          0x0020 /**< enable mods that permit storage of larger models */
00101 #define EX_NETCDF4              0x0040 /**< use the hdf5-based netcdf4 output */
00102 #define EX_NOSHARE              0x0080  /**< Do not open netcdf file in "share" mode */
00103 #define EX_SHARE                0x0100 /**< Do open netcdf file in "share" mode */
00104 #define EX_NOCLASSIC            0x0200 /**< Do not force netcdf to classic mode in netcdf4 mode */
00105 
00106   /* Need to distinguish between storage on database (DB in name) and
00107      passed through the API functions (API in name).
00108   */
00109 #define EX_MAPS_INT64_DB        0x0400 /**< All maps (id, order, ...) store int64_t values */
00110 #define EX_IDS_INT64_DB         0x0800 /**< All entity ids (sets, blocks, maps) are int64_t values */
00111 #define EX_BULK_INT64_DB        0x1000 /**< All integer bulk data (local indices, counts, maps); not ids */
00112 #define EX_ALL_INT64_DB         (EX_MAPS_INT64_DB|EX_IDS_INT64_DB|EX_BULK_INT64_DB) /**< All of the above... */
00113 
00114 #define EX_MAPS_INT64_API       0x2000 /**< All maps (id, order, ...) store int64_t values */
00115 #define EX_IDS_INT64_API        0x4000 /**< All entity ids (sets, blocks, maps) are int64_t values */
00116 #define EX_BULK_INT64_API       0x8000 /**< All integer bulk data (local indices, counts, maps); not ids */
00117 #define EX_INQ_INT64_API       0x10000 /**< Integers passed to/from ex_inquire are int64_t */
00118 #define EX_ALL_INT64_API        (EX_MAPS_INT64_API|EX_IDS_INT64_API|EX_BULK_INT64_API|EX_INQ_INT64_API) /**< All of the above... */
00119 
00120   /* Parallel IO mode flags... */
00121 #define EX_MPIIO               0x20000
00122 #define EX_MPIPOSIX            0x40000
00123 #define EX_PNETCDF             0x80000
00124   
00125   /*@}*/
00126   
00127   /*! \sa ex_inquire() */
00128   enum ex_inquiry {
00129     EX_INQ_FILE_TYPE       =  1,     /**< inquire EXODUS II file type*/
00130     EX_INQ_API_VERS        =  2,     /**< inquire API version number */
00131     EX_INQ_DB_VERS         =  3,     /**< inquire database version number */
00132     EX_INQ_TITLE           =  4,     /**< inquire database title     */
00133     EX_INQ_DIM             =  5,     /**< inquire number of dimensions */
00134     EX_INQ_NODES           =  6,     /**< inquire number of nodes    */
00135     EX_INQ_ELEM            =  7,     /**< inquire number of elements */
00136     EX_INQ_ELEM_BLK        =  8,     /**< inquire number of element blocks */
00137     EX_INQ_NODE_SETS       =  9,     /**< inquire number of node sets*/
00138     EX_INQ_NS_NODE_LEN     = 10,     /**< inquire length of node set node list */
00139     EX_INQ_SIDE_SETS       = 11,     /**< inquire number of side sets*/
00140     EX_INQ_SS_NODE_LEN     = 12,     /**< inquire length of side set node list */
00141     EX_INQ_SS_ELEM_LEN     = 13,     /**< inquire length of side set element list */
00142     EX_INQ_QA              = 14,     /**< inquire number of QA records */
00143     EX_INQ_INFO            = 15,     /**< inquire number of info records */
00144     EX_INQ_TIME            = 16,     /**< inquire number of time steps in the database */
00145     EX_INQ_EB_PROP         = 17,     /**< inquire number of element block properties */
00146     EX_INQ_NS_PROP         = 18,     /**< inquire number of node set properties */
00147     EX_INQ_SS_PROP         = 19,     /**< inquire number of side set properties */
00148     EX_INQ_NS_DF_LEN       = 20,     /**< inquire length of node set distribution factor list*/
00149     EX_INQ_SS_DF_LEN       = 21,     /**< inquire length of side set distribution factor list*/
00150     EX_INQ_LIB_VERS        = 22,     /**< inquire API Lib vers number*/
00151     EX_INQ_EM_PROP         = 23,     /**< inquire number of element map properties */
00152     EX_INQ_NM_PROP         = 24,     /**< inquire number of node map properties */
00153     EX_INQ_ELEM_MAP        = 25,     /**< inquire number of element maps */
00154     EX_INQ_NODE_MAP        = 26,     /**< inquire number of node maps*/
00155     EX_INQ_EDGE            = 27,     /**< inquire number of edges    */
00156     EX_INQ_EDGE_BLK        = 28,     /**< inquire number of edge blocks */
00157     EX_INQ_EDGE_SETS       = 29,     /**< inquire number of edge sets   */
00158     EX_INQ_ES_LEN          = 30,     /**< inquire length of concat edge set edge list       */
00159     EX_INQ_ES_DF_LEN       = 31,     /**< inquire length of concat edge set dist factor list*/
00160     EX_INQ_EDGE_PROP       = 32,     /**< inquire number of properties stored per edge block    */
00161     EX_INQ_ES_PROP         = 33,     /**< inquire number of properties stored per edge set      */
00162     EX_INQ_FACE            = 34,     /**< inquire number of faces */
00163     EX_INQ_FACE_BLK        = 35,     /**< inquire number of face blocks */
00164     EX_INQ_FACE_SETS       = 36,     /**< inquire number of face sets */
00165     EX_INQ_FS_LEN          = 37,     /**< inquire length of concat face set face list */
00166     EX_INQ_FS_DF_LEN       = 38,     /**< inquire length of concat face set dist factor list*/
00167     EX_INQ_FACE_PROP       = 39,     /**< inquire number of properties stored per face block */
00168     EX_INQ_FS_PROP         = 40,     /**< inquire number of properties stored per face set */
00169     EX_INQ_ELEM_SETS       = 41,     /**< inquire number of element sets */
00170     EX_INQ_ELS_LEN         = 42,     /**< inquire length of concat element set element list       */
00171     EX_INQ_ELS_DF_LEN      = 43,     /**< inquire length of concat element set dist factor list*/
00172     EX_INQ_ELS_PROP        = 44,     /**< inquire number of properties stored per elem set      */
00173     EX_INQ_EDGE_MAP        = 45,     /**< inquire number of edge maps                     */
00174     EX_INQ_FACE_MAP        = 46,     /**< inquire number of face maps                     */
00175     EX_INQ_COORD_FRAMES    = 47,     /**< inquire number of coordinate frames */
00176     EX_INQ_DB_MAX_ALLOWED_NAME_LENGTH  = 48,     /**< inquire size of MAX_NAME_LENGTH dimension on database */
00177     EX_INQ_DB_MAX_USED_NAME_LENGTH  = 49,     /**< inquire size of MAX_NAME_LENGTH dimension on database */
00178     EX_INQ_MAX_READ_NAME_LENGTH = 50,     /**< inquire client-specified max size of returned names */
00179 
00180     EX_INQ_DB_FLOAT_SIZE = 51,      /**< inquire size of floating-point values stored on database */
00181     EX_INQ_NUM_CHILD_GROUPS= 52,     /**< inquire number of groups contained in this (exoid) group */
00182     EX_INQ_GROUP_PARENT    = 53,     /**< inquire id of parent of this (exoid) group; returns exoid if at root */
00183     EX_INQ_GROUP_ROOT      = 54,     /**< inquire id of root group "/" of this (exoid) group; returns exoid if at root */
00184     EX_INQ_GROUP_NAME_LEN  = 55,     /**< inquire length of name of group exoid */
00185     EX_INQ_GROUP_NAME      = 56,     /**< inquire name of group exoid. "/" returned for root group */
00186     EX_INQ_FULL_GROUP_NAME_LEN = 57, /**< inquire length of full path name of this (exoid) group */
00187     EX_INQ_FULL_GROUP_NAME = 58,     /**< inquire full "/"-separated path name of this (exoid) group */
00188     EX_INQ_INVALID         = -1};
00189 
00190   typedef enum ex_inquiry ex_inquiry;
00191   
00192   /* Options */
00193   /**
00194    * \defgroup FileOptions Variables controlling the compression, name size, and integer size.
00195    *@{
00196    */
00197   /* Modes for ex_open */
00198   /*! \sa ex_set_option() */
00199   enum ex_option_type {
00200     EX_OPT_MAX_NAME_LENGTH = 1,
00201     EX_OPT_COMPRESSION_TYPE,     /* Currently not used. GZip by default */
00202     EX_OPT_COMPRESSION_LEVEL,    /* 0 (disabled/fastest) ... 9 (best/slowest) */
00203     EX_OPT_COMPRESSION_SHUFFLE,  /* 0 (disabled); 1 (enabled) */
00204     EX_OPT_INTEGER_SIZE_API,     /* See *_INT64_* values above */
00205     EX_OPT_INTEGER_SIZE_DB /* (query only) */
00206   };
00207   typedef enum ex_option_type ex_option_type;
00208   /*@}*/
00209   
00210   enum ex_entity_type {
00211     EX_NODAL       = 14,          /**< nodal "block" for variables*/
00212     EX_NODE_BLOCK  = 14,          /**< alias for EX_NODAL         */
00213     EX_NODE_SET    =  2,          /**< node set property code     */
00214     EX_EDGE_BLOCK  =  6,          /**< edge block property code   */
00215     EX_EDGE_SET    =  7,          /**< edge set property code     */
00216     EX_FACE_BLOCK  =  8,          /**< face block property code   */
00217     EX_FACE_SET    =  9,          /**< face set property code     */
00218     EX_ELEM_BLOCK  =  1,          /**< element block property code*/
00219     EX_ELEM_SET    = 10,          /**< face set property code     */
00220     
00221     EX_SIDE_SET    =  3,          /**< side set property code     */
00222     
00223     EX_ELEM_MAP    =  4,          /**< element map property code  */
00224     EX_NODE_MAP    =  5,          /**< node map property code     */
00225     EX_EDGE_MAP    = 11,          /**< edge map property code     */
00226     EX_FACE_MAP    = 12,          /**< face map property code     */
00227     
00228     EX_GLOBAL      = 13,          /**< global "block" for variables*/
00229     EX_COORDINATE  = 15,          /**< kluge so some internal wrapper functions work */
00230     EX_INVALID     = -1};             
00231   typedef enum ex_entity_type ex_entity_type;
00232   
00233   /**
00234    * ex_opts() function codes - codes are OR'ed into exopts
00235    */
00236   enum ex_options {
00237     EX_DEFAULT  = 0,
00238     EX_VERBOSE  = 1,  /**< verbose mode message flag   */
00239     EX_DEBUG    = 2,  /**< debug mode def             */
00240     EX_ABORT    = 4,   /**< abort mode flag def        */
00241     EX_NULLVERBOSE = 8 /**< verbose mode for null entity detection warning */
00242   };
00243   typedef enum ex_options ex_options;
00244   
00245   /** The value used to indicate that an entity (block, nset, sset)
00246       has not had its id set to a valid value
00247   */
00248 #define EX_INVALID_ID -1
00249 
00250   /**
00251    * \defgroup StringLengths maximum string lengths;
00252    * constants that are used as netcdf dimensions must be of type long
00253    * @{ 
00254    */
00255   /** Maximum length of QA record, element type name */
00256 #define MAX_STR_LENGTH          32L 
00257   /** Maximum length of an entity name, attribute name, variable name */
00258 #define MAX_NAME_LENGTH         MAX_STR_LENGTH
00259   
00260   /** Maximum length of the database title or an information record */
00261 #define MAX_LINE_LENGTH         80L
00262   /** Maximum length of an error message passed to ex_err() function. Typically, internal use only */
00263 #define MAX_ERR_LENGTH          256
00264   /* @} */
00265 
00266   /** Specifies that this argument is the id of an entity: element block, nodeset, sideset, ... */
00267   typedef int64_t ex_entity_id;
00268   
00269   /** The mechanism for passing double/float and int/int64_t both use a
00270      void*; to avoid some confusion as to whether a function takes an
00271      integer or a float/double, the following typedef is used for the
00272      integer argument
00273   */
00274   typedef void void_int;
00275   
00276   /**
00277    * \defgroup APIStructs Structures used by external API functions.
00278    * @{
00279    */
00280   typedef struct ex_init_params {
00281     char title[MAX_LINE_LENGTH + 1];
00282     int64_t num_dim;
00283     int64_t num_nodes;
00284     int64_t num_edge;
00285     int64_t num_edge_blk;
00286     int64_t num_face;
00287     int64_t num_face_blk;
00288     int64_t num_elem;
00289     int64_t num_elem_blk;
00290     int64_t num_node_sets;
00291     int64_t num_edge_sets;
00292     int64_t num_face_sets;
00293     int64_t num_side_sets;
00294     int64_t num_elem_sets;
00295     int64_t num_node_maps;
00296     int64_t num_edge_maps;
00297     int64_t num_face_maps;
00298     int64_t num_elem_maps;
00299   } ex_init_params;
00300 
00301   typedef struct ex_block {
00302     int64_t id;
00303     ex_entity_type type;
00304     char   topology[MAX_STR_LENGTH+1];
00305     int64_t num_entry;
00306     int64_t num_nodes_per_entry;
00307     int64_t num_edges_per_entry;
00308     int64_t num_faces_per_entry;
00309     int64_t num_attribute;
00310   } ex_block;
00311 
00312   typedef struct ex_set {
00313     int64_t id;
00314     ex_entity_type type;
00315     int64_t num_entry;
00316     int64_t num_distribution_factor;
00317     void_int* entry_list;
00318     void_int* extra_list;
00319     void*     distribution_factor_list;
00320   } ex_set;
00321 
00322   typedef struct ex_block_params {
00323     void_int*  edge_blk_id;
00324     char** edge_type;
00325     int*   num_edge_this_blk;
00326     int*   num_nodes_per_edge;
00327     int*   num_attr_edge;
00328     void_int*   face_blk_id;
00329     char** face_type;
00330     int*   num_face_this_blk;
00331     int*   num_nodes_per_face;
00332     int*   num_attr_face;
00333     void_int*   elem_blk_id;
00334     char** elem_type;
00335     int*   num_elem_this_blk;
00336     int*   num_nodes_per_elem;
00337     int*   num_edges_per_elem;
00338     int*   num_faces_per_elem;
00339     int*   num_attr_elem;
00340     int    define_maps;
00341   } ex_block_params;
00342 
00343   typedef struct ex_set_specs {
00344     void_int* sets_ids;
00345     void_int* num_entries_per_set;
00346     void_int* num_dist_per_set;
00347     void_int* sets_entry_index;
00348     void_int* sets_dist_index;
00349     void_int* sets_entry_list;
00350     void_int* sets_extra_list;
00351     void* sets_dist_fact;
00352   } ex_set_specs;
00353 
00354   typedef struct ex_var_params {
00355     int  num_glob;
00356     int  num_node;
00357     int  num_edge;
00358     int  num_face;
00359     int  num_elem;
00360     int  num_nset;
00361     int  num_eset;
00362     int  num_fset;
00363     int  num_sset;
00364     int  num_elset;
00365     int* edge_var_tab;
00366     int* face_var_tab;
00367     int* elem_var_tab;
00368     int* nset_var_tab;
00369     int* eset_var_tab;
00370     int* fset_var_tab;
00371     int* sset_var_tab;
00372     int* elset_var_tab;
00373   } ex_var_params;
00374   /* @} */
00375 
00376 #ifndef EXODUS_EXPORT
00377 #define EXODUS_EXPORT extern
00378 #endif /* EXODUS_EXPORT */
00379 
00380   /* routines for file initialization i/o */
00381   EXODUS_EXPORT int ex_close (int exoid);
00382 
00383   EXODUS_EXPORT int ex_copy (int in_exoid, int out_exoid);
00384 
00385 #define ex_create(path, mode, comp_ws, io_ws) ex_create_int(path, mode, comp_ws, io_ws, EX_API_VERS_NODOT)  
00386 
00387   EXODUS_EXPORT int ex_create_int (const char *path, int cmode, int *comp_ws, int *io_ws, int my_version);
00388 
00389   EXODUS_EXPORT int ex_create_group (int parent_id, const char *group_name);
00390 
00391   EXODUS_EXPORT int ex_get_group_id(int exoid, const char *group_name, int *group_id);
00392 
00393   EXODUS_EXPORT int ex_get_group_ids(int exoid, int *num_children, int *child_ids);
00394   
00395   EXODUS_EXPORT int ex_get_all_times (int   exoid,
00396           void *time_values);
00397 
00398   EXODUS_EXPORT int ex_get_coord_names (int    exoid,
00399      char **coord_names);
00400 
00401   EXODUS_EXPORT int ex_get_coord (int exoid,
00402       void *x_coor,
00403       void *y_coor,
00404       void *z_coor);
00405 
00406   EXODUS_EXPORT int ex_get_n_coord (int exoid,
00407         int64_t start_node_num,
00408         int64_t  num_nodes,
00409         void *x_coor,
00410         void *y_coor,
00411         void *z_coor);
00412 
00413   EXODUS_EXPORT int ex_get_partial_coord (int exoid,
00414         int64_t start_node_num,
00415         int64_t  num_nodes,
00416         void *x_coor,
00417         void *y_coor,
00418         void *z_coor);
00419 
00420   EXODUS_EXPORT int ex_get_ids (int  exoid,
00421     ex_entity_type  obj_type,
00422     void_int   *ids);
00423 
00424   EXODUS_EXPORT int ex_get_coordinate_frames(int exoid,
00425           int *nframes,
00426           void_int *cf_ids,
00427           void* pt_coordinates,
00428           char* tags);
00429 
00430   EXODUS_EXPORT int ex_get_glob_vars (int   exoid,
00431           int   time_step,
00432           int   num_glob_vars,
00433           void *glob_var_vals);
00434 
00435   EXODUS_EXPORT int ex_get_glob_var_time (int   exoid,
00436        int   glob_var_index,
00437        int   beg_time_step,
00438        int   end_time_step,
00439        void *glob_var_vals);
00440 
00441   EXODUS_EXPORT int ex_get_info (int exoid, char **info);
00442 
00443   EXODUS_EXPORT int ex_put_init_ext (int exoid,  const ex_init_params *param);
00444 
00445   EXODUS_EXPORT int ex_get_init_ext (int exoid, ex_init_params *param);
00446 
00447   EXODUS_EXPORT int ex_get_init (int   exoid,
00448      char *title,
00449      void_int  *num_dim,
00450      void_int  *num_nodes,
00451      void_int  *num_elem, 
00452      void_int  *num_elem_blk,
00453      void_int  *num_node_sets,
00454      void_int  *num_side_sets);
00455 
00456   EXODUS_EXPORT int ex_put_init (int   exoid,
00457      const char *title,
00458      int64_t   num_dim,
00459      int64_t   num_nodes,
00460      int64_t   num_elem,
00461      int64_t   num_elem_blk,
00462      int64_t   num_node_sets,
00463      int64_t   num_side_sets);
00464 
00465   EXODUS_EXPORT int ex_get_map_param (int   exoid,
00466           int  *num_node_maps,
00467           int  *num_elem_maps);
00468 
00469   EXODUS_EXPORT int ex_get_name (int   exoid,
00470      ex_entity_type   obj_type,
00471      ex_entity_id     entity_id, 
00472      char *name);
00473 
00474   EXODUS_EXPORT int ex_get_names (int exoid,
00475       ex_entity_type obj_type,
00476       char **names);
00477 
00478   EXODUS_EXPORT int ex_get_n_nodal_var (int   exoid,
00479      int   time_step,
00480      int   nodal_var_index,
00481      int64_t start_node, 
00482      int64_t num_nodes, 
00483      void *nodal_var_vals);
00484 
00485   EXODUS_EXPORT int ex_get_partial_nodal_var (int   exoid,
00486      int   time_step,
00487      int   nodal_var_index,
00488      int64_t start_node, 
00489      int64_t num_nodes, 
00490      void *nodal_var_vals);
00491 
00492 
00493   EXODUS_EXPORT int ex_get_prop_array (int   exoid,
00494            ex_entity_type obj_type,
00495            const char *prop_name,
00496            void_int  *values);
00497 
00498   EXODUS_EXPORT int ex_get_prop (int   exoid,
00499      ex_entity_type obj_type,
00500      ex_entity_id   obj_id,
00501      const char *prop_name,
00502      void_int  *value);
00503 
00504   EXODUS_EXPORT int ex_get_partial_num_map (int   exoid,
00505          ex_entity_type map_type,
00506          ex_entity_id   map_id,
00507          int64_t ent_start,
00508          int64_t ent_count, 
00509          void_int  *elem_map);
00510   
00511   EXODUS_EXPORT int ex_get_prop_names (int    exoid,
00512            ex_entity_type obj_type,
00513            char **prop_names);
00514 
00515   EXODUS_EXPORT int ex_get_qa (int exoid,
00516           char *qa_record[][4]);
00517 
00518   EXODUS_EXPORT int ex_get_time (int   exoid,
00519      int   time_step,
00520      void *time_value);
00521 
00522   EXODUS_EXPORT int ex_get_variable_names (int   exoid,
00523         ex_entity_type obj_type,
00524         int   num_vars,
00525         char *var_names[]);
00526   EXODUS_EXPORT int ex_get_variable_name (int   exoid,
00527        ex_entity_type obj_type,
00528        int   var_num,
00529        char *var_name);
00530 
00531   EXODUS_EXPORT int ex_get_variable_param (int   exoid,
00532         ex_entity_type obj_type,
00533         int  *num_vars);
00534 
00535   EXODUS_EXPORT int ex_get_object_truth_vector (int  exoid,
00536       ex_entity_type var_type,
00537       ex_entity_id   object_id,
00538       int  num_var,
00539       int *var_vector);
00540 
00541   EXODUS_EXPORT int ex_get_truth_table (int  exoid,
00542      ex_entity_type obj_type,
00543      int  num_blk,
00544      int  num_var,
00545      int *var_tab);
00546   
00547 #define ex_open(path, mode, comp_ws, io_ws, version) ex_open_int(path, mode, comp_ws, io_ws, version, EX_API_VERS_NODOT)  
00548 
00549   EXODUS_EXPORT int ex_open_int (const char  *path,
00550      int    mode,
00551      int   *comp_ws,
00552      int   *io_ws,
00553      float *version, int my_version);
00554   
00555   EXODUS_EXPORT int ex_add_attr(int exoid,
00556     ex_entity_type obj_type,
00557     ex_entity_id   obj_id,
00558     int64_t     num_attr_per_entry);
00559   
00560   EXODUS_EXPORT int ex_put_attr_param (int   exoid,
00561            ex_entity_type obj_type,
00562            ex_entity_id   obj_id,
00563            int   num_attrs);
00564 
00565   EXODUS_EXPORT int ex_get_attr_param (int   exoid,
00566            ex_entity_type obj_type,
00567            ex_entity_id   obj_id,
00568            int   *num_attrs);
00569 
00570   EXODUS_EXPORT int ex_put_all_var_param (int exoid,
00571        int num_g, int num_n,
00572        int num_e, int *elem_var_tab,
00573        int num_m, int *nset_var_tab,
00574        int num_s, int *sset_var_tab);
00575 
00576   EXODUS_EXPORT int ex_put_concat_elem_block (int    exoid,
00577            const void_int*   elem_blk_id,
00578            char *elem_type[],
00579            const void_int*   num_elem_this_blk,
00580            const void_int*   num_nodes_per_elem,
00581            const void_int*   num_attr,
00582            int    define_maps);
00583 
00584   EXODUS_EXPORT int ex_put_coord_names (int   exoid,
00585      char *coord_names[]);
00586 
00587   EXODUS_EXPORT int ex_put_coord (int   exoid,
00588       const void *x_coor,
00589       const void *y_coor,
00590       const void *z_coor);
00591 
00592   EXODUS_EXPORT int ex_put_n_coord (int   exoid,
00593         int64_t   start_node_num,
00594         int64_t   num_nodes,
00595         const void *x_coor,
00596         const void *y_coor,
00597         const void *z_coor);
00598 
00599   EXODUS_EXPORT int ex_put_partial_coord (int   exoid,
00600         int64_t   start_node_num,
00601         int64_t   num_nodes,
00602         const void *x_coor,
00603         const void *y_coor,
00604         const void *z_coor);
00605 
00606   EXODUS_EXPORT int ex_put_id_map(int exoid,
00607       ex_entity_type obj_type,
00608       const void_int *map);
00609   
00610   EXODUS_EXPORT int ex_put_partial_id_map(int exoid,
00611        ex_entity_type obj_type,
00612        int64_t   start_entity_num, 
00613        int64_t   num_entities, 
00614        const void_int *map);
00615   
00616   EXODUS_EXPORT int ex_put_n_elem_num_map (int  exoid,
00617         int64_t  start_ent,
00618         int64_t  num_ents,
00619         const void_int *map);
00620 
00621   EXODUS_EXPORT int ex_put_n_node_num_map (int  exoid,
00622         int64_t  start_ent,
00623         int64_t  num_ents,
00624         const void_int *map);
00625 
00626   EXODUS_EXPORT int ex_put_partial_elem_num_map (int  exoid,
00627         int64_t  start_ent,
00628         int64_t  num_ents,
00629         const void_int *map);
00630 
00631   EXODUS_EXPORT int ex_put_partial_node_num_map (int  exoid,
00632         int64_t  start_ent,
00633         int64_t  num_ents,
00634         const void_int *map);
00635 
00636   EXODUS_EXPORT int ex_get_id_map(int exoid,
00637       ex_entity_type obj_type,
00638       void_int *map);
00639   
00640   EXODUS_EXPORT int ex_get_partial_id_map (int   exoid,
00641         ex_entity_type map_type,
00642         int64_t   start_entity_num,
00643         int64_t   num_entities,
00644         void_int*  map);
00645 
00646   EXODUS_EXPORT int ex_put_coordinate_frames(int exoid,
00647           int nframes,
00648           const void_int *cf_ids, 
00649           void* pt_coordinates,
00650           const char* tags);
00651 
00652   EXODUS_EXPORT int ex_put_info (int   exoid, 
00653      int   num_info,
00654      char *info[]);
00655 
00656   EXODUS_EXPORT int ex_put_map_param (int   exoid,
00657           int   num_node_maps,
00658           int   num_elem_maps);
00659 
00660   EXODUS_EXPORT int ex_put_name (int   exoid,
00661      ex_entity_type obj_type,
00662      ex_entity_id   entity_id,
00663      const char *name);
00664 
00665   EXODUS_EXPORT int ex_put_names (int   exoid,
00666       ex_entity_type obj_type,
00667       char *names[]);
00668 
00669   EXODUS_EXPORT int ex_put_n_one_attr( int   exoid,
00670            ex_entity_type obj_type,
00671            ex_entity_id   obj_id,
00672            int64_t   start_num,
00673            int64_t   num_ent,
00674            int   attrib_index,
00675            const void *attrib );
00676 
00677   EXODUS_EXPORT int ex_put_partial_one_attr( int   exoid,
00678            ex_entity_type obj_type,
00679            ex_entity_id   obj_id,
00680            int64_t   start_num,
00681            int64_t   num_ent,
00682            int   attrib_index,
00683            const void *attrib );
00684 
00685   EXODUS_EXPORT int ex_put_prop (int   exoid,
00686      ex_entity_type obj_type,
00687      ex_entity_id   obj_id,
00688      const char *prop_name,
00689      ex_entity_id   value);
00690 
00691   EXODUS_EXPORT int ex_put_prop_array (int   exoid,
00692            ex_entity_type obj_type,
00693            const char *prop_name,
00694            const void_int  *values);
00695 
00696   EXODUS_EXPORT int ex_put_prop_names (int   exoid,
00697            ex_entity_type obj_type,
00698            int   num_props,
00699            char **prop_names);
00700 
00701   EXODUS_EXPORT int ex_put_qa (int   exoid,
00702           int   num_qa_records,
00703           char* qa_record[][4]);
00704 
00705   EXODUS_EXPORT int ex_put_time (int   exoid,
00706      int   time_step,
00707      const void *time_value);
00708 
00709   EXODUS_EXPORT int ex_put_variable_name (int   exoid,
00710        ex_entity_type obj_type,
00711        int   var_num,
00712        const char *var_name);
00713 
00714   EXODUS_EXPORT int ex_put_variable_names (int   exoid,
00715         ex_entity_type obj_type,
00716         int   num_vars,
00717         char* var_names[]);
00718 
00719   EXODUS_EXPORT int ex_put_variable_param (int exoid,
00720         ex_entity_type obj_type,
00721         int num_vars);
00722 
00723   EXODUS_EXPORT int ex_put_truth_table (int  exoid,
00724      ex_entity_type obj_type,
00725      int  num_blk,
00726      int  num_var,
00727      int *var_tab);
00728 
00729   EXODUS_EXPORT int ex_update (int exoid);
00730   EXODUS_EXPORT int ex_get_num_props (int exoid, ex_entity_type obj_type);
00731   EXODUS_EXPORT int ex_large_model(int exoid);
00732   EXODUS_EXPORT size_t ex_header_size(int exoid);
00733 
00734   EXODUS_EXPORT void ex_err(const char *module_name, const char *message, int err_num);
00735   EXODUS_EXPORT void ex_get_err(const char** msg, const char** func, int* errcode);
00736   EXODUS_EXPORT int ex_opts(int options);
00737   EXODUS_EXPORT int ex_inquire(int exoid, int inquiry, void_int*, float*, char*);
00738   EXODUS_EXPORT int64_t ex_inquire_int(int exoid, int inquiry);
00739   EXODUS_EXPORT int ex_int64_status(int exoid);
00740   EXODUS_EXPORT int ex_set_int64_status(int exoid, int mode);
00741 
00742   /** Note that the max name length setting is global at this time; not specific
00743    * to a particular database; however, the exoid option is passed to give
00744    * flexibility in the future to implement this on a database-by-database basis.
00745    */
00746   EXODUS_EXPORT int ex_set_max_name_length(int exoid, int length);
00747 
00748   EXODUS_EXPORT int ex_set_option(int exoid, ex_option_type option, int option_value);
00749 
00750   /*  Write Node Edge Face or Element Number Map */
00751   EXODUS_EXPORT int ex_put_num_map(int exoid,
00752        ex_entity_type map_type,
00753        ex_entity_id map_id,
00754        const void_int *map);
00755 
00756   /*  Read Number Map */
00757   EXODUS_EXPORT int ex_get_num_map(int exoid,
00758        ex_entity_type map_type,
00759        ex_entity_id map_id,
00760        void_int *map);
00761 
00762   /*  Write Edge Face or Element Block Parameters */
00763   EXODUS_EXPORT int ex_put_block(int exoid,
00764      ex_entity_type blk_type,
00765      ex_entity_id   blk_id,
00766      const char *entry_descrip,
00767      int64_t num_entries_this_blk,
00768      int64_t num_nodes_per_entry,
00769      int64_t num_edges_per_entry,
00770      int64_t num_faces_per_entry,
00771      int64_t num_attr_per_entry);
00772 
00773 
00774   /*! \deprecated Use ex_get_block_param() */
00775   EXODUS_EXPORT int ex_get_block(int exoid,
00776      ex_entity_type blk_type,
00777      ex_entity_id   blk_id,
00778      char *elem_type,
00779      void_int *num_entries_this_blk,
00780      void_int *num_nodes_per_entry,
00781      void_int *num_edges_per_entry,
00782      void_int *num_faces_per_entry,
00783      void_int *num_attr_per_entry);
00784 
00785   /*  Read Edge Face or Element Block Parameters */
00786   EXODUS_EXPORT int ex_get_block_param(int exoid,
00787            ex_block *block);
00788 
00789   EXODUS_EXPORT int ex_put_block_param(int exoid,
00790            const ex_block block);
00791 
00792   EXODUS_EXPORT int ex_get_block_params(int exoid,
00793      size_t block_count,
00794      struct ex_block **blocks);
00795 
00796   EXODUS_EXPORT int ex_put_block_params(int exoid,
00797      size_t block_count,
00798      const struct ex_block *blocks);
00799 
00800   /*  Write All Edge Face and Element Block Parameters */
00801   EXODUS_EXPORT int ex_put_concat_all_blocks(int exoid,
00802           const ex_block_params *param);
00803 
00804   EXODUS_EXPORT int ex_put_entity_count_per_polyhedra(int exoid,
00805             ex_entity_type blk_type,
00806             ex_entity_id   blk_id,
00807             const int *entity_counts);
00808 
00809   EXODUS_EXPORT int ex_get_entity_count_per_polyhedra(int exoid,
00810             ex_entity_type blk_type,
00811             ex_entity_id   blk_id,
00812             int *entity_counts);
00813 
00814   /*  Write Edge Face or Element Block Connectivity */
00815   EXODUS_EXPORT int ex_put_conn(int exoid,
00816     ex_entity_type blk_type,
00817     ex_entity_id   blk_id,
00818     const void_int *node_conn,
00819     const void_int *elem_edge_conn,
00820     const void_int *elem_face_conn);
00821 
00822   /*  Read Edge Face or Element Block Connectivity */
00823   EXODUS_EXPORT int ex_get_conn(int exoid,
00824     ex_entity_type blk_type,
00825     ex_entity_id   blk_id,
00826     void_int *nodeconn,
00827     void_int *edgeconn,
00828     void_int *faceconn);
00829 
00830   /*  Read Partial Edge Face or Element Block Connectivity */
00831   EXODUS_EXPORT int ex_get_n_conn(int exoid,
00832       ex_entity_type blk_type,
00833       ex_entity_id   blk_id,
00834       int64_t start_num,
00835       int64_t num_ent,
00836       void_int *nodeconn,
00837       void_int *edgeconn,
00838       void_int *faceconn);
00839 
00840   EXODUS_EXPORT int ex_get_partial_conn(int exoid,
00841       ex_entity_type blk_type,
00842       ex_entity_id   blk_id,
00843       int64_t start_num,
00844       int64_t num_ent,
00845       void_int *nodeconn,
00846       void_int *edgeconn,
00847       void_int *faceconn);
00848 
00849   /*  Write Edge Face or Element Block Attributes */
00850   EXODUS_EXPORT int ex_put_attr(int exoid,
00851     ex_entity_type blk_type,
00852     ex_entity_id   blk_id,
00853     const void *attrib);
00854 
00855   EXODUS_EXPORT int ex_put_partial_attr (int   exoid,
00856       ex_entity_type blk_type,
00857       ex_entity_id   blk_id,
00858       int64_t   start_entity,
00859       int64_t   num_entity,
00860       const void *attrib);
00861 
00862   /*  Read Edge Face or Element Block Attributes */
00863   EXODUS_EXPORT int ex_get_attr(int exoid,
00864     ex_entity_type obj_type,
00865     ex_entity_id   obj_id,
00866     void *attrib);
00867 
00868   EXODUS_EXPORT int ex_get_n_attr(int exoid,
00869       ex_entity_type obj_type,
00870       ex_entity_id   obj_id,
00871       int64_t start_num,
00872       int64_t num_ent,
00873       void *attrib);
00874 
00875   EXODUS_EXPORT int ex_get_partial_attr(int exoid,
00876       ex_entity_type obj_type,
00877       ex_entity_id   obj_id,
00878       int64_t start_num,
00879       int64_t num_ent,
00880       void *attrib);
00881 
00882   /*  Write One Edge Face or Element Block Attribute */
00883   EXODUS_EXPORT int ex_put_one_attr(int exoid,
00884         ex_entity_type obj_type,
00885         ex_entity_id   obj_id,
00886         int attrib_index,
00887         const void *attrib);
00888 
00889   /*  Read One Edge Face or Element Block Attribute */
00890   EXODUS_EXPORT int ex_get_one_attr(int exoid,
00891         ex_entity_type obj_type,
00892         ex_entity_id   obj_id,
00893         int attrib_index,
00894         void *attrib);
00895 
00896   /*  Read One Edge Face or Element Block Attribute */
00897   EXODUS_EXPORT int ex_get_n_one_attr(int exoid,
00898           ex_entity_type obj_type,
00899           ex_entity_id   obj_id,
00900           int64_t start_num,
00901           int64_t num_ent,
00902           int attrib_index,
00903           void *attrib);
00904 
00905   EXODUS_EXPORT int ex_get_partial_one_attr(int exoid,
00906           ex_entity_type obj_type,
00907           ex_entity_id   obj_id,
00908           int64_t start_num,
00909           int64_t num_ent,
00910           int attrib_index,
00911           void *attrib);
00912 
00913   /*  Write Edge Face or Element Block Attribute Names */
00914   EXODUS_EXPORT int ex_put_attr_names(int exoid,
00915           ex_entity_type blk_type,
00916           ex_entity_id   blk_id,
00917           char **names);
00918 
00919   /*  Read Edge Face or Element Block Attribute Names */
00920   EXODUS_EXPORT int ex_get_attr_names(int exoid,
00921           ex_entity_type obj_type,
00922           ex_entity_id   obj_id,
00923           char **names);
00924 
00925   /*  Write Node Edge Face or Side Set Parameters */
00926   EXODUS_EXPORT int ex_put_set_param(int exoid,
00927          ex_entity_type set_type,
00928          ex_entity_id   set_id,
00929          int64_t num_entries_in_set,
00930          int64_t num_dist_fact_in_set);
00931 
00932   /*  Read Node Edge Face or Side Set Parameters */
00933   EXODUS_EXPORT int ex_get_set_param(int exoid,
00934          ex_entity_type set_type,
00935          ex_entity_id   set_id,
00936          void_int *num_entry_in_set,
00937          void_int *num_dist_fact_in_set);
00938 
00939   /*  Write a Node Edge Face or Side Set */
00940   EXODUS_EXPORT int ex_put_set(int exoid,
00941           ex_entity_type set_type,
00942           ex_entity_id   set_id,
00943           const void_int *set_entry_list,
00944           const void_int *set_extra_list);
00945 
00946   EXODUS_EXPORT int ex_put_partial_set(int exoid,
00947            ex_entity_type set_type,
00948            ex_entity_id   set_id,
00949            int64_t offset,
00950            int64_t count,
00951            const void_int *set_entry_list,
00952            const void_int *set_extra_list);
00953 
00954   /*  Read a Node Edge Face or Side Set */
00955   EXODUS_EXPORT int ex_get_set(int exoid,
00956           ex_entity_type set_type,
00957           ex_entity_id   set_id,
00958           void_int *set_entry_list,
00959           void_int *set_extra_list);
00960 
00961   /*  Write Node Edge Face or Side Set Distribution Factors */
00962   EXODUS_EXPORT int ex_put_set_dist_fact(int exoid,
00963       ex_entity_type set_type,
00964       ex_entity_id   set_id,
00965       const void *set_dist_fact);
00966 
00967   /*  Read Node Edge Face or Side Set Distribution Factors */
00968   EXODUS_EXPORT int ex_get_set_dist_fact(int exoid,
00969       ex_entity_type set_type,
00970       ex_entity_id   set_id,
00971       void *set_dist_fact);
00972 
00973   EXODUS_EXPORT int ex_get_partial_set_dist_fact (int   exoid,
00974         ex_entity_type set_type,
00975         ex_entity_id   set_id,
00976         int64_t   offset,
00977         int64_t   num_to_put,
00978         void *set_dist_fact);
00979 
00980   /*  Write Concatenated Node Edge Face or Side Sets */
00981   EXODUS_EXPORT int ex_put_concat_sets(int exoid,
00982            ex_entity_type set_type,
00983            const struct ex_set_specs *set_specs);
00984 
00985   /*  Read Concatenated Node Edge Face or Side Sets */
00986   EXODUS_EXPORT int ex_get_concat_sets(int exoid,
00987            ex_entity_type set_type,
00988            struct ex_set_specs *set_specs);
00989 
00990   /*  Write Concatenated Node Edge Face or Side Sets */
00991   EXODUS_EXPORT int ex_put_sets(int exoid,
00992     size_t set_count,
00993     const struct ex_set *sets);
00994 
00995   /*  Read Concatenated Node Edge Face or Side Sets */
00996   EXODUS_EXPORT int ex_get_sets(int exoid,
00997     size_t set_count,
00998     struct ex_set *sets);
00999 
01000   /*  (MODIFIED) Write All Results Variables Parameters */
01001   EXODUS_EXPORT int ex_put_all_var_param_ext(int exoid,
01002           const ex_var_params *vp);
01003 
01004   /*  Write Edge Face or Element Variable Values on Blocks or Sets at a Time Step */
01005   EXODUS_EXPORT int ex_put_var(int exoid,
01006           int time_step,
01007           ex_entity_type var_type,
01008           int var_index,
01009           ex_entity_id   obj_id,
01010           int64_t num_entries_this_obj,
01011           const void *var_vals);
01012 
01013   /*  Write Partial Edge Face or Element Variable Values on Blocks or Sets at a Time Step */
01014   EXODUS_EXPORT int ex_put_n_var(int exoid,
01015      int time_step,
01016      ex_entity_type var_type,
01017      int var_index,
01018      ex_entity_id   obj_id,
01019      int64_t start_index,
01020      int64_t num_entities,
01021      const void *var_vals);
01022 
01023   EXODUS_EXPORT int ex_put_partial_var(int exoid,
01024      int time_step,
01025      ex_entity_type var_type,
01026      int var_index,
01027      ex_entity_id   obj_id,
01028      int64_t start_index,
01029      int64_t num_entities,
01030      const void *var_vals);
01031 
01032   /*  Read Edge Face or Element Variable Values Defined On Blocks or Sets at a Time Step */
01033   EXODUS_EXPORT int ex_get_var(int exoid,
01034           int time_step,
01035           ex_entity_type var_type,
01036           int var_index,
01037           ex_entity_id obj_id,
01038           int64_t num_entry_this_obj,
01039           void *var_vals);
01040 
01041   /*  Read Partial Edge Face or Element Variable Values on Blocks or Sets at a Time Step */
01042   EXODUS_EXPORT int ex_get_n_var(int exoid,
01043      int time_step,
01044      ex_entity_type var_type,
01045      int var_index,
01046      ex_entity_id   obj_id,
01047      int64_t start_index,
01048      int64_t num_entities,
01049      void *var_vals);
01050 
01051   EXODUS_EXPORT int ex_get_n_elem_var (int   exoid,
01052            int   time_step,
01053            int   elem_var_index,
01054            ex_entity_id elem_blk_id,
01055            int64_t num_elem_this_blk,
01056            int64_t start_elem_num,
01057            int64_t num_elem,
01058            void *elem_var_vals);
01059 
01060   EXODUS_EXPORT int ex_get_partial_var(int exoid,
01061      int time_step,
01062      ex_entity_type var_type,
01063      int var_index,
01064      ex_entity_id   obj_id,
01065      int64_t start_index,
01066      int64_t num_entities,
01067      void *var_vals);
01068 
01069   EXODUS_EXPORT int ex_get_partial_elem_var (int   exoid,
01070            int   time_step,
01071            int   elem_var_index,
01072            ex_entity_id elem_blk_id,
01073            int64_t num_elem_this_blk,
01074            int64_t start_elem_num,
01075            int64_t num_elem,
01076            void *elem_var_vals);
01077 
01078   /*  Read Edge Face or Element Variable Values Defined On Blocks or Sets Through Time */
01079   EXODUS_EXPORT int ex_get_var_time(int exoid,
01080         ex_entity_type var_type,
01081         int var_index,
01082         int64_t id,
01083         int beg_time_step,
01084         int end_time_step,
01085         void *var_vals);
01086 
01087   EXODUS_EXPORT int ex_cvt_nodes_to_sides(int exoid,
01088        void_int *num_elem_per_set,
01089        void_int *num_nodes_per_set,
01090        void_int *side_sets_elem_index,
01091        void_int *side_sets_node_index,
01092        void_int *side_sets_elem_list,
01093        void_int *side_sets_node_list,
01094        void_int *side_sets_side_list);
01095 
01096   /* Can be replaced by ex_put_var ... */
01097   EXODUS_EXPORT int ex_put_nodal_var (int   exoid,
01098           int   time_step,
01099           int   nodal_var_index,
01100           int64_t   num_nodes, 
01101           const void *nodal_var_vals);
01102 
01103   EXODUS_EXPORT int ex_put_n_nodal_var (int   exoid,
01104      int   time_step,
01105      int   nodal_var_index,
01106      int64_t   start_node, 
01107      int64_t   num_nodes, 
01108      const void *nodal_var_vals);
01109 
01110   EXODUS_EXPORT int ex_put_partial_nodal_var (int   exoid,
01111      int   time_step,
01112      int   nodal_var_index,
01113      int64_t   start_node, 
01114      int64_t   num_nodes, 
01115      const void *nodal_var_vals);
01116 
01117   EXODUS_EXPORT int ex_get_partial_elem_map (int   exoid,
01118           ex_entity_id   map_id,
01119           int64_t ent_start,
01120           int64_t ent_count, 
01121           void_int  *elem_map);
01122 
01123   EXODUS_EXPORT int ex_put_partial_elem_map (int   exoid,
01124           ex_entity_id   map_id,
01125           int64_t ent_start,
01126           int64_t ent_count, 
01127           const void_int  *elem_map);
01128 
01129   EXODUS_EXPORT int ex_put_partial_num_map (int   exoid,
01130          ex_entity_type map_type,
01131          ex_entity_id   map_id,
01132          int64_t ent_start,
01133          int64_t ent_count, 
01134          const void_int  *map);
01135 
01136   EXODUS_EXPORT int ex_put_partial_set_dist_fact (int   exoid,
01137         ex_entity_type set_type,
01138         ex_entity_id   set_id,
01139         int64_t   offset,
01140         int64_t   num_to_put,
01141         const void *set_dist_fact);
01142 
01143   /* TODO */
01144   EXODUS_EXPORT int ex_get_concat_side_set_node_count(int exoid,
01145             int *side_set_node_cnt_list);
01146 
01147   /* TODO */
01148   EXODUS_EXPORT int ex_get_side_set_node_list_len(int exoid,
01149         ex_entity_id side_set_id,
01150         void_int *side_set_node_list_len);
01151 
01152   /* TODO */
01153   EXODUS_EXPORT int ex_get_side_set_node_count(int exoid,
01154             ex_entity_id side_set_id,
01155             int *side_set_node_cnt_list);
01156 
01157   /* TODO */
01158   EXODUS_EXPORT int ex_get_side_set_node_list(int exoid,
01159            ex_entity_id side_set_id,
01160            void_int *side_set_node_cnt_list,
01161            void_int *side_set_node_list);
01162 
01163   /* ========================================================================
01164      Functions pulled from nemesis library and incorporated into exodus...
01165   */
01166 /*=============================================================================
01167  *     Initial Information Routines
01168  *===========================================================================*/
01169 EXODUS_EXPORT int
01170 ex_get_init_info(int   exoid,  /* NemesisI file ID */
01171                  int  *num_proc, /* Number of processors */
01172                  int  *num_proc_in_f, /* Number of procs in this file */
01173                  char *ftype
01174                  );
01175 
01176 EXODUS_EXPORT int
01177 ex_put_init_info(int   exoid,  /* NemesisI file ID */
01178                  int   num_proc, /* Number of processors */
01179                  int   num_proc_in_f, /* Number of procs in this file */
01180                  char *ftype
01181                  );
01182 
01183 EXODUS_EXPORT int
01184 ex_get_init_global(int   exoid,     /* NemesisI file ID */
01185                    void_int  *num_nodes_g,   /* Number of global FEM nodes */
01186                    void_int  *num_elems_g,   /* Number of global FEM elements */
01187                    void_int  *num_elem_blks_g, /* Number of global elem blocks */
01188                    void_int  *num_node_sets_g, /* Number of global node sets */
01189                    void_int  *num_side_sets_g  /* Number of global side sets */
01190                    );
01191 EXODUS_EXPORT int
01192 ex_put_init_global(int exoid,   /* NemesisI file ID */
01193                    int64_t num_nodes_g, /* Number of global FEM nodes */
01194                    int64_t num_elems_g, /* Number of global FEM elements */
01195                    int64_t num_elem_blks_g, /* Number of global elem blocks */
01196                    int64_t num_node_sets_g, /* Number of global node sets */
01197                    int64_t num_side_sets_g /* Number of global side sets */
01198                    );
01199 
01200 /*=============================================================================
01201  *     Loadbalance Parameter Routines
01202  *===========================================================================*/
01203 EXODUS_EXPORT int
01204 ex_get_loadbal_param(int   exoid,  /* NetCDF/Exodus file ID */
01205                      void_int  *num_int_nodes,  /* Number of internal FEM nodes */
01206                      void_int  *num_bor_nodes,  /* Number of border FEM nodes */
01207                      void_int  *num_ext_nodes,  /* Number of external FEM nodes */
01208                      void_int  *num_int_elems,  /* Number of internal FEM elems */
01209                      void_int  *num_bor_elems,  /* Number of border FEM elems */
01210                      void_int  *num_node_cmaps, /* Number of nodal comm maps */
01211                      void_int  *num_elem_cmaps, /* Number of elemental comm maps */
01212                      int   processor         /* Processor ID */
01213                      );
01214 
01215 EXODUS_EXPORT int
01216 ex_put_loadbal_param(int   exoid,    /* NemesisI file ID  */
01217                      int64_t   num_int_nodes, /* Number of internal FEM nodes */
01218                      int64_t   num_bor_nodes, /* Number of border FEM nodes */
01219                      int64_t   num_ext_nodes, /* Number of external FEM nodes */
01220                      int64_t   num_int_elems, /* Number of internal FEM elems */
01221                      int64_t   num_bor_elems, /* Number of border FEM elems */
01222                      int64_t   num_node_cmaps,/* Number of nodal comm maps */
01223                      int64_t   num_elem_cmaps,/* Number of elemental comm maps */
01224                      int       processor   /* Processor ID */
01225                      );
01226 
01227 EXODUS_EXPORT int
01228 ex_put_loadbal_param_cc(int   exoid,  /* NetCDF/Exodus file ID */
01229                         void_int  *num_int_nodes,  /* Number of internal node IDs */
01230                         void_int  *num_bor_nodes,  /* Number of border node IDs */
01231                         void_int  *num_ext_nodes,  /* Number of external node IDs */
01232                         void_int  *num_int_elems,  /* Number of internal elem IDs */
01233                         void_int  *num_bor_elems,  /* Number of border elem IDs */
01234                         void_int  *num_node_cmaps, /* Number of nodal comm maps */
01235                         void_int  *num_elem_cmaps  /* Number of elem comm maps */
01236                         );
01237 
01238 /*=============================================================================
01239  *     NS, SS & EB Global Parameter Routines
01240  *===========================================================================*/
01241 EXODUS_EXPORT int
01242 ex_get_ns_param_global(int exoid,          /* NetCDF/Exodus file ID */
01243                        void_int *ns_ids_glob,    /* Global IDs of node sets */
01244                        void_int *ns_n_cnt_glob,  /* Count of nodes in node sets */
01245                        void_int *ns_df_cnt_glob  /* Count of dist. factors in ns */
01246                        );
01247 
01248 EXODUS_EXPORT int
01249 ex_put_ns_param_global(int exoid,           /* NemesisI file ID */
01250                        void_int *global_ids,  /* Vector of global node-set IDs */
01251                        void_int *global_n_cnts,  /* Vector of node counts in node-sets */
01252                        void_int *global_df_cnts  /* Vector of dist factor counts in node-sets */
01253                        );
01254 
01255 EXODUS_EXPORT int
01256 ex_get_ss_param_global(int exoid,     /* NetCDF/Exodus file ID */
01257                        void_int *ss_ids_glob,    /* Global side-set IDs */
01258                        void_int *ss_s_cnt_glob,  /* Global side count */
01259                        void_int *ss_df_cnt_glob  /* Global dist. factor count */
01260                        );
01261 
01262 EXODUS_EXPORT int
01263 ex_put_ss_param_global(int exoid,      /* NemesisI file ID */
01264                        void_int *global_ids,     /* Vector of global side-set IDs */
01265                        void_int *global_el_cnts, /* Vector of element/side */
01266          /* counts in each side set */
01267                        void_int *global_df_cnts  /* Vector of dist. factor */
01268          /* counts in each side set */
01269                        );
01270 
01271 EXODUS_EXPORT int
01272 ex_get_eb_info_global(int exoid,  /* NemesisI file ID                 */
01273                       void_int *el_blk_ids, /* Vector of global element IDs     */
01274                       void_int *el_blk_cnts /* Vector of global element counts  */
01275                       );
01276 
01277 EXODUS_EXPORT int
01278 ex_put_eb_info_global(int exoid,  /* NemesisI file ID */
01279                       void_int *el_blk_ids, /* Vector of global element IDs     */
01280                       void_int *el_blk_cnts /* Vector of global element counts  */
01281                       );
01282 
01283 /*=============================================================================
01284  *     NS, SS & EB Subset Routines
01285  *===========================================================================*/
01286 EXODUS_EXPORT int
01287 ex_get_n_side_set(int  exoid,      /* NetCDF/Exodus file ID */
01288                   ex_entity_id side_set_id,     /* Side-set ID to read */
01289                   int64_t  start_side_num,      /* Starting element number */
01290                   int64_t  num_sides,     /* Number of sides to read */
01291                   void_int *side_set_elem_list,  /* List of element IDs */
01292                   void_int *side_set_side_list   /* List of side IDs */
01293                   );
01294 
01295 EXODUS_EXPORT int
01296 ex_put_n_side_set(int  exoid,                /* NetCDF/Exodus file ID */
01297                   ex_entity_id side_set_id,         /* Side-set ID to write */
01298                   int64_t  start_side_num,      /* Starting element number */
01299                   int64_t  num_sides,           /* Number of sides to write */
01300                   const void_int *side_set_elem_list,  /* List of element IDs */
01301                   const void_int *side_set_side_list   /* List of side IDs */
01302                   );
01303 
01304 EXODUS_EXPORT int
01305 ex_get_n_side_set_df(int   exoid,  /* NetCDF/Exodus file ID */
01306                      ex_entity_id   side_set_id,  /* Side-set ID */
01307                      int64_t   start_num,  /* Starting df number */
01308                      int64_t   num_df_to_get, /* Number of df's to read */
01309                      void *side_set_df   /* Distribution factors */
01310                      );
01311 
01312 EXODUS_EXPORT int
01313 ex_put_n_side_set_df(int   exoid,                /* NetCDF/Exodus file ID */
01314                      ex_entity_id   side_set_id,         /* Side-set ID */
01315                      int64_t   start_num,           /* Starting df number */
01316                      int64_t   num_df_to_get,       /* Number of df's to write */
01317                      void *side_set_df          /* Distribution factors */
01318                      );
01319 
01320 EXODUS_EXPORT int
01321 ex_get_n_node_set(int  exoid,     /* NetCDF/Exodus file ID */
01322                   ex_entity_id  node_set_id,    /* Node set ID */
01323                   int64_t  start_node_num,    /* Node index to start reading at */
01324                   int64_t  num_node,    /* Number of nodes to read */
01325                   void_int *node_set_node_list  /* List of nodes in node set */
01326                   );
01327 
01328 EXODUS_EXPORT int
01329 ex_put_n_node_set(int  exoid,     /* NetCDF/Exodus file ID */
01330                   ex_entity_id  node_set_id,    /* Node set ID */
01331                   int64_t  start_node_num,    /* Node index to start writing at */
01332                   int64_t  num_node,    /* Number of nodes to write */
01333                   const void_int *node_set_node_list  /* List of nodes in node set */
01334                   );
01335 
01336 EXODUS_EXPORT int
01337 ex_get_n_node_set_df(int   exoid,  /* NetCDF/Exodus file ID */
01338                      ex_entity_id   node_set_id,  /* Node-set ID */
01339                      int64_t   start_num,  /* Starting df number */
01340                      int64_t   num_df_to_get, /* Number of df's to read */
01341                      void *node_set_df   /* Distribution factors */
01342                      );
01343 
01344 EXODUS_EXPORT int
01345 ex_put_n_node_set_df(int   exoid,  /* NetCDF/Exodus file ID */
01346                      ex_entity_id   node_set_id,  /* Node-set ID */
01347                      int64_t   start_num,  /* Starting df number */
01348                      int64_t   num_df_to_get, /* Number of df's to write */
01349                      void *node_set_df   /* Distribution factors */
01350                      );
01351 
01352 EXODUS_EXPORT int
01353 ex_get_n_elem_conn (int   exoid,    /* NetCDF/Exodus file ID */
01354                     ex_entity_id   elem_blk_id,   /* Element block ID */
01355                     int64_t   start_elem_num, /* Starting position to read from */
01356                     int64_t   num_elems,   /* Number of elements to read */
01357                     void_int  *connect   /* Connectivity vector */
01358                     );
01359 
01360 EXODUS_EXPORT int
01361 ex_put_n_elem_conn (int   exoid,           /* NetCDF/Exodus file ID */
01362                     ex_entity_id   elem_blk_id,    /* Element block ID */
01363                     int64_t   start_elem_num, /* Starting position to write to */
01364                     int64_t   num_elems,      /* Number of elements to write */
01365                     const void_int  *connect         /* Connectivity vector */
01366 );
01367 
01368 EXODUS_EXPORT int
01369 ex_get_n_elem_attr (int   exoid,     /* NetCDF/Exodus file ID */
01370                     ex_entity_id   elem_blk_id,    /* Element block ID */
01371                     int64_t   start_elem_num,  /* Starting position to read from */
01372                     int64_t   num_elems,    /* Number of elements to read */
01373                     void *attrib    /* Attribute */
01374                     );
01375 
01376 EXODUS_EXPORT int
01377 ex_put_n_elem_attr (int   exoid,            /* NetCDF/Exodus file ID */
01378                     ex_entity_id   elem_blk_id,     /* Element block ID */
01379                     int64_t   start_elem_num,  /* Starting position to write to */
01380                     int64_t   num_elems,       /* Number of elements to write */
01381                     void *attrib           /* Attribute */
01382                     );
01383 EXODUS_EXPORT int
01384 ex_get_partial_side_set(int  exoid,      /* NetCDF/Exodus file ID */
01385                   ex_entity_id side_set_id,     /* Side-set ID to read */
01386                   int64_t  start_side_num,      /* Starting element number */
01387                   int64_t  num_sides,     /* Number of sides to read */
01388                   void_int *side_set_elem_list,  /* List of element IDs */
01389                   void_int *side_set_side_list   /* List of side IDs */
01390                   );
01391 
01392 EXODUS_EXPORT int
01393 ex_put_partial_side_set(int  exoid,                /* NetCDF/Exodus file ID */
01394                   ex_entity_id side_set_id,         /* Side-set ID to write */
01395                   int64_t  start_side_num,      /* Starting element number */
01396                   int64_t  num_sides,           /* Number of sides to write */
01397                   const void_int *side_set_elem_list,  /* List of element IDs */
01398                   const void_int *side_set_side_list   /* List of side IDs */
01399                   );
01400 
01401 EXODUS_EXPORT int
01402 ex_get_partial_side_set_df(int   exoid,  /* NetCDF/Exodus file ID */
01403                      ex_entity_id   side_set_id,  /* Side-set ID */
01404                      int64_t   start_num,  /* Starting df number */
01405                      int64_t   num_df_to_get, /* Number of df's to read */
01406                      void *side_set_df   /* Distribution factors */
01407                      );
01408 
01409 EXODUS_EXPORT int
01410 ex_put_partial_side_set_df(int   exoid,                /* NetCDF/Exodus file ID */
01411                      ex_entity_id   side_set_id,         /* Side-set ID */
01412                      int64_t   start_num,           /* Starting df number */
01413                      int64_t   num_df_to_get,       /* Number of df's to write */
01414                      void *side_set_df          /* Distribution factors */
01415                      );
01416 
01417 EXODUS_EXPORT int
01418 ex_get_partial_node_set(int  exoid,     /* NetCDF/Exodus file ID */
01419                   ex_entity_id  node_set_id,    /* Node set ID */
01420                   int64_t  start_node_num,    /* Node index to start reading at */
01421                   int64_t  num_node,    /* Number of nodes to read */
01422                   void_int *node_set_node_list  /* List of nodes in node set */
01423                   );
01424 
01425 EXODUS_EXPORT int
01426 ex_put_partial_node_set(int  exoid,     /* NetCDF/Exodus file ID */
01427                   ex_entity_id  node_set_id,    /* Node set ID */
01428                   int64_t  start_node_num,    /* Node index to start writing at */
01429                   int64_t  num_node,    /* Number of nodes to write */
01430                   const void_int *node_set_node_list  /* List of nodes in node set */
01431                   );
01432 
01433 EXODUS_EXPORT int
01434 ex_get_partial_node_set_df(int   exoid,  /* NetCDF/Exodus file ID */
01435                      ex_entity_id   node_set_id,  /* Node-set ID */
01436                      int64_t   start_num,  /* Starting df number */
01437                      int64_t   num_df_to_get, /* Number of df's to read */
01438                      void *node_set_df   /* Distribution factors */
01439                      );
01440 
01441 EXODUS_EXPORT int
01442 ex_put_partial_node_set_df(int   exoid,  /* NetCDF/Exodus file ID */
01443                      ex_entity_id   node_set_id,  /* Node-set ID */
01444                      int64_t   start_num,  /* Starting df number */
01445                      int64_t   num_df_to_get, /* Number of df's to write */
01446                      void *node_set_df   /* Distribution factors */
01447                      );
01448 
01449 EXODUS_EXPORT int
01450 ex_get_partial_elem_conn (int   exoid,    /* NetCDF/Exodus file ID */
01451                     ex_entity_id   elem_blk_id,   /* Element block ID */
01452                     int64_t   start_elem_num, /* Starting position to read from */
01453                     int64_t   num_elems,   /* Number of elements to read */
01454                     void_int  *connect   /* Connectivity vector */
01455                     );
01456 
01457 EXODUS_EXPORT int
01458 ex_put_partial_elem_conn (int   exoid,           /* NetCDF/Exodus file ID */
01459                     ex_entity_id   elem_blk_id,    /* Element block ID */
01460                     int64_t   start_elem_num, /* Starting position to write to */
01461                     int64_t   num_elems,      /* Number of elements to write */
01462                     const void_int  *connect         /* Connectivity vector */
01463 );
01464 
01465 EXODUS_EXPORT int
01466 ex_get_partial_elem_attr (int   exoid,     /* NetCDF/Exodus file ID */
01467                     ex_entity_id   elem_blk_id,    /* Element block ID */
01468                     int64_t   start_elem_num,  /* Starting position to read from */
01469                     int64_t   num_elems,    /* Number of elements to read */
01470                     void *attrib    /* Attribute */
01471                     );
01472 
01473 EXODUS_EXPORT int
01474 ex_put_partial_elem_attr (int   exoid,            /* NetCDF/Exodus file ID */
01475                     ex_entity_id   elem_blk_id,     /* Element block ID */
01476                     int64_t   start_elem_num,  /* Starting position to write to */
01477                     int64_t   num_elems,       /* Number of elements to write */
01478                     void *attrib           /* Attribute */
01479                     );
01480 
01481 EXODUS_EXPORT int
01482 ex_get_elem_type(int   exoid,            /* NetCDF/Exodus file ID */
01483                  ex_entity_id   elem_blk_id,     /* Element block ID */
01484                  char *elem_type        /* The name of the element type */
01485                  );
01486 
01487 /*=============================================================================
01488  *     Variable Routines
01489  *===========================================================================*/
01490 EXODUS_EXPORT int
01491 ex_put_elem_var_slab (int   exoid,           /* NetCDF/Exodus file ID */
01492                       int   time_step,      /* time index */
01493                       int   elem_var_index, /* elemental variable index */
01494                       ex_entity_id   elem_blk_id,    /* elemental block id */
01495                       int64_t   start_pos,      /* Starting position to write to */
01496                       int64_t   num_vals,       /* Number of elements to write */
01497                       void *elem_var_vals   /* variable values */
01498                       );
01499 
01500 EXODUS_EXPORT int
01501 ex_put_nodal_var_slab(int   exoid,            /* NetCDF/Exodus file ID */
01502                       int   time_step,       /* The time step index */
01503                       int   nodal_var_index, /* Nodal variable index */
01504                       int64_t   start_pos,       /* Start position for write */
01505                       int64_t   num_vals,        /* Number of nodal variables */
01506                       void *nodal_var_vals   /* Nodal variable values */
01507                       );
01508 
01509 /*=============================================================================
01510  *     Number Map Routines
01511  *===========================================================================*/
01512 EXODUS_EXPORT int
01513 ex_get_n_elem_num_map (int  exoid,           /* NetCDF/Exodus file ID */
01514                        int64_t  start_ent,      /* Starting position to read from */
01515                        int64_t  num_ents,       /* Number of elements to read */
01516                        void_int *elem_map        /* element map numbers */
01517                        );
01518 
01519 EXODUS_EXPORT int
01520 ex_get_n_node_num_map(int   exoid,      /* NetCDF/Exodus file ID */
01521                       int64_t   start_ent,       /* starting node number */
01522                       int64_t   num_ents,        /* number of nodes to read */
01523                       void_int  *node_map         /* vector for node map */
01524                       );
01525 
01526 EXODUS_EXPORT int
01527 ex_get_partial_elem_num_map (int  exoid,           /* NetCDF/Exodus file ID */
01528                        int64_t  start_ent,      /* Starting position to read from */
01529                        int64_t  num_ents,       /* Number of elements to read */
01530                        void_int *elem_map        /* element map numbers */
01531                        );
01532 
01533 EXODUS_EXPORT int
01534 ex_get_partial_node_num_map(int   exoid,      /* NetCDF/Exodus file ID */
01535                       int64_t   start_ent,       /* starting node number */
01536                       int64_t   num_ents,        /* number of nodes to read */
01537                       void_int  *node_map         /* vector for node map */
01538                       );
01539 
01540 EXODUS_EXPORT int
01541 ex_get_processor_node_maps(int   exoid,  /* NetCDF/Exodus file ID */
01542       void_int  *node_mapi, /* Internal FEM node IDs */
01543       void_int  *node_mapb, /* Border FEM node IDs */
01544       void_int  *node_mape, /* External FEM node IDs */
01545       int   processor  /* Processor IDs */
01546       );
01547 
01548 EXODUS_EXPORT int
01549 ex_put_processor_node_maps(int   exoid,  /* NetCDF/Exodus file ID */
01550       void_int  *node_mapi, /* Internal FEM node IDs */
01551       void_int  *node_mapb, /* Border FEM node IDs */
01552       void_int  *node_mape, /* External FEM node IDs */
01553       int   processor  /* This processor ID */
01554       );
01555 
01556 EXODUS_EXPORT int
01557 ex_get_processor_elem_maps(int   exoid,  /* NetCDF/Exodus file ID */
01558       void_int  *elem_mapi, /* Internal element IDs */
01559       void_int  *elem_mapb, /* Border element IDs */
01560       int   processor  /* Processor ID */
01561       );
01562 
01563 EXODUS_EXPORT int
01564 ex_put_processor_elem_maps(int   exoid,  /* NetCDF/Exodus file ID */
01565       void_int  *elem_mapi, /* Internal FEM element IDs */
01566       void_int  *elem_mapb, /* Border FEM element IDs */
01567       int   processor  /* This processor ID */
01568       );
01569 
01570 
01571 /*=============================================================================
01572  *     Communications Maps Routines
01573  *===========================================================================*/
01574 
01575 EXODUS_EXPORT int
01576 ex_get_cmap_params(int exoid,                  /* NetCDF/Exodus file ID */
01577                    void_int *node_cmap_ids,        /* Nodal comm. map IDs */
01578                    void_int *node_cmap_node_cnts,  /* Number of nodes in each map */
01579                    void_int *elem_cmap_ids,        /* Elemental comm. map IDs */
01580                    void_int *elem_cmap_elem_cnts,  /* Number of elems in each map */
01581                    int  processor             /* This processor ID */
01582                    );
01583 
01584 EXODUS_EXPORT int
01585 ex_put_cmap_params(int  exoid,   /* NetCDF/Exodus file ID */
01586                    void_int *node_map_ids, /* Node map IDs */
01587                    void_int *node_map_node_cnts,/* Nodes in nodal comm */
01588                    void_int *elem_map_ids, /* Elem map IDs */
01589                    void_int *elem_map_elem_cnts,/* Elems in elemental comm */
01590                    int64_t   processor  /* This processor ID */
01591                    );
01592 
01593 EXODUS_EXPORT int
01594 ex_put_cmap_params_cc(int  exoid,  /* NetCDF/Exodus file ID */
01595                       void_int *node_map_ids, /* Node map IDs */
01596                       void_int *node_map_node_cnts, /* Nodes in nodal comm */
01597                       void_int *node_proc_ptrs,      /* Pointer into array for */
01598       /* node maps    */
01599                       void_int *elem_map_ids, /* Elem map IDs */
01600                       void_int *elem_map_elem_cnts, /* Elems in elemental comm */
01601                       void_int *elem_proc_ptrs /* Pointer into array for */
01602       /* elem maps    */
01603                       );
01604 
01605 EXODUS_EXPORT int
01606 ex_get_node_cmap(int  exoid,             /* NetCDF/Exodus file ID */
01607                  ex_entity_id  map_id,           /* Map ID */
01608                  void_int *node_ids,         /* FEM node IDs */
01609                  void_int *proc_ids,         /* Processor IDs */
01610                  int  processor         /* This processor ID */
01611                  );
01612 
01613 EXODUS_EXPORT int
01614 ex_put_node_cmap(int  exoid, /* NetCDF/Exodus file ID */
01615                  ex_entity_id  map_id, /* Nodal comm map ID */
01616                  void_int *node_ids, /* FEM node IDs */
01617                  void_int *proc_ids, /* Processor IDs */
01618                  int  processor /* This processor ID */
01619                  );
01620 
01621 EXODUS_EXPORT int
01622 ex_get_elem_cmap(int  exoid,     /* NetCDF/Exodus file ID */
01623                  ex_entity_id  map_id,   /* Elemental comm map ID */
01624                  void_int *elem_ids, /* Element IDs */
01625                  void_int *side_ids, /* Element side IDs */
01626                  void_int *proc_ids, /* Processor IDs */
01627                  int  processor /* This processor ID */
01628                  );
01629 
01630 EXODUS_EXPORT int
01631 ex_put_elem_cmap(int  exoid, /* NetCDF/Exodus file ID */
01632                  ex_entity_id  map_id, /* Elemental comm map ID */
01633                  void_int *elem_ids, /* Vector of element IDs */
01634                  void_int *side_ids, /* Vector of side IDs */
01635                  void_int *proc_ids, /* Vector of processor IDs */
01636                  int  processor /* This processor ID */
01637                  );
01638   
01639   /* ========================================================================
01640    * Deprecated functiona
01641    */
01642 
01643   EXODUS_EXPORT int ex_get_nodal_var (int   exoid,
01644           int   time_step,
01645           int   nodal_var_index,
01646           int64_t   num_nodes, 
01647           void *nodal_var_vals);
01648 
01649   EXODUS_EXPORT int ex_get_nodal_var_time (int   exoid,
01650         int   nodal_var_index,
01651         int64_t   node_number,
01652         int   beg_time_step, 
01653         int   end_time_step,
01654         void *nodal_var_vals);
01655 
01656   /* Use ex_get_concat_sets() */
01657   EXODUS_EXPORT int ex_get_concat_node_sets (int   exoid,
01658           void_int  *node_set_ids,
01659           void_int  *num_nodes_per_set, 
01660           void_int  *num_df_per_set, 
01661           void_int  *node_sets_node_index,
01662           void_int  *node_sets_df_index,
01663           void_int  *node_sets_node_list, 
01664           void *node_sets_dist_fact);
01665 
01666      
01667   EXODUS_EXPORT int ex_get_concat_side_sets (int   exoid,
01668           void_int  *side_set_ids,
01669           void_int  *num_elem_per_set,
01670           void_int  *num_dist_per_set,
01671           void_int  *side_sets_elem_index,
01672           void_int  *side_sets_dist_index,
01673           void_int  *side_sets_elem_list,
01674           void_int  *side_sets_side_list,
01675           void *side_sets_dist_fact);
01676 
01677   EXODUS_EXPORT int ex_get_elem_attr (int   exoid,
01678           ex_entity_id   elem_blk_id,
01679           void *attrib);
01680 
01681   EXODUS_EXPORT int ex_get_elem_attr_names (int   exoid,
01682          ex_entity_id elem_blk_id,
01683          char **names);
01684 
01685   EXODUS_EXPORT int ex_get_elem_blk_ids (int  exoid,
01686       void_int *ids);
01687 
01688   EXODUS_EXPORT int ex_get_elem_block (int   exoid,
01689            ex_entity_id  elem_blk_id,
01690            char *elem_type,
01691            void_int  *num_elem_this_blk, 
01692            void_int  *num_nodes_per_elem,
01693            void_int  *num_attr);
01694 
01695   EXODUS_EXPORT int ex_get_elem_conn (int   exoid,
01696           ex_entity_id   elem_blk_id,
01697           void_int  *connect);
01698 
01699   EXODUS_EXPORT int ex_get_elem_map (int   exoid,
01700          ex_entity_id   map_id,
01701          void_int  *elem_map);
01702 
01703   EXODUS_EXPORT int ex_get_elem_num_map (int  exoid,
01704       void_int *elem_map);
01705 
01706   EXODUS_EXPORT int ex_get_elem_var (int   exoid,
01707          int   time_step,
01708          int   elem_var_index,
01709          ex_entity_id   elem_blk_id, 
01710          int64_t   num_elem_this_blk,
01711          void *elem_var_vals);
01712 
01713   EXODUS_EXPORT int ex_get_elem_var_tab (int  exoid,
01714       int  num_elem_blk,
01715       int  num_elem_var,
01716       int *elem_var_tab);
01717 
01718   EXODUS_EXPORT int ex_get_elem_var_time (int   exoid,
01719        int   elem_var_index,
01720        int64_t   elem_number,
01721        int   beg_time_step, 
01722        int   end_time_step,
01723        void *elem_var_vals);
01724 
01725   EXODUS_EXPORT int ex_get_map (int  exoid, void_int *elem_map);
01726 
01727   EXODUS_EXPORT int ex_get_node_map (int   exoid,
01728          ex_entity_id   map_id,
01729          void_int  *node_map);
01730 
01731   EXODUS_EXPORT int ex_get_node_num_map (int  exoid,
01732       void_int *node_map);
01733 
01734   EXODUS_EXPORT int ex_get_node_set_param (int  exoid,
01735         ex_entity_id  node_set_id,
01736         void_int *num_nodes_in_set,
01737         void_int *num_df_in_set);
01738 
01739   EXODUS_EXPORT int ex_get_node_set (int   exoid,
01740          ex_entity_id   node_set_id,
01741          void_int  *node_set_node_list);
01742 
01743   EXODUS_EXPORT int ex_get_node_set_dist_fact  (int   exoid,
01744       ex_entity_id   node_set_id,
01745       void *node_set_dist_fact);
01746 
01747   EXODUS_EXPORT int ex_get_node_set_ids (int  exoid,
01748       void_int *ids);
01749 
01750   EXODUS_EXPORT int ex_get_nset_var_tab (int  exoid,
01751       int  num_nodesets,
01752       int  num_nset_var,
01753       int *nset_var_tab);
01754 
01755   EXODUS_EXPORT int ex_get_nset_var (int   exoid,
01756          int   time_step,
01757          int   nset_var_index,
01758          ex_entity_id   nset_id, 
01759          int64_t   num_node_this_nset,
01760          void *nset_var_vals);
01761 
01762   EXODUS_EXPORT int ex_get_one_elem_attr (int   exoid,
01763        ex_entity_id   elem_blk_id,
01764        int   attrib_index,
01765        void *attrib);
01766 
01767   EXODUS_EXPORT int ex_get_side_set (int   exoid,
01768          ex_entity_id   side_set_id,
01769          void_int  *side_set_elem_list, 
01770          void_int  *side_set_side_list);
01771 
01772   EXODUS_EXPORT int ex_get_side_set_dist_fact (int   exoid,
01773             ex_entity_id   side_set_id,
01774             void *side_set_dist_fact);
01775 
01776   EXODUS_EXPORT int ex_get_side_set_ids (int  exoid,
01777       void_int *ids);
01778 
01779   EXODUS_EXPORT int ex_get_side_set_param (int  exoid,
01780         ex_entity_id  side_set_id,
01781         void_int *num_side_in_set, 
01782         void_int *num_dist_fact_in_set);
01783 
01784   EXODUS_EXPORT int ex_get_sset_var (int   exoid,
01785          int   time_step,
01786          int   sset_var_index,
01787          ex_entity_id   sset_id, 
01788          int64_t   num_side_this_sset,
01789          void *sset_var_vals);
01790 
01791   EXODUS_EXPORT int ex_get_sset_var_tab (int  exoid,
01792       int  num_sidesets,
01793       int  num_sset_var,
01794       int *sset_var_tab);
01795 
01796   EXODUS_EXPORT int ex_get_var_names (int   exoid,
01797           const char *var_type,
01798           int   num_vars,
01799           char *var_names[]);
01800 
01801   EXODUS_EXPORT int ex_get_var_name (int   exoid,
01802          const char *var_type,
01803          int   var_num,
01804          char *var_name);
01805 
01806   EXODUS_EXPORT int ex_get_var_param (int   exoid,
01807           const char *var_type,
01808           int  *num_vars);
01809 
01810   EXODUS_EXPORT int ex_get_var_tab (int  exoid,
01811         const char *var_type,
01812         int  num_blk,
01813         int  num_var,
01814         int *var_tab);
01815 
01816   EXODUS_EXPORT int ex_put_concat_node_sets (int   exoid,
01817           void_int  *node_set_ids,
01818           void_int  *num_nodes_per_set,
01819           void_int  *num_dist_per_set,
01820           void_int  *node_sets_node_index,
01821           void_int  *node_sets_df_index,
01822           void_int  *node_sets_node_list,
01823           void *node_sets_dist_fact);
01824 
01825   EXODUS_EXPORT int ex_put_concat_side_sets (int   exoid,
01826           void_int  *side_set_ids,
01827           void_int  *num_elem_per_set,
01828           void_int  *num_dist_per_set,
01829           void_int  *side_sets_elem_index,
01830           void_int  *side_sets_dist_index,
01831           void_int  *side_sets_elem_list,
01832           void_int  *side_sets_side_list,
01833           void *side_sets_dist_fact);
01834 
01835   EXODUS_EXPORT int ex_put_concat_var_param (int exoid, int num_g, int num_n,
01836           int num_e, int num_elem_blk, int  *elem_var_tab);
01837   
01838   EXODUS_EXPORT int ex_put_elem_attr_names(int   exoid,
01839         ex_entity_id   elem_blk_id,
01840         char *names[]);
01841   EXODUS_EXPORT int ex_put_elem_attr (int   exoid,
01842           ex_entity_id   elem_blk_id,
01843           const void *attrib);
01844 
01845   EXODUS_EXPORT int ex_put_elem_block (int   exoid,
01846            ex_entity_id   elem_blk_id,
01847            const char *elem_type,
01848            int64_t   num_elem_this_blk,
01849            int64_t   num_nodes_per_elem,
01850            int64_t   num_attr);
01851 
01852   EXODUS_EXPORT int ex_put_elem_conn (int   exoid,
01853           ex_entity_id   elem_blk_id,
01854           const void_int  *connect);
01855 
01856   EXODUS_EXPORT int ex_put_elem_map (int exoid,
01857          ex_entity_id map_id,
01858          const void_int *elem_map);
01859 
01860   EXODUS_EXPORT int ex_put_elem_num_map (int  exoid,
01861       const void_int *elem_map);
01862 
01863   EXODUS_EXPORT int ex_put_elem_var (int   exoid,
01864          int   time_step,
01865          int   elem_var_index,
01866          ex_entity_id   elem_blk_id,
01867          int64_t num_elem_this_blk,
01868          const void *elem_var_vals);
01869 
01870   EXODUS_EXPORT int ex_put_elem_var_tab (int  exoid,
01871       int  num_elem_blk,
01872       int  num_elem_var,
01873       int *elem_var_tab);
01874 
01875   EXODUS_EXPORT int ex_put_glob_vars (int   exoid,
01876           int   time_step,
01877           int   num_glob_vars,
01878           const void *glob_var_vals);
01879 
01880   EXODUS_EXPORT int ex_put_map (int  exoid,
01881     const void_int *elem_map);
01882 
01883   EXODUS_EXPORT int ex_put_node_map (int exoid,
01884          ex_entity_id map_id,
01885          const void_int *node_map);
01886 
01887   EXODUS_EXPORT int ex_put_node_num_map (int  exoid,
01888       const void_int *node_map);
01889 
01890   EXODUS_EXPORT int ex_put_node_set (int   exoid,
01891          ex_entity_id   node_set_id,
01892          const void_int  *node_set_node_list);
01893 
01894   EXODUS_EXPORT int ex_put_node_set_dist_fact  (int   exoid,
01895       ex_entity_id   node_set_id,
01896       const void *node_set_dist_fact);
01897 
01898   EXODUS_EXPORT int ex_put_node_set_param (int exoid,
01899         ex_entity_id node_set_id,
01900         int64_t num_nodes_in_set,
01901         int64_t num_dist_in_set);
01902 
01903   EXODUS_EXPORT int ex_put_nset_var (int   exoid,
01904          int   time_step,
01905          int   nset_var_index,
01906          ex_entity_id   nset_id,
01907          int64_t num_nodes_this_nset,
01908          const void *nset_var_vals);
01909 
01910   EXODUS_EXPORT int ex_put_nset_var_tab (int  exoid,
01911       int  num_nset,
01912       int  num_nset_var,
01913       int *nset_var_tab);
01914 
01915   EXODUS_EXPORT int ex_put_one_elem_attr (int   exoid,
01916        ex_entity_id   elem_blk_id,
01917        int   attrib_index,
01918        const void *attrib);
01919 
01920   EXODUS_EXPORT int ex_put_side_set (int   exoid,
01921          ex_entity_id   side_set_id,
01922          const void_int  *side_set_elem_list,
01923          const void_int  *side_set_side_list);
01924 
01925   EXODUS_EXPORT int ex_put_side_set_dist_fact (int   exoid,
01926             ex_entity_id   side_set_id,
01927             const void *side_set_dist_fact);
01928 
01929   EXODUS_EXPORT int ex_put_side_set_param (int exoid,
01930         ex_entity_id side_set_id,
01931         int64_t num_side_in_set,
01932         int64_t num_dist_fact_in_set);
01933 
01934   EXODUS_EXPORT int ex_put_sset_var (int   exoid,
01935          int   time_step,
01936          int   sset_var_index,
01937          ex_entity_id   sset_id,
01938          int64_t  num_faces_this_sset,
01939          const void *sset_var_vals);
01940 
01941   EXODUS_EXPORT int ex_put_sset_var_tab (int  exoid,
01942       int  num_sset,
01943       int  num_sset_var,
01944       int *sset_var_tab);
01945 
01946   EXODUS_EXPORT int ex_put_var_name (int   exoid,
01947          const char *var_type,
01948          int   var_num,
01949          const char *var_name);
01950 
01951   EXODUS_EXPORT int ex_put_var_names (int   exoid,
01952           const char *var_type,
01953           int   num_vars,
01954           char *var_names[]);
01955 
01956   EXODUS_EXPORT int ex_put_var_param (int   exoid,
01957           const char *var_type,
01958           int   num_vars);
01959 
01960   EXODUS_EXPORT int ex_put_var_tab (int  exoid,
01961         const char *var_type,
01962         int  num_blk,
01963         int  num_var,
01964         int *var_tab);
01965   
01966    /* End of Deprecated functions and their replacements
01967     * ======================================================================== */
01968 
01969   /* ERROR CODE DEFINITIONS AND STORAGE                                       */
01970   EXODUS_EXPORT int exerrval;     /**< shared error return value                */
01971   EXODUS_EXPORT int exoptval;     /**< error reporting flag (default is quiet)  */
01972 
01973   EXODUS_EXPORT char* ex_name_of_object(ex_entity_type obj_type);
01974   EXODUS_EXPORT ex_entity_type ex_var_type_to_ex_entity_type(char var_type);
01975 
01976   /* Should be internal use only, but was in external include file for
01977      nemesis and some codes are using the function
01978   */
01979   EXODUS_EXPORT int ex_get_idx(int      neid,  /* NetCDF/Exodus file ID */
01980    const char *ne_var_name, /* Nemesis index variable name */
01981    int64_t *index,  /* array of length 2 to hold results */
01982    int      pos   /* position of this proc/cmap in index */
01983    );
01984 
01985 
01986 #ifdef __cplusplus
01987 }                               /* close brackets on extern "C" declaration */
01988 #endif
01989 
01990 /**
01991  * \defgroup ErrorReturnCodes Exodus error return codes - exerrval return values
01992  * @{
01993  */
01994 #define EX_MEMFAIL       1000   /**< memory allocation failure flag def       */
01995 #define EX_BADFILEMODE   1001   /**< bad file mode def                        */
01996 #define EX_BADFILEID     1002   /**< bad file id def                          */
01997 #define EX_WRONGFILETYPE 1003   /**< wrong file type for function             */
01998 #define EX_LOOKUPFAIL    1004   /**< id table lookup failed                   */
01999 #define EX_BADPARAM      1005   /**< bad parameter passed                     */
02000 #define EX_INTERNAL      1006   /**< internal logic error                     */
02001 #define EX_MSG          -1000   /**< message print code - no error implied    */
02002 #define EX_PRTLASTMSG   -1001   /**< print last error message msg code        */
02003 #define EX_NOTROOTID    -1002   /**< file id is not the root id; it is a subgroup id */
02004 #define EX_NULLENTITY   -1006   /**< null entity found                        */
02005 /* @} */
02006 
02007 #endif
02008 
 All Data Structures Files Functions Variables Typedefs Enumerations Enumerator Defines