PPL Logo

FEM_Mesh Class Reference
[ParFUM Unstructured Mesh Framework]

A FEM_Mesh is a collection of entities. More...

#include <fem_mesh.h>

Inheritance diagram for FEM_Mesh:

Inheritance graph
[legend]
Collaboration diagram for FEM_Mesh:

Collaboration graph
[legend]

Public Member Functions

void setFemMeshModify (femMeshModify *m)
 FEM_Mesh ()
void pup (PUP::er &p)
 ~FEM_Mesh ()
void setSymList (const FEM_Sym_List &src)
 The symmetries that apply to this mesh:.
const FEM_Sym_ListgetSymList (void) const
void copyShape (const FEM_Mesh &src)
 Set up the "shape" of our fields-- the number of element types, the datatypes for user data, etc--based on this mesh.
femMeshModifygetfmMM ()
FEM_EntitysetCount (int elTypeOrMinusOne)
const FEM_EntitygetCount (int elTypeOrMinusOne) const
FEM_Elem & setElem (int elType)
const FEM_Elem & getElem (int elType) const
int chkET (int elType) const
FEM_Entitylookup (int entity, const char *caller)
 Look up this FEM_Entity type in this mesh, or abort if it's not valid.
const FEM_Entitylookup (int entity, const char *caller) const
bool isSetting (void) const
 Set/get direction control:.
void becomeSetting (void)
void becomeGetting (void)
int nElems () const
int nElems (int t) const
 Return the total number of elements before type t.
int getGlobalElem (int elType, int elNo) const
 Return the "global" number of element elNo of type elType.
void setAscendingGlobalno (void)
 Set our global numbers as 0...n-1 for nodes, elements, and sparse.
void setAbsoluteGlobalno ()
 The global numbers for elements runs across different types.
void copyOldGlobalno (const FEM_Mesh &m)
void print (int idxBase)
int getEntities (int *entites)
 Extract a list of our entities:.
void createNodeElemAdj ()
void createNodeNodeAdj ()
void createElemElemAdj ()
FEM_ElemAdj_LayergetElemAdjLayer (void)
void e2e_getAll (int e, int *neighborss, int etype=0)
 Place all of element e's adjacent elements in neighbors; assumes neighbors allocated to correct size.
int e2e_getNbr (int e, short idx, int etype=0)
 Given id of element e, return the id of the idx-th adjacent element.
int e2e_getIndex (int e, int nbr, int etype=0)
 Given id of element e and id of another element nbr, return i such that nbr is the i-th element adjacent to e.
void e2e_setAll (int e, int *neighbors, int etype=0)
 Set the element adjacencies of element e to neighbors; assumes neighbors has the correct size.
void e2e_setIndex (int e, short idx, int newElem, int etype=0)
 Set the idx-th element adjacent to e to be newElem.
void e2e_replace (int e, int oldNbr, int newNbr, int etype=0)
 Find element oldNbr in e's adjacent elements and replace with newNbr.
void e2e_removeAll (int e, int etype=0)
 Remove all neighboring elements in adjacency.
void e2n_getAll (int e, int *adjnodes, int etype=0)
 Place all of element e's adjacent nodes in adjnodes; assumes adjnodes allocated to correct size.
int e2n_getNode (int e, short idx, int etype=0)
 Given id of element e, return the id of the idx-th adjacent node.
short e2n_getIndex (int e, int n, int etype=0)
 Given id of element e and id of a node n, return i such that n is the i-th node adjacent to e.
void e2n_setAll (int e, int *adjnodes, int etype=0)
 Set the node adjacencies of element e to adjnodes; assumes adjnodes has the correct size.
void e2n_setIndex (int e, short idx, int newNode, int etype=0)
 Set the idx-th node adjacent to e to be newNode.
void e2n_replace (int e, int oldNode, int newNode, int etype=0)
 Find node oldNode in e's adjacent ndoes and replace with newNode.
void e2n_removeAll (int e, int etype=0)
 Replace all entries with -1.
void n2n_getAll (int n, int **adjnodes, int *sz)
 Place all of node n's adjacent nodes in adjnodes and the resulting length of adjnodes in sz; assumes adjnodes is not allocated, but sz is.
void n2n_add (int n, int newNode)
 Adds newNode to node n's node adjacency list.
void n2n_remove (int n, int oldNode)
 Removes oldNode from n's node adjacency list.
void n2n_replace (int n, int oldNode, int newNode)
 Finds oldNode in n's node adjacency list, and replaces it with newNode.
void n2n_removeAll (int n)
 Remove all nodes from n's node adjacency list.
int n2n_exists (int n, int queryNode)
 Is queryNode in node n's adjacency vector?
void n2e_getAll (int n, int **adjelements, int *sz)
 Place all of node n's adjacent elements in adjelements and the resulting length of adjelements in sz; assumes adjelements is not allocated, but sz is.
void n2e_add (int n, int newElem)
 Adds newElem to node n's element adjacency list.
void n2e_remove (int n, int oldElem)
 Removes oldElem from n's element adjacency list.
void n2e_replace (int n, int oldElem, int newElem)
 Finds oldElem in n's element adjacency list, and replaces it with newElem.
void n2e_removeAll (int n)
 Remove all elements from n's element adjacency list.
int getElementOnEdge (int n1, int n2)
 Get an element on edge (n1, n2) where n1, n2 are chunk-local node numberings and result is chunk-local element; return -1 in case of failure.
void get2ElementsOnEdge (int n1, int n2, int *result_e1, int *result_e2)
 Get two elements adjacent to both n1 and n2.
void setFemMeshModify (femMeshModify *m)
void setParfumSA (ParFUMShadowArray *m)
 FEM_Mesh ()
void pup (PUP::er &p)
 ~FEM_Mesh ()
void setSymList (const FEM_Sym_List &src)
 The symmetries that apply to this mesh:.
const FEM_Sym_ListgetSymList (void) const
void copyShape (const FEM_Mesh &src)
 Set up the "shape" of our fields-- the number of element types, the datatypes for user data, etc--based on this mesh.
femMeshModifygetfmMM ()
FEM_EntitysetCount (int elTypeOrMinusOne)
const FEM_EntitygetCount (int elTypeOrMinusOne) const
FEM_Elem & setElem (int elType)
const FEM_Elem & getElem (int elType) const
int chkET (int elType) const
FEM_Entitylookup (int entity, const char *caller)
 Look up this FEM_Entity type in this mesh, or abort if it's not valid.
const FEM_Entitylookup (int entity, const char *caller) const
bool isSetting (void) const
 Set/get direction control:.
void becomeSetting (void)
void becomeGetting (void)
int nElems () const
int nElems (int t) const
 Return the total number of elements before type t.
int getGlobalElem (int elType, int elNo) const
 Return the "global" number of element elNo of type elType.
void setAscendingGlobalno (void)
 Set our global numbers as 0...n-1 for nodes, elements, and sparse.
void setAbsoluteGlobalno ()
 The global numbers for elements runs across different types.
void copyOldGlobalno (const FEM_Mesh &m)
void print (int idxBase)
int getEntities (int *entites)
 Extract a list of our entities:.
void clearSharedNodes ()
 clearing the idxl and data for shared nodes and ghost nodes and shared elements
void clearGhostNodes ()
void clearGhostElems ()
void createNodeElemAdj ()
void createNodeNodeAdj ()
void createElemElemAdj ()
FEM_ElemAdj_LayergetElemAdjLayer (void)
void e2e_getAll (int e, int *neighborss, int etype=0)
 Place all of element e's adjacent elements in neighbors; assumes neighbors allocated to correct size.
int e2e_getNbr (int e, short idx, int etype=0)
 Given id of element e, return the id of the idx-th adjacent element.
