linear.hpp cstdint src/include/serif/backend/mfem/solver/linear/solve.hpp src/include/serif/solver/nonlinear/options.hpp src/include/serif/solver/nonlinear/result.hpp src/lib/serif/solver/linear/linear.cpp serif::solver::linear::Control serif::solver::linear::FGMRES serif::solver::linear::Report serif serif::solver serif::solver::linear #pragmaonce #include<cstdint> namespaceserif::solver::linear{ enumclassStatus{converged,maximum_iterations,breakdown,non_finite,backend_failure}; structControl{ doublerelative_tolerance{1.0e-8}; doubleabsolute_tolerance{0.0}; intmaximum_iterations{100}; voidvalidate()const; [[nodiscard]]doubleconvergence_threshold(doubleright_hand_side_norm)const; }; structFGMRES{ intrestart_length{160}; intprint_level{-1}; voidvalidate()const; }; structReport{ Statusstatus{Status::backend_failure}; Controlcontrol{}; intiterations{0}; intrestarts{0}; doubleright_hand_side_norm{0.0}; doubleinitial_residual_norm{0.0}; doublereported_residual_norm{0.0}; doubletrue_residual_norm{0.0}; doublerelative_true_residual_norm{0.0}; std::uint64_toperator_applications{0}; std::uint64_tpreconditioner_applications{0}; doublesolve_seconds{0.0}; doubleoperator_seconds{0.0}; doublepreconditioner_seconds{0.0}; [[nodiscard]]boolconverged()constnoexcept{returnstatus==Status::converged;} }; }