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< int > | intArrayPtr |
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< int > | IntList |
typedef MSA::MSA1D< IntList, DefaultListEntry< IntList, true > , MSA_DEFAULT_ENTRIES_PER_PAGE > | MSA1DINTLIST |
typedef UniqElemList< NodeElem > | NodeList |
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_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. | |
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 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) |
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< int > | getRoccomPconn (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_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 | 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 |
FLINKAGE void int * | qm |
FLINKAGE void int int * | method |
FLINKAGE void int int double * | factor |
FLINKAGE void int int double double * | sizes |
FLINKAGE void int * | elem |
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 int * | qm |
FLINKAGE void int int * | method |
FLINKAGE void int int double * | factor |
FLINKAGE void int int double double * | 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 93 of file ParFUM_internals.h.
typedef IDXL_List FEM_Comm_List |
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.
typedef ArrayPtrT<int> intArrayPtr |
Definition at line 1622 of file ParFUM_internals.h.
typedef marshallNewHeapCopy<FEM_Mesh> marshallMeshChunk |
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.
typedef UniqElemList<int> IntList |
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.
typedef UniqElemList<NodeElem> NodeList |
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.
typedef MSA::MSA1D<MeshElem,DefaultEntry<MeshElem,true>,1> MSA1DFEMMESH |
Definition at line 2250 of file ParFUM_internals.h.
typedef double Real |
Definition at line 2716 of file ParFUM_internals.h.
anonymous enum |
enum PartitionMode |
enum MetisGraphType |
CLINKAGE void fem_impl_call_init | ( | void | ) |
Definition at line 13 of file call_init.c.
References init().
Referenced by FTN_NAME().
FLINKAGE void FTN_NAME | ( | INIT | , | |
init | ||||
) |
Definition at line 29 of file main.C.
References CmiGetArgFlagDesc(), comm, 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_Finalize, and MPI_Init.
Definition at line 54 of file map.C.
References checkRange().
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.
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(), PUP::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 | |||
) |
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.
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(), femMeshModify::getfmUtil(), and PUP::m.
Definition at line 38 of file mesh_modify.C.
References FEM_MUtil::FEM_Print_n2e(), FEM_Mesh::getfmMM(), femMeshModify::getfmUtil(), and PUP::m.
Definition at line 42 of file mesh_modify.C.
References FEM_MUtil::FEM_Print_e2n(), FEM_Mesh::getfmMM(), femMeshModify::getfmUtil(), and PUP::m.
Definition at line 46 of file mesh_modify.C.
References FEM_MUtil::FEM_Print_e2e(), FEM_Mesh::getfmMM(), femMeshModify::getfmUtil(), and PUP::m.
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.
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().
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(), index, 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, index, 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 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().
Definition at line 364 of file mesh_modify.C.
References 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(), 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.
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().
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.
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.
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().
Definition at line 1660 of file mesh_modify.C.
References FEM_Modify_Unlock().
Referenced by FEM_Modify_Unlock().
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().
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().
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().
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().
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().
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().
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().
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().
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().
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().
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().
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().
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().
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.
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 addIDXLists(), conndata::arr1, conndata::arr2, FEM_Mesh::becomeGetting(), c, caller, Converse::CkMyPe(), CmiMaxMemoryUsage(), CmiMemoryUsage(), eind, FEM_Mesh::elem, elemlistaccTime, eptr, FEM_break_mesh(), FEM_call_parmetis(), FEM_Mesh_copy(), FEM_write_nodepart(), FEM_write_part2elem(), FEM_write_part2mesh(), FEM_write_part2node(), gatherGhosts(), FEM_chunk::get(), FEMchunk::get(), FEM_Entity_Types< T >::has(), ghostdata::layers, FEM_chunk::lookup(), FEMchunk::lookup(), MeshElem::m, PUP::m, makeGhosts(), FEM_chunk::meshes, FEMchunk::meshes, MPI_Bcast_pup(), MPI_Recv_pup(), n, conndata::nelem, FEM_Mesh::nElems(), conndata::nnode, FEM_Mesh::node, ghostdata::numLayers, FEM_Mesh::print(), FEM_T_List< T >::put(), sendBrokenMeshes(), FEM_Entity_Types< T >::set(), FEM_Mesh::setAbsoluteGlobalno(), FEM_Userdata_list::size(), FEM_Entity_Types< T >::size(), FEM_Entity::size(), PUP::t, and FEM_Mesh::udata.
int FEM_slave_parallel_part | ( | int | fem_mesh, | |
int | masterRank, | |||
FEM_Comm_t | comm_context | |||
) |
Definition at line 234 of file parallel_part.C.
References addIDXLists(), conndata::arr1, conndata::arr2, FEM_Mesh::becomeGetting(), FEM_call_parmetis(), FEM_Mesh_copy(), FEM_write_nodepart(), FEM_write_part2elem(), FEM_write_part2mesh(), FEM_write_part2node(), FEM_chunk::get(), FEMchunk::get(), ghostdata::layers, MeshElem::m, makeGhosts(), FEM_chunk::meshes, FEMchunk::meshes, MPI_Bcast_pup(), MPI_Comm_rank, MPI_Recv_pup(), conndata::nelem, FEM_Mesh::nElems(), FEM_Mesh::node, ghostdata::numLayers, FEM_T_List< T >::put(), FEM_Userdata_list::size(), FEM_Entity::size(), 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 348 of file parallel_part.C.
References edgecut, partconndata::eind, eind, partconndata::eptr, eptr, MPI_Barrier, MPI_Comm_rank, ncon, partconndata::nelem, numflag, partconndata::part, partconndata::startindex, tpwgts, and ubvec.
void FEM_write_nodepart | ( | MSA1DINTLIST::Accum & | nodepart, | |
struct partconndata * | data, | |||
MPI_Comm | comm_context | |||
) |
Definition at line 433 of file parallel_part.C.
References partconndata::eind, partconndata::eptr, partconndata::nelem, and partconndata::part.
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 | |||
) |
Definition at line 488 of file parallel_part.C.
References partconndata::nelem, partconndata::part, and partconndata::startindex.
Definition at line 500 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(), FEM_Entity::size(), and PUP::t.
void sendBrokenMeshes | ( | FEM_Mesh * | mesh_array, | |
FEM_Comm_t | comm_context | |||
) |
Definition at line 544 of file parallel_part.C.
References MPI_Send_pup().
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 552 of file parallel_part.C.
References count, elem, FEM_Mesh::elem, FEM_Entity_Types< T >::has(), conndata::nnode, FEM_Mesh::node, partconndata::part, FEM_Entity::size(), FEM_Entity_Types< T >::size(), PUP::t, and ElemList< T >::vec.
void sortNodeList | ( | NodeList & | lnodes | ) |
Definition at line 586 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 592 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(), 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 667 of file parallel_part.C.
References count, FEM_curPartition(), FEM_Partition::getRegion(), FEM_Partition::getRegions(), FEM_Ghost_Region::layer, ghostdata::layers, ghostdata::numLayers, and part.
void makeGhosts | ( | FEM_Mesh * | m, | |
MPI_Comm | comm, | |||
int | masterRank, | |||
int | numLayers, | |||
FEM_Ghost_Layer ** | layers | |||
) |
Definition at line 699 of file parallel_part.C.
References count, 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, FEM_Mesh::node, 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 794 of file parallel_part.C.
References 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 806 of file parallel_part.C.
References IDXL_Side::addList(), FEM_Ghost_Layer::addNodes, MsaHashtable::Add::addTuple(), MsaHashtable::addTuple(), assert, Converse::CkMyPe(), CmiMemoryCheck(), conn, FEM_Entity::copyShape(), FEM_Ghost_Layer::elem, FEM_Mesh::elem, MsaHashtable::enroll(), MSA::MSARead< MSA >::get(), FEM_Entity_Types< T >::get(), FEM_Attribute::get(), MsaHashtable::get(), FEM_Entity::getGhost(), FEM_Entity::getGhostRecv(), FEM_Entity::getGhostSend(), FEM_Entity::getGlobalno(), MsaHashtable::getInitialAdd(), FEM_Entity_Types< T >::has(), index, listContains(), FEM_Entity::lookup(), MeshElem::m, Hashnode::tupledata::MAX_TUPLE, MPI_Barrier, MPI_Bcast_pup(), MPI_Comm_rank, n, FEM_Mesh::nElems(), FEM_Mesh::node, FEM_Ghost_Layer::nodesPerTuple, MsaHashtable::numSlots, MsaHashtable::Read::print(), IDXL_Side::print(), MsaHashtable::print(), FEM_Mesh::print(), 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(), MsaHashtable::sync(), MsaHashtable::Add::syncToRead(), PUP::t, MsaHashtable::table, and ElemList< T >::vec.
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().
Definition at line 40 of file ParFUM.C.
References FEM_Abort(), and msg.
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().
CLINKAGE 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 argv, c, CkGetArgv(), CmiCreateLock(), CmiGetArgFlagDesc(), FaceNeighborMode, FEM_chunk::FEM_chunk(), FEM_globalID, FEM_Partition_Graph_Type, FEM_Partition_Mode, FEMchunk::FEMchunk(), femLock, IDXL_Init(), ManualPartitionMode, ParallelPartitionMode, pupFEM_Chunk(), TCHARM_Get_global(), and TCHARM_Set_global().
Definition at line 93 of file ParFUM.C.
References FEM_Abort().
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().
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().
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(), PUP::l, 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 | |||
) |
CLINKAGE 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(), index, FEM_chunk::lookup(), ManualPartitionMode, MPI_Barrier, MPI_Comm_rank, 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] | ) |
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.
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.
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.
Definition at line 1000 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(), FEM_Entity_Types< T >::size(), and PUP::t.
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().
Definition at line 1049 of file ParFUM.C.
References FEM_Partition::addLayer(), FEM_Ghost_Layer::addNodes, FEM_curPartition(), and FEM_Ghost_Layer::nodesPerTuple.
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().
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.
Definition at line 1072 of file ParFUM.C.
References add_ghost_elem().
FLINKAGE void FTN_NAME | ( | FEM_ADD_GHOST_ELEM | , | |
fem_add_ghost_elem | ||||
) |
Definition at line 1074 of file ParFUM.C.
References add_ghost_elem().
Definition at line 1078 of file ParFUM.C.
References data, entity, FEM_Comm_ghost(), FEM_Mesh_default_read(), and FEM_Mesh_get_length().
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().
Definition at line 1172 of file ParFUM.C.
References FEM_chunk::exchangeGhostLists(), FEMchunk::exchangeGhostLists(), FEM_chunk::get(), and FEMchunk::get().
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().
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().
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().
CLINKAGE void FEM_Get_ghost_list | ( | int * | dest | ) |
Definition at line 1191 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().
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().
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().
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().
Definition at line 1270 of file ParFUM.C.
References getRoccomPconn(), 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 1323 of file ParFUM.C.
References FEM_My_partition(), IDXL_Side::getRec(), and r.
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().
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.
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.
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_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().
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().
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 | |||
) |
Definition at line 62 of file fem_mesh.C.
References FEM_Mesh_data().
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().
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 | |||
) |
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 | |||
) |
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().
void FEM_Sym_coordinates | ( | int | who, | |
double * | d_locs | |||
) |
Definition at line 414 of file symmetries.C.
References FEM_Sym_List::applyLoc(), c, caller, FEM_chunk::get(), FEMchunk::get(), FEM_Mesh::getCount(), FEM_Entity::getGhost(), FEM_chunk::getMesh(), FEMchunk::getMesh(), FEM_Mesh::getSymList(), FEM_Entity::getSymmetries(), PUP::m, n, and FEM_Entity::size().
Definition at line 439 of file symmetries.C.
References caller, CkCopyArray(), FEM_curPartition(), FEM_chunk::get(), FEMchunk::get(), n, FEM_Mesh::node, FEM_chunk::setMesh(), FEMchunk::setMesh(), FEM_Partition::setSymmetries(), and FEM_Entity::size().
void FEM_Set_roccom_pconn | ( | int | fem_mesh, | |
const int * | paneFmChunk, | |||
const int * | src, | |||
int | total_len, | |||
int | ghost_len | |||
) |
void FEM_Migrate | ( | void | ) |
void* FEM_Get_userdata | ( | int | n | ) |
void FEM_Barrier | ( | void | ) |
void init | ( | void | ) |
Definition at line 2 of file compat_init.c.
References die(), FEM_Add_ghost_elem(), FEM_Add_ghost_layer(), FEM_Mesh_default_write(), FEM_Register_array(), FEM_Register_entity(), resize_edges(), resize_elems(), resize_nodes(), PUP::t, x, and vector2d::y.
void driver | ( | void | ) |
Definition at line 2 of file compat_driver.c.
References advanceNodes(), calcArea(), calcMasses(), checkTriangle(), Converse::CkMyPe(), Converse::CkNumPes(), count, countValidEntities(), CST_NL(), dt, FEM_Create_field(), FEM_Mesh_default_read(), FEM_Mesh_get_length(), FEM_My_partition(), FEM_REFINE2D_Coarsen(), FEM_REFINE2D_Init(), FEM_REFINE2D_Newmesh(), FEM_REFINE2D_Split(), FEM_Register(), FEM_Update_field(), init_myGlobal(), myGlobals::m_i_fid, matConst, max(), myGlobals::maxnodes, n, NetFEM_Begin(), NetFEM_Elements(), NetFEM_End(), NetFEM_Nodes(), NetFEM_Scalar(), NetFEM_Vector(), myGlobals::nnodes, publishMeshToNetFEM(), pup_myGlobals(), repeat_after_split(), resize_edges(), resize_elems(), resize_nodes(), sleep(), startTime, and PUP::t.
Referenced by FTN_NAME().
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 | ) |
Definition at line 1984 of file fem_mesh.C.
References FEM_Entity::allocateValid(), and FEM_Mesh::lookup().
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.
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_Read_field | ( | int | fid, | |
void * | nodes, | |||
const char * | fname | |||
) |
Definition at line 77 of file fem_compat.C.
References FEM_Mesh_set_length(), and FEM_Mesh_set_width().
void FEM_Set_node_data | ( | const double * | data | ) |
void FEM_Set_elem_data | ( | int | elType, | |
const double * | data | |||
) |
void FEM_Set_sparse | ( | int | uniqueIdentifier, | |
int | nRecords, | |||
const int * | nodes, | |||
int | nodesPerRec, | |||
const void * | data, | |||
int | dataPerRec, | |||
int | dataType | |||
) |
void FEM_Get_node_data | ( | double * | data | ) |
void FEM_Get_elem_data | ( | int | elType, | |
double * | data | |||
) |
int FEM_Get_node_ghost | ( | void | ) |
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.
void FEM_Serial_split | ( | int | nchunks | ) |
Definition at line 373 of file fem_compat.C.
References FEM_Mesh_default_write(), and FEM_Mesh_partition().
void FEM_Serial_begin | ( | int | chunkNo | ) |
void FEM_Serial_assemble | ( | void | ) |
int FEM_Get_comm_partners | ( | void | ) |
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.
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.
void ParFUM_Collide_Destroy | ( | ParFUM_collider * | c | ) |
void FEM_ADAPT_Init | ( | int | meshID | ) |
User functions for adaptivity.
Definition at line 4 of file fem_adapt_if.C.
References _registerFEMMeshModify(), FEM_Adapt_Algs::FEM_Adapt_Algs_Init(), FEM_Add_elem2face_tuples(), FEM_Mesh_allocate_valid_attr(), FEM_Mesh_create_elem_elem_adjacency(), FEM_Mesh_create_node_elem_adjacency(), FEM_Mesh_create_node_node_adjacency(), FEM_REF_INIT(), femMeshModify::getfmAdaptAlgs(), and FEM_Mesh::getfmMM().
Referenced by FTN_NAME().
FLINKAGE void FTN_NAME | ( | FEM_ADAPT_INIT | , | |
fem_adapt_init | ||||
) |
Definition at line 17 of file fem_adapt_if.C.
References FEM_ADAPT_Init().
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().
FLINKAGE void FTN_NAME | ( | FEM_ADAPT_REFINE | , | |
fem_adapt_refine | ||||
) |
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().
FLINKAGE void FTN_NAME | ( | FEM_ADAPT_COARSEN | , | |
fem_adapt_coarsen | ||||
) |
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().
FLINKAGE void FTN_NAME | ( | FEM_ADAPT_ADAPTMESH | , | |
fem_adapt_adaptmesh | ||||
) |
Definition at line 58 of file fem_adapt_if.C.
References FEM_Mesh::elem.
Referenced by FTN_NAME().
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().
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().
FLINKAGE void FTN_NAME | ( | FEM_ADAPT_SETREFERENCEMESH | , | |
fem_adapt_setreferencemesh | ||||
) |
Definition at line 85 of file fem_adapt_if.C.
References FEM_ADAPT_SetReferenceMesh().
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().
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().
FLINKAGE void FTN_NAME | ( | FEM_ADAPT_TESTMESH | , | |
fem_adapt_testmesh | ||||
) |
Definition at line 140 of file adapt_if.C.
References FEM_ADAPT_TestMesh().
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().
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().
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().
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().
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().
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.
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.
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().
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().
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().
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().
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 | |||
) |
Definition at line 1907 of file fem_mesh.C.
References FEM_Abort(), and xi::fname.
Referenced by FEM_readMesh(), and FEM_writeMesh().
Definition at line 1940 of file fem_mesh.C.
References FEM_Mesh::becomeGetting(), FEM_openMeshFile(), FEM_Entity::get_coord(), IDXL_List::getDest(), IDXL_Side::getLocalList(), list, n, nnodes, FEM_Mesh::node, p, FEM_Mesh::pup(), read_version(), FEM_Node::shared, FEM_Entity::size(), IDXL_List::size(), and IDXL_Side::size().
Definition at line 1971 of file fem_mesh.C.
References FEM_openMeshFile(), p, FEM_Mesh::pup(), and write_version().
FEM_Partition& FEM_curPartition | ( | void | ) |
Definition at line 169 of file fem.C.
Referenced by add_ghost_elem(), FEM_Add_ghost_layer(), FEM_Add_ghost_stencil(), FEM_Add_ghost_stencil_type(), FEM_Add_linear_periodicity(), FEM_Mesh_partition(), FEM_Set_sym_nodes(), FTN_NAME(), and gatherGhosts().
void FEM_Mesh_partition | ( | const FEM_Mesh * | mesh, | |
int | nchunks, | |||
int * | elem2chunk, | |||
bool | faceGraph = false | |||
) |
Definition at line 290 of file partition.C.
References mesh2graph(), mesh2graph_face(), METIS_PartGraphKway(), METIS_PartGraphRecursive(), ncon, FEM_Mesh::nElems(), CkThresholdTimer::start(), stats::time(), and Graph::toAdjList().
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.
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().
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().
Definition at line 285 of file map.C.
References c, splitter::canon, splitter::chunks, FEM_Mesh::copyShape(), splitter::dyn, FEM_Mesh::elem, dynChunk::elem, splitter::gElem, splitter::ghostNode, splitter::gNode, FEM_Entity_Types< T >::has(), splitter::mesh, splitter::nChunks, FEM_Mesh::node, CkVec< T >::resize(), FEM_Entity::size(), FEM_Entity_Types< T >::size(), splitter::sparseDest, and PUP::t.
splitter::~splitter | ( | ) | [inherited] |
Definition at line 311 of file map.C.
References c, splitter::chunks, splitter::dyn, FEM_Mesh::elem, splitter::gElem, splitter::gNode, splitter::mesh, splitter::nChunks, FEM_Entity_Types< T >::size(), splitter::sparseDest, and PUP::t.
void splitter::buildCommLists | ( | void | ) | [inherited] |
Definition at line 322 of file map.C.
References PUP::a, IDXL_Side::add(), dynChunk::addRealNode(), PUP::b, c, chunkList::chunk, splitter::chunks, splitter::dyn, FEM_Mesh::elem, splitter::elem2chunk, splitter::gElem, splitter::gNode, FEM_Entity_Types< T >::has(), len, chunkList::length(), chunkList::localNo, splitter::mesh, n, FEM_Mesh::nElems(), FEM_Mesh::node, dynChunk::node, noSymmetries, FEM_Node::shared, FEM_Entity::size(), FEM_Entity_Types< T >::size(), src, and PUP::t.
Referenced by FEM_Mesh_split().
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().
Definition at line 380 of file map.C.
References FEM_Mesh::becomeGetting(), splitter::chunks, FEM_Entity::copyEntity(), dest, splitter::dyn, dynChunk::elem, FEM_Mesh::elem, splitter::gNode, FEM_Entity_Types< T >::has(), splitter::mesh, dynChunk::node, FEM_Mesh::node, noSymmetries, chunkList::onChunk(), splitter::renumberNodesLocal(), FEM_Entity::setLength(), FEM_Node::setPrimary(), FEM_Entity::setSymmetries(), FEM_Entity_Types< T >::size(), CkVec< T >::size(), PUP::t, and FEM_Mesh::udata.
Referenced by FEM_Mesh_split().
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().
void splitter::separateSparse | ( | bool | forGhost | ) | [inherited] |
Definition at line 512 of file map.C.
References c, splitter::chunks, splitter::copySparseChunks(), PUP::d, FEM_Entity_Types< T >::get(), FEM_Entity_Types< T >::has(), splitter::mesh, splitter::nChunks, PUP::s, FEM_Entity_Types< T >::set(), FEM_Entity_Types< T >::size(), FEM_Mesh::sparse, splitter::sparseDest, src, and PUP::t.
Referenced by FEM_Mesh_split().
void splitter::addGhosts | ( | const FEM_Partition & | partition | ) | [inherited] |
Definition at line 582 of file map.C.
References splitter::addLayer(), splitter::addStencil(), splitter::canon, splitter::curGhostLayerNo, FEM_Partition::getCanon(), FEM_Partition::getRegion(), FEM_Partition::getRegions(), FEM_Partition::getSymmetries(), splitter::ghostNode, splitter::gNode, chunkList::isShared(), FEM_Ghost_Region::layer, splitter::mesh, n, FEM_Mesh::node, r, FEM_Entity::size(), FEM_Ghost_Region::stencil, splitter::sym, splitter::totGhostElem, and splitter::totGhostNode.
Referenced by FEM_Mesh_split().
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().
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().
void splitter::addLayer | ( | const FEM_Ghost_Layer & | g, | |
const FEM_Partition & | partition | |||
) | [private, inherited] |
Add an entire layer of ghost elements.
Definition at line 670 of file map.C.
References PUP::a, splitter::addGhostPair(), FEM_Ghost_Layer::addNodes, splitter::addSymmetryGhost(), tupleTable::addTuple(), splitter::addTuple(), PUP::b, tupleTable::beginLookup(), conn, FEM_Ghost_Layer::elem, FEM_Mesh::elem, splitter::gElem, FEM_Entity_Types< T >::has(), splitter::hasGhostNodes(), PUP::l, tupleTable::lookupNext(), tupleTable::MAX_TUPLE, splitter::mesh, elemList::next, FEM_Ghost_Layer::nodesPerTuple, FEM_Entity_Types< T >::size(), PUP::t, and PUP::u.
Referenced by splitter::addGhosts().
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().
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().
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().
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().
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().
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().
void splitter::consistencyCheck | ( | void | ) | [inherited] |
Definition at line 892 of file map.C.
References c, splitter::dyn, dynChunk::elem, FEM_Mesh::elem, splitter::equal(), FEM_Abort(), splitter::gElem, splitter::gNode, FEM_Entity_Types< T >::has(), PUP::l, splitter::mesh, splitter::nChunks, FEM_Mesh::node, dynChunk::node, noSymmetries, splitter::range(), FEM_Entity::size(), CkVec< T >::size(), FEM_Entity_Types< T >::size(), splitter::sym, PUP::t, and stats::time().
femMeshModify::femMeshModify | ( | femMeshModMsg * | fm | ) | [inherited] |
Definition at line 1838 of file fem_mesh_modify.C.
References femMeshModify::FEM_lock, femMeshModify::FEM_MUtil, femMeshModify::fmAdapt, femMeshModify::fmAdaptAlgs, femMeshModify::fmAdaptL, femMeshModify::fmInp, femMeshModify::fmLock, femMeshModify::fmMesh, femMeshModify::fmUtil, femMeshModify::idx, femMeshModMsg::myChunk, femMeshModMsg::numChunks, and femMeshModify::numChunks.
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] |
Pup to transfer this object's data.
Definition at line 2199 of file mesh_modify.C.
References femMeshModify::fmAdapt, femMeshModify::fmAdaptAlgs, femMeshModify::fmAdaptL, femMeshModify::fmfixedNodes, femMeshModify::fmIdxlLock, femMeshModify::fmInp, femMeshModify::fmLock, femMeshModify::fmLockN, femMeshModify::fmUtil, femMeshModify::idx, femMeshModify::numChunks, FEM_Adapt_Algs::pup(), FEM_AdaptL::pup(), FEM_Adapt::pup(), FEM_Interpolate::pup(), FEM_MUtil::pup(), FEM_lock::pup(), and femMeshModify::tproxy.
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.
void femMeshModify::setPointersAfterMigrate | ( | FEM_Mesh * | m | ) | [inherited] |
Set the mesh pointer after the migration.
Definition at line 2226 of file mesh_modify.C.
References FEM_Adapt_Algs::FEM_AdaptAlgsSetMesh(), FEM_AdaptL::FEM_AdaptLSetMesh(), FEM_Adapt::FEM_AdaptSetMesh(), FEM_Interpolate::FEM_InterpolateSetMesh(), femMeshModify::fmAdapt, femMeshModify::fmAdaptAlgs, femMeshModify::fmAdaptL, femMeshModify::fmInp, femMeshModify::fmLockN, femMeshModify::fmMesh, and CkVec< T >::size().
Referenced by femMeshModify::ckJustMigrated().
void femMeshModify::setFemMesh | ( | FEMMeshMsg * | fm | ) | [inherited] |
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.
Definition at line 1859 of file fem_mesh_modify.C.
References CmiMemoryCheck(), FEMMeshMsg::dimn, femMeshModify::FEM_Adapt, femMeshModify::FEM_Adapt_Algs, femMeshModify::FEM_AdaptL, femMeshModify::FEM_Interpolate, femMeshModify::fmAdapt, femMeshModify::fmAdaptAlgs, femMeshModify::fmAdaptL, femMeshModify::fmfixedNodes, femMeshModify::fmIdxlLock, femMeshModify::fmInp, femMeshModify::fmLockN, femMeshModify::fmMesh, FEM_Adapt::isCorner(), FEMMeshMsg::m, FEM_Mesh::node, femMeshModify::numChunks, CkVec< T >::push_back(), FEM_Mesh::setFemMeshModify(), and FEM_Entity::size().
Definition at line 1891 of file fem_mesh_modify.C.
References femMeshModify::fmLock, intMsg::i, int2Msg::i, int2Msg::j, and FEM_lock::lock().
Definition at line 1898 of file fem_mesh_modify.C.
References femMeshModify::fmLock, intMsg::i, int2Msg::i, int2Msg::j, and FEM_lock::unlock().
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().
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().
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.
intMsg * femMeshModify::addNodeRemote | ( | addNodeMsg * | fm | ) | [inherited] |
Definition at line 1998 of file fem_mesh_modify.C.
References IDXL_Side::addNode(), addNodeMsg::between, addNodeMsg::chunks, CmiMemoryCheck(), FEM_MUtil::exists_in_IDXL(), FEM_add_node(), femMeshModify::fmMesh, femMeshModify::fmUtil, addNodeMsg::forceShared, free(), FEM_Entity::ghostSend, intMsg::i, FEM_MUtil::lookup_in_IDXL(), malloc(), addNodeMsg::nBetween, FEM_Mesh::node, addNodeMsg::numChunks, and addNodeMsg::upcall.
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.
void femMeshModify::removeSharedNodeRemote | ( | removeSharedNodeMsg * | fm | ) | [inherited] |
Definition at line 2035 of file fem_mesh_modify.C.
References removeSharedNodeMsg::chk, CmiMemoryCheck(), femMeshModify::fmMesh, femMeshModify::fmUtil, removeSharedNodeMsg::index, and FEM_MUtil::removeNodeRemote().
Definition at line 2102 of file fem_mesh_modify.C.
References CmiMemoryCheck(), femMeshModify::fmMesh, femMeshModify::fmUtil, and FEM_MUtil::removeGhostNodeRemote().
void femMeshModify::addGhostElem | ( | addGhostElemMsg * | fm | ) | [inherited] |
Definition at line 2046 of file fem_mesh_modify.C.
References FEM_MUtil::addGhostElementRemote(), addGhostElemMsg::chk, CmiMemoryCheck(), addGhostElemMsg::connSize, addGhostElemMsg::elemType, femMeshModify::fmMesh, femMeshModify::fmUtil, addGhostElemMsg::ghostIndices, addGhostElemMsg::numGhostIndex, addGhostElemMsg::numSharedIndex, and addGhostElemMsg::sharedIndices.
intMsg * femMeshModify::addElementRemote | ( | addElemMsg * | fm | ) | [inherited] |
Definition at line 2069 of file fem_mesh_modify.C.
References FEM_MUtil::addElemRemote(), addElemMsg::chk, CmiMemoryCheck(), addElemMsg::conn, addElemMsg::connSize, addElemMsg::elemtype, femMeshModify::fmMesh, femMeshModify::fmUtil, addElemMsg::ghostIndices, and addElemMsg::numGhostIndex.
void femMeshModify::removeGhostElem | ( | removeGhostElemMsg * | fm | ) | [inherited] |
Definition at line 2080 of file fem_mesh_modify.C.
References removeGhostElemMsg::chk, CmiMemoryCheck(), removeGhostElemMsg::elementid, removeGhostElemMsg::elemtype, femMeshModify::fmMesh, femMeshModify::fmUtil, removeGhostElemMsg::ghostIndices, removeGhostElemMsg::ghostREIndices, removeGhostElemMsg::ghostRNIndices, removeGhostElemMsg::numGhostIndex, removeGhostElemMsg::numGhostREIndex, removeGhostElemMsg::numGhostRNIndex, removeGhostElemMsg::numSharedIndex, FEM_MUtil::removeGhostElementRemote(), and removeGhostElemMsg::sharedIndices.
void femMeshModify::removeElementRemote | ( | removeElemMsg * | fm | ) | [inherited] |
Definition at line 2091 of file fem_mesh_modify.C.
References removeElemMsg::chk, CmiMemoryCheck(), removeElemMsg::elementid, removeElemMsg::elemtype, femMeshModify::fmMesh, femMeshModify::fmUtil, removeElemMsg::permanent, and FEM_MUtil::removeElemRemote().
Definition at line 2113 of file fem_mesh_modify.C.
References FEM_Mesh::e2n_getAll(), FEM_MUtil::eatIntoElement(), FEM_Mesh::elem, FEM_MUtil::exists_in_IDXL(), femMeshModify::fmAdaptL, femMeshModify::fmMesh, femMeshModify::fmUtil, intMsg::i, FEM_MUtil::lookup_in_IDXL(), and FEM_AdaptL::unlockNodes().
Definition at line 2185 of file fem_mesh_modify.C.
References femMeshModify::fmMesh, femMeshModify::fmUtil, FEM_MUtil::getLockOwner(), and FEM_MUtil::lookup_in_IDXL().
Definition at line 2192 of file fem_mesh_modify.C.
References femMeshModify::fmMesh, femMeshModify::fmUtil, FEM_MUtil::knowsAbtNode(), and FEM_MUtil::lookup_in_IDXL().
void femMeshModify::refine_flip_element_leb | ( | int | fromChk, | |
int | propElemT, | |||
int | propNodeT, | |||
int | newNodeT, | |||
int | nbrOpNodeT, | |||
int | nbrghost, | |||
double | longEdgeLen | |||
) | [inherited] |
Definition at line 2200 of file fem_mesh_modify.C.
References CmiMemoryCheck(), femMeshModify::fmAdaptAlgs, femMeshModify::fmMesh, femMeshModify::getfmUtil(), FEM_MUtil::lookup_in_IDXL(), and FEM_Adapt_Algs::refine_flip_element_leb().
Definition at line 2224 of file fem_mesh_modify.C.
References FEM_MUtil::addToSharedList(), CmiMemoryCheck(), femMeshModify::fmMesh, and femMeshModify::fmUtil.
void femMeshModify::updateAttrs | ( | updateAttrsMsg * | umsg | ) | [inherited] |
update the attributes of the node with this data
Definition at line 2550 of file mesh_modify.C.
References updateAttrsMsg::data, updateAttrsMsg::datasize, updateAttrsMsg::elemType, femMeshModify::fmMesh, femMeshModify::fmUtil, updateAttrsMsg::fromChk, updateAttrsMsg::isGhost, updateAttrsMsg::isnode, FEM_MUtil::lookup_in_IDXL(), updateAttrsMsg::sharedIdx, femMeshModify::tc, and FEM_MUtil::updateAttrs().
void femMeshModify::updateghostsend | ( | verifyghostsendMsg * | vmsg | ) | [inherited] |
Definition at line 2446 of file fem_mesh_modify.C.
References verifyghostsendMsg::chunks, femMeshModify::fmMesh, femMeshModify::fmUtil, verifyghostsendMsg::fromChk, FEM_MUtil::lookup_in_IDXL(), verifyghostsendMsg::numchks, verifyghostsendMsg::sharedIdx, and FEM_MUtil::UpdateGhostSend().
Definition at line 2435 of file fem_mesh_modify.C.
References findgsMsg::chunks, FEM_MUtil::findGhostSend(), femMeshModify::fmMesh, femMeshModify::fmUtil, FEM_MUtil::lookup_in_IDXL(), and findgsMsg::numchks.
Definition at line 2292 of file fem_mesh_modify.C.
References CmiMemoryCheck(), PUP::d, FEM_MUtil::exists_in_IDXL(), femMeshModify::fmMesh, femMeshModify::fmUtil, IDXL_Side::getRec(), FEM_Entity::ghostSend, FEM_MUtil::lookup_in_IDXL(), and FEM_Mesh::node.
double2Msg * femMeshModify::getRemoteCoord | ( | int | fromChk, | |
int | ghostIdx | |||
) | [inherited] |
Definition at line 2264 of file fem_mesh_modify.C.
References CmiMemoryCheck(), FEM_Adapt_Algs::coord_attr, PUP::d, FEM_Mesh_dataP(), femMeshModify::fmAdaptAlgs, femMeshModify::fmMesh, femMeshModify::fmUtil, and FEM_MUtil::lookup_in_IDXL().
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().
Definition at line 2316 of file fem_mesh_modify.C.
References IDXL_Side::addNode(), CmiMemoryCheck(), femMeshModify::fmMesh, femMeshModify::fmUtil, FEM_Entity::ghost, FEM_Entity::ghostRecv, FEM_MUtil::lookup_in_IDXL(), and FEM_Mesh::node.
Definition at line 2342 of file fem_mesh_modify.C.
References CmiMemoryCheck(), femMeshModify::fmMesh, femMeshModify::fmUtil, FEM_Entity::ghostSend, FEM_MUtil::lookup_in_IDXL(), FEM_Mesh::node, and IDXL_Side::removeNode().
Definition at line 2329 of file fem_mesh_modify.C.
References IDXL_Side::addNode(), CmiMemoryCheck(), femMeshModify::fmMesh, femMeshModify::fmUtil, FEM_Entity::ghostSend, FEM_MUtil::lookup_in_IDXL(), and FEM_Mesh::node.
Definition at line 2355 of file fem_mesh_modify.C.
References CmiMemoryCheck(), femMeshModify::fmMesh, femMeshModify::fmUtil, and FEM_MUtil::verifyIdxlListRemote().
Definition at line 2366 of file fem_mesh_modify.C.
References CmiMemoryCheck(), femMeshModify::fmMesh, femMeshModify::fmUtil, and FEM_MUtil::idxllockLocal().
Definition at line 2381 of file fem_mesh_modify.C.
References CmiMemoryCheck(), femMeshModify::fmMesh, femMeshModify::fmUtil, and FEM_MUtil::idxlunlockLocal().
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().
Definition at line 1992 of file fem_mesh_modify.C.
References FEM_Modify_LockAll(), femMeshModify::fmMesh, femMeshModify::fmUtil, and FEM_MUtil::lookup_in_IDXL().
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().
void femMeshModify::verifyghostsend | ( | verifyghostsendMsg * | vmsg | ) | [inherited] |
Definition at line 2416 of file fem_mesh_modify.C.
References verifyghostsendMsg::chunks, femMeshModify::fmMesh, femMeshModify::fmUtil, verifyghostsendMsg::fromChk, IDXL_Side::getRec(), FEM_MUtil::lookup_in_IDXL(), FEM_Mesh::node, verifyghostsendMsg::numchks, FEM_Node::shared, and verifyghostsendMsg::sharedIdx.
Definition at line 2452 of file fem_mesh_modify.C.
References FEM_MUtil::exists_in_IDXL(), femMeshModify::fmMesh, femMeshModify::fmUtil, FEM_Mesh::getfmMM(), FEM_MUtil::lookup_in_IDXL(), and FEM_Mesh::n2e_getAll().
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.
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.
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.
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.
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().
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().
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().
Definition at line 2539 of file fem_mesh_modify.C.
References FEM_purge_element(), femMeshModify::fmMesh, femMeshModify::fmUtil, and FEM_MUtil::lookup_in_IDXL().
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.
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.
void femMeshModify::finish | ( | void | ) | [inherited] |
void femMeshModify::finish1 | ( | void | ) | [inherited] |
FEM_chunk * FEM_chunk::get | ( | const char * | caller | ) | [static, inherited] |
Return this thread's single static FEM_chunk instance:.
Definition at line 67 of file ParFUM.C.
References c, FEM_Abort(), FEM_globalID, and TCHARM_Get_global().
Referenced by addEdgeAdjacency(), clearEdgeAdjacency(), copyAdaptAdj(), copyEdgeAdaptAdj(), CreateAdaptAdjacencies(), FEM_Exchange_ghost_lists(), FEM_Get_ghost_list(), FEM_Get_ghost_list_length(), FEM_master_parallel_part(), FEM_Mesh_allocate(), FEM_Mesh_broadcast(), FEM_Mesh_copy(), FEM_Mesh_partition(), FEM_Set_sym_nodes(), FEM_slave_parallel_part(), FEM_Sym_coordinates(), findNodeSet(), FORTRAN_AS_C_RETURN(), FTN_NAME(), lookupAdaptAdjacencies(), lookupEdgeAdaptAdjacencies(), ParFUM_createComm(), ParFUM_deghosting(), ParFUM_desharing(), ParFUM_generateGlobalNodeNumbers(), ParFUM_recreateSharedNodes(), replaceAdaptAdj(), and replaceAdaptAdjOnEdge().
void FEM_chunk::exchangeGhostLists | ( | int | elemType, | |
int | inLen, | |||
const int * | inList, | |||
int | idxbase | |||
) | [inherited] |
Definition at line 1113 of file ParFUM.C.
References FEM_chunk::check(), FEM_chunk::defaultComm, IDXL_Side::findLocalList(), FEM_Mesh::getCount(), IDXL_List::getDest(), FEM_Entity::getGhostRecv(), FEM_Entity::getGhostSend(), IDXL_Side::getLocalList(), FEM_chunk::getMesh(), IDXL_Side::getRec(), PUP::l, list, FEM_chunk::listTmp, MPI_Incoming_pup(), MPI_Isend, MPI_Waitall, CkVec< T >::push_back(), CkVec< T >::resize(), PUP::s, FEM_Entity::size(), size, and IDXL_Side::size().
Referenced by FEM_Exchange_ghost_lists(), and FTN_NAME().
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().
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().
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().
Definition at line 1474 of file ParFUM.C.
References FEM_chunk::lookup(), FEM_Mesh::print(), and FEM_chunk::thisIndex.
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().
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().
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().
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().
Nodes::Nodes | ( | int | _nnodes | ) | [inherited] |
Definition at line 110 of file partition.C.
References Nodes::elts, NList::init(), and Nodes::nnodes.
Definition at line 120 of file partition.C.
References NList::add(), assert, Nodes::elts, and Nodes::nnodes.
Graph::Graph | ( | int | elems | ) | [inherited] |
Definition at line 126 of file partition.C.
References NList::init(), Graph::nbrs, and Graph::nelems.
Definition at line 137 of file partition.C.
References NList::add(), assert, Graph::nbrs, and Graph::nelems.
Referenced by mesh2graph(), and mesh2graph_face().
Definition at line 152 of file partition.C.
References Graph::elems(), NList::getelt(), Graph::nbrs, and Graph::nelems.
Referenced by FEM_Mesh_partition().
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 |
double sharedSearchTime = 0 |
int femVersion = 1 |
FEM_Partition* mypartition = NULL [static] |
PartitionMode FEM_Partition_Mode = SerialPartitionMode |
MetisGraphType FEM_Partition_Graph_Type = NodeNeighborMode |
const int* paneFmChunk |
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.
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.
FEM_Symmetries_t noSymmetries = (FEM_Symmetries_t)0 [static] |
Definition at line 2344 of file ParFUM_internals.h.
Definition at line 16 of file fem_adapt_if.h.
Referenced by NormalSlabArray::acceptDataForIFFT(), ADIOI_XFS_Open(), TopoLB::computePartitions(), TopoCentLB::computePartitions(), FTN_NAME(), KMeansBOC::globalMetricRefinement(), pup_decodeSize(), PUPmarshall(), and CkMulticastMgr::setup().
FLINKAGE void double * sizes |
Definition at line 16 of file fem_adapt_if.h.
Referenced by alignas(), block::block(), CPathGetEltset(), cpd_memory_single_pup(), FTN_NAME(), main(), NborBaseLB::Strategy(), and DistBaseLB::Strategy().