Own immutable physics and an explicit formulation, independently of meshes, caches and solvers.
More...
|
template<typename... Arguments>
requires detail::ArgumentsMatch<SpecificationTypes, Arguments...>::value && (std::constructible_from<std::remove_cvref_t<Arguments>, Arguments> && ...) |
| | StellarModel (EquationOfState equation_of_state, Equations equations, Arguments &&... specifications) |
| | Capture each physical input once; constructor order does not change specification identity.
|
| |
| const EquationOfState & | equation_of_state () const noexcept |
| | Inspect the authoritative EOS without requiring its numerical relations.
|
| |
| const Equations & | equations () const noexcept |
| | Inspect the supplied equation composition or its deferred definition.
|
| |
template<typename Specification>
requires contains_specification<Specification> |
| const std::remove_cvref_t< Specification > & | specification () const noexcept |
| | Access a physical prescription by exact type, never by a coincidentally shared unit.
|
| |
| template<SpecificationRole Role> |
| auto | specifications_for_role () const noexcept |
| | Return immutable references to every prescription of one physical role in canonical order.
|
| |
template<SpecificationRole Role>
requires (specification_role_count<Role> == 1) |
| const auto & | specification_for_role () const noexcept |
| | Offer a singular physical accessor only when that role is unambiguous.
|
| |
template<typename Visitor>
requires std::invocable<Visitor&, const EquationOfState&> && (std::invocable<Visitor&, const Specifications&> && ...) |
| void | visit_specifications (Visitor &&visitor) const |
| | Visit the EOS first, then physical prescriptions in canonical order.
|
| |
template<typename Transform>
requires std::copy_constructible<Equations> && std::invocable<Transform&, const EquationOfState&> && std::same_as<std::remove_cvref_t<std::invoke_result_t<Transform&, const EquationOfState&>>, EquationOfState> && (std::invocable<Transform&, const Specifications&> && ...) && (std::same_as<std::remove_cvref_t<std::invoke_result_t<Transform&, const Specifications&>>, Specifications> && ...) |
| StellarModel | transform_specifications (Transform &&transform) const |
| | Rebuild same-type physical values; deferred equations will read the new values at binding.
|
| |
template<typename Transform>
requires std::invocable<Transform&, const EquationOfState&> && std::same_as<std::remove_cvref_t<std::invoke_result_t<Transform&, const EquationOfState&>>, EquationOfState> && (std::invocable<Transform&, const Specifications&> && ...) && (std::same_as<std::remove_cvref_t<std::invoke_result_t<Transform&, const Specifications&>>, Specifications> && ...) |
| StellarModel | transform_specifications (Transform &&transform, Equations equations) const |
| | Rebuild move-only equation definitions explicitly instead of imposing a cloning policy.
|
| |
template<typename EquationOfStateT, typename EquationDefinitionT, typename... Specifications>
requires ValidSpecificationPack<Specifications...> && std::is_object_v<EquationOfStateT> && std::is_object_v<EquationDefinitionT>
class serif::model::StellarModel< EquationOfStateT, EquationDefinitionT, utils::types::TypeList< Specifications... > >
Own immutable physics and an explicit formulation, independently of meshes, caches and solvers.