A runtime binding between a term descriptor and its MFEM finite-element space. This is used to project down the compile time term descriptors into runtime reinterpretations which can then be used to extract things like the list of dofs, the element support, and the mesh. Note that this is a child of DofMap, therefor all term bindings are also dof maps.
More...
|
| | TermBinding (::mfem::FiniteElementSpace &space, std::shared_ptr< const ReconstructionPlan > reconstruction={}) |
| | Construct a term binding from an MFEM finite-element space. This requires that the term be a valid spatial term (SpatialTerm)
|
| |
| | TermBinding (::mfem::Mesh &mesh) |
| | Construct a term binding from an MFEM mesh. This requires that the term be a valid global scalar term (GlobalScalarTerm). E.g. the only way you can construct such a term binding is for things like the total mass, angular momentum, etc...
|
| |
| Elements | validated_elements () const |
| | Validate once before traversing elements without repeated mesh-wide scans.
|
| |
| const std::shared_ptr< const ReconstructionPlan > & | reconstruction () const noexcept |
| | Read the immutable physical-field representation retained by this binding.
|
| |
| const ElementReconstruction * | reconstruction_element (int element) const |
| | Select the reference adapter without adding work to ordinary elements.
|
| |
| | DofMap (const DofMap &)=delete |
| |
| DofMap & | operator= (const DofMap &)=delete |
| |
| | DofMap (DofMap &&)=delete |
| |
| DofMap & | operator= (DofMap &&)=delete |
| |
| ::mfem::FiniteElementSpace & | space () const |
| | Return the borrowed finite-element space associated with this DOF map.
|
| |
| ::mfem::Mesh & | mesh () const noexcept |
| | Return the borrowed mesh associated with this DOF map.
|
| |
| int | full_size () const noexcept |
| | Return the number of full-space DOFs, including those not supported by the element support.
|
| |
| int | size () const noexcept |
| | Return the number of supported DOFs, which is the size of the reduced coefficient vector.
|
| |
| std::optional< int > | reduced_dof (const int full_dof) const |
| | Locate a local coefficient represented by exactly one supported independent coordinate.
|
| |
| int | full_dof (const int reduced) const |
| | Return the representative local coefficient selected for one supported independent coordinate.
|
| |
| bool | constrained () const noexcept |
| | Report whether local coefficients require hanging-node interpolation.
|
| |
| int | true_size () const noexcept |
| | Return the full independent coordinate count before selecting material support.
|
| |
| template<typename Visitor> |
| void | for_each_coefficient (const int local_dof, Visitor &&visit) const |
| | Visit the supported independent coefficients contributing to one unsigned local DOF.
|
| |
| ::mfem::Vector | gather_true (const ::mfem::Vector &values) const |
| | Select supported coefficients from a full independent vector, without interpolation.
|
| |
| ::mfem::Vector | scatter_true (const ::mfem::Vector &values) const |
| | Expand supported coefficients into a full independent vector, without interpolation.
|
| |
| ::mfem::Vector | accumulate_dual (const ::mfem::Vector &full) const |
| | Accumulate local dual contributions with the transpose of coefficient expansion.
|
| |
| void | accumulate_dual (const ::mfem::Vector &full, ::mfem::Vector &result) const |
| | Accumulate local dual contributions while reusing caller storage.
|
| |
| bool | supports (const int element) const |
| | Check whether an element is supported by this dof map.
|
| |
| void | validate () const |
| | Validate the dof map.
|
| |
| void | validate_values (const ::mfem::Vector &values) const |
| | Check supported coefficient count and finiteness.
|
| |
| ::mfem::Vector | gather (const ::mfem::Vector &full) const |
| | Restrict a full coefficient vector to supported DOFs.
|
| |
| void | gather (const ::mfem::Vector &full, ::mfem::Vector &result) const |
| | Restrict supported coefficients while reusing the destination allocation.
|
| |
| ::mfem::Vector | scatter (const ::mfem::Vector &reduced) const |
| | Expand supported independent coefficients into the constrained local field. Unsupported independent coordinates are zero. Interpolation can populate local coordinates outside the supported elements; element support still controls physical integration.
|
| |
| void | element_values (int element, const ::mfem::Vector &reduced, ::mfem::Vector &values) const |
| | Extract element coefficients, including primal orientation transforms.
|
| |
| void | add_element (int element, ::mfem::Vector &values, ::mfem::Vector &full) const |
| | Apply dual orientation transforms and add an element residual.
|
| |
template<typename TermT, domain::schema::IsSchema SchemaT>
requires (blocks::SpatialTerm<TermT> || blocks::GlobalScalarTerm<TermT>)
class serif::discretization::backend::mfem::TermBinding< TermT, SchemaT >
A runtime binding between a term descriptor and its MFEM finite-element space. This is used to project down the compile time term descriptors into runtime reinterpretations which can then be used to extract things like the list of dofs, the element support, and the mesh. Note that this is a child of DofMap, therefor all term bindings are also dof maps.
- Template Parameters
-
| TermT | The term descriptor type to bind to. Note that if the FiniteElementSpace is not a global scalar then this must be a spatial term descriptor (SpatialTerm) |
| SchemaT | The domain schema type to bind to. This must be a valid schema (IsSchema) |