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

Classes

struct  ArgumentsMatch
 
struct  ArgumentsMatch< utils::types::TypeList< Specifications... >, Arguments... >
 
struct  CanonicalSpecifications
 
struct  CanonicalSpecifications< Head, Tail... >
 
struct  CanonicalSpecifications<>
 
struct  CartesianCouplings
 
struct  CartesianCouplings< utils::dependencies::KeyList< Rows... >, utils::dependencies::KeyList< Fields... > >
 
struct  EndpointOwner
 Recognize generated endpoint identities without interpreting unrelated physical names. More...
 
struct  EndpointOwner< ConstraintOf< Specification > >
 
struct  EndpointOwner< GeneratedCoordinateOf< Specification > >
 
struct  EnforcementDependencies
 Legacy prescriptions retain their original dependencies unless an equation explicitly registers another enforcement. More...
 
struct  EnforcementDependencies< Specification, Bindings, true >
 
struct  EquationCouplings
 
struct  EquationCouplings< Equation, utils::types::TypeList< Columns... > >
 
struct  EquilibriumCouplings
 
struct  ExecutionInputs
 
struct  ExecutionInputs< Plan, std::void_t< typename Plan::PhysicalInputs, typename Plan::InactiveRows > >
 
struct  ExecutionSurface
 
struct  ExecutionSurface< Plan, std::void_t< typename Plan::Surface > >
 
struct  InsertSpecification
 
struct  InsertSpecification< Specification, utils::types::TypeList< Head, Tail... > >
 
struct  InsertSpecification< Specification, utils::types::TypeList<> >
 
struct  InteriorCouplings
 
struct  InteriorCouplings< equations::EquationRegistry< Equations... > >
 
struct  InteriorPlan
 
struct  InteriorPlan< equations::EquationRegistry< Equations... > >
 
struct  OperandTerms
 
struct  OperandTerms< utils::types::TypeList< Operands... > >
 
struct  PreferredSurfaceField
 
struct  PreferredSurfaceField< utils::types::TypeList< Equations... > >
 
struct  RemoveKeys
 
struct  RemoveKeys< utils::dependencies::KeyList< Keys... >, Excluded >
 
struct  ResolvedEndpoints
 
struct  ResolvedEndpoints< Owner, utils::types::TypeList< Endpoints... >, Bindings >
 
struct  ResolvedSpecification
 Share resolved physical identities between endpoint and numerical-provider checks. More...
 
struct  SelectedSurface
 A disabled or unavailable boundary has no compiled field or row requirements. More...
 
struct  SelectedSurface< Selection, true >
 
struct  SelectRole
 
struct  ShapePlan
 
struct  ShapePlan< equations::SurfacePotentialBalance >
 The isobar level couples only existing scalar potential, rotation and mass coordinates. More...
 
struct  ShapePlan< NoShapeForce >
 
struct  SurfaceFieldHint
 
struct  SurfaceFieldHint< Equation, std::void_t< typename Equation::IsobaricSurfaceField > >
 An equation author may disambiguate surface enforcement without changing the physical condition. More...
 
struct  SurfacePlan
 
struct  SurfacePlan< geometry::surface::Isobaric, EOS, Fields, Rows, Solved, Equations >
 Compile the condition once; planning, graph assembly and validation share the selected formulation. More...
 
struct  SurfacePlan< NoSurfaceCondition, EOS, Fields, Rows, Solved, Equations >
 
struct  UniqueSurfaceField
 
struct  UniqueSurfaceField< utils::dependencies::KeyList< Field, Others... > >
 
struct  UniqueSurfaceField< utils::dependencies::KeyList<> >
 

Typedefs

template<typename Specification>
using GeneratesState = std::bool_constant<Specification::ModelDefinition::generated_state_kind != GeneratedStateKind::none>
 
template<typename Model>
using GeneratedSpecifications = utils::misc::concepts::FilterT<typename Model::SpecificationTypes, GeneratesState>
 Numerical checks operate only on prescriptions that introduce a coordinate and equation.
 
template<typename Owner, typename Endpoint, typename Bindings>
using ResolvedEndpoint = typename decltype(resolved_endpoint<Owner, Endpoint, Bindings>())::type
 

Functions

