51
52
53
54#include "implicit_f.inc"
55
56
57
58#include "mvsiz_p.inc"
59
60
61
62#include "scr05_c.inc"
63#include "scr18_c.inc"
64
65
66
67 INTEGER, INTENT(IN) :: JALE
68 INTEGER, INTENT(IN) :: ISMSTR
69 INTEGER, INTENT(IN) :: JEUL
70 INTEGER, INTENT(IN) :: JLAG
71 INTEGER, INTENT(IN) :: NEL
72 INTEGER, INTENT(IN) :: IXS(NIXS,*)
74 . x(3,*),v(3,*),w(3,*), vis(mvsiz),
75 . x1(mvsiz), x2(mvsiz), x3(mvsiz), x4(mvsiz),
76 . y1(mvsiz), y2(mvsiz), y3(mvsiz), y4(mvsiz),
77 . z1(mvsiz), z2(mvsiz), z3(mvsiz), z4(mvsiz),
78 . vx1(mvsiz), vx2(mvsiz), vx3(mvsiz), vx4(mvsiz),
79 . vy1(mvsiz), vy2(mvsiz), vy3(mvsiz), vy4(mvsiz),
80 . vz1(mvsiz), vz2(mvsiz), vz3(mvsiz), vz4(mvsiz),
81 . vdx1(mvsiz),vdx2(mvsiz),vdx3(mvsiz),vdx4(mvsiz),
82 . vdy1(mvsiz),vdy2(mvsiz),vdy3(mvsiz),vdy4(mvsiz),
83 . vdz1(mvsiz),vdz2(mvsiz),vdz3(mvsiz),vdz4(mvsiz),
84 . vdx(mvsiz), vdy(mvsiz), vdz(mvsiz),vd2(mvsiz),
85 . offg(nel),off(mvsiz),rho(nel),
86 . f11(mvsiz),f21(mvsiz),f31(mvsiz),f12(mvsiz),f22(mvsiz),f32(mvsiz),
87 . f13(mvsiz),f23(mvsiz),f33(mvsiz),f14(mvsiz),f24(mvsiz),f34(mvsiz),
88 . rhoo(mvsiz)
89 INTEGER NC1(MVSIZ), NC2(MVSIZ), NC3(MVSIZ), NC4(MVSIZ),
90 . MXT(MVSIZ), NGL(MVSIZ),NGEO(MVSIZ)
91
92 DOUBLE PRECISION
93 . XDP(3,*), SAV(NEL,9),
94 . XD1(MVSIZ), XD2(MVSIZ), XD3(MVSIZ), XD4(MVSIZ),
95 . (MVSIZ), YD2(MVSIZ), YD3(MVSIZ), YD4(MVSIZ),
96 . ZD1(MVSIZ), (MVSIZ), ZD3(MVSIZ), ZD4(MVSIZ)
97
99 . off_l
100
101
102
103 INTEGER I
104
105#include "vectorize.inc"
106 DO i=1,nel
107 vis(i)=zero
108 ngeo(i)=ixs(10,i)
109 ngl(i)=ixs(11,i)
110 mxt(i)=ixs(1,i)
111 nc1(i)=ixs(2,i)
112 nc2(i)=ixs(4,i)
113 nc3(i)=ixs(7,i)
114 nc4(i)=ixs(6,i)
115 rhoo(i)=rho(i)
116 ENDDO
117#include "vectorize.inc"
118 DO i=1,nel
119 x1(i) =x(1,nc1(i))
120 y1(i) =x(2,nc1(i))
121 z1(i) =x(3,nc1(i))
122 x2(i) =x(1,nc2(i))
123 y2(i) =x(2,nc2(i))
124 z2(i) =x(3,nc2(i))
125 x3(i) =x(1,nc3(i))
126 y3(i) =x(2,nc3(i))
127 z3(i) =x(3,nc3(i))
128 x4(i) =x(1,nc4(i))
129 y4(i) =x(2,nc4(i))
130 z4(i) =x(3,nc4(i))
131 vx1(i)=v(1,nc1(i))
132 vy1(i)=v(2,nc1(i))
133 vz1(i)=v(3,nc1(i))
134 vx2(i)=v(1,nc2(i))
135 vy2(i)=v(2,nc2(i))
136 vz2(i)=v(3,nc2(i))
137 vx3(i)=v(1,nc3(i))
138 vy3(i)=v(2,nc3(i))
139 vz3(i)=v(3,nc3(i))
140 vx4(i)=v(1,nc4(i))
141 vy4(i)=v(2,nc4(i))
142 vz4(i)=v(3,nc4(i))
143 ENDDO
144
145 off_l = zero
146
147
148
149 IF((ismstr<=4.AND.jlag>0).OR.(ismstr==12.AND.idtmin(1)==3)) THEN
150
151 IF(iresp == 1) THEN
152#include "vectorize.inc"
153 DO i=1,nel
154 IF(abs(offg(i))>one)THEN
155 xd1(i)=sav(i,1)
156 yd1(i)=sav(i,2)
157 zd1(i)=sav(i,3)
158 xd2(i)=sav(i,4)
159 yd2(i)=sav(i,5)
160 zd2(i)=sav(i,6)
161 xd3(i)=sav(i,7)
162 yd3(i)=sav(i,8)
163 zd3(i)=sav(i,9)
164 xd4(i)=zero
165 yd4(i)=zero
166 zd4(i)=zero
167 off(i) = abs(offg(i))-one
168
169 ELSE
170 xd1(i)=xdp(1,nc1(i))
171 yd1(i)=xdp(2,nc1(i))
172 zd1(i)=xdp(3,nc1(i))
173 xd2(i)=xdp(1,nc2(i))
174 yd2(i)=xdp(2,nc2(i))
175 zd2(i)=xdp(3,nc2(i))
176 xd3(i)=xdp(1,nc3(i))
177 yd3(i)=xdp(2,nc3(i))
178 zd3(i)=xdp(3,nc3(i))
179 xd4(i)=xdp(1,nc4(i))
180 yd4(i)=xdp(2,nc4(i))
181 zd4(i)=xdp(3,nc4(i))
182 off(i) = abs(offg(i))
183
184 ENDIF
185 ENDDO
186 off_l =
min(off_l,minval(offg(1:nel)))
187 ELSE
188#include "vectorize.inc"
189 DO i=1,nel
190 IF(abs(offg(i))>one)THEN
191 xd1(i)=sav(i,1)
192 yd1(i)=sav(i,2)
193 zd1(i)=sav(i,3)
194 xd2(i)=sav(i,4)
195 yd2(i)=sav(i,5)
196 zd2(i)=sav(i,6)
197 xd3(i)=sav(i,7)
198 yd3(i)=sav(i,8)
199 zd3(i)=sav(i,9)
200 xd4(i)=zero
201 yd4(i)=zero
202 zd4(i)=zero
203 off(i) = abs(offg(i))-one
204
205 ELSE
206 xd1(i)=x1(i)
207 yd1(i)=y1(i)
208 zd1(i)=z1(i)
209 xd2(i)=x2(i)
210 yd2(i)=y2(i)
211 zd2(i)=z2(i)
212 xd3(i)=x3(i)
213 yd3(i)=y3(i)
214 zd3(i)=z3(i)
215 xd4(i)=x4(i)
216 yd4(i)=y4(i)
217 zd4(i)=z4(i)
218 off(i) = abs(offg(i))
219
220 ENDIF
221 ENDDO
222 off_l =
min(off_l,minval(offg(1:nel)))
223 ENDIF
224
225 ELSE
226
227 IF(iresp==1)THEN
228#include "vectorize.inc"
229 DO i=1,nel
230 xd1(i)=xdp(1,nc1(i))
231 yd1(i)=xdp(2,nc1(i))
232 zd1(i)=xdp(3,nc1(i))
233 xd2(i)=xdp(1,nc2(i))
234 yd2(i)=xdp(2,nc2(i))
235 zd2(i)=xdp(3,nc2(i))
236 xd3(i)=xdp(1,nc3(i))
237 yd3(i)=xdp(2,nc3(i))
238 zd3(i)=xdp(3,nc3(i))
239 xd4(i)=xdp(1,nc4(i))
240 yd4(i)=xdp(2,nc4(i))
241 zd4(i)=xdp(3,nc4(i))
242 off(i) = abs(offg(i))
243
244 ENDDO
245 off_l =
min(off_l,minval(offg(1:nel)))
246 ELSE
247#include "vectorize.inc"
248 DO i=1,nel
249 xd1(i)=x1(i)
250 yd1(i)=y1(i)
251 zd1(i)=z1(i)
252 xd2(i)=x2(i)
253 yd2(i)=y2(i)
254 zd2(i)=z2(i)
255 xd3(i)=x3(i)
256 yd3(i)=y3(i)
257 zd3(i)=z3(i)
258 xd4(i)=x4(i)
259 yd4(i)=y4(i)
260 zd4(i)=z4(i)
261 off(i) = abs(offg(i))
262
263 ENDDO
264 off_l =
min(off_l,minval(offg(1:nel)))
265 ENDIF
266
267 ENDIF
268
269 IF(off_l<zero)THEN
270#include "vectorize.inc"
271 DO i=1,nel
272 IF(offg(i)<zero)THEN
273 vx1(i)=zero
274 vy1(i)=zero
275 vz1(i)=zero
276 vx2(i)=zero
277 vy2(i)=zero
278 vz2(i)=zero
279 vx3(i)=zero
280 vy3(i)=zero
281 vz3(i)=zero
282 vx4(i)=zero
283 vy4(i)=zero
284 vz4(i)=zero
285 ENDIF
286 ENDDO
287 ENDIF
288
289 f11(1:nel)=zero
290 f21(1:nel)=zero
291 f31(1:nel)=zero
292 f12(1:nel)=zero
293 f22(1:nel)=zero
294 f32(1:nel)=zero
295 f13(1:nel)=zero
296 f23(1:nel)=zero
297 f33(1:nel)=zero
298 f14(1:nel)=zero
299 f24(1:nel)=zero
300 f34(1:nel)=zero
301
302 IF (jlag/=0)THEN
303 vd2(1:nel)=zero
304 RETURN
305
306 ELSEIF(jale/=0)THEN
307#include "vectorize.inc"
308 DO i=1,nel
309 vdx1(i)=vx1(i)-w(1,nc1(i))
310 vdy1(i)=vy1(i)-w(2,nc1(i))
311 vdz1(i)=vz1(i)-w(3,nc1(i))
312 vdx2(i)=vx2(i)-w(1,nc2(i))
313 vdy2(i)=vy2(i)-w(2,nc2(i))
314 vdz2(i)=vz2(i)-w(3,nc2(i))
315 vdx3(i)=vx3(i)-w(1,nc3(i))
316 vdy3(i)=vy3(i)-w(2,nc3(i))
317 vdz3(i)=vz3(i)-w(3,nc3(i))
318 vdx4(i)=vx4(i)-w(1,nc4(i))
319 vdy4(i)=vy4(i)-w(2,nc4(i))
320 vdz4(i)=vz4(i)-w(3,nc4(i))
321 ENDDO
322 ELSEIF(jeul/=0)THEN
323#include "vectorize.inc"
324 DO i=1,nel
325 vdx1(i)=vx1(i)
326 vdy1(i)=vy1(i)
327 vdz1(i)=vz1(i)
328 vdx2(i)=vx2(i)
329 vdy2(i)=vy2(i)
330 vdz2(i)=vz2(i)
331 vdx3(i)=vx3(i)
332 vdy3(i)=vy3(i)
333 vdz3(i)=vz3(i)
334 vdx4(i)=vx4(i)
335 vdy4(i)=vy4(i)
336 vdz4(i)=vz4(i)
337 ENDDO
338 ENDIF
339#include "vectorize.inc"
340 DO i=1,nel
341 vdx(i)=fourth*(vdx1(i)+vdx2(i)+vdx3(i)+vdx4(i))
342 vdy(i)=fourth*(vdy1(i)+vdy2(i)+vdy3(i)+vdy4(i))
343 vdz(i)=fourth*(vdz1(i)+vdz2(i)+vdz3(i)+vdz4(i))
344 vd2(i)=nine*(vdx(i)**2+vdy(i)**2+vdz(i)**2)
345 ENDDO
346
347 RETURN