.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 using \fBActualEquilibriumCouplings\fP = typename \fBdetail::EquilibriumCouplings\fP>::Type" .br .RI "Inspect the actual derivative producers admitted by the explicitly supplied physical formulation\&. " .ti -1c .RI "template using \fBReads\fP = \fButils::types::TypeList\fP" .br .ti -1c .RI "template using \fBChanges\fP = \fButils::types::TypeList\fP" .br .ti -1c .RI "template using \fBGeneratedCoordinateQuantity\fP = typename Specification::ModelDefinition::ScalarDescription::CoordinateQuantity" .br .RI "Query scalar units only once the owning prescription is complete\&. " .ti -1c .RI "template 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::template \fBSpecificationsForRole\fP" .br .ti -1c .RI "template using \fBDerivative\fP = \fBoperators::PhysicalBlock\fP<\fButils::dependencies::KeyList\fP, \fButils::dependencies::KeyList\fP>" .br .RI "Name a physical derivative using the shared block-source key convention\&. " .ti -1c .RI "template 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 using \fBDeclaredEquationCouplings\fP = typename \fBdetail::InteriorCouplings\fP>::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 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 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 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 .br requires normalization::ReferenceResolvableauto \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 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 \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 .br requires (!std::is_lvalue_reference_v)void \fBborrow_eos\fP (EOS &&)=delete" .br .RI "Borrowing never extends a temporary EOS lifetime\&. " .ti -1c .RI "template \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 .br requires requires(const Model& model) { model\&.equations(); } && EquilibriumEquationDescription()\&.equations(), std::declval()))>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 .br requires (!std::is_lvalue_reference_v)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> consteval bool \fBexecutable_model_topology\fP ()" .br .RI "Validate a complete selected formulation without inferring solvability or selecting physics\&. " .ti -1c .RI "template \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 \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 .br requires ValidSpecificationPack\&.\&.\&.>\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 .br requires ValidSpecificationPack\&.\&.\&.>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 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 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 using \fBserif::model::ActualEquilibriumCouplings\fP = typename \fBdetail::EquilibriumCouplings\fP>::Type" .PP Inspect the actual derivative producers admitted by the explicitly supplied physical formulation\&. .SS "template using \fBserif::model::Changes\fP = \fButils::types::TypeList\fP" .SS "template using \fBserif::model::ConstraintQuantity\fP = typename Specification::ModelDefinition::ScalarDescription::ResidualQuantity" .PP Residual units remain independent from the target and generated coordinate\&. .SS "template using \fBserif::model::DeclaredEquationCouplings\fP = typename \fBdetail::InteriorCouplings\fP>::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 using \fBserif::model::Derivative\fP = \fBoperators::PhysicalBlock\fP<\fButils::dependencies::KeyList\fP, \fButils::dependencies::KeyList\fP>" .PP Name a physical derivative using the shared block-source key convention\&. .SS "template using \fBserif::model::GeneratedCoordinateQuantity\fP = typename Specification::ModelDefinition::ScalarDescription::CoordinateQuantity" .PP Query scalar units only once the owning prescription is complete\&. .SS "template using \fBserif::model::Reads\fP = \fButils::types::TypeList\fP" .SS "template using \fBserif::model::SpecificationBindings\fP" \fBInitial value:\fP .nf utils::dependencies::Bindings< utils::dependencies::Binding, utils::dependencies::Binding, utils::dependencies::Binding, utils::dependencies::Binding, utils::dependencies::Binding, utils::dependencies::Binding, utils::dependencies::Binding, discretization::blocks::barotropic_constant::mass_normalization>, utils::dependencies::Binding, discretization::blocks::barotropic_constant::mass_normalization>, utils::dependencies::Binding, discretization::blocks::rotation::angular_velocity>, utils::dependencies::Binding, 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::template \fBSpecificationsForRole\fP" .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 \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 .br requires (!std::is_lvalue_reference_v)void serif::model::borrow_eos (EOS && )\fR [delete]\fP" .PP Borrowing never extends a temporary EOS lifetime\&. .SS "template 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> 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 .br requires normalization::ReferenceResolvableauto 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 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 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 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 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 .br requires ValidSpecificationPack\&.\&.\&.>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 .br requires requires(const Model& model) { model\&.equations(); } && EquilibriumEquationDescription()\&.equations(), std::declval()))>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 .br requires (!std::is_lvalue_reference_v)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 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 .br requires ValidSpecificationPack\&.\&.\&.>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 serif::model::StellarState (Layout ) \-> StellarState< std::remove_cvref_t< Layout > >" .PP Infer a state's layout type from its physical coordinate description\&. .SS "template 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 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) { return std::remove_cvref_t::template specification_role_count; } 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\&.