39 . ELBUF_TAB ,SPH_SCALAR ,IFUNC ,IPARG ,
42 . ID_ELEM ,IPARTSP ,IUVAR_INPUT ,H3D_PART ,
43 . IS_WRITTEN_SPH,KEYWORD ,SPBUF ,ID )
53 USE multimat_param_mod ,
ONLY : m51_n0phas, m51_nvphas
57#include "implicit_f.inc"
61#include "vect01_c.inc"
75 INTEGER IPARG(NPARG,*),KXSP(NISP,*),IFUNC,
77 . id_elem(*),ipartsp(*),
78 . h3d_part(*),is_written_sph(*),iuvar_input,ipart(lipart1,*)
79 TYPE (ELBUF_STRUCT_),
DIMENSION(NGROUP),
TARGET :: ELBUF_TAB
80 CHARACTER(NCHARLINE100) :: KEYWORD
81 INTEGER,
INTENT(IN) :: ID
82 my_real :: SPBUF(NSPBUF,*)
87 . value(mvsiz),mass(mvsiz),pres(mvsiz)
90 . s11,s22,s33,s4,s5,s6,vonm,
92 INTEGER ,NG,NEL,NPTR,NPTS,NPTT,NLAY,
93 . ir,mlw, nuvar,ius,nfail,
100 . IOK_PART(MVSIZ),JJ(6),
101 . IS_WRITTEN_VALUE(MVSIZ),IPOS,ITRIMAT,NVAREOS
102 TYPE(G_BUFEL_) ,
POINTER :: GBUF
103 TYPE(l_bufel_) ,
POINTER :: LBUF
104 TYPE(BUF_MAT_) ,
POINTER :: MBUF
105 TYPE(BUF_EOS_) ,
POINTER :: EBUF
106 my_real,
DIMENSION(:),
POINTER :: DFMAX
109 is_written_sph(i) = 0
115 2 mlw ,nel ,nft ,iad ,ity ,
116 3 npt ,jale ,ismstr ,jeul ,jtur ,
117 4 jthe ,jlag ,jmult ,jhbe ,jivf ,
118 5 nvaux ,jpor ,jcvt ,jclose ,jplasol ,
119 6 irep ,iint ,igtyp ,israt ,isrot ,
120 7 icsen ,isorth ,isorthg ,ifailure,jsms )
131 is_written_value(i) = 0
136 IF (jcvt==1.AND.isorth/=0) jcvt=2
138 gbuf => elbuf_tab(ng)%GBUF
139 mbuf => elbuf_tab(ng)%BUFLY(1)%MAT(1,1,1)
140 lbuf => elbuf_tab(ng)%BUFLY(1)%LBUF(1,1,1)
141 nlay = elbuf_tab(ng)%NLAY
142 nptr = elbuf_tab(ng)%NPTR
143 npts = elbuf_tab(ng)%NPTS
144 nptt = elbuf_tab(ng)%NPTT
145 nptg = nptt*npts*nptr*nlay
146 jturb= iparg(12,ng)*(iparg(7,ng)+iparg(11,ng))
152 id_elem(offset+nft+i) = kxsp(nisp,nft+i)
153 IF( h3d_part(ipartsp(nft+i)) == 1) iok_part(i) = 1
161 IF (keyword ==
'MASS')
THEN
162 gbuf => elbuf_tab(ng)%GBUF
167 mass(i)=pm(89,mt)*gbuf%VOL(i)
171 IF (mlw /= 0 .and. mlw /= 13 .and. igtyp /= 0)
THEN
172 jturb=iparg(12,ng)*(iparg(7,ng)+iparg(11,ng))
174 IF (keyword ==
'MASS')
THEN
178 is_written_value(i) = 1
181 ELSEIF(keyword ==
'DIAMETER')
THEN
184 value(i) = spbuf(1,nft+i)
185 is_written_value(i) = 1
188 ELSEIF(keyword ==
'EPSP')
THEN
190 IF( gbuf%G_PLA > 0)
THEN
192 value(i) = gbuf%PLA(i)
193 is_written_value(i) = 1
197 ELSEIF(keyword ==
'DENS')
THEN
200 value(i) = gbuf%RHO(i)
201 is_written_value(i) = 1
204 ELSEIF (keyword ==
'EINTM' .OR. keyword ==
'ENER')
THEN
211 value(i) = gbuf%EINT(i)/
max(em20,pm(89,mt))
212 is_written_value(i) = 1
215 ELSEIF (keyword ==
'EINTV')
THEN
221 value(i) = gbuf%EINT(i)/
max(em20,pm(89,mt))*gbuf%RHO(i)
222 is_written_value(i) = 1
225 ELSEIF (keyword ==
'EINT')
THEN
231 vol=gbuf%VOL(i)*pm(89,mt)/gbuf%RHO(i)
232 value(i) = gbuf%EINT(i)/pm(89,mt)*gbuf%RHO(i)*vol
233 is_written_value(i) = 1
236 ELSEIF (keyword(1:4) ==
'ENTH')
THEN
239 pres(i) = -(gbuf%SIG(jj(1)+i)+ gbuf%SIG(jj(2)+i) + gbuf%SIG(jj(3)+i))*third
242 IF(keyword ==
'ENTH')
THEN
247 mass0=gbuf%VOL(i)*pm(89,mt)
248 vol=mass0/
max(em20,gbuf%RHO(i))
249 value(i) = gbuf%EINT(i)/
max(em20,pm(89,mt)) + pres(i)*vol
250 is_written_value(i) = 1
252 ELSEIF(keyword ==
'ENTHV')
THEN
257 mass0=gbuf%VOL(i)*pm(89,mt)
258 vol=mass0/
max(em20,gbuf%RHO(i))
259 value(i) = gbuf%EINT(i)/
max(em20,pm(89,mt))/vol + pres(i) !
260 is_written_value(i) = 1
262 ELSEIF(keyword == 'enthm
')THEN
267 MASS0=GBUF%VOL(I)*PM(89,MT)
268 VOL=MASS0/MAX(EM20,GBUF%RHO(I))
270 VALUE(I) = (GBUF%EINT(I)/MAX(EM20,PM(89,MT)) + PRES(I)*VOL)/MASS(I) !
271 IS_WRITTEN_VALUE(I) = 1
275 ELSEIF(KEYWORD == 'temp
')THEN
278 IF (GBUF%G_TEMP > 0) THEN
279 VALUE(I) = GBUF%TEMP(I)
280 IS_WRITTEN_VALUE(I) = 1
284 ELSEIF(KEYWORD == 'p
')THEN
287 S11 = GBUF%SIG(JJ(1) + I)
288 S22 = GBUF%SIG(JJ(2) + I)
289 S33 = GBUF%SIG(JJ(3) + I)
290 S4 = GBUF%SIG(JJ(4) + I)
291 S5 = GBUF%SIG(JJ(5) + I)
292 S6 = GBUF%SIG(JJ(6) + I)
293 P = - (S11 + S22 + S33 ) * THIRD
295 IS_WRITTEN_VALUE(I) = 1
298 ELSEIF(KEYWORD == 'vonm
')THEN
301 S11 = GBUF%SIG(JJ(1) + I)
302 S22 = GBUF%SIG(JJ(2) + I)
303 S33 = GBUF%SIG(JJ(3) + I)
304 S4 = GBUF%SIG(JJ(4) + I)
305 S5 = GBUF%SIG(JJ(5) + I)
306 S6 = GBUF%SIG(JJ(6) + I)
307 P = - (S11 + S22 + S33 ) * THIRD
312 VONM2= THREE*(S4*S4 + S5*S5 + S6*S6 +
313 . HALF*(S1*S1+S2*S2+S3*S3) )
316 IS_WRITTEN_VALUE(I) = 1
319 ELSEIF(KEYWORD == 'k.AND.
' JTURB/=0)THEN
323 VALUE(I) = GBUF%RK(I)
324 IS_WRITTEN_VALUE(I) = 1
327 ELSEIF(KEYWORD == 'tvis
')THEN
331.OR..AND.
IF((MLW == 6 MLW == 17)JTURB/=0)THEN
334 VALUE(I)=PM(81,MT)*GBUF%RK(I)**2/
335 . MAX(EM15,GBUF%RE(I))
336 IS_WRITTEN_VALUE(I) = 1
337.OR.
ELSEIF(MLW == 46 MLW == 47)THEN
338 VALUE(I) = MBUF%VAR(I)
339 IS_WRITTEN_VALUE(I) = 1
343 ELSEIF(KEYWORD == 'vortx
')THEN
347.OR.
IF(MLW == 6 MLW == 17)THEN
348 VALUE(I) = LBUF%VK(I)
349 IS_WRITTEN_VALUE(I) = 1
350.OR.
ELSEIF(MLW == 46 MLW == 47)THEN
351 VALUE(I) = MBUF%VAR(NEL+I)
352 IS_WRITTEN_VALUE(I) = 1
356 ELSEIF(KEYWORD == 'dam1.AND.
' MLW == 24)THEN
359 VALUE(I) = LBUF%DAM(JJ(1) + I)
360 IS_WRITTEN_VALUE(I) = 1
363 ELSEIF(KEYWORD == 'dam2.AND.
' MLW == 24)THEN
366 VALUE(I) = LBUF%DAM(JJ(2) + I)
367 IS_WRITTEN_VALUE(I) = 1
370 ELSEIF(KEYWORD == 'dam3.AND.
' MLW == 24)THEN
374 VALUE(I) = LBUF%DAM(JJ(3) + I)
375 IS_WRITTEN_VALUE(I) = 1
378 ELSEIF(KEYWORD == 'sigx
')THEN
381 VALUE(I) = GBUF%SIG(JJ(1) + I)
382 IS_WRITTEN_VALUE(I) = 1
385 ELSEIF(KEYWORD == 'sigy
')THEN
388 VALUE(I) = GBUF%SIG(JJ(2) + I)
389 IS_WRITTEN_VALUE(I) = 1
392 ELSEIF(KEYWORD == 'sigz
')THEN
395 VALUE(I) = GBUF%SIG(JJ(3) + I)
396 IS_WRITTEN_VALUE(I) = 1
399 ELSEIF(KEYWORD == 'sigxy
')THEN
402 VALUE(I) = GBUF%SIG(JJ(4) + I)
403 IS_WRITTEN_VALUE(I) = 1
406 ELSEIF(KEYWORD == 'sigyz
')THEN
409 VALUE(I) = GBUF%SIG(JJ(5) + I)
410 IS_WRITTEN_VALUE(I) = 1
413 ELSEIF(KEYWORD == 'sigzx
')THEN
416 VALUE(I) = GBUF%SIG(JJ(6) + I)
417 IS_WRITTEN_VALUE(I) = 1
420 ELSEIF(KEYWORD == 'user
')THEN
427 VALUE(I) = MBUF%VAR(I + IUS*NEL)
428 IS_WRITTEN_VALUE(I) = 1
433 ELSEIF(KEYWORD == 'hourglass
')THEN
437 ELSEIF(KEYWORD == 'bfrac
')THEN
442 VALUE(I) = GBUF%BFRAC(I)
443 IS_WRITTEN_VALUE(I) = 1
447 ELSEIF(KEYWORD == 'dama
') THEN
452 NFAIL = ELBUF_TAB(NG)%BUFLY(1)%NFAIL
455 . ELBUF_TAB(NG)%BUFLY(1)%FAIL(1,1,1)%FLOC(IR)%DAMMX
457 VALUE(I) = MAX(DFMAX(I),VALUE(I))
458 IS_WRITTEN_VALUE(I) = 1
462 ELSEIF(KEYWORD == 'failure
') THEN
467 NFAIL = ELBUF_TAB(NG)%BUFLY(1)%NFAIL
469 IF (ELBUF_TAB(NG)%BUFLY(1)%FAIL(1,1,1)%FLOC(IR)%IDFAIL == ID) THEN
471 . ELBUF_TAB(NG)%BUFLY(1)%FAIL(1,1,1)%FLOC(IR)%DAMMX
474 IS_WRITTEN_VALUE(I) = 1
479 ELSEIF(KEYWORD == 'domain
')THEN
483 IS_WRITTEN_VALUE(I) = 1
486 ELSEIF(KEYWORD == 'fill
')THEN
489 VALUE(I) = GBUF%FILL(I)
490 IS_WRITTEN_VALUE(I) = 1
493 ELSEIF (KEYWORD == 'sigeq
') THEN
495 IF (GBUF%G_SEQ > 0) THEN ! non VON MISES
497 VALUE(I) = GBUF%SEQ(I)
498 IS_WRITTEN_VALUE(I) = 1
502 P = -(GBUF%SIG(JJ(1) + I)
503 . + GBUF%SIG(JJ(2) + I)
504 . + GBUF%SIG(JJ(3) + I)) * THIRD
505 S1=GBUF%SIG(JJ(1) + I) + P
506 S2=GBUF%SIG(JJ(2) + I) + P
507 S3=GBUF%SIG(JJ(3) + I) + P
508 VONM2= THREE*(GBUF%SIG(JJ(4) + I)**2 +
509 . GBUF%SIG(JJ(5) + I)**2 +
510 . GBUF%SIG(JJ(6) + I)**2 +
511 . HALF*(S1*S1+S2*S2+S3*S3))
514 IS_WRITTEN_VALUE(I) = 1
518 ELSEIF (KEYWORD == 'tdet
') THEN ! /H3D/ELEM/TDET
520.AND.
IF (MLW /= 51 GBUF%G_TB > 0) THEN
522 VALUE(I) = -GBUF%TB(I)
523 IS_WRITTEN_VALUE(I) = 1
525 ELSEIF (MLW == 51)THEN
528 K = IPARG(2,NG) * ((M51_N0PHAS + (ITRIMAT-1)*M51_NVPHAS )+IPOS-1)
530 VALUE(I) = -MBUF%VAR(K+I)
531 IS_WRITTEN_VALUE(I) = 1
535 ELSEIF(KEYWORD == 'group
')THEN
539 IS_WRITTEN_VALUE(I) = 1
542 ELSEIF(KEYWORD == 'internal.id
')THEN
546 IS_WRITTEN_VALUE(I) = 1
549 ELSEIF(KEYWORD == 'local.id
')THEN
553 IS_WRITTEN_VALUE(I) = 1
556 ELSEIF(KEYWORD == 'off
')THEN
559 IF (GBUF%G_OFF > 0) THEN
560 IF(GBUF%OFF(I) > ONE) THEN
561 VALUE(I) = GBUF%OFF(I) - ONE
562.AND.
ELSEIF((GBUF%OFF(I) >= ZERO GBUF%OFF(I) <= ONE)) THEN
563 VALUE(I) = GBUF%OFF(I)
568 IS_WRITTEN_VALUE(I) = 1
578 EBUF => ELBUF_TAB(NG)%BUFLY(1)%EOS(1,1,1)
579 NVAREOS = ELBUF_TAB(NG)%BUFLY(1)%NVAR_EOS
581 VALUE(I) = EBUF%VAR(I)
582 IS_WRITTEN_VALUE(I) = 1
586 ELSEIF(KEYWORD == 'neighbours
')THEN
589 VALUE(I) = KXSP(4,NFT+I)
590 IS_WRITTEN_VALUE(I) = 1
592!--------------------------------------------------
593 ELSEIF(KEYWORD == 'vstrain
') then
594!--------------------------------------------------
598 IF(PM(89,MT) > ZERO)THEN
599 VALUE(I) = GBUF%RHO(I) / PM(89,MT) - ONE
600 IS_WRITTEN_VALUE(I) = 1
606 CALL H3D_WRITE_SCALAR(IOK_PART,IS_WRITTEN_SPH,SPH_SCALAR,NEL,OFFSET,NFT,VALUE,IS_WRITTEN_VALUE)
subroutine initbuf(iparg, ng, mtn, llt, nft, iad, ity, npt, jale, ismstr, jeul, jtur, jthe, jlag, jmult, jhbe, jivf, mid, jpor, jcvt, jclose, jpla, irep, iint, igtyp, israt, isrot, icsen, isorth, isorthg, ifailure, jsms)
subroutine tillotson(iflag, nel, pm, off, eint, mu, mu2, espe, dvol, df, vnew, mat, psh, pnew, dpdm, dpde, vareos, nvareos)