SERiF v0.0.1a
Stellar Evolution and Rotation in Four Dimensions
Loading...
Searching...
No Matches
serif::model::backend::mfem Namespace Reference

Namespaces

namespace  detail
 

Classes

struct  BoundModel
 Retain physical descriptions and all numerical bindings behind one stable owner. More...
 
struct  ColumnContribution
 A coupling from state coordinates into an ordered selection of replacement rows. More...
 
struct  CoordinateRange
 One contiguous range of equation or state coordinates in an evaluated system. More...
 
struct  DeformationDiscretization
 Numerical surface representation and its reference geometry, separate from force equations. More...
 
class  EquilibriumEvaluator
 Evaluate explicit stellar candidates using one reusable dependency cache. More...
 
struct  JacobianContribution
 One frozen physical Jacobian coupling; overlapping contributions add. More...
 
class  LinearizedBlock
 An accepted physical block with optional efficient diagonal and sparse assembly operations. More...
 
struct  NoDeformation
 Prescribe displacement externally when no shape unknown is selected. More...
 
class  NormalizedSystem
 A frozen physical preparation and its owning solver coordinates, safe after later graph preparation. More...
 
class  PhysicalSystem
 Own one evaluated residual and Jacobian, retaining the discretization owner used by every child action. More...
 
class  PreconditionedSystem
 Retain one evaluated star and its matching inverse for a linear solve. More...
 
struct  ResidualContribution
 One evaluated equation contribution in the independently ordered residual coordinates. More...
 
struct  RowReplacement
 Replace complete equations after all ordinary and generated contributions have been added. More...
 
struct  ShapeDerivatives
 Share one accepted deformation and its projected derivative across all physical equations. More...
 
struct  StellarDiscretization
 Bind physical terms to existing finite-element resources with one explicit lifetime owner. More...
 
struct  SurfacePotentialLinearization
 Accepted surface moments and derivatives in existing shape and field coordinates. More...
 

Typedefs

using EquilibriumFailure
 Retain the original physical or numerical preparation failure and its diagnostic location.
 

Functions

template<utils::dependencies::IsKeyList Prescribed = utils::dependencies::KeyList<>, typename Model, typename Discretization, typename Coefficients>
auto bind_model_definition (std::shared_ptr< const Model > model, std::shared_ptr< const Discretization > discretization, const Coefficients &coefficients)
 Compile selections explicitly while leaving thermodynamic and equation evaluation to the graph.
 
template<typename Bound, typename Coefficients, typename Geometry>
auto equilibrium_inputs (const Bound &bound, const Coefficients &coefficients, const Geometry &geometry_coefficients)
 Build one input schema from an ordinary physical state and the selected geometry coordinates.
 
template<typename Plan, typename Discretization, typename Geometry>
Plan::Layout equilibrium_layout (const Discretization &discretization, const Geometry &geometry_coefficients)
 Resolve physical block sizes, including the explicitly supplied independent shape count.
 
LinearizedBlock displacement_projection (const discretization::backend::mfem::DofMap &binding)
 Map the deformation's component ordering into the supported displacement ordering once.
 
template<geometry::deformation::DeformationMap Map>
LinearizedBlock deformation_tangent (std::shared_ptr< const geometry::deformation::DeformationLinearization< Map > > state)
 Retain the accepted shape and expose its displacement tangent E and exact transpose E^T.
 
template<typename Owner, utils::dependencies::IsDependencyContext Bindings>
auto make_stellar_discretization (std::shared_ptr< Owner > owner, Bindings bindings, const ::mfem::GridFunction &compactification, const mapping::DomainMapper &mapper)
 Retain the supplied resource owner without copying finite-element spaces or changing their addresses.
 
template<typename Owner, typename Bindings, typename DomainModel>
auto with_deformation (StellarDiscretization< Owner, Bindings > discretization, DomainModel model, geometry::deformation::backend::mfem::ReferenceDiscretization reference)
 Add an explicit deformation prescription without changing the physical equation definition.
 
