diff --git a/dune/solvers/iterationsteps/blockgssteps.hh b/dune/solvers/iterationsteps/blockgssteps.hh index f3d17ae769a99d4eba55add9c1f6819f2908f7d2..21e3ad38b3b366f4d397e2eeb7956c74d48467e0 100644 --- a/dune/solvers/iterationsteps/blockgssteps.hh +++ b/dune/solvers/iterationsteps/blockgssteps.hh @@ -52,12 +52,11 @@ void linearStep(const M& m, V& x, const V& b, const BitVector* ignore, diag = &*cIt; } - std::bitset<V::block_type::dimension> ignore_i(0); - if (ignore != nullptr) - ignore_i = (*ignore)[i]; + using Ignore = std::bitset<V::block_type::dimension>; // Update iterate with correction - x[i] += localSolver(diag != nullptr ? *diag : Block(0.0), std::move(ri), ignore_i); + x[i] += localSolver(diag != nullptr ? *diag : Block(0.0), std::move(ri), + ignore != nullptr ? (*ignore)[i] : Ignore(0)); }; if (direction != Direction::BACKWARD)