MFEM v4.7.0
Finite element discretization library
Loading...
Searching...
No Matches
Classes | Public Member Functions | Static Public Member Functions | Public Attributes | Protected Member Functions | Protected Attributes | Friends | List of all members
mfem::ParMesh Class Reference

Class for parallel meshes. More...

#include <pmesh.hpp>

Inheritance diagram for mfem::ParMesh:
[legend]
Collaboration diagram for mfem::ParMesh:
[legend]

Classes

struct  Vert3
 
struct  Vert4
 

Public Member Functions

 ParMesh ()
 Default constructor. Create an empty ParMesh.
 
 ParMesh (MPI_Comm comm, Mesh &mesh, int *partitioning_=NULL, int part_method=1)
 Create a parallel mesh by partitioning a serial Mesh.
 
 ParMesh (const ParMesh &pmesh, bool copy_nodes=true)
 
 ParMesh (MPI_Comm comm, std::istream &input, bool refine=true, int generate_edges=1, bool fix_orientation=true)
 Read a parallel mesh, each MPI rank from its own file/stream.
 
MFEM_DEPRECATED ParMesh (ParMesh *orig_mesh, int ref_factor, int ref_type)
 Deprecated: see ParMesh::MakeRefined.
 
 ParMesh (ParMesh &&mesh)
 Move constructor. Used for named constructors.
 
ParMeshoperator= (ParMesh &&mesh)
 Move assignment operator.
 
ParMeshoperator= (const ParMesh &mesh)=delete
 Explicitly delete the copy assignment operator.
 
void Finalize (bool refine=false, bool fix_orientation=false) override
 Finalize the construction of a general Mesh.
 
void SetAttributes () override
 Determine the sets of unique attribute values in domain and boundary elements.
 
bool HasBoundaryElements () const override
 Checks if any rank in the mesh has boundary elements.
 
MPI_Comm GetComm () const
 
int GetNRanks () const
 
int GetMyRank () const
 
int GetLocalElementNum (long long global_element_num) const
 
long long GetGlobalElementNum (int local_element_num) const
 Map a local element number to a global element number.
 
void GetGlobalVertexIndices (Array< HYPRE_BigInt > &gi) const
 AMR meshes are not supported.
 
void GetGlobalEdgeIndices (Array< HYPRE_BigInt > &gi) const
 AMR meshes are not supported.
 
void GetGlobalFaceIndices (Array< HYPRE_BigInt > &gi) const
 AMR meshes are not supported.
 
void GetGlobalElementIndices (Array< HYPRE_BigInt > &gi) const
 AMR meshes are supported.
 
int GetNGroups () const
 
void GetSharedEdgeCommunicator (GroupCommunicator &sedge_comm) const
 Get the shared edges GroupCommunicator.
 
void GetSharedVertexCommunicator (GroupCommunicator &svert_comm) const
 Get the shared vertices GroupCommunicator.
 
void GetSharedQuadCommunicator (GroupCommunicator &squad_comm) const
 Get the shared face quadrilaterals GroupCommunicator.
 
void GetSharedTriCommunicator (GroupCommunicator &stria_comm) const
 Get the shared face triangles GroupCommunicator.
 
void GenerateOffsets (int N, HYPRE_BigInt loc_sizes[], Array< HYPRE_BigInt > *offsets[]) const
 
bool FaceIsTrueInterior (int FaceNo) const
 
void ExchangeFaceNbrData ()
 
void ExchangeFaceNbrNodes ()
 
void SetCurvature (int order, bool discont=false, int space_dim=-1, int ordering=1) override
 Set the curvature of the mesh nodes using the given polynomial degree.
 
void SetNodalFESpace (FiniteElementSpace *nfes) override
 
void SetNodalFESpace (ParFiniteElementSpace *npfes)
 
int GetNFaceNeighbors () const
 
int GetNFaceNeighborElements () const
 
int GetFaceNbrGroup (int fn) const
 
int GetFaceNbrRank (int fn) const
 
void GetFaceNbrElementFaces (int i, Array< int > &faces, Array< int > &orientation) const
 
TableGetFaceToAllElementTable () const
 
FaceElementTransformationsGetFaceElementTransformations (int FaceNo, int mask=31) override
 
void GetFaceElementTransformations (int FaceNo, FaceElementTransformations &FElTr, IsoparametricTransformation &ElTr1, IsoparametricTransformation &ElTr2, int mask=31) const override
 Variant of GetFaceElementTransformations using a user allocated FaceElementTransformations object.
 
FaceElementTransformationsGetSharedFaceTransformations (int sf, bool fill2=true)
 Get the FaceElementTransformations for the given shared face (edge 2D) using the shared face index sf. fill2 specify if the information for elem2 of the face should be computed or not. In the returned object, 1 and 2 refer to the local and the neighbor elements, respectively.
 
void GetSharedFaceTransformations (int sf, FaceElementTransformations &FElTr, IsoparametricTransformation &ElTr1, IsoparametricTransformation &ElTr2, bool fill2=true) const
 Variant of GetSharedFaceTransformations using a user allocated FaceElementTransformations object.
 
FaceElementTransformationsGetSharedFaceTransformationsByLocalIndex (int FaceNo, bool fill2=true)
 Get the FaceElementTransformations for the given shared face (edge 2D) using the face index FaceNo. fill2 specify if the information for elem2 of the face should be computed or not. In the returned object, 1 and 2 refer to the local and the neighbor elements, respectively.
 
void GetSharedFaceTransformationsByLocalIndex (int FaceNo, FaceElementTransformations &FElTr, IsoparametricTransformation &ElTr1, IsoparametricTransformation &ElTr2, bool fill2=true) const
 Variant of GetSharedFaceTransformationsByLocalIndex using a user allocated FaceElementTransformations object.
 
ElementTransformationGetFaceNbrElementTransformation (int FaceNo)
 Returns a pointer to the transformation defining the i-th face neighbor.
 
void GetFaceNbrElementTransformation (int FaceNo, IsoparametricTransformation &ElTr) const
 Variant of GetFaceNbrElementTransformation using a user allocated IsoparametricTransformation object.
 
real_t GetFaceNbrElementSize (int i, int type=0)
 
int GetNSharedFaces () const
 Return the number of shared faces (3D), edges (2D), vertices (1D)
 
int GetSharedFace (int sface) const
 Return the local face index for the given shared face.
 
int GetNFbyType (FaceType type) const override
 Returns the number of local faces according to the requested type, does not count master non-conforming faces.
 
void GenerateBoundaryElements () override
 
MFEM_DEPRECATED void ReorientTetMesh () override
 See the remarks for the serial version in mesh.hpp.
 
long long ReduceInt (int value) const override
 Utility function: sum integers from all processors (Allreduce).
 
void Rebalance ()
 
void Rebalance (const Array< int > &partition)
 
void ParPrint (std::ostream &out, const std::string &comments="") const
 
void SetPrintShared (bool print)
 
void Print (std::ostream &out=mfem::out, const std::string &comments="") const override
 
void Save (const std::string &fname, int precision=16) const override
 
void Print (adios2stream &out) const override
 
void PrintXG (std::ostream &out=mfem::out) const override
 
void PrintAsOne (std::ostream &out=mfem::out, const std::string &comments="") const
 
void PrintAsSerial (std::ostream &out=mfem::out, const std::string &comments="") const
 
Mesh GetSerialMesh (int save_rank) const
 
void SaveAsOne (const std::string &fname, int precision=16) const
 
void PrintAsOneXG (std::ostream &out=mfem::out)
 Old mesh format (Netgen/Truegrid) version of 'PrintAsOne'.
 
void PrintVTU (std::string pathname, VTKFormat format=VTKFormat::ASCII, bool high_order_output=false, int compression_level=0, bool bdr=false) override
 
void Load (std::istream &input, int generate_edges=0, int refine=1, bool fix_orientation=true) override
 Parallel version of Mesh::Load().
 
void GetBoundingBox (Vector &p_min, Vector &p_max, int ref=2)
 
void GetCharacteristics (real_t &h_min, real_t &h_max, real_t &kappa_min, real_t &kappa_max)
 
void Swap (ParMesh &other)
 
void PrintInfo (std::ostream &out=mfem::out) override
 Print various parallel mesh stats.
 
int FindPoints (DenseMatrix &point_mat, Array< int > &elem_ids, Array< IntegrationPoint > &ips, bool warn=true, InverseElementTransformation *inv_trans=NULL) override
 Find the ids of the elements that contain the given points, and their corresponding reference coordinates.
 
void PrintSharedEntities (const std::string &fname_prefix) const
 Debugging method.
 
virtual ~ParMesh ()
 
These methods require group > 0
int GroupNVertices (int group) const
 
int GroupNEdges (int group) const
 
int GroupNTriangles (int group) const
 
int GroupNQuadrilaterals (int group) const
 
int GroupVertex (int group, int i) const
 
void GroupEdge (int group, int i, int &edge, int &o) const
 
void GroupTriangle (int group, int i, int &face, int &o) const
 
void GroupQuadrilateral (int group, int i, int &face, int &o) const
 
- Public Member Functions inherited from mfem::Mesh
 Mesh ()
 
 Mesh (const Mesh &mesh, bool copy_nodes=true)
 
 Mesh (Mesh &&mesh)
 Move constructor, useful for using a Mesh as a function return value.
 
Meshoperator= (Mesh &&mesh)
 Move assignment operator.
 
Meshoperator= (const Mesh &mesh)=delete
 Explicitly delete the copy assignment operator.
 
 Mesh (real_t *vertices, int num_vertices, int *element_indices, Geometry::Type element_type, int *element_attributes, int num_elements, int *boundary_indices, Geometry::Type boundary_type, int *boundary_attributes, int num_boundary_elements, int dimension, int space_dimension=-1)
 Construct a Mesh from the given primary data.
 
 Mesh (int Dim_, int NVert, int NElem, int NBdrElem=0, int spaceDim_=-1)
 Init constructor: begin the construction of a Mesh object.
 
 Mesh (const std::string &filename, int generate_edges=0, int refine=1, bool fix_orientation=true)
 
 Mesh (std::istream &input, int generate_edges=0, int refine=1, bool fix_orientation=true)
 
 Mesh (Mesh *mesh_array[], int num_pieces)
 
void Swap (Mesh &other, bool non_geometry)
 
void Clear ()
 Clear the contents of the Mesh.
 
virtual ~Mesh ()
 Destroys Mesh.
 
ElementNewElement (int geom)
 
int AddVertex (real_t x, real_t y=0.0, real_t z=0.0)
 
int AddVertex (const real_t *coords)
 
int AddVertex (const Vector &coords)
 
void AddVertexParents (int i, int p1, int p2)
 Mark vertex i as nonconforming, with parent vertices p1 and p2.
 
int AddVertexAtMeanCenter (const int *vi, const int nverts, int dim=3)
 
int AddSegment (int v1, int v2, int attr=1)
 Adds a segment to the mesh given by 2 vertices v1 and v2.
 
int AddSegment (const int *vi, int attr=1)
 Adds a segment to the mesh given by 2 vertices vi.
 
int AddTriangle (int v1, int v2, int v3, int attr=1)
 Adds a triangle to the mesh given by 3 vertices v1 through v3.
 
int AddTriangle (const int *vi, int attr=1)
 Adds a triangle to the mesh given by 3 vertices vi.
 
int AddTri (const int *vi, int attr=1)
 Adds a triangle to the mesh given by 3 vertices vi.
 
int AddQuad (int v1, int v2, int v3, int v4, int attr=1)
 Adds a quadrilateral to the mesh given by 4 vertices v1 through v4.
 
int AddQuad (const int *vi, int attr=1)
 Adds a quadrilateral to the mesh given by 4 vertices vi.
 
int AddTet (int v1, int v2, int v3, int v4, int attr=1)
 Adds a tetrahedron to the mesh given by 4 vertices v1 through v4.
 
int AddTet (const int *vi, int attr=1)
 Adds a tetrahedron to the mesh given by 4 vertices vi.
 
int AddWedge (int v1, int v2, int v3, int v4, int v5, int v6, int attr=1)
 Adds a wedge to the mesh given by 6 vertices v1 through v6.
 
int AddWedge (const int *vi, int attr=1)
 Adds a wedge to the mesh given by 6 vertices vi.
 
int AddPyramid (int v1, int v2, int v3, int v4, int v5, int attr=1)
 Adds a pyramid to the mesh given by 5 vertices v1 through v5.
 
int AddPyramid (const int *vi, int attr=1)
 Adds a pyramid to the mesh given by 5 vertices vi.
 
int AddHex (int v1, int v2, int v3, int v4, int v5, int v6, int v7, int v8, int attr=1)
 Adds a hexahedron to the mesh given by 8 vertices v1 through v8.
 
int AddHex (const int *vi, int attr=1)
 Adds a hexahedron to the mesh given by 8 vertices vi.
 
void AddHexAsTets (const int *vi, int attr=1)
 Adds 6 tetrahedrons to the mesh by splitting a hexahedron given by 8 vertices vi.
 
void AddHexAsWedges (const int *vi, int attr=1)
 Adds 2 wedges to the mesh by splitting a hexahedron given by 8 vertices vi.
 
