Note for now much of the docs is LLM written. This was done to save time and focus on code development. The docs have been LOOSLEY reviewed. However, the code itself has been either fully written by hand or fully reviewed. Therefore, the docs should at the moment be seen as a loose resource rather than authoratiative (and this is on top of the general ability for docs to drift)
67 lines
11 KiB
TeX
67 lines
11 KiB
TeX
\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}
|