MCTDH-X  v2.22
 All Classes Files Functions Variables Pages
sil_integrators Module Reference

In this module the Short Iterative Lanczos routines are collected. More...

Public Member Functions

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)
 
  • SUBROUTINE SILERRORMSG *
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...
 

Detailed Description

In this module the Short Iterative Lanczos routines are collected.

Todo:
make the Krylov basis arrays allocatables

Member Function/Subroutine Documentation

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().

Here is the call graph for this function:

Here is the caller graph for this function:

subroutine sil_integrators::silerrormsg ( integer  Error,
character*(*)  Msg 
)


  • SUBROUTINE SILERRORMSG *
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().

Here is the call graph for this function:

Here is the caller graph for this function:


The documentation for this module was generated from the following file: