41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
64 USE elbufdef_mod
67 USE multimat_param_mod , ONLY : m51_n0phas, m51_nvphas
68 use element_mod , only : nixs
69
70
71
72#include "implicit_f.inc"
73#include "mvsiz_p.inc"
74
75
76
77 INTEGER IFLG,ITASK,NVAR, IXS(NIXS,*),IPARG(NPARG,*)
79 TYPE (ELBUF_STRUCT_), DIMENSION(NGROUP), TARGET :: ELBUF_TAB
80
81
82
83#include "com01_c.inc"
84#include "com08_c.inc"
85#include "task_c.inc"
86#include "inter22.inc"
87#include "param_c.inc"
88#include "comlock.inc"
89
90
91
92 INTEGER IE, IV,J,ITRIMAT,NIN,NBF,NBL,IB,IADJ,NG,IDLOC,IBV,JV,ICELL,ICELLv,NCELL,NUM, MCELL,MLW, NADJ, LLT_
94 TYPE(L_BUFEL_) , POINTER :: LBUF
95 TYPE(BUF_MAT_) , POINTER :: MBUF
96 my_real,
DIMENSION(:),
POINTER :: var, prho , peint
97 INTEGER :: ADD, ADD0 ,K
98 INTEGER,DIMENSION(:,:), POINTER :: pAdjBRICK
100 integer, target :: inothing(2,2)
101 LOGICAL :: debug_outp
102
103
104
105
106
107 valvois = 0
108 nin = 1
109 nbf = 1+itask*
nb/nthread
110 nbl = (itask+1)*
nb/nthread
112 nothing = 0
113 inothing = 0
114 var => nothing
115 prho => nothing
116 peint => nothing
117 padjbrick => inothing
118
119
120
121
122
123
124
125
126
127
128 debug_outp = .false.
130 debug_outp = .false.
132 do ib=nbf,nbl
135 debug_outp=.true.
136 exit
137 endif
138 enddo
140 debug_outp = .true.
141 endif
142 if(((itrimat>0) .and. (
ibug22_itrimat/=trimat)))debug_outp=.false.
144 endif
145
146
147
148
149
150
151 DO ib=nbf,nbl
153 vl = zero
155 icell = 0
156 dphi = zero
158 IF(itrimat/=0 .AND. mlw/=51)cycle
159 DO WHILE (icell<=ncell)
160 icell = icell +1
161 IF (icell>ncell .AND. ncell/=0)icell=9
163 padjbrick =>
brick_list(nin,ib)%Adjacent_Brick(1:6,1:5)
164 DO j=1,6
165 nadj =
brick_list(nin,ib)%POLY(icell)%FACE(j)%NAdjCell
166 DO iadj=1,nadj
167 iv = padjbrick(j,1)
168 ibv = padjbrick(j,4)
169 jv = padjbrick(j,5)
170 icellv =
brick_list(nin,ib)%POLY(icell)%FACE(j)%Adjacent_Cell(iadj)
171 IF(iv>0)THEN
172 IF(ibv==0)THEN
173 valvois = phi(iv)
174 ELSE
175
176 valvois =
brick_list(nin,ibv)%POLY(icellv)%PHI
177 ENDIF
178 ELSEIF(iv==0)THEN
179 valvois = phi(ie)
180
181
182 ENDIF
183
184 dphi = dphi + (valvois *
brick_list(nin,ib)%POLY(icell)%FACE(j)%Adjacent_upwFLUX(iadj))
185 enddo
186 enddo
188 dphi = dphi + valel*
brick_list(nin,ib)%POLY(icell)%Adjacent_FLU1
189 dphi = -half * dt1 * dphi
191 dphi = zero
192 enddo
193 ENDDO
194
195
197
198
199
200
201
202
203 IF(int22>0)THEN
204 nin = 1
205 DO ib=nbf,nbl
208 dphi = zero
210 IF(itrimat/=0 .AND. mlw/=51)cycle
211 DO k=1,num
213 icellv =
brick_list(nin,ib)%SecndList%ICELLv(k)
214 dphi = dphi +
brick_list(nin,ibv)%POLY(icellv)%dPHI
215 ENDDO
216 dphi = dphi +
brick_list(nin,ib)%POLY(mcell)%dPHI
218 enddo
219 ENDIF
220
221
222
223
224 DO ib=nbf,nbl
231 lbuf => elbuf_tab(ng)%BUFLY(1)%LBUF(1,1,1)
232 mbuf => elbuf_tab(ng)%BUFLY(1)%MAT(1,1,1)
233 llt_ = iparg(2,ng)
235 IF(itrimat/=0 .AND. mlw/=51)cycle
236
237
238
239
241 IF(itrimat==0 .OR. mlw/=51)THEN
242 prho => lbuf%RHO(1:llt_)
243 ELSE
244
245 add0 = m51_n0phas + (itrimat-1)*m51_nvphas
246 add = add0 + 9
247 k = llt_*(add-1)
248 prho => mbuf%VAR(k+1:k+llt_)
249 END IF
250 var => prho
251
252
253
254 ELSEIF (
nvar == 2)
THEN
255 IF(itrimat==0 .OR. mlw/=51)THEN
256 peint=> lbuf%EINT(1:llt_)
257 ELSE
258
259 add0 = m51_n0phas + (itrimat-1)*m51_nvphas
260 add = add0 + 8
261 k = llt_*(add-1)
262 peint => mbuf%VAR(k+1:k+llt_)
263 END IF
264 var => peint
265
266
267
268 ELSEIF (
nvar == 3)
THEN
269 var => elbuf_tab(ng)%BUFLY(1)%LBUF(1,1,1)%RK(1:llt_)
270
271
272
273 ELSEIF (
nvar == 4)
THEN
274 var => elbuf_tab(ng)%BUFLY(1)%LBUF(1,1,1)%RE(1:llt_)
275
276
277
278 ELSEIF (
nvar == 5)
THEN
279 var => elbuf_tab(ng)%BUFLY(1)%MAT(1,1,1)%VAR(1:llt_)
280
281
282
283 ELSEIF (
nvar == 6)
THEN
285 var => elbuf_tab(ng)%GBUF%MOM( 1 : llt_ )
286 ENDIF
287
288
289
290 ELSEIF (
nvar == 7)
THEN
292 var => elbuf_tab(ng)%GBUF%MOM( llt_*1+1 : llt_*1+llt_ )
293 ENDIF
294
295
296
297 ELSEIF (
nvar == 8)
THEN
299 var => elbuf_tab(ng)%GBUF%MOM( llt_*2+1 : llt_*2+llt_ )
300 ENDIF
301
302
303
304 ELSEIF (
nvar == 9)
THEN
305
306 ENDIF
307
308
309
310 IF(mlw/=51.AND.itrimat>0)THEN
311 cycle
312 ELSE
313 var(idloc) = var(idloc) + dphi
314
315
316 ENDIF
317
318 enddo
319
320
321
322
323
324
327 if(itask==0)then
328 print *, " |--------a22conv3.F--------|"
329 print *, " | THREAD INFORMATION |"
330 print *, " |--------------------------|"
331 print *, " NCYCLE =", ncycle
332 print *, " ITRIMAT =", itrimat
340 lbuf => elbuf_tab(ng)%BUFLY(1)%LBUF(1,1,1)
341 mbuf => elbuf_tab(ng)%BUFLY(1)%MAT(1,1,1)
342 llt_ = iparg(2,ng)
343 if(itrimat>0 .and. mlw/=51)cycle
345 IF(itrimat==0)THEN
346 prho => lbuf%RHO(1:llt_)
347 ELSE
348
349 add0 = m51_n0phas + (itrimat-1)*m51_nvphas
350 add = add0 + 9
351 k = llt_*(add-1)
352 prho => mbuf%VAR(k+1:k+llt_)
353 END IF
356 var => prho
357 else
358 var => peint
359 endif
360 print *, " brique=", ixs(11,ie)
361 print *,
" NVAR=",
nvar
362 print *, " dval=", dphi
363 print *, " was:", var(idloc)-dphi
364 print *, " is:", var(idloc)
365 print *, " MLW:", mlw
366 print *, " ------------------------"
367 enddo
368 endif
369 endif
370
371
372
373
374
375
376
377 IF(trimat>0.AND.iflg==1)THEN
378
379
380 ENDIF
381
382 RETURN
type(alefvm_param_), target alefvm_param
type(brick_entity), dimension(:,:), allocatable, target brick_list
integer function nvar(text)