\doxysection{src/include/serif/backend/mfem/operators/volume\+\_\+data.hpp File Reference} \hypertarget{volume__data_8hpp}{}\label{volume__data_8hpp}\index{src/include/serif/backend/mfem/operators/volume\_data.hpp@{src/include/serif/backend/mfem/operators/volume\_data.hpp}} {\ttfamily \#include $<$array$>$}\newline {\ttfamily \#include $<$memory$>$}\newline {\ttfamily \#include $<$vector$>$}\newline {\ttfamily \#include "{}mfem/fem/gridfunc.\+hpp"{}}\newline {\ttfamily \#include "{}serif/backend/mfem/mapping/domain\+\_\+mapper.\+hpp"{}}\newline {\ttfamily \#include "{}serif/backend/mfem/discretization/term\+\_\+coefficients.\+hpp"{}}\newline {\ttfamily \#include "{}serif/backend/mfem/operators/element\+\_\+data.\+hpp"{}}\newline {\ttfamily \#include "{}serif/backend/mfem/operators/quadrature.\+hpp"{}}\newline {\ttfamily \#include "{}serif/backend/mfem/operators/workspace.\+hpp"{}}\newline Include dependency graph for volume\+\_\+data.\+hpp\+: \nopagebreak \begin{figure}[H] \begin{center} \leavevmode \includegraphics[width=350pt]{volume__data_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__data_8hpp__dep__incl} \end{center} \end{figure} \doxysubsubsection*{Classes} \begin{DoxyCompactItemize} \item struct \mbox{\hyperlink{structserif_1_1operators_1_1backend_1_1mfem_1_1volume__keys_1_1_scoped}{serif\+::operators\+::backend\+::mfem\+::volume\+\_\+keys\+::\+Scoped$<$ Scope $>$}} \begin{DoxyCompactList}\small\item\em Keep equation-\/local stages distinct while sharing physical coefficient sources. \end{DoxyCompactList}\item struct \mbox{\hyperlink{structserif_1_1operators_1_1backend_1_1mfem_1_1volume__keys_1_1_scoped_1_1_basis}{serif\+::operators\+::backend\+::mfem\+::volume\+\_\+keys\+::\+Scoped$<$ Scope $>$\+::\+Basis$<$ Contribution $>$}} \item struct \mbox{\hyperlink{structserif_1_1operators_1_1backend_1_1mfem_1_1volume__keys_1_1_scoped_1_1_geometry}{serif\+::operators\+::backend\+::mfem\+::volume\+\_\+keys\+::\+Scoped$<$ Scope $>$\+::\+Geometry$<$ Contribution $>$}} \item struct \mbox{\hyperlink{structserif_1_1operators_1_1backend_1_1mfem_1_1volume__keys_1_1_scoped_1_1_reference_values}{serif\+::operators\+::backend\+::mfem\+::volume\+\_\+keys\+::\+Scoped$<$ Scope $>$\+::\+Reference\+Values$<$ Contribution, Operand\+T $>$}} \item struct \mbox{\hyperlink{structserif_1_1operators_1_1backend_1_1mfem_1_1volume__keys_1_1_scoped_1_1_physical_values}{serif\+::operators\+::backend\+::mfem\+::volume\+\_\+keys\+::\+Scoped$<$ Scope $>$\+::\+Physical\+Values$<$ Contribution, Operand\+T $>$}} \item struct \mbox{\hyperlink{structserif_1_1operators_1_1backend_1_1mfem_1_1volume__keys_1_1_scoped_1_1_quadrature_linearization}{serif\+::operators\+::backend\+::mfem\+::volume\+\_\+keys\+::\+Scoped$<$ Scope $>$\+::\+Quadrature\+Linearization$<$ Contribution $>$}} \item struct \mbox{\hyperlink{structserif_1_1operators_1_1backend_1_1mfem_1_1volume__keys_1_1_scoped_1_1_geometry_derivatives}{serif\+::operators\+::backend\+::mfem\+::volume\+\_\+keys\+::\+Scoped$<$ Scope $>$\+::\+Geometry\+Derivatives$<$ Contribution $>$}} \begin{DoxyCompactList}\small\item\em Weighted local displacement derivatives, owned and invalidated by the graph. \end{DoxyCompactList}\item struct \mbox{\hyperlink{structserif_1_1operators_1_1backend_1_1mfem_1_1volume__keys_1_1_scoped_1_1_linearization}{serif\+::operators\+::backend\+::mfem\+::volume\+\_\+keys\+::\+Scoped$<$ Scope $>$\+::\+Linearization}} \item struct \mbox{\hyperlink{structserif_1_1operators_1_1backend_1_1mfem_1_1volume__keys_1_1_scoped_1_1_bindings}{serif\+::operators\+::backend\+::mfem\+::volume\+\_\+keys\+::\+Scoped$<$ Scope $>$\+::\+Bindings}} \item struct \mbox{\hyperlink{structserif_1_1operators_1_1backend_1_1mfem_1_1_basis_bindings}{serif\+::operators\+::backend\+::mfem\+::\+Basis\+Bindings$<$ Column\+Count $>$}} \item struct \mbox{\hyperlink{structserif_1_1operators_1_1backend_1_1mfem_1_1_volume_discretization}{serif\+::operators\+::backend\+::mfem\+::\+Volume\+Discretization$<$ Test\+T, Schema\+T $>$}} \begin{DoxyCompactList}\small\item\em Borrowed discretization objects must outlive their graph and its accepted results. \end{DoxyCompactList}\item struct \mbox{\hyperlink{structserif_1_1operators_1_1backend_1_1mfem_1_1_volume_options}{serif\+::operators\+::backend\+::mfem\+::\+Volume\+Options}} \begin{DoxyCompactList}\small\item\em Numerical choices fixed when the graph is constructed. \end{DoxyCompactList}\item struct \mbox{\hyperlink{structserif_1_1operators_1_1backend_1_1mfem_1_1_operand_samples}{serif\+::operators\+::backend\+::mfem\+::\+Operand\+Samples}} \begin{DoxyCompactList}\small\item\em Reference samples remain available for derivatives through the physical mapping. \end{DoxyCompactList}\item struct \mbox{\hyperlink{structserif_1_1operators_1_1backend_1_1mfem_1_1_contribution_data}{serif\+::operators\+::backend\+::mfem\+::\+Contribution\+Data$<$ Operand\+Count $>$}} \item struct \mbox{\hyperlink{structserif_1_1operators_1_1backend_1_1mfem_1_1_volume_configuration}{serif\+::operators\+::backend\+::mfem\+::\+Volume\+Configuration$<$ Equation\+T, Schema\+T $>$}} \begin{DoxyCompactList}\small\item\em Stable equation ownership also retains temporary and move-\/only contribution trees. \end{DoxyCompactList}\item struct \mbox{\hyperlink{structserif_1_1operators_1_1backend_1_1mfem_1_1_volume_data}{serif\+::operators\+::backend\+::mfem\+::\+Volume\+Data$<$ Equation\+T, Schema\+T $>$}} \begin{DoxyCompactList}\small\item\em One accepted result contains ordered contribution batches and the assembled residual. \end{DoxyCompactList}\item struct \mbox{\hyperlink{structserif_1_1operators_1_1backend_1_1mfem_1_1_volume_scratch}{serif\+::operators\+::backend\+::mfem\+::\+Volume\+Scratch}} \begin{DoxyCompactList}\small\item\em Scratch belongs to graph callables and is never a dependency source. \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_1volume__keys}{serif\+::operators\+::backend\+::mfem\+::volume\+\_\+keys}} \end{DoxyCompactItemize} \doxysubsubsection*{Typedefs} \begin{DoxyCompactItemize} \item {\footnotesize template$<$std\+::size\+\_\+t Contribution$>$ }\\using \mbox{\hyperlink{namespaceserif_1_1operators_1_1backend_1_1mfem_1_1volume__keys_aa028250a5d4484bd259cd017200c260c}{serif\+::operators\+::backend\+::mfem\+::volume\+\_\+keys\+::\+Basis}} = \mbox{\hyperlink{structserif_1_1operators_1_1backend_1_1mfem_1_1volume__keys_1_1_scoped}{Scoped}}$<$void$>$\+::\+Basis$<$Contribution$>$ \item {\footnotesize template$<$std\+::size\+\_\+t Contribution$>$ }\\using \mbox{\hyperlink{namespaceserif_1_1operators_1_1backend_1_1mfem_1_1volume__keys_af83c50f3cf4a104f3e6c018312b0371b}{serif\+::operators\+::backend\+::mfem\+::volume\+\_\+keys\+::\+Geometry}} = \mbox{\hyperlink{structserif_1_1operators_1_1backend_1_1mfem_1_1volume__keys_1_1_scoped}{Scoped}}$<$void$>$\+::\+Geometry$<$Contribution$>$ \item {\footnotesize template$<$std\+::size\+\_\+t Contribution, typename OperandT$>$ }\\using \mbox{\hyperlink{namespaceserif_1_1operators_1_1backend_1_1mfem_1_1volume__keys_a0c4171152ebaf4f721a743a2a5fb9014}{serif\+::operators\+::backend\+::mfem\+::volume\+\_\+keys\+::\+Reference\+Values}} = \mbox{\hyperlink{structserif_1_1operators_1_1backend_1_1mfem_1_1volume__keys_1_1_scoped}{Scoped}}$<$void$>$\+::\+Reference\+Values$<$Contribution, OperandT$>$ \item {\footnotesize template$<$std\+::size\+\_\+t Contribution, typename OperandT$>$ }\\using \mbox{\hyperlink{namespaceserif_1_1operators_1_1backend_1_1mfem_1_1volume__keys_a5b639e648c7743b66732b2436d6473c2}{serif\+::operators\+::backend\+::mfem\+::volume\+\_\+keys\+::\+Physical\+Values}} = \mbox{\hyperlink{structserif_1_1operators_1_1backend_1_1mfem_1_1volume__keys_1_1_scoped}{Scoped}}$<$void$>$\+::\+Physical\+Values$<$Contribution, OperandT$>$ \item {\footnotesize template$<$std\+::size\+\_\+t Contribution$>$ }\\using \mbox{\hyperlink{namespaceserif_1_1operators_1_1backend_1_1mfem_1_1volume__keys_af60347c09439498ae0b4971d9280126d}{serif\+::operators\+::backend\+::mfem\+::volume\+\_\+keys\+::\+Quadrature\+Linearization}} = \mbox{\hyperlink{structserif_1_1operators_1_1backend_1_1mfem_1_1volume__keys_1_1_scoped}{Scoped}}$<$void$>$\+::\+Quadrature\+Linearization$<$Contribution$>$ \item {\footnotesize template$<$std\+::size\+\_\+t Contribution$>$ }\\using \mbox{\hyperlink{namespaceserif_1_1operators_1_1backend_1_1mfem_1_1volume__keys_ace4f8ba583b5103c7a8d2477a1236a91}{serif\+::operators\+::backend\+::mfem\+::volume\+\_\+keys\+::\+Geometry\+Derivatives}} = \mbox{\hyperlink{structserif_1_1operators_1_1backend_1_1mfem_1_1volume__keys_1_1_scoped}{Scoped}}$<$void$>$\+::\+Geometry\+Derivatives$<$Contribution$>$ \item using \mbox{\hyperlink{namespaceserif_1_1operators_1_1backend_1_1mfem_1_1volume__keys_a4a5cc4891ad7c8c24f7437ba90d67ee2}{serif\+::operators\+::backend\+::mfem\+::volume\+\_\+keys\+::\+Linearization}} = \mbox{\hyperlink{structserif_1_1operators_1_1backend_1_1mfem_1_1volume__keys_1_1_scoped}{Scoped}}$<$void$>$\+::\+Linearization \item {\footnotesize template$<$typename ElementT$>$ }\\using \mbox{\hyperlink{namespaceserif_1_1operators_1_1backend_1_1mfem_afd0d7be8fe679f2666861d91bdbe16b3}{serif\+::operators\+::backend\+::mfem\+::\+Element\+Batch}} = std\+::vector$<$std\+::shared\+\_\+ptr$<$const ElementT$>$$>$ \begin{DoxyCompactList}\small\item\em A stage owns immutable element results, shared with downstream stages and accepted linearizations. \end{DoxyCompactList}\end{DoxyCompactItemize} \doxysubsubsection*{Enumerations} \begin{DoxyCompactItemize} \item enum class \mbox{\hyperlink{namespaceserif_1_1operators_1_1backend_1_1mfem_a24da3fc8af225640b2d32c378ef40cde}{serif\+::operators\+::backend\+::mfem\+::\+Contraction\+Mode}} \begin{DoxyCompactList}\small\item\em Options enum to control how the tensor contractions are performed. \end{DoxyCompactList}\end{DoxyCompactItemize} \doxysubsubsection*{Functions} \begin{DoxyCompactItemize} \item {\footnotesize template$<$typename TestT, typename SchemaT$>$ }\\\mbox{\hyperlink{namespaceserif_1_1operators_1_1backend_1_1mfem_aa7ce3038141b1a709ac67372c17a36c8}{serif\+::operators\+::backend\+::mfem\+::\+Volume\+Discretization}} (const \mbox{\hyperlink{classserif_1_1discretization_1_1backend_1_1mfem_1_1_term_binding}{discretization\+::backend\+::mfem\+::\+Term\+Binding}}$<$ TestT, SchemaT $>$ \&, const \mbox{\hyperlink{classserif_1_1discretization_1_1backend_1_1mfem_1_1_term_binding}{discretization\+::backend\+::mfem\+::\+Term\+Binding}}$<$ \mbox{\hyperlink{structserif_1_1discretization_1_1blocks_1_1displacement_1_1vector}{discretization\+::blocks\+::displacement\+::vector}}, SchemaT $>$ \&, const \+::mfem\+::\+Grid\+Function \&, const \mbox{\hyperlink{classserif_1_1mapping_1_1_domain_mapper}{mapping\+::\+Domain\+Mapper}} \&) -\/$>$ Volume\+Discretization$<$ TestT, SchemaT $>$ \end{DoxyCompactItemize}