50
51
52
53
54
55
56
57
58
59
60
61
64
65
66
67#include "implicit_f.inc"
68
69
70
71#include "mvsiz_p.inc"
72
73
74
75#include "vect01_c.inc"
76#include "scr05_c.inc"
77#include "param_c.inc"
78#include "inter22.inc"
79
80
81
82
83
84 INTEGER IXS(NIXS,*),IPARG(NPARG,*),NG,NEL
85 my_real,
INTENT(IN) :: mom(nel,*), tag22(nel)
87 . x(3,*),v(3,*),w(3,*), vis(*),
88 . x1(*), x2(*), x3(*), x4(*), x5(*), x6(*), x7(*), x8(*),
89 . y1(*), y2(*), y3(*), y4(*), y5(*), y6(*), y7(*), y8(*),
90 . z1(*), z2(*), z3(*), z4(*), z5(*), z6(*), z7(*), z8(*),
91 . vx1(*), vx2(*), vx3(*), vx4(*), vx5(*), vx6(*), vx7(*), vx8(*),
92 . vy1(*), vy2(*), vy3(*), vy4(*), vy5(*), vy6(*), vy7(*), vy8(*),
93 . vz1(*), vz2(*), vz3(*), vz4(*), vz5(*), vz6(*), vz7(*), vz8(*),
94 . vdx1(*),vdx2(*),vdx3(*),vdx4(*),vdx5(*),vdx6(*),vdx7(*),vdx8
95 . vdy1(*),vdy2(*),vdy3(*),vdy4(*),vdy5(*),vdy6(*),vdy7(*),vdy8(*),
96 . vdz1(*),vdz2(*),vdz3(*),vdz4(*),vdz5(*),vdz6(*),vdz7(*),vdz8(*),
97 . vdx(*), vdy(*), vdz(*),vd2(*),offg(*),off(*),rho(*),
98 . rhoo(*),gama(mvsiz,6)
99
100 INTEGER NC1(*), NC2(*), NC3(*), NC4(*),
101 . NC5(*), NC6(*), NC7(*), NC8(*), MXT(*), NGL(*),NGEO(*)
102
103 double precision
104 . xdp(3,*),
105 . xd1(*), xd2(*), xd3(*), xd4(*), xd5(*), xd6(*), xd7(*), xd8(*
106 . yd1(*), yd2(*), yd3(*), yd4(*), yd5(*), yd6(*), yd7(*), yd8(*),
107 . zd1(*), zd2(*), zd3(*), zd4(*), zd5(*), zd6(*), zd7(*), zd8(*)
108
109
110
111 INTEGER I, J,MXT_1,IB,NBCUT,NIN,MCELL
113 . rx, ry, rz, sx, sy, sz, tx, ty, tz,
114 . e1x, e1y, e1z, e2x, e2y, e2z, e3x, e3y, e3z
116 . off_l,wdx(mvsiz),wdy(mvsiz),wdz(mvsiz),vw,vwn,vw1,vw2,vw3,surf,sum_surf,
117 . ww1,ww2,ww3
118
119 LOGICAL IsCutCell
120
121
122 nin = 1
123 mxt_1 = ixs(1,1)
124 DO i=1,nel
125 vis(i) = zero
126 ngeo(i) = ixs(10,i)
127 ngl(i) = ixs(11,i)
128 mxt(i) = mxt_1
129 nc1(i) = ixs(2,i)
130 nc2(i) = ixs(3,i)
131 nc3(i) = ixs(4,i)
132 nc4(i) = ixs(5,i)
133 nc5(i) = ixs(6,i)
134 nc6(i) = ixs(7,i)
135 nc7(i) = ixs(8,i)
136 nc8(i) = ixs(9,i)
137 rhoo(i) = rho(i)
138 ENDDO
139
140
141 DO i=1,nel
142 vdx1(i)=zero
143 vdx2(i)=zero
144 vdx3(i)=zero
145 vdx4(i)=zero
146 vdx5(i)=zero
147 vdx6(i)=zero
148 vdx7(i)=zero
149 vdx8(i)=zero
150 vdy1(i)=zero
151 vdy2(i)=zero
152 vdy3(i)=zero
153 vdy4(i)=zero
154 vdy5(i)=zero
155 vdy6(i)=zero
156 vdy7(i)=zero
157 vdy8(i)=zero
158 vdz1(i)=zero
159 vdz2(i)=zero
160 vdz3(i)=zero
161 vdz4(i)=zero
162 vdz5(i)=zero
163 vdz6(i)=zero
164 vdz7(i)=zero
165 vdz8(i)=zero
166 ENDDO
167
168 off_l = zero
169
170
171
172 IF(iresp==1)THEN
173 DO i=1,nel
174 xd1(i)=xdp(1,nc1(i))
175 yd1(i)=xdp(2,nc1(i))
176 zd1(i)=xdp(3,nc1(i))
177 xd2(i)=xdp(1,nc2(i))
178 yd2(i)=xdp(2,nc2(i))
179 zd2(i)=xdp(3,nc2(i))
180 xd3(i)=xdp(1,nc3(i))
181 yd3(i)=xdp(2,nc3(i))
182 zd3(i)=xdp(3,nc3(i))
183 xd4(i)=xdp(1,nc4(i))
184 yd4(i)=xdp(2,nc4(i))
185 zd4(i)=xdp(3,nc4(i))
186 xd5(i)=xdp(1,nc5(i))
187 yd5(i)=xdp(2,nc5(i))
188 zd5(i)=xdp(3,nc5(i))
189 xd6(i)=xdp(1,nc6(i))
190 yd6(i)=xdp(2,nc6(i))
191 zd6(i)=xdp(3,nc6(i))
192 xd7(i)=xdp(1,nc7(i))
193 yd7(i)=xdp(2,nc7(i))
194 zd7(i)=xdp(3,nc7(i))
195 xd8(i)=xdp(1,nc8(i))
196 yd8(i)=xdp(2,nc8(i))
197 zd8(i)=xdp(3,nc8(i))
198 ENDDO
199 ELSE
200 DO i=1,nel
201 xd1(i)=x(1,nc1(i))
202 yd1(i)=x(2,nc1(i))
203 zd1(i)=x(3,nc1(i))
204 xd2(i)=x(1,nc2(i))
205 yd2(i)=x(2,nc2(i))
206 zd2(i)=x(3,nc2(i))
207 xd3(i)=x(1,nc3(i))
208 yd3(i)=x(2,nc3(i))
209 zd3(i)=x(3,nc3(i))
210 xd4(i)=x(1,nc4(i))
211 yd4(i)=x(2,nc4(i))
212 zd4(i)=x(3,nc4(i))
213 xd5(i)=x(1,nc5(i))
214 yd5(i)=x(2,nc5(i))
215 zd5(i)=x(3,nc5(i))
216 xd6(i)=x(1,nc6(i))
217 yd6(i)=x(2,nc6(i))
218 zd6(i)=x(3,nc6(i))
219 xd7(i)=x(1,nc7(i))
220 yd7(i)=x(2,nc7(i))
221 zd7(i)=x(3,nc7(i))
222 xd8(i)=x(1,nc8(i))
223 yd8(i)=x(2,nc8(i))
224 zd8(i)=x(3,nc8(i))
225 ENDDO
226 ENDIF
227
229 1 xd1, xd2, xd3, xd4,
230 2 xd5, xd6, xd7, xd8,
231 3 yd1, yd2, yd3, yd4,
232 4 yd5, yd6, yd7, yd8,
233 5 zd1, zd2, zd3, zd4,
234 6 zd5, zd6, zd7, zd8,
235 7 rx, ry, rz, sx,
236 8 sy, sz, tx, ty,
237 9 tz, nel)
239 1 rx, ry, rz, sx,
240 2 sy, sz, tx, ty,
241 3 tz, e1x, e2x, e3x,
242 4 e1y, e2y, e3y, e1z,
243 5 e2z, e3z, llt)
244
245 gama(i,1) = one
246 gama(i,2) = zero
247 gama(i,3) = zero
248 gama(i,4) = zero
249 gama(i,5) = one
250 gama(i,6) = zero
251
252 DO i=1,nel
253 off(i) = abs(offg(i))
254 off_l =
min(off_l,offg(i))
255 ENDDO
256
257
258 DO i=1,nel
259 x1(i)= xd1(i)
260 y1(i)= yd1(i)
261 z1(i)= zd1(i)
262 x2(i)= xd2(i)
263 y2(i)= yd2(i)
264 z2(i)= zd2(i)
265 x3(i)= xd3(i)
266 y3(i)= yd3(i)
267 z3(i)= zd3(i)
268 x4(i)= xd4(i)
269 y4(i)= yd4(i)
270 z4(i)= zd4(i)
271 x5(i)= xd5(i
272 y5(i)= yd5(i)
273 z5(i)= zd5(i)
274 x6(i)= xd6(i)
275 y6(i)= yd6(i)
276 z6(i)= zd6(i)
277 x7(i)= xd7(i)
278 y7(i)= yd7(i)
279 z7(i)= zd7(i)
280 x8(i)= xd8(i)
281 y8(i)= yd8(i)
282 z8(i)= zd8(i)
283 ENDDO
284
285 DO i=1,nel
286 vx1(i)=v(1,nc1(i))
287 vy1(i)=v(2,nc1(i))
288 vz1(i)=v(3,nc1(i))
289 vx2(i)=v(1,nc2(i))
290 vy2(i)=v(2,nc2(i))
291 vz2(i)=v(3,nc2(i))
292 vx3(i)=v(1,nc3(i))
293 vy3(i)=v(2,nc3(i))
294 vz3(i)=v(3,nc3(i))
295 vx4(i)=v(1,nc4(i))
296 vy4(i)=v(2,nc4(i))
297 vz4(i)=v(3,nc4(i))
298 vx5(i)=v(1,nc5(i))
299 vy5(i)=v(2,nc5(i))
300 vz5(i)=v(3,nc5(i))
301 vx6(i)=v(1,nc6(i))
302 vy6(i)=v(2,nc6(i))
303 vz6(i)=v(3,nc6(i))
304 vx7(i)=v(1,nc7(i))
305 vy7(i)=v(2,nc7(i))
306 vz7(i)=v(3,nc7(i))
307 vx8(i)=v(1,nc8(i))
308 vy8(i)=v(2,nc8(i))
309 vz8(i)=v(3,nc8(i))
310 ENDDO
311
312
313 IF(off_l<zero)THEN
314 DO i=1,nel
315 IF(offg(i)<zero)THEN
316 vx1(i)=zero
317 vy1(i)=zero
318 vz1(i)=zero
319 vx2(i)=zero
320
321 vz2(i)=zero
322 vx3(i)=zero
323 vy3(i)=zero
324 vz3(i)=zero
325 vx4(i)=zero
326 vy4(i)=zero
327 vz4(i)=zero
328 vx5(i)=zero
329 vy5(i)=zero
330 vz5(i)=zero
331 vx6(i)=zero
332 vy6(i)=zero
333 vz6(i)=zero
334 vx7(i)=zero
335 vy7(i)=zero
336 vz7(i)=zero
337 vx8(i)=zero
338 vy8(i)=zero
339 vz8(i)=zero
340 ENDIF
341 ENDDO
342 ENDIF
343
344 IF(iparg(64,ng)==1)THEN
345
346 vd2(1:nel)=zero
347 RETURN
348 ENDIF
349
350
351
352
353
354
355 IF(int22==0)THEN
356 IF(jale/=0)THEN
357 DO i=1,nel
358 wdx(i) = one_over_8*( w(1,nc1(i))+w(1,nc2(i))+w(1,nc3(i))+w(1,nc4(i))+w(1,nc5(i))+w(1,nc6(i))+w(1,nc7(i))+w(1,nc8(i)))
359 wdy(i) = one_over_8*( w(2,nc1(i))+w(2,nc2(i))+w(2,nc3(i))+w(2,nc4(i))+w(2,nc5(i))+w(2,nc6(i))+w(2,nc7(i))+w(2,nc8(i)))
360 wdz(i) = one_over_8*( w(3,nc1(i))+w(3,nc2(i))+w(3,nc3(i))+w(3,nc4(i))+w(3,nc5(i))+w(3,nc6(i))+w(3,nc7(i))+w(3,nc8(i)))
361 vdx(i) = mom(i,1)/rho(i) - wdx(i)
362 vdy(i) = mom(i,2)/rho(i) - wdy(i)
363 vdz(i) = mom(i,3)/rho(i) - wdz(i)
364 vd2(i) = vdx(i)*vdx(i)+vdy(i)*vdy(i)+vdz(i)*vdz(i)
365 ENDDO
366 ELSEIF(jeul/=0)THEN
367 DO i=1,nel
368 vdx(i) = mom(i,1)/rho(i)
369 vdy(i) = mom(i,2)/rho(i)
370 vdz(i) = mom(i,3)/rho(i)
371 vd2(i) = vdx(i)*vdx(i)+vdy(i)*vdy(i)+vdz(i)*vdz(i)
372 ENDDO
373 ENDIF
374 ELSEIF(int22/=0)THEN
375 IF(jeul/=0)THEN
376 DO i=1,nel
377 wdx(i) = zero
378 wdy(i) = zero
379 wdz(i) = zero
380 vdx(i) = mom(i,1)/rho(i) - wdx(i)
381 vdy(i) = mom(i,2)/rho(i) - wdy(i)
382 vdz(i) = mom(i,3)/rho(i) - wdz(i)
383 vd2(i) = vdx(i)*vdx(i)+vdy(i)*vdy(i)+vdz(i)*vdz(i)
384 ENDDO
385 ELSEIF(jale/=0)THEN
386 DO i=1,nel
387 ib = 0
388 IF(int22/=0)ib = nint(tag22(i))
389 iscutcell = .false.
390 IF(ib/=0)THEN
392 IF(nbcut>0)iscutcell=.true.
393 ENDIF
394 IF(iscutcell .EQV. .false.)THEN
395 wdx(i) = one_over_8*( w(1,nc1(i))+w(1,nc2(i))+w(1,nc3(i))+w(1,nc4(i))+w(1,nc5(i))+w(1,nc6(i))+w(1,nc7(i))+w(1,nc8(i)))
396 wdy(i) = one_over_8*( w(2,nc1(i))+w(2,nc2(i))+w(2,nc3(i))+w(2,nc4(i))+w(2,nc5(i))+w(2,nc6(i))+w(2,nc7(i))+w(2,nc8(i)))
397 wdz(i) = one_over_8*( w(3,nc1(i))+w(3,nc2(i))+w(3,nc3(i))+w(3,nc4(i))+w(3,nc5(i))+w(3,nc6(i))+w(3,nc7(i))+w(
398 vdx(i) = mom(i,1)/rho(i) - wdx(i)
399 vdy(i) = mom(i,2)/rho(i) - wdy(i)
400 vdz(i) = mom(i,3)/rho(i) - wdz(i)
401 vd2(i) = vdx(i)*vdx(i)+vdy(i)*vdy(i)+vdz(i)*vdz(i)
402 ELSE
404 IF (mcell==0)THEN
405 wdx(i) = zero
406 wdy(i) = zero
407 wdz(i) = zero
408 vdx(i) = zero
409 vdy(i) = zero
410 vdz(i) = zero
411 vd2(i) = zero
412 ELSE
413 vw = zero
414 vdx(i) = zero
415 vdy(i) = zero
416 vdz(i) = zero
417 vd2(i) = zero
418 j=maxloc(
brick_list(nin,ib)%POLY(mcell)%FACE(1:6)%SURF,1)
419 surf =
brick_list(nin,ib)%POLY(mcell)%FACE(j)%SURF
420 sum_surf = surf
421 vw1 =
brick_list(nin,ib)%POLY(mcell)%FACE(j)%Vel(1)
422 vw2 =
brick_list(nin,ib)%POLY(mcell)%FACE(j)%Vel(2)
423 vw3 =
brick_list(nin,ib)%POLY(mcell)%FACE(j)%Vel(3)
424 ww1 =
brick_list(nin,ib)%POLY(mcell)%FACE(j)%W(1)
425 ww2 =
brick_list(nin,ib)%POLY(mcell)%FACE(j)%W(2)
426 ww3 =
brick_list(nin,ib)%POLY(mcell)%FACE(j)%W(3)
427 vw1 = vw1-ww1
428 vw2 = vw2-ww2
429 vw3 = vw3-ww3
430 vwn = vw1*vw1 + vw2*vw2 + vw3*vw3
431 vdx(i) = surf*vw1
432 vdy(i) = surf*vw2
433 vdz(i) = surf*vw3
434 vd2(i) = vwn
435 DO j=1,6
436 surf =
brick_list(nin,ib)%POLY(mcell)%FACE(j)%SURF
437 IF(surf>zero)THEN
438 sum_surf = sum_surf + surf
439 vw1 =
brick_list(nin,ib)%POLY(mcell)%FACE(j)%Vel(1)
440 vw2 =
brick_list(nin,ib)%POLY(mcell)%FACE(j)%Vel(2)
441 vw3 =
brick_list(nin,ib)%POLY(mcell)%FACE(j)%Vel(3)
442 ww1 =
brick_list(nin,ib)%POLY(mcell)%FACE(j)%W(1)
443 ww2 =
brick_list(nin,ib)%POLY(mcell)%FACE(j)%W(2)
444 ww3 =
brick_list(nin,ib)%POLY(mcell)%FACE(j)%W(3)
445 vw1 = vw1-ww1
446 vw2 = vw2-ww2
447 vw3 = vw3-ww3
448 vwn = vw1*vw1 + vw2*vw2 + vw3*vw3
449 vdx(i) = vdx(i)+surf*vw1
450 vdy(i) = vdy(i)+surf*vw2
451 vdz(i) = vdz(i)+surf*vw3
452 vd2(i) =
max(vd2(i),vwn)
453 ENDIF
454 ENDDO
455 IF(sum_surfTHEN
456 vdx(i) = vdx(i) / sum_surf
457 vdy(i) = vdy(i) / sum_surf
458 vdz(i) = vdz(i) / sum_surf
459 ENDIF
460 ENDIF
461 ENDIF
462 ENDDO
463 ENDIF
464 ENDIF
465
466
468 do i=lft,llt
469 write (*,fmt='(A,I10,4F30.16)') "VD x,y,z,2, ID=",ixs(11,i), vdx(i),vdy(i),vdz(i),vd2(i)
470 enddo
471 endif
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487 RETURN
type(brick_entity), dimension(:,:), allocatable, target brick_list
subroutine srepiso3(x1, x2, x3, x4, x5, x6, x7, x8, y1, y2, y3, y4, y5, y6, y7, y8, z1, z2, z3, z4, z5, z6, z7, z8, rx, ry, rz, sx, sy, sz, tx, ty, tz, f1x, f1y, f1z, f2x, f2y, f2z)
subroutine sreploc3(rx, ry, rz, sx, sy, sz, tx, ty, tz, e1x, e2x, e3x, e1y, e2y, e3y, e1z, e2z, e3z)