int e2e_getIndex (int e, int nbr, int etype=0)
 Given id of element e and id of another element nbr, return i such that nbr is the i-th element adjacent to e.
ElemID e2e_getElem (int idx, int nbr, int etype=0)
 Same as previous but also returning the element type.
ElemID e2e_getElem (ElemID elem, int nbr)
 Get an element adjacent to elem across its nbr'th face.
ElemID e2e_getElem (ElemID *elem, int nbr)
 Same as above.
void e2e_setAll (int e, int *neighbors, int etype=0)
 Set the element adjacencies of element e to neighbors; assumes neighbors has the correct size.
void e2e_setIndex (int e, short idx, int newElem, int etype=0)
 Set the idx-th element adjacent to e to be newElem.
void e2e_replace (int e, int oldNbr, int newNbr, int etype=0)
 Find element oldNbr in e's adjacent elements and replace with newNbr.
void e2e_replace (ElemID e, ElemID oldNbr, ElemID newNbr)
 Find element oldNbr in e's adjacent elements and replace with newNbr.
void e2e_removeAll (int e, int etype=0)
 Remove all neighboring elements in adjacency.
void e2e_printAll (ElemID e)
void e2n_getAll (int e, int *adjnodes, int etype=0)
 Place all of element e's adjacent nodes in adjnodes; assumes adjnodes allocated to correct size.
int e2n_getNode (int e, short idx, int etype=0)
 Given id of element e, return the id of the idx-th adjacent node.
short e2n_getIndex (int e, int n, int etype=0)
 Given id of element e and id of a node n, return i such that n is the i-th node adjacent to e.
void e2n_setAll (int e, int *adjnodes, int etype=0)
 Set the node adjacencies of element e to adjnodes; assumes adjnodes has the correct size.
void e2n_setIndex (int e, short idx, int newNode, int etype=0)
 Set the idx-th node adjacent to e to be newNode.
void e2n_replace (int e, int oldNode, int newNode, int etype=0)
 Find node oldNode in e's adjacent ndoes and replace with newNode.
void e2n_removeAll (int e, int etype=0)
 Replace all entries with -1.
int n2n_getLength (int n)
void n2n_getAll (int n, int *&adjnodes, int &sz)
 Place all of node n's adjacent nodes in adjnodes and the resulting length of adjnodes in sz; assumes adjnodes is not allocated, but sz is.
void n2n_add (int n, int newNode)
 Adds newNode to node n's node adjacency list.
void n2n_remove (int n, int oldNode)
 Removes oldNode from n's node adjacency list.
void n2n_replace (int n, int oldNode, int newNode)
 Finds oldNode in n's node adjacency list, and replaces it with newNode.
void n2n_removeAll (int n)
 Remove all nodes from n's node adjacency list.
int n2n_exists (int n, int queryNode)
 Is queryNode in node n's adjacency vector?
int n2e_getLength (int n)
void n2e_getAll (int n, int *&adjelements, int &sz)
 Place all of node n's adjacent elements in adjelements and the resulting length of adjelements in sz; assumes adjelements is not allocated, but sz is.
const CkVec< ElemID > & n2e_getAll (int n)
 Return a reference to the structure holding all the elements adjacent to a node.
ElemID n2e_getElem (int n, int whichAdjElem)
 Get one of node n's adjacent elements.
void n2e_add (int n, int newElem)
 Adds newElem to node n's element adjacency list.
void n2e_remove (int n, int oldElem)
 Removes oldElem from n's element adjacency list.
void n2e_replace (int n, int oldElem, int newElem)
 Finds oldElem in n's element adjacency list, and replaces it with newElem.
void n2e_removeAll (int n)
 Remove all elements from n's element adjacency list.
int getElementOnEdge (int n1, int n2)
 Get an element on edge (n1, n2) where n1, n2 are chunk-local node numberings and result is chunk-local element; return -1 in case of failure.
void get2ElementsOnEdge (int n1, int n2, int *result_e1, int *result_e2)
 Get two elements adjacent to both n1 and n2.
void get2ElementsOnEdgeSorted (int n1, int n2, int *result_e1, int *result_e2)
 Get two elements adjacent to both n1 and n2.
int countElementsOnEdge (int n1, int n2)
 Count the number of elements adjacent to both n1 and n2.
void detectFeatures ()
 Detect features of the mesh, storing results in verticesOnBoundary, edgesOnBoundary, cornersOnBoundary.

Data Fields

FEM_Node node
 The nodes in this mesh:.
FEM_Entity_Types< FEM_Elem > elem
 The different element types in this mesh:.
FEM_Entity_Types< FEM_Sparse > sparse
 The different sparse types in this mesh:.
FEM_Userdata_list udata
 The unassociated user data for this mesh:.
femMeshModifyfmMM
ParFUMShadowArrayparfumSA
bool lastLayerSet
FEM_ElemAdj_LayerlastElemAdjLayer
FEM_Entity_Types< FEM_Elem > elem
 The different element types in this mesh:.
FEM_Entity_Types< FEM_Sparse > sparse
 The different sparse types in this mesh:.
std::set< std::pair< int, int > > edgesOnBoundary
 list of edges on the boundary(adjacent to at least one local node)
std::set< intverticesOnBoundary
 list of the nodes found in edgesOnBoundary
std::set< intcornersOnBoundary
 list of corners on the mesh.

Private Member Functions

void checkElemType (int elType, const char *caller) const
void checkSparseType (int uniqueID, const char *caller) const
void checkElemType (int elType, const char *caller) const
void checkSparseType (int uniqueID, const char *caller) const

Private Attributes

FEM_Sym_List symList
 The symmetries in the mesh.
bool m_isSetting
femMeshModifyfmMM
FEM_ElemAdj_LayerlastElemAdjLayer

Detailed Description

A FEM_Mesh is a collection of entities.

This class describes all the nodes and elements in a finite-element mesh or submesh.

Definition at line 1147 of file fem_mesh.h.


Constructor & Destructor Documentation

FEM_Mesh::FEM_Mesh (  ) 

Definition at line 1725 of file fem_mesh.C.

References lastElemAdjLayer, and m_isSetting.

FEM_Mesh::~FEM_Mesh (  ) 

Definition at line 1734 of file fem_mesh.C.

FEM_Mesh::FEM_Mesh (  ) 

FEM_Mesh::~FEM_Mesh (  ) 


Member Function Documentation

void FEM_Mesh::checkElemType ( int  elType,
const char *  caller 
) const [private]

void FEM_Mesh::checkSparseType ( int  uniqueID,
const char *  caller 
) const [private]

void FEM_Mesh::setFemMeshModify ( femMeshModify m  ) 

Definition at line 1773 of file fem_mesh.C.

References fmMM.

Referenced by femMeshModify::setFemMesh().

Here is the caller graph for this function:

void FEM_Mesh::pup ( PUP::er p  ) 

Definition at line 1782 of file fem_mesh.C.

References PUP::er::comment(), elem, m_isSetting, FEM_Userdata_list::pup(), FEM_Sym_List::pup(), FEM_Entity_Types< T >::pup(), sparse, symList, and udata.

Referenced by FEM_readMesh(), FEM_writeMesh(), and MeshElem::pup().

Here is the call graph for this function:

Here is the caller graph for this function:

void FEM_Mesh::setSymList ( const FEM_Sym_List src  )  [inline]

The symmetries that apply to this mesh:.

Definition at line 1178 of file fem_mesh.h.

Referenced by copyShape(), and FEM_Mesh_split().

Here is the caller graph for this function:

const FEM_Sym_List& FEM_Mesh::getSymList ( void   )  const [inline]

Definition at line 1179 of file fem_mesh.h.

Referenced by copyShape(), and FEM_Sym_coordinates().

Here is the caller graph for this function:

