fitted_h1.hpp expected memory mfem/linalg/sparsemat.hpp serif/geometry/deformation/reference_surface.hpp serif/geometry/deformation/surface_embedding.hpp serif/solver/preconditioner/backend/mfem/surface/calibrated_mass.hpp serif/solver/preconditioner/strategies/surface/fitted_h1.hpp src/include/serif/solver/preconditioner/computations/surface.hpp src/include/serif/solver/preconditioner/computations/surface_reference.hpp src/lib/serif/solver/preconditioner/backend/mfem/surface/fitted_h1.cpp src/lib/serif/solver/preconditioner/backend/mfem/surface/h1_matrices.cpp src/lib/serif/solver/preconditioner/backend/mfem/surface/signed_inverse.cpp serif::solver::preconditioner::backend::mfem::SurfaceH1Matrices serif::solver::preconditioner::backend::mfem::FittedSurfaceOperator mfem serif serif::solver serif::solver::preconditioner serif::solver::preconditioner::backend serif::solver::preconditioner::backend::mfem #pragmaonce #include<expected> #include<memory> #include"mfem/linalg/sparsemat.hpp" #include"serif/geometry/deformation/reference_surface.hpp" #include"serif/geometry/deformation/surface_embedding.hpp" #include"serif/solver/preconditioner/backend/mfem/surface/calibrated_mass.hpp" #include"serif/solver/preconditioner/strategies/surface/fitted_h1.hpp" namespacemfem { classFiniteElementSpace; } namespaceserif::solver::preconditioner::backend::mfem { structSurfaceH1Matricesfinal { std::shared_ptr<const::mfem::SparseMatrix>mass; std::shared_ptr<const::mfem::SparseMatrix>stiffness; }; structFittedSurfaceOperatorfinal { std::shared_ptr<const::mfem::SparseMatrix>positive_operator; strategies::surface::SurfaceH1Fitfit; }; [[nodiscard]]std::expected<SurfaceH1Matrices,Failure>try_surface_h1_matrices(const::mfem::FiniteElementSpace&scalar_space,intsurface_attribute,constgeometry::deformation::ReferenceSurface&reference_surface,constgeometry::deformation::SurfaceEmbedding&embedding); [[nodiscard]]std::expected<FittedSurfaceOperator,Failure>try_fitted_surface_h1(constSurfaceH1Matrices&matrices,constSurfaceTargets&targets,strategies::surface::FittedSurfaceH1options={}); [[nodiscard]]std::expected<Inverse,Failure>try_signed_surface_inverse(Inversepositive_inverse,doublesign); }//namespaceserif::solver::preconditioner::backend::mfem