MFEM v4.7.0
Finite element discretization library
Loading...
Searching...
No Matches
mfem::SubMesh Class Reference

Subdomain representation of a topological parent in another Mesh. More...

#include <submesh.hpp>

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

Public Types

enum  From { Domain , Boundary }
 Indicator from which part of the parent Mesh the SubMesh is created. More...
 
- 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
 

Public Member Functions

 SubMesh ()=delete
 
const MeshGetParent () const
 Get the parent Mesh object.
 
From GetFrom () const
 Get the From indicator.
 
const Array< int > & GetParentElementIDMap () const
 Get the parent element id map.
 
const Array< int > & GetParentFaceIDMap () const
 Get the face id map.
 
const Array< int > & GetParentFaceOrientations () const
 Get the relative face orientations.
 
const Array< int > & GetParentVertexIDMap () const
 Get the parent vertex id map.
 
 ~SubMesh ()
 
- 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)
 
virtual void Load (std::istream &input, int generate_edges=0, int refine=1, bool fix_orientation=true)
 
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)
 
virtual void GenerateBoundaryElements ()
 
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.
 
virtual void Finalize (bool refine=false, bool fix_orientation=false)
 Finalize the construction of a general Mesh.
 
virtual void SetAttributes ()
 Determine the sets of unique attribute values in domain and boundary elements.
 
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.
 
virtual MFEM_DEPRECATED void ReorientTetMesh ()
 
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.
 
virtual bool HasBoundaryElements () const
 Checks if the mesh has boundary elements.
 
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.
 
virtual int GetNFbyType (FaceType type) const
 Returns the number of faces according to the requested type, does not count master nonconforming 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.
 
virtual FaceElementTransformationsGetFaceElementTransformations (int FaceNo, int mask=31)
 
virtual void GetFaceElementTransformations (int FaceNo, FaceElementTransformations &FElTr, IsoparametricTransformation &ElTr1, IsoparametricTransformation &ElTr2, int mask=31) const
 Variant of GetFaceElementTransformations using a user allocated FaceElementTransformations object.
 
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.
 
virtual void SetNodalFESpace (FiniteElementSpace *nfes)
 
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).
 
virtual void SetCurvature (int order, bool discont=false, int space_dim=-1, int ordering=1)
 Set the curvature of the mesh nodes using the given polynomial degree.
 
void UniformRefinement (int ref_algo=0)
 Refine all mesh elements.
 
virtual void NURBSUniformRefinement (int rf=2, real_t tol=1.0e-12)
 Refine NURBS mesh, with an optional refinement factor, generally anisotropic.
 
virtual void NURBSUniformRefinement (const Array< int > &rf, real_t tol=1.e-12)
 
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.
 
virtual int FindPoints (DenseMatrix &point_mat, Array< int > &elem_ids, Array< IntegrationPoint > &ips, bool warn=true, InverseElementTransformation *inv_trans=NULL)
 Find the ids of the elements that contain the given points, and their corresponding reference coordinates.
 
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).
 
virtual long long ReduceInt (int value) const
 Utility function: sum integers from all processors (Allreduce).
 
void GetElementColoring (Array< int > &colors, int el0=0)
 
void MesquiteSmooth (const int mesquite_option=0)
 
void CheckDisplacements (const Vector &displacements, real_t &tmax)
 
virtual void PrintXG (std::ostream &os=mfem::out) const
 Print the mesh to the given stream using Netgen/Truegrid format.
 
virtual void Print (std::ostream &os=mfem::out, const std::string &comments="") const
 
virtual void Save (const std::string &fname, int precision=16) const
 
virtual void Print (adios2stream &os) const
 Print the mesh to the given stream using the adios2 bp format.
 
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)
 
virtual void PrintVTU (std::string fname, VTKFormat format=VTKFormat::ASCII, bool high_order_output=false, int compression_level=0, bool bdr=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.
 
virtual void PrintInfo (std::ostream &os=mfem::out)
 In serial, this method calls PrintCharacteristics(). In parallel, additional information about the parallel decomposition is also printed.
 
void DebugDump (std::ostream &os) const
 Output an NCMesh-compatible debug dump.
 

Static Public Member Functions

static SubMesh CreateFromDomain (const Mesh &parent, Array< int > domain_attributes)
 Create a domain SubMesh from its parent.
 
static SubMesh CreateFromBoundary (const Mesh &parent, Array< int > boundary_attributes)
 Create a surface SubMesh from its parent.
 
static void Transfer (const GridFunction &src, GridFunction &dst)
 Transfer the dofs of a GridFunction.
 
static TransferMap CreateTransferMap (const GridFunction &src, const GridFunction &dst)
 Create a Transfer Map object.
 
static bool IsSubMesh (const Mesh *m)
 Check if Mesh m is a SubMesh.
 
- 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().
 

Static Public Attributes

static const int GENERATED_ATTRIBUTE = 900
 
- Static Public Attributes inherited from mfem::Mesh
static bool remove_unused_vertices = true
 

Additional Inherited Members

- 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 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)
 
