\doxysection{serif\+::model\+::computations Namespace Reference} \hypertarget{namespaceserif_1_1model_1_1computations}{}\label{namespaceserif_1_1model_1_1computations}\index{serif::model::computations@{serif::model::computations}} \doxysubsubsection*{Namespaces} \begin{DoxyCompactItemize} \item namespace \mbox{\hyperlink{namespaceserif_1_1model_1_1computations_1_1detail}{detail}} \end{DoxyCompactItemize} \doxysubsubsection*{Classes} \begin{DoxyCompactItemize} \item struct \mbox{\hyperlink{structserif_1_1model_1_1computations_1_1_contributions}{Contributions}} \begin{DoxyCompactList}\small\item\em Ordinary equations, point constraints and row replacements share one small assembly result. \end{DoxyCompactList}\item struct \mbox{\hyperlink{structserif_1_1model_1_1computations_1_1_interior_contribution}{Interior\+Contribution}} \begin{DoxyCompactList}\small\item\em One equation\textquotesingle{}s accepted contribution to the complete physical system. \end{DoxyCompactList}\item struct \mbox{\hyperlink{structserif_1_1model_1_1computations_1_1_potential_infinity_contribution}{Potential\+Infinity\+Contribution}} \begin{DoxyCompactList}\small\item\em The zero potential trace at compactified infinity, independent of the stellar isobar. \end{DoxyCompactList}\item struct \mbox{\hyperlink{structserif_1_1model_1_1computations_1_1_pressure_boundary_contribution}{Pressure\+Boundary\+Contribution}} \begin{DoxyCompactList}\small\item\em The complete isobaric replacement applied after ordinary and generated equation contributions. \end{DoxyCompactList}\item struct \mbox{\hyperlink{structserif_1_1model_1_1computations_1_1_scalar_residual_row}{Scalar\+Residual\+Row}} \begin{DoxyCompactList}\small\item\em One global scalar equation\textquotesingle{}s accepted derivative in complete physical state coordinates. \end{DoxyCompactList}\item struct \mbox{\hyperlink{structserif_1_1model_1_1computations_1_1_shape_contribution}{Shape\+Contribution}} \item struct \mbox{\hyperlink{structserif_1_1model_1_1computations_1_1_shape_derivatives}{Shape\+Derivatives}} \end{DoxyCompactItemize} \doxysubsubsection*{Functions} \begin{DoxyCompactItemize} \item {\footnotesize template$<$typename Equation, typename Schema, typename Layout$>$ }\\\mbox{\hyperlink{structserif_1_1model_1_1computations_1_1_contributions}{Contributions}} \mbox{\hyperlink{namespaceserif_1_1model_1_1computations_a9e46f414aef900d44b0dd2fd5574fd3a}{volume\+\_\+contribution}} (std\+::shared\+\_\+ptr$<$ const \mbox{\hyperlink{structserif_1_1operators_1_1backend_1_1mfem_1_1_volume_data}{operators\+::backend\+::mfem\+::\+Volume\+Data}}$<$ Equation, Schema $>$ $>$ accepted, const Layout \&layout, std\+::optional$<$ \mbox{\hyperlink{structserif_1_1model_1_1backend_1_1mfem_1_1_column_contribution}{backend\+::mfem\+::\+Column\+Contribution}} $>$ geometry=\{\}) \begin{DoxyCompactList}\small\item\em Assemble field and optional geometry columns from the same retained volume result. \end{DoxyCompactList}\item {\footnotesize template$<$typename Equation, typename Layout$>$ }\\auto \mbox{\hyperlink{namespaceserif_1_1model_1_1computations_a5600e8e13f635774406929efd4082748}{interior\+\_\+contribution}} (Layout layout) \begin{DoxyCompactList}\small\item\em Declare one owning contribution per equation; shape coordinates add one explicit shared prerequisite. \end{DoxyCompactList}\item {\footnotesize template$<$typename Equation, typename Layout$>$ }\\auto \mbox{\hyperlink{namespaceserif_1_1model_1_1computations_a15a3dad726975a3353a9f5337708194a}{interior\+\_\+computations}} (const Layout \&layout) \begin{DoxyCompactList}\small\item\em Scalar equations publish a reusable functional before joining ordinary system assembly. \end{DoxyCompactList}\item {\footnotesize template$<$typename Block, discretization\+::blocks\+::\+System\+Layout\+Type Layout$>$ }\\auto \mbox{\hyperlink{namespaceserif_1_1model_1_1computations_a0660915b0bac2fc2ce2012e70bcd4e07}{physical\+\_\+block}} (const Layout \&layout) \begin{DoxyCompactList}\small\item\em Publish a requested physical block from the same physical root used for residual and Jacobian actions. \end{DoxyCompactList}\item {\footnotesize template$<$discretization\+::blocks\+::\+System\+Layout\+Type Layout, typename... Blocks$>$ }\\auto \mbox{\hyperlink{namespaceserif_1_1model_1_1computations_a4ff124ec28d7784bd444fee234bad18e}{make\+\_\+physical\+\_\+block\+\_\+computations}} (const Layout \&layout, \mbox{\hyperlink{structserif_1_1utils_1_1dependencies_1_1_key_list}{utils\+::dependencies\+::\+Key\+List}}$<$ Blocks... $>$) \begin{DoxyCompactList}\small\item\em Supply precisely the requested physical couplings to existing preconditioner computations. \end{DoxyCompactList}\item {\footnotesize template$<$typename Layout, typename Binding$>$ }\\auto \mbox{\hyperlink{namespaceserif_1_1model_1_1computations_ad1541fee1dc9566753a4df55e3d177d7}{potential\+\_\+infinity\+\_\+contribution}} (Layout layout, const Binding \&binding) \begin{DoxyCompactList}\small\item\em Replace only the compactified-\/infinity potential rows by the zero physical trace. \end{DoxyCompactList}\item {\footnotesize template$<$geometry\+::surface\+::backend\+::mfem\+::\+Pressure\+Boundary\+Formulation Formulation, discretization\+::blocks\+::\+System\+Layout\+Type Layout$>$ \newline requires utils\+::dependencies\+::\+Contains\+Key$<$typename Formulation\+::\+Carrier\+Term, typename Layout\+::\+Residuals$>$}\\auto \mbox{\hyperlink{namespaceserif_1_1model_1_1computations_a3a40d4e2b6f9007024cf9ad7d0b24c2b}{pressure\+\_\+boundary\+\_\+contribution}} (Layout layout) \begin{DoxyCompactList}\small\item\em Publish accepted pressure rows and their solved-\/field derivatives in system coordinates. \end{DoxyCompactList}\item {\footnotesize template$<$typename Equation, typename Layout$>$ \newline requires discretization\+::blocks\+::\+Global\+Scalar\+Term$<$typename Equation\+::\+Test$>$}\\auto \mbox{\hyperlink{namespaceserif_1_1model_1_1computations_a6cc3c063b45f722bf8d0739ce53b47ca}{scalar\+\_\+residual\+\_\+row}} (Layout layout) \begin{DoxyCompactList}\small\item\em Rebuild a scalar functional only when its physical equation or shape derivative changes. \end{DoxyCompactList}\item auto \mbox{\hyperlink{namespaceserif_1_1model_1_1computations_a336eecda912a227c066bccb2ae6f1a22}{shape\+\_\+derivatives}} (const \mbox{\hyperlink{classserif_1_1discretization_1_1backend_1_1mfem_1_1_dof_map}{discretization\+::backend\+::mfem\+::\+Dof\+Map}} \&binding) \begin{DoxyCompactList}\small\item\em Prepare the projected shape derivative once per evaluated geometry, retaining its computed owner. \end{DoxyCompactList}\item {\footnotesize template$<$discretization\+::blocks\+::\+System\+Layout\+Type Layout$>$ }\\auto \mbox{\hyperlink{namespaceserif_1_1model_1_1computations_af86649ee0630f0316604c92d4ba2ac44}{make\+\_\+solver\+\_\+layout\+\_\+computations}} (const Layout \&layout) \begin{DoxyCompactList}\small\item\em Give normalization and preconditioning one producer for their shared coordinate layout. \end{DoxyCompactList}\item {\footnotesize template$<$typename Layout$>$ }\\auto \mbox{\hyperlink{namespaceserif_1_1model_1_1computations_a1f91d15e661d43a2a8e9a6b8111e6fc3}{surface\+\_\+potential\+\_\+contribution}} (\mbox{\hyperlink{classserif_1_1equations_1_1_surface_potential_balance}{equations\+::\+Surface\+Potential\+Balance}} equation, Layout layout) \begin{DoxyCompactList}\small\item\em Replace the volume force pullback by scalar effective-\/potential moments on the same surface. \end{DoxyCompactList}\end{DoxyCompactItemize} \doxysubsection{Function Documentation} \Hypertarget{namespaceserif_1_1model_1_1computations_a15a3dad726975a3353a9f5337708194a}\index{serif::model::computations@{serif::model::computations}!interior\_computations@{interior\_computations}} \index{interior\_computations@{interior\_computations}!serif::model::computations@{serif::model::computations}} \doxysubsubsection{\texorpdfstring{interior\_computations()}{interior\_computations()}} {\footnotesize\ttfamily \label{namespaceserif_1_1model_1_1computations_a15a3dad726975a3353a9f5337708194a} template$<$typename Equation, typename Layout$>$ \\ auto serif\+::model\+::computations\+::interior\+\_\+computations (\begin{DoxyParamCaption}\item[{const Layout \&}]{layout}{}\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [nodiscard]}} Scalar equations publish a reusable functional before joining ordinary system assembly. \Hypertarget{namespaceserif_1_1model_1_1computations_a5600e8e13f635774406929efd4082748}\index{serif::model::computations@{serif::model::computations}!interior\_contribution@{interior\_contribution}} \index{interior\_contribution@{interior\_contribution}!serif::model::computations@{serif::model::computations}} \doxysubsubsection{\texorpdfstring{interior\_contribution()}{interior\_contribution()}} {\footnotesize\ttfamily \label{namespaceserif_1_1model_1_1computations_a5600e8e13f635774406929efd4082748} template$<$typename Equation, typename Layout$>$ \\ auto serif\+::model\+::computations\+::interior\+\_\+contribution (\begin{DoxyParamCaption}\item[{Layout}]{layout}{}\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [nodiscard]}} Declare one owning contribution per equation; shape coordinates add one explicit shared prerequisite. \Hypertarget{namespaceserif_1_1model_1_1computations_a4ff124ec28d7784bd444fee234bad18e}\index{serif::model::computations@{serif::model::computations}!make\_physical\_block\_computations@{make\_physical\_block\_computations}} \index{make\_physical\_block\_computations@{make\_physical\_block\_computations}!serif::model::computations@{serif::model::computations}} \doxysubsubsection{\texorpdfstring{make\_physical\_block\_computations()}{make\_physical\_block\_computations()}} {\footnotesize\ttfamily \label{namespaceserif_1_1model_1_1computations_a4ff124ec28d7784bd444fee234bad18e} template$<$discretization\+::blocks\+::\+System\+Layout\+Type Layout, typename... Blocks$>$ \\ auto serif\+::model\+::computations\+::make\+\_\+physical\+\_\+block\+\_\+computations (\begin{DoxyParamCaption}\item[{const Layout \&}]{layout}{, }\item[{\mbox{\hyperlink{structserif_1_1utils_1_1dependencies_1_1_key_list}{utils\+::dependencies\+::\+Key\+List}}$<$ Blocks... $>$}]{}{}\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [nodiscard]}} Supply precisely the requested physical couplings to existing preconditioner computations. \Hypertarget{namespaceserif_1_1model_1_1computations_af86649ee0630f0316604c92d4ba2ac44}\index{serif::model::computations@{serif::model::computations}!make\_solver\_layout\_computations@{make\_solver\_layout\_computations}} \index{make\_solver\_layout\_computations@{make\_solver\_layout\_computations}!serif::model::computations@{serif::model::computations}} \doxysubsubsection{\texorpdfstring{make\_solver\_layout\_computations()}{make\_solver\_layout\_computations()}} {\footnotesize\ttfamily \label{namespaceserif_1_1model_1_1computations_af86649ee0630f0316604c92d4ba2ac44} template$<$discretization\+::blocks\+::\+System\+Layout\+Type Layout$>$ \\ auto serif\+::model\+::computations\+::make\+\_\+solver\+\_\+layout\+\_\+computations (\begin{DoxyParamCaption}\item[{const Layout \&}]{layout}{}\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [nodiscard]}} Give normalization and preconditioning one producer for their shared coordinate layout. \Hypertarget{namespaceserif_1_1model_1_1computations_a0660915b0bac2fc2ce2012e70bcd4e07}\index{serif::model::computations@{serif::model::computations}!physical\_block@{physical\_block}} \index{physical\_block@{physical\_block}!serif::model::computations@{serif::model::computations}} \doxysubsubsection{\texorpdfstring{physical\_block()}{physical\_block()}} {\footnotesize\ttfamily \label{namespaceserif_1_1model_1_1computations_a0660915b0bac2fc2ce2012e70bcd4e07} template$<$typename Block, discretization\+::blocks\+::\+System\+Layout\+Type Layout$>$ \\ auto serif\+::model\+::computations\+::physical\+\_\+block (\begin{DoxyParamCaption}\item[{const Layout \&}]{layout}{}\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [nodiscard]}} Publish a requested physical block from the same physical root used for residual and Jacobian actions. \Hypertarget{namespaceserif_1_1model_1_1computations_ad1541fee1dc9566753a4df55e3d177d7}\index{serif::model::computations@{serif::model::computations}!potential\_infinity\_contribution@{potential\_infinity\_contribution}} \index{potential\_infinity\_contribution@{potential\_infinity\_contribution}!serif::model::computations@{serif::model::computations}} \doxysubsubsection{\texorpdfstring{potential\_infinity\_contribution()}{potential\_infinity\_contribution()}} {\footnotesize\ttfamily \label{namespaceserif_1_1model_1_1computations_ad1541fee1dc9566753a4df55e3d177d7} template$<$typename Layout, typename Binding$>$ \\ auto serif\+::model\+::computations\+::potential\+\_\+infinity\+\_\+contribution (\begin{DoxyParamCaption}\item[{Layout}]{layout}{, }\item[{const Binding \&}]{binding}{}\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [nodiscard]}} Replace only the compactified-\/infinity potential rows by the zero physical trace. \Hypertarget{namespaceserif_1_1model_1_1computations_a3a40d4e2b6f9007024cf9ad7d0b24c2b}\index{serif::model::computations@{serif::model::computations}!pressure\_boundary\_contribution@{pressure\_boundary\_contribution}} \index{pressure\_boundary\_contribution@{pressure\_boundary\_contribution}!serif::model::computations@{serif::model::computations}} \doxysubsubsection{\texorpdfstring{pressure\_boundary\_contribution()}{pressure\_boundary\_contribution()}} {\footnotesize\ttfamily \label{namespaceserif_1_1model_1_1computations_a3a40d4e2b6f9007024cf9ad7d0b24c2b} template$<$geometry\+::surface\+::backend\+::mfem\+::\+Pressure\+Boundary\+Formulation Formulation, discretization\+::blocks\+::\+System\+Layout\+Type Layout$>$ \newline requires utils\+::dependencies\+::\+Contains\+Key$<$typename Formulation\+::\+Carrier\+Term, typename Layout\+::\+Residuals$>$\\ auto serif\+::model\+::computations\+::pressure\+\_\+boundary\+\_\+contribution (\begin{DoxyParamCaption}\item[{Layout}]{layout}{}\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [nodiscard]}} Publish accepted pressure rows and their solved-\/field derivatives in system coordinates. \begin{DoxyNote}{Note} Prescribed EOS inputs still participate in surface evaluation, but have no Newton column. The compiled surface formulation selects its physical carrier; no enthalpy assumption enters assembly. \end{DoxyNote} \Hypertarget{namespaceserif_1_1model_1_1computations_a6cc3c063b45f722bf8d0739ce53b47ca}\index{serif::model::computations@{serif::model::computations}!scalar\_residual\_row@{scalar\_residual\_row}} \index{scalar\_residual\_row@{scalar\_residual\_row}!serif::model::computations@{serif::model::computations}} \doxysubsubsection{\texorpdfstring{scalar\_residual\_row()}{scalar\_residual\_row()}} {\footnotesize\ttfamily \label{namespaceserif_1_1model_1_1computations_a6cc3c063b45f722bf8d0739ce53b47ca} template$<$typename Equation, typename Layout$>$ \newline requires discretization\+::blocks\+::\+Global\+Scalar\+Term$<$typename Equation\+::\+Test$>$\\ auto serif\+::model\+::computations\+::scalar\+\_\+residual\+\_\+row (\begin{DoxyParamCaption}\item[{Layout}]{layout}{}\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [nodiscard]}} Rebuild a scalar functional only when its physical equation or shape derivative changes. \Hypertarget{namespaceserif_1_1model_1_1computations_a336eecda912a227c066bccb2ae6f1a22}\index{serif::model::computations@{serif::model::computations}!shape\_derivatives@{shape\_derivatives}} \index{shape\_derivatives@{shape\_derivatives}!serif::model::computations@{serif::model::computations}} \doxysubsubsection{\texorpdfstring{shape\_derivatives()}{shape\_derivatives()}} {\footnotesize\ttfamily \label{namespaceserif_1_1model_1_1computations_a336eecda912a227c066bccb2ae6f1a22} auto serif\+::model\+::computations\+::shape\+\_\+derivatives (\begin{DoxyParamCaption}\item[{const \mbox{\hyperlink{classserif_1_1discretization_1_1backend_1_1mfem_1_1_dof_map}{discretization\+::backend\+::mfem\+::\+Dof\+Map}} \&}]{binding}{}\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}, {\ttfamily [nodiscard]}} Prepare the projected shape derivative once per evaluated geometry, retaining its computed owner. \Hypertarget{namespaceserif_1_1model_1_1computations_a1f91d15e661d43a2a8e9a6b8111e6fc3}\index{serif::model::computations@{serif::model::computations}!surface\_potential\_contribution@{surface\_potential\_contribution}} \index{surface\_potential\_contribution@{surface\_potential\_contribution}!serif::model::computations@{serif::model::computations}} \doxysubsubsection{\texorpdfstring{surface\_potential\_contribution()}{surface\_potential\_contribution()}} {\footnotesize\ttfamily \label{namespaceserif_1_1model_1_1computations_a1f91d15e661d43a2a8e9a6b8111e6fc3} template$<$typename Layout$>$ \\ auto serif\+::model\+::computations\+::surface\+\_\+potential\+\_\+contribution (\begin{DoxyParamCaption}\item[{\mbox{\hyperlink{classserif_1_1equations_1_1_surface_potential_balance}{equations\+::\+Surface\+Potential\+Balance}}}]{equation}{, }\item[{Layout}]{layout}{}\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [nodiscard]}} Replace the volume force pullback by scalar effective-\/potential moments on the same surface. \Hypertarget{namespaceserif_1_1model_1_1computations_a9e46f414aef900d44b0dd2fd5574fd3a}\index{serif::model::computations@{serif::model::computations}!volume\_contribution@{volume\_contribution}} \index{volume\_contribution@{volume\_contribution}!serif::model::computations@{serif::model::computations}} \doxysubsubsection{\texorpdfstring{volume\_contribution()}{volume\_contribution()}} {\footnotesize\ttfamily \label{namespaceserif_1_1model_1_1computations_a9e46f414aef900d44b0dd2fd5574fd3a} template$<$typename Equation, typename Schema, typename Layout$>$ \\ \mbox{\hyperlink{structserif_1_1model_1_1computations_1_1_contributions}{Contributions}} serif\+::model\+::computations\+::volume\+\_\+contribution (\begin{DoxyParamCaption}\item[{std\+::shared\+\_\+ptr$<$ const \mbox{\hyperlink{structserif_1_1operators_1_1backend_1_1mfem_1_1_volume_data}{operators\+::backend\+::mfem\+::\+Volume\+Data}}$<$ Equation, Schema $>$ $>$}]{accepted}{, }\item[{const Layout \&}]{layout}{, }\item[{std\+::optional$<$ \mbox{\hyperlink{structserif_1_1model_1_1backend_1_1mfem_1_1_column_contribution}{backend\+::mfem\+::\+Column\+Contribution}} $>$}]{geometry}{ = {\ttfamily \{\}}}\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [nodiscard]}} Assemble field and optional geometry columns from the same retained volume result.