MFEM  v4.4.0
Finite element discretization library
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Pages
Public Member Functions | Protected Types | Protected Member Functions | Protected Attributes | List of all members
mfem::LORBase Class Reference

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. 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...
 
 ~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...
 
void AssembleSystem_ (BilinearForm &a_ho, const Array< int > &ess_dofs)
 
 LORBase (FiniteElementSpace &fes_ho_)
 

Protected Attributes

FiniteElementSpacefes_ho
 
Meshmesh
 
FiniteElementCollectionfec
 
FiniteElementSpacefes
 
BilinearForma
 
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

Enumerator
H1 
ND 
RT 
L2 
INVALID 

Definition at line 63 of file lor.hpp.

Constructor & Destructor Documentation

mfem::LORBase::LORBase ( FiniteElementSpace fes_ho_)
protected

Definition at line 348 of file lor.cpp.

mfem::LORBase::~LORBase ( )

Definition at line 368 of file lor.cpp.

Member Function Documentation

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

Assembles the LOR system (used internally by LORDiscretization::AssembleSystem and ParLORDiscretization::AssembleSystem).

Definition at line 264 of file lor.cpp.

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

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

Definition at line 204 of file lor.cpp.

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 85 of file lor.cpp.

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

Returns the assembled LOR system.

Definition at line 258 of file lor.cpp.

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 246 of file lor.cpp.

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

Returns the low-order refined finite element space.

Definition at line 121 of file lor.hpp.

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

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

Definition at line 68 of file lor.cpp.

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 79 of file lor.cpp.

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 252 of file lor.cpp.

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 287 of file lor.cpp.

Member Data Documentation

BilinearForm* mfem::LORBase::a
protected

Definition at line 69 of file lor.hpp.

OperatorHandle mfem::LORBase::A
protected

Definition at line 70 of file lor.hpp.

FiniteElementCollection* mfem::LORBase::fec
protected

Definition at line 67 of file lor.hpp.

FiniteElementSpace* mfem::LORBase::fes
protected

Definition at line 68 of file lor.hpp.

FiniteElementSpace& mfem::LORBase::fes_ho
protected

Definition at line 65 of file lor.hpp.

Mesh* mfem::LORBase::mesh
protected

Definition at line 66 of file lor.hpp.

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

Definition at line 71 of file lor.hpp.


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