\doxysection{src/include/serif/geometry/deformation/actions.hpp File Reference} \hypertarget{actions_8hpp}{}\label{actions_8hpp}\index{src/include/serif/geometry/deformation/actions.hpp@{src/include/serif/geometry/deformation/actions.hpp}} {\ttfamily \#include $<$algorithm$>$}\newline {\ttfamily \#include $<$concepts$>$}\newline {\ttfamily \#include $<$span$>$}\newline {\ttfamily \#include "{}serif/geometry/deformation/failure.\+hpp"{}}\newline {\ttfamily \#include "{}serif/geometry/deformation/detail/action\+\_\+storage.\+hpp"{}}\newline {\ttfamily \#include "{}serif/geometry/deformation/spaces.\+hpp"{}}\newline {\ttfamily \#include "{}serif/geometry/deformation/workspace.\+hpp"{}}\newline Include dependency graph for actions.\+hpp\+:\nopagebreak \begin{figure}[H] \begin{center} \leavevmode \includegraphics[width=350pt]{actions_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]{actions_8hpp__dep__incl} \end{center} \end{figure} \doxysubsubsection*{Namespaces} \begin{DoxyCompactItemize} \item namespace \mbox{\hyperlink{namespaceserif}{serif}} \item namespace \mbox{\hyperlink{namespaceserif_1_1geometry}{serif\+::geometry}} \item namespace \mbox{\hyperlink{namespaceserif_1_1geometry_1_1deformation}{serif\+::geometry\+::deformation}} \end{DoxyCompactItemize} \doxysubsubsection*{Concepts} \begin{DoxyCompactItemize} \item concept \mbox{\hyperlink{conceptserif_1_1geometry_1_1deformation_1_1_deformation_dimensions}{serif\+::geometry\+::deformation\+::\+Deformation\+Dimensions}} \begin{DoxyCompactList}\small\item\em Matching lengths never replace the physical meanings of the input and output spaces. \end{DoxyCompactList}\item concept \mbox{\hyperlink{conceptserif_1_1geometry_1_1deformation_1_1_linear_deformation_map}{serif\+::geometry\+::deformation\+::\+Linear\+Deformation\+Map}} \begin{DoxyCompactList}\small\item\em Fixed maps provide just forward and transpose actions with caller-\/owned scratch. \end{DoxyCompactList}\item concept \mbox{\hyperlink{conceptserif_1_1geometry_1_1deformation_1_1_differentiable_deformation_map}{serif\+::geometry\+::deformation\+::\+Differentiable\+Deformation\+Map}} \begin{DoxyCompactList}\small\item\em Nonlinear maps explicitly provide every term needed by a Newton force pullback. \end{DoxyCompactList}\item concept \mbox{\hyperlink{conceptserif_1_1geometry_1_1deformation_1_1_deformation_map}{serif\+::geometry\+::deformation\+::\+Deformation\+Map}} \end{DoxyCompactItemize} \doxysubsubsection*{Functions} \begin{DoxyCompactItemize} \item {\footnotesize template$<$Deformation\+Map Map$>$ }\\\mbox{\hyperlink{namespaceserif_1_1geometry_1_1deformation_ae1f99a74025eac52e6ff4a4b77fb41c6}{Deformation\+Workspace}}$<$ Map $>$ \mbox{\hyperlink{namespaceserif_1_1geometry_1_1deformation_aa3ab7cc89a2262523938808363fda865}{serif\+::geometry\+::deformation\+::make\+\_\+deformation\+\_\+workspace}} (const Map \&map) \begin{DoxyCompactList}\small\item\em Allocate action scratch explicitly, once per independent caller. \end{DoxyCompactList}\item {\footnotesize template$<$Deformation\+Map Map$>$ }\\\mbox{\hyperlink{namespaceserif_1_1geometry_1_1deformation_a08306ee593c172f4877facc061e98f97}{Deformation\+Status}} \mbox{\hyperlink{namespaceserif_1_1geometry_1_1deformation_ad539328115ca03a435d339f2c551a21b}{serif\+::geometry\+::deformation\+::build\+\_\+displacement}} (const Map \&map, std\+::span$<$ const double $>$ parameters, std\+::span$<$ double $>$ displacement, \mbox{\hyperlink{namespaceserif_1_1geometry_1_1deformation_ae1f99a74025eac52e6ff4a4b77fb41c6}{Deformation\+Workspace}}$<$ Map $>$ \&workspace) \begin{DoxyCompactList}\small\item\em Evaluate physical displacement with caller-\/owned output and scratch. All action outputs must be disjoint from their inputs. Workspace storage is reserved for the map and must not supply public input or output spans. \end{DoxyCompactList}\item {\footnotesize template$<$Deformation\+Map Map$>$ }\\\mbox{\hyperlink{namespaceserif_1_1geometry_1_1deformation_a08306ee593c172f4877facc061e98f97}{Deformation\+Status}} \mbox{\hyperlink{namespaceserif_1_1geometry_1_1deformation_a47622764fd6178445526c8b3d984a6b2}{serif\+::geometry\+::deformation\+::apply\+\_\+jacobian}} (const Map \&map, std\+::span$<$ const double $>$ parameters, std\+::span$<$ const double $>$ direction, std\+::span$<$ double $>$ displacement\+\_\+direction, \mbox{\hyperlink{namespaceserif_1_1geometry_1_1deformation_ae1f99a74025eac52e6ff4a4b77fb41c6}{Deformation\+Workspace}}$<$ Map $>$ \&workspace) \begin{DoxyCompactList}\small\item\em Linear maps reuse their primal action; nonlinear maps supply their exact tangent. \end{DoxyCompactList}\item {\footnotesize template$<$Deformation\+Map Map$>$ }\\\mbox{\hyperlink{namespaceserif_1_1geometry_1_1deformation_a08306ee593c172f4877facc061e98f97}{Deformation\+Status}} \mbox{\hyperlink{namespaceserif_1_1geometry_1_1deformation_a28c839bb898ee76ac62ceaddadcba6b1}{serif\+::geometry\+::deformation\+::apply\+\_\+jacobian\+\_\+transpose}} (const Map \&map, std\+::span$<$ const double $>$ parameters, std\+::span$<$ const double $>$ displacement\+\_\+dual, std\+::span$<$ double $>$ parameter\+\_\+dual, \mbox{\hyperlink{namespaceserif_1_1geometry_1_1deformation_ae1f99a74025eac52e6ff4a4b77fb41c6}{Deformation\+Workspace}}$<$ Map $>$ \&workspace) \begin{DoxyCompactList}\small\item\em Transfer virtual work from the displacement field to its independent shape coefficients. \end{DoxyCompactList}\item {\footnotesize template$<$Deformation\+Map Map$>$ }\\\mbox{\hyperlink{namespaceserif_1_1geometry_1_1deformation_a08306ee593c172f4877facc061e98f97}{Deformation\+Status}} \mbox{\hyperlink{namespaceserif_1_1geometry_1_1deformation_a5738813c140911a0c9ec69eec58af8e7}{serif\+::geometry\+::deformation\+::apply\+\_\+pullback\+\_\+derivative}} (const Map \&map, std\+::span$<$ const double $>$ parameters, std\+::span$<$ const double $>$ direction, std\+::span$<$ const double $>$ displacement\+\_\+dual, std\+::span$<$ double $>$ parameter\+\_\+dual, \mbox{\hyperlink{namespaceserif_1_1geometry_1_1deformation_ae1f99a74025eac52e6ff4a4b77fb41c6}{Deformation\+Workspace}}$<$ Map $>$ \&workspace) \begin{DoxyCompactList}\small\item\em Differentiate the transpose at fixed dual; zero is justified only for a declared linear map. \end{DoxyCompactList}\end{DoxyCompactItemize} \doxysubsubsection*{Variables} \begin{DoxyCompactItemize} \item {\footnotesize template$<$typename Map$>$ }\\constexpr bool \mbox{\hyperlink{namespaceserif_1_1geometry_1_1deformation_a6947f0057c614e85f67ad79f50a11606}{serif\+::geometry\+::deformation\+::is\+\_\+linear\+\_\+deformation}} \begin{DoxyCompactList}\small\item\em Linearity is an explicit property of the mathematics, independent of its action interface. \end{DoxyCompactList}\end{DoxyCompactItemize}