template<utils::dependencies::IsKeyList Prescribed = utils::dependencies::KeyList<>, utils::dependencies::IsBindings SpecificationMap = DefaultSpecificationBindings, utils::dependencies::IsKeyList ExplicitZeroCouplings = utils::dependencies::KeyList<>, StellarModelType Model, typename Discretization, typename Coefficients, typename Geometry, typename ObserverFactory = utils::dependencies::NoGraphObservers>
requires requires { typename Coefficients::Keys; }
auto bind_stellar_model (Model model, Discretization discretization, const Coefficients &coefficients, const Geometry &geometry, operators::backend::mfem::VolumeOptions options={}, ObserverFactory observer_factory={})
 Bind explicitly selected physics and external field views; initial values establish input types only.
 
template<utils::dependencies::IsKeyList Prescribed = utils::dependencies::KeyList<>, utils::dependencies::IsBindings SpecificationMap = DefaultSpecificationBindings, utils::dependencies::IsKeyList ExplicitZeroCouplings = utils::dependencies::KeyList<>, StellarModelType Model, typename Discretization, typename Options, typename Preconditioner, typename Coefficients, typename Geometry, typename ObserverFactory = utils::dependencies::NoGraphObservers>
requires requires { typename Coefficients::Keys; }
auto bind_stellar_model (DiscretizationOptions< Model, Discretization, Options, Preconditioner > configuration, const Coefficients &coefficients, const Geometry &geometry, operators::backend::mfem::VolumeOptions options={}, ObserverFactory observer_factory={})
 Bind configured numerical coordinates with external physical field views and geometry.
 
template<utils::dependencies::IsKeyList Prescribed = utils::dependencies::KeyList<>, utils::dependencies::IsBindings SpecificationMap = DefaultSpecificationBindings, utils::dependencies::IsKeyList ExplicitZeroCouplings = utils::dependencies::KeyList<>, StellarModelType Model, typename Discretization, typename Layout, utils::dependencies::IsDependencyContext Inputs = utils::dependencies::DependencyContext<>, typename ObserverFactory = utils::dependencies::NoGraphObservers>
requires utils::dependencies::ContainsKey<discretization::blocks::surface_deformation::coefficients, typename Layout::Values>
auto bind_stellar_model (Model model, Discretization discretization, const StellarState< Layout > &state, operators::backend::mfem::VolumeOptions options={}, const Inputs &prescribed=Inputs{}, ObserverFactory observer_factory={})
 Bind a moving star with all solved physical coefficients and shape coordinates in one state.
 
template<utils::dependencies::IsKeyList Prescribed = utils::dependencies::KeyList<>, utils::dependencies::IsBindings SpecificationMap = DefaultSpecificationBindings, utils::dependencies::IsKeyList ExplicitZeroCouplings = utils::dependencies::KeyList<>, StellarModelType Model, typename Discretization, typename Layout, utils::dependencies::IsDependencyContext Inputs = utils::dependencies::DependencyContext<>, typename ObserverFactory = utils::dependencies::NoGraphObservers>
requires (!utils::dependencies::ContainsKey<discretization::blocks::surface_deformation::coefficients, typename Layout::Values>)
auto bind_stellar_model (Model model, Discretization discretization, const StellarState< Layout > &state, const ::mfem::Vector &displacement, operators::backend::mfem::VolumeOptions options={}, const Inputs &prescribed=Inputs{}, ObserverFactory observer_factory={})
 Bind a fixed-geometry star while keeping prescribed displacement outside the solved coordinates.
 
template<utils::dependencies::IsKeyList Prescribed = utils::dependencies::KeyList<>, utils::dependencies::IsBindings SpecificationMap = DefaultSpecificationBindings, utils::dependencies::IsKeyList ExplicitZeroCouplings = utils::dependencies::KeyList<>, StellarModelType Model, typename Discretization, typename Options, typename Preconditioner, typename Layout, utils::dependencies::IsDependencyContext Inputs = utils::dependencies::DependencyContext<>, typename Services = detail::NoAdditionalComputations, typename ObserverFactory = utils::dependencies::NoGraphObservers>
requires utils::dependencies::ContainsKey<discretization::blocks::surface_deformation::coefficients, typename Layout::Values>
auto bind_stellar_model (DiscretizationOptions< Model, Discretization, Options, Preconditioner > configuration, const StellarState< Layout > &state, operators::backend::mfem::VolumeOptions options={}, const Inputs &prescribed=Inputs{}, Services services={}, ObserverFactory observer_factory={})
 Bind a moving state with normalization defaults resolved from its authoritative physical model.
 
