diff --git a/dune/matrix-vector/triangularsolve.hh b/dune/matrix-vector/triangularsolve.hh index 76bd1334cd378ed2dbdd73efcd4f727bff245327..e21426ba0d5d4698832297c0ac3868ca757a74d1 100644 --- a/dune/matrix-vector/triangularsolve.hh +++ b/dune/matrix-vector/triangularsolve.hh @@ -10,7 +10,18 @@ namespace MatrixVector { x = 0; Vector r = b; if (transpose) { - // TODO: not yet handled + for (auto it = A.begin(); it != A.end(); ++it) { + const size_t i = it.index(); + if (ignore != nullptr and (*ignore)[i].all()) + continue; + auto cIt = it->begin(); + assert(cIt.index() == it.index()); + x[i] = r[i] / *cIt; + for (; cIt != it->end(); ++cIt) { + const size_t j = cIt.index(); + r[j] -= x[i] * *cIt; + } + } } else { for (auto it = A.begin(); it != A.end(); ++it) { size_t i = it.index();