void FEM_Mesh::copyShape ( const FEM_Mesh src  ) 

Set up the "shape" of our fields-- the number of element types, the datatypes for user data, etc--based on this mesh.

Definition at line 1883 of file fem_mesh.C.

References elem, FEM_Entity_Types< T >::get(), getSymList(), FEM_Entity_Types< T >::has(), node, PUP::s, FEM_Entity_Types< T >::set(), setSymList(), FEM_Entity_Types< T >::size(), and sparse.

Referenced by FEM_break_mesh(), FEM_Mesh_assemble(), MeshElem::operator+=(), MeshElem::operator=(), and splitter::splitter().

Here is the call graph for this function:

Here is the caller graph for this function:

femMeshModify * FEM_Mesh::getfmMM (  ) 

FEM_Entity& FEM_Mesh::setCount ( int  elTypeOrMinusOne  )  [inline]

Definition at line 1189 of file fem_mesh.h.

References elem.

const FEM_Entity& FEM_Mesh::getCount ( int  elTypeOrMinusOne  )  const [inline]

Definition at line 1193 of file fem_mesh.h.

References elem.

Referenced by FEM_chunk::exchangeGhostLists(), FEMchunk::exchangeGhostLists(), and FEM_Sym_coordinates().

Here is the caller graph for this function:

FEM_Elem& FEM_Mesh::setElem ( int  elType  )  [inline]

Definition at line 1197 of file fem_mesh.h.

References elem.

const FEM_Elem& FEM_Mesh::getElem ( int  elType  )  const [inline]

Definition at line 1198 of file fem_mesh.h.

References elem.

Referenced by ParFUMShadowArray::collectLocalNodes().

Here is the caller graph for this function:

int FEM_Mesh::chkET ( int  elType  )  const

Definition at line 1806 of file fem_mesh.C.

References elem, and FEM_Entity_Types< T >::size().

Referenced by FEM_Ghost_Stencil::check().

Here is the call graph for this function:

Here is the caller graph for this function:

FEM_Entity * FEM_Mesh::lookup ( int  entity,
const char *  caller 
)

const FEM_Entity * FEM_Mesh::lookup ( int  entity,
const char *  caller 
) const

FIXME: the const version is quite similar to the above, but it should *not* create new Entity types...

Definition at line 1767 of file fem_mesh.C.

References FEM_Entity::lookup().

Here is the call graph for this function:

bool FEM_Mesh::isSetting ( void   )  const [inline]

Set/get direction control:.

Definition at line 1206 of file fem_mesh.h.

Referenced by FEM_Mesh_data_layoutP().

Here is the caller graph for this function:

void FEM_Mesh::becomeSetting ( void   )  [inline]

Definition at line 1207 of file fem_mesh.h.

Referenced by FEM_Mesh_allocate().

Here is the caller graph for this function:

void FEM_Mesh::becomeGetting ( void   )  [inline]

Definition at line 1208 of file fem_mesh.h.

Referenced by splitter::createMesh(), FEM_master_parallel_part(), FEM_Mesh_assemble(), FEM_readMesh(), and FEM_slave_parallel_part().

Here is the caller graph for this function:

int FEM_Mesh::nElems (  )  const [inline]

int FEM_Mesh::nElems ( int  t  )  const

Return the total number of elements before type t.

Definition at line 1814 of file fem_mesh.C.

References elem, FEM_Entity_Types< T >::get(), FEM_Entity_Types< T >::has(), and FEM_Entity_Types< T >::size().

Here is the call graph for this function:

int FEM_Mesh::getGlobalElem ( int  elType,
int  elNo 
) const

Return the "global" number of element elNo of type elType.

Definition at line 1831 of file fem_mesh.C.

References elem, nElems(), and size.

Referenced by splitter::copySparseChunks().

Here is the call graph for this function:

Here is the caller graph for this function:

void FEM_Mesh::setAscendingGlobalno ( void   ) 

Set our global numbers as 0...n-1 for nodes, elements, and sparse.

Definition at line 1845 of file fem_mesh.C.

References elem, FEM_Entity_Types< T >::has(), PUP::s, FEM_Entity_Types< T >::size(), and sparse.

Referenced by FEM_Mesh_partition(), and setAbsoluteGlobalno().

Here is the call graph for this function:

Here is the caller graph for this function:

void FEM_Mesh::setAbsoluteGlobalno (  ) 

The global numbers for elements runs across different types.

Definition at line 1852 of file fem_mesh.C.

References elem, FEM_Entity_Types< T >::has(), nElems(), setAscendingGlobalno(), and FEM_Entity_Types< T >::size().

Referenced by FEM_master_parallel_part().

Here is the call graph for this function:

Here is the caller graph for this function:

void FEM_Mesh::copyOldGlobalno ( const FEM_Mesh m  ) 

Definition at line 1859 of file fem_mesh.C.

References elem, FEM_Entity_Types< T >::has(), node, PUP::s, FEM_Entity_Types< T >::size(), and sparse.

Here is the call graph for this function:

int FEM_Mesh::getEntities ( int entites  ) 

Extract a list of our entities:.

Definition at line 1896 of file fem_mesh.C.

References elem, FEM_Entity_Types< T >::has(), PUP::s, FEM_Entity_Types< T >::size(), and sparse.

Here is the call graph for this function:

void FEM_Mesh::createNodeElemAdj (  ) 

Definition at line 314 of file fem_mesh_adjacency.C.

References CmiMemoryCheck(), elem, and FEM_Entity_Types< T >::size().

Referenced by FORTRAN_AS_C().

Here is the call graph for this function:

Here is the caller graph for this function:

void FEM_Mesh::createNodeNodeAdj (  ) 

Definition at line 324 of file fem_mesh_adjacency.C.

References CmiMemoryCheck(), elem, and FEM_Entity_Types< T >::size().

Referenced by FORTRAN_AS_C().

Here is the call graph for this function:

Here is the caller graph for this function:

void FEM_Mesh::createElemElemAdj (  ) 

FEM_ElemAdj_Layer * FEM_Mesh::getElemAdjLayer ( void   ) 

Definition at line 341 of file fem_mesh_adjacency.C.

References lastElemAdjLayer.

Referenced by createElemElemAdj(), FEM_Add_elem2face_tuples(), and update_new_element_e2e().

Here is the caller graph for this function:

void FEM_Mesh::e2e_getAll ( int  e,
int neighborss,
int  etype = 0 
)

Place all of element e's adjacent elements in neighbors; assumes neighbors allocated to correct size.

Place all of element e's adjacent elements in neighbors; assumes neighbors allocated to correct size.

Definition at line 542 of file fem_mesh_adjacency.C.

References CmiMemoryCheck(), elem, FEM_Entity_Types< T >::get(), lookup(), and BasicTable2d< T >::width().

Referenced by FEM_AdaptL::edge_contraction_help(), FEM_add_element_local(), FEM_MUtil::FEM_Print_e2e(), and FEM_remove_element_local().

Here is the call graph for this function:

Here is the caller graph for this function:

int FEM_Mesh::e2e_getNbr ( int  e,
short  idx,
int  etype = 0 
)

Given id of element e, return the id of the idx-th adjacent element.

Given id of element e of type etype, return the id of the idx-th adjacent element.

Definition at line 569 of file fem_mesh_adjacency.C.

References CmiMemoryCheck(), elem, FEM_Entity_Types< T >::get(), and lookup().

Referenced by FEM_Adapt::adj_traverse(), FEM_Adapt_Algs::Coarsen(), FEM_Adapt::edge_contraction(), FEM_Adapt::edge_contraction_help(), FEM_Adapt::edge_flip_help(), FEM_Adapt::findAdjData(), Bulk_Adapt::flipOrBisect(), FEM_Adapt_Algs::flipOrBisect(), FEM_Adapt_Algs::refine_element_leb(), FEM_Adapt::vertex_remove_help(), FEM_Adapt::vertex_split(), and FEM_Adapt::vertex_split_help().

