From c913edc46b7c89bf95df17ecb1550456d2ac9ab4 Mon Sep 17 00:00:00 2001 From: Kilian <kilian.weishaupt@iws.uni-stuttgart.de> Date: Wed, 29 Apr 2020 10:14:57 +0200 Subject: [PATCH] [common][pdesolver] Fix Dune::Hybrid::size deprecation warning * use forward declare to avoid include of MultiTypeBlockMatrix --- dumux/common/pdesolver.hh | 21 ++++++++++++++------- 1 file changed, 14 insertions(+), 7 deletions(-) diff --git a/dumux/common/pdesolver.hh b/dumux/common/pdesolver.hh index 9b02b124bc..99f61bcaa6 100644 --- a/dumux/common/pdesolver.hh +++ b/dumux/common/pdesolver.hh @@ -25,12 +25,18 @@ #define DUMUX_COMMON_PDESOLVER_HH #include <memory> +#include <utility> #include <dune/common/hybridutilities.hh> -#include <dumux/common/typetraits/matrix.hh> #include <dumux/common/timeloop.hh> +// forward declare +namespace Dune { +template <class FirstRow, class ... Args> +class MultiTypeBlockMatrix; +} + namespace Dumux { /*! @@ -107,16 +113,17 @@ protected: /*! * \brief Helper function to assure the MultiTypeBlockMatrix's sub-blocks have the correct sizes. */ - template<class M> - bool checkSizesOfSubMatrices(const M& A) const + template <class FirstRow, class ... Args> + bool checkSizesOfSubMatrices(const Dune::MultiTypeBlockMatrix<FirstRow, Args...>& matrix) const { - static_assert(isMultiTypeBlockMatrix<M>::value, "This function can only be used with MultiTypeBlockMatrix"); - bool matrixHasCorrectSize = true; using namespace Dune::Hybrid; - forEach(A, [&](const auto& row){ + forEach(std::make_index_sequence<Dune::MultiTypeBlockMatrix<FirstRow, Args...>::N()>(), [&](const auto i) + { + const auto& row = matrix[i]; const auto numRowsLeftMostBlock = row[Dune::index_constant<0>{}].N(); - forEach(row, [&](const auto& subBlock){ + forEach(row, [&](const auto& subBlock) + { if (subBlock.N() != numRowsLeftMostBlock) matrixHasCorrectSize = false; }); -- GitLab