From 72b5bf3ccf8c61add3823f88480f2d834ec5612a Mon Sep 17 00:00:00 2001 From: Elias Pipping <elias.pipping@fu-berlin.de> Date: Tue, 26 Jul 2016 12:01:14 +0200 Subject: [PATCH] Add lower solver w/o additional copy --- dune/matrix-vector/triangularsolve.hh | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/dune/matrix-vector/triangularsolve.hh b/dune/matrix-vector/triangularsolve.hh index 76bd133..e21426b 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(); -- GitLab