
Language: Fortran
TIME6T 1.0  numerical solutions of the Cauchy problem for the
timedependent Schroedinger equation in the finite spatial variable
interval
TIME6T 2.0  numerical solutions of the Cauchy problem for the
multidimensional timedependent Schroedinger equation.
TIME6T 1.0  numerical solutions of the Cauchy problem
for the timedependent Schroedinger equation
The subroutine TIME6T 1.0 calculates numerical solutions of the Cauchy
problem for the timedependent Schroedinger equation in the finite spatial
variable interval
with the initial condition
up to 2M (M=1, 2, 3) order of accuracy in the time step of a uniform
grid , covering the time
interval , using the explicit Magnus expansion [1] of the
evolution operator with the additional gauge transformations and their
Pade approximations.
The considered scheme was constructed on the basis of the algorithms
published in paper [2]. Further discretization of the resulting problem
is implemented by means of the finiteelement method [3], using Lagrange
interpolation polynomials up to the order p=8 at suitable smoothness
of the solution.
References:
 Magnus W. Commun. Pure Appl. Math., 1954, v. 7, pp. 649673.
 Chuluunbaatar O. et al. J. Phys. A, 2008, v. 41, pp. 295203125.
 Bathe K.J. Finite element procedures in engineering analysis.
Englewood Cliffs, Prentice Hall, New York, 1982.
Structure:
Type 
 
SUBROUTINE 
Name 
 
TIME6T 
Internal subroutines 
 
TMSOLV, ASSMBS, ASSMBM, EMASSD, ESTIFD, ADDVEC, BOUNDC, COLMHT, ERRDIM, FEGRID, MAXHT, GAULEG, NODGEN, SHAPEF, MULTC, MULTCC, REDBAC, DECOMC 
External subroutines 
 
POTCAL, DINIT (usersupplied subroutines) 
Usage:
CALL TIME6T (TITLE,NPOL,TMIN,TMAX,TAU,ITORDR,IPRINT,IPRSTP,IPRITT,NMESH,RMESH,IBOUND,FNOUT,IOUT,FMATR,IOUM,
EVWFN,IOUF,TOT,ITOT,ZTOT,MTOT,MITOT,MZTOT)
INPUT: TITLE,NPOL,TMIN,TMAX,TAU,ITORDR,IPRINT,IPRSTP,IPRITT,NMESH,RMESH,IBOUND,FNOUT,RMESH,IOUT,FMATR,IOUM,
EVWFN,IOUF,TOT,ITOT,ZTOT,MTOT,MITOT,MZTOT
where:
TITLE 
 
character symbol, title of the run to be printed on the output listing. 
NPOL 
 
integer number, order of interpolating Lagrange polynomials. 
TMIN 
 
double precision number, begin of time interval. 
TMAX 
 
double precision number, end of time interval. 
TAU 
 
double precision number, time step of time variable t. 
ITORDR 
 
integer number, order of Magnus expansion, 1 , 2 , 3. 
IPRINT 
 
integer number, level of print, 0 , 1 , 2. 
IPRSTP 
 
integer number, step of spatial variable x with which solutions are printed out. 
IPRITT 
 
integer number, step of time variable t with which solutions are printed out. 
NMESH 
 
integer number, dimension of array RMESH. NMESH always should be odd and > = 3. 
RMESH 
 
double precision array, array RMESH contains information about
subdivision of interval [x_min,x_max] of space variable x on
subintervals. The whole interval [x_min,x_max] is divided as
follows: RMESH(1) = x_min, RMESH(NMESH) = x_max, and the values
of RMESH(I) set the number of elements for each subinterval
[RMESH(I1), RMESH(I+1)], where I=2, 4, ... , NMESH1. 
IBOUND 
 
integer number, parameter defining the type of boundary
conditions set in the boundary points x = x_min and x = x_max:
= 1  the Dirichlet  Dirichlet boundary conditions;
= 2  the Dirichlet  Neumann boundary conditions;
= 3  the Neumann  Dirichlet boundary conditions;
= 4  the Neumann  Neumann boundary conditions. 
FNOUT 
 
character symbol, name of the output file for printing out the results of the calculation. 
IOUT 
 
