!if! function=hasCapability('mfem')
Allows transfers of MFEM variables between MFEM-based applications via local
evaluation of shape functions at target nodal projection points. The variables may be defined on
different meshes and FESpaces of different orders, but must be real, share the same dimensionality,
and both belong to an MFEMProblem in their respective applications.
MultiAppMFEMShapeEvaluationTransfer executes transfers in three steps:
- Extraction of a vector of node positions in the
ParFiniteElementSpaceof the destinationmfem::ParGridFunction, usingMFEMNodalProjector. - Interpolation of the source
mfem::ParGridFunctionat this set of node locations, usingmfem::FindPointsGSLIBto perform the required gather/scatter operations to obtain a set of points on the local mesh partition, and perform shape function evaluations at these points. - Projection of the evaluated source variable values onto the destination variable nodes, to set
the destination variable degrees of freedom, using
MFEMNodalProjector.
For transfers between identical variables defined on the same mesh, users are recommended to use
MultiAppMFEMCopyTransfer for performance.
All MFEM to MFEM transfers executed from this class should be able to support:
- transfers of scalar and vector variables
- transfers between variables belonging to different finite element spaces and orders
- transfers between complex variables
- transfers between variables defined on submeshes and parent meshes
- arbitrary number of parallel processes for both the source and target application
- transfers between parent and child applications
- transfers between sibling applications (child to child)
- transfers from multiple variables to multiple variables
!syntax parameters /Transfers/MultiAppMFEMShapeEvaluationTransfer
!syntax inputs /Transfers/MultiAppMFEMShapeEvaluationTransfer
!syntax children /Transfers/MultiAppMFEMShapeEvaluationTransfer
!if-end!
!else !include mfem/mfem_warning.md