c c ===================================================== subroutine track(mx,q,x,xr,nc,fmin,fmax,dfmin) c ===================================================== c c Copyright (C) 2002 Ralf Deiterding c Brandenburgische Universitaet Cottbus c c Copyright (C) 2003-2007 California Institute of Technology c Ralf Deiterding, ralf@amroc.net c implicit double precision (a-h,o-z) c parameter ( mTab = 5000, mderiv = 2 ) common /Tables/ xtb(mderiv,-1:mTab), ftb(mderiv,-1:mTab) c dimension q(1:mx), x(1:mx), xr(1:mx) c nc = 0 do i=1,mx xr(i) = -1.0d0 enddo do i=1,mx-1 xtb(1,i) = 0.5d0*(x(i)+x(i+1)) ftb(1,i) = (q(i+1)-q(i))/(x(i+1)-x(i)) enddo do i=1+1,mx-1 xtb(2,i) = 0.5d0*(xtb(1,i)+xtb(1,i-1)) ftb(2,i) = (ftb(1,i)-ftb(1,i-1))/(xtb(1,i)-xtb(1,i-1)) enddo c do i=1+2,mx-2 if (q(i).ge.fmin.and.q(i).le.fmax.and. & dabs(ftb(1,i)*(x(i+1)-x(i))).gt. & dfmin*(x(i+1)-x(i)).and. & dsign(1.d0,ftb(2,i)).ne. & dsign(1.d0,ftb(2,i+1))) then c nc = nc + 1 xr(nc) = xtb(2,i) + ftb(2,i)*(xtb(2,i+1)-xtb(2,i))/ & (ftb(2,i)-ftb(2,i+1)) endif enddo c return end c