integer number, number of the output logical device for printing out the results of the calculation. 
FMATR 
 
character symbol, name of the scratch file for storing matrices. 
IOUM 
 
integer number, number of the logical device for storing matrices. 
EVWFN 
 
character symbol, name of the output file for storing the results
of the calculation, namely, finiteelement grid points, and
solutions. It is used only if IOUF > 0. 
IOUF 
 
integer number, number of the logical device for storing data into file EVWFN. 
TOT 
 
double precision array, working vector. 
ITOT 
 
integer array, working vector. 
ZTOT 
 
double complex array, working vector. 
MTOT 
 
integer number, dimension of the working array TOT. 
MITOT 
 
integer number, dimension of the working array ITOT. 
MZTOT 
 
integer number, dimension of the working array ZTOT. 
OUTPUT: WRITE(IOUF) NN,NGRID,TT,TAU,(XGRID(J),J=1,NGRID),(ZU(J),J=1,NN)
NGRID 
 
integer number, the number of finiteelement grid points. 
NN 
 
integer number, the number of finiteelement grid points of solution. 
TT 
 
double precision number, the value of time variable t. 
TAU 
 
double precision number, the time step of time variable t. 
XGRID 
 
double precision array, contains the values of the finiteelement grid points. 
ZU 
 
double complex array, contains calculated solution. 
Example 1: subroutine POTCAL for the given potential
f(x,t) = (4  3 * exp(t)) * x**2 / 2 .
SUBROUTINE POTCAL(RG,TT,TAU,DA,HH,DS,SS,ITORDR)
IMPLICIT REAL*8 (AH,OZ)
DATA ZERO / 0.D0 /, ONE / 1.D0 /
HH = (4  3 * DEXP(TT)) * RG**2 / 2
SS = ZERO
DA = ONE / 2
DS = ZERO
IF (ITORDR .GE. 2) THEN
F1 = 3 * DEXP(TT) / 24 * RG**2 / 2
HH = HH + TAU**2 * F1
F1 = 3 * DEXP(TT) / 12 * RG**2 / 2
SS = SS + TAU**2 * F1
END IF
IF (ITORDR .GE. 3) THEN
F1 = 3 * DEXP(TT) * RG**2 / 2 / 1920
1 + ( 3 * DEXP(TT) * RG)**2 / 1440
2  (3 * DEXP(TT) * RG) * (4  3 * DEXP(TT)) * RG / 720
HH = HH + TAU**4 * F1
F1 = 3 * DEXP(TT) * RG**2 / 2 / 480
1 + (3 * DEXP(TT) * RG) * (4  3 * DEXP(TT)) * RG / 720
SS = SS + TAU**4 * F1
DA = DA + ( 3 * DEXP(TT)) * TAU**4 / 720
DS = DS  ( 3 * DEXP(TT)) * TAU**4 / 720
END IF
RETURN
END
RG 
 
double precision number, the value of spatial variable x. 
TT 
 
double precision number, the value of time variable t. 
TAU 
 
double precision number, the time step of time variable t. 
HH 
 
double precision number, contains the operator A^(M)_k without
differential operators at M=ITORDR. 
SS 
 
double precision number, contains the operator S^(M)_k without
differential operators at M=ITORDR. 
DA 
 
double precision number, contains the coefficient of differential
operators of operator A^(M)_k at M=ITORDR. DA = 1/2 at ITORDR = 1, 2,
while DA = 1/2 + f_{xxtt}(x,t) * TAU**4 / 720 at ITORDR = 3. 
DS 
 
double precision number, contains the coefficient of differential
operators of operator S^(M)_k at M=ITORDR. DS = 0 at ITORDR = 1 , 2,
while DS =  f_{xxt}(x,t) * TAU**4 / 720 at ITORDR = 3. 
Here parameters RG, TT, TAU should not be changed by users.
Example 2: subroutine DINIT for given initial condition
psi_0(x) = sqrt(sqrt(1 / pi)) * exp(  (x  sqrt(2))**2 / 2) .
SUBROUTINE DINIT(KEY,NN,NGRID,XGRID,ZU1)
IMPLICIT REAL*8 (AH,OY)
IMPLICIT COMPLEX*16 (Z)
DIMENSION ZU1(NN),XGRID(NGRID)
DATA ONE / 1.D0 /, TWO / 2.D0 /
PI = DACOS( ONE)
FG = DSQRT(DSQRT(ONE / PI))
DO I = 1 , NN
X = XGRID(I + KEY)
ZU1(I) = FG * DEXP(  (X  DSQRT(TWO))**2 / 2)
END DO
RETURN
END
KEY  integer number, If IBOUND >= 3 then KEY = 0, else KEY = 1.
Here parameters KEY, NN, NGRID, XGRID should not be changed by users.
Remarks:
 In subroutine TIME6T 1.0 is used the dynamic distribution storages as