Here is the call graph for this function:

Here is the caller graph for this function:

int FEM_Mesh::e2e_getIndex ( int  e,
int  nbr,
int  etype = 0 
)

Given id of element e and id of another element nbr, return i such that nbr is the i-th element adjacent to e.

Given id of element e and id of another element nbr, return i such that nbr is the i-th element adjacent to e.

Definition at line 593 of file fem_mesh_adjacency.C.

References CmiMemoryCheck(), elem, FEM_Entity_Types< T >::get(), lookup(), and BasicTable2d< T >::width().

Here is the call graph for this function:

void FEM_Mesh::e2e_setAll ( int  e,
int neighbors,
int  etype = 0 
)

Set the element adjacencies of element e to neighbors; assumes neighbors has the correct size.

Set the element adjacencies of element e to neighbors; assumes neighbors has the correct size.

Definition at line 626 of file fem_mesh_adjacency.C.

References CmiMemoryCheck(), elem, FEM_Entity_Types< T >::get(), lookup(), and BasicTable2d< T >::width().

Referenced by FEM_Adapt::localEdgeBisect(), and FEM_Adapt::vertex_split().

Here is the call graph for this function:

Here is the caller graph for this function:

void FEM_Mesh::e2e_setIndex ( int  e,
short  idx,
int  newElem,
int  etype = 0 
)

Set the idx-th element adjacent to e to be newElem.

Definition at line 658 of file fem_mesh_adjacency.C.

References CmiMemoryCheck(), elem, FEM_Entity_Types< T >::get(), and lookup().

Referenced by FEM_Adapt::edge_flip_help().

Here is the call graph for this function:

Here is the caller graph for this function:

void FEM_Mesh::e2e_replace ( int  e,
int  oldNbr,
int  newNbr,
int  etype = 0 
)

Find element oldNbr in e's adjacent elements and replace with newNbr.

Definition at line 681 of file fem_mesh_adjacency.C.

References CmiMemoryCheck(), elem, FEM_Entity_Types< T >::get(), lookup(), and BasicTable2d< T >::width().

Referenced by FEM_Adapt::edge_bisect_help(), FEM_Adapt::edge_contraction_help(), FEM_Adapt::edge_flip_help(), FEM_remove_element_local(), FEM_Adapt::localEdgeBisect(), FEM_Adapt::vertex_remove_help(), and FEM_Adapt::vertex_split().

Here is the call graph for this function:

Here is the caller graph for this function:

void FEM_Mesh::e2e_removeAll ( int  e,
int  etype = 0 
)

Remove all neighboring elements in adjacency.

Definition at line 714 of file fem_mesh_adjacency.C.

References CmiMemoryCheck(), elem, FEM_Entity_Types< T >::get(), lookup(), and BasicTable2d< T >::width().

Referenced by FEM_Adapt::deleteElement(), and FEM_add_element_local().

Here is the call graph for this function:

Here is the caller graph for this function:

void FEM_Mesh::e2n_getAll ( int  e,
int adjnodes,
int  etype = 0 
)

int FEM_Mesh::e2n_getNode ( int  e,
short  idx,
int  etype = 0 
)

Given id of element e, return the id of the idx-th adjacent node.

Definition at line 769 of file fem_mesh_adjacency.C.

References CmiMemoryCheck(), conn, elem, and lookup().

Referenced by FEM_Adapt::adj_traverse(), FEM_Adapt::edge_contraction_help(), FEM_Adapt::edge_flip_help(), FEM_Adapt::findAdjData(), FEM_Adapt::vertex_remove_help(), and FEM_Adapt::vertex_split_help().

Here is the call graph for this function:

Here is the caller graph for this function:

short FEM_Mesh::e2n_getIndex ( int  e,
int  n,
int  etype = 0 
)

Given id of element e and id of a node n, return i such that n is the i-th node adjacent to e.

Given id of element e and id of a node n, return i such that n is the i-th node adjacent to e.

Definition at line 792 of file fem_mesh_adjacency.C.

References CmiMemoryCheck(), conn, elem, lookup(), and BasicTable2d< T >::width().

Referenced by FEM_Adapt_Algs::Coarsen(), and FEM_Adapt::find_local_node_index().

Here is the call graph for this function:

Here is the caller graph for this function:

void FEM_Mesh::e2n_setAll ( int  e,
int adjnodes,
int  etype = 0 
)

Set the node adjacencies of element e to adjnodes; assumes adjnodes has the correct size.

Set the node adjacencies of element e to adjnodes; assumes adjnodes has the correct size.

Definition at line 820 of file fem_mesh_adjacency.C.

References CmiMemoryCheck(), conn, elem, lookup(), and BasicTable2d< T >::width().

Referenced by FEM_Adapt::vertex_split().

Here is the call graph for this function:

Here is the caller graph for this function:

void FEM_Mesh::e2n_setIndex ( int  e,
short  idx,
int  newNode,
int  etype = 0 
)

Set the idx-th node adjacent to e to be newNode.

Definition at line 846 of file fem_mesh_adjacency.C.

References CmiMemoryCheck(), conn, elem, and lookup().

Referenced by FEM_Adapt::edge_flip_help(), and FEM_Adapt::localEdgeBisect().

Here is the call graph for this function:

Here is the caller graph for this function:

void FEM_Mesh::e2n_replace ( int  e,
int  oldNode,
int  newNode,
int  etype = 0 
)

Find node oldNode in e's adjacent ndoes and replace with newNode.

Definition at line 868 of file fem_mesh_adjacency.C.

References CmiMemoryCheck(), conn, elem, lookup(), and BasicTable2d< T >::width().

Referenced by FEM_Adapt::edge_contraction_help(), FEM_remove_element(), FEM_MUtil::Replace_node_local(), FEM_Adapt::vertex_remove_help(), and FEM_Adapt::vertex_split().

Here is the call graph for this function:

Here is the caller graph for this function:

void FEM_Mesh::e2n_removeAll ( int  e,
int  etype = 0 
)

Replace all entries with -1.

Definition at line 899 of file fem_mesh_adjacency.C.

References CmiMemoryCheck(), conn, elem, lookup(), and BasicTable2d< T >::width().

Here is the call graph for this function:

void FEM_Mesh::n2n_getAll ( int  n,
int **  adjnodes,
int sz 
)

Place all of node n's adjacent nodes in adjnodes and the resulting length of adjnodes in sz; assumes adjnodes is not allocated, but sz is.

Place all of node n's adjacent nodes in adjnodes and the resulting length of adjnodes in sz; assumes adjnodes is not allocated, but sz is.

Definition at line 928 of file fem_mesh_adjacency.C.

References CmiMemoryCheck(), and CkVec< T >::length().

Referenced by FEM_AdaptL::edge_contraction_help(), FEM_Adapt::edge_contraction_help(), FEM_Adapt_Algs::FEM_mesh_smooth(), FEM_MUtil::FEM_Print_n2n(), FEM_remove_element(), FEM_remove_node(), FEM_remove_node_local(), FEM_MUtil::findGhostSend(), FEM_Adapt_Algs::GradateMesh(), FEM_Adapt::isCorner(), Bulk_Adapt::ParFUM_GradateMesh(), FEM_MUtil::removeGhostNodeRemote(), FEM_MUtil::Replace_node_local(), FEM_MUtil::StructureTest(), FEM_AdaptL::vertex_remove(), and FEM_Adapt::vertex_remove_help().

Here is the call graph for this function:

Here is the caller graph for this function:

void FEM_Mesh::n2n_add ( int  n,
int  newNode 
)

Adds newNode to node n's node adjacency list.

