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