MFEM v4.10.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())
 Construct the unweighted L2 projection grid transfer.
 
 L2ProjectionGridTransfer (FiniteElementSpace &coarse_fes_, FiniteElementSpace &fine_fes_, CoefficientWithOrder coeff_ho_, CoefficientWithOrder coeff_lor_, bool force_l2_space_=false, MemoryType d_mt_=Device::GetHostMemoryType())
 Construct the weighted L2 projection grid transfer.
 
virtual ~L2ProjectionGridTransfer ()
 
const Operator & ForwardOperator () override
 Return an Operator that transfers GridFunctions from the domain FE space to GridFunctions in the range FE space.
 
const Operator & BackwardOperator () 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 Operator & TrueForwardOperator ()
 Return an Operator that transfers true-dof Vectors from the domain FE space to true-dof Vectors in the range FE space.
 
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.
 

Public Attributes

CoefficientWithOrder coeff_ho
 Coefficient for the mixed L2 inner product.
 
CoefficientWithOrder coeff_lor
 Coefficient for the low-order L2 inner product.
 
L2Projection * F
 Forward, coarse-to-fine, operator.
 
L2Prolongation * B
 Backward, fine-to-coarse, operator.
 
bool force_l2_space
 

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)
 
- Protected Attributes inherited from mfem::GridTransfer
FiniteElementSpace & dom_fes
 Domain FE space.
 
FiniteElementSpace & ran_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 197 of file transfer.hpp.

Constructor & Destructor Documentation

◆ L2ProjectionGridTransfer() [1/2]

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

Construct the unweighted L2 projection grid transfer.

Definition at line 569 of file transfer.hpp.

◆ L2ProjectionGridTransfer() [2/2]

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

Construct the weighted L2 projection grid transfer.

The low-order inner product is weighted by coeff_lor, and the mixed inner product is weighted by coeff_ho.

Definition at line 581 of file transfer.hpp.

◆ ~L2ProjectionGridTransfer()

mfem::L2ProjectionGridTransfer::~L2ProjectionGridTransfer ( )
virtual

Definition at line 2129 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 2141 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 2135 of file transfer.cpp.

◆ SupportsBackwardsOperator()

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

Reimplemented from mfem::GridTransfer.

Definition at line 2180 of file transfer.cpp.

Member Data Documentation

◆ B

L2Prolongation* mfem::L2ProjectionGridTransfer::B

Backward, fine-to-coarse, operator.

Definition at line 564 of file transfer.hpp.

◆ coeff_ho

CoefficientWithOrder mfem::L2ProjectionGridTransfer::coeff_ho

Coefficient for the mixed L2 inner product.

Definition at line 560 of file transfer.hpp.

◆ coeff_lor

CoefficientWithOrder mfem::L2ProjectionGridTransfer::coeff_lor

Coefficient for the low-order L2 inner product.

Definition at line 562 of file transfer.hpp.

◆ F

L2Projection* mfem::L2ProjectionGridTransfer::F

Forward, coarse-to-fine, operator.

Definition at line 563 of file transfer.hpp.

◆ force_l2_space

bool mfem::L2ProjectionGridTransfer::force_l2_space

Definition at line 565 of file transfer.hpp.


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