c out_tip.f output the tip position c output a data file for tip positions along the trajectories c c output fort.109 subroutine out_tip(n,ntime) implicit double precision(a-h,o-z) parameter(maxa=500,maxy=6) double precision wrlimit double precision dwry(maxa),x1 integer start,y(maxy),dr,nflag,nflag2 common/matrix/x(maxa,3),bangle(maxa),rz(maxa) n3=n*3 dr=20 wrlimit=2*3.1415927*1.15/100 c wrlimit=0.05 do j=1,maxy y(j)=0 enddo c write(*,*) 'begin call dwr' call dwr(x,n,dwry,dr) c write(*,*) 'back from dwr' c write(*,*) dwry(1),dwry(2) k=0 nflag=0 nflag2=0 ymin=100.0 do j=1,n if (dwry(j).lt.ymin) then ymin=dwry(j) endif enddo do j=1,n dwry(j)=dwry(j)-ymin enddo do j=1,n write(19,*) dwry(j),j call flush(19) if (dwry(j).gt.wrlimit) then c write(*,*) j,dwry(j),wrlimit if (nflag.eq.0) then nflag=1 start=j endif else if (nflag.eq.1) then nflag=0 k=k+1 y(k)=(j+start)/2 c write(*,*) 'end',j,start,y(k) c pause endif endif enddo c if there is a peak between the n and 1 if (nflag.eq.1) then if ((dwry(n).gt.wrlimit).and. + (dwry(1).gt.wrlimit)) then y(1)=(n+start)/2+y(1) if (y(1).gt.n) then y(1)=y(1)-n endif endif endif write(109,100) ntime,y(1),y(2),y(3),y(4),y(5),y(6) c write(*,*) ntime,y(1),y(2),y(3),y(4),y(5),y(6) call flush(109) 100 format(i10,6(1x,i3)) return end