template<utils::dependencies::IsKeyList Prescribed = utils::dependencies::KeyList<>, utils::dependencies::IsBindings SpecificationMap = DefaultSpecificationBindings, utils::dependencies::IsKeyList ExplicitZeroCouplings = utils::dependencies::KeyList<>, StellarModelType Model, typename Discretization, typename Options, typename Preconditioner, typename Layout, utils::dependencies::IsDependencyContext Inputs = utils::dependencies::DependencyContext<>, typename Services = detail::NoAdditionalComputations, typename ObserverFactory = utils::dependencies::NoGraphObservers>
requires (!utils::dependencies::ContainsKey<discretization::blocks::surface_deformation::coefficients, typename Layout::Values>)
auto bind_stellar_model (DiscretizationOptions< Model, Discretization, Options, Preconditioner > configuration, const StellarState< Layout > &state, const ::mfem::Vector &displacement, operators::backend::mfem::VolumeOptions options={}, const Inputs &prescribed=Inputs{}, Services services={}, ObserverFactory observer_factory={})
 Bind normalized fixed-geometry evaluation without introducing displacement unknowns.
 
discretization::backend::mfem::Resources make_stellar_resources (const StellarMeshOptions &options)
 Generate physical and logical meshes with the standard core/envelope/vacuum labels.
 
::mfem::FiniteElementSpace & make_space (discretization::backend::mfem::Resources &resources, std::unique_ptr<::mfem::FiniteElementCollection > collection, int components, int ordering=::mfem::Ordering::byNODES)
 Share identical collections and spaces, retaining native coefficient numbering and storage.
 
template<StellarModelType Model, detail::ReconstructionSpecification... Specifications>
auto make_stellar_discretization (const Model &, const StellarMeshOptions &options={}, const Specifications &... specifications)
 Create an owning fixed-geometry discretization using the physical model's term descriptors.
 
template<StellarModelType Model, typename Surface, typename Interior, typename Vacuum, detail::ReconstructionSpecification... Specifications>
auto make_stellar_discretization (const Model &model, const StellarMeshOptions &options, geometry::deformation::DomainDeformation< Surface, Interior, Vacuum > deformation, const Specifications &... specifications)
 Add a moving surface with reference companions chosen from displacement geometry, independently of EOS variables.
 
template<ExecutableInteriorEquations Registry, typename Discretization, typename Coefficients>
auto make_model_inputs (const Discretization &discretization, const Coefficients &coefficients)
 Supply the same physical coefficient resources to all explicitly listed interior equations.
 
template<ExecutableInteriorEquations Registry, typename Discretization, typename Coefficients>
auto make_model_inputs (const Discretization &discretization, const Coefficients &coefficients, const ::mfem::Vector &displacement)
 Prepare an interior system with a prescribed displacement field, without adding displacement unknowns.
 
template<typename Registry, typename Discretization, typename Coefficients>
void make_model_inputs (const Discretization &, const Coefficients &, const ::mfem::Vector &&)=delete
 Reject a displacement temporary whose coefficients would expire before graph preparation.
 
std::expected< std::shared_ptr< const NormalizedSystem >, std::string > make_normalized_system (std::shared_ptr< const PhysicalSystem > physical, solver::normalization::DiagonalNormalization coordinates, solver::normalization::StellarReferenceScales reference)
 Reject a nonrepresentable normalized residual before publishing the matching physical preparation.
 
std::expected< operators::backend::mfem::LinearizedBlock, operators::backend::mfem::PreparationRejection > cache_scalar_row (const operators::backend::mfem::LinearizedBlock &source)
 Retain one scalar equation's coefficient derivatives instead of repeating its integration.
 
SurfacePotentialLinearization assemble_surface_potential (const equations::SurfacePotentialBalance &equation, const geometry::deformation::backend::mfem::SurfaceDiscretization &discretization, const geometry::deformation::ReferenceSurface &reference, const geometry::deformation::SurfaceEmbedding &embedding, std::span< const double > displacement, const discretization::backend::mfem::DofMap &potential_binding, const ::mfem::Vector &potential, double level, double angular_velocity)
 Integrate the effective-potential balance using dS_reference / area_reference.
 
std::shared_ptr< const PhysicalSystem > make_physical_system (int residual_size, int state_size, std::vector< ResidualContribution > residuals, std::vector< JacobianContribution > jacobian, std::vector< RowReplacement > replacements={}, std::shared_ptr< const void > owner={}, std::optional< std::vector< JacobianContribution > > complete_actions={})
 Publish an immutable evaluated system that remains independent of later graph preparation.
 
