A mapping from a full MFEM finite-element space to a reduced set of DOFs that are supporter by the given element support. That is to say that if one has some set of dofs D (perhaps it looks like [0, 1, 2, 3, 4] as a hypothetical) and dofs 0, 2, and 4 are associated to domain A while 1 and 3 are associated to domain B. Then if one were to construct a DofMap with element support [1, 0, 1, 0, 1] (where 1 indicates that the element is supported and 0 indicates that it is not) then the reduced dof map would be [0, 2, 4] and the full to reduced map would be [-1, -1, 0, -1, 1].
More...
|
| 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.
|
| |
|
| ::mfem::FiniteElementSpace * | m_space |
| | Borrowed pointer to the finite-element space associated with this dof map, or nullptr for a global scalar. This must outlive this class.
|
| |
| ::mfem::Mesh & | m_mesh |
| | Borrowed reference to the mesh associated with this dof map. This must outlive this class.
|
| |
| long | m_space_sequence |
| | Sequence number of the finite-element space at construction, or -1 for a global scalar.
|
| |
| long | m_mesh_sequence |
| | Sequence number of the mesh at construction.
|
| |
| ::mfem::Array< int > | m_attributes |
| | Array of attribute indices associated with this dof map.
|
| |
| ::mfem::Array< int > | m_element_support |
| | Array of 0/1 values indicating whether each element is supported by this dof map.
|
| |
| const ::mfem::SparseMatrix * | m_prolongation {nullptr} |
| | Borrowed constraint matrix, guarded by the space revision.
|
| |
| ::mfem::Array< int > | m_true_to_reduced |
| | Independent coordinate to supported coordinate.
|
| |
| ::mfem::Array< int > | m_reduced_to_true |
| | Supported coordinate to independent coordinate.
|
| |
| ::mfem::Array< int > | m_reduced_to_full |
| | Mapping from reduced to full degrees of freedom.
|
| |
| ::mfem::Array< int > | m_full_to_reduced |
| | Mapping from full to reduced degrees of freedom.
|
| |
| std::optional<::mfem::Array< int > > | m_boundary_attributes |
| | Reconstructed bindings depend on boundary labels.
|
| |
| std::shared_ptr< const ReconstructionPlan > | m_reconstruction |
| | Immutable; a different representation requires a new binding.
|
| |
A mapping from a full MFEM finite-element space to a reduced set of DOFs that are supporter by the given element support. That is to say that if one has some set of dofs D (perhaps it looks like [0, 1, 2, 3, 4] as a hypothetical) and dofs 0, 2, and 4 are associated to domain A while 1 and 3 are associated to domain B. Then if one were to construct a DofMap with element support [1, 0, 1, 0, 1] (where 1 indicates that the element is supported and 0 indicates that it is not) then the reduced dof map would be [0, 2, 4] and the full to reduced map would be [-1, -1, 0, -1, 1].
- Note
- Solver coordinates are supported independent (true) DOFs. Element coefficients include hanging-node interpolation. Coefficient restriction and dual accumulation are separate operations. Distributed spaces are not supported.