OpenMCTDHB v2.3
|
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. |
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).
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.
Definition at line 338 of file moduleintegration.F90.
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.
Definition at line 243 of file moduleintegration.F90.
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.
Definition at line 19 of file moduleintegration.F90.
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.
Definition at line 545 of file moduleintegration.F90.
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.
Definition at line 451 of file moduleintegration.F90.
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.
Definition at line 161 of file moduleintegration.F90.
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.
Definition at line 65 of file moduleintegration.F90.