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)
453 lines
57 KiB
TeX
453 lines
57 KiB
TeX
\doxysection{serif\+::geometry\+::deformation Namespace Reference}
|
|
\hypertarget{namespaceserif_1_1geometry_1_1deformation}{}\label{namespaceserif_1_1geometry_1_1deformation}\index{serif::geometry::deformation@{serif::geometry::deformation}}
|
|
\doxysubsubsection*{Namespaces}
|
|
\begin{DoxyCompactItemize}
|
|
\item
|
|
namespace \mbox{\hyperlink{namespaceserif_1_1geometry_1_1deformation_1_1backend}{backend}}
|
|
\item
|
|
namespace \mbox{\hyperlink{namespaceserif_1_1geometry_1_1deformation_1_1detail}{detail}}
|
|
\item
|
|
namespace \mbox{\hyperlink{namespaceserif_1_1geometry_1_1deformation_1_1keys}{keys}}
|
|
\item
|
|
namespace \mbox{\hyperlink{namespaceserif_1_1geometry_1_1deformation_1_1spaces}{spaces}}
|
|
\end{DoxyCompactItemize}
|
|
\doxysubsubsection*{Classes}
|
|
\begin{DoxyCompactItemize}
|
|
\item
|
|
class \mbox{\hyperlink{classserif_1_1geometry_1_1deformation_1_1_composed_deformation}{Composed\+Deformation}}
|
|
\begin{DoxyCompactList}\small\item\em Compose shape-\/to-\/surface and surface-\/to-\/volume maps with the complete derivative chain rule. \end{DoxyCompactList}\item
|
|
struct \mbox{\hyperlink{structserif_1_1geometry_1_1deformation_1_1_deformation_failure}{Deformation\+Failure}}
|
|
\begin{DoxyCompactList}\small\item\em Describe a rejected geometry calculation; the dependency cache publishes results only after success. \end{DoxyCompactList}\item
|
|
struct \mbox{\hyperlink{structserif_1_1geometry_1_1deformation_1_1_deformation_linearization}{Deformation\+Linearization}}
|
|
\begin{DoxyCompactList}\small\item\em Freeze the shape coordinates associated with a derivative, independently of mutable caller inputs. \end{DoxyCompactList}\item
|
|
struct \mbox{\hyperlink{structserif_1_1geometry_1_1deformation_1_1_domain_deformation}{Domain\+Deformation}}
|
|
\begin{DoxyCompactList}\small\item\em State how the stellar surface moves and how that motion extends into the two surrounding regions. \end{DoxyCompactList}\item
|
|
struct \mbox{\hyperlink{structserif_1_1geometry_1_1deformation_1_1_empty_deformation_workspace}{Empty\+Deformation\+Workspace}}
|
|
\begin{DoxyCompactList}\small\item\em Stateless maps require no numerical scratch, while retaining the same explicit action interface. \end{DoxyCompactList}\item
|
|
struct \mbox{\hyperlink{structserif_1_1geometry_1_1deformation_1_1_fixed_infinity_radial_extension}{Fixed\+Infinity\+Radial\+Extension}}
|
|
\begin{DoxyCompactList}\small\item\em Reduce surface motion linearly to zero at reference infinity in logical reference radius. \end{DoxyCompactList}\item
|
|
struct \mbox{\hyperlink{structserif_1_1geometry_1_1deformation_1_1_geometry_step_limit}{Geometry\+Step\+Limit}}
|
|
\begin{DoxyCompactList}\small\item\em Geometry-\/only bound at the supplied sample points, with a location for the first obstruction. \end{DoxyCompactList}\item
|
|
struct \mbox{\hyperlink{structserif_1_1geometry_1_1deformation_1_1_geometry_step_options}{Geometry\+Step\+Options}}
|
|
\begin{DoxyCompactList}\small\item\em Numerical controls for keeping a straight volume-\/displacement step above a Jacobian determinant floor. \end{DoxyCompactList}\item
|
|
struct \mbox{\hyperlink{structserif_1_1geometry_1_1deformation_1_1_nodal_radial_surface}{Nodal\+Radial\+Surface}}
|
|
\begin{DoxyCompactList}\small\item\em Give each surface node an independent radial displacement, measured in physical length. \end{DoxyCompactList}\item
|
|
struct \mbox{\hyperlink{structserif_1_1geometry_1_1deformation_1_1_power_law_radial_extension}{Power\+Law\+Radial\+Extension}}
|
|
\begin{DoxyCompactList}\small\item\em Extend surface motion toward a fixed stellar center using a power of logical reference radius. \end{DoxyCompactList}\item
|
|
class \mbox{\hyperlink{classserif_1_1geometry_1_1deformation_1_1_radial_extension}{Radial\+Extension}}
|
|
\begin{DoxyCompactList}\small\item\em Extend one interleaved surface vector into the MFEM component-\/block volume layout. Stellar ownership wins at shared nodes. Both actions use the same scalar interpolation, so their pairing is Euclidean virtual work without an additional surface-\/area weight. \end{DoxyCompactList}\item
|
|
class \mbox{\hyperlink{classserif_1_1geometry_1_1deformation_1_1_radial_interpolation}{Radial\+Interpolation}}
|
|
\begin{DoxyCompactList}\small\item\em A checked, immutable interpolation table; changing a radial law never revalidates its topology. \end{DoxyCompactList}\item
|
|
struct \mbox{\hyperlink{structserif_1_1geometry_1_1deformation_1_1_radial_interpolation_data}{Radial\+Interpolation\+Data}}
|
|
\begin{DoxyCompactList}\small\item\em Own the surface interpolation shared by the stellar and vacuum extensions. \end{DoxyCompactList}\item
|
|
struct \mbox{\hyperlink{structserif_1_1geometry_1_1deformation_1_1_reference_surface}{Reference\+Surface}}
|
|
\begin{DoxyCompactList}\small\item\em Own fixed surface positions and their canonical ascending scalar-\/node indices. \end{DoxyCompactList}\item
|
|
struct \mbox{\hyperlink{structserif_1_1geometry_1_1deformation_1_1_spherical_harmonic_mode}{Spherical\+Harmonic\+Mode}}
|
|
\begin{DoxyCompactList}\small\item\em Identify a real harmonic, with negative orders using sine and positive orders using cosine. \end{DoxyCompactList}\item
|
|
struct \mbox{\hyperlink{structserif_1_1geometry_1_1deformation_1_1_spherical_harmonic_surface}{Spherical\+Harmonic\+Surface}}
|
|
\begin{DoxyCompactList}\small\item\em Represent radial displacement lengths with normalized real spherical harmonics on the reference surface. \end{DoxyCompactList}\item
|
|
class \mbox{\hyperlink{classserif_1_1geometry_1_1deformation_1_1_surface_embedding}{Surface\+Embedding}}
|
|
\begin{DoxyCompactList}\small\item\em Own a linear conversion from radial displacement lengths to Cartesian surface displacements. \end{DoxyCompactList}\end{DoxyCompactItemize}
|
|
\doxysubsubsection*{Concepts}
|
|
\begin{DoxyCompactItemize}
|
|
\item
|
|
concept \mbox{\hyperlink{conceptserif_1_1geometry_1_1deformation_1_1_deformation_dimensions}{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}{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}{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}{Deformation\+Map}}
|
|
\end{DoxyCompactItemize}
|
|
\doxysubsubsection*{Typedefs}
|
|
\begin{DoxyCompactItemize}
|
|
\item
|
|
using \mbox{\hyperlink{namespaceserif_1_1geometry_1_1deformation_a08306ee593c172f4877facc061e98f97}{Deformation\+Status}} = std\+::expected$<$void, \mbox{\hyperlink{structserif_1_1geometry_1_1deformation_1_1_deformation_failure}{Deformation\+Failure}}$>$
|
|
\item
|
|
{\footnotesize template$<$typename Map$>$ }\\using \mbox{\hyperlink{namespaceserif_1_1geometry_1_1deformation_ae1f99a74025eac52e6ff4a4b77fb41c6}{Deformation\+Workspace}} = typename Map\+::\+Workspace
|
|
\end{DoxyCompactItemize}
|
|
\doxysubsubsection*{Enumerations}
|
|
\begin{DoxyCompactItemize}
|
|
\item
|
|
enum class \mbox{\hyperlink{namespaceserif_1_1geometry_1_1deformation_abff36c0dd3d8b9c916a2e928ab69a871}{Deformation\+Failure\+Reason}} \{ \newline
|
|
\mbox{\hyperlink{namespaceserif_1_1geometry_1_1deformation_abff36c0dd3d8b9c916a2e928ab69a871a9cc57114b319994e90322314a00521d4}{invalid\+\_\+configuration}}
|
|
, \mbox{\hyperlink{namespaceserif_1_1geometry_1_1deformation_abff36c0dd3d8b9c916a2e928ab69a871ad73416fa06a45d748a7c8d4349054cbb}{incompatible\+\_\+discretization}}
|
|
, \mbox{\hyperlink{namespaceserif_1_1geometry_1_1deformation_abff36c0dd3d8b9c916a2e928ab69a871a0181b84c792eb178181854d09c8fe7b9}{invalid\+\_\+size}}
|
|
, \mbox{\hyperlink{namespaceserif_1_1geometry_1_1deformation_abff36c0dd3d8b9c916a2e928ab69a871a4013d0a2d04acba5257678a15922a094}{non\+\_\+finite}}
|
|
, \newline
|
|
\mbox{\hyperlink{namespaceserif_1_1geometry_1_1deformation_abff36c0dd3d8b9c916a2e928ab69a871a9a8a2ae86e6fce17b9be87ec37249370}{unresolved\+\_\+surface}}
|
|
, \mbox{\hyperlink{namespaceserif_1_1geometry_1_1deformation_abff36c0dd3d8b9c916a2e928ab69a871a146816aaee11d5a21b09baac60c9812e}{invalid\+\_\+geometry}}
|
|
\}
|
|
\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}{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}{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}{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}{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}{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}\item
|
|
{\footnotesize template$<$Deformation\+Map Surface\+Map, Deformation\+Map Extension\+Map$>$ \newline
|
|
requires std\+::same\+\_\+as$<$typename Surface\+Map\+::\+Output\+Space, typename Extension\+Map\+::\+Input\+Space$>$}\\std\+::expected$<$ \mbox{\hyperlink{classserif_1_1geometry_1_1deformation_1_1_composed_deformation}{Composed\+Deformation}}$<$ Surface\+Map, Extension\+Map $>$, \mbox{\hyperlink{structserif_1_1geometry_1_1deformation_1_1_deformation_failure}{Deformation\+Failure}} $>$ \mbox{\hyperlink{namespaceserif_1_1geometry_1_1deformation_a43ceea2db7df958a0bec16629328afc4}{compose\+\_\+deformation}} (std\+::shared\+\_\+ptr$<$ const Surface\+Map $>$ surface, std\+::shared\+\_\+ptr$<$ const Extension\+Map $>$ extension)
|
|
\begin{DoxyCompactList}\small\item\em Validate factor sizes before constructing an owning mathematical composition. \end{DoxyCompactList}\item
|
|
{\footnotesize template$<$Deformation\+Map Surface\+Map, Deformation\+Map Extension\+Map$>$ \newline
|
|
requires std\+::same\+\_\+as$<$typename Surface\+Map\+::\+Output\+Space, typename Extension\+Map\+::\+Input\+Space$>$}\\auto \mbox{\hyperlink{namespaceserif_1_1geometry_1_1deformation_a08faf47d7228e20ed4bae4a86c3b12f0}{make\+\_\+deformation\+\_\+computations}} ()
|
|
\begin{DoxyCompactList}\small\item\em Declare the numerical composition as ordinary dependency computations. \end{DoxyCompactList}\item
|
|
{\footnotesize template$<$Deformation\+Map Surface\+Map, Deformation\+Map Extension\+Map$>$ \newline
|
|
requires std\+::same\+\_\+as$<$typename Surface\+Map\+::\+Output\+Space, typename Extension\+Map\+::\+Input\+Space$>$}\\auto \mbox{\hyperlink{namespaceserif_1_1geometry_1_1deformation_a6f1a3c9e7423e2e4945a75e91eb70b3b}{make\+\_\+deformation\+\_\+graph}} ()
|
|
\begin{DoxyCompactList}\small\item\em Compose independently compiled mathematical factors without introducing a prepared-\/operator facade. \end{DoxyCompactList}\item
|
|
\mbox{\hyperlink{namespaceserif_1_1geometry_1_1deformation_a08306ee593c172f4877facc061e98f97}{Deformation\+Status}} \mbox{\hyperlink{namespaceserif_1_1geometry_1_1deformation_a371fc6cc353f2df9f7752d802c2155da}{validate\+\_\+deformation\+\_\+values}} (std\+::span$<$ const double $>$ values, std\+::size\+\_\+t expected\+\_\+size)
|
|
\begin{DoxyCompactList}\small\item\em Reject incompatible lengths and non-\/finite values before evaluating a deformation action. \end{DoxyCompactList}\item
|
|
{\footnotesize template$<$Deformation\+Map Map$>$ }\\std\+::expected$<$ std\+::vector$<$ double $>$, \mbox{\hyperlink{structserif_1_1geometry_1_1deformation_1_1_deformation_failure}{Deformation\+Failure}} $>$ \mbox{\hyperlink{namespaceserif_1_1geometry_1_1deformation_a7c97f13afaf99ecbde93c21ab3f9f771}{evaluate\+\_\+displacement}} (const Map \&map, std\+::span$<$ const double $>$ parameters)
|
|
\begin{DoxyCompactList}\small\item\em Allocate a result for graph publication while leaving repeated low-\/level actions allocation-\/free. \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_a1c527e713dfc9f833b3e0bd1b757c731}{apply\+\_\+jacobian}} (const \mbox{\hyperlink{structserif_1_1geometry_1_1deformation_1_1_deformation_linearization}{Deformation\+Linearization}}$<$ Map $>$ \&state, std\+::span$<$ const double $>$ direction, std\+::span$<$ double $>$ output, \mbox{\hyperlink{namespaceserif_1_1geometry_1_1deformation_ae1f99a74025eac52e6ff4a4b77fb41c6}{Deformation\+Workspace}}$<$ Map $>$ \&workspace)
|
|
\begin{DoxyCompactList}\small\item\em Evaluate a tangent about the cache\textquotesingle{}s accepted shape, not the caller\textquotesingle{}s next trial state. \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_a7e4a280dbda654cc0d4b9b462752e757}{apply\+\_\+jacobian\+\_\+transpose}} (const \mbox{\hyperlink{structserif_1_1geometry_1_1deformation_1_1_deformation_linearization}{Deformation\+Linearization}}$<$ Map $>$ \&state, std\+::span$<$ const double $>$ dual, std\+::span$<$ double $>$ output, \mbox{\hyperlink{namespaceserif_1_1geometry_1_1deformation_ae1f99a74025eac52e6ff4a4b77fb41c6}{Deformation\+Workspace}}$<$ Map $>$ \&workspace)
|
|
\begin{DoxyCompactList}\small\item\em Pull displacement forces back to the accepted independent shape coordinates. \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_aeabb23372e9ed935ed539925bf56b316}{apply\+\_\+pullback\+\_\+derivative}} (const \mbox{\hyperlink{structserif_1_1geometry_1_1deformation_1_1_deformation_linearization}{Deformation\+Linearization}}$<$ Map $>$ \&state, std\+::span$<$ const double $>$ direction, std\+::span$<$ const double $>$ dual, std\+::span$<$ double $>$ output, \mbox{\hyperlink{namespaceserif_1_1geometry_1_1deformation_ae1f99a74025eac52e6ff4a4b77fb41c6}{Deformation\+Workspace}}$<$ Map $>$ \&workspace)
|
|
\begin{DoxyCompactList}\small\item\em Keep the geometric contribution to the Newton force derivative available for nonlinear models. \end{DoxyCompactList}\item
|
|
std\+::expected$<$ \mbox{\hyperlink{classserif_1_1geometry_1_1deformation_1_1_radial_extension}{Radial\+Extension}}, \mbox{\hyperlink{structserif_1_1geometry_1_1deformation_1_1_deformation_failure}{Deformation\+Failure}} $>$ \mbox{\hyperlink{namespaceserif_1_1geometry_1_1deformation_a9744ea82df8c839a005c29235aecdb03}{make\+\_\+radial\+\_\+extension}} (std\+::shared\+\_\+ptr$<$ const \mbox{\hyperlink{classserif_1_1geometry_1_1deformation_1_1_radial_interpolation}{Radial\+Interpolation}} $>$ interpolation, \mbox{\hyperlink{structserif_1_1geometry_1_1deformation_1_1_power_law_radial_extension}{Power\+Law\+Radial\+Extension}} interior=\{\}, \mbox{\hyperlink{structserif_1_1geometry_1_1deformation_1_1_fixed_infinity_radial_extension}{Fixed\+Infinity\+Radial\+Extension}} vacuum=\{\})
|
|
\begin{DoxyCompactList}\small\item\em Compile regional weights while sharing the immutable surface interpolation. The interpolation factory has already established every reference-\/table invariant. \end{DoxyCompactList}\item
|
|
std\+::expected$<$ \mbox{\hyperlink{classserif_1_1geometry_1_1deformation_1_1_radial_interpolation}{Radial\+Interpolation}}, \mbox{\hyperlink{structserif_1_1geometry_1_1deformation_1_1_deformation_failure}{Deformation\+Failure}} $>$ \mbox{\hyperlink{namespaceserif_1_1geometry_1_1deformation_a81d1d0df5d554d5af5149549b484a0bb}{make\+\_\+radial\+\_\+interpolation}} (\mbox{\hyperlink{structserif_1_1geometry_1_1deformation_1_1_radial_interpolation_data}{Radial\+Interpolation\+Data}} data)
|
|
\begin{DoxyCompactList}\small\item\em Check imported or backend-\/generated reference rows once before sharing them with radial laws. \end{DoxyCompactList}\item
|
|
std\+::expected$<$ \mbox{\hyperlink{classserif_1_1geometry_1_1deformation_1_1_surface_embedding}{Surface\+Embedding}}, \mbox{\hyperlink{structserif_1_1geometry_1_1deformation_1_1_deformation_failure}{Deformation\+Failure}} $>$ \mbox{\hyperlink{namespaceserif_1_1geometry_1_1deformation_acb2008299cc4c40f49e8c9c0086e5356}{build\+\_\+surface\+\_\+embedding}} (const \mbox{\hyperlink{structserif_1_1geometry_1_1deformation_1_1_nodal_radial_surface}{Nodal\+Radial\+Surface}} \&model, std\+::span$<$ const std\+::array$<$ double, 3 $>$ $>$ positions)
|
|
\begin{DoxyCompactList}\small\item\em Compile fixed radial directions from ordered physical reference positions without retaining backend objects. \end{DoxyCompactList}\item
|
|
std\+::expected$<$ \mbox{\hyperlink{classserif_1_1geometry_1_1deformation_1_1_surface_embedding}{Surface\+Embedding}}, \mbox{\hyperlink{structserif_1_1geometry_1_1deformation_1_1_deformation_failure}{Deformation\+Failure}} $>$ \mbox{\hyperlink{namespaceserif_1_1geometry_1_1deformation_a21c05b3c7115c90ea951ee87a1efc714}{build\+\_\+surface\+\_\+embedding}} (const \mbox{\hyperlink{structserif_1_1geometry_1_1deformation_1_1_spherical_harmonic_surface}{Spherical\+Harmonic\+Surface}} \&model, std\+::span$<$ const std\+::array$<$ double, 3 $>$ $>$ positions)
|
|
\begin{DoxyCompactList}\small\item\em Sample physically normalized real harmonics and reject unresolved modes without renormalizing or dropping coordinates. \end{DoxyCompactList}\item
|
|
{\footnotesize template$<$typename Surface, typename Interior, typename Vacuum$>$ }\\auto \mbox{\hyperlink{namespaceserif_1_1geometry_1_1deformation_a10e993d0c69b24df4bb3cd1a5ac12e9f}{make\+\_\+deformation\+\_\+inputs}} (const \mbox{\hyperlink{structserif_1_1geometry_1_1deformation_1_1_domain_deformation}{Domain\+Deformation}}$<$ Surface, Interior, Vacuum $>$ \&model, const Reference\+Discretization \&discretization, const std\+::vector$<$ double $>$ \&coefficients)
|
|
\begin{DoxyCompactList}\small\item\em Bind physical choices and a borrowed shape vector without evaluating deformation. \end{DoxyCompactList}\item
|
|
{\footnotesize template$<$typename Surface$>$ }\\auto \mbox{\hyperlink{namespaceserif_1_1geometry_1_1deformation_a11cb43141841879bf3dc270b02b22cb8}{make\+\_\+deformation\+\_\+graph}} ()
|
|
\begin{DoxyCompactList}\small\item\em Provide a standalone graph while leaving the same computations available for equation composition. \end{DoxyCompactList}\item
|
|
{\footnotesize template$<$typename Surface$>$ \newline
|
|
requires requires(const Surface\& model, std\+::span$<$const std\+::array$<$double, 3$>$$>$ positions) \{ \{ \mbox{\hyperlink{namespaceserif_1_1geometry_1_1deformation_acb2008299cc4c40f49e8c9c0086e5356}{build\+\_\+surface\+\_\+embedding}}(model, positions) \} -\/$>$ std\+::same\+\_\+as$<$std\+::expected$<$\mbox{\hyperlink{classserif_1_1geometry_1_1deformation_1_1_surface_embedding}{Surface\+Embedding}}, \mbox{\hyperlink{structserif_1_1geometry_1_1deformation_1_1_deformation_failure}{Deformation\+Failure}}$>$$>$; \}}\\auto \mbox{\hyperlink{namespaceserif_1_1geometry_1_1deformation_ad5adf6fb962f3bd5e82121270d4f5701}{make\+\_\+deformation\+\_\+computations}} ()
|
|
\begin{DoxyCompactList}\small\item\em Compile fixed reference factors and evaluate shape motion with one dependency engine. \end{DoxyCompactList}\item
|
|
{\footnotesize template$<$discretization\+::domain\+::schema\+::\+Is\+Schema Schema = discretization\+::domain\+::schema\+::\+Core\+Envelope\+Vacuum\+Domain\+Schema$>$ \newline
|
|
requires (Schema\+::template contains\+\_\+domain$<$\mbox{\hyperlink{namespaceserif_1_1discretization_1_1domain_aa2fd687c5f7b8750fd6980f2a7a77652}{discretization\+::domain\+::\+Stellar\+Domains}}$>$() \&\& Schema\+::template contains\+\_\+domain$<$\mbox{\hyperlink{structserif_1_1discretization_1_1domain_1_1_vacuum_domain}{discretization\+::domain\+::\+Vacuum\+Domain}}$>$() \&\& Schema\+::template contains\+\_\+boundary$<$\mbox{\hyperlink{structserif_1_1discretization_1_1domain_1_1_stellar_surface_boundary}{discretization\+::domain\+::\+Stellar\+Surface\+Boundary}}$>$() \&\& Schema\+::template contains\+\_\+boundary$<$\mbox{\hyperlink{structserif_1_1discretization_1_1domain_1_1_infinity_surface_boundary}{discretization\+::domain\+::\+Infinity\+Surface\+Boundary}}$>$())}\\Reference\+Discretization \mbox{\hyperlink{namespaceserif_1_1geometry_1_1deformation_a4bda42409c67b56f9bc36ea69c7655ee}{deformation\+\_\+discretization}} (const \+::mfem\+::\+Finite\+Element\+Space \&scalar\+\_\+space, const \+::mfem\+::\+Finite\+Element\+Space \&displacement\+\_\+space, \+::mfem\+::\+Mesh \&logical\+\_\+mesh)
|
|
\begin{DoxyCompactList}\small\item\em Resolve physical domain names through the schema rather than hard-\/coded MFEM attributes. \end{DoxyCompactList}\end{DoxyCompactItemize}
|
|
\doxysubsubsection*{Variables}
|
|
\begin{DoxyCompactItemize}
|
|
\item
|
|
{\footnotesize template$<$typename Map$>$ }\\constexpr bool \mbox{\hyperlink{namespaceserif_1_1geometry_1_1deformation_a6947f0057c614e85f67ad79f50a11606}{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}
|
|
|
|
|
|
\doxysubsection{Typedef Documentation}
|
|
\Hypertarget{namespaceserif_1_1geometry_1_1deformation_a08306ee593c172f4877facc061e98f97}\index{serif::geometry::deformation@{serif::geometry::deformation}!DeformationStatus@{DeformationStatus}}
|
|
\index{DeformationStatus@{DeformationStatus}!serif::geometry::deformation@{serif::geometry::deformation}}
|
|
\doxysubsubsection{\texorpdfstring{DeformationStatus}{DeformationStatus}}
|
|
{\footnotesize\ttfamily \label{namespaceserif_1_1geometry_1_1deformation_a08306ee593c172f4877facc061e98f97}
|
|
using \mbox{\hyperlink{namespaceserif_1_1geometry_1_1deformation_a08306ee593c172f4877facc061e98f97}{serif\+::geometry\+::deformation\+::\+Deformation\+Status}} = std\+::expected$<$void, \mbox{\hyperlink{structserif_1_1geometry_1_1deformation_1_1_deformation_failure}{Deformation\+Failure}}$>$}
|
|
|
|
\Hypertarget{namespaceserif_1_1geometry_1_1deformation_ae1f99a74025eac52e6ff4a4b77fb41c6}\index{serif::geometry::deformation@{serif::geometry::deformation}!DeformationWorkspace@{DeformationWorkspace}}
|
|
\index{DeformationWorkspace@{DeformationWorkspace}!serif::geometry::deformation@{serif::geometry::deformation}}
|
|
\doxysubsubsection{\texorpdfstring{DeformationWorkspace}{DeformationWorkspace}}
|
|
{\footnotesize\ttfamily \label{namespaceserif_1_1geometry_1_1deformation_ae1f99a74025eac52e6ff4a4b77fb41c6}
|
|
template$<$typename Map$>$ \\
|
|
using \mbox{\hyperlink{namespaceserif_1_1geometry_1_1deformation_ae1f99a74025eac52e6ff4a4b77fb41c6}{serif\+::geometry\+::deformation\+::\+Deformation\+Workspace}} = typename Map\+::\+Workspace}
|
|
|
|
|
|
|
|
\doxysubsection{Enumeration Type Documentation}
|
|
\Hypertarget{namespaceserif_1_1geometry_1_1deformation_abff36c0dd3d8b9c916a2e928ab69a871}\index{serif::geometry::deformation@{serif::geometry::deformation}!DeformationFailureReason@{DeformationFailureReason}}
|
|
\index{DeformationFailureReason@{DeformationFailureReason}!serif::geometry::deformation@{serif::geometry::deformation}}
|
|
\doxysubsubsection{\texorpdfstring{DeformationFailureReason}{DeformationFailureReason}}
|
|
{\footnotesize\ttfamily \label{namespaceserif_1_1geometry_1_1deformation_abff36c0dd3d8b9c916a2e928ab69a871}
|
|
enum class \mbox{\hyperlink{namespaceserif_1_1geometry_1_1deformation_abff36c0dd3d8b9c916a2e928ab69a871}{serif\+::geometry\+::deformation\+::\+Deformation\+Failure\+Reason}}\hspace{0.3cm}{\ttfamily [strong]}}
|
|
|
|
\begin{DoxyEnumFields}[2]{Enumerator}
|
|
\raisebox{\heightof{T}}[0pt][0pt]{\index{invalid\_configuration@{invalid\_configuration}!serif::geometry::deformation@{serif::geometry::deformation}}\index{serif::geometry::deformation@{serif::geometry::deformation}!invalid\_configuration@{invalid\_configuration}}}\Hypertarget{namespaceserif_1_1geometry_1_1deformation_abff36c0dd3d8b9c916a2e928ab69a871a9cc57114b319994e90322314a00521d4}\label{namespaceserif_1_1geometry_1_1deformation_abff36c0dd3d8b9c916a2e928ab69a871a9cc57114b319994e90322314a00521d4}
|
|
invalid\+\_\+configuration&\\
|
|
\hline
|
|
|
|
\raisebox{\heightof{T}}[0pt][0pt]{\index{incompatible\_discretization@{incompatible\_discretization}!serif::geometry::deformation@{serif::geometry::deformation}}\index{serif::geometry::deformation@{serif::geometry::deformation}!incompatible\_discretization@{incompatible\_discretization}}}\Hypertarget{namespaceserif_1_1geometry_1_1deformation_abff36c0dd3d8b9c916a2e928ab69a871ad73416fa06a45d748a7c8d4349054cbb}\label{namespaceserif_1_1geometry_1_1deformation_abff36c0dd3d8b9c916a2e928ab69a871ad73416fa06a45d748a7c8d4349054cbb}
|
|
incompatible\+\_\+discretization&\\
|
|
\hline
|
|
|
|
\raisebox{\heightof{T}}[0pt][0pt]{\index{invalid\_size@{invalid\_size}!serif::geometry::deformation@{serif::geometry::deformation}}\index{serif::geometry::deformation@{serif::geometry::deformation}!invalid\_size@{invalid\_size}}}\Hypertarget{namespaceserif_1_1geometry_1_1deformation_abff36c0dd3d8b9c916a2e928ab69a871a0181b84c792eb178181854d09c8fe7b9}\label{namespaceserif_1_1geometry_1_1deformation_abff36c0dd3d8b9c916a2e928ab69a871a0181b84c792eb178181854d09c8fe7b9}
|
|
invalid\+\_\+size&\\
|
|
\hline
|
|
|
|
\raisebox{\heightof{T}}[0pt][0pt]{\index{non\_finite@{non\_finite}!serif::geometry::deformation@{serif::geometry::deformation}}\index{serif::geometry::deformation@{serif::geometry::deformation}!non\_finite@{non\_finite}}}\Hypertarget{namespaceserif_1_1geometry_1_1deformation_abff36c0dd3d8b9c916a2e928ab69a871a4013d0a2d04acba5257678a15922a094}\label{namespaceserif_1_1geometry_1_1deformation_abff36c0dd3d8b9c916a2e928ab69a871a4013d0a2d04acba5257678a15922a094}
|
|
non\+\_\+finite&\\
|
|
\hline
|
|
|
|
\raisebox{\heightof{T}}[0pt][0pt]{\index{unresolved\_surface@{unresolved\_surface}!serif::geometry::deformation@{serif::geometry::deformation}}\index{serif::geometry::deformation@{serif::geometry::deformation}!unresolved\_surface@{unresolved\_surface}}}\Hypertarget{namespaceserif_1_1geometry_1_1deformation_abff36c0dd3d8b9c916a2e928ab69a871a9a8a2ae86e6fce17b9be87ec37249370}\label{namespaceserif_1_1geometry_1_1deformation_abff36c0dd3d8b9c916a2e928ab69a871a9a8a2ae86e6fce17b9be87ec37249370}
|
|
unresolved\+\_\+surface&\\
|
|
\hline
|
|
|
|
\raisebox{\heightof{T}}[0pt][0pt]{\index{invalid\_geometry@{invalid\_geometry}!serif::geometry::deformation@{serif::geometry::deformation}}\index{serif::geometry::deformation@{serif::geometry::deformation}!invalid\_geometry@{invalid\_geometry}}}\Hypertarget{namespaceserif_1_1geometry_1_1deformation_abff36c0dd3d8b9c916a2e928ab69a871a146816aaee11d5a21b09baac60c9812e}\label{namespaceserif_1_1geometry_1_1deformation_abff36c0dd3d8b9c916a2e928ab69a871a146816aaee11d5a21b09baac60c9812e}
|
|
invalid\+\_\+geometry&\\
|
|
\hline
|
|
|
|
\end{DoxyEnumFields}
|
|
|
|
|
|
\doxysubsection{Function Documentation}
|
|
\Hypertarget{namespaceserif_1_1geometry_1_1deformation_a1c527e713dfc9f833b3e0bd1b757c731}\index{serif::geometry::deformation@{serif::geometry::deformation}!apply\_jacobian@{apply\_jacobian}}
|
|
\index{apply\_jacobian@{apply\_jacobian}!serif::geometry::deformation@{serif::geometry::deformation}}
|
|
\doxysubsubsection{\texorpdfstring{apply\_jacobian()}{apply\_jacobian()}\hspace{0.1cm}{\footnotesize\ttfamily [1/2]}}
|
|
{\footnotesize\ttfamily \label{namespaceserif_1_1geometry_1_1deformation_a1c527e713dfc9f833b3e0bd1b757c731}
|
|
template$<$Deformation\+Map Map$>$ \\
|
|
\mbox{\hyperlink{namespaceserif_1_1geometry_1_1deformation_a08306ee593c172f4877facc061e98f97}{Deformation\+Status}} serif\+::geometry\+::deformation\+::apply\+\_\+jacobian (\begin{DoxyParamCaption}\item[{const \mbox{\hyperlink{structserif_1_1geometry_1_1deformation_1_1_deformation_linearization}{Deformation\+Linearization}}$<$ Map $>$ \&}]{state}{, }\item[{std\+::span$<$ const double $>$}]{direction}{, }\item[{std\+::span$<$ double $>$}]{output}{, }\item[{\mbox{\hyperlink{namespaceserif_1_1geometry_1_1deformation_ae1f99a74025eac52e6ff4a4b77fb41c6}{Deformation\+Workspace}}$<$ Map $>$ \&}]{workspace}{}\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [nodiscard]}}
|
|
|
|
|
|
|
|
Evaluate a tangent about the cache\textquotesingle{}s accepted shape, not the caller\textquotesingle{}s next trial state.
|
|
|
|
\Hypertarget{namespaceserif_1_1geometry_1_1deformation_a47622764fd6178445526c8b3d984a6b2}\index{serif::geometry::deformation@{serif::geometry::deformation}!apply\_jacobian@{apply\_jacobian}}
|
|
\index{apply\_jacobian@{apply\_jacobian}!serif::geometry::deformation@{serif::geometry::deformation}}
|
|
\doxysubsubsection{\texorpdfstring{apply\_jacobian()}{apply\_jacobian()}\hspace{0.1cm}{\footnotesize\ttfamily [2/2]}}
|
|
{\footnotesize\ttfamily \label{namespaceserif_1_1geometry_1_1deformation_a47622764fd6178445526c8b3d984a6b2}
|
|
template$<$Deformation\+Map Map$>$ \\
|
|
\mbox{\hyperlink{namespaceserif_1_1geometry_1_1deformation_a08306ee593c172f4877facc061e98f97}{Deformation\+Status}} serif\+::geometry\+::deformation\+::apply\+\_\+jacobian (\begin{DoxyParamCaption}\item[{const Map \&}]{map}{, }\item[{std\+::span$<$ const double $>$}]{parameters}{, }\item[{std\+::span$<$ const double $>$}]{direction}{, }\item[{std\+::span$<$ double $>$}]{displacement\+\_\+direction}{, }\item[{\mbox{\hyperlink{namespaceserif_1_1geometry_1_1deformation_ae1f99a74025eac52e6ff4a4b77fb41c6}{Deformation\+Workspace}}$<$ Map $>$ \&}]{workspace}{}\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [nodiscard]}}
|
|
|
|
|
|
|
|
Linear maps reuse their primal action; nonlinear maps supply their exact tangent.
|
|
|
|
\Hypertarget{namespaceserif_1_1geometry_1_1deformation_a7e4a280dbda654cc0d4b9b462752e757}\index{serif::geometry::deformation@{serif::geometry::deformation}!apply\_jacobian\_transpose@{apply\_jacobian\_transpose}}
|
|
\index{apply\_jacobian\_transpose@{apply\_jacobian\_transpose}!serif::geometry::deformation@{serif::geometry::deformation}}
|
|
\doxysubsubsection{\texorpdfstring{apply\_jacobian\_transpose()}{apply\_jacobian\_transpose()}\hspace{0.1cm}{\footnotesize\ttfamily [1/2]}}
|
|
{\footnotesize\ttfamily \label{namespaceserif_1_1geometry_1_1deformation_a7e4a280dbda654cc0d4b9b462752e757}
|
|
template$<$Deformation\+Map Map$>$ \\
|
|
\mbox{\hyperlink{namespaceserif_1_1geometry_1_1deformation_a08306ee593c172f4877facc061e98f97}{Deformation\+Status}} serif\+::geometry\+::deformation\+::apply\+\_\+jacobian\+\_\+transpose (\begin{DoxyParamCaption}\item[{const \mbox{\hyperlink{structserif_1_1geometry_1_1deformation_1_1_deformation_linearization}{Deformation\+Linearization}}$<$ Map $>$ \&}]{state}{, }\item[{std\+::span$<$ const double $>$}]{dual}{, }\item[{std\+::span$<$ double $>$}]{output}{, }\item[{\mbox{\hyperlink{namespaceserif_1_1geometry_1_1deformation_ae1f99a74025eac52e6ff4a4b77fb41c6}{Deformation\+Workspace}}$<$ Map $>$ \&}]{workspace}{}\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [nodiscard]}}
|
|
|
|
|
|
|
|
Pull displacement forces back to the accepted independent shape coordinates.
|
|
|
|
\Hypertarget{namespaceserif_1_1geometry_1_1deformation_a28c839bb898ee76ac62ceaddadcba6b1}\index{serif::geometry::deformation@{serif::geometry::deformation}!apply\_jacobian\_transpose@{apply\_jacobian\_transpose}}
|
|
\index{apply\_jacobian\_transpose@{apply\_jacobian\_transpose}!serif::geometry::deformation@{serif::geometry::deformation}}
|
|
\doxysubsubsection{\texorpdfstring{apply\_jacobian\_transpose()}{apply\_jacobian\_transpose()}\hspace{0.1cm}{\footnotesize\ttfamily [2/2]}}
|
|
{\footnotesize\ttfamily \label{namespaceserif_1_1geometry_1_1deformation_a28c839bb898ee76ac62ceaddadcba6b1}
|
|
template$<$Deformation\+Map Map$>$ \\
|
|
\mbox{\hyperlink{namespaceserif_1_1geometry_1_1deformation_a08306ee593c172f4877facc061e98f97}{Deformation\+Status}} serif\+::geometry\+::deformation\+::apply\+\_\+jacobian\+\_\+transpose (\begin{DoxyParamCaption}\item[{const Map \&}]{map}{, }\item[{std\+::span$<$ const double $>$}]{parameters}{, }\item[{std\+::span$<$ const double $>$}]{displacement\+\_\+dual}{, }\item[{std\+::span$<$ double $>$}]{parameter\+\_\+dual}{, }\item[{\mbox{\hyperlink{namespaceserif_1_1geometry_1_1deformation_ae1f99a74025eac52e6ff4a4b77fb41c6}{Deformation\+Workspace}}$<$ Map $>$ \&}]{workspace}{}\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [nodiscard]}}
|
|
|
|
|
|
|
|
Transfer virtual work from the displacement field to its independent shape coefficients.
|
|
|
|
\Hypertarget{namespaceserif_1_1geometry_1_1deformation_aeabb23372e9ed935ed539925bf56b316}\index{serif::geometry::deformation@{serif::geometry::deformation}!apply\_pullback\_derivative@{apply\_pullback\_derivative}}
|
|
\index{apply\_pullback\_derivative@{apply\_pullback\_derivative}!serif::geometry::deformation@{serif::geometry::deformation}}
|
|
\doxysubsubsection{\texorpdfstring{apply\_pullback\_derivative()}{apply\_pullback\_derivative()}\hspace{0.1cm}{\footnotesize\ttfamily [1/2]}}
|
|
{\footnotesize\ttfamily \label{namespaceserif_1_1geometry_1_1deformation_aeabb23372e9ed935ed539925bf56b316}
|
|
template$<$Deformation\+Map Map$>$ \\
|
|
\mbox{\hyperlink{namespaceserif_1_1geometry_1_1deformation_a08306ee593c172f4877facc061e98f97}{Deformation\+Status}} serif\+::geometry\+::deformation\+::apply\+\_\+pullback\+\_\+derivative (\begin{DoxyParamCaption}\item[{const \mbox{\hyperlink{structserif_1_1geometry_1_1deformation_1_1_deformation_linearization}{Deformation\+Linearization}}$<$ Map $>$ \&}]{state}{, }\item[{std\+::span$<$ const double $>$}]{direction}{, }\item[{std\+::span$<$ const double $>$}]{dual}{, }\item[{std\+::span$<$ double $>$}]{output}{, }\item[{\mbox{\hyperlink{namespaceserif_1_1geometry_1_1deformation_ae1f99a74025eac52e6ff4a4b77fb41c6}{Deformation\+Workspace}}$<$ Map $>$ \&}]{workspace}{}\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [nodiscard]}}
|
|
|
|
|
|
|
|
Keep the geometric contribution to the Newton force derivative available for nonlinear models.
|
|
|
|
\Hypertarget{namespaceserif_1_1geometry_1_1deformation_a5738813c140911a0c9ec69eec58af8e7}\index{serif::geometry::deformation@{serif::geometry::deformation}!apply\_pullback\_derivative@{apply\_pullback\_derivative}}
|
|
\index{apply\_pullback\_derivative@{apply\_pullback\_derivative}!serif::geometry::deformation@{serif::geometry::deformation}}
|
|
\doxysubsubsection{\texorpdfstring{apply\_pullback\_derivative()}{apply\_pullback\_derivative()}\hspace{0.1cm}{\footnotesize\ttfamily [2/2]}}
|
|
{\footnotesize\ttfamily \label{namespaceserif_1_1geometry_1_1deformation_a5738813c140911a0c9ec69eec58af8e7}
|
|
template$<$Deformation\+Map Map$>$ \\
|
|
\mbox{\hyperlink{namespaceserif_1_1geometry_1_1deformation_a08306ee593c172f4877facc061e98f97}{Deformation\+Status}} serif\+::geometry\+::deformation\+::apply\+\_\+pullback\+\_\+derivative (\begin{DoxyParamCaption}\item[{const Map \&}]{map}{, }\item[{std\+::span$<$ const double $>$}]{parameters}{, }\item[{std\+::span$<$ const double $>$}]{direction}{, }\item[{std\+::span$<$ const double $>$}]{displacement\+\_\+dual}{, }\item[{std\+::span$<$ double $>$}]{parameter\+\_\+dual}{, }\item[{\mbox{\hyperlink{namespaceserif_1_1geometry_1_1deformation_ae1f99a74025eac52e6ff4a4b77fb41c6}{Deformation\+Workspace}}$<$ Map $>$ \&}]{workspace}{}\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [nodiscard]}}
|
|
|
|
|
|
|
|
Differentiate the transpose at fixed dual; zero is justified only for a declared linear map.
|
|
|
|
\Hypertarget{namespaceserif_1_1geometry_1_1deformation_ad539328115ca03a435d339f2c551a21b}\index{serif::geometry::deformation@{serif::geometry::deformation}!build\_displacement@{build\_displacement}}
|
|
\index{build\_displacement@{build\_displacement}!serif::geometry::deformation@{serif::geometry::deformation}}
|
|
\doxysubsubsection{\texorpdfstring{build\_displacement()}{build\_displacement()}}
|
|
{\footnotesize\ttfamily \label{namespaceserif_1_1geometry_1_1deformation_ad539328115ca03a435d339f2c551a21b}
|
|
template$<$Deformation\+Map Map$>$ \\
|
|
\mbox{\hyperlink{namespaceserif_1_1geometry_1_1deformation_a08306ee593c172f4877facc061e98f97}{Deformation\+Status}} serif\+::geometry\+::deformation\+::build\+\_\+displacement (\begin{DoxyParamCaption}\item[{const Map \&}]{map}{, }\item[{std\+::span$<$ const double $>$}]{parameters}{, }\item[{std\+::span$<$ double $>$}]{displacement}{, }\item[{\mbox{\hyperlink{namespaceserif_1_1geometry_1_1deformation_ae1f99a74025eac52e6ff4a4b77fb41c6}{Deformation\+Workspace}}$<$ Map $>$ \&}]{workspace}{}\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [nodiscard]}}
|
|
|
|
|
|
|
|
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.
|
|
|
|
\Hypertarget{namespaceserif_1_1geometry_1_1deformation_acb2008299cc4c40f49e8c9c0086e5356}\index{serif::geometry::deformation@{serif::geometry::deformation}!build\_surface\_embedding@{build\_surface\_embedding}}
|
|
\index{build\_surface\_embedding@{build\_surface\_embedding}!serif::geometry::deformation@{serif::geometry::deformation}}
|
|
\doxysubsubsection{\texorpdfstring{build\_surface\_embedding()}{build\_surface\_embedding()}\hspace{0.1cm}{\footnotesize\ttfamily [1/2]}}
|
|
{\footnotesize\ttfamily \label{namespaceserif_1_1geometry_1_1deformation_acb2008299cc4c40f49e8c9c0086e5356}
|
|
std\+::expected$<$ \mbox{\hyperlink{classserif_1_1geometry_1_1deformation_1_1_surface_embedding}{Surface\+Embedding}}, \mbox{\hyperlink{structserif_1_1geometry_1_1deformation_1_1_deformation_failure}{Deformation\+Failure}} $>$ serif\+::geometry\+::deformation\+::build\+\_\+surface\+\_\+embedding (\begin{DoxyParamCaption}\item[{const \mbox{\hyperlink{structserif_1_1geometry_1_1deformation_1_1_nodal_radial_surface}{Nodal\+Radial\+Surface}} \&}]{model}{, }\item[{std\+::span$<$ const std\+::array$<$ double, 3 $>$ $>$}]{positions}{}\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [nodiscard]}}
|
|
|
|
|
|
|
|
Compile fixed radial directions from ordered physical reference positions without retaining backend objects.
|
|
|
|
\Hypertarget{namespaceserif_1_1geometry_1_1deformation_a21c05b3c7115c90ea951ee87a1efc714}\index{serif::geometry::deformation@{serif::geometry::deformation}!build\_surface\_embedding@{build\_surface\_embedding}}
|
|
\index{build\_surface\_embedding@{build\_surface\_embedding}!serif::geometry::deformation@{serif::geometry::deformation}}
|
|
\doxysubsubsection{\texorpdfstring{build\_surface\_embedding()}{build\_surface\_embedding()}\hspace{0.1cm}{\footnotesize\ttfamily [2/2]}}
|
|
{\footnotesize\ttfamily \label{namespaceserif_1_1geometry_1_1deformation_a21c05b3c7115c90ea951ee87a1efc714}
|
|
std\+::expected$<$ \mbox{\hyperlink{classserif_1_1geometry_1_1deformation_1_1_surface_embedding}{Surface\+Embedding}}, \mbox{\hyperlink{structserif_1_1geometry_1_1deformation_1_1_deformation_failure}{Deformation\+Failure}} $>$ serif\+::geometry\+::deformation\+::build\+\_\+surface\+\_\+embedding (\begin{DoxyParamCaption}\item[{const \mbox{\hyperlink{structserif_1_1geometry_1_1deformation_1_1_spherical_harmonic_surface}{Spherical\+Harmonic\+Surface}} \&}]{model}{, }\item[{std\+::span$<$ const std\+::array$<$ double, 3 $>$ $>$}]{positions}{}\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [nodiscard]}}
|
|
|
|
|
|
|
|
Sample physically normalized real harmonics and reject unresolved modes without renormalizing or dropping coordinates.
|
|
|
|
\Hypertarget{namespaceserif_1_1geometry_1_1deformation_a43ceea2db7df958a0bec16629328afc4}\index{serif::geometry::deformation@{serif::geometry::deformation}!compose\_deformation@{compose\_deformation}}
|
|
\index{compose\_deformation@{compose\_deformation}!serif::geometry::deformation@{serif::geometry::deformation}}
|
|
\doxysubsubsection{\texorpdfstring{compose\_deformation()}{compose\_deformation()}}
|
|
{\footnotesize\ttfamily \label{namespaceserif_1_1geometry_1_1deformation_a43ceea2db7df958a0bec16629328afc4}
|
|
template$<$Deformation\+Map Surface\+Map, Deformation\+Map Extension\+Map$>$ \newline
|
|
requires std\+::same\+\_\+as$<$typename Surface\+Map\+::\+Output\+Space, typename Extension\+Map\+::\+Input\+Space$>$\\
|
|
std\+::expected$<$ \mbox{\hyperlink{classserif_1_1geometry_1_1deformation_1_1_composed_deformation}{Composed\+Deformation}}$<$ Surface\+Map, Extension\+Map $>$, \mbox{\hyperlink{structserif_1_1geometry_1_1deformation_1_1_deformation_failure}{Deformation\+Failure}} $>$ serif\+::geometry\+::deformation\+::compose\+\_\+deformation (\begin{DoxyParamCaption}\item[{std\+::shared\+\_\+ptr$<$ const Surface\+Map $>$}]{surface}{, }\item[{std\+::shared\+\_\+ptr$<$ const Extension\+Map $>$}]{extension}{}\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [nodiscard]}}
|
|
|
|
|
|
|
|
Validate factor sizes before constructing an owning mathematical composition.
|
|
|
|
\Hypertarget{namespaceserif_1_1geometry_1_1deformation_a4bda42409c67b56f9bc36ea69c7655ee}\index{serif::geometry::deformation@{serif::geometry::deformation}!deformation\_discretization@{deformation\_discretization}}
|
|
\index{deformation\_discretization@{deformation\_discretization}!serif::geometry::deformation@{serif::geometry::deformation}}
|
|
\doxysubsubsection{\texorpdfstring{deformation\_discretization()}{deformation\_discretization()}}
|
|
{\footnotesize\ttfamily \label{namespaceserif_1_1geometry_1_1deformation_a4bda42409c67b56f9bc36ea69c7655ee}
|
|
template$<$discretization\+::domain\+::schema\+::\+Is\+Schema Schema = discretization\+::domain\+::schema\+::\+Core\+Envelope\+Vacuum\+Domain\+Schema$>$ \newline
|
|
requires (Schema\+::template contains\+\_\+domain$<$\mbox{\hyperlink{namespaceserif_1_1discretization_1_1domain_aa2fd687c5f7b8750fd6980f2a7a77652}{discretization\+::domain\+::\+Stellar\+Domains}}$>$() \&\& Schema\+::template contains\+\_\+domain$<$\mbox{\hyperlink{structserif_1_1discretization_1_1domain_1_1_vacuum_domain}{discretization\+::domain\+::\+Vacuum\+Domain}}$>$() \&\& Schema\+::template contains\+\_\+boundary$<$\mbox{\hyperlink{structserif_1_1discretization_1_1domain_1_1_stellar_surface_boundary}{discretization\+::domain\+::\+Stellar\+Surface\+Boundary}}$>$() \&\& Schema\+::template contains\+\_\+boundary$<$\mbox{\hyperlink{structserif_1_1discretization_1_1domain_1_1_infinity_surface_boundary}{discretization\+::domain\+::\+Infinity\+Surface\+Boundary}}$>$())\\
|
|
Reference\+Discretization serif\+::geometry\+::deformation\+::backend\+::mfem\+::deformation\+\_\+discretization (\begin{DoxyParamCaption}\item[{const \+::mfem\+::\+Finite\+Element\+Space \&}]{scalar\+\_\+space}{, }\item[{const \+::mfem\+::\+Finite\+Element\+Space \&}]{displacement\+\_\+space}{, }\item[{\+::mfem\+::\+Mesh \&}]{logical\+\_\+mesh}{}\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [nodiscard]}}
|
|
|
|
|
|
|
|
Resolve physical domain names through the schema rather than hard-\/coded MFEM attributes.
|
|
|
|
\Hypertarget{namespaceserif_1_1geometry_1_1deformation_a7c97f13afaf99ecbde93c21ab3f9f771}\index{serif::geometry::deformation@{serif::geometry::deformation}!evaluate\_displacement@{evaluate\_displacement}}
|
|
\index{evaluate\_displacement@{evaluate\_displacement}!serif::geometry::deformation@{serif::geometry::deformation}}
|
|
\doxysubsubsection{\texorpdfstring{evaluate\_displacement()}{evaluate\_displacement()}}
|
|
{\footnotesize\ttfamily \label{namespaceserif_1_1geometry_1_1deformation_a7c97f13afaf99ecbde93c21ab3f9f771}
|
|
template$<$Deformation\+Map Map$>$ \\
|
|
std\+::expected$<$ std\+::vector$<$ double $>$, \mbox{\hyperlink{structserif_1_1geometry_1_1deformation_1_1_deformation_failure}{Deformation\+Failure}} $>$ serif\+::geometry\+::deformation\+::evaluate\+\_\+displacement (\begin{DoxyParamCaption}\item[{const Map \&}]{map}{, }\item[{std\+::span$<$ const double $>$}]{parameters}{}\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [nodiscard]}}
|
|
|
|
|
|
|
|
Allocate a result for graph publication while leaving repeated low-\/level actions allocation-\/free.
|
|
|
|
\Hypertarget{namespaceserif_1_1geometry_1_1deformation_a08faf47d7228e20ed4bae4a86c3b12f0}\index{serif::geometry::deformation@{serif::geometry::deformation}!make\_deformation\_computations@{make\_deformation\_computations}}
|
|
\index{make\_deformation\_computations@{make\_deformation\_computations}!serif::geometry::deformation@{serif::geometry::deformation}}
|
|
\doxysubsubsection{\texorpdfstring{make\_deformation\_computations()}{make\_deformation\_computations()}\hspace{0.1cm}{\footnotesize\ttfamily [1/2]}}
|
|
{\footnotesize\ttfamily \label{namespaceserif_1_1geometry_1_1deformation_a08faf47d7228e20ed4bae4a86c3b12f0}
|
|
template$<$Deformation\+Map Surface\+Map, Deformation\+Map Extension\+Map$>$ \newline
|
|
requires std\+::same\+\_\+as$<$typename Surface\+Map\+::\+Output\+Space, typename Extension\+Map\+::\+Input\+Space$>$\\
|
|
auto serif\+::geometry\+::deformation\+::make\+\_\+deformation\+\_\+computations (\begin{DoxyParamCaption}{}{}\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [nodiscard]}}
|
|
|
|
|
|
|
|
Declare the numerical composition as ordinary dependency computations.
|
|
|
|
\begin{DoxyNote}{Note}
|
|
Shared immutable factors, coefficient snapshots, and results belong to the dependency cache. Analytical actions remain independent functions.
|
|
\end{DoxyNote}
|
|
\Hypertarget{namespaceserif_1_1geometry_1_1deformation_ad5adf6fb962f3bd5e82121270d4f5701}\index{serif::geometry::deformation@{serif::geometry::deformation}!make\_deformation\_computations@{make\_deformation\_computations}}
|
|
\index{make\_deformation\_computations@{make\_deformation\_computations}!serif::geometry::deformation@{serif::geometry::deformation}}
|
|
\doxysubsubsection{\texorpdfstring{make\_deformation\_computations()}{make\_deformation\_computations()}\hspace{0.1cm}{\footnotesize\ttfamily [2/2]}}
|
|
{\footnotesize\ttfamily \label{namespaceserif_1_1geometry_1_1deformation_ad5adf6fb962f3bd5e82121270d4f5701}
|
|
template$<$typename Surface$>$ \newline
|
|
requires requires(const Surface\& model, std\+::span$<$const std\+::array$<$double, 3$>$$>$ positions) \{ \{ \mbox{\hyperlink{namespaceserif_1_1geometry_1_1deformation_acb2008299cc4c40f49e8c9c0086e5356}{build\+\_\+surface\+\_\+embedding}}(model, positions) \} -\/$>$ std\+::same\+\_\+as$<$std\+::expected$<$\mbox{\hyperlink{classserif_1_1geometry_1_1deformation_1_1_surface_embedding}{Surface\+Embedding}}, \mbox{\hyperlink{structserif_1_1geometry_1_1deformation_1_1_deformation_failure}{Deformation\+Failure}}$>$$>$; \}\\
|
|
auto serif\+::geometry\+::deformation\+::backend\+::mfem\+::make\+\_\+deformation\+\_\+computations (\begin{DoxyParamCaption}{}{}\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [nodiscard]}}
|
|
|
|
|
|
|
|
Compile fixed reference factors and evaluate shape motion with one dependency engine.
|
|
|
|
\begin{DoxyNote}{Note}
|
|
Configuration values are named context inputs. Factories declare work; try\+\_\+prepare performs it explicitly.
|
|
\end{DoxyNote}
|
|
\Hypertarget{namespaceserif_1_1geometry_1_1deformation_a6f1a3c9e7423e2e4945a75e91eb70b3b}\index{serif::geometry::deformation@{serif::geometry::deformation}!make\_deformation\_graph@{make\_deformation\_graph}}
|
|
\index{make\_deformation\_graph@{make\_deformation\_graph}!serif::geometry::deformation@{serif::geometry::deformation}}
|
|
\doxysubsubsection{\texorpdfstring{make\_deformation\_graph()}{make\_deformation\_graph()}\hspace{0.1cm}{\footnotesize\ttfamily [1/2]}}
|
|
{\footnotesize\ttfamily \label{namespaceserif_1_1geometry_1_1deformation_a6f1a3c9e7423e2e4945a75e91eb70b3b}
|
|
template$<$Deformation\+Map Surface\+Map, Deformation\+Map Extension\+Map$>$ \newline
|
|
requires std\+::same\+\_\+as$<$typename Surface\+Map\+::\+Output\+Space, typename Extension\+Map\+::\+Input\+Space$>$\\
|
|
auto serif\+::geometry\+::deformation\+::make\+\_\+deformation\+\_\+graph (\begin{DoxyParamCaption}{}{}\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [nodiscard]}}
|
|
|
|
|
|
|
|
Compose independently compiled mathematical factors without introducing a prepared-\/operator facade.
|
|
|
|
\Hypertarget{namespaceserif_1_1geometry_1_1deformation_a11cb43141841879bf3dc270b02b22cb8}\index{serif::geometry::deformation@{serif::geometry::deformation}!make\_deformation\_graph@{make\_deformation\_graph}}
|
|
\index{make\_deformation\_graph@{make\_deformation\_graph}!serif::geometry::deformation@{serif::geometry::deformation}}
|
|
\doxysubsubsection{\texorpdfstring{make\_deformation\_graph()}{make\_deformation\_graph()}\hspace{0.1cm}{\footnotesize\ttfamily [2/2]}}
|
|
{\footnotesize\ttfamily \label{namespaceserif_1_1geometry_1_1deformation_a11cb43141841879bf3dc270b02b22cb8}
|
|
template$<$typename Surface$>$ \\
|
|
auto serif\+::geometry\+::deformation\+::backend\+::mfem\+::make\+\_\+deformation\+\_\+graph (\begin{DoxyParamCaption}{}{}\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [nodiscard]}}
|
|
|
|
|
|
|
|
Provide a standalone graph while leaving the same computations available for equation composition.
|
|
|
|
\Hypertarget{namespaceserif_1_1geometry_1_1deformation_a10e993d0c69b24df4bb3cd1a5ac12e9f}\index{serif::geometry::deformation@{serif::geometry::deformation}!make\_deformation\_inputs@{make\_deformation\_inputs}}
|
|
\index{make\_deformation\_inputs@{make\_deformation\_inputs}!serif::geometry::deformation@{serif::geometry::deformation}}
|
|
\doxysubsubsection{\texorpdfstring{make\_deformation\_inputs()}{make\_deformation\_inputs()}}
|
|
{\footnotesize\ttfamily \label{namespaceserif_1_1geometry_1_1deformation_a10e993d0c69b24df4bb3cd1a5ac12e9f}
|
|
template$<$typename Surface, typename Interior, typename Vacuum$>$ \\
|
|
auto serif\+::geometry\+::deformation\+::backend\+::mfem\+::make\+\_\+deformation\+\_\+inputs (\begin{DoxyParamCaption}\item[{const \mbox{\hyperlink{structserif_1_1geometry_1_1deformation_1_1_domain_deformation}{Domain\+Deformation}}$<$ Surface, Interior, Vacuum $>$ \&}]{model}{, }\item[{const Reference\+Discretization \&}]{discretization}{, }\item[{const std\+::vector$<$ double $>$ \&}]{coefficients}{}\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [nodiscard]}}
|
|
|
|
|
|
|
|
Bind physical choices and a borrowed shape vector without evaluating deformation.
|
|
|
|
\begin{DoxyNote}{Note}
|
|
Meshes, spaces, and the vector must outlive the context. Borrowing the container retains its current storage and size even if the caller subsequently resizes it. Coordinate edits must notify MFEM through its normal node-\/update API.
|
|
\end{DoxyNote}
|
|
\Hypertarget{namespaceserif_1_1geometry_1_1deformation_aa3ab7cc89a2262523938808363fda865}\index{serif::geometry::deformation@{serif::geometry::deformation}!make\_deformation\_workspace@{make\_deformation\_workspace}}
|
|
\index{make\_deformation\_workspace@{make\_deformation\_workspace}!serif::geometry::deformation@{serif::geometry::deformation}}
|
|
\doxysubsubsection{\texorpdfstring{make\_deformation\_workspace()}{make\_deformation\_workspace()}}
|
|
{\footnotesize\ttfamily \label{namespaceserif_1_1geometry_1_1deformation_aa3ab7cc89a2262523938808363fda865}
|
|
template$<$Deformation\+Map Map$>$ \\
|
|
\mbox{\hyperlink{namespaceserif_1_1geometry_1_1deformation_ae1f99a74025eac52e6ff4a4b77fb41c6}{Deformation\+Workspace}}$<$ Map $>$ serif\+::geometry\+::deformation\+::make\+\_\+deformation\+\_\+workspace (\begin{DoxyParamCaption}\item[{const Map \&}]{map}{}\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [nodiscard]}}
|
|
|
|
|
|
|
|
Allocate action scratch explicitly, once per independent caller.
|
|
|
|
\Hypertarget{namespaceserif_1_1geometry_1_1deformation_a9744ea82df8c839a005c29235aecdb03}\index{serif::geometry::deformation@{serif::geometry::deformation}!make\_radial\_extension@{make\_radial\_extension}}
|
|
\index{make\_radial\_extension@{make\_radial\_extension}!serif::geometry::deformation@{serif::geometry::deformation}}
|
|
\doxysubsubsection{\texorpdfstring{make\_radial\_extension()}{make\_radial\_extension()}}
|
|
{\footnotesize\ttfamily \label{namespaceserif_1_1geometry_1_1deformation_a9744ea82df8c839a005c29235aecdb03}
|
|
std\+::expected$<$ \mbox{\hyperlink{classserif_1_1geometry_1_1deformation_1_1_radial_extension}{Radial\+Extension}}, \mbox{\hyperlink{structserif_1_1geometry_1_1deformation_1_1_deformation_failure}{Deformation\+Failure}} $>$ serif\+::geometry\+::deformation\+::make\+\_\+radial\+\_\+extension (\begin{DoxyParamCaption}\item[{std\+::shared\+\_\+ptr$<$ const \mbox{\hyperlink{classserif_1_1geometry_1_1deformation_1_1_radial_interpolation}{Radial\+Interpolation}} $>$}]{interpolation}{, }\item[{\mbox{\hyperlink{structserif_1_1geometry_1_1deformation_1_1_power_law_radial_extension}{Power\+Law\+Radial\+Extension}}}]{interior}{ = {\ttfamily \{\}}, }\item[{\mbox{\hyperlink{structserif_1_1geometry_1_1deformation_1_1_fixed_infinity_radial_extension}{Fixed\+Infinity\+Radial\+Extension}}}]{vacuum}{ = {\ttfamily \{\}}}\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [nodiscard]}}
|
|
|
|
|
|
|
|
Compile regional weights while sharing the immutable surface interpolation. The interpolation factory has already established every reference-\/table invariant.
|
|
|
|
\Hypertarget{namespaceserif_1_1geometry_1_1deformation_a81d1d0df5d554d5af5149549b484a0bb}\index{serif::geometry::deformation@{serif::geometry::deformation}!make\_radial\_interpolation@{make\_radial\_interpolation}}
|
|
\index{make\_radial\_interpolation@{make\_radial\_interpolation}!serif::geometry::deformation@{serif::geometry::deformation}}
|
|
\doxysubsubsection{\texorpdfstring{make\_radial\_interpolation()}{make\_radial\_interpolation()}}
|
|
{\footnotesize\ttfamily \label{namespaceserif_1_1geometry_1_1deformation_a81d1d0df5d554d5af5149549b484a0bb}
|
|
std\+::expected$<$ \mbox{\hyperlink{classserif_1_1geometry_1_1deformation_1_1_radial_interpolation}{Radial\+Interpolation}}, \mbox{\hyperlink{structserif_1_1geometry_1_1deformation_1_1_deformation_failure}{Deformation\+Failure}} $>$ serif\+::geometry\+::deformation\+::make\+\_\+radial\+\_\+interpolation (\begin{DoxyParamCaption}\item[{\mbox{\hyperlink{structserif_1_1geometry_1_1deformation_1_1_radial_interpolation_data}{Radial\+Interpolation\+Data}}}]{data}{}\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [nodiscard]}}
|
|
|
|
|
|
|
|
Check imported or backend-\/generated reference rows once before sharing them with radial laws.
|
|
|
|
\Hypertarget{namespaceserif_1_1geometry_1_1deformation_a371fc6cc353f2df9f7752d802c2155da}\index{serif::geometry::deformation@{serif::geometry::deformation}!validate\_deformation\_values@{validate\_deformation\_values}}
|
|
\index{validate\_deformation\_values@{validate\_deformation\_values}!serif::geometry::deformation@{serif::geometry::deformation}}
|
|
\doxysubsubsection{\texorpdfstring{validate\_deformation\_values()}{validate\_deformation\_values()}}
|
|
{\footnotesize\ttfamily \label{namespaceserif_1_1geometry_1_1deformation_a371fc6cc353f2df9f7752d802c2155da}
|
|
\mbox{\hyperlink{namespaceserif_1_1geometry_1_1deformation_a08306ee593c172f4877facc061e98f97}{Deformation\+Status}} serif\+::geometry\+::deformation\+::validate\+\_\+deformation\+\_\+values (\begin{DoxyParamCaption}\item[{std\+::span$<$ const double $>$}]{values}{, }\item[{std\+::size\+\_\+t}]{expected\+\_\+size}{}\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}, {\ttfamily [nodiscard]}}
|
|
|
|
|
|
|
|
Reject incompatible lengths and non-\/finite values before evaluating a deformation action.
|
|
|
|
|
|
|
|
\doxysubsection{Variable Documentation}
|
|
\Hypertarget{namespaceserif_1_1geometry_1_1deformation_a6947f0057c614e85f67ad79f50a11606}\index{serif::geometry::deformation@{serif::geometry::deformation}!is\_linear\_deformation@{is\_linear\_deformation}}
|
|
\index{is\_linear\_deformation@{is\_linear\_deformation}!serif::geometry::deformation@{serif::geometry::deformation}}
|
|
\doxysubsubsection{\texorpdfstring{is\_linear\_deformation}{is\_linear\_deformation}}
|
|
{\footnotesize\ttfamily \label{namespaceserif_1_1geometry_1_1deformation_a6947f0057c614e85f67ad79f50a11606}
|
|
template$<$typename Map$>$ \\
|
|
bool serif\+::geometry\+::deformation\+::is\+\_\+linear\+\_\+deformation\hspace{0.3cm}{\ttfamily [inline]}, {\ttfamily [constexpr]}}
|
|
|
|
{\bfseries Initial value\+:}
|
|
\begin{DoxyCode}{0}
|
|
\DoxyCodeLine{=\ \textcolor{keyword}{requires}}
|
|
\DoxyCodeLine{\ \ \ \ \{}
|
|
\DoxyCodeLine{\ \ \ \ \ \ \ \ \textcolor{keyword}{requires}\ Map::is\_linear;}
|
|
\DoxyCodeLine{\ \ \ \ \}}
|
|
|
|
\end{DoxyCode}
|
|
|
|
|
|
Linearity is an explicit property of the mathematics, independent of its action interface.
|
|
|