MFEM
v3.3
Finite element discretization library
|
A parallel extension of the NCMesh class. More...
#include <pncmesh.hpp>
Classes | |
class | ElementSet |
class | ElementValueMessage |
class | NeighborDerefinementMessage |
class | NeighborElementRankMessage |
class | NeighborRefinementMessage |
class | RebalanceDofMessage |
class | RebalanceMessage |
Public Member Functions | |
ParNCMesh (MPI_Comm comm, const NCMesh &ncmesh) | |
virtual | ~ParNCMesh () |
virtual void | Refine (const Array< Refinement > &refinements) |
virtual void | LimitNCLevel (int max_nc_level) |
Parallel version of NCMesh::LimitNCLevel. More... | |
virtual void | CheckDerefinementNCLevel (const Table &deref_table, Array< int > &level_ok, int max_nc_level) |
virtual void | Derefine (const Array< int > &derefs) |
void | Rebalance () |
const NCList & | GetSharedVertices () |
const NCList & | GetSharedEdges () |
const NCList & | GetSharedFaces () |
const NCList & | GetSharedList (int type) |
Helper to get shared vertices/edges/faces ('type' == 0/1/2 resp.). More... | |
int | GetFaceOrientation (int index) const |
Return (shared) face orientation relative to the owner element. More... | |
int | GetOwner (int type, int index) const |
Return vertex/edge/face ('type' == 0/1/2, resp.) owner. More... | |
const int * | GetGroup (int type, int index, int &size) const |
bool | RankInGroup (int type, int index, int rank) const |
bool | IsGhost (int type, int index) const |
Returns true if the specified vertex/edge/face is a ghost. More... | |
int | ElementRank (int index) const |
void | GetFaceNeighbors (ParMesh &pmesh) |
void | SendRebalanceDofs (int old_ndofs, const Table &old_element_dofs, long old_global_offset, FiniteElementSpace *space) |
Use the communication pattern from last Rebalance() to send element DOFs. More... | |
void | RecvRebalanceDofs (Array< int > &elements, Array< long > &dofs) |
Receive element DOFs sent by SendRebalanceDofs(). More... | |
const Array< int > & | GetRebalanceOldIndex () const |
const Array< int > & | GetDerefineOldRanks () const |
template<typename Type > | |
void | SynchronizeDerefinementData (Array< Type > &elem_data, const Table &deref_table) |
virtual void | GetBoundaryClosure (const Array< int > &bdr_attr_is_ess, Array< int > &bdr_vertices, Array< int > &bdr_edges) |
void | GetDebugMesh (Mesh &debug_mesh) const |
Public Member Functions inherited from mfem::NCMesh | |
NCMesh (const Mesh *mesh, std::istream *vertex_parents=NULL) | |
NCMesh (const NCMesh &other) | |
Deep copy of 'other'. More... | |
virtual | ~NCMesh () |
int | Dimension () const |
int | SpaceDimension () const |
const Table & | GetDerefinementTable () |
const NCList & | GetFaceList () |
Return the current list of conforming and nonconforming faces. More... | |
const NCList & | GetEdgeList () |
Return the current list of conforming and nonconforming edges. More... | |
void | MarkCoarseLevel () |
const CoarseFineTransformations & | GetRefinementTransforms () |
const CoarseFineTransformations & | GetDerefinementTransforms () |
void | ClearTransforms () |
Free all internal data created by the above three functions. More... | |
int | GetEdgeMaster (int v1, int v2) const |
int | GetElementGeometry () const |
Return the type of elements in the mesh. More... | |
int | GetElementDepth (int i) const |
Return the distance of leaf 'i' from the root. More... | |
void | PrintVertexParents (std::ostream &out) const |
I/O: Print the "vertex_parents" section of the mesh file (ver. >= 1.1). More... | |
void | PrintCoarseElements (std::ostream &out) const |
I/O: Print the "coarse_elements" section of the mesh file (ver. >= 1.1). More... | |
void | LoadVertexParents (std::istream &input) |
void | LoadCoarseElements (std::istream &input) |
I/O: Load the element refinement hierarchy from a mesh file. More... | |
void | SetVertexPositions (const Array< mfem::Vertex > &vertices) |
I/O: Set positions of all vertices (used by mesh loader). More... | |
long | MemoryUsage () const |
Return total number of bytes allocated. More... | |
void | PrintMemoryDetail () const |
void | DebugNeighbors (Array< char > &elem_set) |
void | DebugLeafOrder () const |
Print the space-filling curve formed by the sequence of leaf elements. More... | |
Protected Member Functions | |
virtual void | Update () |
int | Partition (long index, long total_elements) const |
Return the processor number for a global element number. More... | |
int | InitialPartition (int index) const |
Helper to get the partition when the serial mesh is being split initially. More... | |
long | PartitionFirstIndex (int rank, long total_elements) const |
Return the global index of the first element owned by processor 'rank'. More... | |
virtual void | UpdateVertices () |
update Vertex::index and vertex_nodeId More... | |
virtual void | AssignLeafIndices () |
virtual bool | IsGhost (const Element *elem) const |
virtual int | GetNumGhosts () const |
virtual void | OnMeshUpdated (Mesh *mesh) |
virtual void | BuildEdgeList () |
virtual void | BuildFaceList () |
virtual void | ElementSharesEdge (Element *elem, Edge *edge) |
virtual void | ElementSharesFace (Element *elem, Face *face) |
void | BuildSharedVertices () |
void | CalcFaceOrientations () |
void | UpdateLayers () |
void | AddMasterSlaveRanks (int nitems, const NCList &list) |
void | MakeShared (const Table &groups, const NCList &list, NCList &shared) |
void | EncodeMeshIds (std::ostream &os, Array< MeshId > ids[]) |
Write to 'os' a processor-independent encoding of vertex/edge/face IDs. More... | |
void | DecodeMeshIds (std::istream &is, Array< MeshId > ids[]) |
Read from 'is' a processor-independent encoding of vertex/edge/face IDs. More... | |
bool | CheckElementType (Element *elem, int type) |
void | ElementNeighborProcessors (Element *elem, Array< int > &ranks) |
void | NeighborProcessors (Array< int > &neighbors) |
void | Prune () |
bool | PruneTree (Element *elem) |
Internal. Recursive part of Prune(). More... | |
void | RedistributeElements (Array< int > &new_ranks, int target_elements, bool record_comm) |
void | ClearAuxPM () |
Protected Member Functions inherited from mfem::NCMesh | |
void | GetMeshComponents (Array< mfem::Vertex > &vertices, Array< mfem::Element * > &elements, Array< mfem::Element * > &boundary) const |
Return the basic Mesh arrays for the current finest level. More... | |
Element * | CopyHierarchy (Element *elem) |
void | DeleteHierarchy (Element *elem) |
void | CollectLeafElements (Element *elem, int state) |
void | UpdateLeafElements () |
void | RefineElement (Element *elem, char ref_type) |
void | DerefineElement (Element *elem) |
Element * | NewHexahedron (Node *n0, Node *n1, Node *n2, Node *n3, Node *n4, Node *n5, Node *n6, Node *n7, int attr, int fattr0, int fattr1, int fattr2, int fattr3, int fattr4, int fattr5) |
Element * | NewQuadrilateral (Node *n0, Node *n1, Node *n2, Node *n3, int attr, int eattr0, int eattr1, int eattr2, int eattr3) |
Element * | NewTriangle (Node *n0, Node *n1, Node *n2, int attr, int eattr0, int eattr1, int eattr2) |
Vertex * | NewVertex (Node *v1, Node *v2) |
mfem::Element * | NewMeshElement (int geom) const |
Node * | GetMidEdgeVertex (Node *v1, Node *v2) |
Node * | GetMidEdgeVertexSimple (Node *v1, Node *v2) |
Node * | GetMidFaceVertex (Node *e1, Node *e2, Node *e3, Node *e4) |
int | FaceSplitType (Node *v1, Node *v2, Node *v3, Node *v4, Node *mid[4]=NULL) const |
void | ForceRefinement (Node *v1, Node *v2, Node *v3, Node *v4) |
void | CheckAnisoFace (Node *v1, Node *v2, Node *v3, Node *v4, Node *mid12, Node *mid34, int level=0) |
void | CheckIsoFace (Node *v1, Node *v2, Node *v3, Node *v4, Node *e1, Node *e2, Node *e3, Node *e4, Node *midf) |
void | RefElementNodes (Element *elem) |
void | UnrefElementNodes (Element *elem) |
Face * | GetFace (Element *elem, int face_no) |
void | RegisterFaces (Element *elem, int *fattr=NULL) |
Node * | PeekAltParents (Node *v1, Node *v2) |
bool | NodeSetX1 (Node *node, Node **n) |
bool | NodeSetX2 (Node *node, Node **n) |
bool | NodeSetY1 (Node *node, Node **n) |
bool | NodeSetY2 (Node *node, Node **n) |
bool | NodeSetZ1 (Node *node, Node **n) |
bool | NodeSetZ2 (Node *node, Node **n) |
void | CollectDerefinements (Element *elem, Array< Connection > &list) |
int | ReorderFacePointMat (Node *v0, Node *v1, Node *v2, Node *v3, Element *elem, DenseMatrix &mat) const |
void | TraverseFace (Node *v0, Node *v1, Node *v2, Node *v3, const PointMatrix &pm, int level) |
void | TraverseEdge (Node *v0, Node *v1, double t0, double t1, int flags, int level) |
void | FindSetNeighbors (const Array< char > &elem_set, Array< Element * > *neighbors, Array< char > *neighbor_set=NULL) |
void | FindNeighbors (const Element *elem, Array< Element * > &neighbors, const Array< Element * > *search_set=NULL) |
void | NeighborExpand (const Array< Element * > &elements, Array< Element * > &expanded, const Array< Element * > *search_set=NULL) |
void | CollectEdgeVertices (Node *v0, Node *v1, Array< int > &indices) |
void | CollectFaceVertices (Node *v0, Node *v1, Node *v2, Node *v3, Array< int > &indices) |
void | BuildElementToVertexTable () |
void | UpdateElementToVertexTable () |
void | GetPointMatrix (int geom, const char *ref_path, DenseMatrix &matrix) |
void | TraverseRefinements (Element *elem, int coarse_index, std::string &ref_path, RefPathMap &map) |
void | InitDerefTransforms () |
void | SetDerefMatrixCodes (Element *parent, Array< Element * > &coarse) |
Node * | GetEdgeMaster (Node *node) const |
int | EdgeSplitLevel (Node *v1, Node *v2) const |
void | FaceSplitLevel (Node *v1, Node *v2, Node *v3, Node *v4, int &h_level, int &v_level) const |
void | CountSplits (Element *elem, int splits[3]) const |
void | GetLimitRefinements (Array< Refinement > &refinements, int max_level) |
int | CountElements (Element *elem) const |
int | PrintElements (std::ostream &out, Element *elem, int &coarse_id) const |
void | CountObjects (int &nelem, int &nvert, int &nedges) const |
Static Protected Member Functions | |
static int | get_face_orientation (Face *face, Element *e1, Element *e2, int local[2]=NULL) |
static bool | compare_ranks (const Element *a, const Element *b) |
static bool | compare_ranks_indices (const Element *a, const Element *b) |
Static Protected Member Functions inherited from mfem::NCMesh | |
static int | find_node (Element *elem, Node *node) |
static int | find_node (Element *elem, int node_id) |
static int | find_element_edge (Element *elem, int v0, int v1) |
static int | find_hex_face (int a, int b, int c) |
static const PointMatrix & | GetGeomIdentity (int geom) |
static void | find_face_nodes (const Face *face, Node *node[4]) |
Protected Attributes | |
MPI_Comm | MyComm |
int | NRanks |
int | MyRank |
int | NVertices |
int | NGhostVertices |
int | NEdges |
int | NGhostEdges |
int | NFaces |
int | NGhostFaces |
int | NElements |
int | NGhostElements |
NCList | shared_vertices |
NCList | shared_edges |
NCList | shared_faces |
Array< int > | vertex_owner |
Array< int > | edge_owner |
Array< int > | face_owner |
Table | vertex_group |
Table | edge_group |
Table | face_group |
Array< char > | face_orient |
Array< char > | element_type |
Array< Element * > | ghost_layer |
list of elements whose 'element_type' == 2. More... | |
Array< Element * > | boundary_layer |
list of type 3 elements More... | |
Array< Connection > | index_rank |
Array< Element * > | tmp_neighbors |
RebalanceDofMessage::Map | send_rebalance_dofs |
RebalanceDofMessage::Map | recv_rebalance_dofs |
Array< int > | old_index_or_rank |
Array< DenseMatrix * > | aux_pm_store |
Stores modified point matrices created by GetFaceNeighbors. More... | |
Protected Attributes inherited from mfem::NCMesh | |
int | Dim |
int | spaceDim |
dimensions of the elements and the vertex coordinates More... | |
bool | Iso |
true if the mesh only contains isotropic refinements More... | |
Array< Element * > | root_elements |
HashTable< Node > | nodes |
HashTable< Face > | faces |
Array< Element * > | leaf_elements |
Array< int > | vertex_nodeId |
NCList | face_list |
lazy-initialized list of faces, see GetFaceList More... | |
NCList | edge_list |
lazy-initialized list of edges, see GetEdgeList More... | |
Array< Face * > | boundary_faces |
subset of all faces, set by BuildFaceList More... | |
Array< Node * > | boundary_edges |
subset of all edges, set by BuildEdgeList More... | |
Table | element_vertex |
leaf-element to vertex table, see FindSetNeighbors More... | |
int | num_vertices |
width of the table More... | |
Array< ElemRefType > | ref_stack |
stack of scheduled refinements (temporary) More... | |
Table | derefinements |
possible derefinements, see GetDerefinementTable More... | |
CoarseFineTransformations | transforms |
storage for data returned by Get[De]RefinementTransforms() More... | |
Array< Element * > | coarse_elements |
state of leaf_elements before Refine(), set by MarkCoarseLevel() More... | |
Friends | |
class | ParMesh |
class | NeighborDofMessage |
Additional Inherited Members | |
Static Public Attributes inherited from mfem::NCMesh | |
static GeomInfo | GI [Geometry::NumGeom] |
Protected Types inherited from mfem::NCMesh | |
typedef std::map< std::string, int > | RefPathMap |
Static Protected Attributes inherited from mfem::NCMesh | |
static PointMatrix | pm_tri_identity |
static PointMatrix | pm_quad_identity |
static PointMatrix | pm_hex_identity |
A parallel extension of the NCMesh class.
The basic idea (and assumption) is that all processors share the coarsest layer ('root_elements'). This has the advantage that refinements can easily be exchanged between processors when rebalancing since individual elements can be uniquely identified by the index of the root element and a path in the refinement tree.
Each leaf element is owned by one of the processors (NCMesh::Element::rank). The underlying NCMesh stores not only elements for the current ('MyRank') processor, but also a minimal layer of adjacent "ghost" elements owned by other processors. The ghost layer is synchronized after refinement.
The ghost layer contains all vertex-, edge- and face-neighbors of the current processor's region. It is used to determine constraining relations and ownership of DOFs on the processor boundary. Ghost elements are never seen by the rest of MFEM as they are skipped when a Mesh is created from the NCMesh.
The processor that owns a vertex, edge or a face (and in turn its DOFs) is currently defined to be the one with the lowest rank in the group of processors that share the entity.
Vertices, edges and faces that are not shared by this ('MyRank') processor are ghosts, and are numbered after all real vertices/edges/faces, i.e., they have indices greater than NVertices, NEdges, NFaces, respectively.
A shared vertex/edge/face is identified in an interprocessor message by a pair of numbers. The first number specifies an element in an ElementSet (typically sent at the beginning of the message) that contains the v/e/f. The second number is the local index of the v/e/f in that element.
Definition at line 65 of file pncmesh.hpp.
mfem::ParNCMesh::ParNCMesh | ( | MPI_Comm | comm, |
const NCMesh & | ncmesh | ||
) |
Definition at line 27 of file pncmesh.cpp.
|
virtual |
Definition at line 49 of file pncmesh.cpp.
|
protected |
Definition at line 271 of file pncmesh.cpp.
|
protectedvirtual |
Reimplemented from mfem::NCMesh.
Definition at line 67 of file pncmesh.cpp.
|
protectedvirtual |
Reimplemented from mfem::NCMesh.
Definition at line 214 of file pncmesh.cpp.
|
protectedvirtual |
Reimplemented from mfem::NCMesh.
Definition at line 238 of file pncmesh.cpp.
|
protected |
Definition at line 366 of file pncmesh.cpp.
|
protected |
Definition at line 439 of file pncmesh.cpp.
|
virtual |
Parallel version of NCMesh::CheckDerefinementNCLevel.
Reimplemented from mfem::NCMesh.
Definition at line 1253 of file pncmesh.cpp.
|
protected |
Definition at line 526 of file pncmesh.cpp.
|
protected |
Definition at line 829 of file pncmesh.cpp.
Definition at line 1356 of file pncmesh.cpp.
|
staticprotected |
Definition at line 588 of file pncmesh.cpp.
Read from 'is' a processor-independent encoding of vertex/edge/face IDs.
Definition at line 1826 of file pncmesh.cpp.
|
virtual |
Parallel reimplementation of NCMesh::Derefine, keeps ghost layers in sync. The interface is identical.
Reimplemented from mfem::NCMesh.
Definition at line 1001 of file pncmesh.cpp.
Return a list of processors that own elements in the immediate neighborhood of 'elem' (i.e., vertex, edge and face neighbors), and are not 'MyRank'.
Definition at line 543 of file pncmesh.cpp.
|
inline |
Returns owner processor for element 'index'. This is normally MyRank but for index >= NElements (i.e., for ghosts) it may be something else.
Definition at line 189 of file pncmesh.hpp.
Reimplemented from mfem::NCMesh.
Definition at line 192 of file pncmesh.cpp.
Reimplemented from mfem::NCMesh.
Definition at line 204 of file pncmesh.cpp.
Write to 'os' a processor-independent encoding of vertex/edge/face IDs.
Definition at line 1784 of file pncmesh.cpp.
|
staticprotected |
Definition at line 416 of file pncmesh.cpp.
|
virtual |
Extension of NCMesh::GetBoundaryClosure. Filters out ghost vertices and ghost edges from 'bdr_vertices' and 'bdr_edges'.
Reimplemented from mfem::NCMesh.
Definition at line 463 of file pncmesh.cpp.
void mfem::ParNCMesh::GetDebugMesh | ( | Mesh & | debug_mesh | ) | const |
Extract a debugging Mesh containing all leaf elements, including ghosts. The debug mesh will have element attributes set to element rank + 1.
Definition at line 2224 of file pncmesh.cpp.
|
inline |
Get previous (pre-Derefine) fine element ranks. This complements the CoarseFineTransformations::embeddings array in parallel.
Definition at line 215 of file pncmesh.hpp.
void mfem::ParNCMesh::GetFaceNeighbors | ( | ParMesh & | pmesh | ) |
Populate face neighbor members of ParMesh from the ghost layer, without communication.
Definition at line 594 of file pncmesh.cpp.
|
inline |
Return (shared) face orientation relative to the owner element.
Definition at line 132 of file pncmesh.hpp.
|
inline |
Return a list of processors sharing a vertex/edge/face ('type' == 0/1/2, resp.) and the size of the list.
Definition at line 150 of file pncmesh.hpp.
|
inlineprotectedvirtual |
Reimplemented from mfem::NCMesh.
Definition at line 291 of file pncmesh.hpp.
|
inline |
Return vertex/edge/face ('type' == 0/1/2, resp.) owner.
Definition at line 138 of file pncmesh.hpp.
|
inline |
Get previous indices (pre-Rebalance) of current elements. Index of -1 indicates that an element didn't exist in the mesh before.
Definition at line 211 of file pncmesh.hpp.
|
inline |
Return a list of edges shared by this processor and at least one other processor. (NOTE: this is a subset of the NCMesh::edge_list; slaves are empty.)
Definition at line 106 of file pncmesh.hpp.
|
inline |
Return a list of faces shared by this processor and another processor. (NOTE: this is a subset of NCMesh::face_list; slaves are empty.)
Definition at line 114 of file pncmesh.hpp.
|
inline |
Helper to get shared vertices/edges/faces ('type' == 0/1/2 resp.).
Definition at line 121 of file pncmesh.hpp.
|
inline |
Return a list of vertices shared by this processor and at least one other processor. (NOTE: only NCList::conforming will be set.)
Definition at line 97 of file pncmesh.hpp.
|
inlineprotected |
Helper to get the partition when the serial mesh is being split initially.
Definition at line 278 of file pncmesh.hpp.
|
inline |
Returns true if the specified vertex/edge/face is a ghost.
Definition at line 177 of file pncmesh.hpp.
|
inlineprotectedvirtual |
Reimplemented from mfem::NCMesh.
Definition at line 288 of file pncmesh.hpp.
|
virtual |
Parallel version of NCMesh::LimitNCLevel.
Reimplemented from mfem::NCMesh.
Definition at line 983 of file pncmesh.cpp.
|
protected |
Definition at line 338 of file pncmesh.cpp.
|
protected |
Get a list of ranks that own elements in the neighborhood of our region. NOTE: MyRank is not included.
Definition at line 576 of file pncmesh.cpp.
|
protectedvirtual |
Get edge and face numbering from 'mesh' (i.e., set all Edge::index and Face::index) after a new mesh was created from us.
Reimplemented from mfem::NCMesh.
Definition at line 147 of file pncmesh.cpp.
|
inlineprotected |
Return the processor number for a global element number.
Definition at line 274 of file pncmesh.hpp.
|
inlineprotected |
Return the global index of the first element owned by processor 'rank'.
Definition at line 282 of file pncmesh.hpp.
|
protected |
Traverse the (local) refinement tree and determine which subtrees are no longer needed, i.e., their leaves are not owned by us nor are they our ghosts. These subtrees are then derefined.
Definition at line 877 of file pncmesh.cpp.
|
protected |
Internal. Recursive part of Prune().
Definition at line 841 of file pncmesh.cpp.
|
inline |
Returns true if 'rank' is in the processor group of a vertex/edge/face ('type' == 0/1/2, resp.).
Definition at line 165 of file pncmesh.hpp.
void mfem::ParNCMesh::Rebalance | ( | ) |
Migrate leaf elements of the global refinement hierarchy (including ghost elements) so that each processor owns the same number of leaves (+-1).
Definition at line 1309 of file pncmesh.cpp.
Receive element DOFs sent by SendRebalanceDofs().
Definition at line 1580 of file pncmesh.cpp.
|
protected |
Assign new Element::rank to leaf elements and send them to their new owners, keeping the ghost layer up to date. Used by Rebalance() and Derefine().
Definition at line 1361 of file pncmesh.cpp.
|
virtual |
An override of NCMesh::Refine, which is called eventually, after making sure that refinements that occur on the processor boundary are sent to the neighbor processors so they can keep their ghost layers up to date.
Reimplemented from mfem::NCMesh.
Definition at line 911 of file pncmesh.cpp.
void mfem::ParNCMesh::SendRebalanceDofs | ( | int | old_ndofs, |
const Table & | old_element_dofs, | ||
long | old_global_offset, | ||
FiniteElementSpace * | space | ||
) |
Use the communication pattern from last Rebalance() to send element DOFs.
Definition at line 1547 of file pncmesh.cpp.
template void mfem::ParNCMesh::SynchronizeDerefinementData< double > | ( | Array< Type > & | elem_data, |
const Table & | deref_table | ||
) |
Exchange element data for derefinements that straddle processor boundaries. 'elem_data' is enlarged and filled with ghost values.
Definition at line 1173 of file pncmesh.cpp.
|
protectedvirtual |
Apart from the primary data structure, which is the element/node/face hierarchy, there is secondary data that is derived from the primary data and needs to be updated when the primary data changes. Update() takes care of that and needs to be called after refinement and derefinement. Secondary data includes: leaf_elements, vertex_nodeId, face_list, edge_list, and everything in ParNCMesh.
Reimplemented from mfem::NCMesh.
Definition at line 54 of file pncmesh.cpp.
|
protected |
Definition at line 488 of file pncmesh.cpp.
|
protectedvirtual |
update Vertex::index and vertex_nodeId
Reimplemented from mfem::NCMesh.
Definition at line 101 of file pncmesh.cpp.
|
friend |
Definition at line 491 of file pncmesh.hpp.
|
friend |
Definition at line 490 of file pncmesh.hpp.
|
protected |
Stores modified point matrices created by GetFaceNeighbors.
Definition at line 484 of file pncmesh.hpp.
list of type 3 elements
Definition at line 269 of file pncmesh.hpp.
|
protected |
Definition at line 255 of file pncmesh.hpp.
|
protected |
Definition at line 250 of file pncmesh.hpp.
|
protected |
Type of each leaf element: 1 - our element (rank == MyRank), 3 - our element, and neighbor to the ghost layer, 2 - ghost layer element (existing element, but rank != MyRank), 0 - element beyond the ghost layer, may not be a real element. See also UpdateLayers().
Definition at line 266 of file pncmesh.hpp.
|
protected |
Definition at line 256 of file pncmesh.hpp.
|
protected |
Definition at line 258 of file pncmesh.hpp.
|
protected |
Definition at line 251 of file pncmesh.hpp.
list of elements whose 'element_type' == 2.
Definition at line 268 of file pncmesh.hpp.
|
protected |
Definition at line 309 of file pncmesh.hpp.
|
protected |
Definition at line 235 of file pncmesh.hpp.
|
protected |
Definition at line 236 of file pncmesh.hpp.
|
protected |
Definition at line 239 of file pncmesh.hpp.
|
protected |
Definition at line 241 of file pncmesh.hpp.
|
protected |
Definition at line 240 of file pncmesh.hpp.
|
protected |
Definition at line 239 of file pncmesh.hpp.
|
protected |
Definition at line 241 of file pncmesh.hpp.
|
protected |
Definition at line 240 of file pncmesh.hpp.
|
protected |
Definition at line 238 of file pncmesh.hpp.
|
protected |
Definition at line 236 of file pncmesh.hpp.
|
protected |
Definition at line 238 of file pncmesh.hpp.
|
protected |
After Rebalance, this array holds the old element indices, or -1 if an element didn't exist in the mesh previously. After Derefine, it holds the ranks of the old (potentially non-existent) fine elements.
Definition at line 481 of file pncmesh.hpp.
|
protected |
Definition at line 476 of file pncmesh.hpp.
|
protected |
Recorded communication pattern from last Rebalance. Used by Send/RecvRebalanceDofs to ship element DOFs.
Definition at line 475 of file pncmesh.hpp.
|
protected |
Definition at line 245 of file pncmesh.hpp.
|
protected |
Definition at line 246 of file pncmesh.hpp.
|
protected |
Definition at line 244 of file pncmesh.hpp.
Definition at line 356 of file pncmesh.hpp.
|
protected |
Definition at line 254 of file pncmesh.hpp.
|
protected |
Definition at line 249 of file pncmesh.hpp.