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)
100 lines
16 KiB
TeX
100 lines
16 KiB
TeX
\doxysection{src/include/serif/operators/backend/mfem/nodal\+\_\+inputs.hpp File Reference}
|
|
\hypertarget{nodal__inputs_8hpp}{}\label{nodal__inputs_8hpp}\index{src/include/serif/operators/backend/mfem/nodal\_inputs.hpp@{src/include/serif/operators/backend/mfem/nodal\_inputs.hpp}}
|
|
{\ttfamily \#include $<$algorithm$>$}\newline
|
|
{\ttfamily \#include $<$memory$>$}\newline
|
|
{\ttfamily \#include $<$utility$>$}\newline
|
|
{\ttfamily \#include $<$type\+\_\+traits$>$}\newline
|
|
{\ttfamily \#include "{}serif/discretization/backend/mfem/coefficient\+\_\+tracking.\+hpp"{}}\newline
|
|
{\ttfamily \#include "{}serif/discretization/backend/mfem/point\+\_\+dofs.\+hpp"{}}\newline
|
|
{\ttfamily \#include "{}serif/operators/backend/mfem/nodal\+\_\+data.\+hpp"{}}\newline
|
|
{\ttfamily \#include "{}serif/operators/backend/mfem/term\+\_\+coefficients.\+hpp"{}}\newline
|
|
{\ttfamily \#include "{}serif/utils/dependencies/dependency\+\_\+context.\+hpp"{}}\newline
|
|
Include dependency graph for nodal\+\_\+inputs.\+hpp\+:\nopagebreak
|
|
\begin{figure}[H]
|
|
\begin{center}
|
|
\leavevmode
|
|
\includegraphics[width=350pt]{nodal__inputs_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__inputs_8hpp__dep__incl}
|
|
\end{center}
|
|
\end{figure}
|
|
\doxysubsubsection*{Classes}
|
|
\begin{DoxyCompactItemize}
|
|
\item
|
|
struct \mbox{\hyperlink{structserif_1_1operators_1_1backend_1_1mfem_1_1nodal__keys_1_1_scoped}{serif\+::operators\+::backend\+::mfem\+::nodal\+\_\+keys\+::\+Scoped$<$ Scope $>$}}
|
|
\begin{DoxyCompactList}\small\item\em Name the private point selection and accepted results of one equation. \end{DoxyCompactList}\item
|
|
struct \mbox{\hyperlink{structserif_1_1operators_1_1backend_1_1mfem_1_1nodal__keys_1_1_scoped_1_1_bindings}{serif\+::operators\+::backend\+::mfem\+::nodal\+\_\+keys\+::\+Scoped$<$ Scope $>$\+::\+Bindings}}
|
|
\item
|
|
struct \mbox{\hyperlink{structserif_1_1operators_1_1backend_1_1mfem_1_1nodal__keys_1_1_scoped_1_1_samples}{serif\+::operators\+::backend\+::mfem\+::nodal\+\_\+keys\+::\+Scoped$<$ Scope $>$\+::\+Samples}}
|
|
\item
|
|
struct \mbox{\hyperlink{structserif_1_1operators_1_1backend_1_1mfem_1_1nodal__keys_1_1_scoped_1_1_linearization}{serif\+::operators\+::backend\+::mfem\+::nodal\+\_\+keys\+::\+Scoped$<$ Scope $>$\+::\+Linearization}}
|
|
\item
|
|
struct \mbox{\hyperlink{structserif_1_1operators_1_1backend_1_1mfem_1_1nodal__keys_1_1_scoped_1_1_border_linearization}{serif\+::operators\+::backend\+::mfem\+::nodal\+\_\+keys\+::\+Scoped$<$ Scope $>$\+::\+Border\+Linearization}}
|
|
\item
|
|
struct \mbox{\hyperlink{structserif_1_1operators_1_1backend_1_1mfem_1_1_nodal_bindings}{serif\+::operators\+::backend\+::mfem\+::\+Nodal\+Bindings}}
|
|
\begin{DoxyCompactList}\small\item\em Reference-\/coordinate edits invalidate a point selection even when coefficients are unchanged. \end{DoxyCompactList}\item
|
|
struct \mbox{\hyperlink{structserif_1_1operators_1_1backend_1_1mfem_1_1_nodal_binding_tracking}{serif\+::operators\+::backend\+::mfem\+::\+Nodal\+Binding\+Tracking}}
|
|
\begin{DoxyCompactList}\small\item\em Validate the live selection before comparing equation-\/local metadata snapshots. \end{DoxyCompactList}\item
|
|
struct \mbox{\hyperlink{structserif_1_1operators_1_1backend_1_1mfem_1_1_selected_nodal_values}{serif\+::operators\+::backend\+::mfem\+::\+Selected\+Nodal\+Values}}
|
|
\begin{DoxyCompactList}\small\item\em Selected coefficients are owned by the context; the selection has a stable shared identity. \end{DoxyCompactList}\item
|
|
struct \mbox{\hyperlink{structserif_1_1operators_1_1backend_1_1mfem_1_1_nodal_value_tracking}{serif\+::operators\+::backend\+::mfem\+::\+Nodal\+Value\+Tracking}}
|
|
\begin{DoxyCompactList}\small\item\em Moving the context or copying equal coefficients does not invalidate the nodal calculation. \end{DoxyCompactList}\end{DoxyCompactItemize}
|
|
\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}}
|
|
\item
|
|
namespace \mbox{\hyperlink{namespaceserif_1_1operators_1_1backend_1_1mfem_1_1nodal__keys}{serif\+::operators\+::backend\+::mfem\+::nodal\+\_\+keys}}
|
|
\end{DoxyCompactItemize}
|
|
\doxysubsubsection*{Typedefs}
|
|
\begin{DoxyCompactItemize}
|
|
\item
|
|
using \mbox{\hyperlink{namespaceserif_1_1operators_1_1backend_1_1mfem_1_1nodal__keys_a46dc2a86521bb67725d40ba6b7f0a658}{serif\+::operators\+::backend\+::mfem\+::nodal\+\_\+keys\+::\+Linearization}} = \mbox{\hyperlink{structserif_1_1operators_1_1backend_1_1mfem_1_1nodal__keys_1_1_scoped}{Scoped}}$<$void$>$\+::\+Linearization
|
|
\item
|
|
using \mbox{\hyperlink{namespaceserif_1_1operators_1_1backend_1_1mfem_1_1nodal__keys_aabd462ed41b79dc1762db3f7d21f4418}{serif\+::operators\+::backend\+::mfem\+::nodal\+\_\+keys\+::\+Border\+Linearization}} = \mbox{\hyperlink{structserif_1_1operators_1_1backend_1_1mfem_1_1nodal__keys_1_1_scoped}{Scoped}}$<$void$>$\+::\+Border\+Linearization
|
|
\item
|
|
{\footnotesize template$<$typename Scope, typename Test$>$ }\\using \mbox{\hyperlink{namespaceserif_1_1operators_1_1backend_1_1mfem_1_1nodal__keys_a9ab6d4f6a629e92bbdb1b001448b139f}{serif\+::operators\+::backend\+::mfem\+::nodal\+\_\+keys\+::\+Selected\+Input}} = std\+::conditional\+\_\+t$<$std\+::is\+\_\+void\+\_\+v$<$Scope$>$, Test, typename \mbox{\hyperlink{structserif_1_1operators_1_1backend_1_1mfem_1_1nodal__keys_1_1_scoped}{Scoped}}$<$Scope$>$\+::\+Samples$>$
|
|
\begin{DoxyCompactList}\small\item\em Preserve the standalone source spelling while distinguishing scoped selections. \end{DoxyCompactList}\end{DoxyCompactItemize}
|
|
\doxysubsubsection*{Functions}
|
|
\begin{DoxyCompactItemize}
|
|
\item
|
|
{\footnotesize template$<$Nodal\+Value\+Equation EquationT, discretization\+::domain\+::schema\+::\+Is\+Schema SchemaT$>$ }\\void \mbox{\hyperlink{namespaceserif_1_1operators_1_1backend_1_1mfem_a669d3ec61994961e0528b57405de1a16}{serif\+::operators\+::backend\+::mfem\+::validate\+\_\+nodal\+\_\+selection}} (const \mbox{\hyperlink{structserif_1_1operators_1_1backend_1_1mfem_1_1_nodal_discretization}{Nodal\+Discretization}}$<$ EquationT, SchemaT $>$ \&discretization)
|
|
\begin{DoxyCompactList}\small\item\em Check stored selection invariants before dereferencing or gathering any coefficient. \end{DoxyCompactList}\item
|
|
{\footnotesize template$<$Nodal\+Value\+Equation EquationT, discretization\+::domain\+::schema\+::\+Is\+Schema SchemaT$>$ }\\void \mbox{\hyperlink{namespaceserif_1_1operators_1_1backend_1_1mfem_ac552aba528959c7ed1e9d31bfb06fa25}{serif\+::operators\+::backend\+::mfem\+::validate\+\_\+nodal\+\_\+discretization}} (const \mbox{\hyperlink{structserif_1_1operators_1_1backend_1_1mfem_1_1_nodal_discretization}{Nodal\+Discretization}}$<$ EquationT, SchemaT $>$ \&discretization)
|
|
\begin{DoxyCompactList}\small\item\em Admit only nodal spaces and the complete selection required by the equation\textquotesingle{}s point or boundary support. \end{DoxyCompactList}\item
|
|
{\footnotesize template$<$Nodal\+Value\+Equation EquationT, discretization\+::domain\+::schema\+::\+Is\+Schema SchemaT$>$ }\\auto \mbox{\hyperlink{namespaceserif_1_1operators_1_1backend_1_1mfem_adea883807d35d940e6f2bd5ab6b9c99c}{serif\+::operators\+::backend\+::mfem\+::make\+\_\+nodal\+\_\+discretization}} (const \mbox{\hyperlink{classserif_1_1discretization_1_1backend_1_1mfem_1_1_term_binding}{discretization\+::backend\+::mfem\+::\+Term\+Binding}}$<$ typename Equation\+T\+::\+Test, SchemaT $>$ \&residual\+\_\+binding, \mbox{\hyperlink{classserif_1_1discretization_1_1backend_1_1mfem_1_1_dof_selection}{discretization\+::backend\+::mfem\+::\+Dof\+Selection}} selected\+\_\+rows)
|
|
\begin{DoxyCompactList}\small\item\em Validate a caller-\/supplied selection immediately, before constructing its computation graph. \end{DoxyCompactList}\item
|
|
{\footnotesize template$<$Nodal\+Value\+Equation EquationT, discretization\+::domain\+::schema\+::\+Is\+Schema SchemaT$>$ \newline
|
|
requires requires \{ Equation\+T\+::reference\+\_\+position; \}}\\auto \mbox{\hyperlink{namespaceserif_1_1operators_1_1backend_1_1mfem_ab41f1c25631900b889f781efeefac8e7}{serif\+::operators\+::backend\+::mfem\+::make\+\_\+point\+\_\+discretization}} (const \mbox{\hyperlink{classserif_1_1discretization_1_1backend_1_1mfem_1_1_term_binding}{discretization\+::backend\+::mfem\+::\+Term\+Binding}}$<$ typename Equation\+T\+::\+Test, SchemaT $>$ \&residual\+\_\+binding)
|
|
\begin{DoxyCompactList}\small\item\em Select the equation\textquotesingle{}s physical point once; coordinate changes require a new selection. \end{DoxyCompactList}\item
|
|
{\footnotesize template$<$Nodal\+Value\+Equation EquationT, discretization\+::domain\+::schema\+::\+Is\+Schema SchemaT$>$ \newline
|
|
requires (discretization\+::domain\+::\+Is\+Boundary$<$\mbox{\hyperlink{namespaceserif_1_1equations_a7e2dbba73c1ee1b682885f1c178eb9f6}{equations\+::\+Support\+Of}}$<$EquationT$>$$>$ \&\& \mbox{\hyperlink{structserif_1_1discretization_1_1blocks_1_1_spatial_term_traits}{discretization\+::blocks\+::\+Spatial\+Term\+Traits}}$<$typename Equation\+T\+::\+Test$>$\+::rank == 0)}\\auto \mbox{\hyperlink{namespaceserif_1_1operators_1_1backend_1_1mfem_a321499eda172f3b3c793900252e207b4}{serif\+::operators\+::backend\+::mfem\+::make\+\_\+boundary\+\_\+discretization}} (const \mbox{\hyperlink{classserif_1_1discretization_1_1backend_1_1mfem_1_1_term_binding}{discretization\+::backend\+::mfem\+::\+Term\+Binding}}$<$ typename Equation\+T\+::\+Test, SchemaT $>$ \&residual\+\_\+binding)
|
|
\begin{DoxyCompactList}\small\item\em Select the scalar equation\textquotesingle{}s boundary through its declared schema support. \end{DoxyCompactList}\item
|
|
{\footnotesize template$<$Affine\+Point\+Equation EquationT, discretization\+::domain\+::schema\+::\+Is\+Schema SchemaT$>$ }\\auto \mbox{\hyperlink{namespaceserif_1_1operators_1_1backend_1_1mfem_a767159e39fe30fdb054fb8ac9fe9fdfc}{serif\+::operators\+::backend\+::mfem\+::make\+\_\+point\+\_\+border\+\_\+discretization}} (const \mbox{\hyperlink{classserif_1_1discretization_1_1backend_1_1mfem_1_1_term_binding}{discretization\+::backend\+::mfem\+::\+Term\+Binding}}$<$ typename Equation\+T\+::\+Test, SchemaT $>$ \&residual\+\_\+binding, const \mbox{\hyperlink{classserif_1_1discretization_1_1backend_1_1mfem_1_1_term_binding}{discretization\+::backend\+::mfem\+::\+Term\+Binding}}$<$ typename Equation\+T\+::\+Border, SchemaT $>$ \&border\+\_\+binding)
|
|
\begin{DoxyCompactList}\small\item\em Couple the selected scalar point to a global scalar on the same mesh. \end{DoxyCompactList}\item
|
|
{\footnotesize template$<$Nodal\+Value\+Equation EquationT, discretization\+::domain\+::schema\+::\+Is\+Schema SchemaT, typename CoefficientsT$>$ }\\\mbox{\hyperlink{structserif_1_1operators_1_1backend_1_1mfem_1_1_selected_nodal_values}{Selected\+Nodal\+Values}} \mbox{\hyperlink{namespaceserif_1_1operators_1_1backend_1_1mfem_a56134f69869313c846c87c23419f562d}{serif\+::operators\+::backend\+::mfem\+::select\+\_\+nodal\+\_\+values}} (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 Validate the whole supplied vector, but cache only coefficients selected by this equation. \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_a94257347c3463708ace957baf9925279}{serif\+::operators\+::backend\+::mfem\+::make\+\_\+nodal\+\_\+dependency\+\_\+context}} (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 The test term keys the selected coefficients needed by a 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_a3cb308e4e9c21524b9bf78c58a5c0d44}{serif\+::operators\+::backend\+::mfem\+::make\+\_\+point\+\_\+border\+\_\+dependency\+\_\+context}} (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 A border scalar is a separate tracked source; changing it does not reevaluate the point equation. \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_a0238992d8811ebc4fe34c0a2c26597de}{serif\+::operators\+::backend\+::mfem\+::make\+\_\+nodal\+\_\+binding\+\_\+input}} (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 Supply equation-\/local selection metadata and the common physical coefficient source. \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_a26db9cf012dac64476824051460d6d9d}{serif\+::operators\+::backend\+::mfem\+::make\+\_\+nodal\+\_\+inputs}} (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 Supply a standalone nodal equation with its metadata and physical source. \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_a5053b2428046cf29e3bed002caf26b14}{serif\+::operators\+::backend\+::mfem\+::make\+\_\+point\+\_\+border\+\_\+binding\+\_\+input}} (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 Validate a point border while sharing its field coefficients with other model equations. \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_ad9d5168fec5ab9f26a0b1947dc123e89}{serif\+::operators\+::backend\+::mfem\+::make\+\_\+point\+\_\+border\+\_\+inputs}} (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 Add the common physical sources consumed by a standalone affine point-\/border computation. \end{DoxyCompactList}\end{DoxyCompactItemize}
|