MFEM v4.8.0
Finite element discretization library
Loading...
Searching...
No Matches
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  H1SpaceLumpedMassOperator
 
class  H1SpaceMixedMassOperator
 
class  L2Projection
 
class  L2ProjectionH1Space
 Class below must be public as we now have device code. More...
 
class  L2ProjectionL2Space
 
class  L2Prolongation
 

Public Member Functions

 L2ProjectionGridTransfer (FiniteElementSpace &coarse_fes_, FiniteElementSpace &fine_fes_, bool force_l2_space_=false, MemoryType d_mt_=Device::GetHostMemoryType())
 
virtual ~L2ProjectionGridTransfer ()
 
const OperatorForwardOperator () override
 Return an Operator that transfers GridFunctions from the domain FE space to GridFunctions in the range FE space.
 
const OperatorBackwardOperator () override
 Return an Operator that transfers GridFunctions from the range FE space back to GridFunctions in the domain FE space.
 
bool SupportsBackwardsOperator () const override
 
- Public Member Functions inherited from mfem::GridTransfer
 GridTransfer (FiniteElementSpace &dom_fes_, FiniteElementSpace &ran_fes_)
 
virtual ~GridTransfer ()
 Virtual destructor.
 
void UseEA (bool use_ea_)
 
void SetMemType (MemoryType d_mt_)
 
void SetOperatorType (Operator::Type type)
 Set the desired Operator::Type for the construction of all operators defined by the underlying transfer algorithm.
 
virtual const OperatorTrueForwardOperator ()
 Return an Operator that transfers true-dof Vectors from the domain FE space to true-dof Vectors in the range FE space.
 
virtual const OperatorTrueBackwardOperator ()
 Return an Operator that transfers true-dof Vectors from the range FE space back to true-dof Vectors in the domain FE space.
 

Public Attributes

L2ProjectionF
 Forward, coarse-to-fine, operator.
 
L2ProlongationB
 Backward, fine-to-coarse, operator.
 
bool force_l2_space
 

Additional Inherited Members

- Protected Member Functions inherited from mfem::GridTransfer
bool Parallel () const
 
const OperatorMakeTrueOperator (FiniteElementSpace &fes_in, FiniteElementSpace &fes_out, const Operator &oper, OperatorHandle &t_oper)
 
- Protected Attributes inherited from mfem::GridTransfer
FiniteElementSpacedom_fes
 Domain FE space.
 
FiniteElementSpaceran_fes
 Range FE space.
 
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.
 
OperatorHandle fw_t_oper
 Forward true-dof operator.
 
OperatorHandle bw_t_oper
 Backward true-dof operator.
 
bool use_ea
 
MemoryType d_mt
 
bool parallel
 

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 183 of file transfer.hpp.

Constructor & Destructor Documentation

◆ L2ProjectionGridTransfer()

mfem::L2ProjectionGridTransfer::L2ProjectionGridTransfer ( FiniteElementSpace & coarse_fes_,
FiniteElementSpace & fine_fes_,
bool force_l2_space_ = false,
MemoryType d_mt_ = Device::GetHostMemoryType() )
inline

Definition at line 516 of file transfer.hpp.

◆ ~L2ProjectionGridTransfer()

mfem::L2ProjectionGridTransfer::~L2ProjectionGridTransfer ( )
virtual

Definition at line 1979 of file transfer.cpp.

Member Function Documentation

◆ BackwardOperator()

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

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 1991 of file transfer.cpp.

◆ ForwardOperator()

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

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

Implements mfem::GridTransfer.

Definition at line 1985 of file transfer.cpp.

◆ SupportsBackwardsOperator()

bool mfem::L2ProjectionGridTransfer::SupportsBackwardsOperator ( ) const
overridevirtual

Reimplemented from mfem::GridTransfer.

Definition at line 2030 of file transfer.cpp.

Member Data Documentation

◆ B

L2Prolongation* mfem::L2ProjectionGridTransfer::B

Backward, fine-to-coarse, operator.

Definition at line 512 of file transfer.hpp.

◆ F

L2Projection* mfem::L2ProjectionGridTransfer::F

Forward, coarse-to-fine, operator.

Definition at line 511 of file transfer.hpp.

◆ force_l2_space

bool mfem::L2ProjectionGridTransfer::force_l2_space

Definition at line 513 of file transfer.hpp.


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