radial_interpolation.hpp utility vector serif/geometry/deformation/failure.hpp src/include/serif/geometry/deformation/radial_extension.hpp src/lib/serif/geometry/deformation/radial_interpolation.cpp serif::geometry::deformation::RadialInterpolationData serif::geometry::deformation::RadialInterpolation serif serif::geometry serif::geometry::deformation #pragmaonce #include<utility> #include<vector> #include"serif/geometry/deformation/failure.hpp" namespaceserif::geometry::deformation { structRadialInterpolationData { std::vector<int>surface_scalar_dofs; std::vector<int>row_offsets; std::vector<int>surface_columns; std::vector<double>interpolation_weights; std::vector<double>logical_radii; std::vector<int>stellar_support; std::vector<int>vacuum_support; doublestellar_radius{}; doubleinfinity_radius{}; }; classRadialInterpolation { public: [[nodiscard]]constRadialInterpolationData&data()constnoexcept { returnm_data; } [[nodiscard]]std::size_tscalar_dof_count()constnoexcept { returnm_data.logical_radii.size(); } [[nodiscard]]std::size_tsurface_node_count()constnoexcept { returnm_data.surface_scalar_dofs.size(); } private: explicitRadialInterpolation(RadialInterpolationDatadata):m_data(std::move(data)) { } friendstd::expected<RadialInterpolation,DeformationFailure>make_radial_interpolation(RadialInterpolationData); RadialInterpolationDatam_data; }; [[nodiscard]]std::expected<RadialInterpolation,DeformationFailure>make_radial_interpolation(RadialInterpolationDatadata); }//namespaceserif::geometry::deformation