void AddHexAsPyramids (const int *vi, int attr=1)
 Adds 6 pyramids to the mesh by splitting a hexahedron given by 8 vertices vi.
 
void AddHexAs24TetsWithPoints (int *vi, std::map< std::array< int, 4 >, int > &hex_face_verts, int attr=1)
 Adds 24 tetrahedrons to the mesh by splitting a hexahedron.
 
void AddQuadAs4TrisWithPoints (int *vi, int attr=1)
 Adds 4 triangles to the mesh by splitting a quadrilateral given by 4 vertices vi.
 
void AddQuadAs5QuadsWithPoints (int *vi, int attr=1)
 Adds 5 quadrilaterals to the mesh by splitting a quadrilateral given by 4 vertices vi.
 
int AddElement (Element *elem)
 
int AddBdrElement (Element *elem)
 
int AddBdrSegment (int v1, int v2, int attr=1)
 
int AddBdrSegment (const int *vi, int attr=1)
 
int AddBdrTriangle (int v1, int v2, int v3, int attr=1)
 
int AddBdrTriangle (const int *vi, int attr=1)
 
int AddBdrQuad (int v1, int v2, int v3, int v4, int attr=1)
 
int AddBdrQuad (const int *vi, int attr=1)
 
void AddBdrQuadAsTriangles (const int *vi, int attr=1)
 
int AddBdrPoint (int v, int attr=1)
 
void FinalizeTriMesh (int generate_edges=0, int refine=0, bool fix_orientation=true)
 Finalize the construction of a triangular Mesh.
 
void FinalizeQuadMesh (int generate_edges=0, int refine=0, bool fix_orientation=true)
 Finalize the construction of a quadrilateral Mesh.
 
void FinalizeTetMesh (int generate_edges=0, int refine=0, bool fix_orientation=true)
 Finalize the construction of a tetrahedral Mesh.
 
void FinalizeWedgeMesh (int generate_edges=0, int refine=0, bool fix_orientation=true)
 Finalize the construction of a wedge Mesh.
 
void FinalizeHexMesh (int generate_edges=0, int refine=0, bool fix_orientation=true)
 Finalize the construction of a hexahedral Mesh.
 
void FinalizeMesh (int refine=0, bool fix_orientation=true)
 Finalize the construction of any type of Mesh.
 
void FinalizeTopology (bool generate_bdr=true)
 Finalize the construction of the secondary topology (connectivity) data of a Mesh.
 
int CheckElementOrientation (bool fix_it=true)
 Check (and optionally attempt to fix) the orientation of the elements.
 
int CheckBdrElementOrientation (bool fix_it=true)
 Check the orientation of the boundary elements.
 
void RemoveUnusedVertices ()
 Remove unused vertices and rebuild mesh connectivity.
 
void RemoveInternalBoundaries ()
 
real_t GetGeckoElementOrdering (Array< int > &ordering, int iterations=4, int window=4, int period=2, int seed=0, bool verbose=false, real_t time_limit=0)
 
void GetHilbertElementOrdering (Array< int > &ordering)
 
void ReorderElements (const Array< int > &ordering, bool reorder_vertices=true)
 
MFEM_DEPRECATED Mesh (int nx, int ny, int nz, Element::Type type, bool generate_edges=false, real_t sx=1.0, real_t sy=1.0, real_t sz=1.0, bool sfc_ordering=true)
 Deprecated: see MakeCartesian3D.
 
MFEM_DEPRECATED Mesh (int nx, int ny, Element::Type type, bool generate_edges=false, real_t sx=1.0, real_t sy=1.0, bool sfc_ordering=true)
 Deprecated: see MakeCartesian2D.
 
MFEM_DEPRECATED Mesh (int n, real_t sx=1.0)
 Deprecated: see MakeCartesian1D.
 
MFEM_DEPRECATED Mesh (Mesh *orig_mesh, int ref_factor, int ref_type)
 Deprecated: see MakeRefined.
 
int Dimension () const
 Dimension of the reference space used within the elements.
 
int SpaceDimension () const
 Dimension of the physical space containing the mesh.
 
int EulerNumber () const
 Equals 1 + num_holes - num_loops.
 
int EulerNumber2D () const
 Equals 1 - num_holes.
 
int MeshGenerator () const
 Get the mesh generator/type.
 
bool HasGeometry (Geometry::Type geom) const
 Return true iff the given geom is encountered in the mesh. Geometries of dimensions lower than Dimension() are counted as well.
 
int GetNumGeometries (int dim) const
 Return the number of geometries of the given dimension present in the mesh.
 
void GetGeometries (int dim, Array< Geometry::Type > &el_geoms) const
 Return all element geometries of the given dimension present in the mesh.
 
void GetBoundingBox (Vector &min, Vector &max, int ref=2)
 Returns the minimum and maximum corners of the mesh bounding box.
 
void GetCharacteristics (real_t &h_min, real_t &h_max, real_t &kappa_min, real_t &kappa_max, Vector *Vh=NULL, Vector *Vk=NULL)
 
int GetNV () const
 Returns number of vertices. Vertices are only at the corners of elements, where you would expect them in the lowest-order mesh.
 
int GetNE () const
 Returns number of elements.
 
int GetNBE () const
 Returns number of boundary elements.
 
int GetNEdges () const
 Return the number of edges.
 
int GetNFaces () const
 Return the number of faces in a 3D mesh.
 
int GetNumFaces () const
 Return the number of faces (3D), edges (2D) or vertices (1D).
 
int GetNumFacesWithGhost () const
 Return the number of faces (3D), edges (2D) or vertices (1D) including ghost faces.
 
long long GetGlobalNE () const
 Return the total (global) number of elements.
 
const real_tGetVertex (int i) const
 Return pointer to vertex i's coordinates.
 
real_tGetVertex (int i)
 Return pointer to vertex i's coordinates.
 
const ElementGetElement (int i) const
 Return pointer to the i'th element object.
 
ElementGetElement (int i)
 Return pointer to the i'th element object.
 
const ElementGetBdrElement (int i) const
 Return pointer to the i'th boundary element object.
 
ElementGetBdrElement (int i)
 Return pointer to the i'th boundary element object.
 
const ElementGetFace (int i) const
 Return pointer to the i'th face element object.
 
const Element *const * GetElementsArray () const
 
void GetElementData (int geom, Array< int > &elem_vtx, Array< int > &attr) const
 
void GetBdrElementData (int geom, Array< int > &bdr_elem_vtx, Array< int > &bdr_attr) const
 
int GetAttribute (int i) const
 Return the attribute of element i.
 
void SetAttribute (int i, int attr)
 Set the attribute of element i.
 
int GetBdrAttribute (int i) const
 Return the attribute of boundary element i.
 
void SetBdrAttribute (int i, int attr)
 Set the attribute of boundary element i.
 
int GetPatchAttribute (int i) const
 Return the attribute of patch i, for a NURBS mesh.
 
void SetPatchAttribute (int i, int attr)
 Set the attribute of patch i, for a NURBS mesh.
 
int GetPatchBdrAttribute (int i) const
 Return the attribute of patch boundary element i, for a NURBS mesh.
 
void SetPatchBdrAttribute (int i, int attr)
 Set the attribute of patch boundary element i, for a NURBS mesh.
 
Element::Type GetElementType (int i) const
 Returns the type of element i.
 
Element::Type GetBdrElementType (int i) const
 Returns the type of boundary element i.
 
MFEM_DEPRECATED Geometry::Type GetFaceGeometryType (int Face) const
 Deprecated in favor of Mesh::GetFaceGeometry.
 
Element::Type GetFaceElementType (int Face) const
 
Geometry::Type GetFaceGeometry (int i) const
 Return the Geometry::Type associated with face i.
 
Geometry::Type GetElementGeometry (int i) const
 
Geometry::Type GetBdrElementGeometry (int i) const
 
MFEM_DEPRECATED Geometry::Type GetFaceBaseGeometry (int i) const
 Deprecated in favor of Mesh::GetFaceGeometry.
 
Geometry::Type GetElementBaseGeometry (int i) const
 
Geometry::Type GetBdrElementBaseGeometry (int i) const
 
bool FaceIsInterior (int FaceNo) const
 Return true if the given face is interior.
 
real_t GetElementSize (int i, int type=0)
 Get the size of the i-th element relative to the perfect reference element.
 
real_t GetElementSize (int i, const Vector &dir)
 
real_t GetElementSize (ElementTransformation *T, int type=0) const
 
real_t GetElementVolume (int i)
 
void GetElementCenter (int i, Vector &center)
 
void GetElementJacobian (int i, DenseMatrix &J, const IntegrationPoint *ip=NULL)
 
void GetElementVertices (int i, Array< int > &v) const
 Returns the indices of the vertices of element i.
 
void GetBdrElementVertices (int i, Array< int > &v) const
 Returns the indices of the vertices of boundary element i.
 
void GetElementEdges (int i, Array< int > &edges, Array< int > &cor) const
 Return the indices and the orientations of all edges of element i.
 
void GetBdrElementEdges (int i, Array< int > &edges, Array< int > &cor) const
 Return the indices and the orientations of all edges of bdr element i.
 
void GetFaceEdges (int i, Array< int > &edges, Array< int > &o) const
 
void GetFaceVertices (int i, Array< int > &vert) const
 Returns the indices of the vertices of face i.
 
void GetEdgeVertices (int i, Array< int > &vert) const
 Returns the indices of the vertices of edge i.
 
void GetElementFaces (int i, Array< int > &faces, Array< int > &ori) const
 Return the indices and the orientations of all faces of element i.
 
Array< int > FindFaceNeighbors (const int elem) const
 Returns the sorted, unique indices of elements sharing a face with element elem, including elem.
 
void GetBdrElementFace (int i, int *f, int *o) const
 
void GetBdrElementAdjacentElement (int bdr_el, int &el, int &info) const
 For the given boundary element, bdr_el, return its adjacent element and its info, i.e. 64*local_bdr_index+bdr_orientation.
 
MFEM_DEPRECATED void GetBdrElementAdjacentElement2 (int bdr_el, int &el, int &info) const
 Deprecated.
 
int GetBdrElementFaceIndex (int be_idx) const
 Return the local face (codimension-1) index for the given boundary element index.
 
MFEM_DEPRECATED int GetBdrFace (int i) const
 Deprecated in favor of GetBdrElementFaceIndex().
 
MFEM_DEPRECATED int GetBdrElementEdgeIndex (int i) const
 
TableGetVertexToElementTable ()
 
TableGetFaceToElementTable () const
 
TableGetFaceEdgeTable () const
 
TableGetEdgeVertexTable () const
 
void GetVertexToVertexTable (DSTable &) const
 
const TableElementToElementTable ()
 
const TableElementToFaceTable () const
 
const TableElementToEdgeTable () const
 
Array< int > GetFaceToBdrElMap () const
 
void GetElementTransformation (int i, IsoparametricTransformation *ElTr) const
 Builds the transformation defining the i-th element in ElTr. ElTr must be allocated in advance and will be owned by the caller.
 
ElementTransformationGetElementTransformation (int i)
 Returns a pointer to the transformation defining the i-th element.
 
void GetElementTransformation (int i, const Vector &nodes, IsoparametricTransformation *ElTr) const
 Builds the transformation defining the i-th element in ElTr assuming position of the vertices/nodes are given by nodes. ElTr must be allocated in advance and will be owned by the caller.
 
ElementTransformationGetBdrElementTransformation (int i)
 Returns a pointer to the transformation defining the i-th boundary element.
 
void GetBdrElementTransformation (int i, IsoparametricTransformation *ElTr) const
 Builds the transformation defining the i-th boundary element in ElTr. ElTr must be allocated in advance and will be owned by the caller.
 
ElementTransformationGetFaceTransformation (int FaceNo)
 Returns a pointer to the transformation defining the given face element.
 
void GetFaceTransformation (int i, IsoparametricTransformation *FTr) const
 Builds the transformation defining the i-th face element in FTr. FTr must be allocated in advance and will be owned by the caller.
 
void GetLocalFaceTransformation (int face_type, int elem_type, IsoparametricTransformation &Transf, int info) const
 A helper method that constructs a transformation from the reference space of a face to the reference space of an element.
 
void GetEdgeTransformation (int i, IsoparametricTransformation *EdTr) const
 Builds the transformation defining the i-th edge element in EdTr. EdTr must be allocated in advance and will be owned by the caller.
 
ElementTransformationGetEdgeTransformation (int EdgeNo)
 Returns a pointer to the transformation defining the given edge element.
 
FaceElementTransformationsGetInteriorFaceTransformations (int FaceNo)
 See GetFaceElementTransformations().
 
void GetInteriorFaceTransformations (int FaceNo, FaceElementTransformations &FElTr, IsoparametricTransformation &ElTr1, IsoparametricTransformation &ElTr2) const
 Variant of GetInteriorFaceTransformations using a user allocated FaceElementTransformations object.
 
FaceElementTransformationsGetBdrFaceTransformations (int BdrElemNo)
 Builds the transformation defining the given boundary face.
 
