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

Abstract parallel finite element space. More...

#include <pfespace.hpp>

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

Public Member Functions

 ParFiniteElementSpace (const ParFiniteElementSpace &orig, ParMesh *pmesh=NULL, const FiniteElementCollection *fec=NULL)
 Copy constructor: deep copy all data from orig except the ParMesh, the FiniteElementCollection, and some derived data.
 
 ParFiniteElementSpace (const FiniteElementSpace &orig, ParMesh &pmesh, const FiniteElementCollection *fec=NULL)
 Convert/copy the local (Par)FiniteElementSpace orig to ParFiniteElementSpace: deep copy all data from orig except the Mesh, the FiniteElementCollection, and some derived data.
 
 ParFiniteElementSpace (ParMesh *pm, const FiniteElementSpace *global_fes, const int *partitioning, const FiniteElementCollection *f=NULL)
 Construct the local ParFiniteElementSpace corresponding to the global FE space, global_fes.
 
 ParFiniteElementSpace (ParMesh *pm, const FiniteElementCollection *f, int dim=1, int ordering=Ordering::byNODES)
 
 ParFiniteElementSpace (ParMesh *pm, NURBSExtension *ext, const FiniteElementCollection *f, int dim=1, int ordering=Ordering::byNODES)
 Construct a NURBS FE space based on the given NURBSExtension, ext.
 
MPI_Comm GetComm () const
 
int GetNRanks () const
 
int GetMyRank () const
 
ParMeshGetParMesh () const
 
int GetDofSign (int i)
 
HYPRE_BigIntGetDofOffsets () const
 
HYPRE_BigIntGetTrueDofOffsets () const
 
HYPRE_BigInt GlobalVSize () const
 
HYPRE_BigInt GlobalTrueVSize () const
 
int GetTrueVSize () const override
 Return the number of local vector true dofs.
 
void GetElementDofs (int i, Array< int > &dofs, DofTransformation &doftrans) const override
 The same as GetElementDofs(), but with a user-allocated DofTransformation object. doftrans must be allocated in advance and will be owned by the caller. The user can use the DofTransformation::GetDofTransformation method on the returned doftrans object to detect if the DofTransformation should actually be used.
 
void GetBdrElementDofs (int i, Array< int > &dofs, DofTransformation &doftrans) const override
 The same as GetBdrElementDofs(), but with a user-allocated DofTransformation object. doftrans must be allocated in advance and will be owned by the caller. The user can use the DofTransformation::GetDofTransformation method on the returned doftrans object to detect if the DofTransformation should actually be used.
 
int GetFaceDofs (int i, Array< int > &dofs, int variant=0) const override
 
const FiniteElementGetFE (int i) const override
 
const FaceRestrictionGetFaceRestriction (ElementDofOrdering f_ordering, FaceType type, L2FaceValues mul=L2FaceValues::DoubleValued) const override
 
void GetSharedEdgeDofs (int group, int ei, Array< int > &dofs) const
 
void GetSharedTriangleDofs (int group, int fi, Array< int > &dofs) const
 
void GetSharedQuadrilateralDofs (int group, int fi, Array< int > &dofs) const
 
HypreParMatrixDof_TrueDof_Matrix () const
 The true dof-to-dof interpolation matrix.
 
HypreParMatrixGetPartialConformingInterpolation ()
 For a non-conforming mesh, construct and return the interpolation matrix from the partially conforming true dofs to the local dofs.
 
HypreParVectorNewTrueDofVector ()
 
void DivideByGroupSize (real_t *vec)
 Scale a vector of true dofs.
 
GroupCommunicatorGroupComm ()
 Return a reference to the internal GroupCommunicator (on VDofs)
 
const GroupCommunicatorGroupComm () const
 Return a const reference to the internal GroupCommunicator (on VDofs)
 
GroupCommunicatorScalarGroupComm ()
 Return a new GroupCommunicator on scalar dofs, i.e. for VDim = 1.
 
void Synchronize (Array< int > &ldof_marker) const
 Given an integer array on the local degrees of freedom, perform a bitwise OR between the shared dofs.
 
void GetEssentialVDofs (const Array< int > &bdr_attr_is_ess, Array< int > &ess_dofs, int component=-1) const override
 Determine the boundary degrees of freedom.
 
void GetEssentialTrueDofs (const Array< int > &bdr_attr_is_ess, Array< int > &ess_tdof_list, int component=-1) const override
 
int GetLocalTDofNumber (int ldof) const
 
HYPRE_BigInt GetGlobalTDofNumber (int ldof) const
 Returns the global tdof number of the given local degree of freedom.
 
HYPRE_BigInt GetGlobalScalarTDofNumber (int sldof)
 
HYPRE_BigInt GetMyDofOffset () const
 
HYPRE_BigInt GetMyTDofOffset () const
 
const OperatorGetProlongationMatrix () const override
 The returned Operator is owned by the FiniteElementSpace.
 
const OperatorGetRestrictionOperator () const override
 
const SparseMatrixGetRestrictionMatrix () const override
 Get the R matrix which restricts a local dof vector to true dof vector.
 
void ExchangeFaceNbrData ()
 
int GetFaceNbrVSize () const
 
void GetFaceNbrElementVDofs (int i, Array< int > &vdofs, DofTransformation &doftrans) const
 
DofTransformationGetFaceNbrElementVDofs (int i, Array< int > &vdofs) const
 
void GetFaceNbrFaceVDofs (int i, Array< int > &vdofs) const
 
const FiniteElementGetFaceNbrFE (int i) const
 
const FiniteElementGetFaceNbrFaceFE (int i) const
 
const HYPRE_BigIntGetFaceNbrGlobalDofMap ()
 
ElementTransformationGetFaceNbrElementTransformation (int i) const
 
void Lose_Dof_TrueDof_Matrix ()
 
void LoseDofOffsets ()
 
void LoseTrueDofOffsets ()
 
bool Conforming () const
 
bool Nonconforming () const
 
bool SharedNDTriangleDofs () const
 
void GetTrueTransferOperator (const FiniteElementSpace &coarse_fes, OperatorHandle &T) const override
 Construct and return an Operator that can be used to transfer true-dof data from coarse_fes, defined on a coarse mesh, to this FE space, defined on a refined mesh.
 
void Update (bool want_transform=true) override
 
void UpdatesFinished () override
 Free ParGridFunction transformation matrix (if any), to save memory.
 
virtual ~ParFiniteElementSpace ()
 
void PrintPartitionStats ()
 
int TrueVSize () const
 Obsolete, kept for backward compatibility.
 
DofTransformationGetElementDofs (int elem, Array< int > &dofs) const
 
virtual void GetElementDofs (int elem, Array< int > &dofs, DofTransformation &doftrans) const
 
