SERiF v0.0.1a
Stellar Evolution and Rotation in Four Dimensions
Loading...
Searching...
No Matches
plan.cpp File Reference
#include <array>
#include <concepts>
#include <cstddef>
#include <expected>
#include <string>
#include <tuple>
#include <type_traits>
#include <utility>
#include <vector>
#include "serif/solver/normalization/computations.hpp"
#include "serif/solver/normalization/physical_coordinates.hpp"
#include "serif/equations/angular_momentum.hpp"
#include "serif/equations/mass_normalization.hpp"
#include "serif/equations/primal_gravity.hpp"
#include "serif/eos/models/polytropic.hpp"
#include "serif/utils/dependencies/computation_cache.hpp"
Include dependency graph for plan.cpp:

Classes

struct  serif::solver::normalization::checks::FirstValue
 
struct  serif::solver::normalization::checks::SecondValue
 
struct  serif::solver::normalization::checks::FirstResidual
 
struct  serif::solver::normalization::checks::SecondResidual
 
struct  serif::solver::normalization::checks::ForeignCoordinate
 
struct  serif::solver::normalization::checks::PressureRow
 
struct  serif::solver::normalization::checks::MassRow
 
struct  serif::solver::normalization::checks::CentralRow
 
struct  serif::solver::normalization::checks::SelectedSurfaceRows
 
struct  serif::solver::normalization::checks::CustomDensityMetric
 
struct  serif::solver::normalization::checks::SharedFieldMetric
 
struct  serif::solver::normalization::checks::MalformedMetric
 
struct  serif::solver::normalization::checks::MissingMetricMetadata
 
struct  serif::solver::normalization::checks::DuplicateMetricCoordinates
 
struct  serif::solver::normalization::checks::PretendRieszMethod
 
struct  serif::solver::normalization::checks::MoveOnlyPrescription
 
struct  serif::solver::normalization::checks::PreparedPrescription
 
struct  serif::solver::normalization::checks::DerivedPrescription
 
struct  serif::solver::normalization::checks::ConvertiblePrescription
 
struct  serif::solver::normalization::checks::WrongPreparationResult
 
struct  serif::solver::normalization::checks::BorrowedPreparationResult
 
struct  serif::solver::normalization::checks::StateOnlyPrescription
 
struct  serif::solver::normalization::checks::AliasesOnlyLayout
 
struct  serif::solver::normalization::checks::TemperatureCoordinate
 
struct  serif::solver::normalization::checks::TemperatureMetric
 
struct  serif::solver::normalization::checks::TemperatureScales
 
struct  serif::solver::normalization::checks::UntypedTemperatureScales
 

Namespaces

namespace  serif
 
namespace  serif::solver
 
namespace  serif::solver::normalization
 
namespace  serif::solver::normalization::checks
 

Concepts

concept  serif::solver::normalization::checks::CanDeclareLayout
 Keep invalid layout declarations safely testable without instantiating their storage.
 
concept  serif::solver::normalization::checks::CanDeclareRuntimeMethod
 Require explicit policy identity rather than accepting unrelated preparation-like objects.
 

Typedefs

using serif::solver::normalization::checks::Displacement = blocks::displacement::vector
 
using serif::solver::normalization::checks::AngularVelocity = blocks::rotation::angular_velocity
 
using serif::solver::normalization::checks::CentralBorder = blocks::frame_acceleration::component<0>
 
using serif::solver::normalization::checks::SurfaceCoefficients = blocks::surface_deformation::coefficients
 
using serif::solver::normalization::checks::SurfaceEquilibrium = blocks::surface_deformation::shape_equilibrium
 
using serif::solver::normalization::checks::Values = KeyList<FirstValue, SecondValue>
 
using serif::solver::normalization::checks::Residuals = KeyList<FirstResidual, SecondResidual>
 
using serif::solver::normalization::checks::ValueRules = Bindings<Binding<FirstValue, IdentityCoordinate>, Binding<SecondValue, IdentityCoordinate>>
 
using serif::solver::normalization::checks::ResidualRules = Bindings<Binding<FirstResidual, IdentityCoordinate>, Binding<SecondResidual, IdentityCoordinate>>
 
using serif::solver::normalization::checks::CompletePlan = NormalizationPlan<ValueRules, ResidualRules>
 
using serif::solver::normalization::checks::ReorderedPlan
 
using serif::solver::normalization::checks::MissingValue = NormalizationPlan<Bindings<Binding<FirstValue, IdentityCoordinate>>, ResidualRules>
 
using serif::solver::normalization::checks::MissingResidual = NormalizationPlan<ValueRules, Bindings<Binding<FirstResidual, IdentityCoordinate>>>
 
using serif::solver::normalization::checks::DuplicateValue = NormalizationPlan<Bindings<Binding<FirstValue, IdentityCoordinate>, Binding<FirstValue, IdentityCoordinate>>, ResidualRules>
 
using serif::solver::normalization::checks::DuplicateResidual = NormalizationPlan<ValueRules, Bindings<Binding<FirstResidual, IdentityCoordinate>, Binding<FirstResidual, IdentityCoordinate>>>
 
using serif::solver::normalization::checks::ForeignValue = NormalizationPlan<Bindings<Binding<FirstValue, IdentityCoordinate>, Binding<ForeignCoordinate, IdentityCoordinate>>, ResidualRules>
 
using serif::solver::normalization::checks::ForeignResidual = NormalizationPlan<ValueRules, Bindings<Binding<FirstResidual, IdentityCoordinate>, Binding<ForeignCoordinate, IdentityCoordinate>>>
 
using serif::solver::normalization::checks::Layout = CoordinateLayout<const Values&, volatile Residuals&&>
 
using serif::solver::normalization::checks::DensityRiesz = PhysicalRieszCoordinate<dimensions::MassDensity, ReferenceVolumeMetric<Density>>
 
using serif::solver::normalization::checks::DisplacementRiesz = PhysicalRieszCoordinate<dimensions::Length, ReferenceVolumeMetric<Displacement>>
 
using serif::solver::normalization::checks::PhysicalValues = NormalizationPlan<Bindings<Binding<Density, DensityRiesz>, Binding<Displacement, DisplacementRiesz>>, Bindings<>>
 
using serif::solver::normalization::checks::PressureRiesz = PhysicalRieszCoordinate<dimensions::Pressure, ReferenceVolumeMetric<Density>>
 
using serif::solver::normalization::checks::PotentialRiesz = PhysicalRieszCoordinate<dimensions::GravitationalPotential, ReferenceVolumeMetric<Potential>>
 
using serif::solver::normalization::checks::HybridResidual = WithPointRows<PotentialRiesz, dimensions::Pressure, SelectedSurfaceRows>
 
using serif::solver::normalization::checks::ScalarValues = KeyList<MassConstant, AngularVelocity, CentralBorder>
 
using serif::solver::normalization::checks::CustomMethod = RuntimePreparedCoordinate<const MoveOnlyPrescription&>
 
template<typename Policy>
using serif::solver::normalization::checks::PolicyPlan
 Apply one declared policy independently to state and residual coordinates.
 
using serif::solver::normalization::checks::PolicyLayout = CoordinateLayout<KeyList<Density>, KeyList<PressureRow>>
 
using serif::solver::normalization::checks::QualifiedPolicyComputation = decltype(detail::coordinate_computation<blocks::RepresentedValueKind::value, Density, PolicyLayout, StellarReferenceScales>(RuntimePreparedCoordinate<const PreparedPrescription&>{}))
 
using serif::solver::normalization::checks::TemperaturePlan = NormalizationPlan<Bindings<Binding<TemperatureCoordinate, PhysicalRieszCoordinate<dimensions::Temperature, TemperatureMetric>>>, Bindings<>>
 
using serif::solver::normalization::checks::TemperatureLayout = CoordinateLayout<KeyList<TemperatureCoordinate>, KeyList<>>
 
template<typename Key, typename Value>
using serif::solver::normalization::checks::OwnedSource = decltype(dependencies::own<Key>(std::declval<Value>()))
 Describe an explicitly owned source using the same factory as runtime clients.
 
using serif::solver::normalization::checks::MetricLayout = CoordinateLayout<KeyList<Density, Displacement>, KeyList<>>
 
using serif::solver::normalization::checks::MetricComputations = decltype(make_normalization_computations<const PhysicalValues&>(std::declval<const MetricLayout&>()))
 
using serif::solver::normalization::checks::MetricGraph = decltype(graph_type(std::declval<MetricComputations>()))
 
using serif::solver::normalization::checks::LayoutSource = OwnedSource<keys::Layout, MetricLayout>
 
using serif::solver::normalization::checks::ScaleSource = OwnedSource<keys::Scales, StellarReferenceScales>
 
using serif::solver::normalization::checks::DensityMetricSource = OwnedSource<ReferenceVolumeMetric<Density>, std::vector<double>>
 
using serif::solver::normalization::checks::DisplacementMetricSource = OwnedSource<ReferenceVolumeMetric<Displacement>, std::vector<double>>
 
using serif::solver::normalization::checks::CompleteMetricContext = dependencies::DependencyContext<LayoutSource, ScaleSource, DensityMetricSource, DisplacementMetricSource>
 
using serif::solver::normalization::checks::MissingMetricContext = dependencies::DependencyContext<LayoutSource, ScaleSource, DensityMetricSource>
 
using serif::solver::normalization::checks::WrongMetricContext = dependencies::DependencyContext<LayoutSource, ScaleSource, DensityMetricSource, OwnedSource<ReferenceVolumeMetric<Displacement>, std::vector<int>>>
 
using serif::solver::normalization::checks::PolicyComputations = decltype(make_normalization_computations<PolicyPlan<PreparedPrescription>>(std::declval<const PolicyLayout&>()))
 
using serif::solver::normalization::checks::PolicyGraph = decltype(graph_type(std::declval<PolicyComputations>()))
 
template<typename SuppliedPrescription>
using serif::solver::normalization::checks::PolicyContext = dependencies::DependencyContext<OwnedSource<keys::Layout, PolicyLayout>, OwnedSource<keys::Prescription<PreparedPrescription>, SuppliedPrescription>>
 Vary the supplied resource type while keeping the plan's prescription key unchanged.
 

Functions

dimensions::QuantityValue< dimensions::Temperature > serif::solver::normalization::checks::characteristic_scale (const TemperatureScales &, dimensions::Temperature)
 External thermodynamic scales participate through their own typed ADL provider.
 
double serif::solver::normalization::checks::characteristic_scale (const UntypedTemperatureScales &, dimensions::Temperature)
 A raw number cannot silently stand in for a scale carrying the requested quantity.
 
template<typename... Computations>
auto serif::solver::normalization::checks::graph_type (std::tuple< Computations... >) -> decltype(dependencies::make_computation_graph(std::declval< Computations >()...))
 Inspect the public graph's type without constructing or preparing numerical objects.