void GetBdrFaceTransformations (int BdrElemNo, FaceElementTransformations &FElTr, IsoparametricTransformation &ElTr1, IsoparametricTransformation &ElTr2) const
 Variant of GetBdrFaceTransformations using a user allocated FaceElementTransformations object.
 
const GeometricFactorsGetGeometricFactors (const IntegrationRule &ir, const int flags, MemoryType d_mt=MemoryType::DEFAULT)
 Return the mesh geometric factors corresponding to the given integration rule.
 
const FaceGeometricFactorsGetFaceGeometricFactors (const IntegrationRule &ir, const int flags, FaceType type, MemoryType d_mt=MemoryType::DEFAULT)
 Return the mesh geometric factors for the faces corresponding to the given integration rule.
 
void DeleteGeometricFactors ()
 Destroy all GeometricFactors stored by the Mesh.
 
void GetPointMatrix (int i, DenseMatrix &pointmat) const
 
void GetBdrPointMatrix (int i, DenseMatrix &pointmat) const
 
FaceInformation GetFaceInformation (int f) const
 
void GetFaceElements (int Face, int *Elem1, int *Elem2) const
 
void GetFaceInfos (int Face, int *Inf1, int *Inf2) const
 
void GetFaceInfos (int Face, int *Inf1, int *Inf2, int *NCFace) const
 
int * CartesianPartitioning (int nxyz[])
 
int * GeneratePartitioning (int nparts, int part_method=1)
 
void CheckPartitioning (int *partitioning_)
 
void MoveVertices (const Vector &displacements)
 
void GetVertices (Vector &vert_coord) const
 
void SetVertices (const Vector &vert_coord)
 
void ChangeVertexDataOwnership (real_t *vertices, int len_vertices, bool zerocopy=false)
 Set the internal Vertex array to point to the given vertices array without assuming ownership of the pointer.
 
void GetNode (int i, real_t *coord) const
 
void SetNode (int i, const real_t *coord)
 
void MoveNodes (const Vector &displacements)
 
void GetNodes (Vector &node_coord) const
 
void SetNodes (const Vector &node_coord)
 Updates the vertex/node locations. Invokes NodesUpdated().
 
void ScaleSubdomains (real_t sf)
 
void ScaleElements (real_t sf)
 
void Transform (void(*f)(const Vector &, Vector &))
 
void Transform (VectorCoefficient &deformation)
 
void NodesUpdated ()
 This function should be called after the mesh node coordinates have been updated externally, e.g. by modifying the internal nodal GridFunction returned by GetNodes().
 
GridFunctionGetNodes ()
 Return a pointer to the internal node GridFunction (may be NULL).
 
const GridFunctionGetNodes () const
 
bool OwnsNodes () const
 Return the mesh nodes ownership flag.
 
void SetNodesOwner (bool nodes_owner)
 Set the mesh nodes ownership flag.
 
void NewNodes (GridFunction &nodes, bool make_owner=false)
 Replace the internal node GridFunction with the given GridFunction.
 
void SwapNodes (GridFunction *&nodes, int &own_nodes_)
 Swap the internal node GridFunction pointer and ownership flag members with the given ones.
 
void GetNodes (GridFunction &nodes) const
 Return the mesh nodes/vertices projected on the given GridFunction.
 
void SetNodalGridFunction (GridFunction *nodes, bool make_owner=false)
 
const FiniteElementSpaceGetNodalFESpace () const
 
void EnsureNodes ()
 Make sure that the mesh has valid nodes, i.e. its geometry is described by a vector finite element grid function (even if it is a low-order mesh with straight edges).
 
void UniformRefinement (int ref_algo=0)
 Refine all mesh elements.
 
void NURBSCoarsening (int cf=2, real_t tol=1.0e-12)
 
void GeneralRefinement (const Array< Refinement > &refinements, int nonconforming=-1, int nc_limit=0)
 
void GeneralRefinement (const Array< int > &el_to_refine, int nonconforming=-1, int nc_limit=0)
 
void RandomRefinement (real_t prob, bool aniso=false, int nonconforming=-1, int nc_limit=0)
 Refine each element with given probability. Uses GeneralRefinement.
 
void RefineAtVertex (const Vertex &vert, real_t eps=0.0, int nonconforming=-1)
 Refine elements sharing the specified vertex. Uses GeneralRefinement.
 
bool RefineByError (const Array< real_t > &elem_error, real_t threshold, int nonconforming=-1, int nc_limit=0)
 
bool RefineByError (const Vector &elem_error, real_t threshold, int nonconforming=-1, int nc_limit=0)
 
bool DerefineByError (Array< real_t > &elem_error, real_t threshold, int nc_limit=0, int op=1)
 
bool DerefineByError (const Vector &elem_error, real_t threshold, int nc_limit=0, int op=1)
 Same as DerefineByError for an error vector.
 
void EnsureNCMesh (bool simplices_nonconforming=false)
 
bool Conforming () const
 
bool Nonconforming () const
 
const CoarseFineTransformationsGetRefinementTransforms () const
 
Operation GetLastOperation () const
 Return type of last modification of the mesh.
 
long GetSequence () const
 
long GetNodesSequence () const
 Return the nodes update counter.
 
void RefineNURBSFromFile (std::string ref_file)
 
void KnotInsert (Array< KnotVector * > &kv)
 For NURBS meshes, insert the new knots in kv, for each direction.
 
void KnotInsert (Array< Vector * > &kv)
 For NURBS meshes, insert the knots in kv, for each direction.
 
void KnotRemove (Array< Vector * > &kv)
 For NURBS meshes, remove the knots in kv, for each direction.
 
void DegreeElevate (int rel_degree, int degree=16)
 
std::vector< int > CreatePeriodicVertexMapping (const std::vector< Vector > &translations, real_t tol=1e-8) const
 Creates a mapping v2v from the vertex indices of the mesh such that coincident vertices under the given translations are identified.
 
void GetGeometricParametersFromJacobian (const DenseMatrix &J, real_t &volume, Vector &aspr, Vector &skew, Vector &ori) const
 Computes geometric parameters associated with a Jacobian matrix in 2D/3D. These parameters are (1) Area/Volume, (2) Aspect-ratio (1 in 2D, and 2 non-dimensional and 2 dimensional parameters in 3D. Dimensional parameters are used for target construction in TMOP), (3) skewness (1 in 2D and 3 in 3D), and finally (4) orientation (1 in 2D and 3 in 3D).
 
void GetElementColoring (Array< int > &colors, int el0=0)
 
void MesquiteSmooth (const int mesquite_option=0)
 
void CheckDisplacements (const Vector &displacements, real_t &tmax)
 
void PrintVTK (std::ostream &os)
 
void PrintVTK (std::ostream &os, int ref, int field_data=0)
 
void PrintVTU (std::ostream &os, int ref=1, VTKFormat format=VTKFormat::ASCII, bool high_order_output=false, int compression_level=0, bool bdr_elements=false)
 
void PrintBdrVTU (std::string fname, VTKFormat format=VTKFormat::ASCII, bool high_order_output=false, int compression_level=0)
 
void PrintWithPartitioning (int *partitioning, std::ostream &os, int elem_attr=0) const
 Prints the mesh with boundary elements given by the boundary of the subdomains, so that the boundary of subdomain i has boundary attribute i+1.
 
void PrintElementsWithPartitioning (int *partitioning, std::ostream &os, int interior_faces=0)
 
void PrintSurfaces (const Table &Aface_face, std::ostream &os) const
 Print set of disjoint surfaces:
 
void PrintCharacteristics (Vector *Vh=NULL, Vector *Vk=NULL, std::ostream &os=mfem::out)
 Compute and print mesh characteristics such as number of vertices, number of elements, number of boundary elements, minimal and maximal element sizes, minimal and maximal element aspect ratios, etc.
 
void DebugDump (std::ostream &os) const
 Output an NCMesh-compatible debug dump.
 

Static Public Member Functions

static ParMesh MakeRefined (ParMesh &orig_mesh, int ref_factor, int ref_type)
 Create a uniformly refined (by any factor) version of orig_mesh.
 
static ParMesh MakeSimplicial (ParMesh &orig_mesh)
 
- Static Public Member Functions inherited from mfem::Mesh
static FiniteElementGetTransformationFEforElementType (Element::Type)
 Return FiniteElement for reference element of the specified type.
 
static IntegrationPoint TransformBdrElementToFace (Geometry::Type geom, int o, const IntegrationPoint &ip)
 For the vertex (1D), edge (2D), or face (3D) of a boundary element with the orientation o, return the transformation of the boundary element integration point @ ip to the face element. In 2D, the the orientation is 0 or 1 as returned by GetBdrElementFace, not +/-1. Supports both internal and external boundaries.
 
static int DecodeFaceInfoOrientation (int info)
 Given a "face info int", return the face orientation.
 
static int DecodeFaceInfoLocalIndex (int info)
 Given a "face info int", return the local face index.
 
static int EncodeFaceInfo (int local_face_index, int orientation)
 Given local_face_index and orientation, return the corresponding encoded "face info int".
 
static Mesh LoadFromFile (const std::string &filename, int generate_edges=0, int refine=1, bool fix_orientation=true)
 
static Mesh MakeCartesian1D (int n, real_t sx=1.0)
 Creates 1D mesh, divided into n equal intervals.
 
static Mesh MakeCartesian2D (int nx, int ny, Element::Type type, bool generate_edges=false, real_t sx=1.0, real_t sy=1.0, bool sfc_ordering=true)
 Creates mesh for the rectangle [0,sx]x[0,sy], divided into nx*ny quadrilaterals if type = QUADRILATERAL or into 2*nx*ny triangles if type = TRIANGLE.
 
static Mesh MakeCartesian3D (int nx, int ny, int nz, Element::Type type, real_t sx=1.0, real_t sy=1.0, real_t sz=1.0, bool sfc_ordering=true)
 Creates a mesh for the parallelepiped [0,sx]x[0,sy]x[0,sz], divided into nx*ny*nz hexahedra if type = HEXAHEDRON or into 6*nx*ny*nz tetrahedrons if type = TETRAHEDRON.
 
static Mesh MakeCartesian3DWith24TetsPerHex (int nx, int ny, int nz, real_t sx=1.0, real_t sy=1.0, real_t sz=1.0)
 Creates a mesh for the parallelepiped [0,sx]x[0,sy]x[0,sz], divided into nx*ny*nz*24 tetrahedrons.
 
static Mesh MakeCartesian2DWith4TrisPerQuad (int nx, int ny, real_t sx=1.0, real_t sy=1.0)
 Creates mesh for the rectangle [0,sx]x[0,sy], divided into nx*ny*4 triangles.
 
static Mesh MakeCartesian2DWith5QuadsPerQuad (int nx, int ny, real_t sx=1.0, real_t sy=1.0)
 Creates mesh for the rectangle [0,sx]x[0,sy], divided into nx*ny*5 quadrilaterals.
 
static Mesh MakeRefined (Mesh &orig_mesh, int ref_factor, int ref_type)
 Create a refined (by any factor) version of orig_mesh.
 
static Mesh MakeRefined (Mesh &orig_mesh, const Array< int > &ref_factors, int ref_type)
 refined ref_factors[i] times in each dimension.
 
static Mesh MakeSimplicial (const Mesh &orig_mesh)
 
static Mesh MakePeriodic (const Mesh &orig_mesh, const std::vector< int > &v2v)
 Create a periodic mesh by identifying vertices of orig_mesh.
 
static void PrintElementsByGeometry (int dim, const Array< int > &num_elems_by_geom, std::ostream &os)
 Auxiliary method used by PrintCharacteristics().
 

Public Attributes

GroupTopology gtopo
 
bool have_face_nbr_data
 
Array< int > face_nbr_group
 
Array< int > face_nbr_elements_offset
 
Array< int > face_nbr_vertices_offset
 
Array< Element * > face_nbr_elements
 
Array< Vertexface_nbr_vertices
 
Table send_face_nbr_elements
 
Table send_face_nbr_vertices
 
ParNCMeshpncmesh
 
int * partitioning_cache = nullptr
 
- Public Attributes inherited from mfem::Mesh
Array< int > attributes
 A list of all unique element attributes used by the Mesh.
 
Array< int > bdr_attributes
 A list of all unique boundary attributes used by the Mesh.
 
AttributeSets attribute_sets
 Named sets of element attributes.
 
AttributeSets bdr_attribute_sets
 Named sets of boundary element attributes.
 
NURBSExtensionNURBSext
 Optional NURBS mesh extension.
 
NCMeshncmesh
 Optional nonconforming mesh extension.
 
Array< GeometricFactors * > geom_factors
 Optional geometric factors.
 
Array< FaceGeometricFactors * > face_geom_factors
 

Protected Member Functions

void ComputeGlobalElementOffset () const
 
 ParMesh (const ParNCMesh &pncmesh)
 Create from a nonconforming mesh.
 
void ReduceMeshGen ()
 
void FinalizeParTopo ()
 
void MarkTetMeshForRefinement (const DSTable &v_to_v) override
 
int GetEdgeSplittings (Element *edge, const DSTable &v_to_v, int *middle)
 Return a number(0-1) identifying how the given edge has been split.
 
