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(*),NESDVOIS(*),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
127 IF(mtn == 51 .AND. (itrimat==0.OR.itrimat==4))cycle
129 IF (itrimat > 0 .AND. mtn /= 51) cycle
130 IF (jale+jeul == 0) cycle
131 IF (iparg(8,ng) == 1) cycle
132 IF (
max(1,jmult) < nm) cycle
134 IF (jmult /= 0) mtn=iparg(24+nm,ng)
135 IF (nvar == 10 .AND. (mtn == 37)) cycle
136 IF (nvar == 12 .AND. elbuf_str(ng)%GBUF%G_TEMP == 0) cycle
147 IF (nvar == 2 .AND. irs == 1)
THEN
148 IF (itrimat > 0 .AND. mtn == 51)
THEN
149 add = m51_n0phas + (itrimat-1)*m51_nvphas + idx
153 phi(j) = elbuf_str(ng)%BUFLY(1)%MAT(1,1,1)%VAR(add+i)
159 phi(j) = elbuf_str(ng)%BUFLY(nm)%LBUF(1,1,1)%SIG(k)
168 ELSEIF (nvar == 10 .AND. ire == 1)
THEN
173 ELSEIF(itrimat <= 3)
THEN
174 add0= m51_n0phas + (itrimat-1)*m51_nvphas
177 var => elbuf_str(ng)%BUFLY(1)%MAT(1,1,1)%VAR(k+1:k+llt)
178 ELSEIF(itrimat == 4)
THEN
179 var => elbuf_str(ng)%BUFLY(nm)%LBUF(1,1,1)%TB(1:llt)
181 ELSEIF (mtn == 5 .OR. mtn ==97 .OR. mtn==105)
THEN
182 var => elbuf_str(ng)%BUFLY(nm)%LBUF(1,1,1)%TB(1:llt)
183 ELSEIF (mtn == 6)
THEN
184 var => elbuf_str(ng)%BUFLY(nm)%LBUF(1,1,1)%RK(1:llt)
185 ELSEIF (mtn >= 28 .AND. mtn /= 67 .AND. mtn /= 49)
THEN
186 var => elbuf_str(ng)%BUFLY(nm)%LBUF(1,1,1)%PLA(1:llt)
188 var => elbuf_str(ng)%BUFLY(nm)%LBUF(1,1,1)%PLA(1:llt)
198 ELSEIF (nvar == 11)
THEN
199 IF( flag_mat_eos == 1 )
THEN
201 var => elbuf_str(ng)%BUFLY(nm)%MAT(1,1,1)%VAR(llt*(idx-1)+1:llt*(idx))
206 ELSEIF( flag_mat_eos == 2 )
THEN
208 IF(itrimat == 0)
THEN
209 var => elbuf_str(ng)%BUFLY(nm)%EOS(1,1,1)%VAR(llt*(idx-1)+1:llt*(idx))
210 ELSEIF(itrimat /= 4)
THEN
211 add0= m51_n0phas + (itrimat-1)*m51_nvphas
212 add = add0 + 23 + idx
214 var => elbuf_str(ng)%BUFLY(1)%MAT(1,1,1)%VAR(k+1:k+llt)
225 ELSEIF (nvar == 12)
THEN
231 add0= m51_n0phas + (itrimat-1)*m51_nvphas
234 var => elbuf_str(ng)%BUFLY(1)%MAT(1,1,1)%VAR(k+1:k+llt)
237 var => elbuf_str(ng)%BUFLY(nm)%LBUF(1,1,1)%TEMP(1:llt)
261 CALL spmd_e1vois(phi,nercvois,nesdvois,lercvois,lesdvois,lencom )
270 DO ng=itask+1,ngroup,nthread
272 IF (iparg(76, ng) == 1) cycle
274 2 mtn ,llt ,nft ,iad ,ity ,
275 3 npt ,jale ,ismstr ,jeul ,jtur ,
276 4 jthe ,jlag ,jmult ,jhbe ,jivf ,
277 5 nvaux ,jpor ,jcvt ,jclose ,jplasol ,
278 6 irep ,iint ,igtyp ,israt ,isrot ,
279 7 icsen ,isorth ,isorthg ,ifailure,jsms )
283 nuvar_mat = iparg(81,ng)
284 nuvar_eos = iparg(82,ng)
286 IF (flag_mat_eos == 0 .OR. idx == 0) cycle
287 IF(flag_mat_eos == 1)
THEN
288 IF(idx > nuvar_mat) cycle
289 ELSEIF (flag_mat_eos == 2)
THEN
290 IF(idx > nuvar_eos) cycle
292 IF(mtn == 51 .AND. (itrimat==0.OR.itrimat==4))cycle
294 IF (
max(1,jmult) < nm) cycle
295 IF (jale+jeul == 0) cycle
296 IF (iparg(8,ng) == 1) cycle
297 IF (itrimat /= 0.AND.mtn /= 51) cycle
298 IF (jmult /= 0) mtn = iparg(24+nm,ng)
299 IF (nvar == 10 .AND. (mtn == 37)) cycle
300 IF (nvar == 10 .AND. mtn==51 .AND. itrimat == 0) cycle
301 IF (nvar == 12 .AND. elbuf_str(ng)%GBUF%G_TEMP == 0) cycle
311 IF (nvar == 2 .AND. irs == 1)
THEN
313 IF (itrimat > 0)
THEN
314 add = m51_n0phas + (itrimat-1)*m51_nvphas + idx
316 sig => elbuf_str(ng)%BUFLY(1)%MAT(1,1,1)%VAR(add+1:add+llt)
317 add = m51_n0phas + (itrimat-1)*m51_nvphas + 10
319 vol => elbuf_str(ng)%BUFLY(1)%MAT(1,1,1)%VAR(add+1:add+llt)
322 sig => elbuf_str(ng)%BUFLY(nm)%LBUF(1,1,1)%SIG(llt*(indx-1)+1:llt*idx)
323 vol => elbuf_str(ng)%BUFLY(nm)%LBUF(1,1,1)%VOL(1:llt)
326 tag22 => elbuf_str(ng)%GBUF%TAG22(1:)
327 CALL arezo3(ale_connect,sig,phi,flux(6*nft+1),vol,tag22)
329 nfx = nft+(nm-1)*numelq
331 CALL arezo2(ale_connect,sig,phi,flux(4*nfx+1),vol)
333 CALL brezo2(ale_connect,sig ,phi,flux(4*nfx+1),vol,bhole,nm)
342 ELSEIF (nvar == 10 .AND. ire == 1)
THEN
345 vol => elbuf_str(ng)%BUFLY(nm)%LBUF(1,1,1)%VOL(1:llt)
346 IF (itrimat /= 0 .AND. itrimat /= 4)
THEN
347 add0= m51_n0phas + (itrimat-1)*m51_nvphas
350 var =>elbuf_str(ng)%BUFLY(1)%MAT(1,1,1)%VAR(k+1:k+llt)
351 add0= m51_n0phas + (itrimat-1)*m51_nvphas
354 vol =>elbuf_str(ng)%BUFLY(1)%MAT(1,1,1)%VAR(k+1:k+llt)
356 ELSEIF (mtn == 5 .OR. mtn == 97 .OR. mtn==105 .OR. itrimat == 4)
THEN
357 var => elbuf_str(ng)%BUFLY(nm)%LBUF(1,1,1)%TB(1:llt)
358 ELSEIF (mtn == 6)
THEN
359 var => elbuf_str(ng)%BUFLY(nm)%LBUF(1,1,1)%RK(1:llt)
360 ELSEIF (mtn >= 28 .AND. mtn /= 67 .AND. mtn /= 49)
THEN
361 var => elbuf_str(ng)%BUFLY(nm)%LBUF(1,1,1)%PLA(1:llt)
363 IF(mtn==51 .AND. itrimat == 0)cycle
364 var => elbuf_str(ng)%BUFLY(nm)%LBUF(1,1,1)%PLA(1:llt)
367 tag22 => elbuf_str(ng)%GBUF%TAG22(1:)
368 CALL arezo3(ale_connect,var,phi,flux(6*nft+1),vol,tag22)
370 nfx=nft+(nm-1)*numelq
372 CALL arezo2(ale_connect,var,phi,flux(4*nfx+1),vol)
374 CALL brezo2(ale_connect,var,phi,flux(4*nfx+1),vol,bhole,nm)
381 ELSEIF (nvar == 11)
THEN
383 IF (itrimat /= 0)
THEN
386 add0= m51_n0phas + (itrimat-1)*m51_nvphas
389 vol =>elbuf_str(ng)%BUFLY(1)%MAT(1,1,1)%VAR(k+1:k+llt)
391 add0= m51_n0phas + (itrimat-1)*m51_nvphas
392 add = add0 + 24 + idx
394 var =>elbuf_str(ng)%BUFLY(1)%MAT(1,1,1)%VAR(k+1:k+llt)
398 vol => elbuf_str(ng)%BUFLY(nm)%LBUF(1,1,1)%VOL(1:llt)
399 IF(flag_mat_eos == 1)
THEN
400 var => elbuf_str(ng)%BUFLY(nm)%MAT(1,1,1)%VAR(llt*(idx-1)+1:llt*(idx))
401 ELSEIF (flag_mat_eos == 2)
THEN
402 var => elbuf_str(ng)%BUFLY(nm)%EOS(1,1,1)%VAR(llt*(idx-1)+1:llt*(idx))
411 tag22 => elbuf_str(ng)%GBUF%TAG22(1:llt)
412 CALL arezo3(ale_connect,var,phi,flux(6*nft+1),vol,tag22)
414 nfx=nft+(nm-1)*numelq
416 CALL arezo2(ale_connect,var,phi,flux(4*nfx+1),vol)
418 CALL brezo2(ale_connect,var,phi,flux(4*nfx+1),vol,bhole,nm)
426 ELSEIF (nvar == 12)
THEN
428 temp => elbuf_str(ng)%BUFLY(nm)%LBUF(1,1,1)%TEMP(1:llt)
429 IF (itrimat /= 0)
THEN
430 add0= m51_n0phas + (itrimat-1)*m51_nvphas
433 vol =>elbuf_str(ng)%BUFLY(1)%MAT(1,1,1)%VAR(k+1:k+llt)
436 temp =>elbuf_str(ng)%BUFLY(1)%MAT(1,1,1)%VAR(k+1:k+llt)
439 IF(mtn == 51 .AND. itrimat == 0)cycle
440 temp => elbuf_str(ng)%BUFLY(nm)%LBUF(1,1,1)%TEMP(1:llt)
441 vol => elbuf_str(ng)%BUFLY(nm)%LBUF(1,1,1)%VOL(1:llt
444 tag22 => elbuf_str(ng)%GBUF%TAG22(1:)
445 CALL arezo3(ale_connect,temp,phi,flux(6*nft+1),vol,tag22)
447 nfx=nft+(nm-1)*numelq
449 CALL arezo2(ale_connect,temp,phi,flux(4*nfx+1),vol)
451 CALL brezo2(ale_connect,temp,phi,flux(4*nfx+1),vol,bhole,nm)