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

Namespaces

namespace  detail
 

Classes

struct  AngularMomentum
 
class  BoundFamily
 
class  BoundFamily< Model, ParameterList< Selected... >, std::tuple< Laws... >, EquationFactory >
 Own target physics and construct fresh family members without a mesh, evaluator, or mutable solve context. More...
 
class  CoordinateController
 Own only the continuation path; a caller promotes physical states after successful correction. More...
 
struct  CoordinateCounters
 
struct  CoordinateOptions
 Numerical increments are fractions of each coordinate's complete physical span. More...
 
struct  CoordinateProposal
 
struct  CorrectionControls
 
struct  Failure
 
class  Family
 Own a reusable physical family definition before selecting a target model. More...
 
struct  IdentifiedEquations
 Give a deferred equation definition an explicit physical identity without runtime polymorphism. More...
 
struct  NumericalControls
 
struct  Options
 Bound continuation work and storage independently of Newton's per-correction controls. More...
 
struct  Ordering
 
struct  ParameterDescriptor
 
struct  ParameterLaw
 
struct  PolytropicConstant
 
struct  PolytropicIndex
 
class  PreservePressureAtReferenceDensity
 Vary K with n to preserve pressure at one explicitly selected physical reference density. More...
 
struct  Result
 Retain the last converged physical state separately from the requested endpoint and failed candidates. More...
 
struct  SpecificationTraits
 Add continuation access without imposing numerical dependencies on a physical prescription. More...
 
struct  SpecificationTraits< eos::models::Polytrope >
 
struct  SpecificationTraits< model::FixedAngularMomentum >
 
struct  SpecificationTraits< Specification >
 Preserve unselected scalar prescriptions in the complete physical identity. More...
 
struct  StageRecord
 
struct  StartingAt
 
struct  StartingStar
 A supplied physical anchor still requires fresh qualification at the continuation tolerance. More...
 

Concepts

concept  CoordinateValue
 
concept  PhysicalParameter
 A typed physical parameter owns its domain predicate, units, owner, and stable identity.
 
concept  IdentifiedSpecification
 Require explicit identity data, never an object address or incidental memory representation.
 

Typedefs

template<typename... Parameters>
using ParameterList = utils::dependencies::KeyList<Parameters...>
 

Enumerations

enum class  CoordinateOrder { automatic , preferred , strict }
 
enum class  AttemptOutcome { success , recoverable_rejection , fatal_failure }
 
enum class  ControllerStatus {
  ready , pending , complete , attempt_limit ,
  no_progress , fatal_failure
}
 
enum class  Status {
  target_reached , starting_star_failed , attempt_limit , work_limit ,
  no_progress , invalid_model
}
 
enum class  StageDisposition { converged , not_converged , invalid_model }
 

Functions

template<typename Family, typename State, typename Corrector>
auto run (const Family &family, const State &initial_state, Corrector &&correct, Options< Family > options, double absolute_tolerance)
 Follow a physical family using owning correction results and physical state transfer.
 
template<typename Family, typename Model, typename State, typename Corrector>
auto run (const Family &family, const StartingStar< Model, State > &initial, Corrector &&correct, Options< Family > options, double absolute_tolerance)
 Qualify a supplied star afresh after checking every physical family input.
 
SolverOptions default_solver_options ()
 Continuation uses one absolute qualification threshold across all family members.
 
template<PhysicalParameter... Parameters>
constexpr auto depends_on (Parameters...) noexcept
 Name only independent physical inputs to a dependent law.
 
template<PhysicalParameter Output, PhysicalParameter... Inputs, typename Function>
requires utils::dependencies::IsKeyList<ParameterList<Inputs...>> && std::invocable<const std::remove_cvref_t<Function>&, typename Inputs::Value...> && std::same_as<std::remove_cvref_t<std::invoke_result_t<const std::remove_cvref_t<Function>&, typename Inputs::Value...>>, typename Output::Value>
auto law (Output, ParameterList< Inputs... >, Function &&function)
 Own a typed law, including move-only captures; its inputs are selected coordinates rather than other laws.
 
template<PhysicalParameter... Parameters>
requires (sizeof...(Parameters) > 0) && utils::dependencies::IsKeyList<ParameterList<Parameters...>>
auto in (Parameters...)
 Select independent physical coordinates with duplicate detection at compile time.
 
template<typename Definition, CoordinateValue... Values>
auto identified_equations (Definition definition, Values... values)
 Declare every fixed physical constant captured by a deferred equation definition.
 
template<PhysicalParameter Parameter>
auto starting_at (Parameter, typename Parameter::Value value)
 Select a physical starting value with the parameter's required units.
 
template<PhysicalParameter... Parameters>
requires (sizeof...(Parameters) > 0) && utils::dependencies::IsKeyList<ParameterList<Parameters...>>
auto prefer (Parameters...)
 Try these physical coordinates first, allowing blocked coordinates to yield.
 
template<PhysicalParameter... Parameters>
requires (sizeof...(Parameters) > 0) && utils::dependencies::IsKeyList<ParameterList<Parameters...>>
auto stages (Parameters...)
 Complete each physical stage before attempting the next.
 
template<std::size_t Count>
auto numerics (CoordinateOptions< Count > options)
 Expose advanced numerical coordinate stepping without mixing it into physical prescriptions.
 
template<typename Family, typename... Settings>
requires (requires(const Settings& setting, Options<Family>& options) { setting.apply(options); } && ...)
auto make_options (const Family &family, const Settings &... settings)
 Resolve physical settings from family defaults before any corrector runs.
 