void GetFaceSplittings (const int *fv, const HashTable< Hashed2 > &v_to_v, Array< unsigned > &codes)
 Append codes identifying how the given face has been split to codes.
 
bool DecodeFaceSplittings (HashTable< Hashed2 > &v_to_v, const int *v, const Array< unsigned > &codes, int &pos)
 
void BuildFaceNbrElementToFaceTable ()
 
template<int N>
void AddTriFaces (const Array< int > &v, const std::unique_ptr< STable3D > &faces, const std::unique_ptr< STable3D > &shared_faces, int elem, int start, int end, const int fverts[][N])
 Helper function for adding triangle face neighbor element to face table entries. Have to use a template here rather than lambda capture because the FaceVert entries in Geometry have inner size of 3 for tets and 4 for everything else.
 
void GetGhostFaceTransformation (FaceElementTransformations &FElTr, Element::Type face_type, Geometry::Type face_geom) const
 
void GetGhostFaceTransformation (FaceElementTransformations *FElTr, Element::Type face_type, Geometry::Type face_geom) const
 
void RefineGroups (const DSTable &v_to_v, int *middle)
 Update the groups after triangle refinement.
 
void RefineGroups (int old_nv, const HashTable< Hashed2 > &v_to_v)
 Update the groups after tetrahedron refinement.
 
void UniformRefineGroups2D (int old_nv)
 
void UniformRefineGroups3D (int old_nv, int old_nedges, const DSTable &old_v_to_v, const STable3D &old_faces, Array< int > *f2qf)
 
void ExchangeFaceNbrData (Table *gr_sface, int *s2l_face)
 
void UniformRefinement2D () override
 Refine a mixed 2D mesh uniformly.
 
void UniformRefinement3D () override
 Refine a mixed 3D mesh uniformly.
 
void NURBSUniformRefinement (int rf=2, real_t tol=1.0e-12) override
 Refine NURBS mesh, with an optional refinement factor.
 
void NURBSUniformRefinement (const Array< int > &rf, real_t tol=1.e-12) override
 
void LocalRefinement (const Array< int > &marked_el, int type=3) override
 This function is not public anymore. Use GeneralRefinement instead.
 
void NonconformingRefinement (const Array< Refinement > &refinements, int nc_limit=0) override
 This function is not public anymore. Use GeneralRefinement instead.
 
bool NonconformingDerefinement (Array< real_t > &elem_error, real_t threshold, int nc_limit=0, int op=1) override
 NC version of GeneralDerefinement.
 
void RebalanceImpl (const Array< int > *partition)
 
void DeleteFaceNbrData ()
 
bool WantSkipSharedMaster (const NCMesh::Master &master) const
 
int BuildLocalVertices (const Mesh &global_mesh, const int *partitioning, Array< int > &vert_global_local)
 Fills out partitioned Mesh::vertices.
 
int BuildLocalElements (const Mesh &global_mesh, const int *partitioning, const Array< int > &vert_global_local)
 Fills out partitioned Mesh::elements.
 
int BuildLocalBoundary (const Mesh &global_mesh, const int *partitioning, const Array< int > &vert_global_local, Array< bool > &activeBdrElem, Table *&edge_element)
 Fills out partitioned Mesh::boundary.
 
void FindSharedFaces (const Mesh &mesh, const int *partition, Array< int > &face_group, ListOfIntegerSets &groups)
 
int FindSharedEdges (const Mesh &mesh, const int *partition, Table *&edge_element, ListOfIntegerSets &groups)
 
int FindSharedVertices (const int *partition, Table *vertex_element, ListOfIntegerSets &groups)
 
void BuildFaceGroup (int ngroups, const Mesh &mesh, const Array< int > &face_group, int &nstria, int &nsquad)
 
void BuildEdgeGroup (int ngroups, const Table &edge_element)
 
void BuildVertexGroup (int ngroups, const Table &vert_element)
 
void BuildSharedFaceElems (int ntri_faces, int nquad_faces, const Mesh &mesh, int *partitioning, const STable3D *faces_tbl, const Array< int > &face_group, const Array< int > &vert_global_local)
 
void BuildSharedEdgeElems (int nedges, Mesh &mesh, const Array< int > &vert_global_local, const Table *edge_element)
 
void BuildSharedVertMapping (int nvert, const Table *vert_element, const Array< int > &vert_global_local)
 
void GetSharedEdgeCommunicator (int ordering, GroupCommunicator &sedge_comm) const
 Get the shared edges GroupCommunicator.
 
void GetSharedVertexCommunicator (int ordering, GroupCommunicator &svert_comm) const
 Get the shared vertices GroupCommunicator.
 
void GetSharedQuadCommunicator (int ordering, GroupCommunicator &squad_comm) const
 Get the shared face quadrilaterals GroupCommunicator.
 
void GetSharedTriCommunicator (int ordering, GroupCommunicator &stria_comm) const
 Get the shared face triangles GroupCommunicator.
 
STable3DGetSharedFacesTable ()
 
void DistributeAttributes (Array< int > &attr)
 Ensure that bdr_attributes and attributes agree across processors.
 
void LoadSharedEntities (std::istream &input)
 
void EnsureParNodes ()
 If the mesh is curved, make sure 'Nodes' is ParGridFunction.
 
void MakeRefined_ (ParMesh &orig_mesh, int ref_factor, int ref_type)
 Internal function used in ParMesh::MakeRefined (and related constructor)
 
void Destroy ()
 
void Swap (Mesh &other, bool non_geometry)
 
- Protected Member Functions inherited from mfem::Mesh
void Init ()
 
void InitTables ()
 
void SetEmpty ()
 
void DestroyTables ()
 
void DeleteTables ()
 
void DestroyPointers ()
 
void Destroy ()
 
void ResetLazyData ()
 
ElementReadElementWithoutAttr (std::istream &input)
 
ElementReadElement (std::istream &input)
 
void ReadMFEMMesh (std::istream &input, int version, int &curved)
 
void ReadLineMesh (std::istream &input)
 
void ReadNetgen2DMesh (std::istream &input, int &curved)
 
void ReadNetgen3DMesh (std::istream &input)
 
void ReadTrueGridMesh (std::istream &input)
 
void CreateVTKMesh (const Vector &points, const Array< int > &cell_data, const Array< int > &cell_offsets, const Array< int > &cell_types, const Array< int > &cell_attributes, int &curved, int &read_gf, bool &finalize_topo)
 
void ReadVTKMesh (std::istream &input, int &curved, int &read_gf, bool &finalize_topo)
 
void ReadXML_VTKMesh (std::istream &input, int &curved, int &read_gf, bool &finalize_topo, const std::string &xml_prefix="")
 
void ReadNURBSMesh (std::istream &input, int &curved, int &read_gf, bool spacing=false)
 
void ReadInlineMesh (std::istream &input, bool generate_edges=false)
 
void ReadGmshMesh (std::istream &input, int &curved, int &read_gf)
 
void ReadCubit (const std::string &filename, int &curved, int &read_gf)
 Load a mesh from a Genesis file.
 
void SetMeshGen ()
 Determine the mesh generator bitmask meshgen, see MeshGenerator().
 
real_t GetLength (int i, int j) const
 Return the length of the segment from node i to node j.
 
void MarkForRefinement ()
 
void MarkTriMeshForRefinement ()
 
void GetEdgeOrdering (const DSTable &v_to_v, Array< int > &order)
 
virtual void MarkTetMeshForRefinement (const DSTable &v_to_v)
 
void PrepareNodeReorder (DSTable **old_v_to_v, Table **old_elem_vert)
 
void DoNodeReorder (DSTable *old_v_to_v, Table *old_elem_vert)
 
STable3DGetFacesTable ()
 
STable3DGetElementToFaceTable (int ret_ftbl=0)
 
void RedRefinement (int i, const DSTable &v_to_v, int *edge1, int *edge2, int *middle)
 
void GreenRefinement (int i, const DSTable &v_to_v, int *edge1, int *edge2, int *middle)
 
void Bisection (int i, const DSTable &, int *, int *, int *)
 Bisect a triangle: element with index i is bisected.
 
void Bisection (int i, HashTable< Hashed2 > &)
 Bisect a tetrahedron: element with index i is bisected.
 
void BdrBisection (int i, const HashTable< Hashed2 > &)
 Bisect a boundary triangle: boundary element with index i is bisected.
 
void UniformRefinement (int i, const DSTable &, int *, int *, int *)
 
void AverageVertices (const int *indexes, int n, int result)
 Averages the vertices with given indexes and saves the result in vertices[result].
 
void InitRefinementTransforms ()
 
int FindCoarseElement (int i)
 
void UpdateNodes ()
 Update the nodes of a curved mesh after the topological part of a Mesh::Operation, such as refinement, has been performed.
 
void SetVerticesFromNodes (const GridFunction *nodes)
 Helper to set vertex coordinates given a high-order curvature function.
 
void UniformRefinement2D_base (bool update_nodes=true)
 
virtual void UniformRefinement2D ()
 Refine a mixed 2D mesh uniformly.
 
void UniformRefinement3D_base (Array< int > *f2qf=NULL, DSTable *v_to_v_p=NULL, bool update_nodes=true)
 
virtual void UniformRefinement3D ()
 Refine a mixed 3D mesh uniformly.
 
virtual void LocalRefinement (const Array< int > &marked_el, int type=3)
 This function is not public anymore. Use GeneralRefinement instead.
 
virtual void NonconformingRefinement (const Array< Refinement > &refinements, int nc_limit=0)
 This function is not public anymore. Use GeneralRefinement instead.
 
virtual bool NonconformingDerefinement (Array< real_t > &elem_error, real_t threshold, int nc_limit=0, int op=1)
 NC version of GeneralDerefinement.
 
real_t AggregateError (const Array< real_t > &elem_error, const int *fine, int nfine, int op)
 Derefinement helper.
 
void LoadPatchTopo (std::istream &input, Array< int > &edge_to_knot)
 Read NURBS patch/macro-element mesh.
 
void UpdateNURBS ()
 
void PrintTopo (std::ostream &os, const Array< int > &e_to_k, const int version, const std::string &comment="") const
 Write the beginning of a NURBS mesh to os, specifying the NURBS patch topology. Optional file comments can be provided in comments.
 
void GetLocalPtToSegTransformation (IsoparametricTransformation &, int i) const
 Used in GetFaceElementTransformations (...)
 
void GetLocalSegToTriTransformation (IsoparametricTransformation &loc, int i) const
 
void GetLocalSegToQuadTransformation (IsoparametricTransformation &loc, int i) const
 
void GetLocalTriToTetTransformation (IsoparametricTransformation &loc, int i) const
 
void GetLocalTriToWdgTransformation (IsoparametricTransformation &loc, int i) const
 
void GetLocalTriToPyrTransformation (IsoparametricTransformation &loc, int i) const
 
void GetLocalQuadToHexTransformation (IsoparametricTransformation &loc, int i) const
 
void GetLocalQuadToWdgTransformation (IsoparametricTransformation &loc, int i) const
 
void GetLocalQuadToPyrTransformation (IsoparametricTransformation &loc, int i) const
 
void ApplyLocalSlaveTransformation (FaceElementTransformations &FT, const FaceInfo &fi, bool is_ghost) const
 
bool IsSlaveFace (const FaceInfo &fi) const
 
int GetElementToEdgeTable (Table &)
 
void AddPointFaceElement (int lf, int gf, int el)
 Used in GenerateFaces()
 
void AddSegmentFaceElement (int lf, int gf, int el, int v0, int v1)
 
void AddTriangleFaceElement (int lf, int gf, int el, int v0, int v1, int v2)
 
void AddQuadFaceElement (int lf, int gf, int el, int v0, int v1, int v2, int v3)
 
bool FaceIsTrueInterior (int FaceNo) const
 
void FreeElement (Element *E)
 
void GenerateFaces ()
 
void GenerateNCFaceInfo ()
 
void InitMesh (int Dim_, int spaceDim_, int NVert, int NElem, int NBdrElem)
 Begin construction of a mesh.
 
void FinalizeCheck ()
 
void Loader (std::istream &input, int generate_edges=0, std::string parse_tag="")
 
void Printer (std::ostream &os=mfem::out, std::string section_delimiter="", const std::string &comments="") const
 
void Make3D (int nx, int ny, int nz, Element::Type type, real_t sx, real_t sy, real_t sz, bool sfc_ordering)
 Creates a mesh for the parallelepiped [0,sx]x[0,sy]x[0,sz], divided into nx*ny*nz hexahedra if type = HEXAHEDRON or into 6*nx*ny*nz tetrahedrons if type = TETRAHEDRON.
 
void Make3D24TetsFromHex (int nx, int ny, int nz, real_t sx, real_t sy, real_t sz)
 Creates a mesh for the parallelepiped [0,sx]x[0,sy]x[0,sz], divided into nx*ny*nz*24 tetrahedrons.
 
void Make2D4TrisFromQuad (int nx, int ny, real_t sx, real_t sy)
 Creates mesh for the rectangle [0,sx]x[0,sy], divided into nx*ny*4 triangles.
 
void Make2D5QuadsFromQuad (int nx, int ny, real_t sx, real_t sy)
 Creates mesh for the rectangle [0,sx]x[0,sy], divided into nx*ny*5 quadrilaterals.
 
