PPL Logo

ParFUM Unstructured Mesh Framework

Collaboration diagram for ParFUM Unstructured Mesh Framework:
Charm++ ParFUM Framework: C++ interface file. More...


Namespaces

namespace  std
 STL namespace.

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_Entity
 Describes an entire class of "entities"--nodes, elements, or sparse data records. More...
class  FEM_Node
 FEM_Node is a type of FEM_Entity, which refers to nodes. 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
 A FEM_Mesh is a collection of entities. More...
class  l2g_t
 This class describes a local-to-global index mapping, used in FEM_Print. 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
 A collection of meshes on one processor. 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  NodeElem
class  MeshElem
 This class is an MSA Entity. More...
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  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 MSA::MSA2D< int,
DefaultEntry< int >
, MSA_DEFAULT_ENTRIES_PER_PAGE,
MSA_ROW_MAJOR > 
MSA2DRM
typedef MSA::MSA1D< int,
DefaultEntry< int >
, MSA_DEFAULT_ENTRIES_PER_PAGE > 
MSA1DINT
typedef UniqElemList< intIntList
typedef MSA::MSA1D< IntList,
DefaultListEntry< IntList,
true >
, MSA_DEFAULT_ENTRIES_PER_PAGE > 
MSA1DINTLIST
typedef UniqElemList< NodeElemNodeList
typedef MSA::MSA1D< NodeList,
DefaultListEntry< NodeList,
true >
, MSA_DEFAULT_ENTRIES_PER_PAGE > 
MSA1DNODELIST
typedef MSA::MSA1D< MeshElem,
DefaultEntry< MeshElem, true >, 1 > 
MSA1DFEMMESH
typedef double Real

Enumerations

enum  { FEM_globalID = 33 }
enum  PartitionMode { SerialPartitionMode = 1, ParallelPartitionMode = 2, ManualPartitionMode }
enum  MetisGraphType { NodeNeighborMode, FaceNeighborMode }
enum  { FEM_globalID = 33 }

Functions

CLINKAGE void fem_impl_call_init (void)
FLINKAGE 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.
CLINKAGE void FEM_Print_n2n (int mesh, int nodeid)
CLINKAGE void FEM_Print_n2e (int mesh, int eid)
CLINKAGE void FEM_Print_e2n (int mesh, int eid)
CLINKAGE void FEM_Print_e2e (int mesh, int eid)
CLINKAGE void FEM_Print_Mesh_Summary (int mesh)
 Prints the mesh summary, i.e.
CLINKAGE int FEM_add_node (int mesh, int *adjacent_nodes, int num_adjacent_nodes, int *chunks, int numChunks, int forceShared)
CLINKAGE void FEM_remove_node (int mesh, int node)
CLINKAGE int FEM_add_element (int mesh, int *conn, int conn_size, int elem_type, int chunkNo)
CLINKAGE int FEM_remove_element (int mesh, int element, int elem_type, int permanent)
CLINKAGE 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)
 Add a node to this mesh 'm', could be ghost/local decided by 'addGhost' basically, this function finds an empty row in the nodelist and clears its adjacencies then, it creates a lock for this node, if this node is new (i.e.
int FEM_add_node (FEM_Mesh *m, int *adjacentNodes, int numAdjacentNodes, int *chunks, int numChunks, int forceShared)
 'adjacentNodes' specifies the set of nodes between which this new node is to be added.
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)
 This function invalidates a node entry and if there are any entries in the IDXL lists (ghost/local) then, these entries are cleared both on the local as well as the remote chunk and then the node is invalidated and any lock it might be holding is reset The pre-condition which is asserted here that the node should not have any adjacency entries, n2e or n2n.
void FEM_remove_node (FEM_Mesh *m, int node)
 remove a local or shared node, but NOT a ghost node Should probably be able to handle ghosts someday, but here we interpret it as deleting the entry in the ghost list.
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)
 A helper function that adds the local element, and updates adjacencies.
int FEM_add_element (FEM_Mesh *m, int *conn, int connSize, int elemType, int chunkNo)
 This addds an element with the given 'conn' connecitivity and 'connSize' number of nodes in e2n to the mesh 'm'.
void FEM_remove_element_local (FEM_Mesh *m, int element, int etype)
 Remove a local element from any of the adjacency tables that use it, namely the n2e, e2e and e2n tables of the neighbors.
int FEM_remove_element (FEM_Mesh *m, int elementid, int elemtype, int permanent, bool aggressive_node_removal)
 Can be called on local or ghost elements removes the connectivity of the element on this chunk as well as all chunks on which it is a ghost 'permanent' is -1 if the element is to be deleted, e.g.
int FEM_purge_element (FEM_Mesh *m, int elementid, int elemtype)
 Purge an element works for both local and ghost elements.
CLINKAGE int FEM_Modify_Lock (int mesh, int *affectedNodes, int numAffectedNodes, int *affectedElts, int numAffectedElts, int elemtype)
CLINKAGE int FEM_Modify_Unlock (int mesh)
CLINKAGE int FEM_Modify_LockN (int mesh, int nodeId, int readLock)
CLINKAGE 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)
 coarse lock (lock chunks) find out which all chunks these nodes belong to and lock them all
int FEM_Modify_Unlock (FEM_Mesh *m)
 Unlock all chunks that was being held by a lock originating from here.
int FEM_Modify_LockN (FEM_Mesh *m, int nodeId, int readlock)
 Lock a node get a 'read/write lock on 'nodeId' we find the chunk with the smallest id that owns/shares this node and lock this node on this chunk.
int FEM_Modify_UnlockN (FEM_Mesh *m, int nodeId, int readlock)
 Unlock this node find the chunk that holds the lock and unlock it on that chunk the type of the lock is also considered while unlocking a lock.
void FEM_Modify_LockAll (FEM_Mesh *m, int nodeId, bool lockall)
 When a chunk is losing a node, the lock might need to be reassigned lock it on the minchunk other than 'this chunk' should only be called when 'this chunk' is losing the node as local/shared.
