Files
MeanField_SERiF/docs/latex/volume__computations_8hpp.tex

67 lines
11 KiB
TeX
Raw Normal View History

\doxysection{src/include/serif/backend/mfem/operators/volume\+\_\+computations.hpp File Reference}
\hypertarget{volume__computations_8hpp}{}\label{volume__computations_8hpp}\index{src/include/serif/backend/mfem/operators/volume\_computations.hpp@{src/include/serif/backend/mfem/operators/volume\_computations.hpp}}
{\ttfamily \#include $<$expected$>$}\newline
{\ttfamily \#include $<$memory$>$}\newline
{\ttfamily \#include $<$tuple$>$}\newline
{\ttfamily \#include $<$utility$>$}\newline
{\ttfamily \#include "{}serif/backend/mfem/operators/volume\+\_\+stages.\+hpp"{}}\newline
{\ttfamily \#include "{}serif/backend/mfem/operators/volume\+\_\+inputs.\+hpp"{}}\newline
{\ttfamily \#include "{}serif/utils/dependencies/dependencies.\+hpp"{}}\newline
Include dependency graph for volume\+\_\+computations.\+hpp\+:
\nopagebreak
\begin{figure}[H]
\begin{center}
\leavevmode
\includegraphics[width=350pt]{volume__computations_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=350pt]{volume__computations_8hpp__dep__incl}
\end{center}
\end{figure}
\doxysubsubsection*{Namespaces}
\begin{DoxyCompactItemize}
\item
namespace \mbox{\hyperlink{namespaceserif}{serif}}
\item
namespace \mbox{\hyperlink{namespaceserif_1_1operators}{serif\+::operators}}
\item
namespace \mbox{\hyperlink{namespaceserif_1_1operators_1_1backend}{serif\+::operators\+::backend}}
\item
namespace \mbox{\hyperlink{namespaceserif_1_1operators_1_1backend_1_1mfem}{serif\+::operators\+::backend\+::mfem}}
\end{DoxyCompactItemize}
\doxysubsubsection*{Typedefs}
\begin{DoxyCompactItemize}
\item
{\footnotesize template$<$std\+::size\+\_\+t Contribution, typename OperandT, typename Scope = void$>$ }\\using \mbox{\hyperlink{namespaceserif_1_1operators_1_1backend_1_1mfem_a3ab2921f86a4c7968445336f3667e928}{serif\+::operators\+::backend\+::mfem\+::\+Volume\+Operand\+Result}}
\begin{DoxyCompactList}\small\item\em Values need a mapping node only when the operand\textquotesingle{}s physical representation depends on geometry. \end{DoxyCompactList}\item
{\footnotesize template$<$typename CacheT, typename Scope = void$>$ }\\using \mbox{\hyperlink{namespaceserif_1_1operators_1_1backend_1_1mfem_ab42320d34c9062b28227dfe8cef248df}{serif\+::operators\+::backend\+::mfem\+::\+Volume\+Equation\+Of}} = typename std\+::remove\+\_\+cvref\+\_\+t$<$decltype(std\+::declval$<$const CacheT\&$>$().template get$<$typename \mbox{\hyperlink{structserif_1_1operators_1_1backend_1_1mfem_1_1volume__keys_1_1_scoped}{volume\+\_\+keys\+::\+Scoped}}$<$Scope$>$\+::\+Linearization$>$())$>$\+::\+Equation
\begin{DoxyCompactList}\small\item\em Recover the equation type from a cache\textquotesingle{}s accepted result type, without accessing a result. \end{DoxyCompactList}\end{DoxyCompactItemize}
\doxysubsubsection*{Functions}
\begin{DoxyCompactItemize}
\item
{\footnotesize template$<$std\+::size\+\_\+t Contribution, typename OperandT, Volume\+Equation EquationT, typename SchemaT, typename Scope = void$>$ }\\auto \mbox{\hyperlink{namespaceserif_1_1operators_1_1backend_1_1mfem_a77af4190fb0cc72deff394bcc0cff123}{serif\+::operators\+::backend\+::mfem\+::make\+\_\+operand\+\_\+computations}} (const std\+::shared\+\_\+ptr$<$ \mbox{\hyperlink{structserif_1_1operators_1_1backend_1_1mfem_1_1_volume_scratch}{Volume\+Scratch}} $>$ \&scratch)
\begin{DoxyCompactList}\small\item\em Declare one coefficient contraction, followed by a physical mapping when the space requires it. \end{DoxyCompactList}\item
{\footnotesize template$<$std\+::size\+\_\+t Index, typename Scope, Volume\+Equation EquationT, typename SchemaT, typename ContributionT, typename... Operands$>$ }\\auto \mbox{\hyperlink{namespaceserif_1_1operators_1_1backend_1_1mfem_aae521e0754471b48f4d497fc0365ff9b}{serif\+::operators\+::backend\+::mfem\+::make\+\_\+contribution\+\_\+computations}} (const std\+::shared\+\_\+ptr$<$ const \mbox{\hyperlink{structserif_1_1operators_1_1backend_1_1mfem_1_1_volume_configuration}{Volume\+Configuration}}$<$ EquationT, SchemaT $>$ $>$ \&configuration, const std\+::shared\+\_\+ptr$<$ \mbox{\hyperlink{structserif_1_1operators_1_1backend_1_1mfem_1_1_volume_scratch}{Volume\+Scratch}} $>$ \&scratch, \mbox{\hyperlink{structserif_1_1operators_1_1_contribution_binding}{Contribution\+Binding}}$<$ ContributionT $>$ contribution, \mbox{\hyperlink{structserif_1_1utils_1_1types_1_1_type_list}{utils\+::types\+::\+Type\+List}}$<$ Operands... $>$)
\begin{DoxyCompactList}\small\item\em Build one contribution\textquotesingle{}s branch in the same order as its numerical description. \end{DoxyCompactList}\item
{\footnotesize template$<$typename Scope = void, Volume\+Equation EquationT, typename SchemaT, std\+::size\+\_\+t... Indices$>$ }\\auto \mbox{\hyperlink{namespaceserif_1_1operators_1_1backend_1_1mfem_a70d90fed173baf383ef397352c4d6c5c}{serif\+::operators\+::backend\+::mfem\+::connect\+\_\+volume\+\_\+contributions}} (const std\+::shared\+\_\+ptr$<$ const \mbox{\hyperlink{structserif_1_1operators_1_1backend_1_1mfem_1_1_volume_configuration}{Volume\+Configuration}}$<$ EquationT, SchemaT $>$ $>$ \&configuration, std\+::index\+\_\+sequence$<$ Indices... $>$)
\begin{DoxyCompactList}\small\item\em Expose contribution computations so deformation and equations can share one dependency graph. \end{DoxyCompactList}\item
{\footnotesize template$<$Volume\+Equation EquationT, std\+::size\+\_\+t Index, typename Scope = void, typename CacheT$>$ }\\void \mbox{\hyperlink{namespaceserif_1_1operators_1_1backend_1_1mfem_a45ae71910873ac5e984c7440d0adbba9}{serif\+::operators\+::backend\+::mfem\+::report\+\_\+contribution\+\_\+preparation}} (const CacheT \&cache, \mbox{\hyperlink{structserif_1_1operators_1_1backend_1_1mfem_1_1_numerical_work}{Numerical\+Work}} \&report)
\begin{DoxyCompactList}\small\item\em Convert the dependency engine\textquotesingle{}s node statuses to numerical work counts for one contribution. \end{DoxyCompactList}\item
{\footnotesize template$<$typename Scope = void, Volume\+Equation EquationT, typename SchemaT$>$ }\\auto \mbox{\hyperlink{namespaceserif_1_1operators_1_1backend_1_1mfem_a6ea978d5b2c099dafd286905ca130c27}{serif\+::operators\+::backend\+::mfem\+::make\+\_\+volume\+\_\+equation\+\_\+computations}} (std\+::shared\+\_\+ptr$<$ const EquationT $>$ equation, const \mbox{\hyperlink{structserif_1_1operators_1_1backend_1_1mfem_1_1_volume_discretization}{Volume\+Discretization}}$<$ typename Equation\+T\+::\+Test, SchemaT $>$ \&discretization, \mbox{\hyperlink{structserif_1_1operators_1_1backend_1_1mfem_1_1_volume_options}{Volume\+Options}} options=\{\})
\begin{DoxyCompactList}\small\item\em Declare reusable volume computations without selecting their source of displacement. \end{DoxyCompactList}\item
{\footnotesize template$<$typename Scope = void, Volume\+Equation EquationT, typename SchemaT$>$ }\\auto \mbox{\hyperlink{namespaceserif_1_1operators_1_1backend_1_1mfem_a052c1dfb95a09efd879a80acb8534996}{serif\+::operators\+::backend\+::mfem\+::make\+\_\+volume\+\_\+equation\+\_\+computations}} (EquationT equation, const \mbox{\hyperlink{structserif_1_1operators_1_1backend_1_1mfem_1_1_volume_discretization}{Volume\+Discretization}}$<$ typename Equation\+T\+::\+Test, SchemaT $>$ \&discretization, \mbox{\hyperlink{structserif_1_1operators_1_1backend_1_1mfem_1_1_volume_options}{Volume\+Options}} options=\{\})
\begin{DoxyCompactList}\small\item\em Own standalone equations while allowing complete models to share their existing immutable members. \end{DoxyCompactList}\item
{\footnotesize template$<$typename Scope = void, Volume\+Equation EquationT, typename SchemaT, typename InputsT$>$ }\\auto \mbox{\hyperlink{namespaceserif_1_1operators_1_1backend_1_1mfem_ae5282620930f0820d84b347f1d50065a}{serif\+::operators\+::backend\+::mfem\+::make\+\_\+volume\+\_\+equation\+\_\+cache}} (EquationT equation, const \mbox{\hyperlink{structserif_1_1operators_1_1backend_1_1mfem_1_1_volume_discretization}{Volume\+Discretization}}$<$ typename Equation\+T\+::\+Test, SchemaT $>$ \&discretization, const InputsT \&inputs, \mbox{\hyperlink{structserif_1_1operators_1_1backend_1_1mfem_1_1_volume_options}{Volume\+Options}} options=\{\})
\begin{DoxyCompactList}\small\item\em Construct a standalone cache from the same computations used by a coupled deformation graph. \end{DoxyCompactList}\item
{\footnotesize template$<$typename Scope = void, typename CacheT, typename DiscretizationT, typename CoefficientsT$>$ }\\std\+::expected$<$ void, \mbox{\hyperlink{structserif_1_1operators_1_1backend_1_1mfem_1_1_preparation_rejection}{Preparation\+Rejection}} $>$ \mbox{\hyperlink{namespaceserif_1_1operators_1_1backend_1_1mfem_a1cee0edddef4ad7821dee6a438ef7581}{serif\+::operators\+::backend\+::mfem\+::try\+\_\+prepare\+\_\+volume}} (CacheT \&cache, const DiscretizationT \&discretization, const CoefficientsT \&term\+\_\+coefficients, const \mbox{\hyperlink{namespaceserif_1_1operators_1_1backend_1_1mfem_a317d4e0bea2ef8780ac3747cfe62bf72}{\+::mfem\+::\+Vector}} \&displacement\+\_\+coefficients, \mbox{\hyperlink{namespaceserif_1_1utils_1_1dependencies_a84cfff3388a09373636c15a3817a0782}{Preparation\+Mode}} mode=Preparation\+Mode\+::reuse\+\_\+unchanged)
\begin{DoxyCompactList}\small\item\em Validate current inputs and atomically publish a complete volume linearization. \end{DoxyCompactList}\item
{\footnotesize template$<$typename Scope = void, typename CacheT, typename DiscretizationT, typename CoefficientsT$>$ }\\void \mbox{\hyperlink{namespaceserif_1_1operators_1_1backend_1_1mfem_aaf6f3bdae2f07026938d1dd3666e8bd9}{serif\+::operators\+::backend\+::mfem\+::prepare\+\_\+volume}} (CacheT \&cache, const DiscretizationT \&discretization, const CoefficientsT \&term\+\_\+coefficients, const \mbox{\hyperlink{namespaceserif_1_1operators_1_1backend_1_1mfem_a317d4e0bea2ef8780ac3747cfe62bf72}{\+::mfem\+::\+Vector}} \&displacement\+\_\+coefficients, \mbox{\hyperlink{namespaceserif_1_1utils_1_1dependencies_a84cfff3388a09373636c15a3817a0782}{Preparation\+Mode}} mode=Preparation\+Mode\+::reuse\+\_\+unchanged)
\begin{DoxyCompactList}\small\item\em Throw a caller-\/visible numerical error when a complete preparation cannot be accepted. \end{DoxyCompactList}\item
{\footnotesize template$<$typename Scope = void, typename CacheT$>$ }\\\mbox{\hyperlink{structserif_1_1operators_1_1backend_1_1mfem_1_1_numerical_work}{Numerical\+Work}} \mbox{\hyperlink{namespaceserif_1_1operators_1_1backend_1_1mfem_a0afea8af6370ad21d9b0779a24885e25}{serif\+::operators\+::backend\+::mfem\+::volume\+\_\+work\+\_\+report}} (const CacheT \&cache)
\begin{DoxyCompactList}\small\item\em Derive work counts from accepted node statuses; no second report lifecycle is stored. \end{DoxyCompactList}\end{DoxyCompactItemize}