36 . IPARG , ELBUF_TAB, ITASK ,
71#include "implicit_f.inc"
88 INTEGER :: IXS(NIXS,*), IPARG(NPARG,*),ISILENT, NV46,IPM(NPROPMI,*)
89 my_real :: PM(NPROPM,*),FLUX(6,*), FLU1(*),X(3,*)
90 TYPE (),
DIMENSION(NGROUP),
TARGET :: ELBUF_TAB
91 my_real,
INTENT(IN) :: w(3,numnod)
95 INTEGER MAT, , NC(8), I, IE,J, K, Kv,L,, IDm, IDV, II
96 INTEGER IDvm, IBvm, NGvm, IEvm, IEV, Jm, IMAT, IALEFVM_FLG
97 INTEGER IB,IBv, NIN, NBCUT, ICELL,NCELL,NGm
98 my_real :: cellflux(6,9,
nb,5),reduc,upwl(6)
99 my_real :: vf(3),
norm(3,6), lnorm(6),term2
100 INTEGER :: NBF,NBL, MCELL,iNOD,ICELLv, numnod_, numnod_V
101 TYPE(g_bufel_) ,
POINTER :: GBUF
102 my_real :: face , z(3), zadj(3), zzadj_, cf(3), zcf(3),zzadj(3)
103 my_real :: ps, lambda
106 my_real :: wface(3), wfacev(3), wfaceb(3,6)
108 INTEGER :: NC1,NC2,NC3,,NC5,NC6,NC7,
119 !=====================================
122 nbl = (itask+1)*
nb/nthread
142 print *,
" |---------eflux3_int22_fvm.F---------|"
143 print *,
" | THREAD INFORMATION |"
144 print *,
" |------------------------------------|"
145 print *,
" NCYCLE =", ncycle
179 lnorm(j) = sqrt(
norm(1,j)**2 +
norm(2,j)**2 +
norm(3,j)**2 )
180 norm(1:3,j) =
norm(1:3,j) / lnorm(j)
197 wfaceb(1,1) = fourth*(w(1,nc1)+w(1,nc2)+w(1,nc3)+w(1,nc4))
198 wfaceb(2,1) = fourth*(w(2,nc1)+w(2,nc2)+w(2,nc3)+w(2,nc4))
199 wfaceb(3,1) = fourth*(w(3,nc1)+w(3,nc2)+w(3,nc3)+w(3,nc4))
201 wfaceb(1,2) = fourth*(w(1,nc3)+w(1,nc4)+w(1,nc7)+w(1,nc8
202 wfaceb(2,2) = fourth*(w(2,nc3)+w(2,nc4)+w(2,nc7)+w(2,nc8))
203 wfaceb(3,2) = fourth*(w(3,nc3)+w(3,nc4)+w(3,nc7)+w(3,nc8))
206 wfaceb(1,3) = fourth*(w(1,nc5)+w(1,nc6)+w(1,nc7)+w(1,nc8))
207 wfaceb(2,3) = fourth*(w(2,nc5)+w(2,nc6)+w(2,nc7)+w(2,nc8))
208 wfaceb(3,3) = fourth*(w(3,nc5)+w(3,nc6)+w(3,nc7)+w(3,nc8))
210 wfaceb(1,4) = fourth*(w(1,nc1)+w(1,nc2)+w(1,nc5)+w(1,nc6))
211 wfaceb(2,4) = fourth*(w(2,nc1)+w(2,nc2)+w(2,nc5)+w(2,nc6))
212 wfaceb(3,4) = fourth*(w(3,nc1)+w(3,nc2)+w(3,nc5)+w(3,nc6))
214 wfaceb(1,5) = fourth*(w(1,nc2)+w(1,nc3)+w(1,nc6)+w(1,nc7))
215 wfaceb(2,5) = fourth*(w(2,nc2)+w(2,nc3)+w(2,nc6)+w(2,nc7))
216 wfaceb(3,5) = fourth*(w(3,nc2)+w(3,nc3)+w(3,nc6)+w(3,nc7))
218 wfaceb(1,6) = fourth*(w(1,nc1)+w(1,nc4)+w(1,nc5)+w(1,nc8))
219 wfaceb(2,6) = fourth*(w(2,nc1)+w(2,nc4)+w(2,nc5)+w(2,nc8))
220 wfaceb(3,6) = fourth*(w(3,nc1)+w(3,nc4)+w(3,nc5)+w(3,nc8))
223 brick_list(nin,ib)%POLY(1)%FACE(1)%W(1:3) = wfaceb(1:3,1)
224 brick_list(nin,ib)%POLY(1)%FACE(2)%W(1:3) = wfaceb(1:3,2)
225 brick_list(nin,ib)%POLY(1)%FACE(3)%W(1:3) = wfaceb(1:3,3)
226 brick_list(nin,ib)%POLY(1)%FACE(4)%W(1:3) = wfaceb(1:3,4)
227 brick_list(nin,ib)%POLY(1)%FACE(5)%W(1:3) = wfaceb(1:3,5)
228 brick_list(nin,ib)%POLY(1)%FACE(6)%W(1:3) = wfaceb(1:3,6)
234 DO WHILE (icell<=ncell)
236 IF (icell>ncell .AND. ncell/=0)icell=9
238 jm =
brick_list(nin,ib)%POLY(icell)%WhereIsMain(1)
240 ibm =
brick_list(nin,ib)%POLY(icell)%WhereIsMain(4)
243 gbuf =>elbuf_tab(ngm)%GBUF
252 nadj =
brick_list(nin,ib)%POLY(icell)%FACE(j)%NAdjCell
256 cellflux(j,icell,ib,1:5) = zero
258 icellv =
brick_list(nin,ib)%POLY(icell)%FACE(j)%Adjacent_Cell(iadj)
260 valvois(j,1:3,iadj) = -valel(1:3)
261 valvois(j,4,iadj) = valel(4)
266 ibvm =
brick_list(nin,ibv)%POLY(icellv)%WhereIsMain(4)
285 sr2 = sqrt(valvois(j,4,iadj))
290 ialefvm_flg = ipm(251,imat)
297 vf(1) = half * (valel(1)/valel(4)+valvois(j,1,iadj)/valvois
298 vf(2) = half * (valel(2)/valel(4)+valvois(j,2,iadj)/valvois(j,4,iadj))
305 vf(1) = (valel(1)+valvois(j,1,iadj))/(valel(4)+valvois(j,4,iadj))
306 vf(2) = (valel(2)+valvois(j,2,iadj))/(valel(4)+valvois(j,4,iadj))
307 vf(3) = (valel(3)+valvois(j,3,iadj))/(valel
314 vf(2) = (valel(2)/sr1+valvois(j,2,iadj)/sr2)/(sr1+sr2)
315 vf(3) = (valel(3)/sr1+valvois(j,3,iadj)/sr2)/(sr1+sr2)
321 vf(1) = (valel(1) +valvois(j
322 . /(valel(4) +valvois(j
323 vf(2) = (valel(2) +valvois(j,2,iadj) )
324 . /(valel(4) +valvois(j,4,iadj) )
325 vf(3) = (valel(3) +valvois(j,3,iadj) )
326 . /(valel(4) +valvois(j,4,iadj) )
330 vf(1) = (valel(1)*valel(5)+valvois(j,1,iadj)*valvois(j,5,iadj))
331 . /(valel(4)*valel(5)+valvois(j,4,iadj)*valvois(j,5,iadj))
332 vf(2) = (valel(2)*valel(5)+valvois(j,2,iadj)*valvois(j,5,iadj))
333 . /(valel(4)*valel(5)+valvois(j,4,iadj)*valvois(j,5,iadj))
334 vf(3) = (valel(3)*valel(5)+valvois(j,3,iadj
335 . /(valel(4)*valel(5)+valvois(j,4,iadj)*valvois(j,5,iadj))
345 vf(1) = (valel(1) +valvois(j,1,iadj) )
346 . /(valel(4) +valvois(j,4,iadj) )
347 vf(2) = (valel(2) +valvois(j,2,iadj) )
348 . /(valel(4) +valvois(j,4,iadj) )
349 vf(3) = (valel(3) +valvois(j,3,iadj) )
350 . /(valel(4) +valvois(j,4,iadj) )
352 term2 = ( valel(6)-valvois(j,6,iadj) )/ (valel(4)*valel(5)+valvois(j,4,iadj)*valvois(j,5,iadj))
353 vf(1) = (valel(1)*valel(5)+valvois(j,1,iadj)*valvois(j,5,iadj))
354 . /(valel(4)*valel(5)+valvois(j,4,iadj)*valvois(j,5,iadj)) + term2 *
norm(1,j)
355 vf(2) = (valel(2)*valel(5)+valvois(j,2,iadj)*valvois(j,5,iadj))
356 . /(valel(4)*valel(5)+valvois(j,4,iadj)*valvois(j,5,iadj)) + term2 *
norm(2,j)
357 vf(3) = (valel(3)*valel(5)+valvois(j,3,iadj)*valvois(j,5,iadj))
358 . /(valel(4)*valel(5)+valvois(j,4,iadj)*valvois(j,5,iadj)) + term2 *
norm(3,j)
367 zadj(1:3) =
brick_list(nin,ibvm)%ScellCenter(1:3)
377 zadj(1) = one_over_8*sum(x(1,nc(1:8)))
378 zadj(2) = one_over_8*sum(x(2,nc(1:8)))
379 zadj(3) = one_over_8*sum(x(3,nc(1:8)))
382 cf(1:3) =
brick_list(nin,ib)%POLY(icell)%FACE(j)%Center(1:3)
384 face =
brick_list(nin,ib)%POLY(icell)%FACE(j)%Surf
385 facev =
brick_list(nin,ibv)%POLY(icellv)%FACE(jv)%Surf
386 IF(facev<face) cf(1:3) =
brick_list(nin,ibv)%POLY(icellv)%FACE(jv)%Center(1:3)
388 zzadj(1) = zadj(1)-z(1)
389 zzadj(2) = zadj(2)-z(2)
390 zzadj(3) = zadj(3)-z(3)
391 zcf(1) = cf(1) - z(1)
392 zcf(2) = cf(2) - z(2)
393 zcf(3) = cf(3) - z(3)
395 zzadj_ = zzadj(1)**2 + zzadj(2)**2 + zzadj(3)**2
396 lambda = ps /
max(em20,zzadj_)
401 lambda =
min(
max(zero,lambda) , one)
402 lambda = sin(half*3.14159265358979d00*lambda)
403 lambda = lambda * lambda
406 sr2 = valvois(j,4,iadj)
407 srf = sr1 + lambda*(sr2-sr1)
409 vf(1) = valel(1) + lambda*(valvois(j,1,iadj)-valel(1))
410 vf(2) = valel(2) + lambda*(valvois(j,2,iadj
411 vf(3) = valel(3) + lambda*(valvois(j,3,iadj)-valel(3))
425 cellflux(j,icell,ib,iadj) = (vf(1)*
norm(1,j
427 wface(1) =
brick_list(nin,ib)%POLY(icell)%FACE(j)%W(1)
429 wface(3) =
brick_list(nin,ib)%POLY(icell)%FACE(j)%W(3)
433 wfacev(2) =
brick_list(nin,ib)%POLY(icellv)%FACE(jv)%W(2)
441 wface(1) = half*(wface(1)+wfacev(1))
442 wface(2) = half*(wface(2)+wfacev(2))
443 wface(3) = half*(wface(3)+wfacev(3))
446 brick_list(nin,ib)%POLY(icell)%FACE(j)%Vel(1) = vf(1)-wface(1)
448 brick_list(nin,ib)%POLY(icell)%FACE(j)%Vel(3) = vf(3)-wface(3)
455 numnod_ =
brick_list(nin,ib)%POLY(icell)%NumNOD
458 inod =
brick_list(nin,ib)%POLY(icell)%ListNodID(l)
459 IF(
int22_buf%IsNodeOnFace(inod,j))k = k +1
461 face =
brick_list(nin,ib)%POLY(icell)%FACE(j)%Surf
468 facev =
brick_list(nin,ibv)%POLY(icellv)%FACE(jv)%Surf
469 numnod_ =
brick_list(nin,ibv)%POLY(icellv)%NumNOD
472 inod =
brick_list(nin,ibv)%POLY(icellv)%ListNodID(l)
473 IF(
int22_buf%IsNodeOnFace(inod,jv))kv= kv +1
476 face =
min(face,facev)
477 If(k==0 .OR. kv==0) face = zero
478 IF(ibv/=0 .AND. ibm==ibvm) face=zero
479 cellflux(j,icell,ib,iadj) = face * cellflux(j,icell,ib,iadj)
480 brick_list(nin,ib)%POLY(icell)%FACE(j)%Adjacent_FLUX(iadj) = cellflux(j,icell,ib,iadj)
491 print *,
" |------e22flux3_int22_fvm.F------|"
497 DO WHILE (icell<=ncell)
499 IF (icell>ncell .AND. ncell/=0)icell=9
501 print *,
" brique =", ixs(11,ie)
502 print *,
" NCYCLE =", ncycle
503 print *,
" icell =", icell
504 print *,
" mcell =", mcell
505 print *,
" nbcut =", nbcut
507 nadj =
brick_list(nin,ib)%POLY(icell)%FACE(i)%NAdjCell
508 write (*,fmt=
'(A,I10,A,5E26.14)')
" phi(1:5,",i,
")=", cellflux(i,icell,ib,1:nadj)
512 print *,
" ------------------------"
533 DO WHILE (icell<=ncell)
535 IF (icell>ncell .AND. ncell/=0)icell=9
537 brick_list(nin,ib)%POLY(icell)%FACE(j)%Adjacent_upwFLUX (1) = zero
538 brick_list(nin,ib)%POLY(icell)%FACE(j)%Adjacent_upwFLUX (2) = zero
539 brick_list(nin,ib)%POLY(icell)%FACE(j)%Adjacent_upwFLUX (3) = zero
540 brick_list(nin,ib)%POLY(icell)%FACE(j)%Adjacent_upwFLUX (4) = zero
541 brick_list(nin,ib)%POLY(icell)%FACE(j)%Adjacent_upwFLUX (5) = zero
544 brick_list(nin,ib)%POLY(icell)%Adjacent_FLU1 = zero
548 ie_m =
brick_list(nin,ib)%POLY(icell)%WhereIsMain(3)
550 upwl(1:6) = pm(16,mat)
554 nadj =
brick_list(nin,ib)%POLY(icell)%FACE(j)%NAdjCell
561 icellv =
brick_list(nin,ib)%POLY(icell)%FACE(j)%Adjacent_Cell(iadj)
563 cellflux(j,icell,ib,iadj)=cellflux(j,icell,ib,iadj)*reduc
566 isilent = iparg(64,ng)
569 cellflux(j,icell,ib,iadj)=cellflux(j,icell
572 brick_list(nin,ib)%POLY(icell)%FACE(j)%Adjacent_upwFLUX
573 . cellflux(j,icell,ib,iadj)-upwl(j)*abs(cellflux
575 .
brick_list(nin,ib)%POLY(icell)%Adjacent_FLU1 + cellflux(j,icell,ib,iadj)+upwl(j)*abs(cellflux(j,icell,ib,iadj
577 ddvol = ddvol + cellflux(j,icell,ib,iadj)
605 icellv =
brick_list(nin,ib)%SecndList%ICELLv(k)
608 ddvol = ddvol +
brick_list(nin,ib)%POLY(mcell)%DDVOL