MFEM  v4.6.0
Finite element discretization library
Public Member Functions | List of all members
mfem::ParPumiMesh Class Reference

Class for PUMI parallel meshes. More...

#include <pumi.hpp>

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

Public Member Functions

 ParPumiMesh (MPI_Comm comm, apf::Mesh2 *apf_mesh, int refine=1, bool fix_orientation=true)
 Build a parallel MFEM mesh from a parallel PUMI mesh. More...
 
int RotationPUMItoMFEM (apf::Mesh2 *apf_mesh, apf::MeshEntity *tet, int elemId)
 Returns the PUMI-to-MFEM permutation (aka rotation, aka orientation) More...
 
IntegrationRule ParentXisPUMItoMFEM (apf::Mesh2 *apf_mesh, apf::MeshEntity *tet, int elemId, apf::NewArray< apf::Vector3 > &pumi_xi, bool checkOrientation=true)
 Convert the parent coordinate from PUMI to MFEM. More...
 
void ParentXisMFEMtoPUMI (apf::Mesh2 *apf_mesh, int elemId, apf::MeshEntity *tet, const IntegrationRule &mfem_xi, apf::NewArray< apf::Vector3 > &pumi_xi, bool checkOrientation=true)
 Convert the parent coordinate from MFEM to PUMI. More...
 
void FieldMFEMtoPUMI (apf::Mesh2 *apf_mesh, ParGridFunction *grid_vel, ParGridFunction *grid_pr, apf::Field *vel_field, apf::Field *pr_field, apf::Field *vel_mag_field)
 Transfer field from MFEM mesh to PUMI mesh [Mixed]. More...
 
void FieldMFEMtoPUMI (apf::Mesh2 *apf_mesh, ParGridFunction *grid_pr, apf::Field *pr_field, apf::Field *pr_mag_field)
 Transfer field from MFEM mesh to PUMI mesh [Scalar]. More...
 
void VectorFieldMFEMtoPUMI (apf::Mesh2 *apf_mesh, ParGridFunction *grid_vel, apf::Field *vel_field, apf::Field *vel_mag_field)
 Transfer field from MFEM mesh to PUMI mesh [Vector]. More...
 
void NedelecFieldMFEMtoPUMI (apf::Mesh2 *apf_mesh, ParGridFunction *gf, apf::Field *nedelec_field)
 Transfer Nedelec field from MFEM mesh to PUMI mesh [Vector]. More...
 
void UpdateMesh (const ParMesh *AdaptedpMesh)
 Update the mesh after adaptation. More...
 
void FieldPUMItoMFEM (apf::Mesh2 *apf_mesh, apf::Field *field, ParGridFunction *grid)
 Transfer a field from PUMI to MFEM after mesh adapt [Scalar and Vector]. More...
 
virtual ~ParPumiMesh ()
 
- Public Member Functions inherited from mfem::ParMesh
 ParMesh ()
 Default constructor. Create an empty ParMesh. More...
 
 ParMesh (MPI_Comm comm, Mesh &mesh, int *partitioning_=NULL, int part_method=1)
 Create a parallel mesh by partitioning a serial Mesh. More...
 
 ParMesh (const ParMesh &pmesh, bool copy_nodes=true)
 
 ParMesh (MPI_Comm comm, std::istream &input, bool refine=true)
 Read a parallel mesh, each MPI rank from its own file/stream. More...
 
MFEM_DEPRECATED ParMesh (ParMesh *orig_mesh, int ref_factor, int ref_type)
 Deprecated: see ParMesh::MakeRefined. More...
 
 ParMesh (ParMesh &&mesh)
 Move constructor. Used for named constructors. More...
 
ParMeshoperator= (ParMesh &&mesh)
 Move assignment operator. More...
 
ParMeshoperator= (const ParMesh &mesh)=delete
 Explicitly delete the copy assignment operator. More...
 
void Finalize (bool refine=false, bool fix_orientation=false) override
 Finalize the construction of a general Mesh. More...
 
void SetAttributes () override
 Determine the sets of unique attribute values in domain and boundary elements. More...
 
bool HasBoundaryElements () const override
 Checks if any rank in the mesh has boundary elements. More...
 
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. More...
 
void GetGlobalVertexIndices (Array< HYPRE_BigInt > &gi) const
 AMR meshes are not supported. More...
 
void GetGlobalEdgeIndices (Array< HYPRE_BigInt > &gi) const
 AMR meshes are not supported. More...
 
void GetGlobalFaceIndices (Array< HYPRE_BigInt > &gi) const
 AMR meshes are not supported. More...
 
void GetGlobalElementIndices (Array< HYPRE_BigInt > &gi) const
 AMR meshes are supported. More...
 
