Files
MeanField_SERiF/docs/latex/namespaceserif_1_1model.tex
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

608 lines
61 KiB
TeX

\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<state::Density,\ discretization::blocks::density::mass>}},}
\DoxyCodeLine{\ \ \ \ \ \ \ \ \mbox{\hyperlink{structserif_1_1utils_1_1dependencies_1_1_binding}{utils::dependencies::Binding<state::SurfaceShape,\ discretization::blocks::surface\_deformation::coefficients>}},}
\DoxyCodeLine{\ \ \ \ \ \ \ \ \mbox{\hyperlink{structserif_1_1utils_1_1dependencies_1_1_binding}{utils::dependencies::Binding<state::GravitationalPotential,\ discretization::blocks::gravity::potential>}},}
\DoxyCodeLine{\ \ \ \ \ \ \ \ \mbox{\hyperlink{structserif_1_1utils_1_1dependencies_1_1_binding}{utils::dependencies::Binding<equation::PoissonBalance,\ discretization::blocks::gravity::potential>}},}
\DoxyCodeLine{\ \ \ \ \ \ \ \ \mbox{\hyperlink{structserif_1_1utils_1_1dependencies_1_1_binding}{utils::dependencies::Binding<equation::SurfaceShapeBalance,\ discretization::blocks::surface\_deformation::shape\_equilibrium>}},}
\DoxyCodeLine{\ \ \ \ \ \ \ \ \mbox{\hyperlink{structserif_1_1utils_1_1dependencies_1_1_binding}{utils::dependencies::Binding<equation::HydrostaticBalance,\ discretization::blocks::density::mass>}},}
\DoxyCodeLine{\ \ \ \ \ \ \ \ \mbox{\hyperlink{structserif_1_1utils_1_1dependencies_1_1_binding}{utils::dependencies::Binding<GeneratedCoordinateOf<FixedTotalMass>}},\ \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<ConstraintOf<FixedTotalMass>}},\ \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<GeneratedCoordinateOf<FixedAngularMomentum>}},\ \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<ConstraintOf<FixedAngularMomentum>}},\ \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<Candidate>}})}
\DoxyCodeLine{\ \ \ \ \ \ \ \ \{}
\DoxyCodeLine{\ \ \ \ \ \ \ \ \ \ \ \ \textcolor{keywordflow}{return}\ std::remove\_cvref\_t<Candidate>::template\ \mbox{\hyperlink{namespaceserif_1_1model_a80f6f9e6dee6acbd57d0d4bd1116c9f2}{specification\_role\_count<Role>}};}
\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.