![]() |
MFEM v4.8.0
Finite element discretization library
|
Class representing a Parallel Nonconformal SubMesh. This is only used by ParSubMesh. More...
#include <pncsubmesh.hpp>
Public Types | |
using | From = SubMesh::From |
Convenience type alias. | |
![]() | |
using | GroupId = short |
using | CommGroup = std::vector<int> |
![]() | |
using | RefCoord = std::int64_t |
Public Member Functions | |
const ParNCMesh * | GetParent () const |
Get the parent ParNCMesh object. | |
![]() | |
ParNCMesh (MPI_Comm comm, const NCMesh &ncmesh, const int *partitioning=nullptr) | |
Construct by partitioning a serial NCMesh. | |
ParNCMesh (MPI_Comm comm, std::istream &input, int version, int &curved, int &is_nc) | |
ParNCMesh (const ParNCMesh &other) | |
Deep copy of another instance. | |
virtual | ~ParNCMesh () |
void | Refine (const Array< Refinement > &refinements) override |
void | LimitNCLevel (int max_nc_level) override |
Parallel version of NCMesh::LimitNCLevel. | |
void | CheckDerefinementNCLevel (const Table &deref_table, Array< int > &level_ok, int max_nc_level) override |
void | Derefine (const Array< int > &derefs) override |
void | GetFineToCoarsePartitioning (const Array< int > &derefs, Array< int > &new_ranks) const |
void | Rebalance (const Array< int > *custom_partition=NULL) |
int | GetNElements () const |
int | GetNGhostVertices () const |
int | GetNGhostEdges () const |
int | GetNGhostFaces () const |
int | GetNGhostElements () const override |
const NCList & | GetSharedVertices () |
const NCList & | GetSharedEdges () |
const NCList & | GetSharedFaces () |
void | GetGhostElements (Array< int > &gelem) |
const NCList & | GetSharedList (int entity) |
Helper to get shared vertices/edges/faces ('entity' == 0/1/2 resp.). | |
int | GetFaceOrientation (int index) const |
Return (shared) face orientation relative to its owner element. | |
GroupId | GetEntityOwnerId (int entity, int index) |
Return vertex/edge/face ('entity' == 0/1/2, resp.) owner. | |
GroupId | GetEntityGroupId (int entity, int index) |
const CommGroup & | GetGroup (GroupId id) const |
Return a list of ranks contained in the group of the given ID. | |
bool | GroupContains (GroupId id, int rank) const |
Return true if group 'id' contains the given rank. | |
bool | IsGhost (int entity, int index) const |
Return true if the specified vertex/edge/face is a ghost. | |
int | ElementRank (int index) const |
int | GetMyRank () const |
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. | |
void | RecvRebalanceDofs (Array< int > &elements, Array< long > &dofs) |
Receive element DOFs sent by SendRebalanceDofs(). | |
const Array< int > & | GetRebalanceOldIndex () const |
const Array< int > & | GetDerefineOldRanks () const |
template<typename Type > | |
void | SynchronizeDerefinementData (Array< Type > &elem_data, const Table &deref_table) |
void | GetBoundaryClosure (const Array< int > &bdr_attr_is_ess, Array< int > &bdr_vertices, Array< int > &bdr_edges, Array< int > &bdr_faces) override |
void | Trim () override |
Save memory by releasing all non-essential and cached data. | |
std::size_t | MemoryUsage (bool with_base=true) const |
Return total number of bytes allocated. | |
int | PrintMemoryDetail (bool with_base=true) const |
void | GetDebugMesh (Mesh &debug_mesh) const |
void | CommunicateGhostData (const Array< VarOrderElemInfo > &sendData, Array< VarOrderElemInfo > &recvData) |
void | FindEdgesOfGhostElement (int elem, Array< int > &edges) |
void | FindFacesOfGhostElement (int elem, Array< int > &faces) |
void | FindEdgesOfGhostFace (int face, Array< int > &edges) |
![]() | |
NCMesh (const Mesh *mesh) | |
NCMesh (std::istream &input, int version, int &curved, int &is_nc) | |
NCMesh (const NCMesh &other) | |
Deep copy of another instance. | |
NCMesh & | operator= (NCMesh &)=delete |
Copy assignment not supported. | |
virtual | ~NCMesh () |
int | Dimension () const |
Return the dimension of the NCMesh. | |
int | SpaceDimension () const |
Return the space dimension of the NCMesh. | |
int | GetNVertices () const |
Return the number of vertices in the NCMesh. | |
int | GetNEdges () const |
Return the number of edges in the NCMesh. | |
int | GetNFaces () const |
Return the number of (2D) faces in the NCMesh. | |
const Table & | GetDerefinementTable () |
const NCList & | GetFaceList () |
Return the current list of conforming and nonconforming faces. | |
const NCList & | GetEdgeList () |
Return the current list of conforming and nonconforming edges. | |
const NCList & | GetVertexList () |
const NCList & | GetNCList (int entity) |
Return vertex/edge/face list (entity = 0/1/2, respectively). | |
void | MarkCoarseLevel () |
const CoarseFineTransformations & | GetRefinementTransforms () const |
const CoarseFineTransformations & | GetDerefinementTransforms () const |
void | ClearTransforms () |
Free all internal data created by the above three functions. | |
void | GetEdgeVertices (const MeshId &edge_id, int vert_index[2], bool oriented=true) const |
Return Mesh vertex indices of an edge identified by 'edge_id'. | |
int | GetEdgeNCOrientation (const MeshId &edge_id) const |
int | GetFaceVerticesEdges (const MeshId &face_id, int vert_index[4], int edge_index[4], int edge_orientation[4]) const |
int | GetEdgeMaster (int v1, int v2) const |
Geometry::Type | GetElementGeometry (int index) const |
Return element geometry type. index is the Mesh element number. | |
Geometry::Type | GetFaceGeometry (int index) const |
Return face geometry type. index is the Mesh face number. | |
int | GetNumRootElements () |
Return the number of root elements. | |
int | GetElementDepth (int i) const |
Return the distance of leaf i from the root. | |
int | GetElementSizeReduction (int i) const |
void | GetElementFacesAttributes (int i, Array< int > &faces, Array< int > &fattr) const |
Return the faces and face attributes of leaf element i. | |
void | SetAttribute (int i, int attr) |
Set the attribute of leaf element i, which is a Mesh element index. | |
void | Print (std::ostream &out, const std::string &comments="") const |
bool | IsLegacyLoaded () const |
I/O: Return true if the mesh was loaded from the legacy v1.1 format. | |
void | LegacyToNewVertexOrdering (Array< int > &order) const |
I/O: Return a map from old (v1.1) vertex indices to new vertex indices. | |
long | MemoryUsage () const |
Return total number of bytes allocated. | |
int | PrintMemoryDetail () const |
int | GetNodeVertex (int node) |
Given a node index, return the vertex index associated. | |
int | GetNumNodes () const |
The number of Nodes. | |
const Node & | GetNode (int i) const |
Access a Node. | |
int | GetNumFaces () const |
The number of faces. | |
const Face & | GetFace (int i) const |
Access a Face. | |
int | GetNumElements () const |
The number of elements. | |
const Element & | GetElement (int i) const |
Access an Element. | |
int | ParentFaceNodes (std::array< int, 4 > &nodes) const |
Given a set of nodes defining a face, traverse the nodes structure to find the nodes that make up the parent face and replace the input nodes with the parent nodes. Additionally return the child index that the child face would be, relative to the discovered parent face. | |
std::array< int, 4 > | FindFaceNodes (int face) const |
Method for finding the nodes associated to a face. | |
std::array< int, 4 > | FindFaceNodes (const Face &fa) const |
MFEM_DEPRECATED void | FindFaceNodes (int face, int node[4]) const |
Backwards compatible method for finding the node associated to a face. | |
void | DebugLeafOrder (std::ostream &out) const |
void | DebugDump (std::ostream &out) const |
Static Public Member Functions | |
static bool | IsParNCSubMesh (const NCMesh *m) |
Check if NCMesh m is a ParNCSubMesh. | |
![]() | |
static void | GridSfcOrdering2D (int width, int height, Array< int > &coords) |
static void | GridSfcOrdering3D (int width, int height, int depth, Array< int > &coords) |
Protected Member Functions | |
ParNCSubMesh (ParSubMesh &submesh, const ParNCMesh &parent, From from, const Array< int > &attributes) | |
protected constructor | |
const HashTable< Node > & | ParentNodes () const |
Accessor for parent nodes. | |
const HashTable< Face > & | ParentFaces () const |
Accessor for parent faces. | |
![]() | |
ParNCMesh ()=default | |
void | GetConformingSharedStructures (class ParMesh &pmesh) |
void | GetFaceNeighbors (class ParMesh &pmesh) |
void | Update () override |
int | Partition (long index, long total_elements) const |
Return the processor number for a global element number. | |
int | InitialPartition (int index) const |
Helper to get the partitioning when the serial mesh gets split initially. | |
long | PartitionFirstIndex (int rank, long total_elements) const |
Return the global index of the first element owned by processor 'rank'. | |
void | BuildFaceList () override |
void | BuildEdgeList () override |
void | BuildVertexList () override |
void | ElementSharesFace (int elem, int local, int face) override |
void | ElementSharesEdge (int elem, int local, int enode) override |
void | ElementSharesVertex (int elem, int local, int vnode) override |
GroupId | GetGroupId (const CommGroup &group) |
GroupId | GetSingletonGroup (int rank) |
void | InitOwners (int num, Array< GroupId > &entity_owner) |
void | MakeSharedList (const NCList &list, NCList &shared) |
void | AddConnections (int entity, int index, const Array< int > &ranks) |
void | CalculatePMatrixGroups () |
void | CreateGroups (int nentities, Array< Connection > &index_rank, Array< GroupId > &entity_group) |
void | CalcFaceOrientations () |
void | UpdateLayers () |
void | MakeSharedTable (int ngroups, int ent, Array< int > &shared_local, Table &group_shared, Array< char > *entity_geom=NULL, char geom=0) |
void | AdjustMeshIds (Array< MeshId > ids[], int rank) |
void | ChangeVertexMeshIdElement (NCMesh::MeshId &id, int elem) |
void | ChangeEdgeMeshIdElement (NCMesh::MeshId &id, int elem) |
void | ChangeRemainingMeshIds (Array< MeshId > &ids, int pos, const Array< Pair< int, int > > &find) |
void | EncodeMeshIds (std::ostream &os, Array< MeshId > ids[]) |
void | DecodeMeshIds (std::istream &is, Array< MeshId > ids[]) |
void | EncodeGroups (std::ostream &os, const Array< GroupId > &ids) |
void | DecodeGroups (std::istream &is, Array< GroupId > &ids) |
bool | CheckElementType (int elem, int type) |
void | ElementNeighborProcessors (int elem, Array< int > &ranks) |
void | NeighborProcessors (Array< int > &neighbors) |
void | Prune () |
bool | PruneTree (int elem) |
Internal. Recursive part of Prune(). | |
void | RedistributeElements (Array< int > &new_ranks, int target_elements, bool record_comm) |
void | ClearAuxPM () |
std::size_t | GroupsMemoryUsage () const |
![]() | |
NCMesh ()=default | |
void | GetMeshComponents (Mesh &mesh) const |
Fill Mesh::{vertices,elements,boundary} for the current finest level. | |
void | OnMeshUpdated (Mesh *mesh) |
void | MakeTopologyOnly () |
void | UpdateLeafElements () |
Update the leaf elements indices in leaf_elements. | |
void | UpdateVertices () |
This method assigns indices to vertices (Node::vert_index) that will be seen by the Mesh class and the rest of MFEM. | |
void | CollectLeafElements (int elem, int state, Array< int > &ghosts, int &counter) |
void | InitRootState (int root_count) |
void | InitGeomFlags () |
bool | HavePrisms () const |
Return true if the mesh contains prism elements. | |
bool | HavePyramids () const |
Return true if the mesh contains pyramid elements. | |
bool | HaveTets () const |
Return true if the mesh contains tetrahedral elements. | |
bool | IsGhost (const Element &el) const |
Return true if the Element el is a ghost element. | |
void | RefineElement (int elem, char ref_type) |
Refine the element elem with the refinement type ref_type. | |
void | RefineElement (const Refinement &ref) |
Refine one element with type and scale specified by ref. | |
void | DerefineElement (int elem) |
Derefine the element elem, does nothing on leaf elements. | |
void | SetNodeScale (int p0, int p1, real_t scale) |
Helper function to set scale for a node with parents p0, p1. | |
int | AddElement (const Element &el) |
Add an Element el to the NCMesh, optimized to reuse freed elements. | |
int | AddElement (Geometry::Type geom, int attr) |
void | FreeElement (int id) |
int | NewHexahedron (int n0, int n1, int n2, int n3, int n4, int n5, int n6, int n7, int attr, int fattr0, int fattr1, int fattr2, int fattr3, int fattr4, int fattr5) |
int | NewWedge (int n0, int n1, int n2, int n3, int n4, int n5, int attr, int fattr0, int fattr1, int fattr2, int fattr3, int fattr4) |
int | NewTetrahedron (int n0, int n1, int n2, int n3, int attr, int fattr0, int fattr1, int fattr2, int fattr3) |
int | NewPyramid (int n0, int n1, int n2, int n3, int n4, int attr, int fattr0, int fattr1, int fattr2, int fattr3, int fattr4) |
int | NewQuadrilateral (int n0, int n1, int n2, int n3, int attr, int eattr0, int eattr1, int eattr2, int eattr3) |
int | NewTriangle (int n0, int n1, int n2, int attr, int eattr0, int eattr1, int eattr2) |
int | NewSegment (int n0, int n1, int attr, int vattr1, int vattr2) |
mfem::Element * | NewMeshElement (int geom) const |
int | QuadFaceSplitType (int n1, int n2, int n3, int n4, real_t &s, int mid[5]=NULL) const |
Given a quad face defined by four vertices, establish which edges of this face have been split, and if so optionally return the mid points of those edges. | |
bool | TriFaceSplit (int n1, int n2, int n3, int mid[3]=NULL) const |
Given a tri face defined by three vertices, establish whether the edges that make up this face have been split, and if so optionally return the midpoints. | |
bool | TriFaceIsMaster (int n1, int n2, int n3) const |
Determine if a Triangle face is a master face. | |
bool | QuadFaceIsMaster (int n1, int n2, int n3, int n4) const |
Determine if a Quad face is a master face. | |
void | ForceRefinement (int vn1, int vn2, int vn3, int vn4) |
void | FindEdgeElements (int vn1, int vn2, int vn3, int vn4, Array< MeshId > &prisms) const |
void | CheckAnisoPrism (int vn1, int vn2, int vn3, int vn4, const Refinement *refs, int nref) |
void | CheckAnisoFace (int vn1, int vn2, int vn3, int vn4, int mid12, int mid34, int level=0) |
void | CheckIsoFace (int vn1, int vn2, int vn3, int vn4, int en1, int en2, int en3, int en4, int midf) |
void | ReparentNode (int node, int new_p1, int new_p2, real_t scale) |
int | FindMidEdgeNode (int node1, int node2) const |
int | GetMidEdgeNode (int node1, int node2) |
int | GetMidFaceNode (int en1, int en2, int en3, int en4) |
void | ReferenceElement (int elem) |
Add references to all nodes, edges and faces of the element. | |
void | UnreferenceElement (int elem, Array< int > &elemFaces) |
Face * | GetFace (Element &elem, int face_no) |
void | RegisterFaces (int elem, int *fattr=NULL) |
void | DeleteUnusedFaces (const Array< int > &elemFaces) |
void | CollectDerefinements (int elem, Array< Connection > &list) |
int | RetrieveNode (const Element &el, int index) |
Return el.node[index] correctly, even if the element is refined. | |
int | FindNodeExt (const Element &el, int node, bool abort=true) |
Extended version of find_node: works if 'el' is refined. | |
int | ReorderFacePointMat (int v0, int v1, int v2, int v3, int elem, const PointMatrix &pm, PointMatrix &reordered) const |
void | TraverseQuadFace (int vn0, int vn1, int vn2, int vn3, const PointMatrix &pm, int level, Face *eface[4], MatrixMap &matrix_map) |
TriFaceTraverseResults | TraverseTriFace (int vn0, int vn1, int vn2, const PointMatrix &pm, int level, MatrixMap &matrix_map) |
void | TraverseTetEdge (int vn0, int vn1, const Point &p0, const Point &p1, MatrixMap &matrix_map) |
void | TraverseEdge (int vn0, int vn1, real_t t0, real_t t1, int flags, int level, MatrixMap &matrix_map) |
void | FindSetNeighbors (const Array< char > &elem_set, Array< int > *neighbors, Array< char > *neighbor_set=NULL) |
void | FindNeighbors (int elem, Array< int > &neighbors, const Array< int > *search_set=NULL) |
void | NeighborExpand (const Array< int > &elems, Array< int > &expanded, const Array< int > *search_set=NULL) |
void | CollectEdgeVertices (int v0, int v1, Array< int > &indices) |
void | CollectTriFaceVertices (int v0, int v1, int v2, Array< int > &indices) |
void | CollectQuadFaceVertices (int v0, int v1, int v2, int v3, Array< int > &indices) |
void | BuildElementToVertexTable () |
void | UpdateElementToVertexTable () |
int | GetVertexRootCoord (int elem, RefCoord coord[3]) const |
void | CollectIncidentElements (int elem, const RefCoord coord[3], Array< int > &list) const |
void | FindVertexCousins (int elem, int local, Array< int > &cousins) const |
void | GetPointMatrix (Geometry::Type geom, const char *ref_path, DenseMatrix &matrix) const |
void | TraverseRefinements (int elem, int coarse_index, std::string &ref_path, RefPathMap &map) const |
void | InitDerefTransforms () |
void | SetDerefMatrixCodes (int parent, Array< int > &fine_coarse) |
const real_t * | CalcVertexPos (int node) const |
int | GetEdgeMaster (int node) const |
real_t | GetScale (real_t s, bool reverse) const |
Return directed scale in (0,1). | |
int | EdgeSplitLevel (int vn1, int vn2) const |
Return the number of splits of this edge that have occurred in the NCMesh. If zero, this means the segment is not the master of any other segments. | |
int | TriFaceSplitLevel (int vn1, int vn2, int vn3) const |
Return the number of splits of this triangle that have occurred in the NCMesh. If zero, this means the triangle is neither split, nor the master of a split face. | |
void | QuadFaceSplitLevel (int vn1, int vn2, int vn3, int vn4, int &h_level, int &v_level) const |
Computes the number of horizontal and vertical splits of this quad that have occurred in the NCMesh. If zero, this means the quad is not the master of any other quad. | |
int | QuadFaceSplitLevel (int vn1, int vn2, int vn3, int vn4) const |
Returns the total number of splits of this quad that have occurred in the NCMesh. If zero, this means the quad is not the master of any other quad. | |
void | CountSplits (int elem, int splits[3]) const |
void | GetLimitRefinements (Array< Refinement > &refinements, int max_level) |
int | PrintVertexParents (std::ostream *out) const |
Print the "vertex_parents" section of the mesh file. | |
void | LoadVertexParents (std::istream &input) |
Load the vertex parent hierarchy from a mesh file. | |
int | PrintBoundary (std::ostream *out) const |
void | LoadBoundary (std::istream &input) |
Load the "boundary" section of the mesh file. | |
void | PrintCoordinates (std::ostream &out) const |
Print the "coordinates" section of the mesh file. | |
void | LoadCoordinates (std::istream &input) |
Load the "coordinates" section of the mesh file. | |
void | InitRootElements () |
Count root elements and initialize root_state. | |
int | CountTopLevelNodes () const |
Return the index of the last top-level node plus one. | |
bool | ZeroRootStates () const |
Return true if all root_states are zero. | |
void | LoadCoarseElements (std::istream &input) |
Load the element refinement hierarchy from a legacy mesh file. | |
void | CopyElements (int elem, const BlockArray< Element > &tmp_elements) |
void | LoadLegacyFormat (std::istream &input, int &curved, int &is_nc) |
Load the deprecated MFEM mesh v1.1 format for backward compatibility. | |
Protected Attributes | |
const ParNCMesh * | parent_ |
The parent ParNCMesh. Not owned. | |
Array< int > | parent_element_ids_ |
Array< int > | parent_node_ids_ |
std::unordered_map< int, int > | parent_to_submesh_node_ids_ |
Mapping from parent NCMesh node ids to submesh NCMesh node ids. | |
std::unordered_map< int, int > | parent_to_submesh_element_ids_ |
Mapping from parent NCMesh element ids to submesh NCMesh element ids. | |
![]() | |
MPI_Comm | MyComm |
int | NRanks |
GroupList | groups |
GroupMap | group_id |
Array< GroupId > | entity_owner [3] |
Array< GroupId > | entity_pmat_group [3] |
Array< GroupId > | entity_conf_group [3] |
Array< int > | entity_elem_local [3] |
NCList | shared_vertices |
NCList | shared_edges |
NCList | shared_faces |
Array< char > | face_orient |
Array< char > | element_type |
Array< int > | ghost_layer |
list of elements whose 'element_type' == 2. | |
Array< int > | boundary_layer |
list of type 3 elements | |
Array< int > | tmp_owner |
Array< char > | tmp_shared_flag |
Array< Connection > | entity_index_rank [3] |
Array< int > | 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. | |
![]() | |
int | Dim |
int | spaceDim |
dimensions of the elements and the vertex coordinates | |
int | MyRank |
used in parallel, or when loading a parallel file in serial | |
bool | Iso |
true if the mesh only contains isotropic refinements | |
int | Geoms |
bit mask of element geometries present, see InitGeomFlags() | |
bool | Legacy |
true if the mesh was loaded from the legacy v1.1 format | |
HashTable< Node > | nodes |
HashTable< Face > | faces |
bool | using_scaling = false |
BlockArray< Element > | elements |
Array< int > | free_element_ids |
Array< int > | root_state |
Array< real_t > | coordinates |
int | NElements |
int | NVertices |
int | NEdges |
int | NFaces |
int | NGhostElements |
int | NGhostVertices |
int | NGhostEdges |
int | NGhostFaces |
Array< int > | leaf_elements |
finest elements, in Mesh ordering (+ ghosts) | |
Array< int > | leaf_sfc_index |
natural tree ordering of leaf elements | |
Array< int > | vertex_nodeId |
vertex-index to node-id map, see UpdateVertices | |
NCList | face_list |
lazy-initialized list of faces, see GetFaceList | |
NCList | edge_list |
lazy-initialized list of edges, see GetEdgeList | |
NCList | vertex_list |
lazy-initialized list of vertices, see GetVertexList | |
Array< int > | boundary_faces |
subset of all faces, set by BuildFaceList | |
Array< char > | face_geom |
face geometry by face index, set by OnMeshUpdated | |
Table | element_vertex |
leaf-element to vertex table, see FindSetNeighbors | |
Array< Refinement > | ref_stack |
stack of scheduled refinements (temporary) | |
HashTable< Node > | shadow |
temporary storage for reparented nodes | |
Array< Triple< int, int, int > > | reparents |
scheduled node reparents (tmp) | |
Array< real_t > | reparent_scale |
scale associated with reparents (tmp) | |
Table | derefinements |
possible derefinements, see GetDerefinementTable | |
CoarseFineTransformations | transforms |
storage for data returned by Get[De]RefinementTransforms() | |
Array< int > | coarse_elements |
state of leaf_elements before Refine(), set by MarkCoarseLevel() | |
TmpVertex * | tmp_vertex |
Friends | |
class | ParSubMesh |
Only ParSubMesh can use methods in this class. | |
void | SubMeshUtils::ConstructFaceTree (ParNCSubMesh &submesh, const Array< int > &attributes) |
void | SubMeshUtils::ConstructVolumeTree (ParNCSubMesh &submesh, const Array< int > &attributes) |
Additional Inherited Members | |
![]() | |
static constexpr int | MaxElemNodes |
Number of nodes an element can have. | |
static constexpr int | MaxElemEdges |
Number of edges an element can have. | |
static constexpr int | MaxElemFaces |
Number of faces an element can have. | |
static constexpr int | MaxElemChildren |
Number of children an element can have. | |
static constexpr int | MaxFaceNodes |
Number of faces an element can have. | |
![]() | |
using | GroupList = std::vector<CommGroup> |
using | GroupMap = std::map<CommGroup, GroupId> |
![]() | |
using | RefPathMap = std::map<std::string, int> |
![]() | |
static int | get_face_orientation (const Face &face, const Element &e1, const Element &e2, int local[2]=NULL) |
![]() | |
static int | find_node (const Element &el, int node) |
static int | find_element_edge (const Element &el, int vn0, int vn1, bool abort=true) |
static int | find_local_face (int geom, int a, int b, int c) |
static const PointMatrix & | GetGeomIdentity (Geometry::Type geom) |
static void | CheckSupportedGeom (Geometry::Type geom) |
![]() | |
static PointMatrix | pm_seg_identity |
static PointMatrix | pm_tri_identity |
static PointMatrix | pm_quad_identity |
static PointMatrix | pm_tet_identity |
static PointMatrix | pm_prism_identity |
static PointMatrix | pm_pyramid_identity |
static PointMatrix | pm_hex_identity |
static GeomInfo | GI [Geometry::NumGeom] |
Class representing a Parallel Nonconformal SubMesh. This is only used by ParSubMesh.
Definition at line 31 of file pncsubmesh.hpp.
Convenience type alias.
Definition at line 35 of file pncsubmesh.hpp.
|
protected |
protected constructor
Definition at line 28 of file pncsubmesh.cpp.
|
inline |
Get the parent ParNCMesh object.
Definition at line 46 of file pncsubmesh.hpp.
|
inlinestatic |
Check if NCMesh m is a ParNCSubMesh.
m | The input Mesh |
Definition at line 41 of file pncsubmesh.hpp.
Accessor for parent faces.
Required to bypass access protection in parent class.
Definition at line 95 of file pncsubmesh.hpp.
Accessor for parent nodes.
Required to bypass access protection in parent class.
Definition at line 87 of file pncsubmesh.hpp.
|
friend |
Only ParSubMesh can use methods in this class.
Definition at line 33 of file pncsubmesh.hpp.
|
friend |
|
friend |
|
protected |
The parent ParNCMesh. Not owned.
Definition at line 57 of file pncsubmesh.hpp.
|
protected |
Mapping from submesh element nc ids (index of the array), to the parent element ids. If from a boundary, these map to faces in the parent.
Definition at line 61 of file pncsubmesh.hpp.
|
protected |
Mapping from ParNCSubMesh node ids (index of the array), to the parent NCMesh node ids.
Definition at line 65 of file pncsubmesh.hpp.
|
protected |
Mapping from parent NCMesh element ids to submesh NCMesh element ids.
Definition at line 73 of file pncsubmesh.hpp.
|
protected |
Mapping from parent NCMesh node ids to submesh NCMesh node ids.
Definition at line 69 of file pncsubmesh.hpp.