Keep radial displacement continuous across hanging faces in local component-block coordinates.
More...
#include <constrained_radial_extension.hpp>
|
| struct | Workspace |
| | Reserve separate local and independent vectors for each caller's actions. More...
|
| |
|
| const std::shared_ptr< const RadialInterpolation > & | interpolation () const noexcept |
| | Expose the same immutable radial table as the unmodified physical extension.
|
| |
| std::span< const double > | radial_weights () const noexcept |
| | Expose the regional radial response before imposing finite-element continuity.
|
| |
| std::size_t | input_size () const noexcept |
| | Return the interleaved Cartesian surface displacement size.
|
| |
| std::size_t | output_size () const noexcept |
| | Retain local component-block output for the existing deformation consumers.
|
| |
| Workspace | make_workspace () const |
| | Allocate constraint scratch once, leaving conforming actions allocation-free.
|
| |
| DeformationStatus | apply (std::span< const double > surface, std::span< double > volume) const |
| | Apply radial motion with temporary constraint storage, preserving the two-argument calling form.
|
| |
| DeformationStatus | apply_transpose (std::span< const double > volume_force, std::span< double > surface_force) const |
| | Pull back volume work with temporary constraint storage, preserving the two-argument calling form.
|
| |
| DeformationStatus | apply (std::span< const double > surface, std::span< double > volume, Workspace &workspace) const |
| | Sample radial motion and reconstruct its hanging coefficients from independent values.
|
| |
| DeformationStatus | apply_transpose (std::span< const double > volume_force, std::span< double > surface_force, Workspace &workspace) const |
| | Pull back volume work through the exact transpose of the constrained extension.
|
| |
|
| | ConstrainedRadialExtension (RadialExtension radial, std::unique_ptr< const ::mfem::SparseMatrix > prolongation, std::unique_ptr< const ::mfem::SparseMatrix > restriction) |
| | Retain validated radial physics and optional owned finite-element constraints.
|
| |
| DeformationStatus | validate_workspace (const Workspace &workspace, std::span< const double > input, std::span< double > output) const |
| | Reject scratch from another map or buffers that alias caller-owned action data.
|
| |
Keep radial displacement continuous across hanging faces in local component-block coordinates.
- Note
- The fixed map is P R E: radial sampling E, coefficient restriction R, and prolongation P. Its transpose is E^T R^T P^T. Owned matrices keep published maps independent of later mesh changes.
◆ InputSpace
◆ OutputSpace
◆ ConstrainedRadialExtension()
| serif::geometry::deformation::backend::mfem::ConstrainedRadialExtension::ConstrainedRadialExtension |
( |
RadialExtension | radial, |
|
|
std::unique_ptr< const ::mfem::SparseMatrix > | prolongation, |
|
|
std::unique_ptr< const ::mfem::SparseMatrix > | restriction ) |
|
inlineprivate |
Retain validated radial physics and optional owned finite-element constraints.
◆ apply() [1/2]
| DeformationStatus serif::geometry::deformation::backend::mfem::ConstrainedRadialExtension::apply |
( |
std::span< const double > | surface, |
|
|
std::span< double > | volume ) const |
|
inlinenodiscard |
Apply radial motion with temporary constraint storage, preserving the two-argument calling form.
◆ apply() [2/2]
| DeformationStatus serif::geometry::deformation::backend::mfem::ConstrainedRadialExtension::apply |
( |
std::span< const double > | surface, |
|
|
std::span< double > | volume, |
|
|
Workspace & | workspace ) const |
|
inlinenodiscard |
Sample radial motion and reconstruct its hanging coefficients from independent values.
◆ apply_transpose() [1/2]
| DeformationStatus serif::geometry::deformation::backend::mfem::ConstrainedRadialExtension::apply_transpose |
( |
std::span< const double > | volume_force, |
|
|
std::span< double > | surface_force ) const |
|
inlinenodiscard |
Pull back volume work with temporary constraint storage, preserving the two-argument calling form.
◆ apply_transpose() [2/2]
| DeformationStatus serif::geometry::deformation::backend::mfem::ConstrainedRadialExtension::apply_transpose |
( |
std::span< const double > | volume_force, |
|
|
std::span< double > | surface_force, |
|
|
Workspace & | workspace ) const |
|
inlinenodiscard |
Pull back volume work through the exact transpose of the constrained extension.
◆ input_size()
| std::size_t serif::geometry::deformation::backend::mfem::ConstrainedRadialExtension::input_size |
( |
| ) |
const |
|
inlinenodiscardnoexcept |
Return the interleaved Cartesian surface displacement size.
◆ interpolation()
| const std::shared_ptr< const RadialInterpolation > & serif::geometry::deformation::backend::mfem::ConstrainedRadialExtension::interpolation |
( |
| ) |
const |
|
inlinenodiscardnoexcept |
Expose the same immutable radial table as the unmodified physical extension.
◆ make_workspace()
Allocate constraint scratch once, leaving conforming actions allocation-free.
◆ output_size()
| std::size_t serif::geometry::deformation::backend::mfem::ConstrainedRadialExtension::output_size |
( |
| ) |
const |
|
inlinenodiscardnoexcept |
Retain local component-block output for the existing deformation consumers.
◆ radial_weights()
| std::span< const double > serif::geometry::deformation::backend::mfem::ConstrainedRadialExtension::radial_weights |
( |
| ) |
const |
|
inlinenodiscardnoexcept |
Expose the regional radial response before imposing finite-element continuity.
◆ validate_workspace()
| DeformationStatus serif::geometry::deformation::backend::mfem::ConstrainedRadialExtension::validate_workspace |
( |
const Workspace & | workspace, |
|
|
std::span< const double > | input, |
|
|
std::span< double > | output ) const |
|
inlinenodiscardprivate |
Reject scratch from another map or buffers that alias caller-owned action data.
◆ make_constrained_radial_extension
Compile the original radial extension and the matching serial component-block constraints.
◆ is_linear
| bool serif::geometry::deformation::backend::mfem::ConstrainedRadialExtension::is_linear = true |
|
staticconstexpr |
◆ m_prolongation
| std::unique_ptr<const ::mfem::SparseMatrix> serif::geometry::deformation::backend::mfem::ConstrainedRadialExtension::m_prolongation |
|
private |
◆ m_radial
| RadialExtension serif::geometry::deformation::backend::mfem::ConstrainedRadialExtension::m_radial |
|
private |
◆ m_restriction
| std::unique_ptr<const ::mfem::SparseMatrix> serif::geometry::deformation::backend::mfem::ConstrainedRadialExtension::m_restriction |
|
private |
The documentation for this class was generated from the following file: