ParFUM Unstructured Mesh Framework

Collaboration diagram for ParFUM Unstructured Mesh Framework:


Data Structures

class  dynChunk
 A dynamic (growing) representation of a chunk. More...
class  splitter
 Splitter is a big utility class used to separate an FEM_Mesh into pieces. More...
class  FEM_Entity_numberer
 Reassemble entities based on their global numbers. More...
struct  ParFUM_collider
 ParFUM Collision Interface File. More...
class  FEM_Comm_Holder
 We want the FEM_Comm/IDXL_Side's to be accessible to *both* FEM routines (via these data structures) and IDXL routines (via an idxl->addStatic registration). More...
class  FEM_Sym_Desc
 Describes one kind of symmetry condition. More...
class  FEM_Sym_Linear
 Describes a linear-periodic (space shift) symmetry:. More...
class  FEM_Sym_List
 Describes all the different kinds of symmetries that apply to this mesh. More...
class  BasicTable2d< T >
 This is a simple 2D table. More...
class  AllocTable2d< T >
 A heap-allocatable, resizable BasicTable2d. More...
class  FEM_Attribute
 Describes an FEM entity's "attribute"--a user-visible, user-settable 2D table. More...
class  FEM_DataAttribute
 Describes a single table of user data associated with an entity. More...
class  FEM_IndexAttribute
 This table maps an entity to a set of integer indices. More...
class  FEM_VarIndexAttribute
 This table maps an entity to a list of integer indices of unknown length. More...
class  FEM_Entity
 Describes an entire class of "entities"--nodes, elements, or sparse data records. More...
class  FEM_Node
 Describes a set of FEM Nodes--the FEM_NODE entity type. More...
class  FEM_Elem
 Describes one kind of FEM elements--the FEM_ELEM entity type. More...
class  FEM_Sparse
 FEM_Sparse describes a set of records of sparse data that are all the same size and all associated with the same number of nodes. More...
class  FEM_Userdata_pupfn
 Describes a user function to pup a piece of mesh data. More...
class  FEM_Userdata_item
 Describes one piece of generic unassociated mesh data. More...
class  FEM_Userdata_list
 Describes all the unassociated data in a mesh. More...
class  FEM_Entity_Types< T >
 This class describes several different types of a certain kind of entity. More...
class  FEM_Mesh
 This class describes all the nodes and elements in a finite-element mesh or submesh. More...
class  l2g_t
 The default is the identity mapping. More...
class  NumberedVec< T >
 Map (user-assigned) numbers to T's. More...
class  ArrayPtrT< T >
 Smart pointer-to-new[]'d array-of-T. More...
class  marshallNewHeapCopy< T >
 Unmarshall into a heap-allocated copy. More...
class  FEM_T_List< T >
 Keeps a list of dynamically-allocated T objects, indexed by a user-carried, persistent "int". More...
class  FEM_Mesh_list
class  FEM_chunk
 FEM global data object. More...
class  FEM_Ghost_Layer
 Describes a single layer of ghost elements. More...
class  FEM_Ghost_Stencil
 Describes a set of required adjacent elements for this kind of element, stored as an explicit adjacency list. More...
class  FEM_Ghost_Region
 Describes a way to grow a set of ghosts. More...
class  FEM_Partition
 Describes all the data needed for partitioning a mesh. More...
class  FEM_Mesh_Output
class  FEM_ElemAdj_Layer
 This stores the types of faces for each element type. More...
class  DefaultListEntry< T, PUP_EVERY_ELEMENT >
class  ElemList< T >
class  UniqElemList< T >
class  NodeElem
class  MeshElem
 This class is an MSA Entity. More...
class  Hashnode
struct  conndata
struct  partconndata
 Structure to store connectivity data after the global element partition has been returned by parmetis. More...
struct  ghostdata
 structure for storing the ghost layers More...
class  MsaHashtable
class  elemList
class  tupleTable
class  chunkList
class  FEM_MUtil
 A utility class with helper functions for adaptivity. More...
class  vector2d
class  CkThresholdTimer
 Time a sequence of operations, printing out the names and times of any operations that exceed a threshold. More...
class  NList
class  Nodes
class  Graph

