coupling.hpp expected serif/backend/mfem/solver/preconditioner/inverse.hpp serif/solver/preconditioner/strategies/coupling/order.hpp src/include/serif/backend/mfem/solver/preconditioner/border.hpp src/include/serif/backend/mfem/solver/preconditioner/computations/coupling.hpp src/lib/serif/backend/mfem/solver/preconditioner/coupling.cpp src/lib/serif/backend/mfem/solver/preconditioner/coupling_internal.hpp serif::solver::preconditioner::backend::mfem::TwoBlockCouplings serif serif::solver serif::solver::preconditioner serif::solver::preconditioner::backend serif::solver::preconditioner::backend::mfem #pragmaonce #include<expected> #include"serif/backend/mfem/solver/preconditioner/inverse.hpp" #include"serif/solver/preconditioner/strategies/coupling/order.hpp" namespaceserif::solver::preconditioner::backend::mfem { structTwoBlockCouplingsfinal { OperatorHandlefirst_from_second; OperatorHandlesecond_from_first; }; [[nodiscard]]std::expected<Inverse,Failure>try_coupled_inverse(Inversefirst,Inversesecond,TwoBlockCouplingscouplings,strategies::coupling::CouplingOrderorder); [[nodiscard]]std::expected<OperatorHandle,Failure>try_schur_operator(OperatorHandleretained_diagonal,Inverseeliminated,TwoBlockCouplingscouplings); }//namespaceserif::solver::preconditioner::backend::mfem