50 1 IPARG ,ELBUF_STR,FLUX ,PHI ,ALE_CONNECT ,
51 2 NVAR ,NV ,ITASK ,NERCVOIS,
52 3 NESDVOIS,LERCVOIS ,LESDVOIS,LENCOM,BHOLE ,
53 4 ITRIMAT ,OPT_FLAG_MAT_EOS)
60 USE multimat_param_mod ,
ONLY : m51_n0phas, m51_nvphas
66#include "implicit_f.inc"
72#include "vect01_c.inc"
79 INTEGER NVAR, ITASK, LENCOM,ITRIMAT,NV,
80 . IPARG(NPARG,NGROUP),
81 . NERCVOIS(*),(*),LERCVOIS(*),LESDVOIS(*),
83 TYPE (ELBUF_STRUCT_),
DIMENSION(NGROUP),
TARGET :: ELBUF_STR
84 TYPE(t_ale_connectivity),
INTENT(IN) :: ALE_CONNECT
85 INTEGER,
INTENT(IN),
OPTIONAL :: OPT_FLAG_MAT_EOS
89 INTEGER :: NG, IRS, IRE, I, J, K, NM, NMN, NFX, ADD, ADD0,IDX,INDX,NEL
92 my_real,
DIMENSION(:),
POINTER :: VAR,SIG,VOL, TAG22,TEMP
93 INTEGER :: FLAG_MAT_EOS
98 IF(
PRESENT(opt_flag_mat_eos))flag_mat_eos = opt_flag_mat_eos
105 DO ng=itask+1,ngroup,nthread
107 IF (iparg(76, ng) == 1) cycle
109 2 mtn ,llt ,nft ,iad ,ity ,
110 3 npt ,jale ,ismstr ,jeul ,jtur ,
111 4 jthe ,jlag ,jmult ,jhbe ,jivf ,
112 5 nvaux ,jpor ,jcvt ,jclose ,jplasol ,
113 6 irep ,iint ,igtyp ,israt ,isrot ,
114 7 icsen ,isorth ,isorthg ,ifailure,jsms )
118 nuvar_mat = iparg(81,ng)
119 nuvar_eos = iparg(82,ng)
121 IF (flag_mat_eos == 0 .OR. idx == 0) cycle
122 IF(flag_mat_eos == 1)
THEN
123 IF(idx > nuvar_mat) cycle
124 ELSEIF (flag_mat_eos == 2)
THEN
125 IF(idx > nuvar_eos) cycle
128 IF (itrimat > 0 .AND. mtn /= 51) cycle
129 IF (jale+jeul == 0) cycle
130 IF (iparg(8,ng) == 1) cycle
131 IF (
max(1,jmult) < nm) cycle
133 IF( jmult /= 0) mtn =iparg(24+nm,ng)
134 IF (nvar == 10 .AND.(mtn == 37)) cycle
135 IF (nvar == 12 .AND. elbuf_str(ng)%GBUF%G_TEMP == 0) cycle
146 IF (nvar == 2 .AND. irs == 1)
THEN
147 IF (itrimat > 0 .AND. mtn == 51)
THEN
148 add = m51_n0phas + (itrimat-1)*m51_nvphas + idx
152 phi(j) = elbuf_str(ng)%BUFLY(1)%MAT(1,1,1)%VAR(add+i
167 ELSEIF (nvar == 10 .AND. ire == 1)
THEN
172 ELSEIF(itrimat <= 3)
THEN
173 add0= m51_n0phas + (itrimat-1)*m51_nvphas
176 var => elbuf_str(ng)%BUFLY(1)%MAT(1,1,1)%VAR(k+1:k+llt)
177 ELSEIF(itrimat == 4)
THEN
178 var => elbuf_str(ng)%BUFLY(nm)%LBUF(1,1,1)%TB(1:llt)
180 ELSEIF (mtn == 5 .OR. mtn ==97 .OR. mtn==105)
THEN
181 var => elbuf_str(ng)%BUFLY(nm)%LBUF(1,1,1)%TB(1:llt)
182 ELSEIF (mtn == 6)
THEN
183 var => elbuf_str(ng)%BUFLY(nm)%LBUF(1,1,1)%RK(1:llt)
184 ELSEIF (mtn >= 28 .AND. mtn /= 67 .AND. mtn /= 49)
THEN
185 var => elbuf_str(ng)%BUFLY(nm)%LBUF(1,1,1)%PLA(1:llt)
187 var => elbuf_str(ng)%BUFLY(nm)%LBUF(1,1,1)%PLA(1:llt)
197 ELSEIF (nvar == 11)
THEN
198 IF( flag_mat_eos == 1 )
THEN
200 var => elbuf_str(ng)%BUFLY(nm)%MAT(1,1,1)%VAR(llt*(idx-1)+1:llt*(idx))
205 ELSEIF( flag_mat_eos == 2 )
THEN
207 var => elbuf_str(ng)%BUFLY(nm)%EOS(1,1,1)%VAR(llt*(idx-1)+1:llt*(idx))
217 ELSEIF (nvar == 12)
THEN
218 var => elbuf_str(ng)%BUFLY(nm)%LBUF(1,1,1)%TEMP(1:llt)
241 CALL spmd_e1vois(phi,nercvois,nesdvois,lercvois,lesdvois,lencom )
250 DO ng=itask+1,ngroup,nthread
252 IF (iparg(76, ng) == 1) cycle
255 3 npt ,jale ,ismstr ,jeul ,jtur ,
258 6 irep ,iint ,igtyp ,israt ,isrot ,
259 7 icsen ,isorth ,isorthg ,ifailure,jsms )
263 nuvar_mat = iparg(81,ng)
264 nuvar_eos = iparg(82,ng)
266 IF (flag_mat_eos == 0 .OR. idx == 0) cycle
267 IF(flag_mat_eos == 1)
THEN
268 IF(idx > nuvar_mat) cycle
269 ELSEIF (flag_mat_eos == 2)
THEN
270 IF(idx > nuvar_eos) cycle
273 IF (
max(1,jmult) < nm) cycle
274 IF (jale+jeul == 0) cycle
275 IF (iparg(8,ng) == 1) cycle
276 IF (itrimat /= 0.AND.mtn /= 51) cycle
277 IF (jmult /= 0) mtn = iparg(24+nm,ng)
278 IF (nvar == 10 .AND. (mtn == 37)) cycle
279 IF (nvar == 10 .AND. mtn==51 .AND. itrimat == 0) cycle
280 IF (nvar == 12 .AND. elbuf_str(ng)%GBUF%G_TEMP == 0) cycle
289 IF (nvar == 2 .AND. irs == 1)
THEN
291 IF (itrimat > 0)
THEN
292 add = m51_n0phas + (itrimat-1)*m51_nvphas + idx
294 sig => elbuf_str(ng)%BUFLY(1)%MAT(1,1,1)%VAR(add+1:add+llt)
295 add = m51_n0phas + (itrimat-1)*m51_nvphas + 10
297 vol => elbuf_str(ng)%BUFLY(1)%MAT(1,1,1)%VAR(add+1:add+llt)
300 sig => elbuf_str(ng)%BUFLY(nm)%LBUF(1,1,1)%SIG(llt*(indx-1)+1:llt*idx)
301 vol => elbuf_str(ng)%BUFLY(nm)%LBUF(1,1,1)%VOL(1:llt)
304 tag22 => elbuf_str(ng)%GBUF%TAG22(1:llt)
305 CALL arezo3(ale_connect,sig,phi,flux(6*nft+1),vol,tag22)
307 nfx = nft+(nm-1)*numelq
309 CALL arezo2(ale_connect,sig,phi,flux(4*nfx+1),vol)
311 CALL brezo2(ale_connect,sig ,phi,flux(4*nfx+1),vol,bhole,nm)
320 ELSEIF (nvar == 10 .AND. ire == 1)
THEN
323 vol => elbuf_str(ng)%BUFLY(nm)%LBUF(1,1,1)%VOL(1:llt)
324 IF (itrimat /= 0 .AND. itrimat /= 4)
THEN
325 add0= m51_n0phas + (itrimat-1)*m51_nvphas
328 var =>elbuf_str(ng)%BUFLY(1)%MAT(1,1,1)%VAR(k+1:k+llt)
330 ELSEIF (mtn == 5 .OR. mtn == 97 .OR. mtn==105 .OR. itrimat == 4)
THEN
331 var => elbuf_str(ng)%BUFLY(nm)%LBUF(1,1,1)%TB(1:llt)
332 ELSEIF (mtn == 6)
THEN
333 var => elbuf_str(ng)%BUFLY(nm)%LBUF(1,1,1)%RK(1:llt)
334 ELSEIF (mtn >= 28 .AND. mtn /= 67 .AND. mtn /= 49)
THEN
335 var => elbuf_str(ng)%BUFLY(nm)%LBUF(1,1,1)%PLA(1:llt)
337 var => elbuf_str(ng)%BUFLY(nm)%LBUF(1,1,1)%PLA(1:llt)
340 tag22 => elbuf_str(ng)%GBUF%TAG22(1:llt)
341 CALL arezo3(ale_connect,var,phi,flux(6*nft+1),vol,tag22)
343 nfx=nft+(nm-1)*numelq
345 CALL arezo2(ale_connect,var,phi,flux(4*nfx+1),vol)
347 CALL brezo2(ale_connect,var,phi,flux(4*nfx+1),vol,bhole
354 ELSEIF (nvar == 11)
THEN
355 vol => elbuf_str(ng)%BUFLY(nm)%LBUF(1,1,1)%VOL(1:llt)
356 IF(flag_mat_eos == 1)
THEN
357 var => elbuf_str(ng)%BUFLY(nm)%MAT(1,1,1)%VAR(llt*(idx-1)+1:llt*(idx))
358 ELSEIF (flag_mat_eos == 2)
THEN
359 var => elbuf_str(ng)%BUFLY(nm)%EOS(1,1,1)%VAR(llt*(idx-1)+1:llt*(idx))
366 tag22 => elbuf_str(ng)%GBUF%TAG22(1:llt)
367 CALL arezo3(ale_connect,var,phi,flux(6*nft+1),vol,tag22)
369 nfx=nft+(nm-1)*numelq
371 CALL arezo2(ale_connect,var,phi,flux(4*nfx+1),vol)
373 CALL brezo2(ale_connect,var,phi,flux(4*nfx+1),vol,bhole,nm)
381 ELSEIF (nvar == 12)
THEN
383 temp => elbuf_str(ng)%BUFLY(nm)%LBUF(1,1,1)%TEMP(1:llt)
384 vol => elbuf_str(ng)%BUFLY(nm)%LBUF(1,1,1)%VOL(1:llt)
385 IF (itrimat /= 0)
THEN
386 add0= m51_n0phas + (itrimat-1)*m51_nvphas
389 temp =>elbuf_str(ng)%BUFLY(1)%MAT(1,1,1)%VAR(k+1:k+llt)
392 temp => elbuf_str(ng)%BUFLY(nm)%LBUF(1,1,1)%TEMP(1:llt)
393 vol => elbuf_str(ng)%BUFLY(nm)%LBUF(1,1,1)%VOL(1:llt)
396 tag22 => elbuf_str(ng
397 CALL arezo3(ale_connect,temp,phi,flux(6*nft+1),vol,tag22)
399 nfx=nft+(nm-1)*numelq
401 CALL arezo2(ale_connect,temp,phi,flux(4*nfx+1),vol)
403 CALL brezo2(ale_connect,temp,phi,flux(4*nfx+1),vol,bhole,nm)