template<operators::VolumeEquation Equation, typename Schema>
std::vector< double > volume_residual_values (const std::shared_ptr< const operators::backend::mfem::VolumeData< Equation, Schema > > &data)
 Copy the accepted volume residual for additive physical system assembly.
 
template<operators::VolumeEquation Equation, typename Schema>
LinearizedBlock volume_geometry_block (std::shared_ptr< const operators::backend::mfem::VolumeData< Equation, Schema > > data)
 Select only the displacement derivative while reusing the equation's complete geometry and transpose kernels.
 
template<operators::VolumeEquation Equation, typename Schema, discretization::blocks::SystemLayoutType Layout>
LinearizedBlock volume_row_action (std::shared_ptr< const operators::backend::mfem::VolumeData< Equation, Schema > > data, const Layout &layout, std::optional< ColumnContribution > geometry={})
 Apply every solved field and geometry direction in one traversal of an accepted volume equation.
 

Typedef Documentation

◆ EquilibriumFailure

Initial value:
Describe a rejected geometry calculation; the dependency cache publishes results only after success.
Definition failure.hpp:17
A rejected thermodynamic candidate, with a sample index when evaluating a boundary batch.
Definition linearization.hpp:20
A recoverable preparation failure, including the numerical reason and how to correct it.
Definition failure.hpp:10

Retain the original physical or numerical preparation failure and its diagnostic location.

Function Documentation

◆ assemble_surface_potential()

SurfacePotentialLinearization serif::model::backend::mfem::assemble_surface_potential ( const equations::SurfacePotentialBalance & equation,
const geometry::deformation::backend::mfem::SurfaceDiscretization & discretization,
const geometry::deformation::ReferenceSurface & reference,
const geometry::deformation::SurfaceEmbedding & embedding,
std::span< const double > displacement,
const discretization::backend::mfem::DofMap & potential_binding,
const ::mfem::Vector & potential,
double level,
double angular_velocity )
nodiscard

Integrate the effective-potential balance using dS_reference / area_reference.

Note
All matrices own accepted values. The reference measure and radial directions are fixed; only the centrifugal potential depends explicitly on material surface motion. Displacement contains three Cartesian components per selected reference node; shape rows and columns use the embedding's independent radial lengths or harmonic coefficients.

◆ bind_model_definition()

template<utils::dependencies::IsKeyList Prescribed = utils::dependencies::KeyList<>, typename Model, typename Discretization, typename Coefficients>
auto serif::model::backend::mfem::bind_model_definition ( std::shared_ptr< const Model > model,
std::shared_ptr< const Discretization > discretization,
const Coefficients & coefficients )
nodiscard

Compile selections explicitly while leaving thermodynamic and equation evaluation to the graph.

◆ bind_stellar_model() [1/6]

template<utils::dependencies::IsKeyList Prescribed = utils::dependencies::KeyList<>, utils::dependencies::IsBindings SpecificationMap = DefaultSpecificationBindings, utils::dependencies::IsKeyList ExplicitZeroCouplings = utils::dependencies::KeyList<>, StellarModelType Model, typename Discretization, typename Options, typename Preconditioner, typename Coefficients, typename Geometry, typename ObserverFactory = utils::dependencies::NoGraphObservers>
requires requires { typename Coefficients::Keys; }
auto serif::model::backend::mfem::bind_stellar_model ( DiscretizationOptions< Model, Discretization, Options, Preconditioner > configuration,
const Coefficients & coefficients,
const Geometry & geometry,
operators::backend::mfem::VolumeOptions options = {},
ObserverFactory observer_factory = {} )
nodiscard

Bind configured numerical coordinates with external physical field views and geometry.

Note
The optional final factory receives the completed graph type and supplies cache observers. The default installs no observers; timing and other observation are not physical inputs.

◆ bind_stellar_model() [2/6]

