From e38e8dd52c88161e3550199ab5a5080b6e567ade Mon Sep 17 00:00:00 2001 From: Wenqing Wang <wenqing.wang@ufz.de> Date: Tue, 23 Aug 2022 16:30:31 +0200 Subject: [PATCH] [SourceTerm] Fixed a bug in Python source term --- .../SourceTermCollection.cpp | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/ProcessLib/BoundaryConditionAndSourceTerm/SourceTermCollection.cpp b/ProcessLib/BoundaryConditionAndSourceTerm/SourceTermCollection.cpp index f006d574484..fb028dfe233 100644 --- a/ProcessLib/BoundaryConditionAndSourceTerm/SourceTermCollection.cpp +++ b/ProcessLib/BoundaryConditionAndSourceTerm/SourceTermCollection.cpp @@ -10,6 +10,8 @@ #include "SourceTermCollection.h" +#include <range/v3/view/filter.hpp> + namespace ProcessLib { void SourceTermCollection::addSourceTermsForProcessVariables( @@ -34,7 +36,12 @@ void SourceTermCollection::addSourceTermsForProcessVariables( void SourceTermCollection::integrate(const double t, GlobalVector const& x, GlobalVector& b, GlobalMatrix* jac) const { - for (auto const& st : _source_terms) + // For parallel computing with DDC, a partition may not have source term + // but a nullptr is assigned to its element in _source_terms. + auto non_nullptr = [](std::unique_ptr<SourceTerm> const& st) + { return st != nullptr; }; + + for (auto const& st : _source_terms | ranges::views::filter(non_nullptr)) { st->integrate(t, x, b, jac); } -- GitLab