.TH "serif::geometry::deformation::SurfaceEmbedding" 3 "Version v0.0.1a" "SERiF" \" -*- nroff -*- .ad l .nh .SH NAME serif::geometry::deformation::SurfaceEmbedding \- Own a linear conversion from radial displacement lengths to Cartesian surface displacements\&. .SH SYNOPSIS .br .PP .PP \fR#include \fP .SS "Public Types" .in +1c .ti -1c .RI "using \fBWorkspace\fP = \fBEmptyDeformationWorkspace\fP" .br .ti -1c .RI "using \fBInputSpace\fP = \fBspaces::ShapeParameters\fP" .br .ti -1c .RI "using \fBOutputSpace\fP = \fBspaces::SurfaceDisplacement\fP" .br .in -1c .SS "Public Member Functions" .in +1c .ti -1c .RI "std::size_t \fBinput_size\fP () const noexcept" .br .RI "Nodal coordinates are independent lengths; harmonic coordinates retain their physical normalization\&. " .ti -1c .RI "std::size_t \fBoutput_size\fP () const noexcept" .br .RI "Surface vectors interleave the three Cartesian components at each node\&. " .ti -1c .RI "std::size_t \fBsurface_node_count\fP () const noexcept" .br .RI "Expose the ordered surface-node count for independent metric and backend calculations\&. " .ti -1c .RI "bool \fBhas_nodal_parameters\fP () const noexcept" .br .RI "An empty harmonic basis represents the identity between parameters and nodal radial lengths\&. " .ti -1c .RI "std::span< const std::array< double, 3 > > \fBradial_directions\fP () const noexcept" .br .RI "Reference directions determine radial motion and remain immutable when coefficients change\&. " .ti -1c .RI "std::span< const double > \fBreference_radii\fP () const noexcept" .br .RI "Reference radii retain physical lengths independently of the logical radius used by volume extensions\&. " .ti -1c .RI "std::span< const std::array< double, 3 > > \fBreference_positions\fP () const noexcept" .br .RI "Preserve the exact ordered reference points so boundary metrics can reject an unrelated trace\&. " .ti -1c .RI "std::span< const \fBSphericalHarmonicMode\fP > \fBmodes\fP () const noexcept" .br .RI "Harmonic coordinates use increasing degree, then increasing signed azimuthal order\&. " .ti -1c .RI "std::span< const double > \fBnodal_basis\fP () const noexcept" .br .RI "Return the physical row-major harmonic basis; nodal parameterizations have an implicit identity basis\&. " .ti -1c .RI "\fBDeformationStatus\fP \fBapply\fP (std::span< const double > parameters, std::span< double > surface_displacement, \fBWorkspace\fP={}) const" .br .RI "Apply radial motion without allocation\&. Input and output storage must not overlap; rejected output must be discarded\&. " .ti -1c .RI "\fBDeformationStatus\fP \fBapply_transpose\fP (std::span< const double > surface_force, std::span< double > parameter_force, \fBWorkspace\fP={}) const" .br .RI "Transfer Cartesian surface forces to shape coordinates while preserving virtual work, without allocation or metric weighting\&. " .in -1c .SS "Static Public Attributes" .in +1c .ti -1c .RI "static constexpr bool \fBis_linear\fP = true" .br .in -1c .SS "Private Member Functions" .in +1c .ti -1c .RI "\fBSurfaceEmbedding\fP ()=default" .br .RI "Factories validate all reference geometry before publishing an embedding\&. " .in -1c .SS "Private Attributes" .in +1c .ti -1c .RI "std::vector< std::array< double, 3 > > \fBradial_directions_\fP" .br .ti -1c .RI "std::vector< double > \fBreference_radii_\fP" .br .ti -1c .RI "std::vector< std::array< double, 3 > > \fBreference_positions_\fP" .br .ti -1c .RI "std::vector< \fBSphericalHarmonicMode\fP > \fBmodes_\fP" .br .ti -1c .RI "std::vector< double > \fBnodal_basis_\fP" .br .in -1c .SS "Friends" .in +1c .ti -1c .RI "std::expected< \fBSurfaceEmbedding\fP, \fBDeformationFailure\fP > \fBbuild_surface_embedding\fP (const \fBNodalRadialSurface\fP &model, std::span< const std::array< double, 3 > > positions)" .br .RI "Compile fixed radial directions from ordered physical reference positions without retaining backend objects\&. " .ti -1c .RI "std::expected< \fBSurfaceEmbedding\fP, \fBDeformationFailure\fP > \fBbuild_surface_embedding\fP (const \fBSphericalHarmonicSurface\fP &model, std::span< const std::array< double, 3 > > positions)" .br .RI "Sample physically normalized real harmonics and reject unresolved modes without renormalizing or dropping coordinates\&. " .in -1c .SH "Detailed Description" .PP Own a linear conversion from radial displacement lengths to Cartesian surface displacements\&. .PP \fBNote\fP .RS 4 Directions and harmonics remain fixed on the reference surface\&. Finite-element interpolation of the resulting nodal vectors determines the between-node geometry\&. .RE .PP .SH "Member Typedef Documentation" .PP .SS "using \fBserif::geometry::deformation::SurfaceEmbedding::InputSpace\fP = \fBspaces::ShapeParameters\fP" .SS "using \fBserif::geometry::deformation::SurfaceEmbedding::OutputSpace\fP = \fBspaces::SurfaceDisplacement\fP" .SS "using \fBserif::geometry::deformation::SurfaceEmbedding::Workspace\fP = \fBEmptyDeformationWorkspace\fP" .SH "Constructor & Destructor Documentation" .PP .SS "serif::geometry::deformation::SurfaceEmbedding::SurfaceEmbedding ()\fR [private]\fP, \fR [default]\fP" .PP Factories validate all reference geometry before publishing an embedding\&. .SH "Member Function Documentation" .PP .SS "\fBDeformationStatus\fP serif::geometry::deformation::SurfaceEmbedding::apply (std::span< const double > parameters, std::span< double > surface_displacement, \fBWorkspace\fP = \fR{}\fP) const\fR [nodiscard]\fP" .PP Apply radial motion without allocation\&. Input and output storage must not overlap; rejected output must be discarded\&. .SS "\fBDeformationStatus\fP serif::geometry::deformation::SurfaceEmbedding::apply_transpose (std::span< const double > surface_force, std::span< double > parameter_force, \fBWorkspace\fP = \fR{}\fP) const\fR [nodiscard]\fP" .PP Transfer Cartesian surface forces to shape coordinates while preserving virtual work, without allocation or metric weighting\&. .SS "bool serif::geometry::deformation::SurfaceEmbedding::has_nodal_parameters () const\fR [nodiscard]\fP, \fR [noexcept]\fP" .PP An empty harmonic basis represents the identity between parameters and nodal radial lengths\&. .SS "std::size_t serif::geometry::deformation::SurfaceEmbedding::input_size () const\fR [nodiscard]\fP, \fR [noexcept]\fP" .PP Nodal coordinates are independent lengths; harmonic coordinates retain their physical normalization\&. .SS "std::span< const \fBSphericalHarmonicMode\fP > serif::geometry::deformation::SurfaceEmbedding::modes () const\fR [nodiscard]\fP, \fR [noexcept]\fP" .PP Harmonic coordinates use increasing degree, then increasing signed azimuthal order\&. .SS "std::span< const double > serif::geometry::deformation::SurfaceEmbedding::nodal_basis () const\fR [nodiscard]\fP, \fR [noexcept]\fP" .PP Return the physical row-major harmonic basis; nodal parameterizations have an implicit identity basis\&. .SS "std::size_t serif::geometry::deformation::SurfaceEmbedding::output_size () const\fR [nodiscard]\fP, \fR [noexcept]\fP" .PP Surface vectors interleave the three Cartesian components at each node\&. .SS "std::span< const std::array< double, 3 > > serif::geometry::deformation::SurfaceEmbedding::radial_directions () const\fR [nodiscard]\fP, \fR [noexcept]\fP" .PP Reference directions determine radial motion and remain immutable when coefficients change\&. .SS "std::span< const std::array< double, 3 > > serif::geometry::deformation::SurfaceEmbedding::reference_positions () const\fR [nodiscard]\fP, \fR [noexcept]\fP" .PP Preserve the exact ordered reference points so boundary metrics can reject an unrelated trace\&. .SS "std::span< const double > serif::geometry::deformation::SurfaceEmbedding::reference_radii () const\fR [nodiscard]\fP, \fR [noexcept]\fP" .PP Reference radii retain physical lengths independently of the logical radius used by volume extensions\&. .SS "std::size_t serif::geometry::deformation::SurfaceEmbedding::surface_node_count () const\fR [nodiscard]\fP, \fR [noexcept]\fP" .PP Expose the ordered surface-node count for independent metric and backend calculations\&. .SH "Friends And Related Symbol Documentation" .PP .SS "std::expected< \fBSurfaceEmbedding\fP, \fBDeformationFailure\fP > build_surface_embedding (const \fBNodalRadialSurface\fP & model, std::span< const std::array< double, 3 > > positions)\fR [friend]\fP" .PP Compile fixed radial directions from ordered physical reference positions without retaining backend objects\&. .SS "std::expected< \fBSurfaceEmbedding\fP, \fBDeformationFailure\fP > build_surface_embedding (const \fBSphericalHarmonicSurface\fP & model, std::span< const std::array< double, 3 > > positions)\fR [friend]\fP" .PP Sample physically normalized real harmonics and reject unresolved modes without renormalizing or dropping coordinates\&. .SH "Member Data Documentation" .PP .SS "bool serif::geometry::deformation::SurfaceEmbedding::is_linear = true\fR [static]\fP, \fR [constexpr]\fP" .SS "std::vector<\fBSphericalHarmonicMode\fP> serif::geometry::deformation::SurfaceEmbedding::modes_\fR [private]\fP" .SS "std::vector serif::geometry::deformation::SurfaceEmbedding::nodal_basis_\fR [private]\fP" .SS "std::vector > serif::geometry::deformation::SurfaceEmbedding::radial_directions_\fR [private]\fP" .SS "std::vector > serif::geometry::deformation::SurfaceEmbedding::reference_positions_\fR [private]\fP" .SS "std::vector serif::geometry::deformation::SurfaceEmbedding::reference_radii_\fR [private]\fP" .SH "Author" .PP Generated automatically by Doxygen for SERiF from the source code\&.