serif::model serif::model::ConstraintOf serif::model::DiscretizationOptions serif::model::EnforcementOf serif::model::EosReference serif::model::EquilibriumEquations serif::model::EquilibriumPlan serif::model::FixedAngularMomentum serif::model::FixedTotalMass serif::model::GeneratedCoordinateOf serif::model::ModelPlan serif::model::NoShapeForce serif::model::NoSurfaceCondition serif::model::ScalarConstraint serif::model::SpecificationDefinition serif::model::SpecificationDescriptor serif::model::StellarMeshOptions serif::model::StellarModel serif::model::StellarModel< EquationOfStateT, EquationDefinitionT, utils::types::TypeList< Specifications... > > serif::model::StellarState serif::model::StellarSurfaceRefinementOptions serif::model::backend serif::model::checks serif::model::computations serif::model::detail serif::model::equation serif::model::keys serif::model::normalization serif::model::preconditioning serif::model::state SpecificationRole serif::model::SpecificationRole constitutive_law boundary_condition invariant phase_condition gauge_choice rotation_law Physical purpose of a prescription, independently of its numerical implementation. GeneratedStateKind serif::model::GeneratedStateKind none multiplier physical_coordinate solver_border Distinguish prescribed physics from the physical meaning of a generated scalar. ExecutableEquilibriumDescription Description Description typename Plan typename detail::EquilibriumCouplings< Description, detail::ExecutionSurface< Plan > >::Type using serif::model::ActualEquilibriumCouplings = typename detail::EquilibriumCouplings<Description, detail::ExecutionSurface<Plan>>::Type ActualEquilibriumCouplings serif::model::ActualEquilibriumCouplings Inspect the actual derivative producers admitted by the explicitly supplied physical formulation. typename... Fields Fields utils::types::TypeList< Fields... > using serif::model::Reads = utils::types::TypeList<Fields...> Reads serif::model::Reads typename... Equations Equations utils::types::TypeList< Equations... > using serif::model::Changes = utils::types::TypeList<Equations...> Changes serif::model::Changes DimensionalScalarSpecification Specification Specification typename Specification::ModelDefinition::ScalarDescription::CoordinateQuantity using serif::model::GeneratedCoordinateQuantity = typename Specification::ModelDefinition::ScalarDescription::CoordinateQuantity GeneratedCoordinateQuantity serif::model::GeneratedCoordinateQuantity Query scalar units only once the owning prescription is complete. DimensionalScalarSpecification Specification Specification typename Specification::ModelDefinition::ScalarDescription::ResidualQuantity using serif::model::ConstraintQuantity = typename Specification::ModelDefinition::ScalarDescription::ResidualQuantity ConstraintQuantity serif::model::ConstraintQuantity Residual units remain independent from the target and generated coordinate. SpecificationRole Role Role StellarModelType Candidate Candidate typename std::remove_cvref_t< Candidate >::template SpecificationsForRole< Role > using serif::model::SpecificationsForRole = typename std::remove_cvref_t<Candidate>::template SpecificationsForRole<Role> SpecificationsForRole serif::model::SpecificationsForRole typename Row typename Field operators::PhysicalBlock< utils::dependencies::KeyList< Row >, utils::dependencies::KeyList< Field > > using serif::model::Derivative = operators::PhysicalBlock<utils::dependencies::KeyList<Row>, utils::dependencies::KeyList<Field>> Derivative serif::model::Derivative Name a physical derivative using the shared block-source key convention. utils::dependencies::IsBinding... Additional Additional utils::dependencies::Bindings< utils::dependencies::Binding< state::Density, discretization::blocks::density::mass >, utils::dependencies::Binding< state::SurfaceShape, discretization::blocks::surface_deformation::coefficients >, utils::dependencies::Binding< state::GravitationalPotential, discretization::blocks::gravity::potential >, utils::dependencies::Binding< equation::PoissonBalance, discretization::blocks::gravity::potential >, utils::dependencies::Binding< equation::SurfaceShapeBalance, discretization::blocks::surface_deformation::shape_equilibrium >, utils::dependencies::Binding< equation::HydrostaticBalance, discretization::blocks::density::mass >, utils::dependencies::Binding< GeneratedCoordinateOf< FixedTotalMass >, discretization::blocks::barotropic_constant::mass_normalization >, utils::dependencies::Binding< ConstraintOf< FixedTotalMass >, discretization::blocks::barotropic_constant::mass_normalization >, utils::dependencies::Binding< GeneratedCoordinateOf< FixedAngularMomentum >, discretization::blocks::rotation::angular_velocity >, utils::dependencies::Binding< ConstraintOf< FixedAngularMomentum >, discretization::blocks::rotation::angular_velocity >, Additional... > using serif::model::SpecificationBindings = utils::dependencies::Bindings< utils::dependencies::Binding<state::Density, discretization::blocks::density::mass>, utils::dependencies::Binding<state::SurfaceShape, discretization::blocks::surface_deformation::coefficients>, utils::dependencies::Binding<state::GravitationalPotential, discretization::blocks::gravity::potential>, utils::dependencies::Binding<equation::PoissonBalance, discretization::blocks::gravity::potential>, utils::dependencies::Binding<equation::SurfaceShapeBalance, discretization::blocks::surface_deformation::shape_equilibrium>, utils::dependencies::Binding<equation::HydrostaticBalance, discretization::blocks::density::mass>, utils::dependencies::Binding<GeneratedCoordinateOf<FixedTotalMass>, discretization::blocks::barotropic_constant::mass_normalization>, utils::dependencies::Binding<ConstraintOf<FixedTotalMass>, discretization::blocks::barotropic_constant::mass_normalization>, utils::dependencies::Binding<GeneratedCoordinateOf<FixedAngularMomentum>, discretization::blocks::rotation::angular_velocity>, utils::dependencies::Binding<ConstraintOf<FixedAngularMomentum>, discretization::blocks::rotation::angular_velocity>, Additional...> SpecificationBindings serif::model::SpecificationBindings Map physical names and built-in generated identities once; custom identities require explicit bindings. SpecificationBindings<> using serif::model::DefaultSpecificationBindings = SpecificationBindings<> DefaultSpecificationBindings serif::model::DefaultSpecificationBindings ExecutableInteriorEquations Registry Registry typename detail::InteriorCouplings< std::remove_cvref_t< Registry > >::Type using serif::model::DeclaredEquationCouplings = typename detail::InteriorCouplings<std::remove_cvref_t<Registry>>::Type DeclaredEquationCouplings serif::model::DeclaredEquationCouplings Derive declared interior couplings from actual operands rather than a second physical sparsity table. SpecificationRole Role Role typename Candidate std::size_t std::size_t serif::model::specification_role_count specification_role_count serif::model::specification_role_count = [] { if constexpr (StellarModelType<Candidate>) { return std::remove_cvref_t<Candidate>::template specification_role_count<Role>; } else { return std::size_t{0}; } }() Inspect role counts without instantiating invalid model specializations. ExecutableInteriorEquations Registry Registry typename Discretization discretization::blocks::SystemLayoutType Layout Layout typename... AdditionalComputations AdditionalComputations typename... AdditionalContributions AdditionalContributions auto auto serif::model::make_model_graph (std::shared_ptr< const Registry > registry, std::shared_ptr< const Discretization > discretization, const Layout &layout, std::tuple< AdditionalComputations... > additional={}, utils::dependencies::KeyList< AdditionalContributions... > contributions={}, operators::backend::mfem::VolumeOptions options={}) make_model_graph serif::model::make_model_graph std::shared_ptr< const Registry > registry std::shared_ptr< const Discretization > discretization const Layout & layout std::tuple< AdditionalComputations... > additional {} utils::dependencies::KeyList< AdditionalContributions... > contributions {} operators::backend::mfem::VolumeOptions options {} Construct the complete stellar graph at one explicit composition point. The registry is the authoritative equation list. Additional declarations supply deformation, boundary treatment, constraints, normalization or inverses; only named contribution results modify the physical system. Dependency preparation schedules the work and publishes complete results. ExecutableInteriorEquations Registry Registry typename Discretization discretization::blocks::SystemLayoutType Layout Layout typename... AdditionalComputations AdditionalComputations typename... AdditionalContributions AdditionalContributions auto auto serif::model::make_model_graph (Registry registry, std::shared_ptr< const Discretization > discretization, const Layout &layout, std::tuple< AdditionalComputations... > additional={}, utils::dependencies::KeyList< AdditionalContributions... > contributions={}, operators::backend::mfem::VolumeOptions options={}) make_model_graph serif::model::make_model_graph Registry registry std::shared_ptr< const Discretization > discretization const Layout & layout std::tuple< AdditionalComputations... > additional {} utils::dependencies::KeyList< AdditionalContributions... > contributions {} operators::backend::mfem::VolumeOptions options {} Retain a standalone registry, including move-only equations supplied as an rvalue. typename Bound typename Layout typename... NumericalComputations NumericalComputations auto auto serif::model::make_equilibrium_graph (std::shared_ptr< const Bound > bound, const Layout &layout, std::tuple< NumericalComputations... > numerical={}, operators::backend::mfem::VolumeOptions options={}) make_equilibrium_graph serif::model::make_equilibrium_graph std::shared_ptr< const Bound > bound const Layout & layout std::tuple< NumericalComputations... > numerical {} operators::backend::mfem::VolumeOptions options {} Connect the explicit equilibrium definition in one readable place. Interior physics, shape force and surface replacement remain separate declarations. The final physical-system computation collects additions before replacing rows. StellarModelType Model Model typename FiniteElements typename Normalization typename Preconditioner auto auto serif::model::make_discretization (DiscretizationOptions< Model, FiniteElements, Normalization, Preconditioner > options) make_discretization serif::model::make_discretization DiscretizationOptions< Model, FiniteElements, Normalization, Preconditioner > options normalization::ReferenceResolvable<Normalization, Model> Resolve model defaults while preserving compile-time field, scheme, and coordinate choices. Finite-element resources remain explicit: normalization does not choose a mesh or approximation order. typename Model auto auto serif::model::share_equation_of_state (std::shared_ptr< const Model > model) share_equation_of_state serif::model::share_equation_of_state std::shared_ptr< const Model > model Share the EOS subobject while retaining the model that owns it. typename EOS EosReference< EOS > EosReference< EOS > serif::model::borrow_eos (const EOS &eos) noexcept borrow_eos serif::model::borrow_eos const EOS & eos Borrow the model-owned EOS when the prepared graph already retains its immutable model owner. typename EOS void void serif::model::borrow_eos (EOS &&)=delete borrow_eos serif::model::borrow_eos EOS && (!std::is_lvalue_reference_v<EOS>) Borrowing never extends a temporary EOS lifetime. typename Interior typename Shape NoShapeForce typename Surface NoSurfaceCondition serif::model::EquilibriumEquations (Interior, Shape={}, Surface={}) -> EquilibriumEquations< Interior, Shape, Surface > EquilibriumEquations serif::model::EquilibriumEquations Interior Shape {} Surface {} Preserve every authored member when a declaration passes through a templated model factory. Explicit deduction avoids compiler substitution dropping defaulted aggregate members. Deduced declarations supply preceding slots: use NoShapeForce before a surface condition when the shape force is absent. Explicitly typed aggregates may still skip members. typename Model auto auto serif::model::resolve_equilibrium_equations (const Model &model) resolve_equilibrium_equations serif::model::resolve_equilibrium_equations const Model & model requires(const Model& model) { model.equations(); } && EquilibriumEquationDescription<decltype(detail::resolve_equation_member(std::declval<const Model&>().equations(), std::declval<const Model&>()))> Resolve an explicit composition at binding; retain the model while the result borrows its members. typename Model void void serif::model::resolve_equilibrium_equations (Model &&)=delete resolve_equilibrium_equations serif::model::resolve_equilibrium_equations Model && (!std::is_lvalue_reference_v<Model>) A temporary model cannot retain the equation members borrowed by the resolved description. typename Model typename Description typename Plan typename Bindings DefaultSpecificationBindings typename ExplicitZeroCouplings utils::dependencies::KeyList<> bool bool serif::model::executable_model_topology () executable_model_topology serif::model::executable_model_topology Validate a complete selected formulation without inferring solvability or selecting physics. Closed equations define zero derivatives for other coordinates, but that fact cannot admit a missing custom multiplier force. ExplicitZeroCouplings is an explicit author registration, not a fallback. discretization::blocks::SystemLayoutType Layout Layout serif::model::StellarState (Layout) -> StellarState< std::remove_cvref_t< Layout > > StellarState serif::model::StellarState Layout Infer a state's layout type from its physical coordinate description. discretization::blocks::SystemLayoutType Layout Layout serif::model::StellarState (Layout, std::vector< double >) -> StellarState< std::remove_cvref_t< Layout > > StellarState serif::model::StellarState Layout std::vector< double > Infer a state's layout type when adopting physical coefficients. typename EOS typename Definition typename... Specifications 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 > StellarModel serif::model::StellarModel EOS && Definition && Specifications && ... ValidSpecificationPack<std::remove_cvref_t<Specifications>...> typename EOS typename Definition typename... Specifications Specifications auto auto serif::model::make_stellar_model (EOS &&eos, Definition &&definition, Specifications &&... specifications) make_stellar_model serif::model::make_stellar_model EOS && eos Definition && definition Specifications &&... specifications ValidSpecificationPack<std::remove_cvref_t<Specifications>...> Construct a typed physical description with programmer-selected equations. void static void serif::model::validate_target (double value, bool zero_allowed, std::string_view name) validate_target serif::model::validate_target double value bool zero_allowed std::string_view name Validate a dimensional scalar target before storing a physical prescription. typename Owner utils::dependencies::IsDependencyContext Bindings Bindings auto auto serif::model::backend::mfem::make_stellar_discretization (std::shared_ptr< Owner > owner, Bindings bindings, const ::mfem::GridFunction &compactification, const mapping::DomainMapper &mapper) make_stellar_discretization serif::model::make_stellar_discretization std::shared_ptr< Owner > owner Bindings bindings const ::mfem::GridFunction & compactification const mapping::DomainMapper & mapper Retain the supplied resource owner without copying finite-element spaces or changing their addresses. typename Owner typename Bindings typename DomainModel auto auto serif::model::backend::mfem::with_deformation (StellarDiscretization< Owner, Bindings > discretization, DomainModel model, geometry::deformation::backend::mfem::ReferenceDiscretization reference) with_deformation serif::model::with_deformation StellarDiscretization< Owner, Bindings > discretization DomainModel model geometry::deformation::backend::mfem::ReferenceDiscretization reference Add an explicit deformation prescription without changing the physical equation definition.