diff --git a/dune/istl/umfpack.hh b/dune/istl/umfpack.hh index 50fa5337c0dbb1c533dd29ddb2758f8cd711db10..981fca166fc9eb0920ea4928370751551c52fb8e 100644 --- a/dune/istl/umfpack.hh +++ b/dune/istl/umfpack.hh @@ -202,6 +202,9 @@ namespace Dune { struct UMFPackVectorChooser<BCRSMatrix<T,A>, std::void_t<UMFPackDomainType<T>, UMFPackRangeType<T>>> { + // In case of recursive deduction (e.g., BCRSMatrix<FieldMatrix<...>, Allocator<FieldMatrix<...>>>) + // the allocator needs to be converted to the sub-block allocator type too (e.g., Allocator<FieldVector<...>>). + // Note that matrix allocator is assumed to be the same as the domain/range type of allocators /** @brief The type of the domain of the solver */ using domain_type = BlockVector<UMFPackDomainType<T>, typename std::allocator_traits<A>::template rebind_alloc<UMFPackDomainType<T>>>; /** @brief The type of the range of the solver */