subroutine fd2(n,x,sx,h,dcut) * differentiate a periodic function. differed from fd1 by a factor * of 2 pi. integer i,n double precision x(0:8192),sx(0:8192) double precision h,dcut,p2 p2 = 8.D0*datan(1.D0) call fd1(n,x,sx,h,dcut) do 10 i=0,n sx(i) = sx(i)/p2 10 continue end subroutine fin2(n,h,p2,yi,y) * integrate a periodic function. differed from fin by a factor * of 2 pi. integer i,n double precision yi(0:8192),y(0:8192) double precision h,p2 call fin(n,h,p2,yi,y) do 10 i=0,n yi(i) = p2*yi(i) 10 continue end subroutine checkl(n,x,y) * *********************************************************** * check the equidistance condition of the parametrization * for the curve. * *********************************************************** integer i,n double precision x(0:8192),y(0:8192),dist(8192) double precision disave,err disave = 0.D0 do 10 i=1,n dist(i) = dsqrt( (x(i)-x(i-1))**2 + (y(i)-y(i-1))**2 ) disave = disave + dist(i) 10 continue disave = disave/dble(n) err = 0.D0 do 20 i=1,n err = err + (dist(i)-disave)**2 20 continue err = dsqrt(err/dble(n)) print *,'equidistance error =',err end subroutine checkv(n,velo) * *********************************************************** * obtain the average velocity of the curve. * *********************************************************** integer i,n double precision velo(0:8192) double precision vsum,vave vsum = 0.D0 do 10 i=1,n vsum = vsum + velo(i) 10 continue vave = vsum/dble(n) print *,'vave = ',vave end