Files
MeanField_SERiF/docs/man/man3/serif_model.3
Emily Boudreaux 6b57738330 docs(docs): built docs
Note for now much of the docs is LLM written. This was done to save time and focus on code development. The docs have been LOOSLEY reviewed. However, the code itself has been either fully written by hand or fully reviewed. Therefore, the docs should at the moment be seen as a loose resource rather than authoratiative (and this is on top of the general ability for docs to drift)
2026-11-09 14:09:44 -05:00

545 lines
27 KiB
Groff

.TH "serif::model" 3 "Version v0.0.1a" "SERiF" \" -*- nroff -*-
.ad l
.nh
.SH NAME
serif::model
.SH SYNOPSIS
.br
.PP
.SS "Namespaces"
.in +1c
.ti -1c
.RI "namespace \fBbackend\fP"
.br
.ti -1c
.RI "namespace \fBchecks\fP"
.br
.ti -1c
.RI "namespace \fBcomputations\fP"
.br
.ti -1c
.RI "namespace \fBdetail\fP"
.br
.ti -1c
.RI "namespace \fBequation\fP"
.br
.ti -1c
.RI "namespace \fBkeys\fP"
.br
.ti -1c
.RI "namespace \fBnormalization\fP"
.br
.ti -1c
.RI "namespace \fBpreconditioning\fP"
.br
.ti -1c
.RI "namespace \fBstate\fP"
.br
.in -1c
.SS "Classes"
.in +1c
.ti -1c
.RI "struct \fBConstraintOf\fP"
.br
.RI "Identify a generated residual independently from its target and unknown units\&. "
.ti -1c
.RI "struct \fBDiscretizationOptions\fP"
.br
.RI "Select a descriptive star, its existing finite-element resources, and its numerical coordinates\&. "
.ti -1c
.RI "struct \fBEnforcementOf\fP"
.br
.RI "Select an explicit numerical enforcement while preserving the public physical prescription\&. "
.ti -1c
.RI "class \fBEosReference\fP"
.br
.RI "Reuse one immutable EOS in equation objects, optionally retaining shared ownership\&. "
.ti -1c
.RI "struct \fBEquilibriumEquations\fP"
.br
.RI "State the chosen equations explicitly, without selecting physics from the EOS\&. "
.ti -1c
.RI "struct \fBEquilibriumPlan\fP"
.br
.RI "Collect the explicitly selected physical coefficients and supported constraint coordinates\&. "
.ti -1c
.RI "class \fBFixedAngularMomentum\fP"
.br
.RI "Prescribe angular momentum while angular velocity remains an independent solved coordinate\&. "
.ti -1c
.RI "class \fBFixedTotalMass\fP"
.br
.RI "Prescribe total stellar mass while the effective surface-potential level remains an independent solved coordinate\&. "
.ti -1c
.RI "struct \fBGeneratedCoordinateOf\fP"
.br
.RI "Name another prescription, including a forward declaration, without erasing its identity\&. "
.ti -1c
.RI "struct \fBModelPlan\fP"
.br
.RI "Derive physical coordinates from explicit equations, independently of numerical solvability\&. "
.ti -1c
.RI "struct \fBNoShapeForce\fP"
.br
.RI "Explicitly omit a shape equation from a declarative formulation\&. "
.ti -1c
.RI "struct \fBNoSurfaceCondition\fP"
.br
.RI "Explicitly omit a surface prescription from a declarative formulation\&. "
.ti -1c
.RI "struct \fBScalarConstraint\fP"
.br
.RI "Declare independent target, unknown and residual units and stable descriptive identities\&. "
.ti -1c
.RI "struct \fBSpecificationDefinition\fP"
.br
.RI "Declare a prescription once; numerical providers and normalization consume this metadata\&. "
.ti -1c
.RI "struct \fBSpecificationDescriptor\fP"
.br
.RI "Inspect canonical prescription identity without claiming numerical availability\&. "
.ti -1c
.RI "struct \fBStellarMeshOptions\fP"
.br
.RI "Resolve a spherical stellar interior and a compactified exterior on a curved reference mesh\&. "
.ti -1c
.RI "class \fBStellarModel\fP"
.br
.ti -1c
.RI "class \fBStellarModel< EquationOfStateT, EquationDefinitionT, utils::types::TypeList< Specifications\&.\&.\&. > >\fP"
.br
.RI "Own immutable physics and an explicit formulation, independently of meshes, caches and solvers\&. "
.ti -1c
.RI "struct \fBStellarState\fP"
.br
.RI "Own one stellar candidate in physical coordinates, including any solved surface shape\&. "
.ti -1c
.RI "struct \fBStellarSurfaceRefinementOptions\fP"
.br
.RI "Add mesh resolution at the stellar interface before creating field spaces\&. "
.in -1c
.SS "Concepts"
.in +1c
.ti -1c
.RI "concept \fBEquilibriumEquationDescription\fP"
.br
.RI "Recognize composition without instantiating any numerical equation contract\&. "
.ti -1c
.RI "concept \fBExecutableEquilibriumDescription\fP"
.br
.RI "Recognize current equation backends without instantiating an invalid complete plan\&. "
.ti -1c
.RI "concept \fBExecutableInteriorEquations\fP"
.br
.RI "The current interior backend can evaluate every explicitly listed equation\&. "
.ti -1c
.RI "concept \fBModelSpecification\fP"
.br
.RI "Recognize a self-describing prescription without demanding executable physics or optional metadata\&. "
.ti -1c
.RI "concept \fBDimensionalScalarSpecification\fP"
.br
.RI "Require exact dimensional agreement only when scalar numerical metadata is needed\&. "
.ti -1c
.RI "concept \fBValidSpecificationPack\fP"
.br
.RI "Prescriptions accompany one separately owned EOS; no numerical capability is assumed\&. "
.ti -1c
.RI "concept \fBStellarModelType\fP"
.br
.RI "Safely recognize descriptions, including when presented with an incomplete specialization\&. "
.ti -1c
.RI "concept \fBHasUniqueSpecificationForRole\fP"
.br
.ti -1c
.RI "concept \fBSpecificationEndpointsValid\fP"
.br
.RI "Validate physical ownership, available inputs and uniquely owned generated equations\&. "
.ti -1c
.RI "concept \fBSpecificationTopologyValid\fP"
.br
.RI "Validate physical endpoints and every derivative in an explicitly declared contract\&. "
.ti -1c
.RI "concept \fBSpecificationBackendAvailable\fP"
.br
.RI "Require a registered implementation for every declared generated derivative, including explicit zeros\&. "
.in -1c
.SS "Typedefs"
.in +1c
.ti -1c
.RI "template<ExecutableEquilibriumDescription Description, typename Plan> using \fBActualEquilibriumCouplings\fP = typename \fBdetail::EquilibriumCouplings\fP<Description, \fBdetail::ExecutionSurface\fP<Plan>>::Type"
.br
.RI "Inspect the actual derivative producers admitted by the explicitly supplied physical formulation\&. "
.ti -1c
.RI "template<typename\&.\&.\&. Fields> using \fBReads\fP = \fButils::types::TypeList\fP<Fields\&.\&.\&.>"
.br
.ti -1c
.RI "template<typename\&.\&.\&. Equations> using \fBChanges\fP = \fButils::types::TypeList\fP<Equations\&.\&.\&.>"
.br
.ti -1c
.RI "template<DimensionalScalarSpecification Specification> using \fBGeneratedCoordinateQuantity\fP = typename Specification::ModelDefinition::ScalarDescription::CoordinateQuantity"
.br
.RI "Query scalar units only once the owning prescription is complete\&. "
.ti -1c
.RI "template<DimensionalScalarSpecification Specification> using \fBConstraintQuantity\fP = typename Specification::ModelDefinition::ScalarDescription::ResidualQuantity"
.br
.RI "Residual units remain independent from the target and generated coordinate\&. "
.ti -1c
.RI "template<\fBSpecificationRole\fP Role, StellarModelType Candidate> using \fBSpecificationsForRole\fP = typename std::remove_cvref_t<Candidate>::template \fBSpecificationsForRole\fP<Role>"
.br
.ti -1c
.RI "template<typename Row, typename Field> using \fBDerivative\fP = \fBoperators::PhysicalBlock\fP<\fButils::dependencies::KeyList\fP<Row>, \fButils::dependencies::KeyList\fP<Field>>"
.br
.RI "Name a physical derivative using the shared block-source key convention\&. "
.ti -1c
.RI "template<utils::dependencies::IsBinding\&.\&.\&. Additional> using \fBSpecificationBindings\fP"
.br
.RI "Map physical names and built-in generated identities once; custom identities require explicit bindings\&. "
.ti -1c
.RI "using \fBDefaultSpecificationBindings\fP = \fBSpecificationBindings\fP<>"
.br
.ti -1c
.RI "template<ExecutableInteriorEquations Registry> using \fBDeclaredEquationCouplings\fP = typename \fBdetail::InteriorCouplings\fP<std::remove_cvref_t<Registry>>::Type"
.br
.RI "Derive declared interior couplings from actual operands rather than a second physical sparsity table\&. "
.in -1c
.SS "Enumerations"
.in +1c
.ti -1c
.RI "enum class \fBSpecificationRole\fP { \fBconstitutive_law\fP, \fBboundary_condition\fP, \fBinvariant\fP, \fBphase_condition\fP, \fBgauge_choice\fP, \fBrotation_law\fP }"
.br
.RI "Physical purpose of a prescription, independently of its numerical implementation\&. "
.ti -1c
.RI "enum class \fBGeneratedStateKind\fP { \fBnone\fP, \fBmultiplier\fP, \fBphysical_coordinate\fP, \fBsolver_border\fP }"
.br
.RI "Distinguish prescribed physics from the physical meaning of a generated scalar\&. "
.in -1c
.SS "Functions"
.in +1c
.ti -1c
.RI "template<ExecutableInteriorEquations Registry, typename Discretization, discretization::blocks::SystemLayoutType Layout, typename\&.\&.\&. AdditionalComputations, typename\&.\&.\&. AdditionalContributions> auto \fBmake_model_graph\fP (std::shared_ptr< const Registry > registry, std::shared_ptr< const Discretization > discretization, const Layout &layout, std::tuple< AdditionalComputations\&.\&.\&. > additional={}, \fButils::dependencies::KeyList\fP< AdditionalContributions\&.\&.\&. > contributions={}, \fBoperators::backend::mfem::VolumeOptions\fP options={})"
.br
.RI "Construct the complete stellar graph at one explicit composition point\&. "
.ti -1c
.RI "template<ExecutableInteriorEquations Registry, typename Discretization, discretization::blocks::SystemLayoutType Layout, typename\&.\&.\&. AdditionalComputations, typename\&.\&.\&. AdditionalContributions> auto \fBmake_model_graph\fP (Registry registry, std::shared_ptr< const Discretization > discretization, const Layout &layout, std::tuple< AdditionalComputations\&.\&.\&. > additional={}, \fButils::dependencies::KeyList\fP< AdditionalContributions\&.\&.\&. > contributions={}, \fBoperators::backend::mfem::VolumeOptions\fP options={})"
.br
.RI "Retain a standalone registry, including move-only equations supplied as an rvalue\&. "
.ti -1c
.RI "template<typename Bound, typename Layout, typename\&.\&.\&. NumericalComputations> auto \fBmake_equilibrium_graph\fP (std::shared_ptr< const Bound > bound, const Layout &layout, std::tuple< NumericalComputations\&.\&.\&. > numerical={}, \fBoperators::backend::mfem::VolumeOptions\fP options={})"
.br
.RI "Connect the explicit equilibrium definition in one readable place\&. "
.ti -1c
.RI "template<StellarModelType Model, typename FiniteElements, typename Normalization, typename Preconditioner>
.br
requires normalization::ReferenceResolvable<Normalization, Model>auto \fBmake_discretization\fP (\fBDiscretizationOptions\fP< Model, FiniteElements, Normalization, Preconditioner > options)"
.br
.RI "Resolve model defaults while preserving compile-time field, scheme, and coordinate choices\&. "
.ti -1c
.RI "template<typename Model> auto \fBshare_equation_of_state\fP (std::shared_ptr< const Model > model)"
.br
.RI "Share the EOS subobject while retaining the model that owns it\&. "
.ti -1c
.RI "template<typename EOS> \fBEosReference\fP< EOS > \fBborrow_eos\fP (const EOS &eos) noexcept"
.br
.RI "Borrow the model-owned EOS when the prepared graph already retains its immutable model owner\&. "
.ti -1c
.RI "template<typename EOS>
.br
requires (!std::is_lvalue_reference_v<EOS>)void \fBborrow_eos\fP (EOS &&)=delete"
.br
.RI "Borrowing never extends a temporary EOS lifetime\&. "
.ti -1c
.RI "template<typename Interior, typename Shape = NoShapeForce, typename Surface = NoSurfaceCondition> \fBEquilibriumEquations\fP (Interior, Shape={}, Surface={}) \-> EquilibriumEquations< Interior, Shape, Surface >"
.br
.RI "Preserve every authored member when a declaration passes through a templated model factory\&. "
.ti -1c
.RI "template<typename Model>
.br
requires requires(const Model& model) { model\&.equations(); } && EquilibriumEquationDescription<decltype(\fBdetail::resolve_equation_member\fP(std::declval<const Model&>()\&.equations(), std::declval<const Model&>()))>auto \fBresolve_equilibrium_equations\fP (const Model &model)"
.br
.RI "Resolve an explicit composition at binding; retain the model while the result borrows its members\&. "
.ti -1c
.RI "template<typename Model>
.br
requires (!std::is_lvalue_reference_v<Model>)void \fBresolve_equilibrium_equations\fP (Model &&)=delete"
.br
.RI "A temporary model cannot retain the equation members borrowed by the resolved description\&. "
.ti -1c
.RI "template<typename Model, typename Description, typename Plan, typename Bindings = DefaultSpecificationBindings, typename ExplicitZeroCouplings = utils::dependencies::KeyList<>> consteval bool \fBexecutable_model_topology\fP ()"
.br
.RI "Validate a complete selected formulation without inferring solvability or selecting physics\&. "
.ti -1c
.RI "template<discretization::blocks::SystemLayoutType Layout> \fBStellarState\fP (Layout) \-> StellarState< std::remove_cvref_t< Layout > >"
.br
.RI "Infer a state's layout type from its physical coordinate description\&. "
.ti -1c
.RI "template<discretization::blocks::SystemLayoutType Layout> \fBStellarState\fP (Layout, std::vector< double >) \-> StellarState< std::remove_cvref_t< Layout > >"
.br
.RI "Infer a state's layout type when adopting physical coefficients\&. "
.ti -1c
.RI "template<typename EOS, typename Definition, typename\&.\&.\&. Specifications>
.br
requires ValidSpecificationPack<std::remove_cvref_t<Specifications>\&.\&.\&.>\fBStellarModel\fP (EOS &&, Definition &&, Specifications &&\&.\&.\&.) \-> StellarModel< std::remove_cvref_t< EOS >, std::remove_cvref_t< Definition >, typename \fBdetail::CanonicalSpecifications\fP< std::remove_cvref_t< Specifications >\&.\&.\&. >::Type >"
.br
.ti -1c
.RI "template<typename EOS, typename Definition, typename\&.\&.\&. Specifications>
.br
requires ValidSpecificationPack<std::remove_cvref_t<Specifications>\&.\&.\&.>auto \fBmake_stellar_model\fP (EOS &&eos, Definition &&definition, Specifications &&\&.\&.\&. specifications)"
.br
.RI "Construct a typed physical description with programmer-selected equations\&. "
.ti -1c
.RI "static void \fBvalidate_target\fP (double value, bool zero_allowed, std::string_view name)"
.br
.RI "Validate a dimensional scalar target before storing a physical prescription\&. "
.ti -1c
.RI "template<typename Owner, utils::dependencies::IsDependencyContext Bindings> auto \fBmake_stellar_discretization\fP (std::shared_ptr< Owner > owner, Bindings bindings, const ::mfem::GridFunction &compactification, const \fBmapping::DomainMapper\fP &mapper)"
.br
.RI "Retain the supplied resource owner without copying finite-element spaces or changing their addresses\&. "
.ti -1c
.RI "template<typename Owner, typename Bindings, typename DomainModel> auto \fBwith_deformation\fP (StellarDiscretization< Owner, Bindings > discretization, DomainModel model, \fBgeometry::deformation::backend::mfem::ReferenceDiscretization\fP reference)"
.br
.RI "Add an explicit deformation prescription without changing the physical equation definition\&. "
.in -1c
.SS "Variables"
.in +1c
.ti -1c
.RI "template<\fBSpecificationRole\fP Role, typename Candidate> constexpr std::size_t \fBspecification_role_count\fP"
.br
.RI "Inspect role counts without instantiating invalid model specializations\&. "
.in -1c
.SH "Typedef Documentation"
.PP
.SS "template<ExecutableEquilibriumDescription Description, typename Plan> using \fBserif::model::ActualEquilibriumCouplings\fP = typename \fBdetail::EquilibriumCouplings\fP<Description, \fBdetail::ExecutionSurface\fP<Plan>>::Type"
.PP
Inspect the actual derivative producers admitted by the explicitly supplied physical formulation\&.
.SS "template<typename\&.\&.\&. Equations> using \fBserif::model::Changes\fP = \fButils::types::TypeList\fP<Equations\&.\&.\&.>"
.SS "template<DimensionalScalarSpecification Specification> using \fBserif::model::ConstraintQuantity\fP = typename Specification::ModelDefinition::ScalarDescription::ResidualQuantity"
.PP
Residual units remain independent from the target and generated coordinate\&.
.SS "template<ExecutableInteriorEquations Registry> using \fBserif::model::DeclaredEquationCouplings\fP = typename \fBdetail::InteriorCouplings\fP<std::remove_cvref_t<Registry>>::Type"
.PP
Derive declared interior couplings from actual operands rather than a second physical sparsity table\&.
.SS "using \fBserif::model::DefaultSpecificationBindings\fP = \fBSpecificationBindings\fP<>"
.SS "template<typename Row, typename Field> using \fBserif::model::Derivative\fP = \fBoperators::PhysicalBlock\fP<\fButils::dependencies::KeyList\fP<Row>, \fButils::dependencies::KeyList\fP<Field>>"
.PP
Name a physical derivative using the shared block-source key convention\&.
.SS "template<DimensionalScalarSpecification Specification> using \fBserif::model::GeneratedCoordinateQuantity\fP = typename Specification::ModelDefinition::ScalarDescription::CoordinateQuantity"
.PP
Query scalar units only once the owning prescription is complete\&.
.SS "template<typename\&.\&.\&. Fields> using \fBserif::model::Reads\fP = \fButils::types::TypeList\fP<Fields\&.\&.\&.>"
.SS "template<utils::dependencies::IsBinding\&.\&.\&. Additional> using \fBserif::model::SpecificationBindings\fP"
\fBInitial value:\fP
.nf
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\&.\&.\&.>
.PP
.fi
.PP
Map physical names and built-in generated identities once; custom identities require explicit bindings\&.
.SS "template<\fBSpecificationRole\fP Role, StellarModelType Candidate> using \fBserif::model::SpecificationsForRole\fP = typename std::remove_cvref_t<Candidate>::template \fBSpecificationsForRole\fP<Role>"
.SH "Enumeration Type Documentation"
.PP
.SS "enum class \fBserif::model::GeneratedStateKind\fP\fR [strong]\fP"
.PP
Distinguish prescribed physics from the physical meaning of a generated scalar\&.
.PP
\fBEnumerator\fP
.in +1c
.TP
\f(BInone \fP
.TP
\f(BImultiplier \fP
.TP
\f(BIphysical_coordinate \fP
.TP
\f(BIsolver_border \fP
.SS "enum class \fBserif::model::SpecificationRole\fP\fR [strong]\fP"
.PP
Physical purpose of a prescription, independently of its numerical implementation\&.
.PP
\fBEnumerator\fP
.in +1c
.TP
\f(BIconstitutive_law \fP
.TP
\f(BIboundary_condition \fP
.TP
\f(BIinvariant \fP
.TP
\f(BIphase_condition \fP
.TP
\f(BIgauge_choice \fP
.TP
\f(BIrotation_law \fP
.SH "Function Documentation"
.PP
.SS "template<typename EOS> \fBEosReference\fP< EOS > serif::model::borrow_eos (const EOS & eos)\fR [nodiscard]\fP, \fR [noexcept]\fP"
.PP
Borrow the model-owned EOS when the prepared graph already retains its immutable model owner\&.
.SS "template<typename EOS>
.br
requires (!std::is_lvalue_reference_v<EOS>)void serif::model::borrow_eos (EOS && )\fR [delete]\fP"
.PP
Borrowing never extends a temporary EOS lifetime\&.
.SS "template<typename Interior, typename Shape = NoShapeForce, typename Surface = NoSurfaceCondition> serif::model::EquilibriumEquations (Interior , Shape = \fR{}\fP, Surface = \fR{}\fP) \-> EquilibriumEquations< Interior, Shape, Surface >"
.PP
Preserve every authored member when a declaration passes through a templated model factory\&.
.PP
\fBNote\fP
.RS 4
Explicit deduction avoids compiler substitution dropping defaulted aggregate members\&. Deduced declarations supply preceding slots: use \fBNoShapeForce\fP before a surface condition when the shape force is absent\&. Explicitly typed aggregates may still skip members\&.
.RE
.PP
.SS "template<typename Model, typename Description, typename Plan, typename Bindings = DefaultSpecificationBindings, typename ExplicitZeroCouplings = utils::dependencies::KeyList<>> bool serif::model::executable_model_topology ()\fR [nodiscard]\fP, \fR [consteval]\fP"
.PP
Validate a complete selected formulation without inferring solvability or selecting physics\&.
.PP
\fBNote\fP
.RS 4
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\&.
.RE
.PP
.SS "template<StellarModelType Model, typename FiniteElements, typename Normalization, typename Preconditioner>
.br
requires normalization::ReferenceResolvable<Normalization, Model>auto serif::model::make_discretization (\fBDiscretizationOptions\fP< Model, FiniteElements, Normalization, Preconditioner > options)\fR [nodiscard]\fP"
.PP
Resolve model defaults while preserving compile-time field, scheme, and coordinate choices\&.
.PP
\fBNote\fP
.RS 4
Finite-element resources remain explicit: normalization does not choose a mesh or approximation order\&.
.RE
.PP
.SS "template<typename Bound, typename Layout, typename\&.\&.\&. NumericalComputations> auto serif::model::make_equilibrium_graph (std::shared_ptr< const Bound > bound, const Layout & layout, std::tuple< NumericalComputations\&.\&.\&. > numerical = \fR{}\fP, \fBoperators::backend::mfem::VolumeOptions\fP options = \fR{}\fP)\fR [nodiscard]\fP"
.PP
Connect the explicit equilibrium definition in one readable place\&.
.PP
\fBNote\fP
.RS 4
Interior physics, shape force and surface replacement remain separate declarations\&. The final physical-system computation collects additions before replacing rows\&.
.RE
.PP
.SS "template<ExecutableInteriorEquations Registry, typename Discretization, discretization::blocks::SystemLayoutType Layout, typename\&.\&.\&. AdditionalComputations, typename\&.\&.\&. AdditionalContributions> auto serif::model::make_model_graph (Registry registry, std::shared_ptr< const Discretization > discretization, const Layout & layout, std::tuple< AdditionalComputations\&.\&.\&. > additional = \fR{}\fP, \fButils::dependencies::KeyList\fP< AdditionalContributions\&.\&.\&. > contributions = \fR{}\fP, \fBoperators::backend::mfem::VolumeOptions\fP options = \fR{}\fP)\fR [nodiscard]\fP"
.PP
Retain a standalone registry, including move-only equations supplied as an rvalue\&.
.SS "template<ExecutableInteriorEquations Registry, typename Discretization, discretization::blocks::SystemLayoutType Layout, typename\&.\&.\&. AdditionalComputations, typename\&.\&.\&. AdditionalContributions> 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 = \fR{}\fP, \fButils::dependencies::KeyList\fP< AdditionalContributions\&.\&.\&. > contributions = \fR{}\fP, \fBoperators::backend::mfem::VolumeOptions\fP options = \fR{}\fP)\fR [nodiscard]\fP"
.PP
Construct the complete stellar graph at one explicit composition point\&.
.PP
\fBNote\fP
.RS 4
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\&.
.RE
.PP
.SS "template<typename Owner, utils::dependencies::IsDependencyContext Bindings> auto serif::model::backend::mfem::make_stellar_discretization (std::shared_ptr< Owner > owner, Bindings bindings, const ::mfem::GridFunction & compactification, const \fBmapping::DomainMapper\fP & mapper)\fR [nodiscard]\fP"
.PP
Retain the supplied resource owner without copying finite-element spaces or changing their addresses\&.
.SS "template<typename EOS, typename Definition, typename\&.\&.\&. Specifications>
.br
requires ValidSpecificationPack<std::remove_cvref_t<Specifications>\&.\&.\&.>auto serif::model::make_stellar_model (EOS && eos, Definition && definition, Specifications &&\&.\&.\&. specifications)\fR [nodiscard]\fP"
.PP
Construct a typed physical description with programmer-selected equations\&.
.SS "template<typename Model>
.br
requires requires(const Model& model) { model\&.equations(); } && EquilibriumEquationDescription<decltype(\fBdetail::resolve_equation_member\fP(std::declval<const Model&>()\&.equations(), std::declval<const Model&>()))>auto serif::model::resolve_equilibrium_equations (const Model & model)\fR [nodiscard]\fP"
.PP
Resolve an explicit composition at binding; retain the model while the result borrows its members\&.
.SS "template<typename Model>
.br
requires (!std::is_lvalue_reference_v<Model>)void serif::model::resolve_equilibrium_equations (Model && )\fR [delete]\fP"
.PP
A temporary model cannot retain the equation members borrowed by the resolved description\&.
.SS "template<typename Model> auto serif::model::share_equation_of_state (std::shared_ptr< const Model > model)\fR [nodiscard]\fP"
.PP
Share the EOS subobject while retaining the model that owns it\&.
.SS "template<typename EOS, typename Definition, typename\&.\&.\&. Specifications>
.br
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 \fBdetail::CanonicalSpecifications\fP< std::remove_cvref_t< Specifications >\&.\&.\&. >::Type >"
.SS "template<discretization::blocks::SystemLayoutType Layout> serif::model::StellarState (Layout ) \-> StellarState< std::remove_cvref_t< Layout > >"
.PP
Infer a state's layout type from its physical coordinate description\&.
.SS "template<discretization::blocks::SystemLayoutType Layout> serif::model::StellarState (Layout , std::vector< double > ) \-> StellarState< std::remove_cvref_t< Layout > >"
.PP
Infer a state's layout type when adopting physical coefficients\&.
.SS "static void serif::model::validate_target (double value, bool zero_allowed, std::string_view name)\fR [static]\fP"
.PP
Validate a dimensional scalar target before storing a physical prescription\&.
.SS "template<typename Owner, typename Bindings, typename DomainModel> auto serif::model::backend::mfem::with_deformation (StellarDiscretization< Owner, Bindings > discretization, DomainModel model, \fBgeometry::deformation::backend::mfem::ReferenceDiscretization\fP reference)\fR [nodiscard]\fP"
.PP
Add an explicit deformation prescription without changing the physical equation definition\&.
.SH "Variable Documentation"
.PP
.SS "template<\fBSpecificationRole\fP Role, typename Candidate> std::size_t serif::model::specification_role_count\fR [inline]\fP, \fR [constexpr]\fP"
\fBInitial value:\fP
.nf
= []
{
if constexpr (StellarModelType<Candidate>)
{
return std::remove_cvref_t<Candidate>::template specification_role_count<Role>;
}
else
{
return std::size_t{0};
}
}()
.PP
.fi
.PP
Inspect role counts without instantiating invalid model specializations\&.
.SH "Author"
.PP
Generated automatically by Doxygen for SERiF from the source code\&.