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)
71 lines
12 KiB
TeX
71 lines
12 KiB
TeX
\doxysection{src/include/serif/backend/mfem/operators/volume\+\_\+application.hpp File Reference}
|
|
\hypertarget{volume__application_8hpp}{}\label{volume__application_8hpp}\index{src/include/serif/backend/mfem/operators/volume\_application.hpp@{src/include/serif/backend/mfem/operators/volume\_application.hpp}}
|
|
{\ttfamily \#include $<$algorithm$>$}\newline
|
|
{\ttfamily \#include $<$array$>$}\newline
|
|
{\ttfamily \#include $<$functional$>$}\newline
|
|
{\ttfamily \#include $<$span$>$}\newline
|
|
{\ttfamily \#include $<$tuple$>$}\newline
|
|
{\ttfamily \#include $<$vector$>$}\newline
|
|
{\ttfamily \#include "{}serif/backend/mfem/operators/volume\+\_\+inputs.\+hpp"{}}\newline
|
|
{\ttfamily \#include "{}serif/backend/mfem/operators/element\+\_\+evaluation.\+hpp"{}}\newline
|
|
{\ttfamily \#include "{}serif/backend/mfem/operators/element\+\_\+transpose.\+hpp"{}}\newline
|
|
{\ttfamily \#include "{}serif/backend/mfem/shared/parallel.\+hpp"{}}\newline
|
|
Include dependency graph for volume\+\_\+application.\+hpp\+:
|
|
\nopagebreak
|
|
\begin{figure}[H]
|
|
\begin{center}
|
|
\leavevmode
|
|
\includegraphics[width=350pt]{volume__application_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__application_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$<$Volume\+Equation EquationT, typename SchemaT$>$ }\\void \mbox{\hyperlink{namespaceserif_1_1operators_1_1backend_1_1mfem_a2ce0b21e25c656b47e0495e92d737149}{serif\+::operators\+::backend\+::mfem\+::validate\+\_\+volume\+\_\+data}} (const \mbox{\hyperlink{structserif_1_1operators_1_1backend_1_1mfem_1_1_volume_data}{Volume\+Data}}$<$ EquationT, SchemaT $>$ \&data)
|
|
\begin{DoxyCompactList}\small\item\em Reject changes to discretization objects borrowed by an accepted linearization. \end{DoxyCompactList}\item
|
|
{\footnotesize template$<$Volume\+Equation EquationT, typename SchemaT, typename VisitT$>$ }\\void \mbox{\hyperlink{namespaceserif_1_1operators_1_1backend_1_1mfem_a718862dd1fe657d4885b011fd55cde46}{serif\+::operators\+::backend\+::mfem\+::for\+\_\+each\+\_\+volume\+\_\+element}} (const \mbox{\hyperlink{structserif_1_1operators_1_1backend_1_1mfem_1_1_volume_data}{Volume\+Data}}$<$ EquationT, SchemaT $>$ \&data, VisitT \&\&visit)
|
|
\begin{DoxyCompactList}\small\item\em Visit each contribution\textquotesingle{}s own batch in equation order, without scanning other contributions. \end{DoxyCompactList}\item
|
|
{\footnotesize template$<$Volume\+Equation EquationT, typename SchemaT, typename VisitT$>$ }\\void \mbox{\hyperlink{namespaceserif_1_1operators_1_1backend_1_1mfem_abbac49d7d6daa9ce9fe76342339d94fe}{serif\+::operators\+::backend\+::mfem\+::for\+\_\+each\+\_\+volume\+\_\+linearization}} (const \mbox{\hyperlink{structserif_1_1operators_1_1backend_1_1mfem_1_1_volume_data}{Volume\+Data}}$<$ EquationT, SchemaT $>$ \&data, VisitT \&\&visit)
|
|
\begin{DoxyCompactList}\small\item\em Visit equation data together with its graph-\/owned local geometry derivative matrix. \end{DoxyCompactList}\item
|
|
{\footnotesize template$<$Volume\+Equation EquationT, typename SchemaT$>$ }\\int \mbox{\hyperlink{namespaceserif_1_1operators_1_1backend_1_1mfem_aff66659e150d476efb64d1a9651cde42}{serif\+::operators\+::backend\+::mfem\+::volume\+\_\+height}} (const \mbox{\hyperlink{structserif_1_1operators_1_1backend_1_1mfem_1_1_volume_data}{Volume\+Data}}$<$ EquationT, SchemaT $>$ \&data)
|
|
\begin{DoxyCompactList}\small\item\em Return the supported residual size. \end{DoxyCompactList}\item
|
|
{\footnotesize template$<$Volume\+Equation EquationT, typename SchemaT$>$ }\\int \mbox{\hyperlink{namespaceserif_1_1operators_1_1backend_1_1mfem_a33f731c05cee3a752100263240731095}{serif\+::operators\+::backend\+::mfem\+::volume\+\_\+width}} (const \mbox{\hyperlink{structserif_1_1operators_1_1backend_1_1mfem_1_1_volume_data}{Volume\+Data}}$<$ EquationT, SchemaT $>$ \&data)
|
|
\begin{DoxyCompactList}\small\item\em Packed directions contain unique coefficient terms followed by displacement. \end{DoxyCompactList}\item
|
|
{\footnotesize template$<$Volume\+Equation EquationT, typename SchemaT$>$ }\\std\+::size\+\_\+t \mbox{\hyperlink{namespaceserif_1_1operators_1_1backend_1_1mfem_a368650f559a68f188f858849afdd7471}{serif\+::operators\+::backend\+::mfem\+::tensor\+\_\+element\+\_\+count}} (const \mbox{\hyperlink{structserif_1_1operators_1_1backend_1_1mfem_1_1_volume_data}{Volume\+Data}}$<$ EquationT, SchemaT $>$ \&data)
|
|
\begin{DoxyCompactList}\small\item\em Count contribution-\/elements using tensor contractions for any sampled basis. \end{DoxyCompactList}\item
|
|
{\footnotesize template$<$Volume\+Equation EquationT, typename SchemaT$>$ }\\int \mbox{\hyperlink{namespaceserif_1_1operators_1_1backend_1_1mfem_a3aa198a397c6c767f89de3518c127b76}{serif\+::operators\+::backend\+::mfem\+::integration\+\_\+order}} (const \mbox{\hyperlink{structserif_1_1operators_1_1backend_1_1mfem_1_1_volume_data}{Volume\+Data}}$<$ EquationT, SchemaT $>$ \&data, int element)
|
|
\begin{DoxyCompactList}\small\item\em Return the largest contribution quadrature order on a supported mesh element. \end{DoxyCompactList}\item
|
|
{\footnotesize template$<$Volume\+Equation EquationT, typename SchemaT$>$ }\\void \mbox{\hyperlink{namespaceserif_1_1operators_1_1backend_1_1mfem_a1efb6ecb2c7b725a60484600e7f82196}{serif\+::operators\+::backend\+::mfem\+::volume\+\_\+residual}} (const \mbox{\hyperlink{structserif_1_1operators_1_1backend_1_1mfem_1_1_volume_data}{Volume\+Data}}$<$ EquationT, SchemaT $>$ \&data, \mbox{\hyperlink{namespaceserif_1_1operators_1_1backend_1_1mfem_a317d4e0bea2ef8780ac3747cfe62bf72}{\+::mfem\+::\+Vector}} \&result)
|
|
\begin{DoxyCompactList}\small\item\em Copy the residual already assembled and checked when this result was accepted. \end{DoxyCompactList}\item
|
|
{\footnotesize template$<$std\+::size\+\_\+t Count$>$ }\\std\+::array$<$ \mbox{\hyperlink{classserif_1_1discretization_1_1backend_1_1mfem_1_1_dof_map_1_1_elements}{discretization\+::backend\+::mfem\+::\+Dof\+Map\+::\+Elements}}, Count $>$ \mbox{\hyperlink{namespaceserif_1_1operators_1_1backend_1_1mfem_aec7527f93b877c641a13bc997d00a68e}{serif\+::operators\+::backend\+::mfem\+::column\+\_\+elements}} (const std\+::array$<$ const \mbox{\hyperlink{classserif_1_1discretization_1_1backend_1_1mfem_1_1_dof_map}{discretization\+::backend\+::mfem\+::\+Dof\+Map}} \texorpdfstring{$\ast$}{*}, Count $>$ \&columns)
|
|
\begin{DoxyCompactList}\small\item\em Validate coefficient bindings once before a complete element traversal. \end{DoxyCompactList}\item
|
|
{\footnotesize template$<$bool Fields = true, bool Geometry = true, Volume\+Equation EquationT, typename SchemaT$>$ }\\void \mbox{\hyperlink{namespaceserif_1_1operators_1_1backend_1_1mfem_acf1a4b7b266494712953eae77707edc4}{serif\+::operators\+::backend\+::mfem\+::apply\+\_\+volume\+\_\+direction}} (const \mbox{\hyperlink{structserif_1_1operators_1_1backend_1_1mfem_1_1_volume_data}{Volume\+Data}}$<$ EquationT, SchemaT $>$ \&data, const std\+::array$<$ const \mbox{\hyperlink{namespaceserif_1_1operators_1_1backend_1_1mfem_a317d4e0bea2ef8780ac3747cfe62bf72}{\+::mfem\+::\+Vector}} \texorpdfstring{$\ast$}{*}, \mbox{\hyperlink{structserif_1_1operators_1_1_equation_plan}{Equation\+Plan}}$<$ EquationT $>$\+::column\+\_\+count $>$ \&directions, const \mbox{\hyperlink{namespaceserif_1_1operators_1_1backend_1_1mfem_a317d4e0bea2ef8780ac3747cfe62bf72}{\+::mfem\+::\+Vector}} \&displacement\+\_\+direction, \mbox{\hyperlink{structserif_1_1operators_1_1backend_1_1mfem_1_1_workspace}{Workspace}} \&workspace, \mbox{\hyperlink{namespaceserif_1_1operators_1_1backend_1_1mfem_a317d4e0bea2ef8780ac3747cfe62bf72}{\+::mfem\+::\+Vector}} \&result)
|
|
\begin{DoxyCompactList}\small\item\em Apply only the requested directions and assemble their supported residual contribution. \end{DoxyCompactList}\item
|
|
{\footnotesize template$<$Volume\+Equation EquationT, typename SchemaT$>$ }\\void \mbox{\hyperlink{namespaceserif_1_1operators_1_1backend_1_1mfem_a65e4f364402b0e2486b3bc0a849f5ca4}{serif\+::operators\+::backend\+::mfem\+::apply\+\_\+volume\+\_\+displacements}} (const \mbox{\hyperlink{structserif_1_1operators_1_1backend_1_1mfem_1_1_volume_data}{Volume\+Data}}$<$ EquationT, SchemaT $>$ \&data, std\+::span$<$ const \mbox{\hyperlink{namespaceserif_1_1operators_1_1backend_1_1mfem_a317d4e0bea2ef8780ac3747cfe62bf72}{\+::mfem\+::\+Vector}} \texorpdfstring{$\ast$}{*}const $>$ displacement\+\_\+directions, std\+::span$<$\mbox{\hyperlink{namespaceserif_1_1operators_1_1backend_1_1mfem_a317d4e0bea2ef8780ac3747cfe62bf72}{\+::mfem\+::\+Vector}} \texorpdfstring{$\ast$}{*}const $>$ results)
|
|
\begin{DoxyCompactList}\small\item\em apply\+\_\+volume\+\_\+direction$<$false, true$>$ for several displacement directions in one traversal. \end{DoxyCompactList}\item
|
|
{\footnotesize template$<$Volume\+Equation EquationT, typename SchemaT, typename CoefficientsT$>$ }\\void \mbox{\hyperlink{namespaceserif_1_1operators_1_1backend_1_1mfem_a4942d6272956339f36fed0b324db245d}{serif\+::operators\+::backend\+::mfem\+::apply\+\_\+jacobian}} (const \mbox{\hyperlink{structserif_1_1operators_1_1backend_1_1mfem_1_1_volume_data}{Volume\+Data}}$<$ EquationT, SchemaT $>$ \&data, const CoefficientsT \&direction, const \mbox{\hyperlink{namespaceserif_1_1operators_1_1backend_1_1mfem_a317d4e0bea2ef8780ac3747cfe62bf72}{\+::mfem\+::\+Vector}} \&displacement\+\_\+direction, \mbox{\hyperlink{structserif_1_1operators_1_1backend_1_1mfem_1_1_workspace}{Workspace}} \&workspace, \mbox{\hyperlink{namespaceserif_1_1operators_1_1backend_1_1mfem_a317d4e0bea2ef8780ac3747cfe62bf72}{\+::mfem\+::\+Vector}} \&result)
|
|
\begin{DoxyCompactList}\small\item\em Apply a direction whose terms explicitly name the accepted coefficient bindings. \end{DoxyCompactList}\item
|
|
{\footnotesize template$<$Volume\+Equation EquationT, typename SchemaT$>$ }\\void \mbox{\hyperlink{namespaceserif_1_1operators_1_1backend_1_1mfem_aa4416680f0b6aafd7ce3e0b317031f06}{serif\+::operators\+::backend\+::mfem\+::apply\+\_\+jacobian}} (const \mbox{\hyperlink{structserif_1_1operators_1_1backend_1_1mfem_1_1_volume_data}{Volume\+Data}}$<$ EquationT, SchemaT $>$ \&data, const \mbox{\hyperlink{namespaceserif_1_1operators_1_1backend_1_1mfem_a317d4e0bea2ef8780ac3747cfe62bf72}{\+::mfem\+::\+Vector}} \&direction, \mbox{\hyperlink{structserif_1_1operators_1_1backend_1_1mfem_1_1_workspace}{Workspace}} \&workspace, \mbox{\hyperlink{namespaceserif_1_1operators_1_1backend_1_1mfem_a317d4e0bea2ef8780ac3747cfe62bf72}{\+::mfem\+::\+Vector}} \&result)
|
|
\begin{DoxyCompactList}\small\item\em Unpack unique coefficient terms and displacement, then use the same numerical action. \end{DoxyCompactList}\item
|
|
{\footnotesize template$<$Volume\+Equation EquationT, typename SchemaT$>$ }\\void \mbox{\hyperlink{namespaceserif_1_1operators_1_1backend_1_1mfem_ad1aedc69453bbdc1c7746c64f8d88812}{serif\+::operators\+::backend\+::mfem\+::apply\+\_\+jacobian\+\_\+transpose}} (const \mbox{\hyperlink{structserif_1_1operators_1_1backend_1_1mfem_1_1_volume_data}{Volume\+Data}}$<$ EquationT, SchemaT $>$ \&data, const \mbox{\hyperlink{namespaceserif_1_1operators_1_1backend_1_1mfem_a317d4e0bea2ef8780ac3747cfe62bf72}{\+::mfem\+::\+Vector}} \&residual\+\_\+dual, \mbox{\hyperlink{structserif_1_1operators_1_1backend_1_1mfem_1_1_workspace}{Workspace}} \&workspace, \mbox{\hyperlink{namespaceserif_1_1operators_1_1backend_1_1mfem_a317d4e0bea2ef8780ac3747cfe62bf72}{\+::mfem\+::\+Vector}} \&result)
|
|
\begin{DoxyCompactList}\small\item\em Assemble the full coordinate transpose in the same packed order as the forward action. \end{DoxyCompactList}\end{DoxyCompactItemize}
|