OpenMCTDHB v2.3
Functions/Subroutines

moduleintegration Module Reference

This module contains seven routines which do the 7 integration steps of the MCTDHB algorithm, as it is described in the paper PRA 77, 033613 (2008). More...

Functions/Subroutines

subroutine do_stepOne (nConf, MOrb, NPar, CVec_zero, CData, readPotential, V_ext, NDX, NDY, NDZ, Dims, gridx, gridy, gridz, AbsTime, nSuperDiags, lambda0, Psi_zero, BandMat, rho_jk_zero, rho_ijkl_zero)
 This subroutine supplies the initial values of the h_kq,W_kqsl,rho_kq,rho_kqsl at t=0 for the subsequent integration steps.
subroutine do_stepTwo (AbsTime, CVec_zero, DtCVec, BandMat, RData, IData, LData, CVec_tauhalf, NPar, nConf, MOrb, IntPeriod, SILmaxIntOrder, IntegratorTolError, Relax, CData, tau, SILIntPeriod1, nSuperDiags, rho_ijkl_tauhalf, rho_jk_tauhalf, propDirection)
 This subroutine propagates the CI vector from t=0 to t=tau/2 using SIL and the matrix elements at t=0. The Matrix elements at t=tau/2 are evaluated.
subroutine do_stepThree (Psi_tauhalf, Psi_zero, Psi_WORK, AbsTime, DtPsi_WORK, CData, RData, IData, LData, NDX, NDY, NDZ, MOrb, Relax, tau, IntegratorTolError, restartABM, SILIntPeriod1, ABMIntOrder)
 This subroutine propagates the Orbitals from t=0 to t=tau/2 using ABM and the matrix elements obtained in step two.
subroutine do_stepFour (rho_jk_zero, rho_ijkl_zero, CData, Rdata, IData, LData, Psi_tildetauhalf, Psi_zero, restartABM, SILIntPeriod1, AbsTime, IntegratorTolError, NDX, NDY, NDZ, MOrb, ABMIntOrder)
 This subroutine propagates the Orbitals from t=tau/2 to t=0 using ABM and the matrix elements obtained in step one for error estimation.
subroutine do_stepFive (CData, RData, IData, LData, rho_jk_tauhalf, rho_ijkl_tauhalf, Psi_tau, Psi_tauhalf, readPotential, V_ext, NDX, NDY, NDZ, MOrb, nConf, nPar, Dims, gridx, gridy, gridz, AbsTime, SILIntPeriod1, ABMIntOrder, IntegratorTolError, restartABM, nSuperDiags, BandMat, lambda0)
 This subroutine propagates the Orbitals from t=tau/2 to t=tau using ABM and the matrix elements obtained in step two. The matrix elements h_kq, W_kqsl at t=tau are evaluated.
subroutine do_stepSix (CVec_tau, CVec_tauhalf, SILIntPeriod1, BandMat, CData, RData, IData, LData, nConf, SILmaxIntOrder, IntegratorTolError, Relax, RestartSIL, StdForm, SILIntPeriod2, AbsTime, iFail, MOrb, nSuperDiags, tau)
 This subroutine propagates the CI vector from t=tau/2 to t=tau using SIL and the matrix elements obtained in step five.
subroutine do_stepSeven (CVec_tildezero, CVec_tauhalf, AbsTime, SILIntPeriod1, CVec_tau, BandMat, CData, RData, IData, LData, nConf, MOrb, propDirection, nSuperDiags, SILmaxIntOrder, IntegratorTolError, Stepsize, iFail, Relax)
 This subroutine propagates the CI vector from t=tau/2 to t=0 using SIL and the matrix elements obtained in step five for error estimation. The error is given by the differences of the CI vector of this step to the CI vector of step one and the difference of the orbitals obtained in step three and step four.

Detailed Description

This module contains seven routines which do the 7 integration steps of the MCTDHB algorithm, as it is described in the paper PRA 77, 033613 (2008).

Authors:
Kaspar Sakmann, Axel Lode (2011)
Since:
2007
Todo:
Sort out which variables are IN,INOUT,OUT

