\doxysection{src/lib/serif/backend/mfem/operators/actions.cpp File Reference} \hypertarget{actions_8cpp}{}\label{actions_8cpp}\index{src/lib/serif/backend/mfem/operators/actions.cpp@{src/lib/serif/backend/mfem/operators/actions.cpp}} {\ttfamily \#include "{}serif/utils/error/nonfinite.\+hpp"{}}\newline {\ttfamily \#include "{}serif/backend/mfem/operators/actions.\+hpp"{}}\newline {\ttfamily \#include $<$algorithm$>$}\newline {\ttfamily \#include $<$utility$>$}\newline {\ttfamily \#include "{}serif/backend/mfem/shared/finite.\+hpp"{}}\newline {\ttfamily \#include "{}serif/utils/error/errors.\+hpp"{}}\newline Include dependency graph for actions.\+cpp\+: \nopagebreak \begin{figure}[H] \begin{center} \leavevmode \includegraphics[width=350pt]{actions_8cpp__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 \mbox{\hyperlink{classserif_1_1operators_1_1backend_1_1mfem_1_1_linearized_block}{Linearized\+Block}} \mbox{\hyperlink{namespaceserif_1_1operators_1_1backend_1_1mfem_ad500ee5ad4ef471ae431b8c4dc3c6c53}{serif\+::operators\+::backend\+::mfem\+::linearized\+\_\+action}} (int rows, int columns, \mbox{\hyperlink{namespaceserif_1_1operators_1_1backend_1_1mfem_a3b3bf723bb9a0f99d88bd6fad6d6cee8}{Matrix\+Action}} action, \mbox{\hyperlink{namespaceserif_1_1operators_1_1backend_1_1mfem_a3b3bf723bb9a0f99d88bd6fad6d6cee8}{Matrix\+Action}} transpose) \begin{DoxyCompactList}\small\item\em Wrap owned callbacks with checked dimensions, finite results, and overlap-\/safe application. \end{DoxyCompactList}\item \mbox{\hyperlink{classserif_1_1operators_1_1backend_1_1mfem_1_1_linearized_block}{Linearized\+Block}} \mbox{\hyperlink{namespaceserif_1_1operators_1_1backend_1_1mfem_a26fc2a51b90bb3b53b0367a28d508080}{serif\+::operators\+::backend\+::mfem\+::linearized\+\_\+action}} (int rows, int columns, \mbox{\hyperlink{namespaceserif_1_1operators_1_1backend_1_1mfem_a3b3bf723bb9a0f99d88bd6fad6d6cee8}{Matrix\+Action}} action, \mbox{\hyperlink{namespaceserif_1_1operators_1_1backend_1_1mfem_a3b3bf723bb9a0f99d88bd6fad6d6cee8}{Matrix\+Action}} transpose, \mbox{\hyperlink{namespaceserif_1_1operators_1_1backend_1_1mfem_a6b0cdfb3c2b7760075cc756317204db8}{Matrix\+Array\+Action}} batch) \begin{DoxyCompactList}\small\item\em As above, with a batched forward action used by the operator\textquotesingle{}s Array\+Mult. \end{DoxyCompactList}\item void \mbox{\hyperlink{namespaceserif_1_1operators_1_1backend_1_1mfem_a4c162ddfd57ca8b33e4f55537f0269ac}{serif\+::operators\+::backend\+::mfem\+::apply\+\_\+many}} (const \+::mfem\+::\+Operator \&action, std\+::span$<$ const \mbox{\hyperlink{namespaceserif_1_1operators_1_1backend_1_1mfem_a317d4e0bea2ef8780ac3747cfe62bf72}{\+::mfem\+::\+Vector}} \texorpdfstring{$\ast$}{*}const $>$ inputs, std\+::span$<$\mbox{\hyperlink{namespaceserif_1_1operators_1_1backend_1_1mfem_a317d4e0bea2ef8780ac3747cfe62bf72}{\+::mfem\+::\+Vector}} \texorpdfstring{$\ast$}{*}const $>$ outputs) \begin{DoxyCompactList}\small\item\em Apply an operator to several directions; Array\+Mult for SERiF actions, otherwise one Mult per direction. \end{DoxyCompactList}\item \mbox{\hyperlink{classserif_1_1operators_1_1backend_1_1mfem_1_1_linearized_block}{Linearized\+Block}} \mbox{\hyperlink{namespaceserif_1_1operators_1_1backend_1_1mfem_a17d55109fe81202a9dbff5f0cd921e5f}{serif\+::operators\+::backend\+::mfem\+::transpose\+\_\+block}} (\mbox{\hyperlink{classserif_1_1operators_1_1backend_1_1mfem_1_1_linearized_block}{Linearized\+Block}} block) \begin{DoxyCompactList}\small\item\em Transpose a linearized block without discarding efficient assembly and diagonal operations. \end{DoxyCompactList}\item \mbox{\hyperlink{classserif_1_1operators_1_1backend_1_1mfem_1_1_linearized_block}{Linearized\+Block}} \mbox{\hyperlink{namespaceserif_1_1operators_1_1backend_1_1mfem_a33094e2a1e4dfb26dec4a1dfde0ed843}{serif\+::operators\+::backend\+::mfem\+::compose\+\_\+blocks}} (\mbox{\hyperlink{classserif_1_1operators_1_1backend_1_1mfem_1_1_linearized_block}{Linearized\+Block}} left, \mbox{\hyperlink{classserif_1_1operators_1_1backend_1_1mfem_1_1_linearized_block}{Linearized\+Block}} right) \begin{DoxyCompactList}\small\item\em Compose linearized blocks in their written mathematical order. \end{DoxyCompactList}\item \mbox{\hyperlink{classserif_1_1operators_1_1backend_1_1mfem_1_1_linearized_block}{Linearized\+Block}} \mbox{\hyperlink{namespaceserif_1_1operators_1_1backend_1_1mfem_a346dd7c66908876a5373191c02ce6809}{serif\+::operators\+::backend\+::mfem\+::sum\+\_\+blocks}} (int rows, int columns, std\+::vector$<$ \mbox{\hyperlink{classserif_1_1operators_1_1backend_1_1mfem_1_1_linearized_block}{Linearized\+Block}} $>$ blocks) \begin{DoxyCompactList}\small\item\em Sum compatible linearized blocks while retaining their native diagonal and sparse assembly operations. \end{DoxyCompactList}\end{DoxyCompactItemize}