[Dune] dune-istl solvers and preconditioners
Christian Engwer
christi at uni-hd.de
Wed Jul 23 12:20:08 CEST 2008
Dear all,
I had problems where the bicgstab failed. Therefor I looked for other
possibilities. I implemented a gmres and I worked on a qmr (Quasi
Minimal Residual) solver. While doing so, I stumbled upon two
things. Therefore I'd suggest the following small changes in the istl
design:
1) you can't us solver as a preconditioner. If you could so, you could
i.e. use not-restarted gmres with m vectors inside a loopsolver and
you'd have a restarted gmres. You might also want to use a direct
solver as precoditioner for a cg in order to obtain reductions
beyond double precision.
I suggest to derive solver from precoditioner. The main difference
is that a solver is allowed to overwrite the righthand side in
order to save memory. An implementation of the precoditioner-apply
in the solver base class could just copy the rhs and call the
solver apply. This change should not have any impact on the current
implementations, but would add extra flexibility.
2) while working on the qmr solver I had the following problem. It
requires the precoditioner M to be evaluated as M^T. For many of
our current preconditioners this would be easy to implement. But
currently those preconditioners allow to be executed multiple
times. Due to this, it is really hard to implement an
applytransposed or such.
I'd suggest to add a new base class transposableprecoditioner (or
such) which is derived from preconditioner. This class offers the
new method applytransposed. The same could be done for the
operaters.
I'd also suggest to remove the run-multiple-times feature from
precoditioners like jacobi, gauss-siedel and ilu, in order to allow
an easy implementation of the applytransposed. If you want to run
the preconditioner multiple times, you could just add the
loopsolver(precond) as the precoditioner.
I think the first suggestion is really easy to implement and should
not create any problems. The second one might be a little bit more
tricky. I'm open for discussion.
Cheers
Christian
More information about the Dune
mailing list