template<utils::dependencies::IsKeyList Prescribed = utils::dependencies::KeyList<>, utils::dependencies::IsBindings SpecificationMap = DefaultSpecificationBindings, utils::dependencies::IsKeyList ExplicitZeroCouplings = utils::dependencies::KeyList<>, StellarModelType Model, typename Discretization, typename Options, typename Preconditioner, typename Layout, utils::dependencies::IsDependencyContext Inputs = utils::dependencies::DependencyContext<>, typename Services = detail::NoAdditionalComputations, typename ObserverFactory = utils::dependencies::NoGraphObservers>
requires (!utils::dependencies::ContainsKey<discretization::blocks::surface_deformation::coefficients, typename Layout::Values>)
auto serif::model::backend::mfem::bind_stellar_model ( DiscretizationOptions< Model, Discretization, Options, Preconditioner > configuration,
const StellarState< Layout > & state,
const ::mfem::Vector & displacement,
operators::backend::mfem::VolumeOptions options = {},
const Inputs & prescribed = Inputs{},
Services services = {},
ObserverFactory observer_factory = {} )
nodiscard

Bind normalized fixed-geometry evaluation without introducing displacement unknowns.

Note
The optional final factory receives the completed graph type and supplies cache observers. The default installs no observers; timing and other observation are not physical inputs.

◆ bind_stellar_model() [3/6]

template<utils::dependencies::IsKeyList Prescribed = utils::dependencies::KeyList<>, utils::dependencies::IsBindings SpecificationMap = DefaultSpecificationBindings, utils::dependencies::IsKeyList ExplicitZeroCouplings = utils::dependencies::KeyList<>, StellarModelType Model, typename Discretization, typename Options, typename Preconditioner, typename Layout, utils::dependencies::IsDependencyContext Inputs = utils::dependencies::DependencyContext<>, typename Services = detail::NoAdditionalComputations, typename ObserverFactory = utils::dependencies::NoGraphObservers>
requires utils::dependencies::ContainsKey<discretization::blocks::surface_deformation::coefficients, typename Layout::Values>
auto serif::model::backend::mfem::bind_stellar_model ( DiscretizationOptions< Model, Discretization, Options, Preconditioner > configuration,
const StellarState< Layout > & state,
operators::backend::mfem::VolumeOptions options = {},
const Inputs & prescribed = Inputs{},
Services services = {},
ObserverFactory observer_factory = {} )
nodiscard

Bind a moving state with normalization defaults resolved from its authoritative physical model.

Note
The optional final factory receives the completed graph type and supplies cache observers. The default installs no observers; timing and other observation are not physical inputs.

◆ bind_stellar_model() [4/6]

template<utils::dependencies::IsKeyList Prescribed = utils::dependencies::KeyList<>, utils::dependencies::IsBindings SpecificationMap = DefaultSpecificationBindings, utils::dependencies::IsKeyList ExplicitZeroCouplings = utils::dependencies::KeyList<>, StellarModelType Model, typename Discretization, typename Coefficients, typename Geometry, typename ObserverFactory = utils::dependencies::NoGraphObservers>
requires requires { typename Coefficients::Keys; }
auto serif::model::backend::mfem::bind_stellar_model ( Model model,
Discretization discretization,
const Coefficients & coefficients,
const Geometry & geometry,
operators::backend::mfem::VolumeOptions options = {},
ObserverFactory observer_factory = {} )
nodiscard

Bind explicitly selected physics and external field views; initial values establish input types only.

Note
The optional final factory receives the completed graph type and supplies cache observers. The default installs no observers; timing and other observation are not physical inputs.

◆ bind_stellar_model() [5/6]

template<utils::dependencies::IsKeyList Prescribed = utils::dependencies::KeyList<>, utils::dependencies::IsBindings SpecificationMap = DefaultSpecificationBindings, utils::dependencies::IsKeyList ExplicitZeroCouplings = utils::dependencies::KeyList<>, StellarModelType Model, typename Discretization, typename Layout, utils::dependencies::IsDependencyContext Inputs = utils::dependencies::DependencyContext<>, typename ObserverFactory = utils::dependencies::NoGraphObservers>
requires (!utils::dependencies::ContainsKey<discretization::blocks::surface_deformation::coefficients, typename Layout::Values>)
auto serif::model::backend::mfem::bind_stellar_model ( Model model,
Discretization discretization,
const StellarState< Layout > & state,
const ::mfem::Vector & displacement,
operators::backend::mfem::VolumeOptions options = {},
const Inputs & prescribed = Inputs{},
ObserverFactory observer_factory = {} )
nodiscard

Bind a fixed-geometry star while keeping prescribed displacement outside the solved coordinates.