int GetNGroups () const
 
void GetSharedEdgeCommunicator (GroupCommunicator &sedge_comm) const
 Get the shared edges GroupCommunicator. More...
 
void GetSharedVertexCommunicator (GroupCommunicator &svert_comm) const
 Get the shared vertices GroupCommunicator. More...
 
void GetSharedQuadCommunicator (GroupCommunicator &squad_comm) const
 Get the shared face quadrilaterals GroupCommunicator. More...
 
void GetSharedTriCommunicator (GroupCommunicator &stria_comm) const
 Get the shared face triangles GroupCommunicator. More...
 
void GenerateOffsets (int N, HYPRE_BigInt loc_sizes[], Array< HYPRE_BigInt > *offsets[]) 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. More...
 
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 > &fcs, Array< int > &cor) const
 
TableGetFaceToAllElementTable () const
 
FaceElementTransformationsGetFaceElementTransformations (int FaceNo, int mask=31) override
 
FaceElementTransformationsGetSharedFaceTransformations (int sf, bool fill2=true)
 
FaceElementTransformationsGetSharedFaceTransformationsByLocalIndex (int FaceNo, bool fill2=true)
 
ElementTransformationGetFaceNbrElementTransformation (int i)
 
double GetFaceNbrElementSize (int i, int type=0)
 
int GetNSharedFaces () const
 Return the number of shared faces (3D), edges (2D), vertices (1D) More...
 
int GetSharedFace (int sface) const
 Return the local face index for the given shared face. More...
 
int GetNFbyType (FaceType type) const override
 Returns the number of local faces according to the requested type, does not count master non-conforming faces. More...
 
MFEM_DEPRECATED void ReorientTetMesh () override
 See the remarks for the serial version in mesh.hpp. More...
 
long long ReduceInt (int value) const override
 Utility function: sum integers from all processors (Allreduce). More...
 
void Rebalance ()
 
void Rebalance (const Array< int > &partition)
 
void ParPrint (std::ostream &out) const
 Save the mesh in a parallel mesh format. More...
 
void SetPrintShared (bool print)
 
void Print (std::ostream &out=mfem::out) 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
 
void PrintAsSerial (std::ostream &out=mfem::out) 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'. More...
 
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(). More...
 
void GetBoundingBox (Vector &p_min, Vector &p_max, int ref=2)
 
void GetCharacteristics (double &h_min, double &h_max, double &kappa_min, double &kappa_max)
 
void Swap (ParMesh &other)
 
void PrintInfo (std::ostream &out=mfem::out) override
 Print various parallel mesh stats. More...
 
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. More...
 
void PrintSharedEntities (const std::string &fname_prefix) const
 Debugging method. More...
 
virtual ~ParMesh ()
 
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. More...
 
Meshoperator= (Mesh &&mesh)
 Move assignment operator. More...
 
