diff --git a/dumux/linear/istlsolverfactorybackend.hh b/dumux/linear/istlsolverfactorybackend.hh index 20adc78be6dfc01c35a0a1692644d743f9a57cdc..bcb18ace81c351aab665a4c3edaaab7d7c958b06 100644 --- a/dumux/linear/istlsolverfactorybackend.hh +++ b/dumux/linear/istlsolverfactorybackend.hh @@ -16,6 +16,7 @@ #include <memory> +#include <dune/common/version.hh> #include <dune/common/parallel/mpihelper.hh> #include <dune/common/parametertree.hh> @@ -54,6 +55,7 @@ namespace { template<class LinearOperator> int initSolverFactoriesForMultiTypeBlockMatrix() { +#if DUNE_VERSION_LT(DUNE_ISTL,2,11) using M = typename LinearOperator::matrix_type; using X = typename LinearOperator::range_type; using Y = typename LinearOperator::domain_type; @@ -65,6 +67,14 @@ int initSolverFactoriesForMultiTypeBlockMatrix() using TLS = Dune::TypeList<X,Y>; auto& isfac = Dune::IterativeSolverFactory<X,Y>::instance(); return Dune::addRegistryToFactory<TLS>(isfac, Dune::IterativeSolverTag{}); +#else + using OpTraits = Dune::OperatorTraits<LinearOperator>; + auto& sfac = Dune::SolverFactory<LinearOperator>::instance(); + auto& pfac = Dune::PreconditionerFactory<LinearOperator>::instance(); + Dune::addRegistryToFactory<OpTraits>(sfac, Dumux::MultiTypeBlockMatrixDirectSolverTag{}); + Dune::addRegistryToFactory<OpTraits>(pfac, Dumux::MultiTypeBlockMatrixPreconditionerTag{}); + return Dune::addRegistryToFactory<OpTraits>(sfac, Dune::SolverTag{}); +#endif } } // end namespace