calibrated_mass.hpp expected serif/solver/preconditioner/failure.hpp serif/solver/preconditioner/strategies/inverse/diagonal_regularization.hpp src/include/serif/solver/preconditioner/backend/mfem/surface/reference_mass.hpp src/include/serif/solver/preconditioner/strategies/surface/fitted_h1.hpp src/lib/serif/solver/preconditioner/strategies/surface/calibrated_mass.cpp serif::solver::preconditioner::strategies::surface::CalibratedSurfaceMass serif::solver::preconditioner::strategies::surface::SurfaceMassFit serif serif::solver serif::solver::preconditioner serif::solver::preconditioner::strategies serif::solver::preconditioner::strategies::surface #pragmaonce #include<expected> #include"serif/solver/preconditioner/failure.hpp" #include"serif/solver/preconditioner/strategies/inverse/diagonal_regularization.hpp" namespaceserif::solver::preconditioner::strategies::surface { enumclassCalibrationTarget { surface_jacobian, material_schur }; enumclassCalibrationObjective { operator_action, right_preconditioned_action }; structCalibratedSurfaceMassfinal { CalibrationTargettarget{CalibrationTarget::surface_jacobian}; intprobe_count{6}; CalibrationObjectiveobjective{CalibrationObjective::operator_action}; inverse::DiagonalRegularizationregularization; }; structSurfaceMassFitfinal { doublenumerator{}; doubledenominator{}; doublescale{1.0}; doubleinverse_multiplier{1.0}; }; [[nodiscard]]std::expected<SurfaceMassFit,Failure>try_fit_surface_mass(doublenumerator,doubledenominator,CalibrationObjectiveobjective); }//namespaceserif::solver::preconditioner::strategies::surface