! From: "COMPUTATIONAL PHYSICS, 2nd Ed" ! by RH Landau, MJ Paez, and CC Bordeianu ! Copyright Wiley - VCH, 2007. ! Electronic Materials copyright: R Landau, Oregon State Univ, 2007; ! MJ Paez, Univ Antioquia, 2007; and CC Bordeianu, Univ Bucharest, 2007. ! Supported by the US National Science Foundation ! ! harmos.f90: Solves t dependent Schro eqtn for Gaussian wavepacket ! in harmonic oscillator potential well Program harmos Implicit None Real*8 :: psr(750, 2), psi(750, 2), v(750), p2(750) Real*8 :: pi, dx, k0, dt, x Complex :: exc, zi Integer :: max, i, j, n Open(9, FILE = 'harmos.dat', Status = 'Unknown') pi = 3.1415926535897932385E0 zi = cmplx(0., 1.) dx = 0.02 k0 = 3 * pi ! initial momentum dt = dx*dx/4. max = 750 Do i = 1, max Do j = 1, 2 psi(i, j) = 0. psr(i, j) = 0. End Do End Do ! initial conditions x = - 7.5 Do i = 1, max exc = exp(zi*k0*x) psr(i, 1) = real(exc*exp( - 0.5*(x/0.5)**2)) ! real wave Function psi(i, 1) = aimag(exc*exp( - 0.5*(x/0.5)**2))! imag wave Function v(i) = 5.*x*x ! potential x = x + dx End Do ! propagate solution in time Do n = 1, 20000 Do i = 2, max - 1 ! real part psr and the probability p2 psr(i, 2) = psr(i, 1) - dt*(psi(i+ 1, 1) + psi(i- 1, 1) & - 2.*psi(i, 1))/(dx*dx) + dt*v(i)*psi(i, 1) p2(i) = psr(i, 1)*psr(i, 2) + psi(i, 1)*psi(i, 1) End Do Do i = 2, max - 1! imag part psi(i, 2) = psi(i, 1) + dt*(psr(i+ 1, 2) + psr(i- 1, 2) & - 2.*psr(i, 2))/(dx*dx) - dt*v(i)*psr(i, 2) End Do ! output ea 2000 steps If((n == 1).or.(modulo(n, 2000) == 0)) Then Do i = 2, max - 1, 10 Write(9, 11) p2(i) + 0.0015*v(i) End Do Write(9, *) ' ' EndIf Do i = 1, max ! new - > old psi(i, 1) = psi(i, 2) psr(i, 1) = psr(i, 2) End Do End Do 11 Format(E12.6) Close(9) Stop 'data saved in harmos.dat (for gnuplot)' End