Note
The optional final factory receives the completed graph type and supplies cache observers. The default installs no observers; timing and other observation are not physical inputs.

◆ bind_stellar_model() [6/6]

template<utils::dependencies::IsKeyList Prescribed = utils::dependencies::KeyList<>, utils::dependencies::IsBindings SpecificationMap = DefaultSpecificationBindings, utils::dependencies::IsKeyList ExplicitZeroCouplings = utils::dependencies::KeyList<>, StellarModelType Model, typename Discretization, typename Layout, utils::dependencies::IsDependencyContext Inputs = utils::dependencies::DependencyContext<>, typename ObserverFactory = utils::dependencies::NoGraphObservers>
requires utils::dependencies::ContainsKey<discretization::blocks::surface_deformation::coefficients, typename Layout::Values>
auto serif::model::backend::mfem::bind_stellar_model ( Model model,
Discretization discretization,
const StellarState< Layout > & state,
operators::backend::mfem::VolumeOptions options = {},
const Inputs & prescribed = Inputs{},
ObserverFactory observer_factory = {} )
nodiscard

Bind a moving star with all solved physical coefficients and shape coordinates in one state.

Note
The optional final factory receives the completed graph type and supplies cache observers. The default installs no observers; timing and other observation are not physical inputs.

◆ cache_scalar_row()

std::expected< operators::backend::mfem::LinearizedBlock, operators::backend::mfem::PreparationRejection > serif::model::backend::mfem::cache_scalar_row ( const operators::backend::mfem::LinearizedBlock & source)
nodiscard

Retain one scalar equation's coefficient derivatives instead of repeating its integration.

Note
Applying the exact transpose to one recovers the complete row without probing state columns. The returned ordinary matrix owns its coefficients independently of the source action. Numerical overflow rejects this preparation; malformed operator dimensions remain caller errors.

◆ deformation_tangent()

template<geometry::deformation::DeformationMap Map>
LinearizedBlock serif::model::backend::mfem::deformation_tangent ( std::shared_ptr< const geometry::deformation::DeformationLinearization< Map > > state)
nodiscard

Retain the accepted shape and expose its displacement tangent E and exact transpose E^T.

◆ displacement_projection()

LinearizedBlock serif::model::backend::mfem::displacement_projection ( const discretization::backend::mfem::DofMap & binding)
nodiscard

Map the deformation's component ordering into the supported displacement ordering once.

◆ equilibrium_inputs()

template<typename Bound, typename Coefficients, typename Geometry>
auto serif::model::backend::mfem::equilibrium_inputs ( const Bound & bound,
const Coefficients & coefficients,
const Geometry & geometry_coefficients )
nodiscard

Build one input schema from an ordinary physical state and the selected geometry coordinates.

◆ equilibrium_layout()

template<typename Plan, typename Discretization, typename Geometry>
Plan::Layout serif::model::backend::mfem::equilibrium_layout ( const Discretization & discretization,
const Geometry & geometry_coefficients )
nodiscard

Resolve physical block sizes, including the explicitly supplied independent shape count.

◆ make_model_inputs() [1/3]

template<typename Registry, typename Discretization, typename Coefficients>
void serif::model::backend::mfem::make_model_inputs ( const Discretization & ,
const Coefficients & ,
const ::mfem::Vector &&  )
delete

Reject a displacement temporary whose coefficients would expire before graph preparation.

◆ make_model_inputs() [2/3]

template<ExecutableInteriorEquations Registry, typename Discretization, typename Coefficients>
auto serif::model::backend::mfem::make_model_inputs ( const Discretization & discretization,
const Coefficients & coefficients )
nodiscard

Supply the same physical coefficient resources to all explicitly listed interior equations.

◆ make_model_inputs() [3/3]

template<ExecutableInteriorEquations Registry, typename Discretization, typename Coefficients>
auto serif::model::backend::mfem::make_model_inputs ( const Discretization & discretization,
const Coefficients & coefficients,
const ::mfem::Vector & displacement )
nodiscard

Prepare an interior system with a prescribed displacement field, without adding displacement unknowns.

◆ make_normalized_system()

std::expected< std::shared_ptr< const NormalizedSystem >, std::string > serif::model::backend::mfem::make_normalized_system ( std::shared_ptr< const PhysicalSystem > physical,
solver::normalization::DiagonalNormalization coordinates,
solver::normalization::StellarReferenceScales reference )
inlinenodiscard

