36
37
38
39
40
41
42
43
44
45
46
47
51
52
53
54#include "implicit_f.inc"
55
56
57
58#include "mvsiz_p.inc"
59
60
61
62#include "vect01_c.inc"
63#include "param_c.inc"
64#include "com01_c.inc"
65#include "com08_c.inc"
66
67
68
69 INTEGER :: IXS(NIXS,*), NV46, IPM(NPROPMI,*),NEL
70 my_real :: pm(npropm,*), flux(6,*), flu1(*), x(3,*),w(3,*)
71 TYPE(t_ale_connectivity), INTENT(IN) :: ALE_CONNECT
72
73
74
75 INTEGER MAT(MVSIZ), NC1(MVSIZ), NC2(MVSIZ), NC3(MVSIZ), NC4(MVSIZ), NC5(MVSIZ), NC6(MVSIZ),
76 . NC7(MVSIZ), NC8(MVSIZ), I, II,J,IMAT,IALEFVM_FLG,IDV, ICF(4,6),
77 . IX1,IX2,IX3,IX4
79 . x1(mvsiz), x2(mvsiz), x3(mvsiz), x4(mvsiz), x5(mvsiz), x6(mvsiz), x7(mvsiz), x8(mvsiz),
80 . y1(mvsiz), y2(mvsiz), y3(mvsiz), y4(mvsiz), y5(mvsiz), y6(mvsiz), y7(mvsiz), y8(mvsiz), z1(mvsiz),
81 . z2(mvsiz), z3(mvsiz), z4(mvsiz), z5(mvsiz), z6(mvsiz), z7(mvsiz), z8(mvsiz), n1x(mvsiz),
82 . n2x(mvsiz), n3x(mvsiz), n4x(mvsiz), n5x(mvsiz), n6x(mvsiz), n1y(mvsiz), n2y(mvsiz
83 . n4y(mvsiz), n5y(mvsiz), n6y(mvsiz), n1z(mvsiz), n2z(mvsiz), n3z(mvsiz), n4z(mvsiz)
84 . n6z(mvsiz), flux1(mvsiz), flux2(mvsiz), flux3(mvsiz), flux4(mvsiz), flux5(mvsiz),
85 . flux6(mvsiz), vx1(mvsiz), vx2(mvsiz), vx3(mvsiz), vx4(mvsiz), vx5(mvsiz), vx6(mvsiz),
86 . vy1(mvsiz), vy2(mvsiz), vy3(mvsiz), vy4(mvsiz), vy5(mvsiz), vy6(mvsiz), vz1(mvsiz), vz2(mvsiz),
87 . vz3(mvsiz), vz4(mvsiz), vz5(mvsiz), vz6(mvsiz),
88 . reduc,upwl(6,mvsiz),valvois(6,nv46,mvsiz), valel(6,mvsiz),vec(3,6),cf(3,mvsiz),
89 . z(3),zadj(3),zcf(3),zzadj(3),zcf_,zzadj_,cos, ps, denom, denom1,denom2,lambda,xsi,wface(3,6,mvsiz),sr1,sr2,
90 . surf(6), term2, n(3,6,mvsiz)
91 LOGICAL debug_outp
92 INTEGER :: idbf, idbl, NC(8,MVSIZ), IAD2,
93
94 DATA icf/1,4,3,2,3,4,8,7,5,6,7,8,1,2,6,5,2,3,7,6,1,5,8,4/
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
116 imat = ixs(1,1+nft)
117 ialefvm_flg = ipm(251,imat)
118 IF(ialefvm_flg <= 1)RETURN
119
120
121
122
123 DO i=1,nel
124 ii = i + nft
125 mat(i) = ixs(1,ii)
126
127 nc1(i)=ixs(2,ii)
128 nc2(i)=ixs(3,ii)
129 nc3(i)=ixs(4,ii)
130 nc4(i)=ixs(5,ii)
131 nc5(i)=ixs(6,ii)
132 nc6(i)=ixs(7,ii)
133 nc7(i)=ixs(8,ii)
134 nc8(i)=ixs(9,ii)
135
136
137 x1(i)=x(1,nc1(i))
138 y1(i)=x(2,nc1(i))
139 z1(i)=x(3,nc1(i))
140
141 x2(i)=x(1,nc2(i))
142 y2(i)=x(2,nc2(i))
143 z2(i)=x(3,nc2(i))
144
145 x3(i)=x(1,nc3(i))
146 y3(i)=x(2,nc3(i))
147 z3(i)=x(3,nc3(i))
148
149 x4(i)=x(1,nc4(i))
150 y4(i)=x(2,nc4(i))
151 z4(i)=x(3,nc4(i))
152
153 x5(i)=x(1,nc5(i))
154 y5(i)=x(2,nc5(i))
155 z5(i)=x(3,nc5(i))
156
157 x6(i)=x(1,nc6(i))
158 y6(i)=x(2,nc6(i))
159 z6(i)=x(3,nc6(i))
160
161 x7(i)=x(1,nc7(i))
162 y7(i)=x(2,nc7(i))
163 z7(i)=x(3,nc7(i))
164
165 x8(i)=x(1,nc8(i))
166 y8(i)=x(2,nc8(i))
167 z8(i)=x(3,nc8(i))
168 ENDDO
169
170
171
172
173 DO i=1,nel
174 wface(1,1,i) = fourth*(w(1,nc1(i))+w(1,nc2(i))+w(1,nc3(i))+w(1,nc4(i)))
175 wface(2,1,i) = fourth*(w(2,nc1(i))+w(2,nc2(i))+w(2,nc3(i))+w(2,nc4(i)))
176 wface(3,1,i) = fourth*(w(3,nc1(i))+w(3,nc2(i))+w(3,nc3(i))+w(3,nc4(i)))
177
178 wface(1,2,i) = fourth*(w(1,nc3(i))+w(1,nc4(i))+w(1,nc7(i))+w(1,nc8
179 wface(2,2,i) = fourth*(w(2,nc3(i))+w(2,nc4(i))+w(2,nc7(i))+w(2,nc8(i)))
180 wface(3,2,i) = fourth*(w(3,nc3(i))+w(3,nc4(i))+w(3,nc7(i))+w(3,nc8(i)))
181
182
183 wface(1,3,i) = fourth*(w(1,nc5(i))+w(1,nc6(i))+w(1,nc7(i))+w(1,nc8(i)))
184 wface(2,3,i) = fourth*(w(2,nc5(i))+w(2,nc6(i))+w(2,nc7(i))+w(2,nc8(i)))
185 wface(3,3,i) = fourth*(w(3,nc5(i))+w(3,nc6(i))+w(3,nc7(i))+w(3,nc8(i)))
186
187 wface(1,4,i) = fourth*(w(1,nc1
188 wface(2,4,i) = fourth*(w(2,nc1(i))+w(2,nc2(i))+w(2,nc5(i))+w(2,nc6(i)))
189 wface(3,4,i) = fourth*(w(3,nc1(i))+w(3,nc2(i))+w(3,nc5(i))+w(3,nc6(i)))
190
191 wface(1,5,i) = fourth*(w(1,nc2(i))+w(1,nc3(i))+w(1,nc6
192 wface(2,5,i) = fourth*(w(2,nc2(i))+w(2,nc3(i))+w(2,nc6(i))+w(2,nc7(i)))
193 wface(3,5,i) = fourth*(w(3,nc2(i))+w(3,nc3(i))+w(3,nc6(i))+w(3,nc7(i)))
194
195 wface(1,6,i) = fourth*(w(1,nc1(i))+w(1,nc4(i))+w(1,nc5(i))+w(1,nc8(i)))
196 wface(2,6,i) = fourth*(w(2,nc1(i))+w(2,nc4(i))+w(2,nc5(i))+w(2,nc8(i)))
197 wface(3,6,i) = fourth*(w(3,nc1(i))+w(3,nc4(i))+w(3,nc5(i))+w(3,nc8(i)))
198 ENDDO
199
200
201
202
203
204 DO i=1,nel
205 ii = i + nft
212 iad2 = ale_connect%ee_connect%iad_connect
213
214 DO j=1,lgth
215 idv = ale_connect%ee_connect%connected(iad2 + j - 1)
216 IF(idv <= 0) THEN
223 ELSE
230 ENDIF
231 enddo
232 enddo
233
234
235
236
237
238
239
240 DO i
241
242 n1x(i)=(y3(i)-y1(i))*(z2(i)-z4(i)) - (z3(i)-z1(i))*(y2(i)-y4
243 n1y(i)=(z3(i)-z1(i))*(x2(i)-x4(i
244 n1z(i)=(x3(i)-x1(i))*(y2(i)-y4(i)) - (y3(i)-y1(i
245
246 n2x(i)=(y7(i)-y4(i))*(z3(i)-z8(i)) - (z7(i)-z4(i))*(y3(i)-y8(i))
247 n2y(i)=(z7(i)-z4(i))*(x3(i)-x8(i)) - (x7(i)-x4(i))*(z3(i)-z8(i))
248 n2z(i)=(x7(i)-x4(i))*(y3(i)-y8(i)) - (y7(i)-y4(i))*(x3(i)-x8(i))
249
250 n3x(i)=(y6(i)-y8(i))*(z7(i)-z5(i)) - (z6(i)-z8(i))*(y7(i)-y5(i))
251 n3y(i)=(z6(i)-z8(i))*(x7
252 n3z(i)=(x6(i)-x8(i))*(y7(i)-y5(i)) - (y6(i)-y8(i))*(x7(i)-x5(i))
253
254 n4x(i)=(y2(i)-y5(i))*(z6(i)-z1(i)) - (z2(i)-z5(i))*(y6(i)-y1(i))
255 n4y(i)=(z2(i)-z5(i))*(x6(i)-x1(i)) - (x2(i)-x5(i))*(z6(i)-z1(i))
256 n4z(i)=(x2(i)-x5(i))*(y6(i)-y1(i)) - (y2(i)-y5(i))*(x6(i)-x1(i))
257
258 n5x(i)=(y7(i)-y2(i))*(z6(i)-z3(i)) - (z7(i)-z2(i))*(y6(i)-y3(i))
259 n5y(i)=(z7(i)-z2(i))*(x6(i)-x3(i)) - (x7(i)-x2(i))*(z6(i)-z3(i))
260 n5z(i)=(x7(i)-x2(i))*(y6(i)-y3(i)) - (y7(i)-y2(i))*(x6(i)-x3(i))
261
262 n6x(i)=(y8(i)-y1(i))*(z4(i)-z5(i)) - (z8(i)-z1(i))*(y4(i)-y5(i))
263 n6y(i)=(z8(i)-z1(i))*(x4(i)-x5(i)) - (x8(i)-x1(i))*(z4(i)-z5(i))
264 n6z(i)=(x8(i)-x1(i))*(y4(i)-y5(i)) - (y8(i)-y1(i))*(x4(i)-x5(i))
265
266 n(1,1,i) = n1x(i)
267 n(2,1,i) = n1y(i)
268 n(3,1,i) = n1z(i)
269
270 n(1,2,i) = n2x(i)
271 n(2,2,i) = n2y(i)
272 n(3,2,i) = n2z(i)
273
274 n(1,3,i) = n3x(i)
275 n(2,3,i) = n3y(i)
276 n(3,3,i) = n3z(i)
277
278 n(1,4,i) = n4x(i)
279 n(2,4,i) = n4y(i)
280 n(3,4,i) = n4z(i)
281
282 n(1,5,i) = n5x(i)
283 n(2,5,i) = n5y(i)
284 n(3,5,i) = n5z(i)
285
286 n(1,6,i) = n6x(i)
287 n(2,6,i) = n6y(i)
288 n(3,6,i) = n6z(i)
289 END DO
290
291
292
293
294
295
296
298
300
301
302 CASE(1)
303
304 DO i=1,nel
305 ii = i + nft
306 DO j=1,nv46
307 vec(1,j) = half * (valel(1,i)/valel(4,i) + valvois(1,j,i)/valvois(4,j,i))
308 vec(2,j) = half * (valel(2,i)/valel(4,i) + valvois(2,j,i)/valvois(4,j,i))
309 vec(3,j) = half * (valel(3,i)/valel(4,i) + valvois(3,j,i)/valvois(4,j,i))
310 vec(1,j) = vec(1,j) - wface(1,j,i)
311 vec(2,j) = vec(2,j) - wface(2,j,i)
312 vec(3,j) = vec(3,j) - wface(3,j,i)
313 enddo
314 DO j=1,nv46
318 ENDDO
319
320 vx1(i) = vec(1,1)
321 vy1(i) = vec(2,1)
322 vz1(i) = vec(3,1)
323
324 vx2(i) = vec(1,2)
325 vy2(i) = vec(2,2)
326 vz2(i) = vec(3,2)
327
328 vx3(i) = vec(1,3)
329 vy3(i) = vec(2,3)
330 vz3(i) = vec(3,3)
331
332 vx4(i) = vec(1,4)
333 vy4(i) = vec(2,4)
334 vz4(i) = vec(3,4)
335
336 vx5(i) = vec(1,5)
337 vy5(i) = vec(2,5)
338 vz5(i) = vec(3,5)
339
340 vx6(i) = vec(1,6)
341 vy6(i) = vec(2,6)
342 vz6(i) = vec(3,6)
343 enddo
344
345 CASE(2)
346
347 DO i=1,nel
348 ii = i + nft
349 DO j=1,nv46
350 vec(1,j) = (valel(1,i) + valvois(1,j,i)) / (valel(4,i)+valvois(4,j,i))
351 vec(2,j) = (valel(2,i) + valvois(2,j,i)) / (valel(4,i)+valvois(4,j,i))
352 vec(3,j) = (valel(3,i) + valvois(3,j,i)) / (valel(4,i)+valvois(4,j,i))
353 vec(1,j) = vec(1,j) - wface(1,j,i)
354 vec(2,j) = vec(2,j) - wface(2,j,i)
355 vec(3,j) = vec(3,j) - wface(3,j,i)
356 enddo
357 DO j=1,nv46
361 ENDDO
362
363 vx1(i) = vec(1,1)
364 vy1(i) = vec(2,1)
365 vz1(i) = vec(3,1)
366
367 vx2(i) = vec(1,2)
368 vy2(i) = vec(2,2)
369 vz2(i) = vec(3,2)
370
371 vx3(i) = vec(1,3)
372 vy3(i) = vec(2,3)
373 vz3(i) = vec(3,3)
374
375 vx4(i) = vec(1,4)
376 vy4(i) = vec(2,4)
377 vz4(i) = vec(3,4)
378
379 vx5(i) = vec(1,5)
380 vy5(i) = vec(2,5)
381 vz5(i) = vec(3,5)
382
383 vx6(i) = vec(1,6)
384 vy6(i) = vec(2,6)
385 vz6(i) = vec(3,6)
386 enddo
387
388 CASE(3)
389
390 DO i=1,nel
391 ii = i + nft
392 sr1 = sqrt(valel(4,i))
393 DO j=1,nv46
394 sr2 = sqrt(valvois(4,j,i))
395 vec(1,j) = (valel(1,i)/sr1 + valvois(1,j,i)/sr2) / (sr1+sr2)
396 vec(2,j) = (valel(2,i)/sr1 + valvois(2,j,i)/sr2) / (sr1+sr2)
397 vec(3,j) = (valel(3,i)/sr1 + valvois(3,j,i)/sr2) / (sr1+sr2)
398 vec(1,j) = vec(1,j) - wface(1,j,i)
399 vec(2,j) = vec(2,j) - wface(2,j,i)
400 vec(3,j) = vec(3,j) - wface(3,j,i)
401 enddo
402 DO j=1,nv46
406 ENDDO
407
408 vx1(i) = vec(1,1)
409 vy1(i) = vec(2,1)
410 vz1(i) = vec(3,1)
411
412 vx2(i) = vec(1,2)
413 vy2(i) = vec(2,2)
414 vz2(i) = vec(3,2)
415
416 vx3(i) = vec(1,3)
417 vy3(i) = vec(2,3)
418 vz3(i) = vec(3,3)
419
420 vx4(i) = vec(1,4)
421 vy4(i) = vec(2,4)
422 vz4(i) = vec(3,4)
423
424 vx5(i) = vec(1,5)
425 vy5(i) = vec(2,5)
426 vz5(i) = vec(3,5)
427
428 vx6(i) = vec(1,6)
429 vy6(i) = vec(2,6)
430 vz6(i) = vec(3,6)
431 enddo
432
433 CASE(4)
434
435 DO i=1,nel
436 ii = i + nft
437 DO j=1,nv46
438 IF(dt1==zero)THEN
439 vec(1,j) = (valel(1,i) + valvois(1,j,i) )
440 . / (valel(4,i) + valvois(4,j,i) )
441 vec(2,j) = (valel(2,i) + valvois(2,j,i) )
442 . / (valel(4,i) + valvois(4,j,i) )
443 vec(3,j) = (valel(3,i) + valvois(3,j,i) )
444 . / (valel(4,i)
445 ELSE
446
447 . / (valel(4,i)*valel(5,i) + valvois(4,j,i)*valvois(5,j,i
448 vec(2,j) = (valel(2,i)*valel(5,i) + valvois(2,j,i)*valvois(5,j,i))
449 . / (valel(4,i)*valel(5,i) + valvois(4,j,i)*valvois(5,j,i))
450 vec
451 . / (valel(4,i)*valel(5,i) + valvois(4,j,i)*valvois(5,j,i))
452 ENDIF
453 vec(1,j) = vec(1,j) - wface(1,j,i)
454 vec(2,j) = vec(2,j) - wface(2,j,i)
455 vec(3,j) = vec(3,j) - wface(3,j,i)
456 enddo!next j
457 DO j=1,nv46
461 ENDDO
462
463 vx1(i) = vec(1,1)
464 vy1(i) = vec(2,1)
465 vz1(i) = vec(3,1)
466
467 vx2(i) = vec(1,2)
468 vy2(i) = vec(2,2)
469 vz2(i) = vec(3,2)
470
471 vx3(i) = vec(1,3)
472 vy3(i) = vec(2,3)
473 vz3(i) = vec(3,3)
474
475 vx4(i) = vec(1,4)
476 vy4(i) = vec(2,4)
477 vz4(i) = vec(3,4)
478
479 vx5(i) = vec(1,5)
480 vy5(i) = vec(2,5)
481 vz5(i) = vec(3,5)
482
483 vx6(i) = vec(1,6)
484 vy6(i) = vec(2,6)
485 vz6(i) = vec(3,6)
486 enddo
487
488 CASE(5)
489
490 DO i=1,nel
491 ii = i + nft
492 IF(dt1==zero)THEN
493 DO j=1,nv46
494 vec(1,j) = (valel(1,i) + valvois(1,j,i))
495 . / (valel(4,i) + valvois(4,j,i))
496 vec(2,j) = (valel(2,i) + valvois(2,j,i))
497 . / (valel(4,i) + valvois(4,j,i))
498 vec(3,j) = (valel(3,i) + valvois(3,j,i))
499 . / (valel(4,i) + valvois(4,j,i))
500 vec(1,j) = vec(1,j) - wface(1,j,i)
501 vec(2,j) = vec(2,j) - wface(2,j,i)
502 vec(3,j) = vec(3,j) - wface(3,j,i)
503 enddo
504 ELSE
505 surf(1) = one/sqrt(n1x(i)*n1x(i
506 surf(2) = one/sqrt(n2x(i)*n2x(i)
507 surf(3) = one/sqrt(n3x(i)*n3x(i)+n3y
508 surf(4) = one/sqrt(n4x(i)*n4x(i)+n4y(i)*n4y(i)+n4z(i)*n4z(i))
509 surf(5) = one/sqrt(n5x(i)*n5x(i)+n5y(i
510 surf(6) = one/sqrt(n6x(i)*n6x(i)+n6y(i)*n6y(i)+n6z
511 DO j=1,nv46
512 term2 = surf(j) * ( valel(6,i)-valvois
513
514 vec(1,j) = (valel(1,i)*valel(5,i) + valvois
515 . / (valel(4,i)*valel
516 vec(2,j) = (valel(2,i)*valel(5,i) + valvois(2,j,i)*valvois(5,j,i))
517 . / (valel(4,i)*valel(5,i
518 vec(3,j) = (valel(3,i)*valel(5,i) + valvois(3,j,i)*valvois
519 . / (valel(4,i)*valel(5,i)+valvois(4,j,i)*valvois
520 vec(1,j) = vec(1,j) - wface(1,j,i)
521 vec(2,j) = vec(2,j) - wface(2,j,i)
522 vec(3,j) = vec(3,j) - wface(3,j,i)
523 enddo
524 ENDIF
525 DO j=1,nv46
529 ENDDO
530
531 vx1(i) = vec(1,1)
532 vy1(i) = vec(2,1)
533 vz1(i) = vec(3,1)
534
535 vx2(i) = vec(1,2)
536 vy2(i) = vec(2,2)
537 vz2(i) = vec(3,2)
538
539 vx3(i) = vec(1,3)
540 vy3(i) = vec(2,3)
541 vz3(i) = vec(3,3)
542
543 vx4(i) = vec(1,4)
544 vy4(i) = vec(2,4)
545 vz4(i) = vec(3,4)
546
547 vx5(i) = vec(1,5)
548 vy5(i) = vec(2,5)
549 vz5(i) = vec(3,5)
550
551 vx6(i) = vec(1,6)
552 vy6(i) = vec(2,6)
553 vz6(i) = vec(3,6)
554 enddo
555
556 CASE(6)
557
558
559 DO i=1,nel
560 ii = i + nft
561 nc(1,i) = ixs(2,ii)
562 nc(2,i) = ixs(3,ii)
563 nc(3,i) = ixs(4,ii)
564 nc(4,i) = ixs(5,ii)
565 nc(5,i) = ixs(6,ii)
566 nc(6,i) = ixs(7,ii)
567 nc(7,i) = ixs(8,ii)
568 nc(8,i) = ixs(9,ii)
569 z(1) = one_over_8*sum(x(1,nc(1:8,i)))
570 z(2) = one_over_8*sum(x(2,nc(1:
571 z(3) = one_over_8*sum(x(3,nc(1:8,i)))
572 iad2 = ale_connect%ee_connect%iad_connect(ii)
573 lgth = ale_connect%ee_connect%iad_connect(ii + 1) - iad2
574 DO j=1,lgth
575 idv = ale_connect%ee_connect%connected(iad2 + j - 1)
576 IF(idv<=0)THEN
577 vec(1:3,j) = zero
578 cycle
579 ENDIF
580 ix1=ixs(icf(1,j)+1,ii
581 ix2=ixs(icf(2,j)+1,ii)
582 ix3=ixs(icf(3,j)+1,ii)
583 ix4=ixs(icf(4,j)+1,ii)
584 cf(1,i) = fourth*(x(1,ix1)+x(1,ix2)+x(1,ix3)+x(1,ix4))
585 cf(2,i) = fourth*(x(2,ix1)+x(2,ix2)+x(2,ix3)+x(2,ix4))
586 cf(3,i) = fourth*(x(3,ix1)+x(3,ix2)+x(3,ix3)+x(3,ix4))
587 nc(1,i)=ixs(2,idv)
588 nc(2,i)=ixs(3,idv)
589 nc(3,i)=ixs(4,idv)
590 nc(4,i)=ixs(5,idv)
591 nc(5,i)=ixs(6,idv)
592 nc(6,i)=ixs(7,idv)
593 nc(7,i)=ixs(8,idv)
594 nc(8,i)=ixs(9,idv)
595 zadj(1) = one_over_8*sum(x(1,nc(1:8,i)))
596 zadj(2) = one_over_8*sum(x(2,nc(1:8,i)))
597 zadj(3) = one_over_8*sum(x(3,nc
598 zzadj(1) = zadj(1)-z
599 zzadj(2) = zadj(2)-z(2)
600 zzadj(3) = zadj(3)-z(3)
601 zcf(1) = cf(1,i) - z(1)
602 zcf(2) = cf(2,i) - z(2)
603 zcf(3) = cf(3,i) - z(3)
604 ps = zcf(1)*zzadj(1) + zcf(2)*zzadj(2) + zcf(3)*zzadj(3)
605 zcf_ = zcf(1)**2 + zcf(2)**2
606 zzadj_ = zzadj(1)**2 + zzadj(2)**2 + zzadj(3)**2
607 denom1 = sqrt(zcf_)
608 denom2 = sqrt(zzadj_)
609 denom = denom1*denom2
610 cos = ps/denom
611 xsi = sqrt(zcf_) * cos
612 lambda = xsi / denom2
613
614 vec(1,j) = valel(1,i) + lambda*(valvois(1,j,i)/valvois
615 vec(2,j) = valel(2,i) + lambda*(valvois(2,j,i)/valvois(4,j,i)-valel(2,i)/valel(4,i)) - wface(2,j,i)
616 vec(3,j) = valel(3,i) + lambda*(valvois(3,j,i)/valvois(4,j,i)-valel(3,i)/valel(4,i)) - wface(3,j,i)
617 enddo
618 DO j=1,nv46
622 ENDDO
623
624 vx1(i) = vec(1,1)
625 vy1(i) = vec(2,1)
626 vz1(i) = vec(3,1)
627
628 vx2(i) = vec(1,2)
629 vy2(i) = vec(2,2)
630 vz2(i) = vec(3,2)
631
632 vx3(i) = vec(1,3)
633 vy3(i) = vec(2,3)
634 vz3(i) = vec(3,3)
635
636 vx4(i) = vec(1,4)
637 vy4(i) = vec(2,4)
638 vz4(i) = vec(3,4)
639
640 vx5(i) = vec(1,5)
641 vy5(i) = vec(2,5)
642 vz5(i) = vec(3,5)
643
644 vx6(i) = vec(1,6)
645 vy6(i)
646 vz6(i) = vec(3,6)
647 enddo
648
649 END SELECT
650
651
652
653
654
655 DO i=1,nel
656 flux1(i)=half*(vx1(i)*n1x(i)+vy1(i)*n1y(i)+vz1(i
657 flux2(i)=half*(vx2(i)*n2x(i)+vy2(i)*n2y(i)+vz2
658 flux3(i)=half*(vx3(i)*n3x(i)+vy3(i)*n3y(i)+vz3
659 flux4(i)=half*(vx4(i)*n4x(i)+vy4(i)*n4y
660 flux5(i)=half*(vx5(i)*n5x(i)+vy5(i)*n5y
661 flux6(i)=half*(vx6(i)*n6x(i)+vy6(i)*n6y
662 ENDDO
663
664
666 debug_outp = .false.
668 do i=lft,llt
669 ii = nft + i
671 debug_outp = .true.
672 idbf = i
673 idbl = i
674 EXIT
675 endif
676 enddo
678
679 idbf = lft
680 idbl = llt
681 endif
682
683 if(debug_outp)then
684
685 print *, " |----alefvm_aflux3.F-----|"
686 print *, " | THREAD INFORMATION |"
687 print *, " |------------------------|"
688 print *, " NCYCLE =", ncycle
689 do i=idbf,idbl
690 ii = nft + i
691 print *, " brique=", ixs
692 write (*,fmt='(A,6E26.14)') " Flux(1:6) =", flux1(i),flux2(i),flux3(i),flux4(i),flux5
693 write(*,fmt='(A24,1A20)') " ",
694 . "#--------- cell-----------"
695 write (*,fmt=
'(A,1E26.14)')
" V_cell-X =",
alefvm_buffer%FCELL(1,ii)
696 write (*,fmt=
'(A,1E26.14)')
" V_cell-Y =",
alefvm_buffer%FCELL(2,ii)
697 write (*,fmt=
'(A,1E26.14)')
" V_cell-Z =",
alefvm_buffer%FCELL(3,ii)
698 write(*,fmt='(A24,6A26)') " ",
699 . "#--------- adj_1 ---------","#--------- adj_2 ---------",
700 . "#--------- adj_3 ---------","#--------- adj_4 ---------",
701 . "#--------- adj_5 ---------","#--------- adj_6 --------#"
702 write (*,fmt=
'(A,6E26.14)')
" V_faces-X =",
alefvm_buffer%F_FACE(1,1:6,ii)
703 write (*,fmt=
'(A,6E26.14)')
" V_faces-Y =",
alefvm_buffer%F_FACE(2,1:6,ii)
704 write (*,fmt=
'(A,6E26.14)')
" V_faces-Z =",
alefvm_buffer%F_FACE(3,1:6,ii)
705 print *, " "
706 enddo
707
708 endif
709 endif
710
711
712
713
714
715
716
717 IF(nint(pm(19,mat(1)))==51)THEN
718 DO i=1,nel
719 flux(1,i)=flux1(i)
720 flux(2,i)=flux2(i)
721 flux(3,i)=flux3(i)
722 flux(4,i)=flux4(i)
723 flux(5,i)=flux5(i)
724 flux(6,i)=flux6(i)
725 ENDDO
726 RETURN
727 ENDIF
728
729
730
731
732
733 DO j=1,6
734 DO i=1,nel
735 upwl(j,i)=pm(16,mat(i))
736 ENDDO
737 ENDDO
738
739 DO i=1,nel
740 reduc=pm(92,mat(i))
741 iad2 = ale_connect%ee_connect%iad_connect(i + nft)
742
743 ii=ale_connect%ee_connect%connected(iad2 + 1 - 1)
744 IF(ii==0)THEN
745 flux1(i)=flux1(i)*reduc
746 ENDIF
747
748 ii=ale_connect%ee_connect%connected(iad2 + 2 - 1)
749 IF(ii==0)THEN
750 flux2(i)=flux2(i)*reduc
751 ENDIF
752
753 ii=ale_connect%ee_connect%connected(iad2 + 3 - 1)
754 IF(ii==0)THEN
755 flux3(i)=flux3(i)*reduc
756 ENDIF
757
758 ii=ale_connect%ee_connect%connected(iad2 + 4 - 1)
759 IF(ii==0)THEN
760 flux4(i)=flux4(i)*reduc
761 ENDIF
762
763 ii=ale_connect%ee_connect%connected(iad2 + 5 - 1)
764 IF(ii==0)THEN
765 flux5(i)=flux5(i)*reduc
766 ENDIF
767
768 ii=ale_connect%ee_connect%connected(iad2 + 6 - 1)
769 IF(ii==0)THEN
770 flux6(i)=flux6(i)*reduc
771 ENDIF
772 ENDDO
773
774 DO i=1,nel
775 flux(1,i)=flux1(i)-upwl(1,i)*abs(flux1(i))
776 flux(2,i)=flux2(i)-upwl(2,i)*abs(flux2(i))
777 flux(3,i)=flux3(i)-upwl(3,i)*abs(flux3(i))
778 flux(4,i)=flux4(i)-upwl(4,i)*abs(flux4(i))
779 flux(5,i)=flux5(i)-upwl(5,i)*abs(flux5(i))
780 flux(6,i)=flux6(i)-upwl(6,i)*abs(flux6(i))
781
782 flu1(i) =flux1(i)+upwl(1,i)*abs(flux1(i))
783 . +flux2(i)+upwl(2,i)*abs(flux2(i))
784 . +flux3(i)+upwl(3,i)*abs(flux3(i))
785 . +flux4(i)+upwl(4,i)*abs(flux4(i))
786 . +flux5(i)+upwl(5,i)*abs(flux5(i))
787 .
788 ENDDO
789
790
791
792
793
794 RETURN
type(alefvm_buffer_), target alefvm_buffer
type(alefvm_param_), target alefvm_param