37 . PM , IXS , FLUX , FLU1 ,
38 . IPARG , ELBUF_TAB, ITASK ,
70 use element_mod ,
only : nixs
74#include "implicit_f.inc"
90 INTEGER :: IXS(NIXS,*), IPARG(NPARG,*),ISILENT, NV46,IPM(NPROPMI,*)
91 my_real :: PM(NPROPM,*),FLUX(6,*), FLU1(*),X(3,*)
92 TYPE (ELBUF_STRUCT_),
DIMENSION(NGROUP),
TARGET :: ELBUF_TAB
96 INTEGER MAT, MLW, NC(8), I, IE,J, K, Kv,L,ITASK, IDm
97INTEGER IDvm, IBvm, NGvm, IEvm, IEV, Jm, IMAT, IALEFVM_FLG
98 INTEGER IB,IBv,NIN, NBCUT,ICELL,NCELL,NGm
99 my_real cellflux(6,9,
nb,5),reduc,upwl(6)
100 my_real :: vf(3),
norm(3,6), lnorm(6),term2
101 INTEGER :: NBF,NBL, MCELL,iNOD,ICELLv,, numnodV
102 TYPE(g_bufel_) ,
POINTER :: GBUF
103 my_real :: face , z(3), zadj(3), zzadj_, cf(3), zcf(3),zzadj(3)
104 my_real :: ps, lambda
105 INTEGER :: NUM, NADJ, IADJ, JV, NG, IE_M, IEm, IBm
106 my_real :: facev, ddvol, valel(6), valvois(6,6,5), sr1, sr2, srf
122 nbf = 1+itask*
nb/nthread
123 nbl = (itask+1)*
nb/nthread
142 if(debug_outp .AND. itask==0)
then
143 print *,
" |---------eflux3_int22_fvm.F---------|"
144 print *,
" | THREAD INFORMATION |"
145 print *,
" |------------------------------------|"
146 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)
186 DO WHILE (icell<=ncell)
188 IF (icell>ncell .AND. ncell/=0)icell=9
190 jm =
brick_list(nin,ib)%POLY(icell)%WhereIsMain(1)
191 iem =
brick_list(nin,ib)%POLY(icell)%WhereIsMain(3)
192 ibm =
brick_list(nin,ib)%POLY(icell)%WhereIsMain(4)
195 gbuf =>elbuf_tab(ngm)%GBUF
204 nadj =
brick_list(nin,ib)%POLY(icell)%FACE(j)%NAdjCell
208 cellflux(j,icell,ib,1:5) = zero
210 icellv =
brick_list(nin,ib)%POLY(icell)%FACE(j)%Adjacent_Cell(iadj)
212 valvois(j,1:3,iadj) = -valel(1:3)
213 valvois(j,4,iadj) = valel(4)
217 ievm =
brick_list(nin,ibv)%POLY(icellv)%WhereIsMain(3)
218 ibvm =
brick_list(nin,ibv)%POLY(icellv)%WhereIsMain(4)
237 sr2 = sqrt(valvois(j,4,iadj))
242 ialefvm_flg = ipm(251,imat)
249 vf(1) = half * (valel(1)/valel(4)+valvois(j,1,iadj)/valvois(j,4,iadj))
250 vf(2) = half * (valel(2)/valel(4)+valvois(j,2,iadj)/valvois(j,4,iadj))
254 vf(1) = (valel(1)+valvois(j,1,iadj))/(valel(4)+valvois(j,4,iadj))
255 vf(2) = (valel(2)+valvois(j,2,iadj))/(valel(4)+valvois(j,4,iadj))
256 vf(3) = (valel(3)+valvois(j,3,iadj))/(valel(4)+valvois(j,4,iadj))
259 vf(1) = (valel(1)/sr1+valvois(j,1,iadj)/sr2)/(sr1+sr2)
260 vf(2) = (valel(2)/sr1+valvois(j,2,iadj)/sr2)/(sr1+sr2)
261 vf(3) = (valel(3)/sr1+valvois(j,3,iadj)/sr2)/(sr1+sr2)
264 vf(1) = (valel(1) +valvois(j,1,iadj) )
265 . /(valel(4) +valvois(j,4,iadj) )
266 vf(2) = (valel(2) +valvois(j,2,iadj) )
267 . /(valel(4) +valvois(j,4,iadj) )
269 . /(valel(4) +valvois(j,4,iadj) )
273 vf(1) = (valel(1)*valel(5)+valvois(j,1,iadj)*valvois(j,5,iadj))
274 . /(valel(4)*valel(5)+valvois(j,4,iadj)*valvois(j,5,iadj))
275 vf(2) = (valel(2)*valel(5)+valvois(j,2,iadj)*valvois(j,5,iadj))
276 . /(valel(4)*valel(5)+valvois(j,4,iadj)*valvois(j,5,iadj))
277 vf(3) = (valel(3)*valel(5)+valvois(j,3,iadj)*valvois(j,5,iadj))
278 . /(valel(4)*valel(5)+valvois(j,4,iadj)*valvois(j,5,iadj))
285 vf(1) = (valel(1) +valvois(j,1,iadj) )
286 . /(valel(4) +valvois(j,4,iadj) )
287 vf(2) = (valel(2) +valvois(j,2,iadj) )
288 . /(valel(4) +valvois(j,4,iadj) )
289 vf(3) = (valel(3) +valvois(j,3,iadj) )
290 . /(valel(4) +valvois(j,4,iadj) )
292 term2 = ( valel(6)-valvois(j,6,iadj) )/ (valel(4)*valel(5)+valvois(j,4,iadj)*valvois(j,5,iadj
293 vf(1) = (valel(1)*valel(5)+valvois(j,1,iadj
294 . /(valel(4)*valel(5)+valvois(j,4,iadj)*valvois(j,5,iadj)) + term2 *
norm(1,j)
295 vf(2) = (valel(2)*valel(5)+valvois(j,2
296 . /(valel(4)*valel(5)+valvois(j,4,iadj)*valvois(j,5,iadj)) + term2 *
norm(2,j)
297 vf(3) = (valel(3)*valel(5)+valvois(j,3,iadj)*valvois(j,5,iadj))
298 . /(valel(4)*valel(5)+valvois(j,4,iadj)*valvois(j,5,iadj)) + term2 *
norm(3,j)
303 zadj(1:3) =
brick_list(nin,ibvm)%ScellCenter(1:3)
313 zadj(1) = one_over_8*sum(x(1,nc(1:8)))
314 zadj(2) = one_over_8*sum(x(2,nc(1:8)))
315 zadj(3) = one_over_8*sum(x(3,nc(1:8)))
318 cf(1:3) =
brick_list(nin,ib)%POLY(icell)%FACE(j)%Center(1:3)
320 face =
brick_list(nin,ib)%POLY(icell)%FACE(j)%Surf
321 facev =
brick_list(nin,ibv)%POLY(icellv)%FACE(jv)%Surf
322 IF(facev<face) cf(1:3) =
brick_list(nin,ibv)%POLY(icellv)%FACE(jv)%Center(1:3)
324 zzadj(1) = zadj(1)-z(1)
325 zzadj(2) = zadj(2)-z(2)
326 zzadj(3) = zadj(3)-z(3)
327 zcf(1) = cf(1) - z(1)
328 zcf(2) = cf(2) - z(2)
329 zcf(3) = cf(3) - z(3)
330 ps = zcf(1)*zzadj(1) + zcf(2)*zzadj(2) + zcf(3)*zzadj(3)
331 zzadj_ = zzadj(1)**2 + zzadj(2)**2 + zzadj(3)**2
332 lambda = ps /
max(em20,zzadj_)
333 IF(lambda<zero .OR. lambda >one)
then
334 print *,
"labmda=", lambda
337 lambda =
min(
max(zero,lambda) , one)
338 lambda = sin(half*3.14159265358979d00*lambda)
339 lambda = lambda * lambda
342 sr2 = valvois(j,4,iadj)
343 srf = sr1 + lambda*(sr2-sr1)
345 vf(1) = valel(1) + lambda*(valvois(j,1,iadj)-valel(1))
346 vf(2) = valel(2) + lambda*(valvois(j,2,iadj)-valel(2))
347 vf(3) = valel(3) + lambda*(valvois(j,3,iadj)-valel(3))
359 cellflux(j,icell,ib,iadj) = (vf(1)*
norm(1,j) + vf(2)*
norm(2,j) + vf(3)*
norm(3,j))
376 brick_list(nin,ib)%POLY(icell)%FACE(j)%Vel(1) = vf(1)
377 brick_list(nin,ib)%POLY(icell)%FACE(j)%Vel(2) = vf
378 brick_list(nin,ib)%POLY(icell)%FACE(j)%Vel(3) = vf(3)
385 numnod =
brick_list(nin,ib)%POLY(icell)%NumNOD
388 inod =
brick_list(nin,ib)%POLY(icell)%ListNodID(l)
389 IF(
int22_buf%IsNodeOnFace(inod,j))k = k +1
391 face =
brick_list(nin,ib)%POLY(icell)%FACE(j)%Surf
398 facev =
brick_list(nin,ibv)%POLY(icellv)%FACE(jv)%Surf
399 numnod =
brick_list(nin,ibv)%POLY(icellv)%NumNOD
402 inod =
brick_list(nin,ibv)%POLY(icellv)%ListNodID(l)
403 IF(
int22_buf%IsNodeOnFace(inod,jv))kv= kv +1
406 face =
min(face,facev)
407 If(k==0 .OR. kv==0) face = zero
408 IF(ibv/=0 .AND. ibm==ibvm) face=zero
409 cellflux(j,icell,ib,iadj) = face * cellflux(j,icell,ib,iadj)
411 brick_list(nin,ib)%POLY(icell)%FACE(j)%Adjacent_FLUX(iadj) = cellflux(j,icell,ib,iadj)
424 print *,
" |------e22flux3_int22_fvm.F------|"
432 DO WHILE (icell<=ncell)
434 IF (icell>ncell .AND. ncell/=0)icell=9
442 nadj =
brick_list(nin,ib)%POLY(icell)%FACE(i)%NAdjCell
463 print *,
" ------------------------"
485 DO WHILE (icell<=ncell)
487 IF (icell>ncell .AND. ncell/=0)icell=9
489 brick_list(nin,ib)%POLY(icell)%FACE(j)%Adjacent_upwFLUX (1) = zero
490 brick_list(nin,ib)%POLY(icell)%FACE(j)%Adjacent_upwFLUX (2) = zero
491 brick_list(nin,ib)%POLY(icell)%FACE(j)%Adjacent_upwFLUX (3) = zero
492 brick_list(nin,ib)%POLY(icell)%FACE(j)%Adjacent_upwFLUX (4) = zero
493 brick_list(nin,ib)%POLY(icell)%FACE(j)%Adjacent_upwFLUX (5) = zero
496 brick_list(nin,ib)%POLY(icell)%Adjacent_FLU1 = zero
500 ie_m =
brick_list(nin,ib)%POLY(icell)%WhereIsMain(3)
502 upwl(1:6) = pm(16,mat)
506 nadj =
brick_list(nin,ib)%POLY(icell)%FACE(j)%NAdjCell
513 icellv =
brick_list(nin,ib)%POLY(icell)%FACE(j)%Adjacent_Cell(iadj)
515 cellflux(j,icell,ib,iadj)=cellflux(j,icell,ib,iadj)*reduc
518 isilent = iparg(64,ng)
521 cellflux(j,icell,ib,iadj)=cellflux(j,icell,ib,iadj)*pm(92,ixs(1,idv))
524 brick_list(nin,ib)%POLY(icell)%FACE(j)%Adjacent_upwFLUX(iadj) =
525 . cellflux(j,icell,ib,iadj)-upwl(j)*abs(cellflux(j,icell,ib,iadj))
526 brick_list(nin,ib)%POLY(icell)%Adjacent_FLU1 =
527 .
brick_list(nin,ib)%POLY(icell)%Adjacent_FLU1 + cellflux(j,icell,ib,iadj)+upwl(j)*abs(cellflux
529 ddvol = ddvol + cellflux(j,icell,ib,iadj)
557 icellv =
brick_list(nin,ib)%SecndList%ICELLv(k)
558 ddvol = ddvol +
brick_list(nin,ibv)%POLY(icellv)%DDVOL
560 ddvol = ddvol +
brick_list(nin,ib)%POLY(mcell)%DDVOL