Reject a nonrepresentable normalized residual before publishing the matching physical preparation.

◆ make_physical_system()

std::shared_ptr< const PhysicalSystem > serif::model::backend::mfem::make_physical_system ( int residual_size,
int state_size,
std::vector< ResidualContribution > residuals,
std::vector< JacobianContribution > jacobian,
std::vector< RowReplacement > replacements = {},
std::shared_ptr< const void > owner = {},
std::optional< std::vector< JacobianContribution > > complete_actions = {} )
nodiscard

Publish an immutable evaluated system that remains independent of later graph preparation.

◆ make_space()

mfem::FiniteElementSpace & serif::model::backend::mfem::make_space ( discretization::backend::mfem::Resources & resources,
std::unique_ptr<::mfem::FiniteElementCollection > collection,
int components,
int ordering = ::mfem::Ordering::byNODES )
nodiscard

Share identical collections and spaces, retaining native coefficient numbering and storage.

◆ make_stellar_discretization() [1/3]

template<StellarModelType Model, detail::ReconstructionSpecification... Specifications>
auto serif::model::backend::mfem::make_stellar_discretization ( const Model & ,
const StellarMeshOptions & options = {},
const Specifications &... specifications )
nodiscard

Create an owning fixed-geometry discretization using the physical model's term descriptors.

Note
This convenience factory uses the standard spherical mesh and domain schema. The existing owner-and-bindings overload remains available for custom meshes, schemas, and native spaces.

◆ make_stellar_discretization() [2/3]

template<StellarModelType Model, typename Surface, typename Interior, typename Vacuum, detail::ReconstructionSpecification... Specifications>
auto serif::model::backend::mfem::make_stellar_discretization ( const Model & model,
const StellarMeshOptions & options,
geometry::deformation::DomainDeformation< Surface, Interior, Vacuum > deformation,
const Specifications &... specifications )
nodiscard

Add a moving surface with reference companions chosen from displacement geometry, independently of EOS variables.

◆ make_stellar_discretization() [3/3]

template<typename Owner, utils::dependencies::IsDependencyContext Bindings>
auto serif::model::backend::mfem::make_stellar_discretization ( std::shared_ptr< Owner > owner,
Bindings bindings,
const ::mfem::GridFunction & compactification,
const mapping::DomainMapper & mapper )
nodiscard

Retain the supplied resource owner without copying finite-element spaces or changing their addresses.

◆ make_stellar_resources()

discretization::backend::mfem::Resources serif::model::backend::mfem::make_stellar_resources ( const StellarMeshOptions & options)
nodiscard

Generate physical and logical meshes with the standard core/envelope/vacuum labels.

◆ volume_geometry_block()

template<operators::VolumeEquation Equation, typename Schema>
LinearizedBlock serif::model::backend::mfem::volume_geometry_block ( std::shared_ptr< const operators::backend::mfem::VolumeData< Equation, Schema > > data)
nodiscard

Select only the displacement derivative while reusing the equation's complete geometry and transpose kernels.

◆ volume_residual_values()

template<operators::VolumeEquation Equation, typename Schema>
std::vector< double > serif::model::backend::mfem::volume_residual_values ( const std::shared_ptr< const operators::backend::mfem::VolumeData< Equation, Schema > > & data)
nodiscard

Copy the accepted volume residual for additive physical system assembly.

◆ volume_row_action()

template<operators::VolumeEquation Equation, typename Schema, discretization::blocks::SystemLayoutType Layout>
LinearizedBlock serif::model::backend::mfem::volume_row_action ( std::shared_ptr< const operators::backend::mfem::VolumeData< Equation, Schema > > data,
const Layout & layout,
std::optional< ColumnContribution > geometry = {} )
nodiscard

Apply every solved field and geometry direction in one traversal of an accepted volume equation.

Note
The optional geometry column maps independent state coordinates into the equation's displacement coefficients. Prescribed fields have zero direction but remain part of the frozen physical state.

◆ with_deformation()

template<typename Owner, typename Bindings, typename DomainModel>
auto serif::model::backend::mfem::with_deformation ( StellarDiscretization< Owner, Bindings > discretization,
DomainModel model,
geometry::deformation::backend::mfem::ReferenceDiscretization reference )
nodiscard

Add an explicit deformation prescription without changing the physical equation definition.