\doxysection{src/compile\+\_\+time\+\_\+checks/serif/solver/preconditioner/layout.cpp File Reference} \hypertarget{layout_8cpp}{}\label{layout_8cpp}\index{src/compile\_time\_checks/serif/solver/preconditioner/layout.cpp@{src/compile\_time\_checks/serif/solver/preconditioner/layout.cpp}} {\ttfamily \#include $<$concepts$>$}\newline {\ttfamily \#include $<$array$>$}\newline {\ttfamily \#include $<$span$>$}\newline {\ttfamily \#include $<$type\+\_\+traits$>$}\newline {\ttfamily \#include $<$utility$>$}\newline {\ttfamily \#include $<$vector$>$}\newline {\ttfamily \#include "{}serif/discretization/blocks/fields.\+hpp"{}}\newline {\ttfamily \#include "{}serif/discretization/blocks/vector\+\_\+view.\+hpp"{}}\newline {\ttfamily \#include "{}serif/operators/linearized\+\_\+system\+\_\+view.\+hpp"{}}\newline {\ttfamily \#include "{}serif/solver/normalization/layout.\+hpp"{}}\newline {\ttfamily \#include "{}serif/solver/normalization/keys.\+hpp"{}}\newline {\ttfamily \#include "{}serif/backend/mfem/solver/preconditioner/computations/ordering.\+hpp"{}}\newline {\ttfamily \#include "{}serif/solver/preconditioner/default\+\_\+preconditioners.\+hpp"{}}\newline {\ttfamily \#include "{}serif/utils/dependencies/dependencies.\+hpp"{}}\newline Include dependency graph for layout.\+cpp\+: \nopagebreak \begin{figure}[H] \begin{center} \leavevmode \includegraphics[width=350pt]{layout_8cpp__incl} \end{center} \end{figure} \doxysubsubsection*{Classes} \begin{DoxyCompactItemize} \item struct \mbox{\hyperlink{structserif_1_1solver_1_1preconditioner_1_1checks_1_1_extra_field}{serif\+::solver\+::preconditioner\+::checks\+::\+Extra\+Field}} \item struct \mbox{\hyperlink{structserif_1_1solver_1_1preconditioner_1_1checks_1_1_extra_value}{serif\+::solver\+::preconditioner\+::checks\+::\+Extra\+Value}} \item struct \mbox{\hyperlink{structserif_1_1solver_1_1preconditioner_1_1checks_1_1_extra_row}{serif\+::solver\+::preconditioner\+::checks\+::\+Extra\+Row}} \end{DoxyCompactItemize} \doxysubsubsection*{Namespaces} \begin{DoxyCompactItemize} \item namespace \mbox{\hyperlink{namespaceserif}{serif}} \item namespace \mbox{\hyperlink{namespaceserif_1_1solver}{serif\+::solver}} \item namespace \mbox{\hyperlink{namespaceserif_1_1solver_1_1preconditioner}{serif\+::solver\+::preconditioner}} \item namespace \mbox{\hyperlink{namespaceserif_1_1solver_1_1preconditioner_1_1checks}{serif\+::solver\+::preconditioner\+::checks}} \end{DoxyCompactItemize} \doxysubsubsection*{Concepts} \begin{DoxyCompactItemize} \item concept \mbox{\hyperlink{conceptserif_1_1solver_1_1preconditioner_1_1checks_1_1_reads_coordinate}{serif\+::solver\+::preconditioner\+::checks\+::\+Reads\+Coordinate}} \begin{DoxyCompactList}\small\item\em Detection of an absent coordinate must fail in constraints instead of instantiating a function body. \end{DoxyCompactList}\item concept \mbox{\hyperlink{conceptserif_1_1solver_1_1preconditioner_1_1checks_1_1_reads_block}{serif\+::solver\+::preconditioner\+::checks\+::\+Reads\+Block}} \begin{DoxyCompactList}\small\item\em Only declared equation/unknown pairs are exposed by a borrowed linearization. \end{DoxyCompactList}\item concept \mbox{\hyperlink{conceptserif_1_1solver_1_1preconditioner_1_1checks_1_1_has_offset}{serif\+::solver\+::preconditioner\+::checks\+::\+Has\+Offset}} \begin{DoxyCompactList}\small\item\em Malformed coordinate requests remain detection-\/safe on the owning metadata as well. \end{DoxyCompactList}\item concept \mbox{\hyperlink{conceptserif_1_1solver_1_1preconditioner_1_1checks_1_1_has_primal_preconditioner}{serif\+::solver\+::preconditioner\+::checks\+::\+Has\+Primal\+Preconditioner}} \begin{DoxyCompactList}\small\item\em Keep unsupported coordinate sets out of the primal recipe before its body is instantiated. \end{DoxyCompactList}\end{DoxyCompactItemize} \doxysubsubsection*{Typedefs} \begin{DoxyCompactItemize} \item using \mbox{\hyperlink{namespaceserif_1_1solver_1_1preconditioner_1_1checks_ae448d9c52432cf59dd1795980f1829bc}{serif\+::solver\+::preconditioner\+::checks\+::\+Kind}} = blocks\+::\+Represented\+Value\+Kind \item using \mbox{\hyperlink{namespaceserif_1_1solver_1_1preconditioner_1_1checks_a078a73213b02df0577774643995c87bf}{serif\+::solver\+::preconditioner\+::checks\+::\+Mass}} = blocks\+::barotropic\+\_\+constant\+::mass\+\_\+normalization \item using \mbox{\hyperlink{namespaceserif_1_1solver_1_1preconditioner_1_1checks_a73960fb3033e1ba0ad73dede87e96633}{serif\+::solver\+::preconditioner\+::checks\+::\+Reaction}} = blocks\+::frame\+\_\+acceleration\+::component$<$0$>$ \item using \mbox{\hyperlink{namespaceserif_1_1solver_1_1preconditioner_1_1checks_a318cb3e924cf595bb09ff5bd8cfe7fdb}{serif\+::solver\+::preconditioner\+::checks\+::\+Density}} = blocks\+::density\+::mass \item using \mbox{\hyperlink{namespaceserif_1_1solver_1_1preconditioner_1_1checks_aa3fc96739043ce941add04cc5d6d67fb}{serif\+::solver\+::preconditioner\+::checks\+::\+Keys}} = dependencies\+::\+Key\+List$<$\mbox{\hyperlink{namespaceserif_1_1solver_1_1preconditioner_1_1checks_a078a73213b02df0577774643995c87bf}{Mass}}, \mbox{\hyperlink{namespaceserif_1_1solver_1_1preconditioner_1_1checks_a73960fb3033e1ba0ad73dede87e96633}{Reaction}}$>$ \item using \mbox{\hyperlink{namespaceserif_1_1solver_1_1preconditioner_1_1checks_afb0e84193f3983f6a397af3c0813eb46}{serif\+::solver\+::preconditioner\+::checks\+::\+Layout}} = blocks\+::\+System\+Layout$<$\mbox{\hyperlink{namespaceserif_1_1solver_1_1preconditioner_1_1checks_aa3fc96739043ce941add04cc5d6d67fb}{Keys}}, \mbox{\hyperlink{namespaceserif_1_1solver_1_1preconditioner_1_1checks_aa3fc96739043ce941add04cc5d6d67fb}{Keys}}$>$ \item using \mbox{\hyperlink{namespaceserif_1_1solver_1_1preconditioner_1_1checks_a7abff0667b7366d788c4672ebe9b9027}{serif\+::solver\+::preconditioner\+::checks\+::\+State}} = blocks\+::\+State\+View$<$\mbox{\hyperlink{namespaceserif_1_1solver_1_1preconditioner_1_1checks_afb0e84193f3983f6a397af3c0813eb46}{Layout}}$>$ \item using \mbox{\hyperlink{namespaceserif_1_1solver_1_1preconditioner_1_1checks_a3cd5e0d76dcea813a4fe80b4eb8d9b91}{serif\+::solver\+::preconditioner\+::checks\+::\+Constant\+State}} = blocks\+::\+State\+View$<$\mbox{\hyperlink{namespaceserif_1_1solver_1_1preconditioner_1_1checks_afb0e84193f3983f6a397af3c0813eb46}{Layout}}, const double$>$ \item using \mbox{\hyperlink{namespaceserif_1_1solver_1_1preconditioner_1_1checks_a0176b5eefc9e8f15ba17e40c9016798e}{serif\+::solver\+::preconditioner\+::checks\+::\+Physical}} = \mbox{\hyperlink{structserif_1_1operators_1_1_physical_block}{operators\+::\+Physical\+Block}}$<$\mbox{\hyperlink{namespaceserif_1_1solver_1_1preconditioner_1_1checks_a078a73213b02df0577774643995c87bf}{Mass}}, \mbox{\hyperlink{namespaceserif_1_1solver_1_1preconditioner_1_1checks_a73960fb3033e1ba0ad73dede87e96633}{Reaction}}$>$ \item using \mbox{\hyperlink{namespaceserif_1_1solver_1_1preconditioner_1_1checks_ad330485dd536c6eb6c00f5c04fcde58c}{serif\+::solver\+::preconditioner\+::checks\+::\+Sources}} = decltype(dependencies\+::make\+\_\+dependency\+\_\+context(dependencies\+::own$<$\mbox{\hyperlink{namespaceserif_1_1solver_1_1preconditioner_1_1checks_a0176b5eefc9e8f15ba17e40c9016798e}{Physical}}$>$(1))) \item using \mbox{\hyperlink{namespaceserif_1_1solver_1_1preconditioner_1_1checks_a4596c30faf0855227abbabd465a0f883}{serif\+::solver\+::preconditioner\+::checks\+::\+System}} = \mbox{\hyperlink{classserif_1_1operators_1_1_linearized_system_view}{operators\+::\+Linearized\+System\+View}}$<$\mbox{\hyperlink{namespaceserif_1_1solver_1_1preconditioner_1_1checks_afb0e84193f3983f6a397af3c0813eb46}{Layout}}, \mbox{\hyperlink{namespaceserif_1_1solver_1_1preconditioner_1_1checks_ad330485dd536c6eb6c00f5c04fcde58c}{Sources}}$>$ \item using \mbox{\hyperlink{namespaceserif_1_1solver_1_1preconditioner_1_1checks_a0441f130ee842cf62915bab9ef87a299}{serif\+::solver\+::preconditioner\+::checks\+::\+Reordered\+Layout}} = blocks\+::\+System\+Layout$<$\mbox{\hyperlink{namespaceserif_1_1solver_1_1preconditioner_1_1checks_aa3fc96739043ce941add04cc5d6d67fb}{Keys}}, dependencies\+::\+Key\+List$<$\mbox{\hyperlink{namespaceserif_1_1solver_1_1preconditioner_1_1checks_a73960fb3033e1ba0ad73dede87e96633}{Reaction}}, \mbox{\hyperlink{namespaceserif_1_1solver_1_1preconditioner_1_1checks_a078a73213b02df0577774643995c87bf}{Mass}}$>$$>$ \item using \mbox{\hyperlink{namespaceserif_1_1solver_1_1preconditioner_1_1checks_af109bec3cd4a26fe8b234f9c538df4ef}{serif\+::solver\+::preconditioner\+::checks\+::\+Potential}} = blocks\+::gravity\+::potential \item using \mbox{\hyperlink{namespaceserif_1_1solver_1_1preconditioner_1_1checks_abc0b1c6b549265466b1b52f6b71718bd}{serif\+::solver\+::preconditioner\+::checks\+::\+Rotation}} = blocks\+::rotation\+::angular\+\_\+velocity \item using \mbox{\hyperlink{namespaceserif_1_1solver_1_1preconditioner_1_1checks_a320deada98c3f56528915540045f0ca2}{serif\+::solver\+::preconditioner\+::checks\+::\+Shape}} = blocks\+::surface\+\_\+deformation\+::coefficients \item using \mbox{\hyperlink{namespaceserif_1_1solver_1_1preconditioner_1_1checks_a0122c390aa87e00c661cc7e360f94578}{serif\+::solver\+::preconditioner\+::checks\+::\+Shape\+Row}} = blocks\+::surface\+\_\+deformation\+::shape\+\_\+equilibrium \item using \mbox{\hyperlink{namespaceserif_1_1solver_1_1preconditioner_1_1checks_a41d58fd871f120699f3d0a8d36bf0c9a}{serif\+::solver\+::preconditioner\+::checks\+::\+Primal\+Fields}} = dependencies\+::\+Key\+List$<$\mbox{\hyperlink{namespaceserif_1_1solver_1_1preconditioner_1_1checks_a318cb3e924cf595bb09ff5bd8cfe7fdb}{Density}}, \mbox{\hyperlink{namespaceserif_1_1solver_1_1preconditioner_1_1checks_af109bec3cd4a26fe8b234f9c538df4ef}{Potential}}$>$ \item using \mbox{\hyperlink{namespaceserif_1_1solver_1_1preconditioner_1_1checks_a6fc13921980fa8ab9664beee17e7a9c8}{serif\+::solver\+::preconditioner\+::checks\+::\+Primal\+Fixed\+Layout}} = blocks\+::\+System\+Layout$<$\mbox{\hyperlink{namespaceserif_1_1solver_1_1preconditioner_1_1checks_a41d58fd871f120699f3d0a8d36bf0c9a}{Primal\+Fields}}, \mbox{\hyperlink{namespaceserif_1_1solver_1_1preconditioner_1_1checks_a41d58fd871f120699f3d0a8d36bf0c9a}{Primal\+Fields}}$>$ \item using \mbox{\hyperlink{namespaceserif_1_1solver_1_1preconditioner_1_1checks_a9b252a067432f9ccd1c0a3565c75a94e}{serif\+::solver\+::preconditioner\+::checks\+::\+Primal\+Moving\+Layout}} \item using \mbox{\hyperlink{namespaceserif_1_1solver_1_1preconditioner_1_1checks_a75c9b522ea43c52ef0427b328ac03caf}{serif\+::solver\+::preconditioner\+::checks\+::\+Primal\+Recipe}} = decltype(\mbox{\hyperlink{namespaceserif_1_1solver_1_1preconditioner_aa5c6d8ad540ecaca25de3555918566f3}{make\+\_\+primal\+\_\+preconditioner}}(std\+::declval$<$const \mbox{\hyperlink{namespaceserif_1_1solver_1_1preconditioner_1_1checks_a9b252a067432f9ccd1c0a3565c75a94e}{Primal\+Moving\+Layout}}\&$>$())) \item using \mbox{\hyperlink{namespaceserif_1_1solver_1_1preconditioner_1_1checks_a4ad89e1c6094b31366bbe5c12da9ef5a}{serif\+::solver\+::preconditioner\+::checks\+::\+Primal\+Extra\+Layout}} \item using \mbox{\hyperlink{namespaceserif_1_1solver_1_1preconditioner_1_1checks_adc27368f10f2bf26c1be45125e6e9140}{serif\+::solver\+::preconditioner\+::checks\+::\+Primal\+Extra\+Recipe}} = decltype(\mbox{\hyperlink{namespaceserif_1_1solver_1_1preconditioner_aa5c6d8ad540ecaca25de3555918566f3}{make\+\_\+primal\+\_\+preconditioner}}(std\+::declval$<$const \mbox{\hyperlink{namespaceserif_1_1solver_1_1preconditioner_1_1checks_a4ad89e1c6094b31366bbe5c12da9ef5a}{Primal\+Extra\+Layout}}\&$>$())) \end{DoxyCompactItemize} \doxysubsubsection*{Variables} \begin{DoxyCompactItemize} \item constexpr \mbox{\hyperlink{namespaceserif_1_1solver_1_1preconditioner_1_1checks_a0441f130ee842cf62915bab9ef87a299}{Reordered\+Layout}} \mbox{\hyperlink{namespaceserif_1_1solver_1_1preconditioner_1_1checks_a5aa91ea04af2f811d8939d28f645d1f3}{serif\+::solver\+::preconditioner\+::checks\+::resolved\+\_\+layout}} \end{DoxyCompactItemize}