void Make2D (int nx, int ny, Element::Type type, real_t sx, real_t sy, bool generate_edges, bool sfc_ordering)
 Creates mesh for the rectangle [0,sx]x[0,sy], divided into nx*ny quadrilaterals if type = QUADRILATERAL or into 2*nx*ny triangles if type = TRIANGLE.
 
void Make1D (int n, real_t sx=1.0)
 
void MakeRefined_ (Mesh &orig_mesh, const Array< int > &ref_factors, int ref_type)
 Internal function used in Mesh::MakeRefined.
 
void InitFromNCMesh (const NCMesh &ncmesh)
 Initialize vertices/elements/boundary/tables from a nonconforming mesh.
 
 Mesh (const NCMesh &ncmesh)
 Create from a nonconforming mesh.
 
void GetElementData (const Array< Element * > &elem_array, int geom, Array< int > &elem_vtx, Array< int > &attr) const
 
void MakeSimplicial_ (const Mesh &orig_mesh, int *vglobal)
 

Protected Attributes

MPI_Comm MyComm
 
int NRanks
 
int MyRank
 
Array< Element * > shared_edges
 
Array< Vert3shared_trias
 
Array< Vert4shared_quads
 
Table group_svert
 Shared objects in each group.
 
Table group_sedge
 
Table group_stria
 
Table group_squad
 
Array< int > svert_lvert
 Shared to local index mapping.
 
Array< int > sedge_ledge
 
Array< int > sface_lface
 
std::unique_ptr< Tableface_nbr_el_to_face
 
std::unique_ptr< Tableface_nbr_el_ori
 orientations for each face (from nbr processor)
 
long long glob_elem_offset
 
long glob_offset_sequence
 
bool print_shared = true
 
- Protected Attributes inherited from mfem::Mesh
int Dim
 
int spaceDim
 
int NumOfVertices
 
int NumOfElements
 
int NumOfBdrElements
 
int NumOfEdges
 
int NumOfFaces
 
int nbInteriorFaces
 
int nbBoundaryFaces
 
int meshgen
 
int mesh_geoms
 
long sequence
 
long nodes_sequence
 Counter for geometric factor invalidation.
 
Array< Element * > elements
 
Array< Vertexvertices
 
Array< Element * > boundary
 
Array< Element * > faces
 
Array< FaceInfofaces_info
 
Array< NCFaceInfonc_faces_info
 
Tableel_to_edge
 
Tableel_to_face
 
Tableel_to_el
 
Array< int > be_to_face
 
Tablebel_to_edge
 
Tableface_to_elem
 
Tableface_edge
 
Tableedge_vertex
 
IsoparametricTransformation Transformation
 
IsoparametricTransformation Transformation2
 
IsoparametricTransformation BdrTransformation
 
IsoparametricTransformation FaceTransformation
 
IsoparametricTransformation EdgeTransformation
 
FaceElementTransformations FaceElemTr
 
CoarseFineTransformations CoarseFineTr
 
GridFunctionNodes
 
int own_nodes
 
MemAlloc< Tetrahedron, 1024 > TetMemory
 
Array< Triple< int, int, int > > tmp_vertex_parents
 
Operation last_operation
 

Friends

class ParNCMesh
 
class ParSubMesh
 
class ParPumiMesh
 
class adios2stream
 

Additional Inherited Members

- Public Types inherited from mfem::Mesh
enum  Operation { NONE , REFINE , DEREFINE , REBALANCE }
 
enum class  FaceTopology { Boundary , Conforming , Nonconforming , NA }
 
enum class  ElementLocation { Local , FaceNbr , NA }
 
enum class  ElementConformity { Coincident , Superset , Subset , NA }
 
enum class  FaceInfoTag {
  Boundary , LocalConforming , LocalSlaveNonconforming , SharedConforming ,
  SharedSlaveNonconforming , MasterNonconforming , GhostSlave , GhostMaster
}
 
typedef Geometry::Constants< Geometry::SEGMENTseg_t
 
typedef Geometry::Constants< Geometry::TRIANGLEtri_t
 
typedef Geometry::Constants< Geometry::SQUAREquad_t
 
typedef Geometry::Constants< Geometry::TETRAHEDRONtet_t
 
typedef Geometry::Constants< Geometry::CUBEhex_t
 
typedef Geometry::Constants< Geometry::PRISMpri_t
 
typedef Geometry::Constants< Geometry::PYRAMIDpyr_t
 
- Static Public Attributes inherited from mfem::Mesh
static bool remove_unused_vertices = true
 
- Static Protected Member Functions inherited from mfem::Mesh
static void PrintElementWithoutAttr (const Element *el, std::ostream &os)
 
static void PrintElement (const Element *el, std::ostream &os)
 
static int GetTriOrientation (const int *base, const int *test)
 Returns the orientation of "test" relative to "base".
 
static int InvertTriOrientation (int ori)
 
static int ComposeTriOrientations (int ori_a_b, int ori_b_c)
 
static int GetQuadOrientation (const int *base, const int *test)
 Returns the orientation of "test" relative to "base".
 
static int InvertQuadOrientation (int ori)
 
static int ComposeQuadOrientations (int ori_a_b, int ori_b_c)
 
static int GetTetOrientation (const int *base, const int *test)
 Returns the orientation of "test" relative to "base".
 
static void GetElementArrayEdgeTable (const Array< Element * > &elem_array, const DSTable &v_to_v, Table &el_to_edge)
 
- Static Protected Attributes inherited from mfem::Mesh
static const int vtk_quadratic_tet [10]
 
static const int vtk_quadratic_pyramid [13]
 
static const int vtk_quadratic_wedge [18]
 
static const int vtk_quadratic_hex [27]
 

Detailed Description

Class for parallel meshes.

Definition at line 33 of file pmesh.hpp.

Constructor & Destructor Documentation

◆ ParMesh() [1/7]

mfem::ParMesh::ParMesh ( const ParNCMesh pncmesh)
protected

Create from a nonconforming mesh.

Definition at line 865 of file pmesh.cpp.

◆ ParMesh() [2/7]

mfem::ParMesh::ParMesh ( )
inline

Default constructor. Create an empty ParMesh.

Definition at line 335 of file pmesh.hpp.

◆ ParMesh() [3/7]

mfem::ParMesh::ParMesh ( MPI_Comm  comm,
Mesh mesh,
int *  partitioning_ = NULL,
int  part_method = 1 
)

Create a parallel mesh by partitioning a serial Mesh.

The mesh is partitioned automatically or using external partitioning data (the optional parameter 'partitioning_[i]' contains the desired MPI rank for element 'i'). Automatic partitioning uses METIS for conforming meshes and quick space-filling curve equipartitioning for nonconforming meshes (elements of nonconforming meshes should ideally be ordered as a sequence of face-neighbors).

Definition at line 106 of file pmesh.cpp.

◆ ParMesh() [4/7]

mfem::ParMesh::ParMesh ( const ParMesh pmesh,
bool  copy_nodes = true 
)
explicit

Copy constructor. Performs a deep copy of (almost) all data, so that the source mesh can be modified (e.g. deleted, refined) without affecting the new mesh. If 'copy_nodes' is false, use a shallow (pointer) copy for the nodes, if present.

Definition at line 31 of file pmesh.cpp.

◆ ParMesh() [5/7]

mfem::ParMesh::ParMesh ( MPI_Comm  comm,
std::istream &  input,
bool  refine = true,
int  generate_edges = 1,
bool  fix_orientation = true 
)

Read a parallel mesh, each MPI rank from its own file/stream.

The generate_edges parameter is passed to Mesh::Loader. The refine and fix_orientation parameters are passed to the method Mesh::Finalize().

Note
The order of arguments and their default values are different than for the Mesh class.

Definition at line 934 of file pmesh.cpp.

◆ ParMesh() [6/7]

mfem::ParMesh::ParMesh ( ParMesh orig_mesh,
int  ref_factor,
int  ref_type 
)

Deprecated: see ParMesh::MakeRefined.

Definition at line 1135 of file pmesh.cpp.

◆ ParMesh() [7/7]

mfem::ParMesh::ParMesh ( ParMesh &&  mesh)

Move constructor. Used for named constructors.

Definition at line 95 of file pmesh.cpp.

◆ ~ParMesh()

mfem::ParMesh::~ParMesh ( )
virtual

Definition at line 6741 of file pmesh.cpp.

Member Function Documentation

◆ AddTriFaces()

template<int N>
void mfem::ParMesh::AddTriFaces ( const Array< int > &  v,
const std::unique_ptr< STable3D > &  faces,
const std::unique_ptr< STable3D > &  shared_faces,
int  elem,
int  start,
int  end,
const int  fverts[][N] 
)
protected

Helper function for adding triangle face neighbor element to face table entries. Have to use a template here rather than lambda capture because the FaceVert entries in Geometry have inner size of 3 for tets and 4 for everything else.

Template Parameters
NInner dimension on the fvert variable, 3 for tet, 4 otherwise
Parameters
[in]vSet of vertices for this element
[in]facesTable of faces interior to this rank
[in]shared_facesTable of faces shared by this rank and another
[in]elemThe face neighbor element
[in]startStarting index into fverts
[in]endEnd index into fverts
[in]fvertsArray of face vertices for this particular geometry.

Definition at line 2677 of file pmesh.cpp.

◆ BuildEdgeGroup()

void mfem::ParMesh::BuildEdgeGroup ( int  ngroups,
const Table edge_element 
)
protected

Definition at line 680 of file pmesh.cpp.

◆ BuildFaceGroup()

void mfem::ParMesh::BuildFaceGroup ( int  ngroups,
const Mesh mesh,
const Array< int > &  face_group,
int &  nstria,
int &  nsquad 
)
protected

Definition at line 634 of file pmesh.cpp.

◆ BuildFaceNbrElementToFaceTable()

void mfem::ParMesh::BuildFaceNbrElementToFaceTable ( )
protected

Definition at line 2710 of file pmesh.cpp.

◆ BuildLocalBoundary()

int mfem::ParMesh::BuildLocalBoundary ( const Mesh global_mesh,
const int *  partitioning,
const Array< int > &  vert_global_local,
Array< bool > &  activeBdrElem,
Table *&  edge_element 
)
protected

Fills out partitioned Mesh::boundary.

Definition at line 396 of file pmesh.cpp.

◆ BuildLocalElements()

int mfem::ParMesh::BuildLocalElements ( const Mesh global_mesh,
const int *  partitioning,
const Array< int > &  vert_global_local 
)
protected

Fills out partitioned Mesh::elements.

Definition at line 366 of file pmesh.cpp.

◆ BuildLocalVertices()

int mfem::ParMesh::BuildLocalVertices ( const Mesh global_mesh,
const int *  partitioning,
Array< int > &  vert_global_local 
)
protected

Fills out partitioned Mesh::vertices.

Definition at line 318 of file pmesh.cpp.

◆ BuildSharedEdgeElems()

void mfem::ParMesh::BuildSharedEdgeElems ( int  nedges,
Mesh mesh,
const Array< int > &  vert_global_local,
const Table edge_element 
)
protected

Definition at line 809 of file pmesh.cpp.

◆ BuildSharedFaceElems()

void mfem::ParMesh::BuildSharedFaceElems ( int  ntri_faces,
int  nquad_faces,
const Mesh mesh,
int *  partitioning,
const STable3D faces_tbl,
const Array< int > &  face_group,
const Array< int > &  vert_global_local 
)
protected

Definition at line 732 of file pmesh.cpp.

◆ BuildSharedVertMapping()

void mfem::ParMesh::BuildSharedVertMapping ( int  nvert,
const Table vert_element,
const Array< int > &  vert_global_local 
)
protected

Definition at line 846 of file pmesh.cpp.

◆ BuildVertexGroup()

void mfem::ParMesh::BuildVertexGroup ( int  ngroups,
const Table vert_element 
)
protected

Definition at line 706 of file pmesh.cpp.

◆ ComputeGlobalElementOffset()

void mfem::ParMesh::ComputeGlobalElementOffset ( ) const
protected

Definition at line 879 of file pmesh.cpp.

◆ DecodeFaceSplittings()

bool mfem::ParMesh::DecodeFaceSplittings ( HashTable< Hashed2 > &  v_to_v,
const int *  v,
const Array< unsigned > &  codes,
int &  pos 
)
protected

Definition at line 1907 of file pmesh.cpp.

◆ DeleteFaceNbrData()

void mfem::ParMesh::DeleteFaceNbrData ( )
protected

Definition at line 1986 of file pmesh.cpp.

◆ Destroy()

void mfem::ParMesh::Destroy ( )
protected

Definition at line 6725 of file pmesh.cpp.

◆ DistributeAttributes()

void mfem::ParMesh::DistributeAttributes ( Array< int > &  attr)
protected

Ensure that bdr_attributes and attributes agree across processors.

Definition at line 1553 of file pmesh.cpp.

◆ EnsureParNodes()

void mfem::ParMesh::EnsureParNodes ( )
protected

If the mesh is curved, make sure 'Nodes' is ParGridFunction.

Note that this method is not related to the public 'Mesh::EnsureNodes`.

