32
33
34
37
38
39
40#include "implicit_f.inc"
41
42
43
44#include "mvsiz_p.inc"
45
46
47
48#include "com01_c.inc"
49#include "com04_c.inc"
50#include "vect01_c.inc"
51#include "param_c.inc"
52#include "parit_c.inc"
53#include "inter22.inc"
54
55
56
57 INTEGER IXS(NIXS,NUMELS), NSG
58 my_real pm(npropm,nummat), v(3,numnod), w(3,numnod), x(3,numnod), flux(6,*), flu1(*)
59 TYPE(t_ale_connectivity), INTENT(IN) :: ALE_CONNECT
60
61
62
63 INTEGER MAT(MVSIZ),
64 . NC1(MVSIZ), NC2(MVSIZ), NC3(MVSIZ), NC4(MVSIZ),
65 . NC5(MVSIZ), NC6(MVSIZ), NC7(MVSIZ), NC8(MVSIZ),
66 . I,II
67
69 . x1(mvsiz), x2(mvsiz), x3(mvsiz), x4(mvsiz),
70 . x5(mvsiz), x6(mvsiz), x7(mvsiz), x8(mvsiz),
71 . y1(mvsiz), y2(mvsiz), y3(mvsiz), y4(mvsiz),
72 . y5(mvsiz), y6(mvsiz), y7(mvsiz), y8(mvsiz),
73 . z1(mvsiz), z2(mvsiz), z3(mvsiz), z4(mvsiz),
74 . z5(mvsiz), z6(mvsiz), z7(mvsiz), z8(mvsiz),
75 . n1x(mvsiz),n1y(mvsiz),n1z(mvsiz),
76 . n2x(mvsiz),n2y(mvsiz),n2z(mvsiz),
77 . n3x(mvsiz),n3y(mvsiz),n3z(mvsiz),
78 . n4x(mvsiz),n4y(mvsiz),n4z(mvsiz),
79 . n5x(mvsiz),n5y(mvsiz),n5z(mvsiz),
80 . n6x(mvsiz),n6y(mvsiz),n6z(mvsiz),
81 . flux1(mvsiz), flux2(mvsiz), flux3(mvsiz),
82 . flux4(mvsiz), flux5(mvsiz), flux6(mvsiz),
83 . vx1(mvsiz), vx2(mvsiz), vx3(mvsiz),
84 . vx4(mvsiz), vx5(mvsiz), vx6(mvsiz),
85 . vy1(mvsiz), vy2(mvsiz), vy3(mvsiz),
86 . vy4(mvsiz), vy5(mvsiz), vy6(mvsiz),
87 . vz1(mvsiz), vz2(mvsiz), vz3(mvsiz),
88 . vz4(mvsiz), vz5(mvsiz), vz6(mvsiz),
89 . vdx1(mvsiz), vdx2(mvsiz), vdx3(mvsiz), vdx4(mvsiz),
90 . vdx5(mvsiz), vdx6(mvsiz), vdx7(mvsiz), vdx8(mvsiz),
91 . vdy1(mvsiz), vdy2(mvsiz), vdy3(mvsiz), vdy4(mvsiz),
92 . vdy5(mvsiz), vdy6(mvsiz), vdy7(mvsiz), vdy8(mvsiz),
93 . vdz1(mvsiz), vdz2(mvsiz), vdz3(mvsiz), vdz4(mvsiz),
94 . vdz5(mvsiz), vdz6(mvsiz), vdz7(mvsiz), vdz8(mvsiz),
95 . reduc,upwl(6,mvsiz),
96 . xc(mvsiz),yc(mvsiz),zc(mvsiz),
97 . xf1(mvsiz),yf1(mvsiz),zf1(mvsiz),
98 . xf2(mvsiz),yf2(mvsiz),zf2(mvsiz),
99 . xf3(mvsiz),yf3(mvsiz),zf3(mvsiz),
100 . xf4(mvsiz),yf4(mvsiz),zf4(mvsiz),
101 . xf5(mvsiz),yf5(mvsiz),zf5(mvsiz),
102 . xf6(mvsiz),yf6(mvsiz),zf6(mvsiz),
103 . test
104
105 INTEGER,DIMENSION(:), POINTER :: pIsMain
106
107 my_real :: tag22(mvsiz), ratioface(6)
108
109 my_real,
DIMENSION(:),
POINTER :: pface
110 my_real,
DIMENSION(:) ,
POINTER :: pfullface
111
112 INTEGER MA,IC,JST(MVSIZ+1)
113 INTEGER MCELL,IB, NIN, NBCUT, IAD2
114
115
116
117
118
119
120 DO i=lft,llt
121 ii=i+nft
122 mat(i)=ixs(1,ii)
123
124 nc1(i)=ixs(2,ii)
125 nc2(i)=ixs(3,ii)
126 nc3(i)=ixs(4,ii)
127 nc4(i)=ixs(5,ii)
128 nc5(i)=ixs(6,ii)
129 nc6(i)=ixs(7,ii)
130 nc7(i)=ixs(8,ii)
131 nc8(i)=ixs(9,ii)
132
133
134 x1(i)=x(1,nc1(i))
135 y1(i)=x(2,nc1(i))
136 z1(i)=x(3,nc1(i))
137
138 x2(i)=x(1,nc2(i))
139 y2(i)=x(2,nc2(i))
140 z2(i)=x(3,nc2(i))
141
142 x3(i)=x(1,nc3(i))
143 y3(i)=x(2,nc3(i))
144 z3(i)=x(3,nc3(i))
145
146 x4(i)=x(1,nc4(i))
147 y4(i)=x(2,nc4(i))
148 z4(i)=x(3,nc4(i))
149
150 x5(i)=x(1,nc5(i))
151 y5(i)=x(2,nc5(i))
152 z5(i)=x(3,nc5(i))
153
154 x6(i)=x(1,nc6(i))
155 y6(i)=x(2,nc6(i))
156 z6(i)=x(3,nc6(i))
157
158 x7(i)=x(1,nc7(i))
159 y7(i)=x(2,nc7(i))
160 z7(i)=x(3,nc7(i))
161
162 x8(i)=x(1,nc8(i))
163 y8(i)=x(2,nc8(i))
164 z8(i)=x(3,nc8(i))
165
166
167
168
169
170
171
172 vdx1(i)=v(1,nc1(i)) - w(1,nc1(i))
173 vdy1(i)=v(2,nc1(i)) - w(2,nc1(i))
174 vdz1(i)=v(3,nc1(i)) - w(3,nc1(i))
175
176 vdx2(i)=v(1,nc2(i)) - w(1,nc2(i))
177 vdy2(i)=v(2,nc2(i)) - w(2,nc2(i))
178 vdz2(i)=v(3,nc2(i)) - w(3,nc2(i))
179
180 vdx3(i)=v(1,nc3(i)) - w(1,nc3(i))
181 vdy3(i)=v(2,nc3(i)) - w(2,nc3(i))
182 vdz3(i)=v(3,nc3(i)) - w(3,nc3(i))
183
184 vdx4(i)=v(1,nc4(i)) - w(1,nc4(i))
185 vdy4(i)=v(2,nc4(i)) - w(2,nc4(i))
186 vdz4(i)=v(3,nc4(i)) - w(3,nc4(i))
187
188 vdx5(i)=v(1,nc5(i)) - w(1,nc5(i))
189 vdy5(i)=v(2,nc5(i)) - w(2,nc5(i))
190 vdz5(i)=v(3,nc5(i)) - w(3,nc5(i))
191
192 vdx6(i)=v(1,nc6(i)) - w(1,nc6(i))
193 vdy6(i)=v(2,nc6(i)) - w(2,nc6(i))
194 vdz6(i)=v(3,nc6(i)) - w(3,nc6(i))
195
196 vdx7(i)=v(1,nc7(i)) - w(1,nc7(i))
197 vdy7(i)=v(2,nc7(i)) - w(2,nc7(i))
198 vdz7(i)=v(3,nc7(i)) - w(3,nc7(i))
199
200 vdx8(i)=v(1,nc8(i)) - w(1,nc8(i))
201 vdy8(i)=v(2,nc8(i)) - w(2,nc8(i))
202 vdz8(i)=v(3,nc8(i)) - w(3,nc8(i))
203 END DO
204
205
206
207
208
209
210
211 DO i=lft,llt
212
213 vx1(i)=one_over_8*(vdx1(i)+vdx2(i)+vdx3(i)+vdx4(i))
214 vx2(i)=one_over_8*(vdx3(i)+vdx4(i)+vdx8(i)+vdx7(i))
215 vx3(i)=one_over_8*(vdx5(i)+vdx6(i)+vdx7(i)+vdx8(i))
216 vx4(i)=one_over_8*(vdx1(i)+vdx2(i)+vdx6(i)+vdx5(i))
217 vx5(i)=one_over_8*(vdx2(i)+vdx3(i)+vdx7(i)+vdx6(i))
218 vx6(i)=one_over_8*(vdx1(i)+vdx4(i)+vdx8(i)+vdx5(i))
219
220 vy1(i)=one_over_8*(vdy1(i)+vdy2(i)+vdy3(i)+vdy4(i))
221 vy2(i)=one_over_8*(vdy3(i)+vdy4(i)+vdy8(i)+vdy7(i))
222 vy3(i)=one_over_8*(vdy5(i)+vdy6(i)+vdy7(i)+vdy8(i))
223 vy4(i)=one_over_8*(vdy1(i)+vdy2(i)+vdy6(i)+vdy5(i))
224 vy5(i)=one_over_8*(vdy2(i)+vdy3(i)+vdy7(i)+vdy6(i))
225 vy6(i)=one_over_8*(vdy1(i)+vdy4(i)+vdy8(i)+vdy5(i))
226
227 vz1(i)=one_over_8*(vdz1(i)+vdz2(i)+vdz3(i)+vdz4(i))
228 vz2(i)=one_over_8*(vdz3(i)+vdz4(i)+vdz8(i)+vdz7(i))
229 vz3(i)=one_over_8*(vdz5(i)+vdz6(i)+vdz7(i)+vdz8(i))
230 vz4(i)=one_over_8*(vdz1(i)+vdz2(i)+vdz6(i)+vdz5(i))
231 vz5(i)=one_over_8*(vdz2(i)+vdz3(i)+vdz7(i)+vdz6(i))
232 vz6(i)=one_over_8*(vdz1(i)+vdz4(i)+vdz8(i)+vdz5(i))
233 END DO
234
235
236
237
238
239
240
241 DO i=lft,llt
242
243 n1x(i)=(y3(i)-y1(i))*(z2(i)-z4(i)) - (z3(i)-z1(i))*(y2(i)-y4(i))
244 n1y(i)=(z3(i)-z1(i))*(x2(i)-x4(i)) - (x3(i)-x1(i))*(z2(i)-z4(i))
245 n1z(i)=(x3(i)-x1(i))*(y2(i)-y4(i)) - (y3(i)-y1(i))*(x2(i)-x4(i
246
247 n2x(i)=(y7(i)-y4(i))*(z3(i)-z8(i)) - (z7(i)-z4(i))*(y3(i)-y8(i))
248 n2y(i)=(z7(i)-z4(i))*(x3(i)-x8(i)) - (x7(i)-x4(i))*(z3(i)-z8(i))
249 n2z(i)=(x7(i)-x4(i))*(y3(i)-y8(i)) - (y7(i)-y4(i))*(x3(i)-x8(i))
250
251 n3x(i)=(y6(i)-y8(i))*(z7(i)-z5(i)) - (z6(i)-z8(i))*(y7(i)-y5(i))
252 n3y(i)=(z6(i)-z8(i))*(x7(i)-x5(i)) - (x6(i)-x8(i))*(z7(i)-z5(i))
253 n3z(i)=(x6(i)-x8(i))*(y7(i)-y5(i)) - (y6(i)-y8(i))*(x7(i)-x5(i))
254
255 n4x(i)=(y2(i)-y5(i))*(z6(i)-z1(i)) - (z2(i)-z5(i))*(y6(i)-y1(i))
256 n4y(i)=(z2(i)-z5(i))*(x6(i)-x1(i)) - (x2(i)-x5(i))*(z6(i)-z1(i))
257 n4z(i)=(x2(i)-x5(i))*(y6(i)-y1(i)) - (y2(i)-y5(i))*(x6(i)-x1(i))
258
259 n5x(i)=(y7(i)-y2(i))*(z6(i)-z3(i)) - (z7(i)-z2(i))*(y6(i)-y3(i))
260 n5y(i)=(z7(i)-z2(i))*(x6(i)-x3(i)) - (x7(i)-x2(i))*(z6(i)-z3(i))
261 n5z(i)=(x7(i)-x2(i))*(y6(i)-y3(i)) - (y7(i)-y2(i))*(x6(i)-x3(i))
262
263 n6x(i)=(y8(i)-y1(i))*(z4(i)-z5(i)) - (z8(i)-z1(i))*(y4(i)-y5(i))
264 n6y(i)=(z8(i)-z1(i))*(x4(i)-x5(i)) - (x8(i)-x1(i))*(z4(i)-z5(i))
265 n6z(i)=(x8(i)-x1(i))*(y4(i)-y5(i)) - (y8(i)-y1(i))*(x4(i)-x5(i))
266 END DO
267
268
269
270
271
272
273
274
275
276 IF(iclose == 1) THEN
277 DO i=lft,llt
278
279 xc(i)=one_over_8*(x1(i)+x2(i)+x3(i)+x4(i)+x5(i)+x6(i)+x7(i)+x8(i))
280 yc(i)=one_over_8*(y1(i)+y2(i)+y3(i)+y4(i)+y5(i)+y6(i)+y7(i)+y8(i))
281 zc(i)=one_over_8*(z1(i)+z2(i)+z3(i)+z4(i)+z5(i)+z6(i)+z7(i)+z8(i))
282
283
284 xf1(i)=fourth*(x1(i)+x2(i)+x3(i)+x4(i))
285 xf2(i)=fourth*(x3(i)+x4(i)+x8(i)+x7(i))
286 xf3(i)=fourth*(x5(i)+x6(i)+x7(i)+x8(i))
287 xf4(i)=fourth*(x1(i)+x2(i)+x6(i)+x5(i))
288 xf5(i)=fourth*(x2(i)+x3(i)+x7(i)+x6(i))
289 xf6(i)=fourth*(x1(i)+x4(i)+x8(i)+x5(i))
290
291 yf1(i)=fourth*(y1(i)+y2(i)+y3(i)+y4(i))
292 yf2(i)=fourth*(y3(i)+y4(i)+y8(i)+y7(i))
293 yf3(i)=fourth*(y5(i)+y6(i)+y7(i)+y8(i))
294 yf4(i)=fourth*(y1(i)+y2(i)+y6(i)+y5(i))
295 yf5(i)=fourth*(y2(i)+y3(i)+y7(i)+y6(i))
296 yf6(i)=fourth*(y1(i)+y4(i)+y8(i)+y5(i))
297
298 zf1(i)=fourth*(z1(i)+z2(i)+z3(i)+z4(i))
299 zf2(i)=fourth*(z3(i)+z4(i)+z8(i)+z7(i))
300 zf3(i)=fourth*(z5(i)+z6(i)+z7(i)+z8(i))
301 zf4(i)=fourth*(z1(i)+z2(i)+z6(i)+z5(i))
302 zf5(i)=fourth*(z2(i)+z3(i)+z7(i)+z6(i))
303 zf6(i)=fourth*(z1(i)+z4(i)+z8(i)+z5(i))
304 ENDDO
305
306 DO i=lft,llt
307 test=(xf1(i)-xc(i))*n1x(i)+
308 . (yf1(i)-yc(i))*n1y(i)+
309 . (zf1(i)-zc(i))*n1z(i)
310 IF(test <= 0)THEN
311 n1x(i)=zero
312 n1y(i)=zero
313 n1z(i)=zero
314 ENDIF
315 ENDDO
316
317 DO i=lft,llt
318 test=(xf2(i)-xc(i))*n2x(i)+
319 . (yf2(i)-yc(i))*n2y(i)+
320 . (zf2(i)-zc(i))*n2z(i)
321 IF(test <= 0)THEN
322 n2x(i)=zero
323 n2y(i)=zero
324 n2z(i)=zero
325 ENDIF
326 ENDDO
327
328 DO i=lft,llt
329 test=(xf3(i)-xc(i))*n3x(i)+
330 . (yf3(i)-yc(i))*n3y(i)+
331 . (zf3(i)-zc(i))*n3z(i)
332 IF(test <= 0)THEN
333 n3x(i)=zero
334 n3y(i)=zero
335 n3z(i)=zero
336 ENDIF
337 ENDDO
338
339 DO i=lft,llt
340 test=(xf4(i)-xc(i))*n4x(i)+
341 . (yf4(i)-yc(i))*n4y(i)+
342 . (zf4(i)-zc(i))*n4z(i)
343 IF(test <= zero)THEN
344 n4x(i)=zero
345 n4y(i)=zero
346 n4z(i)=zero
347 ENDIF
348 ENDDO
349
350 DO i=lft,llt
351 test=(xf5(i)-xc(i))*n5x(i)+
352 . (yf5(i)-yc(i))*n5y(i)+
353 . (zf5(i)-zc(i))*n5z(i)
354 IF(test <= zero)THEN
355 n5x(i)=zero
356 n5y(i)=zero
357 n5z(i)=zero
358 ENDIF
359 ENDDO
360
361 DO i=lft,llt
362 test=(xf6(i)-xc(i))*n6x(i)+
363 . (yf6(i)-yc(i))*n6y(i)+
364 . (zf6(i)-zc(i))*n6z(i)
365 IF(test <= zero)THEN
366 n6x(i)=zero
367 n6y(i)=zero
368 n6z(i)=zero
369 ENDIF
370 ENDDO
371 ENDIF
372
373
374
375
376
377
378 DO i=lft,llt
379 flux1(i)=(vx1(i)*n1x(i)+vy1(i)*n1y(i)+vz1(i)*n1z(i))
380 flux2(i)=(vx2(i)*n2x(i)+vy2(i)*n2y(i)+vz2(i)*n2z(i))
381 flux3(i)=(vx3(i)*n3x(i)+vy3(i)*n3y(i)+vz3(i)*n3z(i))
382 flux4(i)=(vx4(i)*n4x(i)+vy4(i)*n4y(i)+vz4(i)*n4z(i))
383 flux5(i)=(vx5(i)*n5x(i)+vy5(i)*n5y(i)+vz5(i)*n5z(i))
384 flux6(i)=(vx6(i)*n6x(i)+vy6(i)*n6y(i)+vz6(i)*n6z(i))
385 END DO
386
387
388
389
390
391 IF(int22 > 0)THEN
392 print *, "**inter22, CURRENTLY EULERIAN ONLY"
393 stop 2204
394 nin = 1
395 DO i=lft,llt
396 ib = nint(tag22(i))
397 IF(ib > 0)THEN
399 IF(nbcut==0)cycle
401 pface =>
brick_list(nin,ib)%POLY(mcell)%FACE(1:6)%Surf
402 pismain =>
brick_list(nin,ib)%POLY(1:9)%IsMain
403 IF(mcell == 0) cycle
404 pfullface =>
brick_list(nin,ib)%Face_Brick(1:6)
405 ratioface(1) = pface(1) / pfullface(1)
406 ratioface(2) = pface(2) / pfullface(2)
407 ratioface(3) = pface(3) / pfullface
408 ratioface(4) = pface(4) / pfullface(4)
409 ratioface(5) = pface(5) / pfullface(5)
410 ratioface(6) = pface(6) / pfullface(6)
411 flux1(i) = ratioface(1) * flux1(i)
412 flux2(i) = ratioface(2) * flux2(i)
413 flux3(i) = ratioface(3) * flux3(i)
414 flux4(i) = ratioface(4) * flux4(i)
415 flux5(i) = ratioface(5) * flux5(i)
416 flux6(i) = ratioface(6) * flux6(i)
417 ENDIF
418 enddo!next ib
419 ENDIF
420
421
422
423
424
425 IF(nint(pm(19,mat(1))) == 51)THEN
426 DO i=lft,llt
427 flux(1,i)=flux1(i)
428 flux(2,i)=flux2(i)
429 flux(3,i)=flux3(i)
430 flux(4,i)=flux4(i)
431 flux(5,i)=flux5(i)
432 flux(6,i)=flux6(i)
433 ENDDO
434 RETURN
435 ENDIF
436
437
438
439
440
441 IF (nsg == 1) THEN
442 ma = mat(1)
443 DO i=lft,llt
444 upwl(1,i)=pm(16,ma)
445 upwl(2,i)=pm(16,ma)
446 upwl(3,i)=pm(16,ma)
447 upwl(4,i)=pm(16,ma)
448 upwl(5,i)=pm(16,ma)
449 upwl(6,i)=pm(16,ma)
450 ENDDO
451 ELSE
452 IF (ivector == 0) THEN
453 DO i=lft,llt
454 upwl(1,i)=pm(16,mat(i))
455 upwl(2,i)=pm(16,mat(i))
456 upwl(3,i)=pm(16,mat(i))
457 upwl(4,i)=pm(16,mat(i))
458 upwl(5,i)=pm(16,mat(i))
459 upwl(6,i)=pm(16,mat(i))
460 ENDDO
461 ELSE
462 ic=1
463 jst(ic)=lft
464 DO i=lft+1,llt
465 IF(mat(i) /= mat(i-1)) THEN
466 ic = ic+1
467 jst(ic)=i
468 ENDIF
469 ENDDO
470 jst(ic+1)=llt+1
471 DO ii=1,ic
472 ma = mat(ii)
473 DO i=jst(ii),jst(ii+1)-1
474 upwl(1,i)=pm(16,ma)
475 upwl(2,i)=pm(16,ma)
476 upwl(3,i)=pm(16,ma)
477 upwl(4,i)=pm(16,ma)
478 upwl(5,i)=pm(16,ma)
479 upwl(6,i)=pm(16,ma)
480 ENDDO
481 ENDDO
482 ENDIF
483 ENDIF
484
485
486
487
488
489 DO i=lft,llt
490 iad2 = ale_connect%ee_connect%iad_connect(i + nft)
491
492 reduc=pm(92,mat(i))
493 ii = ale_connect%ee_connect%connected(iad2 + 1 - 1)
494 IF(ii == 0)THEN
495 flux1(i)=flux1(i)*reduc
496 ENDIF
497
498 ii = ale_connect%ee_connect%connected(iad2 + 2 - 1)
499 IF(ii == 0)THEN
500 flux2(i)=flux2(i)*reduc
501 ENDIF
502
503 ii = ale_connect%ee_connect%connected(iad2 + 3 - 1)
504 IF(ii == 0)THEN
505 flux3(i)=flux3(i)*reduc
506 ENDIF
507
508 ii = ale_connect%ee_connect%connected(iad2 + 4 - 1)
509 IF(ii == 0)THEN
510 flux4(i)=flux4(i)*reduc
511 ENDIF
512
513 ii = ale_connect%ee_connect%connected(iad2 + 5 - 1)
514 IF(ii == 0)THEN
515 flux5(i)=flux5(i)*reduc
516 ENDIF
517
518 ii = ale_connect%ee_connect%connected(iad2 + 6 - 1)
519 IF(ii == 0)THEN
520 flux6(i)=flux6(i)*reduc
521 ENDIF
522 END DO
523
524
525
526
527
528
529
530
531 !==========================================================
532 DO i=lft,llt
533
534 flux(1,i)=flux1(i)-upwl(1,i)*abs(flux1(i))
535 flux(2,i)=flux2(i)-upwl(2,i)*abs(flux2(i))
536 flux(3,i)=flux3(i)-upwl(3,i)*abs(flux3(i))
537 flux(4,i)=flux4(i)-upwl(4,i)*abs(flux4(i))
538 flux(5,i)=flux5(i)-upwl(5,i)*abs(flux5(i))
539 flux(6,i)=flux6(i)-upwl(6,i)*abs(flux6(i))
540
541 flu1(i) =flux1(i)+upwl(1,i)*abs(flux1(i))
542 . +flux2(i)+upwl(2,i)*abs(flux2(i))
543 . +flux3(i)+upwl(3,i)*abs(flux3(i))
544 . +flux4(i)+upwl(4,i)*abs(flux4(i))
545 . +flux5(i)+upwl(5,i)*abs(flux5(i))
546 . +flux6(i)+upwl(6,i)*abs(flux6(i))
547 END DO
548
549 RETURN
type(brick_entity), dimension(:,:), allocatable, target brick_list