c Lorentz Force // E = Exi + Ey j B= B0 k (units SI )
real mass
data c,q,mass/3.E8,1.602E-19,9.1e-31/
data vx0,vy0,vz0/0.,-1.E7,0./
beta(vx,vy,vz)=sqrt(vx**2+vy**2+vz**2)
gamma(vx,vy,vz)=1./sqrt(1.-(beta(vx,vy,vz)/c)**2)
dgdt(vx,vy,vz,vx0,vy0,vz0)=(gamma(vx,vy,vz)-gamma(vx0,vy0,vz0))/dt
ex(x,y,z)=-1.e2
ey(x,y,z)=1.e-12
ez(x,y,z)=0.
bx(x,y,z)=0.
by(x,y,z)=0.
bz(x,y,z)=1.e-4
Eabs(x,y,z)=sqrt( ex(x,y,z)**2 + ey(x,y,z)**2 +ez(x,y,z)**2)
ax(x,y,z,vy,vz)= (q/(mass*gamma(vx,vy,vz)))*
$ (ex(x,y,z)+vy*Bz(x,y,z)
$ -vz*by(x,y,z))-vx* dgdt(vx,vy,vz,vx0,vy0,vz0)/gamma(vx,vy,vz)
ay(x,y,z,vx,vz)= (q/(mass*gamma(vx,vy,vz)))*
$ (ey(x,y,z)-vx*bz(x,y,z)
$ +vz*bx(x,y,z)) -vy* dgdt(vx,vy,vz,vx0,vy0,vz0)/gamma(vx,vy,vz)
az(x,y,z,vx,vy)= (q/(mass*gamma(vx,vy,vz)))*
$ (ez(x,y,z)-vy*bx(x,y,z)
$ +vx*by(x,y,z)) -vz* dgdt(vx,vy,vz,vx0,vy0,vz0)/gamma(vx,vy,vz)
tscale1=mass/(q*Bz(0.,0.,0.))
tscale2=c*mass/(q*Eabs(0.,0.,0.))
tscale=amin1(tscale1,tscale2)
print*,'tscale=',tscale
nstep=4000
c dt=6.*tscale/float(nstep)
dt=5.e-7/float(nstep)
x0=1.
y0=0.
z0=0.
x1=vx0*dt+x0
y1=vy0*dt+y0
z1=vz0*dt+z0
kprint=int(float(nstep)/60.)
kount=kprint
do 10 i=2,nstep
t=dt*float(i)
vx=(x1-x0)/dt
vy=(y1-y0)/dt
vz=(z1-z0)/dt
c if(gamma(vx,vy,vy).ge.1.1)goto 200
x2=2.*x1-x0+dt**2*ax(x,y,z,vy,vz)
y2=2.*y1-y0+dt**2*ay(x,y,z,vx,vz)
z2=2.*z1-z0+dt**2*az(x,y,z,vx,vy)
v=sqrt( ((x2-x1)/dt)**2 + ((y2-y1)/dt)**2 +vz**2 )
if(i.eq.kount)then
kount=kount+kprint
print 100 ,t,x2,y2,z2
endif
x0=x1
x1=x2
y0=y1
y1=y2
z0=z1
z1=z2
vx0=vx
vy0=vy
vz0=vz
10 continue
100 format(2x,'t,x,y,v=',4(3x,e11.3))
200 stop
end