Hi Slava, scipy.sparse.linalg contains a set of the classic standard iterative solvers, those seem quite well-tested. It also has scipy.sparse.linalg.spilu (incomplete LU decomposition) that is one of the best general purpose precondictioners. (I personally didn't use it though, yet).
Anton and me had once a bachelor student trying out some established and some more advanced iterative methods on kwant systems - the results were not very promising: Even small systems took very long too converge. We did not try to use it when a previous close solution was already known. So that may be a viable approach. Best Michael On 03-11-15 12:41, Christoph Groth wrote: > Viacheslav Ostroukh wrote: > >> Therefore I think, that it would be quite useful to implement >> iterative solvers for such cases. This means, that we call our current >> solver for smatrix/greens_function for initialization, and then use >> iterative ones to get dependency on a parameter set. > > I think that trying this out is a good idea. This could be a nice > project for the upcoming meeting. > >> 1) Is it useful, or I miss some nice pythonic pattern that already can >> implement it? đ > > There is no support in Kwant for using iterative linear solvers. But > once we have identified some suitable library and can use it From > Python, it shouldn't be too difficult to do. One way that seems natural > would be to subclass kwant.solvers.common.SparseSolver. > >> 2) Does anyone have a feeling/knowledge, how this can speed up (or >> slow down?) calculations? > > Iâve never used iterative solvers myself. I am not sure about that, but > it may be that the linear systems that arise in quantum transport are > âstiffâ and thus ill-suited for iterative solvers. Still, once the > parameters are spaced densely enough, starting From an approximate > solution _should_ allow for significant speedups. > >> 3) Does someone know nice numeric libraries for iterative linear >> algebra to test, that can be easily used in Python? > > A quick search within Debian (âapt-cache search iterative preconditionâ) > points to > > ⢠ITSOL > ⢠ViennaCL (also has Python bindings) > ⢠Pysparse (obviously also has Python bindings) > > Christoph