Typedefs

typedef void(*) FEM_Update_mesh_fn (int userTag)
typedef void(*) FEM_Update_mesh_fortran_fn (int *userTag)
typedef void(*) FEM_PupFn (pup_er, void *)
typedef void(*) FEM_Mesh_alloc_fn (void *param, int *size, int *maxSize)
typedef int FEM_Comm_t
 This should be MPI_Comm, but I want it for Fortran too.
typedef void(*) FEM_Userdata_fn (pup_er p, void *data)
typedef IDXL_Side FEM_Comm
typedef IDXL_List FEM_Comm_List
typedef IDXL_Rec FEM_Comm_Rec
typedef unsigned char FEM_Symmetries_t
 This datatype is how the framework stores symmetries internally.
typedef ArrayPtrT< intintArrayPtr
typedef marshallNewHeapCopy<
FEM_Mesh
marshallMeshChunk
typedef MSA2D< int, DefaultEntry<
int >, MSA_DEFAULT_ENTRIES_PER_PAGE,
MSA_ROW_MAJOR > 
MSA2DRM
typedef MSA1D< int, DefaultEntry<
int >, MSA_DEFAULT_ENTRIES_PER_PAGE > 
MSA1DINT
typedef UniqElemList< intIntList
typedef MSA1D< IntList, DefaultListEntry<
IntList, true >, MSA_DEFAULT_ENTRIES_PER_PAGE > 
MSA1DINTLIST
typedef UniqElemList< NodeElemNodeList
typedef MSA1D< NodeList, DefaultListEntry<
NodeList, true >, MSA_DEFAULT_ENTRIES_PER_PAGE > 
MSA1DNODELIST
typedef MSA1D< MeshElem, DefaultEntry<
MeshElem, true >, 1 > 
MSA1DFEMMESH
typedef UniqElemList< HashnodeHashtuple
typedef MSA1D< Hashtuple,
DefaultListEntry< Hashtuple,
true >, MSA_DEFAULT_ENTRIES_PER_PAGE > 
MSA1DHASH
typedef double Real
typedef int idxtype

Enumerations

enum  { FEM_globalID = 33 }
enum  { FEM_globalID = 33 }

Functions

CDECL void fem_impl_call_init (void)
FDECL void FTN_NAME (INIT, init)
static void checkEquality (const char *what, int v1, const char *src1, int v2, const char *src2)
static void checkRange (const char *what, int v, int max)
static void checkArrayEntries (const int *arr, int nArr, int max, const char *what)
static void check (const FEM_Mesh *mesh)
static void check (const FEM_Partition &partition, const FEM_Mesh *mesh)
void FEM_Mesh_split (FEM_Mesh *mesh, int nChunks, const FEM_Partition &partition, FEM_Mesh_Output *out)
CkHashCode CkHashFunction_ints (const void *keyData, size_t keyLen)
int CkHashCompare_ints (const void *k1, const void *k2, size_t keyLen)
int ck_fem_map_compare_int (const void *a, const void *b)
static void renumberConn (const FEM_Elem &src_e, int l, FEM_Elem &dest_e, int g, const FEM_Mesh &mesh)
FEM_MeshFEM_Mesh_assemble (int nchunks, FEM_Mesh **chunks)
 Reassemble split chunks into a single mesh.
int is_shared (FEM_Mesh *m, int node)
 A wrapper to simplify the lookup to determine whether a node is shared.
CDECL void FEM_Print_n2n (int mesh, int nodeid)
CDECL void FEM_Print_n2e (int mesh, int eid)
CDECL void FEM_Print_e2n (int mesh, int eid)
CDECL void FEM_Print_e2e (int mesh, int eid)
CDECL void FEM_Print_Mesh_Summary (int mesh)
 Prints the mesh summary, i.e.
CDECL int FEM_add_node (int mesh, int *adjacent_nodes, int num_adjacent_nodes, int *chunks, int numChunks, int forceShared)
CDECL void FEM_remove_node (int mesh, int node)
CDECL int FEM_add_element (int mesh, int *conn, int conn_size, int elem_type, int chunkNo)
CDECL int FEM_remove_element (int mesh, int element, int elem_type, int permanent)
CDECL int FEM_purge_element (int mesh, int element, int elem_type)
int FEM_add_node_local (FEM_Mesh *m, bool addGhost, bool doLocking, bool doAdjacencies)
 Update adjacencies for this new node, and attach a lock to it.