Meshoperator= (const Mesh &mesh)=delete
 Explicitly delete the copy assignment operator. More...
 
 Mesh (double *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. More...
 
 Mesh (int Dim_, int NVert, int NElem, int NBdrElem=0, int spaceDim_=-1)
 Init constructor: begin the construction of a Mesh object. More...
 
 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. More...
 
virtual ~Mesh ()
 Destroys Mesh. More...
 
ElementNewElement (int geom)
 
int AddVertex (double x, double y=0.0, double z=0.0)
 
int AddVertex (const double *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. More...
 
int AddSegment (int v1, int v2, int attr=1)
 
int AddSegment (const int *vi, int attr=1)
 
int AddTriangle (int v1, int v2, int v3, int attr=1)
 
int AddTriangle (const int *vi, int attr=1)
 
int AddTri (const int *vi, int attr=1)
 
int AddQuad (int v1, int v2, int v3, int v4, int attr=1)
 
int AddQuad (const int *vi, int attr=1)
 
int AddTet (int v1, int v2, int v3, int v4, int attr=1)
 
int AddTet (const int *vi, int attr=1)
 
int AddWedge (int v1, int v2, int v3, int v4, int v5, int v6, int attr=1)
 
int AddWedge (const int *vi, int attr=1)
 
int AddPyramid (int v1, int v2, int v3, int v4, int v5, int attr=1)
 
int AddPyramid (const int *vi, int attr=1)
 
int AddHex (int v1, int v2, int v3, int v4, int v5, int v6, int v7, int v8, int attr=1)
 
int AddHex (const int *vi, int attr=1)
 
void AddHexAsTets (const int *vi, int attr=1)
 
void AddHexAsWedges (const int *vi, int attr=1)
 
void AddHexAsPyramids (const int *vi, int attr=1)
 
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 GenerateBoundaryElements ()
 
void FinalizeTriMesh (int generate_edges=0, int refine=0, bool fix_orientation=true)
 Finalize the construction of a triangular Mesh. More...
 
void FinalizeQuadMesh (int generate_edges=0, int refine=0, bool fix_orientation=true)
 Finalize the construction of a quadrilateral Mesh. More...
 
void FinalizeTetMesh (int generate_edges=0, int refine=0, bool fix_orientation=true)
 Finalize the construction of a tetrahedral Mesh. More...
 
void FinalizeWedgeMesh (int generate_edges=0, int refine=0, bool fix_orientation=true)
 Finalize the construction of a wedge Mesh. More...
 
void FinalizeHexMesh (int generate_edges=0, int refine=0, bool fix_orientation=true)
 Finalize the construction of a hexahedral Mesh. More...
 
void FinalizeMesh (int refine=0, bool fix_orientation=true)
 Finalize the construction of any type of Mesh. More...
 
void FinalizeTopology (bool generate_bdr=true)
 Finalize the construction of the secondary topology (connectivity) data of a Mesh. More...
 
int CheckElementOrientation (bool fix_it=true)
 Check (and optionally attempt to fix) the orientation of the elements. More...
 
int CheckBdrElementOrientation (bool fix_it=true)
 Check the orientation of the boundary elements. More...
 
void RemoveUnusedVertices ()
 Remove unused vertices and rebuild mesh connectivity. More...
 
void RemoveInternalBoundaries ()
 
double GetGeckoElementOrdering (Array< int > &ordering, int iterations=4, int window=4, int period=2, int seed=0, bool verbose=false, double 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, double sx=1.0, double sy=1.0, double sz=1.0, bool sfc_ordering=true)
 Deprecated: see MakeCartesian3D. More...
 
MFEM_DEPRECATED Mesh (int nx, int ny, Element::Type type, bool generate_edges=false, double sx=1.0, double sy=1.0, bool sfc_ordering=true)
 Deprecated: see MakeCartesian2D. More...
 
MFEM_DEPRECATED Mesh (int n, double sx=1.0)
 Deprecated: see MakeCartesian1D. More...
 
MFEM_DEPRECATED Mesh (Mesh *orig_mesh, int ref_factor, int ref_type)
 Deprecated: see MakeRefined. More...
 
int Dimension () const
 Dimension of the reference space used within the elements. More...
 
int SpaceDimension () const
 Dimension of the physical space containing the mesh. More...
 
int EulerNumber () const
 Equals 1 + num_holes - num_loops. More...
 
int EulerNumber2D () const
 Equals 1 - num_holes. More...
 
int MeshGenerator ()
 Get the mesh generator/type. More...
 
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. More...
 
int GetNumGeometries (int dim) const
 Return the number of geometries of the given dimension present in the mesh. More...
 
void GetGeometries (int dim, Array< Geometry::Type > &el_geoms) const
 Return all element geometries of the given dimension present in the mesh. More...
 
void GetBoundingBox (Vector &min, Vector &max, int ref=2)
 Returns the minimum and maximum corners of the mesh bounding box. More...
 
void GetCharacteristics (double &h_min, double &h_max, double &kappa_min, double &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. More...
 
int GetNE () const
 Returns number of elements. More...
 
int GetNBE () const
 Returns number of boundary elements. More...
 
int GetNEdges () const
 Return the number of edges. More...
 
int GetNFaces () const
 Return the number of faces in a 3D mesh. More...
 
int GetNumFaces () const
 Return the number of faces (3D), edges (2D) or vertices (1D). More...
 
int GetNumFacesWithGhost () const
 Return the number of faces (3D), edges (2D) or vertices (1D) including ghost faces. More...
 
long long GetGlobalNE () const
 Return the total (global) number of elements. More...
 
const double * GetVertex (int i) const
 Return pointer to vertex i's coordinates. More...
 
double * GetVertex (int i)
 Return pointer to vertex i's coordinates. More...
 
const ElementGetElement (int i) const
 Return pointer to the i'th element object. More...
 
ElementGetElement (int i)
 Return pointer to the i'th element object. More...
 
const ElementGetBdrElement (int i) const
 Return pointer to the i'th boundary element object. More...
 
ElementGetBdrElement (int i)
 Return pointer to the i'th boundary element object. More...
 
const ElementGetFace (int i) const
 
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. More...
 
void SetAttribute (int i, int attr)
 Set the attribute of element i. More...
 
int GetBdrAttribute (int i) const
 Return the attribute of boundary element i. More...
 
void SetBdrAttribute (int i, int attr)
 Set the attribute of boundary element i. More...
 
int GetPatchAttribute (int i) const
 Return the attribute of patch i, for a NURBS mesh. More...
 
void SetPatchAttribute (int i, int attr)
 Set the attribute of patch i, for a NURBS mesh. More...
 
int GetPatchBdrAttribute (int i) const
 Return the attribute of patch boundary element i, for a NURBS mesh. More...
 
void SetPatchBdrAttribute (int i, int attr)
 Set the attribute of patch boundary element i, for a NURBS mesh. More...
 
Element::Type GetElementType (int i) const
 Returns the type of element i. More...
 
Element::Type GetBdrElementType (int i) const
 Returns the type of boundary element i. More...
 
MFEM_DEPRECATED Geometry::Type GetFaceGeometryType (int Face) const
 Deprecated in favor of Mesh::GetFaceGeometry. More...
 
Element::Type GetFaceElementType (int Face) const
 
Geometry::Type GetFaceGeometry (int i) const
 Return the Geometry::Type associated with face i. More...
 
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. More...
 
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. More...
 
double GetElementSize (int i, int type=0)
 Get the size of the i-th element relative to the perfect reference element. More...
 
double GetElementSize (int i, const Vector &dir)
 
double 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. More...
 
void GetBdrElementVertices (int i, Array< int > &v) const
 Returns the indices of the vertices of boundary element i. More...
 
void GetElementEdges (int i, Array< int > &edges, Array< int > &cor) const
 Return the indices and the orientations of all edges of element i. More...
 
void GetBdrElementEdges (int i, Array< int > &edges, Array< int > &cor) const
 Return the indices and the orientations of all edges of bdr element i. More...
 
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. More...
 
void GetEdgeVertices (int i, Array< int > &vert) const
 Returns the indices of the vertices of edge i. More...
 
void GetElementFaces (int i, Array< int > &faces, Array< int > &ori) const
 Return the indices and the orientations of all faces of element i. More...
 
Array< int > FindFaceNeighbors (const int elem) const
 Returns the sorted, unique indices of elements sharing a face with element elem, including elem. More...
 
void GetBdrElementFace (int i, int *f, int *o) const
 Return the index and the orientation of the face of bdr element i. (3D) More...
 
int GetBdrElementEdgeIndex (int i) 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. More...
 
void GetBdrElementAdjacentElement2 (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+inverse_bdr_orientation. More...
 
int GetBdrFace (int BdrElemNo) const
 Return the local face index for the given boundary face. More...
 
TableGetVertexToElementTable ()
 The returned Table should be deleted by the caller. More...
 
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)
 
ElementTransformationGetElementTransformation (int i)
 
void GetElementTransformation (int i, const Vector &nodes, IsoparametricTransformation *ElTr)
 
ElementTransformationGetBdrElementTransformation (int i)
 
void GetBdrElementTransformation (int i, IsoparametricTransformation *ElTr)
 
void GetFaceTransformation (int i, IsoparametricTransformation *FTr)
 
void GetLocalFaceTransformation (int face_type, int elem_type, IsoparametricTransformation &Transf, int info)
 A helper method that constructs a transformation from the reference space of a face to the reference space of an element. More...
 
ElementTransformationGetFaceTransformation (int FaceNo)
 
void GetEdgeTransformation (int i, IsoparametricTransformation *EdTr)
 
ElementTransformationGetEdgeTransformation (int EdgeNo)
 
FaceElementTransformationsGetInteriorFaceTransformations (int FaceNo)
 
FaceElementTransformationsGetBdrFaceTransformations (int BdrElemNo)
 
const GeometricFactorsGetGeometricFactors (const IntegrationRule &ir, const int flags, MemoryType d_mt=MemoryType::DEFAULT)
 Return the mesh geometric factors corresponding to the given integration rule. More...
 
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. More...
 
void DeleteGeometricFactors ()
 Destroy all GeometricFactors stored by the Mesh. More...
 
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 (double *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. More...
 
void GetNode (int i, double *coord) const
 
void SetNode (int i, const double *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(). More...
 
void ScaleSubdomains (double sf)
 
void ScaleElements (double 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(). More...
 
GridFunctionGetNodes ()
 Return a pointer to the internal node GridFunction (may be NULL). More...
 
const GridFunctionGetNodes () const
 
bool OwnsNodes () const
 Return the mesh nodes ownership flag. More...
 
void SetNodesOwner (bool nodes_owner)
 Set the mesh nodes ownership flag. More...
 
void NewNodes (GridFunction &nodes, bool make_owner=false)
 Replace the internal node GridFunction with the given GridFunction. More...
 
void SwapNodes (GridFunction *&nodes, int &own_nodes_)
 Swap the internal node GridFunction pointer and ownership flag members with the given ones. More...
 
void GetNodes (GridFunction &nodes) const
 Return the mesh nodes/vertices projected on the given GridFunction. More...
 
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). More...
 
void UniformRefinement (int ref_algo=0)
 Refine all mesh elements. More...
 
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 (double prob, bool aniso=false, int nonconforming=-1, int nc_limit=0)
 Refine each element with given probability. Uses GeneralRefinement. More...
 
void RefineAtVertex (const Vertex &vert, double eps=0.0, int nonconforming=-1)
 Refine elements sharing the specified vertex. Uses GeneralRefinement. More...
 
bool RefineByError (const Array< double > &elem_error, double threshold, int nonconforming=-1, int nc_limit=0)
 
bool RefineByError (const Vector &elem_error, double threshold, int nonconforming=-1, int nc_limit=0)
 
bool DerefineByError (Array< double > &elem_error, double threshold, int nc_limit=0, int op=1)
 
bool DerefineByError (const Vector &elem_error, double threshold, int nc_limit=0, int op=1)
 Same as DerefineByError for an error vector. More...
 
void EnsureNCMesh (bool simplices_nonconforming=false)
 
bool Conforming () const
 
bool Nonconforming () const
 
const CoarseFineTransformationsGetRefinementTransforms ()
 
Operation GetLastOperation () const
 Return type of last modification of the mesh. More...
 
long GetSequence () const
 
void RefineNURBSFromFile (std::string ref_file)
 
void KnotInsert (Array< KnotVector *> &kv)
 
void KnotInsert (Array< Vector *> &kv)
 
void DegreeElevate (int rel_degree, int degree=16)
 
std::vector< int > CreatePeriodicVertexMapping (const std::vector< Vector > &translations, double 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. More...
 
void GetGeometricParametersFromJacobian (const DenseMatrix &J, double &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). More...
 
void GetElementColoring (Array< int > &colors, int el0=0)
 
void MesquiteSmooth (const int mesquite_option=0)
 
void CheckDisplacements (const Vector &displacements, double &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. More...
 
void PrintElementsWithPartitioning (int *partitioning, std::ostream &out, int interior_faces=0)
 
void PrintSurfaces (const Table &Aface_face, std::ostream &out) const
 Print set of disjoint surfaces: More...
 
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. More...
 
void DebugDump (std::ostream &out) const
 Output an NCMesh-compatible debug dump. More...
 

Additional Inherited Members

- Public Types inherited from mfem::Mesh
enum  Operation { NONE, REFINE, DEREFINE, REBALANCE }
 
enum  FaceTopology { FaceTopology::Boundary, FaceTopology::Conforming, FaceTopology::Nonconforming, FaceTopology::NA }
 
enum  ElementLocation { ElementLocation::Local, ElementLocation::FaceNbr, ElementLocation::NA }
 
enum  ElementConformity { ElementConformity::Coincident, ElementConformity::Superset, ElementConformity::Subset, ElementConformity::NA }
 
enum  FaceInfoTag {
  FaceInfoTag::Boundary, FaceInfoTag::LocalConforming, FaceInfoTag::LocalSlaveNonconforming, FaceInfoTag::SharedConforming,
  FaceInfoTag::SharedSlaveNonconforming, FaceInfoTag::MasterNonconforming, FaceInfoTag::GhostSlave, FaceInfoTag::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 Member Functions inherited from mfem::ParMesh
static ParMesh MakeRefined (ParMesh &orig_mesh, int ref_factor, int ref_type)
 Create a uniformly refined (by any factor) version of orig_mesh. More...
 
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. More...
 
static Mesh LoadFromFile (const std::string &filename, int generate_edges=0, int refine=1, bool fix_orientation=true)
 
static Mesh MakeCartesian1D (int n, double sx=1.0)
 
static Mesh MakeCartesian2D (int nx, int ny, Element::Type type, bool generate_edges=false, double sx=1.0, double sy=1.0, bool sfc_ordering=true)
 
static Mesh MakeCartesian3D (int nx, int ny, int nz, Element::Type type, double sx=1.0, double sy=1.0, double sz=1.0, bool sfc_ordering=true)
 
static Mesh MakeRefined (Mesh &orig_mesh, int ref_factor, int ref_type)
 Create a refined (by any factor) version of orig_mesh. More...
 
static Mesh MakeRefined (Mesh &orig_mesh, const Array< int > &ref_factors, int ref_type)
 refined ref_factors[i] times in each dimension. More...
 
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. More...
 
static void PrintElementsByGeometry (int dim, const Array< int > &num_elems_by_geom, std::ostream &out)
 Auxiliary method used by PrintCharacteristics(). More...
 
- Public Attributes inherited from mfem::ParMesh
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. More...
 
Array< int > bdr_attributes
 A list of all unique boundary attributes used by the Mesh. More...
 
NURBSExtensionNURBSext
 Optional NURBS mesh extension. More...
 
NCMeshncmesh
 Optional nonconforming mesh extension. More...
 
Array< GeometricFactors * > geom_factors
 Optional geometric factors. More...
 
Array< FaceGeometricFactors * > face_geom_factors
 
- Static Public Attributes inherited from mfem::Mesh
static bool remove_unused_vertices = true
 
- Protected Member Functions inherited from mfem::ParMesh
void ComputeGlobalElementOffset () const
 
 ParMesh (const ParNCMesh &pncmesh)
 Create from a nonconforming mesh. More...
 
void ReduceMeshGen ()
 
void FinalizeParTopo ()
 
void MarkTetMeshForRefinement (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. More...
 
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. More...
 
bool DecodeFaceSplittings (HashTable< Hashed2 > &v_to_v, const int *v, const Array< unsigned > &codes, int &pos)
 
STable3DGetFaceNbrElementToFaceTable (int ret_ftbl=0)
 
void GetFaceNbrElementTransformation (int i, IsoparametricTransformation *ElTr)
 
void GetGhostFaceTransformation (FaceElementTransformations *FETr, Element::Type face_type, Geometry::Type face_geom)
 
void RefineGroups (const DSTable &v_to_v, int *middle)
 Update the groups after triangle refinement. More...
 
void RefineGroups (int old_nv, const HashTable< Hashed2 > &v_to_v)
 Update the groups after tetrahedron refinement. More...
 
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. More...
 
void UniformRefinement3D () override
 Refine a mixed 3D mesh uniformly. More...
 
void NURBSUniformRefinement () override
 Refine NURBS mesh. More...
 
void LocalRefinement (const Array< int > &marked_el, int type=3) override
 This function is not public anymore. Use GeneralRefinement instead. More...
 
void NonconformingRefinement (const Array< Refinement > &refinements, int nc_limit=0) override
 This function is not public anymore. Use GeneralRefinement instead. More...
 
bool NonconformingDerefinement (Array< double > &elem_error, double threshold, int nc_limit=0, int op=1) override
 NC version of GeneralDerefinement. More...
 
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. More...
 
int BuildLocalElements (const Mesh &global_mesh, const int *partitioning, const Array< int > &vert_global_local)
 Fills out partitioned Mesh::elements. More...
 
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. More...
 
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. More...
 
void GetSharedVertexCommunicator (int ordering, GroupCommunicator &svert_comm) const
 Get the shared vertices GroupCommunicator. More...
 
void GetSharedQuadCommunicator (int ordering, GroupCommunicator &squad_comm) const
 Get the shared face quadrilaterals GroupCommunicator. More...
 
void GetSharedTriCommunicator (int ordering, GroupCommunicator &stria_comm) const
 Get the shared face triangles GroupCommunicator. More...
 
STable3DGetSharedFacesTable ()
 
void DistributeAttributes (Array< int > &attr)
 Ensure that bdr_attributes and attributes agree across processors. More...
 
void LoadSharedEntities (std::istream &input)
 
void EnsureParNodes ()
 If the mesh is curved, make sure 'Nodes' is ParGridFunction. More...
 
void MakeRefined_ (ParMesh &orig_mesh, int ref_factor, int ref_type)
 Internal function used in ParMesh::MakeRefined (and related constructor) More...
 
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 &)
 
ElementReadElement (std::istream &)
 
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)
 
void ReadInlineMesh (std::istream &input, bool generate_edges=false)
 
void ReadGmshMesh (std::istream &input, int &curved, int &read_gf)
 
void ReadCubit (const char *filename, int &curved, int &read_gf)
 
void SetMeshGen ()
 Determine the mesh generator bitmask meshgen, see MeshGenerator(). More...
 
double GetLength (int i, int j) const
 Return the length of the segment from node i to node j. More...
 
void MarkForRefinement ()
 
void MarkTriMeshForRefinement ()
 
void GetEdgeOrdering (DSTable &v_to_v, Array< int > &order)
 
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. More...
 
void Bisection (int i, HashTable< Hashed2 > &)
 Bisect a tetrahedron: element with index i is bisected. More...
 
void BdrBisection (int i, const HashTable< Hashed2 > &)
 Bisect a boundary triangle: boundary element with index i is bisected. More...
 
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]. More...
 
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. More...
 
void SetVerticesFromNodes (const GridFunction *nodes)
 Helper to set vertex coordinates given a high-order curvature function. More...
 
void UniformRefinement2D_base (bool update_nodes=true)
 
void UniformRefinement3D_base (Array< int > *f2qf=NULL, DSTable *v_to_v_p=NULL, bool update_nodes=true)
 
double AggregateError (const Array< double > &elem_error, const int *fine, int nfine, int op)
 Derefinement helper. More...
 
void LoadPatchTopo (std::istream &input, Array< int > &edge_to_knot)
 Read NURBS patch/macro-element mesh. More...
 
void UpdateNURBS ()
 
void PrintTopo (std::ostream &out, const Array< int > &e_to_k) const
 
void GetLocalPtToSegTransformation (IsoparametricTransformation &, int)
 Used in GetFaceElementTransformations (...) More...
 
void GetLocalSegToTriTransformation (IsoparametricTransformation &loc, int i)
 
void GetLocalSegToQuadTransformation (IsoparametricTransformation &loc, int i)
 
void GetLocalTriToTetTransformation (IsoparametricTransformation &loc, int i)
 Used in GetFaceElementTransformations (...) More...
 
void GetLocalTriToWdgTransformation (IsoparametricTransformation &loc, int i)
 Used in GetFaceElementTransformations (...) More...
 
void GetLocalTriToPyrTransformation (IsoparametricTransformation &loc, int i)
 Used in GetFaceElementTransformations (...) More...
 
void GetLocalQuadToHexTransformation (IsoparametricTransformation &loc, int i)
 Used in GetFaceElementTransformations (...) More...
 
void GetLocalQuadToWdgTransformation (IsoparametricTransformation &loc, int i)
 Used in GetFaceElementTransformations (...) More...
 
void GetLocalQuadToPyrTransformation (IsoparametricTransformation &loc, int i)
 Used in GetFaceElementTransformations (...) More...
 
void ApplyLocalSlaveTransformation (FaceElementTransformations &FT, const FaceInfo &fi, bool is_ghost)
 
bool IsSlaveFace (const FaceInfo &fi) const
 
int GetElementToEdgeTable (Table &, Array< int > &)
 
void AddPointFaceElement (int lf, int gf, int el)
 Used in GenerateFaces() More...
 
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. More...
 
void FinalizeCheck ()
 
void Loader (std::istream &input, int generate_edges=0, std::string parse_tag="")
 
void Printer (std::ostream &out=mfem::out, std::string section_delimiter="") const
 
void Make3D (int nx, int ny, int nz, Element::Type type, double sx, double sy, double sz, bool sfc_ordering)
 
void Make2D (int nx, int ny, Element::Type type, double sx, double sy, bool generate_edges, bool sfc_ordering)
 
void Make1D (int n, double sx=1.0)
 Creates a 1D mesh for the interval [0,sx] divided into n equal intervals. More...
 
void MakeRefined_ (Mesh &orig_mesh, const Array< int > ref_factors, int ref_type)
 Internal function used in Mesh::MakeRefined. More...
 
void InitFromNCMesh (const NCMesh &ncmesh)
 Initialize vertices/elements/boundary/tables from a nonconforming mesh. More...
 
 Mesh (const NCMesh &ncmesh)
 Create from a nonconforming mesh. More...
 
void GetElementData (const Array< Element *> &elem_array, int geom, Array< int > &elem_vtx, Array< int > &attr) const
 
double GetElementSize (ElementTransformation *T, int type=0)
 
void MakeSimplicial_ (const Mesh &orig_mesh, int *vglobal)
 
- Static Protected Member Functions inherited from mfem::Mesh
static void PrintElementWithoutAttr (const Element *, std::ostream &)
 
static void PrintElement (const Element *, std::ostream &)
 
static int GetTriOrientation (const int *base, const int *test)
 Returns the orientation of "test" relative to "base". More...
 
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". More...
 
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". More...
 
static void GetElementArrayEdgeTable (const Array< Element *> &elem_array, const DSTable &v_to_v, Table &el_to_edge)
 
- Protected Attributes inherited from mfem::ParMesh
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. More...
 
Table group_sedge
 
Table group_stria
 
Table group_squad
 
Array< int > svert_lvert
 Shared to local index mapping. More...
 
Array< int > sedge_ledge
 
Array< int > sface_lface
 
Tableface_nbr_el_to_face
 
Table face_nbr_el_ori
 
IsoparametricTransformation FaceNbrTransformation
 
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
 
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_edge
 
Tablebel_to_edge
 
Array< int > be_to_face
 
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
 
- 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 PUMI parallel meshes.

Definition at line 69 of file pumi.hpp.

Constructor & Destructor Documentation

◆ ParPumiMesh()

mfem::ParPumiMesh::ParPumiMesh ( MPI_Comm  comm,
apf::Mesh2 *  apf_mesh,
int  refine = 1,
bool  fix_orientation = true 
)

Build a parallel MFEM mesh from a parallel PUMI mesh.

Definition at line 443 of file pumi.cpp.

◆ ~ParPumiMesh()

virtual mfem::ParPumiMesh::~ParPumiMesh ( )
inlinevirtual

Definition at line 146 of file pumi.hpp.

Member Function Documentation

◆ FieldMFEMtoPUMI() [1/2]

void mfem::ParPumiMesh::FieldMFEMtoPUMI ( apf::Mesh2 *  apf_mesh,
ParGridFunction grid_vel,
ParGridFunction grid_pr,
apf::Field *  vel_field,
apf::Field *  pr_field,
apf::Field *  vel_mag_field 
)

Transfer field from MFEM mesh to PUMI mesh [Mixed].

Definition at line 1217 of file pumi.cpp.

◆ FieldMFEMtoPUMI() [2/2]

void mfem::ParPumiMesh::FieldMFEMtoPUMI ( apf::Mesh2 *  apf_mesh,
ParGridFunction grid_pr,
apf::Field *  pr_field,
apf::Field *  pr_mag_field 
)

Transfer field from MFEM mesh to PUMI mesh [Scalar].

Definition at line 1269 of file pumi.cpp.

◆ FieldPUMItoMFEM()

void mfem::ParPumiMesh::FieldPUMItoMFEM ( apf::Mesh2 *  apf_mesh,
apf::Field *  field,
ParGridFunction grid 
)

Transfer a field from PUMI to MFEM after mesh adapt [Scalar and Vector].

Definition at line 1418 of file pumi.cpp.

◆ NedelecFieldMFEMtoPUMI()

void mfem::ParPumiMesh::NedelecFieldMFEMtoPUMI ( apf::Mesh2 *  apf_mesh,
ParGridFunction gf,
apf::Field *  nedelec_field 
)

Transfer Nedelec field from MFEM mesh to PUMI mesh [Vector].

Definition at line 1363 of file pumi.cpp.

◆ ParentXisMFEMtoPUMI()

void mfem::ParPumiMesh::ParentXisMFEMtoPUMI ( apf::Mesh2 *  apf_mesh,
int  elemId,
apf::MeshEntity *  tet,
const IntegrationRule mfem_xi,
apf::NewArray< apf::Vector3 > &  pumi_xi,
bool  checkOrientation = true 
)

Convert the parent coordinate from MFEM to PUMI.

This is the inverse of ParentXisPUMItoMFEM. By default this functions assumes that there is always change in the orientations of some of the elements. In case it is known for sure that there is NO change in the orientation, call the functions with last argument = false

Definition at line 1180 of file pumi.cpp.

◆ ParentXisPUMItoMFEM()

IntegrationRule mfem::ParPumiMesh::ParentXisPUMItoMFEM ( apf::Mesh2 *  apf_mesh,
apf::MeshEntity *  tet,
int  elemId,
apf::NewArray< apf::Vector3 > &  pumi_xi,
bool  checkOrientation = true 
)

Convert the parent coordinate from PUMI to MFEM.

By default this functions assumes that there is always change in the orientations of some of the elements. In case it is known for sure that there is NO change in the orientation, call the functions with last argument = false

Definition at line 1152 of file pumi.cpp.

◆ RotationPUMItoMFEM()

int mfem::ParPumiMesh::RotationPUMItoMFEM ( apf::Mesh2 *  apf_mesh,
apf::MeshEntity *  tet,
int  elemId 
)

Returns the PUMI-to-MFEM permutation (aka rotation, aka orientation)

This represents the change in tet-to-vertex connectivity between the PUMI and MFEM meshes. E.g., PUMI_tet{v0,v1,v2,v3} —> MFEM_tet{v1,v0,v3,v2} Note that change in the orientation can be caused by fixing wrong boundary element orientations

Definition at line 1116 of file pumi.cpp.

◆ UpdateMesh()

void mfem::ParPumiMesh::UpdateMesh ( const ParMesh AdaptedpMesh)

Update the mesh after adaptation.

Definition at line 956 of file pumi.cpp.

◆ VectorFieldMFEMtoPUMI()

void mfem::ParPumiMesh::VectorFieldMFEMtoPUMI ( apf::Mesh2 *  apf_mesh,
ParGridFunction grid_vel,
apf::Field *  vel_field,
apf::Field *  vel_mag_field 
)

Transfer field from MFEM mesh to PUMI mesh [Vector].

Definition at line 1317 of file pumi.cpp.


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