- 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)
 
- 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
 
- 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

Subdomain representation of a topological parent in another Mesh.

SubMesh is a subdomain representation of a Mesh defined on its parents attributes. The current implementation creates either a domain or surface subset of the parents Mesh and reuses the parallel distribution.

The attributes are taken from the parent. That means if a volume is extracted from a volume, it has the same domain attribute as the parent. Its boundary attributes are generated (there will be one boundary attribute 1 for all of the boundaries).

If a surface is extracted from a volume, the boundary attribute from the parent is assigned to be the new domain attribute. Its boundary attributes are generated (there will be one boundary attribute 1 for all of the boundaries).

For more customized boundary attributes, the resulting SubMesh has to be postprocessed.

Definition at line 42 of file submesh.hpp.

Member Enumeration Documentation

◆ From

Indicator from which part of the parent Mesh the SubMesh is created.

Enumerator
Domain 
Boundary 

Definition at line 46 of file submesh.hpp.

Constructor & Destructor Documentation

◆ SubMesh()

mfem::SubMesh::SubMesh ( )
delete

◆ ~SubMesh()

mfem::SubMesh::~SubMesh ( )

Definition at line 196 of file submesh.cpp.

Member Function Documentation

◆ CreateFromBoundary()

SubMesh mfem::SubMesh::CreateFromBoundary ( const Mesh & parent,
Array< int > boundary_attributes )
static

Create a surface SubMesh from its parent.

The SubMesh object expects the parent Mesh object to be valid for the entire object lifetime. The boundary_attributes have to mark exactly one connected subset of the parent Mesh.

Parameters
[in]parentParent Mesh
[in]boundary_attributesBoundary attributes to extract

Definition at line 25 of file submesh.cpp.

◆ CreateFromDomain()

SubMesh mfem::SubMesh::CreateFromDomain ( const Mesh & parent,
Array< int > domain_attributes )
static

Create a domain SubMesh from its parent.

The SubMesh object expects the parent Mesh object to be valid for the entire object lifetime. The domain_attributes have to mark exactly one connected subset of the parent Mesh.

Parameters
[in]parentParent Mesh
[in]domain_attributesDomain attributes to extract

Definition at line 19 of file submesh.cpp.

◆ CreateTransferMap()

TransferMap mfem::SubMesh::CreateTransferMap ( const GridFunction & src,
const GridFunction & dst )
static

Create a Transfer Map object.

The src GridFunction can either be defined on a Mesh or a SubMesh and is transferred appropriately.

Note
Either src or dst has to be defined on a SubMesh.

Definition at line 204 of file submesh.cpp.

◆ GetFrom()

From mfem::SubMesh::GetFrom ( ) const
inline

Get the From indicator.

Indicates whether the SubMesh has been created from a domain or surface.

Definition at line 98 of file submesh.hpp.

◆ GetParent()

const Mesh * mfem::SubMesh::GetParent ( ) const
inline

Get the parent Mesh object.

Definition at line 87 of file submesh.hpp.

◆ GetParentElementIDMap()

const Array< int > & mfem::SubMesh::GetParentElementIDMap ( ) const
inline

Get the parent element id map.

SubMesh element id (array index) to parent Mesh element id.

Definition at line 108 of file submesh.hpp.

◆ GetParentFaceIDMap()

const Array< int > & mfem::SubMesh::GetParentFaceIDMap ( ) const
inline

Get the face id map.

SubMesh element id (array index) to parent Mesh face id.

Definition at line 118 of file submesh.hpp.

◆ GetParentFaceOrientations()

const Array< int > & mfem::SubMesh::GetParentFaceOrientations ( ) const
inline

Get the relative face orientations.

SubMesh element id (array index) to parent Mesh face orientation.

Definition at line 128 of file submesh.hpp.

◆ GetParentVertexIDMap()

const Array< int > & mfem::SubMesh::GetParentVertexIDMap ( ) const
inline

Get the parent vertex id map.

SubMesh vertex id (array index) to parent Mesh vertex id.

Definition at line 138 of file submesh.hpp.

◆ IsSubMesh()

static bool mfem::SubMesh::IsSubMesh ( const Mesh * m)
inlinestatic

Check if Mesh m is a SubMesh.

Parameters
mThe input Mesh

Definition at line 172 of file submesh.hpp.

◆ Transfer()

void mfem::SubMesh::Transfer ( const GridFunction & src,
GridFunction & dst )
static

Transfer the dofs of a GridFunction.

The src GridFunction can either be defined on a Mesh or a SubMesh and is transferred appropriately.

Note
Either src or dst has to be defined on a SubMesh.
Parameters
[in]src
[out]dst

Definition at line 198 of file submesh.cpp.

Member Data Documentation

◆ GENERATED_ATTRIBUTE

const int mfem::SubMesh::GENERATED_ATTRIBUTE = 900
static

Definition at line 52 of file submesh.hpp.


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