1 SUBROUTINE sortr(xp,zp,gsq,npc,xmx,zmx,xset,zset,j,jsep)
5 REAL(rprec) :: xp(*),zp(*),gsq(*), xmx, zmx, xset, zset
6 REAL(rprec) :: dr1, dr2, dz1, dz2, DOt, cross
19 IF(cross.eq.0.)
go to 10
20 IF(dot.eq.0.)
go to 10
21 IF(cross/dot.gt.0.)
go to 20
25 CALL sorter(xp,zp,gsq,npc)
36 CALL sortog(xp,zp,gsq,npc,xmx,zmx,xset,zset,j,jsep)
45 SUBROUTINE sorter(x,y,d,n)
49 REAL(rprec) :: x(*),y(*),d(*)
51 INTEGER :: n, nsort, nl, i
67 SUBROUTINE sortog(x,y,d,n,xs,ys,xset,zset,j,jsep)
71 REAL(rprec) :: xs, ys, xset, zset
72 REAL(rprec) :: pi, ang, angp, tx, ty, td, dist, dt
73 INTEGER :: i, npc, isp, im1, nm1, jj
74 REAL(rprec) :: x(*),y(*),d(*)
76 IF(j.ge.jsep)
go to 110
79 angp=atan2(y(i)-ys,x(i)-xs)
81 IF(angp.gt.ang)
go to 50
85 60
IF(isp.eq.1)
RETURN
108 dt=(y(i)-zset)**2+(x(i)-xset)**2
109 IF(dt.gt.dist)
go to 130
114 END SUBROUTINE sortog