Cloned SEACAS for EXODUS library with extra build files for internal package management.
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

411 lines
24 KiB

/*
* Copyright(C) 1999-2020, 2022, 2023 National Technology & Engineering Solutions
* of Sandia, LLC (NTESS). Under the terms of Contract DE-NA0003525 with
* NTESS, the U.S. Government retains certain rights in this software.
*
* See packages/seacas/LICENSE for details
*/
/****************************************************************************
* This file contains prototypes for the functions found in the NEMESIS
* library.
****************************************************************************/
#pragma once
#ifdef __cplusplus
extern "C" {
#endif
/* If exodusII.h has been included, then these typedef are already defined */
#ifndef EXODUS_VERSION
#include <stdint.h>
/** Specifies that this argument is the id of an entity: element block, nodeset, sideset, ... */
typedef int64_t ex_entity_id;
/** The mechanism for passing double/float and int/int64_t both use a
void*; to avoid some confusion as to whether a function takes an
integer or a float/double, the following typedef is used for the
integer argument
*/
typedef void void_int;
#endif
/*=============================================================================
* Initial Information Routines
*===========================================================================*/
extern int ne_get_init_info(int neid, /* NemesisI file ID */
int *num_proc, /* Number of processors */
int *num_proc_in_f, /* Number of procs in this file */
char *ftype);
extern int ne_put_init_info(int neid, /* NemesisI file ID */
int num_proc, /* Number of processors */
int num_proc_in_f, /* Number of procs in this file */
char *ftype);
extern int ne_get_init_global(int neid, /* NemesisI file ID */
void_int *num_nodes_g, /* Number of global FEM nodes */
void_int *num_elems_g, /* Number of global FEM elements */
void_int *num_elem_blks_g, /* Number of global elem blocks */
void_int *num_node_sets_g, /* Number of global node sets */
void_int *num_side_sets_g /* Number of global side sets */
);
extern int ne_put_init_global(int neid, /* NemesisI file ID */
int64_t num_nodes_g, /* Number of global FEM nodes */
int64_t num_elems_g, /* Number of global FEM elements */
int64_t num_elem_blks_g, /* Number of global elem blocks */
int64_t num_node_sets_g, /* Number of global node sets */
int64_t num_side_sets_g /* Number of global side sets */
);
extern int ne_put_version(int neid);
/*=============================================================================
* Loadbalance Parameter Routines
*===========================================================================*/
extern int ne_get_loadbal_param(int neid, /* NetCDF/Exodus file ID */
void_int *num_int_nodes, /* Number of internal FEM nodes */
void_int *num_bor_nodes, /* Number of border FEM nodes */
void_int *num_ext_nodes, /* Number of external FEM nodes */
void_int *num_int_elems, /* Number of internal FEM elems */
void_int *num_bor_elems, /* Number of border FEM elems */
void_int *num_node_cmaps, /* Number of nodal comm maps */
void_int *num_elem_cmaps, /* Number of elemental comm maps */
int processor /* Processor ID */
);
extern int ne_put_loadbal_param(int neid, /* NemesisI file ID */
int64_t num_int_nodes, /* Number of internal FEM nodes */
int64_t num_bor_nodes, /* Number of border FEM nodes */
int64_t num_ext_nodes, /* Number of external FEM nodes */
int64_t num_int_elems, /* Number of internal FEM elems */
int64_t num_bor_elems, /* Number of border FEM elems */
int64_t num_node_cmaps, /* Number of nodal comm maps */
int64_t num_elem_cmaps, /* Number of elemental comm maps */
int processor /* Processor ID */
);
extern int ne_put_loadbal_param_cc(int neid, /* NetCDF/Exodus file ID */
void_int *num_int_nodes, /* Number of internal node IDs */
void_int *num_bor_nodes, /* Number of border node IDs */
void_int *num_ext_nodes, /* Number of external node IDs */
void_int *num_int_elems, /* Number of internal elem IDs */
void_int *num_bor_elems, /* Number of border elem IDs */
void_int *num_node_cmaps, /* Number of nodal comm maps */
void_int *num_elem_cmaps /* Number of elem comm maps */
);
/*=============================================================================
* NS, SS & EB Global Parameter Routines
*===========================================================================*/
extern int ne_get_ns_param_global(int neid, /* NetCDF/Exodus file ID */
void_int *ns_ids_glob, /* Global IDs of node sets */
void_int *ns_n_cnt_glob, /* Count of nodes in node sets */
void_int *ns_df_cnt_glob /* Count of dist. factors in ns */
);
extern int
ne_put_ns_param_global(int neid, /* NemesisI file ID */
void_int *global_ids, /* Vector of global node-set IDs */
void_int *global_n_cnts, /* Vector of node counts in node-sets */
void_int *global_df_cnts /* Vector of dist factor counts in node-sets */
);
extern int ne_get_ss_param_global(int neid, /* NetCDF/Exodus file ID */
void_int *ss_ids_glob, /* Global side-set IDs */
void_int *ss_s_cnt_glob, /* Global side count */
void_int *ss_df_cnt_glob /* Global dist. factor count */
);
extern int ne_put_ss_param_global(int neid, /* NemesisI file ID */
void_int *global_ids, /* Vector of global side-set IDs */
void_int *global_el_cnts, /* Vector of element/side */
/* counts in each side set */
void_int *global_df_cnts /* Vector of dist. factor */
/* counts in each side set */
);
extern int ne_get_eb_info_global(int neid, /* NemesisI file ID */
void_int *el_blk_ids, /* Vector of global element IDs */
void_int *el_blk_cnts /* Vector of global element counts */
);
extern int ne_put_eb_info_global(int neid, /* NemesisI file ID */
void_int *el_blk_ids, /* Vector of global element IDs */
void_int *el_blk_cnts /* Vector of global element counts */
);
/*=============================================================================
* NS, SS & EB Subset Routines
*===========================================================================*/
extern int ne_get_n_side_set(int neid, /* NetCDF/Exodus file ID */
ex_entity_id side_set_id, /* Side-set ID to read */
int64_t start_side_num, /* Starting element number */
int64_t num_sides, /* Number of sides to read */
void_int *side_set_elem_list, /* List of element IDs */
void_int *side_set_side_list /* List of side IDs */
);
extern int ne_put_n_side_set(int neid, /* NetCDF/Exodus file ID */
ex_entity_id side_set_id, /* Side-set ID to write */
int64_t start_side_num, /* Starting element number */
int64_t num_sides, /* Number of sides to write */
const void_int *side_set_elem_list, /* List of element IDs */
const void_int *side_set_side_list /* List of side IDs */
);
extern int ne_get_n_side_set_df(int neid, /* NetCDF/Exodus file ID */
ex_entity_id side_set_id, /* Side-set ID */
int64_t start_num, /* Starting df number */
int64_t num_df_to_get, /* Number of df's to read */
void *side_set_df /* Distribution factors */
);
extern int ne_put_n_side_set_df(int neid, /* NetCDF/Exodus file ID */
ex_entity_id side_set_id, /* Side-set ID */
int64_t start_num, /* Starting df number */
int64_t num_df_to_get, /* Number of df's to write */
void *side_set_df /* Distribution factors */
);
extern int ne_get_n_node_set(int neid, /* NetCDF/Exodus file ID */
ex_entity_id node_set_id, /* Node set ID */
int64_t start_node_num, /* Node index to start reading at */
int64_t num_node, /* Number of nodes to read */
void_int *node_set_node_list /* List of nodes in node set */
);
extern int ne_put_n_node_set(int neid, /* NetCDF/Exodus file ID */
ex_entity_id node_set_id, /* Node set ID */
int64_t start_node_num, /* Node index to start writing at */
int64_t num_node, /* Number of nodes to write */
const void_int *node_set_node_list /* List of nodes in node set */
);
extern int ne_get_n_node_set_df(int neid, /* NetCDF/Exodus file ID */
ex_entity_id node_set_id, /* Node-set ID */
int64_t start_num, /* Starting df number */
int64_t num_df_to_get, /* Number of df's to read */
void *node_set_df /* Distribution factors */
);
extern int ne_put_n_node_set_df(int neid, /* NetCDF/Exodus file ID */
ex_entity_id node_set_id, /* Node-set ID */
int64_t start_num, /* Starting df number */
int64_t num_df_to_get, /* Number of df's to write */
void *node_set_df /* Distribution factors */
);
extern int ne_get_n_coord(int neid, /* NetCDF/Exodus file ID */
int64_t start_node_num, /* Starting position to read from */
int64_t num_nodes, /* Number of coords to read */
void *x_coor, /* Vector of X coordinates */
void *y_coor, /* Vector of Y coordinates */
void *z_coor /* Vector of Z coordinates */
);
extern int ne_put_n_coord(int neid, /* NetCDF/Exodus file ID */
int64_t start_node_num, /* Starting position to write to */
int64_t num_nodes, /* Number of coords to write */
void *x_coor, /* Vector of X coordinates */
void *y_coor, /* Vector of Y coordinates */
void *z_coor /* Vector of Z coordinates */
);
extern int ne_get_n_elem_conn(int neid, /* NetCDF/Exodus file ID */
ex_entity_id elem_blk_id, /* Element block ID */
int64_t start_elem_num, /* Starting position to read from */
int64_t num_elems, /* Number of elements to read */
void_int *connect /* Connectivity vector */
);
extern int ne_put_n_elem_conn(int neid, /* NetCDF/Exodus file ID */
ex_entity_id elem_blk_id, /* Element block ID */
int64_t start_elem_num, /* Starting position to write to */
int64_t num_elems, /* Number of elements to write */
const void_int *connect /* Connectivity vector */
);
extern int ne_get_n_elem_attr(int neid, /* NetCDF/Exodus file ID */
ex_entity_id elem_blk_id, /* Element block ID */
int64_t start_elem_num, /* Starting position to read from */
int64_t num_elems, /* Number of elements to read */
void *attrib /* Attribute */
);
extern int ne_put_n_elem_attr(int neid, /* NetCDF/Exodus file ID */
ex_entity_id elem_blk_id, /* Element block ID */
int64_t start_elem_num, /* Starting position to write to */
int64_t num_elems, /* Number of elements to write */
void *attrib /* Attribute */
);
extern int ne_get_elem_type(int neid, /* NetCDF/Exodus file ID */
ex_entity_id elem_blk_id, /* Element block ID */
char *elem_type /* The name of the element type */
);
/*=============================================================================
* Variable Routines
*===========================================================================*/
extern int ne_get_n_elem_var(int neid, /* NetCDF/Exodus file ID */
int time_step, /* time index */
int elem_var_index, /* elemental variable index */
ex_entity_id elem_blk_id, /* elemental block id */
int64_t num_elem_this_blk, /* number of elements in block */
int64_t start_elem_num, /* Starting position for read */
int64_t num_elem, /* Number of elements to read */
void *elem_var_vals /* variable values */
);
extern int ne_put_elem_var_slab(int neid, /* NetCDF/Exodus file ID */
int time_step, /* time index */
int elem_var_index, /* elemental variable index */
ex_entity_id elem_blk_id, /* elemental block id */
int64_t start_pos, /* Starting position to write to */
int64_t num_vals, /* Number of elements to write */
void *elem_var_vals /* variable values */
);
extern int ne_get_n_nodal_var(int neid, /* NetCDF/Exodus file ID */
int time_step, /* whole time step number */
int nodal_var_index, /* index of desired nodal var */
int64_t start_node_num, /* starting node number */
int64_t num_nodes, /* number of nodes to read */
void *nodal_vars /* array of nodal var values */
);
extern int ne_put_nodal_var_slab(int neid, /* NetCDF/Exodus file ID */
int time_step, /* The time step index */
int nodal_var_index, /* Nodal variable index */
int64_t start_pos, /* Start position for write */
int64_t num_vals, /* Number of nodal variables */
void *nodal_var_vals /* Nodal variable values */
);
/*=============================================================================
* Number Map Routines
*===========================================================================*/
extern int ne_get_n_elem_num_map(int neid, /* NetCDF/Exodus file ID */
int64_t start_ent, /* Starting position to read from */
int64_t num_ents, /* Number of elements to read */
void_int *elem_map /* element map numbers */
);
extern int ne_put_n_elem_num_map(int neid, /* NetCDF/Exodus file ID */
int64_t start_ent, /* Starting position to read from */
int64_t num_ents, /* Number of elements to read */
const void_int *elem_map /* element map numbers */
);
extern int ne_get_n_node_num_map(int neid, /* NetCDF/Exodus file ID */
int64_t start_ent, /* starting node number */
int64_t num_ents, /* number of nodes to read */
void_int *node_map /* vector for node map */
);
extern int ne_put_n_node_num_map(int neid, /* NetCDF/Exodus file ID */
int64_t start_ent, /* starting node number */
int64_t num_ents, /* number of nodes to read */
const void_int *node_map /* vector for node map */
);
extern int ne_get_node_map(int neid, /* NetCDF/Exodus file ID */
void_int *node_mapi, /* Internal FEM node IDs */
void_int *node_mapb, /* Border FEM node IDs */
void_int *node_mape, /* External FEM node IDs */
int processor /* Processor IDs */
);
extern int ne_put_node_map(int neid, /* NetCDF/Exodus file ID */
void_int *node_mapi, /* Internal FEM node IDs */
void_int *node_mapb, /* Border FEM node IDs */
void_int *node_mape, /* External FEM node IDs */
int processor /* This processor ID */
);
extern int ne_get_elem_map(int neid, /* NetCDF/Exodus file ID */
void_int *elem_mapi, /* Internal element IDs */
void_int *elem_mapb, /* Border element IDs */
int processor /* Processor ID */
);
extern int ne_put_elem_map(int neid, /* NetCDF/Exodus file ID */
void_int *elem_mapi, /* Internal FEM element IDs */
void_int *elem_mapb, /* Border FEM element IDs */
int processor /* This processor ID */
);
/*=============================================================================
* Communications Maps Routines
*===========================================================================*/
extern int ne_get_cmap_params(int neid, /* NetCDF/Exodus file ID */
void_int *node_cmap_ids, /* Nodal comm. map IDs */
void_int *node_cmap_node_cnts, /* Number of nodes in each map */
void_int *elem_cmap_ids, /* Elemental comm. map IDs */
void_int *elem_cmap_elem_cnts, /* Number of elems in each map */
int processor /* This processor ID */
);
extern int ne_put_cmap_params(int neid, /* NetCDF/Exodus file ID */
void_int *node_map_ids, /* Node map IDs */
void_int *node_map_node_cnts, /* Nodes in nodal comm */
void_int *elem_map_ids, /* Elem map IDs */
void_int *elem_map_elem_cnts, /* Elems in elemental comm */
int64_t processor /* This processor ID */
);
extern int ne_put_cmap_params_cc(int neid, /* NetCDF/Exodus file ID */
void_int *node_map_ids, /* Node map IDs */
void_int *node_map_node_cnts, /* Nodes in nodal comm */
void_int *node_proc_ptrs, /* Pointer into array for */
/* node maps */
void_int *elem_map_ids, /* Elem map IDs */
void_int *elem_map_elem_cnts, /* Elems in elemental comm */
void_int *elem_proc_ptrs /* Pointer into array for */
/* elem maps */
);
extern int ne_get_node_cmap(int neid, /* NetCDF/Exodus file ID */
ex_entity_id map_id, /* Map ID */
void_int *node_ids, /* FEM node IDs */
void_int *proc_ids, /* Processor IDs */
int processor /* This processor ID */
);
extern int ne_put_node_cmap(int neid, /* NetCDF/Exodus file ID */
ex_entity_id map_id, /* Nodal comm map ID */
void_int *node_ids, /* FEM node IDs */
void_int *proc_ids, /* Processor IDs */
int processor /* This processor ID */
);
extern int ne_get_elem_cmap(int neid, /* NetCDF/Exodus file ID */
ex_entity_id map_id, /* Elemental comm map ID */
void_int *elem_ids, /* Element IDs */
void_int *side_ids, /* Element side IDs */
void_int *proc_ids, /* Processor IDs */
int processor /* This processor ID */
);
extern int ne_put_elem_cmap(int neid, /* NetCDF/Exodus file ID */
ex_entity_id map_id, /* Elemental comm map ID */
void_int *elem_ids, /* Vector of element IDs */
void_int *side_ids, /* Vector of side IDs */
void_int *proc_ids, /* Vector of processor IDs */
int processor /* This processor ID */
);
/* Should be internal use only, but was in external include file for
nemesis and some codes are using the function
*/
int ne_get_idx(int neid, /* NetCDF/Exodus file ID */
const char *ne_var_name, /* Nemesis index variable name */
int64_t *index, /* array of length 2 to hold results */
int pos /* position of this proc/cmap in index */
);
#ifdef __cplusplus
}
#endif