template<typename Layout, typename Owner, typename... ContributionKeys>
auto physical_system_computation (Layout layout, std::shared_ptr< const Owner > owner, utils::dependencies::KeyList< ContributionKeys... >)
 Collect all additions before applying any boundary replacement.
 
template<typename... Equations, typename... Additional>
consteval auto contribution_keys (utils::types::TypeList< Equations... >, utils::dependencies::KeyList< Additional... >)
 Every interior equation contributes once; extension keys identify explicit additions or replacements.
 
template<typename Registry, typename Discretization, typename Layout, typename... Equations>
auto interior_computations (const std::shared_ptr< const Registry > &registry, const Discretization &discretization, const Layout &layout, operators::backend::mfem::VolumeOptions options, utils::types::TypeList< Equations... >)
 Share each immutable equation with its volume graph, then publish one complete row contribution.
 
template<typename Bound, typename Layout>
auto shape_computations (const std::shared_ptr< const Bound > &bound, const Layout &layout)
 One shared deformation feeds all geometry derivatives and the surface-potential shape row.
 
template<typename Bound, typename Layout>
auto boundary_computations (const Bound &, const Layout &layout)
 Sample the internally selected pressure formulation through its compiled traces.
 
template<typename Plan>
consteval auto equilibrium_contribution_keys ()
 Name exactly the explicitly selected non-interior contributions to final assembly.
 
template<typename Owner, typename Endpoint, typename Bindings>
consteval auto resolved_endpoint ()
 Resolve owned aliases and explicit bindings without merging same-unit identities.
 
template<typename Model, typename Endpoint>
consteval bool endpoint_owner_present ()
 A coordinate binding cannot supply an absent or non-generating physical prescription.
 
template<ModelSpecification Left, ModelSpecification Right>
consteval bool specification_precedes ()
 Compare physical identities in the historical role, coordinate-kind, stable-name order.
 
template<ModelSpecification... Specifications>
consteval bool unique_specification_names ()
 Reject semantic collisions even when two prescriptions have different C++ types or scalar kinds.
 
template<typename... Specifications, typename... Arguments>
std::tuple< Specifications... > canonical_specifications (utils::types::TypeList< Specifications... >, Arguments &&... arguments)
 Consume the argument tuple once, moving each specification into its canonical slot once.
 
template<typename Definition, typename Model>
decltype(auto) resolve_equation_member (Definition &&definition, const Model &model)
 Evaluate a physical definition or retain its immutable object without requiring a copy.
 
template<typename Definition, typename Model>
auto resolve_equation_members (Definition &&definition, const Model &model)
 Resolve each explicit part, owning temporary results and borrowing unchanged model members.
 
template<DimensionalScalarSpecification Specification, typename Rows, typename InactiveRows, typename Actual, typename Bindings>
consteval bool generated_physics_is_present ()
 Demand an explicitly supplied generated equation and effect before inferring closed-row zeros.
 
template<typename Rows, typename InactiveRows, typename Actual, typename Bindings, typename... Specifications>
consteval bool generated_physics_are_present (utils::types::TypeList< Specifications... >)
 Check only numerical-provider admission; physical endpoint ownership is checked separately.
 
template<typename Rows, typename... Required>
consteval bool equation_rows_exist (utils::dependencies::KeyList< Required... >)
 Every surface carrier must have an equation row in the selected layout.
 
consteval bool compatible_generated_state (SpecificationRole role, GeneratedStateKind kind)
 Reject unknown enums and mismatched physical roles before inspecting optional scalar metadata.
 
template<DimensionalScalarSpecification Specification, typename Model, typename Values, typename Inputs, typename Rows, typename InactiveRows, typename Bindings>
consteval bool valid_specification_endpoints ()
 Check physical inputs separately from unknowns and explicitly inactive equations.
 
template<typename Model, typename Values, typename Inputs, typename Rows, typename InactiveRows, typename Bindings, typename... Specifications>
consteval bool valid_specifications (utils::types::TypeList< Specifications... >)
 Fold independent physical declarations; no equation counting or rank inference is involved.
 
template<DimensionalScalarSpecification Specification, typename Couplings, typename Bindings>
consteval bool specification_derivatives_available ()
 Validate declared derivative contracts without inferring zeros from missing providers.
 
template<typename Couplings, typename Bindings, typename... Specifications>
consteval bool specification_derivatives_available (utils::types::TypeList< Specifications... >)
 Check each prescription against independently supplied derivative registrations.
 

