[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