SERiF v0.0.1a
Stellar Evolution and Rotation in Four Dimensions
Loading...
Searching...
No Matches
serif::geometry::deformation::backend::mfem::ConstrainedRadialExtension Class Reference

Keep radial displacement continuous across hanging faces in local component-block coordinates. More...

#include <constrained_radial_extension.hpp>

Collaboration diagram for serif::geometry::deformation::backend::mfem::ConstrainedRadialExtension:
[legend]

Classes

struct  Workspace
 Reserve separate local and independent vectors for each caller's actions. More...
 

Public Types

using InputSpace = RadialExtension::InputSpace
 
using OutputSpace = RadialExtension::OutputSpace
 

Public Member Functions

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.
 

Static Public Attributes

static constexpr bool is_linear = true
 

Private Member Functions

 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.
 

Private Attributes

RadialExtension m_radial
 
std::unique_ptr< const ::mfem::SparseMatrix > m_prolongation
 
std::unique_ptr< const ::mfem::SparseMatrix > m_restriction
 

Friends

std::expected< ConstrainedRadialExtension, DeformationFailure > make_constrained_radial_extension (std::shared_ptr< const RadialInterpolation > interpolation, const ::mfem::FiniteElementSpace &displacement_space, PowerLawRadialExtension interior={}, FixedInfinityRadialExtension vacuum={})
 Compile the original radial extension and the matching serial component-block constraints.
 

Detailed Description

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.

Member Typedef Documentation

◆ InputSpace

◆ OutputSpace

Constructor & Destructor Documentation

◆ 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.

Member Function Documentation

◆ 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()

ConstrainedRadialExtension::Workspace serif::geometry::deformation::backend::mfem::ConstrainedRadialExtension::make_workspace ( ) const
inlinenodiscard

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.

Friends And Related Symbol Documentation

◆ make_constrained_radial_extension

std::expected< ConstrainedRadialExtension, DeformationFailure > make_constrained_radial_extension ( std::shared_ptr< const RadialInterpolation > interpolation,
const ::mfem::FiniteElementSpace & displacement_space,
PowerLawRadialExtension interior = {},
FixedInfinityRadialExtension vacuum = {} )
friend

Compile the original radial extension and the matching serial component-block constraints.

Member Data Documentation

◆ 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: