From 7edff98d2d19ee8b1b46595046ec06e681444b26 Mon Sep 17 00:00:00 2001
From: Elias Pipping <elias.pipping@fu-berlin.de>
Date: Thu, 14 Jul 2016 20:48:58 +0200
Subject: [PATCH] Propagate ignoreNodes to preconditioner

In analogy to a multigridstep and its basesolver/smoother/etc.
---
 dune/solvers/iterationsteps/cgstep.cc | 7 +++++++
 dune/solvers/test/cgsteptest.cc       | 1 -
 2 files changed, 7 insertions(+), 1 deletion(-)

diff --git a/dune/solvers/iterationsteps/cgstep.cc b/dune/solvers/iterationsteps/cgstep.cc
index 3085b2b7..94f86e9d 100644
--- a/dune/solvers/iterationsteps/cgstep.cc
+++ b/dune/solvers/iterationsteps/cgstep.cc
@@ -1,6 +1,8 @@
 // -*- tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 4 -*-
 // vi: set et ts=8 sw=4 sts=4:
 
+#include <dune/solvers/common/canignore.hh>
+
 template <class MatrixType, class VectorType>
 void CGStep<MatrixType, VectorType>::check() const
 {
@@ -17,6 +19,11 @@ void CGStep<MatrixType, VectorType>::preprocess()
                 r_[i] = 0;
 
     if (preconditioner_) {
+        using CanIgnore_t = CanIgnore<DefaultBitVector_t<VectorType>>;
+        CanIgnore_t *asCanIgnore = dynamic_cast<CanIgnore_t*>(preconditioner_);
+        if (asCanIgnore != nullptr and this->hasIgnore())
+            asCanIgnore->setIgnore(this->ignore());
+
         preconditioner_->setMatrix(*matrix_);
         preconditioner_->apply(p_, r_);
     } else
diff --git a/dune/solvers/test/cgsteptest.cc b/dune/solvers/test/cgsteptest.cc
index 2acc984d..87cc7f62 100644
--- a/dune/solvers/test/cgsteptest.cc
+++ b/dune/solvers/test/cgsteptest.cc
@@ -93,7 +93,6 @@ struct CGTestSuite
                                                   typename Problem::Vector>::
                     create(Dune::Solvers::BlockGS::LocalSolvers::gs(),
                            Dune::Solvers::BlockGS::Direction::SYMMETRIC);
-            blockgs.setIgnore(p.ignore);
             Dune::Solvers::CGStep<typename Problem::Matrix,
                                   typename Problem::Vector> cgStep(p.A, u_copy,
                                                                    rhs_copy,
-- 
GitLab