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