diff --git a/dune/matrix-vector/triangularsolve.hh b/dune/matrix-vector/triangularsolve.hh index a9ab4c8312be52356e99a32a3496acc1a4fe317c..9289992e7bd0f4d6323d2aa8ad31653adc569ba7 100644 --- a/dune/matrix-vector/triangularsolve.hh +++ b/dune/matrix-vector/triangularsolve.hh @@ -15,16 +15,16 @@ namespace MatrixVector { if (transpose) { for (auto it = L.begin(); it != L.end(); ++it) { const size_t i = it.index(); - if (ignore != nullptr and (*ignore)[i].all()) - continue; auto cIt = it->begin(); assert(cIt.index() == i); - x[i] = b[i] / *cIt; + if (ignore == nullptr or (*ignore)[cIt.index()].none()) + x[i] = b[i] / *cIt; cIt++; for (; cIt != it->end(); ++cIt) { const size_t j = cIt.index(); assert(j > i); - b[j] -= x[i] * *cIt; + if (ignore == nullptr or (*ignore)[j].none()) + b[j] -= x[i] * *cIt; } } } else { @@ -57,16 +57,16 @@ namespace MatrixVector { if (transpose) { for (auto it = U.beforeEnd(); it != U.beforeBegin(); --it) { const size_t i = it.index(); - if (ignore != nullptr and (*ignore)[i].all()) - continue; auto cIt = it->beforeEnd(); assert(cIt.index() == i); - x[i] = b[i] / *cIt; + if (ignore == nullptr or (*ignore)[cIt.index()].none()) + x[i] = b[i] / *cIt; cIt--; for (; cIt != it->beforeBegin(); --cIt) { const size_t j = cIt.index(); assert(j < i); - b[j] -= *cIt * x[i]; + if (ignore == nullptr or (*ignore)[j].none()) + b[j] -= *cIt * x[i]; } } } else {