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

Transfer data in L2 and H1 finite element spaces between a coarse mesh and an embedded refined mesh using L2 projection. More...

#include <transfer.hpp>

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

Classes

class  L2Projection
 
class  L2ProjectionH1Space
 
class  L2ProjectionL2Space
 
class  L2Prolongation
 

Public Member Functions

 L2ProjectionGridTransfer (FiniteElementSpace &coarse_fes_, FiniteElementSpace &fine_fes_, bool force_l2_space_=false)
 
virtual ~L2ProjectionGridTransfer ()
 
virtual const Operator & ForwardOperator ()
 Return an Operator that transfers GridFunctions from the domain FE space to GridFunctions in the range FE space. More...
 
virtual const Operator & BackwardOperator ()
 Return an Operator that transfers GridFunctions from the range FE space back to GridFunctions in the domain FE space. More...
 
- Public Member Functions inherited from mfem::GridTransfer
 GridTransfer (FiniteElementSpace &dom_fes_, FiniteElementSpace &ran_fes_)
 
virtual ~GridTransfer ()
 Virtual destructor. More...
 
void SetOperatorType (Operator::Type type)
 Set the desired Operator::Type for the construction of all operators defined by the underlying transfer algorithm. More...
 
virtual const Operator & TrueForwardOperator ()
 Return an Operator that transfers true-dof Vectors from the domain FE space to true-dof Vectors in the range FE space. More...
 
virtual const Operator & TrueBackwardOperator ()
 Return an Operator that transfers true-dof Vectors from the range FE space back to true-dof Vectors in the domain FE space. More...
 

Protected Attributes

L2Projection * F
 Forward, coarse-to-fine, operator. More...
 
L2Prolongation * B
 Backward, fine-to-coarse, operator. More...
 
bool force_l2_space
 
- Protected Attributes inherited from mfem::GridTransfer
FiniteElementSpace & dom_fes
 Domain FE space. More...
 
FiniteElementSpace & ran_fes
 Range FE space. More...
 
Operator::Type oper_type
 Desired Operator::Type for the construction of all operators defined by the underlying transfer algorithm. It can be ignored by derived classes. More...
 
OperatorHandle fw_t_oper
 Forward true-dof operator. More...
 
OperatorHandle bw_t_oper
 Backward true-dof operator. More...
 
bool parallel
 

Additional Inherited Members

- Protected Member Functions inherited from mfem::GridTransfer
bool Parallel () const
 
const Operator & MakeTrueOperator (FiniteElementSpace &fes_in, FiniteElementSpace &fes_out, const Operator &oper, OperatorHandle &t_oper)
 

Detailed Description

Transfer data in L2 and H1 finite element spaces between a coarse mesh and an embedded refined mesh using L2 projection.

The forward, coarse-to-fine, transfer uses L2 projection. The backward, fine-to-coarse, transfer is defined as B = (F^t M_f F)^{-1} F^t M_f, where F is the forward transfer matrix, and M_f is the mass matrix on the coarse element. For L2 spaces, M_f is the mass matrix on the union of all fine elements comprising the coarse element. For H1 spaces, M_f is a diagonal (lumped) mass matrix computed through row-summation. Note that the backward transfer operator, B, is a left inverse of the forward transfer operator, F, i.e. B F = I. Both F and B are defined in physical space and, generally for L2 spaces, vary between different mesh elements.

This class supports H1 and L2 finite element spaces. Fine meshes are a uniform refinement of the coarse mesh, usually created through Mesh::MakeRefined. Generally, the coarse and fine FE spaces can have different orders, however, in order for the backward operator to be well-defined, the number of fine dofs (in a coarse element) should not be smaller than the number of coarse dofs.

Definition at line 168 of file transfer.hpp.

Constructor & Destructor Documentation

mfem::L2ProjectionGridTransfer::L2ProjectionGridTransfer ( FiniteElementSpace &  coarse_fes_,
FiniteElementSpace &  fine_fes_,
bool  force_l2_space_ = false 
)
inline

Definition at line 338 of file transfer.hpp.

mfem::L2ProjectionGridTransfer::~L2ProjectionGridTransfer ( )
virtual

Definition at line 866 of file transfer.cpp.

Member Function Documentation

const Operator & mfem::L2ProjectionGridTransfer::BackwardOperator ( )
virtual

Return an Operator that transfers GridFunctions from the range FE space back to GridFunctions in the domain FE space.

Implements mfem::GridTransfer.

Definition at line 878 of file transfer.cpp.

const Operator & mfem::L2ProjectionGridTransfer::ForwardOperator ( )
virtual

Return an Operator that transfers GridFunctions from the domain FE space to GridFunctions in the range FE space.

Implements mfem::GridTransfer.

Definition at line 872 of file transfer.cpp.

Member Data Documentation

L2Prolongation* mfem::L2ProjectionGridTransfer::B
protected

Backward, fine-to-coarse, operator.

Definition at line 334 of file transfer.hpp.

L2Projection* mfem::L2ProjectionGridTransfer::F
protected

Forward, coarse-to-fine, operator.

Definition at line 333 of file transfer.hpp.

bool mfem::L2ProjectionGridTransfer::force_l2_space
protected

Definition at line 335 of file transfer.hpp.


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