40
41
42
43#include "implicit_f.inc"
44
45
46
47#include "mvsiz_p.inc"
48
49
50
51 INTEGER JLT,IGAP
52 INTEGER CAND_S(*),CAND_M(*),
53 . N1(*),N2(*),M1(*),M2(*)
55 . h1s(*),h2s(*),h1m(*),h2m(*),nx(*),ny(*),nz(*),stif(*),
56 . xxs1(*) ,xxs2(*) ,xys1(*) ,xys2(*) ,
57 . xzs1(*) ,xzs2(*) ,xxm1(*) ,xxm2(*) ,xym1(*),
58 . xym2(*) ,xzm1(*) ,xzm2(*) ,vxs1(*) ,vxs2(*),
59 . vys1(*) ,vys2(*) ,vzs1(*) ,vzs2(*) ,vxm1(*),
60 . vxm2(*) ,vym1(*) ,vym2(*) ,vzm1(*) ,vzm2(*),
61 . ms1(*) ,ms2(*) ,mm1(*) ,mm2(*), gapv(*)
62
63
64
65 INTEGER I
67 . pene2(mvsiz),
68 . xs12,ys12,zs12,xm12,ym12,zm12,xa,xb,
69 . xs2,xm2,xsm,xs2m2,ys2,ym2,ysm,ys2m2,zs2,zm2,zsm,zs2m2,
70 . xx,yy,zz,als,alm,det,
71 . gap2
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120 DO i=1,jlt
121 xs12 = xxs2(i)-xxs1(i)
122 ys12 = xys2(i)-xys1(i)
123 zs12 = xzs2(i)-xzs1(i)
124 xs2 = xs12*xs12 + ys12*ys12 + zs12*zs12
125 xm12 = xxm2(i)-xxm1(i)
126 ym12 = xym2(i)-xym1(i)
127 zm12 = xzm2(i)-xzm1(i)
128 xm2 = xm12*xm12 + ym12*ym12 + zm12*zm12
129 xsm = - (xs12*xm12 + ys12*ym12 + zs12*zm12)
130 xs2m2 = xxm2(i)-xxs2(i)
131 ys2m2 = xym2(i)-xys2(i)
132 zs2m2 = xzm2(i)-xzs2(i)
133
134 xa = xs12*xs2m2 + ys12*ys2m2 + zs12*zs2m2
135 xb = -xm12*xs2m2 - ym12*ys2m2 - zm12*zs2m2
136 det = xm2*xs2 - xsm*xsm
138
139 h1s(i) = (xb*xsm-xa*xm2) / det
140 h1m(i) = (xa*xsm-xb*xs2) / det
141
144 IF(h1m(i)<zero)THEN
145 h1m(i) = zero
146 h1s(i) = -xa / xs2
147 ELSEIF(h1m(i)>one)THEN
148 h1m(i) = one
149 h1s(i) = -(xa + xsm) / xs2
150 ENDIF
151
152 IF(h1s(i)<zero)THEN
153 h1s(i) = zero
154 h1m(i) = -xb / xm2
155 ELSEIF(h1s(i)>one)THEN
156 h1s(i) = one
157 h1m(i) = -(xb + xsm) / xm2
158 ENDIF
159
160 h1m(i) =
min(one,h1m(i))
161 h1m(i) =
max(zero,h1m(i))
162
163 h2s(i) = one -h1s(i)
164 h2m(i) = one -h1m(i)
165
166
167
168 nx(i) = h1s(i)*xxs1(i) + h2s(i)*xxs2(i)
169 . - h1m(i)*xxm1(i) - h2m(i)*xxm2(i)
170 ny(i) = h1s(i)*xys1(i) + h2s(i)*xys2(i)
171 . - h1m(i)*xym1(i) - h2m(i)*xym2(i)
172 nz(i) = h1s(i)*xzs1(i) + h2s(i)*xzs2(i)
173 . - h1m(i)*xzm1(i) - h2m(i)*xzm2(i)
174
175 ENDDO
176
177 RETURN