51 . ELBUF_TAB ,SOLID_SCALAR ,IPARG ,
55 . X ,V ,W ,ALE_CONNECT ,
56 . ID_ELEM ,ITY_ELEM ,IPARTS ,LAYER_INPUT ,
57 . IR_INPUT ,IS_INPUT ,IT_INPUT ,IUVAR_INPUT , H3D_PART ,
58 . IS_WRITTEN_SOLID,INFO1 ,KEYWORD ,FANI_CELL ,
59 . MULTI_FVM ,NG ,IDMDS ,IMDSVAR ,
60 . ID ,MAT_PARAM ,MODE )
74 USE multimat_param_mod ,
ONLY : m51_n0phas, m51_nvphas
75 USE matparam_def_mod ,
ONLY : matparam_struct_
79#include "implicit_f.inc"
84#include "vect01_c.inc"
97 LOGICAL,
INTENT(IN) :: CALLED_FROM_PYTHON
99 . SOLID_SCALAR(*),X(3,*),V(3,*),W(3,*),EHOUR(*),
101 ,
INTENT(IN),
TARGET :: BUFMAT(*)
102 INTEGER IPARG(NPARG,*),IXS(,*),
104 . ID_ELEM(*),ITY_ELEM(*),IPARTS(*),ID,
105 . H3D_PART(*),IS_WRITTEN_SOLID(*),INFO1,LAYER_INPUT,IS_INPUT,IT_INPUT,
106 . IUVAR_INPUT,NG,,IMDSVAR
107 TYPE (ELBUF_STRUCT_),
DIMENSION(NGROUP),
TARGET :: ELBUF_TAB
108 CHARACTER(NCHARLINE100):: KEYWORD
109 TYPE(FANI_CELL_),
INTENT(IN) ::
110 TYPE(MULTI_FVM_STRUCT),
INTENT(IN) :: MULTI_FVM
112 TYPE (MATPARAM_STRUCT_) ,
DIMENSION(NUMMAT) ,
INTENT(IN) :: MAT_PARAM
113 INTEGER ,
INTENT(IN) :: MODE
119 . value(mvsiz),mass(mvsiz),pres(mvsiz),mass0,vol
121 . off, p,vonm2,s1,s2,s3,dmgmx,fac,
122 . s11,s22,s33,s4,s5,s6,vonm,gama(6),
123 . t11,t21,t31,t12,t22,t32,t13,t23,t33,
124 . phi,theta,psi,dammax,vel(0:3),vfrac(mvsiz,1:21),
125 . cumul(3),vx,vy,vz,nx,ny,nz,surf,tmp_2(mvsiz,3),
128 . g1(mvsiz,3),g2(mvsiz,3),g3(mvsiz,3),voln(mvsiz),aream(mvsiz),
129 . rho0,det(mvsiz),ezz(mvsiz),maxdamini,e33
130 INTEGER I,II,J,NEL,NPTR,NPTS,NPTT,NLAY,L,IFAIL,ILAY,
131 . IR,IS,IT,IL,MLW, NUVAR,IUS,NFAIL,
132 . N,K,JTURB,MT,IALEL,
135 . IUVAR,IPOS,ITRIMAT,
136 . IALEFVM_FLG, IMAT,IADBUF,NUPARAM,ICSIG,NC(8),IEOS,NMOD,MAT_ID,FAIL_ID
138 . isolnod,ivisc,nptg,tshell,tsh_ort,
139 . iok_part(mvsiz),jj(6),irupt,iok,npg_plane,iir,
140 . is_written_value(mvsiz),nfrac,iu(4),iv,nb_face,kface,is_euler,is_ale,iad2,
144 TYPE(G_BUFEL_) ,
POINTER :: GBUF
145 TYPE(L_BUFEL_) ,
POINTER :: LBUF, LBUF1,LBUF2
146 TYPE(BUF_MAT_) ,
POINTER :: MBUF
147 TYPE(buf_fail_) ,
POINTER :: FBUF
148 TYPE(BUF_EOS_) ,
POINTER :: EBUF
149 my_real,
DIMENSION(:),
POINTER :: UVARF,DAMF,DFMAX,TDELE
150 my_real,
DIMENSION(:) ,
POINTER :: UPARAM
151 INTEGER :: ISUBMAT,NVAREOS,NTILLOTSON,IMAT_TILLOTSON
162 2 mlw ,nel ,nft ,iad ,ity ,
163 3 npt ,jale ,ismstr ,jeul ,jtur ,
164 4 jthe ,jlag ,jmult ,jhbe ,jivf ,
165 5 nvaux ,jpor ,jcvt ,jclose ,jplasol ,
166 6 irep ,iint ,igtyp ,israt ,isrot ,
167 7 icsen ,isorth ,isorthg ,ifailure,jsms )
171 isolnod = iparg(28,ng)
176 is_euler=iparg(11,ng)
185 is_written_value(i) = 0
190 IF (jcvt==1.AND.isorth/=0) jcvt=2
192 gbuf => elbuf_tab(ng)%GBUF
193 mbuf => elbuf_tab(ng)%BUFLY(1)%MAT(1,1,1)
194 lbuf => elbuf_tab(ng)%BUFLY(1)%LBUF(1,1,1)
195 ebuf => elbuf_tab(ng)%BUFLY(1)%EOS(1,1,1)
196 nlay = elbuf_tab(ng)%NLAY
197 nptr = elbuf_tab(ng)%NPTR
198 npts = elbuf_tab(ng)%NPTS
199 nptt = elbuf_tab(ng)%NPTT
200 nptg = nptt*npts*nptr*nlay
201 nvareos = elbuf_tab(ng)%BUFLY(1)%NVAR_EOS
204 IF (igtyp==20 .OR. igtyp==21 .OR. igtyp==22) tshell = 1
205 IF (igtyp==21 .OR. igtyp==22) tsh_ort = 1
207 IF (ity == 1) offset = 0
209 IF(.NOT. called_from_python)
THEN
212 id_elem(offset+nft+i) = ixs(nixs,nft+i)
213 ity_elem(offset+nft+i) = 1
214 IF( h3d_part(iparts(nft+i)) == 1) iok_part(i) = 1
221 IF (keyword ==
'MDS') iuvar = imdsvar
225 IF (ilay == -2) ilay = 1
226 IF (ilay == -3) ilay = nlay
227 IF (tshell == 1.AND.(ir_input/=-1.AND.is_input/=-1.AND.it_input/=-1))
THEN
233 ELSEIF (jhbe==14 )
THEN
239 ELSEIF (icsig==10)
THEN
243 ELSEIF (icsig==1)
THEN
255 IF (keyword ==
'MASS')
THEN
256 gbuf => elbuf_tab(ng)%GBUF
257 ialel=iparg(7,ng)+iparg(11,ng
260 IF (mlw == 0 .or. mlw == 13 .or. igtyp == 0)
THEN
262 ELSEIF(ialel == 0)
THEN
264 mass(i)=pm(89,mt)*gbuf%VOL(i)
266 off =
min(gbuf%OFF(i),one)
267 mass(i)=gbuf%RHO(i)*gbuf%VOL(i)*off
269 IF( nfilsol /= 0 .AND. gbuf%G_FILL /= 0 )
270 . mass(i) = mass(i) * gbuf%FILL(i)
274 IF (mlw /= 0 .and. mlw /= 13 .and. igtyp
THEN
275 jturb=iparg(12,ng)*(iparg(7,ng)+iparg(11,ng))
277 IF (keyword ==
'MASS')
THEN
281 is_written_value(i) = 1
284 ELSEIF(keyword ==
'DT')
THEN
288 VALUE(i) = gbuf%DT(i)
289 is_written_value(i) = 1
293 ELSEIF(keyword ==
'EPSP' .AND. (mlw /= 12 .AND. mlw /=14 .AND. mlw /= 25))
THEN
297 IF (mlw == 10 .OR. mlw == 21)
THEN
298 value(i) = lbuf%EPSQ(i)
299 is_written_value(i) = 1
300 ELSEIF (gbuf%G_PLA > 0)
THEN
301 value(i) = gbuf%PLA(i)
302 is_written_value(i) = 1
307 IF(elbuf_tab(ng)%BUFLY(ilay)%L_PLA > 0)
THEN
308 value(i) = elbuf_tab(ng)%BUFLY(ilay)%LBUF(1,1,1)%PLA(i)
309 is_written_value(i) = 1
315 ELSEIF(keyword ==
'WPLA' .AND. (mlw == 12 .OR. mlw == 14 .OR. mlw == 25)
THEN
320 IF (isolnod == 16 .OR. isolnod == 20.OR.
321 . (isolnod == 8 .AND.jhbe == 14).OR.
324 IF (elbuf_tab(ng)%BUFLY(il)%L_PLA > 0)
THEN
328 lbuf=>elbuf_tab(ng)%BUFLY(il)%LBUF(ir,is,it)
330 value(i) = value(i) + lbuf%PLA(i
331 is_written_value(i) = 1
340 IF (gbuf%G_PLA > 0)
THEN
341 value(i) = gbuf%PLA(i)
342 is_written_value(i) = 1
347 ELSEIF (keyword ==
'TSAIWU' .AND. gbuf%G_TSAIWU > 0)
THEN
353 IF (elbuf_tab(ng)%BUFLY(il)%L_TSAIWU > 0)
THEN
357 lbuf=>elbuf_tab(ng)%BUFLY(il)%LBUF(ir,is,it)
359 value(i) = value(i) + lbuf%TSAIWU
360 is_written_value(i) = 1
368 ELSEIF(keyword ==
'DENS')
THEN
372 value(i) = multi_fvm%RHO(i + nft)
373 is_written_value(i) = 1
377 value(i) = gbuf%RHO(i)
378 is_written_value(i) = 1
382 ELSEIF(keyword ==
'TEMP')
THEN
385 value(1:nel) = elbuf_tab(ng)%GBUF%TEMP(1:nel)
386 is_written_value(1:nel) = 1
390 IF (elbuf_tab(ng)%BUFLY(il)%L_TEMP > 0)
THEN
391 is_written_value(1:nel) = 1
392 DO it=1,elbuf_tab(ng)%BUFLY(il)%NPTT
395 lbuf => elbuf_tab(ng)%BUFLY(il)%LBUF(ir,is,it)
396 value(1:nel) = value(1:nel) + lbuf%TEMP(1:nel)/nptg
404 ELSEIF(keyword ==
'P')
THEN
408 value(i) = multi_fvm%PRES(i + nft)
409 is_written_value(i) = 1
415 s11 = gbuf%SIG(jj(1) + i)
416 s22 = gbuf%SIG(jj(2) + i)
418 s4 = gbuf%SIG(jj(4) + i)
419 s5 = gbuf%SIG(jj(5) + i)
420 s6 = gbuf%SIG(jj(6) + i)
422 s11 = s11 + lbuf%VISC(jj(1) + i)
423 s22 = s22 + lbuf%VISC(jj(2) + i)
424 s33 = s33 + lbuf%VISC(jj(3) + i)
425 s4 = s4 + lbuf%VISC(jj(4) + i)
426 s5 = s5 + lbuf%VISC(jj(5) + i)
427 s6 = s6 + lbuf%VISC(jj(6) + i)
429 p = - (s11 + s22 + s33 ) * third
431 is_written_value(i) = 1
435 ELSEIF(keyword ==
'VONM')
THEN
439 s11 = gbuf%SIG(jj(1) + i)
440 s22 = gbuf%SIG(jj(2) + i)
441 s33 = gbuf%SIG(jj(3) + i)
442 s4 = gbuf%SIG(jj(4) + i)
443 s5 = gbuf%SIG(jj(5) + i)
444 s6 = gbuf%SIG(jj(6) + i)
446 s11 = s11 + lbuf%VISC(jj(1) + i)
447 s22 = s22 + lbuf%VISC(jj(2) + i)
448 s33 = s33 + lbuf%VISC(jj(3) + i)
449 s4 = s4 + lbuf%VISC(jj(4) + i)
450 s5 = s5 + lbuf%VISC(jj(5) + i)
451 s6 = s6 + lbuf%VISC(jj(6) + i)
453 p = - (s11 + s22 + s33 ) * third
457 vonm2= three*(s4*s4 + s5*s5 + s6*s6 +
458 . half*(s1*s1 + s2*s2 + s3*s3) )
461 IF( nfilsol /= 0 .AND. gbuf%G_FILL /= 0 )
463 is_written_value(i) = 1
466 ELSEIF(keyword ==
'K' .and. jturb /= 0)
THEN
470 value(i) = gbuf%RK(i)
471 is_written_value(i) = 1
474 ELSEIF(keyword ==
'TVIS')
THEN
479 IF((mlw == 6 .OR. mlw == 17).AND.jturb/=0)
THEN
481 value(i) = pm(81,mt) * gbuf%RK(i)**2
482 . /
max(em15,gbuf%RE(i))
483 is_written_value(i) = 1
484 ELSEIF(mlw == 46 .OR. mlw == 47)
THEN
485 value(i) = mbuf%VAR(i)
486 is_written_value(i) = 1
490 ELSEIF(keyword ==
'VORTX')
THEN
496 is_written_value(i) = 1
498 ELSEIF(mlw == 151)
THEN
503 iad2 = ale_connect%ee_connect%iad_connect(ii)
504 nb_face = ale_connect%ee_connect%iad_connect(ii+1)-iad2
506 DO kface = 1, nb_face
507 iv = ale_connect%ee_connect%connected(iad2 + kface - 1)
509 ny = multi_fvm%FACE_DATA%NORMAL(2, kface, ii)
510 nz = multi_fvm%FACE_DATA%NORMAL(3, kface, ii)
511 surf = multi_fvm%FACE_DATA%SURF(kface, ii)
513 vy = multi_fvm%VEL(2, ii)
514 vz = multi_fvm%VEL(3, ii)
517 vy = half*(vy + multi_fvm%VEL(2, iv))
518 vz = half*(vz + multi_fvm%VEL(3, iv))
520 cumul(1)=cumul(1)+surf*(ny*vz-nz*vy)
524 cumul(1)=cumul(1)/gbuf%VOL(i)
526 is_written_value(i) = 1
530 ELSEIF(keyword ==
'VORTY')
THEN
536 is_written_value(i) = 1
538 ELSEIF(mlw == 151)
THEN
544 iad2 = ale_connect%ee_connect%iad_connect(ii)
545 nb_face = ale_connect%ee_connect%iad_connect(ii+1)-iad2
547 DO kface = 1, nb_face
548 iv = ale_connect%ee_connect%connected(iad2 + kface - 1)
549 nx = multi_fvm%FACE_DATA%NORMAL(1, kface, ii)
552 surf = multi_fvm%FACE_DATA%SURF
553 vx = multi_fvm%VEL(1, ii)
555 vz = multi_fvm%VEL(3, ii)
557 vx = half*(vx + multi_fvm%VEL(1, iv))
559 vz = half*(vz + multi_fvm%VEL(3, iv))
562 cumul(2)=cumul(2)+surf*(nz*vx-nx*vz)
565 cumul(2)=cumul(2)/gbuf%VOL(i)
567 is_written_value(i) = 1
571 ELSEIF(keyword ==
'VORTZ')
THEN
577 is_written_value(i) = 1
579 ELSEIF(mlw == 151)
THEN
584 iad2 = ale_connect%ee_connect%iad_connect(ii)
585 nb_face = ale_connect%ee_connect%iad_connect(ii+1)-iad2
587 DO kface = 1, nb_face
588 iv = ale_connect%ee_connect%connected(iad2 + kface - 1)
589 nx = multi_fvm%FACE_DATA%NORMAL(1, kface, ii)
590 ny = multi_fvm%FACE_DATA%NORMAL(2, kface, ii)
592 surf = multi_fvm%FACE_DATA%SURF(kface, ii)
593 vx = multi_fvm%VEL(1, ii)
594 vy = multi_fvm%VEL(2, ii)
597 vx = half*(vx + multi_fvm%VEL(1, iv))
598 vy = half*(vy + multi_fvm%VEL(2, iv))
603 cumul(3)=cumul(3)+surf*(nx*vy-ny*vx)
605 cumul(3)=cumul(3)/gbuf%VOL(i)
607 is_written_value(i) = 1
611 ELSEIF(keyword ==
'VORT')
THEN
615 IF(mlw == 6 .OR. mlw == 17)
THEN
616 value(i) = lbuf%VK(i)
618 ELSEIF(mlw == 46 .OR. mlw == 47)
THEN
619 value(i) = mbuf%VAR(nel+i)
620 is_written_value(i) = 1
624 ELSEIF(keyword ==
'DAM1' .AND.mlw == 24)
THEN
628 value(i) = lbuf%DAM(jj(1) + i)
629 is_written_value(i) = 1
632 ELSEIF(keyword ==
'DAM2' .AND.mlw == 24)
THEN
636 value(i) = lbuf%DAM(jj(2) + i)
637 is_written_value(i) = 1
640 ELSEIF(keyword ==
'DAM3' .AND.mlw == 24)
THEN
644 value(i) = lbuf%DAM(jj(3) + i)
645 is_written_value(i) = 1
648 ELSEIF(keyword ==
'SIGX')
THEN
651 value(i) = gbuf%SIG(jj(1) + i)
652 is_written_value(i) = 1
653 IF( nfilsol /= 0 .AND. gbuf%G_FILL /= 0 )
654 . value(i) = value(i) * gbuf%FILL(i)
656 value(i) = value(i) + lbuf%VISC(jj(1)+i)
660 ELSEIF(keyword ==
'SIGY')
THEN
663 value(i) = gbuf%SIG(jj(2) + i)
664 is_written_value(i) = 1
665 IF( nfilsol /= 0 .AND. gbuf%G_FILL /= 0 )
666 . value(i) = value(i) * gbuf%FILL(i)
668 value(i) = value(i) + lbuf%VISC(jj(2)+i)
672 ELSEIF(keyword ==
'SIGZ')
THEN
675 value(i) = gbuf%SIG(jj(3) + i)
676 is_written_value(i) = 1
677 IF( nfilsol /= 0 .AND. gbuf%G_FILL /= 0 )
678 .
VALUE(i) = value(i) * gbuf%FILL(i)
680 value(i) = value(i) + lbuf%VISC(jj(3)+i)
684 ELSEIF(keyword ==
'SIGXY')
THEN
687 value(i) = gbuf%SIG(jj(4) + i)
688 is_written_value(i) = 1
689 IF( nfilsol /= 0 .AND. gbuf%G_FILL /= 0 )
690 . value(i) = value(i) * gbuf%FILL(i)
692 value(i) = value(i) + lbuf%VISC(jj(4)+i)
696 ELSEIF(keyword ==
'SIGYZ')
THEN
699 value(i) = gbuf%SIG(jj(5) + i)
700 is_written_value(i) = 1
701 IF( nfilsol /= 0 .AND. gbuf%G_FILL /= 0 )
702 . value(i) = value(i) * gbuf%FILL(i)
704 value(i) = value(i) + lbuf%VISC(jj(5)+i)
708 ELSEIF(keyword ==
'SIZX')
THEN
711 value(i) = gbuf%SIG(jj(6) + i)
712 is_written_value(i) = 1
713 IF( nfilsol /= 0 .AND. gbuf%G_FILL /= 0 )
714 . value(i) = value(i) * gbuf%FILL(i)
716 value(i) = value(i) + lbuf%VISC(jj(6)+i)
720 ELSEIF((keyword ==
'USER' .AND. mlw>=28 .AND. mlw/=51) .OR. keyword ==
'MDS')
THEN
724 IF( (keyword ==
'MDS' .AND. imat == idmds) .OR. keyword ==
'USER' )
THEN
726 IF (isolnod == 8 .AND. mlw == 59)
THEN
729 irupt = mat_param(mt)%FAIL(1)%IRUPT
730 nfail = elbuf_tab(ng)%BUFLY(1)%NFAIL
731 IF (irupt == 20)
THEN
736 . elbuf_tab(ng)%BUFLY(1)%FAIL(ipt,1,1)%FLOC(ir)%VAR
738 value(i) =
max(value(i),uvarf((iuvar-1)*nel + i))
739 is_written_value(i) = 1
749 mbuf => elbuf_tab(ng)%BUFLY(il)%MAT(ir,is,it)
754 IF (iuvar <= nuvar)
THEN
756 . + mbuf%VAR(i+(iuvar-1)*nel)/nptg
768 ELSEIF(keyword ==
'HOURGLASS')
THEN
771 value(i) = ehour(nft+i)
772 is_written_value(i) = 1
775 ELSEIF(keyword ==
'EPSD')
THEN
777 value(1:nel) = gbuf%EPSD(1:nel)
778 is_written_value(1:nel) = 1
780 ELSEIF(keyword ==
'WPLA' .AND. mlw == 25)
THEN
788 IF (isolnod == 16.OR.isolnod == 20.OR.
789 . (isolnod == 8.AND.jhbe == 14).OR.
790 . ((isolnod == 6.OR.isolnod == 8).AND.jhbe == 15))
THEN
792 IF (ius <= nptg)
THEN
794 IF (elbuf_tab(ng)%BUFLY(il)%L_PLA > 0)
THEN
799 lbuf=>elbuf_tab(ng)%BUFLY(il)%LBUF(ir,is,it)
801 value(i) = value(i) + lbuf%PLA(i)
802 is_written_value(i) = 1
812 ELSEIF (keyword ==
'FLAY' .AND. mlw == 25)
THEN
818 IF( isolnod == 16.OR.isolnod == 20.OR.
819 . (isolnod == 8.AND.jhbe == 14).OR.
820 . ((isolnod == 6 .OR. isolnod == 8).AND.jhbe == 15))
THEN
822 npg_plane = nptr * npts * nptt
829 lbuf=>elbuf_tab(ng)%BUFLY(il)%LBUF(j,k,l)
830 IF (lbuf%OFF(i) == 0) value(i) = value(i) + one
831 IF(int(value(i))>=npg_plane) evar(i)=evar(i)+one
832 is_written_value(i) = 1
840 ELSEIF(keyword ==
'VFRAC1')
THEN
848 uparam => bufmat(iadbuf:iadbuf+nuparam)
849 isubmat=uparam(276+1)
850 ius=m51_n0phas+(isubmat-1)*m51_nvphas
852 IF (mlw==51 .OR. mlw==37)
THEN
857 mbuf => elbuf_tab(ng)%BUFLY(il)%MAT(ir,is,it)
859 value(i) = value(i) + mbuf%VAR(i+(ius
860 is_written_value(i) = 1
868 ELSEIF(keyword ==
'VFRAC2')
THEN
876 uparam => bufmat(iadbuf:iadbuf+nuparam)
877 isubmat=uparam(276+2)
878 ius=m51_n0phas+(isubmat-1)*m51_nvphas
880 IF (mlw==51 .OR. mlw==37)
THEN
885 mbuf => elbuf_tab(ng)%BUFLY(il)%MAT(ir,is,it)
887 value(i) = value(i) + mbuf%VAR(i+(ius)*nel)/nptg
888 is_written_value(i) = 1
896 ELSEIF(keyword ==
'VFRAC3')
THEN
904 uparam => bufmat(iadbuf:iadbuf+nuparam)
905 isubmat=uparam(276+3)
906 ius=m51_n0phas+(isubmat-1)*m51_nvphas
915 value(i) = value(i) + mbuf%VAR(i+(ius)*nel)/nptg
916 is_written_value(i) = 1
924 ELSEIF(keyword ==
'VFRAC4')
THEN
933 isubmat=uparam(276+4)
934 ius=m51_n0phas+(isubmat-1)*m51_nvphas
941 mbuf => elbuf_tab(ng)%BUFLY(il)%MAT(ir,is,it)
944 is_written_value(i) = 1
952 ELSEIF(keyword(1:9) ==
'M151VFRAC')
THEN
954 IF (mlw == 151 .AND. multi_fvm%NBMAT > 1)
THEN
955 READ(keyword,
'(A9,I10)') buff, imat
956 IF (imat > 0 .AND. imat <= nlay)
THEN
958 value(i) = multi_fvm%PHASE_ALPHA(imat, i + nft)
959 is_written_value(i) = 1
964 ELSEIF(keyword(1:8) ==
'M151ENER')
THEN
966 IF (mlw == 151 .AND.
THEN
967 READ(keyword, '(a8,i10)
') BUFF, IMAT
968.AND.
IF (IMAT > 0 IMAT <= NLAY) THEN
970 IF (MULTI_FVM%PHASE_RHO(IMAT, I + NFT) > 0) THEN
971 VALUE(I) = MULTI_FVM%PHASE_EINT(IMAT, I + NFT) /
972 . MULTI_FVM%PHASE_RHO(IMAT, I + NFT)
976 IS_WRITTEN_VALUE(I) = 1
981 ELSEIF(KEYWORD(1:8) == 'm151pres
') THEN
983.AND.
IF (MLW == 151 MULTI_FVM%NBMAT > 1) THEN
984 READ(KEYWORD, '(a8,i10)
') BUFF, IMAT
985.AND.
IF (IMAT > 0 IMAT <= NLAY) THEN
987 VALUE(I) = MULTI_FVM%PHASE_PRES(IMAT, I + NFT)
988 IS_WRITTEN_VALUE(I) = 1
993 ELSEIF(KEYWORD(1:8) == 'm151dens
') THEN
995.AND.
IF (MLW == 151 MULTI_FVM%NBMAT > 1) THEN
996 READ(KEYWORD, '(a8,i10)
') BUFF, IMAT
997.AND.
IF (IMAT > 0 IMAT <= NLAY) THEN
999 VALUE(I) = MULTI_FVM%PHASE_RHO(IMAT, I + NFT)
1000 IS_WRITTEN_VALUE(I) = 1
1005 ELSEIF (KEYWORD == 'orthd/psi
')THEN
1009.AND..AND.
IF ( (ILAY <= NLAY ILAY > 0)
1010.AND..AND..AND..AND..AND.
. IR <= NPTR IR > 0 IS <= NPTS IS > 0 IT <= NPTT IT > 0) THEN
1011.OR..OR.
IF ( IGTYP == 6 IGTYP == 21 IGTYP == 22 ) THEN
1012 LBUF => ELBUF_TAB(NG)%BUFLY(MAX(1,ILAY))%LBUF(1,1,1)
1017.OR.
IF(IGTYP == 21 IGTYP == 22) THEN
1018 GAMA(1)= LBUF%GAMA(JJ(1)+I)
1019 GAMA(2)= LBUF%GAMA(JJ(2)+I)
1025 GAMA(1) = GBUF%GAMA(JJ(1)+I)
1026 GAMA(2) = GBUF%GAMA(JJ(2)+I)
1027 GAMA(3) = GBUF%GAMA(JJ(3)+I)
1028 GAMA(4) = GBUF%GAMA(JJ(4)+I)
1029 GAMA(5) = GBUF%GAMA(JJ(5)+I)
1030 GAMA(6) = GBUF%GAMA(JJ(6)+I)
1032 CALL SROTORTH(X,IXS(1,N),
1033 . GAMA,JHBE,IGTYP,IPARG(17,NG) )
1044 IF (ABS(T31) - ONE < EM20)THEN
1046 PSI = ATAN2(T32/COS(THETA),T33/COS(THETA))
1049 PSI = ATAN2(T12,T13)
1051 PSI = ATAN2(-T12,-T13)
1054 VALUE(I) = PSI*HUNDRED80/PI
1055 IS_WRITTEN_VALUE(I) = 1
1061 ELSEIF (KEYWORD == 'orthd/theta
')THEN
1065.AND..AND.
IF ( (ILAY <= NLAY ILAY > 0)
1066.AND..AND..AND..AND..AND.
. IR <= NPTR IR > 0 IS <= NPTS IS > 0 IT <= NPTT IT > 0) THEN
1067.OR..OR.
IF ( IGTYP == 6 IGTYP == 21 IGTYP == 22 ) THEN
1068 LBUF => ELBUF_TAB(NG)%BUFLY(MAX(1,ILAY))%LBUF(1,1,1)
1073.OR.
IF(IGTYP == 21 IGTYP == 22) THEN
1074 GAMA(1)= LBUF%GAMA(JJ(1)+I)
1075 GAMA(2)= LBUF%GAMA(JJ(2)+I)
1081 GAMA(1) = GBUF%GAMA(JJ(1)+I)
1082 GAMA(2) = GBUF%GAMA(JJ(2)+I)
1083 GAMA(3) = GBUF%GAMA(JJ(3)+I)
1084 GAMA(4) = GBUF%GAMA(JJ(4)+I)
1085 GAMA(5) = GBUF%GAMA(JJ(5)+I)
1086 GAMA(6) = GBUF%GAMA(JJ(6)+I)
1088 CALL SROTORTH(X,IXS(1,N),
1089 . GAMA,JHBE,IGTYP,IPARG(17,NG) )
1100 IF (ABS(T31) - ONE < EM20)THEN
1109 VALUE(I) = THETA*HUNDRED80/PI
1110 IS_WRITTEN_VALUE(I) = 1
1116 ELSEIF (KEYWORD == 'orthd/phi
')THEN
1120.AND..AND.
IF ( (ILAY <= NLAY ILAY > 0)
1121.AND..AND..AND..AND..AND.
. IR <= NPTR IR > 0 IS <= NPTS IS > 0 IT <= NPTT IT > 0) THEN
1122.OR..OR.
IF ( IGTYP == 6 IGTYP == 21 IGTYP == 22 ) THEN
1123 LBUF => ELBUF_TAB(NG)%BUFLY(MAX(1,ILAY))%LBUF(1,1,1)
1128.OR.
IF(IGTYP == 21 IGTYP == 22) THEN
1129 GAMA(1)= LBUF%GAMA(JJ(1)+I)
1130 GAMA(2)= LBUF%GAMA(JJ(2)+I)
1136 GAMA(1) = GBUF%GAMA(JJ(1)+I)
1137 GAMA(2) = GBUF%GAMA(JJ(2)+I)
1138 GAMA(3) = GBUF%GAMA(JJ(3)+I)
1139 GAMA(4) = GBUF%GAMA(JJ(4)+I)
1140 GAMA(5) = GBUF%GAMA(JJ(5)+I)
1141 GAMA(6) = GBUF%GAMA(JJ(6)+I)
1143 CALL SROTORTH(X,IXS(1,N),
1144 . GAMA,JHBE,IGTYP,IPARG(17,NG) )
1155 IF (ABS(T31) - ONE < EM20)THEN
1157 PHI = ATAN2(T21/COS(THETA),T11/COS(THETA))
1161 VALUE(I) = PHI*HUNDRED80/PI
1162 IS_WRITTEN_VALUE(I) = 1
1168 ELSEIF (KEYWORD == 'bfrac
')THEN
1170 !BURN FRACTION explosive EOS
1171 IF(GBUF%G_BFRAC > 0) THEN
1178 VALUE(I) = MAX(VALUE(I),MULTI_FVM%BFRAC(ILAY,I+NFT))
1179 IS_WRITTEN_VALUE(I) = 1
1183 VALUE(1:NEL) = GBUF%BFRAC(1:NEL)
1184 IS_WRITTEN_VALUE(1:NEL) = 1
1188 ELSEIF (KEYWORD == 'vdam1
')THEN
1191.AND..AND..AND.
IF ( ILAY == -1 IR == -1 IS == -1 IT == -1) THEN
1192.AND.
IF (ISOLNOD == 8 MLW == 83) THEN
1195 IRUPT = mat_param(MT)%FAIL(1)%IRUPT
1196 NFAIL = ELBUF_TAB(NG)%BUFLY(1)%NFAIL! ng= ngroup
1197 IF (IRUPT == 26) THEN
1202 . ELBUF_TAB(NG)%BUFLY(1)%FAIL(IPT,1,1)%FLOC(IR)%DAM
1204 EVAR(I) = MAX(EVAR(I) ,DAMF(I))
1210 IS_WRITTEN_VALUE(I) = 1
1215.AND..AND..AND.
ELSEIF ( ILAY == -1 IR >= 0 IR <= NPTR
1216.AND..AND..AND.
. IS >= 0 IS <= NPTS IT >= 0 IT <= NPTT) THEN
1217.AND.
IF (ISOLNOD == 8 MLW == 83) THEN
1220 IRUPT = mat_param(MT)%FAIL(1)%IRUPT
1221 NFAIL = ELBUF_TAB(NG)%BUFLY(1)%NFAIL! ng= ngroup
1222 IF (IRUPT == 26) THEN
1225 . ELBUF_TAB(NG)%BUFLY(1)%FAIL(IR,1,1)%FLOC(IIR)%DAM
1232 IS_WRITTEN_VALUE(I) = 1
1238 ELSEIF (KEYWORD == 'vdam2
')THEN
1241.AND..AND..AND.
IF ( ILAY == -1 IR == -1 IS == -1 IT == -1) THEN
1242.AND.
IF (ISOLNOD == 8 MLW == 83) THEN
1245 IRUPT = mat_param(MT)%FAIL(1)%IRUPT
1246 NFAIL = ELBUF_TAB(NG)%BUFLY(1)%NFAIL! ng= ngroup
1247 IF (IRUPT == 26) THEN
1252 . ELBUF_TAB(NG)%BUFLY(1)%FAIL(IPT,1,1)%FLOC(IR)%DAM
1254 EVAR(I) = MAX(EVAR(I) ,DAMF(NEL + I))
1260 IS_WRITTEN_VALUE(I) = 1
1265.AND..AND..AND.
ELSEIF ( ILAY == -1 IR >= 0 IR <= NPTR
1266.AND..AND..AND.
. IS >= 0 IS <= NPTS IT >= 0 IT <= NPTT) THEN
1267.AND.
IF (ISOLNOD == 8 MLW == 83) THEN
1270 IRUPT = mat_param(MT)%FAIL(1)%IRUPT
1271 NFAIL = ELBUF_TAB(NG)%BUFLY(1)%NFAIL! ng= ngroup
1272 IF (IRUPT == 26) THEN
1275 . ELBUF_TAB(NG)%BUFLY(1)%FAIL(IR,1,1)%FLOC(IIR)%DAM
1277 EVAR(I) = DAMF(NEL+I)
1282 IS_WRITTEN_VALUE(I) = 1
1288 ELSEIF (KEYWORD == 'vdam3
')THEN
1291.AND..AND..AND.
IF ( ILAY == -1 IR == -1 IS == -1 IT == -1) THEN
1292.AND.
IF (ISOLNOD == 8 MLW == 83) THEN
1295 IRUPT = mat_param(MT)%FAIL(1)%IRUPT
1296 NFAIL = ELBUF_TAB(NG)%BUFLY(1)%NFAIL! ng= ngroup
1297 IF (IRUPT == 26) THEN
1302 . ELBUF_TAB(NG)%BUFLY(1)%FAIL(IPT,1,1)%FLOC(IR)%DAM
1304 EVAR(I) = MAX(EVAR(I) ,DAMF(2*NEL + I))
1310 IS_WRITTEN_VALUE(I) = 1
1315.AND..AND..AND.
ELSEIF ( ILAY == -1 IR >= 0 IR <= NPTR
1316.AND..AND..AND.
. IS >= 0 IS <= NPTS IT >= 0 IT <= NPTT) THEN
1317.AND.
IF (ISOLNOD == 8 MLW == 83) THEN
1320 IRUPT = mat_param(MT)%FAIL(1)%IRUPT
1321 NFAIL = ELBUF_TAB(NG)%BUFLY(1)%NFAIL! ng= ngroup
1322 IF (IRUPT == 26) THEN
1325 . ELBUF_TAB(NG)%BUFLY(1)%FAIL(IR,1,1)%FLOC(IIR)%DAM
1327 EVAR(I) = DAMF(2*NEL+I)
1332 IS_WRITTEN_VALUE(I) = 1
1338 ELSEIF(KEYWORD == 'dama
') THEN
1341.AND..AND..AND.
IF ( ILAY == -1 IR == -1 IS == -1 IT == -1) THEN
1345 IF (MLW == 120) THEN
1351 . ELBUF_TAB(NG)%BUFLY(IL)%LBUF(IIR,IS,IT)%DMG
1353 VALUE(I) = MAX(VALUE(I),DFMAX(I))
1354 IS_WRITTEN_VALUE(I) = 1
1362 NFAIL = ELBUF_TAB(NG)%BUFLY(IL)%NFAIL
1368 . ELBUF_TAB(NG)%BUFLY(IL)%FAIL(IIR,IS,IT)%FLOC(IR)%DAMMX
1370 VALUE(I) = MAX(VALUE(I),DFMAX(I))
1371 IS_WRITTEN_VALUE(I) = 1
1380.AND..AND..AND.
ELSEIF ( ILAY == -1 IR >= 0 IR <= NPTR
1381.AND..AND..AND.
. IS >= 0 IS <= NPTS IT >= 0 IT <= NPTT) THEN
1382 IF (MLW == 120) THEN
1384 IUS = NLAY*IIR*IS*IT
1386.AND..AND.
IF (IIR <= NPTRIS <= NPTSIT <= NPTT) THEN
1388 DFMAX=>ELBUF_TAB(NG)%BUFLY(IL)%LBUF(IIR,IS,IT)%DMG
1390 VALUE(I) = MAX(VALUE(I),DFMAX(I))
1391 IS_WRITTEN_VALUE(I) = 1
1397 IUS = NLAY*IIR*IS*IT
1399.AND..AND.
IF (IIR <= NPTRIS <= NPTSIT <= NPTT) THEN
1401 NFAIL = ELBUF_TAB(NG)%BUFLY(IL)%NFAIL
1404 . ELBUF_TAB(NG)%BUFLY(IL)%FAIL(IIR,IS,IT)%FLOC(IR)%DAMMX
1406 VALUE(I) = MAX(VALUE(I),DFMAX(I))
1407 IS_WRITTEN_VALUE(I) = 1
1413.AND..AND..AND..AND.
ELSEIF ( ILAY > 0 ILAY <= NLAY IR >= 0 IR <= NPTR
1414.AND.
. IS >= 0 IS <= NPTS) THEN
1416 DFMAX=>ELBUF_TAB(NG)%BUFLY(ILAY)%LBUF(IR,IS,IT)%DMG
1418 VALUE(I) = MAX(VALUE(I),DFMAX(I))
1419 IS_WRITTEN_VALUE(I) = 1
1422 NFAIL = ELBUF_TAB(NG)%BUFLY(ILAY)%NFAIL
1425 . ELBUF_TAB(NG)%BUFLY(ILAY)%FAIL(IR,IS,IT)%FLOC(IIR)%DAMMX
1427 VALUE(I) = MAX(VALUE(I),DFMAX(I))
1428 IS_WRITTEN_VALUE(I) = 1
1434 ELSEIF(KEYWORD == 'failure')
THEN
1436 IF (mode == -1)
THEN
1438 IF ( ilay == -1 .AND. ir == -1 .AND. is == -1 .AND. it == -1)
THEN
1442 imat = elbuf_tab(ng)%BUFLY(il)%IMAT
1443 nfail = mat_param(imat)%NFAIL
1445 fail_id = mat_param(imat)%FAIL(ifail)%FAIL_ID
1446 IF (fail_id == id)
THEN
1450 fbuf => elbuf_tab(ng)%BUFLY(il)%FAIL(iir,is,it)
1452 value(i) = value(i) + dmgmx/(nptr*npts*nptt)
1453 is_written_value(i) = 1
1454 nlay_fail = nlay_fail + 1
1461 IF (nlay_fail > 0) value(i) = value(i)/nlay_fail
1464 ELSEIF ( ilay == -1 .AND. ir >= 0 .AND. ir <= nptr .AND.
1465 . is >= 0 .AND. is <= npts .AND. it >= 0 .AND. it <= nptt)
THEN
1467 IF (iir <= nptr.AND.is <= npts.AND.it <= nptt)
THEN
1471 imat = elbuf_tab(ng)%BUFLY(il
1472 nfail = mat_param(imat)%NFAIL
1474 fail_id = mat_param(imat)%FAIL(ifail)%FAIL_ID
1475 IF (fail_id == id)
THEN
1476 fbuf => elbuf_tab(ng
1477 value(i) = value(i) + fbuf%FLOC(ifail)%DAMMX(i)
1478 is_written_value(i) = 1
1479 nlay_fail = nlay_fail + 1
1483 IF (nlay_fail > 0) value(i) = value(i)/nlay_fail
1486 ELSEIF ( ilay > 0 .AND. ilay <= nlay .AND. ir >= 0 .AND. ir <= nptr .AND.
1487 . is >= 0 .AND. is <= npts)
THEN
1488 imat = elbuf_tab(ng)%BUFLY(ilay)%IMAT
1489 nfail = mat_param(imat)%NFAIL
1491 fail_id = mat_param(imat)%FAIL(ifail)%FAIL_ID
1492 IF (fail_id == id)
THEN
1493 fbuf => elbuf_tab(ng)%BUFLY(ilay)%FAIL(ir,is,it)
1495 value(i) = fbuf%FLOC(ifail)%DAMMX(i)
1496 is_written_value(i) = 1
1503 IF ( ilay == -1 .AND. ir == -1 .AND. is == -1 .AND. it == -1)
THEN
1507 imat = elbuf_tab(ng)%BUFLY(il)%IMAT
1508 nfail = mat_param(imat)%NFAIL
1510 fail_id = mat_param(imat)%FAIL(ifail)%FAIL_ID
1511 nmod = mat_param(imat)%FAIL(ifail)%NMOD
1512 IF ((fail_id == id).AND.(mode <= nmod))
THEN
1517 dmgmx = fbuf%FLOC(ifail)%DAMMX(mode*nel + i)
1518 value(i) = value(i) + dmgmx/(nptr*npts*nptt)
1519 is_written_value(i) = 1
1527 IF (nlay_fail > 0) value(i) = value(i)/nlay_fail
1530 ELSEIF ( ilay == -1 .AND. ir >= 0 .AND. ir <= nptr .AND.
1531 . is >= 0 .AND. is <= npts .AND. it >= 0 .AND. it <= nptt)
THEN
1533 IF (iir <= nptr.AND.is <= npts.AND.it <= nptt)
THEN
1537 imat = elbuf_tab(ng)%BUFLY(il)%IMAT
1538 nfail = mat_param(imat)%NFAIL
1540 fail_id = mat_param(imat)%FAIL(ifail)%FAIL_ID
1541 nmod = mat_param(imat)%FAIL(ifail)%NMOD
1542 IF ((fail_id == id).AND.(mode <= nmod))
THEN
1543 fbuf => elbuf_tab(ng)%BUFLY(il)%FAIL(iir,is,it)
1544 value(i) = value(i) + fbuf%FLOC(ifail)%DAMMX(mode*nel + i)
1545 is_written_value(i) = 1
1546 nlay_fail = nlay_fail
1550 IF (nlay_fail > 0) value(i) = value(i)/nlay_fail
1553 ELSEIF ( ilay > 0 .AND. ilay <= nlay .AND. ir >= 0 .AND. ir <= nptr .AND.
1554 . is >= 0 .AND. is <= npts)
THEN
1555 imat = elbuf_tab(ng)%BUFLY(ilay)%IMAT
1556 nfail = mat_param(imat)%NFAIL
1558 fail_id = mat_param(imat)%FAIL(ifail)%FAIL_ID
1559 nmod = mat_param(imat)%FAIL(ifail)%NMOD
1560 IF ((fail_id == id).AND.(mode <= nmod))
THEN
1561 fbuf => elbuf_tab(ng)%BUFLY(ilay)%FAIL(ir,is,it)
1564 is_written_value(i) = 1
1571 ELSEIF (keyword ==
'DAMG')
THEN
1574 IF (gbuf%G_DMG > 0)
THEN
1584 IF (ir == -1 .AND. is == -1 .AND. it == -1 .AND. ilay == -1)
THEN
1589 mat_id = mat_param(imat)%MAT_ID
1590 IF ((id == -1) .OR. ((id > 0).AND.(mat_id == id)))
THEN
1594 lbuf=>elbuf_tab(ng)%BUFLY(il)%LBUF(ir,is,it)
1596 value(i) = value(i) + lbuf%DMG(i)/nptg
1597 is_written_value(i) = 1
1606 ELSEIF ( ir >= 0 .AND. ir <= nptr .AND.
1607 . is >= 0 .AND. is <= npts .AND.
1608 . it >= 0 .AND. it <= nptt)
THEN
1612 imat = elbuf_tab(ng)%BUFLY(il)%IMAT
1613 mat_id = mat_param(imat)%MAT_ID
1614 IF ((id == -1) .OR. ((id > 0).AND.(mat_id == id)))
THEN
1617 value(i) = value(i) + lbuf%DMG(i)/nlay
1618 is_written_value(i) = 1
1624 ELSEIF (ilay > 0 .AND. ilay <= nlay)
THEN
1625 imat = elbuf_tab(ng)%BUFLY(ilay)%IMAT
1626 mat_id = mat_param(imat)%MAT_ID
1627 IF ((id == -1) .OR. ((id > 0).AND.(mat_id == id
THEN
1631 lbuf=>elbuf_tab(ng)%BUFLY(ilay)%LBUF(ir,is,it)
1633 value(i) = value(i) + lbuf%DMG(i)/(nptr*npts*nptt)
1634 is_written_value(i) = 1
1645 IF (ir == -1 .AND. is == -1 .AND. it == -1 .AND. ilay == -1)
THEN
1649 imat = elbuf_tab(ng)%BUFLY(il)%IMAT
1650 nmod = mat_param(imat)%NMOD
1651 mat_id = mat_param(imat)%MAT_ID
1652 IF ((nmod > 0 .AND. mode <= nmod) .AND. (mat_id == id))
THEN
1656 lbuf=>elbuf_tab(ng)%BUFLY(il)%LBUF(ir,is,it)
1658 value(i) = value(i) + lbuf%DMG(nel*mode+i)/nptg
1659 is_written_value(i) = 1
1668 ELSEIF ( ir >= 0 .AND. ir <= nptr .AND.
1669 . is >= 0 .AND. is <= npts .AND.
1670 . it >= 0 .AND. it <= nptt)
THEN
1674 imat = elbuf_tab(ng)%BUFLY(il)%IMAT
1675 nmod = mat_param(imat)%NMOD
1676 mat_id = mat_param(imat)%MAT_ID
1677 IF ((nmod > 0 .AND. mode <= nmod) .AND. (mat_id == id))
THEN
1678 lbuf => elbuf_tab(ng)%BUFLY(il)%LBUF(ir,is,it)
1680 value(i) =
VALUE(i) + lbuf%DMG(nel*mode+i)/nlay
1681 is_written_value(i) = 1
1687 ELSEIF (ilay > 0 .AND. ilay <= nlay)
THEN
1688 imat = elbuf_tab(ng)%BUFLY(ilay)%IMAT
1689 nmod = mat_param(imat)%NMOD
1690 mat_id = mat_param(imat)%MAT_ID
1691 IF ((nmod > 0 .AND. mode <= nmod) .AND. (mat_id == id))
THEN
1695 lbuf=>elbuf_tab(ng)%BUFLY(ilay)%LBUF(ir,is,it)
1697 value(i) = value(i) + lbuf%DMG(nel*mode+i)/(nptr*npts*nptt)
1698 is_written_value(i) = 1
1709 ELSEIF (keyword ==
'DAMINI')
THEN
1716 IF ( ilay == -1 .AND. ir == -1 .AND. is == -1 .AND. it == -1)
THEN
1718 nfail = elbuf_tab(ng)%BUFLY(il)%NFAIL
1722 fbuf => elbuf_tab(ng)%BUFLY(il)%FAIL(iir,is,it)
1726 IF (fbuf%FLOC(ir)%LF_DAMINI > 0)
THEN
1727 maxdamini =
max(maxdamini,fbuf%FLOC(ir
1738 ELSEIF ( ilay == -1 .AND. ir >= 0 .AND. ir <= nptr .AND.
1739 . is >= 0 .AND. is <= npts .AND. it >= 0 .AND. it <= nptt)
THEN
1741 IF (iir <= nptr .AND. is <= npts .AND. it <= nptt)
THEN
1743 nfail = elbuf_tab(ng)%BUFLY(il)%NFAIL
1744 fbuf => elbuf_tab(ng)%BUFLY(il)%FAIL(iir,is,it)
1748 IF (fbuf%FLOC(ir)%LF_DAMINI > 0)
THEN
1749 maxdamini =
max(maxdamini,fbuf%FLOC(ir)%DAMINI(i))
1752 value(i) = value(i) + maxdamini/nlay
1753 is_written_value(i) = 1
1758 ELSEIF ( ilay > 0 .AND. ilay <= nlay .AND. ir >= 0 .AND. ir <= nptr .AND.
1759 . is >= 0 .AND. is <= npts)
THEN
1760 nfail = elbuf_tab(ng)%BUFLY(ilay)%NFAIL
1761 fbuf => elbuf_tab(ng)%BUFLY(ilay)%FAIL(ir,is,it)
1765 IF (fbuf%FLOC(iir)%LF_DAMINI > 0)
THEN
1766 maxdamini =
max(maxdamini,fbuf%FLOC(iir)%DAMINI(i))
1769 value(i) = maxdamini
1770 is_written_value(i) = 1
1774 ELSEIF(keyword ==
'TDEL')
THEN
1777 nfail = elbuf_tab(ng)%BUFLY(il)%NFAIL
1783 . elbuf_tab(ng)%BUFLY(il)%FAIL(iir,is,it)%FLOC(ir)%TDEL
1785 value(i) =
max(value(i),tdele(i))
1786 is_written_value(i) = 1
1794 ELSEIF(keyword ==
'SSP')
THEN
1796 IF (mlw == 151)
THEN
1798 value(i) = multi_fvm%SOUND_SPEED(i + nft)
1799 is_written_value(i) = 1
1802 l = elbuf_tab(ng)%BUFLY(1)%L_SSP
1805 value(i) = lbuf%SSP(i)
1806 is_written_value(i) = 1
1811 ELSEIF(keyword ==
'VOLU')
THEN
1813 IF (gbuf%G_VOL > 0)
THEN
1814 ialel=iparg(7,ng)+iparg(11,ng)
1818 value(i) = pm(1,mt)*gbuf%VOL(i)
1819 IF(gbuf%RHO(i)>zero)value(i) =
VALUE(i)/gbuf%RHO(i)
1820 is_written_value(i) = 1
1824 value(i) = gbuf%VOL(i)
1825 is_written_value(i) = 1
1830 ELSEIF(keyword ==
'SCHLIEREN')
THEN
1832 ialel=iparg(7,ng)+iparg(11,ng)
1836 2 iparg ,wa_l ,elbuf_tab ,ale_connect ,gbuf%VOL,
1840 is_written_value(i) = 1
1844 ELSEIF(keyword ==
'DOMAIN')
THEN
1848 is_written_value(i) = 1
1851 ELSEIF(keyword ==
'FILL')
THEN
1854 value(i) = gbuf%FILL(i)
1855 is_written_value(i) = 1
1858 ELSEIF (keyword ==
'SIGEQ')
THEN
1861 IF (gbuf%G_SEQ > 0)
THEN
1863 nptg = nlay*nptr*npts*nptt
1868 lbuf => elbuf_tab(ng)%BUFLY(il)%LBUF(ir,is,it)
1869 IF (elbuf_tab(ng)%BUFLY(il)%L_SEQ > 0)
THEN
1871 value(i) = value(i) + lbuf%SEQ(i)/nptg
1872 is_written_value(i) = 1
1876 s11 = lbuf%SIG(jj(1) + i)
1877 s22 = lbuf%SIG(jj(2) + i)
1878 s33 = lbuf%SIG(jj(3) + i)
1879 s4 = lbuf%SIG(jj(4) + i)
1880 s5 = lbuf%SIG(jj(5) + i)
1881 s6 = lbuf%SIG(jj(6) + i)
1883 s11 = s11 + lbuf%VISC(jj(1) + i)
1884 s22 = s22 + lbuf%VISC(jj(2) + i)
1885 s33 = s33 + lbuf%VISC(jj(3) + i)
1886 s4 = s4 + lbuf%VISC(jj(4) + i)
1887 s5 = s5 + lbuf%VISC(jj(5) + i)
1890 p = - (s11 + s22 + s33) * third
1894 vonm2 = three*(s4*s4 + s5*s5 + s6*s6 +
1895 . half*(s1*s1 + s2*s2 + s3*s3))
1897 value(i) = value(i) + vonm/nptg
1898 is_written_value(i) = 1
1907 s11 = gbuf%SIG(jj(1) + i)
1908 s22 = gbuf%SIG(jj(2) + i)
1909 s33 = gbuf%SIG(jj(3) + i)
1910 s4 = gbuf%SIG(jj(4) + i)
1911 s5 = gbuf%SIG(jj(5) + i)
1912 s6 = gbuf%SIG(jj(6) + i)
1914 s11 = s11 + lbuf%VISC(jj(1) + i)
1915 s22 = s22 + lbuf%VISC(jj(2) + i)
1916 s33 = s33 + lbuf%VISC(jj(3) + i)
1917 s4 = s4 + lbuf%VISC(jj(4) + i)
1918 s5 = s5 + lbuf%VISC(jj(5) + i)
1919 s6 = s6 + lbuf%VISC(jj(6) + i)
1921 p = - (s11 + s22 + s33) * third
1925 vonm2 = three*(s4*s4 + s5*s5 + s6*s6 +
1926 . half*(s1*s1 + s2*s2 + s3*s3))
1929 is_written_value(i) = 1
1933 ELSEIF (keyword ==
'NL_EPSP')
THEN
1935 IF (gbuf%G_PLANL > 0)
THEN
1939 IF (ilay == -1)
THEN
1941 IF (elbuf_tab(ng)%BUFLY(il)%L_PLANL > 0)
THEN
1945 lbuf=>elbuf_tab(ng)%BUFLY(il)%LBUF(ir,is,it)
1947 value(i) = value(i) + lbuf%PLANL(i)/nptg
1948 is_written_value(i) = 1
1956 IF (elbuf_tab(ng)%BUFLY(ilay)%L_PLANL > 0)
THEN
1960 lbuf=>elbuf_tab(ng)%BUFLY(ilay)%LBUF(ir,is,it)
1962 value(i) = value(i) + lbuf%PLANL(i)/(nptr*npts*nptt)
1963 is_written_value(i) = 1
1972 ELSEIF (keyword ==
'NL_EPSD')
THEN
1974 IF (gbuf%G_EPSDNL > 0)
THEN
1979 IF (elbuf_tab(ng)%BUFLY(il)%L_EPSDNL > 0)
THEN
1983 lbuf=>elbuf_tab(ng)%BUFLY(il)%LBUF(ir,is,it)
1985 value(i) = value(i) + lbuf%EPSDNL(i)/nptg
1986 is_written_value(i) = 1
1995 ELSEIF (keyword ==
'BULK')
THEN
1997 IF (gbuf%G_QVIS > 0)
THEN
1999 value(i) = gbuf%QVIS(i)
2000 is_written_value(i) = 1
2004 ELSEIF (keyword ==
'TDET')
THEN
2006 IF (gbuf%G_TB > 0)
THEN
2008 value(i) = -gbuf%TB(i)
2009 is_written_value(i) = 1
2013 ELSEIF (keyword ==
'MOMX')
THEN
2016 ialefvm_flg = ipm(251,mt)
2017 IF(ialefvm_flg >= 2)
THEN
2018 IF (isolnod == 8)
THEN
2020 value(i) = gbuf%MOM(jj(1) + i)
2021 is_written_value(i) = 1
2026 ELSEIF (keyword ==
'MOMY')
THEN
2029 ialefvm_flg = ipm(251,mt)
2030 IF(ialefvm_flg >= 2)
THEN
2031 IF (isolnod == 8)
THEN
2033 value(i) = gbuf%MOM(jj(2) + i)
2034 is_written_value(i) = 1
2039 ELSEIF (keyword ==
'MOMZ')
THEN
2042 ialefvm_flg = ipm(251,mt)
2043 IF(ialefvm_flg >= 2)
THEN
2044 IF (isolnod == 8)
THEN
2046 value(i) = gbuf%MOM(jj(3) + i)
2047 is_written_value(i) = 1
2052 ELSEIF (keyword ==
'MOMXY')
THEN
2055 ialefvm_flg = ipm(251,mt)
2056 IF(ialefvm_flg >= 2)
THEN
2059 value(i) = sqrt( gbuf%MOM(jj(1)+i)*gbuf%MOM(jj(1)+i)+
2060 . gbuf%MOM(jj(2)+i)*gbuf%MOM(jj(2)+i) )
2061 is_written_value(i) = 1
2066 ELSEIF (keyword ==
'MOMYZ')
THEN
2069 ialefvm_flg = ipm(251,mt)
2070 IF(ialefvm_flg >= 2)
THEN
2071 IF (isolnod == 8)
THEN
2073 value(i) = sqrt( gbuf%MOM(jj(1)+i)*gbuf%MOM
2074 . gbuf%MOM(jj(3)+i)*gbuf%MOM(jj(3)+i) )
2075 is_written_value(i) = 1
2080 ELSEIF (keyword ==
'MOMXZ')
THEN
2083 ialefvm_flg = ipm(251,mt)
2084 IF(ialefvm_flg >= 2)
THEN
2085 IF (isolnod == 8)
THEN
2087 value(i) = sqrt( gbuf%MOM(jj(1)+i)*gbuf%MOM(jj(1)+i)+
2088 . gbuf%MOM(jj(3)+i)*gbuf%MOM(jj(3)+i) )
2089 is_written_value(i) = 1
2094 ELSEIF (keyword ==
'|MOM|')
THEN
2097 ialefvm_flg = ipm(251,mt)
2098 IF(ialefvm_flg >= 2)
THEN
2099 IF (isolnod == 8)
THEN
2101 value(i) = sqrt( gbuf%MOM(jj(1)+i)*gbuf%MOM(jj(1)+i)+
2102 . gbuf%MOM(jj(2)+i)*gbuf%MOM(jj(2)+i)+
2103 . gbuf%MOM(jj(3)+i)*gbuf%MOM(jj(3)+i) )
2104 is_written_value(i) = 1
2109 ELSEIF (keyword ==
'VELX')
THEN
2112 ialefvm_flg = ipm(251,mt)
2113 IF (mlw == 151)
THEN
2115 value(i) = multi_fvm%VEL(1, i + nft)
2116 is_written_value(i) = 1
2118 ELSEIF(ialefvm_flg >= 2)
THEN
2119 IF (isolnod == 8)
THEN
2121 value(i) = gbuf%MOM(jj(1) + i) / gbuf%RHO(i)
2122 is_written_value(i) = 1
2127 ELSEIF (keyword ==
'VELY')
THEN
2130 ialefvm_flg = ipm(251,mt)
2131 IF (mlw == 151)
THEN
2133 value(i) = multi_fvm%VEL(2, i + nft)
2134 is_written_value(i) = 1
2136 ELSEIF(ialefvm_flg >= 2)
THEN
2137 IF (isolnod == 8)
THEN
2139 value(i) = gbuf%MOM(jj(2) + i) / gbuf%RHO(i)
2140 is_written_value(i) = 1
2145 ELSEIF (keyword ==
'VELZ')
THEN
2148 ialefvm_flg = ipm(251,mt)
2149 IF (mlw == 151)
THEN
2151 value(i) = multi_fvm%VEL(3, i + nft)
2152 is_written_value(i) = 1
2154 ELSEIF(ialefvm_flg >= 2)
THEN
2155 IF (isolnod == 8)
THEN
2157 value(i) = gbuf%MOM(jj(3) + i) / gbuf%RHO(i)
2158 is_written_value(i) = 1
2163 ELSEIF (keyword ==
'VELXY')
THEN
2166 ialefvm_flg = ipm(251,mt)
2167 IF(ialefvm_flg >= 2)
THEN
2168 IF (isolnod == 8)
THEN
2170 value(i) = sqrt( gbuf%MOM(jj(1)+i)*gbuf%MOM(jj(1)+i)+
2171 . gbuf%MOM(jj(2)+i)*gbuf%MOM(jj(2)+i) ) / gbuf%RHO(i)
2172 is_written_value(i) = 1
2177 ELSEIF (keyword ==
'VELYZ')
THEN
2180 ialefvm_flg = ipm(251,mt)
2181 IF(ialefvm_flg >= 2)
THEN
2182 IF (isolnod == 8)
THEN
2184 value(i) = sqrt( gbuf%MOM(jj(1)+i)*gbuf%MOM(jj(1)+i)+
2185 . gbuf%MOM(jj(3)+i)*gbuf%MOM(jj(3)+i) ) / gbuf%RHO(i)
2186 is_written_value(i) = 1
2191 ELSEIF (keyword ==
'VELXZ')
THEN
2194 ialefvm_flg = ipm(251,mt)
2195 IF(ialefvm_flg >= 2)
THEN
2196 IF (isolnod == 8)
THEN
2198 value(i) = sqrt( gbuf%MOM(jj(1)+i)*gbuf%MOM(jj(1)+i)+
2200 is_written_value(i) = 1
2205 ELSEIF (keyword ==
'|VEL|')
THEN
2208 ialefvm_flg = ipm(251,mt)
2209 IF(ialefvm_flg >= 2)
THEN
2210 IF (isolnod == 8)
THEN
2212 value(i) = sqrt( gbuf%MOM(jj(1)+i)*gbuf%MOM(jj(1)+i)+
2213 . gbuf%MOM(jj(2)+i)*gbuf%MOM
2214 . gbuf%MOM(jj(3)+i)*gbuf%MOM(jj(3)+i)
2215 is_written_value(i) = 1
2220 ELSEIF (keyword ==
'AMS')
THEN
2222 IF(gbuf%G_ISMS > 0)
THEN
2224 value(i) = gbuf%ISMS(i)
2225 is_written_value(i) = 1
2229 ELSEIF (keyword ==
'EINTM' .OR. keyword ==
'ENER')
THEN
2232 IF (mlw == 151)
THEN
2234 value(i) = multi_fvm%EINT(i + nft) / multi_fvm%RHO(i + nft) !
2235 is_written_value(i) = 1
2238 ialel=iparg(7,ng)+iparg(11,ng)
2243 value(i) = gbuf%EINT(i)/
max(em20,pm(89,mt))
2244 is_written_value(i) = 1
2248 value(i) = gbuf%EINT(i)/
max(em20,gbuf%RHO(i))
2249 is_written_value(i) = 1
2254 ELSEIF (keyword ==
'EINTV')
THEN
2256 IF (mlw == 151)
THEN
2258 value(i) = multi_fvm%EINT(i + nft)
2259 is_written_value(i) = 1
2262 ialel=iparg(7,ng)+iparg(11,ng)
2267 value(i) = gbuf%EINT(i)/
max(em20,pm(89,mt))*gbuf%RHO(i)
2268 is_written_value(i) = 1
2272 value(i) = gbuf%EINT(i)
2273 is_written_value(i) = 1
2278 ELSEIF (keyword ==
'EINT')
THEN
2280 IF (mlw == 151)
THEN
2282 value(i) = multi_fvm%EINT(i + nft) * gbuf%VOL(i)
2283 is_written_value(i) = 1
2286 ialel=iparg(7,ng)+iparg(11,ng)
2291 vol=gbuf%VOL(i)*pm(89,mt)/gbuf%RHO(i)
2292 value(i) = gbuf%EINT(i)/pm(89,mt)*gbuf%RHO(i)*vol
2293 is_written_value(i) = 1
2297 value(i) = gbuf%EINT(i)*gbuf%VOL(i)
2298 is_written_value(i) = 1
2303 ELSEIF (keyword(1:4) ==
'ENTH')
THEN
2305 IF (mlw == 151)
THEN
2307 pres(i) = multi_fvm%PRES(i + nft)
2311 pres(i) = - (gbuf%SIG(jj(1) + i)+ gbuf%SIG(jj(2) + i) + gbuf%SIG(jj(3) + i))*third
2316 IF(keyword ==
'ENTH')
THEN
2317 IF (mlw == 151)
THEN
2319 value(i) = multi_fvm%EINT(i + nft) / multi_fvm%RHO(i + nft) + pres(i)*gbuf%VOL(i)
2320 is_written_value(i) = 1
2323 ialel=iparg(7,ng)+iparg(11,ng)
2328 mass0=gbuf%VOL(i)*pm(89,mt)
2329 vol=mass0/
max(em20,gbuf%RHO(i))
2330 value(i) = gbuf%EINT(i)/
max(em20,pm(89,mt)) + pres(i)*vol
2331 is_written_value(i) = 1
2335 value(i) = gbuf%EINT(i)/gbuf%RHO(i) + pres(i)*gbuf%VOL(i)
2336 is_written_value(i) = 1
2341 ELSEIF(keyword ==
'ENTHV')
THEN
2342 IF (mlw == 151)
THEN
2344 value(i) = multi_fvm%EINT(i + nft) / multi_fvm%RHO(i + nft)/gbuf%VOL(i) + pres(i)
2345 is_written_value(i) = 1
2348 ialel=iparg(7,ng)+iparg(11,ng)
2353 mass0=gbuf%VOL(i)*pm(89,mt)
2354 vol=mass0/
max(em20,gbuf%RHO(i))
2355 value(i) = gbuf%EINT(i)/
max(em20,pm(89,mt))/vol + pres(i)
2356 is_written_value(i) = 1
2360 value(i) = gbuf%EINT(i)/gbuf%VOL(i)/gbuf%RHO(i) + pres(i)
2361 is_written_value(i) = 1
2366 ELSEIF(keyword ==
'ENTHM')
THEN
2367 IF (mlw == 151)
THEN
2369 mass(i) = multi_fvm%RHO(i + nft)*gbuf%VOL(i)
2370 value(i) = (multi_fvm%EINT(i + nft) / multi_fvm%RHO(i + nft) + pres(i)*gbuf%VOL(i))/mass(i)
2371 is_written_value(i) = 1
2374 ialel=iparg(7,ng)+iparg(11,ng)
2379 mass0=gbuf%VOL(i)*pm(89,mt)
2380 vol=mass0/
max(em20,gbuf%RHO(i))
2382 value(i) = (gbuf%EINT(i)/
max(em20,pm(89,mt)) + pres(i)*vol)/mass(i)
2383 is_written_value(i) = 1
2387 mass(i)=gbuf%RHO(i)*gbuf%VOL(i)
2388 VALUE(i) = (gbuf%EINT(i)/gbuf%RHO(i) + pres(i)*gbuf%VOL(i))/mass(i)
2389 is_written_value(i) = 1
2395 ELSEIF(keyword ==
'OFF')
THEN
2398 IF (gbuf%G_OFF > 0)
THEN
2399 IF(gbuf%OFF(i) > one)
THEN
2400 value(i) = gbuf%OFF(i) - one
2401 ELSEIF((gbuf%OFF(i) >= zero .AND. gbuf%OFF(i) <= one))
THEN
2402 value(i) = gbuf%OFF(i)
2407 is_written_value(i) = 1
2410 ELSEIF(keyword ==
'MACH')
THEN
2412 IF (mlw == 151)
THEN
2414 vel(1) = multi_fvm%VEL(1, i + nft)
2415 vel(2) = multi_fvm%VEL(2, i + nft)
2416 vel(3) = multi_fvm%VEL(3, i + nft)
2417 vel(0) = sqrt(vel(1)*vel(1)+vel(2)*vel(2)+vel(3)*vel(3))
2418 value(i) = vel(0)/multi_fvm%SOUND_SPEED(i + nft)
2419 is_written_value(i) = 1
2422 l = elbuf_tab(ng)%BUFLY(1)%L_SSP
2423 IF(elbuf_tab(ng)%BUFLY(1)%L_SSP /= 0)
THEN
2424 lbuf => elbuf_tab(ng)%BUFLY(1)%LBUF(1,1,1)
2426 vel(1) = gbuf%MOM(jj(1) + i) / gbuf%RHO(i)
2427 vel(2) = gbuf%MOM(jj(2) + i) / gbuf%RHO(i)
2428 vel(3) = gbuf%MOM(jj(3) + i) / gbuf%RHO(i)
2429 vel(0) = sqrt(vel(1)*vel(1)+vel(2)*vel(2)+vel(3)*vel(3))
2430 value(i) = vel(0)/lbuf%SSP(i)
2431 is_written_value(i) = 1
2435 l = elbuf_tab(ng)%BUFLY(1)%L_SSP
2436 IF(elbuf_tab(ng)%BUFLY(1)%L_SSP /= 0)
THEN
2437 lbuf => elbuf_tab(ng)%BUFLY(1)%LBUF(1,1,1)
2440 tmp_2(1:nel,1:3) = zero
2443 tmp_2(i,1)=tmp_2(i,1) + v(1,ixs(j+1,i+nft))-w(1,ixs(j+1,i+nft))
2444 tmp_2(i,2)=tmp_2(i,2) + v(2,ixs(j+1,i+nft))-w(2,ixs(j+1,i+nft))
2445 tmp_2(i,3)=tmp_2(i,3) + v(3,ixs(j+1,i+nft))-w(3,ixs(j+1,i+nft))
2449 vel(1) = tmp_2(i,1)*one_over_8
2450 vel(2) = tmp_2(i,2)*one_over_8
2451 vel(3) = tmp_2(i,3)*one_over_8
2452 value(i) = sqrt(vel(1)*vel(1)+vel(2)*vel(2)+vel(3)*vel(3))/lbuf%SSP(i)
2453 is_written_value(i) = 1
2457 tmp_2(1:nel,1:3) = zero
2460 tmp_2(i,1)=tmp_2(i,1)+v(1,ixs(j+1,i+nft))
2461 tmp_2(i,2)=tmp_2(i,2)+v(2,ixs(j+1,i+nft))
2462 tmp_2(i,3)=tmp_2(i,3)+v(3,ixs(j+1,i+nft))
2466 vel(1) = tmp_2(i,1)*one_over_8
2467 vel(2) = tmp_2(i,2)*one_over_8
2468 vel(3) = tmp_2(i,3)*one_over_8
2469 value(i) = sqrt(vel(1)*vel(1)+vel(2)*vel(2)+vel(3)*vel(3))/lbuf%SSP(i)
2470 is_written_value(i) = 1
2476 ELSEIF(keyword ==
'GROUP')
THEN
2480 is_written_value(i) = 1
2483 ELSEIF(keyword ==
'INTERNAL.ID')
THEN
2487 is_written_value(i) = 1
2490 ELSEIF(keyword ==
'LOCAL.ID')
THEN
2494 is_written_value(i) = 1
2497 ELSEIF(keyword ==
'THICK' )
THEN
2502 IF (isolnod == 6 )
THEN
2506 nc(1:3) = ixs(2:4,n)
2507 nc(4:6) = ixs(6:8,n)
2508 g1(i,1:3) = x(1:3,nc(2))-x(1:3,nc(1))+x(1:3,nc(5))-x(1:3,nc(4))
2509 g2(i,1:3) = x(1:3,nc(3))-x(1:3,nc(1))+x(1:3,nc(6))-x(1:3,nc(4))
2511 CALL ths_marea(g1(1,1),g1(1,2),g1(1,3),g2(1,1),g2(1,2),g2(1,3),det,nel)
2513 voln(i)=gbuf%VOL(i)*rho0/gbuf%RHO(i)
2514 aream(i) =one_over_8*det(i)
2515 value(i) = voln(i)/aream(i)
2516 is_written_value(i) = 1
2518 ELSEIF (isolnod == 8 )
THEN
2523 nc(1:8) = ixs(2:9,n)
2524 g1(i,1:3) = x(1:3,nc(2))+x(1:3,nc(3))+x(1:3,nc(6))+x(1:3,nc(7))
2525 . -x(1:3,nc(1))-x(1:3,nc(4))-x(1:3,nc(5))-x(1:3,nc(8))
2526 g2(i,1:3) = x(1:3,nc(3))+x(1:3,nc(4))+x(1:3,nc(7))+x(1:3,nc(8))
2527 . -x(1:3,nc(1))-x(1:3,nc(2))-x(1:3,nc(5))-x(1:3,nc(6))
2528 g3(i,1:3) = x(1:3,nc(5))+x(1:3,nc(6))+x(1:3,nc(7))+x(1:3,nc(8))
2529 . -x(1:3,nc(1))-x(1:3,nc(2))-x(1:3,nc(3))-x(1:3,nc(4))
2533 CALL ths_vol(g1(1,1),g1(1,2),g1(1,3),g2(1,1),g2(1,2),g2(1,3),
2534 . g3(1,1),g3(1,2),g3(1,3),det,nel)
2535 voln(1:nel)=zep015625*det(1:nel)
2539 icsig = iparg(17,ng)
2542 CALL ths_marea(g2(1,1),g2(1,2),g2(1,3),g3(1,1),g3(1,2),g3(1,3),det,nel)
2544 CALL ths_marea(g1(1,1),g1(1,2),g1(1,3),g2(1,1),g2(1,2),g2(1,3),det,nel)
2546 CALL ths_marea(g3(1,1),g3(1,2),g3(1,3),g1(1,1),g1(1,2),g1(1,3),det,nel)
2549 aream(i) =one_over_16*det(i)
2550 value(i) = voln(i)/aream(i)
2551 is_written_value(i) = 1
2556 nc(1:8) = ixs(2:9,n)
2557 g1(i,1:3) = x(1:3,nc(2))+x(1:3,nc(3))+x(1:3,nc(6))+x(1:3,nc(7))
2558 . -x(1:3,nc(1))-x(1:3,nc(4))-x(1:3,nc(5))-x(1:3,nc(8))
2559 g2(i,1:3) = x(1:3,nc(3))+x(1:3,nc(4))+x(1:3,nc(7))+x(1:3,nc(8))
2560 . -x(1:3,nc(1))-x(1:3,nc(2))-x(1:3,nc(5))-x(1:3,nc(6))
2562 CALL ths_marea(g1(1,1),g1(1,2),g1(1,3),g2(1,1),g2(1,2),g2(1,3),det,nel)
2564 voln(i)=gbuf%VOL(i)*rho0/gbuf%RHO(i)
2565 aream(i) =one_over_16*det(i)
2566 value(i) = voln(i)/aream(i)
2567 is_written_value(i) = 1
2570 ELSEIF (isolnod == 16 .OR. isolnod == 20)
THEN
2574 nc(1:8) = ixs(2:9,n)
2575 g1(i,1:3) = x(1:3,nc(2))+x(1:3,nc(3))+x(1:3,nc(6))+x(1:3,nc
2576 . -x(1:3,nc(1))-x(1:3,nc(4))-x(1:3,nc(5))-x(1:3,nc(8))
2577 g2(i,1:3) = x(1:3,nc(3))+x(1:3,nc(4))+x(1:3,nc(7))+x(1:3,nc(8))
2578 . -x(1:3,nc(1))-x(1:3,nc(2))-x(1:3,nc(5))-x(1:3,nc(6))
2580 CALL ths_marea(g1(1,1),g1(1,2),g1(1,3),g2(1,1),g2(1,2),g2(1,3),det,nel)
2582 voln(i)=gbuf%VOL(i)*rho0/gbuf%RHO(i)
2583 aream(i) =one_over_16*det(i)
2584 value(i) = voln(i)/aream(i)
2585 is_written_value(i) = 1
2587 ELSEIF (isolnod == 4 .OR. isolnod == 10)
THEN
2590 ELSEIF(keyword ==
'THIN')
THEN
2597 lbuf => elbuf_tab(ng)%BUFLY(ilay)%LBUF(1,1,1)
2599 ezz(i) = ezz(i)+fac*lbuf%STRA(jj(3)+i)
2602 value(1:nel) = -hundred*(exp(ezz(1:nel))-one)
2603 is_written_value(1:nel) = 1
2604 ELSEIF (jhbe==14 )
THEN
2605 fac = one/(nlay*nptr*npts)
2609 lbuf => elbuf_tab(ng)%BUFLY(ilay)%LBUF(ir,is,1)
2611 ezz(i) = ezz(i)+fac*lbuf%STRA(jj(3)+i)
2616 value(1:nel) = -hundred*(exp(ezz(1:nel))-one)
2617 is_written_value(1:nel) = 1
2618 ELSEIF (jhbe==16 )
THEN
2621 nc(1:8) = ixs(2:9,n)
2622 g3(i,1:3) = x(1:3,nc(5))+x(1:3,nc(6))+x(1:3,nc(7))+x(1:3,nc(8))
2623 . -x(1:3,nc(1))-x(1:3,nc(2))-x(1:3,nc(3))-x(1:3,nc(4))
2625 fac = one/(nlay*nptr*nptt)
2629 lbuf => elbuf_tab(ng)%BUFLY(ilay)%LBUF(ir,1,it)
2633 . +g3(i,2)*g3(i,2)*lbuf%STRA(jj(2)+i)
2634 . +g3(i,3)*g3(i,3)*lbuf%STRA(jj(3)+i)
2635 . +g3(i,1)*g3(i,2)*lbuf%STRA(jj(4)+i)
2636 . +g3(i,2)*g3(i,3)*lbuf%STRA(jj(5)+i)
2637 . +g3(i,3)*g3(i,1)*lbuf%STRA(jj(6)+i)
2638 ezz(i) = ezz(i)+fac*e33
2643 value(1:nel) = hundred*ezz(1:nel)
2644 is_written_value(1:nel) = 1
2646 ELSEIF (isolnod == 8 .OR. isolnod == 20)
THEN
2650 nc(1:8) = ixs(2:9,n)
2652 . -x(1:3,nc(1))-x(1:3,nc(2))-x(1:3,nc(3))-x(1:3,nc(4))
2654 fac = one/(nptr*npts*nptt)
2660 e33 = g3(i,1)*g3(i,1)*lbuf%STRA(jj(1)+i)
2661 . +g3(i,2)*g3(i,2)*lbuf%STRA(jj(2)+i)
2662 . +g3(i,3)*g3(i,3)*lbuf%STRA(jj(3)+i)
2663 . +g3(i,1)*g3(i,2)*lbuf%STRA(jj(4)+i)
2664 . +g3(i,2)*g3(i,3)*lbuf%STRA(jj(5)+i)
2671 value(1:nel) = hundred*ezz(1:nel)
2672 is_written_value(1:nel) = 1
2674 fac = one/(nptr*npts*nptt)
2680 lbuf => elbuf_tab(ng)%BUFLY(1)%LBUF(ir,is,it)
2682 ezz(i) = ezz(i)+fac*lbuf%STRA(jj(2)+i)
2687 value(1:nel) = hundred*ezz(1:nel)
2688 is_written_value(1:nel) = 1
2693 lbuf => elbuf_tab(ng)%BUFLY(1)%LBUF(ir,is,it)
2695 ezz(i) = ezz(i)+fac*lbuf%STRA(jj(3)+i)
2700 value(1:nel) = hundred*ezz(1:nel)
2701 is_written_value(1:nel) = 1
2706 ELSEIF(keyword ==
'COLOR')
THEN
2708 gbuf => elbuf_tab(ng)%GBUF
2709 IF (mlw == 151)
THEN
2710 nfrac=multi_fvm%NBMAT
2712 lbuf => elbuf_tab(ng)%BUFLY(imat)%LBUF(1,1,1)
2714 vfrac(i,imat) = lbuf%VOL(i) / gbuf%VOL(i)
2717 ELSEIF(mlw == 20)
THEN
2720 vfrac(i,1) = elbuf_tab(ng)%BUFLY(1)%LBUF(1,1,1)%VOL(i) / gbuf%VOL(i)
2721 vfrac(i,2) = elbuf_tab
2723 ELSEIF(mlw == 37)
THEN
2724 mbuf => elbuf_tab(ng)%BUFLY(1)%MAT(1,1,1)
2727 vfrac(i,1) = mbuf%VAR(i+3*nel)
2728 vfrac(i,2) = mbuf%VAR(i+4*nel)
2730 ELSEIF(mlw == 51)
THEN
2733 iadbuf = ipm(7,imat)
2734 nuparam= ipm(9,imat)
2735 uparam => bufmat(iadbuf:iadbuf+nuparam)
2737 isubmat=uparam(276+1); iu(1)=m51_n0phas+(isubmat-1)*m51_nvphas
2738 isubmat=uparam(276+2); iu(2)=m51_n0phas+(isubmat-1)*m51_nvphas
2739 isubmat=uparam(276+3); iu(3)=m51_n0phas+(isubmat-1)*m51_nvphas
2740 isubmat=uparam(276+4); iu(4)=m51_n0phas+(isubmat-1)*m51_nvphas
2741 mbuf => elbuf_tab(ng)%BUFLY(1)%MAT(1,1,1)
2744 vfrac(i,1) = mbuf%VAR(i+iu(1)*nel)
2745 vfrac(i,2) = mbuf%VAR(i+iu(2)*nel)
2746 vfrac(i,3) = mbuf%VAR(i+iu(3)*nel)
2747 vfrac(i,4) = mbuf%VAR(i+iu(4)*nel)
2757 value(i) = value(i) + vfrac(i,imat)*imat
2759 is_written_value(i) = 1
2765 ELSEIF(keyword ==
'VONM/TMAX')
THEN
2768 value(i) = gbuf%TM_YIELD(i)
2769 is_written_value(i) = 1
2772 ELSEIF(keyword ==
'SIGEQ/TMAX')
THEN
2775 value(i) = gbuf%TM_SEQ(i)
2776 is_written_value(i) = 1
2779 ELSEIF(keyword ==
'ENER/TMAX')
THEN
2782 value(i) = gbuf%TM_EINT(i)
2783 is_written_value(i) = 1
2786 ELSEIF(keyword ==
'DAMA/TMAX')
THEN
2789 value(i) = gbuf%TM_DMG(i)
2790 is_written_value(i) = 1
2793 ELSEIF(keyword ==
'TILLOTSON')
THEN
2796 IF (mlw == 151)
THEN
2800 ieos = ipm(4, mat_param(mt)%MULTIMAT%MID(imat) )
2802 ntillotson = ntillotson + 1
2803 imat_tillotson = imat
2807 IF(ntillotson > 1)
THEN
2810 ieos = ipm(4, mat_param(mt)%MULTIMAT%MID(imat) )
2812 ebuf => elbuf_tab(ng)%BUFLY(imat)%EOS(1,1,1)
2813 nvareos = elbuf_tab(ng)%BUFLY(imat)%NVAR_EOS
2815 value(i) = value(i) + ebuf%VAR(i) * fac
2816 is_written_value(i) = 1
2822 ELSEIF(ntillotson == 1)
THEN
2823 ebuf => elbuf_tab(ng)%BUFLY(imat_tillotson)%EOS(1,1,1)
2824 nvareos = elbuf_tab(ng)%BUFLY(imat_tillotson)%NVAR_EOS
2826 value(i) = ebuf%VAR(i)
2827 is_written_value(i) = 1
2834 ebuf => elbuf_tab(ng)%BUFLY(1)%EOS(1,1,1)
2835 nvareos = elbuf_tab(ng)%BUFLY(1)%NVAR_EOS
2837 value(i) = ebuf%VAR(i
2838 is_written_value(i) = 1
2843 ELSEIF(keyword ==
'DIV(U)')
THEN
2845 ialel=iparg(7,ng)+iparg(11,ng)
2848 1 evar ,ixs ,x ,v , iparg ,elbuf_tab ,ng ,nixs ,1,
2849 2 numels ,nel ,numnod ,nparg , ngroup ,n2d , nft)
2852 is_written_value(i) = 1
2856 ELSEIF (keyword ==
'ECONTROL')
THEN
2858 IF (gbuf%G_EINT_DISTOR>0)
THEN
2860 value(i) = gbuf%EINT_DISTOR(i)
2861 is_written_value(i) = 1
2865 elseif(keyword ==
'VSTRAIN')
then
2872 mid = mat_param(mt)%multimat%mid(ilay)
2873 rho0i(ilay) = pm(89,mid)
2874 vi(ilay) = multi_fvm%phase_alpha(ilay,i+nft) * gbuf%vol(i)
2875 v0i(ilay) = multi_fvm%phase_rho(ilay,i+nft) * vi(ilay) / rho0i(ilay)
2880 rho0g = rho0g + rho0i(ilay)*v0i(ilay)
2883 value(i) = multi_fvm%rho(i+nft) / rho0g - one
2884 is_written_value(i) = 1
2886 elseif(mlw == 51)
then
2889 iadbuf = ipm(7,imat)
2890 nuparam= ipm(9,imat)
2891 uparam => bufmat(iadbuf:iadbuf+nuparam)
2892 mbuf => elbuf_tab(ng)%bufly(1)%mat(1,1,1)
2895 isubmat = nint(uparam(276+1)); iu(1)=m51_n0phas +(isubmat-1)*m51_nvphas + ipos-1
2896 isubmat = nint(uparam(276+2)); iu(2)=m51_n0phas +(isubmat-1)*m51_nvphas + ipos-1
2897 isubmat = nint(uparam(276+3)); iu(3)=m51_n0phas +(isubmat-1)*m51_nvphas + ipos-1
2898 isubmat = nint(uparam(276+4)); iu(4)=m51_n0phas +(isubmat-1)*m51_nvphas + ipos-1
2899 vfrac(i,1) = mbuf%var(i+iu(1)*nel)
2901 vfrac(i,3) = mbuf%var(i+iu(3)*nel)
2902 vfrac(i,4) = mbuf%var(i+iu(4)*nel)
2905 isubmat = nint(uparam(276+1)); iu(1)=m51_n0phas +(isubmat-1)*m51_nvphas + ipos-1
2906 isubmat = nint(uparam(276+2)); iu(2)=m51_n0phas +(isubmat-1)*m51_nvphas + ipos-1
2907 isubmat = nint(uparam(276+3)); iu(3)=m51_n0phas +(isubmat-1)*m51_nvphas + ipos-1
2908 isubmat = nint(uparam(276+4)); iu(4)=m51_n0phas +(isubmat-1)*m51_nvphas + ipos-1
2909 rhoi(1) = mbuf%var(i+iu(1)*nel)
2910 rhoi(2) = mbuf%var(i+iu(2)*nel)
2911 rhoi(3) = mbuf%var(i+iu(3)*nel)
2912 rhoi(4) = mbuf%var(i+iu(4)*nel)
2914 mid = mat_param(mt)%multimat%mid(ilay)
2915 rho0i(ilay) = pm(89,mid)
2916 vi(ilay) = vfrac(i,ilay) * gbuf%vol(i)
2918 v0i(ilay) = rhoi(ilay) * vi(ilay) / rho0i(ilay)
2923 rho0g = rho0g + rho0i(ilay)*v0i(ilay)
2926 value(i) = gbuf%rho(i) / rho0g - one
2927 is_written_value(i) = 1
2929 elseif(mlw == 37)
then
2932 iadbuf = ipm(7,imat)
2933 nuparam= ipm(9,imat)
2934 uparam => bufmat(iadbuf:iadbuf+nuparam)
2935 mbuf => elbuf_tab(ng)%bufly(1)%mat(1,1,1)
2936 rho0i(1) = uparam(11)
2937 rho0i(2) = uparam(12)
2938 vi(1) = mbuf%var(i+3*nel) * gbuf%vol(i)
2939 vi(2) = mbuf%var(i+4*nel) * gbuf%vol(i)
2940 rhoi(1) = mbuf%var(i+2*nel)
2941 rhoi(2) = mbuf%var(i+1*nel)
2942 v0i(1) = rhoi(1) * vi(1) / rho0i(1)
2943 v0i(2) = rhoi(2) * vi(2) / rho0i(2)
2947 rho0g = rho0g + rho0i(ilay)*v0i(ilay)
2950 value(i) = gbuf%rho(i) / rho0g - one
2951 is_written_value(i) = 1
2953 elseif(mlw == 20)
then
2955 lbuf1 => elbuf_tab(ng)%bufly(1)%lbuf(1,1,1)
2956 lbuf2 => elbuf_tab(ng)%bufly(2)%lbuf(1,1,1)
2957 mid = mat_param(mt)%multimat%mid(1)
2958 rho0i(1) = pm(89,mid)
2959 mid = mat_param(mt)%multimat%mid(2)
2960 rho0i(2) = pm(89,mid)
2961 vi(1) = lbuf1%vol(i)
2962 vi(2) = lbuf2%vol(i)
2963 rhoi(1) = lbuf1%rho(i)
2964 rhoi(2) = lbuf2%rho(i)
2965 v0i(1) = rhoi(1) * vi(1) / rho0i(1)
2966 v0i(2) = rhoi(2) * vi(2) / rho0i(2)
2970 rho0g = rho0g + rho0i(ilay)*v0i(ilay)
2973 value(i) = gbuf%rho(i) / rho0g - one
2974 is_written_value(i) = 1
2978 if(pm(89,mt) > zero)
then
2979 value(i) = gbuf%rho(i) / pm(89,mt) - one
2980 is_written_value(i) = 1
2986 elseif(keyword(1:8) ==
'VSTRAIN/')
then
2989 read(keyword(9:),
'(I2)', iostat=ierr
2990 if(ierr == 0 .and. ilay > 0)
then
2991 if(mlw == 151 .and. ilay <=
min(10,multi_fvm%nbmat))detected = .true.
2992 if(mlw == 51 .and. ilay <= 4 )detected = .true.
2993 if(mlw == 37 .and. ilay <= 2 )detected = .true.
2994 if(mlw == 20 .and. ilay <= 2 )detected = .true.
3003 rho0i(ilay) = pm(89,mid)
3004 vi(ilay) = multi_fvm%phase_alpha(ilay,i+nft) * gbuf%vol(i)
3005 v0i(ilay) = multi_fvm%phase_rho(ilay,i+nft) * vi(ilay) / rho0i(ilay)
3006 value(i) = multi_fvm%phase_rho(ilay,i+nft) / rho0i(ilay) - one
3007 is_written_value(i) = 1
3009 elseif(mlw == 51)
then
3012 iadbuf = ipm(7,imat)
3013 nuparam= ipm(9,imat)
3014 uparam => bufmat(iadbuf:iadbuf+nuparam)
3015 mbuf => elbuf_tab(ng)%bufly(1)%mat(1,1,1)
3016 mid = mat_param(mt)%multimat%mid(ilay)
3017 rho0i(ilay) = pm(89,mid)
3020 isubmat = nint(uparam(276+ilay)); iu
3021 vfrac(i,ilay) = mbuf%var(i+iu(ilay)*nel)
3022 vi(ilay) = vfrac(i,ilay) * gbuf%vol(i)
3025 isubmat = nint(uparam(276+ilay)); iu(ilay)=m51_n0phas +(isubmat-1)*m51_nvphas + ipos-1
3026 rhoi(ilay) = mbuf%var(i+iu(ilay)*nel)
3027 v0i(ilay) = rhoi(ilay) * vi(ilay)
3028 value(i) = rhoi(ilay) / rho0i(ilay) - one
3029 is_written_value(i) = 1
3031 elseif(mlw == 37)
then
3034 iadbuf = ipm(7,imat)
3035 nuparam= ipm(9,imat)
3036 uparam => bufmat(iadbuf:iadbuf+nuparam)
3037 mbuf => elbuf_tab(ng)%bufly(1)%mat(1,1,1)
3038 rho0i(ilay) = uparam(10+ilay)
3039 vi(ilay) = mbuf%var(i+(ilay+2)*nel) * gbuf%vol(i)
3041 v0i(ilay) = rhoi(ilay) * vi(ilay) / rho0i(ilay)
3042 value(i) = rhoi(ilay) / rho0i(ilay) - one
3043 is_written_value(i) = 1
3045 elseif(mlw == 20)
then
3047 lbuf => elbuf_tab(ng)%bufly(ilay)%lbuf(1,1,1)
3048 mid = mat_param(mt)%multimat%mid(ilay)
3049 rho0i(ilay) = pm(89,mid)
3050 vi(ilay) = lbuf%vol(i)
3051 rhoi(ilay) = lbuf%rho(i)
3052 v0i(ilay) = rhoi(ilay) * vi(ilay) / rho0i(ilay)
3053 value(i) = rhoi(ilay) / rho0i(ilay) - one
3054 is_written_value(i) = 1
3058 is_written_value(i) = 0
3067 IF(called_from_python)
THEN
3068 solid_scalar(1:nel) = value(1:nel)
3071 .
VALUE,is_written_value)