|
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 | DefaultListEntry< T, PUP_EVERY_ELEMENT > |
| class | ElemList< T > |
| class | UniqElemList< T > |
| class | NodeElem |
| class | MeshElem |
| This class is an MSA Entity. More... | |
| class | Hashnode |
| struct | conndata |
| struct | partconndata |
| Structure to store connectivity data after the global element partition has been returned by parmetis. More... | |
| struct | ghostdata |
| structure for storing the ghost layers More... | |
| class | 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< int > | intArrayPtr |
| typedef marshallNewHeapCopy < FEM_Mesh > | marshallMeshChunk |
| typedef MSA2D< int, DefaultEntry< int > , MSA_DEFAULT_ENTRIES_PER_PAGE, MSA_ROW_MAJOR > | MSA2DRM |
| typedef MSA1D< int, DefaultEntry< int > , MSA_DEFAULT_ENTRIES_PER_PAGE > | MSA1DINT |
| typedef UniqElemList< int > | IntList |
| typedef MSA1D< IntList, DefaultListEntry< IntList, true > , MSA_DEFAULT_ENTRIES_PER_PAGE > | MSA1DINTLIST |
| typedef UniqElemList< NodeElem > | NodeList |
| typedef MSA1D< NodeList, DefaultListEntry< NodeList, true > , MSA_DEFAULT_ENTRIES_PER_PAGE > | MSA1DNODELIST |
| typedef MSA1D< MeshElem, DefaultEntry< MeshElem, true >, 1 > | MSA1DFEMMESH |
| typedef double | Real |
| typedef int | idxtype |
Enumerations | |
| enum | { FEM_globalID = 33 } |
| enum | PartitionMode { SerialPartitionMode = 1, ParallelPartitionMode = 2, ManualPartitionMode } |
| enum | MetisGraphType { NodeNeighborMode, FaceNeighborMode } |
| enum | { FEM_globalID = 33 } |
Functions | |
| CDECL void | fem_impl_call_init (void) |
| FDECL void | FTN_NAME (INIT, init) |
| static void | checkEquality (const char *what, int v1, const char *src1, int v2, const char *src2) |
| static void | checkRange (const char *what, int v, int max) |
| static void | checkArrayEntries (const int *arr, int nArr, int max, const char *what) |
| static void | check (const FEM_Mesh *mesh) |
| static void | check (const FEM_Partition &partition, const FEM_Mesh *mesh) |
| void | FEM_Mesh_split (FEM_Mesh *mesh, int nChunks, const FEM_Partition &partition, FEM_Mesh_Output *out) |
| CkHashCode | CkHashFunction_ints (const void *keyData, size_t keyLen) |
| int | CkHashCompare_ints (const void *k1, const void *k2, size_t keyLen) |
| int | ck_fem_map_compare_int (const void *a, const void *b) |
| static void | renumberConn (const FEM_Elem &src_e, int l, FEM_Elem &dest_e, int g, const FEM_Mesh &mesh) |
| FEM_Mesh * | FEM_Mesh_assemble (int nchunks, FEM_Mesh **chunks) |
| Reassemble split chunks into a single mesh. | |
| int | is_shared (FEM_Mesh *m, int node) |
| A wrapper to simplify the lookup to determine whether a node is shared. | |
| CDECL void | FEM_Print_n2n (int mesh, int nodeid) |
| CDECL void | FEM_Print_n2e (int mesh, int eid) |
| CDECL void | FEM_Print_e2n (int mesh, int eid) |
| CDECL void | FEM_Print_e2e (int mesh, int eid) |
| CDECL void | FEM_Print_Mesh_Summary (int mesh) |
| Prints the mesh summary, i.e. | |
| CDECL int | FEM_add_node (int mesh, int *adjacent_nodes, int num_adjacent_nodes, int *chunks, int numChunks, int forceShared) |
| CDECL void | FEM_remove_node (int mesh, int node) |
| CDECL int | FEM_add_element (int mesh, int *conn, int conn_size, int elem_type, int chunkNo) |
| CDECL int | FEM_remove_element (int mesh, int element, int elem_type, int permanent) |
| CDECL int | FEM_purge_element (int mesh, int element, int elem_type) |
| int | FEM_add_node_local (FEM_Mesh *m, bool addGhost, bool doLocking, bool doAdjacencies) |
| 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) |
| 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. | |
| CDECL int | FEM_Modify_Lock (int mesh, int *affectedNodes, int numAffectedNodes, int *affectedElts, int numAffectedElts, int elemtype) |
| CDECL int | FEM_Modify_Unlock (int mesh) |
| CDECL int | FEM_Modify_LockN (int mesh, int nodeId, int readLock) |
| CDECL int | FEM_Modify_UnlockN (int mesh, int nodeId, int readLock) |
| int | FEM_Modify_Lock (FEM_Mesh *m, int *affectedNodes, int numAffectedNodes, int *affectedElts, int numAffectedElts, int elemtype) |
| 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 partconndata * | FEM_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_Mesh * | FEM_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 ghostdata * | gatherGhosts () |
| void | makeGhosts (FEM_Mesh *m, MPI_Comm comm, int masterRank, int numLayers, FEM_Ghost_Layer **layers) |
| bool | listContains (FEM_Comm_List &list, int entry) |
| void | makeGhost (FEM_Mesh *m, MPI_Comm comm, int masterRank, int totalShared, FEM_Ghost_Layer *layer, CkHashtableT< CkHashtableAdaptorT< int >, char > &sharedNode, CkHashtableT< CkHashtableAdaptorT< int >, int > &global2local) |
| bool | sharedWith (int lnode, int chunk, FEM_Mesh *m) |
| void | FEM_Abort (const char *msg) |
| void | FEM_Abort (const char *caller, const char *sprintf_msg, int int0, int int1, int int2) |
| CDECL void | pupFEM_Chunk (pup_er cp) |
| CDECL void | FEM_Init (FEM_Comm_t defaultCommunicator) |
| Initialize the FEM framework (must have called MPI_Init). | |
| FORTRAN_AS_C (FEM_INIT, FEM_Init, fem_init,(int *comm),(*comm)) void FEM_Mesh_list | |
| CDECL int | FEM_Mesh_allocate (void) |
| mesh creation functions | |
| FORTRAN_AS_C_RETURN (int, FEM_MESH_ALLOCATE, FEM_Mesh_allocate, fem_mesh_allocate,(void),()) | |
| Return a new'd copy of this class, by calling pup. | |
| CDECL int | FEM_Mesh_copy (int fem_mesh) |
| build new mesh | |
| FORTRAN_AS_C_RETURN (int, FEM_MESH_COPY, FEM_Mesh_copy, fem_mesh_copy,(int *m),(*m)) CDECL void FEM_Mesh_deallocate(int fem_mesh) | |
| FORTRAN_AS_C (FEM_MESH_DEALLOCATE, FEM_Mesh_deallocate, fem_mesh_deallocate,(int *m),(*m)) CDECL int FEM_Mesh_read(const char *prefix | |
| CDECL void | FEM_Mesh_partition (int fem_mesh, int nParts, int *destMeshes) |
| FORTRAN_AS_C (FEM_MESH_PARTITION, FEM_Mesh_partition, fem_mesh_partition,(int *mesh, int *nParts, int *dest),(*mesh,*nParts, dest)) CDECL int FEM_Mesh_recv(int fromRank | |
| CDECL int | FEM_Mesh_broadcast (int fem_mesh, int masterRank, FEM_Comm_t comm_context) |
| FORTRAN_AS_C_RETURN (int, FEM_MESH_BROADCAST, FEM_Mesh_broadcast, fem_mesh_broadcast,(int *mesh, int *rank, int *comm),(*mesh,*rank,*comm)) CDECL void FEM_Mesh_copy_globalno(int src_mesh | |
| n (n_) | |
| addNodes (addNodes_) | |
| ends (new int[n]) | |
| adj (new int[2 *userEnds[n-1]]) | |
| CDECL void | FEM_Add_ghost_stencil_type (int elType, int nElts, int addNodes, const int *ends, const int *adj2) |
| FDECL void | FTN_NAME (FEM_ADD_GHOST_STENCIL_TYPE, fem_add_ghost_stencil_type) |
| int | globalElem2elType (const FEM_Mesh *m, int globalElem) |
| CDECL void | FEM_Add_ghost_stencil (int nElts, int addNodes, const int *ends, const int *adj) |
| FDECL void | FTN_NAME (FEM_ADD_GHOST_STENCIL, fem_add_ghost_stencil) |
| CDECL void | FEM_Add_ghost_layer (int nodesPerTuple, int doAddNodes) |
| FDECL void | FTN_NAME (FEM_ADD_GHOST_LAYER, fem_add_ghost_layer) |
| static void | add_ghost_elem (int elType, int tuplesPerElem, const int *elem2tuple, int idxBase) |
| CDECL void | FEM_Add_ghost_elem (int elType, int tuplesPerElem, const int *elem2tuple) |
| FDECL void | FTN_NAME (FEM_ADD_GHOST_ELEM, fem_add_ghost_elem) |
| CDECL void | FEM_Update_ghost_field (int fid, int elType, void *v_data) |
| FDECL void | FTN_NAME (FEM_UPDATE_GHOST_FIELD, fem_update_ghost_field) |
| CDECL void | FEM_Exchange_ghost_lists (int elemType, int nIdx, const int *localIdx) |
| FDECL void | FTN_NAME (FEM_EXCHANGE_GHOST_LISTS, fem_exchange_ghost_lists) |
| CDECL int | FEM_Get_ghost_list_length (void) |
| FDECL int | FTN_NAME (FEM_GET_GHOST_LIST_LENGTH, fem_get_ghost_list_length) |
| CDECL void | FEM_Get_ghost_list (int *dest) |
| FDECL void | FTN_NAME (FEM_GET_GHOST_LIST, fem_get_ghost_list) |
| static void | getRoccomPconn (IDXL_Side_t is, int bias, CkVec< int > &pconn, const int *paneFmChunk) |
| Extract an IDXL_Side_t into Roccom format. | |
| static CkVec< int > | getRoccomPconn (int fem_mesh, int *ghost_len, const int *paneFmChunk) |
| Extract all FEM communication information into Roccom format. | |
| CDECL void | FEM_Get_roccom_pconn_size (int fem_mesh, int *total_len, int *ghost_len) |
| FORTRAN_AS_C (FEM_GET_ROCCOM_PCONN_SIZE, FEM_Get_roccom_pconn_size, fem_get_roccom_pconn_size,(int *mesh, int *tl, int *gl),(*mesh, tl, gl)) CDECL void FEM_Get_roccom_pconn(int fem_mesh | |
| int | commState (int entityNo, const IDXL_Side &s) |
| CDECL void | FEM_Make_node_globalno (int fem_mesh, FEM_Comm_t comm_context) |
| Based on shared node communication list, compute FEM_NODE FEM_GLOBALNO and FEM_NODE_PRIMARY. | |
| FORTRAN_AS_C (FEM_MAKE_NODE_GLOBALNO, FEM_Make_node_globalno, fem_make_node_globalno,(int *mesh, int *comm),(*mesh,*comm)) class localToGlobal | |
| CDECL void | FEM_Add_elem2face_tuples (int fem_mesh, int elem_type, int nodesPerTuple, int tuplesPerElem, const int *elem2tuple) |
| Register a set of tuples for a single element type Must be called once for each element type. | |
| void | _registerParFUM (void) |
| void | FEM_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. | |
| FDECL 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) |
| FDECL 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) |
| FDECL 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) |
| FDECL void | FTN_NAME (FEM_ADAPT_ADAPTMESH, fem_adapt_adaptmesh)(int *meshID |
| void | FEM_ADAPT_SetElementSizeField (int meshID, int elem, double size) |
| FDECL void | FTN_NAME (FEM_ADAPT_SETELEMENTSIZEFIELD, fem_adapt_setelementsizefield)(int *meshID |
| void | FEM_ADAPT_SetElementsSizeField (int meshID, double *sizes) |
| FDECL void | FTN_NAME (FEM_ADAPT_SETELEMENTSSIZEFIELD, fem_adapt_setelementssizefield)(int *meshID |
| void | FEM_ADAPT_SetReferenceMesh (int meshID) |
| FDECL void | FTN_NAME (FEM_ADAPT_SETREFERENCEMESH, fem_adapt_setreferencemesh)(int *meshID) |
| void | FEM_ADAPT_GradateMesh (int meshID, double smoothness) |
| FDECL void | FTN_NAME (FEM_ADAPT_GRADATEMESH, fem_adapt_gradatemesh)(int *meshID |
| void | FEM_ADAPT_TestMesh (int meshID) |
| FDECL 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) |
| FDECL 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) |
| FDECL void | FTN_NAME (FEM_ADAPT_SIMPLECOARSENMESH, fem_adapt_simplecoarsenmesh)(int *meshID |
| void | ParFUM_SA_Init (int meshId) |
| User functions for parfum initialization. | |
| FDECL 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_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) |
| FEM_Mesh * | FEM_readMesh (const char *prefix, int chunkNo, int nChunks) |
| void | FEM_writeMesh (FEM_Mesh *m, const char *prefix, int chunkNo, int nChunks) |
| 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) |
| 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 | METIS_PartGraphRecursive (int *, int *, int *, idxtype *, idxtype *, int *, int *, int *, int *, int *, idxtype *) |
| void | METIS_PartGraphKway (int *nv, int *xadj, int *adjncy, int *vwgt, int *adjwgt, int *wgtflag, int *numflag, int *nparts, int *options, int *edgecut, int *part) |
| 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_Mesh * | splitter::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. | |
| intMsg * | femMeshModify::lockRemoteChunk (int2Msg *i2msg) |
| intMsg * | femMeshModify::unlockRemoteChunk (int2Msg *i2msg) |
| intMsg * | femMeshModify::lockRemoteNode (int sharedIdx, int fromChk, int isGhost, int readLock) |
| intMsg * | femMeshModify::unlockRemoteNode (int sharedIdx, int fromChk, int isGhost, int readLock) |
| chunkListMsg * | femMeshModify::getChunksSharingGhostNode (int2Msg *) |
| intMsg * | femMeshModify::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) |
| intMsg * | femMeshModify::eatIntoElement (int fromChk, int sharedIdx) |
| intMsg * | femMeshModify::getLockOwner (int fromChk, int sharedIdx) |
| boolMsg * | femMeshModify::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) |
| findgsMsg * | femMeshModify::findghostsend (int fromChk, int sharedIdx) |
| intMsg * | femMeshModify::getIdxGhostSend (int fromChk, int idxshared, int toChk) |
| double2Msg * | femMeshModify::getRemoteCoord (int fromChk, int ghostIdx) |
| intMsg * | femMeshModify::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) |
| intMsg * | femMeshModify::hasLockRemoteNode (int sharedIdx, int fromChk, int isGhost) |
| void | femMeshModify::modifyLockAll (int fromChk, int sharedIdx) |
| boolMsg * | femMeshModify::verifyLock (int fromChk, int sharedIdx, int isGhost) |
| void | femMeshModify::verifyghostsend (verifyghostsendMsg *vmsg) |
| boolMsg * | femMeshModify::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'. | |
| boolMsg * | femMeshModify::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) |
| entDataMsg * | femMeshModify::packEntData (int fromChk, int sharedIdx, bool isnode=false, int elemType=0) |
| Pack the data from this element/node and return it. | |
| boolMsg * | femMeshModify::isFixedNodeRemote (int fromChk, int sharedIdx) |
| Is this node a fixed node on this chunk. | |
| void | femMeshModify::finish (void) |
| void | femMeshModify::finish1 (void) |
| static FEM_chunk * | FEM_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_Partition * | mypartition = NULL |
| PartitionMode | FEM_Partition_Mode = SerialPartitionMode |
| MetisGraphType | FEM_Partition_Graph_Type = NodeNeighborMode |
| int | partNo |
| int | tag |
| const int * | paneFmChunk |
| FDECL void int * | qm |
| FDECL void int int * | method |
| FDECL void int int double * | factor |
| FDECL void int int double double * | sizes |
| FDECL void int * | elem |
| FDECL void int double * | size |
| FDECL void double * | smoothness |
| FDECL void double * | targetA |
| FDECL void double double * | xmin |
| FDECL void double double double * | ymin |
| FDECL void double double double double * | xmax |
| FDECL void double double double double double * | ymax |
| CProxy_femMeshModify | meshMod |
| File: fem_mesh_modify.C Authors: Nilesh Choudhury, Isaac Dooley. | |
| const char * | caller |
| double | elemlistaccTime |
| This file contains code for parallely partitioning the initial mesh into multiple chunks It uses PARMETIS to do the actual partitioning. | |
| static FEM_Symmetries_t | noSymmetries = (FEM_Symmetries_t)0 |
| FDECL void int * | qm |
| FDECL void int int * | method |
| FDECL void int int double * | factor |
| size_t | sizes [] |
| typedef void(* FEM_Update_mesh_fn)(int userTag) |
| typedef void(* FEM_Update_mesh_fortran_fn)(int *userTag) |
| typedef void(* FEM_Mesh_alloc_fn)(void *param, int *size, int *maxSize) |
| typedef int FEM_Comm_t |
Definition at line 79 of file ParFUM_internals.h.
| typedef IDXL_List FEM_Comm_List |
Definition at line 80 of file ParFUM_internals.h.
| typedef IDXL_Rec FEM_Comm_Rec |
Definition at line 81 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 109 of file ParFUM_internals.h.
| typedef ArrayPtrT<int> intArrayPtr |
Definition at line 1608 of file ParFUM_internals.h.
| typedef marshallNewHeapCopy<FEM_Mesh> marshallMeshChunk |
Definition at line 1630 of file ParFUM_internals.h.
| typedef MSA2D<int, DefaultEntry<int>, MSA_DEFAULT_ENTRIES_PER_PAGE, MSA_ROW_MAJOR> MSA2DRM |
Definition at line 2427 of file ParFUM_internals.h.
| typedef MSA1D<int, DefaultEntry<int>, MSA_DEFAULT_ENTRIES_PER_PAGE> MSA1DINT |
Definition at line 2429 of file ParFUM_internals.h.
| typedef UniqElemList<int> IntList |
Definition at line 2431 of file ParFUM_internals.h.
| typedef MSA1D<IntList, DefaultListEntry<IntList,true>,MSA_DEFAULT_ENTRIES_PER_PAGE> MSA1DINTLIST |
Definition at line 2432 of file ParFUM_internals.h.
| typedef UniqElemList<NodeElem> NodeList |
Definition at line 2434 of file ParFUM_internals.h.
| typedef MSA1D<NodeList, DefaultListEntry<NodeList,true>,MSA_DEFAULT_ENTRIES_PER_PAGE> MSA1DNODELIST |
Definition at line 2435 of file ParFUM_internals.h.
| typedef MSA1D<MeshElem,DefaultEntry<MeshElem,true>,1> MSA1DFEMMESH |
Definition at line 2437 of file ParFUM_internals.h.
| typedef double Real |
Definition at line 2900 of file ParFUM_internals.h.
Definition at line 287 of file partition.C.
| anonymous enum |
| enum PartitionMode |
| enum MetisGraphType |
| CDECL void fem_impl_call_init | ( | void | ) |
| FDECL void FTN_NAME | ( | INIT | , | |
| init | ||||
| ) |
Definition at line 29 of file main.C.
References CmiGetArgFlagDesc(), driver(), fem_impl_call_init(), FEM_Init(), FEM_Mesh_allocate(), FEM_Mesh_broadcast(), FEM_Mesh_deallocate(), FEM_Mesh_default_read(), FEM_Mesh_default_write(), FEM_Mesh_read(), FEM_Mesh_set_default_read(), FEM_Mesh_set_default_write(), FEM_Mesh_write(), FTN_NAME(), init(), MPI_Comm_rank(), MPI_Comm_size(), MPI_COMM_WORLD, MPI_Finalize(), and MPI_Init().
| 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, s, FEM_Entity::size(), and FEM_Entity_Types< T >::size().
| 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().
| void FEM_Mesh_split | ( | FEM_Mesh * | mesh, | |
| int | nChunks, | |||
| const FEM_Partition & | partition, | |||
| FEM_Mesh_Output * | out | |||
| ) |
Definition at line 436 of file map.C.
References splitter::aboutToCreate(), FEM_Mesh_Output::accept(), splitter::addGhosts(), splitter::buildCommLists(), check(), checkArrayEntries(), splitter::createMesh(), splitter::elem2chunk, FEM_Partition::getPartition(), FEM_Partition::getSymList(), FEM_Mesh::nElems(), s, splitter::separateSparse(), FEM_Mesh::setSymList(), CkThresholdTimer::start(), and stats::time().
Referenced by FEM_Mesh_partition().
| CkHashCode CkHashFunction_ints | ( | const void * | keyData, | |
| size_t | keyLen | |||
| ) |
| int CkHashCompare_ints | ( | const void * | k1, | |
| const void * | k2, | |||
| size_t | keyLen | |||
| ) |
Reassemble split chunks into a single mesh.
Definition at line 1038 of file map.C.
References FEM_Entity_numberer::add(), FEM_Mesh::becomeGetting(), FEM_Mesh::copyShape(), FEM_Mesh::elem, FEM_Entity_Types< T >::has(), FEM_Entity_numberer::mark(), FEM_Mesh::node, renumberConn(), FEM_Entity_Types< T >::set(), FEM_Entity_Types< T >::size(), FEM_Mesh::sparse, and FEM_Mesh::udata.
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().
Definition at line 34 of file mesh_modify.C.
References FEM_MUtil::FEM_Print_n2n(), FEM_Mesh::getfmMM(), and femMeshModify::getfmUtil().
Definition at line 38 of file mesh_modify.C.
References FEM_MUtil::FEM_Print_n2e(), FEM_Mesh::getfmMM(), and femMeshModify::getfmUtil().
Definition at line 42 of file mesh_modify.C.
References FEM_MUtil::FEM_Print_e2n(), FEM_Mesh::getfmMM(), and femMeshModify::getfmUtil().
Definition at line 46 of file mesh_modify.C.
References FEM_MUtil::FEM_Print_e2e(), FEM_Mesh::getfmMM(), and femMeshModify::getfmUtil().
| CDECL 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(), FEM_Mesh::node, FEM_Entity_Types< T >::size(), and FEM_Entity::size().
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().
Definition at line 83 of file mesh_modify.C.
References FEM_add_element().
Referenced by FEM_MUtil::addElemRemote(), FEM_MUtil::eatIntoElement(), FEM_Adapt::edge_bisect_help(), FEM_AdaptL::edge_contraction_help(), FEM_Adapt::edge_flip_help(), FEM_add_element(), FEM_Adapt::vertex_remove_help(), and FEM_Adapt::vertex_split_help().
Definition at line 86 of file mesh_modify.C.
References FEM_remove_element().
Referenced by FEM_MUtil::eatIntoElement(), FEM_Adapt::edge_bisect_help(), FEM_AdaptL::edge_contraction_help(), FEM_Adapt::edge_flip_help(), FEM_remove_element(), FEM_MUtil::removeElemRemote(), FEM_Adapt::vertex_remove_help(), and FEM_Adapt::vertex_split_help().
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().
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().
| 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(), is_shared(), meshMod, FEM_Interpolate::NodalArgs::n, addNodeMsg::nBetween, FEM_Mesh::node, FEM_Interpolate::NodalArgs::nodes, addNodeMsg::numChunks, and FEM_MUtil::splitEntitySharing().
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().
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, malloc(), meshMod, FEM_Mesh::n2e_getAll(), FEM_Mesh::n2n_getAll(), FEM_Mesh::node, IDXL_Side::removeNode(), FEM_Entity::set_invalid(), and size.
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().
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 tupleTable::addTuple(), 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, CkVec< T >::length(), tupleTable::lookupNext(), tupleTable::MAX_TUPLE, FEM_Mesh::n2e_getAll(), elemList::next, FEM_ElemAdj_Layer::nodesPerTuple, CkVec< T >::push_back(), and sz.
Referenced by FEM_add_element_local(), and FEM_update_new_element_e2e().
| 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().
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(), addGhostElemMsg::indices, is_shared(), 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.
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().
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(), boolMsg::b, removeGhostElemMsg::chk, removeElemMsg::chk, CmiMemoryCheck(), 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(), 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, nodes, 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.
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 1600 of file mesh_modify.C.
References FEM_Mesh::elem, free(), FEM_Mesh::getfmMM(), femMeshModify::idx, malloc(), and meshMod.
| CDECL int FEM_Modify_Lock | ( | int | mesh, | |
| int * | affectedNodes, | |||
| int | numAffectedNodes, | |||
| int * | affectedElts, | |||
| int | numAffectedElts, | |||
| int | elemtype | |||
| ) |
Definition at line 1653 of file mesh_modify.C.
References FEM_Modify_Lock().
Referenced by FEM_Modify_Lock().
Definition at line 1656 of file mesh_modify.C.
References FEM_Modify_Unlock().
Referenced by FEM_Modify_Unlock().
Definition at line 1660 of file mesh_modify.C.
References FEM_Modify_LockN().
Referenced by FEM_Adapt::edge_bisect_help(), FEM_Modify_LockN(), and FEM_AdaptL::lockNodes().
Definition at line 1663 of file mesh_modify.C.
References FEM_Modify_UnlockN().
Referenced by FEM_Adapt::edge_bisect_help(), FEM_Modify_UnlockN(), and FEM_AdaptL::unlockNodes().
| 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 1671 of file mesh_modify.C.
References femMeshModify::getfmLock(), FEM_Mesh::getfmMM(), and FEM_lock::lock().
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 1677 of file mesh_modify.C.
References femMeshModify::getfmLock(), FEM_Mesh::getfmMM(), and FEM_lock::unlock().
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 1688 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, is_shared(), meshMod, FEM_lockN::rlock(), FEM_lockN::verifyLock(), and FEM_lockN::wlock().
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 1791 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, is_shared(), meshMod, FEM_lockN::runlock(), and FEM_lockN::wunlock().
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 1873 of file mesh_modify.C.
References done, femMeshModify::fmLockN, femMeshModify::getfmLockN(), FEM_Mesh::getfmMM(), femMeshModify::getIdx(), IDXL_Side::getRec(), intMsg::i, meshMod, FEM_Mesh::node, FEM_Node::shared, and FEM_lockN::wlock().
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 1915 of file mesh_modify.C.
References femMeshModify::fmLockN, femMeshModify::getfmLockN(), FEM_Mesh::getfmMM(), femMeshModify::getIdx(), IDXL_Side::getRec(), meshMod, FEM_Mesh::node, FEM_Node::shared, and FEM_lockN::wunlock().
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 1972 of file mesh_modify.C.
References IDXL_Share::chk, 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, is_shared(), FEM_AdaptL::lockNodes(), FEM_lockN::lockOwner(), meshMod, FEM_lockN::wlock(), and FEM_lockN::wunlock().
| 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 2078 of file mesh_modify.C.
References FEM_Mesh_data_layoutP().
| 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 2085 of file mesh_modify.C.
References caller, FEM_Mesh_data_layoutP(), and IDXL_Layout_List::get().
| 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 2093 of file mesh_modify.C.
References caller, FEM_Attribute::get(), FEM_Mesh::isSetting(), FEM_Entity::lookup(), FEM_Mesh::lookup(), and FEM_Attribute::set().
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 2109 of file mesh_modify.C.
References IDXL_Share::chk, FEM_Adapt_Algs::coord_attr, 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, double2Msg::j, meshMod, FEM_Mesh::node, and CkVec< T >::size().
| 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(), MPI_Comm_rank(), and printf().
| int FEM_master_parallel_part | ( | int | fem_mesh, | |
| int | masterRank, | |||
| FEM_Comm_t | comm_context | |||
| ) |
Definition at line 47 of file parallel_part.C.
References _startTime, addIDXLists(), conndata::arr1, conndata::arr2, FEM_Mesh::becomeGetting(), c, caller, Converse::CkMyPe(), CmiMaxMemoryUsage(), CmiMemoryUsage(), FEM_Mesh::elem, elemlistaccTime, MSA1D< ENTRY, ENTRY_OPS_CLASS, ENTRIES_PER_PAGE >::enroll(), FEM_break_mesh(), FEM_call_parmetis(), FEM_Mesh_copy(), FEM_write_nodepart(), FEM_write_part2elem(), FEM_write_part2mesh(), FEM_write_part2node(), MSA1D< ENTRY, ENTRY_OPS_CLASS, ENTRIES_PER_PAGE >::FreeMem(), gatherGhosts(), MSA1D< ENTRY, ENTRY_OPS_CLASS, ENTRIES_PER_PAGE >::Read::get(), FEM_chunk::get(), MSA1D< ENTRY, ENTRY_OPS_CLASS, ENTRIES_PER_PAGE >::get(), FEMchunk::get(), MSA1D< ENTRY, ENTRY_OPS_CLASS, ENTRIES_PER_PAGE >::getInitialAccum(), MSA1D< ENTRY, ENTRY_OPS_CLASS, ENTRIES_PER_PAGE >::getInitialWrite(), FEM_Entity_Types< T >::has(), ghostdata::layers, FEM_chunk::lookup(), FEMchunk::lookup(), MeshElem::m, makeGhosts(), FEM_chunk::meshes, FEMchunk::meshes, MPI_Bcast_pup(), MPI_Comm_size(), MPI_Recv_pup(), n, conndata::nelem, FEM_Mesh::nElems(), conndata::nnode, FEM_Mesh::node, ghostdata::numLayers, FEM_Mesh::print(), printf(), FEM_T_List< T >::put(), MSA1D< int, DefaultEntry< int >, MSA_DEFAULT_ENTRIES_PER_PAGE >::Read, sendBrokenMeshes(), MSA1D< ENTRY, ENTRY_OPS_CLASS, ENTRIES_PER_PAGE >::set(), FEM_Entity_Types< T >::set(), FEM_Mesh::setAbsoluteGlobalno(), FEM_Userdata_list::size(), FEM_Entity_Types< T >::size(), FEM_Entity::size(), MSA1D< ENTRY, ENTRY_OPS_CLASS, ENTRIES_PER_PAGE >::syncToRead(), FEM_Mesh::udata, and MSA1D< int, DefaultEntry< int >, MSA_DEFAULT_ENTRIES_PER_PAGE >::Write.
| int FEM_slave_parallel_part | ( | int | fem_mesh, | |
| int | masterRank, | |||
| FEM_Comm_t | comm_context | |||
| ) |
Definition at line 236 of file parallel_part.C.
References addIDXLists(), conndata::arr1, conndata::arr2, FEM_Mesh::becomeGetting(), MSA1D< ENTRY, ENTRY_OPS_CLASS, ENTRIES_PER_PAGE >::enroll(), FEM_call_parmetis(), FEM_Mesh_copy(), FEM_write_nodepart(), FEM_write_part2elem(), FEM_write_part2mesh(), FEM_write_part2node(), MSA1D< ENTRY, ENTRY_OPS_CLASS, ENTRIES_PER_PAGE >::FreeMem(), FEM_chunk::get(), MSA1D< ENTRY, ENTRY_OPS_CLASS, ENTRIES_PER_PAGE >::Read::get(), FEMchunk::get(), MSA1D< ENTRY, ENTRY_OPS_CLASS, ENTRIES_PER_PAGE >::get(), MSA1D< ENTRY, ENTRY_OPS_CLASS, ENTRIES_PER_PAGE >::getInitialAccum(), MSA1D< ENTRY, ENTRY_OPS_CLASS, ENTRIES_PER_PAGE >::getInitialWrite(), ghostdata::layers, MeshElem::m, makeGhosts(), FEM_chunk::meshes, FEMchunk::meshes, MPI_Bcast_pup(), MPI_Comm_rank(), MPI_Comm_size(), MPI_Recv_pup(), conndata::nelem, FEM_Mesh::nElems(), FEM_Mesh::node, ghostdata::numLayers, printf(), FEM_T_List< T >::put(), MSA1D< int, DefaultEntry< int >, MSA_DEFAULT_ENTRIES_PER_PAGE >::Read, FEM_Userdata_list::size(), FEM_Entity::size(), MSA1D< ENTRY, ENTRY_OPS_CLASS, ENTRIES_PER_PAGE >::syncToRead(), and FEM_Mesh::udata.
| struct partconndata* FEM_call_parmetis | ( | int | nelem, | |
| MSA1DINT::Read & | rPtr, | |||
| MSA1DINT::Read & | rInd, | |||
| FEM_Comm_t | comm_context | |||
| ) | [read] |
Definition at line 353 of file parallel_part.C.
References partconndata::eind, partconndata::eptr, MPI_Barrier(), MPI_Comm_rank(), MPI_Comm_size(), partconndata::nelem, ParMETIS_V3_PartMeshKway(), partconndata::part, printf(), and partconndata::startindex.
| void FEM_write_nodepart | ( | MSA1DINTLIST::Accum & | nodepart, | |
| struct partconndata * | data, | |||
| MPI_Comm | comm_context | |||
| ) |
Definition at line 438 of file parallel_part.C.
References MSA1D< ENTRY, ENTRY_OPS_CLASS, ENTRIES_PER_PAGE >::Accum::accumulate(), partconndata::eind, partconndata::eptr, partconndata::nelem, partconndata::part, and printf().
| void FEM_write_part2node | ( | MSA1DINTLIST::Read & | nodepart, | |
| MSA1DNODELIST::Accum & | part2node, | |||
| struct partconndata * | data, | |||
| MPI_Comm | comm_context | |||
| ) |
Definition at line 453 of file parallel_part.C.
References MSA1D< ENTRY, ENTRY_OPS_CLASS, ENTRIES_PER_PAGE >::Accum::accumulate(), MSA1D< ENTRY, ENTRY_OPS_CLASS, ENTRIES_PER_PAGE >::Read::get(), MSA1D< ENTRY, ENTRY_OPS_CLASS, ENTRIES_PER_PAGE >::Handle::length(), MPI_Comm_rank(), MPI_Comm_size(), n, nodes, printf(), NodeElem::shared, and ElemList< T >::vec.
| void FEM_write_part2elem | ( | MSA1DINTLIST::Accum & | part2elem, | |
| struct partconndata * | data, | |||
| MPI_Comm | comm_context | |||
| ) |
Definition at line 493 of file parallel_part.C.
References MSA1D< ENTRY, ENTRY_OPS_CLASS, ENTRIES_PER_PAGE >::Accum::accumulate(), partconndata::nelem, partconndata::part, and partconndata::startindex.
Definition at line 505 of file parallel_part.C.
References FEM_Mesh::copyShape(), FEM_Mesh::elem, FEM_Entity_Types< T >::has(), FEM_Mesh::node, FEM_Entity::push_back(), FEM_Entity_Types< T >::size(), and FEM_Entity::size().
| 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 | |||
| ) |
Definition at line 557 of file parallel_part.C.
References MSA1D< ENTRY, ENTRY_OPS_CLASS, ENTRIES_PER_PAGE >::Accum::accumulate(), chunks, elem, FEM_Mesh::elem, MSA1D< ENTRY, ENTRY_OPS_CLASS, ENTRIES_PER_PAGE >::Read::get(), FEM_Entity_Types< T >::has(), MeshElem::m, conndata::nnode, FEM_Mesh::node, partconndata::part, FEM_Entity::size(), FEM_Entity_Types< T >::size(), and ElemList< T >::vec.
| void sortNodeList | ( | NodeList & | lnodes | ) |
Definition at line 593 of file parallel_part.C.
References CkVec< T >::quickSort(), and ElemList< T >::vec.
go through each node
global number of this node
find the local number of this node
chunk numbers to which this node belongs
Definition at line 599 of file parallel_part.C.
References IDXL_Side::addList(), conn, FEM_Mesh::elem, CkHashtableT< KEY, OBJ >::get(), FEM_Entity::getGlobalno(), FEM_Entity_Types< T >::has(), FEM_Mesh::node, IDXL_Side::print(), printf(), IDXL_List::push_back(), CkHashtableTslow< KEY, OBJ >::put(), FEM_Node::setPrimary(), FEM_Node::shared, FEM_Entity_Types< T >::size(), CkVec< T >::size(), FEM_Entity::size(), sortNodeList(), and ElemList< T >::vec.
| struct ghostdata* gatherGhosts | ( | ) | [read] |
Definition at line 674 of file parallel_part.C.
References FEM_curPartition(), FEM_Partition::getRegion(), FEM_Partition::getRegions(), FEM_Ghost_Region::layer, ghostdata::layers, ghostdata::numLayers, and printf().
| void makeGhosts | ( | FEM_Mesh * | m, | |
| MPI_Comm | comm, | |||
| int | masterRank, | |||
| int | numLayers, | |||
| FEM_Ghost_Layer ** | layers | |||
| ) |
Definition at line 706 of file parallel_part.C.
References _startTime, FEM_Mesh::elem, FEM_Entity_Types< T >::get(), FEM_Attribute::get(), CkHashtableT< KEY, OBJ >::get(), IDXL_List::getDest(), FEM_Entity::getGlobalno(), IDXL_Side::getLocalList(), FEM_Entity_Types< T >::has(), list, listSearchTime, FEM_Entity::lookup(), makeGhost(), MPI_Allreduce(), MPI_Comm_rank(), MPI_Comm_size(), MPI_INT, MPI_SUM, FEM_Mesh::node, printf(), CkHashtableTslow< KEY, OBJ >::put(), FEM_Node::shared, sharedSearchTime, FEM_Entity::size(), FEM_Entity_Types< T >::size(), IDXL_List::size(), and IDXL_Side::size().
| bool listContains | ( | FEM_Comm_List & | list, | |
| int | entry | |||
| ) |
Definition at line 801 of file parallel_part.C.
References _startTime, listSearchTime, and IDXL_List::size().
| 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 | |||
| ) |
Definition at line 813 of file parallel_part.C.
References MSA1D< ENTRY, ENTRY_OPS_CLASS, ENTRIES_PER_PAGE >::Accum::accumulate(), MSA1D< ENTRY, ENTRY_OPS_CLASS, ENTRIES_PER_PAGE >::accumulate(), IDXL_Side::addList(), FEM_Ghost_Layer::addNodes, MsaHashtable::Add::addTuple(), MsaHashtable::addTuple(), Converse::CkMyPe(), CmiMemoryCheck(), conn, FEM_Entity::copyShape(), FEM_Ghost_Layer::elem, FEM_Mesh::elem, MSA1D< ENTRY, ENTRY_OPS_CLASS, ENTRIES_PER_PAGE >::enroll(), MSA1D< ENTRY, ENTRY_OPS_CLASS, ENTRIES_PER_PAGE >::Read::get(), FEM_Entity_Types< T >::get(), FEM_Attribute::get(), MSA1D< ENTRY, ENTRY_OPS_CLASS, ENTRIES_PER_PAGE >::get(), MsaHashtable::get(), FEM_Entity::getGhost(), FEM_Entity::getGhostRecv(), FEM_Entity::getGhostSend(), FEM_Entity::getGlobalno(), MSA1D< ENTRY, ENTRY_OPS_CLASS, ENTRIES_PER_PAGE >::getInitialAccum(), MsaHashtable::getInitialAdd(), FEM_Entity_Types< T >::has(), listContains(), FEM_Entity::lookup(), MeshElem::m, Hashnode::tupledata::MAX_TUPLE, MPI_Barrier(), MPI_Bcast_pup(), MPI_Comm_rank(), MPI_Comm_size(), n, FEM_Mesh::nElems(), FEM_Mesh::node, FEM_Ghost_Layer::nodesPerTuple, MsaHashtable::numSlots, MsaHashtable::Read::print(), IDXL_Side::print(), MsaHashtable::print(), FEM_Mesh::print(), printf(), FEM_Entity::push_back(), IDXL_List::push_back(), CkVec< T >::push_back(), FEM_Entity::setGhostRecv(), FEM_Entity::setGhostSend(), sharedWith(), FEM_Entity::size(), CkVec< T >::size(), FEM_Entity_Types< T >::size(), MSA1D< ENTRY, ENTRY_OPS_CLASS, ENTRIES_PER_PAGE >::sync(), MsaHashtable::sync(), MSA1D< ENTRY, ENTRY_OPS_CLASS, ENTRIES_PER_PAGE >::syncToRead(), MsaHashtable::syncToRead(), MsaHashtable::table, and ElemList< T >::vec.
Definition at line 1163 of file parallel_part.C.
References _startTime, IDXL_Side::findLocalList(), IDXL_Side::getLocalList(), FEM_Mesh::node, FEM_Node::shared, sharedSearchTime, and IDXL_List::size().
| CDECL 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().
| CDECL void FEM_Init | ( | FEM_Comm_t | defaultComm | ) |
Initialize the FEM framework (must have called MPI_Init).
Definition at line 73 of file ParFUM.C.
References c, CkGetArgv(), CmiCreateLock(), CmiGetArgFlagDesc(), FaceNeighborMode, FEM_chunk::FEM_chunk(), FEM_globalID, FEM_Partition_Graph_Type, FEM_Partition_Mode, FEMchunk::FEMchunk(), IDXL_Init(), ManualPartitionMode, ParallelPartitionMode, pupFEM_Chunk(), TCHARM_Get_global(), and TCHARM_Set_global().
| FORTRAN_AS_C | ( | FEM_INIT | , | |
| FEM_Init | , | |||
| fem_init | , | |||
| (int *comm) | , | |||
| * | comm | |||
| ) |
| CDECL 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(), FEM_chunk::meshes, FEMchunk::meshes, and FEM_T_List< T >::put().
| 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 PUP::fromMemBuf(), PUP::size(), and PUP::toMemBuf().
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().
Definition at line 136 of file ParFUM.C.
References c, caller, FEM_T_List< T >::destroy(), FEM_chunk::get(), and FEM_chunk::meshes.
| FORTRAN_AS_C | ( | FEM_MESH_DEALLOCATE | , | |
| FEM_Mesh_deallocate | , | |||
| fem_mesh_deallocate | , | |||
| (int *m) | , | |||
| * | m | |||
| ) | const |
Definition at line 250 of file ParFUM.C.
References FEM_Mesh_copy(), FEM_Mesh_partition(), FEM_chunk::get(), FEMchunk::get(), FEM_chunk::lookup(), FEMchunk::lookup(), FEM_Mesh::node, and FEM_Entity::size().
| FORTRAN_AS_C | ( | FEM_MESH_PARTITION | , | |
| FEM_Mesh_partition | , | |||
| fem_mesh_partition | , | |||
| (int *mesh, int *nParts, int *dest) | , | |||
| *,*, | dest | |||
| ) |
| CDECL int FEM_Mesh_broadcast | ( | int | fem_mesh, | |
| int | masterRank, | |||
| FEM_Comm_t | comm_context | |||
| ) |
Definition at line 327 of file ParFUM.C.
References elem, FEM_Mesh::elem, FEM_Partition::elem2chunk, FEM_Mesh_deallocate(), FEM_Mesh_Parallel_broadcast(), FEM_Mesh_partition(), FEM_Mesh_recv(), FEM_Mesh_send(), FEM_Partition_Mode, FEM_Set_partition(), FEM_chunk::get(), FEM_chunk::lookup(), ManualPartitionMode, MPI_Barrier(), MPI_Comm_rank(), MPI_Comm_size(), FEM_Mesh::nElems(), ParallelPartitionMode, SerialPartitionMode, and FEM_Entity_Types< T >::size().
| 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] | ) |
| CDECL void FEM_Add_ghost_stencil_type | ( | int | elType, | |
| int | nElts, | |||
| int | addNodes, | |||
| const int * | ends, | |||
| const int * | adj2 | |||
| ) |
Definition at line 962 of file ParFUM.C.
References FEM_Partition::addGhostStencil(), FEM_curPartition(), and s.
| FDECL void FTN_NAME | ( | FEM_ADD_GHOST_STENCIL_TYPE | , | |
| fem_add_ghost_stencil_type | ||||
| ) |
Definition at line 970 of file ParFUM.C.
References FEM_Partition::addGhostStencil(), FEM_curPartition(), and s.
Definition at line 981 of file ParFUM.C.
References FEM_Mesh::elem, FEM_Entity_Types< T >::has(), and FEM_Entity_Types< T >::size().
Definition at line 999 of file ParFUM.C.
References FEM_Mesh::elem, FEM_Add_ghost_stencil_type(), FEM_curPartition(), globalElem2elType(), FEM_Entity_Types< T >::has(), FEM_Partition::markGhostStencilLayer(), FEM_Mesh::nElems(), FEM_chunk::setMesh(), FEMchunk::setMesh(), and FEM_Entity_Types< T >::size().
| FDECL void FTN_NAME | ( | FEM_ADD_GHOST_STENCIL | , | |
| fem_add_ghost_stencil | ||||
| ) |
Definition at line 1048 of file ParFUM.C.
References FEM_Partition::addLayer(), FEM_Ghost_Layer::addNodes, FEM_curPartition(), and FEM_Ghost_Layer::nodesPerTuple.
| FDECL void FTN_NAME | ( | FEM_ADD_GHOST_LAYER | , | |
| fem_add_ghost_layer | ||||
| ) |
| static void add_ghost_elem | ( | int | elType, | |
| int | tuplesPerElem, | |||
| const int * | elem2tuple, | |||
| int | idxBase | |||
| ) | [static] |
Definition at line 1059 of file ParFUM.C.
References CkCopyArray(), FEM_Partition::curLayer(), FEM_Ghost_Layer::elem, FEM_curPartition(), and FEM_Ghost_Layer::nodesPerTuple.
| FDECL void FTN_NAME | ( | FEM_ADD_GHOST_ELEM | , | |
| fem_add_ghost_elem | ||||
| ) |
Definition at line 1077 of file ParFUM.C.
References data, entity, FEM_Comm_ghost(), FEM_Mesh_default_read(), and FEM_Mesh_get_length().
| FDECL void FTN_NAME | ( | FEM_UPDATE_GHOST_FIELD | , | |
| fem_update_ghost_field | ||||
| ) |
Definition at line 1171 of file ParFUM.C.
References FEM_chunk::exchangeGhostLists(), FEMchunk::exchangeGhostLists(), FEM_chunk::get(), and FEMchunk::get().
| FDECL void FTN_NAME | ( | FEM_EXCHANGE_GHOST_LISTS | , | |
| fem_exchange_ghost_lists | ||||
| ) |
Definition at line 1176 of file ParFUM.C.
References FEM_chunk::exchangeGhostLists(), and FEM_chunk::get().
| CDECL int FEM_Get_ghost_list_length | ( | void | ) |
Definition at line 1182 of file ParFUM.C.
References FEM_chunk::get(), FEMchunk::get(), FEM_chunk::getList(), FEMchunk::getList(), and CkVec< T >::size().
| FDECL int FTN_NAME | ( | FEM_GET_GHOST_LIST_LENGTH | , | |
| fem_get_ghost_list_length | ||||
| ) |
| CDECL void FEM_Get_ghost_list | ( | int * | dest | ) |
Definition at line 1190 of file ParFUM.C.
References FEM_chunk::emptyList(), FEMchunk::emptyList(), FEM_Get_ghost_list_length(), FEM_chunk::get(), FEMchunk::get(), FEM_chunk::getList(), FEMchunk::getList(), and CkVec< T >::getVec().
| FDECL void FTN_NAME | ( | FEM_GET_GHOST_LIST | , | |
| fem_get_ghost_list | ||||
| ) |
Definition at line 1198 of file ParFUM.C.
References FEM_chunk::emptyList(), FEM_Get_ghost_list_length(), FEM_chunk::get(), FEM_chunk::getList(), and CkVec< T >::getVec().
| 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 1212 of file ParFUM.C.
References CkVec< T >::push_back().
| 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 1229 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().
| 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 | |||
| ) |
Definition at line 1322 of file ParFUM.C.
References FEM_My_partition(), and IDXL_Side::getRec().
| CDECL void FEM_Make_node_globalno | ( | int | fem_mesh, | |
| FEM_Comm_t | comm_context | |||
| ) |
Based on shared node communication list, compute FEM_NODE FEM_GLOBALNO and FEM_NODE_PRIMARY.
Based on shared node communication list, compute FEM_NODE FEM_GLOBALNO and FEM_NODE_PRIMARY.
Definition at line 1341 of file ParFUM.C.
References commState(), FEM_Comm_shared(), FEM_Mesh_set_data(), MPI_INT, MPI_Scan(), MPI_SUM, FEM_Mesh::node, FEM_Node::shared, and FEM_Entity::size().
| CDECL void FEM_Add_elem2face_tuples | ( | int | fem_mesh, | |
| int | elem_type, | |||
| int | nodesPerTuple, | |||
| int | tuplesPerElem, | |||
| const int * | elem2tuple | |||
| ) |
Register a set of tuples for a single element type Must be called once for each element type.
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 1492 of file ParFUM.C.
References CkCopyArray(), FEM_ElemAdj_Layer::elem, FEM_Mesh::getElemAdjLayer(), FEM_ElemAdj_Layer::initialized, and FEM_ElemAdj_Layer::nodesPerTuple.
| 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_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_print | ( | int | fem_mesh | ) |
| 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 | |||
| ) |