Vous êtes sur la page 1sur 1

program verlet implicit none integer, parameter :: dp = kind(1.0d0) integer, parameter :: nt = 100 real(dp), parameter :: mass = 1.

0d0 real(dp), parameter :: spring = 1.0d0 real(dp), parameter :: rstart = 0.0d0 real(dp), parameter :: vstart = 1.0d0 integer :: i real(dp) :: t0, x0, v0, f0, x1, v1, f1, energy , dt print*,'time step delta-t (sec)'; read*, dt x0 = rstart v0 = vstart f0 = -spring * rstart write(*,10) 0.0d0, x0, mass * v0, 0.0d0 open(10, file='verlet2.dat', status='replace' ) do i = 1, nt t0= dt * (i-1) x1= x0 + v0 * dt + 0.5d0 * f1 *dt**2 / mass f1 = -spring * x1 v1= v0 + 0.5d0 * dt * (f1 + f0) / mass x0 = x1 v0 = v1 f0 = f1 energy = 0.5d0 * mass * v1**2 + 0.5d0 * spring * x1**2 write(*,10) t0, x0, v0, energy end do 10 format(4f14.8)

Vous aimerez peut-être aussi