solve.hpp concepts type_traits mfem/linalg/operator.hpp mfem/linalg/vector.hpp serif/solver/linear/linear.hpp serif/solver/preconditioner/contract.hpp src/include/serif/backend/mfem/solver/nonlinear/stellar_problem.hpp src/lib/serif/backend/mfem/solver/linear/solve.cpp serif serif::solver serif::solver::linear serif::solver::linear::backend serif::solver::linear::backend::mfem #pragmaonce #include<concepts> #include<type_traits> #include"mfem/linalg/operator.hpp" #include"mfem/linalg/vector.hpp" #include"serif/solver/linear/linear.hpp" #include"serif/solver/preconditioner/contract.hpp" namespaceserif::solver::linear::backend::mfem{ [[nodiscard]]Reportsolve(FGMRESoptions,const::mfem::Operator&operation,::mfem::Solver&preconditioner, preconditioner::ApplicationContractcontract,const::mfem::Vector&right_hand_side, ::mfem::Vector&correction,Controlcontrol={}); template<typenameBackend>requires(!std::same_as<std::remove_cvref_t<Backend>,FGMRES>) [[nodiscard]]Reportsolve(constBackend&backend,const::mfem::Operator&operation,::mfem::Solver&inverse, preconditioner::ApplicationContractcontract,const::mfem::Vector&rhs,::mfem::Vector&correction,Controlcontrol){ returnbackend.solve(operation,inverse,contract,rhs,correction,control); } }