From a2965d33c65df3fef33321a22a548d5ee125b54e Mon Sep 17 00:00:00 2001 From: Timo Koch <timo.koch@iws.uni-stuttgart.de> Date: Sun, 19 Feb 2023 13:49:35 +0100 Subject: [PATCH] [solverparams] Make compatible with LSTraits without gridview information --- dumux/linear/linearsolverparameters.hh | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/dumux/linear/linearsolverparameters.hh b/dumux/linear/linearsolverparameters.hh index e588fb414c..2acb5ced21 100644 --- a/dumux/linear/linearsolverparameters.hh +++ b/dumux/linear/linearsolverparameters.hh @@ -32,7 +32,16 @@ #include <dune/common/parametertree.hh> #include <dumux/common/parameters.hh> +namespace Dumux::Detail::LinearSolverParameters { +template <typename T> +using GVDetector = typename T::GridView; + +template <typename T> +constexpr bool hasGridView = Dune::Std::is_detected<GVDetector, T>::value; +} // end namespace Dumux::Detail::LinearSolverParameters + namespace Dumux { + /*! * \ingroup Linear * \brief Generates a parameter tree required for the linear solvers and precondioners of the Dune ISTL @@ -65,7 +74,10 @@ public: params["preconditioner.relaxation"] = "1.0"; params["preconditioner.verbosity"] = "0"; params["preconditioner.defaultAggregationSizeMode"] = "isotropic"; - params["preconditioner.defaultAggregationDimension"] = std::to_string(LinearSolverTraits::GridView::dimension); + if constexpr (Detail::LinearSolverParameters::hasGridView<LinearSolverTraits>) + params["preconditioner.defaultAggregationDimension"] = std::to_string(LinearSolverTraits::GridView::dimension); + else + params["preconditioner.defaultAggregationDimension"] = "3"; params["preconditioner.maxLevel"] = "100"; params["ParameterGroup"] = paramGroup; params["preconditioner.ParameterGroup"] = paramGroup; -- GitLab