Документ взят из кэша поисковой машины. Адрес оригинального документа : http://www.mrao.cam.ac.uk/~rachael/compphys/examples/verlet.f90
Дата изменения: Tue Sep 13 13:08:30 2005
Дата индексирования: Tue Oct 2 10:59:30 2012
Кодировка:
! Program for Verlet algorithm

program verlet

implicit none
integer, parameter :: dp = kind(1.0d0)
integer, parameter :: num_steps = 10000
real(dp), parameter :: pi = 3.141592653589793d0
real(dp), parameter :: mass = 1.0d0 / pi
real(dp), parameter :: spring = pi
real(dp), parameter :: tstart = 0.0d0
real(dp), parameter :: tend = 10.0d0
real(dp), parameter :: rstart = 0.0d0
real(dp), parameter :: vstart = 1.0d0 / mass
real(dp), parameter :: h = (tend - tstart) / num_steps
integer :: istep
real(dp) :: t, rold, vold, fold, rnew, vnew, fnew, energy

rold = rstart
vold = vstart
fold = -spring * rstart
write(*,1) 0.0d0, rold, mass * vold, 0.0d0

do istep = 1, num_steps
t = tstart + istep * h
rnew = rold + vold * h + 0.5d0 * fnew * h*h / mass
fnew = -spring * rnew
vnew = vold + 0.5d0 * h * (fold + fnew) / mass
rold = rnew
vold = vnew
fold = fnew
energy = 0.5d0 * mass * vnew*vnew + 0.5d0 * spring * rnew*rnew
write(*,1) t, rold, mass * vold, energy - 0.5d0 * pi
end do

1 format(4f14.8)

end program verlet