57 SUBROUTINE afluxt(IPARG ,ELBUF_TAB ,PM ,IXS ,IXQ ,
59 3 ALPHA ,ALE_CONNECT ,ITASK ,
60 4 ITRIMAT ,FLUX_SAV ,NERCVOIS ,NESDVOIS,
61 5 LERCVOIS,LESDVOIS ,LENCOM ,QMV ,ITAB ,
62 6 ITABM1 ,NV46 ,SEGVAR)
74 USE multimat_param_mod ,
ONLY : m51_n0phas, m51_nvphas
75 use element_mod ,
only : nixs
79#include "implicit_f.inc"
86#include "vect01_c.inc"
93 my_real pm(npropm,nummat), x(3,numnod),
94 . flux(nv46,*), flu2(*),
95 .
alpha(*), flux_sav(nv46,*), qmv(2*nv46,*)
97 INTEGER IPARG(NPARG,NGROUP), IXS(NIXS,NUMELS), IXQ(7,NUMELQ)
98 INTEGER ITASK,ITRIMAT,LENCOM,ADD,NERCVOIS(*),NESDVOIS(*),LERCVOIS(*),LESDVOIS(*), ITAB(NUMNOD),ITABM1(*)
100 TYPE(ELBUF_STRUCT_),
TARGET,
DIMENSION(NGROUP) :: ELBUF_TAB
101 TYPE(t_segvar),
INTENT(IN) :: SEGVAR
106 my_real,
DIMENSION(:),
POINTER :: uvar,volg,volp,pddvol
107 INTEGER NG, I, K, II, NF1, NFIRST, NLAST, NV46, LLT_
108 INTEGER :: IB, IE, NIN, NBF, NBL, K0, K1, IBM, J, IE_M, IDLOC, IPOS, ICELL, NCELL, MCELL, tNB, J1, J2, IBV
110 TYPE(BUF_MAT_) ,
POINTER :: MBUF
116 ALLOCATE(
n4_vois(numels+nsvois,8))
117 ALLOCATE(flux_vois(numels+nsvois,nv46))
119 ALLOCATE(
n4_vois(numelq+nqvois,4))
120 ALLOCATE(flux_vois(numelq+nqvois,nv46))
131 DO ng=itask+1,ngroup,nthread
133 IF (iparg(76, ng) == 1) cycle
135 2 mtn ,llt ,nft ,iad ,ity ,
136 3 npt ,jale ,ismstr ,jeul ,jtur ,
137 4 jthe ,jlag ,jmult ,jhbe ,jivf ,
138 5 nvaux ,jpor ,jcvt ,jclose ,jplasol ,
139 6 irep ,iint ,igtyp ,israt ,isrot ,
140 7 icsen ,isorth ,isorthg ,ifailure,jsms )
141 IF(jale+jeul == 0) cycle
142 IF(iparg(8,ng) == 1) cycle
143 IF(iparg(1,ng) /= 51) cycle
144 volg => elbuf_tab(ng)%GBUF%VOL
145 uvar => elbuf_tab(ng)%BUFLY(1)%MAT(1,1,1)%VAR
147 add = m51_n0phas + (itrimat-1)*m51_nvphas
150 volp => uvar(k+1:k+llt)
153 alpha(ii) = volp(i)/volg(i)
157 DO ii=nft+lft,nft+llt
158 flux(k,ii)=flux_sav(k,ii)
163 DO ii=nft+lft,nft+llt
173 nbf = 1+itask*
nb/nthread
174 nbl = (itask+1)*
nb/nthread
182 DO WHILE (icell <= ncell)
184 IF (icell>ncell .AND. ncell /= 0)icell=9
186 j =
brick_list(nin,ib)%POLY(icell)%WhereIsMain(1)
190 ELSEIF(j <= nv46)
THEN
196 ibv =
brick_list(nin,ib )%Adjacent_Brick(j1,4)
197 ibm =
brick_list(nin,ibv)%Adjacent_Brick(j2,4)
198 ie_m =
brick_list(nin,ibv)%Adjacent_Brick(j2,1)
204 mbuf => elbuf_tab(ng)%BUFLY(1)%MAT(1,1,1)
207 brick_list(nin,ib)%POLY(icell)%FACE(1:6)%Adjacent_UpwFLUX(1)=
brick_list(nin,ib)%POLY(icell)%FACE(1:6)%Adjacent_FLUX(1)
208 brick_list(nin,ib)%POLY(icell)%FACE(1:6)%Adjacent_UpwFLUX(2)=
brick_list(nin,ib)%POLY(icell)%FACE(1:6)%Adjacent_FLUX(2)
209 brick_list(nin,ib)%POLY(icell)%FACE(1:6)%Adjacent_UpwFLUX(3)=
brick_list(nin,ib)%POLY(icell)%FACE(1:6)%Adjacent_FLUX(3)
210 brick_list(nin,ib)%POLY(icell)%FACE(1:6)%Adjacent_UpwFLUX(4)=
brick_list(nin,ib)%POLY(icell)%FACE(1:6)%Adjacent_FLUX(4)
211 brick_list(nin,ib)%POLY(icell)%FACE(1:6)%Adjacent_UpwFLUX(5)=
brick_list(nin,ib)%POLY(icell)%FACE(1:6)%Adjacent_FLUX(5)
214 k0 = ((m51_n0phas + (itrimat-1)*m51_nvphas )+ipos-1)
216 vfrac = mbuf%VAR(k1+idloc)
217 vfrac =
max(zero,
min(one,vfrac))
218 brick_list(nin,ib)%POLY(icell)%VFRACm(itrimat)= vfrac
238 nfirst = 1+itask*(numels+numelq)/nthread
239 nlast = (itask+1)*(numels+numelq)/nthread
241 nfirst = 1+itask*(numelq)/nthread
242 nlast = (itask+1)*(numelq)/nthread
246 flux_vois(nfirst:nlast,i) = -ep20
256 DO ng=itask+1,ngroup,nthread
258 IF (iparg(76, ng) == 1) cycle
260 2 mtn ,llt ,nft ,iad ,ity ,
261 3 npt ,jale ,ismstr ,jeul ,jtur ,
262 4 jthe ,jlag ,jmult ,jhbe ,jivf ,
263 5 nvaux ,jpor ,jcvt ,jclose ,jplasol ,
264 6 irep ,iint ,igtyp ,israt ,isrot ,
265 7 icsen ,isorth ,isorthg ,ifailure,jsms )
268 !------------------------------
269 IF(jale+jeul == 0) cycle
270 IF(iparg(8,ng) == 1) cycle
271 IF(iparg(1,ng) /= 51) cycle
277 volg => elbuf_tab(ng)%GBUF%VOL
281 . itab, nv46 , itrimat,segvar)
284 . itab, nv46 , itrimat, segvar)
289 . itab, nv46 , itrimat,segvar)
292 .
n4_vois,itab ,itrimat,segvar)
299 . nv46, elbuf_tab,itask,
alpha)
309 CALL spmd_e6vois(flux_vois,nercvois,nesdvois,lercvois,lesdvois,lencom)
312 CALL spmd_e4vois(flux_vois,nercvois,nesdvois,lercvois,lesdvois,lencom)
321 DO ng=itask+1,ngroup,nthread
323 IF (iparg(76, ng) == 1) cycle
325 2 mtn ,llt ,nft ,iad ,ity ,
326 3 npt ,jale ,ismstr ,jeul ,jtur ,
327 4 jthe ,jlag ,jmult ,jhbe ,jivf ,
328 5 nvaux ,jpor ,jcvt ,jclose ,jplasol
329 6 irep ,iint ,igtyp ,israt ,isrot ,
330 7 icsen ,isorth ,isorthg ,ifailure,jsms )
334 IF(jale+jeul == 0) cycle
335 IF(iparg(8,ng) == 1) cycle
336 IF(iparg(1,ng) /= 51) cycle
340 uvar => elbuf_tab(ng)%BUFLY(1)%MAT(1,1,1)%VAR
341 add = (m51_n0phas + (itrimat-1)*m51_nvphas+12)*llt
342 pddvol => uvar(add+1:add+llt)
350 . flux_vois,
n4_vois,itabm1 ,nv46)
353 . itrimat,pddvol,qmv(1,nf1),1,
358 . flux_vois,
n4_vois, itabm1,nv46)
360 CALL ale51_upwind2(pm,x,ixq,flux(1,nf1),flu2(nf1),ale_connect,
361 . itrimat,pddvol,qmv(1,nf1),1)
367 . iparg, elbuf_tab, itask )
376 DEALLOCATE(flux_vois)