Function/Subroutine Documentation

subroutine moduleintegration::do_stepFive ( COMPLEX*16,dimension(morb,morb,morb,morb,2),intent(inout)  CData,
REAL*8,dimension(10),intent(inout)  RData,
INTEGER*4,dimension(30),intent(inout)  IData,
LOGICAL,intent(inout)  LData,
COMPLEX*16,dimension(morb,morb),intent(inout)  rho_jk_tauhalf,
COMPLEX*16,dimension(morb,morb,morb,morb),intent(inout)  rho_ijkl_tauhalf,
COMPLEX*16,dimension(ndx*ndy*ndz,morb),intent(inout)  Psi_tau,
COMPLEX*16,dimension(ndx*ndy*ndz,morb),intent(inout)  Psi_tauhalf,
LOGICAL,intent(in)  ReadPotential,
REAL*8,dimension(ndx*ndy*ndz),intent(inout)  V_ext,
INTEGER,intent(in)  NDX,
INTEGER,intent(in)  NDY,
INTEGER,intent(in)  NDZ,
INTEGER,intent(in)  MOrb,
INTEGER,intent(in)  nConf,
INTEGER,intent(in)  nPar,
INTEGER,intent(in)  Dims,
REAL*8,dimension(ndx),intent(inout)  gridx,
REAL*8,dimension(ndy),intent(inout)  gridy,
REAL*8,dimension(ndz),intent(inout)  gridz,
REAL*8,intent(inout)  AbsTime,
REAL*8,intent(inout)  SILIntPeriod1,
INTEGER,intent(in)  ABMIntOrder,
REAL*8,intent(inout)  IntegratorTolError,
LOGICAL,intent(in)  restartABM,
INTEGER,intent(in)  nSuperDiags,
COMPLEX*16,dimension(nsuperdiags+1,nconf),intent(inout)  BandMat,
REAL*8,intent(inout)  lambda0 
)

This subroutine propagates the Orbitals from t=tau/2 to t=tau using ABM and the matrix elements obtained in step two. The matrix elements h_kq, W_kqsl at t=tau are evaluated.

Authors:
Kaspar Sakmann, Axel Lode (2011)
Since:
2007

Definition at line 338 of file moduleintegration.F90.

Here is the call graph for this function:

Here is the caller graph for this function:

subroutine moduleintegration::do_stepFour ( COMPLEX*16,dimension(morb,morb),intent(inout)  rho_jk_zero,
COMPLEX*16,dimension(morb,morb,morb,morb),intent(inout)  rho_ijkl_zero,
COMPLEX*16,dimension(morb,morb,morb,morb,2),intent(inout)  CData,
REAL*8,dimension(10),intent(inout)  RData,
INTEGER*4,dimension(30),intent(inout)  IData,
LOGICAL,intent(inout)  LData,
COMPLEX*16,dimension(ndx*ndy*ndz,morb),intent(inout)  Psi_tildetauhalf,
COMPLEX*16,dimension(ndx*ndy*ndz,morb),intent(inout)  Psi_zero,
LOGICAL,intent(in)  restartABM,
REAL*8,intent(inout)  SILIntPeriod1,
REAL*8,intent(inout)  AbsTime,
REAL*8,intent(inout)  IntegratorTolError,
INTEGER,intent(in)  NDX,
INTEGER,intent(in)  NDY,
INTEGER,intent(in)  NDZ,
INTEGER,intent(in)  MOrb,
INTEGER,intent(in)  ABMIntOrder 
)

This subroutine propagates the Orbitals from t=tau/2 to t=0 using ABM and the matrix elements obtained in step one for error estimation.

Authors:
Kaspar Sakmann, Axel Lode (2011)
Since:
2007

Definition at line 243 of file moduleintegration.F90.

Here is the call graph for this function:

Here is the caller graph for this function:

subroutine moduleintegration::do_stepOne ( INTEGER,intent(in)  nConf,
INTEGER,intent(in)  MOrb,
INTEGER,intent(in)  NPar,
COMPLEX*16,dimension(nconf),intent(inout)  CVec_zero,
COMPLEX*16,dimension(morb,morb,morb,morb,2),intent(inout)  CData,
LOGICAL,intent(in)  ReadPotential,
REAL*8,dimension(ndx*ndy*ndz),intent(inout)  V_ext,
INTEGER,intent(in)  NDX,
INTEGER,intent(in)  NDY,
INTEGER,intent(in)  NDZ,
INTEGER,intent(in)  Dims,
REAL*8,dimension(ndx),intent(in)  gridx,
REAL*8,dimension(ndy),intent(in)  gridy,
REAL*8,dimension(ndz),intent(in)  gridz,
REAL*8,intent(in)  AbsTime,
INTEGER,intent(in)  nSuperDiags,
REAL*8,intent(in)  lambda0,
COMPLEX*16,dimension(ndx*ndy*ndz,morb),intent(inout)  Psi_Zero,
COMPLEX*16,dimension(nsuperdiags+1,nconf),intent(inout)  BandMat,
COMPLEX*16,dimension(morb,morb),intent(inout)  rho_jk_zero,
COMPLEX*16,dimension(morb,morb,morb,morb),intent(inout)  rho_ijkl_zero 
)

This subroutine supplies the initial values of the h_kq,W_kqsl,rho_kq,rho_kqsl at t=0 for the subsequent integration steps.

Authors:
Kaspar Sakmann, Axel Lode (2011)
Since:
2007

Definition at line 19 of file moduleintegration.F90.

Here is the call graph for this function:

Here is the caller graph for this function:

subroutine moduleintegration::do_stepSeven ( COMPLEX*16,dimension(nconf),intent(inout)  CVec_tildezero,
COMPLEX*16,dimension(nconf),intent(inout)  CVec_tauhalf,
REAL*8,intent(inout)  AbsTime,
REAL*8,intent(inout)  SILIntPeriod1,
COMPLEX*16,dimension(nconf),intent(inout)  CVec_tau,
COMPLEX*16,dimension(nsuperdiags+1,nconf),intent(inout)  BandMat,
COMPLEX*16,dimension(morb,morb,morb,morb,2),intent(inout)  CData,
REAL*8,dimension(10),intent(inout)  RData,
INTEGER*4,dimension(30),intent(inout)  IData,
logical,intent(inout)  LData,
INTEGER,intent(in)  nConf,
INTEGER,intent(in)  MOrb,
INTEGER,intent(inout)  propDirection,
INTEGER,intent(in)  nSuperDiags,
INTEGER,intent(in)  SILmaxIntOrder,
REAL*8,intent(in)  IntegratorTolError,
REAL*8,intent(inout)  Stepsize,
INTEGER,intent(inout)  iFail,
logical,intent(inout)  Relax 
)

This subroutine propagates the CI vector from t=tau/2 to t=0 using SIL and the matrix elements obtained in step five for error estimation. The error is given by the differences of the CI vector of this step to the CI vector of step one and the difference of the orbitals obtained in step three and step four.

Authors:
Kaspar Sakmann, Axel Lode (2011)
Since:
2007

Definition at line 545 of file moduleintegration.F90.

Here is the call graph for this function:

Here is the caller graph for this function:

subroutine moduleintegration::do_stepSix ( COMPLEX*16,dimension(nconf),intent(inout)  CVec_tau,
COMPLEX*16,dimension(nconf),intent(inout)  CVec_tauhalf,
REAL*8,intent(inout)  SILIntPeriod1,
COMPLEX*16,dimension(nsuperdiags+1,nconf),intent(inout)  BandMat,
COMPLEX*16,dimension(morb,morb,morb,morb,2),intent(inout)  CData,
REAL*8,dimension(10),intent(inout)  RData,
INTEGER*4,dimension(30),intent(inout)  IData,
logical,intent(inout)  LData,
INTEGER,intent(in)  nConf,
INTEGER,intent(in)  SILmaxIntOrder,
REAL*8,intent(in)  IntegratorTolError,
logical,intent(in)  Relax,
logical  RestartSIL,
logical  StdForm,
REAL*8,intent(inout)  SILIntPeriod2,
REAL*8,intent(inout)  AbsTime,
INTEGER,intent(inout)  iFail,
INTEGER,intent(in)  MOrb,
INTEGER,intent(in)  nSuperDiags,
REAL*8,intent(inout)  tau 
)

