c harmonic oscillator (classical)- Fisi 3011 august 2005
real k ,mass
a(x,v)=-(k/mass)*x -(b/mass)*v
data k,mass,b /1.,1.,0./
data x0,v/1.,0./
tscale=sqrt(mass/k)
nstep=3000
dt=6.5*tscale/float(nstep)
x1=v*dt+x0
c kprint and kount defines print interval
kprint=int(float(nstep)/80.)
kount=kprint
t=0.
print 100,t,x0
do 10 i=2,nstep
t=dt*float(i)
x2=2.*x1-x0+dt**2*a(x1,v)
v=(x2-x1)/dt
if(i.eq.kount)then
print 100 ,t,x2
kount=kount+kprint
endif
x0=x1
x1=x2
10 continue
100 format(2x,'t, x=',2(4x,e11.4))
stop
end