diff --git a/dune/istl/test/solverfactorytest.cc.in b/dune/istl/test/solverfactorytest.cc.in index c5a519ff7d0a7ac5140069bbe033d1d538a5eae8..b113e717195ee0e7dd133cf7ccfd950aa47a8f4a 100644 --- a/dune/istl/test/solverfactorytest.cc.in +++ b/dune/istl/test/solverfactorytest.cc.in @@ -52,6 +52,24 @@ using Matrix = Dune::BCRSMatrix<typename MatrixBlock<@BLOCK@>::type>; template<class Comm> void testSeq(const Dune::ParameterTree& config, Comm c){ if(c.rank() == 0){ + std::set<std::string> deactivate_solvers; + +#if !HAVE_SUITESPARSE_CHOLMOD + deactivate_solvers.insert("Cholmod"); +#endif +#if !HAVE_SUITESPARSE_LDL + deactivate_solvers.insert("LDL"); +#endif +#if !HAVE_SUITESPARSE_UMFPACK + deactivate_solvers.insert("UMFPack"); +#endif +#if !HAVE_SUITESPARSE_SPQR + deactivate_solvers.insert("SPQR"); +#endif +#if !HAVE_SUPERLU + deactivate_solvers.insert("SuperLU"); +#endif + Matrix mat; int N = config.get("N", 10); setupLaplacian(mat, N); @@ -61,6 +79,9 @@ void testSeq(const Dune::ParameterTree& config, Comm c){ std::shared_ptr<Operator> op = std::make_shared<Operator>(mat); for(const std::string& test : config.getSubKeys()){ + if(deactivate_solvers.find(test) != deactivate_solvers.end()) + continue; + Dune::ParameterTree solverConfig = config.sub(test); std::cout << " ============== " << test << " ============== " << std::endl; try{