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

Extend one interleaved surface vector into the MFEM component-block volume layout. Stellar ownership wins at shared nodes. Both actions use the same scalar interpolation, so their pairing is Euclidean virtual work without an additional surface-area weight. More...

#include <radial_extension.hpp>

Collaboration diagram for serif::geometry::deformation::RadialExtension:
[legend]

Public Types

using Workspace = EmptyDeformationWorkspace
 
using InputSpace = spaces::SurfaceDisplacement
 
using OutputSpace = spaces::VolumeDisplacement
 

Public Member Functions

const std::shared_ptr< const RadialInterpolation > & interpolation () const noexcept
 Expose shared interpolation read-only for diagnostics and independent geometry checks.
 
std::span< const double > radial_weights () const noexcept
 Expose the ownership-selected radial response without permitting mutation.
 
std::size_t input_size () const noexcept
 Return the interleaved Cartesian surface-vector size.
 
std::size_t output_size () const noexcept
 Return the Cartesian component-block volume-vector size.
 
DeformationStatus apply (std::span< const double > surface_displacement, std::span< double > volume_displacement, Workspace={}) const
 Apply the fused radial extension without allocating action scratch. Input and output must not overlap. Discard output if an action reports failure.
 
DeformationStatus apply_transpose (std::span< const double > volume_force, std::span< double > surface_force, Workspace={}) const
 Transfer volume forces to surface forces using exactly the forward ownership.
 

Static Public Attributes

static constexpr bool is_linear = true
 

Private Member Functions

 RadialExtension (std::shared_ptr< const RadialInterpolation > interpolation, std::vector< double > radial_weights)
 Store already validated data without performing hidden numerical preparation.
 

Private Attributes

std::shared_ptr< const RadialInterpolation > m_interpolation
 
std::vector< double > m_radial_weights
 

Friends

std::expected< RadialExtension, DeformationFailure > make_radial_extension (std::shared_ptr< const RadialInterpolation > interpolation, PowerLawRadialExtension interior={}, FixedInfinityRadialExtension vacuum={})
 Compile regional weights while sharing the immutable surface interpolation. The interpolation factory has already established every reference-table invariant.
 

Detailed Description

Extend one interleaved surface vector into the MFEM component-block volume layout. Stellar ownership wins at shared nodes. Both actions use the same scalar interpolation, so their pairing is Euclidean virtual work without an additional surface-area weight.

Member Typedef Documentation

◆ InputSpace

◆ OutputSpace

◆ Workspace

Constructor & Destructor Documentation

◆ RadialExtension()

serif::geometry::deformation::RadialExtension::RadialExtension ( std::shared_ptr< const RadialInterpolation > interpolation,
std::vector< double > radial_weights )
private

Store already validated data without performing hidden numerical preparation.

Member Function Documentation

◆ apply()

DeformationStatus serif::geometry::deformation::RadialExtension::apply ( std::span< const double > surface_displacement,
std::span< double > volume_displacement,
Workspace = {} ) const
nodiscard

Apply the fused radial extension without allocating action scratch. Input and output must not overlap. Discard output if an action reports failure.

◆ apply_transpose()

DeformationStatus serif::geometry::deformation::RadialExtension::apply_transpose ( std::span< const double > volume_force,
std::span< double > surface_force,
Workspace = {} ) const
nodiscard

Transfer volume forces to surface forces using exactly the forward ownership.

◆ input_size()

std::size_t serif::geometry::deformation::RadialExtension::input_size ( ) const
inlinenodiscardnoexcept

Return the interleaved Cartesian surface-vector size.

◆ interpolation()

const std::shared_ptr< const RadialInterpolation > & serif::geometry::deformation::RadialExtension::interpolation ( ) const
inlinenodiscardnoexcept

Expose shared interpolation read-only for diagnostics and independent geometry checks.

◆ output_size()

std::size_t serif::geometry::deformation::RadialExtension::output_size ( ) const
inlinenodiscardnoexcept

Return the Cartesian component-block volume-vector size.

◆ radial_weights()

std::span< const double > serif::geometry::deformation::RadialExtension::radial_weights ( ) const
inlinenodiscardnoexcept

Expose the ownership-selected radial response without permitting mutation.

Friends And Related Symbol Documentation

◆ make_radial_extension

std::expected< RadialExtension, DeformationFailure > make_radial_extension ( std::shared_ptr< const RadialInterpolation > interpolation,
PowerLawRadialExtension interior = {},
FixedInfinityRadialExtension vacuum = {} )
friend

Compile regional weights while sharing the immutable surface interpolation. The interpolation factory has already established every reference-table invariant.

Member Data Documentation

◆ is_linear

bool serif::geometry::deformation::RadialExtension::is_linear = true
staticconstexpr

◆ m_interpolation

std::shared_ptr<const RadialInterpolation> serif::geometry::deformation::RadialExtension::m_interpolation
private

◆ m_radial_weights

std::vector<double> serif::geometry::deformation::RadialExtension::m_radial_weights
private

The documentation for this class was generated from the following files: