From 30b0b4b5b2578464913d4af267a6f42946b4d4f6 Mon Sep 17 00:00:00 2001
From: Christoph Lehmann <christoph.lehmann@ufz.de>
Date: Mon, 17 Sep 2018 17:36:08 +0200
Subject: [PATCH] [NL] fixed PETSc BC setting

_known_solutions->empty() must not be called otherwise there might be
PETSc errors, because not all ranks might execute the same PETSc calls.
---
 NumLib/ODESolver/TimeDiscretizedODESystem.cpp | 8 ++++----
 1 file changed, 4 insertions(+), 4 deletions(-)

diff --git a/NumLib/ODESolver/TimeDiscretizedODESystem.cpp b/NumLib/ODESolver/TimeDiscretizedODESystem.cpp
index f2392d04a1a..0fb5bd62d0a 100644
--- a/NumLib/ODESolver/TimeDiscretizedODESystem.cpp
+++ b/NumLib/ODESolver/TimeDiscretizedODESystem.cpp
@@ -139,7 +139,7 @@ void TimeDiscretizedODESystem<ODESystemTag::FirstOrderImplicitQuasilinear,
     applyKnownSolutionsNewton(GlobalMatrix& Jac, GlobalVector& res,
                               GlobalVector& minus_delta_x) const
 {
-    if (!_known_solutions || _known_solutions->empty())
+    if (!_known_solutions)
         return;
 
     using IndexType = MathLib::MatrixVectorTraits<GlobalMatrix>::Index;
@@ -220,7 +220,7 @@ void TimeDiscretizedODESystem<ODESystemTag::FirstOrderImplicitQuasilinear,
                               GlobalVector& rhs,
                               GlobalVector& x) const
 {
-    if (!_known_solutions || _known_solutions->empty())
+    if (!_known_solutions)
         return;
 
     using IndexType = MathLib::MatrixVectorTraits<GlobalMatrix>::Index;
@@ -231,8 +231,8 @@ void TimeDiscretizedODESystem<ODESystemTag::FirstOrderImplicitQuasilinear,
         std::copy(bc.ids.cbegin(), bc.ids.cend(), std::back_inserter(ids));
         std::copy(bc.values.cbegin(), bc.values.cend(),
                   std::back_inserter(values));
-        }
-        MathLib::applyKnownSolution(A, rhs, x, ids, values);
+    }
+    MathLib::applyKnownSolution(A, rhs, x, ids, values);
 }
 
 }  // namespace NumLib
-- 
GitLab