serif::geometry::deformation serif::geometry::deformation::ComposedDeformation serif::geometry::deformation::DeformationFailure serif::geometry::deformation::DeformationLinearization serif::geometry::deformation::DomainDeformation serif::geometry::deformation::EmptyDeformationWorkspace serif::geometry::deformation::FixedInfinityRadialExtension serif::geometry::deformation::GeometryStepLimit serif::geometry::deformation::GeometryStepOptions serif::geometry::deformation::NodalRadialSurface serif::geometry::deformation::PowerLawRadialExtension serif::geometry::deformation::RadialExtension serif::geometry::deformation::RadialInterpolation serif::geometry::deformation::RadialInterpolationData serif::geometry::deformation::ReferenceSurface serif::geometry::deformation::SphericalHarmonicMode serif::geometry::deformation::SphericalHarmonicSurface serif::geometry::deformation::SurfaceEmbedding serif::geometry::deformation::backend serif::geometry::deformation::detail serif::geometry::deformation::keys serif::geometry::deformation::spaces DeformationFailureReason serif::geometry::deformation::DeformationFailureReason invalid_configuration incompatible_discretization invalid_size non_finite unresolved_surface invalid_geometry std::expected< void, DeformationFailure > using serif::geometry::deformation::DeformationStatus = std::expected<void, DeformationFailure> DeformationStatus serif::geometry::deformation::DeformationStatus typename Map typename Map::Workspace using serif::geometry::deformation::DeformationWorkspace = typename Map::Workspace DeformationWorkspace serif::geometry::deformation::DeformationWorkspace typename Map bool bool serif::geometry::deformation::is_linear_deformation is_linear_deformation serif::geometry::deformation::is_linear_deformation = requires { requires Map::is_linear; } Linearity is an explicit property of the mathematics, independent of its action interface. DeformationMap Map Map DeformationWorkspace< Map > DeformationWorkspace< Map > serif::geometry::deformation::make_deformation_workspace (const Map &map) make_deformation_workspace serif::geometry::deformation::make_deformation_workspace const Map & map Allocate action scratch explicitly, once per independent caller. DeformationMap Map Map DeformationStatus DeformationStatus serif::geometry::deformation::build_displacement (const Map &map, std::span< const double > parameters, std::span< double > displacement, DeformationWorkspace< Map > &workspace) build_displacement serif::geometry::deformation::build_displacement const Map & map std::span< const double > parameters std::span< double > displacement DeformationWorkspace< Map > & workspace 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. DeformationMap Map Map DeformationStatus DeformationStatus serif::geometry::deformation::apply_jacobian (const Map &map, std::span< const double > parameters, std::span< const double > direction, std::span< double > displacement_direction, DeformationWorkspace< Map > &workspace) apply_jacobian serif::geometry::deformation::apply_jacobian const Map & map std::span< const double > parameters std::span< const double > direction std::span< double > displacement_direction DeformationWorkspace< Map > & workspace Linear maps reuse their primal action; nonlinear maps supply their exact tangent. DeformationMap Map Map DeformationStatus DeformationStatus 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, DeformationWorkspace< Map > &workspace) apply_jacobian_transpose 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 DeformationWorkspace< Map > & workspace Transfer virtual work from the displacement field to its independent shape coefficients. DeformationMap Map Map DeformationStatus DeformationStatus 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, DeformationWorkspace< Map > &workspace) apply_pullback_derivative 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 DeformationWorkspace< Map > & workspace Differentiate the transpose at fixed dual; zero is justified only for a declared linear map. DeformationMap SurfaceMap SurfaceMap DeformationMap ExtensionMap ExtensionMap std::expected< ComposedDeformation< SurfaceMap, ExtensionMap >, DeformationFailure > std::expected< ComposedDeformation< SurfaceMap, ExtensionMap >, DeformationFailure > serif::geometry::deformation::compose_deformation (std::shared_ptr< const SurfaceMap > surface, std::shared_ptr< const ExtensionMap > extension) compose_deformation serif::geometry::deformation::compose_deformation std::shared_ptr< const SurfaceMap > surface std::shared_ptr< const ExtensionMap > extension std::same_as<typename SurfaceMap::OutputSpace, typename ExtensionMap::InputSpace> Validate factor sizes before constructing an owning mathematical composition. DeformationMap SurfaceMap SurfaceMap DeformationMap ExtensionMap ExtensionMap auto auto serif::geometry::deformation::make_deformation_computations () make_deformation_computations serif::geometry::deformation::make_deformation_computations std::same_as<typename SurfaceMap::OutputSpace, typename ExtensionMap::InputSpace> Declare the numerical composition as ordinary dependency computations. Shared immutable factors, coefficient snapshots, and results belong to the dependency cache. Analytical actions remain independent functions. DeformationMap SurfaceMap SurfaceMap DeformationMap ExtensionMap ExtensionMap auto auto serif::geometry::deformation::make_deformation_graph () make_deformation_graph serif::geometry::deformation::make_deformation_graph std::same_as<typename SurfaceMap::OutputSpace, typename ExtensionMap::InputSpace> Compose independently compiled mathematical factors without introducing a prepared-operator facade. DeformationStatus DeformationStatus serif::geometry::deformation::validate_deformation_values (std::span< const double > values, std::size_t expected_size) validate_deformation_values serif::geometry::deformation::validate_deformation_values std::span< const double > values std::size_t expected_size Reject incompatible lengths and non-finite values before evaluating a deformation action. DeformationMap Map Map std::expected< std::vector< double >, DeformationFailure > std::expected< std::vector< double >, DeformationFailure > serif::geometry::deformation::evaluate_displacement (const Map &map, std::span< const double > parameters) evaluate_displacement serif::geometry::deformation::evaluate_displacement const Map & map std::span< const double > parameters Allocate a result for graph publication while leaving repeated low-level actions allocation-free. DeformationMap Map Map DeformationStatus DeformationStatus serif::geometry::deformation::apply_jacobian (const DeformationLinearization< Map > &state, std::span< const double > direction, std::span< double > output, DeformationWorkspace< Map > &workspace) apply_jacobian serif::geometry::deformation::apply_jacobian const DeformationLinearization< Map > & state std::span< const double > direction std::span< double > output DeformationWorkspace< Map > & workspace Evaluate a tangent about the cache's accepted shape, not the caller's next trial state. DeformationMap Map Map DeformationStatus DeformationStatus serif::geometry::deformation::apply_jacobian_transpose (const DeformationLinearization< Map > &state, std::span< const double > dual, std::span< double > output, DeformationWorkspace< Map > &workspace) apply_jacobian_transpose serif::geometry::deformation::apply_jacobian_transpose const DeformationLinearization< Map > & state std::span< const double > dual std::span< double > output DeformationWorkspace< Map > & workspace Pull displacement forces back to the accepted independent shape coordinates. DeformationMap Map Map DeformationStatus DeformationStatus serif::geometry::deformation::apply_pullback_derivative (const DeformationLinearization< Map > &state, std::span< const double > direction, std::span< const double > dual, std::span< double > output, DeformationWorkspace< Map > &workspace) apply_pullback_derivative serif::geometry::deformation::apply_pullback_derivative const DeformationLinearization< Map > & state std::span< const double > direction std::span< const double > dual std::span< double > output DeformationWorkspace< Map > & workspace Keep the geometric contribution to the Newton force derivative available for nonlinear models. std::expected< RadialExtension, DeformationFailure > std::expected< RadialExtension, DeformationFailure > serif::geometry::deformation::make_radial_extension (std::shared_ptr< const RadialInterpolation > interpolation, PowerLawRadialExtension interior={}, FixedInfinityRadialExtension vacuum={}) make_radial_extension serif::geometry::deformation::make_radial_extension std::shared_ptr< const RadialInterpolation > interpolation PowerLawRadialExtension interior {} FixedInfinityRadialExtension vacuum {} Compile regional weights while sharing the immutable surface interpolation. The interpolation factory has already established every reference-table invariant. std::expected< RadialInterpolation, DeformationFailure > std::expected< RadialInterpolation, DeformationFailure > serif::geometry::deformation::make_radial_interpolation (RadialInterpolationData data) make_radial_interpolation serif::geometry::deformation::make_radial_interpolation RadialInterpolationData data Check imported or backend-generated reference rows once before sharing them with radial laws. std::expected< SurfaceEmbedding, DeformationFailure > std::expected< SurfaceEmbedding, DeformationFailure > serif::geometry::deformation::build_surface_embedding (const NodalRadialSurface &model, std::span< const std::array< double, 3 > > positions) build_surface_embedding serif::geometry::deformation::build_surface_embedding const NodalRadialSurface & model std::span< const std::array< double, 3 > > positions Compile fixed radial directions from ordered physical reference positions without retaining backend objects. std::expected< SurfaceEmbedding, DeformationFailure > std::expected< SurfaceEmbedding, DeformationFailure > serif::geometry::deformation::build_surface_embedding (const SphericalHarmonicSurface &model, std::span< const std::array< double, 3 > > positions) build_surface_embedding serif::geometry::deformation::build_surface_embedding const SphericalHarmonicSurface & model std::span< const std::array< double, 3 > > positions Sample physically normalized real harmonics and reject unresolved modes without renormalizing or dropping coordinates. typename Surface typename Interior typename Vacuum auto auto serif::geometry::deformation::backend::mfem::make_deformation_inputs (const DomainDeformation< Surface, Interior, Vacuum > &model, const ReferenceDiscretization &discretization, const std::vector< double > &coefficients) make_deformation_inputs serif::geometry::deformation::make_deformation_inputs const DomainDeformation< Surface, Interior, Vacuum > & model const ReferenceDiscretization & discretization const std::vector< double > & coefficients Bind physical choices and a borrowed shape vector without evaluating deformation. 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. typename Surface auto auto serif::geometry::deformation::backend::mfem::make_deformation_graph () make_deformation_graph serif::geometry::deformation::make_deformation_graph Provide a standalone graph while leaving the same computations available for equation composition. typename Surface auto auto serif::geometry::deformation::backend::mfem::make_deformation_computations () make_deformation_computations serif::geometry::deformation::make_deformation_computations requires(const Surface& model, std::span<const std::array<double, 3>> positions) { { build_surface_embedding(model, positions) } -> std::same_as<std::expected<SurfaceEmbedding, DeformationFailure>>; } Compile fixed reference factors and evaluate shape motion with one dependency engine. Configuration values are named context inputs. Factories declare work; try_prepare performs it explicitly. discretization::domain::schema::IsSchema Schema Schema discretization::domain::schema::CoreEnvelopeVacuumDomainSchema ReferenceDiscretization ReferenceDiscretization serif::geometry::deformation::backend::mfem::deformation_discretization (const ::mfem::FiniteElementSpace &scalar_space, const ::mfem::FiniteElementSpace &displacement_space, ::mfem::Mesh &logical_mesh) deformation_discretization serif::geometry::deformation::deformation_discretization const ::mfem::FiniteElementSpace & scalar_space const ::mfem::FiniteElementSpace & displacement_space ::mfem::Mesh & logical_mesh (Schema::template contains_domain<discretization::domain::StellarDomains>() && Schema::template contains_domain<discretization::domain::VacuumDomain>() && Schema::template contains_boundary<discretization::domain::StellarSurfaceBoundary>() && Schema::template contains_boundary<discretization::domain::InfinitySurfaceBoundary>()) Resolve physical domain names through the schema rather than hard-coded MFEM attributes.