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

Own a reusable physical family definition before selecting a target model. More...

#include <family.hpp>

Public Member Functions

 Family (Laws laws={})
 Capture dependent laws by value.
 
template<detail::LawDefinition... Added>
requires detail::FamilyTraits<Selected, decltype(std::tuple_cat(std::declval<Laws>(), std::declval<std::tuple<Added...>>()))>::valid
auto with (Added... laws) const &std
 Extend a copyable family without changing its independent coordinates.
 
template<typename Model, typename EquationFactory = detail::CopyEquations>
requires detail::BindableFamily<Model, Selected, Laws> && std::copy_constructible<Laws> && std::invocable<const EquationFactory&, const typename Model::Equations&>
auto bind (Model target, EquationFactory factory={}) const &
 Bind a reproducible model, using an explicit factory for move-only equation definitions when necessary.
 
template<typename Model, typename EquationFactory = detail::CopyEquations>
requires detail::BindableFamily<Model, Selected, Laws> && std::invocable<const EquationFactory&, const typename Model::Equations&>
auto bind (Model target, EquationFactory factory={}) &&
 Bind a target while transferring ownership of move-only laws.
 

Static Private Member Functions

template<typename Model, typename LawValues, typename EquationFactory>
static auto bind_impl (Model target, LawValues &&values, EquationFactory factory)
 Resolve target-dependent laws before moving their physical anchor into the family.
 

Private Attributes

Laws m_laws
 

Detailed Description

template<typename Selected, typename Laws>
class serif::solver::continuation::Family< Selected, Laws >

Own a reusable physical family definition before selecting a target model.

Constructor & Destructor Documentation

◆ Family()

template<typename Selected, typename Laws>
serif::solver::continuation::Family< Selected, Laws >::Family ( Laws laws = {})
inlineexplicit

Capture dependent laws by value.

Member Function Documentation

◆ bind() [1/2]

template<typename Selected, typename Laws>
template<typename Model, typename EquationFactory = detail::CopyEquations>
requires detail::BindableFamily<Model, Selected, Laws> && std::invocable<const EquationFactory&, const typename Model::Equations&>
auto serif::solver::continuation::Family< Selected, Laws >::bind ( Model target,
EquationFactory factory = {} ) &&
inlinenodiscard

Bind a target while transferring ownership of move-only laws.

◆ bind() [2/2]

template<typename Selected, typename Laws>
template<typename Model, typename EquationFactory = detail::CopyEquations>
requires detail::BindableFamily<Model, Selected, Laws> && std::copy_constructible<Laws> && std::invocable<const EquationFactory&, const typename Model::Equations&>
auto serif::solver::continuation::Family< Selected, Laws >::bind ( Model target,
EquationFactory factory = {} ) const &
inlinenodiscard

Bind a reproducible model, using an explicit factory for move-only equation definitions when necessary.

◆ bind_impl()

template<typename Selected, typename Laws>
template<typename Model, typename LawValues, typename EquationFactory>
static auto serif::solver::continuation::Family< Selected, Laws >::bind_impl ( Model target,
LawValues && values,
EquationFactory factory )
inlinestaticnodiscardprivate

Resolve target-dependent laws before moving their physical anchor into the family.

◆ with()

template<typename Selected, typename Laws>
template<detail::LawDefinition... Added>
requires detail::FamilyTraits<Selected, decltype(std::tuple_cat(std::declval<Laws>(), std::declval<std::tuple<Added...>>()))>::valid
auto serif::solver::continuation::Family< Selected, Laws >::with ( Added... laws) const &
inlinenodiscard

Extend a copyable family without changing its independent coordinates.

Transfer move-only law captures when extending a temporary definition.

Member Data Documentation

◆ m_laws

template<typename Selected, typename Laws>
Laws serif::solver::continuation::Family< Selected, Laws >::m_laws
private

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