Definition at line 964 of file fem_mesh_adjacency.C.

References CmiMemoryCheck(), nn, and CkVec< T >::push_back().

Referenced by FEM_Adapt::edge_contraction_help(), FEM_Adapt::edge_flip_help(), FEM_add_element_local(), FEM_remove_element(), FEM_remove_element_local(), FEM_Adapt::localEdgeBisect(), FEM_MUtil::Replace_node_local(), and FEM_Adapt::vertex_split().

Here is the call graph for this function:

Here is the caller graph for this function:

void FEM_Mesh::n2n_remove ( int  n,
int  oldNode 
)

Removes oldNode from n's node adjacency list.

Definition at line 993 of file fem_mesh_adjacency.C.

References CmiMemoryCheck(), CkVec< T >::length(), and CkVec< T >::remove().

Referenced by FEM_Adapt::edge_bisect_help(), FEM_Adapt::edge_contraction_help(), FEM_Adapt::edge_flip_help(), FEM_remove_element(), FEM_remove_element_local(), FEM_Adapt::vertex_remove_help(), and FEM_Adapt::vertex_split().

Here is the call graph for this function:

Here is the caller graph for this function:

void FEM_Mesh::n2n_replace ( int  n,
int  oldNode,
int  newNode 
)

Finds oldNode in n's node adjacency list, and replaces it with newNode.

Definition at line 1057 of file fem_mesh_adjacency.C.

References CmiMemoryCheck(), and CkVec< T >::length().

Referenced by FEM_Adapt::edge_contraction_help(), FEM_remove_element(), FEM_Adapt::localEdgeBisect(), FEM_MUtil::Replace_node_local(), and FEM_Adapt::vertex_remove_help().

Here is the call graph for this function:

Here is the caller graph for this function:

void FEM_Mesh::n2n_removeAll ( int  n  ) 

Remove all nodes from n's node adjacency list.

Definition at line 1092 of file fem_mesh_adjacency.C.

References CmiMemoryCheck(), and CkVec< T >::free().

Referenced by FEM_Adapt::deleteNode(), FEM_add_node_local(), and FEM_MUtil::Replace_node_local().

Here is the call graph for this function:

Here is the caller graph for this function:

int FEM_Mesh::n2n_exists ( int  n,
int  queryNode 
)

Is queryNode in node n's adjacency vector?

Definition at line 1027 of file fem_mesh_adjacency.C.

References CmiMemoryCheck(), and CkVec< T >::length().

Referenced by FEM_add_element_local(), FEM_remove_element_local(), and FEM_Adapt::findAdjData().

Here is the call graph for this function:

Here is the caller graph for this function:

void FEM_Mesh::n2e_getAll ( int  n,
int **  adjelements,
int sz 
)

Place all of node n's adjacent elements in adjelements and the resulting length of adjelements in sz; assumes adjelements is not allocated, but sz is.

Place all of node n's adjacent elements in adjelements and the resulting length of adjelements in sz; assumes adjelements is not allocated, but sz is.

Definition at line 1119 of file fem_mesh_adjacency.C.

References CmiMemoryCheck(), len, and CkVec< T >::length().

Referenced by FEM_MUtil::addToSharedList(), FEM_AdaptL::edge_contraction_help(), FEM_Adapt::edge_contraction_help(), FEM_MUtil::FEM_Print_n2e(), FEM_remove_element(), FEM_remove_node(), FEM_remove_node_local(), FEM_Adapt::findElementWithNodes(), get2ElementsOnEdge(), getElementOnEdge(), FEM_Adapt::isEdgeBoundary(), n2e_add(), FEM_Adapt::n2e_exists(), n2e_replace(), FEM_MUtil::removeGhostNodeRemote(), FEM_MUtil::Replace_node_local(), femMeshModify::shouldLoseGhost(), FEM_MUtil::StructureTest(), update_new_element_e2e(), and femMeshModify::willItLose().

Here is the call graph for this function:

Here is the caller graph for this function:

void FEM_Mesh::n2e_add ( int  n,
int  newElem 
)

Adds newElem to node n's element adjacency list.

Definition at line 1159 of file fem_mesh_adjacency.C.

References CmiMemoryCheck(), elem, ghost(), n2e_getAll(), and CkVec< T >::push_back().

Referenced by FEM_Adapt::edge_contraction_help(), FEM_Adapt::edge_flip_help(), FEM_add_element_local(), FEM_remove_element(), FEM_Adapt::localEdgeBisect(), FEM_MUtil::Replace_node_local(), and FEM_Adapt::vertex_split().

Here is the call graph for this function:

Here is the caller graph for this function:

void FEM_Mesh::n2e_remove ( int  n,
int  oldElem 
)

Removes oldElem from n's element adjacency list.

Definition at line 1196 of file fem_mesh_adjacency.C.

References CmiMemoryCheck(), CkVec< T >::length(), and CkVec< T >::remove().

Referenced by FEM_Adapt::edge_contraction_help(), FEM_Adapt::edge_flip_help(), FEM_remove_element(), FEM_remove_element_local(), FEM_Adapt::vertex_remove_help(), and FEM_Adapt::vertex_split().

Here is the call graph for this function:

Here is the caller graph for this function:

void FEM_Mesh::n2e_replace ( int  n,
int  oldElem,
int  newElem 
)

Finds oldElem in n's element adjacency list, and replaces it with newElem.

Definition at line 1230 of file fem_mesh_adjacency.C.

References CmiMemoryCheck(), elem, ghost(), CkVec< T >::length(), and n2e_getAll().

Referenced by FEM_Adapt::localEdgeBisect(), and FEM_Adapt::vertex_remove_help().

Here is the call graph for this function:

Here is the caller graph for this function:

void FEM_Mesh::n2e_removeAll ( int  n  ) 

Remove all elements from n's element adjacency list.

Definition at line 1273 of file fem_mesh_adjacency.C.

References CmiMemoryCheck(), and CkVec< T >::free().

Referenced by FEM_Adapt::deleteNode(), FEM_add_node_local(), and FEM_MUtil::Replace_node_local().

Here is the call graph for this function:

Here is the caller graph for this function:

int FEM_Mesh::getElementOnEdge ( int  n1,
int  n2 
)

Get an element on edge (n1, n2) where n1, n2 are chunk-local node numberings and result is chunk-local element; return -1 in case of failure.

Get an element on edge (n1, n2) where n1, n2 are chunk-local node numberings; return -1 in case of failure.

Definition at line 1304 of file fem_mesh_adjacency.C.

References CmiMemoryCheck(), and n2e_getAll().

Referenced by FEM_Adapt::edge_contraction(), FEM_Adapt::findAdjData(), and FEM_Adapt::vertex_split().

Here is the call graph for this function:

Here is the caller graph for this function:

void FEM_Mesh::get2ElementsOnEdge ( int  n1,
int  n2,
int result_e1,
int result_e2 
)

Get two elements adjacent to both n1 and n2.

Get 2 elements on edge (n1, n2) where n1, n2 are chunk-local node numberings; return the edges in result_e1 and result_e2 No preference is given to ghosts over local elements.

Definition at line 1339 of file fem_mesh_adjacency.C.

References CkExit(), CmiMemoryCheck(), and n2e_getAll().

Referenced by FEM_Mesh_get2ElementsOnEdge(), FEM_Adapt_Algs::GradateMesh(), and Bulk_Adapt::ParFUM_GradateMesh().

Here is the call graph for this function:

Here is the caller graph for this function:

void FEM_Mesh::checkElemType ( int  elType,
const char *  caller 
) const [private]

void FEM_Mesh::checkSparseType ( int  uniqueID,
const char *  caller 
) const [private]

void FEM_Mesh::setFemMeshModify ( femMeshModify m  ) 