int FEM_add_node (FEM_Mesh *m, int *adjacentNodes, int numAdjacentNodes, int *chunks, int numChunks, int forceShared)
 Add a node between some adjacent nodes on this mesh.
void FEM_add_shared_node_remote (FEM_Mesh *m, int chk, int nBetween, int *between)
 The function called by the entry method on the remote chunk Adds a node on this chunk between the nodes specified in 'between'.
void FEM_remove_node_local (FEM_Mesh *m, int node)
 Get rid of idxl entries for this node and clear adjacencies, invalidate node.
void FEM_remove_node (FEM_Mesh *m, int node)
 Remove a node on this mesh.
void update_new_element_e2e (FEM_Mesh *m, int newEl, int elemType)
 A helper function for FEM_add_element_local below Will only work with the same element type as the one given, may crash otherwise.
void FEM_update_new_element_e2e (FEM_Mesh *m, int newEl, int elemType)
int FEM_add_element_local (FEM_Mesh *m, int *conn, int connSize, int elemType, bool addGhost, bool create_adjacencies)
 Update adjacencies for this element and all surrounding nodes/elements.
int FEM_add_element (FEM_Mesh *m, int *conn, int connSize, int elemType, int chunkNo)
 Add an element on this mesh with this connectivity.
void FEM_remove_element_local (FEM_Mesh *m, int element, int etype)
 Clear up the adjacencies.
int FEM_remove_element (FEM_Mesh *m, int elementid, int elemtype, int permanent)
 Remove an element on this mesh.
int FEM_purge_element (FEM_Mesh *m, int elementid, int elemtype)
 Purge the element from this mesh (invalidate entry).
CDECL int FEM_Modify_Lock (int mesh, int *affectedNodes, int numAffectedNodes, int *affectedElts, int numAffectedElts, int elemtype)
CDECL int FEM_Modify_Unlock (int mesh)
CDECL int FEM_Modify_LockN (int mesh, int nodeId, int readLock)
CDECL int FEM_Modify_UnlockN (int mesh, int nodeId, int readLock)
int FEM_Modify_Lock (FEM_Mesh *m, int *affectedNodes, int numAffectedNodes, int *affectedElts, int numAffectedElts, int elemtype)
 Deprecated: locks all chunks for the nodes and elements specified.
int FEM_Modify_Unlock (FEM_Mesh *m)
 Deprecated: Unlock all chunks that have been locked by this mesh.
int FEM_Modify_LockN (FEM_Mesh *m, int nodeId, int readlock)
 Lock this node on this mesh with a read/write lock.
int FEM_Modify_UnlockN (FEM_Mesh *m, int nodeId, int readlock)
 Lock the read/write lock for this node on this mesh.
void FEM_Modify_LockAll (FEM_Mesh *m, int nodeId, bool lockall)
 Reassign the lock on a node when a chunk is losing a node.
