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