Variables

template<typename Candidate>
constexpr bool is_equilibrium_equations = false
 
template<typename Interior, typename Shape, typename Surface>
constexpr bool is_equilibrium_equations< EquilibriumEquations< Interior, Shape, Surface > > = true
 
template<typename Candidate>
constexpr bool is_type_list = false
 
template<typename... Types>
constexpr bool is_type_list< utils::types::TypeList< Types... > > = true
 
template<typename Candidate, typename = void>
constexpr bool is_stellar_model = false
 
template<typename EOS, typename Definition, typename List>
constexpr bool is_stellar_model< StellarModel< EOS, Definition, List >, std::void_t< typename StellarModel< EOS, Definition, List >::SpecificationTypes > > = true
 

Typedef Documentation

◆ GeneratedSpecifications

template<typename Model>
using serif::model::detail::GeneratedSpecifications = utils::misc::concepts::FilterT<typename Model::SpecificationTypes, GeneratesState>

Numerical checks operate only on prescriptions that introduce a coordinate and equation.

◆ GeneratesState

template<typename Specification>
using serif::model::detail::GeneratesState = std::bool_constant<Specification::ModelDefinition::generated_state_kind != GeneratedStateKind::none>

◆ ResolvedEndpoint

template<typename Owner, typename Endpoint, typename Bindings>
using serif::model::detail::ResolvedEndpoint = typename decltype(resolved_endpoint<Owner, Endpoint, Bindings>())::type

Function Documentation

◆ boundary_computations()

template<typename Bound, typename Layout>
auto serif::model::detail::boundary_computations ( const Bound & ,
const Layout & layout )
nodiscard

Sample the internally selected pressure formulation through its compiled traces.

◆ canonical_specifications()

template<typename... Specifications, typename... Arguments>
std::tuple< Specifications... > serif::model::detail::canonical_specifications ( utils::types::TypeList< Specifications... > ,
Arguments &&... arguments )
nodiscard

Consume the argument tuple once, moving each specification into its canonical slot once.

◆ compatible_generated_state()

bool serif::model::detail::compatible_generated_state ( SpecificationRole role,
GeneratedStateKind kind )
nodiscardconsteval

Reject unknown enums and mismatched physical roles before inspecting optional scalar metadata.

◆ contribution_keys()

template<typename... Equations, typename... Additional>
auto serif::model::detail::contribution_keys ( utils::types::TypeList< Equations... > ,
utils::dependencies::KeyList< Additional... >  )
nodiscardconsteval

Every interior equation contributes once; extension keys identify explicit additions or replacements.

◆ endpoint_owner_present()

template<typename Model, typename Endpoint>
bool serif::model::detail::endpoint_owner_present ( )
nodiscardconsteval

A coordinate binding cannot supply an absent or non-generating physical prescription.

◆ equation_rows_exist()

template<typename Rows, typename... Required>
bool serif::model::detail::equation_rows_exist ( utils::dependencies::KeyList< Required... > )
nodiscardconsteval

Every surface carrier must have an equation row in the selected layout.

◆ equilibrium_contribution_keys()

template<typename Plan>
auto serif::model::detail::equilibrium_contribution_keys ( )
nodiscardconsteval

Name exactly the explicitly selected non-interior contributions to final assembly.

◆ generated_physics_are_present()

template<typename Rows, typename InactiveRows, typename Actual, typename Bindings, typename... Specifications>
bool serif::model::detail::generated_physics_are_present ( utils::types::TypeList< Specifications... > )
nodiscardconsteval

Check only numerical-provider admission; physical endpoint ownership is checked separately.

◆ generated_physics_is_present()

template<DimensionalScalarSpecification Specification, typename Rows, typename InactiveRows, typename Actual, typename Bindings>
bool serif::model::detail::generated_physics_is_present ( )
nodiscardconsteval

Demand an explicitly supplied generated equation and effect before inferring closed-row zeros.

◆ interior_computations()

template<typename Registry, typename Discretization, typename Layout, typename... Equations>
auto serif::model::detail::interior_computations ( const std::shared_ptr< const Registry > & registry,
const Discretization & discretization,
const Layout & layout,
operators::backend::mfem::VolumeOptions options,
utils::types::TypeList< Equations... >  )
nodiscard

Share each immutable equation with its volume graph, then publish one complete row contribution.

