Open blmelp opened 2 months ago
In yambo (so far) we control the matrix format, the approach, and the preconditioning
The matrix format sets different algorithms.
BSSSlepcMatrixFormat="explicit" # shell|explicit|explicit-debug
Instead the approach and the Preconditioning
BSSSlepcApproach="Kyrlov-Schur" # "Krylov-Schur","Generalized-Davidson","Jacobi-Davidson"
BSSSlepcPrecondition="none" # none|preonly+jacobi|bcgs+jacobi
set
epskind
kspkind
pckind
Also there are cross checks between these and accordingly is set the values of stkind
.
Specifically, only when the preconditioning is on (not allowed in Shell format), also stkind
is defined.
In practice we have
BSSSlepcApproach=epskind
BSSSlepcPrecondition=kspkind+spkind
With the new change, if I understand, e.g. KS-invert, the stkind
is also defined without preconditioning.
The new login would be something like
BSSSlepcApproach=epskind+stkind
BSSSlepcPrecondition=kspkind+spkind
with options
BSSSlepcApproach="KS" # "Krylov-Schur" (or "KS"),
"Generalized-Davidson" (or "GD"),
"Jacobi-Davidson" (or "JD")
and the new "Krylov-Schur+Shift-Invert" (or "KS+SI")
1) Is the interpretation correct? 2) I guess few more cross checks would be needed. For example: 2.a) when would KS+SI be allowed, e.g. with which matrix formats? 2.b) would KS+SI be compatible also with Preconditioning?
Final minor comment. In a Fortran source file, it should be sufficient to include an header file once (unless the header contains son specific code). So, I think it is not needed to have repeated lines such as #include <slepc/finclude/slepceps.h>
Implementation of the Schur complement in SLEPc using a spectral transformation of type
STSHELL
. To use it one must change the solver typeBSS_slepc_approach=="KS-sinvert"