Program td_main USE Numeric_Kinds_Module USE CommonInfo_Module Implicit None SAVE !========================================================================================= ! td_prop is a program that solves the time-dependent Schrodinger ! equation using the Chebychev method. Currently, the program ! only accepts time-independent Hamiltonians ! ! Note: all units are atomic units unless otherwise specified ! !========================================================================================= ! I N T E R N A L S ! CHARACTER(LEN=3) repname ! Integer :: istat, tterm, ndim_ir, whichir, nchir, chishift Integer :: istat !========================================================================================= ! A L L O C A T A B L E ! Complex(dp), Allocatable :: phi_ir(:) !========================================================================================= ! Begin Program WRITE(*,21)'B E G I N P R O G R A M' !========================================================================================= ! Timing: First of two calls to measure run time !----------------------------------------------------------------------------------------- Call findtime_global(.true.) !========================================================================================= ! Initialize variables and allocate wave function arrays !----------------------------------------------------------------------------------------- Call getinfo !========================================================================================= ! Obtain initial wavefunction and Jacobi surface functions !----------------------------------------------------------------------------------------- Call setup !========================================================================================= ! Begin irreducible representation and time step loops: !----------------------------------------------------------------------------------------- Call execute ! Do whichir=1,nirrep ! IF (to_propagate(whichir)) THEN ! Call repnames(whichir,group,repname) ! PRINT*,'--------------------------------------------------------------------' ! PRINT*,'Starting for ir = ', repname, ' in ',group ! PRINT*,'--------------------------------------------------------------------' ! Call findtime(.true.,'ir') ! nchir=nchi_ir(whichir) ! Possibly pass these to routines rather than ! ndim_ir=nrho*ntheta*nchir ! calculating them everywhere ! chishift=chishift_ir(whichir) ! ALLOCATE(phi_ir(ndim_ir)) ! phi_ir=Cmplx(0.d0,0.d0,dp) ! Call read_aph_ham ! Call aph_surface(0, whichir) ! Call deall_aph_ham ! ALLOCATE(overlap_vec(totnaphsf,tstep)) ! Do tterm=1,tstep ! Call evolve( tterm, phi_ir, ndim_ir, whichir) ! Call project_aph( tterm, phi_ir, ndim_ir, whichir) ! End Do ! Call zanalysis(whichir) ! DEALLOCATE(phi_ir,overlap_vec) ! Call findtime(.false.,'ir') ! ENDIF ! Enddo ! IR LOOP WRITE(*,21)'E N D P R O G R A M' 21 FORMAT(/1X,30('-'),a,30('-'),/1X) !========================================================================================= ! Timing: Second of two calls to output program run time !----------------------------------------------------------------------------------------- Call findtime_global(.false.) CLOSE(UNIT=Out_Unit,IOSTAT=istat,STATUS='keep') IF (istat.ne.0) STOP'CLOSE failed - td_main' End Program td_main