void FEM_Modify_LockUpdate (FEM_Mesh *m, int nodeId, bool lockall)
 Update the lock on this node (by locking the newly formed node: Deprecated.
void FEM_Modify_correctLockN (FEM_Mesh *m, int nodeId)
 For the newly acquired node, correct the lock by removing superfluous locks: Deprecated.
void FEM_Mesh_dataP (FEM_Mesh *fem_mesh, int entity, int attr, void *data, int firstItem, int length, int datatype, int width)
 Get the data for 'length' indices from 'fem_mesh' for the 'attr' of 'entity' starting at index 'firstItem'.
void FEM_Mesh_data_layoutP (FEM_Mesh *fem_mesh, int entity, int attr, void *data, int firstItem, int length, IDXL_Layout_t layout)
 Get the data for 'length' indices from 'fem_mesh' for the 'attr' of 'entity' starting at index 'firstItem'.
void FEM_Mesh_data_layoutP (FEM_Mesh *m, int entity, int attr, void *data, int firstItem, int length, const IDXL_Layout &layout)
 Get the data for 'length' indices from 'fem_mesh' for the 'attr' of 'entity' starting at index 'firstItem'.
void FEM_Ghost_Essential_attributes (FEM_Mesh *m, int coord_attr, int bc_attr, int nodeid)
 Copy the essential attributes for this ghost node from remote chunks.
void clearPartition (void)
int FEM_Mesh_Parallel_broadcast (int fem_mesh, int masterRank, FEM_Comm_t comm_context)
int FEM_master_parallel_part (int fem_mesh, int masterRank, FEM_Comm_t comm_context)
int FEM_slave_parallel_part (int fem_mesh, int masterRank, FEM_Comm_t comm_context)
partconndataFEM_call_parmetis (struct conndata &data, FEM_Comm_t comm_context)
void FEM_write_nodepart (MSA1DINTLIST &nodepart, struct partconndata *data, MPI_Comm comm_context)
void FEM_write_part2node (MSA1DINTLIST &nodepart, MSA1DNODELIST &part2node, struct partconndata *data, MPI_Comm comm_context)
void FEM_write_part2elem (MSA1DINTLIST &part2elem, struct partconndata *data, MPI_Comm comm_context)
FEM_MeshFEM_break_mesh (FEM_Mesh *m, int numElements, int numChunks)
void sendBrokenMeshes (FEM_Mesh *mesh_array, FEM_Comm_t comm_context)
void FEM_write_part2mesh (MSA1DFEMMESH &part2mesh, struct partconndata *partdata, struct conndata *data, MSA1DINTLIST &nodepart, int numChunks, int myChunk, FEM_Mesh *m)
void sortNodeList (NodeList &lnodes)
void addIDXLists (FEM_Mesh *m, NodeList &lnodes, int myChunk)
ghostdatagatherGhosts ()
void makeGhosts (FEM_Mesh *m, MPI_Comm comm, int masterRank, int numLayers, FEM_Ghost_Layer **layers)
bool listContains (FEM_Comm_List &list, int entry)
void makeGhost (FEM_Mesh *m, MPI_Comm comm, int masterRank, int totalShared, FEM_Ghost_Layer *layer, CkHashtableT< CkHashtableAdaptorT< int >, char > &sharedNode, CkHashtableT< CkHashtableAdaptorT< int >, int > &global2local)
bool sharedWith (int lnode, int chunk, FEM_Mesh *m)
void FEM_Abort (const char *msg)
void FEM_Abort (const char *caller, const char *sprintf_msg, int int0, int int1, int int2)
CDECL void pupFEM_Chunk (pup_er cp)
CDECL void FEM_Init (FEM_Comm_t defaultCommunicator)
 Initialize the FEM framework (must have called MPI_Init).
 FORTRAN_AS_C (FEM_INIT, FEM_Init, fem_init,(int *comm),(*comm)) void FEM_Mesh_list
CDECL int FEM_Mesh_allocate (void)
 mesh creation functions
 FORTRAN_AS_C_RETURN (int, FEM_MESH_ALLOCATE, FEM_Mesh_allocate, fem_mesh_allocate,(void),())
 Return a new'd copy of this class, by calling pup.
CDECL int FEM_Mesh_copy (int fem_mesh)
 build new mesh
 FORTRAN_AS_C_RETURN (int, FEM_MESH_COPY, FEM_Mesh_copy, fem_mesh_copy,(int *m),(*m)) CDECL void FEM_Mesh_deallocate(int fem_mesh)
 FORTRAN_AS_C (FEM_MESH_DEALLOCATE, FEM_Mesh_deallocate, fem_mesh_deallocate,(int *m),(*m)) CDECL int FEM_Mesh_read(const char *prefix
CDECL void FEM_Mesh_partition (int fem_mesh, int nParts, int *destMeshes)
 FORTRAN_AS_C (FEM_MESH_PARTITION, FEM_Mesh_partition, fem_mesh_partition,(int *mesh, int *nParts, int *dest),(*mesh,*nParts, dest)) CDECL int FEM_Mesh_recv(int fromRank
CDECL int FEM_Mesh_broadcast (int fem_mesh, int masterRank, FEM_Comm_t comm_context)
 FORTRAN_AS_C_RETURN (int, FEM_MESH_BROADCAST, FEM_Mesh_broadcast, fem_mesh_broadcast,(int *mesh, int *rank, int *comm),(*mesh,*rank,*comm)) CDECL void FEM_Mesh_copy_globalno(int src_mesh
CDECL int FEM_Register (void *_ud, FEM_PupFn _pup_ud)
CDECL void * FEM_Get_userdata (int n)
CDECL void FEM_Barrier (void)
FDECL void FTN_NAME (FEM_BARRIER, fem_barrier)
CDECL void FEM_Migrate (void)
CDECL void FEM_Async_Migrate (void)
CDECL void FEM_Done (void)
CDECL int FEM_Create_simple_field (int base_type, int vec_len)
CDECL int FEM_Create_field (int base_type, int vec_len, int init_offset, int distance)
CDECL void FEM_Update_field (int fid, void *nodes)
CDECL void FEM_Reduce_field (int fid, const void *nodes, void *outbuf, int op)
CDECL void FEM_Reduce (int fid, const void *inbuf, void *outbuf, int op)
CDECL void FEM_Read_field (int fid, void *nodes, const char *fname)
CDECL int FEM_My_partition (void)
 Utility functions.
CDECL int FEM_Num_partitions (void)
CDECL double FEM_Timer (void)
CDECL void FEM_Print (const char *str)
static void do_print_partition (int fem_mesh, int idxBase)
CDECL void FEM_Mesh_print (int fem_mesh)
CDECL void FEM_Print_partition (void)
CDECL int FEM_Get_comm_partners (void)
CDECL int FEM_Get_comm_partner (int partnerNo)
CDECL int FEM_Get_comm_count (int partnerNo)
CDECL void FEM_Get_comm_nodes (int partnerNo, int *nodeNos)
FDECL int FTN_NAME (FEM_REGISTER, fem_register)
FDECL void FTN_NAME (FEM_MIGRATE, fem_migrate)
FDECL void FTN_NAME (FEM_ASYNC_MIGRATE, fem_async_migrate)
FDECL int FTN_NAME (FEM_CREATE_SIMPLE_FIELD, fem_create_simple_field)
FDECL int FTN_NAME (FEM_CREATE_FIELD, fem_create_field)
FDECL void FTN_NAME (FEM_UPDATE_FIELD, fem_update_field)
FDECL void FTN_NAME (FEM_REDUCE_FIELD, fem_reduce_field)
FDECL void FTN_NAME (FEM_REDUCE, fem_reduce)
FDECL void FTN_NAME (FEM_READ_FIELD, fem_read_field)
FDECL int FTN_NAME (FEM_MY_PARTITION, fem_my_partition)
FDECL int FTN_NAME (FEM_NUM_PARTITIONS, fem_num_partitions)
FDECL double FTN_NAME (FEM_TIMER, fem_timer)
FDECL int FTN_NAME (FOFFSETOF, foffsetof)
FDECL void FTN_NAME (FEM_PRINT, fem_print)
FDECL void FTN_NAME (FEM_MESH_PRINT, fem_mesh_print)
FDECL void FTN_NAME (FEM_PRINT_PARTITION, fem_print_partition)
FDECL void FTN_NAME (FEM_DONE, fem_done)
FDECL int FTN_NAME (FEM_GET_COMM_PARTNERS, fem_get_comm_partners)
FDECL int FTN_NAME (FEM_GET_COMM_PARTNER, fem_get_comm_partner)
FDECL int FTN_NAME (FEM_GET_COMM_COUNT, fem_get_comm_count)
FDECL void FTN_NAME (FEM_GET_COMM_NODES, fem_get_comm_nodes)
CDECL void FEM_Add_ghost_stencil_type (int elType, int nElts, int addNodes, const int *ends, const int *adj2)
FDECL void FTN_NAME (FEM_ADD_GHOST_STENCIL_TYPE, fem_add_ghost_stencil_type)
int globalElem2elType (const FEM_Mesh *m, int globalElem)
CDECL void FEM_Add_ghost_stencil (int nElts, int addNodes, const int *ends, const int *adj)
FDECL void FTN_NAME (FEM_ADD_GHOST_STENCIL, fem_add_ghost_stencil)
CDECL void FEM_Add_ghost_layer (int nodesPerTuple, int doAddNodes)
FDECL void FTN_NAME (FEM_ADD_GHOST_LAYER, fem_add_ghost_layer)
static void add_ghost_elem (int elType, int tuplesPerElem, const int *elem2tuple, int idxBase)
CDECL void FEM_Add_ghost_elem (int elType, int tuplesPerElem, const int *elem2tuple)
FDECL void FTN_NAME (FEM_ADD_GHOST_ELEM, fem_add_ghost_elem)
CDECL void FEM_Update_ghost_field (int fid, int elType, void *v_data)
FDECL void FTN_NAME (FEM_UPDATE_GHOST_FIELD, fem_update_ghost_field)
CDECL void FEM_Exchange_ghost_lists (int elemType, int nIdx, const int *localIdx)
FDECL void FTN_NAME (FEM_EXCHANGE_GHOST_LISTS, fem_exchange_ghost_lists)
CDECL int FEM_Get_ghost_list_length (void)
FDECL int FTN_NAME (FEM_GET_GHOST_LIST_LENGTH, fem_get_ghost_list_length)
CDECL void FEM_Get_ghost_list (int *dest)
FDECL void FTN_NAME (FEM_GET_GHOST_LIST, fem_get_ghost_list)
static void getRoccomPconn (IDXL_Side_t is, int bias, CkVec< int > &pconn, const int *paneFmChunk)
 Extract an IDXL_Side_t into Roccom format.
static CkVec< intgetRoccomPconn (int fem_mesh, int *ghost_len, const int *paneFmChunk)
 Extract all FEM communication information into Roccom format.
CDECL void FEM_Get_roccom_pconn_size (int fem_mesh, int *total_len, int *ghost_len)
 FORTRAN_AS_C (FEM_GET_ROCCOM_PCONN_SIZE, FEM_Get_roccom_pconn_size, fem_get_roccom_pconn_size,(int *mesh, int *tl, int *gl),(*mesh, tl, gl)) CDECL void FEM_Get_roccom_pconn(int fem_mesh
int commState (int entityNo, const IDXL_Side &s)
CDECL void FEM_Make_node_globalno (int fem_mesh, FEM_Comm_t comm_context)
 Based on shared node communication list, compute FEM_NODE FEM_GLOBALNO and FEM_NODE_PRIMARY.
 FORTRAN_AS_C (FEM_MAKE_NODE_GLOBALNO, FEM_Make_node_globalno, fem_make_node_globalno,(int *mesh, int *comm),(*mesh,*comm)) class localToGlobal
CDECL void FEM_Add_elem2face_tuples (int fem_mesh, int elem_type, int nodesPerTuple, int tuplesPerElem, const int *elem2tuple)
 Register a set of tuples for a single element type Must be called once for each element type.
void _registerParFUM (void)
void FEM_Mesh_deallocate (int fem_mesh)
 copy existing mesh
int FEM_Mesh_read (const char *prefix, int partNo, int nParts)
 delete this mesh
void FEM_Mesh_write (int fem_mesh, const char *prefix, int partNo, int nParts)
int FEM_Mesh_assemble (int nParts, const int *srcMeshes)
int FEM_Mesh_recv (int fromRank, int tag, FEM_Comm_t comm_context)
void FEM_Mesh_send (int fem_mesh, int toRank, int tag, FEM_Comm_t comm_context)
int FEM_Mesh_reduce (int fem_mesh, int toRank, FEM_Comm_t comm_context)
void FEM_Mesh_copy_globalno (int src_mesh, int dest_mesh)
void FEM_Mesh_set_conn (int fem_mesh, int entity, const int *conn, int firstItem, int length, int width)
void FEM_Mesh_get_conn (int fem_mesh, int entity, int *conn, int firstItem, int length, int width)
void FEM_Mesh_set_data (int fem_mesh, int entity, int attr, const void *data, int firstItem, int length, int datatype, int width)
void FEM_Mesh_get_data (int fem_mesh, int entity, int attr, void *data, int firstItem, int length, int datatype, int width)
void FEM_Mesh_conn (int fem_mesh, int entity, int *conn, int firstItem, int length, int width)
int FEM_Mesh_get_length (int fem_mesh, int entity)
void FEM_Mesh_data (int fem_mesh, int entity, int attr, void *data, int firstItem, int length, int datatype, int width)
void FEM_Mesh_data_layout (int fem_mesh, int entity, int attr, void *data, int firstItem, int length, IDXL_Layout_t layout)
void FEM_Mesh_data_offset (int fem_mesh, int entity, int attr, void *data, int firstItem, int length, int type, int width, int offsetBytes, int distanceBytes, int skewBytes)
void FEM_Register_array (int fem_mesh, int entity, int attr, void *data, int datatype, int width)
void FEM_Register_array_layout (int fem_mesh, int entity, int attr, void *data, IDXL_Layout_t layout)
void FEM_Register_entity (int fem_mesh, int entity, void *data, int len, int max, FEM_Mesh_alloc_fn fn)
void FEM_Mesh_set_length (int fem_mesh, int entity, int newLength)
int FEM_Mesh_get_width (int fem_mesh, int entity, int attr)
void FEM_Mesh_set_width (int fem_mesh, int entity, int attr, int newWidth)
int FEM_Mesh_get_datatype (int fem_mesh, int entity, int attr)
int FEM_Mesh_get_entities (int fem_mesh, int *entities)
int FEM_Mesh_get_attributes (int fem_mesh, int entity, int *attributes)
const char * FEM_Get_entity_name (int entity, char *storage)
 Return the human-readable version of this entity code, like "FEM_NODE".
const char * FEM_Get_attr_name (int attr, char *storage)
 Return the human-readable version of this attribute code, like "FEM_CONN".
const char * FEM_Get_datatype_name (int datatype, char *storage)
int FEM_Mesh_is_get (int fem_mesh)
int FEM_Mesh_is_set (int fem_mesh)
void FEM_Mesh_become_get (int fem_mesh)
void FEM_Mesh_become_set (int fem_mesh)
void FEM_Mesh_pup (int fem_mesh, int dataTag, FEM_Userdata_fn fn, void *data)
void FEM_Add_linear_periodicity (int nFaces, int nPer, const int *facesA, const int *facesB, int nNodes, const double *nodeLocs)
void FEM_Sym_coordinates (int who, double *d_locs)
void FEM_Set_sym_nodes (const int *canon, const int *sym)
void FEM_Get_sym (int who, int *destSym)
IDXL_t FEM_Comm_shared (int fem_mesh, int entity)
IDXL_t FEM_Comm_ghost (int fem_mesh, int entity)
void FEM_Get_roccom_pconn (int fem_mesh, const int *paneFmChunk, int *pconn)
void FEM_Set_roccom_pconn (int fem_mesh, const int *paneFmChunk, const int *src, int total_len, int ghost_len)
void init (void)
void driver (void)
void FEM_Mesh_create_node_elem_adjacency (int fem_mesh)
void FEM_Mesh_create_node_node_adjacency (int fem_mesh)
void FEM_Mesh_create_elem_elem_adjacency (int fem_mesh)
void FEM_Mesh_allocate_valid_attr (int fem_mesh, int entity_type)
void FEM_set_entity_valid (int mesh, int entityType, int entityIdx)
void FEM_set_entity_invalid (int mesh, int entityType, int entityIdx)
int FEM_is_valid (int mesh, int entityType, int entityIdx)
int FEM_count_valid (int mesh, int entityType)
void FEM_Mesh_detect_features (int fem_mesh)
void FEM_set_entity_coord2 (int mesh, int entityType, int entityIdx, double x, double y)
void FEM_set_entity_coord3 (int mesh, int entityType, int entityIdx, double x, double y, double z)
void FEM_Mesh_Become_Setting (int mesh)
void FEM_Mesh_Become_Getting (int mesh)
int FEM_Mesh_default_read (void)
int FEM_Mesh_default_write (void)
void FEM_Mesh_set_default_read (int fem_mesh)
void