void FEM_Mesh::setParfumSA ( ParFUMShadowArray m  ) 

Definition at line 2018 of file mesh.C.

References parfumSA.

Referenced by ParFUMShadowArray::ckJustMigrated(), and ParFUMShadowArray::setFemMesh().

Here is the caller graph for this function:

void FEM_Mesh::pup ( PUP::er p  ) 

void FEM_Mesh::setSymList ( const FEM_Sym_List src  )  [inline]

The symmetries that apply to this mesh:.

Definition at line 1318 of file ParFUM_internals.h.

const FEM_Sym_List& FEM_Mesh::getSymList ( void   )  const [inline]

Definition at line 1319 of file ParFUM_internals.h.

void FEM_Mesh::copyShape ( const FEM_Mesh src  ) 

Set up the "shape" of our fields-- the number of element types, the datatypes for user data, etc--based on this mesh.

femMeshModify* FEM_Mesh::getfmMM (  ) 

FEM_Entity& FEM_Mesh::setCount ( int  elTypeOrMinusOne  )  [inline]

Definition at line 1329 of file ParFUM_internals.h.

References elem.

const FEM_Entity& FEM_Mesh::getCount ( int  elTypeOrMinusOne  )  const [inline]

Definition at line 1333 of file ParFUM_internals.h.

References elem.

FEM_Elem& FEM_Mesh::setElem ( int  elType  )  [inline]

Definition at line 1337 of file ParFUM_internals.h.

References elem.

const FEM_Elem& FEM_Mesh::getElem ( int  elType  )  const [inline]

Definition at line 1338 of file ParFUM_internals.h.

References elem.

int FEM_Mesh::chkET ( int  elType  )  const

FEM_Entity* FEM_Mesh::lookup ( int  entity,
const char *  caller 
)

Look up this FEM_Entity type in this mesh, or abort if it's not valid.

const FEM_Entity* FEM_Mesh::lookup ( int  entity,
const char *  caller 
) const

bool FEM_Mesh::isSetting ( void   )  const [inline]

Set/get direction control:.

Definition at line 1346 of file ParFUM_internals.h.

void FEM_Mesh::becomeSetting ( void   )  [inline]

Definition at line 1347 of file ParFUM_internals.h.

void FEM_Mesh::becomeGetting ( void   )  [inline]

Definition at line 1348 of file ParFUM_internals.h.

int FEM_Mesh::nElems (  )  const [inline]

Definition at line 1350 of file ParFUM_internals.h.

References elem.

int FEM_Mesh::nElems ( int  t  )  const

Return the total number of elements before type t.

int FEM_Mesh::getGlobalElem ( int  elType,
int  elNo 
) const

Return the "global" number of element elNo of type elType.

void FEM_Mesh::setAscendingGlobalno ( void   ) 

Set our global numbers as 0...n-1 for nodes, elements, and sparse.

void FEM_Mesh::setAbsoluteGlobalno (  ) 

The global numbers for elements runs across different types.

void FEM_Mesh::copyOldGlobalno ( const FEM_Mesh m  ) 

void FEM_Mesh::print ( int  idxBase  ) 

int FEM_Mesh::getEntities ( int entites  ) 

Extract a list of our entities:.

void FEM_Mesh::clearSharedNodes (  ) 

clearing the idxl and data for shared nodes and ghost nodes and shared elements

Definition at line 2121 of file mesh.C.

Referenced by ParFUM_desharing().

Here is the caller graph for this function:

void FEM_Mesh::clearGhostNodes (  ) 

Definition at line 2125 of file mesh.C.

Referenced by ParFUM_deghosting().

Here is the caller graph for this function:

void FEM_Mesh::clearGhostElems (  ) 

Definition at line 2129 of file mesh.C.

References elem, FEM_Entity_Types< T >::has(), and FEM_Entity_Types< T >::size().

Referenced by ParFUM_deghosting().

Here is the call graph for this function:

Here is the caller graph for this function:

void FEM_Mesh::createNodeElemAdj (  ) 

void FEM_Mesh::createNodeNodeAdj (  ) 

void FEM_Mesh::createElemElemAdj (  ) 

FEM_ElemAdj_Layer* FEM_Mesh::getElemAdjLayer ( void   ) 

void FEM_Mesh::e2e_getAll ( int  e,
int neighborss,
int  etype = 0 
)

Place all of element e's adjacent elements in neighbors; assumes neighbors allocated to correct size.

int FEM_Mesh::e2e_getNbr ( int  e,
short  idx,
int  etype = 0 
)

Given id of element e, return the id of the idx-th adjacent element.

int FEM_Mesh::e2e_getIndex ( int  e,
int  nbr,
int  etype = 0 
)

Given id of element e and id of another element nbr, return i such that nbr is the i-th element adjacent to e.

ElemID FEM_Mesh::e2e_getElem ( int  idx,
int  nbr,
int  etype = 0 
)

Same as previous but also returning the element type.

Referenced by meshFacetItr_Begin(), meshFacetItr_GetCurr(), meshFacetItr_Next(), topFacetItr_Begin(), topFacetItr_GetCurr(), and topFacetItr_Next().

Here is the caller graph for this function:

ElemID FEM_Mesh::e2e_getElem ( ElemID  elem,
int  nbr 
)

Get an element adjacent to elem across its nbr'th face.

ElemID FEM_Mesh::e2e_getElem ( ElemID elem,
int  nbr 
)

Same as above.

void FEM_Mesh::e2e_setAll ( int  e,
int neighbors,
int  etype = 0 
)

Set the element adjacencies of element e to neighbors; assumes neighbors has the correct size.

void FEM_Mesh::e2e_setIndex ( int  e,
short  idx,
int  newElem,
int  etype = 0 
)

Set the idx-th element adjacent to e to be newElem.

void FEM_Mesh::e2e_replace ( int  e,
int  oldNbr,
int  newNbr,
int  etype = 0 
)

Find element oldNbr in e's adjacent elements and replace with newNbr.

void FEM_Mesh::e2e_replace ( ElemID  e,
ElemID  oldNbr,
ElemID  newNbr 
)

Find element oldNbr in e's adjacent elements and replace with newNbr.

void FEM_Mesh::e2e_removeAll ( int  e,
int  etype = 0 
)

Remove all neighboring elements in adjacency.

void FEM_Mesh::e2e_printAll ( ElemID  e  ) 

void FEM_Mesh::e2n_getAll ( int  e,
int adjnodes,
int  etype = 0 
)

Place all of element e's adjacent nodes in adjnodes; assumes adjnodes allocated to correct size.

int FEM_Mesh::e2n_getNode ( int  e,
short  idx,
int  etype = 0 
)

Given id of element e, return the id of the idx-th adjacent node.

short FEM_Mesh::e2n_getIndex ( int  e,
int  n,
int  etype = 0 
)

Given id of element e and id of a node n, return i such that n is the i-th node adjacent to e.

void FEM_Mesh::e2n_setAll ( int  e,
int adjnodes,
int  etype = 0 
)

Set the node adjacencies of element e to adjnodes; assumes adjnodes has the correct size.

void FEM_Mesh::e2n_setIndex ( int  e,
short  idx,
int  newNode,
int  etype = 0 
)

Set the idx-th node adjacent to e to be newNode.

void FEM_Mesh::e2n_replace ( int  e,
int  oldNode,
int  newNode,
int  etype = 0 
)

Find node oldNode in e's adjacent ndoes and replace with newNode.

void FEM_Mesh::e2n_removeAll ( int  e,
int  etype = 0 
)

Replace all entries with -1.

int FEM_Mesh::n2n_getLength ( int  n  ) 

void FEM_Mesh::n2n_getAll ( int  n,
int *&  adjnodes,
int sz 
)

