In this module the Short Iterative Lanczos routines are collected.
More...
|
subroutine | silstep (Psi, DtPsi, PsiDim, IntPeriod, IntOrder, TolError, Relax, Restart, StdForm, Stepsize, ErrorCode, Time, Func, STATE, Also_BackProp, MinOrder) |
|
- SHORT ITERATIVE LANCZOS (sillib.f) *
Library module containing a short iterative Lanczos integrator. *
- Contains: * SILStep: The (real) Lanczos integration routine. * SILErrorMsg: Returns for a given error number a corresponding * error message. * SILDiag: The (real) Lanczos diagonalisation routine. *
More...
|
|
subroutine | silerrormsg (Error, Msg) |
|
Generates for a given error number returned by "SILStep/SILStep2/ *
SILStep3" a corresponding error message. *
- Input parameters: * Error: Error code returned by SILStep/SILStep2. *
- Output parameters: * Msg: Error message. *
- V7.0 MB *
More...
|
|
subroutine | sildiag (Psi, DtPsi, PsiDim, IntOrder, TolError, StdForm, Steps, ErrorCode, rlaxnum, Time, ortho, Func, minorder) |
|
- SUBROUTINE SILDIAG *
- Diagonalises a (complex) Hermitian matrix by Lanczos-iterations. * This routine is used for improved relaxation and for meigenf. *
- Input parameters: * Psi: The (complex) initial-value vector. * DtPsi: Action of Hamiltonian on the initial-value vector, * i.e. H|Psi> or -i H|Psi>, depending on "StdForm". * PsiDim Length of Psi and DtPsi vectors. * IntPeriod: Lenght of time interval to be integrated. * IntOrder: Maximum integration order. * TolError: Maximum error that is tolerated. * StdForm: If true, Func(Time,Psi,DtPsi) = -i H|Psi>, else * Func(Time,Psi,DtPsi) = H|Psi>. * Steps: Number of steps made so far (Steps is passed to * "WriteStep"). * Krylov: Matrix with minimum size PsiDim*(IntOrder-1) with * columns containing the Krylov vectors H^2|psi> to * H^TrueOrder|psi>. * TrueOrder: On input: the minimal order to be used. * ortho: if .true., then a full re-orthogonalisation of the * Krylov vectors is performed. *
- Output parameters: * Psi: Computed eigenvector. The number of the eigenvector * to be chosen is specified by rlaxnum. * DtPsi: Normalised first Krylov vector, i. e. (H-<H>)|Psi>. * Krylov: Matrix with minimum size PsiDim*(IntOrder-1) with * columns containing the Krylov vectors H^2|psi> to * H^TrueOrder|psi>. * TrueOrder: The order that has actually been used (may be less * than IntOrder). * Steps: Same as on entry. * ErrorCode: Error code having the following meaning: * 0: everything was o. k., * 1: illegal integration order, * 3: diagonalization failed, *
- External routines: * Func: Computes the action of the Hamiltonian on Psi. * Called as * Func(AbsTime,Psi,DtPsi,CData,RData,IData,LData). *
- Some new Variables: * rlaxnum : This is the argument of the keyword relaxation. * If relaxation has no argument, rlaxnum=-1 . *
- V8.3 10/03 HDM *
More...
|
|
In this module the Short Iterative Lanczos routines are collected.
- Todo:
- make the Krylov basis arrays allocatables
subroutine sil_integrators::sildiag |
( |
complex*16, dimension(psidim) |
Psi, |
|
|
complex*16, dimension(psidim) |
DtPsi, |
|
|
integer |
PsiDim, |
|
|
integer |
IntOrder, |
|
|
real*8 |
TolError, |
|
|
logical |
StdForm, |
|
|
integer |
Steps, |
|
|
integer |
ErrorCode, |
|
|
integer |
rlaxnum, |
|
|
real*8 |
Time, |
|
|
logical |
ortho, |
|
|
external |
Func, |
|
|
integer |
minorder |
|
) |
| |
- SUBROUTINE SILDIAG *
- Diagonalises a (complex) Hermitian matrix by Lanczos-iterations. * This routine is used for improved relaxation and for meigenf. *
- Input parameters: * Psi: The (complex) initial-value vector. * DtPsi: Action of Hamiltonian on the initial-value vector, * i.e. H|Psi> or -i H|Psi>, depending on "StdForm". * PsiDim Length of Psi and DtPsi vectors. * IntPeriod: Lenght of time interval to be integrated. * IntOrder: Maximum integration order. * TolError: Maximum error that is tolerated. * StdForm: If true, Func(Time,Psi,DtPsi) = -i H|Psi>, else * Func(Time,Psi,DtPsi) = H|Psi>. * Steps: Number of steps made so far (Steps is passed to * "WriteStep"). * Krylov: Matrix with minimum size PsiDim*(IntOrder-1) with * columns containing the Krylov vectors H^2|psi> to * H^TrueOrder|psi>. * TrueOrder: On input: the minimal order to be used. * ortho: if .true., then a full re-orthogonalisation of the * Krylov vectors is performed. *
- Output parameters: * Psi: Computed eigenvector. The number of the eigenvector * to be chosen is specified by rlaxnum. * DtPsi: Normalised first Krylov vector, i. e. (H-<H>)|Psi>. * Krylov: Matrix with minimum size PsiDim*(IntOrder-1) with * columns containing the Krylov vectors H^2|psi> to * H^TrueOrder|psi>. * TrueOrder: The order that has actually been used (may be less * than IntOrder). * Steps: Same as on entry. * ErrorCode: Error code having the following meaning: * 0: everything was o. k., * 1: illegal integration order, * 3: diagonalization failed, *
- External routines: * Func: Computes the action of the Hamiltonian on Psi. * Called as * Func(AbsTime,Psi,DtPsi,CData,RData,IData,LData). *
- Some new Variables: * rlaxnum : This is the argument of the keyword relaxation. * If relaxation has no argument, rlaxnum=-1 . *
- V8.3 10/03 HDM *
References function_library::beta(), function_library::cpvxd(), and orbital_equationofmotion::func().
Referenced by integration::integrator_ci().
subroutine sil_integrators::silerrormsg |
( |
integer |
Error, |
|
|
character*(*) |
Msg |
|
) |
| |
Generates for a given error number returned by "SILStep/SILStep2/ *
SILStep3" a corresponding error message. *
- Input parameters: * Error: Error code returned by SILStep/SILStep2. *
- Output parameters: * Msg: Error message. *
- V7.0 MB *
subroutine sil_integrators::silstep |
( |
complex*16, dimension(psidim) |
Psi, |
|
|
complex*16, dimension(psidim) |
DtPsi, |
|
|
integer |
PsiDim, |
|
|
real*8 |
IntPeriod, |
|
|
integer |
IntOrder, |
|
|
real*8 |
TolError, |
|
|
logical |
Relax, |
|
|
logical |
Restart, |
|
|
logical |
StdForm, |
|
|
real*8 |
Stepsize, |
|
|
integer |
ErrorCode, |
|
|
real*8 |
Time, |
|
|
external |
Func, |
|
|
integer |
STATE, |
|
|
logical |
Also_BackProp, |
|
|
integer |
MinOrder |
|
) |
| |
- SHORT ITERATIVE LANCZOS (sillib.f) *
Library module containing a short iterative Lanczos integrator. *
- Contains: * SILStep: The (real) Lanczos integration routine. * SILErrorMsg: Returns for a given error number a corresponding * error message. * SILDiag: The (real) Lanczos diagonalisation routine. *
- SUBROUTINE SILSTEP *
- Integrates a system of complex linear first order differential * equations with constant and Hermitian Hamiltonian employing the * short iterative Lanczos method. The routine runs with both * variable step size and order. (First it increases the order to * achieve the desired accuracy. If this failes within the maximum * order, the stepsize is reduced.) SILStep makes only one single * integration step, so it has to be imbedded into a loop that calls * SILStep until the desired time interval is integrated. The ODE is * of the form i dPsi/dt = H|Psi> = Func(Time,Psi,DtPsi) =: DtPsi or * dPsi/dt = -i H|Psi> = Func(Time,Psi,DtPsi) =: DtPsi, depending on * the flag "StdForm". All computations are performed with double * precision. *
- Input parameters: * Psi: The (complex) initial-value vector. * DtPsi: Action of Hamiltonian on the initial-value vector, * i.e. H|Psi> or -i H|Psi>, depending on "StdForm". * PsiDim Length of Psi and DtPsi vectors. * IntPeriod: Lenght of time interval to be integrated. * IntOrder: Maximum integration order. * TolError: Maximum error that is tolerated. * Relax: Flag for relaxation calculation. If true, Psi is * relaxated, else propagated. * Restart: Flag for restarting the integrator. If true, the * Krylov space is built up before propagation, else the * old Krylov vectors are used. * StdForm: If true, Func(Time,Psi,DtPsi) = -i H|Psi>, else * Func(Time,Psi,DtPsi) = H|Psi>. * Steps: Number of steps made so far (Steps is passed to * "WriteStep"). * Krylov: Matrix with minimum size PsiDim*(IntOrder-1) with * columns containing the Krylov vectors H^2|psi> to * H^TrueOrder|psi>. The Krylov vectors are needed on * entry only when Restart is false. * Also_BackProp: Logical that decides if the constructed Krylov * vectors are used also to propagate Psi back in * time. If Also_BackProp it .true. then Psi is the * propagated and DtPsi the backpropagated function * on output. * Output parameters: * Psi: Propagated Psi. * DtPsi: If Also_BackProp is .true. then DtPsi contains the * backpropagated Psi and otherwise the * Normalised first Krylov vector, i. e. (H-<H>)|Psi>. * Krylov: Matrix with minimum size PsiDim*(IntOrder-1) with * columns containing the Krylov vectors H^2|psi> to * H^TrueOrder|psi>. * Stepsize: Time interval that actually has been integrated (can * be lower than IntPeriod). * TrueOrder: The order that has actually been used (may be less * than IntOrder). * Steps: Same as on entry. *
- External routines: * Func: Computes the action of the Hamiltonian on Psi. * Called as * Func(AbsTime,Psi,DtPsi,CData,RData,IData,LData). * Some new Variables: * Relax : logical set true for a relaxation run. *
- V6.0 MB * V8.2 05/01 HDM Addition of 'relaxation' to exited states. * Eigenvector-space now dynamically allocated. *
References function_library::beta(), function_library::cpvxd(), and orbital_equationofmotion::func().
Referenced by integration::integrator_ci().
The documentation for this module was generated from the following file: