SERiF v0.0.1a
Stellar Evolution and Rotation in Four Dimensions
Loading...
Searching...
No Matches
serif::solver::continuation::BoundFamily< Model, ParameterList< Selected... >, std::tuple< Laws... >, EquationFactory > Class Template Referencefinal

Own target physics and construct fresh family members without a mesh, evaluator, or mutable solve context. More...

#include <family.hpp>

Collaboration diagram for serif::solver::continuation::BoundFamily< Model, ParameterList< Selected... >, std::tuple< Laws... >, EquationFactory >:
[legend]

Classes

struct  Values
 

Public Types

using ModelType = Model
 
using Coordinates = std::array<double, coordinate_count>
 

Public Member Functions

 BoundFamily (Model target, std::tuple< Laws... > laws, EquationFactory equations)
 Reject inconsistent laws and unverifiable target identities before starting continuation.
 
const Model & target_model () const noexcept
 Inspect the immutable requested physical model.
 
Coordinates target_coordinates () const noexcept
 Preserve the exact endpoint independently of adaptive step sizes.
 
Coordinates starting_coordinates () const
 Use physics-owned simpler coordinates where a parameter supplies them.
 
Coordinates coordinates_of (const Model &candidate) const
 Extract coordinates; extraction alone does not certify family membership.
 
std::vector< double > model_signature (const Model &candidate) const
 Include unchanged EOS, constraints, and stateful equation definitions in family identity.
 
std::expected< void, Failure > try_validate_member (const Model &candidate) const
 Reject unrelated physical anchors even if their selected coordinates match.
 
void validate_member (const Model &candidate) const
 Validate a user-supplied anchor at the configuration boundary.
 
std::expected< Model, Failure > try_model_at (const Coordinates &coordinates) const
 Construct a candidate and report out-of-domain laws as ordinary values for the continuation driver.
 
Model model_at (const Coordinates &coordinates) const
 Construct a family member when invalid coordinates are a caller configuration error.
 

Static Public Member Functions

template<PhysicalParameter Parameter>
requires has_coordinate<Parameter>
static consteval std::size_t coordinate_index (Parameter={})
 Locate one selected physical parameter without runtime type dispatch.
 
static constexpr std::array< ParameterDescriptor, coordinate_count > parameter_descriptors () noexcept
 Expose stable parameter names for diagnostics and persisted coordinates.
 

Static Public Attributes

static constexpr std::size_t coordinate_count = sizeof...(Selected)
 
template<typename Parameter>
static constexpr bool has_coordinate = utils::dependencies::ContainsKey<Parameter, Selection>
 

Private Types

using Selection = ParameterList<Selected...>
 
using Traits = detail::FamilyTraits<Selection, std::tuple<Laws...>>
 
using DerivedValues = std::tuple<typename Laws::OutputParameter::Value...>
 

Private Member Functions

template<typename Law, typename... Inputs>
auto evaluate_law (const Law &value, const Coordinates &coordinates, ParameterList< Inputs... >) const
 Read only independent coordinates into a typed dependent law.
 
template<std::size_t... Indices>
std::expected< DerivedValues, Failure > evaluate_laws (const Coordinates &coordinates, std::index_sequence< Indices... >) const
 Evaluate every independent law before rebuilding any physical prescription.
 
template<std::size_t... Indices>
bool realized (const Model &result, const Coordinates &coordinates, const DerivedValues &derived, std::index_sequence< Indices... >) const
 Read back every installed parameter; exact selected coordinates cannot be silently ignored.
 

Private Attributes

Model m_target
 
std::tuple< Laws... > m_laws
 
EquationFactory m_equations
 
Coordinates m_target_coordinates
 

Detailed Description

template<model::StellarModelType Model, PhysicalParameter... Selected, typename... Laws, typename EquationFactory>
class serif::solver::continuation::BoundFamily< Model, ParameterList< Selected... >, std::tuple< Laws... >, EquationFactory >

Own target physics and construct fresh family members without a mesh, evaluator, or mutable solve context.

Member Typedef Documentation

◆ Coordinates

template<model::StellarModelType Model, PhysicalParameter... Selected, typename... Laws, typename EquationFactory>
using serif::solver::continuation::BoundFamily< Model, ParameterList< Selected... >, std::tuple< Laws... >, EquationFactory >::Coordinates = std::array<double, coordinate_count>

◆ DerivedValues

template<model::StellarModelType Model, PhysicalParameter... Selected, typename... Laws, typename EquationFactory>
using serif::solver::continuation::BoundFamily< Model, ParameterList< Selected... >, std::tuple< Laws... >, EquationFactory >::DerivedValues = std::tuple<typename Laws::OutputParameter::Value...>
private

◆ ModelType

