\doxysection{src/include/serif/solver/preconditioner/graph.hpp File Reference} \hypertarget{solver_2preconditioner_2graph_8hpp}{}\label{solver_2preconditioner_2graph_8hpp}\index{src/include/serif/solver/preconditioner/graph.hpp@{src/include/serif/solver/preconditioner/graph.hpp}} {\ttfamily \#include $<$tuple$>$}\newline {\ttfamily \#include $<$utility$>$}\newline {\ttfamily \#include "{}serif/solver/preconditioner/computations/inverse.\+hpp"{}}\newline {\ttfamily \#include "{}serif/solver/preconditioner/computations/coupling.\+hpp"{}}\newline {\ttfamily \#include "{}serif/solver/preconditioner/computations/gravity.\+hpp"{}}\newline {\ttfamily \#include "{}serif/solver/preconditioner/computations/surface.\+hpp"{}}\newline {\ttfamily \#include "{}serif/solver/preconditioner/computations/ordering.\+hpp"{}}\newline {\ttfamily \#include "{}serif/solver/preconditioner/computations/coarse.\+hpp"{}}\newline {\ttfamily \#include "{}serif/utils/dependencies/computation\+\_\+graph.\+hpp"{}}\newline Include dependency graph for graph.\+hpp\+:\nopagebreak \begin{figure}[H] \begin{center} \leavevmode \includegraphics[width=350pt]{solver_2preconditioner_2graph_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[width=242pt]{solver_2preconditioner_2graph_8hpp__dep__incl} \end{center} \end{figure} \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_1detail}{serif\+::solver\+::preconditioner\+::detail}} \end{DoxyCompactItemize} \doxysubsubsection*{Functions} \begin{DoxyCompactItemize} \item {\footnotesize template$<$typename Row, typename Field, typename Strategy$>$ }\\auto \mbox{\hyperlink{namespaceserif_1_1solver_1_1preconditioner_1_1detail_afd1cd39e19b9e25bbf58163ee4b85960}{serif\+::solver\+::preconditioner\+::detail\+::preconditioner\+\_\+computations}} (const \mbox{\hyperlink{structserif_1_1solver_1_1preconditioner_1_1_block_preconditioner}{Block\+Preconditioner}}$<$ Row, Field, Strategy $>$ \&choice) \begin{DoxyCompactList}\small\item\em Declare recursive recipe expansion before its composed overloads are defined. \end{DoxyCompactList}\item {\footnotesize template$<$typename First, typename Second, typename Policy$>$ }\\auto \mbox{\hyperlink{namespaceserif_1_1solver_1_1preconditioner_1_1detail_ac7c4daf68f557cd176057d5624451eed}{serif\+::solver\+::preconditioner\+::detail\+::preconditioner\+\_\+computations}} (const \mbox{\hyperlink{structserif_1_1solver_1_1preconditioner_1_1_coupled_preconditioner}{Coupled\+Preconditioner}}$<$ First, Second, Policy $>$ \&choice) \begin{DoxyCompactList}\small\item\em Declare the composed recipe overload for recursive graph expansion. \end{DoxyCompactList}\item {\footnotesize template$<$typename Fields, typename Constraints$>$ }\\auto \mbox{\hyperlink{namespaceserif_1_1solver_1_1preconditioner_1_1detail_a50435dbfb8699b61961b62671c410c58}{serif\+::solver\+::preconditioner\+::detail\+::preconditioner\+\_\+computations}} (const \mbox{\hyperlink{structserif_1_1solver_1_1preconditioner_1_1_bordered_preconditioner}{Bordered\+Preconditioner}}$<$ Fields, Constraints $>$ \&choice) \begin{DoxyCompactList}\small\item\em Declare the composed recipe overload for recursive graph expansion. \end{DoxyCompactList}\item {\footnotesize template$<$typename Gradient, typename Potential, typename Mass, typename Schur, typename Policy$>$ }\\auto \mbox{\hyperlink{namespaceserif_1_1solver_1_1preconditioner_1_1detail_ad04c200261ce3f1f8ac054856432c546}{serif\+::solver\+::preconditioner\+::detail\+::preconditioner\+\_\+computations}} (const \mbox{\hyperlink{structserif_1_1solver_1_1preconditioner_1_1_gravity_preconditioner}{Gravity\+Preconditioner}}$<$ Gradient, Potential, Mass, Schur, Policy $>$ \&choice) \begin{DoxyCompactList}\small\item\em Declare the composed recipe overload for recursive graph expansion. \end{DoxyCompactList}\item {\footnotesize template$<$typename Field, typename Row, typename Strategy, typename Backend$>$ }\\auto \mbox{\hyperlink{namespaceserif_1_1solver_1_1preconditioner_1_1detail_a7644345e7b3426268c63cb38592c9a1c}{serif\+::solver\+::preconditioner\+::detail\+::preconditioner\+\_\+computations}} (const \mbox{\hyperlink{structserif_1_1solver_1_1preconditioner_1_1_surface_preconditioner}{Surface\+Preconditioner}}$<$ Field, Row, Strategy, Backend $>$ \&choice) \begin{DoxyCompactList}\small\item\em Declare the composed recipe overload for recursive graph expansion. \end{DoxyCompactList}\item {\footnotesize template$<$typename Field, typename Row, typename Strategy, typename Backend$>$ }\\auto \mbox{\hyperlink{namespaceserif_1_1solver_1_1preconditioner_1_1detail_aaa7f8654ac4b0772a62ea78500e47b1b}{serif\+::solver\+::preconditioner\+::detail\+::surface\+\_\+inverse\+\_\+computations}} (const \mbox{\hyperlink{structserif_1_1solver_1_1preconditioner_1_1_surface_preconditioner}{Surface\+Preconditioner}}$<$ Field, Row, Strategy, Backend $>$ \&choice) \begin{DoxyCompactList}\small\item\em List the surface fit and inverse stages separately from their direct or material-\/relaxed physical target. \end{DoxyCompactList}\item {\footnotesize template$<$typename Recipe$>$ }\\auto \mbox{\hyperlink{namespaceserif_1_1solver_1_1preconditioner_a0e6d2e61115ded4891d57330e180266c}{serif\+::solver\+::preconditioner\+::make\+\_\+preconditioner\+\_\+computations}} (const Recipe \&choice) \begin{DoxyCompactList}\small\item\em Declare a recipe\textquotesingle{}s numerical stages for composition into one model dependency graph. \end{DoxyCompactList}\item {\footnotesize template$<$typename Recipe$>$ }\\auto \mbox{\hyperlink{namespaceserif_1_1solver_1_1preconditioner_ad39566dd213a1990a61035cbe088c788}{serif\+::solver\+::preconditioner\+::make\+\_\+preconditioner\+\_\+graph}} (const Recipe \&choice) \begin{DoxyCompactList}\small\item\em Construct the complete preconditioner graph in one place, without preparing any numerical data. \end{DoxyCompactList}\item {\footnotesize template$<$typename Recipe, discretization\+::blocks\+::\+System\+Layout\+Type Layout, utils\+::dependencies\+::\+Is\+Computation... Additional$>$ }\\auto \mbox{\hyperlink{namespaceserif_1_1solver_1_1preconditioner_ab8595f84696482d6a21db9641a9654db}{serif\+::solver\+::preconditioner\+::make\+\_\+preconditioner\+\_\+graph}} (const Recipe \&choice, const Layout \&, Additional... additional) \begin{DoxyCompactList}\small\item\em Order the inverse in system coordinates, optionally including explicit upstream computations such as reference surface assembly. \end{DoxyCompactList}\item {\footnotesize template$<$utils\+::dependencies\+::\+Is\+Key\+List Coarse\+Rows, utils\+::dependencies\+::\+Is\+Key\+List Coarse\+Values, typename Recipe, discretization\+::blocks\+::\+System\+Layout\+Type Layout$>$ }\\auto \mbox{\hyperlink{namespaceserif_1_1solver_1_1preconditioner_a90a53f77cf3f61f86737a2dbd9e01cca}{serif\+::solver\+::preconditioner\+::make\+\_\+coarse\+\_\+preconditioner\+\_\+graph}} (const Recipe \&unbordered, const Layout \&, const \mbox{\hyperlink{structserif_1_1solver_1_1preconditioner_1_1strategies_1_1inverse_1_1_dense_direct}{strategies\+::inverse\+::\+Dense\+Direct}} \&options=\{.minimum\+\_\+reciprocal\+\_\+condition=1.\+0e-\/14\}) \begin{DoxyCompactList}\small\item\em Assemble the optional coarse correction after ordering the original unbordered inverse into root coordinates. \end{DoxyCompactList}\end{DoxyCompactItemize} \doxysubsubsection*{Variables} \begin{DoxyCompactItemize} \item {\footnotesize template$<$typename Recipe$>$ }\\constexpr bool \mbox{\hyperlink{namespaceserif_1_1solver_1_1preconditioner_1_1detail_a3d8465b6fae02c6aa8d1ad0b5471f8b8}{serif\+::solver\+::preconditioner\+::detail\+::calibrated\+\_\+surface}} = false \item {\footnotesize template$<$typename Field, typename Row, typename Strategy, typename Backend$>$ }\\constexpr bool \mbox{\hyperlink{namespaceserif_1_1solver_1_1preconditioner_1_1detail_a279a603aebd8f324d7bfec8e48c32993}{serif\+::solver\+::preconditioner\+::detail\+::calibrated\+\_\+surface$<$ Surface\+Preconditioner$<$ Field, Row, Strategy, Backend $>$ $>$}} = !std\+::same\+\_\+as$<$Strategy, \mbox{\hyperlink{structserif_1_1solver_1_1preconditioner_1_1strategies_1_1surface_1_1_reference_surface_mass}{strategies\+::surface\+::\+Reference\+Surface\+Mass}}$>$ \end{DoxyCompactItemize}