diff --git a/dune/solvers/iterationsteps/projectedblockgsstep.cc b/dune/solvers/iterationsteps/projectedblockgsstep.cc index 25c4f71dbaf115de011c5ca2420e27e87858a672..97a6ff21363f8d840bc6f6c8aa91341b1c3075a2 100644 --- a/dune/solvers/iterationsteps/projectedblockgsstep.cc +++ b/dune/solvers/iterationsteps/projectedblockgsstep.cc @@ -12,10 +12,12 @@ void ProjectedBlockGSStep<MatrixType, VectorType>::iterate() const MatrixType& mat = *this->mat_; for (size_t i=0; i<this->x_->size(); i++) { - - /** \todo Handle more general boundary conditions */ - if ((*this->ignoreNodes_)[i][0]) + auto ignoreCount = (*this->ignoreNodes_)[i].count(); + if (ignoreCount == BlockSize) continue; + if (ignoreCount > 0) + DUNE_THROW(Dune::NotImplemented, + "Individual blocks must be either ignored completely, or not at all"); bool zeroDiagonal = false; for (size_t j=0; j<BlockSize; j++) {