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)
64 lines
11 KiB
TeX
64 lines
11 KiB
TeX
\doxysection{src/include/serif/operators/backend/mfem/nodal\+\_\+computations.hpp File Reference}
|
|
\hypertarget{nodal__computations_8hpp}{}\label{nodal__computations_8hpp}\index{src/include/serif/operators/backend/mfem/nodal\_computations.hpp@{src/include/serif/operators/backend/mfem/nodal\_computations.hpp}}
|
|
{\ttfamily \#include $<$expected$>$}\newline
|
|
{\ttfamily \#include $<$utility$>$}\newline
|
|
{\ttfamily \#include $<$tuple$>$}\newline
|
|
{\ttfamily \#include "{}serif/operators/backend/mfem/nodal\+\_\+evaluation.\+hpp"{}}\newline
|
|
{\ttfamily \#include "{}serif/operators/backend/mfem/nodal\+\_\+inputs.\+hpp"{}}\newline
|
|
{\ttfamily \#include "{}serif/operators/backend/mfem/preparation.\+hpp"{}}\newline
|
|
{\ttfamily \#include "{}serif/utils/dependencies/dependencies.\+hpp"{}}\newline
|
|
Include dependency graph for nodal\+\_\+computations.\+hpp\+:\nopagebreak
|
|
\begin{figure}[H]
|
|
\begin{center}
|
|
\leavevmode
|
|
\includegraphics[width=350pt]{nodal__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]{nodal__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*{Functions}
|
|
\begin{DoxyCompactItemize}
|
|
\item
|
|
{\footnotesize template$<$typename Scope, typename Input\+Key, Nodal\+Value\+Equation EquationT, discretization\+::domain\+::schema\+::\+Is\+Schema SchemaT$>$ }\\auto \mbox{\hyperlink{namespaceserif_1_1operators_1_1backend_1_1mfem_afd39ae1e2676abf5f9bca84a5b5f8a11}{serif\+::operators\+::backend\+::mfem\+::make\+\_\+nodal\+\_\+evaluation\+\_\+computation}} (EquationT equation, \mbox{\hyperlink{structserif_1_1operators_1_1backend_1_1mfem_1_1_nodal_discretization}{Nodal\+Discretization}}$<$ EquationT, SchemaT $>$ discretization)
|
|
\begin{DoxyCompactList}\small\item\em Declare the point or boundary calculation; its fixed equation and selection move with the graph. \end{DoxyCompactList}\item
|
|
{\footnotesize template$<$typename Scope = void, Nodal\+Value\+Equation EquationT, discretization\+::domain\+::schema\+::\+Is\+Schema SchemaT$>$ }\\auto \mbox{\hyperlink{namespaceserif_1_1operators_1_1backend_1_1mfem_ae4111f5b0c924973ed1a14f0447457a0}{serif\+::operators\+::backend\+::mfem\+::make\+\_\+nodal\+\_\+equation\+\_\+computation}} (EquationT equation, \mbox{\hyperlink{structserif_1_1operators_1_1backend_1_1mfem_1_1_nodal_discretization}{Nodal\+Discretization}}$<$ EquationT, SchemaT $>$ discretization)
|
|
\begin{DoxyCompactList}\small\item\em Declare a standalone nodal evaluation from already selected coefficients. \end{DoxyCompactList}\item
|
|
{\footnotesize template$<$typename Scope = void, Nodal\+Value\+Equation EquationT, discretization\+::domain\+::schema\+::\+Is\+Schema SchemaT$>$ }\\auto \mbox{\hyperlink{namespaceserif_1_1operators_1_1backend_1_1mfem_a3224205fc803428f6d320bf757c2ace7}{serif\+::operators\+::backend\+::mfem\+::make\+\_\+nodal\+\_\+sampling\+\_\+computation}} (\mbox{\hyperlink{structserif_1_1operators_1_1backend_1_1mfem_1_1_nodal_discretization}{Nodal\+Discretization}}$<$ EquationT, SchemaT $>$ discretization)
|
|
\begin{DoxyCompactList}\small\item\em Select nodal coefficients from the same physical field source used by volume equations. \end{DoxyCompactList}\item
|
|
{\footnotesize template$<$typename Scope = void, Nodal\+Value\+Equation EquationT, discretization\+::domain\+::schema\+::\+Is\+Schema SchemaT$>$ }\\auto \mbox{\hyperlink{namespaceserif_1_1operators_1_1backend_1_1mfem_aa64fa93b19b53b4cc2a6c2e3f49138f9}{serif\+::operators\+::backend\+::mfem\+::make\+\_\+nodal\+\_\+equation\+\_\+computations}} (EquationT equation, \mbox{\hyperlink{structserif_1_1operators_1_1backend_1_1mfem_1_1_nodal_discretization}{Nodal\+Discretization}}$<$ EquationT, SchemaT $>$ discretization)
|
|
\begin{DoxyCompactList}\small\item\em Declare sampling and point physics as ordinary stages of a larger dependency graph. \end{DoxyCompactList}\item
|
|
{\footnotesize template$<$typename Scope = void, Affine\+Point\+Equation EquationT, discretization\+::domain\+::schema\+::\+Is\+Schema SchemaT$>$ }\\auto \mbox{\hyperlink{namespaceserif_1_1operators_1_1backend_1_1mfem_a6c07266dbf644f15d01e1da900eba177}{serif\+::operators\+::backend\+::mfem\+::make\+\_\+point\+\_\+border\+\_\+computation}} (const \mbox{\hyperlink{structserif_1_1operators_1_1backend_1_1mfem_1_1_point_border_discretization}{Point\+Border\+Discretization}}$<$ EquationT, SchemaT $>$ \&discretization)
|
|
\begin{DoxyCompactList}\small\item\em Join the accepted point equation to its independently tracked global scalar. \end{DoxyCompactList}\item
|
|
{\footnotesize template$<$typename Scope = void, Affine\+Point\+Equation EquationT, discretization\+::domain\+::schema\+::\+Is\+Schema SchemaT$>$ }\\auto \mbox{\hyperlink{namespaceserif_1_1operators_1_1backend_1_1mfem_a89d15d1f07d6e3b57e9b2798a2bac258}{serif\+::operators\+::backend\+::mfem\+::make\+\_\+point\+\_\+border\+\_\+computations}} (EquationT equation, const \mbox{\hyperlink{structserif_1_1operators_1_1backend_1_1mfem_1_1_point_border_discretization}{Point\+Border\+Discretization}}$<$ EquationT, SchemaT $>$ \&discretization)
|
|
\begin{DoxyCompactList}\small\item\em Declare a complete affine point border without constructing an independent cache. \end{DoxyCompactList}\item
|
|
{\footnotesize template$<$typename Scope = void, Nodal\+Value\+Equation EquationT, discretization\+::domain\+::schema\+::\+Is\+Schema SchemaT, typename CoefficientsT$>$ }\\auto \mbox{\hyperlink{namespaceserif_1_1operators_1_1backend_1_1mfem_a47ed34944e6244b457221f9f4c7671a5}{serif\+::operators\+::backend\+::mfem\+::make\+\_\+nodal\+\_\+equation\+\_\+cache}} (EquationT equation, const \mbox{\hyperlink{structserif_1_1operators_1_1backend_1_1mfem_1_1_nodal_discretization}{Nodal\+Discretization}}$<$ EquationT, SchemaT $>$ \&discretization, const CoefficientsT \&term\+\_\+coefficients)
|
|
\begin{DoxyCompactList}\small\item\em Construct an ordinary dependency cache without evaluating the nodal equation. \end{DoxyCompactList}\item
|
|
{\footnotesize template$<$typename Scope = void, Affine\+Point\+Equation EquationT, discretization\+::domain\+::schema\+::\+Is\+Schema SchemaT, typename CoefficientsT$>$ }\\auto \mbox{\hyperlink{namespaceserif_1_1operators_1_1backend_1_1mfem_afdd5a164fef5493e3f62ee9579a534a0}{serif\+::operators\+::backend\+::mfem\+::make\+\_\+point\+\_\+border\+\_\+cache}} (EquationT equation, const \mbox{\hyperlink{structserif_1_1operators_1_1backend_1_1mfem_1_1_point_border_discretization}{Point\+Border\+Discretization}}$<$ EquationT, SchemaT $>$ \&discretization, const CoefficientsT \&term\+\_\+coefficients)
|
|
\begin{DoxyCompactList}\small\item\em Keep the border scalar and point linearization in one dependency graph and one accepted result. \end{DoxyCompactList}\item
|
|
{\footnotesize template$<$typename Scope = void, typename CacheT, Nodal\+Value\+Equation EquationT, discretization\+::domain\+::schema\+::\+Is\+Schema SchemaT, 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_ae965bdc890f9398f12e5041d55a0a71a}{serif\+::operators\+::backend\+::mfem\+::try\+\_\+prepare\+\_\+nodal}} (CacheT \&cache, const \mbox{\hyperlink{structserif_1_1operators_1_1backend_1_1mfem_1_1_nodal_discretization}{Nodal\+Discretization}}$<$ EquationT, SchemaT $>$ \&discretization, const CoefficientsT \&term\+\_\+coefficients, const \mbox{\hyperlink{namespaceserif_1_1utils_1_1dependencies_a84cfff3388a09373636c15a3817a0782}{Preparation\+Mode}} mode=Preparation\+Mode\+::reuse\+\_\+unchanged)
|
|
\begin{DoxyCompactList}\small\item\em Validate and gather the selected coefficients, then let the dependency cache decide what needs evaluation. \end{DoxyCompactList}\item
|
|
{\footnotesize template$<$typename Scope = void, typename CacheT, Affine\+Point\+Equation EquationT, discretization\+::domain\+::schema\+::\+Is\+Schema SchemaT, 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_aa8db1f5aec0e64537404eb0767b5621f}{serif\+::operators\+::backend\+::mfem\+::try\+\_\+prepare\+\_\+point\+\_\+border}} (CacheT \&cache, const \mbox{\hyperlink{structserif_1_1operators_1_1backend_1_1mfem_1_1_point_border_discretization}{Point\+Border\+Discretization}}$<$ EquationT, SchemaT $>$ \&discretization, const CoefficientsT \&term\+\_\+coefficients, const \mbox{\hyperlink{namespaceserif_1_1utils_1_1dependencies_a84cfff3388a09373636c15a3817a0782}{Preparation\+Mode}} mode=Preparation\+Mode\+::reuse\+\_\+unchanged)
|
|
\begin{DoxyCompactList}\small\item\em Validate both point and scalar sources before publishing the complete border calculation. \end{DoxyCompactList}\item
|
|
{\footnotesize template$<$typename Scope = void, typename CacheT, typename DiscretizationT, typename CoefficientsT$>$ }\\void \mbox{\hyperlink{namespaceserif_1_1operators_1_1backend_1_1mfem_ac7906fe37d6304fbb95402ac8dfed1e4}{serif\+::operators\+::backend\+::mfem\+::prepare\+\_\+nodal}} (CacheT \&cache, const DiscretizationT \&discretization, const CoefficientsT \&term\+\_\+coefficients, const \mbox{\hyperlink{namespaceserif_1_1utils_1_1dependencies_a84cfff3388a09373636c15a3817a0782}{Preparation\+Mode}} mode=Preparation\+Mode\+::reuse\+\_\+unchanged)
|
|
\begin{DoxyCompactList}\small\item\em Translate a numerical rejection at the caller-\/facing throwing boundary. \end{DoxyCompactList}\item
|
|
{\footnotesize template$<$typename Scope = void, typename CacheT, typename DiscretizationT, typename CoefficientsT$>$ }\\void \mbox{\hyperlink{namespaceserif_1_1operators_1_1backend_1_1mfem_a53c63d4c31ea0ba8e7958cd1c76679d5}{serif\+::operators\+::backend\+::mfem\+::prepare\+\_\+point\+\_\+border}} (CacheT \&cache, const DiscretizationT \&discretization, const CoefficientsT \&term\+\_\+coefficients, const \mbox{\hyperlink{namespaceserif_1_1utils_1_1dependencies_a84cfff3388a09373636c15a3817a0782}{Preparation\+Mode}} mode=Preparation\+Mode\+::reuse\+\_\+unchanged)
|
|
\begin{DoxyCompactList}\small\item\em Translate an affine border\textquotesingle{}s numerical rejection at the caller-\/facing throwing boundary. \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_af49a0a0b65144d7a68caa590966cf766}{serif\+::operators\+::backend\+::mfem\+::nodal\+\_\+work\+\_\+report}} (const CacheT \&cache)
|
|
\begin{DoxyCompactList}\small\item\em Derive numerical work from the dependency report, without a second report lifecycle. \end{DoxyCompactList}\end{DoxyCompactItemize}
|