From 6236fc58e9645e868b4bdf25b8057fe5eef7ea5f Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Santiago=20Ospina=20De=20Los=20R=C3=ADos?=
 <sospinar@gmail.com>
Date: Thu, 19 Oct 2023 14:41:37 +0000
Subject: [PATCH] Add comment on allocator rebind

---
 dune/istl/umfpack.hh | 3 +++
 1 file changed, 3 insertions(+)

diff --git a/dune/istl/umfpack.hh b/dune/istl/umfpack.hh
index 50fa5337c..981fca166 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 */
-- 
GitLab