onedimensional arrays TOT, ZTOT ITOT, RMESH. In test example their
dimension is set by the values MTOT=100000, MZTOT=100000, MITOT=100000,
NMESH1=5. If user has set insufficient values of dimension above arrays
the message about an error is printed and the execution of the program
is aborted. In the last case, in order to carry out the required
calculation it is necessary to increase the dimensions of arrays to the
quantity taken from the message.
 For the accuracy control over the numerical solution by step TAU,
the Runge coefficient on four twice condensed grids is additionally
calculated, using the subroutine RUNGE.
Sources TIME6T 1.0 with example and detailed description (pdf) are submitted.
TIME6T 2.0  numerical solutions of the Cauchy problem
for the multidimensional timedependent Schroedinger equation
The subroutine TIME6T 2.0 calculates numerical solutions of the Cauchy
problem for the timedependent Schroedinger equation in ddimensional space
up to 2M (M=1, 2, 3) order of accuracy in the time step of a uniform grid
covering the time interval
, in the frame of the Kantorovich method [1] using the explicit
Magnus expansion [2] of the evolution operator with the additional gauge
transformations and their Pade approximations.
The considered scheme was constructed on the basis of the algorithms
published in [3]. Further discretization of the resulting problem is
implemented by means of the finiteelement method [4] using Lagrange
interpolation polynomials up to the order p=8 at suitable smoothness
of the solution. Test example is carried out from paper [5].
References:
 Kantorovich L.V. and Krylov V.I. Approximate Methods of Higher Analysis.
New York, Wiley, 1964.
 Magnus W. Commun. Pure Appl. Math., 1954, v. 7, pp. 649673.
 Chuluunbaatar O. et al. J. Phys. A, 2008, v. 41, pp. 295203125.
 Bathe K.J. Finite element procedures in engineering analysis.
Englewood Cliffs, Prentice Hall, New York, 1982.
 Chuluunbaatar O. et al. Phys. Rev E, 2008, v. 78, pp. 01770214.
Structure:
Type 
 
SUBROUTINE 
Name 
 
TIME6T 
Internal subroutines 
 
TMSOLV, ASSMBN, ASSMBT, EMASSD, ESTIFD, ESTIFN,
ESTITD, ESTITN, ADDVEC, HQPOTN, SGPOTN, BOUNDC,
COLMHT, ERRDIM, FEGRID, MAXHT, GAULEG, NODGEN,
SHAPEF, MULTC, MULTCC, REDBAC, DECOMC 
External subroutines 
 
POTCAL, POTTIM, DINIT (usersupplied subroutines) 
Usage:
CALL TIME6T (TITLE,MDIM,IDIM,NPOL,TMIN,TMAX,TAU,ITORDR,IPRINT,IPRSTP,IPRITT,NMESH,RMESH,IBOUND,FNOUT,IOUT,
POTEN,IOUP,POTTM,IOUD,FMATR,IOUM,EVWFN,IOUF,TOT,ITOT,ZTOT,MTOT,MITOT,MZTOT)
INPUT: TITLE,MDIM,IDIM,NPOL,TMIN,TMAX,TAU,ITORDR,IPRINT,IPRSTP,IPRITT,NMESH,RMESH,IBOUND,FNOUT,IOUT,POTEN,
IOUP,POTTM,IOUD,FMATR,IOUM,EVWFN,IOUF,TOT,ITOT,ZTOT,MTOT,MITOT,MZTOT
where:
TITLE 
 
character symbol, title of the run to be printed on the output listing. 
MDIM 
 
integer number, number of coupled differential equations. 
IDIM 
 
