MFEM  v4.6.0
Finite element discretization library
Public Member Functions | Protected Types | Protected Member Functions | Protected Attributes | List of all members
mfem::LORBase Class Referenceabstract

Abstract base class for LORDiscretization and ParLORDiscretization classes, which construct low-order refined versions of bilinear forms. More...

#include <lor.hpp>

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

Public Member Functions

const OperatorHandleGetAssembledSystem () const
 Returns the assembled LOR system (const version). More...
 
OperatorHandleGetAssembledSystem ()
 Returns the assembled LOR system (non-const version). More...
 
void AssembleSystem (BilinearForm &a_ho, const Array< int > &ess_dofs)
 Assembles the LOR system corresponding to a_ho. More...
 
void LegacyAssembleSystem (BilinearForm &a_ho, const Array< int > &ess_dofs)
 Assembles the LOR system corresponding to a_ho using the legacy method. More...
 
const Array< int > & GetDofPermutation () const
 Returns the permutation that maps LOR DOFs to high-order DOFs. More...
 
FiniteElementSpaceGetFESpace () const
 Returns the low-order refined finite element space. More...
 
virtual ~LORBase ()
 

Protected Types

enum  FESpaceType {
  H1, ND, RT, L2,
  INVALID
}
 

Protected Member Functions

void ConstructLocalDofPermutation (Array< int > &perm_) const
 
void ConstructDofPermutation () const
 
bool HasSameDofNumbering () const
 
void SetupProlongationAndRestriction ()
 
FESpaceType GetFESpaceType () const
 Returns the type of finite element space: H1, ND, RT or L2. More...
 
int GetLOROrder () const
 Returns the order of the LOR space. 1 for H1 or ND, 0 for L2 or RT. More...
 
virtual void FormLORSpace ()=0
 Construct the LOR space (overridden for serial and parallel versions). More...
 
 LORBase (FiniteElementSpace &fes_ho_, int ref_type_)
 Construct the LORBase object for the given FE space and refinement type. More...
 

Protected Attributes

int ref_type
 
FiniteElementSpacefes_ho
 
Meshmesh = nullptr
 
FiniteElementCollectionfec = nullptr
 
FiniteElementSpacefes = nullptr
 
BilinearForma = nullptr
 
class BatchedLORAssemblybatched_lor = nullptr
 
OperatorHandle A
 
Array< int > perm
 

Detailed Description

Abstract base class for LORDiscretization and ParLORDiscretization classes, which construct low-order refined versions of bilinear forms.

Definition at line 22 of file lor.hpp.

Member Enumeration Documentation

◆ FESpaceType

Enumerator
H1 
ND 
RT 
L2 
INVALID 

Definition at line 63 of file lor.hpp.

Constructor & Destructor Documentation

◆ LORBase()

mfem::LORBase::LORBase ( FiniteElementSpace fes_ho_,
int  ref_type_ 
)
protected

Construct the LORBase object for the given FE space and refinement type.

Definition at line 337 of file lor.cpp.

◆ ~LORBase()

mfem::LORBase::~LORBase ( )
virtual

Definition at line 430 of file lor.cpp.

Member Function Documentation

◆ AssembleSystem()

void mfem::LORBase::AssembleSystem ( BilinearForm a_ho,
const Array< int > &  ess_dofs 
)

Assembles the LOR system corresponding to a_ho.

Definition at line 366 of file lor.cpp.

◆ ConstructDofPermutation()

void mfem::LORBase::ConstructDofPermutation ( ) const
protected

Construct the permutation that maps LOR DOFs to high-order DOFs. See GetDofPermutation.

Definition at line 209 of file lor.cpp.

◆ ConstructLocalDofPermutation()

void mfem::LORBase::ConstructLocalDofPermutation ( Array< int > &  perm_) const
protected

Constructs the local DOF (ldof) permutation. In parallel this is used as an intermediate step in computing the DOF permutation (see ConstructDofPermutation and GetDofPermutation).

Definition at line 90 of file lor.cpp.

◆ FormLORSpace()