Place all of node n's adjacent nodes in adjnodes and the resulting length of adjnodes in sz; assumes adjnodes is not allocated, but sz is.

void FEM_Mesh::n2n_add ( int  n,
int  newNode 
)

Adds newNode to node n's node adjacency list.

void FEM_Mesh::n2n_remove ( int  n,
int  oldNode 
)

Removes oldNode from n's node adjacency list.

void FEM_Mesh::n2n_replace ( int  n,
int  oldNode,
int  newNode 
)

Finds oldNode in n's node adjacency list, and replaces it with newNode.

void FEM_Mesh::n2n_removeAll ( int  n  ) 

Remove all nodes from n's node adjacency list.

int FEM_Mesh::n2n_exists ( int  n,
int  queryNode 
)

Is queryNode in node n's adjacency vector?

int FEM_Mesh::n2e_getLength ( int  n  ) 

Referenced by meshModel_CreateNodeElemItr(), and topModel_CreateNodeElemItr().

Here is the caller graph for this function:

void FEM_Mesh::n2e_getAll ( int  n,
int *&  adjelements,
int sz 
)

Place all of node n's adjacent elements in adjelements and the resulting length of adjelements in sz; assumes adjelements is not allocated, but sz is.

Ignore element types

const CkVec<ElemID>& FEM_Mesh::n2e_getAll ( int  n  ) 

Return a reference to the structure holding all the elements adjacent to a node.

ElemID FEM_Mesh::n2e_getElem ( int  n,
int  whichAdjElem 
)

Get one of node n's adjacent elements.

Referenced by meshNodeElemItr_GetCurr(), and topNodeElemItr_GetCurr().

Here is the caller graph for this function:

void FEM_Mesh::n2e_add ( int  n,
int  newElem 
)

Adds newElem to node n's element adjacency list.

void FEM_Mesh::n2e_remove ( int  n,
int  oldElem 
)

Removes oldElem from n's element adjacency list.

void FEM_Mesh::n2e_replace ( int  n,
int  oldElem,
int  newElem 
)

Finds oldElem in n's element adjacency list, and replaces it with newElem.

void FEM_Mesh::n2e_removeAll ( int  n  ) 

Remove all elements from n's element adjacency list.

int FEM_Mesh::getElementOnEdge ( int  n1,
int  n2 
)

Get an element on edge (n1, n2) where n1, n2 are chunk-local node numberings and result is chunk-local element; return -1 in case of failure.

void FEM_Mesh::get2ElementsOnEdge ( int  n1,
int  n2,
int result_e1,
int result_e2 
)

Get two elements adjacent to both n1 and n2.

void FEM_Mesh::get2ElementsOnEdgeSorted ( int  n1,
int  n2,
int result_e1,
int result_e2 
)

Get two elements adjacent to both n1 and n2.

int FEM_Mesh::countElementsOnEdge ( int  n1,
int  n2 
)

Count the number of elements adjacent to both n1 and n2.

void FEM_Mesh::detectFeatures (  ) 

Detect features of the mesh, storing results in verticesOnBoundary, edgesOnBoundary, cornersOnBoundary.

Note:
currently only 2-d triangular meshes(with triangles in FEM_ELEM+0) are supported

We require at least a single node-adjacent ghost layer for this to work correctly

We do not yet pup the structures that store the results, so don't use these with migration yet

Referenced by FEM_Mesh_detect_features().

Here is the caller graph for this function:


Field Documentation

The symmetries in the mesh.

Definition at line 1149 of file fem_mesh.h.

Referenced by pup().

Definition at line 1150 of file fem_mesh.h.

Referenced by FEM_Mesh(), and pup().

Definition at line 1151 of file fem_mesh.h.

Referenced by femMeshModify::ckJustMigrated(), getfmMM(), and setFemMeshModify().

Definition at line 1156 of file fem_mesh.h.

Referenced by FEM_Mesh(), and getElemAdjLayer().

The nodes in this mesh:.

Definition at line 1166 of file fem_mesh.h.

Referenced by BulkAdapt::add_node(), FEM_MUtil::addElemRemote(), FEM_MUtil::addGhostElementRemote(), splitter::addGhostInner(), splitter::addGhostNode(), splitter::addGhosts(), femMeshModify::addghostsendl(), femMeshModify::addghostsendl1(), femMeshModify::addghostsendr(), femMeshModify::addghostsendr1(), addIDXLists(), femMeshModify::addNodeRemote(), FEM_MUtil::addToSharedList(), femMeshModify::addTransIDXLRemote(), splitter::buildCommLists(), edge::buildLockingCloud(), check(), FEM_Adapt_Algs::Coarsen(), splitter::consistencyCheck(), copyOldGlobalno(), copyShape(), splitter::createMesh(), chunk::deriveEdges(), BulkAdapt::edge_bisect_3D(), FEM_Adapt::edge_bisect_help(), FEM_AdaptL::edge_contraction(), FEM_AdaptL::edge_contraction_help(), FEM_Adapt::edge_flip_help(), FEM_MUtil::exists_in_IDXL(), FEM_add_element(), FEM_add_node(), FEM_add_node_local(), FEM_break_mesh(), FEM_Ghost_Essential_attributes(), FEM_Interpolate::FEM_InterpolateCopyAttributes(), FEM_Interpolate::FEM_InterpolateNodeInElement(), FEM_Interpolate::FEM_InterpolateNodeOnEdge(), FEM_Interpolate::FEM_InterpolateNodeOnFace(), FEM_Make_node_globalno(), FEM_master_parallel_part(), FEM_Mesh_assemble(), FEM_Mesh_partition(), FEM_Modify_LockAll(), FEM_Modify_LockUpdate(), FEM_Print_Mesh_Summary(), FEM_readMesh(), FEM_remove_element(), FEM_remove_node(), FEM_remove_node_local(), FEM_Set_sym_nodes(), FEM_slave_parallel_part(), FEM_write_part2mesh(), FEM_Adapt::findAdjData(), Bulk_Adapt::findEdgeLengths(), FEM_MUtil::findGhostSend(), ParFUMShadowArray::FindIdxlSide(), chunk::fixNode(), edge::flipPrevent(), FTN_NAME(), BulkAdapt::get_idxl_for_node(), BulkAdapt::get_node_from_idxl(), FEM_MUtil::getChunkNos(), FEM_MUtil::getChunksSharingGhostNodeRemote(), FEMchunk::getComm(), Bulk_Adapt::getCoord(), femMeshModify::getIdxGhostSend(), FEM_MUtil::getLockOwner(), FEMchunk::getPrimary(), FEM_Adapt_Algs::GradateMesh(), BulkAdapt::handle_split_3D(), FEM_MUtil::IdxlListTest(), BulkAdapt::is_node_in_idxl(), FEM_MUtil::isShared(), chunk::joinCommLists(), FEM_MUtil::knowsAbtNode(), BulkAdapt::length(), FEM_lock::lock(), ParFUMShadowArray::lockLocalNodes(), FEM_AdaptL::lockNodes(), ParFUMShadowArray::lockRegion(), ParFUMShadowArray::lockSharedIdxls(), FEM_MUtil::lookup_in_IDXL(), BulkAdapt::make_node_shared(), makeGhost(), makeGhosts(), mesh2graph(), meshModel_CreateNodeElemItr(), meshNodeItr_Begin(), meshNodeItr_IsValid(), meshNodeItr_Next(), FEM_Adapt::newNode(), BulkAdapt::one_side_split_2D(), MeshElem::operator+=(), FEM_MUtil::packEntData(), ParFUM_generateGlobalNodeNumbers(), Bulk_Adapt::ParFUM_GradateMesh(), ParFUM_recreateSharedNodes(), ParFUM_SA_Init(), FEM_Adapt_Algs::Refine(), Bulk_Adapt::Refine_h(), BulkAdapt::remote_edge_bisect_2D(), FEM_MUtil::removeGhostElementRemote(), FEM_MUtil::removeGhostNodeRemote(), femMeshModify::removeIDXLRemote(), FEM_MUtil::removeNodeAll(), FEM_MUtil::removeNodeRemote(), renumberConn(), FEM_MUtil::Replace_node_local(), FEM_MUtil::residualLockTest(), femMeshModify::setFemMesh(), Bulk_Adapt::SetMeshSize(), FEM_Adapt_Algs::SetMeshSize(), sharedWith(), edge::split(), element::split(), FEM_MUtil::splitEntityAll(), FEM_MUtil::splitEntityRemote(), FEM_MUtil::splitEntitySharing(), splitter::splitter(), FEM_MUtil::StructureTest(), topModel_CreateNodeElemItr(), topNodeItr_Begin(), topNodeItr_IsValid(), topNodeItr_Next(), element::translateNodeIDs(), edge::translateSharedNodeIDs(), FEM_MUtil::unlockAll(), ParFUMShadowArray::unlockLocalNodes(), FEM_AdaptL::unlockNodes(), ParFUMShadowArray::unlockSharedIdxls(), BulkAdapt::update_node_coord(), FEM_MUtil::updateAttrs(), edge::updateCloud(), FEM_MUtil::UpdateGhostSend(), femMeshModify::updateIdxlList(), femMeshModify::updateNodeAttrs(), femMeshModify::verifyghostsend(), FEM_MUtil::verifyIdxlListRemote(), and FEM_lockN::verifyLock().