DofTransformationGetBdrElementDofs (int bel, Array< int > &dofs) const
 
virtual void GetBdrElementDofs (int bel, Array< int > &dofs, DofTransformation &doftrans) const
 
- Public Member Functions inherited from mfem::FiniteElementSpace
 FiniteElementSpace ()
 Default constructor: the object is invalid until initialized using the method Load().
 
 FiniteElementSpace (const FiniteElementSpace &orig, Mesh *mesh=NULL, const FiniteElementCollection *fec=NULL)
 Copy constructor: deep copy all data from orig except the Mesh, the FiniteElementCollection, and some derived data.
 
 FiniteElementSpace (Mesh *mesh, const FiniteElementCollection *fec, int vdim=1, int ordering=Ordering::byNODES)
 
 FiniteElementSpace (Mesh *mesh, NURBSExtension *ext, const FiniteElementCollection *fec, int vdim=1, int ordering=Ordering::byNODES)
 Construct a NURBS FE space based on the given NURBSExtension, ext.
 
FiniteElementSpaceoperator= (const FiniteElementSpace &)=delete
 Copy assignment not supported.
 
MeshGetMesh () const
 Returns the mesh.
 
const NURBSExtensionGetNURBSext () const
 
NURBSExtensionGetNURBSext ()
 
NURBSExtensionStealNURBSext ()
 
bool Conforming () const
 
bool Nonconforming () const
 
void SetElementOrder (int i, int p)
 Sets the order of the i'th finite element.
 
int GetElementOrder (int i) const
 Returns the order of the i'th finite element.
 
int GetMaxElementOrder () const
 Return the maximum polynomial order.
 
bool IsVariableOrder () const
 Returns true if the space contains elements of varying polynomial orders.
 
const SparseMatrixGetConformingProlongation () const
 The returned SparseMatrix is owned by the FiniteElementSpace.
 
const SparseMatrixGetConformingRestriction () const
 The returned SparseMatrix is owned by the FiniteElementSpace.
 
const SparseMatrixGetHpConformingRestriction () const
 The returned SparseMatrix is owned by the FiniteElementSpace.
 
virtual const OperatorGetProlongationMatrix () const
 The returned Operator is owned by the FiniteElementSpace.
 
const OperatorGetRestrictionTransposeOperator () const
 Return an operator that performs the transpose of GetRestrictionOperator.
 
virtual const OperatorGetRestrictionOperator () const
 An abstract operator that performs the same action as GetRestrictionMatrix.
 
virtual const SparseMatrixGetRestrictionMatrix () const
 The returned SparseMatrix is owned by the FiniteElementSpace.
 
virtual const SparseMatrixGetHpRestrictionMatrix () const
 The returned SparseMatrix is owned by the FiniteElementSpace.
 
const ElementRestrictionOperatorGetElementRestriction (ElementDofOrdering e_ordering) const
 Return an Operator that converts L-vectors to E-vectors.
 
virtual const FaceRestrictionGetFaceRestriction (ElementDofOrdering f_ordering, FaceType, L2FaceValues mul=L2FaceValues::DoubleValued) const
 Return an Operator that converts L-vectors to E-vectors on each face.
 
const QuadratureInterpolatorGetQuadratureInterpolator (const IntegrationRule &ir) const
 Return a QuadratureInterpolator that interpolates E-vectors to quadrature point values and/or derivatives (Q-vectors).
 
const QuadratureInterpolatorGetQuadratureInterpolator (const QuadratureSpace &qs) const
 Return a QuadratureInterpolator that interpolates E-vectors to quadrature point values and/or derivatives (Q-vectors).
 
const FaceQuadratureInterpolatorGetFaceQuadratureInterpolator (const IntegrationRule &ir, FaceType type) const
 Return a FaceQuadratureInterpolator that interpolates E-vectors to quadrature point values and/or derivatives (Q-vectors).
 
int GetOrder (int i) const
 Returns the polynomial degree of the i'th finite element.
 
int GetEdgeOrder (int edge, int variant=0) const
 
int GetFaceOrder (int face, int variant=0) const
 Returns the polynomial degree of the i'th face finite element.
 
int GetVDim () const
 Returns vector dimension.
 
int GetNDofs () const
 Returns number of degrees of freedom. This is the number of Local Degrees of Freedom.
 
int GetVSize () const
 Return the number of vector dofs, i.e. GetNDofs() x GetVDim().
 
virtual int GetTrueVSize () const
 Return the number of vector true (conforming) dofs.
 
int GetNConformingDofs () const
 
int GetConformingVSize () const
 
Ordering::Type GetOrdering () const
 Return the ordering method.
 
const FiniteElementCollectionFEColl () const
 
int GetNVDofs () const
 Number of all scalar vertex dofs.
 
int GetNEDofs () const
 Number of all scalar edge-interior dofs.
 
int GetNFDofs () const
 Number of all scalar face-interior dofs.
 
int GetNV () const
 Returns number of vertices in the mesh.
 
int GetNE () const
 Returns number of elements in the mesh.
 
int GetNF () const
 Returns number of faces (i.e. co-dimension 1 entities) in the mesh.
 
int GetNBE () const
 Returns number of boundary elements in the mesh.
 
int GetNFbyType (FaceType type) const
 Returns the number of faces according to the requested type.
 
int GetElementType (int i) const
 Returns the type of element i.
 
void GetElementVertices (int i, Array< int > &vertices) const
 Returns the vertices of element i.
 
int GetBdrElementType (int i) const
 Returns the type of boundary element i.
 
ElementTransformationGetElementTransformation (int i) const
 Returns ElementTransformation for the i-th element.
 
void GetElementTransformation (int i, IsoparametricTransformation *ElTr)
 Returns the transformation defining the i-th element in the user-defined variable ElTr.
 
ElementTransformationGetBdrElementTransformation (int i) const
 Returns ElementTransformation for the i-th boundary element.
 
int GetAttribute (int i) const
 
int GetBdrAttribute (int i) const
 
void GetPatchDofs (int patch, Array< int > &dofs) const
 Returns indices of degrees of freedom for NURBS patch index patch. Cartesian ordering is used, for the tensor-product degrees of freedom.
 