template<model::StellarModelType Model, PhysicalParameter... Selected, typename... Laws, typename EquationFactory>
using serif::solver::continuation::BoundFamily< Model, ParameterList< Selected... >, std::tuple< Laws... >, EquationFactory >::ModelType = Model

◆ Selection

template<model::StellarModelType Model, PhysicalParameter... Selected, typename... Laws, typename EquationFactory>
using serif::solver::continuation::BoundFamily< Model, ParameterList< Selected... >, std::tuple< Laws... >, EquationFactory >::Selection = ParameterList<Selected...>
private

◆ Traits

template<model::StellarModelType Model, PhysicalParameter... Selected, typename... Laws, typename EquationFactory>
using serif::solver::continuation::BoundFamily< Model, ParameterList< Selected... >, std::tuple< Laws... >, EquationFactory >::Traits = detail::FamilyTraits<Selection, std::tuple<Laws...>>
private

Constructor & Destructor Documentation

◆ BoundFamily()

template<model::StellarModelType Model, PhysicalParameter... Selected, typename... Laws, typename EquationFactory>
serif::solver::continuation::BoundFamily< Model, ParameterList< Selected... >, std::tuple< Laws... >, EquationFactory >::BoundFamily ( Model target,
std::tuple< Laws... > laws,
EquationFactory equations )
inline

Reject inconsistent laws and unverifiable target identities before starting continuation.

Member Function Documentation

◆ coordinate_index()

template<model::StellarModelType Model, PhysicalParameter... Selected, typename... Laws, typename EquationFactory>
template<PhysicalParameter Parameter>
requires has_coordinate<Parameter>
static consteval std::size_t serif::solver::continuation::BoundFamily< Model, ParameterList< Selected... >, std::tuple< Laws... >, EquationFactory >::coordinate_index ( Parameter = {})
inlinestaticnodiscardconsteval

Locate one selected physical parameter without runtime type dispatch.

◆ coordinates_of()

template<model::StellarModelType Model, PhysicalParameter... Selected, typename... Laws, typename EquationFactory>
Coordinates serif::solver::continuation::BoundFamily< Model, ParameterList< Selected... >, std::tuple< Laws... >, EquationFactory >::coordinates_of ( const Model & candidate) const
inlinenodiscard

Extract coordinates; extraction alone does not certify family membership.

◆ evaluate_law()

template<model::StellarModelType Model, PhysicalParameter... Selected, typename... Laws, typename EquationFactory>
template<typename Law, typename... Inputs>
auto serif::solver::continuation::BoundFamily< Model, ParameterList< Selected... >, std::tuple< Laws... >, EquationFactory >::evaluate_law ( const Law & value,
const Coordinates & coordinates,
ParameterList< Inputs... >  ) const
inlinenodiscardprivate

Read only independent coordinates into a typed dependent law.

◆ evaluate_laws()

template<model::StellarModelType Model, PhysicalParameter... Selected, typename... Laws, typename EquationFactory>
template<std::size_t... Indices>
std::expected< DerivedValues, Failure > serif::solver::continuation::BoundFamily< Model, ParameterList< Selected... >, std::tuple< Laws... >, EquationFactory >::evaluate_laws ( const Coordinates & coordinates,
std::index_sequence< Indices... >  ) const
inlinenodiscardprivate

Evaluate every independent law before rebuilding any physical prescription.

◆ model_at()

template<model::StellarModelType Model, PhysicalParameter... Selected, typename... Laws, typename EquationFactory>
Model serif::solver::continuation::BoundFamily< Model, ParameterList< Selected... >, std::tuple< Laws... >, EquationFactory >::model_at ( const Coordinates & coordinates) const
inlinenodiscard

Construct a family member when invalid coordinates are a caller configuration error.

◆ model_signature()

template<model::StellarModelType Model, PhysicalParameter... Selected, typename... Laws, typename EquationFactory>
std::vector< double > serif::solver::continuation::BoundFamily< Model, ParameterList< Selected... >, std::tuple< Laws... >, EquationFactory >::model_signature ( const Model & candidate) const
inlinenodiscard

Include unchanged EOS, constraints, and stateful equation definitions in family identity.

◆ parameter_descriptors()

template<model::StellarModelType Model, PhysicalParameter... Selected, typename... Laws, typename EquationFactory>
static constexpr std::array< ParameterDescriptor, coordinate_count > serif::solver::continuation::BoundFamily< Model, ParameterList< Selected... >, std::tuple< Laws... >, EquationFactory >::parameter_descriptors ( )
inlinestaticnodiscardconstexprnoexcept

Expose stable parameter names for diagnostics and persisted coordinates.

◆ realized()