template<CoordinateValue Value>
constexpr double coordinate_value (Value value) noexcept
 Convert physical units only at the coordinate-controller boundary.
 
auto preserve_pressure_at_reference_density (dimensions::DensityValue density)
 Choose a pressure-preserving physical EOS family, independently of numerical normalization.
 

Typedef Documentation

◆ ParameterList

template<typename... Parameters>
using serif::solver::continuation::ParameterList = utils::dependencies::KeyList<Parameters...>

Enumeration Type Documentation

◆ AttemptOutcome

Enumerator
success 
recoverable_rejection 
fatal_failure 

◆ ControllerStatus

Enumerator
ready 
pending 
complete 
attempt_limit 
no_progress 
fatal_failure 

◆ CoordinateOrder

Enumerator
automatic 
preferred 
strict 

◆ StageDisposition

Enumerator
converged 
not_converged 
invalid_model 

◆ Status

Enumerator
target_reached 
starting_star_failed 
attempt_limit 
work_limit 
no_progress 
invalid_model 

Function Documentation

◆ coordinate_value()

template<CoordinateValue Value>
double serif::solver::continuation::coordinate_value ( Value value)
nodiscardconstexprnoexcept

Convert physical units only at the coordinate-controller boundary.

◆ default_solver_options()

SolverOptions serif::solver::continuation::default_solver_options ( )
inlinenodiscard

Continuation uses one absolute qualification threshold across all family members.

◆ depends_on()

template<PhysicalParameter... Parameters>
auto serif::solver::continuation::depends_on ( Parameters... )
nodiscardconstexprnoexcept

Name only independent physical inputs to a dependent law.

◆ identified_equations()

template<typename Definition, CoordinateValue... Values>
auto serif::solver::continuation::identified_equations ( Definition definition,
Values... values )
nodiscard

Declare every fixed physical constant captured by a deferred equation definition.

Note
Include all captured physical inputs, such as G and surface pressure. Values read from the supplied model belong to its specification identity already. The declaration is a user contract: C++ cannot inspect arbitrary captures or prove that a callback uses only these inputs. Move-only definitions remain supported with an explicit equation factory when binding a family.

◆ in()

template<PhysicalParameter... Parameters>
requires (sizeof...(Parameters) > 0) && utils::dependencies::IsKeyList<ParameterList<Parameters...>>
auto serif::solver::continuation::in ( Parameters... )
nodiscard

Select independent physical coordinates with duplicate detection at compile time.

◆ law()

template<PhysicalParameter Output, PhysicalParameter... Inputs, typename Function>
requires utils::dependencies::IsKeyList<ParameterList<Inputs...>> && std::invocable<const std::remove_cvref_t<Function>&, typename Inputs::Value...> && std::same_as<std::remove_cvref_t<std::invoke_result_t<const std::remove_cvref_t<Function>&, typename Inputs::Value...>>, typename Output::Value>
auto serif::solver::continuation::law ( Output ,
ParameterList< Inputs... > ,
Function && function )
nodiscard

Own a typed law, including move-only captures; its inputs are selected coordinates rather than other laws.

◆ make_options()

template<typename Family, typename... Settings>
requires (requires(const Settings& setting, Options<Family>& options) { setting.apply(options); } && ...)
auto serif::solver::continuation::make_options ( const Family & family,
const Settings &... settings )
nodiscard

Resolve physical settings from family defaults before any corrector runs.

◆ numerics()

template<std::size_t Count>
auto serif::solver::continuation::numerics ( CoordinateOptions< Count > options)
nodiscard

Expose advanced numerical coordinate stepping without mixing it into physical prescriptions.

◆ prefer()

template<PhysicalParameter... Parameters>
requires (sizeof...(Parameters) > 0) && utils::dependencies::IsKeyList<ParameterList<Parameters...>>
auto serif::solver::continuation::prefer ( Parameters... )
nodiscard

Try these physical coordinates first, allowing blocked coordinates to yield.

◆ preserve_pressure_at_reference_density()

auto serif::solver::continuation::preserve_pressure_at_reference_density ( dimensions::DensityValue density)
inlinenodiscard

Choose a pressure-preserving physical EOS family, independently of numerical normalization.

◆ run() [1/2]

template<typename Family, typename Model, typename State, typename Corrector>
auto serif::solver::continuation::run ( const Family & family,
const StartingStar< Model, State > & initial,
Corrector && correct,
Options< Family > options,
double absolute_tolerance )
nodiscard

Qualify a supplied star afresh after checking every physical family input.

◆ run() [2/2]

template<typename Family, typename State, typename Corrector>
auto serif::solver::continuation::run ( const Family & family,
const State & initial_state,
Corrector && correct,
Options< Family > options,
double absolute_tolerance )
nodiscard

Follow a physical family using owning correction results and physical state transfer.

Parameters
correctA callable accepting a fresh model, a physical state value, and CorrectionControls. Its result must expose converged(), has_state(), state(), diagnostics().attempted_iterations/final_residual_norm, and message().
Note
The corrector must honor the supplied work cap and one fixed positive absolute tolerance. Failed states are never transferred into retries. Numerical nonconvergence is recoverable; malformed family models stop the path.

◆ stages()

template<PhysicalParameter... Parameters>
requires (sizeof...(Parameters) > 0) && utils::dependencies::IsKeyList<ParameterList<Parameters...>>
auto serif::solver::continuation::stages ( Parameters... )
nodiscard

Complete each physical stage before attempting the next.

◆ starting_at()

template<PhysicalParameter Parameter>
auto serif::solver::continuation::starting_at ( Parameter ,
typename Parameter::Value value )
nodiscard

Select a physical starting value with the parameter's required units.