Definition at line 2049 of file pmesh.cpp.

◆ ExchangeFaceNbrData() [1/2]

void mfem::ParMesh::ExchangeFaceNbrData ( )

Definition at line 2069 of file pmesh.cpp.

◆ ExchangeFaceNbrData() [2/2]

void mfem::ParMesh::ExchangeFaceNbrData ( Table gr_sface,
int *  s2l_face 
)
protected

Definition at line 2159 of file pmesh.cpp.

◆ ExchangeFaceNbrNodes()

void mfem::ParMesh::ExchangeFaceNbrNodes ( )

Definition at line 2552 of file pmesh.cpp.

◆ FaceIsTrueInterior()

bool mfem::ParMesh::FaceIsTrueInterior ( int  FaceNo) const
inline

Return true if the face is interior or shared. In parallel, this method only works if the face neighbor data is exchanged.

Definition at line 503 of file pmesh.hpp.

◆ Finalize()

void mfem::ParMesh::Finalize ( bool  refine = false,
bool  fix_orientation = false 
)
overridevirtual

Finalize the construction of a general Mesh.

This method will:

  • check and optionally fix the orientation of regular elements
  • check and fix the orientation of boundary elements
  • assume that vertices are defined, if Nodes == NULL
  • assume that Nodes are defined, if Nodes != NULL.
    Parameters
    [in]refineIf true, prepare the Mesh for conforming refinement of triangular or tetrahedral meshes.
    [in]fix_orientationIf true, fix the orientation of inverted mesh elements by permuting their vertices.
    Before calling this method, call FinalizeTopology() and ensure that the Mesh vertices or nodes are set.

Reimplemented from mfem::Mesh.

Definition at line 1524 of file pmesh.cpp.

◆ FinalizeParTopo()

void mfem::ParMesh::FinalizeParTopo ( )
protected

Definition at line 898 of file pmesh.cpp.

◆ FindPoints()

int mfem::ParMesh::FindPoints ( DenseMatrix point_mat,
Array< int > &  elem_ids,
Array< IntegrationPoint > &  ips,
bool  warn = true,
InverseElementTransformation inv_trans = NULL 
)
overridevirtual

Find the ids of the elements that contain the given points, and their corresponding reference coordinates.

The DenseMatrix point_mat describes the given points - one point for each column; it should have SpaceDimension() rows.

The InverseElementTransformation object, inv_trans, is used to attempt the element transformation inversion. If NULL pointer is given, the method will use a default constructed InverseElementTransformation. Note that the algorithms in the base class InverseElementTransformation can be completely overwritten by deriving custom classes that override the Transform() method.

If no element is found for the i-th point, elem_ids[i] is set to -1.

In the ParMesh implementation, the point_mat is expected to be the same on all ranks. If the i-th point is found by multiple ranks, only one of them will mark that point as found, i.e. set its elem_ids[i] to a non-negative number; the other ranks will set their elem_ids[i] to -2 to indicate that the point was found but assigned to another rank.

Returns
The total number of points that were found.
Note
This method is not 100 percent reliable, i.e. it is not guaranteed to find a point, even if it lies inside a mesh element.

Reimplemented from mfem::Mesh.

Definition at line 6465 of file pmesh.cpp.

◆ FindSharedEdges()

int mfem::ParMesh::FindSharedEdges ( const Mesh mesh,
const int *  partition,
Table *&  edge_element,
ListOfIntegerSets groups 
)
protected

Definition at line 543 of file pmesh.cpp.

◆ FindSharedFaces()

void mfem::ParMesh::FindSharedFaces ( const Mesh mesh,
const int *  partition,
Array< int > &  face_group,
ListOfIntegerSets groups 
)
protected

Definition at line 516 of file pmesh.cpp.

◆ FindSharedVertices()

int mfem::ParMesh::FindSharedVertices ( const int *  partition,
Table vertex_element,
ListOfIntegerSets groups 
)
protected

Definition at line 597 of file pmesh.cpp.

◆ GenerateBoundaryElements()

void mfem::ParMesh::GenerateBoundaryElements ( )
inlineoverridevirtual

Reimplemented from mfem::Mesh.

Definition at line 649 of file pmesh.hpp.

◆ GenerateOffsets()

void mfem::ParMesh::GenerateOffsets ( int  N,
HYPRE_BigInt  loc_sizes[],
Array< HYPRE_BigInt > *  offsets[] 
) const

Definition at line 1943 of file pmesh.cpp.

◆ GetBoundingBox()

void mfem::ParMesh::GetBoundingBox ( Vector p_min,
Vector p_max,
int  ref = 2 
)

Returns the minimum and maximum corners of the mesh bounding box. For high-order meshes, the geometry is refined first "ref" times.

Definition at line 6154 of file pmesh.cpp.

◆ GetCharacteristics()

void mfem::ParMesh::GetCharacteristics ( real_t h_min,
real_t h_max,
real_t kappa_min,
real_t kappa_max 
)

Definition at line 6174 of file pmesh.cpp.

◆ GetComm()

MPI_Comm mfem::ParMesh::GetComm ( ) const
inline

Definition at line 402 of file pmesh.hpp.

◆ GetEdgeSplittings()

int mfem::ParMesh::GetEdgeSplittings ( Element edge,
const DSTable v_to_v,
int *  middle 
)
protected

Return a number(0-1) identifying how the given edge has been split.

Definition at line 1857 of file pmesh.cpp.

◆ GetFaceElementTransformations() [1/2]

void mfem::ParMesh::GetFaceElementTransformations ( int  FaceNo,
FaceElementTransformations FElTr,
IsoparametricTransformation ElTr1,
IsoparametricTransformation ElTr2,
int  mask = 31 
) const
overridevirtual

Variant of GetFaceElementTransformations using a user allocated FaceElementTransformations object.

Reimplemented from mfem::Mesh.

Definition at line 2905 of file pmesh.cpp.

◆ GetFaceElementTransformations() [2/2]

FaceElementTransformations * mfem::ParMesh::GetFaceElementTransformations ( int  FaceNo,
int  mask = 31 
)
overridevirtual

Returns (a pointer to an object containing) the following data:

1) Elem1No - the index of the first element that contains this face this is the element that has the same outward unit normal vector as the face;

2) Elem2No - the index of the second element that contains this face this element has outward unit normal vector as the face multiplied with -1;

3) Elem1, Elem2 - pointers to the ElementTransformation's of the first and the second element respectively;

4) Face - pointer to the ElementTransformation of the face;

5) Loc1, Loc2 - IntegrationPointTransformation's mapping the face coordinate system to the element coordinate system (both in their reference elements). Used to transform IntegrationPoints from face to element. More formally, let: TL1, TL2 be the transformations represented by Loc1, Loc2, TE1, TE2 - the transformations represented by Elem1, Elem2, TF - the transformation represented by Face, then TF(x) = TE1(TL1(x)) = TE2(TL2(x)) for all x in the reference face.

6) FaceGeom - the base geometry for the face.

The mask specifies which fields in the structure to return: mask & 1 - Elem1, mask & 2 - Elem2 mask & 4 - Loc1, mask & 8 - Loc2, mask & 16 - Face. These mask values are defined in the ConfigMasks enum type as part of the FaceElementTransformations class in fem/eltrans.hpp.

Note
The returned object is owned by the class and is shared, i.e., calling this function resets pointers obtained from previous calls. Also, the returned object should NOT be deleted by the caller.

Reimplemented from mfem::Mesh.

Definition at line 2897 of file pmesh.cpp.

◆ GetFaceNbrElementFaces()

void mfem::ParMesh::GetFaceNbrElementFaces ( int  i,
Array< int > &  faces,
Array< int > &  orientation 
) const

Similar to Mesh::GetElementFaces

Definition at line 2814 of file pmesh.cpp.

◆ GetFaceNbrElementSize()

real_t mfem::ParMesh::GetFaceNbrElementSize ( int  i,
int  type = 0 
)

Get the size of the i-th face neighbor element relative to the reference element.

Definition at line 3148 of file pmesh.cpp.

◆ GetFaceNbrElementTransformation() [1/2]

ElementTransformation * mfem::ParMesh::GetFaceNbrElementTransformation ( int  FaceNo)

Returns a pointer to the transformation defining the i-th face neighbor.

Note
The returned object is owned by the class and is shared, i.e., calling this function resets pointers obtained from previous calls. Also, the returned object should NOT be deleted by the caller.

Definition at line 3088 of file pmesh.cpp.

◆ GetFaceNbrElementTransformation() [2/2]

void mfem::ParMesh::GetFaceNbrElementTransformation ( int  FaceNo,
IsoparametricTransformation ElTr 
) const

Variant of GetFaceNbrElementTransformation using a user allocated IsoparametricTransformation object.

Definition at line 3094 of file pmesh.cpp.

◆ GetFaceNbrGroup()

int mfem::ParMesh::GetFaceNbrGroup ( int  fn) const
inline

Definition at line 519 of file pmesh.hpp.

◆ GetFaceNbrRank()

int mfem::ParMesh::GetFaceNbrRank ( int  fn) const

Definition at line 2796 of file pmesh.cpp.

◆ GetFaceSplittings()

void mfem::ParMesh::GetFaceSplittings ( const int *  fv,
const HashTable< Hashed2 > &  v_to_v,
Array< unsigned > &  codes 
)
protected

Append codes identifying how the given face has been split to codes.

Definition at line 1872 of file pmesh.cpp.

◆ GetFaceToAllElementTable()

Table * mfem::ParMesh::GetFaceToAllElementTable ( ) const

Similar to Mesh::GetFaceToElementTable with added face-neighbor elements with indices offset by the local number of elements.

Note
The returned Table should be deleted by the caller

Definition at line 2839 of file pmesh.cpp.

◆ GetGhostFaceTransformation() [1/2]

void mfem::ParMesh::GetGhostFaceTransformation ( FaceElementTransformations FElTr,
Element::Type  face_type,
Geometry::Type  face_geom 
) const
protected

Definition at line 3056 of file pmesh.cpp.

◆ GetGhostFaceTransformation() [2/2]

void mfem::ParMesh::GetGhostFaceTransformation ( FaceElementTransformations FElTr,
Element::Type  face_type,
Geometry::Type  face_geom 
) const
inlineprotected

Definition at line 155 of file pmesh.hpp.

◆ GetGlobalEdgeIndices()

void mfem::ParMesh::GetGlobalEdgeIndices ( Array< HYPRE_BigInt > &  gi) const

AMR meshes are not supported.

Definition at line 6617 of file pmesh.cpp.

◆ GetGlobalElementIndices()

void mfem::ParMesh::GetGlobalElementIndices ( Array< HYPRE_BigInt > &  gi) const

AMR meshes are supported.

Definition at line 6668 of file pmesh.cpp.

◆ GetGlobalElementNum()

long long mfem::ParMesh::GetGlobalElementNum ( int  local_element_num) const

Map a local element number to a global element number.

Definition at line 1547 of file pmesh.cpp.

◆ GetGlobalFaceIndices()

void mfem::ParMesh::GetGlobalFaceIndices ( Array< HYPRE_BigInt > &  gi) const

AMR meshes are not supported.

Definition at line 6640 of file pmesh.cpp.

◆ GetGlobalVertexIndices()

void mfem::ParMesh::GetGlobalVertexIndices ( Array< HYPRE_BigInt > &  gi) const

AMR meshes are not supported.

The following functions define global indices for all local vertices, edges, faces, or elements. The global indices have no meaning or significance for ParMesh, but can be used for purposes beyond this class.

Definition at line 6601 of file pmesh.cpp.

◆ GetLocalElementNum()

int mfem::ParMesh::GetLocalElementNum ( long long  global_element_num) const

Map a global element number to a local element number. If the global element is not on this processor, return -1.

Definition at line 1539 of file pmesh.cpp.

◆ GetMyRank()

int mfem::ParMesh::GetMyRank ( ) const
inline

Definition at line 404 of file pmesh.hpp.

◆ GetNFaceNeighborElements()

int mfem::ParMesh::GetNFaceNeighborElements ( ) const
inline

Definition at line 518 of file pmesh.hpp.

◆ GetNFaceNeighbors()

int mfem::ParMesh::GetNFaceNeighbors ( ) const
inline

Definition at line 517 of file pmesh.hpp.

◆ GetNFbyType()

int mfem::ParMesh::GetNFbyType ( FaceType  type) const
overridevirtual

Returns the number of local faces according to the requested type, does not count master non-conforming faces.

If type==Boundary returns only the number of true boundary faces contrary to GetNBE() that returns all "boundary" elements which may include actual interior faces. Similarly, if type==Interior, only the true interior faces (including shared faces) are counted excluding all master non-conforming faces.

Reimplemented from mfem::Mesh.

Definition at line 3194 of file pmesh.cpp.

◆ GetNGroups()

int mfem::ParMesh::GetNGroups ( ) const
inline

Definition at line 443 of file pmesh.hpp.

◆ GetNRanks()

int mfem::ParMesh::GetNRanks ( ) const
inline

Definition at line 403 of file pmesh.hpp.

◆ GetNSharedFaces()

int mfem::ParMesh::GetNSharedFaces ( ) const

