SERiF v0.0.1a
Stellar Evolution and Rotation in Four Dimensions
Loading...
Searching...
No Matches
stellar_model.hpp File Reference
#include <functional>
#include <span>
#include <tuple>
#include <type_traits>
#include <utility>
#include "serif/model/detail/specification_list.hpp"
#include "serif/model/equilibrium_equations.hpp"
Include dependency graph for stellar_model.hpp:
This graph shows which files directly or indirectly include this file:

Classes

class  serif::model::StellarModel< EquationOfStateT, EquationDefinitionT, utils::types::TypeList< Specifications... > >
 Own immutable physics and an explicit formulation, independently of meshes, caches and solvers. More...
 

Namespaces

namespace  serif
 
namespace  serif::model
 
namespace  serif::model::detail
 

Concepts

concept  serif::model::ValidSpecificationPack
 Prescriptions accompany one separately owned EOS; no numerical capability is assumed.
 
concept  serif::model::StellarModelType
 Safely recognize descriptions, including when presented with an incomplete specialization.
 
concept  serif::model::HasUniqueSpecificationForRole
 

Typedefs

template<SpecificationRole Role, StellarModelType Candidate>
using serif::model::SpecificationsForRole = typename std::remove_cvref_t<Candidate>::template SpecificationsForRole<Role>
 

Functions

template<typename EOS, typename Definition, typename... Specifications>
requires ValidSpecificationPack<std::remove_cvref_t<Specifications>...>
 serif::model::StellarModel (EOS &&, Definition &&, Specifications &&...) -> StellarModel< std::remove_cvref_t< EOS >, std::remove_cvref_t< Definition >, typename detail::CanonicalSpecifications< std::remove_cvref_t< Specifications >... >::Type >
 
template<typename EOS, typename Definition, typename... Specifications>
requires ValidSpecificationPack<std::remove_cvref_t<Specifications>...>
auto serif::model::make_stellar_model (EOS &&eos, Definition &&definition, Specifications &&... specifications)
 Construct a typed physical description with programmer-selected equations.
 

Variables

template<typename Candidate, typename = void>
constexpr bool serif::model::detail::is_stellar_model = false
 
template<typename EOS, typename Definition, typename List>
constexpr bool serif::model::detail::is_stellar_model< StellarModel< EOS, Definition, List >, std::void_t< typename StellarModel< EOS, Definition, List >::SpecificationTypes > > = true
 
template<SpecificationRole Role, typename Candidate>
constexpr std::size_t serif::model::specification_role_count
 Inspect role counts without instantiating invalid model specializations.