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