PPL Logo

libs/ck-libs/fem/fem_mesh_modify.h File Reference

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.


Function Documentation

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 
)

int FEM_remove_element ( FEM_Mesh m,
int  element,
int  elem_type = 0,
int  permanent = -1 
)

int FEM_add_node_local ( FEM_Mesh m,
int  addGhost = 0 
)

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().

Here is the call graph for this function:

Here is the caller graph for this function:


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