![]() |
MFEM v4.8.0
Finite element discretization library
|
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>
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 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 |
![]() | |
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 | |
L2Projection * | F |
Forward, coarse-to-fine, operator. | |
L2Prolongation * | B |
Backward, fine-to-coarse, operator. | |
bool | force_l2_space |
Additional Inherited Members | |
![]() | |
bool | Parallel () const |
const Operator & | MakeTrueOperator (FiniteElementSpace &fes_in, FiniteElementSpace &fes_out, const Operator &oper, OperatorHandle &t_oper) |
![]() | |
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 |
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.
|
inline |
Definition at line 516 of file transfer.hpp.
|
virtual |
Definition at line 1979 of file transfer.cpp.
|
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.
|
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.
|
overridevirtual |
Reimplemented from mfem::GridTransfer.
Definition at line 2030 of file transfer.cpp.
L2Prolongation* mfem::L2ProjectionGridTransfer::B |
Backward, fine-to-coarse, operator.
Definition at line 512 of file transfer.hpp.
L2Projection* mfem::L2ProjectionGridTransfer::F |
Forward, coarse-to-fine, operator.
Definition at line 511 of file transfer.hpp.
bool mfem::L2ProjectionGridTransfer::force_l2_space |
Definition at line 513 of file transfer.hpp.