30
31
32
33
34
35
36
37#include "implicit_f.inc"
38
39
40
41 INTEGER NSN,NRT
42 INTEGER IRECT(4,*), LMSR(*), (*), NSV(*), ILOC(*), IRTL(*),NSEG(*)
44
45
46
47 INTEGER II, I, J, K, NUM, NPT, JJ, LL, L, LG, M, MG
48 my_real cms, dms, result, c2, c3, s2, s3, cs, d2, cc
49
50
51
52 IF(nrt == 0) RETURN
53
54
55
56
57 DO ii=1,nsn
58 i=nsv(ii)
59 j=iloc(ii)
60 k=msr(j)
61 cms = (x(2,i)-x(2,k))**2 + (x(3,i)-x(3,k))**2
62 num=nseg(j+1)-nseg(j)
63 npt=nseg(j)-1
64
65
66
67 DO jj=1,num
68 ll=lmsr(npt+jj)
69 l=irect(1,ll)
70 IF(l == j) l=irect(2,ll)
71 lg=msr(l)
72 dms = (x(2,i)-x(2,lg))**2 + (x(3,i)-x(3,lg))**2
73 IF(dms < cms)THEN
74 cms=dms
75 j=l
76 k=lg
77 ENDIF
78 ENDDO
79 iloc(ii)=j
80 num=nseg(j+1)-nseg(j)
81 npt=nseg(j)-1
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100 result=ep20
101 DO jj=1,num
102 ll=lmsr(jj+npt)
103 m=irect(1,ll)
104 IF(m == j) m=irect(2,ll)
105 mg=msr(m)
106
107 c2=x(2,mg)-x(2,k)
108 c3=x(3,mg)-x(3,k)
109
110 s2=x(2,i)-x(2,k)
111 s3=x(3,i)-x(3,k)
112
113 cs=c2*s2+c3*s3
114 d2=s2*s2+s3*s3
115 IF(cs > zero)THEN
116 cc=c2*c2+c3*c3
117 d2=d2-cs*cs/cc
118 ENDIF
119 IF(d2 <= result)THEN
120 result = d2
121 irtl(ii)=ll
122 ENDIF
123 ENDDO
124
125
126 ENDDO
127
128 RETURN