The different element types in this mesh:.

Definition at line 1169 of file fem_mesh.h.

Referenced by splitter::aboutToCreate(), BulkAdapt::add_element(), splitter::addGhostElement(), FEM_MUtil::addGhostElementRemote(), splitter::addGhostInner(), splitter::addGhostPair(), addIDXLists(), splitter::addLayer(), splitter::addStencil(), FEM_MUtil::addToSharedList(), FEM_MUtil::AreaTest(), splitter::buildCommLists(), FEM_Ghost_Stencil::check(), check(), FEM_Sparse_Elem_Checker::check(), chkET(), femMeshModify::cleanupIDXL(), clearGhostElems(), FEM_Adapt_Algs::Coarsen(), splitter::consistencyCheck(), copyOldGlobalno(), copyShape(), createElemElemAdj(), splitter::createMesh(), createNodeElemAdj(), createNodeNodeAdj(), BulkAdapt::dumpConn(), e2e_getAll(), e2e_getIndex(), e2e_getNbr(), e2e_removeAll(), e2e_replace(), e2e_setAll(), e2e_setIndex(), e2n_getAll(), e2n_getIndex(), e2n_getNode(), e2n_removeAll(), e2n_replace(), e2n_setAll(), e2n_setIndex(), FEM_MUtil::eatIntoElement(), femMeshModify::eatIntoElement(), BulkAdapt::edge_bisect_2D(), BulkAdapt::edge_bisect_3D(), FEM_Adapt::edge_bisect_help(), FEM_AdaptL::edge_contraction_help(), FEM_Adapt::edge_flip_help(), FEM_MUtil::exists_in_IDXL(), FEM_ADAPT_SetElementSizeField(), FEM_ADAPT_SetElementsSizeField(), FEM_add_element(), FEM_add_element_local(), FEM_Add_ghost_stencil(), FEM_break_mesh(), FEM_Interpolate::FEM_InterpolateElementCopy(), FEM_master_parallel_part(), FEM_Mesh_assemble(), FEM_Mesh_broadcast(), FEM_MUtil::FEM_Print_e2e(), FEM_MUtil::FEM_Print_e2n(), FEM_Print_Mesh_Summary(), FEM_purge_element(), FEM_remove_element(), FEM_remove_element_local(), FEM_write_part2mesh(), Bulk_Adapt::findEdgeLengths(), ParFUMShadowArray::FindIdxlSide(), FEM_MUtil::getChunkNos(), getEntities(), getGlobalElem(), FEM_MUtil::getRemoteIdx(), globalElem2elType(), FEM_Adapt_Algs::GradateMesh(), BulkAdapt::handle_split_3D(), FEM_MUtil::IdxlListTest(), BulkAdapt::isLongest(), BulkAdapt::local_split_3D(), BulkAdapt::local_update_asterisk_3D(), FEM_lock::lock(), lookup(), FEM_MUtil::lookup_in_IDXL(), makeGhost(), makeGhosts(), mesh2graph(), mesh2graph_face(), meshElemItr_Begin(), meshElemItr_Next(), meshFacetItr_GetCurr(), n2e_add(), n2e_replace(), nElems(), BulkAdapt::one_side_split_2D(), MeshElem::operator+=(), femMeshModify::packElemData(), FEM_MUtil::packEntData(), Bulk_Adapt::ParFUM_GradateMesh(), Bulk_Adapt::ParFUM_SetReferenceMesh(), print(), pup(), FEM_Adapt_Algs::Refine(), Bulk_Adapt::Refine_h(), BulkAdapt::remote_edge_bisect_2D(), BulkAdapt::remote_edgeAdj_add(), BulkAdapt::remote_edgeAdj_replace(), FEM_MUtil::removeElemRemote(), FEM_MUtil::removeGhostElementRemote(), setAbsoluteGlobalno(), setAscendingGlobalno(), Bulk_Adapt::SetMeshSize(), FEM_Adapt_Algs::SetMeshSize(), FEM_Adapt_Algs::SetReferenceMesh(), FEM_Adapt_Algs::simple_coarsen(), FEM_Adapt_Algs::simple_refine(), splitter::splitter(), FEM_MUtil::StructureTest(), topElemItr_Begin(), topElemItr_Next(), topFacetItr_GetCurr(), BulkAdapt::update_element_conn(), BulkAdapt::update_local_edge_adj(), BulkAdapt::update_local_face_adj(), update_new_element_e2e(), FEM_MUtil::updateAttrs(), FEM_MUtil::verifyIdxlListRemote(), and splitter::~splitter().

The different sparse types in this mesh:.

Definition at line 1172 of file fem_mesh.h.

Referenced by copyOldGlobalno(), copyShape(), FEM_Mesh_assemble(), getEntities(), lookup(), print(), pup(), splitter::separateSparse(), and setAscendingGlobalno().

The unassociated user data for this mesh:.

Definition at line 1175 of file fem_mesh.h.

Referenced by splitter::createMesh(), FEM_master_parallel_part(), FEM_Mesh_assemble(), FEM_slave_parallel_part(), and pup().

Definition at line 1294 of file ParFUM_internals.h.

Definition at line 1295 of file ParFUM_internals.h.

Referenced by BulkAdapt::BulkAdapt(), Bulk_Adapt::Refine_h(), and setParfumSA().

Definition at line 1296 of file ParFUM_internals.h.

Definition at line 1297 of file ParFUM_internals.h.

The different element types in this mesh:.

Definition at line 1309 of file ParFUM_internals.h.

The different sparse types in this mesh:.

Definition at line 1312 of file ParFUM_internals.h.

std::set<std::pair<int,int> > FEM_Mesh::edgesOnBoundary

list of edges on the boundary(adjacent to at least one local node)

Definition at line 1499 of file ParFUM_internals.h.

list of the nodes found in edgesOnBoundary

Definition at line 1502 of file ParFUM_internals.h.

list of corners on the mesh.

These are nodes in edgesOnBoundary that have small angles between their adjacent boundary edges

Note:
the criterion angle is specified in the preprocessor define CORNER_ANGLE_CUTOFF in mesh_feature_detect.C

Definition at line 1507 of file ParFUM_internals.h.


The documentation for this class was generated from the following files:

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