This subroutine propagates the CI vector from t=tau/2 to t=tau using SIL and the matrix elements obtained in step five.

Authors:
Kaspar Sakmann, Axel Lode (2011)
Since:
2007

Definition at line 451 of file moduleintegration.F90.

Here is the call graph for this function:

Here is the caller graph for this function:

subroutine moduleintegration::do_stepThree ( COMPLEX*16,dimension(ndx*ndy*ndz,morb),intent(inout)  Psi_tauhalf,
COMPLEX*16,dimension(ndx*ndy*ndz,morb),intent(inout)  Psi_Zero,
COMPLEX*16,dimension(ndx*ndy*ndz*morb)  Psi_WORK,
REAL*8,intent(inout)  AbsTime,
COMPLEX*16,dimension(ndx*ndy*ndz*morb)  DtPsi_WORK,
COMPLEX*16,dimension(morb,morb,morb,morb,2),intent(inout)  CData,
REAL*8,dimension(10),intent(inout)  RData,
INTEGER*4,dimension(30),intent(inout)  IData,
LOGICAL,intent(inout)  LData,
INTEGER,intent(in)  NDX,
INTEGER,intent(in)  NDY,
INTEGER,intent(in)  NDZ,
INTEGER,intent(in)  MOrb,
LOGICAL,intent(in)  Relax,
REAL*8,intent(inout)  tau,
REAL*8,intent(inout)  IntegratorTolError,
LOGICAL,intent(in)  restartABM,
REAL*8,intent(inout)  SILIntPeriod1,
INTEGER,intent(in)  ABMIntOrder 
)

This subroutine propagates the Orbitals from t=0 to t=tau/2 using ABM and the matrix elements obtained in step two.

Authors:
Kaspar Sakmann, Axel Lode (2011)
Since:
2007

Definition at line 161 of file moduleintegration.F90.

Here is the call graph for this function:

Here is the caller graph for this function:

subroutine moduleintegration::do_stepTwo ( REAL*8,intent(inout)  AbsTime,
COMPLEX*16,dimension(nconf),intent(inout)  CVec_zero,
COMPLEX*16,dimension(nconf),intent(inout)  DtCVec,
COMPLEX*16,dimension(nsuperdiags+1,nconf),intent(inout)  BandMat,
REAL*8,dimension(10),intent(inout)  RData,
INTEGER*4,dimension(30),intent(inout)  IData,
logical,intent(inout)  LData,
COMPLEX*16,dimension(nconf),intent(inout)  CVec_tauhalf,
INTEGER,intent(in)  NPar,
INTEGER,intent(in)  nConf,
INTEGER,intent(in)  MOrb,
REAL*8,intent(inout)  IntPeriod,
INTEGER,intent(in)  SILmaxIntOrder,
REAL*8,intent(in)  IntegratorTolError,
logical,intent(in)  Relax,
COMPLEX*16,dimension(morb,morb,morb,morb,2),intent(inout)  CData,
REAL*8,intent(inout)  tau,
REAL*8,intent(inout)  SILIntPeriod1,
INTEGER,intent(in)  nSuperDiags,
COMPLEX*16,dimension(morb,morb,morb,morb),intent(out)  rho_ijkl_tauhalf,
COMPLEX*16,dimension(morb,morb),intent(out)  rho_jk_tauhalf,
INTEGER,intent(in)  propDirection 
)

This subroutine propagates the CI vector from t=0 to t=tau/2 using SIL and the matrix elements at t=0. The Matrix elements at t=tau/2 are evaluated.

Authors:
Kaspar Sakmann, Axel Lode (2011)
Since:
2007

Definition at line 65 of file moduleintegration.F90.

Here is the call graph for this function:

Here is the caller graph for this function:

 All Namespaces Files Functions Variables