\doxysection{serif\+::operators Namespace Reference} \hypertarget{namespaceserif_1_1operators}{}\label{namespaceserif_1_1operators}\index{serif::operators@{serif::operators}} \doxysubsubsection*{Namespaces} \begin{DoxyCompactItemize} \item namespace \mbox{\hyperlink{namespaceserif_1_1operators_1_1backend}{backend}} \item namespace \mbox{\hyperlink{namespaceserif_1_1operators_1_1detail}{detail}} \end{DoxyCompactItemize} \doxysubsubsection*{Classes} \begin{DoxyCompactItemize} \item struct \mbox{\hyperlink{structserif_1_1operators_1_1_bad_contribution_collection}{Bad\+Contribution\+Collection}} \item struct \mbox{\hyperlink{structserif_1_1operators_1_1_bad_contribution_row}{Bad\+Contribution\+Row}} \item struct \mbox{\hyperlink{structserif_1_1operators_1_1_contribution_binding}{Contribution\+Binding}} \begin{DoxyCompactList}\small\item\em Retain one leaf equation and the constant coefficient of its arithmetic expression. \end{DoxyCompactList}\item struct \mbox{\hyperlink{structserif_1_1operators_1_1_discontinuous_scalar}{Discontinuous\+Scalar}} \item struct \mbox{\hyperlink{structserif_1_1operators_1_1_equation_plan}{Equation\+Plan}} \item struct \mbox{\hyperlink{structserif_1_1operators_1_1_equation_plan_3_01_equation_t_00_01utils_1_1types_1_1_type_list_3_01_o_8_8_8_01_4_01_4}{Equation\+Plan$<$ Equation\+T, utils\+::types\+::\+Type\+List$<$ O... $>$ $>$}} \item class \mbox{\hyperlink{classserif_1_1operators_1_1_equation_registry}{Equation\+Registry}} \begin{DoxyCompactList}\small\item\em A compile-\/time registry of equations. \end{DoxyCompactList}\item struct \mbox{\hyperlink{structserif_1_1operators_1_1_gradient_request}{Gradient\+Request}} \item struct \mbox{\hyperlink{structserif_1_1operators_1_1_has_scalar_volume_operands}{Has\+Scalar\+Volume\+Operands}} \item struct \mbox{\hyperlink{structserif_1_1operators_1_1_has_scalar_volume_operands_3_01_equation_t_00_01utils_1_1types_1_1_a6e6645520e475d59dc9a1cecc004d8a}{Has\+Scalar\+Volume\+Operands$<$ Equation\+T, utils\+::types\+::\+Type\+List$<$ Operands... $>$ $>$}} \item class \mbox{\hyperlink{classserif_1_1operators_1_1_linearized_block}{Linearized\+Block}} \begin{DoxyCompactList}\small\item\em An accepted physical block with optional efficient diagonal and sparse assembly operations. \end{DoxyCompactList}\item class \mbox{\hyperlink{classserif_1_1operators_1_1_linearized_system_view}{Linearized\+System\+View}} \begin{DoxyCompactList}\small\item\em Borrow an accepted collection of physical blocks and its independently ordered system layout. \end{DoxyCompactList}\item struct \mbox{\hyperlink{structserif_1_1operators_1_1_nested_bad_collection}{Nested\+Bad\+Collection}} \item struct \mbox{\hyperlink{structserif_1_1operators_1_1_nodal_request}{Nodal\+Request}} \item struct \mbox{\hyperlink{structserif_1_1operators_1_1_operand_values}{Operand\+Values}} \begin{DoxyCompactList}\small\item\em A helper struct to store the values of operands. There is some convention here, specifically if OutputT is void then this struct represents the values of the operands, otherwise it represents the local derivatives of the operands with respect to OutputT. \end{DoxyCompactList}\item struct \mbox{\hyperlink{structserif_1_1operators_1_1_physical_block}{Physical\+Block}} \begin{DoxyCompactList}\small\item\em Identify a physical Jacobian block by its equation rows and unknown coordinates. \end{DoxyCompactList}\item struct \mbox{\hyperlink{structserif_1_1operators_1_1_volume_contributions}{Volume\+Contributions}} \item struct \mbox{\hyperlink{structserif_1_1operators_1_1_volume_contributions_3_01std_1_1tuple_3_01_c_8_8_8_01_4_01_4}{Volume\+Contributions$<$ std\+::tuple$<$ C... $>$ $>$}} \item struct \mbox{\hyperlink{structserif_1_1operators_1_1_volume_operands}{Volume\+Operands}} \item struct \mbox{\hyperlink{structserif_1_1operators_1_1_volume_operands_3_01_c_00_01utils_1_1types_1_1_type_list_3_01_o_8_8_8_01_4_01_4}{Volume\+Operands$<$ C, utils\+::types\+::\+Type\+List$<$ O... $>$ $>$}} \end{DoxyCompactItemize} \doxysubsubsection*{Concepts} \begin{DoxyCompactItemize} \item concept \mbox{\hyperlink{conceptserif_1_1operators_1_1_scalar_value_term}{Scalar\+Value\+Term}} \item concept \mbox{\hyperlink{conceptserif_1_1operators_1_1_scalar_value_operand}{Scalar\+Value\+Operand}} \item concept \mbox{\hyperlink{conceptserif_1_1operators_1_1_scalar_gradient_operand}{Scalar\+Gradient\+Operand}} \begin{DoxyCompactList}\small\item\em A conforming scalar gradient; discontinuous fields also require face terms. \end{DoxyCompactList}\item concept \mbox{\hyperlink{conceptserif_1_1operators_1_1_vector_gradient_operand}{Vector\+Gradient\+Operand}} \begin{DoxyCompactList}\small\item\em Full vector gradients are supported for componentwise H1 fields. \end{DoxyCompactList}\item concept \mbox{\hyperlink{conceptserif_1_1operators_1_1_scalar_volume_equation}{Scalar\+Volume\+Equation}} \begin{DoxyCompactList}\small\item\em Equations executable by the current scalar-\/value volume operator. \end{DoxyCompactList}\item concept \mbox{\hyperlink{conceptserif_1_1operators_1_1_mapped_operand}{Mapped\+Operand}} \begin{DoxyCompactList}\small\item\em Mathematical operand combinations implemented by the current volume backend. \end{DoxyCompactList}\item concept \mbox{\hyperlink{conceptserif_1_1operators_1_1_volume_equation}{Volume\+Equation}} \begin{DoxyCompactList}\small\item\em One or more supported weak volume contributions assembled into a single residual row. \end{DoxyCompactList}\end{DoxyCompactItemize} \doxysubsubsection*{Typedefs} \begin{DoxyCompactItemize} \item using \mbox{\hyperlink{namespaceserif_1_1operators_a8ae759fc718c8ccc0804325b10a03b84}{Density}} = \mbox{\hyperlink{structserif_1_1discretization_1_1forms_1_1_operand}{discretization\+::forms\+::\+Operand}}$<$\mbox{\hyperlink{structserif_1_1discretization_1_1blocks_1_1density_1_1mass}{discretization\+::blocks\+::density\+::mass}}$>$ \item using \mbox{\hyperlink{namespaceserif_1_1operators_a9a98677dd6eb911f3daa5a4173248c93}{Potential}} = \mbox{\hyperlink{structserif_1_1discretization_1_1forms_1_1_operand}{discretization\+::forms\+::\+Operand}}$<$\mbox{\hyperlink{structserif_1_1discretization_1_1blocks_1_1gravity_1_1potential}{discretization\+::blocks\+::gravity\+::potential}}$>$ \item using \mbox{\hyperlink{namespaceserif_1_1operators_af3400cbc42927b9162d39b370273de24}{Constant}} = \mbox{\hyperlink{structserif_1_1discretization_1_1forms_1_1_operand}{discretization\+::forms\+::\+Operand}}$<$\mbox{\hyperlink{structserif_1_1discretization_1_1blocks_1_1barotropic__constant_1_1mass__normalization}{discretization\+::blocks\+::barotropic\+\_\+constant\+::mass\+\_\+normalization}}$>$ \item using \mbox{\hyperlink{namespaceserif_1_1operators_ac485dbca2b971ac59f3adda704b5485d}{First\+Order}} = \mbox{\hyperlink{structserif_1_1equations_1_1_operand_values}{equations\+::\+Operand\+Values}}$<$\mbox{\hyperlink{structserif_1_1utils_1_1types_1_1_type_list}{utils\+::types\+::\+Type\+List}}$<$\mbox{\hyperlink{namespaceserif_1_1operators_a8ae759fc718c8ccc0804325b10a03b84}{Density}}, \mbox{\hyperlink{namespaceserif_1_1operators_a9a98677dd6eb911f3daa5a4173248c93}{Potential}}, \mbox{\hyperlink{namespaceserif_1_1operators_af3400cbc42927b9162d39b370273de24}{Constant}}$>$$>$ \item using \mbox{\hyperlink{namespaceserif_1_1operators_a1bdabba6c03d61d4f242b8262b045fb0}{Permuted\+Order}} = \mbox{\hyperlink{structserif_1_1equations_1_1_operand_values}{equations\+::\+Operand\+Values}}$<$\mbox{\hyperlink{structserif_1_1utils_1_1types_1_1_type_list}{utils\+::types\+::\+Type\+List}}$<$\mbox{\hyperlink{namespaceserif_1_1operators_af3400cbc42927b9162d39b370273de24}{Constant}}, \mbox{\hyperlink{namespaceserif_1_1operators_a8ae759fc718c8ccc0804325b10a03b84}{Density}}, \mbox{\hyperlink{namespaceserif_1_1operators_a9a98677dd6eb911f3daa5a4173248c93}{Potential}}$>$$>$ \item using \mbox{\hyperlink{namespaceserif_1_1operators_a849daf9bd0310ba0f030c323ebdcc7af}{Mass\+Plan}} = \mbox{\hyperlink{structserif_1_1operators_1_1_equation_plan}{Equation\+Plan}}$<$\mbox{\hyperlink{classserif_1_1equations_1_1_mass_normalization}{equations\+::\+Mass\+Normalization}}$>$ \item using \mbox{\hyperlink{namespaceserif_1_1operators_a67216629c783b596d9fc92fbbfe959f5}{Balance\+Plan}} = \mbox{\hyperlink{structserif_1_1operators_1_1_equation_plan}{Equation\+Plan}}$<$\mbox{\hyperlink{classserif_1_1equations_1_1_barotropic_density_balance}{equations\+::\+Barotropic\+Density\+Balance}}$<$\mbox{\hyperlink{classserif_1_1eos_1_1models_1_1_polytrope}{eos\+::models\+::\+Polytrope}}$>$$>$ \item using \mbox{\hyperlink{namespaceserif_1_1operators_ad169e8c66ddc12c3addd4e551faf1ec2}{Mass\+Point}} = \mbox{\hyperlink{structserif_1_1equations_1_1_equation_point}{equations\+::\+Equation\+Point}}$<$\mbox{\hyperlink{classserif_1_1equations_1_1_mass_normalization_a0cd9c730f6d84b05ee03bac2ff0433bb}{equations\+::\+Mass\+Normalization\+::\+Operands}}$>$ \item using \mbox{\hyperlink{namespaceserif_1_1operators_a9bc4fde2b5ab0098aa4600b125c5321d}{Potential\+Contributions}} = \mbox{\hyperlink{namespaceserif_1_1equations_a3d8c1500d535f29fe360f0ab31ac55e3}{equations\+::\+Contributions\+Of}}$<$\mbox{\hyperlink{classserif_1_1equations_1_1_primal_poisson_balance}{equations\+::\+Primal\+Poisson\+Balance}}$>$ \item using \mbox{\hyperlink{namespaceserif_1_1operators_ac93808811be69dd6608587eb7b0078e4}{Balance}} = \mbox{\hyperlink{classserif_1_1equations_1_1_barotropic_density_balance}{equations\+::\+Barotropic\+Density\+Balance}}$<$\mbox{\hyperlink{classserif_1_1eos_1_1models_1_1_polytrope}{eos\+::models\+::\+Polytrope}}$>$ \item using \mbox{\hyperlink{namespaceserif_1_1operators_add26988897c07a3b976f748f621d779c}{Displacement}} = \mbox{\hyperlink{structserif_1_1discretization_1_1blocks_1_1displacement_1_1vector}{discretization\+::blocks\+::displacement\+::vector}} \item using \mbox{\hyperlink{namespaceserif_1_1operators_a1099b4a7d85fb1e9dd496c451f450a6a}{Schema}} = \mbox{\hyperlink{namespaceserif_1_1discretization_1_1domain_1_1schema_abc22bc3b4f40b417480a061162a3dea2}{discretization\+::domain\+::schema\+::\+Core\+Envelope\+Vacuum\+Domain\+Schema}} \item using \mbox{\hyperlink{namespaceserif_1_1operators_a1990cb90a24314949bd1b5686d8c95f8}{Boundary\+Value}} = \mbox{\hyperlink{structserif_1_1operators_1_1_nodal_request}{Nodal\+Request}}$<$\mbox{\hyperlink{namespaceserif_1_1operators_a9a98677dd6eb911f3daa5a4173248c93}{Potential}}$>$ \item using \mbox{\hyperlink{namespaceserif_1_1operators_a84d7e8ff528dc3361769cc6f08e6cd49}{Density\+Value}} = \mbox{\hyperlink{structserif_1_1discretization_1_1forms_1_1_operand}{discretization\+::forms\+::\+Operand}}$<$\mbox{\hyperlink{namespaceserif_1_1operators_a8ae759fc718c8ccc0804325b10a03b84}{Density}}$>$ \item using \mbox{\hyperlink{namespaceserif_1_1operators_a4fddf5444606d22742b6fc341880c05a}{Potential\+Value}} = \mbox{\hyperlink{structserif_1_1discretization_1_1forms_1_1_operand}{discretization\+::forms\+::\+Operand}}$<$\mbox{\hyperlink{namespaceserif_1_1operators_a9a98677dd6eb911f3daa5a4173248c93}{Potential}}$>$ \item using \mbox{\hyperlink{namespaceserif_1_1operators_ac1416d49e5c3ea87f5a2cdbbf7f6ac1c}{Potential\+Gradient}} = \mbox{\hyperlink{structserif_1_1discretization_1_1forms_1_1_operand}{discretization\+::forms\+::\+Operand}}$<$\mbox{\hyperlink{namespaceserif_1_1operators_a9a98677dd6eb911f3daa5a4173248c93}{Potential}}, \mbox{\hyperlink{structserif_1_1discretization_1_1forms_1_1_operation_1_1_gradient}{discretization\+::forms\+::\+Operation\+::\+Gradient}}$>$ \item using \mbox{\hyperlink{namespaceserif_1_1operators_ac94445fb44b80328f7fd8470ded86ab7}{Displacement\+Divergence}} = \mbox{\hyperlink{structserif_1_1discretization_1_1forms_1_1_operand}{discretization\+::forms\+::\+Operand}}$<$\mbox{\hyperlink{structserif_1_1discretization_1_1blocks_1_1displacement_1_1vector}{discretization\+::blocks\+::displacement\+::vector}}, \mbox{\hyperlink{structserif_1_1discretization_1_1forms_1_1_operation_1_1_divergence}{discretization\+::forms\+::\+Operation\+::\+Divergence}}$>$ \item using \mbox{\hyperlink{namespaceserif_1_1operators_a028bb2043970f34c7f9c4f8f35d2c996}{Displacement\+Value}} = \mbox{\hyperlink{structserif_1_1discretization_1_1forms_1_1_operand}{discretization\+::forms\+::\+Operand}}$<$\mbox{\hyperlink{namespaceserif_1_1operators_add26988897c07a3b976f748f621d779c}{Displacement}}$>$ \item using \mbox{\hyperlink{namespaceserif_1_1operators_abb7387ce5fc8f06e38655f2abf71a05f}{Displacement\+Gradient}} = \mbox{\hyperlink{structserif_1_1discretization_1_1forms_1_1_operand}{discretization\+::forms\+::\+Operand}}$<$\mbox{\hyperlink{namespaceserif_1_1operators_add26988897c07a3b976f748f621d779c}{Displacement}}, \mbox{\hyperlink{structserif_1_1discretization_1_1forms_1_1_operation_1_1_gradient}{discretization\+::forms\+::\+Operation\+::\+Gradient}}$>$ \item using \mbox{\hyperlink{namespaceserif_1_1operators_a67047e978d34c67942594c8633d8dc98}{Vector\+Tensor}} = \mbox{\hyperlink{namespaceserif_1_1discretization_1_1forms_aecbaccd35c1209031d60ea7348d6a452}{discretization\+::forms\+::\+Matrix\+Value}} \item using \mbox{\hyperlink{namespaceserif_1_1operators_a6c1bf61c7f8146504e22c9dd5cd214eb}{Cartesian\+Vector}} = \mbox{\hyperlink{namespaceserif_1_1discretization_1_1forms_a19001a41347e243892d7bfef18abd174}{discretization\+::forms\+::\+Vector\+Value}} \item using \mbox{\hyperlink{namespaceserif_1_1operators_a5046a40a9062182dcebcff858e5d744e}{Mixed\+Samples}} = \mbox{\hyperlink{structserif_1_1utils_1_1types_1_1_type_list}{utils\+::types\+::\+Type\+List}}$<$\mbox{\hyperlink{namespaceserif_1_1operators_a028bb2043970f34c7f9c4f8f35d2c996}{Displacement\+Value}}, \mbox{\hyperlink{namespaceserif_1_1operators_ac94445fb44b80328f7fd8470ded86ab7}{Displacement\+Divergence}}, \mbox{\hyperlink{namespaceserif_1_1operators_a84d7e8ff528dc3361769cc6f08e6cd49}{Density\+Value}}$>$ \item using \mbox{\hyperlink{namespaceserif_1_1operators_a9cdb279f42fddc853430bddd6fdefad5}{Mass}} = \mbox{\hyperlink{classserif_1_1equations_1_1_mass_normalization}{equations\+::\+Mass\+Normalization}} \item using \mbox{\hyperlink{namespaceserif_1_1operators_abb1de6ae853e4f3c0ed9604304a375c4}{Omega}} = \mbox{\hyperlink{structserif_1_1discretization_1_1blocks_1_1rotation_1_1angular__velocity}{discretization\+::blocks\+::rotation\+::angular\+\_\+velocity}} \item using \mbox{\hyperlink{namespaceserif_1_1operators_a5195fc6ea0fc4a5f67abb26fa627f9ed}{Momentum}} = \mbox{\hyperlink{classserif_1_1equations_1_1_angular_momentum_constraint}{equations\+::\+Angular\+Momentum\+Constraint}} \end{DoxyCompactItemize} \doxysubsubsection*{Functions} \begin{DoxyCompactItemize} \item {\footnotesize template$<$equations\+::\+Equation EquationT$>$ }\\auto \mbox{\hyperlink{namespaceserif_1_1operators_aedf63524bbbd357b307f77282c9bdb99}{bind\+\_\+contributions}} (std\+::shared\+\_\+ptr$<$ const EquationT $>$ equation) \begin{DoxyCompactList}\small\item\em Give each retained leaf a compile-\/time tuple position for independently cached contribution results. \end{DoxyCompactList}\item {\footnotesize template$<$equations\+::\+Equation EquationT, typename FunctionT$>$ }\\void \mbox{\hyperlink{namespaceserif_1_1operators_a6fc6c3a2aa8dea2f9aa7758024e43a93}{for\+\_\+each\+\_\+contribution}} (const EquationT \&equation, FunctionT \&\&function) \item {\footnotesize template$<$discretization\+::blocks\+::\+System\+Layout\+Type Layout, utils\+::dependencies\+::\+Is\+Dependency\+Context Blocks$>$ }\\\mbox{\hyperlink{namespaceserif_1_1operators_a923b82a601cec82833d0802e71b8108e}{Linearized\+System\+View}} (const Layout \&, const Blocks \&) -\/$>$ Linearized\+System\+View$<$ Layout, Blocks $>$ \begin{DoxyCompactList}\small\item\em Infer canonical owner types while retaining the explicit borrowing lifetime checks. \end{DoxyCompactList}\item \mbox{\hyperlink{classserif_1_1operators_1_1backend_1_1mfem_1_1_linearized_block}{Linearized\+Block}} \mbox{\hyperlink{namespaceserif_1_1operators_ab2fbcb6d59eb098097b55cb1cb04b3d9}{linearized\+\_\+block}} (std\+::shared\+\_\+ptr$<$ const \+::mfem\+::\+Sparse\+Matrix $>$ matrix) \begin{DoxyCompactList}\small\item\em Retain an already assembled physical block without copying its matrix. \end{DoxyCompactList}\end{DoxyCompactItemize} \doxysubsection{Typedef Documentation} \Hypertarget{namespaceserif_1_1operators_ac93808811be69dd6608587eb7b0078e4}\index{serif::operators@{serif::operators}!Balance@{Balance}} \index{Balance@{Balance}!serif::operators@{serif::operators}} \doxysubsubsection{\texorpdfstring{Balance}{Balance}} {\footnotesize\ttfamily \label{namespaceserif_1_1operators_ac93808811be69dd6608587eb7b0078e4} using \mbox{\hyperlink{namespaceserif_1_1operators_ac93808811be69dd6608587eb7b0078e4}{serif\+::operators\+::\+Balance}} = \mbox{\hyperlink{classserif_1_1equations_1_1_barotropic_density_balance}{equations\+::\+Barotropic\+Density\+Balance}}$<$\mbox{\hyperlink{classserif_1_1eos_1_1models_1_1_polytrope}{eos\+::models\+::\+Polytrope}}$>$} \Hypertarget{namespaceserif_1_1operators_a67216629c783b596d9fc92fbbfe959f5}\index{serif::operators@{serif::operators}!BalancePlan@{BalancePlan}} \index{BalancePlan@{BalancePlan}!serif::operators@{serif::operators}} \doxysubsubsection{\texorpdfstring{BalancePlan}{BalancePlan}} {\footnotesize\ttfamily \label{namespaceserif_1_1operators_a67216629c783b596d9fc92fbbfe959f5} using \mbox{\hyperlink{namespaceserif_1_1operators_a67216629c783b596d9fc92fbbfe959f5}{serif\+::operators\+::\+Balance\+Plan}} = \mbox{\hyperlink{structserif_1_1operators_1_1_equation_plan}{Equation\+Plan}}$<$\mbox{\hyperlink{classserif_1_1equations_1_1_barotropic_density_balance}{equations\+::\+Barotropic\+Density\+Balance}}$<$\mbox{\hyperlink{classserif_1_1eos_1_1models_1_1_polytrope}{eos\+::models\+::\+Polytrope}}$>$$>$} \Hypertarget{namespaceserif_1_1operators_a1990cb90a24314949bd1b5686d8c95f8}\index{serif::operators@{serif::operators}!BoundaryValue@{BoundaryValue}} \index{BoundaryValue@{BoundaryValue}!serif::operators@{serif::operators}} \doxysubsubsection{\texorpdfstring{BoundaryValue}{BoundaryValue}} {\footnotesize\ttfamily \label{namespaceserif_1_1operators_a1990cb90a24314949bd1b5686d8c95f8} using \mbox{\hyperlink{namespaceserif_1_1operators_a1990cb90a24314949bd1b5686d8c95f8}{serif\+::operators\+::\+Boundary\+Value}} = \mbox{\hyperlink{structserif_1_1operators_1_1_nodal_request}{Nodal\+Request}}$<$\mbox{\hyperlink{namespaceserif_1_1operators_a9a98677dd6eb911f3daa5a4173248c93}{Potential}}$>$} \Hypertarget{namespaceserif_1_1operators_a6c1bf61c7f8146504e22c9dd5cd214eb}\index{serif::operators@{serif::operators}!CartesianVector@{CartesianVector}} \index{CartesianVector@{CartesianVector}!serif::operators@{serif::operators}} \doxysubsubsection{\texorpdfstring{CartesianVector}{CartesianVector}} {\footnotesize\ttfamily \label{namespaceserif_1_1operators_a6c1bf61c7f8146504e22c9dd5cd214eb} using \mbox{\hyperlink{namespaceserif_1_1operators_a6c1bf61c7f8146504e22c9dd5cd214eb}{serif\+::operators\+::\+Cartesian\+Vector}} = \mbox{\hyperlink{namespaceserif_1_1discretization_1_1forms_a19001a41347e243892d7bfef18abd174}{discretization\+::forms\+::\+Vector\+Value}}} \Hypertarget{namespaceserif_1_1operators_af3400cbc42927b9162d39b370273de24}\index{serif::operators@{serif::operators}!Constant@{Constant}} \index{Constant@{Constant}!serif::operators@{serif::operators}} \doxysubsubsection{\texorpdfstring{Constant}{Constant}} {\footnotesize\ttfamily \label{namespaceserif_1_1operators_af3400cbc42927b9162d39b370273de24} typedef \mbox{\hyperlink{structserif_1_1discretization_1_1blocks_1_1barotropic__constant_1_1mass__normalization}{discretization\+::blocks\+::barotropic\+\_\+constant\+::mass\+\_\+normalization}} \mbox{\hyperlink{namespaceserif_1_1operators_af3400cbc42927b9162d39b370273de24}{serif\+::operators\+::\+Constant}} = \mbox{\hyperlink{structserif_1_1discretization_1_1forms_1_1_operand}{discretization\+::forms\+::\+Operand}}$<$\mbox{\hyperlink{structserif_1_1discretization_1_1blocks_1_1barotropic__constant_1_1mass__normalization}{discretization\+::blocks\+::barotropic\+\_\+constant\+::mass\+\_\+normalization}}$>$} \Hypertarget{namespaceserif_1_1operators_a8ae759fc718c8ccc0804325b10a03b84}\index{serif::operators@{serif::operators}!Density@{Density}} \index{Density@{Density}!serif::operators@{serif::operators}} \doxysubsubsection{\texorpdfstring{Density}{Density}} {\footnotesize\ttfamily \label{namespaceserif_1_1operators_a8ae759fc718c8ccc0804325b10a03b84} typedef \mbox{\hyperlink{structserif_1_1discretization_1_1blocks_1_1density_1_1mass}{discretization\+::blocks\+::density\+::mass}} \mbox{\hyperlink{namespaceserif_1_1operators_a8ae759fc718c8ccc0804325b10a03b84}{serif\+::operators\+::\+Density}} = \mbox{\hyperlink{structserif_1_1discretization_1_1forms_1_1_operand}{discretization\+::forms\+::\+Operand}}$<$\mbox{\hyperlink{structserif_1_1discretization_1_1blocks_1_1density_1_1mass}{discretization\+::blocks\+::density\+::mass}}$>$} \Hypertarget{namespaceserif_1_1operators_a84d7e8ff528dc3361769cc6f08e6cd49}\index{serif::operators@{serif::operators}!DensityValue@{DensityValue}} \index{DensityValue@{DensityValue}!serif::operators@{serif::operators}} \doxysubsubsection{\texorpdfstring{DensityValue}{DensityValue}} {\footnotesize\ttfamily \label{namespaceserif_1_1operators_a84d7e8ff528dc3361769cc6f08e6cd49} using \mbox{\hyperlink{namespaceserif_1_1operators_a84d7e8ff528dc3361769cc6f08e6cd49}{serif\+::operators\+::\+Density\+Value}} = \mbox{\hyperlink{structserif_1_1discretization_1_1forms_1_1_operand}{discretization\+::forms\+::\+Operand}}$<$\mbox{\hyperlink{namespaceserif_1_1operators_a8ae759fc718c8ccc0804325b10a03b84}{Density}}$>$} \Hypertarget{namespaceserif_1_1operators_add26988897c07a3b976f748f621d779c}\index{serif::operators@{serif::operators}!Displacement@{Displacement}} \index{Displacement@{Displacement}!serif::operators@{serif::operators}} \doxysubsubsection{\texorpdfstring{Displacement}{Displacement}} {\footnotesize\ttfamily \label{namespaceserif_1_1operators_add26988897c07a3b976f748f621d779c} using \mbox{\hyperlink{namespaceserif_1_1operators_add26988897c07a3b976f748f621d779c}{serif\+::operators\+::\+Displacement}} = \mbox{\hyperlink{structserif_1_1discretization_1_1blocks_1_1displacement_1_1vector}{discretization\+::blocks\+::displacement\+::vector}}} \Hypertarget{namespaceserif_1_1operators_ac94445fb44b80328f7fd8470ded86ab7}\index{serif::operators@{serif::operators}!DisplacementDivergence@{DisplacementDivergence}} \index{DisplacementDivergence@{DisplacementDivergence}!serif::operators@{serif::operators}} \doxysubsubsection{\texorpdfstring{DisplacementDivergence}{DisplacementDivergence}} {\footnotesize\ttfamily \label{namespaceserif_1_1operators_ac94445fb44b80328f7fd8470ded86ab7} using \mbox{\hyperlink{namespaceserif_1_1operators_ac94445fb44b80328f7fd8470ded86ab7}{serif\+::operators\+::\+Displacement\+Divergence}} = \mbox{\hyperlink{structserif_1_1discretization_1_1forms_1_1_operand}{discretization\+::forms\+::\+Operand}}$<$\mbox{\hyperlink{structserif_1_1discretization_1_1blocks_1_1displacement_1_1vector}{discretization\+::blocks\+::displacement\+::vector}}, \mbox{\hyperlink{structserif_1_1discretization_1_1forms_1_1_operation_1_1_divergence}{discretization\+::forms\+::\+Operation\+::\+Divergence}}$>$} \Hypertarget{namespaceserif_1_1operators_abb7387ce5fc8f06e38655f2abf71a05f}\index{serif::operators@{serif::operators}!DisplacementGradient@{DisplacementGradient}} \index{DisplacementGradient@{DisplacementGradient}!serif::operators@{serif::operators}} \doxysubsubsection{\texorpdfstring{DisplacementGradient}{DisplacementGradient}} {\footnotesize\ttfamily \label{namespaceserif_1_1operators_abb7387ce5fc8f06e38655f2abf71a05f} using \mbox{\hyperlink{namespaceserif_1_1operators_abb7387ce5fc8f06e38655f2abf71a05f}{serif\+::operators\+::\+Displacement\+Gradient}} = \mbox{\hyperlink{structserif_1_1discretization_1_1forms_1_1_operand}{discretization\+::forms\+::\+Operand}}$<$\mbox{\hyperlink{namespaceserif_1_1operators_add26988897c07a3b976f748f621d779c}{Displacement}}, \mbox{\hyperlink{structserif_1_1discretization_1_1forms_1_1_operation_1_1_gradient}{discretization\+::forms\+::\+Operation\+::\+Gradient}}$>$} \Hypertarget{namespaceserif_1_1operators_a028bb2043970f34c7f9c4f8f35d2c996}\index{serif::operators@{serif::operators}!DisplacementValue@{DisplacementValue}} \index{DisplacementValue@{DisplacementValue}!serif::operators@{serif::operators}} \doxysubsubsection{\texorpdfstring{DisplacementValue}{DisplacementValue}} {\footnotesize\ttfamily \label{namespaceserif_1_1operators_a028bb2043970f34c7f9c4f8f35d2c996} using \mbox{\hyperlink{namespaceserif_1_1operators_a028bb2043970f34c7f9c4f8f35d2c996}{serif\+::operators\+::\+Displacement\+Value}} = \mbox{\hyperlink{structserif_1_1discretization_1_1forms_1_1_operand}{discretization\+::forms\+::\+Operand}}$<$\mbox{\hyperlink{namespaceserif_1_1operators_add26988897c07a3b976f748f621d779c}{Displacement}}$>$} \Hypertarget{namespaceserif_1_1operators_ac485dbca2b971ac59f3adda704b5485d}\index{serif::operators@{serif::operators}!FirstOrder@{FirstOrder}} \index{FirstOrder@{FirstOrder}!serif::operators@{serif::operators}} \doxysubsubsection{\texorpdfstring{FirstOrder}{FirstOrder}} {\footnotesize\ttfamily \label{namespaceserif_1_1operators_ac485dbca2b971ac59f3adda704b5485d} using \mbox{\hyperlink{namespaceserif_1_1operators_ac485dbca2b971ac59f3adda704b5485d}{serif\+::operators\+::\+First\+Order}} = \mbox{\hyperlink{structserif_1_1equations_1_1_operand_values}{equations\+::\+Operand\+Values}}$<$\mbox{\hyperlink{structserif_1_1utils_1_1types_1_1_type_list}{utils\+::types\+::\+Type\+List}}$<$\mbox{\hyperlink{namespaceserif_1_1operators_a8ae759fc718c8ccc0804325b10a03b84}{Density}}, \mbox{\hyperlink{namespaceserif_1_1operators_a9a98677dd6eb911f3daa5a4173248c93}{Potential}}, \mbox{\hyperlink{namespaceserif_1_1operators_af3400cbc42927b9162d39b370273de24}{Constant}}$>$$>$} \Hypertarget{namespaceserif_1_1operators_a9cdb279f42fddc853430bddd6fdefad5}\index{serif::operators@{serif::operators}!Mass@{Mass}} \index{Mass@{Mass}!serif::operators@{serif::operators}} \doxysubsubsection{\texorpdfstring{Mass}{Mass}} {\footnotesize\ttfamily \label{namespaceserif_1_1operators_a9cdb279f42fddc853430bddd6fdefad5} using \mbox{\hyperlink{namespaceserif_1_1operators_a9cdb279f42fddc853430bddd6fdefad5}{serif\+::operators\+::\+Mass}} = \mbox{\hyperlink{classserif_1_1equations_1_1_mass_normalization}{equations\+::\+Mass\+Normalization}}} \Hypertarget{namespaceserif_1_1operators_a849daf9bd0310ba0f030c323ebdcc7af}\index{serif::operators@{serif::operators}!MassPlan@{MassPlan}} \index{MassPlan@{MassPlan}!serif::operators@{serif::operators}} \doxysubsubsection{\texorpdfstring{MassPlan}{MassPlan}} {\footnotesize\ttfamily \label{namespaceserif_1_1operators_a849daf9bd0310ba0f030c323ebdcc7af} using \mbox{\hyperlink{namespaceserif_1_1operators_a849daf9bd0310ba0f030c323ebdcc7af}{serif\+::operators\+::\+Mass\+Plan}} = \mbox{\hyperlink{structserif_1_1operators_1_1_equation_plan}{Equation\+Plan}}$<$\mbox{\hyperlink{classserif_1_1equations_1_1_mass_normalization}{equations\+::\+Mass\+Normalization}}$>$} \Hypertarget{namespaceserif_1_1operators_ad169e8c66ddc12c3addd4e551faf1ec2}\index{serif::operators@{serif::operators}!MassPoint@{MassPoint}} \index{MassPoint@{MassPoint}!serif::operators@{serif::operators}} \doxysubsubsection{\texorpdfstring{MassPoint}{MassPoint}} {\footnotesize\ttfamily \label{namespaceserif_1_1operators_ad169e8c66ddc12c3addd4e551faf1ec2} using \mbox{\hyperlink{namespaceserif_1_1operators_ad169e8c66ddc12c3addd4e551faf1ec2}{serif\+::operators\+::\+Mass\+Point}} = \mbox{\hyperlink{structserif_1_1equations_1_1_equation_point}{equations\+::\+Equation\+Point}}$<$\mbox{\hyperlink{classserif_1_1equations_1_1_mass_normalization_a0cd9c730f6d84b05ee03bac2ff0433bb}{equations\+::\+Mass\+Normalization\+::\+Operands}}$>$} \Hypertarget{namespaceserif_1_1operators_a5046a40a9062182dcebcff858e5d744e}\index{serif::operators@{serif::operators}!MixedSamples@{MixedSamples}} \index{MixedSamples@{MixedSamples}!serif::operators@{serif::operators}} \doxysubsubsection{\texorpdfstring{MixedSamples}{MixedSamples}} {\footnotesize\ttfamily \label{namespaceserif_1_1operators_a5046a40a9062182dcebcff858e5d744e} using \mbox{\hyperlink{namespaceserif_1_1operators_a5046a40a9062182dcebcff858e5d744e}{serif\+::operators\+::\+Mixed\+Samples}} = \mbox{\hyperlink{structserif_1_1utils_1_1types_1_1_type_list}{utils\+::types\+::\+Type\+List}}$<$\mbox{\hyperlink{namespaceserif_1_1operators_a028bb2043970f34c7f9c4f8f35d2c996}{Displacement\+Value}}, \mbox{\hyperlink{namespaceserif_1_1operators_ac94445fb44b80328f7fd8470ded86ab7}{Displacement\+Divergence}}, \mbox{\hyperlink{namespaceserif_1_1operators_a84d7e8ff528dc3361769cc6f08e6cd49}{Density\+Value}}$>$} \Hypertarget{namespaceserif_1_1operators_a5195fc6ea0fc4a5f67abb26fa627f9ed}\index{serif::operators@{serif::operators}!Momentum@{Momentum}} \index{Momentum@{Momentum}!serif::operators@{serif::operators}} \doxysubsubsection{\texorpdfstring{Momentum}{Momentum}} {\footnotesize\ttfamily \label{namespaceserif_1_1operators_a5195fc6ea0fc4a5f67abb26fa627f9ed} using \mbox{\hyperlink{namespaceserif_1_1operators_a5195fc6ea0fc4a5f67abb26fa627f9ed}{serif\+::operators\+::\+Momentum}} = \mbox{\hyperlink{classserif_1_1equations_1_1_angular_momentum_constraint}{equations\+::\+Angular\+Momentum\+Constraint}}} \Hypertarget{namespaceserif_1_1operators_abb1de6ae853e4f3c0ed9604304a375c4}\index{serif::operators@{serif::operators}!Omega@{Omega}} \index{Omega@{Omega}!serif::operators@{serif::operators}} \doxysubsubsection{\texorpdfstring{Omega}{Omega}} {\footnotesize\ttfamily \label{namespaceserif_1_1operators_abb1de6ae853e4f3c0ed9604304a375c4} using \mbox{\hyperlink{namespaceserif_1_1operators_abb1de6ae853e4f3c0ed9604304a375c4}{serif\+::operators\+::\+Omega}} = \mbox{\hyperlink{structserif_1_1discretization_1_1blocks_1_1rotation_1_1angular__velocity}{discretization\+::blocks\+::rotation\+::angular\+\_\+velocity}}} \Hypertarget{namespaceserif_1_1operators_a1bdabba6c03d61d4f242b8262b045fb0}\index{serif::operators@{serif::operators}!PermutedOrder@{PermutedOrder}} \index{PermutedOrder@{PermutedOrder}!serif::operators@{serif::operators}} \doxysubsubsection{\texorpdfstring{PermutedOrder}{PermutedOrder}} {\footnotesize\ttfamily \label{namespaceserif_1_1operators_a1bdabba6c03d61d4f242b8262b045fb0} using \mbox{\hyperlink{namespaceserif_1_1operators_a1bdabba6c03d61d4f242b8262b045fb0}{serif\+::operators\+::\+Permuted\+Order}} = \mbox{\hyperlink{structserif_1_1equations_1_1_operand_values}{equations\+::\+Operand\+Values}}$<$\mbox{\hyperlink{structserif_1_1utils_1_1types_1_1_type_list}{utils\+::types\+::\+Type\+List}}$<$\mbox{\hyperlink{namespaceserif_1_1operators_af3400cbc42927b9162d39b370273de24}{Constant}}, \mbox{\hyperlink{namespaceserif_1_1operators_a8ae759fc718c8ccc0804325b10a03b84}{Density}}, \mbox{\hyperlink{namespaceserif_1_1operators_a9a98677dd6eb911f3daa5a4173248c93}{Potential}}$>$$>$} \Hypertarget{namespaceserif_1_1operators_a9a98677dd6eb911f3daa5a4173248c93}\index{serif::operators@{serif::operators}!Potential@{Potential}} \index{Potential@{Potential}!serif::operators@{serif::operators}} \doxysubsubsection{\texorpdfstring{Potential}{Potential}} {\footnotesize\ttfamily \label{namespaceserif_1_1operators_a9a98677dd6eb911f3daa5a4173248c93} typedef \mbox{\hyperlink{structserif_1_1discretization_1_1blocks_1_1gravity_1_1potential}{discretization\+::blocks\+::gravity\+::potential}} \mbox{\hyperlink{namespaceserif_1_1operators_a9a98677dd6eb911f3daa5a4173248c93}{serif\+::operators\+::\+Potential}} = \mbox{\hyperlink{structserif_1_1discretization_1_1forms_1_1_operand}{discretization\+::forms\+::\+Operand}}$<$\mbox{\hyperlink{structserif_1_1discretization_1_1blocks_1_1gravity_1_1potential}{discretization\+::blocks\+::gravity\+::potential}}$>$} \Hypertarget{namespaceserif_1_1operators_a9bc4fde2b5ab0098aa4600b125c5321d}\index{serif::operators@{serif::operators}!PotentialContributions@{PotentialContributions}} \index{PotentialContributions@{PotentialContributions}!serif::operators@{serif::operators}} \doxysubsubsection{\texorpdfstring{PotentialContributions}{PotentialContributions}} {\footnotesize\ttfamily \label{namespaceserif_1_1operators_a9bc4fde2b5ab0098aa4600b125c5321d} using \mbox{\hyperlink{namespaceserif_1_1operators_a9bc4fde2b5ab0098aa4600b125c5321d}{serif\+::operators\+::\+Potential\+Contributions}} = \mbox{\hyperlink{namespaceserif_1_1equations_a3d8c1500d535f29fe360f0ab31ac55e3}{equations\+::\+Contributions\+Of}}$<$\mbox{\hyperlink{classserif_1_1equations_1_1_primal_poisson_balance}{equations\+::\+Primal\+Poisson\+Balance}}$>$} \Hypertarget{namespaceserif_1_1operators_ac1416d49e5c3ea87f5a2cdbbf7f6ac1c}\index{serif::operators@{serif::operators}!PotentialGradient@{PotentialGradient}} \index{PotentialGradient@{PotentialGradient}!serif::operators@{serif::operators}} \doxysubsubsection{\texorpdfstring{PotentialGradient}{PotentialGradient}} {\footnotesize\ttfamily \label{namespaceserif_1_1operators_ac1416d49e5c3ea87f5a2cdbbf7f6ac1c} using \mbox{\hyperlink{namespaceserif_1_1operators_ac1416d49e5c3ea87f5a2cdbbf7f6ac1c}{serif\+::operators\+::\+Potential\+Gradient}} = \mbox{\hyperlink{structserif_1_1discretization_1_1forms_1_1_operand}{discretization\+::forms\+::\+Operand}}$<$\mbox{\hyperlink{namespaceserif_1_1operators_a9a98677dd6eb911f3daa5a4173248c93}{Potential}}, \mbox{\hyperlink{structserif_1_1discretization_1_1forms_1_1_operation_1_1_gradient}{discretization\+::forms\+::\+Operation\+::\+Gradient}}$>$} \Hypertarget{namespaceserif_1_1operators_a4fddf5444606d22742b6fc341880c05a}\index{serif::operators@{serif::operators}!PotentialValue@{PotentialValue}} \index{PotentialValue@{PotentialValue}!serif::operators@{serif::operators}} \doxysubsubsection{\texorpdfstring{PotentialValue}{PotentialValue}} {\footnotesize\ttfamily \label{namespaceserif_1_1operators_a4fddf5444606d22742b6fc341880c05a} using \mbox{\hyperlink{namespaceserif_1_1operators_a4fddf5444606d22742b6fc341880c05a}{serif\+::operators\+::\+Potential\+Value}} = \mbox{\hyperlink{structserif_1_1discretization_1_1forms_1_1_operand}{discretization\+::forms\+::\+Operand}}$<$\mbox{\hyperlink{namespaceserif_1_1operators_a9a98677dd6eb911f3daa5a4173248c93}{Potential}}$>$} \Hypertarget{namespaceserif_1_1operators_a1099b4a7d85fb1e9dd496c451f450a6a}\index{serif::operators@{serif::operators}!Schema@{Schema}} \index{Schema@{Schema}!serif::operators@{serif::operators}} \doxysubsubsection{\texorpdfstring{Schema}{Schema}} {\footnotesize\ttfamily \label{namespaceserif_1_1operators_a1099b4a7d85fb1e9dd496c451f450a6a} using \mbox{\hyperlink{namespaceserif_1_1operators_a1099b4a7d85fb1e9dd496c451f450a6a}{serif\+::operators\+::\+Schema}} = \mbox{\hyperlink{namespaceserif_1_1discretization_1_1domain_1_1schema_abc22bc3b4f40b417480a061162a3dea2}{discretization\+::domain\+::schema\+::\+Core\+Envelope\+Vacuum\+Domain\+Schema}}} \Hypertarget{namespaceserif_1_1operators_a67047e978d34c67942594c8633d8dc98}\index{serif::operators@{serif::operators}!VectorTensor@{VectorTensor}} \index{VectorTensor@{VectorTensor}!serif::operators@{serif::operators}} \doxysubsubsection{\texorpdfstring{VectorTensor}{VectorTensor}} {\footnotesize\ttfamily \label{namespaceserif_1_1operators_a67047e978d34c67942594c8633d8dc98} using \mbox{\hyperlink{namespaceserif_1_1operators_a67047e978d34c67942594c8633d8dc98}{serif\+::operators\+::\+Vector\+Tensor}} = \mbox{\hyperlink{namespaceserif_1_1discretization_1_1forms_aecbaccd35c1209031d60ea7348d6a452}{discretization\+::forms\+::\+Matrix\+Value}}} \doxysubsection{Function Documentation} \Hypertarget{namespaceserif_1_1operators_aedf63524bbbd357b307f77282c9bdb99}\index{serif::operators@{serif::operators}!bind\_contributions@{bind\_contributions}} \index{bind\_contributions@{bind\_contributions}!serif::operators@{serif::operators}} \doxysubsubsection{\texorpdfstring{bind\_contributions()}{bind\_contributions()}} {\footnotesize\ttfamily \label{namespaceserif_1_1operators_aedf63524bbbd357b307f77282c9bdb99} template$<$equations\+::\+Equation EquationT$>$ \\ auto serif\+::operators\+::bind\+\_\+contributions (\begin{DoxyParamCaption}\item[{std\+::shared\+\_\+ptr$<$ const EquationT $>$}]{equation}{}\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [nodiscard]}} Give each retained leaf a compile-\/time tuple position for independently cached contribution results. \Hypertarget{namespaceserif_1_1operators_a6fc6c3a2aa8dea2f9aa7758024e43a93}\index{serif::operators@{serif::operators}!for\_each\_contribution@{for\_each\_contribution}} \index{for\_each\_contribution@{for\_each\_contribution}!serif::operators@{serif::operators}} \doxysubsubsection{\texorpdfstring{for\_each\_contribution()}{for\_each\_contribution()}} {\footnotesize\ttfamily \label{namespaceserif_1_1operators_a6fc6c3a2aa8dea2f9aa7758024e43a93} template$<$equations\+::\+Equation EquationT, typename FunctionT$>$ \\ void serif\+::operators\+::for\+\_\+each\+\_\+contribution (\begin{DoxyParamCaption}\item[{const EquationT \&}]{equation}{, }\item[{FunctionT \&\&}]{function}{}\end{DoxyParamCaption})} Visit leaves in declaration order, multiplying constant coefficients along each path. The callback receives (leaf equation, unique contribution index, coefficient). \Hypertarget{namespaceserif_1_1operators_ab2fbcb6d59eb098097b55cb1cb04b3d9}\index{serif::operators@{serif::operators}!linearized\_block@{linearized\_block}} \index{linearized\_block@{linearized\_block}!serif::operators@{serif::operators}} \doxysubsubsection{\texorpdfstring{linearized\_block()}{linearized\_block()}} {\footnotesize\ttfamily \label{namespaceserif_1_1operators_ab2fbcb6d59eb098097b55cb1cb04b3d9} \mbox{\hyperlink{classserif_1_1operators_1_1backend_1_1mfem_1_1_linearized_block}{Linearized\+Block}} serif\+::operators\+::backend\+::mfem\+::linearized\+\_\+block (\begin{DoxyParamCaption}\item[{std\+::shared\+\_\+ptr$<$ const \+::mfem\+::\+Sparse\+Matrix $>$}]{matrix}{}\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [nodiscard]}} Retain an already assembled physical block without copying its matrix. \Hypertarget{namespaceserif_1_1operators_a923b82a601cec82833d0802e71b8108e}\index{serif::operators@{serif::operators}!LinearizedSystemView@{LinearizedSystemView}} \index{LinearizedSystemView@{LinearizedSystemView}!serif::operators@{serif::operators}} \doxysubsubsection{\texorpdfstring{LinearizedSystemView()}{LinearizedSystemView()}} {\footnotesize\ttfamily \label{namespaceserif_1_1operators_a923b82a601cec82833d0802e71b8108e} template$<$discretization\+::blocks\+::\+System\+Layout\+Type Layout, utils\+::dependencies\+::\+Is\+Dependency\+Context Blocks$>$ \\ serif\+::operators\+::\+Linearized\+System\+View (\begin{DoxyParamCaption}\item[{const Layout \&}]{}{, }\item[{const Blocks \&}]{}{}\end{DoxyParamCaption}) -\/$>$ Linearized\+System\+View$<$ Layout, Blocks $>$} Infer canonical owner types while retaining the explicit borrowing lifetime checks.