void FEM_Modify_LockUpdate (FEM_Mesh *m, int nodeId, bool lockall)
 Deprecated: Update the lock on this node (by locking the newly formed node The locks will be cleared later must be a local node, lock it & then unlock it if needed.
void FEM_Modify_correctLockN (FEM_Mesh *m, int nodeId)
 Deprecated: For the newly acquired node, correct the lock by removing superfluous locks Should always be called on the new node to correct the locks should make sure that it is called before unlocking, i.e.
void FEM_Mesh_dataP (FEM_Mesh *fem_mesh, int entity, int attr, void *data, int firstItem, int length, int datatype, int width)
 wrapper function that takes a 'mesh pointer' instead of meshId, and gets/sets the data corresponding to the this 'attr' of this 'entity' 'firstItem' is the starting point in the list, 'length' is the number of entries 'datatype' is the type of data while 'width' is the size of each data entry
void FEM_Mesh_data_layoutP (FEM_Mesh *fem_mesh, int entity, int attr, void *data, int firstItem, int length, IDXL_Layout_t layout)
 similar to the above function, but takes a 'layout' instead of datatype and width
void FEM_Mesh_data_layoutP (FEM_Mesh *m, int entity, int attr, void *data, int firstItem, int length, const IDXL_Layout &layout)
 The helper function that both the above functions call does the actual setting/getting of the data in/from the mesh.
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 This would be only done for attributes of a node, currently for coords & boundary.
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)
struct partconndataFEM_call_parmetis (int nelem, MSA1DINT::Read &rPtr, MSA1DINT::Read &rInd, FEM_Comm_t comm_context)
void FEM_write_nodepart (MSA1DINTLIST::Accum &nodepart, struct partconndata *data, MPI_Comm comm_context)
void FEM_write_part2node (MSA1DINTLIST::Read &nodepart, MSA1DNODELIST::Accum &part2node, struct partconndata *data, MPI_Comm comm_context)
void FEM_write_part2elem (MSA1DINTLIST::Accum &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::Accum &part2mesh, struct partconndata *partdata, struct conndata *data, MSA1DINTLIST::Read &nodepart, int numChunks, int myChunk, FEM_Mesh *m)
void sortNodeList (NodeList &lnodes)
void addIDXLists (FEM_Mesh *m, NodeList &lnodes, int myChunk)
struct 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)
CLINKAGE void pupFEM_Chunk (pup_er cp)
CLINKAGE 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
CLINKAGE 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.
CLINKAGE 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)) CLINKAGE void FEM_Mesh_deallocate(int fem_mesh)
 FORTRAN_AS_C (FEM_MESH_DEALLOCATE, FEM_Mesh_deallocate, fem_mesh_deallocate,(int *m),(*m)) CLINKAGE int FEM_Mesh_read(const char *prefix
CLINKAGE 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)) CLINKAGE int FEM_Mesh_recv(int fromRank
CLINKAGE 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)) CLINKAGE void FEM_Mesh_copy_globalno(int src_mesh
 n (n_)
 addNodes (addNodes_)
 ends (new int[n])
 adj (new int[2 *userEnds[n-1]])
CLINKAGE void FEM_Add_ghost_stencil_type (int elType, int nElts, int addNodes, const int *ends, const int *adj2)
FLINKAGE void FTN_NAME (FEM_ADD_GHOST_STENCIL_TYPE, fem_add_ghost_stencil_type)
int globalElem2elType (const FEM_Mesh *m, int globalElem)
CLINKAGE void FEM_Add_ghost_stencil (int nElts, int addNodes, const int *ends, const int *adj)
FLINKAGE void FTN_NAME (FEM_ADD_GHOST_STENCIL, fem_add_ghost_stencil)
CLINKAGE void FEM_Add_ghost_layer (int nodesPerTuple, int doAddNodes)
FLINKAGE 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)
CLINKAGE void FEM_Add_ghost_elem (int elType, int tuplesPerElem, const int *elem2tuple)
FLINKAGE void FTN_NAME (FEM_ADD_GHOST_ELEM, fem_add_ghost_elem)
CLINKAGE void FEM_Update_ghost_field (int fid, int elType, void *v_data)
FLINKAGE void FTN_NAME (FEM_UPDATE_GHOST_FIELD, fem_update_ghost_field)
CLINKAGE void FEM_Exchange_ghost_lists (int elemType, int nIdx, const int *localIdx)
FLINKAGE void FTN_NAME (FEM_EXCHANGE_GHOST_LISTS, fem_exchange_ghost_lists)
CLINKAGE int FEM_Get_ghost_list_length (void)
FLINKAGE int FTN_NAME (FEM_GET_GHOST_LIST_LENGTH, fem_get_ghost_list_length)
CLINKAGE void FEM_Get_ghost_list (int *dest)
FLINKAGE 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.
CLINKAGE 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)) CLINKAGE void FEM_Get_roccom_pconn(int fem_mesh
int commState (int entityNo, const IDXL_Side &s)
CLINKAGE 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
CLINKAGE 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_Done (void)
int FEM_My_partition (void)
 Utility functions.
int FEM_Num_partitions (void)
double FEM_Timer (void)
void FEM_Print (const char *str)
void FEM_Print_partition (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_print (int fem_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_Layout_t FEM_Create_simple_field (int base_type, int vec_len)
IDXL_Layout_t FEM_Create_field (int base_type, int vec_len, int init_offset, int distance)
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)
int FEM_Register (void *userData, FEM_PupFn _pup_ud)
void FEM_Migrate (void)
void * FEM_Get_userdata (int n)
void FEM_Barrier (void)
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)
int FEM_is_node_shared (int mesh, int idx)
int FEM_find_node_owner (int mesh, int idx)
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 FEM_Mesh_set_default_write (int fem_mesh)
void FEM_Update_field (int fid, void *nodes)
void FEM_Reduce_field (int fid, const void *nodes, void *outbuf, int op)
void FEM_Reduce (int fid, const void *inbuf, void *outbuf, int op)
void FEM_Read_field (int fid, void *nodes, const char *fname)
void FEM_Set_node (int nNodes, int doublePerNode)
void FEM_Set_node_data (const double *data)
void FEM_Set_elem (int elType, int nElem, int doublePerElem, int nodePerElem)
void FEM_Set_elem_data (int elType, const double *data)
void FEM_Set_elem_conn (int elType, const int *conn)
void FEM_Set_sparse (int uniqueIdentifier, int nRecords, const int *nodes, int nodesPerRec, const void *data, int dataPerRec, int dataType)
void FEM_Set_sparse_elem (int uniqueIdentifier, const int *rec2elem)
void FEM_Get_node (int *nNodes, int *doublePerNode)
void FEM_Get_node_data (double *data)
void FEM_Get_elem (int elType, int *nElem, int *doublePerElem, int *nodePerElem)
void FEM_Get_elem_data (int elType, double *data)
void FEM_Get_elem_conn (int elType, int *conn)
int FEM_Get_sparse_length (int uniqueIdentifier)
void FEM_Get_sparse (int uniqueIdentifier, int *nodes, void *data)
void FEM_Set_mesh (int nelem, int nnodes, int nodePerElem, int *conn)
int FEM_Get_node_ghost (void)
int FEM_Get_elem_ghost (int elemType)
void FEM_Update_mesh (FEM_Update_mesh_fn callFn, int userValue, int doWhat)
void FEM_Set_partition (int *elem2chunk)
void FEM_REF_INIT (int mesh)
void FEM_Serial_split (int nchunks)
void FEM_Serial_begin (int chunkNo)
void FEM_Serial_read (int chunkNo, int nChunks)
void FEM_Serial_assemble (void)
int FEM_Get_comm_partners (void)
int FEM_Get_comm_partner (int partnerNo)
int FEM_Get_comm_count (int partnerNo)
void FEM_Get_comm_nodes (int partnerNo, int *nodeNos)
ParFUM_collider ParFUM_Collide_Init (int dimension)
 ParFUM_Collide_init() will initialize the collision library.
int ParFUM_Collide (ParFUM_collider *c, double box_padding=0.0)
 ParFUM_Collide() will create bounding boxes for each element in the local mesh chunk.
void ParFUM_Collide_GetCollisions (ParFUM_collider *c, void *results)
 ParFUM_Collide_GetCollisions() is used to get the data for any remote elements which It should be called after Collide even if ParFUM_Collide returned 0.
void ParFUM_Collide_Destroy (ParFUM_collider *c)
void FEM_ADAPT_Init (int meshID)
 User functions for adaptivity.
FLINKAGE void FTN_NAME (FEM_ADAPT_INIT, fem_adapt_init)(int *meshID)
void FEM_ADAPT_Refine (int meshID, int qm, int method, double factor, double *sizes)
FLINKAGE void FTN_NAME (FEM_ADAPT_REFINE, fem_adapt_refine)(int *meshID
void FEM_ADAPT_Coarsen (int meshID, int qm, int method, double factor, double *sizes)
FLINKAGE void FTN_NAME (FEM_ADAPT_COARSEN, fem_adapt_coarsen)(int *meshID
void FEM_ADAPT_AdaptMesh (int meshID, int qm, int method, double factor, double *sizes)
FLINKAGE void FTN_NAME (FEM_ADAPT_ADAPTMESH, fem_adapt_adaptmesh)(int *meshID
void FEM_ADAPT_SetElementSizeField (int meshID, int elem, double size)
FLINKAGE void FTN_NAME (FEM_ADAPT_SETELEMENTSIZEFIELD, fem_adapt_setelementsizefield)(int *meshID
void FEM_ADAPT_SetElementsSizeField (int meshID, double *sizes)
FLINKAGE void FTN_NAME (FEM_ADAPT_SETELEMENTSSIZEFIELD, fem_adapt_setelementssizefield)(int *meshID
void FEM_ADAPT_SetReferenceMesh (int meshID)
FLINKAGE void FTN_NAME (FEM_ADAPT_SETREFERENCEMESH, fem_adapt_setreferencemesh)(int *meshID)
void FEM_ADAPT_GradateMesh (int meshID, double smoothness)
FLINKAGE void FTN_NAME (FEM_ADAPT_GRADATEMESH, fem_adapt_gradatemesh)(int *meshID
void FEM_ADAPT_TestMesh (int meshID)
FLINKAGE void FTN_NAME (FEM_ADAPT_TESTMESH, fem_adapt_testmesh)(int *meshID)
int FEM_ADAPT_SimpleRefineMesh (int meshID, double targetA, double xmin=0.0, double ymin=0.0, double xmax=1.0, double ymax=1.0)
FLINKAGE void FTN_NAME (FEM_ADAPT_SIMPLEREFINEMESH, fem_adapt_simplerefinemesh)(int *meshID
int FEM_ADAPT_SimpleCoarsenMesh (int meshID, double targetA, double xmin=0.0, double ymin=0.0, double xmax=1.0, double ymax=1.0)
FLINKAGE void FTN_NAME (FEM_ADAPT_SIMPLECOARSENMESH, fem_adapt_simplecoarsenmesh)(int *meshID
void ParFUM_SA_Init (int meshId)
 User functions for parfum initialization.
FLINKAGE void FTN_NAME (PARFUM_SA_INIT, parfum_sa_init)(int *meshId)
 CtvExtern (FEM_Adapt_Algs *, _adaptAlgs)
 PUPmarshall (FEM_Attribute) class FEM_DataAttribute
 A single table of user data associated with an entity.
 PUPmarshall (FEM_DataAttribute) class FEM_IndexAttribute
 The FEM_Attribute is of type integer indices.
 PUPmarshall (FEM_IndexAttribute) class FEM_VarIndexAttribute
 The FEM_Attribute is a variable set of integer indices.
 PUPmarshall (FEM_Entity) inline int FEM_Attribute
 PUPmarshall (FEM_Node) class FEM_Elem
 FEM_Elem is a type of FEM_Entity, which refers to elems.
 PUPmarshall (FEM_Elem) class FEM_Sparse
 FEM_Sparse is a type of FEM_Entity, which refers to edges.
 PUPmarshall (FEM_Sparse) class FEM_Userdata_pupfn
 Describes a user function to pup a piece of mesh data.
void FEM_Index_Check (const char *caller, const char *entityType, int type, int maxType)
void FEM_Is_NULL (const char *caller, const char *entityType, int type)
int zeroToMinusOne (int i)
 Map fortran element (>=1) or node (0) marker to C version (>=1, -1).
 PUPmarshall (FEM_Mesh) FEM_Mesh *FEM_Mesh_lookup(int fem_mesh
FEM_EntityFEM_Entity_lookup (int fem_mesh, int entity, const char *caller)
FEM_AttributeFEM_Attribute_lookup (int fem_mesh, int entity, int attr, const char *caller)
void FEM_Mesh_data_layout (int fem_mesh, int entity, int attr, void *data, int firstItem, int length, const IDXL_Layout &layout)
void FEM_Register_array_layout (int fem_mesh, int entity, int attr, void *data, int firstItem, const IDXL_Layout &layout)
void FEM_Register_entity_impl (int fem_mesh, int entity, void *args, int len, int max, FEM_Mesh_alloc_fn fn)
FILE * FEM_openMeshFile (const char *prefix, int chunkNo, int nchunks, bool forRead)
FEM_MeshFEM_readMesh (const char *prefix, int chunkNo, int nChunks)
void FEM_writeMesh (FEM_Mesh *m, const char *prefix, int chunkNo, int nChunks)
FEM_PartitionFEM_curPartition (void)
void FEM_Mesh_partition (const FEM_Mesh *mesh, int nchunks, int *elem2chunk, bool faceGraph=false)
intCkCopyArray (const int *src, int len, int indexBase)
void mesh2graph (const FEM_Mesh *m, Graph *g)
void mesh2graph_face (const FEM_Mesh *m, Graph *g)
 Given an FEM_Mesh, determine all pairs of elements which share a common face, and add them as edges to the provided graph.
void FEM_Ghost_Stencil::check (const FEM_Mesh &mesh) const
 Make sure this stencil makes sense for this mesh.
 splitter::splitter (FEM_Mesh *mesh_, const int *elem2chunk_, int nChunks_)
 splitter::~splitter ()
void splitter::buildCommLists (void)
void splitter::aboutToCreate (void)
FEM_Meshsplitter::createMesh (int c)
void splitter::copySparseChunks (const FEM_Sparse &src, int s, bool forGhost)
 Copy the global sparse record src[s] into all the chunks it belongs in.
void splitter::separateSparse (bool forGhost)
void splitter::addGhosts (const FEM_Partition &partition)
void splitter::addStencil (const FEM_Ghost_Stencil &s, const FEM_Partition &partition)
 Add a ghost stencil: an explicit list of needed ghosts.
void splitter::addGlobalGhost (int srcType, int srcNum, int destType, int destNum, bool addNodes)
 Add the real element (srcType,srcNum) as a ghost for use by (destType,destNum).
void splitter::addLayer (const FEM_Ghost_Layer &g, const FEM_Partition &partition)
 Add an entire layer of ghost elements.
bool splitter::addTuple (int *dest, FEM_Symmetries_t *destSym, const int *elem2tuple, int nodesPerTuple, const int *conn) const
 Return an elemList entry if this tuple should be a ghost:.
void splitter::addSymmetryGhost (const elemList &a)
 Add this ghost, which arrises because of a mirror symmetry condition.
void splitter::addGhostPair (const elemList &src, const elemList &dest, bool addNodes)
 Check if src should be added as a ghost on dest's chunk.
int splitter::addGhostElement (int t, int gNo, int srcChunk, int destChunk, FEM_Symmetries_t sym)
 Add this global element as a ghost between src and dest, or return -1.
int splitter::addGhostNode (int gnNo, int srcChunk, int destChunk, FEM_Symmetries_t sym)
 Add this global node as a ghost between src and dest, or return -1.
int splitter::addGhostInner (const FEM_Entity &gEnt, int gNo, chunkList &gDest, int srcChunk, FEM_Entity &srcEnt, int destChunk, FEM_Entity &destEnt, FEM_Symmetries_t sym, int isNode, int t)
 Utility used by addGhostNode and addGhostElement.
void splitter::consistencyCheck (void)
 femMeshModify::femMeshModify (femMeshModMsg *fm)
 femMeshModify::femMeshModify (CkMigrateMessage *m)
 femMeshModify::~femMeshModify ()
void femMeshModify::pup (PUP::er &p)
 Pup to transfer this object's data.
void femMeshModify::ckJustMigrated (void)
 This function is overloaded, it is called on this object just after migration.
void femMeshModify::setPointersAfterMigrate (FEM_Mesh *m)
 Set the mesh pointer after the migration.
void femMeshModify::setFemMesh (FEMMeshMsg *fm)
 Part of the initialization phase, create all the new objects Populate all data structures, include all locks It also computes all the fixed nodes and populates a data structure with it.
intMsgfemMeshModify::lockRemoteChunk (int2Msg *i2msg)
intMsgfemMeshModify::unlockRemoteChunk (int2Msg *i2msg)
intMsgfemMeshModify::lockRemoteNode (int sharedIdx, int fromChk, int isGhost, int readLock)
intMsgfemMeshModify::unlockRemoteNode (int sharedIdx, int fromChk, int isGhost, int readLock)
chunkListMsgfemMeshModify::getChunksSharingGhostNode (int2Msg *)
intMsgfemMeshModify::addNodeRemote (addNodeMsg *fm)
void femMeshModify::addSharedNodeRemote (sharedNodeMsg *fm)
void femMeshModify::removeSharedNodeRemote (removeSharedNodeMsg *fm)
void femMeshModify::removeGhostNode (int fromChk, int sharedIdx)
void femMeshModify::addGhostElem (addGhostElemMsg *fm)
void femMeshModify::addElementRemote (addElemMsg *fm)
void femMeshModify::removeGhostElem (removeGhostElemMsg *fm)
void femMeshModify::removeElementRemote (removeElemMsg *fm)
intMsgfemMeshModify::eatIntoElement (int fromChk, int sharedIdx)
intMsgfemMeshModify::getLockOwner (int fromChk, int sharedIdx)
boolMsgfemMeshModify::knowsAbtNode (int fromChk, int toChk, int sharedIdx)
void femMeshModify::refine_flip_element_leb (int fromChk, int propElemT, int propNodeT, int newNodeT, int nbrOpNodeT, int nbrghost, double longEdgeLen)
void femMeshModify::addToSharedList (int fromChk, int sharedIdx)
void femMeshModify::updateAttrs (updateAttrsMsg *umsg)
 update the attributes of the node with this data
void femMeshModify::updateghostsend (verifyghostsendMsg *vmsg)
findgsMsgfemMeshModify::findghostsend (int fromChk, int sharedIdx)
intMsgfemMeshModify::getIdxGhostSend (int fromChk, int idxshared, int toChk)
double2MsgfemMeshModify::getRemoteCoord (int fromChk, int ghostIdx)
intMsgfemMeshModify::getRemoteBound (int fromChk, int ghostIdx)
void femMeshModify::updateIdxlList (int fromChk, int idxTrans, int transChk)
void femMeshModify::removeIDXLRemote (int fromChk, int sharedIdx, int type)
void femMeshModify::addTransIDXLRemote (int fromChk, int sharedIdx, int type)
void femMeshModify::verifyIdxlList (int fromChk, int size, int type)
void femMeshModify::idxllockRemote (int fromChk, int type)
void femMeshModify::idxlunlockRemote (int fromChk, int type)
intMsgfemMeshModify::hasLockRemoteNode (int sharedIdx, int fromChk, int isGhost)
void femMeshModify::modifyLockAll (int fromChk, int sharedIdx)
boolMsgfemMeshModify::verifyLock (int fromChk, int sharedIdx, int isGhost)
void femMeshModify::verifyghostsend (verifyghostsendMsg *vmsg)
boolMsgfemMeshModify::shouldLoseGhost (int fromChk, int sharedIdx, int toChk)
void femMeshModify::addghostsendl (int fromChk, int sharedIdx, int toChk, int transIdx)
 The node index is the sharedIdx with 'fromChk' This local node index is then to be send as a ghost to 'toChk'.
void femMeshModify::addghostsendl1 (int fromChk, int transChk, int transIdx)
 The node index is obtained as a the ghost received from 'transChk' at 'transIdx'.
void femMeshModify::addghostsendr (int fromChk, int sharedIdx, int toChk, int transIdx)
 The node is the obtained on the ghost recv list from 'fromChk' at 'sharedIdx' index.
void femMeshModify::addghostsendr1 (int fromChk, int transChk, int transIdx)
 The local node index is obtained on the shared list of 'transChk' at 'transIdx'.
boolMsgfemMeshModify::willItLose (int fromChk, int sharedIdx)
void femMeshModify::interpolateElemCopy (int fromChk, int sharedIdx1, int sharedIdx2)
 The two local elements indices are obtained from the ghost send list to 'fromChk' Data is copied from the first element to the second.
void femMeshModify::cleanupIDXL (int fromChk, int sharedIdx)
void femMeshModify::purgeElement (int fromChk, int sharedIdx)
entDataMsgfemMeshModify::packEntData (int fromChk, int sharedIdx, bool isnode=false, int elemType=0)
 Pack the data from this element/node and return it.
boolMsgfemMeshModify::isFixedNodeRemote (int fromChk, int sharedIdx)
 Is this node a fixed node on this chunk.
void femMeshModify::finish (void)
void femMeshModify::finish1 (void)
static FEM_chunkFEM_chunk::get (const char *caller)
 Return this thread's single static FEM_chunk instance:.
void FEM_chunk::exchangeGhostLists (int elemType, int inLen, const int *inList, int idxbase)
void FEM_Entity::print (const char *type, const IDXL_Print_Map &map)
void FEM_Node::print (const char *type, const IDXL_Print_Map &map)
void FEM_Mesh::print (int idxBase)
void FEM_chunk::print (int fem_mesh, int idxBase)
int FEM_Attribute::getRealLength (void) const
int FEM_Attribute::getMax ()
static int NList::cmp (const void *v1, const void *v2)
void NList::add (int elt)
int NList::found (int elt)
 Nodes::Nodes (int _nnodes)
void Nodes::add (int node, int elem)
 Graph::Graph (int elems)
void Graph::add (int elem1, int elem2)
void Graph::toAdjList (int *&adjStart, int *&adjList)

Variables

CProxy_femMeshModify meshMod
 File: fem_mesh_modify.C Authors: Nilesh Choudhury, Isaac Dooley.
double elemlistaccTime = 0
 This file contains code for parallely partitioning the initial mesh into multiple chunks It uses PARMETIS to do the actual partitioning.
double listSearchTime = 0
double sharedSearchTime = 0
int femVersion = 1
static FEM_Partitionmypartition = NULL
PartitionMode FEM_Partition_Mode = SerialPartitionMode
MetisGraphType FEM_Partition_Graph_Type = NodeNeighborMode
int partNo
int tag
const intpaneFmChunk
FLINKAGE void intqm
FLINKAGE void int intmethod
FLINKAGE void int int double * factor
FLINKAGE void int int double
double * 
sizes
FLINKAGE void intelem
FLINKAGE void int double * size
FLINKAGE void double * smoothness
FLINKAGE void double * targetA
FLINKAGE void double double * xmin
FLINKAGE void double double
double * 
ymin
FLINKAGE void double double
double double * 
xmax
FLINKAGE void double double
double double double * 
ymax
CProxy_femMeshModify meshMod
 File: fem_mesh_modify.C Authors: Nilesh Choudhury, Isaac Dooley.
const char * caller
static FEM_Symmetries_t noSymmetries = (FEM_Symmetries_t)0
FLINKAGE void intqm
FLINKAGE void int intmethod
FLINKAGE void int int double * factor
FLINKAGE void int int double
double * 
sizes

Detailed Description

Charm++ ParFUM Framework: C++ interface file.


Typedef Documentation

typedef void(* FEM_Update_mesh_fn)(int userTag)

Definition at line 73 of file ParFUM.h.

typedef void(* FEM_Update_mesh_fortran_fn)(int *userTag)

Definition at line 74 of file ParFUM.h.

typedef void(* FEM_PupFn)(pup_er, void *)

Definition at line 76 of file ParFUM.h.

typedef void(* FEM_Mesh_alloc_fn)(void *param, int *size, int *maxSize)

Definition at line 78 of file ParFUM.h.

typedef int FEM_Comm_t

This should be MPI_Comm, but I want it for Fortran too.

Definition at line 81 of file ParFUM.h.

typedef void(* FEM_Userdata_fn)(pup_er p, void *data)

Definition at line 209 of file ParFUM.h.

Definition at line 93 of file ParFUM_internals.h.

Definition at line 94 of file ParFUM_internals.h.

typedef IDXL_Rec FEM_Comm_Rec

Definition at line 95 of file ParFUM_internals.h.

typedef unsigned char FEM_Symmetries_t

This datatype is how the framework stores symmetries internally.

Each bit of this type describes a different symmetry. There must be enough bits to accomidate several simulatanious symmetries.

Definition at line 123 of file ParFUM_internals.h.

Definition at line 1622 of file ParFUM_internals.h.

Definition at line 1644 of file ParFUM_internals.h.

typedef MSA::MSA2D<int, DefaultEntry<int>, MSA_DEFAULT_ENTRIES_PER_PAGE, MSA_ROW_MAJOR> MSA2DRM

Definition at line 2240 of file ParFUM_internals.h.

typedef MSA::MSA1D<int, DefaultEntry<int>, MSA_DEFAULT_ENTRIES_PER_PAGE> MSA1DINT

Definition at line 2242 of file ParFUM_internals.h.

Definition at line 2244 of file ParFUM_internals.h.

typedef MSA::MSA1D<IntList, DefaultListEntry<IntList,true>,MSA_DEFAULT_ENTRIES_PER_PAGE> MSA1DINTLIST

Definition at line 2245 of file ParFUM_internals.h.

Definition at line 2247 of file ParFUM_internals.h.

typedef MSA::MSA1D<NodeList, DefaultListEntry<NodeList,true>,MSA_DEFAULT_ENTRIES_PER_PAGE> MSA1DNODELIST

Definition at line 2248 of file ParFUM_internals.h.

Definition at line 2250 of file ParFUM_internals.h.

typedef double Real

Definition at line 2716 of file ParFUM_internals.h.


Enumeration Type Documentation

anonymous enum

Enumerator:
FEM_globalID 

Definition at line 2214 of file mesh_modify.C.

Enumerator:
SerialPartitionMode 
ParallelPartitionMode 
ManualPartitionMode 

Definition at line 21 of file ParFUM.C.

Enumerator:
NodeNeighborMode 
FaceNeighborMode 

Definition at line 28 of file ParFUM.C.

anonymous enum

Enumerator:
FEM_globalID 

Definition at line 54 of file ParFUM.C.


Function Documentation

CLINKAGE void fem_impl_call_init ( void   ) 

Definition at line 13 of file call_init.c.

References init().

Referenced by FTN_NAME().

Here is the call graph for this function:

Here is the caller graph for this function:

FLINKAGE void FTN_NAME ( INIT  ,
init   
)

static void checkEquality ( const char *  what,
int  v1,
const char *  src1,
int  v2,
const char *  src2 
) [static]

Definition at line 35 of file map.C.

static void checkRange ( const char *  what,
int  v,
int  max 
) [static]

Definition at line 45 of file map.C.

static void checkArrayEntries ( const int arr,
int  nArr,
int  max,
const char *  what 
) [static]

Definition at line 54 of file map.C.

References checkRange().

Here is the call graph for this function:

static void check ( const FEM_Mesh mesh  )  [static]

Definition at line 63 of file map.C.

References checkArrayEntries(), FEM_Mesh::elem, FEM_Entity_Types< T >::has(), FEM_Mesh::nElems(), FEM_Mesh::node, PUP::s, FEM_Entity::size(), FEM_Entity_Types< T >::size(), src, and PUP::t.

Here is the call graph for this function:

static void check ( const FEM_Partition partition,
const FEM_Mesh mesh 
) [static]

Definition at line 83 of file map.C.

References checkArrayEntries(), FEM_Partition::getCanon(), FEM_Mesh::node, and FEM_Entity::size().

Here is the call graph for this function:

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 
)

Definition at line 563 of file map.C.

References circleShift(), PUP::d, int, and PUP::l.

Here is the call graph for this function:

int CkHashCompare_ints ( const void *  k1,
const void *  k2,
size_t  keyLen 
)

Definition at line 573 of file map.C.

References int, and PUP::l.

int ck_fem_map_compare_int ( const void *  a,
const void *  b 
)

Definition at line 583 of file map.C.

static void renumberConn ( const FEM_Elem &  src_e,
int  l,
FEM_Elem &  dest_e,
int  g,
const FEM_Mesh mesh 
) [static]

Definition at line 1029 of file map.C.

References FEM_Entity::getGlobalno(), and FEM_Mesh::node.

Here is the call graph for this function:

FEM_Mesh* FEM_Mesh_assemble ( int  nChunks,
FEM_Mesh **  chunks 
)

int is_shared ( FEM_Mesh m,
int  node 
) [inline]

A wrapper to simplify the lookup to determine whether a node is shared.

Definition at line 26 of file mesh_modify.C.

References FEM_Mesh::getfmMM(), femMeshModify::getfmUtil(), and FEM_MUtil::isShared().

Here is the call graph for this function:

CLINKAGE void FEM_Print_n2n ( int  mesh,
int  nodeid 
)

Definition at line 34 of file mesh_modify.C.

References FEM_MUtil::FEM_Print_n2n(), FEM_Mesh::getfmMM(), femMeshModify::getfmUtil(), and PUP::m.

Here is the call graph for this function:

CLINKAGE void FEM_Print_n2e ( int  mesh,
int  eid 
)

Definition at line 38 of file mesh_modify.C.

References FEM_MUtil::FEM_Print_n2e(), FEM_Mesh::getfmMM(), femMeshModify::getfmUtil(), and PUP::m.

Here is the call graph for this function:

CLINKAGE void FEM_Print_e2n ( int  mesh,
int  eid 
)

Definition at line 42 of file mesh_modify.C.

References FEM_MUtil::FEM_Print_e2n(), FEM_Mesh::getfmMM(), femMeshModify::getfmUtil(), and PUP::m.

Here is the call graph for this function:

CLINKAGE void FEM_Print_e2e ( int  mesh,
int  eid 
)

Definition at line 46 of file mesh_modify.C.

References FEM_MUtil::FEM_Print_e2e(), FEM_Mesh::getfmMM(), femMeshModify::getfmUtil(), and PUP::m.

Here is the call graph for this function:

CLINKAGE void FEM_Print_Mesh_Summary ( int  mesh  ) 

Prints the mesh summary, i.e.

number of valid nodes/elements (local/ghost)

Definition at line 53 of file mesh_modify.C.

References FEM_Entity::count_valid(), FEM_Mesh::elem, FEM_Entity::getGhost(), FEM_Entity_Types< T >::has(), PUP::m, FEM_Mesh::node, FEM_Entity_Types< T >::size(), FEM_Entity::size(), and PUP::t.

Here is the call graph for this function:

int FEM_add_node ( int  mesh,
int adjacent_nodes,
int  num_adjacent_nodes,
int chunks,
int  numChunks,
int  forceShared 
)

Definition at line 77 of file mesh_modify.C.

References FEM_add_node().

Here is the call graph for this function:

CLINKAGE void FEM_remove_node ( int  mesh,
int  node 
)

Definition at line 80 of file mesh_modify.C.

References FEM_remove_node().

Referenced by FEM_AdaptL::edge_contraction_help(), FEM_remove_node(), and FEM_Adapt::vertex_remove_help().

Here is the call graph for this function:

Here is the caller graph for this function:

CLINKAGE int FEM_add_element ( int  mesh,
int conn,
int  conn_size,
int  elem_type,
int  chunkNo 
)

CLINKAGE int FEM_remove_element ( int  mesh,
int  element,
int  elem_type,
int  permanent 
)

CLINKAGE int FEM_purge_element ( int  mesh,
int  element,
int  elem_type 
)

Definition at line 89 of file mesh_modify.C.

References FEM_purge_element().

Referenced by FEM_MUtil::eatIntoElement(), FEM_Adapt::edge_bisect_help(), FEM_AdaptL::edge_contraction_help(), FEM_Adapt::edge_flip_help(), FEM_purge_element(), and femMeshModify::purgeElement().

Here is the call graph for this function:

Here is the caller graph for this function:

int FEM_add_node_local ( FEM_Mesh m,
bool  addGhost,
bool  doLocking,
bool  doAdjacencies 
)

Add a node to this mesh 'm', could be ghost/local decided by 'addGhost' basically, this function finds an empty row in the nodelist and clears its adjacencies then, it creates a lock for this node, if this node is new (i.e.

Update adjacencies for this new node, and attach a lock to it.

unused) otherwise, the existing lock is reset

Definition at line 104 of file mesh_modify.C.

References femMeshModify::fmLockN, FEM_Entity::get_next_invalid(), FEM_Mesh::getfmMM(), femMeshModify::getfmUtil(), FEM_Entity::getGhost(), FEM_MUtil::getIdx(), FEM_Mesh::n2e_removeAll(), FEM_Mesh::n2n_removeAll(), FEM_Mesh::node, CkVec< T >::push_back(), and CkVec< T >::size().

Here is the call graph for this function:

int FEM_add_node ( FEM_Mesh m,
int adjacentNodes,
int  numAdjacentNodes,
int chunks,
int  numChunks,
int  forceShared 
)

'adjacentNodes' specifies the set of nodes between which this new node is to be added.

Add a node between some adjacent nodes on this mesh.

'forceshared' is used to convey extra information. Sometimes, we know that the new node will not be shared, i.e. if the two nodes are shared, but the two elements on two sides of this node belong to the same chunk, then this node will not be shared. (in spite of the two nodes being shared by the same set of chunks 'numChunks' is the number of entries in 'chunks'. 'chunks' contains the chunk index where this node is to be added. This is populated when the operation originates from edge_bisect and the operation knows which all chunks this node needs to be added to. Returns the index of the new node that was added

Definition at line 149 of file mesh_modify.C.

References FEM_Interpolate::NodalArgs::addNode, IDXL_Side::addNode(), addNodeMsg::between, addNodeMsg::chk, addNodeMsg::chunks, FEM_MUtil::exists_in_IDXL(), FEM_add_node_local(), FEM_Interpolate::FEM_InterpolateNodeOnEdge(), FEM_Interpolate::NodalArgs::frac, femMeshModify::getfmInp(), FEM_Mesh::getfmMM(), femMeshModify::getfmUtil(), femMeshModify::getIdx(), FEM_Entity::ghost, FEM_Entity::ghostRecv, FEM_MUtil::idxllock(), FEM_MUtil::idxlunlock(), index, is_shared(), meshMod, FEM_Interpolate::NodalArgs::n, addNodeMsg::nBetween, FEM_Mesh::node, FEM_Interpolate::NodalArgs::nodes, addNodeMsg::numChunks, and FEM_MUtil::splitEntitySharing().

Here is the call graph for this function:

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'.

Definition at line 218 of file mesh_modify.C.

References FEM_add_node_local(), FEM_Mesh::getfmMM(), femMeshModify::getfmUtil(), and FEM_MUtil::splitEntityRemote().

Here is the call graph for this function:

void FEM_remove_node_local ( FEM_Mesh m,
int  node 
)

This function invalidates a node entry and if there are any entries in the IDXL lists (ghost/local) then, these entries are cleared both on the local as well as the remote chunk and then the node is invalidated and any lock it might be holding is reset The pre-condition which is asserted here that the node should not have any adjacency entries, n2e or n2n.

Get rid of idxl entries for this node and clear adjacencies, invalidate node.

Definition at line 237 of file mesh_modify.C.

References CmiMemoryCheck(), femMeshModify::fmLockN, free(), FEM_Mesh::getfmMM(), femMeshModify::getfmUtil(), FEM_MUtil::getIdx(), femMeshModify::getIdx(), IDXL_Side::getRec(), FEM_Entity::ghost, FEM_Entity::ghostRecv, FEM_Entity::ghostSend, index, malloc(), meshMod, FEM_Mesh::n2e_getAll(), FEM_Mesh::n2n_getAll(), FEM_Mesh::node, IDXL_Side::removeNode(), FEM_Entity::set_invalid(), and size.

Here is the call graph for this function:

void FEM_remove_node ( FEM_Mesh m,
int  node 
)

remove a local or shared node, but NOT a ghost node Should probably be able to handle ghosts someday, but here we interpret it as deleting the entry in the ghost list.

Remove a node on this mesh.

Definition at line 320 of file mesh_modify.C.

References CmiMemoryCheck(), FEM_remove_node_local(), FEM_Mesh::getfmMM(), femMeshModify::getfmUtil(), FEM_Entity::ghost, is_shared(), FEM_Entity::is_valid(), FEM_Mesh::n2e_getAll(), FEM_Mesh::n2n_getAll(), FEM_Mesh::node, and FEM_MUtil::removeNodeAll().

Here is the call graph for this function:

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.

Regenerate the e2e connectivity for the given element.

Currently supports multiple element types.

A helper function for FEM_add_element_local below Will only work with the same element type as the one given, may crash otherwise.

Currently supports multiple element types.

A list of all elements adjacent to one of the nodes

Definition at line 863 of file fem_mesh_modify.C.

References PUP::a, tupleTable::addTuple(), PUP::b, tupleTable::beginLookup(), CmiMemoryCheck(), conn, FEM_Mesh::e2n_getAll(), FEM_Mesh::elem, FEM_ElemAdj_Layer::elem, FEM_Entity_Types< T >::get(), BasicTable2d< T >::getData(), FEM_Mesh::getElemAdjLayer(), FEM_ElemAdj_Layer::initialized, PUP::l, CkVec< T >::length(), tupleTable::lookupNext(), tupleTable::MAX_TUPLE, FEM_Mesh::n2e_getAll(), elemList::next, FEM_ElemAdj_Layer::nodesPerTuple, CkVec< T >::push_back(), and PUP::u.

Referenced by FEM_add_element_local(), and FEM_update_new_element_e2e().

Here is the call graph for this function:

Here is the caller graph for this function:

void FEM_update_new_element_e2e ( FEM_Mesh m,
int  newEl,
int  elemType 
)

Definition at line 364 of file mesh_modify.C.

References update_new_element_e2e().

Here is the call graph for this function:

int FEM_add_element_local ( FEM_Mesh m,
int conn,
int  connSize,
int  elemType,
bool  addGhost,
bool  create_adjacencies 
)

A helper function that adds the local element, and updates adjacencies.

Update adjacencies for this element and all surrounding nodes/elements.

Definition at line 486 of file mesh_modify.C.

References FEM_Mesh::e2e_getAll(), FEM_Mesh::e2e_removeAll(), FEM_Mesh::elem, FEM_Adapt_Algs::ensureQuality(), femMeshModify::fmAdaptAlgs, FEM_Mesh::getfmMM(), femMeshModify::getfmUtil(), FEM_MUtil::getIdx(), FEM_Mesh::n2e_add(), FEM_Mesh::n2n_add(), FEM_Mesh::n2n_exists(), and update_new_element_e2e().

Here is the call graph for this function:

int FEM_add_element ( FEM_Mesh m,
int conn,
int  connSize,
int  elemType,
int  chunkNo 
)

This addds an element with the given 'conn' connecitivity and 'connSize' number of nodes in e2n to the mesh 'm'.

Add an element on this mesh with this connectivity.

'chunkNo' denotes the chunk the new element should be added to. If it is -1, then this function decides which chunk this new element should belong to, based on its node connectivity. It returns the index of the newly created element

Definition at line 550 of file mesh_modify.C.

References IDXL_Side::addNode(), boolMsg::b, FEM_MUtil::buildChunkToNodeTable(), addGhostElemMsg::chk, IDXL_Share::chk, addElemMsg::chk, CmiMemoryCheck(), addElemMsg::conn, addGhostElemMsg::connSize, addElemMsg::connSize, FEM_Mesh::elem, addGhostElemMsg::elemType, addElemMsg::elemtype, FEM_MUtil::exists_in_IDXL(), FEM_add_element_local(), FEM_Modify_LockUpdate(), FEM_remove_node_local(), femMeshModify::fmfixedNodes, CkVec< T >::free(), free(), FEM_MUtil::getChunkNos(), FEM_Mesh::getfmMM(), femMeshModify::getfmUtil(), femMeshModify::getIdx(), IDXL_Side::getRec(), FEM_Entity::ghost, addGhostElemMsg::ghostIndices, addElemMsg::ghostIndices, FEM_Entity::ghostRecv, FEM_Entity::ghostSend, intMsg::i, idx, FEM_MUtil::idxllock(), FEM_MUtil::idxlunlock(), index, addGhostElemMsg::indices, int, is_shared(), PUP::l, malloc(), meshMod, FEM_Mesh::node, addGhostElemMsg::numGhostIndex, addElemMsg::numGhostIndex, addGhostElemMsg::numSharedIndex, CkVec< T >::push_back(), IDXL_Side::removeNode(), FEM_MUtil::Replace_node_local(), FEM_Node::shared, addGhostElemMsg::sharedIndices, IDXL_List::size(), size, and addGhostElemMsg::typeOfIndex.

Here is the call graph for this function:

void FEM_remove_element_local ( FEM_Mesh m,
int  element,
int  etype 
)

Remove a local element from any of the adjacency tables that use it, namely the n2e, e2e and e2n tables of the neighbors.

Clear up the adjacencies.

e2n of the neighbors does not change all tables for this element get deleted anyway when it is marked invalid, which is now done in the purge step

Definition at line 1002 of file mesh_modify.C.

References CmiMemoryCheck(), FEM_Mesh::e2e_getAll(), FEM_Mesh::e2e_replace(), FEM_Mesh::e2n_getAll(), FEM_Mesh::elem, FEM_Mesh::getfmMM(), femMeshModify::getfmUtil(), FEM_MUtil::getIdx(), FEM_Mesh::n2e_remove(), FEM_Mesh::n2n_add(), FEM_Mesh::n2n_exists(), and FEM_Mesh::n2n_remove().

Here is the call graph for this function:

int FEM_remove_element ( FEM_Mesh m,
int  elementid,
int  elemtype,
int  permanent,
bool  aggressive_node_removal 
)

Can be called on local or ghost elements removes the connectivity of the element on this chunk as well as all chunks on which it is a ghost 'permanent' is -1 if the element is to be deleted, e.g.

Remove an element on this mesh.

in a coarsen operation, one element is deleted permanently.. for a refine however the existing elements are eaten by the new ones 'permanent' is the id of the chunk which wants to be the owner (i.e. wants to eat it) this is done just to save deleting some things when it would be immediately added again, when the element is deleted on one and added on another chunk The return value is the chunk on which this element was local Removing an element is a two step process, FEM_remove_element and FEM_purge_element This step will get rid of all adjacencies info, but the idxl information will not be deleted, just ghostsend on this junk and receive info on the remote chunk. The idxl info will be deleted in Purge, that way shared chunks could still refer to it, needed for solution transfer

Definition at line 1079 of file mesh_modify.C.

References IDXL_Side::addList(), IDXL_Side::addNode(), removeElemMsg::aggressive_node_removal, boolMsg::b, removeGhostElemMsg::chk, removeElemMsg::chk, FEM_Mesh::e2n_getAll(), FEM_Mesh::e2n_replace(), FEM_Mesh::elem, removeGhostElemMsg::elementid, removeElemMsg::elementid, removeGhostElemMsg::elemtype, removeElemMsg::elemtype, FEM_MUtil::exists_in_IDXL(), FEM_add_node_local(), FEM_Modify_LockAll(), FEM_remove_element_local(), FEM_remove_node_local(), femMeshModify::fmfixedNodes, femMeshModify::fmUtil, free(), FEM_Mesh::getfmMM(), femMeshModify::getfmUtil(), FEM_MUtil::getIdx(), IDXL_Side::getRec(), FEM_Entity::ghost, removeGhostElemMsg::ghostIndices, FEM_Entity::ghostRecv, removeGhostElemMsg::ghostREIndices, removeGhostElemMsg::ghostRNIndices, FEM_Entity::ghostSend, FEM_MUtil::idxllock(), FEM_MUtil::idxlunlock(), index, int, malloc(), meshMod, n1, FEM_Mesh::n2e_add(), FEM_Mesh::n2e_getAll(), FEM_Mesh::n2e_remove(), FEM_Mesh::n2n_add(), FEM_Mesh::n2n_getAll(), FEM_Mesh::n2n_remove(), FEM_Mesh::n2n_replace(), FEM_Mesh::node, removeGhostElemMsg::numGhostIndex, removeGhostElemMsg::numGhostREIndex, removeGhostElemMsg::numGhostRNIndex, removeGhostElemMsg::numSharedIndex, removeElemMsg::permanent, CkVec< T >::push_back(), CkVec< T >::remove(), IDXL_Side::removeNode(), FEM_Node::shared, removeGhostElemMsg::sharedIndices, CkVec< T >::size(), IDXL_List::size(), and size.

Here is the call graph for this function:

int FEM_purge_element ( FEM_Mesh m,
int  elementid,
int  elemtype 
)

Purge an element works for both local and ghost elements.

Purge the element from this mesh (invalidate entry).

Gets rid of any IDXL connectivity that might be left behind and cleans it on all chunks. Then it invalidates the element entry in the element table

Definition at line 1604 of file mesh_modify.C.

References FEM_Mesh::elem, free(), FEM_Mesh::getfmMM(), femMeshModify::idx, index, malloc(), and meshMod.

Here is the call graph for this function:

CLINKAGE int FEM_Modify_Lock ( int  mesh,
int affectedNodes,
int  numAffectedNodes,
int affectedElts,
int  numAffectedElts,
int  elemtype 
)

Definition at line 1657 of file mesh_modify.C.

References FEM_Modify_Lock().

Referenced by FEM_Modify_Lock().

Here is the call graph for this function:

Here is the caller graph for this function:

CLINKAGE int FEM_Modify_Unlock ( int  mesh  ) 

Definition at line 1660 of file mesh_modify.C.

References FEM_Modify_Unlock().

Referenced by FEM_Modify_Unlock().

Here is the call graph for this function:

Here is the caller graph for this function:

CLINKAGE int FEM_Modify_LockN ( int  mesh,
int  nodeId,
int  readLock 
)

Definition at line 1664 of file mesh_modify.C.

References FEM_Modify_LockN().

Referenced by FEM_Adapt::edge_bisect_help(), FEM_Modify_LockN(), and FEM_AdaptL::lockNodes().

Here is the call graph for this function:

Here is the caller graph for this function:

CLINKAGE int FEM_Modify_UnlockN ( int  mesh,
int  nodeId,
int  readLock 
)

Definition at line 1667 of file mesh_modify.C.

References FEM_Modify_UnlockN().

Referenced by FEM_Adapt::edge_bisect_help(), FEM_Modify_UnlockN(), and FEM_AdaptL::unlockNodes().

Here is the call graph for this function:

Here is the caller graph for this function:

int FEM_Modify_Lock ( FEM_Mesh m,
int affectedNodes,
int  numAffectedNodes,
int affectedElts,
int  numAffectedElts,
int  elemtype 
)

coarse lock (lock chunks) find out which all chunks these nodes belong to and lock them all

Deprecated: locks all chunks for the nodes and elements specified.

Definition at line 1675 of file mesh_modify.C.

References femMeshModify::getfmLock(), FEM_Mesh::getfmMM(), and FEM_lock::lock().

Here is the call graph for this function:

int FEM_Modify_Unlock ( FEM_Mesh m  ) 

Unlock all chunks that was being held by a lock originating from here.

Deprecated: Unlock all chunks that have been locked by this mesh.

Definition at line 1681 of file mesh_modify.C.

References femMeshModify::getfmLock(), FEM_Mesh::getfmMM(), and FEM_lock::unlock().

Here is the call graph for this function:

int FEM_Modify_LockN ( FEM_Mesh m,
int  nodeId,
int  readlock 
)

Lock a node get a 'read/write lock on 'nodeId' we find the chunk with the smallest id that owns/shares this node and lock this node on this chunk.

Lock this node on this mesh with a read/write lock.

This decreases the amount of communication and the number of contention points for a single lock, as well as any chance of a deadlock since there is only a single resource to be acquired for a request

Definition at line 1692 of file mesh_modify.C.

References IDXL_Share::chk, CmiMemoryCheck(), FEM_MUtil::exists_in_IDXL(), femMeshModify::fmLockN, free(), FEM_MUtil::getChunkNos(), femMeshModify::getfmLockN(), FEM_Mesh::getfmMM(), femMeshModify::getfmUtil(), femMeshModify::getIdx(), intMsg::i, index, is_shared(), meshMod, FEM_lockN::rlock(), FEM_lockN::verifyLock(), and FEM_lockN::wlock().

Here is the call graph for this function:

int FEM_Modify_UnlockN ( FEM_Mesh m,
int  nodeId,
int  readlock 
)

Unlock this node find the chunk that holds the lock and unlock it on that chunk the type of the lock is also considered while unlocking a lock.

Lock the read/write lock for this node on this mesh.

Definition at line 1795 of file mesh_modify.C.

References IDXL_Share::chk, CmiMemoryCheck(), FEM_MUtil::exists_in_IDXL(), femMeshModify::fmLockN, free(), FEM_MUtil::getChunkNos(), femMeshModify::getfmLockN(), FEM_Mesh::getfmMM(), femMeshModify::getfmUtil(), femMeshModify::getIdx(), intMsg::i, index, is_shared(), meshMod, FEM_lockN::runlock(), and FEM_lockN::wunlock().

Here is the call graph for this function:

void FEM_Modify_LockAll ( FEM_Mesh m,
int  nodeId,
bool  lockall 
)

When a chunk is losing a node, the lock might need to be reassigned lock it on the minchunk other than 'this chunk' should only be called when 'this chunk' is losing the node as local/shared.

Reassign the lock on a node when a chunk is losing a node.

Definition at line 1877 of file mesh_modify.C.

References CpuTopoDetails::done, femMeshModify::fmLockN, femMeshModify::getfmLockN(), FEM_Mesh::getfmMM(), femMeshModify::getIdx(), IDXL_Side::getRec(), intMsg::i, index, meshMod, FEM_Mesh::node, FEM_Node::shared, and FEM_lockN::wlock().

Here is the call graph for this function:

void FEM_Modify_LockUpdate ( FEM_Mesh m,
int  nodeId,
bool  lockall 
)

Deprecated: Update the lock on this node (by locking the newly formed node The locks will be cleared later must be a local node, lock it & then unlock it if needed.

Update the lock on this node (by locking the newly formed node: Deprecated.

Definition at line 1919 of file mesh_modify.C.

References femMeshModify::fmLockN, femMeshModify::getfmLockN(), FEM_Mesh::getfmMM(), femMeshModify::getIdx(), IDXL_Side::getRec(), index, meshMod, FEM_Mesh::node, FEM_Node::shared, and FEM_lockN::wunlock().

Here is the call graph for this function:

void FEM_Modify_correctLockN ( FEM_Mesh m,
int  nodeId 
)

Deprecated: For the newly acquired node, correct the lock by removing superfluous locks Should always be called on the new node to correct the locks should make sure that it is called before unlocking, i.e.

For the newly acquired node, correct the lock by removing superfluous locks: Deprecated.

before the entire operation completes. gets rid of the extra safety lock & makes the locks consistent

Definition at line 1976 of file mesh_modify.C.

References IDXL_Share::chk, CpuTopoDetails::done, FEM_MUtil::exists_in_IDXL(), femMeshModify::fmAdaptL, femMeshModify::fmLockN, free(), FEM_MUtil::getChunkNos(), femMeshModify::getfmLockN(), FEM_Mesh::getfmMM(), femMeshModify::getfmUtil(), femMeshModify::getIdx(), intMsg::i, index, is_shared(), FEM_AdaptL::lockNodes(), FEM_lockN::lockOwner(), meshMod, FEM_lockN::wlock(), and FEM_lockN::wunlock().

Here is the call graph for this function:

void FEM_Mesh_dataP ( FEM_Mesh fem_mesh,
int  entity,
int  attr,
void *  data,
int  firstItem,
int  length,
int  datatype,
int  width 
)

wrapper function that takes a 'mesh pointer' instead of meshId, and gets/sets the data corresponding to the this 'attr' of this 'entity' 'firstItem' is the starting point in the list, 'length' is the number of entries 'datatype' is the type of data while 'width' is the size of each data entry

Get the data for 'length' indices from 'fem_mesh' for the 'attr' of 'entity' starting at index 'firstItem'.

Definition at line 2082 of file mesh_modify.C.

References FEM_Mesh_data_layoutP().

Here is the call graph for this function:

void FEM_Mesh_data_layoutP ( FEM_Mesh fem_mesh,
int  entity,
int  attr,
void *  data,
int  firstItem,
int  length,
IDXL_Layout_t  layout 
)

similar to the above function, but takes a 'layout' instead of datatype and width

Get the data for 'length' indices from 'fem_mesh' for the 'attr' of 'entity' starting at index 'firstItem'.

Definition at line 2089 of file mesh_modify.C.

References caller, FEM_Mesh_data_layoutP(), and IDXL_Layout_List::get().

Here is the call graph for this function:

void FEM_Mesh_data_layoutP ( FEM_Mesh m,
int  entity,
int  attr,
void *  data,
int  firstItem,
int  length,
const IDXL_Layout layout 
)

The helper function that both the above functions call does the actual setting/getting of the data in/from the mesh.

Get the data for 'length' indices from 'fem_mesh' for the 'attr' of 'entity' starting at index 'firstItem'.

Definition at line 2097 of file mesh_modify.C.

References PUP::a, caller, FEM_Attribute::get(), FEM_Mesh::isSetting(), FEM_Entity::lookup(), FEM_Mesh::lookup(), and FEM_Attribute::set().

Here is the call graph for this function:

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 This would be only done for attributes of a node, currently for coords & boundary.

Copy the essential attributes for this ghost node from remote chunks.

Definition at line 2113 of file mesh_modify.C.

References PUP::a, IDXL_Share::chk, FEM_Adapt_Algs::coord_attr, PUP::d, FEM_MUtil::exists_in_IDXL(), femMeshModify::fmAdaptAlgs, free(), FEM_Attribute::getAttr(), FEM_Entity::getAttrVec(), FEM_MUtil::getChunkNos(), FEM_Mesh::getfmMM(), femMeshModify::getfmUtil(), FEM_Entity::ghost, intMsg::i, double2Msg::i, femMeshModify::idx, index, double2Msg::j, meshMod, FEM_Mesh::node, and CkVec< T >::size().

Here is the call graph for this function:

void clearPartition ( void   ) 

int FEM_Mesh_Parallel_broadcast ( int  fem_mesh,
int  masterRank,
FEM_Comm_t  comm_context 
)

Definition at line 24 of file parallel_part.C.

References Converse::CkMyPe(), clearPartition(), CmiMemoryUsage(), FEM_master_parallel_part(), FEM_slave_parallel_part(), MPI_Barrier, and MPI_Comm_rank.

Here is the call graph for this function:

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 
)

struct partconndata * FEM_call_parmetis ( int  nelem,
MSA1DINT::Read &  rPtr,
MSA1DINT::Read &  rInd,
FEM_Comm_t  comm_context 
) [read]

void FEM_write_nodepart ( MSA1DINTLIST::Accum &  nodepart,
struct partconndata data,
MPI_Comm  comm_context 
)

void FEM_write_part2node ( MSA1DINTLIST::Read &  nodepart,
MSA1DNODELIST::Accum &  part2node,
struct partconndata data,
MPI_Comm  comm_context 
)

Definition at line 448 of file parallel_part.C.

References MPI_Comm_rank, n, NodeElem::shared, PUP::t, and ElemList< T >::vec.

void FEM_write_part2elem ( MSA1DINTLIST::Accum &  part2elem,
struct partconndata data,
MPI_Comm  comm_context 
)

FEM_Mesh* FEM_break_mesh ( FEM_Mesh m,
int  numElements,
int  numChunks 
)

void sendBrokenMeshes ( FEM_Mesh mesh_array,
FEM_Comm_t  comm_context 
)

Definition at line 544 of file parallel_part.C.

References MPI_Send_pup().

Here is the call graph for this function:

void FEM_write_part2mesh ( MSA1DFEMMESH::Accum &  part2mesh,
struct partconndata partdata,
struct conndata data,
MSA1DINTLIST::Read &  nodepart,
int  numChunks,
int  myChunk,
FEM_Mesh m 
)

void sortNodeList ( NodeList lnodes  ) 

Definition at line 586 of file parallel_part.C.

References CkVec< T >::quickSort(), and ElemList< T >::vec.

Here is the call graph for this function:

void addIDXLists ( FEM_Mesh m,
NodeList lnodes,
int  myChunk 
)

struct ghostdata* gatherGhosts (  )  [read]

void makeGhosts ( FEM_Mesh m,
MPI_Comm  comm,
int  masterRank,
int  numLayers,
FEM_Ghost_Layer **  layers 
)

bool listContains ( FEM_Comm_List list,
int  entry 
)

Definition at line 794 of file parallel_part.C.

References listSearchTime, and IDXL_List::size().

Here is the call graph for this function:

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 
)

Definition at line 1153 of file parallel_part.C.

References IDXL_Side::findLocalList(), IDXL_Side::getLocalList(), FEM_Mesh::node, FEM_Node::shared, sharedSearchTime, and IDXL_List::size().

Here is the call graph for this function:

void FEM_Abort ( const char *  msg  ) 

Definition at line 37 of file ParFUM.C.

void FEM_Abort ( const char *  caller,
const char *  sprintf_msg,
int  int0,
int  int1,
int  int2 
)

Definition at line 40 of file ParFUM.C.

References FEM_Abort(), and msg.

Here is the call graph for this function:

CLINKAGE void pupFEM_Chunk ( pup_er  cp  ) 

Definition at line 56 of file ParFUM.C.

References c, FEM_globalID, PUP::er::isDeleting(), p, FEM_chunk::pup(), pupFEM_Chunk(), TCHARM_Get_global(), and TCHARM_Set_global().

Here is the call graph for this function:

CLINKAGE void FEM_Init ( FEM_Comm_t  defaultComm  ) 

FORTRAN_AS_C ( FEM_INIT  ,
FEM_Init  ,
fem_init  ,
(int *comm ,
comm 
)

Definition at line 93 of file ParFUM.C.

References FEM_Abort().

Here is the call graph for this function:

CLINKAGE int FEM_Mesh_allocate ( void   ) 

mesh creation functions

Definition at line 108 of file ParFUM.C.

References FEM_Mesh::becomeSetting(), c, caller, FEM_chunk::get(), FEMchunk::get(), PUP::m, FEM_chunk::meshes, FEMchunk::meshes, and FEM_T_List< T >::put().

Here is the call graph for this function:

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.

Definition at line 116 of file ParFUM.C.

References buf, PUP::fromMemBuf(), len, PUP::size(), and PUP::toMemBuf().

Here is the call graph for this function:

CLINKAGE int FEM_Mesh_copy ( int  fem_mesh  ) 

build new mesh

Definition at line 131 of file ParFUM.C.

References c, caller, FEM_chunk::get(), FEMchunk::get(), FEM_T_List< T >::lookup(), FEM_chunk::meshes, FEMchunk::meshes, and FEM_T_List< T >::put().

Here is the call graph for this function:

FORTRAN_AS_C_RETURN ( int  ,
FEM_MESH_COPY  ,
FEM_Mesh_copy  ,
fem_mesh_copy  ,
(int *m)  ,
m 
)

Definition at line 136 of file ParFUM.C.

References c, caller, FEM_T_List< T >::destroy(), FEM_chunk::get(), and FEM_chunk::meshes.

Here is the call graph for this function:

FORTRAN_AS_C ( FEM_MESH_DEALLOCATE  ,
FEM_Mesh_deallocate  ,
fem_mesh_deallocate  ,
(int *m)  ,
m 
) const

CLINKAGE void FEM_Mesh_partition ( int  fem_mesh,
int  nParts,
int destMeshes 
)

Type Constraints

Definition at line 250 of file ParFUM.C.

References FEM_Mesh_copy(), FEM_Mesh_partition(), FEM_chunk::get(), FEMchunk::get(), PUP::l, FEM_chunk::lookup(), FEMchunk::lookup(), FEM_Mesh::node, and FEM_Entity::size().

Here is the call graph for this function:

FORTRAN_AS_C ( FEM_MESH_PARTITION  ,
FEM_Mesh_partition  ,
fem_mesh_partition  ,
(int *mesh, int *nParts, int *dest ,
*,*,  dest 
)

CLINKAGE 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 ,
*,*,*  comm 
)

n ( n_   ) 

addNodes ( addNodes_   ) 

ends ( new  int[n]  ) 

adj ( new int [2 *userEnds[n-1]  ) 

Definition at line 942 of file ParFUM.C.

References adj(), and ends().

Here is the call graph for this function:

CLINKAGE void FEM_Add_ghost_stencil_type ( int  elType,
int  nElts,
int  addNodes,
const int ends,
const int adj2 
)

Definition at line 963 of file ParFUM.C.

References FEM_Partition::addGhostStencil(), FEM_curPartition(), and PUP::s.

Here is the call graph for this function:

FLINKAGE void FTN_NAME ( FEM_ADD_GHOST_STENCIL_TYPE  ,
fem_add_ghost_stencil_type   
)

Definition at line 971 of file ParFUM.C.

References FEM_Partition::addGhostStencil(), FEM_curPartition(), and PUP::s.

Here is the call graph for this function:

int globalElem2elType ( const FEM_Mesh m,
int  globalElem 
) [inline]

Definition at line 982 of file ParFUM.C.

References FEM_Mesh::elem, FEM_Entity_Types< T >::has(), FEM_Entity_Types< T >::size(), and PUP::t.

Here is the call graph for this function:

CLINKAGE void FEM_Add_ghost_stencil ( int  nElts,
int  addNodes,
const int ends,
const int adj 
)

FLINKAGE void FTN_NAME ( FEM_ADD_GHOST_STENCIL  ,
fem_add_ghost_stencil   
)

Definition at line 1037 of file ParFUM.C.

References adj(), and FEM_Add_ghost_stencil().

Here is the call graph for this function:

CLINKAGE void FEM_Add_ghost_layer ( int  nodesPerTuple,
int  doAddNodes 
)

Definition at line 1049 of file ParFUM.C.

References FEM_Partition::addLayer(), FEM_Ghost_Layer::addNodes, FEM_curPartition(), and FEM_Ghost_Layer::nodesPerTuple.

Here is the call graph for this function:

FLINKAGE void FTN_NAME ( FEM_ADD_GHOST_LAYER  ,
fem_add_ghost_layer   
)

Definition at line 1056 of file ParFUM.C.

References FEM_Add_ghost_layer().

Here is the call graph for this function:

static void add_ghost_elem ( int  elType,
int  tuplesPerElem,
const int elem2tuple,
int  idxBase 
) [static]

Definition at line 1060 of file ParFUM.C.

References CkCopyArray(), FEM_Partition::curLayer(), FEM_Ghost_Layer::elem, FEM_curPartition(), and FEM_Ghost_Layer::nodesPerTuple.

Here is the call graph for this function:

CLINKAGE void FEM_Add_ghost_elem ( int  elType,
int  tuplesPerElem,
const int elem2tuple 
)

Definition at line 1072 of file ParFUM.C.

References add_ghost_elem().

Here is the call graph for this function:

FLINKAGE void FTN_NAME ( FEM_ADD_GHOST_ELEM  ,
fem_add_ghost_elem   
)

Definition at line 1074 of file ParFUM.C.

References add_ghost_elem().

Here is the call graph for this function:

CLINKAGE void FEM_Update_ghost_field ( int  fid,
int  elType,
void *  v_data 
)

Definition at line 1078 of file ParFUM.C.

References data, entity, FEM_Comm_ghost(), FEM_Mesh_default_read(), and FEM_Mesh_get_length().

Here is the call graph for this function:

FLINKAGE void FTN_NAME ( FEM_UPDATE_GHOST_FIELD  ,
fem_update_ghost_field   
)

Definition at line 1093 of file ParFUM.C.

References data, and FEM_Update_ghost_field().

Here is the call graph for this function:

CLINKAGE void FEM_Exchange_ghost_lists ( int  elemType,
int  nIdx,
const int localIdx 
)

Definition at line 1172 of file ParFUM.C.

References FEM_chunk::exchangeGhostLists(), FEMchunk::exchangeGhostLists(), FEM_chunk::get(), and FEMchunk::get().

Here is the call graph for this function:

FLINKAGE void FTN_NAME ( FEM_EXCHANGE_GHOST_LISTS  ,
fem_exchange_ghost_lists   
)

Definition at line 1177 of file ParFUM.C.

References FEM_chunk::exchangeGhostLists(), and FEM_chunk::get().

Here is the call graph for this function:

CLINKAGE int FEM_Get_ghost_list_length ( void   ) 

Definition at line 1183 of file ParFUM.C.

References FEM_chunk::get(), FEMchunk::get(), FEM_chunk::getList(), FEMchunk::getList(), and CkVec< T >::size().

Here is the call graph for this function:

FLINKAGE int FTN_NAME ( FEM_GET_GHOST_LIST_LENGTH  ,
fem_get_ghost_list_length   
)

Definition at line 1188 of file ParFUM.C.

References FEM_Get_ghost_list_length().

Here is the call graph for this function:

CLINKAGE void FEM_Get_ghost_list ( int dest  ) 

FLINKAGE void FTN_NAME ( FEM_GET_GHOST_LIST  ,
fem_get_ghost_list   
)

Definition at line 1199 of file ParFUM.C.

References FEM_chunk::emptyList(), FEM_Get_ghost_list_length(), FEM_chunk::get(), FEM_chunk::getList(), and CkVec< T >::getVec().

Here is the call graph for this function:

static void getRoccomPconn ( IDXL_Side_t  is,
int  bias,
CkVec< int > &  pconn,
const int paneFmChunk 
) [static]

Extract an IDXL_Side_t into Roccom format.

Definition at line 1213 of file ParFUM.C.

References nn, and CkVec< T >::push_back().

Here is the call graph for this function:

static CkVec<int> getRoccomPconn ( int  fem_mesh,
int ghost_len,
const int paneFmChunk 
) [static]

Extract all FEM communication information into Roccom format.

Definition at line 1230 of file ParFUM.C.

References FEM_Comm_ghost(), FEM_Comm_shared(), FEM_Mesh_get_entities(), FEM_Mesh_get_length(), getRoccomPconn(), IDXL_Create(), and CkVec< T >::size().

Here is the call graph for this function:

CLINKAGE void FEM_Get_roccom_pconn_size ( int  fem_mesh,
int total_len,
int ghost_len 
)

Definition at line 1270 of file ParFUM.C.

References getRoccomPconn(), and CkVec< T >::size().

Here is the call graph for this function:

FORTRAN_AS_C ( FEM_GET_ROCCOM_PCONN_SIZE  ,
FEM_Get_roccom_pconn_size  ,
fem_get_roccom_pconn_size  ,
(int *mesh, int *tl, int *gl)  ,
*,,  gl 
)

int commState ( int  entityNo,
const IDXL_Side s 
)

Type Constraints

Definition at line 1323 of file ParFUM.C.

References FEM_My_partition(), IDXL_Side::getRec(), and r.

Here is the call graph for this function:

CLINKAGE 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.

Based on shared node communication list, compute FEM_NODE FEM_GLOBALNO and FEM_NODE_PRIMARY.

Definition at line 1342 of file ParFUM.C.

References commState(), FEM_Comm_shared(), FEM_Mesh_set_data(), PUP::l, FEM_Mesh::node, FEM_Node::shared, and FEM_Entity::size().

Here is the call graph for this function:

FORTRAN_AS_C ( FEM_MAKE_NODE_GLOBALNO  ,
FEM_Make_node_globalno  ,
fem_make_node_globalno  ,
(int *mesh, int *comm ,
*,*  comm 
)

Definition at line 1395 of file ParFUM.C.

References FEM_Entity::getGlobalno(), and PUP::l.

Here is the call graph for this function:

CLINKAGE 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.

After a sequence of calls to this function, a call should be made to FEM_Mesh_create_elem_elem_adjacency(int fem_mesh)

TODO: Make this work with multiple types of faces for a single element

Definition at line 1493 of file ParFUM.C.

References CkCopyArray(), FEM_ElemAdj_Layer::elem, FEM_Mesh::getElemAdjLayer(), FEM_ElemAdj_Layer::initialized, and FEM_ElemAdj_Layer::nodesPerTuple.

Here is the call graph for this function:

void _registerParFUM ( void   ) 

void FEM_Done ( void   ) 

int FEM_My_partition ( void   ) 

Utility functions.

int FEM_Num_partitions ( void   ) 

double FEM_Timer ( void   ) 

void FEM_Print ( const char *  str  ) 

void FEM_Print_partition ( 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_print ( int  fem_mesh  ) 

void FEM_Mesh_set_conn ( int  fem_mesh,
int  entity,
const int conn,
int  firstItem,
int  length,
int  width 
)

Definition at line 76 of file fem_mesh.C.

References checkIsSet(), and FEM_Mesh_conn().

Here is the call graph for this function:

void FEM_Mesh_get_conn ( int  fem_mesh,
int  entity,
int conn,
int  firstItem,
int  length,
int  width 
)

Definition at line 91 of file fem_mesh.C.

References checkIsSet(), and FEM_Mesh_conn().

Here is the call graph for this function:

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 
)

Definition at line 62 of file fem_mesh.C.

References FEM_Mesh_data().

Here is the call graph for this function:

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 
)

Definition at line 108 of file fem_mesh.C.

References FEM_Mesh_data_layout().

Here is the call graph for this function:

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".

storage, which must be at least 80 bytes long, is used for non-static names, like the user tag "FEM_ELEM+2".

Definition at line 1039 of file fem_mesh.C.

const char* FEM_Get_attr_name ( int  attr,
char *  storage 
)

Return the human-readable version of this attribute code, like "FEM_CONN".

storage, which must be at least 80 bytes long, is used for non-static names, like the user tag "FEM_DATA+7".

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 
)

Definition at line 393 of file symmetries.C.

References FEM_Partition::addLinearPeriodic(), and FEM_curPartition().

Here is the call graph for this function:

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_Layout_t FEM_Create_simple_field ( int  base_type,
int  vec_len 
)

IDXL_Layout_t FEM_Create_field ( int  base_type,
int  vec_len,
int  init_offset,
int  distance 
)

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 
)

int FEM_Register ( void *  userData,
FEM_PupFn  _pup_ud 
)

void FEM_Migrate ( void   ) 

void* FEM_Get_userdata ( int  n  ) 

void FEM_Barrier ( void   ) 

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 
)

Definition at line 1984 of file fem_mesh.C.

References FEM_Entity::allocateValid(), and FEM_Mesh::lookup().

Here is the call graph for this function:

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 
)

int FEM_is_node_shared ( int  mesh,
int  idx 
)

int FEM_find_node_owner ( int  mesh,
int  idx 
)

void FEM_Mesh_detect_features ( int  fem_mesh  ) 

Definition at line 26 of file mesh_feature_detect.C.

References caller, FEM_Mesh::detectFeatures(), and PUP::m.

Here is the call graph for this function:

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 FEM_Mesh_set_default_write ( int  fem_mesh  ) 

void FEM_Update_field ( int  fid,
void *  nodes 
)

void FEM_Reduce_field ( int  fid,
const void *  nodes,
void *  outbuf,
int  op 
)

void FEM_Reduce ( int  fid,
const void *  inbuf,
void *  outbuf,
int  op 
)

void FEM_Read_field ( int  fid,
void *  nodes,
const char *  fname 
)

void FEM_Set_node ( int  nNodes,
int  doublePerNode 
)

Definition at line 77 of file fem_compat.C.

References FEM_Mesh_set_length(), and FEM_Mesh_set_width().

Here is the call graph for this function:

void FEM_Set_node_data ( const double *  data  ) 

void FEM_Set_elem ( int  elType,
int  nElem,
int  doublePerElem,
int  nodePerElem 
)

void FEM_Set_elem_data ( int  elType,
const double *  data 
)

void FEM_Set_elem_conn ( int  elType,
const int conn 
)

void FEM_Set_sparse ( int  uniqueIdentifier,
int  nRecords,
const int nodes,
int  nodesPerRec,
const void *  data,
int  dataPerRec,
int  dataType 
)

void FEM_Set_sparse_elem ( int  uniqueIdentifier,
const int rec2elem 
)

void FEM_Get_node ( int nNodes,
int doublePerNode 
)

void FEM_Get_node_data ( double *  data  ) 

void FEM_Get_elem ( int  elType,
int nElem,
int doublePerElem,
int nodePerElem 
)

void FEM_Get_elem_data ( int  elType,
double *  data 
)

void FEM_Get_elem_conn ( int  elType,
int conn 
)

int FEM_Get_sparse_length ( int  uniqueIdentifier  ) 

void FEM_Get_sparse ( int  uniqueIdentifier,
int nodes,
void *  data 
)

void FEM_Set_mesh ( int  nelem,
int  nnodes,
int  nodePerElem,
int conn 
)

int FEM_Get_node_ghost ( void   ) 

int FEM_Get_elem_ghost ( int  elemType  ) 

void FEM_Update_mesh ( FEM_Update_mesh_fn  callFn,
int  userValue,
int  doWhat 
)

Definition at line 350 of file fem_compat.C.

void FEM_Set_partition ( int elem2chunk  ) 

void FEM_REF_INIT ( int  mesh  ) 

Definition at line 11 of file adapt_if.C.

References CkArrayOptions::bindTo(), comm, TCharm::get(), TCharm::getProxy(), PUP::m, meshMod, MPI_Bcast, MPI_Comm_rank, msg, and size.

Here is the call graph for this function:

void FEM_Serial_split ( int  nchunks  ) 

Definition at line 373 of file fem_compat.C.

References FEM_Mesh_default_write(), and FEM_Mesh_partition().

Here is the call graph for this function:

void FEM_Serial_begin ( int  chunkNo  ) 

void FEM_Serial_read ( int  chunkNo,
int  nChunks 
)

void FEM_Serial_assemble ( void   ) 

int FEM_Get_comm_partners ( void   ) 

int FEM_Get_comm_partner ( int  partnerNo  ) 

int FEM_Get_comm_count ( int  partnerNo  ) 

void FEM_Get_comm_nodes ( int  partnerNo,
int nodeNos 
)

ParFUM_collider ParFUM_Collide_Init ( int  dimension  ) 

ParFUM_Collide_init() will initialize the collision library.

It should be called once in driver after mesh has been loaded.

dimension should reflect the number of coordinates associated with a node. This cannot exceed 3 with the current Collision Library. The user's nodal coordinates must be registered as a particular attribute in order to determine the optimal grid sizing.

Algorithm: Determine Grid Sizing Call COLLIDE_Init()

Definition at line 13 of file collide.C.

References c, ParFUM_collider::collide_grid, and ParFUM_collider::dimension.

int ParFUM_Collide ( ParFUM_collider c,
double  box_padding = 0.0 
)

ParFUM_Collide() will create bounding boxes for each element in the local mesh chunk.

It will then collide these bounding boxes with those both locally and remotely. It should be called at each timestep for which collisions are being tested.

Algorithm: Create Bounding boxes for all valid elements, and priority array Call COLLIDE_Boxes_prio() return the number of collisions which involve a local element

Definition at line 21 of file collide.C.

References boxes, ParFUM_collider::boxToElementMapping, ParFUM_collider::collide_grid, COLLIDE_Init(), and ParFUM_collider::numCollidableElements.

Here is the call graph for this function:

void ParFUM_Collide_GetCollisions ( ParFUM_collider c,
void *  results 
)

ParFUM_Collide_GetCollisions() is used to get the data for any remote elements which It should be called after Collide even if ParFUM_Collide returned 0.

The data it returns will be double precision values associated with the element attribute ParFUM_COLLISION_DATA

results should be an array allocated by the user with length equal to the number of collisions times the amount of space needed for each item in the ParFUM_COLLISION_DATA attribute

Algorithm:

Definition at line 56 of file collide.C.

References COLLIDE_Destroy(), and ParFUM_collider::collide_grid.

Here is the call graph for this function:

void ParFUM_Collide_Destroy ( ParFUM_collider c  ) 

Definition at line 77 of file collide.C.

References ParFUM_collider::collide_grid.

void FEM_ADAPT_Init ( int  meshID  ) 

FLINKAGE void FTN_NAME ( FEM_ADAPT_INIT  ,
fem_adapt_init   
)

Definition at line 17 of file fem_adapt_if.C.

References FEM_ADAPT_Init().

Here is the call graph for this function:

void FEM_ADAPT_Refine ( int  meshID,
int  qm,
int  method,
double  factor,
double *  sizes 
)

Definition at line 23 of file fem_adapt_if.C.

References FEM_Adapt_Algs::FEM_Refine(), femMeshModify::getfmAdaptAlgs(), FEM_Mesh::getfmMM(), and mesh.

Referenced by FTN_NAME().

Here is the call graph for this function:

Here is the caller graph for this function:

FLINKAGE void FTN_NAME ( FEM_ADAPT_REFINE  ,
fem_adapt_refine   
)

void FEM_ADAPT_Coarsen ( int  meshID,
int  qm,
int  method,
double  factor,
double *  sizes 
)

Definition at line 35 of file fem_adapt_if.C.

References FEM_Adapt_Algs::FEM_Coarsen(), femMeshModify::getfmAdaptAlgs(), FEM_Mesh::getfmMM(), and mesh.

Referenced by FTN_NAME().

Here is the call graph for this function:

Here is the caller graph for this function:

FLINKAGE void FTN_NAME ( FEM_ADAPT_COARSEN  ,
fem_adapt_coarsen   
)

void FEM_ADAPT_AdaptMesh ( int  meshID,
int  qm,
int  method,
double  factor,
double *  sizes 
)

Definition at line 46 of file fem_adapt_if.C.

References FEM_Adapt_Algs::FEM_AdaptMesh(), femMeshModify::getfmAdaptAlgs(), FEM_Mesh::getfmMM(), and mesh.

Referenced by FTN_NAME().

Here is the call graph for this function:

Here is the caller graph for this function:

FLINKAGE void FTN_NAME ( FEM_ADAPT_ADAPTMESH  ,
fem_adapt_adaptmesh   
)

void FEM_ADAPT_SetElementSizeField ( int  meshID,
int  elem,
double  size 
)

Definition at line 58 of file fem_adapt_if.C.

References FEM_Mesh::elem.

Referenced by FTN_NAME().

Here is the caller graph for this function:

FLINKAGE void FTN_NAME ( FEM_ADAPT_SETELEMENTSIZEFIELD  ,
fem_adapt_setelementsizefield   
)

void FEM_ADAPT_SetElementsSizeField ( int  meshID,
double *  sizes 
)

Definition at line 68 of file fem_adapt_if.C.

References FEM_Mesh::elem, and FEM_Entity_Types< T >::size().

Referenced by FTN_NAME().

Here is the call graph for this function:

Here is the caller graph for this function:

FLINKAGE void FTN_NAME ( FEM_ADAPT_SETELEMENTSSIZEFIELD  ,
fem_adapt_setelementssizefield   
)

void FEM_ADAPT_SetReferenceMesh ( int  meshID  ) 

Definition at line 81 of file fem_adapt_if.C.

References femMeshModify::getfmAdaptAlgs(), FEM_Mesh::getfmMM(), mesh, and FEM_Adapt_Algs::SetReferenceMesh().

Referenced by FTN_NAME().

Here is the call graph for this function:

Here is the caller graph for this function:

FLINKAGE void FTN_NAME ( FEM_ADAPT_SETREFERENCEMESH  ,
fem_adapt_setreferencemesh   
)

Definition at line 85 of file fem_adapt_if.C.

References FEM_ADAPT_SetReferenceMesh().

Here is the call graph for this function:

void FEM_ADAPT_GradateMesh ( int  meshID,
double  smoothness 
)

Definition at line 91 of file fem_adapt_if.C.

References femMeshModify::getfmAdaptAlgs(), FEM_Mesh::getfmMM(), FEM_Adapt_Algs::GradateMesh(), and mesh.

Referenced by FTN_NAME().

Here is the call graph for this function:

Here is the caller graph for this function:

FLINKAGE void FTN_NAME ( FEM_ADAPT_GRADATEMESH  ,
fem_adapt_gradatemesh   
)

void FEM_ADAPT_TestMesh ( int  meshID  ) 

Definition at line 136 of file adapt_if.C.

References femMeshModify::getfmAdaptAlgs(), FEM_Mesh::getfmMM(), mesh, and FEM_Adapt_Algs::tests().

Referenced by FTN_NAME().

Here is the call graph for this function:

Here is the caller graph for this function:

FLINKAGE void FTN_NAME ( FEM_ADAPT_TESTMESH  ,
fem_adapt_testmesh   
)

Definition at line 140 of file adapt_if.C.

References FEM_ADAPT_TestMesh().

Here is the call graph for this function:

int FEM_ADAPT_SimpleRefineMesh ( int  meshID,
double  targetA,
double  xmin = 0.0,
double  ymin = 0.0,
double  xmax = 1.0,
double  ymax = 1.0 
)

Definition at line 145 of file adapt_if.C.

References femMeshModify::getfmAdaptAlgs(), FEM_Mesh::getfmMM(), mesh, and FEM_Adapt_Algs::simple_refine().

Referenced by FTN_NAME().

Here is the call graph for this function:

Here is the caller graph for this function:

FLINKAGE void FTN_NAME ( FEM_ADAPT_SIMPLEREFINEMESH  ,
fem_adapt_simplerefinemesh   
)

int FEM_ADAPT_SimpleCoarsenMesh ( int  meshID,
double  targetA,
double  xmin = 0.0,
double  ymin = 0.0,
double  xmax = 1.0,
double  ymax = 1.0 
)

Definition at line 154 of file adapt_if.C.

References femMeshModify::getfmAdaptAlgs(), FEM_Mesh::getfmMM(), mesh, and FEM_Adapt_Algs::simple_coarsen().

Referenced by FTN_NAME().

Here is the call graph for this function:

Here is the caller graph for this function:

FLINKAGE void FTN_NAME ( FEM_ADAPT_SIMPLECOARSENMESH  ,
fem_adapt_simplecoarsenmesh   
)

void ParFUM_SA_Init ( int  meshId  ) 

User functions for parfum initialization.

Definition at line 20 of file ParFUM_SA.C.

References CkArrayOptions::bindTo(), comm, FEM_Mesh_allocate_valid_attr(), TCharm::get(), TCharm::getProxy(), idx, FEM_Entity::lookup(), PUP::m, meshSA, MPI_Bcast, MPI_Comm_rank, msg, FEM_Mesh::node, and size.

Referenced by Bulk_Adapt::Bulk_Adapt_Init().

Here is the call graph for this function:

Here is the caller graph for this function:

FLINKAGE void FTN_NAME ( PARFUM_SA_INIT  ,
parfum_sa_init   
)

CtvExtern ( FEM_Adapt_Algs ,
_adaptAlgs   
)

PUPmarshall ( FEM_Attribute   ) 

A single table of user data associated with an entity.

Describes a single table of user data associated with an entity. Since the data can be of any type, it is stored as chars.

Non-NULL for getDatatype==FEM_BYTE

Non-NULL for getDatatype==FEM_INT

Non-NULL for getDatatype==FEM_FLOAT

Non-NULL for getDatatype==FEM_DOUBLE

Copy src[srcEntity] into our dstEntity.

extrapolate the values of a node from 2 others

Extrapolate the value of D from A and B (using the fraction 'frac')

extrapolate the values of a node from some others

Same as above except the the original nodes are send in an array

Definition at line 507 of file ParFUM_internals.h.

References caller, datatype, dest, firstItem, length, max(), p, PUP::pup(), src, and width().

Here is the call graph for this function:

PUPmarshall ( FEM_DataAttribute   ) 

The FEM_Attribute is of type integer indices.

This table maps an entity to a set of integer indices. The canonical example of this is the element-node connectivity array.

Checks incoming indices for validity.

Check this (newly set) row of our table for validity. You're expected to abort or throw or exit if something is wrong.

Checks indices (or NULL). This attribute will destroy this object

Copy src[srcEntity] into our dstEntity.

Definition at line 567 of file ParFUM_internals.h.

References caller, check(), datatype, dest, firstItem, idx, length, max(), p, PUP::pup(), src, and width().

Here is the call graph for this function:

PUPmarshall ( FEM_IndexAttribute   ) 

The FEM_Attribute is a variable set of integer indices.

This table maps an entity to a list of integer indices of unknown length. The node to element adjacency array is an example, where a node is mapped to a list of element indices of unknown length.

Definition at line 616 of file ParFUM_internals.h.

References caller, data, dest, firstItem, idx, CkVec< T >::insert(), length, p, print(), PUP::pup(), CkVec< T >::reserve(), CkVec< T >::size(), and src.

Here is the call graph for this function:

PUPmarshall ( FEM_Entity   ) 

Definition at line 977 of file ParFUM_internals.h.

PUPmarshall ( FEM_Node   ) 

FEM_Elem is a type of FEM_Entity, which refers to elems.

Describes one kind of FEM elements--the FEM_ELEM entity type. Elements are typically the central user-visible object in a FEM computation.

< FEM_CONN attribute: element-to-node mapping

< FEM_ELEM_ELEM_ADJACENCY attribute

< FEM_ELEM_ELEM_ADJ_TYPES attribute

Definition at line 1038 of file ParFUM_internals.h.

References FEM_Attribute::attr, caller, conn, elem, idx, p, print(), FEM_Attribute::pup(), src, and type.

Here is the call graph for this function:

PUPmarshall ( FEM_Elem   ) 

FEM_Sparse is a type of FEM_Entity, which refers to edges.

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. Sparse data is associated with some subset of the nodes in the mesh, and gets copied to every chunk that has all those nodes. The canonical use of sparse data is to describe boundary conditions.

elem, from FEM_SPARSE_ELEM, is an optional (that is, possibly NULL) array which changes the partitioning of sparse entities: if non-NULL, sparse entity t lives on the same chunk as FEM_ELEM+elem[2*t] local number elem[2*t+1].

This attribute's width is always 2.

Return true if we have an element partitioning table

Directly access our element partitioning table (e.g., for re-numbering)

Definition at line 1087 of file ParFUM_internals.h.

References FEM_Attribute::attr, caller, elem, mesh, p, and FEM_Attribute::pup().

Here is the call graph for this function:

PUPmarshall ( FEM_Sparse   ) 

Describes a user function to pup a piece of mesh data.

Call user's pup routine using this PUP::er

Definition at line 1130 of file ParFUM_internals.h.

References data, p, and FEM_Attribute::pup().

Here is the call graph for this function:

void FEM_Index_Check ( const char *  caller,
const char *  entityType,
int  type,
int  maxType 
)

Definition at line 1869 of file fem_mesh.C.

References FEM_Abort(), and msg.

Referenced by FEM_Entity_Types< FEM_Elem >::get(), and FEM_Entity_Types< FEM_Elem >::set().

Here is the call graph for this function:

Here is the caller graph for this function:

void FEM_Is_NULL ( const char *  caller,
const char *  entityType,
int  type 
)

Definition at line 1877 of file fem_mesh.C.

References FEM_Abort(), and msg.

Referenced by FEM_Entity_Types< FEM_Elem >::get().

Here is the call graph for this function:

Here is the caller graph for this function:

int zeroToMinusOne ( int  i  )  [inline]

Map fortran element (>=1) or node (0) marker to C version (>=1, -1).

Definition at line 1271 of file ParFUM_internals.h.

PUPmarshall ( FEM_Mesh   ) 

FEM_Entity* FEM_Entity_lookup ( int  fem_mesh,
int  entity,
const char *  caller 
)

FEM_Attribute* FEM_Attribute_lookup ( int  fem_mesh,
int  entity,
int  attr,
const char *  caller 
)

void FEM_Mesh_data_layout ( int  fem_mesh,
int  entity,
int  attr,
void *  data,
int  firstItem,
int  length,
const IDXL_Layout layout 
)

void FEM_Register_array_layout ( int  fem_mesh,
int  entity,
int  attr,
void *  data,
int  firstItem,
const IDXL_Layout layout 
)

void FEM_Register_entity_impl ( int  fem_mesh,
int  entity,
void *  args,
int  len,
int  max,
FEM_Mesh_alloc_fn  fn 
)

FILE* FEM_openMeshFile ( const char *  prefix,
int  chunkNo,
int  nchunks,
bool  forRead 
)

Definition at line 1907 of file fem_mesh.C.

References FEM_Abort(), and xi::fname.

Referenced by FEM_readMesh(), and FEM_writeMesh().

Here is the call graph for this function:

Here is the caller graph for this function:

FEM_Mesh* FEM_readMesh ( const char *  prefix,
int  chunkNo,
int  nChunks 
)

void FEM_writeMesh ( FEM_Mesh m,
const char *  prefix,
int  chunkNo,
int  nChunks 
)

Definition at line 1971 of file fem_mesh.C.

References FEM_openMeshFile(), p, FEM_Mesh::pup(), and write_version().

Here is the call graph for this function:

FEM_Partition& FEM_curPartition ( void   ) 

void FEM_Mesh_partition ( const FEM_Mesh mesh,
int  nchunks,
int elem2chunk,
bool  faceGraph = false 
)

int* CkCopyArray ( const int src,
int  len,
int  indexBase 
)

void mesh2graph ( const FEM_Mesh m,
Graph g 
)

Definition at line 170 of file partition.C.

References Graph::add(), FEM_Mesh::elem, FEM_Entity_Types< T >::has(), n, FEM_Mesh::node, FEM_Entity_Types< T >::size(), FEM_Entity::size(), and PUP::t.

Here is the call graph for this function:

void mesh2graph_face ( const FEM_Mesh m,
Graph g 
)

Given an FEM_Mesh, determine all pairs of elements which share a common face, and add them as edges to the provided graph.

We guess at what the element faces look like based on the number of nodes per element, so for quad meshes we'll incorrectly guess tets. Note that this function will only work for properly oriented graphs, whereas mesh2graph will always work, at the cost of much larger, lower-quality graphs.

Definition at line 210 of file partition.C.

References Graph::add(), FEM_Mesh::elem, Graph::elems(), faceMap2d_tri, faceMap3d_hex, faceMap3d_tet, FEM_Entity_Types< T >::has(), std::inserter(), FEM_Entity_Types< T >::size(), and type.

Referenced by FEM_Mesh_partition().

Here is the call graph for this function:

Here is the caller graph for this function:

void FEM_Ghost_Stencil::check ( const FEM_Mesh mesh  )  const [inherited]

Make sure this stencil makes sense for this mesh.

Definition at line 84 of file map.C.

References FEM_Ghost_Stencil::adj, checkEquality(), checkRange(), FEM_Mesh::chkET(), FEM_Mesh::elem, elem, FEM_Ghost_Stencil::elType, FEM_Ghost_Stencil::ends, PUP::m, FEM_Ghost_Stencil::n, FEM_Entity_Types< T >::size(), and PUP::t.

Referenced by splitter::addStencil().

Here is the call graph for this function:

Here is the caller graph for this function:

splitter::splitter ( FEM_Mesh mesh_,
const int elem2chunk_,
int  nChunks_ 
) [inherited]

splitter::~splitter (  )  [inherited]

void splitter::buildCommLists ( void   )  [inherited]

void splitter::aboutToCreate ( void   )  [inherited]

Definition at line 371 of file map.C.

References FEM_Mesh::elem, splitter::gElem, splitter::mesh, FEM_Entity_Types< T >::size(), and PUP::t.

Referenced by FEM_Mesh_split().

Here is the call graph for this function:

Here is the caller graph for this function:

FEM_Mesh * splitter::createMesh ( int  c  )  [inherited]

void splitter::copySparseChunks ( const FEM_Sparse &  src,
int  s,
bool  forGhost 
) [private, inherited]

Copy the global sparse record src[s] into all the chunks it belongs in.

Definition at line 461 of file map.C.

References chunkList::chunk, splitter::copySparse(), splitter::elem2chunk, FEM_Abort(), splitter::gElem, FEM_Mesh::getGlobalElem(), splitter::gNode, chunkList::localNo, splitter::mesh, chunkList::next, noSymmetries, chunkList::onChunk(), splitter::sym, chunkList::sym, and PUP::t.

Referenced by splitter::separateSparse().

Here is the call graph for this function:

Here is the caller graph for this function:

void splitter::separateSparse ( bool  forGhost  )  [inherited]

void splitter::addGhosts ( const FEM_Partition partition  )  [inherited]

void splitter::addStencil ( const FEM_Ghost_Stencil s,
const FEM_Partition partition 
) [private, inherited]

Add a ghost stencil: an explicit list of needed ghosts.

Definition at line 632 of file map.C.

References splitter::addGlobalGhost(), FEM_Ghost_Stencil::check(), FEM_Mesh::elem, FEM_Ghost_Stencil::getNeighbor(), FEM_Ghost_Stencil::getType(), splitter::mesh, n, FEM_Entity_Types< T >::size(), PUP::t, and FEM_Ghost_Stencil::wantNodes().

Referenced by splitter::addGhosts().

Here is the call graph for this function:

Here is the caller graph for this function:

void splitter::addGlobalGhost ( int  srcType,
int  srcNum,
int  destType,
int  destNum,
bool  doAddNodes 
) [private, inherited]

Add the real element (srcType,srcNum) as a ghost for use by (destType,destNum).

This routine is used in adding stencils.

Definition at line 650 of file map.C.

References splitter::addGhostPair(), chunkList::chunk, splitter::curGhostLayerNo, dest, splitter::gElem, chunkList::localNo, and src.

Referenced by splitter::addStencil().

Here is the call graph for this function:

Here is the caller graph for this function:

void splitter::addLayer ( const FEM_Ghost_Layer g,
const FEM_Partition partition 
) [private, inherited]

bool splitter::addTuple ( int dest,
FEM_Symmetries_t destSym,
const int elem2tuple,
int  nodesPerTuple,
const int conn 
) const [private, inherited]

Return an elemList entry if this tuple should be a ghost:.

Definition at line 719 of file map.C.

References splitter::canon, splitter::ghostNode, n, and splitter::sym.

Referenced by splitter::addLayer().

Here is the caller graph for this function:

void splitter::addSymmetryGhost ( const elemList a  )  [private, inherited]

Add this ghost, which arrises because of a mirror symmetry condition.

Definition at line 744 of file map.C.

References elemList::sym.

Referenced by splitter::addLayer().

Here is the caller graph for this function:

void splitter::addGhostPair ( const elemList src,
const elemList dest,
bool  addNodes 
) [private, inherited]

Check if src should be added as a ghost on dest's chunk.

Add a record for this ordered pair of adjacent elements: Consider adding the real element src as a ghost element on dest's chunk.

Calls addGhostElement and addGhostNode.

Src and dest do *not* need to have the same type, but they will be adjacent.

If either of src and dest have symmetries, both must have symmetries.

Definition at line 759 of file map.C.

References splitter::addGhostElement(), splitter::addGhostNode(), splitter::canon, elemList::chunk, splitter::chunks, dt, splitter::dyn, elem, FEM_Mesh::elem, dynChunk::elem, FEM_Abort(), splitter::ghostNode, splitter::gNode, elemList::localNo, chunkList::localOnChunk(), splitter::mesh, noSymmetries, elemList::sym, PUP::t, and elemList::type.

Referenced by splitter::addGlobalGhost(), and splitter::addLayer().

Here is the call graph for this function:

Here is the caller graph for this function:

int splitter::addGhostElement ( int  t,
int  gNo,
int  srcChunk,
int  destChunk,
FEM_Symmetries_t  sym 
) [private, inherited]

Add this global element as a ghost between src and dest, or return -1.

Definition at line 821 of file map.C.

References splitter::addGhostInner(), splitter::chunks, FEM_Mesh::elem, elem, splitter::gElem, splitter::mesh, and splitter::totGhostElem.

Referenced by splitter::addGhostPair().

Here is the call graph for this function:

Here is the caller graph for this function:

int splitter::addGhostNode ( int  gnNo,
int  srcChunk,
int  destChunk,
FEM_Symmetries_t  sym 
) [private, inherited]

Add this global node as a ghost between src and dest, or return -1.

Definition at line 836 of file map.C.

References splitter::addGhostInner(), splitter::chunks, FEM_Entity::getGhost(), splitter::gNode, splitter::mesh, FEM_Mesh::node, and splitter::totGhostNode.

Referenced by splitter::addGhostPair().

Here is the call graph for this function:

Here is the caller graph for this function:

int splitter::addGhostInner ( const FEM_Entity gEnt,
int  gNo,
chunkList gDest,
int  srcChunk,
FEM_Entity srcEnt,
int  destChunk,
FEM_Entity destEnt,
FEM_Symmetries_t  sym,
int  isNode,
int  t 
) [private, inherited]

Utility used by addGhostNode and addGhostElement.

Add this global number (gEnt[gNo], with list gDest) as a ghost sent from srcChunk's real entity srcEnt, as a ghost recv'd at destChunk's ghost entity destEnt, under the symmetries sym.

Since this routine is so horrible, always use the wrapper routines addGhostNode or addGhostElem.

Returns the (non-ghostindex'd) index of this entity in dstEnt, or -1 if the ghost was not added.

Definition at line 860 of file map.C.

References IDXL_Side::add(), chunkList::addchunk(), chunkList::chunk, splitter::chunks, splitter::curGhostLayerNo, FEM_Mesh::elem, PUP::l, chunkList::localNo, chunkList::localOnChunk(), chunkList::next, FEM_Mesh::node, noSymmetries, chunkList::onChunk(), FEM_Entity::push_back(), FEM_Entity::setGhostRecv(), FEM_Entity::setGhostSend(), and FEM_Entity::setSymmetries().

Referenced by splitter::addGhostElement(), and splitter::addGhostNode().

Here is the call graph for this function:

Here is the caller graph for this function:

void splitter::consistencyCheck ( void   )  [inherited]

femMeshModify::femMeshModify ( femMeshModMsg fm  )  [inherited]

femMeshModify::femMeshModify ( CkMigrateMessage m  )  [inline, inherited]

Definition at line 339 of file fem_mesh_modify.h.

femMeshModify::~femMeshModify (  )  [inherited]

Definition at line 1850 of file fem_mesh_modify.C.

References femMeshModify::fmLock, and femMeshModify::fmUtil.

void femMeshModify::pup ( PUP::er p  )  [inherited]

void femMeshModify::ckJustMigrated ( void   )  [inherited]

This function is overloaded, it is called on this object just after migration.

Definition at line 2215 of file mesh_modify.C.

References c, ArrayElement::ckJustMigrated(), FEM_globalID, femMeshModify::fmMesh, FEM_Mesh::fmMM, FEM_chunk::getMesh(), femMeshModify::idx, femMeshModify::setPointersAfterMigrate(), TCharm::sud, femMeshModify::tc, and femMeshModify::tproxy.

Here is the call graph for this function:

void femMeshModify::setPointersAfterMigrate ( FEM_Mesh m  )  [inherited]

void femMeshModify::setFemMesh ( FEMMeshMsg fm  )  [inherited]

intMsg * femMeshModify::lockRemoteChunk ( int2Msg i2msg  )  [inherited]

Definition at line 1891 of file fem_mesh_modify.C.

References femMeshModify::fmLock, intMsg::i, int2Msg::i, int2Msg::j, and FEM_lock::lock().

Here is the call graph for this function:

intMsg * femMeshModify::unlockRemoteChunk ( int2Msg i2msg  )  [inherited]

Definition at line 1898 of file fem_mesh_modify.C.

References femMeshModify::fmLock, intMsg::i, int2Msg::i, int2Msg::j, and FEM_lock::unlock().

Here is the call graph for this function:

intMsg * femMeshModify::lockRemoteNode ( int  sharedIdx,
int  fromChk,
int  isGhost,
int  readLock 
) [inherited]

Definition at line 1905 of file fem_mesh_modify.C.

References CmiMemoryCheck(), femMeshModify::fmLockN, femMeshModify::fmMesh, femMeshModify::fmUtil, intMsg::i, and FEM_MUtil::lookup_in_IDXL().

Here is the call graph for this function:

intMsg * femMeshModify::unlockRemoteNode ( int  sharedIdx,
int  fromChk,
int  isGhost,
int  readLock 
) [inherited]

Definition at line 1947 of file fem_mesh_modify.C.

References CmiMemoryCheck(), femMeshModify::fmLockN, femMeshModify::fmMesh, femMeshModify::fmUtil, intMsg::i, and FEM_MUtil::lookup_in_IDXL().

Here is the call graph for this function:

chunkListMsg * femMeshModify::getChunksSharingGhostNode ( int2Msg i2m  )  [inherited]

Definition at line 2057 of file fem_mesh_modify.C.

References CmiMemoryCheck(), femMeshModify::fmMesh, femMeshModify::fmUtil, FEM_MUtil::getChunksSharingGhostNodeRemote(), int2Msg::i, and int2Msg::j.

Here is the call graph for this function:

intMsg * femMeshModify::addNodeRemote ( addNodeMsg fm  )  [inherited]

void femMeshModify::addSharedNodeRemote ( sharedNodeMsg fm  )  [inherited]

Definition at line 2024 of file fem_mesh_modify.C.

References sharedNodeMsg::between, sharedNodeMsg::chk, CmiMemoryCheck(), FEM_add_shared_node_remote(), femMeshModify::fmMesh, and sharedNodeMsg::nBetween.

Here is the call graph for this function:

void femMeshModify::removeSharedNodeRemote ( removeSharedNodeMsg fm  )  [inherited]

void femMeshModify::removeGhostNode ( int  fromChk,
int  sharedIdx 
) [inherited]

Definition at line 2102 of file fem_mesh_modify.C.

References CmiMemoryCheck(), femMeshModify::fmMesh, femMeshModify::fmUtil, and FEM_MUtil::removeGhostNodeRemote().

Here is the call graph for this function:

void femMeshModify::addGhostElem ( addGhostElemMsg fm  )  [inherited]

intMsg * femMeshModify::addElementRemote ( addElemMsg fm  )  [inherited]

void femMeshModify::removeGhostElem ( removeGhostElemMsg fm  )  [inherited]

void femMeshModify::removeElementRemote ( removeElemMsg fm  )  [inherited]

intMsg * femMeshModify::eatIntoElement ( int  fromChk,
int  sharedIdx 
) [inherited]

intMsg * femMeshModify::getLockOwner ( int  fromChk,
int  sharedIdx 
) [inherited]

Definition at line 2185 of file fem_mesh_modify.C.

References femMeshModify::fmMesh, femMeshModify::fmUtil, FEM_MUtil::getLockOwner(), and FEM_MUtil::lookup_in_IDXL().

Here is the call graph for this function:

boolMsg * femMeshModify::knowsAbtNode ( int  fromChk,
int  toChk,
int  sharedIdx 
) [inherited]

Definition at line 2192 of file fem_mesh_modify.C.

References femMeshModify::fmMesh, femMeshModify::fmUtil, FEM_MUtil::knowsAbtNode(), and FEM_MUtil::lookup_in_IDXL().

Here is the call graph for this function:

void femMeshModify::refine_flip_element_leb ( int  fromChk,
int  propElemT,
int  propNodeT,
int  newNodeT,
int  nbrOpNodeT,
int  nbrghost,
double  longEdgeLen 
) [inherited]

void femMeshModify::addToSharedList ( int  fromChk,
int  sharedIdx 
) [inherited]

Definition at line 2224 of file fem_mesh_modify.C.

References FEM_MUtil::addToSharedList(), CmiMemoryCheck(), femMeshModify::fmMesh, and femMeshModify::fmUtil.

Here is the call graph for this function:

void femMeshModify::updateAttrs ( updateAttrsMsg umsg  )  [inherited]

void femMeshModify::updateghostsend ( verifyghostsendMsg vmsg  )  [inherited]

findgsMsg * femMeshModify::findghostsend ( int  fromChk,
int  sharedIdx 
) [inherited]

intMsg * femMeshModify::getIdxGhostSend ( int  fromChk,
int  idxshared,
int  toChk 
) [inherited]

double2Msg * femMeshModify::getRemoteCoord ( int  fromChk,
int  ghostIdx 
) [inherited]

intMsg * femMeshModify::getRemoteBound ( int  fromChk,
int  ghostIdx 
) [inherited]

Definition at line 2278 of file fem_mesh_modify.C.

References CmiMemoryCheck(), PUP::d, FEM_Mesh_dataP(), femMeshModify::fmMesh, femMeshModify::fmUtil, and FEM_MUtil::lookup_in_IDXL().

Here is the call graph for this function:

void femMeshModify::updateIdxlList ( int  fromChk,
int  idxTrans,
int  transChk 
) [inherited]

void femMeshModify::removeIDXLRemote ( int  fromChk,
int  sharedIdx,
int  type 
) [inherited]

void femMeshModify::addTransIDXLRemote ( int  fromChk,
int  sharedIdx,
int  type 
) [inherited]

void femMeshModify::verifyIdxlList ( int  fromChk,
int  size,
int  type 
) [inherited]

Definition at line 2355 of file fem_mesh_modify.C.

References CmiMemoryCheck(), femMeshModify::fmMesh, femMeshModify::fmUtil, and FEM_MUtil::verifyIdxlListRemote().

Here is the call graph for this function:

void femMeshModify::idxllockRemote ( int  fromChk,
int  type 
) [inherited]

Definition at line 2366 of file fem_mesh_modify.C.

References CmiMemoryCheck(), femMeshModify::fmMesh, femMeshModify::fmUtil, and FEM_MUtil::idxllockLocal().

Here is the call graph for this function:

void femMeshModify::idxlunlockRemote ( int  fromChk,
int  type 
) [inherited]

Definition at line 2381 of file fem_mesh_modify.C.

References CmiMemoryCheck(), femMeshModify::fmMesh, femMeshModify::fmUtil, and FEM_MUtil::idxlunlockLocal().

Here is the call graph for this function:

intMsg * femMeshModify::hasLockRemoteNode ( int  sharedIdx,
int  fromChk,
int  isGhost 
) [inherited]

Definition at line 1972 of file fem_mesh_modify.C.

References CmiMemoryCheck(), femMeshModify::fmLockN, femMeshModify::fmMesh, femMeshModify::fmUtil, intMsg::i, and FEM_MUtil::lookup_in_IDXL().

Here is the call graph for this function:

void femMeshModify::modifyLockAll ( int  fromChk,
int  sharedIdx 
) [inherited]

Definition at line 1992 of file fem_mesh_modify.C.

References FEM_Modify_LockAll(), femMeshModify::fmMesh, femMeshModify::fmUtil, and FEM_MUtil::lookup_in_IDXL().

Here is the call graph for this function:

boolMsg * femMeshModify::verifyLock ( int  fromChk,
int  sharedIdx,
int  isGhost 
) [inherited]

Definition at line 2396 of file fem_mesh_modify.C.

References boolMsg::b, femMeshModify::fmLockN, femMeshModify::fmMesh, femMeshModify::fmUtil, and FEM_MUtil::lookup_in_IDXL().

Here is the call graph for this function:

void femMeshModify::verifyghostsend ( verifyghostsendMsg vmsg  )  [inherited]

boolMsg * femMeshModify::shouldLoseGhost ( int  fromChk,
int  sharedIdx,
int  toChk 
) [inherited]

void femMeshModify::addghostsendl ( int  fromChk,
int  sharedIdx,
int  toChk,
int  transIdx 
) [inherited]

The node index is the sharedIdx with 'fromChk' This local node index is then to be send as a ghost to 'toChk'.

Definition at line 2470 of file fem_mesh_modify.C.

References IDXL_Side::addNode(), FEM_MUtil::exists_in_IDXL(), femMeshModify::fmMesh, femMeshModify::fmUtil, FEM_Entity::ghostSend, femMeshModify::idx, FEM_MUtil::lookup_in_IDXL(), meshMod, and FEM_Mesh::node.

Here is the call graph for this function:

void femMeshModify::addghostsendl1 ( int  fromChk,
int  transChk,
int  transIdx 
) [inherited]

The node index is obtained as a the ghost received from 'transChk' at 'transIdx'.

Definition at line 2481 of file fem_mesh_modify.C.

References IDXL_Side::addNode(), femMeshModify::fmMesh, femMeshModify::fmUtil, FEM_Entity::ghost, FEM_Entity::ghostRecv, FEM_MUtil::lookup_in_IDXL(), and FEM_Mesh::node.

Here is the call graph for this function:

void femMeshModify::addghostsendr ( int  fromChk,
int  sharedIdx,
int  toChk,
int  transIdx 
) [inherited]

The node is the obtained on the ghost recv list from 'fromChk' at 'sharedIdx' index.

Definition at line 2486 of file fem_mesh_modify.C.

References IDXL_Side::addNode(), FEM_MUtil::exists_in_IDXL(), femMeshModify::fmMesh, femMeshModify::fmUtil, FEM_Entity::ghost, FEM_Entity::ghostRecv, femMeshModify::idx, FEM_MUtil::lookup_in_IDXL(), meshMod, and FEM_Mesh::node.

Here is the call graph for this function:

void femMeshModify::addghostsendr1 ( int  fromChk,
int  transChk,
int  transIdx 
) [inherited]

The local node index is obtained on the shared list of 'transChk' at 'transIdx'.

Definition at line 2497 of file fem_mesh_modify.C.

References IDXL_Side::addNode(), femMeshModify::fmMesh, femMeshModify::fmUtil, FEM_Entity::ghostSend, FEM_MUtil::lookup_in_IDXL(), and FEM_Mesh::node.

Here is the call graph for this function:

boolMsg * femMeshModify::willItLose ( int  fromChk,
int  sharedIdx 
) [inherited]

Definition at line 2502 of file fem_mesh_modify.C.

References FEM_Mesh::e2n_getAll(), femMeshModify::fmMesh, femMeshModify::fmUtil, FEM_MUtil::lookup_in_IDXL(), and FEM_Mesh::n2e_getAll().

Here is the call graph for this function:

void femMeshModify::interpolateElemCopy ( int  fromChk,
int  sharedIdx1,
int  sharedIdx2 
) [inherited]

The two local elements indices are obtained from the ghost send list to 'fromChk' Data is copied from the first element to the second.

Definition at line 2525 of file fem_mesh_modify.C.

References FEM_MUtil::copyElemData(), femMeshModify::fmMesh, femMeshModify::fmUtil, and FEM_MUtil::lookup_in_IDXL().

Here is the call graph for this function:

void femMeshModify::cleanupIDXL ( int  fromChk,
int  sharedIdx 
) [inherited]

Definition at line 2532 of file fem_mesh_modify.C.

References FEM_Mesh::elem, FEM_MUtil::exists_in_IDXL(), femMeshModify::fmMesh, femMeshModify::fmUtil, and FEM_MUtil::lookup_in_IDXL().

Here is the call graph for this function:

void femMeshModify::purgeElement ( int  fromChk,
int  sharedIdx 
) [inherited]

Definition at line 2539 of file fem_mesh_modify.C.

References FEM_purge_element(), femMeshModify::fmMesh, femMeshModify::fmUtil, and FEM_MUtil::lookup_in_IDXL().

Here is the call graph for this function:

entDataMsg * femMeshModify::packEntData ( int  fromChk,
int  sharedIdx,
bool  isnode = false,
int  elemType = 0 
) [inherited]

Pack the data from this element/node and return it.

Definition at line 2875 of file mesh_modify.C.

References count, entDataMsg::data, data, femMeshModify::fmMesh, femMeshModify::fmUtil, free(), FEM_MUtil::lookup_in_IDXL(), FEM_MUtil::packEntData(), and femMeshModify::tc.

Here is the call graph for this function:

boolMsg * femMeshModify::isFixedNodeRemote ( int  fromChk,
int  sharedIdx 
) [inherited]

Is this node a fixed node on this chunk.

Definition at line 2894 of file mesh_modify.C.

References femMeshModify::fmfixedNodes, femMeshModify::fmMesh, femMeshModify::fmUtil, FEM_MUtil::lookup_in_IDXL(), CkVec< T >::size(), and femMeshModify::tc.

Here is the call graph for this function:

void femMeshModify::finish ( void   )  [inherited]

Definition at line 2908 of file mesh_modify.C.

References femMeshModify::idx.

void femMeshModify::finish1 ( void   )  [inherited]

Definition at line 2913 of file mesh_modify.C.

References meshMod.

FEM_chunk * FEM_chunk::get ( const char *  caller  )  [static, inherited]

void FEM_chunk::exchangeGhostLists ( int  elemType,
int  inLen,
const int inList,
int  idxbase 
) [inherited]

void FEM_Entity::print ( const char *  type,
const IDXL_Print_Map map 
) [inherited]

Reimplemented in FEM_Node, and FEM_Node.

Definition at line 1347 of file fem.C.

References FEM_Entity::ghost, and FEM_Entity::size().

Here is the call graph for this function:

void FEM_Node::print ( const char *  type,
const IDXL_Print_Map map 
) [inherited]

Reimplemented from FEM_Entity.

Definition at line 1356 of file fem.C.

References FEM_Node::getPrimary(), print(), and FEM_Entity::size().

Here is the call graph for this function:

void FEM_Mesh::print ( int  idxBase  )  [inherited]

Definition at line 1385 of file fem.C.

References FEM_Mesh::elem, FEM_Entity_Types< T >::has(), name, FEM_Entity_Types< T >::size(), FEM_Mesh::sparse, and PUP::t.

Referenced by FEM_master_parallel_part(), makeGhost(), FEM_chunk::print(), and FEMchunk::print().

Here is the call graph for this function:

Here is the caller graph for this function:

void FEM_chunk::print ( int  fem_mesh,
int  idxBase 
) [inherited]

Definition at line 1474 of file ParFUM.C.

References FEM_chunk::lookup(), FEM_Mesh::print(), and FEM_chunk::thisIndex.

Here is the call graph for this function:

int FEM_Attribute::getRealLength ( void   )  const [inline, inherited]

Definition at line 850 of file fem_mesh.h.

References FEM_Attribute::e, and FEM_Entity::realsize().

Referenced by FEM_Attribute::set(), and FEM_Attribute::tryAllocate().

Here is the call graph for this function:

Here is the caller graph for this function:

int FEM_Attribute::getMax ( void   )  [inline, inherited]

Definition at line 851 of file fem_mesh.h.

References FEM_Attribute::e, and FEM_Entity::getMax().

Referenced by FEM_Attribute::tryAllocate().

Here is the call graph for this function:

Here is the caller graph for this function:

int NList::cmp ( const void *  v1,
const void *  v2 
) [static, private, inherited]

Definition at line 72 of file partition.C.

References e1.

Referenced by NList::sort().

Here is the caller graph for this function:

void NList::add ( int  elt  )  [inherited]

Definition at line 81 of file partition.C.

References NList::elts, NList::nn, and NList::sn.

Referenced by Graph::add(), and Nodes::add().

Here is the caller graph for this function:

int NList::found ( int  elt  )  [inherited]

Definition at line 100 of file partition.C.

References NList::elts, and NList::nn.

Nodes::Nodes ( int  _nnodes  )  [inherited]

Definition at line 110 of file partition.C.

References Nodes::elts, NList::init(), and Nodes::nnodes.

Here is the call graph for this function:

void Nodes::add ( int  node,
int  elem 
) [inherited]

Definition at line 120 of file partition.C.

References NList::add(), assert, Nodes::elts, and Nodes::nnodes.

Here is the call graph for this function:

Graph::Graph ( int  elems  )  [inherited]

Definition at line 126 of file partition.C.

References NList::init(), Graph::nbrs, and Graph::nelems.

Here is the call graph for this function:

void Graph::add ( int  elem1,
int  elem2 
) [inherited]

Definition at line 137 of file partition.C.

References NList::add(), assert, Graph::nbrs, and Graph::nelems.

Referenced by mesh2graph(), and mesh2graph_face().

Here is the call graph for this function:

Here is the caller graph for this function:

void Graph::toAdjList ( int *&  adjStart,
int *&  adjList 
) [inherited]

Definition at line 152 of file partition.C.

References Graph::elems(), NList::getelt(), Graph::nbrs, and Graph::nelems.

Referenced by FEM_Mesh_partition().

Here is the call graph for this function:

Here is the caller graph for this function:


Variable Documentation

CProxy_femMeshModify meshMod

File: fem_mesh_modify.C Authors: Nilesh Choudhury, Isaac Dooley.

This file contains a set of functions, which allow primitive operations upon meshes in parallel. See the assumptions listed in fem_mesh_modify.h before using these functions.

It also contains a shadow array class that is attached to a chunk and handles all remote communication between chunks (needed for adaptivity)

Definition at line 21 of file mesh_modify.C.

double elemlistaccTime = 0

This file contains code for parallely partitioning the initial mesh into multiple chunks It uses PARMETIS to do the actual partitioning.

It also uses the MSA framework to do data transfer. Author Sayantan Chakravorty 05/30/2004

Definition at line 21 of file parallel_part.C.

Referenced by FEM_master_parallel_part(), and ElemList< T >::operator+=().

double listSearchTime = 0

Definition at line 696 of file parallel_part.C.

Referenced by listContains(), and makeGhosts().

double sharedSearchTime = 0

Definition at line 697 of file parallel_part.C.

Referenced by makeGhosts(), and sharedWith().

Definition at line 18 of file ParFUM.C.

FEM_Partition* mypartition = NULL [static]

Definition at line 19 of file ParFUM.C.

PartitionMode FEM_Partition_Mode = SerialPartitionMode

Definition at line 26 of file ParFUM.C.

Referenced by FEM_Init(), and FEM_Mesh_broadcast().

Definition at line 32 of file ParFUM.C.

Referenced by FEM_Init().

Definition at line 153 of file ParFUM.C.

Definition at line 268 of file ParFUM.C.

const int* paneFmChunk

Definition at line 1279 of file ParFUM.C.

FLINKAGE void int* qm

Definition at line 465 of file ParFUM.h.

FLINKAGE void int int* method

Definition at line 465 of file ParFUM.h.

FLINKAGE void int int double* factor

Definition at line 465 of file ParFUM.h.

FLINKAGE void double* sizes

Definition at line 465 of file ParFUM.h.

FLINKAGE void int* elem

Definition at line 478 of file ParFUM.h.

FLINKAGE void int double* size

Definition at line 478 of file ParFUM.h.

FLINKAGE void double* smoothness

Definition at line 490 of file ParFUM.h.

FLINKAGE void double * targetA

Definition at line 498 of file ParFUM.h.

Referenced by FTN_NAME().

FLINKAGE void double double * xmin

Definition at line 498 of file ParFUM.h.

Referenced by FTN_NAME().

FLINKAGE void double double double * ymin

Definition at line 498 of file ParFUM.h.

Referenced by FTN_NAME().

FLINKAGE void double double double double * xmax

Definition at line 498 of file ParFUM.h.

Referenced by FTN_NAME().

FLINKAGE void double double double double double * ymax

Definition at line 498 of file ParFUM.h.

Referenced by FTN_NAME().

CProxy_femMeshModify meshMod

File: fem_mesh_modify.C Authors: Nilesh Choudhury, Isaac Dooley.

This file contains a set of functions, which allow primitive operations upon meshes in parallel. See the assumptions listed in fem_mesh_modify.h before using these functions.

It also contains a shadow array class that is attached to a chunk and handles all remote communication between chunks (needed for adaptivity)

Definition at line 15 of file fem_mesh_modify.C.

Referenced by FEM_MUtil::addGhostElementRemote(), femMeshModify::addghostsendl(), femMeshModify::addghostsendr(), FEM_MUtil::addToSharedList(), FEM_MUtil::eatIntoElement(), FEM_Adapt::edge_bisect_help(), FEM_AdaptL::edge_contraction_help(), FEM_Adapt::edge_flip_help(), FEM_add_element(), FEM_add_node(), FEM_Ghost_Essential_attributes(), FEM_Interpolate::FEM_InterpolateCopyAttributes(), FEM_Interpolate::FEM_InterpolateElementCopy(), FEM_Interpolate::FEM_InterpolateNodeOnEdge(), FEM_Modify_correctLockN(), FEM_Modify_LockAll(), FEM_Modify_LockN(), FEM_Modify_LockUpdate(), FEM_Modify_UnlockN(), FEM_MUtil::FEM_Print_coords(), FEM_purge_element(), FEM_REF_INIT(), FEM_remove_element(), FEM_remove_node_local(), femMeshModify::finish1(), FEM_Adapt_Algs::getCoord(), FEM_MUtil::getLockOwner(), FEM_MUtil::IdxlListTest(), FEM_MUtil::idxllock(), FEM_MUtil::idxlunlock(), FEM_Adapt::isCorner(), FEM_MUtil::knowsAbtNode(), FEM_lock::lock(), FEM_Adapt_Algs::refine_element_leb(), FEM_MUtil::removeNodeAll(), FEM_MUtil::splitEntityAll(), FEM_MUtil::splitEntitySharing(), FEM_MUtil::StructureTest(), FEM_lock::unlock(), and FEM_MUtil::UpdateGhostSend().

const char* caller

Definition at line 1520 of file ParFUM_internals.h.

Definition at line 2344 of file ParFUM_internals.h.

FLINKAGE void int * qm

Definition at line 16 of file fem_adapt_if.h.

Referenced by FTN_NAME().

FLINKAGE void int int * method

Definition at line 16 of file fem_adapt_if.h.

Referenced by FTN_NAME().

FLINKAGE void int int double * factor

FLINKAGE void double * sizes


Generated on Mon Sep 21 08:15:49 2020 for Charm++ by  doxygen 1.5.5