\doxysection{src/include/serif/backend/mfem/solver/preconditioner/computations/ordering.hpp File Reference} \hypertarget{ordering_8hpp}{}\label{ordering_8hpp}\index{src/include/serif/backend/mfem/solver/preconditioner/computations/ordering.hpp@{src/include/serif/backend/mfem/solver/preconditioner/computations/ordering.hpp}} {\ttfamily \#include $<$limits$>$}\newline {\ttfamily \#include $<$vector$>$}\newline {\ttfamily \#include "{}serif/backend/mfem/operators/linearized\+\_\+block.\+hpp"{}}\newline {\ttfamily \#include "{}serif/operators/linearized\+\_\+system\+\_\+view.\+hpp"{}}\newline {\ttfamily \#include "{}serif/discretization/blocks/system\+\_\+layout.\+hpp"{}}\newline {\ttfamily \#include "{}serif/discretization/blocks/keys.\+hpp"{}}\newline {\ttfamily \#include "{}serif/backend/mfem/solver/preconditioner/border.\+hpp"{}}\newline {\ttfamily \#include "{}serif/utils/dependencies/computation.\+hpp"{}}\newline Include dependency graph for ordering.\+hpp\+: \nopagebreak \begin{figure}[H] \begin{center} \leavevmode \includegraphics[width=350pt]{ordering_8hpp__incl} \end{center} \end{figure} This graph shows which files directly or indirectly include this file\+: \nopagebreak \begin{figure}[H] \begin{center} \leavevmode \includegraphics[height=550pt]{ordering_8hpp__dep__incl} \end{center} \end{figure} \doxysubsubsection*{Classes} \begin{DoxyCompactItemize} \item struct \mbox{\hyperlink{structserif_1_1solver_1_1preconditioner_1_1keys_1_1_preconditioner}{serif\+::solver\+::preconditioner\+::keys\+::\+Preconditioner}} \item struct \mbox{\hyperlink{structserif_1_1solver_1_1preconditioner_1_1computations_1_1detail_1_1_physical_sources_3_01utils1a1f8ff6c1c7a9455aff8e4b497b2009}{serif\+::solver\+::preconditioner\+::computations\+::detail\+::\+Physical\+Sources$<$ utils\+::dependencies\+::\+Key\+List$<$ Keys... $>$ $>$}} \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_1keys}{serif\+::solver\+::preconditioner\+::keys}} \item namespace \mbox{\hyperlink{namespaceserif_1_1solver_1_1preconditioner_1_1computations}{serif\+::solver\+::preconditioner\+::computations}} \item namespace \mbox{\hyperlink{namespaceserif_1_1solver_1_1preconditioner_1_1computations_1_1detail}{serif\+::solver\+::preconditioner\+::computations\+::detail}} \end{DoxyCompactItemize} \doxysubsubsection*{Typedefs} \begin{DoxyCompactItemize} \item using \mbox{\hyperlink{namespaceserif_1_1solver_1_1preconditioner_1_1keys_a51c4360b9a88a40c2171089db75a643a}{serif\+::solver\+::preconditioner\+::keys\+::\+Layout}} = \mbox{\hyperlink{structserif_1_1discretization_1_1blocks_1_1keys_1_1_layout}{discretization\+::blocks\+::keys\+::\+Layout}} \begin{DoxyCompactList}\small\item\em Preconditioning consumes the same coordinate layout as every other numerical service. \end{DoxyCompactList}\end{DoxyCompactItemize} \doxysubsubsection*{Functions} \begin{DoxyCompactItemize} \item {\footnotesize template$<$\mbox{\hyperlink{namespaceserif_1_1discretization_1_1blocks_aca74ff25d2168fcdec080e03ebc023ea}{discretization\+::blocks\+::\+Represented\+Value\+Kind}} Kind, typename Layout, typename... Coordinates$>$ }\\std\+::size\+\_\+t \mbox{\hyperlink{namespaceserif_1_1solver_1_1preconditioner_1_1computations_a0b5442f7837137f112bc8a5d80956b78}{serif\+::solver\+::preconditioner\+::computations\+::selected\+\_\+size}} (const Layout \&layout, \mbox{\hyperlink{structserif_1_1utils_1_1dependencies_1_1_key_list}{utils\+::dependencies\+::\+Key\+List}}$<$ Coordinates... $>$) \begin{DoxyCompactList}\small\item\em Count the declared coordinates of a selected physical block. \end{DoxyCompactList}\item {\footnotesize template$<$typename Key, typename Layout$>$ }\\std\+::expected$<$ void, \mbox{\hyperlink{structserif_1_1solver_1_1preconditioner_1_1_failure}{Failure}} $>$ \mbox{\hyperlink{namespaceserif_1_1solver_1_1preconditioner_1_1computations_af2c8198f4a2f0aaabe4dbcfa97110e1c}{serif\+::solver\+::preconditioner\+::computations\+::validate\+\_\+physical\+\_\+layout}} (const Layout \&layout, const \mbox{\hyperlink{classserif_1_1operators_1_1backend_1_1mfem_1_1_linearized_block}{operators\+::backend\+::mfem\+::\+Linearized\+Block}} \&block) \begin{DoxyCompactList}\small\item\em Detect incorrect per-\/field sizes even when the total packed dimensions happen to agree. \end{DoxyCompactList}\item {\footnotesize template$<$\mbox{\hyperlink{namespaceserif_1_1discretization_1_1blocks_aca74ff25d2168fcdec080e03ebc023ea}{discretization\+::blocks\+::\+Represented\+Value\+Kind}} Kind, typename Layout, typename... Coordinates$>$ }\\std\+::expected$<$ std\+::vector$<$ int $>$, \mbox{\hyperlink{structserif_1_1solver_1_1preconditioner_1_1_failure}{Failure}} $>$ \mbox{\hyperlink{namespaceserif_1_1solver_1_1preconditioner_1_1computations_a2baa22db93917a92523fc5c5d323db78}{serif\+::solver\+::preconditioner\+::computations\+::ordered\+\_\+indices}} (const Layout \&layout, \mbox{\hyperlink{structserif_1_1utils_1_1dependencies_1_1_key_list}{utils\+::dependencies\+::\+Key\+List}}$<$ Coordinates... $>$) \begin{DoxyCompactList}\small\item\em Map each root coefficient to the recipe\textquotesingle{}s explicit subsystem ordering. \end{DoxyCompactList}\item {\footnotesize template$<$typename Recipe, typename Layout, typename... Physical\+Keys$>$ }\\auto \mbox{\hyperlink{namespaceserif_1_1solver_1_1preconditioner_1_1computations_a93a14d176124c789b6d75a9a3a4e4d5c}{serif\+::solver\+::preconditioner\+::computations\+::ordering}} (\mbox{\hyperlink{structserif_1_1utils_1_1dependencies_1_1_key_list}{utils\+::dependencies\+::\+Key\+List}}$<$ Physical\+Keys... $>$) \begin{DoxyCompactList}\small\item\em Bind one inverse to independently ordered state and residual vectors through the common layout. \end{DoxyCompactList}\end{DoxyCompactItemize} \doxysubsubsection*{Variables} \begin{DoxyCompactItemize} \item {\footnotesize template$<$typename Key$>$ }\\constexpr bool \mbox{\hyperlink{namespaceserif_1_1solver_1_1preconditioner_1_1computations_1_1detail_afcae4dbd9e6d48ee20ff826aa3f63d6d}{serif\+::solver\+::preconditioner\+::computations\+::detail\+::is\+\_\+physical\+\_\+block}} = false \item {\footnotesize template$<$typename Rows, typename Values$>$ }\\constexpr bool \mbox{\hyperlink{namespaceserif_1_1solver_1_1preconditioner_1_1computations_1_1detail_a9c1fdb229c4eec4c2e766153a2d123d0}{serif\+::solver\+::preconditioner\+::computations\+::detail\+::is\+\_\+physical\+\_\+block$<$ operators\+::\+Physical\+Block$<$ Rows, Values $>$ $>$}} = true \end{DoxyCompactItemize}