MFEM_DEPRECATED void RebuildElementToDofTable ()
 (
 
void ReorderElementToDofTable ()
 Reorder the scalar DOFs based on the element ordering.
 
const TableGetElementToFaceOrientationTable () const
 
const TableGetElementToDofTable () const
 Return a reference to the internal Table that stores the lists of scalar dofs, for each mesh element, as returned by GetElementDofs().
 
const TableGetBdrElementToDofTable () const
 Return a reference to the internal Table that stores the lists of scalar dofs, for each boundary mesh element, as returned by GetBdrElementDofs().
 
const TableGetFaceToDofTable () const
 Return a reference to the internal Table that stores the lists of scalar dofs, for each face in the mesh, as returned by GetFaceDofs(). In this context, "face" refers to a (dim-1)-dimensional mesh entity.
 
void BuildDofToArrays ()
 Initialize internal data that enables the use of the methods GetElementForDof() and GetLocalDofForDof().
 
int GetElementForDof (int i) const
 Return the index of the first element that contains dof i.
 
int GetLocalDofForDof (int i) const
 Return the local dof index in the first element that contains dof i.
 
virtual const FiniteElementGetFE (int i) const
 Returns pointer to the FiniteElement in the FiniteElementCollection associated with i'th element in the mesh object. Note: The method has been updated to abort instead of returning NULL for an empty partition.
 
const FiniteElementGetBE (int i) const
 Returns pointer to the FiniteElement in the FiniteElementCollection associated with i'th boundary face in the mesh object.
 
const FiniteElementGetFaceElement (int i) const
 Returns pointer to the FiniteElement in the FiniteElementCollection associated with i'th face in the mesh object. Faces in this case refer to the MESHDIM-1 primitive so in 2D they are segments and in 1D they are points.
 
const FiniteElementGetEdgeElement (int i, int variant=0) const
 Returns pointer to the FiniteElement in the FiniteElementCollection associated with i'th edge in the mesh object.
 
const FiniteElementGetTraceElement (int i, Geometry::Type geom_type) const
 Return the trace element from element 'i' to the given 'geom_type'.
 
virtual void GetEssentialVDofs (const Array< int > &bdr_attr_is_ess, Array< int > &ess_vdofs, int component=-1) const
 Mark degrees of freedom associated with boundary elements with the specified boundary attributes (marked in 'bdr_attr_is_ess'). For spaces with 'vdim' > 1, the 'component' parameter can be used to restricts the marked vDOFs to the specified component.
 
virtual void GetEssentialTrueDofs (const Array< int > &bdr_attr_is_ess, Array< int > &ess_tdof_list, int component=-1) const
 Get a list of essential true dofs, ess_tdof_list, corresponding to the boundary attributes marked in the array bdr_attr_is_ess. For spaces with 'vdim' > 1, the 'component' parameter can be used to restricts the marked tDOFs to the specified component.
 
void GetBoundaryTrueDofs (Array< int > &boundary_dofs, int component=-1)
 Get a list of all boundary true dofs, boundary_dofs. For spaces with 'vdim' > 1, the 'component' parameter can be used to restricts the marked tDOFs to the specified component. Equivalent to FiniteElementSpace::GetEssentialTrueDofs with all boundary attributes marked as essential.
 
void ConvertToConformingVDofs (const Array< int > &dofs, Array< int > &cdofs)
 For a partially conforming FE space, convert a marker array (nonzero entries are true) on the partially conforming dofs to a marker array on the conforming dofs. A conforming dofs is marked iff at least one of its dependent dofs is marked.
 
void ConvertFromConformingVDofs (const Array< int > &cdofs, Array< int > &dofs)
 For a partially conforming FE space, convert a marker array (nonzero entries are true) on the conforming dofs to a marker array on the (partially conforming) dofs. A dof is marked iff it depends on a marked conforming dofs, where dependency is defined by the ConformingRestriction matrix; in other words, a dof is marked iff it corresponds to a marked conforming dof.
 
SparseMatrixD2C_GlobalRestrictionMatrix (FiniteElementSpace *cfes)
 Generate the global restriction matrix from a discontinuous FE space to the continuous FE space of the same polynomial degree.
 
SparseMatrixD2Const_GlobalRestrictionMatrix (FiniteElementSpace *cfes)
 Generate the global restriction matrix from a discontinuous FE space to the piecewise constant FE space.
 
SparseMatrixH2L_GlobalRestrictionMatrix (FiniteElementSpace *lfes)
 Construct the restriction matrix from the FE space given by (*this) to the lower degree FE space given by (*lfes) which is defined on the same mesh.
 
void GetTransferOperator (const FiniteElementSpace &coarse_fes, OperatorHandle &T) const
 Construct and return an Operator that can be used to transfer GridFunction data from coarse_fes, defined on a coarse mesh, to this FE space, defined on a refined mesh.
 
virtual void GetTrueTransferOperator (const FiniteElementSpace &coarse_fes, OperatorHandle &T) const
 Construct and return an Operator that can be used to transfer true-dof data from coarse_fes, defined on a coarse mesh, to this FE space, defined on a refined mesh.
 
virtual void Update (bool want_transform=true)
 Reflect changes in the mesh: update number of DOFs, etc. Also, calculate GridFunction transformation operator (unless want_transform is false). Safe to call multiple times, does nothing if space already up to date.
 
const OperatorGetUpdateOperator ()
 Get the GridFunction update operator.
 
void GetUpdateOperator (OperatorHandle &T)
 Return the update operator in the given OperatorHandle, T.
 
void SetUpdateOperatorOwner (bool own)
 Set the ownership of the update operator: if set to false, the Operator returned by GetUpdateOperator() must be deleted outside the FiniteElementSpace.
 
void SetUpdateOperatorType (Operator::Type tid)
 Specify the Operator::Type to be used by the update operators.
 
virtual void UpdatesFinished ()
 Free the GridFunction update operator (if any), to save memory.
 
long GetSequence () const
 
bool IsDGSpace () const
 Return whether or not the space is discontinuous (L2)
 
void SetRelaxedHpConformity (bool relaxed=true)
 
void Save (std::ostream &out) const
 Save finite element space to output stream out.
 
FiniteElementCollectionLoad (Mesh *m, std::istream &input)
 Read a FiniteElementSpace from a stream. The returned FiniteElementCollection is owned by the caller.
 
virtual ~FiniteElementSpace ()
 
DofTransformationGetElementDofs (int elem, Array< int > &dofs) const
 Returns indices of degrees of freedom of element 'elem'. The returned indices are offsets into an ldof vector. See also GetElementVDofs().
 
DofTransformationGetBdrElementDofs (int bel, Array< int > &dofs) const
 Returns indices of degrees of freedom for boundary element 'bel'. The returned indices are offsets into an ldof vector. See also GetBdrElementVDofs().
 
int GetEdgeDofs (int edge, Array< int > &dofs, int variant=0) const
 Returns the indices of the degrees of freedom for the specified edge, including the DOFs for the vertices of the edge.
 
void GetVertexDofs (int i, Array< int > &dofs) const
 Returns the indices of the degrees of freedom for the specified vertices.
 
void GetElementInteriorDofs (int i, Array< int > &dofs) const
 Returns the indices of the degrees of freedom for the interior of the specified element.
 
int GetNumElementInteriorDofs (int i) const
 Returns the number of degrees of freedom associated with the interior of the specified element.
 
void GetFaceInteriorDofs (int i, Array< int > &dofs) const
 Returns the indices of the degrees of freedom for the interior of the specified face.
 
void GetEdgeInteriorDofs (int i, Array< int > &dofs) const
 Returns the indices of the degrees of freedom for the interior of the specified edge.
 
void GetVDofs (int vd, Array< int > &dofs, int ndofs=-1) const
 Returns the indices of all of the VDofs for the specified dimension 'vd'.
 
void DofsToVDofs (Array< int > &dofs, int ndofs=-1) const
 Compute the full set of vdofs corresponding to each entry in dofs.
 
void DofsToVDofs (int vd, Array< int > &dofs, int ndofs=-1) const
 Compute the set of vdofs corresponding to each entry in dofs for the given vector index vd.
 
int DofToVDof (int dof, int vd, int ndofs=-1) const
 Compute a single vdof corresponding to the index dof and the vector index vd.
 
int VDofToDof (int vdof) const
 Compute the inverse of the Dof to VDof mapping for a single index vdof.
 
DofTransformationGetElementVDofs (int i, Array< int > &vdofs) const
 Returns indices of degrees of freedom for the i'th element. The returned indices are offsets into an ldof vector with vdim not necessarily equal to 1. The returned indices are always ordered byNODES, irrespective of whether the space is byNODES or byVDIM. See also GetElementDofs().
 
void GetElementVDofs (int i, Array< int > &vdofs, DofTransformation &doftrans) const
 The same as GetElementVDofs(), but with a user-allocated DofTransformation object. doftrans must be allocated in advance and will be owned by the caller. The user can use the DofTransformation::GetDofTransformation method on the returned doftrans object to detect if the DofTransformation should actually be used.
 
DofTransformationGetBdrElementVDofs (int i, Array< int > &vdofs) const
 Returns indices of degrees of freedom for i'th boundary element. The returned indices are offsets into an ldof vector with vdim not necessarily equal to 1. See also GetBdrElementDofs().
 
void GetBdrElementVDofs (int i, Array< int > &vdofs, DofTransformation &doftrans) const
 The same as GetBdrElementVDofs(), but with a user-allocated DofTransformation object. doftrans must be allocated in advance and will be owned by the caller. The user can use the DofTransformation::GetDofTransformation method on the returned doftrans object to detect if the DofTransformation should actually be used.
 
void GetPatchVDofs (int i, Array< int > &vdofs) const
 Returns indices of degrees of freedom in vdofs for NURBS patch i.
 
void GetFaceVDofs (int i, Array< int > &vdofs) const
 Returns the indices of the degrees of freedom for the specified face, including the DOFs for the edges and the vertices of the face.
 
void GetEdgeVDofs (int i, Array< int > &vdofs) const
 Returns the indices of the degrees of freedom for the specified edge, including the DOFs for the vertices of the edge.
 
void GetVertexVDofs (int i, Array< int > &vdofs) const
 Returns the indices of the degrees of freedom for the specified vertices.
 
void GetElementInteriorVDofs (int i, Array< int > &vdofs) const
 Returns the indices of the degrees of freedom for the interior of the specified element.
 
void GetEdgeInteriorVDofs (int i, Array< int > &vdofs) const
 Returns the indices of the degrees of freedom for the interior of the specified edge.
 

Public Attributes

int num_face_nbr_dofs
 
Table face_nbr_element_dof
 
Table face_nbr_element_fos
 
Table face_nbr_ldof
 
Array< HYPRE_BigIntface_nbr_glob_dof_map
 
Table send_face_nbr_ldof
 

Additional Inherited Members

- Static Public Member Functions inherited from mfem::FiniteElementSpace
static void AdjustVDofs (Array< int > &vdofs)
 Remove the orientation information encoded into an array of dofs Some basis function types have a relative orientation associated with degrees of freedom shared between neighboring elements, see ldof for more information. An orientation mismatch is indicated in the dof indices by a negative index value. This method replaces such negative indices with the corresponding positive offsets.
 
static int EncodeDof (int entity_base, int idx)
 Helper to encode a sign flip into a DOF index (for Hcurl/Hdiv shapes).
 
static int DecodeDof (int dof)
 Helper to return the DOF associated with a sign encoded DOF.
 
static int DecodeDof (int dof, real_t &sign)
 Helper to determine the DOF and sign of a sign encoded DOF.
 
static void MarkerToList (const Array< int > &marker, Array< int > &list)
 Convert a Boolean marker array to a list containing all marked indices.
 
static void ListToMarker (const Array< int > &list, int marker_size, Array< int > &marker, int mark_val=-1)
 Convert an array of indices (list) to a Boolean marker array where all indices in the list are marked with the given value and the rest are set to zero.
 
- Protected Types inherited from mfem::FiniteElementSpace
using key_face = std::tuple< bool, ElementDofOrdering, FaceType, L2FaceValues >
 The face restriction operators, see GetFaceRestriction().
 
using map_L2F = std::unordered_map< const key_face, FaceRestriction *, key_hash >
 
typedef std::uint64_t VarOrderBits
 Bit-mask representing a set of orders needed by an edge/face.
 
- Protected Member Functions inherited from mfem::FiniteElementSpace
void UpdateNURBS ()
 
void Construct ()
 
void Destroy ()
 
void ConstructDoFTransArray ()
 
void DestroyDoFTransArray ()
 
void BuildElementToDofTable () const
 
void BuildBdrElementToDofTable () const
 
void BuildFaceToDofTable () const
 
void BuildNURBSFaceToDofTable () const
 Generates partial face_dof table for a NURBS space.
 
int GetElementOrderImpl (int i) const
 Return element order: internal version of GetElementOrder without checks.
 
void CalcEdgeFaceVarOrders (Array< VarOrderBits > &edge_orders, Array< VarOrderBits > &face_orders) const
 
int MakeDofTable (int ent_dim, const Array< int > &entity_orders, Table &entity_dofs, Array< char > *var_ent_order)
 
int FindDofs (const Table &var_dof_table, int row, int ndof) const
 Search row of a DOF table for a DOF set of size 'ndof', return first DOF.
 
int FindEdgeDof (int edge, int ndof) const
 
int FindFaceDof (int face, int ndof) const
 Similar to FindEdgeDof, but used for mixed meshes too.
 
int FirstFaceDof (int face, int variant=0) const
 
int GetNVariants (int entity, int index) const
 Return number of possible DOF variants for edge/face (var. order spaces).
 
int GetEntityDofs (int entity, int index, Array< int > &dofs, Geometry::Type master_geom=Geometry::INVALID, int variant=0) const
 Helper to get vertex, edge or face DOFs (entity=0,1,2 resp.).
 
int GetEntityVDofs (int entity, int index, Array< int > &dofs, Geometry::Type master_geom=Geometry::INVALID, int variant=0) const
 Helper to get vertex, edge or face VDOFs (entity=0,1,2 resp.).
 
int GetDegenerateFaceDofs (int index, Array< int > &dofs, Geometry::Type master_geom, int variant) const
 
int GetNumBorderDofs (Geometry::Type geom, int order) const
 
void BuildConformingInterpolation () const
 Calculate the cP and cR matrices for a nonconforming mesh.
 
void AddEdgeFaceDependencies (SparseMatrix &deps, Array< int > &master_dofs, const FiniteElement *master_fe, Array< int > &slave_dofs, int slave_face, const DenseMatrix *pm) const
 
void MakeVDimMatrix (SparseMatrix &mat) const
 Replicate 'mat' in the vector dimension, according to vdim ordering mode.
 
SparseMatrixRefinementMatrix_main (const int coarse_ndofs, const Table &coarse_elem_dof, const Table *coarse_elem_fos, const DenseTensor localP[]) const
 
void GetLocalRefinementMatrices (Geometry::Type geom, DenseTensor &localP) const
 
void GetLocalDerefinementMatrices (Geometry::Type geom, DenseTensor &localR) const
 
SparseMatrixRefinementMatrix (int old_ndofs, const Table *old_elem_dof, const Table *old_elem_fos)
 
SparseMatrixDerefinementMatrix (int old_ndofs, const Table *old_elem_dof, const Table *old_elem_fos)
 Calculate GridFunction restriction matrix after mesh derefinement.
 
void GetLocalRefinementMatrices (const FiniteElementSpace &coarse_fes, Geometry::Type geom, DenseTensor &localP) const
 Return in localP the local refinement matrices that map between fespaces after mesh refinement.
 
void Constructor (Mesh *mesh, NURBSExtension *ext, const FiniteElementCollection *fec, int vdim=1, int ordering=Ordering::byNODES)
 Help function for constructors + Load().
 
virtual void UpdateMeshPointer (Mesh *new_mesh)
 
void UpdateElementOrders ()
 Resize the elem_order array on mesh change.
 
virtual void CopyProlongationAndRestriction (const FiniteElementSpace &fes, const Array< int > *perm)
 Copies the prolongation and restriction matrices from fes.
 
- Static Protected Member Functions inherited from mfem::FiniteElementSpace
static int MinOrder (VarOrderBits bits)
 Return the minimum order (least significant bit set) in the bit mask.
 
static void AddDependencies (SparseMatrix &deps, Array< int > &master_dofs, Array< int > &slave_dofs, DenseMatrix &I, int skipfirst=0)
 
static bool DofFinalizable (int dof, const Array< bool > &finalized, const SparseMatrix &deps)
 
- Protected Attributes inherited from mfem::FiniteElementSpace
Meshmesh
 The mesh that FE space lives on (not owned).
 
const FiniteElementCollectionfec
 Associated FE collection (not owned).
 
int vdim
 Vector dimension (number of unknowns per degree of freedom).
 
Ordering::Type ordering
 
int ndofs
 Number of degrees of freedom. Number of unknowns is ndofs * vdim.
 
Array< char > elem_order
 
int nvdofs
 
int nedofs
 
int nfdofs
 
int nbdofs
 
int uni_fdof
 
int * bdofs
 internal DOFs of elements if mixed/var-order; NULL otherwise
 
Table var_edge_dofs
 
Table var_face_dofs
 NOTE: also used for spaces with mixed faces.
 
Array< char > var_edge_orders
 
Array< char > var_face_orders
 
Tableelem_dof
 
Tableelem_fos
 
Tablebdr_elem_dof
 
Tablebdr_elem_fos
 
Tableface_dof
 
Array< int > dof_elem_array
 
Array< int > dof_ldof_array
 
NURBSExtensionNURBSext
 
int own_ext
 
Array< int > face_to_be
 
Array< StatelessDofTransformation * > DoFTransArray
 
DofTransformation DoFTrans
 
std::unique_ptr< SparseMatrixcP
 
std::unique_ptr< SparseMatrixcR
 Conforming restriction matrix such that cR.cP=I.
 
std::unique_ptr< SparseMatrixcR_hp
 A version of the conforming restriction matrix for variable-order spaces.
 
bool cP_is_set
 
std::unique_ptr< OperatorR_transpose
 Operator computing the action of the transpose of the restriction.
 
OperatorHandle Th
 Transformation to apply to GridFunctions after space Update().
 
OperatorHandle L2E_nat
 The element restriction operators, see GetElementRestriction().
 
OperatorHandle L2E_lex
 
map_L2F L2F
 
Array< QuadratureInterpolator * > E2Q_array
 
Array< FaceQuadratureInterpolator * > E2IFQ_array
 
Array< FaceQuadratureInterpolator * > E2BFQ_array
 
long sequence
 
long mesh_sequence
 
bool orders_changed
 True if at least one element order changed (variable-order space only).
 
bool relaxed_hp
 
- Static Protected Attributes inherited from mfem::FiniteElementSpace
static constexpr int MaxVarOrder = 8*sizeof(VarOrderBits) - 1
 

Detailed Description

Abstract parallel finite element space.

Definition at line 28 of file pfespace.hpp.

Constructor & Destructor Documentation

◆ ParFiniteElementSpace() [1/5]

mfem::ParFiniteElementSpace::ParFiniteElementSpace ( const ParFiniteElementSpace orig,
ParMesh pmesh = NULL,
const FiniteElementCollection fec = NULL 
)

Copy constructor: deep copy all data from orig except the ParMesh, the FiniteElementCollection, and some derived data.

If the pmesh or fec pointers are NULL (default), then the new ParFiniteElementSpace will reuse the respective pointers from orig. If any of these pointers is not NULL, the given pointer will be used instead of the one used by orig.

Note
The objects pointed to by the pmesh and fec parameters must be either the same objects as the ones used by orig, or copies of them. Otherwise, the behavior is undefined.
Derived data objects, such as the parallel prolongation and restriction operators, the update operator, and any of the face-neighbor data, will not be copied, even if they are created in the orig object.

Definition at line 29 of file pfespace.cpp.

◆ ParFiniteElementSpace() [2/5]

mfem::ParFiniteElementSpace::ParFiniteElementSpace ( const FiniteElementSpace orig,
ParMesh pmesh,
const FiniteElementCollection fec = NULL 
)

Convert/copy the local (Par)FiniteElementSpace orig to ParFiniteElementSpace: deep copy all data from orig except the Mesh, the FiniteElementCollection, and some derived data.

Definition at line 37 of file pfespace.cpp.

◆ ParFiniteElementSpace() [3/5]

mfem::ParFiniteElementSpace::ParFiniteElementSpace ( ParMesh pm,
const FiniteElementSpace global_fes,
const int *  partitioning,
const FiniteElementCollection f = NULL 
)

Construct the local ParFiniteElementSpace corresponding to the global FE space, global_fes.

The parameter pm is the local ParMesh obtained by decomposing the global Mesh used by global_fes. The array partitioning represents the parallel decomposition - it maps global element ids to MPI ranks. If the FiniteElementCollection, f, is NULL (default), the FE collection used by global_fes will be reused. If f is not NULL, it must be the same as, or a copy of, the FE collection used by global_fes.

Note
Currently the partitioning array is not used by this constructor, it is required for general parallel variable-order support.

Definition at line 45 of file pfespace.cpp.

◆ ParFiniteElementSpace() [4/5]

mfem::ParFiniteElementSpace::ParFiniteElementSpace ( ParMesh pm,
const FiniteElementCollection f,
int  dim = 1,
int  ordering = Ordering::byNODES 
)

Definition at line 61 of file pfespace.cpp.

◆ ParFiniteElementSpace() [5/5]

mfem::ParFiniteElementSpace::ParFiniteElementSpace ( ParMesh pm,
NURBSExtension ext,
const FiniteElementCollection f,
int  dim = 1,
int  ordering = Ordering::byNODES 
)

Construct a NURBS FE space based on the given NURBSExtension, ext.

The parameter ext will be deleted by this constructor, replaced by a ParNURBSExtension owned by the ParFiniteElementSpace.

Note
If the pointer ext is NULL, this constructor is equivalent to the standard constructor with the same arguments minus the NURBSExtension, ext.

Definition at line 68 of file pfespace.cpp.

◆ ~ParFiniteElementSpace()

virtual mfem::ParFiniteElementSpace::~ParFiniteElementSpace ( )
inlinevirtual

Definition at line 431 of file pfespace.hpp.

Member Function Documentation

◆ Conforming()

bool mfem::ParFiniteElementSpace::Conforming ( ) const
inline

Definition at line 409 of file pfespace.hpp.

◆ DivideByGroupSize()

void mfem::ParFiniteElementSpace::DivideByGroupSize ( real_t vec)

Scale a vector of true dofs.

Definition at line 974 of file pfespace.cpp.

◆ Dof_TrueDof_Matrix()

HypreParMatrix * mfem::ParFiniteElementSpace::Dof_TrueDof_Matrix ( ) const
inline

The true dof-to-dof interpolation matrix.

Definition at line 327 of file pfespace.hpp.

◆ ExchangeFaceNbrData()

void mfem::ParFiniteElementSpace::ExchangeFaceNbrData ( )

Definition at line 1226 of file pfespace.cpp.

◆ GetBdrElementDofs() [1/3]

DofTransformation * mfem::FiniteElementSpace::GetBdrElementDofs ( int  bel,
Array< int > &  dofs 
) const

Returns indexes of degrees of freedom for i'th boundary element and returns the DofTransformation data in a user-provided object.

Definition at line 833 of file fespace.cpp.

◆ GetBdrElementDofs() [2/3]

void mfem::FiniteElementSpace::GetBdrElementDofs ( int  bel,
Array< int > &  dofs,
DofTransformation doftrans 
) const
virtual

Returns indexes of degrees of freedom for i'th boundary element and returns the DofTransformation data in a user-provided object.

Reimplemented from mfem::FiniteElementSpace.

Definition at line 841 of file fespace.cpp.

◆ GetBdrElementDofs() [3/3]

void mfem::ParFiniteElementSpace::GetBdrElementDofs ( int  bel,
Array< int > &  dofs,
DofTransformation doftrans 
) const
overridevirtual

The same as GetBdrElementDofs(), but with a user-allocated DofTransformation object. doftrans must be allocated in advance and will be owned by the caller. The user can use the DofTransformation::GetDofTransformation method on the returned doftrans object to detect if the DofTransformation should actually be used.

Reimplemented from mfem::FiniteElementSpace.

Definition at line 493 of file pfespace.cpp.

◆ GetComm()

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

Definition at line 273 of file pfespace.hpp.

◆ GetDofOffsets()

HYPRE_BigInt * mfem::ParFiniteElementSpace::GetDofOffsets ( ) const
inline

Definition at line 281 of file pfespace.hpp.

◆ GetDofSign()

int mfem::ParFiniteElementSpace::GetDofSign ( int  i)
inline

Definition at line 279 of file pfespace.hpp.

◆ GetElementDofs() [1/3]

DofTransformation * mfem::FiniteElementSpace::GetElementDofs ( int  elem,
Array< int > &  dofs 
) const

Returns indexes of degrees of freedom in array dofs for i'th element and returns the DofTransformation data in a user-provided object.

Definition at line 810 of file fespace.cpp.

◆ GetElementDofs() [2/3]

void mfem::FiniteElementSpace::GetElementDofs ( int  elem,
Array< int > &  dofs,
DofTransformation doftrans 
) const
virtual

Returns indexes of degrees of freedom in array dofs for i'th element and returns the DofTransformation data in a user-provided object.

Reimplemented from mfem::FiniteElementSpace.

Definition at line 818 of file fespace.cpp.

◆ GetElementDofs() [3/3]

void mfem::ParFiniteElementSpace::GetElementDofs ( int  elem,
Array< int > &  dofs,
DofTransformation doftrans 
) const
overridevirtual

The same as GetElementDofs(), but with a user-allocated DofTransformation object. doftrans must be allocated in advance and will be owned by the caller. The user can use the DofTransformation::GetDofTransformation method on the returned doftrans object to detect if the DofTransformation should actually be used.

Reimplemented from mfem::FiniteElementSpace.

Definition at line 468 of file pfespace.cpp.

◆ GetEssentialTrueDofs()

void mfem::ParFiniteElementSpace::GetEssentialTrueDofs ( const Array< int > &  bdr_attr_is_ess,
Array< int > &  ess_tdof_list,
int  component = -1 
) const
overridevirtual

Get a list of essential true dofs, ess_tdof_list, corresponding to the boundary attributes marked in the array bdr_attr_is_ess.

Reimplemented from mfem::FiniteElementSpace.

Definition at line 1031 of file pfespace.cpp.

◆ GetEssentialVDofs()

void mfem::ParFiniteElementSpace::GetEssentialVDofs ( const Array< int > &  bdr_attr_is_ess,
Array< int > &  ess_dofs,
int  component = -1 
) const
overridevirtual

Determine the boundary degrees of freedom.

Reimplemented from mfem::FiniteElementSpace.

Definition at line 1020 of file pfespace.cpp.

◆ GetFaceDofs()

int mfem::ParFiniteElementSpace::GetFaceDofs ( int  i,
Array< int > &  dofs,
int  variant = 0 
) const
overridevirtual

Returns the indexes of the degrees of freedom for i'th face including the dofs for the edges and the vertices of the face.

Reimplemented from mfem::FiniteElementSpace.

Definition at line 518 of file pfespace.cpp.

◆ GetFaceNbrElementTransformation()

ElementTransformation * mfem::ParFiniteElementSpace::GetFaceNbrElementTransformation ( int  i) const
inline

Definition at line 402 of file pfespace.hpp.

◆ GetFaceNbrElementVDofs() [1/2]

DofTransformation * mfem::ParFiniteElementSpace::GetFaceNbrElementVDofs ( int  i,
Array< int > &  vdofs 
) const

Definition at line 1483 of file pfespace.cpp.

◆ GetFaceNbrElementVDofs() [2/2]

void mfem::ParFiniteElementSpace::GetFaceNbrElementVDofs ( int  i,
Array< int > &  vdofs,
DofTransformation doftrans 
) const

Definition at line 1467 of file pfespace.cpp.

◆ GetFaceNbrFaceFE()

const FiniteElement * mfem::ParFiniteElementSpace::GetFaceNbrFaceFE ( int  i) const

Definition at line 1533 of file pfespace.cpp.

◆ GetFaceNbrFaceVDofs()

void mfem::ParFiniteElementSpace::GetFaceNbrFaceVDofs ( int  i,
Array< int > &  vdofs 
) const

Definition at line 1491 of file pfespace.cpp.

◆ GetFaceNbrFE()

const FiniteElement * mfem::ParFiniteElementSpace::GetFaceNbrFE ( int  i) const

Definition at line 1519 of file pfespace.cpp.

◆ GetFaceNbrGlobalDofMap()

const HYPRE_BigInt * mfem::ParFiniteElementSpace::GetFaceNbrGlobalDofMap ( )
inline

Definition at line 401 of file pfespace.hpp.

◆ GetFaceNbrVSize()

int mfem::ParFiniteElementSpace::GetFaceNbrVSize ( ) const
inline

Definition at line 394 of file pfespace.hpp.

◆ GetFaceRestriction()

const FaceRestriction * mfem::ParFiniteElementSpace::GetFaceRestriction ( ElementDofOrdering  f_ordering,
FaceType  type,
L2FaceValues  mul = L2FaceValues::DoubleValued 
) const
overridevirtual

Returns an Operator that converts L-vectors to E-vectors on each face. The parallel version is different from the serial one because of the presence of shared faces. Shared faces are treated as interior faces, the returned operator handles the communication needed to get the shared face values from other MPI ranks

Reimplemented from mfem::FiniteElementSpace.

Definition at line 541 of file pfespace.cpp.

◆ GetFE()

const FiniteElement * mfem::ParFiniteElementSpace::GetFE ( int  i) const
overridevirtual

Returns pointer to the FiniteElement in the FiniteElementCollection associated with i'th element in the mesh object. If i is greater than or equal to the number of local mesh elements, i will be interpreted as a shifted index of a face neighbor element.

Reimplemented from mfem::FiniteElementSpace.

Definition at line 534 of file pfespace.cpp.

◆ GetGlobalScalarTDofNumber()

HYPRE_BigInt mfem::ParFiniteElementSpace::GetGlobalScalarTDofNumber ( int  sldof)

Returns the global tdof number of the given local degree of freedom in the scalar version of the current finite element space. The input should be a scalar local dof.

Definition at line 1115 of file pfespace.cpp.

◆ GetGlobalTDofNumber()

HYPRE_BigInt mfem::ParFiniteElementSpace::GetGlobalTDofNumber ( int  ldof) const

Returns the global tdof number of the given local degree of freedom.

Definition at line 1092 of file pfespace.cpp.

◆ GetLocalTDofNumber()

int mfem::ParFiniteElementSpace::GetLocalTDofNumber ( int  ldof) const

If the given ldof is owned by the current processor, return its local tdof number, otherwise return -1

Definition at line 1071 of file pfespace.cpp.

◆ GetMyDofOffset()

HYPRE_BigInt mfem::ParFiniteElementSpace::GetMyDofOffset ( ) const

Definition at line 1152 of file pfespace.cpp.

◆ GetMyRank()

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

Definition at line 275 of file pfespace.hpp.

◆ GetMyTDofOffset()

HYPRE_BigInt mfem::ParFiniteElementSpace::GetMyTDofOffset ( ) const

Definition at line 1157 of file pfespace.cpp.

◆ GetNRanks()

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

Definition at line 274 of file pfespace.hpp.

◆ GetParMesh()

ParMesh * mfem::ParFiniteElementSpace::GetParMesh ( ) const
inline

Definition at line 277 of file pfespace.hpp.

◆ GetPartialConformingInterpolation()

HypreParMatrix * mfem::ParFiniteElementSpace::GetPartialConformingInterpolation ( )

For a non-conforming mesh, construct and return the interpolation matrix from the partially conforming true dofs to the local dofs.

Note
The returned pointer must be deleted by the caller.

Definition at line 963 of file pfespace.cpp.

◆ GetProlongationMatrix()

const Operator * mfem::ParFiniteElementSpace::GetProlongationMatrix ( ) const
overridevirtual

The returned Operator is owned by the FiniteElementSpace.

Reimplemented from mfem::FiniteElementSpace.

Definition at line 1162 of file pfespace.cpp.

◆ GetRestrictionMatrix()

const SparseMatrix * mfem::ParFiniteElementSpace::GetRestrictionMatrix ( ) const
inlineoverridevirtual

Get the R matrix which restricts a local dof vector to true dof vector.

Reimplemented from mfem::FiniteElementSpace.

Definition at line 389 of file pfespace.hpp.

◆ GetRestrictionOperator()

const Operator * mfem::ParFiniteElementSpace::GetRestrictionOperator ( ) const
overridevirtual

Get an Operator that performs the action of GetRestrictionMatrix(), but potentially with a non-assembled optimized matrix-free implementation.

Reimplemented from mfem::FiniteElementSpace.

Definition at line 1193 of file pfespace.cpp.

◆ GetSharedEdgeDofs()

void mfem::ParFiniteElementSpace::GetSharedEdgeDofs ( int  group,
int  ei,
Array< int > &  dofs 
) const

Definition at line 583 of file pfespace.cpp.

◆ GetSharedQuadrilateralDofs()

void mfem::ParFiniteElementSpace::GetSharedQuadrilateralDofs ( int  group,
int  fi,
Array< int > &  dofs 
) const

Definition at line 630 of file pfespace.cpp.

◆ GetSharedTriangleDofs()

void mfem::ParFiniteElementSpace::GetSharedTriangleDofs ( int  group,
int  fi,
Array< int > &  dofs 
) const

Definition at line 606 of file pfespace.cpp.

◆ GetTrueDofOffsets()

HYPRE_BigInt * mfem::ParFiniteElementSpace::GetTrueDofOffsets ( ) const
inline

Definition at line 282 of file pfespace.hpp.

◆ GetTrueTransferOperator()

void mfem::ParFiniteElementSpace::GetTrueTransferOperator ( const FiniteElementSpace coarse_fes,
OperatorHandle T 
) const
overridevirtual

Construct and return an Operator that can be used to transfer true-dof data from coarse_fes, defined on a coarse mesh, to this FE space, defined on a refined mesh.

This method calls GetTransferOperator() and multiplies the result by the prolongation operator of coarse_fes on the right, and by the restriction operator of this FE space on the left.

The Operator::Type of T can be set to request an Operator of the set type. In serial, the supported types are: Operator::MFEM_SPARSEMAT and Operator::ANY_TYPE (matrix-free). In parallel, the supported types are: Operator::Hypre_ParCSR and Operator::ANY_TYPE. Any other type is treated as Operator::ANY_TYPE: the operator representation choice is made by this method.

Reimplemented from mfem::FiniteElementSpace.

Definition at line 3387 of file pfespace.cpp.

◆ GetTrueVSize()

int mfem::ParFiniteElementSpace::GetTrueVSize ( ) const
inlineoverridevirtual

Return the number of local vector true dofs.

Reimplemented from mfem::FiniteElementSpace.

Definition at line 289 of file pfespace.hpp.

◆ GlobalTrueVSize()

HYPRE_BigInt mfem::ParFiniteElementSpace::GlobalTrueVSize ( ) const
inline

Definition at line 285 of file pfespace.hpp.

◆ GlobalVSize()

HYPRE_BigInt mfem::ParFiniteElementSpace::GlobalVSize ( ) const
inline

Definition at line 283 of file pfespace.hpp.

◆ GroupComm() [1/2]

GroupCommunicator & mfem::ParFiniteElementSpace::GroupComm ( )
inline

Return a reference to the internal GroupCommunicator (on VDofs)

Definition at line 344 of file pfespace.hpp.

◆ GroupComm() [2/2]

const GroupCommunicator & mfem::ParFiniteElementSpace::GroupComm ( ) const
inline

Return a const reference to the internal GroupCommunicator (on VDofs)

Definition at line 347 of file pfespace.hpp.

◆ Lose_Dof_TrueDof_Matrix()

void mfem::ParFiniteElementSpace::Lose_Dof_TrueDof_Matrix ( )

Definition at line 1545 of file pfespace.cpp.

◆ LoseDofOffsets()

void mfem::ParFiniteElementSpace::LoseDofOffsets ( )
inline

Definition at line 406 of file pfespace.hpp.

◆ LoseTrueDofOffsets()

void mfem::ParFiniteElementSpace::LoseTrueDofOffsets ( )
inline

Definition at line 407 of file pfespace.hpp.

◆ NewTrueDofVector()

HypreParVector * mfem::ParFiniteElementSpace::NewTrueDofVector ( )
inline

Create and return a new HypreParVector on the true dofs, which is owned by (i.e. it must be destroyed by) the calling function.

Definition at line 337 of file pfespace.hpp.

◆ Nonconforming()

bool mfem::ParFiniteElementSpace::Nonconforming ( ) const
inline

Definition at line 410 of file pfespace.hpp.

◆ PrintPartitionStats()

void mfem::ParFiniteElementSpace::PrintPartitionStats ( )

Definition at line 193 of file pfespace.cpp.

◆ ScalarGroupComm()

GroupCommunicator * mfem::ParFiniteElementSpace::ScalarGroupComm ( )

Return a new GroupCommunicator on scalar dofs, i.e. for VDim = 1.

Note
The returned pointer must be deleted by the caller.

Definition at line 994 of file pfespace.cpp.

◆ SharedNDTriangleDofs()

bool mfem::ParFiniteElementSpace::SharedNDTriangleDofs ( ) const
inline

Definition at line 412 of file pfespace.hpp.

◆ Synchronize()

void mfem::ParFiniteElementSpace::Synchronize ( Array< int > &  ldof_marker) const

Given an integer array on the local degrees of freedom, perform a bitwise OR between the shared dofs.

For non-conforming mesh, synchronization is performed on the cut (aka "partially conforming") space.

Definition at line 1008 of file pfespace.cpp.

◆ TrueVSize()

int mfem::ParFiniteElementSpace::TrueVSize ( ) const
inline

Obsolete, kept for backward compatibility.

Definition at line 436 of file pfespace.hpp.

◆ Update()

void mfem::ParFiniteElementSpace::Update ( bool  want_transform = true)
overridevirtual

Reflect changes in the mesh. Calculate one of the refinement/derefinement /rebalance matrices, unless want_transform is false.

Reimplemented from mfem::FiniteElementSpace.

Definition at line 3414 of file pfespace.cpp.

◆ UpdatesFinished()

void mfem::ParFiniteElementSpace::UpdatesFinished ( )
inlineoverridevirtual

Free ParGridFunction transformation matrix (if any), to save memory.

Reimplemented from mfem::FiniteElementSpace.

Definition at line 425 of file pfespace.hpp.

Member Data Documentation

◆ face_nbr_element_dof

Table mfem::ParFiniteElementSpace::face_nbr_element_dof

Definition at line 208 of file pfespace.hpp.

◆ face_nbr_element_fos

Table mfem::ParFiniteElementSpace::face_nbr_element_fos

Definition at line 210 of file pfespace.hpp.

◆ face_nbr_glob_dof_map

Array<HYPRE_BigInt> mfem::ParFiniteElementSpace::face_nbr_glob_dof_map

Definition at line 214 of file pfespace.hpp.

◆ face_nbr_ldof

Table mfem::ParFiniteElementSpace::face_nbr_ldof

Definition at line 212 of file pfespace.hpp.

◆ num_face_nbr_dofs

int mfem::ParFiniteElementSpace::num_face_nbr_dofs

Definition at line 206 of file pfespace.hpp.

◆ send_face_nbr_ldof

Table mfem::ParFiniteElementSpace::send_face_nbr_ldof

Definition at line 216 of file pfespace.hpp.


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