template<model::StellarModelType Model, PhysicalParameter... Selected, typename... Laws, typename EquationFactory>
template<std::size_t... Indices>
bool serif::solver::continuation::BoundFamily< Model, ParameterList< Selected... >, std::tuple< Laws... >, EquationFactory >::realized ( const Model & result,
const Coordinates & coordinates,
const DerivedValues & derived,
std::index_sequence< Indices... >  ) const
inlinenodiscardprivate

Read back every installed parameter; exact selected coordinates cannot be silently ignored.

◆ starting_coordinates()

template<model::StellarModelType Model, PhysicalParameter... Selected, typename... Laws, typename EquationFactory>
Coordinates serif::solver::continuation::BoundFamily< Model, ParameterList< Selected... >, std::tuple< Laws... >, EquationFactory >::starting_coordinates ( ) const
inlinenodiscard

Use physics-owned simpler coordinates where a parameter supplies them.

◆ target_coordinates()

template<model::StellarModelType Model, PhysicalParameter... Selected, typename... Laws, typename EquationFactory>
Coordinates serif::solver::continuation::BoundFamily< Model, ParameterList< Selected... >, std::tuple< Laws... >, EquationFactory >::target_coordinates ( ) const
inlinenodiscardnoexcept

Preserve the exact endpoint independently of adaptive step sizes.

◆ target_model()

template<model::StellarModelType Model, PhysicalParameter... Selected, typename... Laws, typename EquationFactory>
const Model & serif::solver::continuation::BoundFamily< Model, ParameterList< Selected... >, std::tuple< Laws... >, EquationFactory >::target_model ( ) const
inlinenodiscardnoexcept

Inspect the immutable requested physical model.

◆ try_model_at()

template<model::StellarModelType Model, PhysicalParameter... Selected, typename... Laws, typename EquationFactory>
std::expected< Model, Failure > serif::solver::continuation::BoundFamily< Model, ParameterList< Selected... >, std::tuple< Laws... >, EquationFactory >::try_model_at ( const Coordinates & coordinates) const
inlinenodiscard

Construct a candidate and report out-of-domain laws as ordinary values for the continuation driver.

◆ try_validate_member()

template<model::StellarModelType Model, PhysicalParameter... Selected, typename... Laws, typename EquationFactory>
std::expected< void, Failure > serif::solver::continuation::BoundFamily< Model, ParameterList< Selected... >, std::tuple< Laws... >, EquationFactory >::try_validate_member ( const Model & candidate) const
inlinenodiscard

Reject unrelated physical anchors even if their selected coordinates match.

◆ validate_member()

template<model::StellarModelType Model, PhysicalParameter... Selected, typename... Laws, typename EquationFactory>
void serif::solver::continuation::BoundFamily< Model, ParameterList< Selected... >, std::tuple< Laws... >, EquationFactory >::validate_member ( const Model & candidate) const
inline

Validate a user-supplied anchor at the configuration boundary.

Member Data Documentation

◆ coordinate_count

template<model::StellarModelType Model, PhysicalParameter... Selected, typename... Laws, typename EquationFactory>
std::size_t serif::solver::continuation::BoundFamily< Model, ParameterList< Selected... >, std::tuple< Laws... >, EquationFactory >::coordinate_count = sizeof...(Selected)
staticconstexpr

◆ has_coordinate

template<model::StellarModelType Model, PhysicalParameter... Selected, typename... Laws, typename EquationFactory>
template<typename Parameter>
bool serif::solver::continuation::BoundFamily< Model, ParameterList< Selected... >, std::tuple< Laws... >, EquationFactory >::has_coordinate = utils::dependencies::ContainsKey<Parameter, Selection>
staticconstexpr

◆ m_equations

template<model::StellarModelType Model, PhysicalParameter... Selected, typename... Laws, typename EquationFactory>
EquationFactory serif::solver::continuation::BoundFamily< Model, ParameterList< Selected... >, std::tuple< Laws... >, EquationFactory >::m_equations
private

◆ m_laws

template<model::StellarModelType Model, PhysicalParameter... Selected, typename... Laws, typename EquationFactory>
std::tuple<Laws...> serif::solver::continuation::BoundFamily< Model, ParameterList< Selected... >, std::tuple< Laws... >, EquationFactory >::m_laws
private

◆ m_target

template<model::StellarModelType Model, PhysicalParameter... Selected, typename... Laws, typename EquationFactory>
Model serif::solver::continuation::BoundFamily< Model, ParameterList< Selected... >, std::tuple< Laws... >, EquationFactory >::m_target
private

◆ m_target_coordinates

template<model::StellarModelType Model, PhysicalParameter... Selected, typename... Laws, typename EquationFactory>
Coordinates serif::solver::continuation::BoundFamily< Model, ParameterList< Selected... >, std::tuple< Laws... >, EquationFactory >::m_target_coordinates
private

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