37 SUBROUTINE i7dst3(IX3,IX4,X1 ,X2 ,X3 ,
38 1 X4 ,Y1 ,Y2 ,Y3 ,Y4 ,
39 2 Z1 ,Z2 ,Z3 ,Z4 ,XI ,
40 3 YI ,ZI ,X0 ,Y0 ,Z0 ,
41 4 NX1,NY1,NZ1,NX2,NY2,
42 5 NZ2,NX3,NY3,NZ3,NX4,
43 6 NY4,NZ4,P1 ,P2 ,P3 ,
44 7 P4 ,LB1,LB2,LB3,LB4,
45 8 LC1,LC2,LC3,LC4,LAST)
49#include "implicit_f.inc"
57 INTEGER,
INTENT(IN) :: LAST
58 INTEGER,
DIMENSION(MVSIZ),
INTENT(IN) :: IX3,IX4
59 my_real,
DIMENSION(MVSIZ),
INTENT(INOUT) :: X1,X2,X3,X4
60 my_real,
DIMENSION(MVSIZ),
INTENT(INOUT) :: Y1,Y2,Y3,Y4
61 my_real,
DIMENSION(MVSIZ),
INTENT(INOUT) :: Z1,Z2,Z3,Z4
62 my_real,
DIMENSION(MVSIZ),
INTENT(INOUT) :: XI,YI,ZI
63 my_real,
DIMENSION(MVSIZ),
INTENT(INOUT) :: X0,Y0,Z0
64 my_real,
DIMENSION(MVSIZ),
INTENT(INOUT) :: NX1,NY1,NZ1
65 my_real,
DIMENSION(MVSIZ),
INTENT(INOUT) :: nx2,ny2,nz2
66 my_real,
DIMENSION(MVSIZ),
INTENT(INOUT) :: nx3,ny3,nz3
67 my_real,
DIMENSION(MVSIZ),
INTENT(INOUT) :: nx4,ny4,nz4
68 my_real,
DIMENSION(MVSIZ),
INTENT(INOUT) :: p1,p2,p3,p4
69 my_real,
DIMENSION(MVSIZ),
INTENT(INOUT) :: lb1,lb2,lb3,lb4
70 my_real,
DIMENSION(MVSIZ),
INTENT(INOUT) :: lc1,lc2,lc3,lc4
77 . al1(mvsiz), al2(mvsiz), al3(mvsiz), al4(mvsiz),
78 . x01(mvsiz), x02(mvsiz), x03(mvsiz), x04(mvsiz),
79 . y01(mvsiz), y02(mvsiz), y03(mvsiz), y04(mvsiz),
80 . z01(mvsiz), z02(mvsiz), z03(mvsiz), z04(mvsiz),
81 . xi1(mvsiz), xi2(mvsiz), xi3(mvsiz), xi4(mvsiz),
82 . yi1(mvsiz), yi2(mvsiz), yi3(mvsiz), yi4(mvsiz),
83 . zi1(mvsiz), zi2(mvsiz), zi3(mvsiz), zi4(mvsiz),
84 . hlb1(mvsiz), hlc1(mvsiz), hlb2(mvsiz),hlc2(mvsiz),
85 . hlb3(mvsiz), hlc3(mvsiz), hlb4(mvsiz),hlc4(mvsiz)
87 . s2,a1,a2,a3,a4,d1,d2,d3,d4,
88 . x12,x23,x34,x41,xi0,sx1,sx2,sx3,sx4,sx0,
89 . y12,y23,y34,y41,yi0,sy1,sy2,sy3,sy4,sy0,
90 . z12,z23,z34,z41,zi0,sz1,sz2,sz3,sz4,sz0,
94 x0(i) = fourth*(x1(i)+x2(i)+x3(i)+x4(i))
95 y0(i) = fourth*(y1(i)+y2(i)+y3(i)+y4(i))
96 z0(i) = fourth*(z1(i)+z2(i)+z3(i)+z4(i))
100 IF(ix3(i)==ix4(i))
THEN
109 x01(i) = x1(i) - x0(i)
110 y01(i) = y1(i) - y0(i)
111 z01(i) = z1(i) - z0(i)
113 x02(i) = x2(i) - x0(i)
114 y02(i) = y2(i) - y0(i)
115 z02(i) = z2(i) - z0(i)
117 x03(i) = x3(i) - x0(i)
118 y03(i) = y3(i) - y0(i)
119 z03(i) = z3(i) - z0(i)
121 x04(i) = x4(i) - x0(i)
122 y04(i) = y4(i) - y0(i)
123 z04(i) = z4(i) - z0(i)
129 xi1(i) = x1(i) - xi(i)
130 yi1(i) = y1(i) - yi(i)
131 zi1(i) = z1(i) - zi(i)
133 xi2(i) = x2(i) - xi(i)
134 yi2(i) = y2(i) - yi(i)
135 zi2(i) = z2(i) - zi(i)
137 xi3(i) = x3(i) - xi(i)
138 yi3(i) = y3(i) - yi(i)
139 zi3(i) = z3(i) - zi(i)
141 xi4(i) = x4(i) - xi(i)
142 yi4(i) = y4(i) - yi(i)
143 zi4(i) = z4(i) - zi(i)
145 sx1 = yi0*zi1(i) - zi0*yi1(i)
146 sy1 = zi0*xi1(i) - xi0*zi1(i)
147 sz1 = xi0*yi1(i) - yi0*xi1(i)
149 sx2 = yi0*zi2(i) - zi0*yi2(i)
150 sy2 = zi0*xi2(i) - xi0*zi2(i)
151 sz2 = xi0*yi2(i) - yi0*xi2(i)
153 sx0 = y01(i)*z02(i) - z01(i)*y02(i)
154 sy0 = z01(i)*x02(i) - x01(i)*z02(i)
155 sz0 = x01(i)*y02(i) - y01(i)*x02(i)
156 s2 = one/
max(em30,sx0*sx0 + sy0*sy0 + sz0*sz0)
158 lb1(i) = -(sx0*sx2 + sy0*sy2
161 sx3 = yi0*zi3(i) - zi0*yi3(i)
162 sy3 = zi0*xi3(i) - xi0*zi3(i)
165 sx0 = y02(i)*z03(i) - z02(i)*y03(i)
166 sy0 = z02(i)*x03(i) - x02(i)*z03(i)
167 sz0 = x02(i)*y03(i) - y02(i)*x03(i)
170 lb2(i) = -(sx0*sx3 + sy0*sy3 + sz0*sz3) * s2
171 lc2(i) = (sx0*sx2 + sy0*sy2 + sz0*sz2) * s2
173 sx4 = yi0*zi4(i) - zi0*yi4(i)
174 sy4 = zi0*xi4(i) - xi0*zi4(i)
175 sz4 = xi0*yi4(i) - yi0*xi4(i)
177 sx0 = y03(i)*z04(i) - z03(i)*y04(i)
178 sy0 = z03(i)*x04(i) - x03(i)*z04(i)
179 sz0 = x03(i)*y04(i) - y03(i)*x04(i)
180 s2 = one/
max(em30,sx0*sx0 + sy0*sy0 + sz0*sz0)
182 lb3(i) = -(sx0*sx4 + sy0*sy4 + sz0*sz4) * s2
183 lc3(i) = (sx0*sx3 + sy0*sy3 + sz0*sz3) * s2
185 sx0 = y04(i)*z01(i) - z04(i)*y01(i)
186 sy0 = z04(i)*x01(i) - x04(i)*z01(i)
187 sz0 = x04(i)*y01(i) - y04(i)*x01(i)
188 s2 = one/
max(em30,sx0*sx0 + sy0*sy0 + sz0*sz0)
190 lb4(i) = -(sx0*sx1 + sy0*sy1 + sz0*sz1) * s2
191 lc4(i) = (sx0*sx4 + sy0*sy4 + sz0*sz4) * s2
193 aaa = one/
max(em30,x01(i)*x01(i)+y01(i)*y01(i)+z01(i)*z01(i))
194 hlc1(i)= lc1(i)*abs(lc1(i))*aaa
195 hlb4(i)= lb4(i)*abs(lb4(i))*aaa
196 al1(i) = -(xi0*x01(i)+yi0*y01(i)+zi0*z01(i))*aaa
197 al1(i) =
max(zero,
min(one,al1(i)))
198 aaa = one/
max(em30,x02(i)*x02(i)+y02(i)*y02(i)+z02(i)*z02(i))
199 hlc2(i)= lc2(i)*abs(lc2(i))*aaa
200 hlb1(i)= lb1(i)*abs(lb1(i))*aaa
201 al2(i) = -(xi0*x02(i)+yi0*y02(i)+zi0*z02(i))*aaa
202 al2(i) =
max(zero,
min(one,al2(i)))
203 aaa = one/
max(em30,x03(i)*x03(i)+y03(i)*y03(i)+z03(i)*z03(i))
204 hlc3(i)= lc3(i)*abs(lc3(i))*aaa
205 hlb2(i)= lb2(i)*abs(lb2(i))*aaa
206 al3(i) = -(xi0*x03(i)+yi0*y03(i)+zi0*z03(i))*aaa
207 al3(i) =
max(zero,
min(one,al3(i)))
208 aaa = one/
max(em30,x04(i)*x04(i)+y04(i)*y04(i)+z04(i)*z04(i))
209 hlc4(i)= lc4(i)*abs(lc4(i))*aaa
210 hlb3(i)= lb3(i)*abs(lb3(i))*aaa
211 al4(i) = -(xi0*x04(i)+yi0*y04(i)+zi0*z04(i))*aaa
220 la = one - lb1(i) - lc1(i)
222 aaa = one /
max(em20,x12*x12+y12*y12+z12*z12)
223 hla= la*abs(la) * aaa
225 + hla<=hlb1(i).AND.hla<=hlc1(i))
THEN
226 lb1(i) = (xi2(i)*x12+yi2(i)*y12+zi2(i)*z12) * aaa
227 lb1(i) =
max(zero,
min(one,lb1(i)))
228 lc1(i) = one - lb1(i)
229 ELSEIF(lb1(i)<zero.AND.
230 + hlb1(i)<=hlc1(i).AND.hlb1(i)<=hla)
THEN
233 ELSEIF(lc1(i)<zero.AND.
234 + hlc1(i)<=hla.AND.hlc1(i)<=hlb1(i))
THEN
244 la = one - lb2(i) - lc2(i)
246 aaa = one /
max(em20,x23*x23+y23*y23+z23*z23)
247 hla= la*abs(la) * aaa
249 + hla<=hlb2(i).AND.hla<=hlc2(i))
THEN
250 lb2(i) = (xi3(i)*x23+yi3(i)*y23+zi3(i)*z23)*aaa
251 lb2(i) =
max(zero,
min(one,lb2(i)))
252 lc2(i) = one - lb2(i)
253 ELSEIF(lb2(i)<zero.AND.
254 + hlb2(i)<=hlc2(i).AND.hlb2(i)<=hla)
THEN
257 ELSEIF(lc2(i)<zero.AND.
258 + hlc2(i)<=hla.AND.hlc2(i)<=hlb2(i))
THEN
268 la = one - lb3(i) - lc3(i)
270 aaa = one /
max(em20,x34*x34+y34*y34+z34*z34)
271 hla= la*abs(la) * aaa
273 + hla<=hlb3(i).AND.hla<=hlc3(i))
THEN
274 lb3(i) = (xi4(i)*x34+yi4(i)*y34+zi4(i)*z34)*aaa
275 lb3(i) =
max(zero,
min(one,lb3(i)))
276 lc3(i) = one - lb3(i)
277 ELSEIF(lb3(i)<zero.AND.
278 + hlb3(i)<=hlc3(i).AND.hlb3(i)<=hla)
THEN
281 ELSEIF(lc3(i)<zero.AND.
282 + hlc3(i)<=hla.AND.hlc3(i)<=hlb3(i))
THEN
292 la = one - lb4(i) - lc4(i)
294 aaa = one /
max(em20,x41*x41+y41*y41+z41*z41)
295 hla= la*abs(la) * aaa
297 + hla<=hlb4(i).AND.hla<=hlc4(i))
THEN
298 lb4(i) = (xi1(i)*x41+yi1(i)*y41+zi1(i)*z41)*aaa
299 lb4(i) =
max(zero,
min(one,lb4(i)))
300 lc4(i) = one - lb4(i)
301 ELSEIF(lb4(i)<zero.AND.
302 + hlb4(i)<=hlc4(i).AND.hlb4(i)<=hla)
THEN
305 ELSEIF(lc4(i)<zero.AND.
306 + hlc4(i)<=hla.AND.hlc4(i)<=hlb4(i))
THEN
314 nx1(i) = xi(i)-(x0(i) + lb1(i)*x01(i) + lc1(i)*x02(i))
315 ny1(i) = yi(i)-(y0(i) + lb1(i)*y01(i) + lc1(i)*y02(i))
316 nz1(i) = zi(i)-(z0(i) + lb1(i)*z01(i) + lc1(i)*z02(i))
317 p1(i) = nx1(i)*nx1(i) + ny1(i)*ny1(i) +nz1(i)*nz1(i)
319 nx2(i) = xi(i)-(x0(i) + lb2(i)*x02(i) + lc2(i)*x03(i))
320 ny2(i) = yi(i)-(y0(i) + lb2(i)*y02(i) + lc2(i)*y03(i))
321 nz2(i) = zi(i)-(z0(i) + lb2(i)*z02(i) + lc2(i)*z03(i))
322 p2(i) = nx2(i)*nx2(i) + ny2(i)*ny2(i) +nz2(i)*nz2(i)
324 nx3(i) = xi(i)-(x0(i) + lb3(i)*x03(i) + lc3(i)*x04(i))
325 ny3(i) = yi(i)-(y0(i) + lb3(i)*y03(i) + lc3(i)*y04(i))
326 nz3(i) = zi(i)-(z0(i) + lb3(i)*z03(i) + lc3(i)*z04(i))
327 p3(i) = nx3(i)*nx3(i) + ny3(i)*ny3(i) +nz3(i)*nz3(i)
329 nx4(i) = xi(i)-(x0(i) + lb4(i)*x04(i) + lc4(i)*x01(i))
330 ny4(i) = yi(i)-(y0(i) + lb4(i)*y04(i) + lc4(i)*y01(i))
331 nz4(i) = zi(i)-(z0(i) + lb4(i)*z04(i) + lc4(i)*z01(i))
332 p4(i) = nx4(i)*nx4(i) + ny4(i)*ny4(i) +nz4(i)*nz4(i)
subroutine i7dst3(ix3, ix4, x1, x2, x3, x4, y1, y2, y3, y4, z1, z2, z3, z4, xi, yi, zi, x0, y0, z0, nx1, ny1, nz1, nx2, ny2, nz2, nx3, ny3, nz3, nx4, ny4, nz4, p1, p2, p3, p4, lb1, lb2, lb3, lb4, lc1, lc2, lc3, lc4, last)