Go to the source code of this file.
Data Structures | |
class | femMeshModMsg |
Message to initialize 'numChunks' and 'chunkIdx' of femMeshModify on all chunks. More... | |
class | boolMsg |
A Message to encapsulate a boolean. More... | |
class | intMsg |
A message to encapsulate an integer. More... | |
class | int2Msg |
A message to encapsulate two integers. More... | |
class | double2Msg |
A message to encapsulate two doubles. More... | |
class | FEMMeshMsg |
A message to encapsulate a mesh pointer and a tcharm pointer. More... | |
class | addNodeMsg |
A message to pack all the data needed to tell a remote chunk to add a new node. More... | |
class | sharedNodeMsg |
A message used to tell a remote chunk to add a shared node. More... | |
class | removeSharedNodeMsg |
A message to tell a remote chunk to remove a shared node. More... | |
class | addGhostElemMsg |
A message to tell a remote chunk to add a ghost element (all data is packed). More... | |
class | chunkListMsg |
A message to return data about the chunks that share/ghost a node/element. More... | |
class | addElemMsg |
A message to pack all data to tell a remote chunk to add an element. More... | |
class | removeGhostElemMsg |
A message to tell a remote chunk to remove a ghost element and some IDXL list entries. More... | |
class | removeElemMsg |
A message to tell a remote chunk to remove an element. More... | |
class | verifyghostsendMsg |
A message to verify if the IDXL entries for a node/element on one chunk is consistent with another chunk. More... | |
class | findgsMsg |
A message that packs the indices of a bunch of chunks (used for ghost send). More... | |
class | elemDataMsg |
class | femMeshModify |
The shadow array attached to a fem chunk to perform all communication during adaptivity. More... | |
Functions | |
int | FEM_add_node (FEM_Mesh *m, int *adjacent_nodes=0, int num_adjacent_nodes=0, int *chunks=0, int numChunks=0, int forceShared=0, int upcall=0) |
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. | |
int | FEM_remove_element (FEM_Mesh *m, int element, int elem_type=0, int permanent=-1) |
int | FEM_purge_element (FEM_Mesh *m, int element, int elem_type=0) |
Purge an element works for both local and ghost elements. | |
int | FEM_add_element (FEM_Mesh *m, int *conn, int conn_size, int elem_type=0, int chunkNo=-1) |
This addds an element with the given 'conn' connecitivity and 'connSize' number of nodes in e2n to the mesh 'm'. | |
int | FEM_Modify_Lock (FEM_Mesh *m, int *affectedNodes=0, int numAffectedNodes=0, int *affectedElts=0, int numAffectedElts=0, int elemtype=0) |
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=true) |
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=true) |
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. | |
int | FEM_add_node_local (FEM_Mesh *m, int addGhost=0) |
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. | |
int | FEM_add_element_local (FEM_Mesh *m, const int *conn, int connSize, int elemType, int addGhost) |
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. | |
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 | 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 *fem_mesh, 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. | |
Variables | |
CProxy_femMeshModify | meshMod |
File: fem_mesh_modify.C Authors: Nilesh Choudhury, Isaac Dooley. |
int FEM_add_node | ( | FEM_Mesh * | m, | |
int * | adjacent_nodes = 0 , |
|||
int | num_adjacent_nodes = 0 , |
|||
int * | chunks = 0 , |
|||
int | numChunks = 0 , |
|||
int | forceShared = 0 , |
|||
int | upcall = 0 | |||
) |
Definition at line 145 of file fem_mesh_modify.C.
References FEM_Interpolate::NodalArgs::addNode, IDXL_Side::addNode(), addNodeMsg::between, addNodeMsg::chk, addNodeMsg::chunks, CmiMemoryCheck(), 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, FEM_MUtil::splitEntitySharing(), and addNodeMsg::upcall.
Definition at line 446 of file fem_mesh_modify.C.
References IDXL_Side::addList(), IDXL_Side::addNode(), PUP::b, removeGhostElemMsg::chk, removeElemMsg::chk, CmiMemoryCheck(), FEM_Mesh::e2n_getAll(), FEM_Mesh::e2n_replace(), FEM_Mesh::elem, removeGhostElemMsg::elementid, removeElemMsg::elementid, removeGhostElemMsg::elemtype, removeElemMsg::elemtype, FEM_MUtil::exists_in_IDXL(), FEM_add_node_local(), FEM_Modify_LockAll(), FEM_remove_element_local(), FEM_remove_node_local(), femMeshModify::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, PUP::l, 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(), IDXL_Side::removeNode(), FEM_Node::shared, removeGhostElemMsg::sharedIndices, CkVec< T >::size(), IDXL_List::size(), and size.
Definition at line 122 of file fem_mesh_modify.C.
References femMeshModify::fmLockN, FEM_Entity::get_next_invalid(), FEM_Mesh::getfmMM(), FEM_Entity::getGhost(), FEM_Mesh::n2e_removeAll(), FEM_Mesh::n2n_removeAll(), FEM_Mesh::node, CkVec< T >::push_back(), and CkVec< T >::size().
Referenced by FEM_MUtil::addGhostElementRemote(), FEM_add_node(), FEM_add_shared_node_remote(), and FEM_remove_element().
int FEM_add_element_local | ( | FEM_Mesh * | m, | |
const int * | conn, | |||
int | connSize, | |||
int | elemType, | |||
int | addGhost | |||
) |
Definition at line 984 of file fem_mesh_modify.C.
References CmiMemoryCheck(), FEM_Mesh::e2e_getAll(), FEM_Mesh::e2e_removeAll(), FEM_Mesh::elem, FEM_Mesh::n2e_add(), FEM_Mesh::n2n_add(), FEM_Mesh::n2n_exists(), and update_new_element_e2e().
Referenced by FEM_MUtil::addGhostElementRemote(), and FEM_add_element().