\doxysection{serif\+::model Namespace Reference} \hypertarget{namespaceserif_1_1model}{}\label{namespaceserif_1_1model}\index{serif::model@{serif::model}} \doxysubsubsection*{Namespaces} \begin{DoxyCompactItemize} \item namespace \mbox{\hyperlink{namespaceserif_1_1model_1_1backend}{backend}} \item namespace \mbox{\hyperlink{namespaceserif_1_1model_1_1checks}{checks}} \item namespace \mbox{\hyperlink{namespaceserif_1_1model_1_1computations}{computations}} \item namespace \mbox{\hyperlink{namespaceserif_1_1model_1_1detail}{detail}} \item namespace \mbox{\hyperlink{namespaceserif_1_1model_1_1equation}{equation}} \item namespace \mbox{\hyperlink{namespaceserif_1_1model_1_1keys}{keys}} \item namespace \mbox{\hyperlink{namespaceserif_1_1model_1_1normalization}{normalization}} \item namespace \mbox{\hyperlink{namespaceserif_1_1model_1_1preconditioning}{preconditioning}} \item namespace \mbox{\hyperlink{namespaceserif_1_1model_1_1state}{state}} \end{DoxyCompactItemize} \doxysubsubsection*{Classes} \begin{DoxyCompactItemize} \item struct \mbox{\hyperlink{structserif_1_1model_1_1_constraint_of}{Constraint\+Of}} \begin{DoxyCompactList}\small\item\em Identify a generated residual independently from its target and unknown units. \end{DoxyCompactList}\item struct \mbox{\hyperlink{structserif_1_1model_1_1_discretization_options}{Discretization\+Options}} \begin{DoxyCompactList}\small\item\em Select a descriptive star, its existing finite-\/element resources, and its numerical coordinates. \end{DoxyCompactList}\item struct \mbox{\hyperlink{structserif_1_1model_1_1_enforcement_of}{Enforcement\+Of}} \begin{DoxyCompactList}\small\item\em Select an explicit numerical enforcement while preserving the public physical prescription. \end{DoxyCompactList}\item class \mbox{\hyperlink{classserif_1_1model_1_1_eos_reference}{Eos\+Reference}} \begin{DoxyCompactList}\small\item\em Reuse one immutable EOS in equation objects, optionally retaining shared ownership. \end{DoxyCompactList}\item struct \mbox{\hyperlink{structserif_1_1model_1_1_equilibrium_equations}{Equilibrium\+Equations}} \begin{DoxyCompactList}\small\item\em State the chosen equations explicitly, without selecting physics from the EOS. \end{DoxyCompactList}\item struct \mbox{\hyperlink{structserif_1_1model_1_1_equilibrium_plan}{Equilibrium\+Plan}} \begin{DoxyCompactList}\small\item\em Collect the explicitly selected physical coefficients and supported constraint coordinates. \end{DoxyCompactList}\item class \mbox{\hyperlink{classserif_1_1model_1_1_fixed_angular_momentum}{Fixed\+Angular\+Momentum}} \begin{DoxyCompactList}\small\item\em Prescribe angular momentum while angular velocity remains an independent solved coordinate. \end{DoxyCompactList}\item class \mbox{\hyperlink{classserif_1_1model_1_1_fixed_total_mass}{Fixed\+Total\+Mass}} \begin{DoxyCompactList}\small\item\em Prescribe total stellar mass while the effective surface-\/potential level remains an independent solved coordinate. \end{DoxyCompactList}\item struct \mbox{\hyperlink{structserif_1_1model_1_1_generated_coordinate_of}{Generated\+Coordinate\+Of}} \begin{DoxyCompactList}\small\item\em Name another prescription, including a forward declaration, without erasing its identity. \end{DoxyCompactList}\item struct \mbox{\hyperlink{structserif_1_1model_1_1_model_plan}{Model\+Plan}} \begin{DoxyCompactList}\small\item\em Derive physical coordinates from explicit equations, independently of numerical solvability. \end{DoxyCompactList}\item struct \mbox{\hyperlink{structserif_1_1model_1_1_no_shape_force}{No\+Shape\+Force}} \begin{DoxyCompactList}\small\item\em Explicitly omit a shape equation from a declarative formulation. \end{DoxyCompactList}\item struct \mbox{\hyperlink{structserif_1_1model_1_1_no_surface_condition}{No\+Surface\+Condition}} \begin{DoxyCompactList}\small\item\em Explicitly omit a surface prescription from a declarative formulation. \end{DoxyCompactList}\item struct \mbox{\hyperlink{structserif_1_1model_1_1_scalar_constraint}{Scalar\+Constraint}} \begin{DoxyCompactList}\small\item\em Declare independent target, unknown and residual units and stable descriptive identities. \end{DoxyCompactList}\item struct \mbox{\hyperlink{structserif_1_1model_1_1_specification_definition}{Specification\+Definition}} \begin{DoxyCompactList}\small\item\em Declare a prescription once; numerical providers and normalization consume this metadata. \end{DoxyCompactList}\item struct \mbox{\hyperlink{structserif_1_1model_1_1_specification_descriptor}{Specification\+Descriptor}} \begin{DoxyCompactList}\small\item\em Inspect canonical prescription identity without claiming numerical availability. \end{DoxyCompactList}\item struct \mbox{\hyperlink{structserif_1_1model_1_1_stellar_mesh_options}{Stellar\+Mesh\+Options}} \begin{DoxyCompactList}\small\item\em Resolve a spherical stellar interior and a compactified exterior on a curved reference mesh. \end{DoxyCompactList}\item class \mbox{\hyperlink{classserif_1_1model_1_1_stellar_model}{Stellar\+Model}} \item class \mbox{\hyperlink{classserif_1_1model_1_1_stellar_model_3_01_equation_of_state_t_00_01_equation_definition_t_00_016d3cb5fe23fb2ea683d797d35ea27bae}{Stellar\+Model$<$ Equation\+Of\+State\+T, Equation\+Definition\+T, utils\+::types\+::\+Type\+List$<$ Specifications... $>$ $>$}} \begin{DoxyCompactList}\small\item\em Own immutable physics and an explicit formulation, independently of meshes, caches and solvers. \end{DoxyCompactList}\item struct \mbox{\hyperlink{structserif_1_1model_1_1_stellar_state}{Stellar\+State}} \begin{DoxyCompactList}\small\item\em Own one stellar candidate in physical coordinates, including any solved surface shape. \end{DoxyCompactList}\item struct \mbox{\hyperlink{structserif_1_1model_1_1_stellar_surface_refinement_options}{Stellar\+Surface\+Refinement\+Options}} \begin{DoxyCompactList}\small\item\em Add mesh resolution at the stellar interface before creating field spaces. \end{DoxyCompactList}\end{DoxyCompactItemize} \doxysubsubsection*{Concepts} \begin{DoxyCompactItemize} \item concept \mbox{\hyperlink{conceptserif_1_1model_1_1_equilibrium_equation_description}{Equilibrium\+Equation\+Description}} \begin{DoxyCompactList}\small\item\em Recognize composition without instantiating any numerical equation contract. \end{DoxyCompactList}\item concept \mbox{\hyperlink{conceptserif_1_1model_1_1_executable_equilibrium_description}{Executable\+Equilibrium\+Description}} \begin{DoxyCompactList}\small\item\em Recognize current equation backends without instantiating an invalid complete plan. \end{DoxyCompactList}\item concept \mbox{\hyperlink{conceptserif_1_1model_1_1_executable_interior_equations}{Executable\+Interior\+Equations}} \begin{DoxyCompactList}\small\item\em The current interior backend can evaluate every explicitly listed equation. \end{DoxyCompactList}\item concept \mbox{\hyperlink{conceptserif_1_1model_1_1_model_specification}{Model\+Specification}} \begin{DoxyCompactList}\small\item\em Recognize a self-\/describing prescription without demanding executable physics or optional metadata. \end{DoxyCompactList}\item concept \mbox{\hyperlink{conceptserif_1_1model_1_1_dimensional_scalar_specification}{Dimensional\+Scalar\+Specification}} \begin{DoxyCompactList}\small\item\em Require exact dimensional agreement only when scalar numerical metadata is needed. \end{DoxyCompactList}\item concept \mbox{\hyperlink{conceptserif_1_1model_1_1_valid_specification_pack}{Valid\+Specification\+Pack}} \begin{DoxyCompactList}\small\item\em Prescriptions accompany one separately owned EOS; no numerical capability is assumed. \end{DoxyCompactList}\item concept \mbox{\hyperlink{conceptserif_1_1model_1_1_stellar_model_type}{Stellar\+Model\+Type}} \begin{DoxyCompactList}\small\item\em Safely recognize descriptions, including when presented with an incomplete specialization. \end{DoxyCompactList}\item concept \mbox{\hyperlink{conceptserif_1_1model_1_1_has_unique_specification_for_role}{Has\+Unique\+Specification\+For\+Role}} \item concept \mbox{\hyperlink{conceptserif_1_1model_1_1_specification_endpoints_valid}{Specification\+Endpoints\+Valid}} \begin{DoxyCompactList}\small\item\em Validate physical ownership, available inputs and uniquely owned generated equations. \end{DoxyCompactList}\item concept \mbox{\hyperlink{conceptserif_1_1model_1_1_specification_topology_valid}{Specification\+Topology\+Valid}} \begin{DoxyCompactList}\small\item\em Validate physical endpoints and every derivative in an explicitly declared contract. \end{DoxyCompactList}\item concept \mbox{\hyperlink{conceptserif_1_1model_1_1_specification_backend_available}{Specification\+Backend\+Available}} \begin{DoxyCompactList}\small\item\em Require a registered implementation for every declared generated derivative, including explicit zeros. \end{DoxyCompactList}\end{DoxyCompactItemize} \doxysubsubsection*{Typedefs} \begin{DoxyCompactItemize} \item {\footnotesize template$<$Executable\+Equilibrium\+Description Description, typename Plan$>$ }\\using \mbox{\hyperlink{namespaceserif_1_1model_a1a9e18895b6021d27952932da09eb71b}{Actual\+Equilibrium\+Couplings}} = typename \mbox{\hyperlink{structserif_1_1model_1_1detail_1_1_equilibrium_couplings}{detail\+::\+Equilibrium\+Couplings}}$<$Description, \mbox{\hyperlink{structserif_1_1model_1_1detail_1_1_execution_surface}{detail\+::\+Execution\+Surface}}$<$Plan$>$$>$\+::\+Type \begin{DoxyCompactList}\small\item\em Inspect the actual derivative producers admitted by the explicitly supplied physical formulation. \end{DoxyCompactList}\item {\footnotesize template$<$typename... Fields$>$ }\\using \mbox{\hyperlink{namespaceserif_1_1model_a251ff98f4ef742b690180c7cb06292bb}{Reads}} = \mbox{\hyperlink{structserif_1_1utils_1_1types_1_1_type_list}{utils\+::types\+::\+Type\+List}}$<$Fields...$>$ \item {\footnotesize template$<$typename... Equations$>$ }\\using \mbox{\hyperlink{namespaceserif_1_1model_a5cbe5c0513a11299350110cee5d31821}{Changes}} = \mbox{\hyperlink{structserif_1_1utils_1_1types_1_1_type_list}{utils\+::types\+::\+Type\+List}}$<$Equations...$>$ \item {\footnotesize template$<$Dimensional\+Scalar\+Specification Specification$>$ }\\using \mbox{\hyperlink{namespaceserif_1_1model_ac7544ec47f3986209861b7fb0b6ae4bf}{Generated\+Coordinate\+Quantity}} = typename Specification\+::\+Model\+Definition\+::\+Scalar\+Description\+::\+Coordinate\+Quantity \begin{DoxyCompactList}\small\item\em Query scalar units only once the owning prescription is complete. \end{DoxyCompactList}\item {\footnotesize template$<$Dimensional\+Scalar\+Specification Specification$>$ }\\using \mbox{\hyperlink{namespaceserif_1_1model_a36d5c59d89fffbd444ee44415f85bbed}{Constraint\+Quantity}} = typename Specification\+::\+Model\+Definition\+::\+Scalar\+Description\+::\+Residual\+Quantity \begin{DoxyCompactList}\small\item\em Residual units remain independent from the target and generated coordinate. \end{DoxyCompactList}\item {\footnotesize template$<$\mbox{\hyperlink{namespaceserif_1_1model_a80cb843c4b97c06905b775aba9d4b813}{Specification\+Role}} Role, Stellar\+Model\+Type Candidate$>$ }\\using \mbox{\hyperlink{namespaceserif_1_1model_aeb8535e8d8e5b2b39d913f12b149a2b3}{Specifications\+For\+Role}} = typename std\+::remove\+\_\+cvref\+\_\+t$<$Candidate$>$\+::template \mbox{\hyperlink{namespaceserif_1_1model_aeb8535e8d8e5b2b39d913f12b149a2b3}{Specifications\+For\+Role}}$<$Role$>$ \item {\footnotesize template$<$typename Row, typename Field$>$ }\\using \mbox{\hyperlink{namespaceserif_1_1model_a95bbbd670343f9cd11939d21c5bf79ab}{Derivative}} = \mbox{\hyperlink{structserif_1_1operators_1_1_physical_block}{operators\+::\+Physical\+Block}}$<$\mbox{\hyperlink{structserif_1_1utils_1_1dependencies_1_1_key_list}{utils\+::dependencies\+::\+Key\+List}}$<$Row$>$, \mbox{\hyperlink{structserif_1_1utils_1_1dependencies_1_1_key_list}{utils\+::dependencies\+::\+Key\+List}}$<$Field$>$$>$ \begin{DoxyCompactList}\small\item\em Name a physical derivative using the shared block-\/source key convention. \end{DoxyCompactList}\item {\footnotesize template$<$utils\+::dependencies\+::\+Is\+Binding... Additional$>$ }\\using \mbox{\hyperlink{namespaceserif_1_1model_aa7c7c71dc1c2c0431623ac27c88bdb0b}{Specification\+Bindings}} \begin{DoxyCompactList}\small\item\em Map physical names and built-\/in generated identities once; custom identities require explicit bindings. \end{DoxyCompactList}\item using \mbox{\hyperlink{namespaceserif_1_1model_adae046e777aafb66e79a039911580916}{Default\+Specification\+Bindings}} = \mbox{\hyperlink{namespaceserif_1_1model_aa7c7c71dc1c2c0431623ac27c88bdb0b}{Specification\+Bindings}}$<$$>$ \item {\footnotesize template$<$Executable\+Interior\+Equations Registry$>$ }\\using \mbox{\hyperlink{namespaceserif_1_1model_a5d147fdea58527d7b5ee14302ab8cd57}{Declared\+Equation\+Couplings}} = typename \mbox{\hyperlink{structserif_1_1model_1_1detail_1_1_interior_couplings}{detail\+::\+Interior\+Couplings}}$<$std\+::remove\+\_\+cvref\+\_\+t$<$Registry$>$$>$\+::\+Type \begin{DoxyCompactList}\small\item\em Derive declared interior couplings from actual operands rather than a second physical sparsity table. \end{DoxyCompactList}\end{DoxyCompactItemize} \doxysubsubsection*{Enumerations} \begin{DoxyCompactItemize} \item enum class \mbox{\hyperlink{namespaceserif_1_1model_a80cb843c4b97c06905b775aba9d4b813}{Specification\+Role}} \{ \newline \mbox{\hyperlink{namespaceserif_1_1model_a80cb843c4b97c06905b775aba9d4b813a7832eb62b9d5da114fbd828501794b90}{constitutive\+\_\+law}} , \mbox{\hyperlink{namespaceserif_1_1model_a80cb843c4b97c06905b775aba9d4b813a8360be627354dd5a66ea7e358d0109a4}{boundary\+\_\+condition}} , \mbox{\hyperlink{namespaceserif_1_1model_a80cb843c4b97c06905b775aba9d4b813a97a1fb4792ab0d80857d825020ced2f0}{invariant}} , \mbox{\hyperlink{namespaceserif_1_1model_a80cb843c4b97c06905b775aba9d4b813ab55fad3fe78d06b3d481aef2500c784b}{phase\+\_\+condition}} , \newline \mbox{\hyperlink{namespaceserif_1_1model_a80cb843c4b97c06905b775aba9d4b813a49d377e11d9c996137d2ef9ca80a1482}{gauge\+\_\+choice}} , \mbox{\hyperlink{namespaceserif_1_1model_a80cb843c4b97c06905b775aba9d4b813ae7aa3fcb6ca31a1a1fa583a6e4a98c30}{rotation\+\_\+law}} \} \begin{DoxyCompactList}\small\item\em Physical purpose of a prescription, independently of its numerical implementation. \end{DoxyCompactList}\item enum class \mbox{\hyperlink{namespaceserif_1_1model_a9dbd561b48b9cbb817a4102517d065ca}{Generated\+State\+Kind}} \{ \mbox{\hyperlink{namespaceserif_1_1model_a9dbd561b48b9cbb817a4102517d065caa334c4a4c42fdb79d7ebc3e73b517e6f8}{none}} , \mbox{\hyperlink{namespaceserif_1_1model_a9dbd561b48b9cbb817a4102517d065caa2375dfa839ccd84978745547605b21e4}{multiplier}} , \mbox{\hyperlink{namespaceserif_1_1model_a9dbd561b48b9cbb817a4102517d065caa5b029370da350a18e571dffd4b78ae47}{physical\+\_\+coordinate}} , \mbox{\hyperlink{namespaceserif_1_1model_a9dbd561b48b9cbb817a4102517d065caa2fadfbbb30ccd79bbdcae01edd52f2b5}{solver\+\_\+border}} \} \begin{DoxyCompactList}\small\item\em Distinguish prescribed physics from the physical meaning of a generated scalar. \end{DoxyCompactList}\end{DoxyCompactItemize} \doxysubsubsection*{Functions} \begin{DoxyCompactItemize} \item {\footnotesize template$<$Executable\+Interior\+Equations Registry, typename Discretization, discretization\+::blocks\+::\+System\+Layout\+Type Layout, typename... Additional\+Computations, typename... Additional\+Contributions$>$ }\\auto \mbox{\hyperlink{namespaceserif_1_1model_a818040e7235375f50650868a1fec3ae6}{make\+\_\+model\+\_\+graph}} (std\+::shared\+\_\+ptr$<$ const Registry $>$ registry, std\+::shared\+\_\+ptr$<$ const Discretization $>$ discretization, const Layout \&layout, std\+::tuple$<$ Additional\+Computations... $>$ additional=\{\}, \mbox{\hyperlink{structserif_1_1utils_1_1dependencies_1_1_key_list}{utils\+::dependencies\+::\+Key\+List}}$<$ Additional\+Contributions... $>$ contributions=\{\}, \mbox{\hyperlink{structserif_1_1operators_1_1backend_1_1mfem_1_1_volume_options}{operators\+::backend\+::mfem\+::\+Volume\+Options}} options=\{\}) \begin{DoxyCompactList}\small\item\em Construct the complete stellar graph at one explicit composition point. \end{DoxyCompactList}\item {\footnotesize template$<$Executable\+Interior\+Equations Registry, typename Discretization, discretization\+::blocks\+::\+System\+Layout\+Type Layout, typename... Additional\+Computations, typename... Additional\+Contributions$>$ }\\auto \mbox{\hyperlink{namespaceserif_1_1model_a085910a172d862a4116162850b0222c5}{make\+\_\+model\+\_\+graph}} (Registry registry, std\+::shared\+\_\+ptr$<$ const Discretization $>$ discretization, const Layout \&layout, std\+::tuple$<$ Additional\+Computations... $>$ additional=\{\}, \mbox{\hyperlink{structserif_1_1utils_1_1dependencies_1_1_key_list}{utils\+::dependencies\+::\+Key\+List}}$<$ Additional\+Contributions... $>$ contributions=\{\}, \mbox{\hyperlink{structserif_1_1operators_1_1backend_1_1mfem_1_1_volume_options}{operators\+::backend\+::mfem\+::\+Volume\+Options}} options=\{\}) \begin{DoxyCompactList}\small\item\em Retain a standalone registry, including move-\/only equations supplied as an rvalue. \end{DoxyCompactList}\item {\footnotesize template$<$typename Bound, typename Layout, typename... Numerical\+Computations$>$ }\\auto \mbox{\hyperlink{namespaceserif_1_1model_a74e1efe91e9ad6f773134036585a39b6}{make\+\_\+equilibrium\+\_\+graph}} (std\+::shared\+\_\+ptr$<$ const Bound $>$ bound, const Layout \&layout, std\+::tuple$<$ Numerical\+Computations... $>$ numerical=\{\}, \mbox{\hyperlink{structserif_1_1operators_1_1backend_1_1mfem_1_1_volume_options}{operators\+::backend\+::mfem\+::\+Volume\+Options}} options=\{\}) \begin{DoxyCompactList}\small\item\em Connect the explicit equilibrium definition in one readable place. \end{DoxyCompactList}\item {\footnotesize template$<$Stellar\+Model\+Type Model, typename Finite\+Elements, typename Normalization, typename Preconditioner$>$ \newline requires normalization\+::\+Reference\+Resolvable$<$Normalization, Model$>$}\\auto \mbox{\hyperlink{namespaceserif_1_1model_a98c9e47b78a995adae698ca88a7e18fb}{make\+\_\+discretization}} (\mbox{\hyperlink{structserif_1_1model_1_1_discretization_options}{Discretization\+Options}}$<$ Model, Finite\+Elements, Normalization, Preconditioner $>$ options) \begin{DoxyCompactList}\small\item\em Resolve model defaults while preserving compile-\/time field, scheme, and coordinate choices. \end{DoxyCompactList}\item {\footnotesize template$<$typename Model$>$ }\\auto \mbox{\hyperlink{namespaceserif_1_1model_a99f093b7cfc3526466056b87c8db0f33}{share\+\_\+equation\+\_\+of\+\_\+state}} (std\+::shared\+\_\+ptr$<$ const Model $>$ model) \begin{DoxyCompactList}\small\item\em Share the EOS subobject while retaining the model that owns it. \end{DoxyCompactList}\item {\footnotesize template$<$typename EOS$>$ }\\\mbox{\hyperlink{classserif_1_1model_1_1_eos_reference}{Eos\+Reference}}$<$ EOS $>$ \mbox{\hyperlink{namespaceserif_1_1model_ae24dcbfc49419c2f0f500da702371bd5}{borrow\+\_\+eos}} (const EOS \&eos) noexcept \begin{DoxyCompactList}\small\item\em Borrow the model-\/owned EOS when the prepared graph already retains its immutable model owner. \end{DoxyCompactList}\item {\footnotesize template$<$typename EOS$>$ \newline requires (!std\+::is\+\_\+lvalue\+\_\+reference\+\_\+v$<$EOS$>$)}\\void \mbox{\hyperlink{namespaceserif_1_1model_a6252df8508dcd9bed7e242edae8133d5}{borrow\+\_\+eos}} (EOS \&\&)=delete \begin{DoxyCompactList}\small\item\em Borrowing never extends a temporary EOS lifetime. \end{DoxyCompactList}\item {\footnotesize template$<$typename Interior, typename Shape = No\+Shape\+Force, typename Surface = No\+Surface\+Condition$>$ }\\\mbox{\hyperlink{namespaceserif_1_1model_ae40b696afec46eacfa0e74ef448b46bb}{Equilibrium\+Equations}} (Interior, Shape=\{\}, Surface=\{\}) -\/$>$ Equilibrium\+Equations$<$ Interior, Shape, Surface $>$ \begin{DoxyCompactList}\small\item\em Preserve every authored member when a declaration passes through a templated model factory. \end{DoxyCompactList}\item {\footnotesize template$<$typename Model$>$ \newline requires requires(const Model\& model) \{ model.\+equations(); \} \&\& Equilibrium\+Equation\+Description$<$decltype(\mbox{\hyperlink{namespaceserif_1_1model_1_1detail_a16f3eb10a3c11e985ea40a4845ab3bdc}{detail\+::resolve\+\_\+equation\+\_\+member}}(std\+::declval$<$const Model\&$>$().equations(), std\+::declval$<$const Model\&$>$()))$>$}\\auto \mbox{\hyperlink{namespaceserif_1_1model_aa55d6cc09e69d07412896dedcb71c5a5}{resolve\+\_\+equilibrium\+\_\+equations}} (const Model \&model) \begin{DoxyCompactList}\small\item\em Resolve an explicit composition at binding; retain the model while the result borrows its members. \end{DoxyCompactList}\item {\footnotesize template$<$typename Model$>$ \newline requires (!std\+::is\+\_\+lvalue\+\_\+reference\+\_\+v$<$Model$>$)}\\void \mbox{\hyperlink{namespaceserif_1_1model_af1e5714cfeffe321e29886eec5b93020}{resolve\+\_\+equilibrium\+\_\+equations}} (Model \&\&)=delete \begin{DoxyCompactList}\small\item\em A temporary model cannot retain the equation members borrowed by the resolved description. \end{DoxyCompactList}\item {\footnotesize template$<$typename Model, typename Description, typename Plan, typename Bindings = Default\+Specification\+Bindings, typename Explicit\+Zero\+Couplings = utils\+::dependencies\+::\+Key\+List$<$$>$$>$ }\\consteval bool \mbox{\hyperlink{namespaceserif_1_1model_a85f2ca250e5b86d7c907d7db1428d852}{executable\+\_\+model\+\_\+topology}} () \begin{DoxyCompactList}\small\item\em Validate a complete selected formulation without inferring solvability or selecting physics. \end{DoxyCompactList}\item {\footnotesize template$<$discretization\+::blocks\+::\+System\+Layout\+Type Layout$>$ }\\\mbox{\hyperlink{namespaceserif_1_1model_abd39d351ddfb0d4d45fb44b868673416}{Stellar\+State}} (Layout) -\/$>$ Stellar\+State$<$ std\+::remove\+\_\+cvref\+\_\+t$<$ Layout $>$ $>$ \begin{DoxyCompactList}\small\item\em Infer a state\textquotesingle{}s layout type from its physical coordinate description. \end{DoxyCompactList}\item {\footnotesize template$<$discretization\+::blocks\+::\+System\+Layout\+Type Layout$>$ }\\\mbox{\hyperlink{namespaceserif_1_1model_ab2897a50326648ba69b6ab9fd3c3d27a}{Stellar\+State}} (Layout, std\+::vector$<$ double $>$) -\/$>$ Stellar\+State$<$ std\+::remove\+\_\+cvref\+\_\+t$<$ Layout $>$ $>$ \begin{DoxyCompactList}\small\item\em Infer a state\textquotesingle{}s layout type when adopting physical coefficients. \end{DoxyCompactList}\item {\footnotesize template$<$typename EOS, typename Definition, typename... Specifications$>$ \newline requires Valid\+Specification\+Pack$<$std\+::remove\+\_\+cvref\+\_\+t$<$Specifications$>$...$>$}\\\mbox{\hyperlink{namespaceserif_1_1model_a5a15073437bd18ed5d356ee544b14447}{Stellar\+Model}} (EOS \&\&, Definition \&\&, Specifications \&\&...) -\/$>$ Stellar\+Model$<$ std\+::remove\+\_\+cvref\+\_\+t$<$ EOS $>$, std\+::remove\+\_\+cvref\+\_\+t$<$ Definition $>$, typename \mbox{\hyperlink{structserif_1_1model_1_1detail_1_1_canonical_specifications}{detail\+::\+Canonical\+Specifications}}$<$ std\+::remove\+\_\+cvref\+\_\+t$<$ Specifications $>$... $>$\+::\+Type $>$ \item {\footnotesize template$<$typename EOS, typename Definition, typename... Specifications$>$ \newline requires Valid\+Specification\+Pack$<$std\+::remove\+\_\+cvref\+\_\+t$<$Specifications$>$...$>$}\\auto \mbox{\hyperlink{namespaceserif_1_1model_abd082b1964d28e91b8eb1da4ffdf22ee}{make\+\_\+stellar\+\_\+model}} (EOS \&\&eos, Definition \&\&definition, Specifications \&\&... specifications) \begin{DoxyCompactList}\small\item\em Construct a typed physical description with programmer-\/selected equations. \end{DoxyCompactList}\item static void \mbox{\hyperlink{namespaceserif_1_1model_a5a76a53b06ed3a20062a609e61848840}{validate\+\_\+target}} (double value, bool zero\+\_\+allowed, std\+::string\+\_\+view name) \begin{DoxyCompactList}\small\item\em Validate a dimensional scalar target before storing a physical prescription. \end{DoxyCompactList}\item {\footnotesize template$<$typename Owner, utils\+::dependencies\+::\+Is\+Dependency\+Context Bindings$>$ }\\auto \mbox{\hyperlink{namespaceserif_1_1model_ac5681e63c50dc5a136eaa699838cf332}{make\+\_\+stellar\+\_\+discretization}} (std\+::shared\+\_\+ptr$<$ Owner $>$ owner, Bindings bindings, const \+::mfem\+::\+Grid\+Function \&compactification, const \mbox{\hyperlink{classserif_1_1mapping_1_1_domain_mapper}{mapping\+::\+Domain\+Mapper}} \&mapper) \begin{DoxyCompactList}\small\item\em Retain the supplied resource owner without copying finite-\/element spaces or changing their addresses. \end{DoxyCompactList}\item {\footnotesize template$<$typename Owner, typename Bindings, typename Domain\+Model$>$ }\\auto \mbox{\hyperlink{namespaceserif_1_1model_ade88a3e3fa00b425b3d93ad44b3bb604}{with\+\_\+deformation}} (Stellar\+Discretization$<$ Owner, Bindings $>$ discretization, Domain\+Model model, \mbox{\hyperlink{structserif_1_1geometry_1_1deformation_1_1backend_1_1mfem_1_1_reference_discretization}{geometry\+::deformation\+::backend\+::mfem\+::\+Reference\+Discretization}} reference) \begin{DoxyCompactList}\small\item\em Add an explicit deformation prescription without changing the physical equation definition. \end{DoxyCompactList}\end{DoxyCompactItemize} \doxysubsubsection*{Variables} \begin{DoxyCompactItemize} \item {\footnotesize template$<$\mbox{\hyperlink{namespaceserif_1_1model_a80cb843c4b97c06905b775aba9d4b813}{Specification\+Role}} Role, typename Candidate$>$ }\\constexpr std\+::size\+\_\+t \mbox{\hyperlink{namespaceserif_1_1model_a80f6f9e6dee6acbd57d0d4bd1116c9f2}{specification\+\_\+role\+\_\+count}} \begin{DoxyCompactList}\small\item\em Inspect role counts without instantiating invalid model specializations. \end{DoxyCompactList}\end{DoxyCompactItemize} \doxysubsection{Typedef Documentation} \Hypertarget{namespaceserif_1_1model_a1a9e18895b6021d27952932da09eb71b}\index{serif::model@{serif::model}!ActualEquilibriumCouplings@{ActualEquilibriumCouplings}} \index{ActualEquilibriumCouplings@{ActualEquilibriumCouplings}!serif::model@{serif::model}} \doxysubsubsection{\texorpdfstring{ActualEquilibriumCouplings}{ActualEquilibriumCouplings}} {\footnotesize\ttfamily \label{namespaceserif_1_1model_a1a9e18895b6021d27952932da09eb71b} template$<$Executable\+Equilibrium\+Description Description, typename Plan$>$ \\ using \mbox{\hyperlink{namespaceserif_1_1model_a1a9e18895b6021d27952932da09eb71b}{serif\+::model\+::\+Actual\+Equilibrium\+Couplings}} = typename \mbox{\hyperlink{structserif_1_1model_1_1detail_1_1_equilibrium_couplings}{detail\+::\+Equilibrium\+Couplings}}$<$Description, \mbox{\hyperlink{structserif_1_1model_1_1detail_1_1_execution_surface}{detail\+::\+Execution\+Surface}}$<$Plan$>$$>$\+::\+Type} Inspect the actual derivative producers admitted by the explicitly supplied physical formulation. \Hypertarget{namespaceserif_1_1model_a5cbe5c0513a11299350110cee5d31821}\index{serif::model@{serif::model}!Changes@{Changes}} \index{Changes@{Changes}!serif::model@{serif::model}} \doxysubsubsection{\texorpdfstring{Changes}{Changes}} {\footnotesize\ttfamily \label{namespaceserif_1_1model_a5cbe5c0513a11299350110cee5d31821} template$<$typename... Equations$>$ \\ using \mbox{\hyperlink{namespaceserif_1_1model_a5cbe5c0513a11299350110cee5d31821}{serif\+::model\+::\+Changes}} = \mbox{\hyperlink{structserif_1_1utils_1_1types_1_1_type_list}{utils\+::types\+::\+Type\+List}}$<$Equations...$>$} \Hypertarget{namespaceserif_1_1model_a36d5c59d89fffbd444ee44415f85bbed}\index{serif::model@{serif::model}!ConstraintQuantity@{ConstraintQuantity}} \index{ConstraintQuantity@{ConstraintQuantity}!serif::model@{serif::model}} \doxysubsubsection{\texorpdfstring{ConstraintQuantity}{ConstraintQuantity}} {\footnotesize\ttfamily \label{namespaceserif_1_1model_a36d5c59d89fffbd444ee44415f85bbed} template$<$Dimensional\+Scalar\+Specification Specification$>$ \\ using \mbox{\hyperlink{namespaceserif_1_1model_a36d5c59d89fffbd444ee44415f85bbed}{serif\+::model\+::\+Constraint\+Quantity}} = typename Specification\+::\+Model\+Definition\+::\+Scalar\+Description\+::\+Residual\+Quantity} Residual units remain independent from the target and generated coordinate. \Hypertarget{namespaceserif_1_1model_a5d147fdea58527d7b5ee14302ab8cd57}\index{serif::model@{serif::model}!DeclaredEquationCouplings@{DeclaredEquationCouplings}} \index{DeclaredEquationCouplings@{DeclaredEquationCouplings}!serif::model@{serif::model}} \doxysubsubsection{\texorpdfstring{DeclaredEquationCouplings}{DeclaredEquationCouplings}} {\footnotesize\ttfamily \label{namespaceserif_1_1model_a5d147fdea58527d7b5ee14302ab8cd57} template$<$Executable\+Interior\+Equations Registry$>$ \\ using \mbox{\hyperlink{namespaceserif_1_1model_a5d147fdea58527d7b5ee14302ab8cd57}{serif\+::model\+::\+Declared\+Equation\+Couplings}} = typename \mbox{\hyperlink{structserif_1_1model_1_1detail_1_1_interior_couplings}{detail\+::\+Interior\+Couplings}}$<$std\+::remove\+\_\+cvref\+\_\+t$<$Registry$>$$>$\+::\+Type} Derive declared interior couplings from actual operands rather than a second physical sparsity table. \Hypertarget{namespaceserif_1_1model_adae046e777aafb66e79a039911580916}\index{serif::model@{serif::model}!DefaultSpecificationBindings@{DefaultSpecificationBindings}} \index{DefaultSpecificationBindings@{DefaultSpecificationBindings}!serif::model@{serif::model}} \doxysubsubsection{\texorpdfstring{DefaultSpecificationBindings}{DefaultSpecificationBindings}} {\footnotesize\ttfamily \label{namespaceserif_1_1model_adae046e777aafb66e79a039911580916} using \mbox{\hyperlink{namespaceserif_1_1model_adae046e777aafb66e79a039911580916}{serif\+::model\+::\+Default\+Specification\+Bindings}} = \mbox{\hyperlink{namespaceserif_1_1model_aa7c7c71dc1c2c0431623ac27c88bdb0b}{Specification\+Bindings}}$<$$>$} \Hypertarget{namespaceserif_1_1model_a95bbbd670343f9cd11939d21c5bf79ab}\index{serif::model@{serif::model}!Derivative@{Derivative}} \index{Derivative@{Derivative}!serif::model@{serif::model}} \doxysubsubsection{\texorpdfstring{Derivative}{Derivative}} {\footnotesize\ttfamily \label{namespaceserif_1_1model_a95bbbd670343f9cd11939d21c5bf79ab} template$<$typename Row, typename Field$>$ \\ using \mbox{\hyperlink{namespaceserif_1_1model_a95bbbd670343f9cd11939d21c5bf79ab}{serif\+::model\+::\+Derivative}} = \mbox{\hyperlink{structserif_1_1operators_1_1_physical_block}{operators\+::\+Physical\+Block}}$<$\mbox{\hyperlink{structserif_1_1utils_1_1dependencies_1_1_key_list}{utils\+::dependencies\+::\+Key\+List}}$<$Row$>$, \mbox{\hyperlink{structserif_1_1utils_1_1dependencies_1_1_key_list}{utils\+::dependencies\+::\+Key\+List}}$<$Field$>$$>$} Name a physical derivative using the shared block-\/source key convention. \Hypertarget{namespaceserif_1_1model_ac7544ec47f3986209861b7fb0b6ae4bf}\index{serif::model@{serif::model}!GeneratedCoordinateQuantity@{GeneratedCoordinateQuantity}} \index{GeneratedCoordinateQuantity@{GeneratedCoordinateQuantity}!serif::model@{serif::model}} \doxysubsubsection{\texorpdfstring{GeneratedCoordinateQuantity}{GeneratedCoordinateQuantity}} {\footnotesize\ttfamily \label{namespaceserif_1_1model_ac7544ec47f3986209861b7fb0b6ae4bf} template$<$Dimensional\+Scalar\+Specification Specification$>$ \\ using \mbox{\hyperlink{namespaceserif_1_1model_ac7544ec47f3986209861b7fb0b6ae4bf}{serif\+::model\+::\+Generated\+Coordinate\+Quantity}} = typename Specification\+::\+Model\+Definition\+::\+Scalar\+Description\+::\+Coordinate\+Quantity} Query scalar units only once the owning prescription is complete. \Hypertarget{namespaceserif_1_1model_a251ff98f4ef742b690180c7cb06292bb}\index{serif::model@{serif::model}!Reads@{Reads}} \index{Reads@{Reads}!serif::model@{serif::model}} \doxysubsubsection{\texorpdfstring{Reads}{Reads}} {\footnotesize\ttfamily \label{namespaceserif_1_1model_a251ff98f4ef742b690180c7cb06292bb} template$<$typename... Fields$>$ \\ using \mbox{\hyperlink{namespaceserif_1_1model_a251ff98f4ef742b690180c7cb06292bb}{serif\+::model\+::\+Reads}} = \mbox{\hyperlink{structserif_1_1utils_1_1types_1_1_type_list}{utils\+::types\+::\+Type\+List}}$<$Fields...$>$} \Hypertarget{namespaceserif_1_1model_aa7c7c71dc1c2c0431623ac27c88bdb0b}\index{serif::model@{serif::model}!SpecificationBindings@{SpecificationBindings}} \index{SpecificationBindings@{SpecificationBindings}!serif::model@{serif::model}} \doxysubsubsection{\texorpdfstring{SpecificationBindings}{SpecificationBindings}} {\footnotesize\ttfamily \label{namespaceserif_1_1model_aa7c7c71dc1c2c0431623ac27c88bdb0b} template$<$utils\+::dependencies\+::\+Is\+Binding... Additional$>$ \\ using \mbox{\hyperlink{namespaceserif_1_1model_aa7c7c71dc1c2c0431623ac27c88bdb0b}{serif\+::model\+::\+Specification\+Bindings}}} {\bfseries Initial value\+:} \begin{DoxyCode}{0} \DoxyCodeLine{\ \mbox{\hyperlink{structserif_1_1utils_1_1dependencies_1_1_bindings}{utils::dependencies::Bindings}}<} \DoxyCodeLine{\ \ \ \ \ \ \ \ \mbox{\hyperlink{structserif_1_1utils_1_1dependencies_1_1_binding}{utils::dependencies::Binding}},} \DoxyCodeLine{\ \ \ \ \ \ \ \ \mbox{\hyperlink{structserif_1_1utils_1_1dependencies_1_1_binding}{utils::dependencies::Binding}},} \DoxyCodeLine{\ \ \ \ \ \ \ \ \mbox{\hyperlink{structserif_1_1utils_1_1dependencies_1_1_binding}{utils::dependencies::Binding}},} \DoxyCodeLine{\ \ \ \ \ \ \ \ \mbox{\hyperlink{structserif_1_1utils_1_1dependencies_1_1_binding}{utils::dependencies::Binding}},} \DoxyCodeLine{\ \ \ \ \ \ \ \ \mbox{\hyperlink{structserif_1_1utils_1_1dependencies_1_1_binding}{utils::dependencies::Binding}},} \DoxyCodeLine{\ \ \ \ \ \ \ \ \mbox{\hyperlink{structserif_1_1utils_1_1dependencies_1_1_binding}{utils::dependencies::Binding}},} \DoxyCodeLine{\ \ \ \ \ \ \ \ \mbox{\hyperlink{structserif_1_1utils_1_1dependencies_1_1_binding}{utils::dependencies::Binding}},\ \mbox{\hyperlink{structserif_1_1discretization_1_1blocks_1_1barotropic__constant_1_1mass__normalization}{discretization::blocks::barotropic\_constant::mass\_normalization}}>,} \DoxyCodeLine{\ \ \ \ \ \ \ \ \mbox{\hyperlink{structserif_1_1utils_1_1dependencies_1_1_binding}{utils::dependencies::Binding}},\ \mbox{\hyperlink{structserif_1_1discretization_1_1blocks_1_1barotropic__constant_1_1mass__normalization}{discretization::blocks::barotropic\_constant::mass\_normalization}}>,} \DoxyCodeLine{\ \ \ \ \ \ \ \ \mbox{\hyperlink{structserif_1_1utils_1_1dependencies_1_1_binding}{utils::dependencies::Binding}},\ \mbox{\hyperlink{structserif_1_1discretization_1_1blocks_1_1rotation_1_1angular__velocity}{discretization::blocks::rotation::angular\_velocity}}>,} \DoxyCodeLine{\ \ \ \ \ \ \ \ \mbox{\hyperlink{structserif_1_1utils_1_1dependencies_1_1_binding}{utils::dependencies::Binding}},\ \mbox{\hyperlink{structserif_1_1discretization_1_1blocks_1_1rotation_1_1angular__velocity}{discretization::blocks::rotation::angular\_velocity}}>,\ Additional...>} \end{DoxyCode} Map physical names and built-\/in generated identities once; custom identities require explicit bindings. \Hypertarget{namespaceserif_1_1model_aeb8535e8d8e5b2b39d913f12b149a2b3}\index{serif::model@{serif::model}!SpecificationsForRole@{SpecificationsForRole}} \index{SpecificationsForRole@{SpecificationsForRole}!serif::model@{serif::model}} \doxysubsubsection{\texorpdfstring{SpecificationsForRole}{SpecificationsForRole}} {\footnotesize\ttfamily \label{namespaceserif_1_1model_aeb8535e8d8e5b2b39d913f12b149a2b3} template$<$\mbox{\hyperlink{namespaceserif_1_1model_a80cb843c4b97c06905b775aba9d4b813}{Specification\+Role}} Role, Stellar\+Model\+Type Candidate$>$ \\ using \mbox{\hyperlink{namespaceserif_1_1model_aeb8535e8d8e5b2b39d913f12b149a2b3}{serif\+::model\+::\+Specifications\+For\+Role}} = typename std\+::remove\+\_\+cvref\+\_\+t$<$Candidate$>$\+::template \mbox{\hyperlink{namespaceserif_1_1model_aeb8535e8d8e5b2b39d913f12b149a2b3}{Specifications\+For\+Role}}$<$Role$>$} \doxysubsection{Enumeration Type Documentation} \Hypertarget{namespaceserif_1_1model_a9dbd561b48b9cbb817a4102517d065ca}\index{serif::model@{serif::model}!GeneratedStateKind@{GeneratedStateKind}} \index{GeneratedStateKind@{GeneratedStateKind}!serif::model@{serif::model}} \doxysubsubsection{\texorpdfstring{GeneratedStateKind}{GeneratedStateKind}} {\footnotesize\ttfamily \label{namespaceserif_1_1model_a9dbd561b48b9cbb817a4102517d065ca} enum class \mbox{\hyperlink{namespaceserif_1_1model_a9dbd561b48b9cbb817a4102517d065ca}{serif\+::model\+::\+Generated\+State\+Kind}}\hspace{0.3cm}{\ttfamily [strong]}} Distinguish prescribed physics from the physical meaning of a generated scalar. \begin{DoxyEnumFields}[2]{Enumerator} \raisebox{\heightof{T}}[0pt][0pt]{\index{none@{none}!serif::model@{serif::model}}\index{serif::model@{serif::model}!none@{none}}}\Hypertarget{namespaceserif_1_1model_a9dbd561b48b9cbb817a4102517d065caa334c4a4c42fdb79d7ebc3e73b517e6f8}\label{namespaceserif_1_1model_a9dbd561b48b9cbb817a4102517d065caa334c4a4c42fdb79d7ebc3e73b517e6f8} none&\\ \hline \raisebox{\heightof{T}}[0pt][0pt]{\index{multiplier@{multiplier}!serif::model@{serif::model}}\index{serif::model@{serif::model}!multiplier@{multiplier}}}\Hypertarget{namespaceserif_1_1model_a9dbd561b48b9cbb817a4102517d065caa2375dfa839ccd84978745547605b21e4}\label{namespaceserif_1_1model_a9dbd561b48b9cbb817a4102517d065caa2375dfa839ccd84978745547605b21e4} multiplier&\\ \hline \raisebox{\heightof{T}}[0pt][0pt]{\index{physical\_coordinate@{physical\_coordinate}!serif::model@{serif::model}}\index{serif::model@{serif::model}!physical\_coordinate@{physical\_coordinate}}}\Hypertarget{namespaceserif_1_1model_a9dbd561b48b9cbb817a4102517d065caa5b029370da350a18e571dffd4b78ae47}\label{namespaceserif_1_1model_a9dbd561b48b9cbb817a4102517d065caa5b029370da350a18e571dffd4b78ae47} physical\+\_\+coordinate&\\ \hline \raisebox{\heightof{T}}[0pt][0pt]{\index{solver\_border@{solver\_border}!serif::model@{serif::model}}\index{serif::model@{serif::model}!solver\_border@{solver\_border}}}\Hypertarget{namespaceserif_1_1model_a9dbd561b48b9cbb817a4102517d065caa2fadfbbb30ccd79bbdcae01edd52f2b5}\label{namespaceserif_1_1model_a9dbd561b48b9cbb817a4102517d065caa2fadfbbb30ccd79bbdcae01edd52f2b5} solver\+\_\+border&\\ \hline \end{DoxyEnumFields} \Hypertarget{namespaceserif_1_1model_a80cb843c4b97c06905b775aba9d4b813}\index{serif::model@{serif::model}!SpecificationRole@{SpecificationRole}} \index{SpecificationRole@{SpecificationRole}!serif::model@{serif::model}} \doxysubsubsection{\texorpdfstring{SpecificationRole}{SpecificationRole}} {\footnotesize\ttfamily \label{namespaceserif_1_1model_a80cb843c4b97c06905b775aba9d4b813} enum class \mbox{\hyperlink{namespaceserif_1_1model_a80cb843c4b97c06905b775aba9d4b813}{serif\+::model\+::\+Specification\+Role}}\hspace{0.3cm}{\ttfamily [strong]}} Physical purpose of a prescription, independently of its numerical implementation. \begin{DoxyEnumFields}[2]{Enumerator} \raisebox{\heightof{T}}[0pt][0pt]{\index{constitutive\_law@{constitutive\_law}!serif::model@{serif::model}}\index{serif::model@{serif::model}!constitutive\_law@{constitutive\_law}}}\Hypertarget{namespaceserif_1_1model_a80cb843c4b97c06905b775aba9d4b813a7832eb62b9d5da114fbd828501794b90}\label{namespaceserif_1_1model_a80cb843c4b97c06905b775aba9d4b813a7832eb62b9d5da114fbd828501794b90} constitutive\+\_\+law&\\ \hline \raisebox{\heightof{T}}[0pt][0pt]{\index{boundary\_condition@{boundary\_condition}!serif::model@{serif::model}}\index{serif::model@{serif::model}!boundary\_condition@{boundary\_condition}}}\Hypertarget{namespaceserif_1_1model_a80cb843c4b97c06905b775aba9d4b813a8360be627354dd5a66ea7e358d0109a4}\label{namespaceserif_1_1model_a80cb843c4b97c06905b775aba9d4b813a8360be627354dd5a66ea7e358d0109a4} boundary\+\_\+condition&\\ \hline \raisebox{\heightof{T}}[0pt][0pt]{\index{invariant@{invariant}!serif::model@{serif::model}}\index{serif::model@{serif::model}!invariant@{invariant}}}\Hypertarget{namespaceserif_1_1model_a80cb843c4b97c06905b775aba9d4b813a97a1fb4792ab0d80857d825020ced2f0}\label{namespaceserif_1_1model_a80cb843c4b97c06905b775aba9d4b813a97a1fb4792ab0d80857d825020ced2f0} invariant&\\ \hline \raisebox{\heightof{T}}[0pt][0pt]{\index{phase\_condition@{phase\_condition}!serif::model@{serif::model}}\index{serif::model@{serif::model}!phase\_condition@{phase\_condition}}}\Hypertarget{namespaceserif_1_1model_a80cb843c4b97c06905b775aba9d4b813ab55fad3fe78d06b3d481aef2500c784b}\label{namespaceserif_1_1model_a80cb843c4b97c06905b775aba9d4b813ab55fad3fe78d06b3d481aef2500c784b} phase\+\_\+condition&\\ \hline \raisebox{\heightof{T}}[0pt][0pt]{\index{gauge\_choice@{gauge\_choice}!serif::model@{serif::model}}\index{serif::model@{serif::model}!gauge\_choice@{gauge\_choice}}}\Hypertarget{namespaceserif_1_1model_a80cb843c4b97c06905b775aba9d4b813a49d377e11d9c996137d2ef9ca80a1482}\label{namespaceserif_1_1model_a80cb843c4b97c06905b775aba9d4b813a49d377e11d9c996137d2ef9ca80a1482} gauge\+\_\+choice&\\ \hline \raisebox{\heightof{T}}[0pt][0pt]{\index{rotation\_law@{rotation\_law}!serif::model@{serif::model}}\index{serif::model@{serif::model}!rotation\_law@{rotation\_law}}}\Hypertarget{namespaceserif_1_1model_a80cb843c4b97c06905b775aba9d4b813ae7aa3fcb6ca31a1a1fa583a6e4a98c30}\label{namespaceserif_1_1model_a80cb843c4b97c06905b775aba9d4b813ae7aa3fcb6ca31a1a1fa583a6e4a98c30} rotation\+\_\+law&\\ \hline \end{DoxyEnumFields} \doxysubsection{Function Documentation} \Hypertarget{namespaceserif_1_1model_ae24dcbfc49419c2f0f500da702371bd5}\index{serif::model@{serif::model}!borrow\_eos@{borrow\_eos}} \index{borrow\_eos@{borrow\_eos}!serif::model@{serif::model}} \doxysubsubsection{\texorpdfstring{borrow\_eos()}{borrow\_eos()}\hspace{0.1cm}{\footnotesize\ttfamily [1/2]}} {\footnotesize\ttfamily \label{namespaceserif_1_1model_ae24dcbfc49419c2f0f500da702371bd5} template$<$typename EOS$>$ \\ \mbox{\hyperlink{classserif_1_1model_1_1_eos_reference}{Eos\+Reference}}$<$ EOS $>$ serif\+::model\+::borrow\+\_\+eos (\begin{DoxyParamCaption}\item[{const EOS \&}]{eos}{}\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [nodiscard]}, {\ttfamily [noexcept]}} Borrow the model-\/owned EOS when the prepared graph already retains its immutable model owner. \Hypertarget{namespaceserif_1_1model_a6252df8508dcd9bed7e242edae8133d5}\index{serif::model@{serif::model}!borrow\_eos@{borrow\_eos}} \index{borrow\_eos@{borrow\_eos}!serif::model@{serif::model}} \doxysubsubsection{\texorpdfstring{borrow\_eos()}{borrow\_eos()}\hspace{0.1cm}{\footnotesize\ttfamily [2/2]}} {\footnotesize\ttfamily \label{namespaceserif_1_1model_a6252df8508dcd9bed7e242edae8133d5} template$<$typename EOS$>$ \newline requires (!std\+::is\+\_\+lvalue\+\_\+reference\+\_\+v$<$EOS$>$)\\ void serif\+::model\+::borrow\+\_\+eos (\begin{DoxyParamCaption}\item[{EOS \&\&}]{}{}\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [delete]}} Borrowing never extends a temporary EOS lifetime. \Hypertarget{namespaceserif_1_1model_ae40b696afec46eacfa0e74ef448b46bb}\index{serif::model@{serif::model}!EquilibriumEquations@{EquilibriumEquations}} \index{EquilibriumEquations@{EquilibriumEquations}!serif::model@{serif::model}} \doxysubsubsection{\texorpdfstring{EquilibriumEquations()}{EquilibriumEquations()}} {\footnotesize\ttfamily \label{namespaceserif_1_1model_ae40b696afec46eacfa0e74ef448b46bb} template$<$typename Interior, typename Shape = No\+Shape\+Force, typename Surface = No\+Surface\+Condition$>$ \\ serif\+::model\+::\+Equilibrium\+Equations (\begin{DoxyParamCaption}\item[{Interior}]{}{, }\item[{Shape}]{}{ = {\ttfamily \{\}}, }\item[{Surface}]{}{ = {\ttfamily \{\}}}\end{DoxyParamCaption}) -\/$>$ Equilibrium\+Equations$<$ Interior, Shape, Surface $>$} Preserve every authored member when a declaration passes through a templated model factory. \begin{DoxyNote}{Note} Explicit deduction avoids compiler substitution dropping defaulted aggregate members. Deduced declarations supply preceding slots\+: use \doxylink{structserif_1_1model_1_1_no_shape_force}{No\+Shape\+Force} before a surface condition when the shape force is absent. Explicitly typed aggregates may still skip members. \end{DoxyNote} \Hypertarget{namespaceserif_1_1model_a85f2ca250e5b86d7c907d7db1428d852}\index{serif::model@{serif::model}!executable\_model\_topology@{executable\_model\_topology}} \index{executable\_model\_topology@{executable\_model\_topology}!serif::model@{serif::model}} \doxysubsubsection{\texorpdfstring{executable\_model\_topology()}{executable\_model\_topology()}} {\footnotesize\ttfamily \label{namespaceserif_1_1model_a85f2ca250e5b86d7c907d7db1428d852} template$<$typename Model, typename Description, typename Plan, typename Bindings = Default\+Specification\+Bindings, typename Explicit\+Zero\+Couplings = utils\+::dependencies\+::\+Key\+List$<$$>$$>$ \\ bool serif\+::model\+::executable\+\_\+model\+\_\+topology (\begin{DoxyParamCaption}{}{}\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [nodiscard]}, {\ttfamily [consteval]}} Validate a complete selected formulation without inferring solvability or selecting physics. \begin{DoxyNote}{Note} Closed equations define zero derivatives for other coordinates, but that fact cannot admit a missing custom multiplier force. Explicit\+Zero\+Couplings is an explicit author registration, not a fallback. \end{DoxyNote} \Hypertarget{namespaceserif_1_1model_a98c9e47b78a995adae698ca88a7e18fb}\index{serif::model@{serif::model}!make\_discretization@{make\_discretization}} \index{make\_discretization@{make\_discretization}!serif::model@{serif::model}} \doxysubsubsection{\texorpdfstring{make\_discretization()}{make\_discretization()}} {\footnotesize\ttfamily \label{namespaceserif_1_1model_a98c9e47b78a995adae698ca88a7e18fb} template$<$Stellar\+Model\+Type Model, typename Finite\+Elements, typename Normalization, typename Preconditioner$>$ \newline requires normalization\+::\+Reference\+Resolvable$<$Normalization, Model$>$\\ auto serif\+::model\+::make\+\_\+discretization (\begin{DoxyParamCaption}\item[{\mbox{\hyperlink{structserif_1_1model_1_1_discretization_options}{Discretization\+Options}}$<$ Model, Finite\+Elements, Normalization, Preconditioner $>$}]{options}{}\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [nodiscard]}} Resolve model defaults while preserving compile-\/time field, scheme, and coordinate choices. \begin{DoxyNote}{Note} Finite-\/element resources remain explicit\+: normalization does not choose a mesh or approximation order. \end{DoxyNote} \Hypertarget{namespaceserif_1_1model_a74e1efe91e9ad6f773134036585a39b6}\index{serif::model@{serif::model}!make\_equilibrium\_graph@{make\_equilibrium\_graph}} \index{make\_equilibrium\_graph@{make\_equilibrium\_graph}!serif::model@{serif::model}} \doxysubsubsection{\texorpdfstring{make\_equilibrium\_graph()}{make\_equilibrium\_graph()}} {\footnotesize\ttfamily \label{namespaceserif_1_1model_a74e1efe91e9ad6f773134036585a39b6} template$<$typename Bound, typename Layout, typename... Numerical\+Computations$>$ \\ auto serif\+::model\+::make\+\_\+equilibrium\+\_\+graph (\begin{DoxyParamCaption}\item[{std\+::shared\+\_\+ptr$<$ const Bound $>$}]{bound}{, }\item[{const Layout \&}]{layout}{, }\item[{std\+::tuple$<$ Numerical\+Computations... $>$}]{numerical}{ = {\ttfamily \{\}}, }\item[{\mbox{\hyperlink{structserif_1_1operators_1_1backend_1_1mfem_1_1_volume_options}{operators\+::backend\+::mfem\+::\+Volume\+Options}}}]{options}{ = {\ttfamily \{\}}}\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [nodiscard]}} Connect the explicit equilibrium definition in one readable place. \begin{DoxyNote}{Note} Interior physics, shape force and surface replacement remain separate declarations. The final physical-\/system computation collects additions before replacing rows. \end{DoxyNote} \Hypertarget{namespaceserif_1_1model_a085910a172d862a4116162850b0222c5}\index{serif::model@{serif::model}!make\_model\_graph@{make\_model\_graph}} \index{make\_model\_graph@{make\_model\_graph}!serif::model@{serif::model}} \doxysubsubsection{\texorpdfstring{make\_model\_graph()}{make\_model\_graph()}\hspace{0.1cm}{\footnotesize\ttfamily [1/2]}} {\footnotesize\ttfamily \label{namespaceserif_1_1model_a085910a172d862a4116162850b0222c5} template$<$Executable\+Interior\+Equations Registry, typename Discretization, discretization\+::blocks\+::\+System\+Layout\+Type Layout, typename... Additional\+Computations, typename... Additional\+Contributions$>$ \\ auto serif\+::model\+::make\+\_\+model\+\_\+graph (\begin{DoxyParamCaption}\item[{Registry}]{registry}{, }\item[{std\+::shared\+\_\+ptr$<$ const Discretization $>$}]{discretization}{, }\item[{const Layout \&}]{layout}{, }\item[{std\+::tuple$<$ Additional\+Computations... $>$}]{additional}{ = {\ttfamily \{\}}, }\item[{\mbox{\hyperlink{structserif_1_1utils_1_1dependencies_1_1_key_list}{utils\+::dependencies\+::\+Key\+List}}$<$ Additional\+Contributions... $>$}]{contributions}{ = {\ttfamily \{\}}, }\item[{\mbox{\hyperlink{structserif_1_1operators_1_1backend_1_1mfem_1_1_volume_options}{operators\+::backend\+::mfem\+::\+Volume\+Options}}}]{options}{ = {\ttfamily \{\}}}\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [nodiscard]}} Retain a standalone registry, including move-\/only equations supplied as an rvalue. \Hypertarget{namespaceserif_1_1model_a818040e7235375f50650868a1fec3ae6}\index{serif::model@{serif::model}!make\_model\_graph@{make\_model\_graph}} \index{make\_model\_graph@{make\_model\_graph}!serif::model@{serif::model}} \doxysubsubsection{\texorpdfstring{make\_model\_graph()}{make\_model\_graph()}\hspace{0.1cm}{\footnotesize\ttfamily [2/2]}} {\footnotesize\ttfamily \label{namespaceserif_1_1model_a818040e7235375f50650868a1fec3ae6} template$<$Executable\+Interior\+Equations Registry, typename Discretization, discretization\+::blocks\+::\+System\+Layout\+Type Layout, typename... Additional\+Computations, typename... Additional\+Contributions$>$ \\ auto serif\+::model\+::make\+\_\+model\+\_\+graph (\begin{DoxyParamCaption}\item[{std\+::shared\+\_\+ptr$<$ const Registry $>$}]{registry}{, }\item[{std\+::shared\+\_\+ptr$<$ const Discretization $>$}]{discretization}{, }\item[{const Layout \&}]{layout}{, }\item[{std\+::tuple$<$ Additional\+Computations... $>$}]{additional}{ = {\ttfamily \{\}}, }\item[{\mbox{\hyperlink{structserif_1_1utils_1_1dependencies_1_1_key_list}{utils\+::dependencies\+::\+Key\+List}}$<$ Additional\+Contributions... $>$}]{contributions}{ = {\ttfamily \{\}}, }\item[{\mbox{\hyperlink{structserif_1_1operators_1_1backend_1_1mfem_1_1_volume_options}{operators\+::backend\+::mfem\+::\+Volume\+Options}}}]{options}{ = {\ttfamily \{\}}}\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [nodiscard]}} Construct the complete stellar graph at one explicit composition point. \begin{DoxyNote}{Note} 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. \end{DoxyNote} \Hypertarget{namespaceserif_1_1model_ac5681e63c50dc5a136eaa699838cf332}\index{serif::model@{serif::model}!make\_stellar\_discretization@{make\_stellar\_discretization}} \index{make\_stellar\_discretization@{make\_stellar\_discretization}!serif::model@{serif::model}} \doxysubsubsection{\texorpdfstring{make\_stellar\_discretization()}{make\_stellar\_discretization()}} {\footnotesize\ttfamily \label{namespaceserif_1_1model_ac5681e63c50dc5a136eaa699838cf332} template$<$typename Owner, utils\+::dependencies\+::\+Is\+Dependency\+Context Bindings$>$ \\ auto serif\+::model\+::backend\+::mfem\+::make\+\_\+stellar\+\_\+discretization (\begin{DoxyParamCaption}\item[{std\+::shared\+\_\+ptr$<$ Owner $>$}]{owner}{, }\item[{Bindings}]{bindings}{, }\item[{const \+::mfem\+::\+Grid\+Function \&}]{compactification}{, }\item[{const \mbox{\hyperlink{classserif_1_1mapping_1_1_domain_mapper}{mapping\+::\+Domain\+Mapper}} \&}]{mapper}{}\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [nodiscard]}} Retain the supplied resource owner without copying finite-\/element spaces or changing their addresses. \Hypertarget{namespaceserif_1_1model_abd082b1964d28e91b8eb1da4ffdf22ee}\index{serif::model@{serif::model}!make\_stellar\_model@{make\_stellar\_model}} \index{make\_stellar\_model@{make\_stellar\_model}!serif::model@{serif::model}} \doxysubsubsection{\texorpdfstring{make\_stellar\_model()}{make\_stellar\_model()}} {\footnotesize\ttfamily \label{namespaceserif_1_1model_abd082b1964d28e91b8eb1da4ffdf22ee} template$<$typename EOS, typename Definition, typename... Specifications$>$ \newline requires Valid\+Specification\+Pack$<$std\+::remove\+\_\+cvref\+\_\+t$<$Specifications$>$...$>$\\ auto serif\+::model\+::make\+\_\+stellar\+\_\+model (\begin{DoxyParamCaption}\item[{EOS \&\&}]{eos}{, }\item[{Definition \&\&}]{definition}{, }\item[{Specifications \&\&...}]{specifications}{}\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [nodiscard]}} Construct a typed physical description with programmer-\/selected equations. \Hypertarget{namespaceserif_1_1model_aa55d6cc09e69d07412896dedcb71c5a5}\index{serif::model@{serif::model}!resolve\_equilibrium\_equations@{resolve\_equilibrium\_equations}} \index{resolve\_equilibrium\_equations@{resolve\_equilibrium\_equations}!serif::model@{serif::model}} \doxysubsubsection{\texorpdfstring{resolve\_equilibrium\_equations()}{resolve\_equilibrium\_equations()}\hspace{0.1cm}{\footnotesize\ttfamily [1/2]}} {\footnotesize\ttfamily \label{namespaceserif_1_1model_aa55d6cc09e69d07412896dedcb71c5a5} template$<$typename Model$>$ \newline requires requires(const Model\& model) \{ model.\+equations(); \} \&\& Equilibrium\+Equation\+Description$<$decltype(\mbox{\hyperlink{namespaceserif_1_1model_1_1detail_a16f3eb10a3c11e985ea40a4845ab3bdc}{detail\+::resolve\+\_\+equation\+\_\+member}}(std\+::declval$<$const Model\&$>$().equations(), std\+::declval$<$const Model\&$>$()))$>$\\ auto serif\+::model\+::resolve\+\_\+equilibrium\+\_\+equations (\begin{DoxyParamCaption}\item[{const Model \&}]{model}{}\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [nodiscard]}} Resolve an explicit composition at binding; retain the model while the result borrows its members. \Hypertarget{namespaceserif_1_1model_af1e5714cfeffe321e29886eec5b93020}\index{serif::model@{serif::model}!resolve\_equilibrium\_equations@{resolve\_equilibrium\_equations}} \index{resolve\_equilibrium\_equations@{resolve\_equilibrium\_equations}!serif::model@{serif::model}} \doxysubsubsection{\texorpdfstring{resolve\_equilibrium\_equations()}{resolve\_equilibrium\_equations()}\hspace{0.1cm}{\footnotesize\ttfamily [2/2]}} {\footnotesize\ttfamily \label{namespaceserif_1_1model_af1e5714cfeffe321e29886eec5b93020} template$<$typename Model$>$ \newline requires (!std\+::is\+\_\+lvalue\+\_\+reference\+\_\+v$<$Model$>$)\\ void serif\+::model\+::resolve\+\_\+equilibrium\+\_\+equations (\begin{DoxyParamCaption}\item[{Model \&\&}]{}{}\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [delete]}} A temporary model cannot retain the equation members borrowed by the resolved description. \Hypertarget{namespaceserif_1_1model_a99f093b7cfc3526466056b87c8db0f33}\index{serif::model@{serif::model}!share\_equation\_of\_state@{share\_equation\_of\_state}} \index{share\_equation\_of\_state@{share\_equation\_of\_state}!serif::model@{serif::model}} \doxysubsubsection{\texorpdfstring{share\_equation\_of\_state()}{share\_equation\_of\_state()}} {\footnotesize\ttfamily \label{namespaceserif_1_1model_a99f093b7cfc3526466056b87c8db0f33} template$<$typename Model$>$ \\ auto serif\+::model\+::share\+\_\+equation\+\_\+of\+\_\+state (\begin{DoxyParamCaption}\item[{std\+::shared\+\_\+ptr$<$ const Model $>$}]{model}{}\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [nodiscard]}} Share the EOS subobject while retaining the model that owns it. \Hypertarget{namespaceserif_1_1model_a5a15073437bd18ed5d356ee544b14447}\index{serif::model@{serif::model}!StellarModel@{StellarModel}} \index{StellarModel@{StellarModel}!serif::model@{serif::model}} \doxysubsubsection{\texorpdfstring{StellarModel()}{StellarModel()}} {\footnotesize\ttfamily \label{namespaceserif_1_1model_a5a15073437bd18ed5d356ee544b14447} template$<$typename EOS, typename Definition, typename... Specifications$>$ \newline requires Valid\+Specification\+Pack$<$std\+::remove\+\_\+cvref\+\_\+t$<$Specifications$>$...$>$\\ serif\+::model\+::\+Stellar\+Model (\begin{DoxyParamCaption}\item[{EOS \&\&}]{}{, }\item[{Definition \&\&}]{}{, }\item[{Specifications \&\&}]{...}{}\end{DoxyParamCaption}) -\/$>$ Stellar\+Model$<$ std\+::remove\+\_\+cvref\+\_\+t$<$ EOS $>$, std\+::remove\+\_\+cvref\+\_\+t$<$ Definition $>$, typename \mbox{\hyperlink{structserif_1_1model_1_1detail_1_1_canonical_specifications}{detail\+::\+Canonical\+Specifications}}$<$ std\+::remove\+\_\+cvref\+\_\+t$<$ Specifications $>$... $>$\+::\+Type $>$} \Hypertarget{namespaceserif_1_1model_abd39d351ddfb0d4d45fb44b868673416}\index{serif::model@{serif::model}!StellarState@{StellarState}} \index{StellarState@{StellarState}!serif::model@{serif::model}} \doxysubsubsection{\texorpdfstring{StellarState()}{StellarState()}\hspace{0.1cm}{\footnotesize\ttfamily [1/2]}} {\footnotesize\ttfamily \label{namespaceserif_1_1model_abd39d351ddfb0d4d45fb44b868673416} template$<$discretization\+::blocks\+::\+System\+Layout\+Type Layout$>$ \\ serif\+::model\+::\+Stellar\+State (\begin{DoxyParamCaption}\item[{Layout}]{}{}\end{DoxyParamCaption}) -\/$>$ Stellar\+State$<$ std\+::remove\+\_\+cvref\+\_\+t$<$ Layout $>$ $>$} Infer a state\textquotesingle{}s layout type from its physical coordinate description. \Hypertarget{namespaceserif_1_1model_ab2897a50326648ba69b6ab9fd3c3d27a}\index{serif::model@{serif::model}!StellarState@{StellarState}} \index{StellarState@{StellarState}!serif::model@{serif::model}} \doxysubsubsection{\texorpdfstring{StellarState()}{StellarState()}\hspace{0.1cm}{\footnotesize\ttfamily [2/2]}} {\footnotesize\ttfamily \label{namespaceserif_1_1model_ab2897a50326648ba69b6ab9fd3c3d27a} template$<$discretization\+::blocks\+::\+System\+Layout\+Type Layout$>$ \\ serif\+::model\+::\+Stellar\+State (\begin{DoxyParamCaption}\item[{Layout}]{}{, }\item[{std\+::vector$<$ double $>$}]{}{}\end{DoxyParamCaption}) -\/$>$ Stellar\+State$<$ std\+::remove\+\_\+cvref\+\_\+t$<$ Layout $>$ $>$} Infer a state\textquotesingle{}s layout type when adopting physical coefficients. \Hypertarget{namespaceserif_1_1model_a5a76a53b06ed3a20062a609e61848840}\index{serif::model@{serif::model}!validate\_target@{validate\_target}} \index{validate\_target@{validate\_target}!serif::model@{serif::model}} \doxysubsubsection{\texorpdfstring{validate\_target()}{validate\_target()}} {\footnotesize\ttfamily \label{namespaceserif_1_1model_a5a76a53b06ed3a20062a609e61848840} static void serif\+::model\+::validate\+\_\+target (\begin{DoxyParamCaption}\item[{double}]{value}{, }\item[{bool}]{zero\+\_\+allowed}{, }\item[{std\+::string\+\_\+view}]{name}{}\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [static]}} Validate a dimensional scalar target before storing a physical prescription. \Hypertarget{namespaceserif_1_1model_ade88a3e3fa00b425b3d93ad44b3bb604}\index{serif::model@{serif::model}!with\_deformation@{with\_deformation}} \index{with\_deformation@{with\_deformation}!serif::model@{serif::model}} \doxysubsubsection{\texorpdfstring{with\_deformation()}{with\_deformation()}} {\footnotesize\ttfamily \label{namespaceserif_1_1model_ade88a3e3fa00b425b3d93ad44b3bb604} template$<$typename Owner, typename Bindings, typename Domain\+Model$>$ \\ auto serif\+::model\+::backend\+::mfem\+::with\+\_\+deformation (\begin{DoxyParamCaption}\item[{Stellar\+Discretization$<$ Owner, Bindings $>$}]{discretization}{, }\item[{Domain\+Model}]{model}{, }\item[{\mbox{\hyperlink{structserif_1_1geometry_1_1deformation_1_1backend_1_1mfem_1_1_reference_discretization}{geometry\+::deformation\+::backend\+::mfem\+::\+Reference\+Discretization}}}]{reference}{}\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [nodiscard]}} Add an explicit deformation prescription without changing the physical equation definition. \doxysubsection{Variable Documentation} \Hypertarget{namespaceserif_1_1model_a80f6f9e6dee6acbd57d0d4bd1116c9f2}\index{serif::model@{serif::model}!specification\_role\_count@{specification\_role\_count}} \index{specification\_role\_count@{specification\_role\_count}!serif::model@{serif::model}} \doxysubsubsection{\texorpdfstring{specification\_role\_count}{specification\_role\_count}} {\footnotesize\ttfamily \label{namespaceserif_1_1model_a80f6f9e6dee6acbd57d0d4bd1116c9f2} template$<$\mbox{\hyperlink{namespaceserif_1_1model_a80cb843c4b97c06905b775aba9d4b813}{Specification\+Role}} Role, typename Candidate$>$ \\ std\+::size\+\_\+t serif\+::model\+::specification\+\_\+role\+\_\+count\hspace{0.3cm}{\ttfamily [inline]}, {\ttfamily [constexpr]}} {\bfseries Initial value\+:} \begin{DoxyCode}{0} \DoxyCodeLine{=\ []} \DoxyCodeLine{\ \ \ \ \{} \DoxyCodeLine{\ \ \ \ \ \ \ \ \textcolor{keywordflow}{if}\ \textcolor{keyword}{constexpr}\ (\mbox{\hyperlink{conceptserif_1_1model_1_1_stellar_model_type}{StellarModelType}})} \DoxyCodeLine{\ \ \ \ \ \ \ \ \{} \DoxyCodeLine{\ \ \ \ \ \ \ \ \ \ \ \ \textcolor{keywordflow}{return}\ std::remove\_cvref\_t::template\ \mbox{\hyperlink{namespaceserif_1_1model_a80f6f9e6dee6acbd57d0d4bd1116c9f2}{specification\_role\_count}};} \DoxyCodeLine{\ \ \ \ \ \ \ \ \}} \DoxyCodeLine{\ \ \ \ \ \ \ \ \textcolor{keywordflow}{else}} \DoxyCodeLine{\ \ \ \ \ \ \ \ \{} \DoxyCodeLine{\ \ \ \ \ \ \ \ \ \ \ \ \textcolor{keywordflow}{return}\ std::size\_t\{0\};} \DoxyCodeLine{\ \ \ \ \ \ \ \ \}} \DoxyCodeLine{\ \ \ \ \}()} \end{DoxyCode} Inspect role counts without instantiating invalid model specializations.