Return the number of shared faces (3D), edges (2D), vertices (1D)

Definition at line 3153 of file pmesh.cpp.

◆ GetSerialMesh()

Mesh mfem::ParMesh::GetSerialMesh ( int  save_rank) const

Returns a Serial mesh on MPI rank save_rank that does not have any duplication of vertices/nodes at processor boundaries.

Definition at line 5292 of file pmesh.cpp.

◆ GetSharedEdgeCommunicator() [1/2]

void mfem::ParMesh::GetSharedEdgeCommunicator ( GroupCommunicator sedge_comm) const
inline

Get the shared edges GroupCommunicator.

Parameters
[out]sedge_comm

Definition at line 463 of file pmesh.hpp.

◆ GetSharedEdgeCommunicator() [2/2]

void mfem::ParMesh::GetSharedEdgeCommunicator ( int  ordering,
GroupCommunicator sedge_comm 
) const
protected

Get the shared edges GroupCommunicator.

The output of the shared edges is chosen by the ordering parameter with the following options 0: Internal ordering. Not exposed to public interfaces. 1: Contiguous ordering.

Parameters
[in]orderingOrdering for the shared edges.
[out]sedge_comm

Definition at line 1646 of file pmesh.cpp.

◆ GetSharedFace()

int mfem::ParMesh::GetSharedFace ( int  sface) const

Return the local face index for the given shared face.

Definition at line 3172 of file pmesh.cpp.

◆ GetSharedFacesTable()

STable3D * mfem::ParMesh::GetSharedFacesTable ( )
protected

Definition at line 2612 of file pmesh.cpp.

◆ GetSharedFaceTransformations() [1/2]

FaceElementTransformations * mfem::ParMesh::GetSharedFaceTransformations ( int  sf,
bool  fill2 = true 
)

Get the FaceElementTransformations for the given shared face (edge 2D) using the shared face index sf. fill2 specify if the information for elem2 of the face should be computed or not. In the returned object, 1 and 2 refer to the local and the neighbor elements, respectively.

Note
The returned object is owned by the class and is shared, i.e., calling this function resets pointers obtained from previous calls. Also, the returned object should NOT be deleted by the caller.

Definition at line 2923 of file pmesh.cpp.

◆ GetSharedFaceTransformations() [2/2]

void mfem::ParMesh::GetSharedFaceTransformations ( int  sf,
FaceElementTransformations FElTr,
IsoparametricTransformation ElTr1,
IsoparametricTransformation ElTr2,
bool  fill2 = true 
) const

Variant of GetSharedFaceTransformations using a user allocated FaceElementTransformations object.

Definition at line 2931 of file pmesh.cpp.

◆ GetSharedFaceTransformationsByLocalIndex() [1/2]

FaceElementTransformations * mfem::ParMesh::GetSharedFaceTransformationsByLocalIndex ( int  FaceNo,
bool  fill2 = true 
)

Get the FaceElementTransformations for the given shared face (edge 2D) using the face index FaceNo. fill2 specify if the information for elem2 of the face should be computed or not. In the returned object, 1 and 2 refer to the local and the neighbor elements, respectively.

Note
The returned object is owned by the class and is shared, i.e., calling this function resets pointers obtained from previous calls. Also, the returned object should NOT be deleted by the caller.

Definition at line 2942 of file pmesh.cpp.

◆ GetSharedFaceTransformationsByLocalIndex() [2/2]

void mfem::ParMesh::GetSharedFaceTransformationsByLocalIndex ( int  FaceNo,
FaceElementTransformations FElTr,
IsoparametricTransformation ElTr1,
IsoparametricTransformation ElTr2,
bool  fill2 = true 
) const

Variant of GetSharedFaceTransformationsByLocalIndex using a user allocated FaceElementTransformations object.

Definition at line 2949 of file pmesh.cpp.

◆ GetSharedQuadCommunicator() [1/2]

void mfem::ParMesh::GetSharedQuadCommunicator ( GroupCommunicator squad_comm) const
inline

Get the shared face quadrilaterals GroupCommunicator.

Parameters
[out]squad_comm

Definition at line 483 of file pmesh.hpp.

◆ GetSharedQuadCommunicator() [2/2]

void mfem::ParMesh::GetSharedQuadCommunicator ( int  ordering,
GroupCommunicator squad_comm 
) const
protected

Get the shared face quadrilaterals GroupCommunicator.

The output of the shared face quadrilaterals is chosen by the ordering parameter with the following options 0: Internal ordering. Not exposed to public interfaces. 1: Contiguous ordering.

Parameters
[in]ordering
[out]squad_comm

Definition at line 1694 of file pmesh.cpp.

◆ GetSharedTriCommunicator() [1/2]

void mfem::ParMesh::GetSharedTriCommunicator ( GroupCommunicator stria_comm) const
inline

Get the shared face triangles GroupCommunicator.

Parameters
[out]stria_comm

Definition at line 493 of file pmesh.hpp.

◆ GetSharedTriCommunicator() [2/2]

void mfem::ParMesh::GetSharedTriCommunicator ( int  ordering,
GroupCommunicator stria_comm 
) const
protected

Get the shared face triangles GroupCommunicator.

The output of the shared face triangles is chosen by the ordering parameter with the following options 0: Internal ordering. Not exposed to public interfaces. 1: Contiguous ordering.

Parameters
[in]ordering
[out]stria_comm

Definition at line 1718 of file pmesh.cpp.

◆ GetSharedVertexCommunicator() [1/2]

void mfem::ParMesh::GetSharedVertexCommunicator ( GroupCommunicator svert_comm) const
inline

Get the shared vertices GroupCommunicator.

Parameters
[out]svert_comm

Definition at line 473 of file pmesh.hpp.

◆ GetSharedVertexCommunicator() [2/2]

void mfem::ParMesh::GetSharedVertexCommunicator ( int  ordering,
GroupCommunicator svert_comm 
) const
protected

Get the shared vertices GroupCommunicator.

The output of the shared vertices is chosen by the ordering parameter with the following options 0: Internal ordering. Not exposed to public interfaces. 1: Contiguous ordering.

Parameters
[in]ordering
[out]svert_comm

Definition at line 1670 of file pmesh.cpp.

◆ GroupEdge()

void mfem::ParMesh::GroupEdge ( int  group,
int  i,
int &  edge,
int &  o 
) const

Definition at line 1616 of file pmesh.cpp.

◆ GroupNEdges()

int mfem::ParMesh::GroupNEdges ( int  group) const
inline

Definition at line 447 of file pmesh.hpp.

◆ GroupNQuadrilaterals()

int mfem::ParMesh::GroupNQuadrilaterals ( int  group) const
inline

Definition at line 449 of file pmesh.hpp.

◆ GroupNTriangles()

int mfem::ParMesh::GroupNTriangles ( int  group) const
inline

Definition at line 448 of file pmesh.hpp.

◆ GroupNVertices()

int mfem::ParMesh::GroupNVertices ( int  group) const
inline

Definition at line 446 of file pmesh.hpp.

◆ GroupQuadrilateral()

void mfem::ParMesh::GroupQuadrilateral ( int  group,
int  i,
int &  face,
int &  o 
) const

Definition at line 1635 of file pmesh.cpp.

◆ GroupTriangle()

void mfem::ParMesh::GroupTriangle ( int  group,
int  i,
int &  face,
int &  o 
) const

Definition at line 1624 of file pmesh.cpp.

◆ GroupVertex()

int mfem::ParMesh::GroupVertex ( int  group,
int  i 
) const
inline

Definition at line 451 of file pmesh.hpp.

◆ HasBoundaryElements()

bool mfem::ParMesh::HasBoundaryElements ( ) const
overridevirtual

Checks if any rank in the mesh has boundary elements.

Reimplemented from mfem::Mesh.

Definition at line 1607 of file pmesh.cpp.

◆ Load()

void mfem::ParMesh::Load ( std::istream &  input,
int  generate_edges = 0,
int  refine = 1,
bool  fix_orientation = true 
)
overridevirtual

Parallel version of Mesh::Load().

Reimplemented from mfem::Mesh.

Definition at line 950 of file pmesh.cpp.

◆ LoadSharedEntities()

void mfem::ParMesh::LoadSharedEntities ( std::istream &  input)
protected

Definition at line 986 of file pmesh.cpp.

◆ LocalRefinement()

void mfem::ParMesh::LocalRefinement ( const Array< int > &  marked_el,
int  type = 3 
)
overrideprotectedvirtual

This function is not public anymore. Use GeneralRefinement instead.

Reimplemented from mfem::Mesh.

Definition at line 3385 of file pmesh.cpp.

◆ MakeRefined()

ParMesh mfem::ParMesh::MakeRefined ( ParMesh orig_mesh,
int  ref_factor,
int  ref_type 
)
static

Create a uniformly refined (by any factor) version of orig_mesh.

Parameters
[in]orig_meshThe starting coarse mesh.
[in]ref_factorThe refinement factor, an integer > 1.
[in]ref_typeSpecify the positions of the new vertices. The options are BasisType::ClosedUniform or BasisType::GaussLobatto.

The refinement data which can be accessed with GetRefinementTransforms() is set to reflect the performed refinements.

Note
The constructed ParMesh is linear, i.e. it does not have nodes.

Definition at line 1375 of file pmesh.cpp.

◆ MakeRefined_()

void mfem::ParMesh::MakeRefined_ ( ParMesh orig_mesh,
int  ref_factor,
int  ref_type 
)
protected

Internal function used in ParMesh::MakeRefined (and related constructor)

Definition at line 1140 of file pmesh.cpp.

◆ MakeSimplicial()

ParMesh mfem::ParMesh::MakeSimplicial ( ParMesh orig_mesh)
static

Create a mesh by splitting each element of orig_mesh into simplices. See Mesh::MakeSimplicial for more details.

Definition at line 1382 of file pmesh.cpp.

◆ MarkTetMeshForRefinement()

void mfem::ParMesh::MarkTetMeshForRefinement ( const DSTable v_to_v)
overrideprotectedvirtual

Reimplemented from mfem::Mesh.

Definition at line 1742 of file pmesh.cpp.

◆ NonconformingDerefinement()

bool mfem::ParMesh::NonconformingDerefinement ( Array< real_t > &  elem_error,
real_t  threshold,
int  nc_limit = 0,
int  op = 1 
)
overrideprotectedvirtual

NC version of GeneralDerefinement.

Reimplemented from mfem::Mesh.

Definition at line 3947 of file pmesh.cpp.

◆ NonconformingRefinement()

void mfem::ParMesh::NonconformingRefinement ( const Array< Refinement > &  refinements,
int  nc_limit = 0 
)
overrideprotectedvirtual

This function is not public anymore. Use GeneralRefinement instead.

Reimplemented from mfem::Mesh.

Definition at line 3889 of file pmesh.cpp.

◆ NURBSUniformRefinement() [1/2]

void mfem::ParMesh::NURBSUniformRefinement ( const Array< int > &  rf,
real_t  tol = 1.e-12 
)
overrideprotectedvirtual

Reimplemented from mfem::Mesh.

Definition at line 4578 of file pmesh.cpp.

◆ NURBSUniformRefinement() [2/2]

void mfem::ParMesh::NURBSUniformRefinement ( int  rf = 2,
real_t  tol = 1.0e-12 
)
overrideprotectedvirtual

Refine NURBS mesh, with an optional refinement factor.

Parameters
[in]rfOptional refinement factor. If scalar, the factor is used for all dimensions. If an array, factors can be specified for each dimension.
[in]tolNURBS geometry deviation tolerance.

Reimplemented from mfem::Mesh.

Definition at line 4570 of file pmesh.cpp.

◆ operator=() [1/2]

ParMesh & mfem::ParMesh::operator= ( const ParMesh mesh)
delete

Explicitly delete the copy assignment operator.

◆ operator=() [2/2]

ParMesh & mfem::ParMesh::operator= ( ParMesh &&  mesh)

Move assignment operator.

Definition at line 100 of file pmesh.cpp.

◆ ParPrint()

void mfem::ParMesh::ParPrint ( std::ostream &  out,
const std::string &  comments = "" 
) const

Save the mesh in a parallel mesh format. If comments is non-empty, it will be printed after the first line of the file, and each line should begin with '#'.

Definition at line 6314 of file pmesh.cpp.

◆ Print() [1/2]

void mfem::ParMesh::Print ( adios2stream out) const
overridevirtual

Print the part of the mesh in the calling processor using adios2 bp format.

Reimplemented from mfem::Mesh.

Definition at line 4950 of file pmesh.cpp.

◆ Print() [2/2]

void mfem::ParMesh::Print ( std::ostream &  out = mfem::out,
const std::string &  comments = "" 
) const
overridevirtual

Print the part of the mesh in the calling processor using the mfem v1.0 format. Depending on SetPrintShared(), the parallel interface can be added as boundary for visualization (true by default). If comments is non-empty, it will be printed after the first line of the file, and each line should begin with '#'.

Reimplemented from mfem::Mesh.

Definition at line 4801 of file pmesh.cpp.

◆ PrintAsOne()

void mfem::ParMesh::PrintAsOne ( std::ostream &  out = mfem::out,
const std::string &  comments = "" 
) const