virtual void mfem::LORBase::FormLORSpace ( )
protectedpure virtual

Construct the LOR space (overridden for serial and parallel versions).

Implemented in mfem::ParLORDiscretization, and mfem::LORDiscretization.

◆ GetAssembledSystem() [1/2]

const OperatorHandle & mfem::LORBase::GetAssembledSystem ( ) const

Returns the assembled LOR system (const version).

Definition at line 270 of file lor.cpp.

◆ GetAssembledSystem() [2/2]

OperatorHandle & mfem::LORBase::GetAssembledSystem ( )

Returns the assembled LOR system (non-const version).

Definition at line 264 of file lor.cpp.

◆ GetDofPermutation()

const Array< int > & mfem::LORBase::GetDofPermutation ( ) const

Returns the permutation that maps LOR DOFs to high-order DOFs.

This permutation is constructed the first time it is requested, and then is cached. For H1 and L2 finite element spaces (or for nonconforming spaces) this is the identity. In these cases, RequiresDofPermutation will return false. However, if the DOF permutation is requested, an identity permutation will be built and returned.

For vector finite element spaces (ND and RT), the DOF permutation is nontrivial. Returns an array perm such that, given an index i of a LOR dof, perm[i] is the index of the corresponding HO dof.

Definition at line 252 of file lor.cpp.

◆ GetFESpace()

FiniteElementSpace & mfem::LORBase::GetFESpace ( ) const

Returns the low-order refined finite element space.

Definition at line 357 of file lor.cpp.

◆ GetFESpaceType()

LORBase::FESpaceType mfem::LORBase::GetFESpaceType ( ) const
protected

Returns the type of finite element space: H1, ND, RT or L2.

Definition at line 73 of file lor.cpp.

◆ GetLOROrder()

int mfem::LORBase::GetLOROrder ( ) const
protected

Returns the order of the LOR space. 1 for H1 or ND, 0 for L2 or RT.

Definition at line 84 of file lor.cpp.

◆ HasSameDofNumbering()

bool mfem::LORBase::HasSameDofNumbering ( ) const
protected

Returns true if the LOR space and HO space have the same DOF numbering (H1 or L2 spaces), false otherwise (ND or RT spaces).

Definition at line 258 of file lor.cpp.

◆ LegacyAssembleSystem()

void mfem::LORBase::LegacyAssembleSystem ( BilinearForm a_ho,
const Array< int > &  ess_dofs 
)

Assembles the LOR system corresponding to a_ho using the legacy method.

Definition at line 386 of file lor.cpp.

◆ SetupProlongationAndRestriction()

void mfem::LORBase::SetupProlongationAndRestriction ( )
protected

Sets up the prolongation and restriction operators required in the case of different DOF numberings (ND or RT spaces) or nonconforming spaces.

Definition at line 276 of file lor.cpp.

Member Data Documentation

◆ a

BilinearForm* mfem::LORBase::a = nullptr
protected

Definition at line 70 of file lor.hpp.

◆ A

OperatorHandle mfem::LORBase::A
protected

Definition at line 72 of file lor.hpp.

◆ batched_lor

class BatchedLORAssembly* mfem::LORBase::batched_lor = nullptr
protected

Definition at line 71 of file lor.hpp.

◆ fec

FiniteElementCollection* mfem::LORBase::fec = nullptr
protected

Definition at line 68 of file lor.hpp.

◆ fes

FiniteElementSpace* mfem::LORBase::fes = nullptr
protected

Definition at line 69 of file lor.hpp.

◆ fes_ho

FiniteElementSpace& mfem::LORBase::fes_ho
protected

Definition at line 66 of file lor.hpp.

◆ mesh

Mesh* mfem::LORBase::mesh = nullptr
protected

Definition at line 67 of file lor.hpp.

◆ perm

Array<int> mfem::LORBase::perm
mutableprotected

Definition at line 73 of file lor.hpp.

◆ ref_type

int mfem::LORBase::ref_type
protected

Definition at line 65 of file lor.hpp.


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