SERiF v0.0.1a
Stellar Evolution and Rotation in Four Dimensions
Loading...
Searching...
No Matches
specification.hpp File Reference
#include <array>
#include <concepts>
#include <limits>
#include <string_view>
#include <type_traits>
#include "serif/dimensions/quantities.hpp"
#include "serif/utils/types/strings.hpp"
#include "serif/utils/types/type_list.hpp"
Include dependency graph for specification.hpp:
This graph shows which files directly or indirectly include this file:

Classes

struct  serif::model::ScalarConstraint< Target, Coordinate, Residual, CoordinateId, CoordinateSymbol, ResidualId, ResidualSymbol >
 Declare independent target, unknown and residual units and stable descriptive identities. More...
 
struct  serif::model::SpecificationDefinition< Owner, Name, Role, Kind, Scalar, ReadFields, ChangedEquations >
 Declare a prescription once; numerical providers and normalization consume this metadata. More...
 
struct  serif::model::GeneratedCoordinateOf< Specification >
 Name another prescription, including a forward declaration, without erasing its identity. More...
 
struct  serif::model::ConstraintOf< Specification >
 Identify a generated residual independently from its target and unknown units. More...
 
struct  serif::model::EnforcementOf< Specification >
 Select an explicit numerical enforcement while preserving the public physical prescription. More...
 
struct  serif::model::SpecificationDescriptor
 Inspect canonical prescription identity without claiming numerical availability. More...
 

Namespaces

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

Concepts

concept  serif::model::ModelSpecification
 Recognize a self-describing prescription without demanding executable physics or optional metadata.
 
concept  serif::model::DimensionalScalarSpecification
 Require exact dimensional agreement only when scalar numerical metadata is needed.
 

Typedefs

template<typename... Fields>
using serif::model::Reads = utils::types::TypeList<Fields...>
 
template<typename... Equations>
using serif::model::Changes = utils::types::TypeList<Equations...>
 
template<DimensionalScalarSpecification Specification>
using serif::model::GeneratedCoordinateQuantity = typename Specification::ModelDefinition::ScalarDescription::CoordinateQuantity
 Query scalar units only once the owning prescription is complete.
 
template<DimensionalScalarSpecification Specification>
using serif::model::ConstraintQuantity = typename Specification::ModelDefinition::ScalarDescription::ResidualQuantity
 Residual units remain independent from the target and generated coordinate.
 

Enumerations

enum class  serif::model::SpecificationRole {
  serif::model::constitutive_law , serif::model::boundary_condition , serif::model::invariant , serif::model::phase_condition ,
  serif::model::gauge_choice , serif::model::rotation_law
}
 Physical purpose of a prescription, independently of its numerical implementation. More...
 
enum class  serif::model::GeneratedStateKind { serif::model::none , serif::model::multiplier , serif::model::physical_coordinate , serif::model::solver_border }
 Distinguish prescribed physics from the physical meaning of a generated scalar. More...
 

Functions

consteval bool serif::model::detail::compatible_generated_state (SpecificationRole role, GeneratedStateKind kind)
 Reject unknown enums and mismatched physical roles before inspecting optional scalar metadata.
 

Variables

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