PPL Logo

libs/ck-libs/ParFUM/mesh_modify.C File Reference

Go to the source code of this file.

Enumerations

enum  { FEM_globalID = 33 }

Functions

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.

Variables

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


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