integer number, dimension of the envelope space. 
NPOL 
 
integer number, order of interpolating Lagrange polynomials. 
TMIN 
 
double precision number, begin of time interval. 
TMAX 
 
double precision number, end of time interval. 
TAU 
 
double precision number, time step of time variable t. 
ITORDR 
 
integer number, order of Magnus expansion, 1 , 2 , 3. 
IPRINT 
 
integer number, level of print, 0 , 1 , 2. 
IPRSTP 
 
integer number, step of spatial variable r with which solutions
are printed out. 
IPRITT 
 
integer number, step of time variable t with which solutions
are printed out. 
NMESH 
 
integer number, dimension of array RMESH. NMESH always should be
odd and > = 3. 
RMESH 
 
double precision array, array RMESH contains information about
subdivision of interval [0,r_max] of space variable x on
subintervals. The whole interval [0,r_max] is divided as
follows: RMESH(1) = 0, RMESH(NMESH) = r_max, and the values
of RMESH(I) set the number of elements for each subinterval
[RMESH(I1), RMESH(I+1)], where I=2, 4, ... , NMESH1. 
IBOUND 
 
IBOUND  integer number, parameter defining the type of boundary
conditions set in the boundary points r = 0 and r = r_max:
= 1  the Dirichlet  Dirichlet boundary conditions;
= 2  the Dirichlet  Neumann boundary conditions;
= 3  the Neumann  Dirichlet boundary conditions;
= 4  the Neumann  Neumann boundary conditions. 
FNOUT 
 
character symbol, name of the output file for printing out
the results of the calculation. 
IOUT 
 
integer number, number of the output logical device for printing
out the results of the calculation. 
POTEN 
 
character symbol, name of the scratch file for potential matrices. 
IOUP 
 
integer number, number of the logical device POTEN. 
POTTM 
 
character symbol, name of the scratch file for potential matrices. 
IOUD 
 
integer number, number of the logical device POTTM. 
FMATR 
 
character symbol, name of the scratch file for storing matrices. 
IOUM 
 
integer number, number of the logical device FMATR. 
EVWFN 
 
character symbol, name of the output file for storing the results
of the calculation, namely, finiteelement grid points, and
solutions. It is used only if IOUF > 0. 
IOUF 
 
integer number, number of the logical device EVWFN. 
TOT 
 
double precision array, working vector. 
ITOT 
 
integer array, working vector. 
ZTOT 
 
double complex array, working vector. 
MTOT 
 
integer number, dimension of the working array TOT. 
MITOT 
 
integer number, dimension of the working array ITOT. 
MZTOT 
 
integer number, dimension of the working array ZTOT. 
OUTPUT: WRITE(IOUF) NN,NGRID,TT,TAU,(XGRID(J),J=1,NGRID),(ZU(J),J=1,NN)
NGRID 
 
integer number, the number of finiteelement grid points. 
NN 
 
integer number, the number of finiteelement grid points of solution. 
TT 
 
double precision number, the value of time variable t. 
TAU 
 
double precision number, the time step of time variable t. 
XGRID 
 
double precision array, contains the values of the finiteelement grid points. 
ZU 
 
double complex array, contains calculated solution. 
POTCAL is the name of the usersupplied subroutine which calculates
the potential matrices V and Q.
POTTIM is the name of the usersupplied subroutine which calculates
the potential matrices G and Z.
DINIT is the name of the usersupplied subroutine which calculates
the initial function.
Remarks:
 In subroutine TIME6T 2.0 is used the dynamic distribution storages as
onedimensional arrays TOT, ZTOT, ITOT, RMESH. In test example their
dimension is set by the values MTOT=2 000 000, MZTOT=1 000 000,
MITOT=300 000, NMESH1=5. If user has set insufficient values of dimension
above arrays the message about an error is printed and the execution of
the program is aborted. In the last case, in order to carry out the
required calculation it is necessary to increase the dimensions of arrays
to the quantity taken from the message.
 For the accuracy control over the numerical solution by step TAU, the Runge
coefficient on four twice condensed grids is additionally calculated, using
the subroutine RUNGE.
Sources TIME6T 2.0 with example and detailed description (pdf) are submitted.