◆ physical_system_computation()

template<typename Layout, typename Owner, typename... ContributionKeys>
auto serif::model::detail::physical_system_computation ( Layout layout,
std::shared_ptr< const Owner > owner,
utils::dependencies::KeyList< ContributionKeys... >  )
nodiscard

Collect all additions before applying any boundary replacement.

◆ resolve_equation_member()

template<typename Definition, typename Model>
decltype(auto) serif::model::detail::resolve_equation_member ( Definition && definition,
const Model & model )
nodiscard

Evaluate a physical definition or retain its immutable object without requiring a copy.

◆ resolve_equation_members()

template<typename Definition, typename Model>
auto serif::model::detail::resolve_equation_members ( Definition && definition,
const Model & model )
nodiscard

Resolve each explicit part, owning temporary results and borrowing unchanged model members.

◆ resolved_endpoint()

template<typename Owner, typename Endpoint, typename Bindings>
auto serif::model::detail::resolved_endpoint ( )
nodiscardconsteval

Resolve owned aliases and explicit bindings without merging same-unit identities.

◆ shape_computations()

template<typename Bound, typename Layout>
auto serif::model::detail::shape_computations ( const std::shared_ptr< const Bound > & bound,
const Layout & layout )
nodiscard

One shared deformation feeds all geometry derivatives and the surface-potential shape row.

◆ specification_derivatives_available() [1/2]

template<DimensionalScalarSpecification Specification, typename Couplings, typename Bindings>
bool serif::model::detail::specification_derivatives_available ( )
nodiscardconsteval

Validate declared derivative contracts without inferring zeros from missing providers.

◆ specification_derivatives_available() [2/2]

template<typename Couplings, typename Bindings, typename... Specifications>
bool serif::model::detail::specification_derivatives_available ( utils::types::TypeList< Specifications... > )
nodiscardconsteval

Check each prescription against independently supplied derivative registrations.

◆ specification_precedes()

template<ModelSpecification Left, ModelSpecification Right>
bool serif::model::detail::specification_precedes ( )
nodiscardconsteval

Compare physical identities in the historical role, coordinate-kind, stable-name order.

◆ unique_specification_names()

template<ModelSpecification... Specifications>
bool serif::model::detail::unique_specification_names ( )
nodiscardconsteval

Reject semantic collisions even when two prescriptions have different C++ types or scalar kinds.

◆ valid_specification_endpoints()

template<DimensionalScalarSpecification Specification, typename Model, typename Values, typename Inputs, typename Rows, typename InactiveRows, typename Bindings>
bool serif::model::detail::valid_specification_endpoints ( )
nodiscardconsteval

Check physical inputs separately from unknowns and explicitly inactive equations.

◆ valid_specifications()

template<typename Model, typename Values, typename Inputs, typename Rows, typename InactiveRows, typename Bindings, typename... Specifications>
bool serif::model::detail::valid_specifications ( utils::types::TypeList< Specifications... > )
nodiscardconsteval

Fold independent physical declarations; no equation counting or rank inference is involved.

Variable Documentation

◆ is_equilibrium_equations

template<typename Candidate>
bool serif::model::detail::is_equilibrium_equations = false
inlineconstexpr

◆ is_equilibrium_equations< EquilibriumEquations< Interior, Shape, Surface > >

template<typename Interior, typename Shape, typename Surface>
bool serif::model::detail::is_equilibrium_equations< EquilibriumEquations< Interior, Shape, Surface > > = true
inlineconstexpr

◆ is_stellar_model

template<typename Candidate, typename = void>
bool serif::model::detail::is_stellar_model = false
inlineconstexpr

◆ is_stellar_model< StellarModel< EOS, Definition, List >, std::void_t< typename StellarModel< EOS, Definition, List >::SpecificationTypes > >

template<typename EOS, typename Definition, typename List>
bool serif::model::detail::is_stellar_model< StellarModel< EOS, Definition, List >, std::void_t< typename StellarModel< EOS, Definition, List >::SpecificationTypes > > = true
inlineconstexpr

◆ is_type_list

template<typename Candidate>
bool serif::model::detail::is_type_list = false
inlineconstexpr

◆ is_type_list< utils::types::TypeList< Types... > >

template<typename... Types>
bool serif::model::detail::is_type_list< utils::types::TypeList< Types... > > = true
inlineconstexpr