From 09aea842ccef83ca8d17d214d3cc0b40e2571c5b Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Steffen=20M=C3=BCthing?= <muething@dune-project.org>
Date: Tue, 19 Nov 2013 13:57:47 +0100
Subject: [PATCH] [BCRSMatrix] Improve logic in setBuildMode() to correctly
 handle new implicit mode

---
 dune/istl/bcrsmatrix.hh | 9 +++++++--
 1 file changed, 7 insertions(+), 2 deletions(-)

diff --git a/dune/istl/bcrsmatrix.hh b/dune/istl/bcrsmatrix.hh
index e7ab1a9e..db843298 100644
--- a/dune/istl/bcrsmatrix.hh
+++ b/dune/istl/bcrsmatrix.hh
@@ -791,10 +791,15 @@ namespace Dune {
      */
     void setBuildMode(BuildMode bm)
     {
-      if(ready==notbuilt)
+      if (ready == notAllocated)
+        {
+          build_mode = bm;
+          return;
+        }
+      if (ready == building && (build_mode == unknown || build_mode == random || build_mode == row_wise) && (bm == row_wise || bm == random))
         build_mode = bm;
       else
-        DUNE_THROW(InvalidStateException, "Matrix structure is already built (ready="<<ready<<").");
+        DUNE_THROW(InvalidStateException, "Matrix structure cannot be changed at this stage anymore (ready == "<<ready<<").");
     }
 
     /**
-- 
GitLab