Write the mesh to the stream 'out' on Process 0 in a form suitable for visualization: the mesh is written as a disjoint mesh and the shared boundary is added to the actual boundary; both the element and boundary attributes are set to the processor number. If comments is non-empty, it will be printed after the first line of the file, and each line should begin with '#'.

Definition at line 4968 of file pmesh.cpp.

◆ PrintAsOneXG()

void mfem::ParMesh::PrintAsOneXG ( std::ostream &  out = mfem::out)

Old mesh format (Netgen/Truegrid) version of 'PrintAsOne'.

Definition at line 5620 of file pmesh.cpp.

◆ PrintAsSerial()

void mfem::ParMesh::PrintAsSerial ( std::ostream &  out = mfem::out,
const std::string &  comments = "" 
) const

Write the mesh to the stream 'out' on Process 0 as a serial mesh. The output mesh does not have any duplication of vertices/nodes at processor boundaries. If comments is non-empty, it will be printed after the first line of the file, and each line should begin with '#'.

Definition at line 5281 of file pmesh.cpp.

◆ PrintInfo()

void mfem::ParMesh::PrintInfo ( std::ostream &  out = mfem::out)
overridevirtual

Print various parallel mesh stats.

Reimplemented from mfem::Mesh.

Definition at line 6191 of file pmesh.cpp.

◆ PrintSharedEntities()

void mfem::ParMesh::PrintSharedEntities ( const std::string &  fname_prefix) const

Debugging method.

Definition at line 6514 of file pmesh.cpp.

◆ PrintVTU()

void mfem::ParMesh::PrintVTU ( std::string  pathname,
VTKFormat  format = VTKFormat::ASCII,
bool  high_order_output = false,
int  compression_level = 0,
bool  bdr = false 
)
overridevirtual

Print the mesh in parallel PVTU format. The PVTU and VTU files will be stored in the directory specified by pathname. If the directory does not exist, it will be created.

Reimplemented from mfem::Mesh.

Definition at line 6398 of file pmesh.cpp.

◆ PrintXG()

void mfem::ParMesh::PrintXG ( std::ostream &  out = mfem::out) const
overridevirtual

Print the part of the mesh in the calling processor adding the interface as boundary (for visualization purposes) using Netgen/Truegrid format .

Reimplemented from mfem::Mesh.

Definition at line 4586 of file pmesh.cpp.

◆ Rebalance() [1/2]

void mfem::ParMesh::Rebalance ( )

Load balance the mesh by equipartitioning the global space-filling sequence of elements. Works for nonconforming meshes only.

Definition at line 4009 of file pmesh.cpp.

◆ Rebalance() [2/2]

void mfem::ParMesh::Rebalance ( const Array< int > &  partition)

Load balance a nonconforming mesh using a user-defined partition. Each local element 'i' is migrated to processor rank 'partition[i]', for 0 <= i < GetNE().

Definition at line 4014 of file pmesh.cpp.

◆ RebalanceImpl()

void mfem::ParMesh::RebalanceImpl ( const Array< int > *  partition)
protected

Definition at line 4019 of file pmesh.cpp.

◆ ReduceInt()

long long mfem::ParMesh::ReduceInt ( int  value) const
overridevirtual

Utility function: sum integers from all processors (Allreduce).

Reimplemented from mfem::Mesh.

Definition at line 6307 of file pmesh.cpp.

◆ ReduceMeshGen()

void mfem::ParMesh::ReduceMeshGen ( )
protected

Definition at line 892 of file pmesh.cpp.

◆ RefineGroups() [1/2]

void mfem::ParMesh::RefineGroups ( const DSTable v_to_v,
int *  middle 
)
protected

Update the groups after triangle refinement.

Definition at line 4061 of file pmesh.cpp.

◆ RefineGroups() [2/2]

void mfem::ParMesh::RefineGroups ( int  old_nv,
const HashTable< Hashed2 > &  v_to_v 
)
protected

Update the groups after tetrahedron refinement.

Definition at line 4134 of file pmesh.cpp.

◆ ReorientTetMesh()

void mfem::ParMesh::ReorientTetMesh ( )
overridevirtual

See the remarks for the serial version in mesh.hpp.

Reimplemented from mfem::Mesh.

Definition at line 3226 of file pmesh.cpp.

◆ Save()

void mfem::ParMesh::Save ( const std::string &  fname,
int  precision = 16 
) const
overridevirtual

Save the ParMesh to files (one for each MPI rank). The files will be given suffixes according to the MPI rank. The mesh will be written to the files using ParMesh::Print. The given precision will be used for ASCII output.

Reimplemented from mfem::Mesh.

Definition at line 4940 of file pmesh.cpp.

◆ SaveAsOne()

void mfem::ParMesh::SaveAsOne ( const std::string &  fname,
int  precision = 16 
) const

Save the mesh as a single file (using ParMesh::PrintAsOne). The given precision is used for ASCII output.

Definition at line 5609 of file pmesh.cpp.

◆ SetAttributes()

void mfem::ParMesh::SetAttributes ( )
overridevirtual

Determine the sets of unique attribute values in domain and boundary elements.

Separately scan the domain and boundary elements to generate unique, sorted sets of the element attribute values present in the mesh and store these in the Mesh::attributes and Mesh::bdr_attributes arrays.

Reimplemented from mfem::Mesh.

Definition at line 1589 of file pmesh.cpp.

◆ SetCurvature()

void mfem::ParMesh::SetCurvature ( int  order,
bool  discont = false,
int  space_dim = -1,
int  ordering = 1 
)
overridevirtual

Set the curvature of the mesh nodes using the given polynomial degree.

Creates a nodal GridFunction if one doesn't already exist.

Parameters
[in]orderPolynomial degree of the nodal FE space. If this value is <= 0 then the method will remove the nodal GridFunction and the Mesh will use the vertices array instead; the other arguments are ignored in this case.
[in]discontWhether to use a discontinuous or continuous finite element space (continuous is default).
[in]space_dimThe space dimension (optional).
[in]orderingThe Ordering of the finite element space (Ordering::byVDIM is the default).

Reimplemented from mfem::Mesh.

Definition at line 2007 of file pmesh.cpp.

◆ SetNodalFESpace() [1/2]

void mfem::ParMesh::SetNodalFESpace ( FiniteElementSpace nfes)
overridevirtual

Replace the internal node GridFunction with a new GridFunction defined on the given FiniteElementSpace. The new node coordinates are projected (derived) from the current nodes/vertices.

Reimplemented from mfem::Mesh.

Definition at line 2028 of file pmesh.cpp.

◆ SetNodalFESpace() [2/2]

void mfem::ParMesh::SetNodalFESpace ( ParFiniteElementSpace npfes)

Definition at line 2042 of file pmesh.cpp.

◆ SetPrintShared()

void mfem::ParMesh::SetPrintShared ( bool  print)
inline

Definition at line 674 of file pmesh.hpp.

◆ Swap() [1/2]

void mfem::Mesh::Swap ( Mesh other,
bool  non_geometry 
)
protected

Swaps internal data with another mesh. By default, non-geometry members like 'ncmesh' and 'NURBSExt' are only swapped when 'non_geometry' is set.

Definition at line 727 of file mesh.cpp.

◆ Swap() [2/2]

void mfem::ParMesh::Swap ( ParMesh other)

Swaps internal data with another ParMesh, including non-geometry members. See Mesh::Swap

Definition at line 6682 of file pmesh.cpp.

◆ UniformRefineGroups2D()

void mfem::ParMesh::UniformRefineGroups2D ( int  old_nv)
protected

Definition at line 4318 of file pmesh.cpp.

◆ UniformRefineGroups3D()

void mfem::ParMesh::UniformRefineGroups3D ( int  old_nv,
int  old_nedges,
const DSTable old_v_to_v,
const STable3D old_faces,
Array< int > *  f2qf 
)
protected

Definition at line 4369 of file pmesh.cpp.

◆ UniformRefinement2D()

void mfem::ParMesh::UniformRefinement2D ( )
overrideprotectedvirtual

Refine a mixed 2D mesh uniformly.

Reimplemented from mfem::Mesh.

Definition at line 4518 of file pmesh.cpp.

◆ UniformRefinement3D()

void mfem::ParMesh::UniformRefinement3D ( )
overrideprotectedvirtual

Refine a mixed 3D mesh uniformly.

Reimplemented from mfem::Mesh.

Definition at line 4542 of file pmesh.cpp.

◆ WantSkipSharedMaster()

bool mfem::ParMesh::WantSkipSharedMaster ( const NCMesh::Master master) const
protected

Definition at line 4788 of file pmesh.cpp.

Friends And Related Function Documentation

◆ adios2stream

friend class adios2stream
friend

Definition at line 41 of file pmesh.hpp.

◆ ParNCMesh

friend class ParNCMesh
friend

Definition at line 35 of file pmesh.hpp.

◆ ParPumiMesh

friend class ParPumiMesh
friend

Definition at line 38 of file pmesh.hpp.

◆ ParSubMesh

friend class ParSubMesh
friend

Definition at line 36 of file pmesh.hpp.

Member Data Documentation

◆ face_nbr_el_ori

std::unique_ptr<Table> mfem::ParMesh::face_nbr_el_ori
protected

orientations for each face (from nbr processor)

Definition at line 92 of file pmesh.hpp.

◆ face_nbr_el_to_face

std::unique_ptr<Table> mfem::ParMesh::face_nbr_el_to_face
protected

Table that maps from face neighbor element number, to the face numbers of that element.

Definition at line 90 of file pmesh.hpp.

◆ face_nbr_elements

Array<Element *> mfem::ParMesh::face_nbr_elements

Definition at line 433 of file pmesh.hpp.

◆ face_nbr_elements_offset

Array<int> mfem::ParMesh::face_nbr_elements_offset

Definition at line 431 of file pmesh.hpp.

◆ face_nbr_group

Array<int> mfem::ParMesh::face_nbr_group

Definition at line 430 of file pmesh.hpp.

◆ face_nbr_vertices

Array<Vertex> mfem::ParMesh::face_nbr_vertices

Definition at line 434 of file pmesh.hpp.

◆ face_nbr_vertices_offset

Array<int> mfem::ParMesh::face_nbr_vertices_offset

Definition at line 432 of file pmesh.hpp.

◆ glob_elem_offset

long long mfem::ParMesh::glob_elem_offset
mutableprotected

Definition at line 95 of file pmesh.hpp.

◆ glob_offset_sequence

long mfem::ParMesh::glob_offset_sequence
mutableprotected

Definition at line 96 of file pmesh.hpp.

◆ group_sedge

Table mfem::ParMesh::group_sedge
protected

Definition at line 78 of file pmesh.hpp.

◆ group_squad

Table mfem::ParMesh::group_squad
protected

Definition at line 80 of file pmesh.hpp.

◆ group_stria

Table mfem::ParMesh::group_stria
protected

Definition at line 79 of file pmesh.hpp.

◆ group_svert

Table mfem::ParMesh::group_svert
protected

Shared objects in each group.

Definition at line 77 of file pmesh.hpp.

◆ gtopo

GroupTopology mfem::ParMesh::gtopo

Definition at line 426 of file pmesh.hpp.

◆ have_face_nbr_data

bool mfem::ParMesh::have_face_nbr_data

Definition at line 429 of file pmesh.hpp.

◆ MyComm

MPI_Comm mfem::ParMesh::MyComm
protected

Definition at line 45 of file pmesh.hpp.

◆ MyRank

int mfem::ParMesh::MyRank
protected

Definition at line 46 of file pmesh.hpp.

◆ NRanks

int mfem::ParMesh::NRanks
protected

Definition at line 46 of file pmesh.hpp.

◆ partitioning_cache

int* mfem::ParMesh::partitioning_cache = nullptr

Definition at line 441 of file pmesh.hpp.

◆ pncmesh

ParNCMesh* mfem::ParMesh::pncmesh

Definition at line 439 of file pmesh.hpp.

◆ print_shared

bool mfem::ParMesh::print_shared = true
protected

Definition at line 101 of file pmesh.hpp.

◆ sedge_ledge

Array<int> mfem::ParMesh::sedge_ledge
protected

Definition at line 84 of file pmesh.hpp.

◆ send_face_nbr_elements

Table mfem::ParMesh::send_face_nbr_elements

Definition at line 436 of file pmesh.hpp.

◆ send_face_nbr_vertices

Table mfem::ParMesh::send_face_nbr_vertices

Definition at line 437 of file pmesh.hpp.

◆ sface_lface

Array<int> mfem::ParMesh::sface_lface
protected

Definition at line 86 of file pmesh.hpp.

◆ shared_edges

Array<Element *> mfem::ParMesh::shared_edges
protected

Definition at line 69 of file pmesh.hpp.

◆ shared_quads

Array<Vert4> mfem::ParMesh::shared_quads
protected

Definition at line 74 of file pmesh.hpp.

◆ shared_trias

Array<Vert3> mfem::ParMesh::shared_trias
protected

Definition at line 73 of file pmesh.hpp.

◆ svert_lvert

Array<int> mfem::ParMesh::svert_lvert
protected

Shared to local index mapping.

Definition at line 83 of file pmesh.hpp.


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