41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
59 USE elbufdef_mod
60 USE multimat_param_mod , ONLY : m51_n0phas, m51_nvphas
61 use element_mod , only : nixs
62
63
64
65#include "implicit_f.inc"
66
67
68
69#include "mvsiz_p.inc"
70
71
72
73#include "com01_c.inc"
74#include "vect01_c.inc"
75#include "param_c.inc"
76#include "inter22.inc"
77#include "task_c.inc"
78
79
80
81 INTEGER,INTENT(IN) :: ITRIMAT,IFLG
82 INTEGER IXS(NIXS,*), IPARG(NPARG,*),ITASK
84 TYPE(ELBUF_STRUCT_), TARGET, DIMENSION(NGROUP) :: ELBUF_TAB
85
86
87
88 INTEGER :: J,K,ISILENT, MLW, MAT
90 INTEGER :: NBF,NBL, MCELL,ICELLv
91 INTEGER :: NUM, NADJ, IADJ, JV, NG
92
93 INTEGER :: IB,IBv, NIN, ICELL,NCELL,IDLOC
94 INTEGER :: IE,IDV,ADD, IE_M
96
97 my_real,
DIMENSION(:),
POINTER :: uvar,pddvol
99
100 LOGICAL :: debug_outp
101
102
103
104 IF(trimat==0)RETURN
105 IF(int22==0)RETURN
106
107
108
109
110
111
112
113 nin = 1
114 nbf = 1+itask*
nb/nthread
115 nbl = (itask+1)*
nb/nthread
117
118
119
120 debug_outp = .false.
123 do ib=nbf,nbl
127 if(mlw/=51)debug_outp=.false.
128 enddo
130 debug_outp = .true.
131 endif
133 endif
134 if(debug_outp)then
135 print *, " |----ale51_upwind3_int22.F-----|"
136 print *, " | THREAD INFORMATION |"
137 print *, " |------------------------------|"
138 print *, " NCYCLE =", ncycle
139 print *, " ITRIMAT=", itrimat
140 endif
141
142
143
144
145
146 DO ib=nbf,nbl
151 icell = 0
153 IF(mlw/=51)cycle
154 DO WHILE (icell<=ncell)
155 icell = icell +1
156 IF (icell>ncell .AND. ncell/=0)icell=9
157
158
159
160 ie_m =
brick_list(nin,ib)%POLY(icell)%WhereIsMain(3)
161 mat = ixs(1,ie_m)
162 upwl(1:6) = pm(16,mat)
163 reduc = pm(92,mat)
164 ddvol = zero
165 brick_list(nin,ib)%POLY(icell)%Adjacent_FLU1 = zero
166 DO j=1,6
167 nadj =
brick_list(nin,ib)%POLY(icell)%FACE(j)%NAdjCell
168 DO iadj = 1,nadj
172 icellv =
brick_list(nin,ib)%POLY(icell)%FACE(j)%Adjacent_Cell(iadj)
173 cellflux(j,icell,ib) =
brick_list(nin,ib)%POLY(icell)%FACE(j)%Adjacent_UpwFLUX(iadj)
174 IF(idv==0)THEN
175 cellflux(j,icell,ib)=cellflux(j,icell,ib)*reduc
176 ELSEIF(idv>0)THEN
178 isilent = iparg(64,ng)
179 IF(isilent==1)THEN
180 upwl(j)=one
181 cellflux(j,icell,ib)=cellflux(j,icell,ib)*pm(92,ixs(1,idv))
182 ENDIF
183 ENDIF
184 brick_list(nin,ib)%POLY(icell)%FACE(j)%Adjacent_upwFLUX(iadj) = cellflux
185 brick_list(nin,ib)%POLY(icell)%Adjacent_FLU1 =
186 .
brick_list(nin,ib)%POLY(icell)%Adjacent_FLU1 + cellflux(j,icell,ib)+upwl(j)*abs(cellflux(j,icell,ib))
187 IF(iflg==10)THEN
188 ddvol = ddvol + cellflux(j,icell,ib)
189
190
191
192 ENDIF
193 enddo
194 enddo
195
196 brick_list(nin,ib)%POLY(icell)%DDVOL_upw = ddvol
197
198
199
200 if(debug_outp)then
202 print *, " brique =", ixs(11,ie)
203 print *, " icell =", icell
204 write (*,fmt=
'(A,1E26.14)')
" Flu1 =",
brick_list(nin,ib)%POLY(icell)%Adjacent_FLU1
205 DO j=1,6
206 nadj =
brick_list(nin,ib)%POLY(icell)%FACE(j)%NAdjCell
207 DO iadj = 1,nadj
208 print *, " FACE =", j
209 write (*,fmt=
'(A,6E26.14)')
" Flux(IAD:NADJ) =",
brick_list(nin,ib)%POLY(icell
210 ENDDO
211 ENDDO
212 print *, " ------------------------"
213
214 endif
215 endif
216
217
218
219 enddo
220 enddo
221
222
224
225
226
227
228
229
230 nin = 1
231 DO ib=nbf,nbl
238 IF(mlw/=51)cycle
239 ddvol = zero
240 DO k=1,num
242 icellv =
brick_list(nin,ib)%SecndList%ICELLv(k)
243 ddvol = ddvol +
brick_list(nin,ibv)%POLY(icellv)%DDVOL_upw
244 ENDDO
245 ddvol = ddvol +
brick_list(nin,ib)%POLY(mcell)%DDVOL_upw
246
247 IF(itrimat>0)THEN
248 lft = 1
249 llt = iparg(2,ng)
250 uvar => elbuf_tab(ng)%BUFLY(1)%MAT(1,1,1)%VAR
251 add = (m51_n0phas + (itrimat-1)*m51_nvphas+12)*llt
252 pddvol => uvar(add+1:add+llt)
253 pddvol(idloc) = ddvol
254 if(ixs(11,ie)==26354)then
255 print *, "itrimat, ddvoli", itrimat, ddvol
256 endif
257 ELSE
258 brick_list(nin,ib)%POLY(mcell)%DDVOL_upw = ddvol
259 ENDIF
260 enddo
261
262
263 RETURN
type(brick_entity), dimension(:,:), allocatable, target brick_list