46 . ELBUF_TAB ,SHELL_SCALAR ,IPARG ,GEO ,
47 . IXC ,IXTG ,PM ,BUFMAT ,
49 . IPM ,IGEO ,THKE ,ERR_THK_SH4 ,ERR_THK_SH3,
50 . X ,V ,W ,ALE_CONNECT,
51 . STACK ,ID_ELEM ,ITY_ELEM ,
52 . IS_WRITTEN_SHELL,IPARTC ,IPARTTG ,LAYER_INPUT ,IPT_INPUT ,
53 . PLY_INPUT ,IUVAR_INPUT ,H3D_PART ,KEYWORD ,
54 . D ,NG ,MULTI_FVM ,IDMDS ,IMDSVAR ,
55 . MDS_MATID ,ID ,MODE ,MATPARAM ,
56 . H3D_LIGHT ,SHELL_STACK ,MAX_SHELL_STACKSIZE ,SHELL_STACKSIZE)
69 USE multimat_param_mod ,
ONLY : m51_n0phas, m51_nvphas
73#include "implicit_f.inc"
77#include "vect01_c.inc"
83#include "tabsiz_c.inc"
87 logical,
intent(in) :: CALLED_FROM_PYTHON
88 my_real,
INTENT(IN),
TARGET :: BUFMAT(*)
90 . SHELL_SCALAR(*),X(3,NUMNOD),V(3,NUMNOD),W(3,NUMNOD),D(3,NUMNOD),THKE(*),EHOUR(*),GEO(NPROPG,NUMGEO),
91 . PM(NPROPM,NUMMAT),ERR_THK_SH4(*), ERR_THK_SH3(NUMELTG)
92 INTEGER IPARG(NPARG,NGROUP),IXC(NIXC,NUMELC),IXTG(NIXTG,NUMELTG),
93 . IPM(NPROPMI,NUMMAT),
94 . IGEO(NPROPGI,NUMGEO), ID_ELEM(*),ITY_ELEM(*),
95 . IS_WRITTEN_SHELL(*),IPARTC(NUMELC),IPARTTG(NUMELTG),H3D_PART(*),
96 . LAYER_INPUT ,IPT_INPUT,PLY_INPUT,IUVAR_INPUT,NG,,ID,
97 . MDS_MATID(*),IMDSVAR
98 INTEGER ,
INTENT(INOUT):: SHELL_STACKSIZE
99 INTEGER,
INTENT(IN) :: MAX_SHELL_STACKSIZE
100 REAL(KIND=4),dimension(max_shell_stacksize),
INTENT(INOUT) :: shell_stack
101 TYPE (ELBUF_STRUCT_),
DIMENSION(NGROUP),
TARGET ::
102 TYPE (STACK_PLY) :: STACK
103 CHARACTER(NCHARLINE100)::KEYWORD
104 TYPE (MULTI_FVM_STRUCT),
INTENT(IN) :: MULTI_FVM
105 TYPE(t_ale_connectivity),
INTENT(IN) :: ALE_CONNECT
106 INTEGER ,
INTENT(IN) :: MODE
107 TYPE (MATPARAM_STRUCT_) ,
DIMENSION(NUMMAT) ,
INTENT(IN) :: MATPARAM
108 INTEGER ,
INTENT(IN) :: H3D_LIGHT
112 my_real evar(mvsiz),dam1(mvsiz),dam2(mvsiz),wpla(mvsiz),dmax(mvsiz),wpmax(mvsiz),fail(mvsiz),
113 . epst1(mvsiz),epst2(mvsiz),epsf1(mvsiz),epsf2(mvsiz),value(mvsiz),vg(5),vly(5),ve(5),mass(mvsiz),
114 . ninty,vonm2,s1,s2,s12,dmgmx,a1,a2,a3,a4,dir1_1,dir1_2,aa,bb,v1,v2,v3,x21,x32,x34,
115 . x41,y21,y32,y34,y41,z21,z32,z34,z41,suma,vr,vs,x31,y31,z31,e11,e12,e13,e21,e22,e23,sum_,
area,x2l,
116 . e1x,e1y,e1z,e2x,e2y,e2z,e3x,e3y,e3z,rx,ry,rz,s_x,s_y,s_z,rho0(mvsiz),thk0,xx1,xx2,xx3,yy1,yy2,yy3,zz1,zz2,zz3,a0,
117 . rindx,vfrac(mvsiz,1:21),tmp(3,3),cumul(3),vx,vy,vz,surf,nx,ny,nz,phi,err,pres(mvsiz),vel(0:3),maxdamini,
119 INTEGER I,I1,II,J,NEL,NPTR,NPTS,NPTT,NLAY,L,IFAIL,ILAY,
120 . IR,IS,IT,IL,MLW, NUVAR,NFAIL,
122 . ,IHBE,NPG, MPT,IPT,IADR,IPMAT,
123 . isubstack,ithk,id_ply,iok,n1,n2,n3,n4,
124 . imat,iu(4),nfrac,ipos,itrimat,ns,iad2,idrape,nlay_fail,ilay0,submatlaw,
126 INTEGER PID(MVSIZ),MAT(MVSIZ),MATLY(MVSIZ*100),FAILG(100,MVSIZ)
129 . IS_WRITTEN_VALUE(MVSIZ),IV,KFACE,NB_FACE,IADBUF,NUPARAM,ISUBMAT,IS_EULER,IS_ALE,
130 . ipinch,ipg,user_ok,ialel,imode,nmod,mat_id,mid,ierr,mt
134 TYPE(G_BUFEL_) ,
POINTER :: GBUF
135 TYPE(L_BUFEL_) ,
POINTER :: LBUF
136 TYPE(BUF_LAY_) ,
POINTER :: BUFLY
137 TYPE(buf_fail_) ,
POINTER :: FBUF,FBUF1,FBUF2
138 TYPE(L_BUFEL_) ,
POINTER :: LBUF1,LBUF2,LBUF3,LBUF4
139 TYPE(BUF_MAT_) ,
POINTER :: MBUF
140 TYPE(L_BUFEL_DIR_) ,
POINTER :: LBUF_DIR
141 my_real,
DIMENSION(:),
POINTER :: UVAR
142 my_real,
DIMENSION(:) ,
POINTER :: uparam
155 2 mlw ,nel ,nft ,iad ,ity ,
156 3 npt ,jale ,ismstr ,jeul ,jturb ,
157 4 jthe ,jlag ,jmult ,jhbe ,jivf ,
158 5 mid ,jpor ,jcvt ,jclose ,jplasol ,
159 6 irep ,iint ,igtyp ,israt ,isrot ,
160 7 icsen ,isorth ,isorthg ,ifailure,jsms )
166 isubstack = iparg(71,ng)
167 is_euler = iparg(11,ng)
179 is_written_value(i) = 0
184 IF (ity == 3.OR.ity == 7)
THEN
186 gbuf => elbuf_tab(ng)%GBUF
193 nptr = elbuf_tab(ng)%NPTR
194 npts = elbuf_tab(ng)%NPTS
195 nptt = elbuf_tab(ng)%NPTT
196 nlay = elbuf_tab(ng)%NLAY
197 idrape = elbuf_tab(ng)%IDRAPE
203 IF (ity == 3) offset = 0
204 IF (ity == 7) offset = numelc
206 IF(.NOT. called_from_python)
THEN
209 id_elem(offset+nft+i) = ixc(nixc,nft+i)
210 ity_elem(offset+nft+i) = 3
211 IF( h3d_part(ipartc(nft+i)) == 1) iok_part(i) = 1
212 ELSEIF (ity == 7)
THEN
213 id_elem(offset+nft+i) = ixtg(nixtg,nft+i)
214 ity_elem(offset+nft+i) = 7
215 IF( h3d_part(iparttg(nft+i)) == 1) iok_part(i) = 1
220 IF( igtyp == 10 .OR. igtyp == 11 .OR. igtyp == 16 .OR. igtyp == 17)
THEN
223 ELSEIF (igtyp == 51 .OR. igtyp == 52)
THEN
224 IF(layer_input == -2)
THEN
225 npt= elbuf_tab(ng)%BUFLY(1)%NPTT
226 ELSEIF(layer_input == -3)
THEN
227 npt= elbuf_tab(ng)%BUFLY(nlay)%NPTT
228 ELSEIF(layer_input > 0 .AND. layer_input <= nlay)
THEN
229 npt= elbuf_tab(ng)%BUFLY(layer_input)%NPTT
231 IF( ply_input > 0)
THEN
234 IF (igtyp == 51)
THEN
235 id_ply = igeo(1,stack%IGEO(2+j,isubstack))
236 ELSEIF (igtyp == 52)
THEN
237 id_ply =
ply_info(1,stack%IGEO(2+j,isubstack)-numstack)
239 IF (id_ply == ply_input )
THEN
240 npt= elbuf_tab(ng)%BUFLY(j)%NPTT
255 IF (keyword ==
'MDS') iuvar = imdsvar
256 IF (igtyp == 51 .OR. igtyp == 52)
THEN
257 IF (ilay == -2) ilay = 1
258 IF (ilay == -3) ilay = nlay
259 IF (ipt == -2) ipt = 1
260 IF (ipt == -3 .AND. ilay > 0 ) ipt =
max(1,elbuf_tab(ng
262 IF (ilay == -2) ilay = 1
263 IF (ilay == -3) ilay = nlay
264 IF (ipt == -2) ipt = 1
265 IF (ipt == -3) ipt =
max(1,npt)
270 IF(.NOT. called_from_python)
THEN
271 shell_stack(offset+nft+i) = zero
273 shell_scalar(1:mvsiz) = zero
279 IF (keyword ==
'MASS' .OR. keyword ==
'HOURGLASS' .OR. keyword ==
'ENER' .OR. keyword(1:4) ==
'EINT')
THEN
285 IF(igtyp /= 17 . and. igtyp /= 51 .AND. igtyp /= 52)
THEN
288 rho0(i) = pm(1,ixc(1,n))
289 thk0 = geo(1,ixc(6,n))
294 xx1 = x(1,n3)-d(1,n3)-x(1,n1)+d(1,n1)
295 yy1 = x(2,n3)-d(2,n3)-x(2,n1)+d(2,n1)
296 zz1 = x(3,n3)-d(3,n3)-x(3,n1)+d(3,n1)
297 xx2 = x(1,n4)-d(1,n4)-x(1,n2)+d(1,n2)
298 yy2 = x(2,n4)-d(2,n4)-x(2,n2)+d(2,n2)
299 zz2 = x(3,n4)-d(3,n4)-x(3,n2)+d(3,n2)
301 yy3 = zz1*xx2 - xx1*zz2
302 zz3 = xx1*yy2 - yy1*xx2
303 a0 = half*sqrt(xx3*xx3 + yy3*yy3 + zz3*zz3)
304 mass(i) = rho0(i)*thk0*a0
309 rho0(i) = pm(1,ixc(1,n))
310 thk0 = stack%GEO(1,isubstack)
315 xx1 = x(1,n3)-d(1,n3)-x(1,n1)+d(1,n1)
316 yy1 = x(2,n3)-d(2,n3)-x(2,n1)+d(2,n1)
317 zz1 = x(3,n3)-d(3,n3)-x(3,n1)+d(3,n1)
318 xx2 = x(1,n4)-d(1,n4)-x(1,n2)+d(1,n2)
319 yy2 = x(2,n4)-d(2,n4)-x(2,n2)+d(2,n2)
320 zz2 = x(3,n4)-d(3,n4)-x(3,n2)+d(3,n2)
321 xx3 = yy1*zz2 - zz1*yy2
322 yy3 = zz1*xx2 - xx1*zz2
323 zz3 = xx1*yy2 - yy1*xx2
324 a0 = half*sqrt(xx3*xx3 + yy3*yy3 + zz3*zz3)
325 mass(i) = rho0(i)*thk0*a0
333 IF(igtyp /= 17 . and. igtyp /= 51 .AND. igtyp /= 52)
THEN
336 rho0(i) = pm(1,ixtg(1,n))
337 thk0 = geo(1,ixtg(5,n))
341 xx1 = x(1,n2)-d(1,n2)-x(1,n1)+d(1,n1)
342 yy1 = x(2,n2)-d(2,n2)-x(2,n1)+d(2,n1)
343 zz1 = x(3,n2)-d(3,n2)-x(3,n1)+d(3,n1)
344 xx2 = x(1,n3)-d(1,n3)-x(1,n1)+d(1,n1)
345 yy2 = x(2,n3)-d(2,n3)-x(2,n1)+d(2,n1)
346 zz2 = x(3,n3)-d(3,n3)-x(3,n1)+d(3,n1)
347 xx3 = yy1*zz2 - zz1*yy2
348 yy3 = zz1*xx2 - xx1*zz2
349 zz3 = xx1*yy2 - yy1*xx2
350 a0 = half*sqrt(xx3*xx3 + yy3*yy3 + zz3*zz3)
351 mass(i) = rho0(i)*thk0*a0
356 rho0(i) = pm(1,ixtg(1,n))
357 thk0 = stack%GEO(1,isubstack)
361 xx1 = x(1,n2)-d(1,n2)-x(1,n1)+d(1,n1)
362 yy1 = x(2,n2)-d(2,n2)-x(2,n1)+d(2,n1)
363 zz1 = x(3,n2)-d(3,n2)-x(3,n1)+d(3,n1)
364 xx2 = x(1,n3)-d(1,n3)-x(1,n1)+d(1,n1)
365 yy2 = x(2,n3)-d(2,n3)-x(2,n1)+d(2,n1)
366 zz2 = x(3,n3)-d(3,n3)-x(3,n1)+d(3,n1)
367 xx3 = yy1*zz2 - zz1*yy2
368 yy3 = zz1*xx2 - xx1*zz2
369 zz3 = xx1*yy2 - yy1*xx2
370 a0 = half*sqrt(xx3*xx3 + yy3*yy3 + zz3*zz3)
371 mass(i) = rho0(i)*thk0*a0
379 IF (mlw == 0 .OR. mlw == 13)
THEN
382 ELSEIF (keyword ==
'MASS')
THEN
386 is_written_value(i) = 1
389 ELSEIF (keyword ==
'DENS')
THEN
395 value(i) = pm(1,ixc(1,n))
396 is_written_value(i) = 1
398 ELSEIF(ity == 7)
THEN
401 value(i) = pm(1,ixtg(1,n))
402 is_written_value(i) = 1
407 value(i) = multi_fvm%RHO(i + nft)
408 is_written_value(i) = 1
412 ELSEIF (keyword ==
'ENER')
THEN
416 value(i) = (gbuf%EINT(i)+ gbuf%EINT(i+nel))/
max(em20,mass(i))
417 is_written_value(i) = 1
421 value(i) = multi_fvm%EINT(i + nft) / multi_fvm%RHO(i + nft)
422 is_written_value(i) = 1
427 ELSEIF (keyword ==
'EINT')
THEN
431 value(i) = multi_fvm%EINT(i + nft) * gbuf%VOL(i)
432 is_written_value(i) = 1
438 value(i) = (gbuf%EINT(i) + gbuf%EINT(i+nel))
447 ELSEIF (keyword
'EINTM')
THEN
452 value(i) = multi_fvm%EINT(i + nft) / multi_fvm%RHO(i + nft)
453 is_written_value(i) = 1
458 value(i) = (gbuf%EINT(i)+ gbuf%EINT(i+nel))/
max(em20,mass(i))
459 is_written_value(i) = 1
463 value(i) = gbuf%EINT(i)/gbuf%RHO(i)
464 is_written_value(i) = 1
470 ELSEIF (keyword ==
'EINTV')
THEN
474 value(i) = multi_fvm%EINT(i + nft)
475 is_written_value(i) = 1
480 value(i) = (gbuf%EINT(i)+ gbuf%EINT(i+nel))*rho0(i)/mass(i)
481 is_written_value(i) = 1
485 value(i) = gbuf%EINT(i)
486 is_written_value(i) = 1
493 ELSEIF (keyword(1:4) ==
'ENTH')
THEN
497 pres(i) = multi_fvm%PRES(i + nft)
501 IF(gbuf%G_SIG > 0)
THEN
502 pres(i) = - (gbuf%SIG(jj(1) + i)+ gbuf%SIG(jj(2) + i) + gbuf%SIG(jj(3) + i))*third
509 IF(keyword ==
'ENTH')
THEN
512 value(i) = multi_fvm%EINT(i + nft) / multi_fvm%RHO(i + nft) + pres(i)*gbuf%VOL(i)
513 is_written_value(i) = 1
517 IF(gbuf%G_RHO > 0 .AND. gbuf%G_VOL > 0 )
THEN
519 value(i) = gbuf%EINT(i)/gbuf%RHO(i) + pres(i)*gbuf%VOL(i)
520 is_written_value(i) = 1
525 ELSEIF(keyword ==
'ENTHV')
THEN
528 value(i) = multi_fvm%EINT(i + nft) / multi_fvm%RHO(i + nft)/gbuf%VOL(i) + pres(i)
529 is_written_value(i) = 1
533 if(gbuf%G_EINT > 0 .AND. gbuf%G_RHO > 0 .AND. gbuf%G_VOL > 0)
THEN
535 value(i) = gbuf%EINT(i)/gbuf%VOL(i
536 is_written_value(i) = 1
541 ELSEIF(keyword ==
'ENTHM')
THEN
544 mass(i) = multi_fvm%RHO(i + nft)*gbuf%VOL(i)
545 value(i) = (multi_fvm%EINT(i + nft) / multi_fvm%RHO(i + nft) + pres(i)*gbuf%VOL(i))/mass(i) !
546 is_written_value(i) = 1
550 IF(gbuf%G_RHO > 0 .AND. gbuf%G_VOL > 0 .AND. gbuf%G_EINT > 0)
THEN
552 mass(i)=gbuf%RHO(i)*gbuf%VOL(i)
553 value(i) = (gbuf%EINT(i)/gbuf%RHO(i) + pres(i)*gbuf%VOL(i))/mass(i)
554 is_written_value(i) = 1
561 ELSEIF(keyword ==
'P')
THEN
565 value(i) = multi_fvm%PRES(i + nft)
566 is_written_value(i) = 1
570 ELSEIF (keyword ==
'THICK')
THEN
574 value(i) = gbuf%THK(i)
575 is_written_value(i) = 1
580 value(i) = thke(nft+i)
581 is_written_value(i) = 1
583 ELSEIF (ity == 7)
THEN
585 value(i) = thke(nft+i+numelc)
586 is_written_value(i) = 1
591 ELSEIF (keyword ==
'VONM')
THEN
594 s1 = gbuf%FOR(jj(1)+i)
595 s2 = gbuf%FOR(jj(2)+i)
596 s12= gbuf%FOR(jj(3)+i)
597 vonm2= s1*s1 + s2*s2 - s1*s2 + three*s12*s12
598 value(i) = sqrt(vonm2)
599 is_written_value(i) = 1
602 ELSEIF (keyword ==
'DAM1')
THEN
612 IF (ilay == -1 .AND. ipt == -1 .AND. iply == -1)
THEN
618 nptt = elbuf_tab(ng)%BUFLY(n)%NPTT
622 lbuf => elbuf_tab(ng)%BUFLY(n)%LBUF(ir,is,it)
623 value(i) = value(i) + lbuf%DAM(jj(1)+i)/(nptt*nptr*npts)
628 value(i) = value(i) / nlay
629 is_written_value(i) = 1
633 ELSEIF (mpt > 0)
THEN
634 nptt = elbuf_tab(ng)%BUFLY(1)%NPTT
639 lbuf => elbuf_tab(ng)%BUFLY(1)%LBUF(ir,is,it)
640 value(i) = value(i) + lbuf%DAM(jj(1)+i)/(nptt*nptr*npts)
644 is_written_value(i) = 1
648 !
If ply and int. point input: ply=iply layer=null npt=ipt
652 nptt = elbuf_tab(ng)%BUFLY(j)%NPTT
654 IF (igtyp == 17 .OR. igtyp == 51)
THEN
655 id_ply = igeo(1,stack%IGEO(2+j,isubstack))
656 ELSEIF (igtyp == 52)
THEN
657 id_ply =
ply_info(1,stack%IGEO(2+j,isubstack)-numstack)
659 IF (id_ply == iply)
THEN
660 IF (ipt <= nptt)
THEN
664 lbuf => elbuf_tab(ng)%BUFLY(j)%LBUF(ir,is,ipt)
665 value(i) = value(i) + lbuf%DAM(jj(1)+i)/(nptr*npts)
668 is_written_value(i) = 1
676 ELSEIF (iply > 0 .AND. ipt == -1)
THEN
678 nptt = elbuf_tab(ng)%BUFLY(j)%NPTT
680 IF (igtyp == 17 .OR. igtyp == 51)
THEN
681 id_ply = igeo(1,stack%IGEO(2+j,isubstack))
682 ELSEIF (igtyp == 52)
THEN
683 id_ply =
ply_info(1,stack%IGEO(2+j,isubstack)-numstack)
685 IF (id_ply == iply)
THEN
690 lbuf => elbuf_tab(ng)%BUFLY(j)%LBUF(ir,is,it)
691 value(i) = value(i) + lbuf%DAM(jj(1)+i)/(nptr*npts*nptt)
695 is_written_value(i) = 1
702 ELSEIF (ilay <= nlay .AND. ilay > 0)
THEN
704 IF (igtyp == 10 .OR. igtyp == 11 .OR. igtyp == 16)
THEN
708 lbuf => elbuf_tab(ng)%BUFLY(ilay)%LBUF(ir,is,1)
709 VALUE(i) = value(i) + lbuf%DAM(jj(1)+i)/(nptr*npts)
712 is_written_value(i) = 1
718 ELSEIF (ipt <= npt .AND. ipt > 0)
THEN
719 IF (igtyp == 1 .OR. igtyp == 9)
THEN
723 lbuf => elbuf_tab(ng)%BUFLY(1)%LBUF(ir,is,ipt)
724 value(i) = value(i) + lbuf%DAM(jj(1)+i)/(nptr*npts)
727 is_written_value(i) = 1
733 ELSEIF(keyword ==
'DAM2')
THEN
743 IF (ilay == -1 .AND. ipt == -1 .AND. iply == -1)
THEN
749 nptt = elbuf_tab(ng)%BUFLY(n)%NPTT
753 lbuf => elbuf_tab(ng)%BUFLY(n)%LBUF(ir,is,it)
754 value(i) = value(i) + lbuf%DAM(jj(2)+i)/(nptt*nptr*npts)
759 value(i) = value(i) / nlay
760 is_written_value(i) = 1
764 ELSEIF (mpt > 0)
THEN
765 nptt = elbuf_tab(ng)%BUFLY(1)%NPTT
770 lbuf => elbuf_tab(ng)%BUFLY(1)%LBUF(ir,is,it)
771 value(i) = value(i) + lbuf%DAM(jj(2)+i)/(nptt*nptr*npts)
775 is_written_value(i) = 1
781 ELSEIF (iply > 0 .AND. ipt <= mpt .AND. ipt > 0)
THEN
783 nptt = elbuf_tab(ng)%BUFLY(j)%NPTT
785 IF (igtyp == 17 .OR. igtyp == 51)
THEN
786 id_ply = igeo(1,stack%IGEO(2+j,isubstack))
787 ELSEIF (igtyp == 52)
THEN
788 id_ply =
ply_info(1,stack%IGEO(2+j,isubstack)-numstack)
790 IF (id_ply == iply)
THEN
791 IF (ipt <= nptt)
THEN
795 lbuf => elbuf_tab(ng)%BUFLY(j)%LBUF(ir,is,ipt)
796 value(i) = value(i) + lbuf%DAM(jj(2)+i)/(nptr*npts)
799 is_written_value(i) = 1
807 ELSEIF (iply > 0 .AND. ipt == -1)
THEN
809 nptt = elbuf_tab(ng)%BUFLY(j)%NPTT
811 IF (igtyp == 17 .OR. igtyp == 51)
THEN
812 id_ply = igeo(1,stack%IGEO(2+j,isubstack))
813 ELSEIF (igtyp == 52)
THEN
814 id_ply =
ply_info(1,stack%IGEO(2+j,isubstack)-numstack)
816 IF (id_ply == iply)
THEN
821 lbuf => elbuf_tab(ng)%BUFLY(j)%LBUF(ir,is,it)
822 value(i) = value(i) + lbuf%DAM
826 is_written_value(i) = 1
833 ELSEIF (ilay <= nlay .AND. ilay > 0)
THEN
835 IF (igtyp == 10 .OR. igtyp == 11 .OR. igtyp == 16)
THEN
839 lbuf => elbuf_tab(ng)%BUFLY(ilay)%LBUF(ir,is,1)
840 value(i) = value(i) + lbuf%DAM(jj(2)+i)/(nptr*npts)
843 is_written_value(i) = 1
849 ELSEIF (ipt <= npt .AND. ipt > 0)
THEN
850 IF (igtyp == 1 .OR. igtyp == 9)
THEN
854 lbuf => elbuf_tab(ng)%BUFLY(1)%LBUF(ir,is,ipt)
855 value(i) = value(i) + lbuf%DAM(jj(2)+i)/(nptr*npts)
858 is_written_value(i) = 1
864 ELSEIF(keyword ==
'DAM3')
THEN
874 IF (ilay == -1 .AND. ipt == -1 .AND. iply == -1)
THEN
880 nptt = elbuf_tab(ng)%BUFLY(n)%NPTT
884 lbuf => elbuf_tab(ng)%BUFLY(n)%LBUF(ir,is,it)
885 value(i) = value(i) + lbuf%DAM(jj(3)+i)/(nptt*nptr*npts)
890 value(i) = value(i) / nlay
891 is_written_value(i) = 1
895 ELSEIF (mpt > 0)
THEN
896 nptt = elbuf_tab(ng)%BUFLY(1)%NPTT
902 VALUE(i) + lbuf%DAM(jj(3)+i)/(nptt*nptr*npts)
906 is_written_value(i) = 1
912 ELSEIF (iply > 0 .AND. ipt <= mpt .AND. ipt > 0)
THEN
914 nptt = elbuf_tab(ng)%BUFLY(j)%NPTT
916 IF (igtyp == 17 .OR. igtyp == 51)
THEN
917 id_ply = igeo(1,stack%IGEO(2+j,isubstack))
918 ELSEIF (igtyp == 52)
THEN
919 id_ply =
ply_info(1,stack%IGEO(2+j,isubstack)-numstack)
921 IF (id_ply == iply)
THEN
922 IF (ipt <= nptt)
THEN
926 lbuf => elbuf_tab(ng)%BUFLY(j)%LBUF(ir,is,ipt)
927 value(i) = value(i) + lbuf%DAM(jj(3)+i)/(nptr*npts)
930 is_written_value(i) = 1
938 ELSEIF (iply > 0 .AND. ipt == -1)
THEN
940 nptt = elbuf_tab(ng)%BUFLY(j)%NPTT
942 IF (igtyp == 17 .OR. igtyp == 51)
THEN
943 id_ply = igeo(1,stack%IGEO(2+j,isubstack))
944 ELSEIF (igtyp == 52)
THEN
945 id_ply =
ply_info(1,stack%IGEO(2+j,isubstack)-numstack)
947 IF (id_ply == iply)
THEN
952 lbuf => elbuf_tab(ng)%BUFLY(j)%LBUF(ir,is,it)
953 value(i) = value(i) + lbuf%DAM(jj(3)+i)/(nptr*npts*nptt)
957 is_written_value(i) = 1
964 ELSEIF (ilay <= nlay .AND. ilay > 0)
THEN
966 IF (igtyp == 10 .OR. igtyp == 11 .OR. igtyp == 16)
THEN
970 lbuf => elbuf_tab(ng)%BUFLY(ilay)%LBUF(ir,is,1)
971 value(i) = value(i) + lbuf%DAM(jj(3)+i)/(nptr*npts)
974 is_written_value(i) = 1
980 ELSEIF (ipt <= npt .AND. ipt > 0)
THEN
981 IF (igtyp == 1 .OR. igtyp == 9)
THEN
985 lbuf => elbuf_tab(ng)%BUFLY(1)%LBUF(ir,is,ipt)
986 value(i) = value(i) + lbuf%DAM(jj(3)+i)/(nptr*npts)
989 is_written_value(i) = 1
995 ELSEIF (keyword ==
'SIGX')
THEN
998 value(i) = gbuf%FOR(jj(1)+i)
999 is_written_value(i) = 1
1002 ELSEIF (keyword ==
'SIGY')
THEN
1005 value(i) = gbuf%FOR(jj(2)+i)
1006 is_written_value(i) = 1
1009 ELSEIF (keyword ==
'SIGZ')
THEN
1011 IF(ihbe == 11 .AND. ipinch == 1)
THEN
1017 is_written_value(i) = 1
1021 ELSEIF (keyword ==
'SIGXY')
THEN
1024 value(i) = gbuf%FOR(jj(3)+i)
1025 is_written_value(i) = 1
1028 ELSEIF (keyword ==
'SIGYZ')
THEN
1031 value(i) = gbuf%FOR(jj(4)+i)
1032 is_written_value(i) = 1
1035 ELSEIF (keyword ==
'SIGZX')
THEN
1038 value(i) = gbuf%FOR(jj(5)+i)
1039 is_written_value(i) = 1
1042 ELSEIF (keyword ==
'HOURGLASS')
THEN
1046 value(i) = ehour(nft+i+numels)/
max(em20,mass(i))
1047 is_written_value(i) = 1
1051 ELSEIF (keyword ==
'EPSD')
THEN
1053 value(1:nel) = gbuf%EPSD(1:nel)
1054 is_written_value(1:nel) = 1
1056 ELSEIF(keyword(1:9) ==
'M151VFRAC')
THEN
1058 IF (mlw == 151)
THEN
1059 READ(keyword,
'(A9,I10)') buff, imat
1060 IF (imat > 0 .AND. imat <= nlay)
THEN
1061 gbuf => elbuf_tab(ng)%GBUF
1062 lbuf => elbuf_tab(ng)%BUFLY(imat)%LBUF(1,1,1)
1064 value(i) = lbuf%VOL(i) / gbuf%VOL(i)
1065 is_written_value(i) = 1
1070 ELSEIF(keyword(1:8) ==
'M151ENER')
THEN
1072 IF (mlw == 151)
THEN
1073 READ(keyword,
'(A8,I10)') buff, imat
1074 IF (imat > 0 .AND. imat <= nlay)
THEN
1076 value(i) = multi_fvm%PHASE_EINT(imat, i + nft) /
1077 . multi_fvm%PHASE_RHO(imat, i + nft)
1078 is_written_value(i) = 1
1083 ELSEIF(keyword(1:8) ==
'M151PRES')
THEN
1085 IF (mlw == 151)
THEN
1086 READ(keyword,
'(A8,I10)') buff, imat
1087 IF (imat > 0 .AND. imat <= nlay)
THEN
1089 value(i) = multi_fvm%PHASE_PRES(imat, i + nft)
1090 is_written_value(i) = 1
1095 ELSEIF(keyword(1:8) ==
'M151DENS')
THEN
1097 IF (mlw == 151)
THEN
1098 READ(keyword,
'(A8,I10)') buff, imat
1099 IF (imat > 0 .AND. imat <= nlay)
THEN
1101 value(i) = multi_fvm%PHASE_RHO(imat, i + nft)
1102 is_written_value(i) = 1
1107 ELSEIF(keyword ==
'THIN')
THEN
1110 value(i) = hundred *(gbuf%THK_I(i)-gbuf%THK(i))/gbuf%THK_I(i)
1111 is_written_value(i) = 1
1114 ELSEIF (keyword ==
'USER' .OR. keyword ==
'MDS')
THEN
1118 IF(ipt == -1 .AND. ilay == -1 .AND. iply == -1 .AND. iuvar > 0 )
THEN
1119 IF (mlw==29 .OR. mlw==30 .OR. mlw==31 .OR. mlw>=33)
THEN
1122 il = iabs(nlay)/2 + 1
1123 npt = elbuf_tab(ng)%BUFLY(il)%NPTT
1124 ipt = iabs(npt)/2 + 1
1127 ipt = iabs(npt)/2 + 1
1129 imat = elbuf_tab(ng)%BUFLY(il)%IMAT
1130 nuvar = elbuf_tab(ng)%BUFLY(il)%NVAR_MAT
1132 IF(keyword ==
'USER') user_ok = 1
1134 IF(imat == mds_matid(idmds))user_ok = 1
1137 IF(user_ok == 1)
THEN
1138 IF(iuvar <= nuvar)
THEN
1139 IF (mlw == 58 .or. mlw == 158)
THEN
1142 uvar=>elbuf_tab(ng)%BUFLY(il)%MAT(ir,is,ipt)%VAR
1143 IF(iuvar==4.OR.iuvar==5)
THEN
1145 value(i) = value(i) + log(uvar(i1 + i)+one)/npg
1146 is_written_value(i) = 1
1150 value(i) = value(i) + uvar(i1 + i)/npg
1151 is_written_value(i) = 1
1159 uvar=>elbuf_tab(ng)%BUFLY(il)%MAT(ir,is,ipt)%VAR
1161 value(i) = value(i) + uvar(i1 + i)/npg
1162 is_written_value(i) = 1
1171 ELSEIF ( iply > 0 .AND. ipt <= mpt .AND. ipt > 0 .AND. iuvar > 0)
THEN
1174 nuvar = elbuf_tab(ng)%BUFLY(j)%NVAR_MAT
1175 IF(iuvar <= nuvar)
THEN
1177 IF (igtyp == 17 .OR. igtyp == 51)
THEN
1178 id_ply = igeo(1,stack%IGEO(2+j,isubstack))
1179 ELSEIF (igtyp == 52)
THEN
1180 id_ply =
ply_info(1,stack%IGEO(2+j,isubstack)-numstack)
1183 IF (id_ply == iply )
THEN
1184 imat = elbuf_tab(ng)%BUFLY(j)%IMAT
1186 IF(keyword ==
'USER') user_ok = 1
1188 IF(imat == mds_matid(idmds))user_ok = 1
1191 IF(user_ok == 1)
THEN
1192 bufly => elbuf_tab(ng)%BUFLY(j)
1193 IF (igtyp == 17 .OR. igtyp == 51 .OR. igtyp == 52 )
THEN
1195 IF( ipt <= nptt)
THEN
1199 uvar=>elbuf_tab(ng)%BUFLY(j)%MAT(ir,is,ipt)%VAR
1201 value(i) = value(i) + uvar(i1 + i)/npg
1202 is_written_value(i) = 1
1207 uvar=>elbuf_tab(ng)%BUFLY(j)%MAT(1,1,ipt)%VAR
1209 value(i) = uvar(i1 + i)
1210 is_written_value(i) = 1
1220 ELSEIF ( iply > 0 .AND. ipt ==-1 .AND. iuvar > 0)
THEN
1223 nuvar = elbuf_tab(ng)%BUFLY(j)%NVAR_MAT
1224 IF(iuvar <= nuvar)
THEN
1226 IF (igtyp == 17 .OR. igtyp == 51)
THEN
1227 id_ply = igeo(1,stack%IGEO(2+j,isubstack))
1228 ELSEIF (igtyp == 52)
THEN
1229 id_ply =
ply_info(1,stack%IGEO(2+j,isubstack)-numstack)
1232 IF (id_ply == iply )
THEN
1233 bufly => elbuf_tab(ng)%BUFLY(j)
1234 imat = elbuf_tab(ng)%BUFLY(j)%IMAT
1236 IF(keyword ==
'USER') user_ok
1238 IF(imat == mds_matid(idmds))user_ok = 1
1241 IF(user_ok == 1)
THEN
1242 IF (igtyp == 17 .OR. igtyp == 51 .OR. igtyp == 52 )
THEN
1248 uvar=>elbuf_tab(ng)%BUFLY(j)%MAT(ir,is,ipt)%VAR
1250 value(i) = value(i) + uvar(i1 + i) / (npg * nptt)
1251 is_written_value(i) = 1
1256 uvar=>elbuf_tab(ng)%BUFLY(j)%MAT(1,1,ipt)%VAR
1258 value(i) = value(i) + uvar(i1 + i) / nptt
1259 is_written_value(i) = 1
1269 ELSEIF ( ilay <= nlay .AND. ilay > 0 .AND. ipt <= mpt .AND. ipt > 0 .AND. iuvar > 0)
THEN
1270 IF(iuvar <= nuvar)
THEN
1271 IF (igtyp == 51 .OR. igtyp == 52)
THEN
1272 nuvar = elbuf_tab(ng)%BUFLY(ilay)%NVAR_MAT
1273 bufly => elbuf_tab(ng)%BUFLY(ilay)
1274 imat = elbuf_tab(ng)%BUFLY(ilay)%IMAT
1276 IF(keyword ==
'USER') user_ok = 1
1278 IF(imat == mds_matid(idmds))user_ok = 1
1281 IF(user_ok == 1)
THEN
1284 uvar=>elbuf_tab(ng)%BUFLY(ilay)%MAT(ir,is,ipt)%VAR
1287 is_written_value(i) = 1
1295 ELSEIF ( ilay <= nlay .AND. ilay > 0 .AND. iuvar > 0)
THEN
1296 nuvar = elbuf_tab(ng)%BUFLY(ilay)%NVAR_MAT
1297 imat = elbuf_tab(ng)%BUFLY(ilay)%IMAT
1299 IF(keyword == 'user
') USER_OK = 1
1301 IF(IMAT == MDS_MATID(IDMDS))USER_OK = 1
1304 IF(USER_OK == 1)THEN
1305 IF(IUVAR <= NUVAR) THEN
1306.OR..OR..OR.
IF (IGTYP == 10 IGTYP == 11 IGTYP == 16 IGTYP == 17) THEN
1307 BUFLY => ELBUF_TAB(NG)%BUFLY(ILAY)
1310 UVAR=>ELBUF_TAB(NG)%BUFLY(ILAY)%MAT(IR,IS,1)%VAR
1312 VALUE(I) = VALUE(I) + UVAR(I1 + I)/NPG
1313 IS_WRITTEN_VALUE(I) = 1
1317.OR.
ELSEIF (IGTYP == 51 IGTYP == 52) THEN
1318 BUFLY => ELBUF_TAB(NG)%BUFLY(ILAY)
1322 UVAR=>ELBUF_TAB(NG)%BUFLY(ILAY)%MAT(IR,IS,IT)%VAR
1324 VALUE(I) = VALUE(I) + UVAR(I1 + I)/(NPG * NPTT)
1325 IS_WRITTEN_VALUE(I) = 1
1334.AND..AND.
ELSEIF ( IPT <= MPT IPT > 0 IUVAR > 0) THEN
1335.OR.
IF (IGTYP == 1 IGTYP == 9) THEN
1336 NUVAR = ELBUF_TAB(NG)%BUFLY(1)%NVAR_MAT
1337 BUFLY => ELBUF_TAB(NG)%BUFLY(1)
1338 IF(IUVAR <= NUVAR) THEN
1341 UVAR=>ELBUF_TAB(NG)%BUFLY(1)%MAT(IR,IS,IPT)%VAR
1343 VALUE(I) = VALUE(I) + UVAR(I1 + I)/NPG
1344 IS_WRITTEN_VALUE(I) = 1
1352 ELSEIF( KEYWORD == 'phi
' ) THEN
1355.AND..AND.
IF (ILAY <= NLAY ILAY > 0 IPLY == -1) THEN
1356 BUFLY => ELBUF_TAB(NG)%BUFLY(ILAY)
1358.OR..OR..OR.
IF (IGTYP == 9 IGTYP == 10 IGTYP == 11
1359.OR..OR..OR.
. IGTYP == 16 IGTYP == 17 IGTYP == 51
1360 . IGTYP == 52 ) THEN
1361.AND.
IF (MLW /= 0 MLW /= 13) THEN
1362.AND..OR.
IF(IDRAPE > 0 (IGTYP == 51 IGTYP == 52)) THEN
1363.AND.
IF(IPT <= BUFLY%NPTT IPT > 0 ) THEN
1364 LBUF_DIR => ELBUF_TAB(NG)%BUFLY(ILAY)%LBUF_DIR(IPT)
1366 LBUF_DIR => ELBUF_TAB(NG)%BUFLY(ILAY)%LBUF_DIR(1)
1370 X21 = X(1,IXC(3,N))-X(1,IXC(2,N))
1371 X32 = X(1,IXC(4,N))-X(1,IXC(3,N))
1372 X34 = X(1,IXC(4,N))-X(1,IXC(5,N))
1373 X41 = X(1,IXC(5,N))-X(1,IXC(2,N))
1374 Y21 = X(2,IXC(3,N))-X(2,IXC(2,N))
1375 Y32 = X(2,IXC(4,N))-X(2,IXC(3,N))
1376 Y34 = X(2,IXC(4,N))-X(2,IXC(5,N))
1377 Y41 = X(2,IXC(5,N))-X(2,IXC(2,N))
1379 Z21 = X(3,IXC(3,N))-X(3,IXC(2,N))
1380 Z32 = X(3,IXC(4,N))-X(3,IXC(3,N))
1381 Z34 = X(3,IXC(4,N))-X(3,IXC(5,N))
1382 Z41 = X(3,IXC(5,N))-X(3,IXC(2,N))
1392 E3X = E1Y*E2Z-E1Z*E2Y
1393 E3Y = E1Z*E2X-E1X*E2Z
1394 E3Z = E1X*E2Y-E1Y*E2X
1403 IF (ISHFRAM == 0 ) THEN
1405 SUMA = E3X*E3X+E3Y*E3Y+E3Z*E3Z
1406 SUMA = ONE / MAX(SQRT(SUMA),EM20)
1411 S1 = E1X*E1X+E1Y*E1Y+E1Z*E1Z
1412 S2 = E2X*E2X+E2Y*E2Y+E2Z*E2Z
1414 E1X = E1X + (E2Y*E3Z-E2Z*E3Y)*SUMA
1415 E1Y = E1Y + (E2Z*E3X-E2X*E3Z)*SUMA
1416 E1Z = E1Z + (E2X*E3Y-E2Y*E3X)*SUMA
1418 SUMA = E1X*E1X+E1Y*E1Y+E1Z*E1Z
1419 SUMA = ONE / MAX(SQRT(SUMA),EM20)
1424 E2X = E3Y * E1Z - E3Z * E1Y
1425 E2Y = E3Z * E1X - E3X * E1Z
1426 E2Z = E3X * E1Y - E3Y * E1X
1427 ELSEIF (ISHFRAM == 2) THEN
1429 SUMA = E2X*E2X+E2Y*E2Y+E2Z*E2Z
1430 E1X = E1X*SUMA + E2Y*E3Z-E2Z*E3Y
1431 E1Y = E1Y*SUMA + E2Z*E3X-E2X*E3Z
1432 E1Z = E1Z*SUMA + E2X*E3Y-E2Y*E3X
1433 SUMA = E1X*E1X+E1Y*E1Y+E1Z*E1Z
1434 SUMA = ONE/MAX(SQRT(SUMA),EM20)
1439 SUMA = E3X*E3X+E3Y*E3Y+E3Z*E3Z
1440 SUMA = ONE / MAX(SQRT(SUMA),EM20)
1445 E2X = E3Y*E1Z-E3Z*E1Y
1446 E2Y = E3Z*E1X-E3X*E1Z
1447 E2Z = E3X*E1Y-E3Y*E1X
1448 SUMA = E2X*E2X+E2Y*E2Y+E2Z*E2Z
1449 SUMA = ONE/MAX(SQRT(SUMA),EM20)
1455 AA = LBUF_DIR%DIRA(I)
1456 BB = LBUF_DIR%DIRA(I+NEL)
1460 VR = V1*E1X+ V2*E1Y + V3*E1Z
1461 VS = V1*E2X+ V2*E2Y + V3*E2Z
1462 SUMA=SQRT(VR*VR + VS*VS)
1466 DIR1_1 = LBUF_DIR%DIRA(I)
1467 DIR1_2 = LBUF_DIR%DIRA(I+NEL)
1470 PHI =(HUNDRED80/PI)*ATAN2(DIR1_2,DIR1_1)
1471 ERR = (ABS(PHI) - NINTY)/NINTY
1473 IF(ABS(ERR) < EM02) VALUE(I) = SIGN(NINTY,PHI)
1474 IF(ABS(VALUE(I)) < ONE) VALUE(I) = ZERO
1475 IS_WRITTEN_VALUE(I) = 1
1480 X21 = X(1,IXC(3,N))-X(1,IXC(2,N))
1481 X32 = X(1,IXC(4,N))-X(1,IXC(3,N))
1482 X34 = X(1,IXC(4,N))-X(1,IXC(5,N))
1483 X41 = X(1,IXC(5,N))-X(1,IXC(2,N))
1485 Y21 = X(2,IXC(3,N))-X(2,IXC(2,N))
1486 Y32 = X(2,IXC(4,N))-X(2,IXC(3,N))
1487 Y34 = X(2,IXC(4,N))-X(2,IXC(5,N))
1488 Y41 = X(2,IXC(5,N))-X(2,IXC(2,N))
1490 Z21 = X(3,IXC(3,N))-X(3,IXC(2,N))
1491 Z32 = X(3,IXC(4,N))-X(3,IXC(3,N))
1492 Z34 = X(3,IXC(4,N))-X(3,IXC(5,N))
1493 Z41 = X(3,IXC(5,N))-X(3,IXC(2,N))
1503 E3X = E1Y*E2Z-E1Z*E2Y
1504 E3Y = E1Z*E2X-E1X*E2Z
1505 E3Z = E1X*E2Y-E1Y*E2X
1514.OR.
IF (ISHFRAM == 0 IGTYP == 16 ) THEN
1516 SUMA = E3X*E3X+E3Y*E3Y+E3Z*E3Z
1517 SUMA = ONE / MAX(SQRT(SUMA),EM20)
1522 S1 = E1X*E1X+E1Y*E1Y+E1Z*E1Z
1523 S2 = E2X*E2X+E2Y*E2Y+E2Z*E2Z
1525 E1X = E1X + (E2Y*E3Z-E2Z*E3Y)*SUMA
1526 E1Y = E1Y + (E2Z*E3X-E2X*E3Z)*SUMA
1527 E1Z = E1Z + (E2X*E3Y-E2Y*E3X)*SUMA
1529 SUMA = E1X*E1X+E1Y*E1Y+E1Z*E1Z
1530 SUMA = ONE / MAX(SQRT(SUMA),EM20)
1535 E2X = E3Y * E1Z - E3Z * E1Y
1536 E2Y = E3Z * E1X - E3X * E1Z
1537 E2Z = E3X * E1Y - E3Y * E1X
1538 ELSEIF (ISHFRAM == 2) THEN
1540 SUMA = E2X*E2X+E2Y*E2Y+E2Z*E2Z
1541 E1X = E1X*SUMA + E2Y*E3Z-E2Z*E3Y
1542 E1Y = E1Y*SUMA + E2Z*E3X-E2X*E3Z
1543 E1Z = E1Z*SUMA + E2X*E3Y-E2Y*E3X
1544 SUMA = E1X*E1X+E1Y*E1Y+E1Z*E1Z
1545 SUMA = ONE/MAX(SQRT(SUMA),EM20)
1550 SUMA = E3X*E3X+E3Y*E3Y+E3Z*E3Z
1551 SUMA = ONE / MAX(SQRT(SUMA),EM20)
1556 E2X = E3Y*E1Z-E3Z*E1Y
1557 E2Y = E3Z*E1X-E3X*E1Z
1558 E2Z = E3X*E1Y-E3Y*E1X
1559 SUMA = E2X*E2X+E2Y*E2Y+E2Z*E2Z
1560 SUMA = ONE/MAX(SQRT(SUMA),EM20)
1567 BB = BUFLY%DIRA(I+NEL)
1571 VR = V1*E1X+ V2*E1Y + V3*E1Z
1572 VS = V1*E2X+ V2*E2Y + V3*E2Z
1573 SUMA=SQRT(VR*VR + VS*VS)
1577 DIR1_1 = BUFLY%DIRA(I)
1578 DIR1_2 = BUFLY%DIRA(I+NEL)
1580 PHI =(HUNDRED80/PI)*ATAN2(DIR1_2,DIR1_1)
1581 ERR = (ABS(PHI) - NINTY)/NINTY
1583 IF(ABS(ERR) < EM02) VALUE(I) = SIGN(NINTY,PHI)
1584 IF(ABS(VALUE(I)) < ONE) VALUE(I) = ZERO
1585 IS_WRITTEN_VALUE(I) = 1
1591 ELSEIF (ITY == 7) THEN
1593.OR..OR..OR.
IF (IGTYP == 9 IGTYP == 10 IGTYP == 11
1594.OR..OR..OR.
. IGTYP == 16 IGTYP == 17 IGTYP == 51
1595 . IGTYP == 52 ) THEN
1596.AND.
IF (MLW /= 0 MLW /= 13) THEN
1597.OR.
IF(IDRAPE > 0 . AND. (IGTYP == 51 IGTYP == 52)) THEN
1598.AND.
IF(IPT <= BUFLY%NPTT IPT > 0) THEN
1599 LBUF_DIR => ELBUF_TAB(NG)%BUFLY(ILAY)%LBUF_DIR(IPT)
1601 LBUF_DIR => ELBUF_TAB(NG)%BUFLY(ILAY)%LBUF_DIR(1)
1605 X21 = X(1,IXTG(3,N))-X(1,IXTG(2,N))
1606 X31 = X(1,IXTG(4,N))-X(1,IXTG(2,N))
1607 X32 = X(1,IXTG(4,N))-X(1,IXTG(3,N))
1609 Y21 = X(2,IXTG(3,N))-X(2,IXTG(2,N))
1610 Y31 = X(2,IXTG(4,N))-X(2,IXTG(2,N))
1611 Y32 = X(2,IXTG(4,N))-X(2,IXTG(3,N))
1613 Z21 = X(3,IXTG(3,N))-X(3,IXTG(2,N))
1614 Z31 = X(3,IXTG(4,N))-X(3,IXTG(2,N))
1615 Z32 = X(3,IXTG(4,N))-X(3,IXTG(3,N))
1627 X2L = SQRT(E1X*E1X+E1Y*E1Y+E1Z*E1Z)
1635 SUM_ = SQRT(E3X*E3X+E3Y*E3Y+E3Z*E3Z)
1643 SUM_ = SQRT(E2X*E2X+E2Y*E2Y+E2Z*E2Z)
1648 AA = LBUF_DIR%DIRA(I)
1649 BB = LBUF_DIR%DIRA(I+NEL)
1650 V1 = AA*E11 + BB*E21
1651 V2 = AA*E12 + BB*E22
1652 V3 = AA*E13 + BB*E23
1653 VR = V1*E1X + V2*E1Y + V3*E1Z
1654 VS = V1*E2X + V2*E2Y + V3*E2Z
1655 SUMA=SQRT(VR*VR + VS*VS)
1659 DIR1_1 = LBUF_DIR%DIRA(I)
1660 DIR1_2 = LBUF_DIR%DIRA(I+NEL)
1662 PHI =(HUNDRED80/PI)*ATAN2(DIR1_2,DIR1_1)
1663 ERR = (ABS(PHI) - NINTY)/NINTY
1665 IF(ABS(ERR) < EM02) VALUE(I) = SIGN(NINTY,PHI)
1666 IF(ABS(VALUE(I)) < ONE) VALUE(I) = ZERO
1667 IS_WRITTEN_VALUE(I) = 1
1672 X21 = X(1,IXTG(3,N))-X(1,IXTG(2,N))
1673 X31 = X(1,IXTG(4,N))-X(1,IXTG(2,N))
1674 X32 = X(1,IXTG(4,N))-X(1,IXTG(3,N))
1676 Y21 = X(2,IXTG(3,N))-X(2,IXTG(2,N))
1677 Y31 = X(2,IXTG(4,N))-X(2,IXTG(2,N))
1678 Y32 = X(2,IXTG(4,N))-X(2,IXTG(3,N))
1680 Z21 = X(3,IXTG(3,N))-X(3,IXTG(2,N))
1681 Z31 = X(3,IXTG(4,N))-X(3,IXTG(2,N))
1682 Z32 = X(3,IXTG(4,N))-X(3,IXTG(3,N))
1694 X2L = SQRT(E1X*E1X+E1Y*E1Y+E1Z*E1Z)
1702 SUM_ = SQRT(E3X*E3X+E3Y*E3Y+E3Z*E3Z)
1710 SUM_ = SQRT(E2X*E2X+E2Y*E2Y+E2Z*E2Z)
1716 BB = BUFLY%DIRA(I+NEL)
1717 V1 = AA*E11 + BB*E21
1718 V2 = AA*E12 + BB*E22
1719 V3 = AA*E13 + BB*E23
1720 VR = V1*E1X + V2*E1Y + V3*E1Z
1721 VS = V1*E2X + V2*E2Y + V3*E2Z
1722 SUMA=SQRT(VR*VR + VS*VS)
1726 DIR1_1 = BUFLY%DIRA(I)
1727 DIR1_2 = BUFLY%DIRA(I+NEL)
1729 PHI =(HUNDRED80/PI)*ATAN2(DIR1_2,DIR1_1)
1730 ERR = (ABS(PHI) - NINTY)/NINTY
1732 IF(ABS(ERR) < EM02) VALUE(I) = SIGN(NINTY,PHI)
1733 IF(ABS(VALUE(I)) < ONE) VALUE(I) = ZERO
1734 IS_WRITTEN_VALUE(I) = 1
1741 ELSEIF (IPLY > 0) THEN
1744.OR.
IF (IGTYP == 17 IGTYP == 51) THEN
1745 ID_PLY = IGEO(1,STACK%IGEO(2+J,ISUBSTACK))
1746 ELSEIF (IGTYP == 52) THEN
1747 ID_PLY = PLY_INFO(1,STACK%IGEO(2+J,ISUBSTACK)-NUMSTACK)
1750 IF (ID_PLY == IPLY ) THEN
1751 BUFLY => ELBUF_TAB(NG)%BUFLY(J)
1753.OR..OR.
IF (IGTYP == 17 IGTYP == 51 IGTYP == 52 ) THEN
1754.AND.
IF (MLW /= 0 MLW /= 13) THEN
1755.AND..OR.
IF(IDRAPE > 0 (IGTYP == 51 IGTYP == 52)) THEN
1756.AND.
IF(IPT <= BUFLY%NPTT IPT > 0) THEN
1757 LBUF_DIR => ELBUF_TAB(NG)%BUFLY(J)%LBUF_DIR(IPT)
1759 LBUF_DIR => ELBUF_TAB(NG)%BUFLY(J)%LBUF_DIR(1)
1763 X21 = X(1,IXC(3,N))-X(1,IXC(2,N))
1764 X32 = X(1,IXC(4,N))-X(1,IXC(3,N))
1765 X34 = X(1,IXC(4,N))-X(1,IXC(5,N))
1766 X41 = X(1,IXC(5,N))-X(1,IXC(2,N))
1768 Y21 = X(2,IXC(3,N))-X(2,IXC(2,N))
1769 Y32 = X(2,IXC(4,N))-X(2,IXC(3,N))
1770 Y34 = X(2,IXC(4,N))-X(2,IXC(5,N))
1771 Y41 = X(2,IXC(5,N))-X(2,IXC(2,N))
1773 Z21 = X(3,IXC(3,N))-X(3,IXC(2,N))
1774 Z32 = X(3,IXC(4,N))-X(3,IXC(3,N))
1775 Z34 = X(3,IXC(4,N))-X(3,IXC(5,N))
1776 Z41 = X(3,IXC(5,N))-X(3,IXC(2,N))
1786 E3X = E1Y*E2Z-E1Z*E2Y
1787 E3Y = E1Z*E2X-E1X*E2Z
1788 E3Z = E1X*E2Y-E1Y*E2X
1798 IF (ISHFRAM == 0 ) THEN
1800 SUMA = E3X*E3X+E3Y*E3Y+E3Z*E3Z
1801 SUMA = ONE / MAX(SQRT(SUMA),EM20)
1806 S1 = E1X*E1X+E1Y*E1Y+E1Z*E1Z
1807 S2 = E2X*E2X+E2Y*E2Y+E2Z*E2Z
1809 E1X = E1X + (E2Y*E3Z-E2Z*E3Y)*SUMA
1810 E1Y = E1Y + (E2Z*E3X-E2X*E3Z)*SUMA
1811 E1Z = E1Z + (E2X*E3Y-E2Y*E3X)*SUMA
1813 SUMA = E1X*E1X+E1Y*E1Y+E1Z*E1Z
1814 SUMA = ONE / MAX(SQRT(SUMA),EM20)
1819 E2X = E3Y * E1Z - E3Z * E1Y
1820 E2Y = E3Z * E1X - E3X * E1Z
1821 E2Z = E3X * E1Y - E3Y * E1X
1822 ELSEIF (ISHFRAM == 2) THEN
1824 SUMA = E2X*E2X+E2Y*E2Y+E2Z*E2Z
1825 E1X = E1X*SUMA + E2Y*E3Z-E2Z*E3Y
1826 E1Y = E1Y*SUMA + E2Z*E3X-E2X*E3Z
1827 E1Z = E1Z*SUMA + E2X*E3Y-E2Y*E3X
1828 SUMA = E1X*E1X+E1Y*E1Y+E1Z*E1Z
1829 SUMA = ONE/MAX(SQRT(SUMA),EM20)
1834 SUMA = E3X*E3X+E3Y*E3Y+E3Z*E3Z
1835 SUMA = ONE / MAX(SQRT(SUMA),EM20)
1840 E2X = E3Y*E1Z-E3Z*E1Y
1841 E2Y = E3Z*E1X-E3X*E1Z
1842 E2Z = E3X*E1Y-E3Y*E1X
1843 SUMA = E2X*E2X+E2Y*E2Y+E2Z*E2Z
1844 SUMA = ONE/MAX(SQRT(SUMA),EM20)
1850 AA = LBUF_DIR%DIRA(I)
1851 BB = LBUF_DIR%DIRA(I+NEL)
1855 VR = V1*E1X+ V2*E1Y + V3*E1Z
1856 VS = V1*E2X+ V2*E2Y + V3*E2Z
1857 SUMA=SQRT(VR*VR + VS*VS)
1861 DIR1_1 = LBUF_DIR%DIRA(I)
1862 DIR1_2 = LBUF_DIR%DIRA(I+NEL)
1865 PHI =(HUNDRED80/PI)*ATAN2(DIR1_2,DIR1_1)
1866 ERR = (ABS(PHI) - NINTY)/NINTY
1868 IF(ABS(ERR) < EM02) VALUE(I) = SIGN(NINTY,PHI)
1869 IF(ABS(VALUE(I)) < ONE) VALUE(I) = ZERO
1870 IS_WRITTEN_VALUE(I) = 1
1875 X21 = X(1,IXC(3,N))-X(1,IXC(2,N))
1876 X32 = X(1,IXC(4,N))-X(1,IXC(3,N))
1877 X34 = X(1,IXC(4,N))-X(1,IXC(5,N))
1878 X41 = X(1,IXC(5,N))-X(1,IXC(2,N))
1880 Y21 = X(2,IXC(3,N))-X(2,IXC(2,N))
1881 Y32 = X(2,IXC(4,N))-X(2,IXC(3,N))
1882 Y34 = X(2,IXC(4,N))-X(2,IXC(5,N))
1883 Y41 = X(2,IXC(5,N))-X(2,IXC(2,N))
1885 Z21 = X(3,IXC(3,N))-X(3,IXC(2,N))
1886 Z32 = X(3,IXC(4,N))-X(3,IXC(3,N))
1887 Z34 = X(3,IXC(4,N))-X(3,IXC(5,N))
1888 Z41 = X(3,IXC(5,N))-X(3,IXC(2,N))
1898 E3X = E1Y*E2Z-E1Z*E2Y
1899 E3Y = E1Z*E2X-E1X*E2Z
1900 E3Z = E1X*E2Y-E1Y*E2X
1910.OR.
IF (ISHFRAM == 0 IGTYP == 16 ) THEN
1912 SUMA = E3X*E3X+E3Y*E3Y+E3Z*E3Z
1913 SUMA = ONE / MAX(SQRT(SUMA),EM20)
1918 S1 = E1X*E1X+E1Y*E1Y+E1Z*E1Z
1919 S2 = E2X*E2X+E2Y*E2Y+E2Z*E2Z
1921 E1X = E1X + (E2Y*E3Z-E2Z*E3Y)*SUMA
1922 E1Y = E1Y + (E2Z*E3X-E2X*E3Z)*SUMA
1923 E1Z = E1Z + (E2X*E3Y-E2Y*E3X)*SUMA
1925 SUMA = E1X*E1X+E1Y*E1Y+E1Z*E1Z
1926 SUMA = ONE / MAX(SQRT(SUMA),EM20)
1931 E2X = E3Y * E1Z - E3Z * E1Y
1932 E2Y = E3Z * E1X - E3X * E1Z
1933 E2Z = E3X * E1Y - E3Y * E1X
1934 ELSEIF (ISHFRAM == 2) THEN
1936 SUMA = E2X*E2X+E2Y*E2Y+E2Z*E2Z
1937 E1X = E1X*SUMA + E2Y*E3Z-E2Z*E3Y
1938 E1Y = E1Y*SUMA + E2Z*E3X-E2X*E3Z
1939 E1Z = E1Z*SUMA + E2X*E3Y-E2Y*E3X
1940 SUMA = E1X*E1X+E1Y*E1Y+E1Z*E1Z
1941 SUMA = ONE/MAX(SQRT(SUMA),EM20)
1946 SUMA = E3X*E3X+E3Y*E3Y+E3Z*E3Z
1947 SUMA = ONE / MAX(SQRT(SUMA),EM20)
1952 E2X = E3Y*E1Z-E3Z*E1Y
1953 E2Y = E3Z*E1X-E3X*E1Z
1954 E2Z = E3X*E1Y-E3Y*E1X
1955 SUMA = E2X*E2X+E2Y*E2Y+E2Z*E2Z
1956 SUMA = ONE/MAX(SQRT(SUMA),EM20)
1963 BB = BUFLY%DIRA(I+NEL)
1967 VR = V1*E1X+ V2*E1Y + V3*E1Z
1968 VS = V1*E2X+ V2*E2Y + V3*E2Z
1969 SUMA=SQRT(VR*VR + VS*VS)
1973 DIR1_1 = BUFLY%DIRA(I)
1974 DIR1_2 = BUFLY%DIRA(I+NEL)
1977 PHI =(HUNDRED80/PI)*ATAN2(DIR1_2,DIR1_1)
1978 ERR = (ABS(PHI) - NINTY)/NINTY
1980 IF(ABS(ERR) < EM02) VALUE(I) = SIGN(NINTY,PHI)
1981 IF(ABS(VALUE(I)) < ONE) VALUE(I) = ZERO
1982 IS_WRITTEN_VALUE(I) = 1
1988 ELSEIF (ITY == 7) THEN
1989.OR..OR.
IF (IGTYP == 17 IGTYP == 51 IGTYP == 52 ) THEN
1990.AND.
IF (MLW /= 0 MLW /= 13) THEN
1991.AND..OR.
IF(IDRAPE > 0 (IGTYP == 51 IGTYP == 52)) THEN
1992.AND.
IF(IPT <= BUFLY%NPTT IPT > 0 ) THEN
1993 LBUF_DIR => ELBUF_TAB(NG)%BUFLY(J)%LBUF_DIR(IPT)
1995 LBUF_DIR => ELBUF_TAB(NG)%BUFLY(J)%LBUF_DIR(1)
1999 X21 = X(1,IXTG(3,N))-X(1,IXTG(2,N))
2000 X31 = X(1,IXTG(4,N))-X(1,IXTG(2,N))
2001 X32 = X(1,IXTG(4,N))-X(1,IXTG(3,N))
2003 Y21 = X(2,IXTG(3,N))-X(2,IXTG(2,N))
2004 Y31 = X(2,IXTG(4,N))-X(2,IXTG(2,N))
2005 Y32 = X(2,IXTG(4,N))-X(2,IXTG(3,N))
2007 Z21 = X(3,IXTG(3,N))-X(3,IXTG(2,N))
2008 Z31 = X(3,IXTG(4,N))-X(3,IXTG(2,N))
2009 Z32 = X(3,IXTG(4,N))-X(3,IXTG(3,N))
2021 X2L = SQRT(E1X*E1X+E1Y*E1Y+E1Z*E1Z)
2029 SUM_ = SQRT(E3X*E3X+E3Y*E3Y+E3Z*E3Z)
2037 SUM_ = SQRT(E2X*E2X+E2Y*E2Y+E2Z*E2Z)
2042 DIR1_1 = LBUF_DIR%DIRA(I)
2043 DIR1_2 = LBUF_DIR%DIRA(I+NEL)
2044 V1 = AA*E11 + BB*E21
2045 V2 = AA*E12 + BB*E22
2046 V3 = AA*E13 + BB*E23
2047 VR = V1*E1X + V2*E1Y + V3*E1Z
2048 VS = V1*E2X + V2*E2Y + V3*E2Z
2049 SUMA=SQRT(VR*VR + VS*VS)
2053 DIR1_1 = LBUF_DIR%DIRA(I)
2054 DIR1_2 = LBUF_DIR%DIRA(I+NEL)
2056 PHI =(HUNDRED80/PI)*ATAN2(DIR1_2,DIR1_1)
2057 ERR = (ABS(PHI) - NINTY)/NINTY
2059 IF(ABS(ERR) < EM02) VALUE(I) = SIGN(NINTY,PHI)
2060 IF(ABS(VALUE(I)) < ONE) VALUE(I) = ZERO
2061 IS_WRITTEN_VALUE(I) = 1
2066 X21 = X(1,IXTG(3,N))-X(1,IXTG(2,N))
2067 X31 = X(1,IXTG(4,N))-X(1,IXTG(2,N))
2068 X32 = X(1,IXTG(4,N))-X(1,IXTG(3,N))
2070 Y21 = X(2,IXTG(3,N))-X(2,IXTG(2,N))
2071 Y31 = X(2,IXTG(4,N))-X(2,IXTG(2,N))
2072 Y32 = X(2,IXTG(4,N))-X(2,IXTG(3,N))
2074 Z21 = X(3,IXTG(3,N))-X(3,IXTG(2,N))
2075 Z31 = X(3,IXTG(4,N))-X(3,IXTG(2,N))
2076 Z32 = X(3,IXTG(4,N))-X(3,IXTG(3,N))
2088 X2L = SQRT(E1X*E1X+E1Y*E1Y+E1Z*E1Z)
2096 SUM_ = SQRT(E3X*E3X+E3Y*E3Y+E3Z*E3Z)
2104 SUM_ = SQRT(E2X*E2X+E2Y*E2Y+E2Z*E2Z)
2109 DIR1_1 = BUFLY%DIRA(I)
2110 DIR1_2 = BUFLY%DIRA(I+NEL)
2111 V1 = AA*E11 + BB*E21
2112 V2 = AA*E12 + BB*E22
2113 V3 = AA*E13 + BB*E23
2114 VR = V1*E1X + V2*E1Y + V3*E1Z
2115 VS = V1*E2X + V2*E2Y + V3*E2Z
2116 SUMA=SQRT(VR*VR + VS*VS)
2120 DIR1_1 = BUFLY%DIRA(I)
2121 DIR1_2 = BUFLY%DIRA(I+NEL)
2123 PHI =(HUNDRED80/PI)*ATAN2(DIR1_2,DIR1_1)
2124 ERR = (ABS(PHI) - NINTY)/NINTY
2126 IF(ABS(ERR) < EM02) VALUE(I) = SIGN(NINTY,PHI)
2127 IF(ABS(VALUE(I)) < ONE) VALUE(I) = ZERO
2128 IS_WRITTEN_VALUE(I) = 1
2139 ELSEIF (KEYWORD == 'epsp.AND..AND.
' MLW /= 15 MLW /= 25 ) THEN ! anim/shell/epsp/
2142.AND..AND.
IF(MPT == 0 GBUF%G_PLA > 0 IPT == 1) THEN
2143.OR.
IF (IGTYP == 1 IGTYP == 9) THEN
2144 BUFLY => ELBUF_TAB(NG)%BUFLY(1)
2145 IF (BUFLY%L_PLA > 0) THEN
2148 LBUF => BUFLY%LBUF(IR,IS,1)
2150 VALUE(I) = VALUE(I) + ABS(LBUF%PLA(I))/NPG
2151 IS_WRITTEN_VALUE(I) = 1
2157.AND..AND..and.
ELSEIF ( ILAY == -1 IPT == -1 IPLY == -1 GBUF%G_PLA > 0) THEN
2158 ! for law25, plastic work < 0 if the layer has reached failure-p
2160 IF (NLAY > 1) ILAY0 = IABS(NLAY)/2 + 1
2161 BUFLY => ELBUF_TAB(NG)%BUFLY(ILAY0)
2162 IF (BUFLY%L_PLA > 0) THEN
2165.OR.
IF(IGTYP == 51 IGTYP == 52) THEN
2171 VALUE(I) = VALUE(I) + FOURTH*BUFLY%LBUF(IR,IS,IT)%PLA(I)/NPTT
2172 IS_WRITTEN_VALUE(I) = 1
2179 VALUE(I) = FOURTH*(BUFLY%LBUF(1,1,1)%PLA(I) + BUFLY%LBUF(2,1,1)%PLA(I) +
2180 . BUFLY%LBUF(1,2,1)%PLA(I) + BUFLY%LBUF(2,2,1)%PLA(I))
2181 IS_WRITTEN_VALUE(I) = 1
2185.OR.
IF(IGTYP == 51 IGTYP == 52) THEN
2190 VALUE(I) = VALUE(I) + THIRD*BUFLY%LBUF(IR,1,IT)%PLA(I)/NPTT
2191 IS_WRITTEN_VALUE(I) = 1
2197 VALUE(I) = THIRD*(BUFLY%LBUF(1,1,1)%PLA(I) + BUFLY%LBUF(1,1,1)%PLA(I) +
2198 . BUFLY%LBUF(1,1,1)%PLA(I))
2199 IS_WRITTEN_VALUE(I) = 1
2204.OR.
IF(IGTYP == 51 IGTYP == 52) THEN
2205 NPTT = BUFLY%NPTT ! needed for PID51 (new shell prop)
2208 VALUE(I) = VALUE(I) + ABS(BUFLY%LBUF(1,1,IT)%PLA(I))/NPTT
2209 IS_WRITTEN_VALUE(I) = 1
2214 IPT = IABS(NPTT)/2 + 1
2216 VALUE(I) = ABS(BUFLY%LBUF(1,1,IPT)%PLA(I))
2217 IS_WRITTEN_VALUE(I) = 1
2223.AND..AND..AND.
ELSEIF ( IPLY > 0 (IPT <= MPT IPT > 0 ) GBUF%G_PLA > 0) THEN
2227.OR.
IF (IGTYP == 17 IGTYP == 51) THEN
2228 ID_PLY = IGEO(1,STACK%IGEO(2+J,ISUBSTACK))
2229 ELSEIF (IGTYP == 52) THEN
2230 ID_PLY = PLY_INFO(1,STACK%IGEO(2+J,ISUBSTACK)-NUMSTACK)
2233 IF (ID_PLY == IPLY ) THEN
2234 BUFLY => ELBUF_TAB(NG)%BUFLY(J)
2235.OR..OR.
IF (IGTYP == 17 IGTYP == 51 IGTYP == 52 ) THEN
2237 IF( IPT <= NPTT) THEN
2242 VALUE(I) = VALUE(I) + ABS(BUFLY%LBUF(IR,IS,IPT)%PLA(I))/NPG
2243 IS_WRITTEN_VALUE(I) = 1
2249 VALUE(I) = ABS(BUFLY%LBUF(1,1,IPT)%PLA(I))
2250 IS_WRITTEN_VALUE(I) = 1
2259.AND..AND.
ELSEIF ( IPLY > 0 IPT == -1 GBUF%G_PLA > 0) THEN
2263.OR.
IF (IGTYP == 17 IGTYP == 51) THEN
2264 ID_PLY = IGEO(1,STACK%IGEO(2+J,ISUBSTACK))
2265 ELSEIF (IGTYP == 52) THEN
2266 ID_PLY = PLY_INFO(1,STACK%IGEO(2+J,ISUBSTACK)-NUMSTACK)
2269 IF (ID_PLY == IPLY ) THEN
2270 BUFLY => ELBUF_TAB(NG)%BUFLY(J)
2271.OR..OR.
IF (IGTYP == 17 IGTYP == 51 IGTYP == 52 ) THEN
2274 IF( IPT <= NPTT) THEN
2279 VALUE(I) = VALUE(I) + ABS(BUFLY%LBUF(IR,IS,IPT)%PLA(I))/NPG
2280 IS_WRITTEN_VALUE(I) = 1
2286 VALUE(I) = VALUE(I) + ABS(BUFLY%LBUF(1,1,IPT)%PLA(I))
2287 IS_WRITTEN_VALUE(I) = 1
2298.AND..AND..AND..AND.
ELSEIF ( (ILAY <= NLAY ILAY > 0) (IPT <= MPT IPT > 0 ) GBUF%G_PLA > 0) THEN
2299.OR.
IF (IGTYP == 51 IGTYP == 52) THEN
2300 BUFLY => ELBUF_TAB(NG)%BUFLY(ILAY)
2301 IF (BUFLY%L_PLA > 0) THEN
2304 LBUF => BUFLY%LBUF(IR,IS,IPT)
2306 VALUE(I) = VALUE(I) + ABS(LBUF%PLA(I))/NPG
2307 IS_WRITTEN_VALUE(I) = 1
2314.AND..AND.
ELSEIF ( ILAY <= NLAY ILAY > 0 GBUF%G_PLA > 0) THEN
2315.OR..OR..OR.
IF (IGTYP == 10 IGTYP == 11 IGTYP == 16 IGTYP == 17) THEN
2316 BUFLY => ELBUF_TAB(NG)%BUFLY(ILAY)
2317 IF (BUFLY%L_PLA > 0) THEN
2320 LBUF => BUFLY%LBUF(IR,IS,1)
2322 VALUE(I) = VALUE(I) + ABS(LBUF%PLA(I))/NPG
2323 IS_WRITTEN_VALUE(I) = 1
2328.OR.
ELSEIF (IGTYP == 51 IGTYP == 52) THEN
2329 BUFLY => ELBUF_TAB(NG)%BUFLY(ILAY)
2330 IF (BUFLY%L_PLA > 0) THEN
2334 LBUF => BUFLY%LBUF(IR,IS,IT)
2336 VALUE(I) = VALUE(I) + ABS(LBUF%PLA(I))/NPG
2337 IS_WRITTEN_VALUE(I) = 1
2346.AND..AND.
ELSEIF ( IPT <= MPT IPT > 0 GBUF%G_PLA > 0) THEN
2347.OR.
IF (IGTYP == 1 IGTYP == 9) THEN
2348 BUFLY => ELBUF_TAB(NG)%BUFLY(1)
2349 IF (BUFLY%L_PLA > 0) THEN
2352 LBUF => BUFLY%LBUF(IR,IS,IPT)
2354 VALUE(I) = VALUE(I) + ABS(LBUF%PLA(I))/NPG
2355 IS_WRITTEN_VALUE(I) = 1
2427 ELSEIF (KEYWORD == 'wpla.AND..OR.
' (MLW == 15 MLW == 25) ) THEN ! anim/shell/WPLA/
2430.AND..AND..and.
IF ( ILAY == -1 IPT == -1 IPLY == -1 GBUF%G_PLA > 0) THEN
2431 ! for law25, plastic work < 0 if the layer has reached failure-p
2433 IF (NLAY > 1) ILAY0 = IABS(NLAY)/2 + 1
2434 BUFLY => ELBUF_TAB(NG)%BUFLY(ILAY0)
2435 IF (BUFLY%L_PLA > 0) THEN
2438.OR.
IF(IGTYP == 51 IGTYP == 52) THEN
2444 VALUE(I) = VALUE(I) + FOURTH*BUFLY%LBUF(IR,IS,IT)%PLA(I)/NPTT
2445 IS_WRITTEN_VALUE(I) = 1
2452 VALUE(I) = FOURTH*(BUFLY%LBUF(1,1,1)%PLA(I) + BUFLY%LBUF(2,1,1)%PLA(I) +
2453 . BUFLY%LBUF(1,2,1)%PLA(I) + BUFLY%LBUF(2,2,1)%PLA(I))
2454 IS_WRITTEN_VALUE(I) = 1
2458.OR.
IF(IGTYP == 51 IGTYP == 52) THEN
2463 VALUE(I) = VALUE(I) + THIRD*BUFLY%LBUF(IR,1,IT)%PLA(I)/NPTT
2464 IS_WRITTEN_VALUE(I) = 1
2470 VALUE(I) = THIRD*(BUFLY%LBUF(1,1,1)%PLA(I) + BUFLY%LBUF(1,1,1)%PLA(I) +
2471 . BUFLY%LBUF(1,1,1)%PLA(I))
2472 IS_WRITTEN_VALUE(I) = 1
2477.OR.
IF(IGTYP == 51 IGTYP == 52)THEN
2478 NPTT = BUFLY%NPTT ! needed for PID51 (new shell prop)
2481 VALUE(I) = VALUE(I) + ABS(BUFLY%LBUF(1,1,IT)%PLA(I))/NPTT
2482 IS_WRITTEN_VALUE(I) = 1
2487 IPT = IABS(NPTT/2) + 1
2489 VALUE(I) = ABS(BUFLY%LBUF(1,1,IPT)%PLA(I))
2490 IS_WRITTEN_VALUE(I) = 1
2496.AND..AND..AND.
ELSEIF ( IPLY > 0 (IPT <= MPT IPT > 0 ) GBUF%G_PLA > 0) THEN
2500.OR.
IF (IGTYP == 17 IGTYP == 51) THEN
2501 ID_PLY = IGEO(1,STACK%IGEO(2+J,ISUBSTACK))
2502 ELSEIF (IGTYP == 52) THEN
2503 ID_PLY = PLY_INFO(1,STACK%IGEO(2+J,ISUBSTACK)-NUMSTACK)
2506 IF (ID_PLY == IPLY ) THEN
2507 BUFLY => ELBUF_TAB(NG)%BUFLY(J)
2508.OR..OR.
IF (IGTYP == 17 IGTYP == 51 IGTYP == 52 ) THEN
2510 IF( IPT <= NPTT) THEN
2515 VALUE(I) = VALUE(I) + ABS(BUFLY%LBUF(IR,IS,IPT)%PLA(I))/NPG
2516 IS_WRITTEN_VALUE(I) = 1
2522 VALUE(I) = ABS(BUFLY%LBUF(1,1,IPT)%PLA(I))
2523 IS_WRITTEN_VALUE(I) = 1
2532.AND..AND.
ELSEIF ( IPLY > 0 IPT == -1 GBUF%G_PLA > 0) THEN
2536.OR.
IF (IGTYP == 17 IGTYP == 51) THEN
2537 ID_PLY = IGEO(1,STACK%IGEO(2+J,ISUBSTACK))
2538 ELSEIF (IGTYP == 52) THEN
2539 ID_PLY = PLY_INFO(1,STACK%IGEO(2+J,ISUBSTACK)-NUMSTACK)
2542 IF (ID_PLY == IPLY ) THEN
2543 BUFLY => ELBUF_TAB(NG)%BUFLY(J)
2544.OR..OR.
IF (IGTYP == 17 IGTYP == 51 IGTYP == 52 ) THEN
2547 IF( IPT <= NPTT) THEN
2552 VALUE(I) = VALUE(I) + ABS(BUFLY%LBUF(IR,IS,IPT)%PLA(I))/NPG
2553 IS_WRITTEN_VALUE(I) = 1
2559 VALUE(I) = VALUE(I) + ABS(BUFLY%LBUF(1,1,IPT)%PLA(I))
2560 IS_WRITTEN_VALUE(I) = 1
2571.AND..AND..AND..AND.
ELSEIF ( (ILAY <= NLAY ILAY > 0) (IPT <= MPT IPT > 0 ) GBUF%G_PLA > 0) THEN
2572.OR.
IF (IGTYP == 51 IGTYP == 52) THEN
2573 BUFLY => ELBUF_TAB(NG)%BUFLY(ILAY)
2575.AND.
IF ((BUFLY%L_PLA > 0)(IPT <= NPTT)) THEN
2578 LBUF => BUFLY%LBUF(IR,IS,IPT)
2580 VALUE(I) = VALUE(I) + ABS(LBUF%PLA(I))/NPG
2581 IS_WRITTEN_VALUE(I) = 1
2588.AND..AND.
ELSEIF ( ILAY <= NLAY ILAY > 0 GBUF%G_PLA > 0) THEN
2589.OR..OR..OR.
IF (IGTYP == 10 IGTYP == 11 IGTYP == 16 IGTYP == 17) THEN
2590 BUFLY => ELBUF_TAB(NG)%BUFLY(ILAY)
2591 IF (BUFLY%L_PLA > 0) THEN
2594 LBUF => BUFLY%LBUF(IR,IS,1)
2596 VALUE(I) = VALUE(I) + ABS(LBUF%PLA(I))/NPG
2597 IS_WRITTEN_VALUE(I) = 1
2602.OR.
ELSEIF (IGTYP == 51 IGTYP == 52) THEN
2603 BUFLY => ELBUF_TAB(NG)%BUFLY(ILAY)
2604 IF (BUFLY%L_PLA > 0) THEN
2608 LBUF => BUFLY%LBUF(IR,IS,IT)
2610 VALUE(I) = VALUE(I) + ABS(LBUF%PLA(I))/NPG
2611 IS_WRITTEN_VALUE(I) = 1
2620.AND..AND.
ELSEIF ( IPT <= MPT IPT > 0 GBUF%G_PLA > 0) THEN
2621.OR.
IF (IGTYP == 1 IGTYP == 9) THEN
2622 BUFLY => ELBUF_TAB(NG)%BUFLY(1)
2623 IF (BUFLY%L_PLA > 0) THEN
2626 LBUF => BUFLY%LBUF(IR,IS,IPT)
2628 VALUE(I) = VALUE(I) + ABS(LBUF%PLA(I))/NPG
2629 IS_WRITTEN_VALUE(I) = 1
2637 ELSEIF (KEYWORD == 'nxtf
') THEN ! Damage factor
2641.AND.
IF ( ILAY == -1 IPT == -1) THEN
2642 NFAIL = ELBUF_TAB(NG)%BUFLY(1)%NFAIL
2643 NPTT = ELBUF_TAB(NG)%BUFLY(1)%NPTT
2648 FBUF => ELBUF_TAB(NG)%BUFLY(1)%FAIL(IR,IS,IPT)
2650 IF (FBUF%FLOC(IFAIL)%ILAWF == 25) THEN ! check NXT model
2653 VALUE(I) = MAX(VALUE(I),FBUF%FLOC(IFAIL)%DAM(I))
2654 IS_WRITTEN_VALUE(I) = 1
2662.AND..AND..AND.
ELSEIF (ILAY <= NLAY ILAY > 0 IPT <= MPT IPT > 0 ) THEN
2663.OR.
IF (IGTYP == 51 IGTYP == 52) THEN
2664 NFAIL = ELBUF_TAB(NG)%BUFLY(ILAY)%NFAIL
2665 NPTT = ELBUF_TAB(NG)%BUFLY(ILAY)%NPTT
2668 FBUF => ELBUF_TAB(NG)%BUFLY(ILAY)%FAIL(IR,IS,IPT)
2670 IF (FBUF%FLOC(IFAIL)%ILAWF == 25) THEN ! check NXT model
2673 VALUE(I) = MAX(VALUE(I),FBUF%FLOC(IFAIL)%DAM(I))
2674 IS_WRITTEN_VALUE(I) = 1
2682.AND.
ELSEIF ( ILAY <= NLAY ILAY > 0) THEN
2683.OR..OR..OR.
IF (IGTYP == 10 IGTYP == 11 IGTYP == 16 IGTYP == 17) THEN
2684 NFAIL = ELBUF_TAB(NG)%BUFLY(ILAY)%NFAIL
2685 NPTT = ELBUF_TAB(NG)%BUFLY(ILAY)%NPTT
2688 FBUF => ELBUF_TAB(NG)%BUFLY(ILAY)%FAIL(IR,IS,1)
2690 IF (FBUF%FLOC(IFAIL)%ILAWF == 25) THEN ! check NXT model
2693 VALUE(I) = MAX(VALUE(I),FBUF%FLOC(IFAIL)%DAM(I))
2694 IS_WRITTEN_VALUE(I) = 1
2700.OR.
ELSEIF (IGTYP == 51 IGTYP == 52) THEN
2701 NFAIL = ELBUF_TAB(NG)%BUFLY(ILAY)%NFAIL
2702 NPTT = ELBUF_TAB(NG)%BUFLY(ILAY)%NPTT
2706 FBUF => ELBUF_TAB(NG)%BUFLY(ILAY)%FAIL(IR,IS,IPT)
2708 IF (FBUF%FLOC(IFAIL)%ILAWF == 25) THEN ! check NXT model
2711 VALUE(I) = MAX(VALUE(I),FBUF%FLOC(IFAIL)%DAM(I))
2712 IS_WRITTEN_VALUE(I) = 1
2721.AND.
ELSEIF ( IPT <= MPT IPT > 0) THEN
2722.OR.
IF (IGTYP == 1 IGTYP == 9) THEN
2723 NFAIL = ELBUF_TAB(NG)%BUFLY(1)%NFAIL
2724 NPTT = ELBUF_TAB(NG)%BUFLY(1)%NPTT
2727 FBUF => ELBUF_TAB(NG)%BUFLY(1)%FAIL(IR,IS,IPT)
2729 IF (FBUF%FLOC(IFAIL)%ILAWF == 25) THEN ! check NXT model
2732 VALUE(I) = MAX(VALUE(I),FBUF%FLOC(IFAIL)%DAM(I))
2733 IS_WRITTEN_VALUE(I) = 1
2742 ELSEIF (KEYWORD == 'nxtf/memb
') THEN ! Damage factor - membrane
2750 IPT = IABS(NPTT) / 2
2752 NFAIL = ELBUF_TAB(NG)%BUFLY(IL)%NFAIL
2757 IF (NLAY == 1) IPT = IABS(NPTT) / 2
2758 FBUF => ELBUF_TAB(NG)%BUFLY(IL)%FAIL(IR,IS,IPT)
2760 IF (FBUF%FLOC(IFAIL)%ILAWF == 25) THEN ! check NXT model
2763 VALUE(I) = MAX(VALUE(I),FBUF%FLOC(IFAIL)%DAM(I))
2764 IS_WRITTEN_VALUE(I) = 1
2772 ELSE IF (KEYWORD == 'fail
') THEN ! FAIL
2774.OR..OR..OR.
IF (IGTYP == 10. OR.IGTYP == 11IGTYP == 17IGTYP == 51
2784 IF (IHBE == 11) THEN
2786 NPTT = ELBUF_TAB(NG)%BUFLY(IL)%NPTT
2787 BUFLY => ELBUF_TAB(NG)%BUFLY(IL)
2788 IMAT = ELBUF_TAB(NG)%BUFLY(IL)%IMAT
2790 MLW_LAY = ELBUF_TAB(NG)%BUFLY(IL)%ILAW
2798 LBUF => ELBUF_TAB(NG)%BUFLY(IL)%LBUF(IR,IS,IT)
2801 IF (MLW_LAY == 25) THEN
2802 DAM1(I)=LBUF%DMG(JJ(1)+I)
2803 DAM2(I)=LBUF%DMG(JJ(2)+I)
2804 WPLA(I) = WPLA(I) + ABS(LBUF%PLA(I))/NPG
2805 DMAX(I) = PM(64,IMAT)
2806 WPMAX(I)= PM(41,IMAT)
2807.OR.
IF (DAM1(I) >= DMAX(I)DAM2(I) >= DMAX(I)
2808.OR..OR.
. WPLA(I) < ZEROWPLA(I) >= WPMAX(I))
2809 . FAILG(IL,I) = FAILG(IL,I) + 1
2810 IF (FAILG(IL,I) == NPG ) THEN
2811 FAIL(I) = FAIL(I) + ONE
2812 FAILG(IL,I) = NPG + 1
2814 ELSEIF (MLW_LAY == 15) THEN
2815 DAM1(I)=LBUF%DAM(JJ(1)+I)
2816 DAM2(I)=LBUF%DAM(JJ(2)+I)
2817 WPLA(I) = WPLA(I) + ABS(LBUF%PLA(I))/NPG
2818 DMAX(I) = PM(64,IMAT)
2819 WPMAX(I)= PM(41,IMAT)
2820.OR.
IF (DAM1(I) >= DMAX(I)DAM2(I) >= DMAX(I)
2821.OR..OR.
. WPLA(I) < ZEROWPLA(I) >= WPMAX(I))
2822 . FAILG(IL,I) = FAILG(IL,I) + 1
2823 IF (FAILG(IL,I) == NPG ) THEN
2824 FAIL(I) = FAIL(I) + ONE
2825 FAILG(IL,I) = NPG + 1
2827 ELSE ! available law127. save info in lbuf%off
2828 IF(LBUF%OFF(I) < ONE) TAG= 1
2832 FAIL(I) = FAIL(I) + TAG ! only one plan integration is off
2835 ENDDO ! DO IL=1,NLAY
2838 IS_WRITTEN_VALUE(I) = 1
2842 NPTT = ELBUF_TAB(NG)%BUFLY(IL)%NPTT
2843 BUFLY => ELBUF_TAB(NG)%BUFLY(IL)
2844 IMAT = ELBUF_TAB(NG)%BUFLY(IL)%IMAT
2846 MLW_LAY = ELBUF_TAB(NG)%BUFLY(IL)%ILAW
2848 LBUF => ELBUF_TAB(NG)%BUFLY(IL)%LBUF(1,1,IT)
2851 IF (MLW_LAY == 25) THEN
2852 DAM1(I)=LBUF%DMG(JJ(1)+I)
2853 DAM2(I)=LBUF%DMG(JJ(2)+I)
2854 WPLA(I) = ABS(LBUF%PLA(I))
2855 DMAX(I) = PM(64,IMAT)
2856 WPMAX(I)= PM(41,IMAT)
2857.OR..OR.
IF (DAM1(I) >= DMAX(I)DAM2(I) >= DMAX(I)
2858.OR.
. WPLA(I) < ZEROWPLA(I) >= WPMAX(I))
2859 . FAIL(I) = FAIL(I) + ONE
2860 ELSEIF (MLW_LAY == 15) THEN
2861 DAM1(I)=LBUF%DAM(JJ(1)+I)
2862 DAM2(I)=LBUF%DAM(JJ(2)+I)
2863 WPLA(I) = ABS(LBUF%PLA(I))
2864 DMAX(I) = PM(64,IMAT)
2865 WPMAX(I)= PM(41,IMAT)
2866.OR..OR.
IF (DAM1(I) >= DMAX(I)DAM2(I) >= DMAX(I)
2867.OR.
. WPLA(I) < ZEROWPLA(I) >= WPMAX(I))
2868 . FAIL(I) = FAIL(I) + ONE
2869 ELSE ! available law127. save info in lbuf%off
2870 IF(LBUF%OFF(I) < ONE) FAIL(I) = FAIL(I) + 1
2874 ENDDO ! DO IL=1,NLAY
2877 IS_WRITTEN_VALUE(I) = 1
2882 ELSE IF (KEYWORD == 'dama
') THEN
2884.OR..OR.
IF( IGTYP == 10 IGTYP == 11
2885.OR..OR.
. IGTYP == 17 IGTYP == 51 IGTYP == 52 ) THEN
2893 MAT(I)=IXTG(1,NFT+I)
2894 PID(I)=IXTG(5,NFT+I)
2897 IF (IGTYP == 11) THEN
2903 MATLY(J) = IGEO(IPMAT+N,PID(I))
2906 ELSEIF (IGTYP == 10) THEN
2914.OR..OR.
ELSEIF (IGTYP == 17 IGTYP == 51 IGTYP == 52) THEN
2920 MATLY(J) = STACK%IGEO(IPMAT+N,ISUBSTACK)
2927.AND..AND.
IF ( ILAY == -1 IPT == -1 IPLY == -1) THEN
2928 IF(IFAILURE > 0) THEN
2932 NPTT = ELBUF_TAB(NG)%BUFLY(N)%NPTT
2937 FBUF => ELBUF_TAB(NG)%BUFLY(N)%FAIL(IR,IS,IT)
2938 DO IFAIL = 1,ELBUF_TAB(NG)%BUFLY(N)%NFAIL
2939 DMGMX = MAX(DMGMX,FBUF%FLOC(IFAIL)%DAMMX(I))
2943 VALUE(I) = VALUE(I) + DMGMX/NPTT
2944 ENDDO ! DO IT = 1,NPTT
2946 VALUE(I) = VALUE(I) / NLAY
2947 IS_WRITTEN_VALUE(I) = 1
2950 ELSEIF (MPT > 0) THEN ! NLAY = 1
2951 NPTT = ELBUF_TAB(NG)%BUFLY(1)%NPTT
2957 FBUF => ELBUF_TAB(NG)%BUFLY(1)%FAIL(IR,IS,IT)
2958 DO IFAIL = 1,ELBUF_TAB(NG)%BUFLY(1)%NFAIL
2959 DMGMX = MAX(DMGMX, FBUF%FLOC(IFAIL)%DAMMX(I))
2963 VALUE(I) = VALUE(I) + DMGMX
2965 VALUE(I) = VALUE(I) / NPTT
2966 IS_WRITTEN_VALUE(I) = 1
2970.OR..OR..OR.
IF (IGTYP == 10 IGTYP == 11 IGTYP == 17
2971.OR.
. IGTYP == 51 IGTYP == 52 ) THEN
2977 NPTT = ELBUF_TAB(NG)%BUFLY(IL)%NPTT
2978 BUFLY => ELBUF_TAB(NG)%BUFLY(IL)
2981 MLW_LAY = MATPARAM(MATLY(J))%ILAW
2982 IF (MLW_LAY == 25) THEN
2983 NLAY_COUNT = NLAY_COUNT + 1
2989 LBUF => ELBUF_TAB(NG)%BUFLY(IL)%LBUF(IR,IS,IT)
2990 DMAX(I) = ONE/PM(64,MATLY(J))
2991 WPMAX(I)= ONE/PM(41,MATLY(J))
2992 EPST1(I)= PM(60,MATLY(J))
2993 EPST2(I)= PM(61,MATLY(J))
2994 EPSF1(I)= ONE/PM(98,MATLY(J))
2995 EPSF2(I)= ONE/PM(99,MATLY(J))
2997 VG(1) = MAX(VG(1),LBUF%DMG(JJ(1)+I)*DMAX(I))
2998 VG(2) = MAX(VG(2),LBUF%DMG(JJ(2)+I)*DMAX(I))
2999 VG(3)=MAX(VG(3),ABS(LBUF%PLA(I))*WPMAX(I))
3000 IF(LBUF%CRAK(JJ(1)+I) > ZERO) VG(4)= MAX(VG(4),
3001 . (LBUF%CRAK(JJ(1)+I)+EPST1(I))*EPSF1(I))
3002 IF(LBUF%CRAK(JJ(2)+I) > ZERO )VG(5) = MAX(VG(5),
3003 . (LBUF%CRAK(JJ(2)+I)+EPST2(I))*EPSF2(I))
3006 VLY(1) = VLY(1) + VG(1)
3007 VLY(2) = VLY(2) + VG(2)
3008 VLY(3) = VLY(3) + VG(3)
3009 VLY(4) = VLY(4) + VG(4)
3010 VLY(5) = VLY(5) + VG(5)
3012 VE(1) = VE(1) + VLY(1)/NPTT
3013 VE(2) = VE(2) + VLY(2)/NPTT
3014 VE(3) = VE(3) + VLY(3)/NPTT
3015 VE(4) = VE(4) + VLY(4)/NPTT
3016 VE(5) = VE(5) + VLY(5)/NPTT
3018 ENDDO ! DO IL=1,NLAY
3019 IF (NLAY_COUNT > 0) THEN
3020 VE(1) = VE(1)/NLAY_COUNT
3021 VE(2) = VE(2)/NLAY_COUNT
3022 VE(3) = VE(3)/NLAY_COUNT
3023 VE(4) = VE(4)/NLAY_COUNT
3024 VE(5) = VE(5)/NLAY_COUNT
3026 VALUE(I) = MAX(VALUE(I),VE(1),VE(2),VE(3),
3028 IS_WRITTEN_VALUE(I) = 1
3030 ENDIF ! law 25 + SHell Composite PID
3031.AND..AND.
ELSEIF ( IPLY > 0 IPT <= MPT IPT > 0 ) THEN
3033 IF(IFAILURE > 0) THEN
3035 NPTT = ELBUF_TAB(NG)%BUFLY(J)%NPTT
3037.OR.
IF (IGTYP == 17 IGTYP == 51) THEN
3038 ID_PLY = IGEO(1,STACK%IGEO(2+J,ISUBSTACK))
3039 ELSEIF (IGTYP == 52) THEN
3040 ID_PLY=PLY_INFO(1,STACK%IGEO(2+J,ISUBSTACK)-NUMSTACK)
3042 IF (ID_PLY == IPLY )THEN
3043 IF (IPT <= NPTT) THEN
3047 FBUF => ELBUF_TAB(NG)%BUFLY(J)%FAIL(IR,IS,IPT)
3048 DO IFAIL = 1, ELBUF_TAB(NG)%BUFLY(J)%NFAIL
3049 VALUE(I) = MAX(VALUE(I) , FBUF%FLOC(IFAIL)%DAMMX(I))
3053 IS_WRITTEN_VALUE(I) = 1
3060.OR..OR.
IF (IGTYP == 17 IGTYP == 51 IGTYP == 52) THEN
3063.OR.
IF (IGTYP == 17 IGTYP == 51) THEN
3064 ID_PLY = IGEO(1,STACK%IGEO(2+J,ISUBSTACK))
3065 ELSEIF (IGTYP == 52) THEN
3066 ID_PLY=PLY_INFO(1,STACK%IGEO(2+J,ISUBSTACK)-NUMSTACK)
3069 IF (ID_PLY == IPLY )THEN
3070 BUFLY => ELBUF_TAB(NG)%BUFLY(J)
3072 NPTT = ELBUF_TAB(NG)%BUFLY(J)%NPTT
3074 MLW_LAY = MATPARAM(MATLY(IADR + I))%ILAW
3075 IF (MLW_LAY == 25) THEN
3080 LBUF=> ELBUF_TAB(NG)%BUFLY(J)%LBUF(IR,IS,IPT)
3081 DMAX(I) = ONE/PM(64,MATLY(IADR + I))
3082 WPMAX(I)= ONE/PM(41,MATLY(IADR + I))
3083 EPST1(I)= PM(60,MATLY(IADR + I))
3084 EPST2(I)= PM(61,MATLY(IADR + I))
3085 EPSF1(I)= ONE/PM(98,MATLY(IADR + I))
3086 EPSF2(I)= ONE/PM(99,MATLY(IADR + I))
3088 VG(1) = MAX(VG(1),LBUF%DMG(JJ(1)+I)*DMAX(I))
3089 VG(2) = MAX(VG(2),LBUF%DMG(JJ(2)+I)*DMAX(I))
3090 VG(3)= MAX(VG(3),ABS(LBUF%PLA(I))*WPMAX(I))
3091 IF(LBUF%CRAK(JJ(1)+I) > ZERO) VG(4)= MAX(VG(4),
3092 . (LBUF%CRAK(JJ(1)+I)+EPST1(I))*EPSF1(I))
3093 IF(LBUF%CRAK(JJ(2)+I) > ZERO )VG(5) = MAX(VG(5),
3094 . (LBUF%CRAK(JJ(2)+I)+EPST2(I))*EPSF2(I))
3103 VALUE(I) = MAX(VALUE(I),VLY(1),VLY(2),VLY(3),VLY(4),VLY(5))
3104 IS_WRITTEN_VALUE(I) = 1
3111.AND.
ELSEIF ( IPLY > 0 IPT == -1 ) THEN
3113 IF(IFAILURE > 0) THEN
3115 NPTT = ELBUF_TAB(NG)%BUFLY(J)%NPTT
3117.OR.
IF (IGTYP == 17 IGTYP == 51) THEN
3118 ID_PLY = IGEO(1,STACK%IGEO(2+J,ISUBSTACK))
3119 ELSEIF (IGTYP == 52) THEN
3120 ID_PLY=PLY_INFO(1,STACK%IGEO(2+J,ISUBSTACK)-NUMSTACK)
3122 IF (ID_PLY == IPLY )THEN
3127 FBUF => ELBUF_TAB(NG)%BUFLY(J)%FAIL(IR,IS,IT)
3128 DO IFAIL = 1, ELBUF_TAB(NG)%BUFLY(J)%NFAIL
3129 VALUE(I) = MAX(VALUE(I) , FBUF%FLOC(IFAIL)%DAMMX(I))
3134 IS_WRITTEN_VALUE(I) = 1
3140.OR..OR.
IF (IGTYP == 17 IGTYP == 51 IGTYP == 52) THEN
3143.OR.
IF (IGTYP == 17 IGTYP == 51) THEN
3144 ID_PLY = IGEO(1,STACK%IGEO(2+J,ISUBSTACK))
3145 ELSEIF (IGTYP == 52) THEN
3146 ID_PLY=PLY_INFO(1,STACK%IGEO(2+J,ISUBSTACK)-NUMSTACK)
3149 IF (ID_PLY == IPLY )THEN
3150 BUFLY => ELBUF_TAB(NG)%BUFLY(J)
3152 NPTT = ELBUF_TAB(NG)%BUFLY(J)%NPTT
3154 MLW_LAY = MATPARAM(MATLY(IADR + I))%ILAW
3155 IF (MLW_LAY == 25) THEN
3161 LBUF=> ELBUF_TAB(NG)%BUFLY(J)%LBUF(IR,IS,IT)
3162 DMAX(I) = ONE/PM(64,MATLY(IADR + I))
3163 WPMAX(I)= ONE/PM(41,MATLY(IADR + I))
3164 EPST1(I)= PM(60,MATLY(IADR + I))
3165 EPST2(I)= PM(61,MATLY(IADR + I))
3166 EPSF1(I)= ONE/PM(98,MATLY(IADR + I))
3167 EPSF2(I)= ONE/PM(99,MATLY(IADR + I))
3169 VG(1) = MAX(VG(1),LBUF%DMG(JJ(1)+I)*DMAX(I))
3170 VG(2) = MAX(VG(2),LBUF%DMG(JJ(2)+I)*DMAX(I))
3171 VG(3)= MAX(VG(3),ABS(LBUF%PLA(I))*WPMAX(I))
3172 IF(LBUF%CRAK(JJ(1)+I) > ZERO) VG(4)= MAX(VG(4),
3173 . (LBUF%CRAK(JJ(1)+I)+EPST1(I))*EPSF1(I))
3174 IF(LBUF%CRAK(JJ(2)+I) > ZERO )VG(5) = MAX(VG(5),
3175 . (LBUF%CRAK(JJ(2)+I)+EPST2(I))*EPSF2(I))
3185 VALUE(I) = MAX(VALUE(I),VLY(1),VLY(2),VLY(3),VLY(4),VLY(5))
3186 IS_WRITTEN_VALUE(I) = 1
3193.AND..AND..AND.
ELSEIF (ILAY <= NLAY ILAY > 0 IPT <= MPT IPT > 0 ) THEN
3194.OR.
IF (IGTYP == 51 IGTYP == 52) THEN
3195 NPTT = ELBUF_TAB(NG)%BUFLY(ILAY)%NPTT
3200 FBUF => ELBUF_TAB(NG)%BUFLY(ILAY)%FAIL(IR,IS,IPT)
3201 DO IFAIL = 1,ELBUF_TAB(NG)%BUFLY(ILAY)%NFAIL
3202 VALUE(I) = MAX(VALUE(I),FBUF%FLOC(IFAIL)%DAMMX(I))
3203 IS_WRITTEN_VALUE(I) = 1
3207 VALUE(I) = VALUE(I) + DMGMX
3209 !< Check damage for law 25
3213 NPTT = ELBUF_TAB(NG)%BUFLY(ILAY)%NPTT
3214 BUFLY => ELBUF_TAB(NG)%BUFLY(ILAY)
3215 IADR = (IPT - 1)*NEL
3217 MLW_LAY = MATPARAM(MATLY(IADR + I))%ILAW
3218 IF (MLW_LAY == 25) THEN
3223 LBUF => ELBUF_TAB(NG)%BUFLY(ILAY)%LBUF(IR,IS,IPT)
3224 DMAX(I) = ONE/PM(64,MATLY(J))
3225 WPMAX(I)= ONE/PM(41,MATLY(J))
3226 EPST1(I)= PM(60,MATLY(J))
3227 EPST2(I)= PM(61,MATLY(J))
3228 EPSF1(I)= ONE/PM(98,MATLY(J))
3229 EPSF2(I)= ONE/PM(99,MATLY(J))
3231 VG(1) = MAX(VG(1),LBUF%DMG(JJ(1)+I)*DMAX(I))
3232 VG(2) = MAX(VG(2),LBUF%DMG(JJ(2)+I)*DMAX(I))
3233 VG(3)= MAX(VG(3),ABS(LBUF%PLA(I))*WPMAX(I))
3234 IF(LBUF%CRAK(JJ(1)+I) > ZERO) VG(4)= MAX(VG(4),
3235 . (LBUF%CRAK(JJ(1)+I)+EPST1(I))*EPSF1(I))
3236 IF(LBUF%CRAK(JJ(2)+I) > ZERO )VG(5) = MAX(VG(5),
3237 . (LBUF%CRAK(JJ(2)+I)+EPST2(I))*EPSF2(I))
3240 VLY(1) =VLY(1) + VG(1)
3241 VLY(2) =VLY(2) + VG(2)
3242 VLY(3) =VLY(3) + VG(3)
3243 VLY(4) =VLY(4) + VG(4)
3244 VLY(5) =VLY(5) + VG(5)
3246 VALUE(I) = MAX(VALUE(I),VLY(1),VLY(2),VLY(3),VLY(4),VLY(5))
3247 IS_WRITTEN_VALUE(I) = 1
3252.AND.
ELSEIF ( ILAY <= NLAY ILAY > 0) THEN
3254.OR..OR..OR.
IF (IGTYP == 10 IGTYP == 11 IGTYP == 16 IGTYP == 17) THEN
3259 FBUF => ELBUF_TAB(NG)%BUFLY(ILAY)%FAIL(IR,IS,1)
3260 DO IFAIL = 1,ELBUF_TAB(NG)%BUFLY(ILAY)%NFAIL
3261 DMGMX = MAX(DMGMX,FBUF%FLOC(IFAIL)%DAMMX(I))
3262 IS_WRITTEN_VALUE(I) = 1
3266 VALUE(I) = VALUE(I) + DMGMX
3268 !< Check damage for law 25
3272 BUFLY => ELBUF_TAB(NG)%BUFLY(ILAY)
3273 IADR = (IPT - 1)*NEL
3275 MLW_LAY = MATPARAM(MATLY(J))%ILAW
3276 IF (MLW_LAY == 25) THEN
3281 LBUF => ELBUF_TAB(NG)%BUFLY(ILAY)%LBUF(IR,IS,1)
3282 DMAX(I) = ONE/PM(64,MATLY(J))
3283 WPMAX(I)= ONE/PM(41,MATLY(J))
3284 EPST1(I)= PM(60,MATLY(J))
3285 EPST2(I)= PM(61,MATLY(J))
3286 EPSF1(I)= ONE/PM(98,MATLY(J))
3287 EPSF2(I)= ONE/PM(99,MATLY(J))
3289 VG(1) = MAX(VG(1),LBUF%DMG(JJ(1)+I)*DMAX(I))
3290 VG(2) = MAX(VG(2),LBUF%DMG(JJ(2)+I)*DMAX(I))
3291 VG(3)= MAX(VG(3),ABS(LBUF%PLA(I))*WPMAX(I))
3292 IF(LBUF%CRAK(JJ(1)+I) > ZERO) VG(4)= MAX(VG(4),
3293 . (LBUF%CRAK(JJ(1)+I)+EPST1(I))*EPSF1(I))
3294 IF(LBUF%CRAK(JJ(2)+I) > ZERO )VG(5) = MAX(VG(5),
3295 . (LBUF%CRAK(JJ(2)+I)+EPST2(I))*EPSF2(I))
3298 VLY(1) =VLY(1) + VG(1)
3299 VLY(2) =VLY(2) + VG(2)
3300 VLY(3) =VLY(3) + VG(3)
3301 VLY(4) =VLY(4) + VG(4)
3302 VLY(5) =VLY(5) + VG(5)
3309 VALUE(I) = MAX(VALUE(I),VLY(1),VLY(2),VLY(3),
3311 IS_WRITTEN_VALUE(I) = 1
3315.OR.
ELSEIF (IGTYP == 51 IGTYP == 52) THEN
3316 NPTT = ELBUF_TAB(NG)%BUFLY(ILAY)%NPTT
3322 FBUF => ELBUF_TAB(NG)%BUFLY(ILAY)%FAIL(IR,IS,IT)
3323 DO IFAIL = 1,ELBUF_TAB(NG)%BUFLY(ILAY)%NFAIL
3324 DMGMX = MAX(DMGMX,FBUF%FLOC(IFAIL)%DAMMX(I))
3328 VALUE(I) = VALUE(I) + DMGMX
3329 IS_WRITTEN_VALUE(I) = 1
3330 ENDDO ! DO IT = 1,NPTT
3331 VALUE(I) = VALUE(I) / NPTT
3333 !< Check damage for law 25
3337 NPTT = ELBUF_TAB(NG)%BUFLY(ILAY)%NPTT
3338 BUFLY => ELBUF_TAB(NG)%BUFLY(ILAY)
3339 IADR = (IPT - 1)*NEL
3341 MLW_LAY = MATPARAM(MATLY(J))%ILAW
3342 IF (MLW_LAY == 25) THEN
3348 LBUF => ELBUF_TAB(NG)%BUFLY(ILAY)%LBUF(IR,IS,IT)
3349 DMAX(I) = ONE/PM(64,MATLY(J))
3350 WPMAX(I)= ONE/PM(41,MATLY(J))
3351 EPST1(I)= PM(60,MATLY(J))
3352 EPST2(I)= PM(61,MATLY(J))
3353 EPSF1(I)= ONE/PM(98,MATLY(J))
3354 EPSF2(I)= ONE/PM(99,MATLY(J))
3356 VG(1) = MAX(VG(1),LBUF%DMG(JJ(1)+I)*DMAX(I))
3357 VG(2) = MAX(VG(2),LBUF%DMG(JJ(2)+I)*DMAX(I))
3358 VG(3)= MAX(VG(3),ABS(LBUF%PLA(I))*WPMAX(I))
3359 IF(LBUF%CRAK(JJ(1)+I) > ZERO) VG(4)= MAX(VG(4),
3360 . (LBUF%CRAK(JJ(1)+I)+EPST1(I))*EPSF1(I))
3361 IF(LBUF%CRAK(JJ(2)+I) > ZERO )VG(5) = MAX(VG(5),
3362 . (LBUF%CRAK(JJ(2)+I)+EPST2(I))*EPSF2(I))
3365 VLY(1) =VLY(1) + VG(1)
3366 VLY(2) =VLY(2) + VG(2)
3367 VLY(3) =VLY(3) + VG(3)
3368 VLY(4) =VLY(4) + VG(4)
3369 VLY(5) =VLY(5) + VG(5)
3377 VALUE(I) = MAX(VALUE(I),VLY(1),VLY(2),VLY(3),
3379 IS_WRITTEN_VALUE(I) = 1
3384.AND.
ELSEIF ( IPT <= NPT IPT > 0) THEN
3385.OR.
IF (IGTYP == 1 IGTYP == 9 ) THEN
3390 FBUF => ELBUF_TAB(NG)%BUFLY(1)%FAIL(IR,IS,IPT)
3391 DO IFAIL = 1,ELBUF_TAB(NG)%BUFLY(1)%NFAIL
3392 DMGMX = MAX(DMGMX,FBUF%FLOC(IFAIL)%DAMMX(I))
3393 IS_WRITTEN_VALUE(I) = 1
3397 VALUE(I) = VALUE(I) + DMGMX
3399 !< Check damage for law 25
3403 BUFLY => ELBUF_TAB(NG)%BUFLY(1)
3404 IADR = (IPT - 1)*NEL
3411 LBUF => ELBUF_TAB(NG)%BUFLY(1)%LBUF(IR,IS,IPT)
3412 DMAX(I) = ONE/PM(64,MID)
3413 WPMAX(I)= ONE/PM(41,MID)
3414 EPST1(I)= PM(60,MID)
3415 EPST2(I)= PM(61,MID)
3416 EPSF1(I)= ONE/PM(98,MID)
3417 EPSF2(I)= ONE/PM(99,MID)
3419 VG(1) = MAX(VG(1),LBUF%DMG(JJ(1)+I)*DMAX(I))
3420 VG(2) = MAX(VG(2),LBUF%DMG(JJ(2)+I)*DMAX(I))
3421 VG(3)= MAX(VG(3),ABS(LBUF%PLA(I))*WPMAX(I))
3422 IF(LBUF%CRAK(JJ(1)+I) > ZERO) VG(4)= MAX(VG(4),
3423 . (LBUF%CRAK(JJ(1)+I)+EPST1(I))*EPSF1(I))
3424 IF(LBUF%CRAK(JJ(2)+I) > ZERO )VG(5) = MAX(VG(5),
3425 . (LBUF%CRAK(JJ(2)+I)+EPST2(I))*EPSF2(I))
3428 VLY(1) =VLY(1) + VG(1)
3429 VLY(2) =VLY(2) + VG(2)
3430 VLY(3) =VLY(3) + VG(3)
3431 VLY(4) =VLY(4) + VG(4)
3432 VLY(5) =VLY(5) + VG(5)
3439 VALUE(I) = MAX(VALUE(I),VLY(1),VLY(2),VLY(3),
3441 IS_WRITTEN_VALUE(I) = 1
3447 ELSE IF (KEYWORD == 'dama/memb
') THEN
3449 IPT = IABS(NPT)/2 + 1
3451 IF(IFAILURE > 0) THEN
3453 NPTT = ELBUF_TAB(NG)%BUFLY(IPT)%NPTT
3459 FBUF => ELBUF_TAB(NG)%BUFLY(IPT)%FAIL(IR,IS,IT)
3460 DO IFAIL = 1,ELBUF_TAB(NG)%BUFLY(IPT)%NFAIL
3461 VALUE(I) = MAX(VALUE(I),FBUF%FLOC(IFAIL)%DAMMX(I))
3462 IS_WRITTEN_VALUE(I) = 1
3466 VALUE(I) = VALUE(I) + DMGMX
3467 ENDDO ! DO IT = 1,NPTT
3468 VALUE(I) = VALUE(I) / NPTT
3470 ELSEIF (MPT > 0) THEN ! NLAY = 1
3474 FBUF => ELBUF_TAB(NG)%BUFLY(1)%FAIL(IR,IS,IPT)
3475 DO IFAIL = 1, ELBUF_TAB(NG)%BUFLY(1)%NFAIL
3476 VALUE(I) = MAX(VALUE(I), FBUF%FLOC(IFAIL)%DAMMX(I))
3477 IS_WRITTEN_VALUE(I) = 1
3487.OR..OR.
IF (IGTYP == 10 IGTYP == 11
3488.OR..OR.
. IGTYP == 17 IGTYP == 51 IGTYP == 52 ) THEN
3496 MAT(I)=IXTG(1,NFT+I)
3497 PID(I)=IXTG(5,NFT+I)
3500 IF (IGTYP == 11) THEN
3506 MATLY(J) = IGEO(IPMAT+N,PID(I))
3509 ELSEIF (IGTYP == 10) THEN
3517.OR..OR.
ELSEIF (IGTYP == 17 IGTYP == 51 IGTYP == 52) THEN
3523 MATLY(J) = STACK%IGEO(IPMAT+N,ISUBSTACK)
3528.AND.
IF(MPT >= IPT IPT > 0) THEN
3529!! DO IL=1,NLAY ! we are in the case IL=IPT
3533 NPTT = ELBUF_TAB(NG)%BUFLY(IPT)%NPTT
3534 BUFLY => ELBUF_TAB(NG)%BUFLY(IPT)
3535 IADR = (IPT - 1)*NEL
3537 MLW_LAY = MATPARAM(MATLY(J))%ILAW
3538 IF (MLW_LAY == 25) THEN
3544 LBUF => ELBUF_TAB(NG)%BUFLY(IPT)%LBUF(IR,IS,IT)
3545 DMAX(I) = ONE/PM(64,MATLY(J))
3546 WPMAX(I)= ONE/PM(41,MATLY(J))
3547 EPST1(I)= PM(60,MATLY(J))
3548 EPST2(I)= PM(61,MATLY(J))
3549 EPSF1(I)= ONE/PM(98,MATLY(J))
3550 EPSF2(I)= ONE/PM(99,MATLY(J))
3552 VG(1) = MAX(VG(1),LBUF%DMG(JJ(1)+I)*DMAX(I))
3553 VG(2) = MAX(VG(2),LBUF%DMG(JJ(2)+I)*DMAX(I))
3554 VG(3)= MAX(VG(3),ABS(LBUF%PLA(I))*WPMAX(I))
3555 IF(LBUF%CRAK(JJ(1)+I) > ZERO) VG(4)= MAX(VG(4),
3556 . (LBUF%CRAK(JJ(1)+I)+EPST1(I))*EPSF1(I))
3557 IF(LBUF%CRAK(JJ(2)+I) > ZERO )VG(5) = MAX(VG(5),
3558 . (LBUF%CRAK(JJ(2)+I)+EPST2(I))*EPSF2(I))
3561 VLY(1) =VLY(1) + VG(1)
3562 VLY(2) =VLY(2) + VG(2)
3563 VLY(3) =VLY(3) + VG(3)
3564 VLY(4) =VLY(4) + VG(4)
3565 VLY(5) =VLY(5) + VG(5)
3573 VALUE(I) = MAX(VALUE(I),VLY(1),VLY(2),VLY(3),VLY(4),VLY(5))
3574 IS_WRITTEN_VALUE(I) = 1
3578 ENDIF ! law 25 + SHell Composite PID
3580 ELSE IF (KEYWORD == 'failure
') THEN
3583 !< Check if the variable can be lightened
3586 IF (MODE == -1) THEN
3588.AND..AND.
IF ( ILAY == -1 IPT == -1 IPLY == -1) THEN
3589 IF(IFAILURE > 0) THEN
3594 NPTT = ELBUF_TAB(NG)%BUFLY(N)%NPTT
3598 FBUF => ELBUF_TAB(NG)%BUFLY(N)%FAIL(IR,IS,IT)
3600 DO IFAIL = 1,ELBUF_TAB(NG)%BUFLY(N)%NFAIL
3601 IF (FBUF%FLOC(IFAIL)%IDFAIL == ID) THEN
3602 DMGMX = FBUF%FLOC(IFAIL)%DAMMX(I)
3603 IS_WRITTEN_VALUE(I) = 1
3604 NLAY_FAIL = NLAY_FAIL + 1
3607 VALUE(I) = VALUE(I) + DMGMX/(NPTT*NPTS*NPTR)
3610 ENDDO ! DO IT = 1,NPTT
3612 VALUE(I) = VALUE(I) / NLAY_FAIL
3614 ELSEIF (MPT > 0) THEN ! NLAY = 1
3615 NPTT = ELBUF_TAB(NG)%BUFLY(1)%NPTT
3620 FBUF => ELBUF_TAB(NG)%BUFLY(1)%FAIL(IR,IS,IT)
3622 DO IFAIL = 1,ELBUF_TAB(NG)%BUFLY(1)%NFAIL
3623 IF (FBUF%FLOC(IFAIL)%IDFAIL == ID) THEN
3624 DMGMX = FBUF%FLOC(IFAIL)%DAMMX(I)
3625 IS_WRITTEN_VALUE(I) = 1
3628 VALUE(I) = VALUE(I) + DMGMX/(NPTT*NPTS*NPTR)
3635.AND..AND.
ELSEIF ( IPLY > 0 IPT <= MPT IPT > 0 ) THEN
3637 IF (IFAILURE > 0) THEN
3639 NPTT = ELBUF_TAB(NG)%BUFLY(J)%NPTT
3641.OR.
IF (IGTYP == 17 IGTYP == 51) THEN
3642 ID_PLY = IGEO(1,STACK%IGEO(2+J,ISUBSTACK))
3643 ELSEIF (IGTYP == 52) THEN
3644 ID_PLY=PLY_INFO(1,STACK%IGEO(2+J,ISUBSTACK)-NUMSTACK)
3646 IF (ID_PLY == IPLY )THEN
3647 IF (IPT <= NPTT) THEN
3651 FBUF => ELBUF_TAB(NG)%BUFLY(J)%FAIL(IR,IS,IPT)
3652 DO IFAIL = 1,ELBUF_TAB(NG)%BUFLY(J)%NFAIL
3653 IF (FBUF%FLOC(IFAIL)%IDFAIL == ID) THEN
3654 VALUE(I) = VALUE(I) + FBUF%FLOC(IFAIL)%DAMMX(I)/(NPTR*NPTS)
3655 IS_WRITTEN_VALUE(I) = 1
3666.AND.
ELSEIF ( IPLY > 0 IPT == -1 ) THEN
3668 IF (IFAILURE > 0) THEN
3670 NPTT = ELBUF_TAB(NG)%BUFLY(J)%NPTT
3672.OR.
IF (IGTYP == 17 IGTYP == 51) THEN
3673 ID_PLY = IGEO(1,STACK%IGEO(2+J,ISUBSTACK))
3674 ELSEIF (IGTYP == 52) THEN
3675 ID_PLY=PLY_INFO(1,STACK%IGEO(2+J,ISUBSTACK)-NUMSTACK)
3677 IF (ID_PLY == IPLY )THEN
3682 FBUF => ELBUF_TAB(NG)%BUFLY(J)%FAIL(IR,IS,IT)
3683 DO IFAIL = 1,ELBUF_TAB(NG)%BUFLY(J)%NFAIL
3684 IF (FBUF%FLOC(IFAIL)%IDFAIL == ID) THEN
3685 VALUE(I) = VALUE(I) +
3686 . FBUF%FLOC(IFAIL)%DAMMX(I)/(NPTR*NPTS*NPTT)
3687 IS_WRITTEN_VALUE(I) = 1
3698.AND.
ELSEIF ( IPLY > 0 IPT == -4 ) THEN
3700 NPTT = ELBUF_TAB(NG)%BUFLY(J)%NPTT
3702.OR.
IF (IGTYP == 17 IGTYP == 51) THEN
3703 ID_PLY = IGEO(1,STACK%IGEO(2+J,ISUBSTACK))
3704 ELSEIF (IGTYP == 52) THEN
3705 ID_PLY=PLY_INFO(1,STACK%IGEO(2+J,ISUBSTACK)-NUMSTACK)
3707 IF (ID_PLY == IPLY ) THEN
3708 IF (MOD(NPTT,2) == 0) THEN
3712 FBUF1 => ELBUF_TAB(NG)%BUFLY(J)%FAIL(IR,IS,NINT(HALF*NPTT))
3713 FBUF2 => ELBUF_TAB(NG)%BUFLY(J)%FAIL(IR,IS,NINT(HALF*NPTT)+1)
3715 DO IFAIL = 1,ELBUF_TAB(NG)%BUFLY(J)%NFAIL
3716 IF (FBUF1%FLOC(IFAIL)%IDFAIL == ID) THEN
3717 DMGMX = HALF*(FBUF1%FLOC(IFAIL)%DAMMX(I) +
3718 . FBUF2%FLOC(IFAIL)%DAMMX(I))
3719 VALUE(I) = VALUE(I) + DMGMX/(NPTR*NPTS)
3720 IS_WRITTEN_VALUE(I) = 1
3730 FBUF => ELBUF_TAB(NG)%BUFLY(J)%FAIL(IR,IS,NINT(HALF*NPTT))
3732 DO IFAIL = 1,ELBUF_TAB(NG)%BUFLY(J)%NFAIL
3733 IF (FBUF%FLOC(IFAIL)%IDFAIL == ID) THEN
3734 DMGMX = FBUF%FLOC(IFAIL)%DAMMX(I)
3735 VALUE(I) = VALUE(I) + DMGMX/(NPTR*NPTS)
3736 IS_WRITTEN_VALUE(I) = 1
3747.AND..AND..AND.
ELSEIF (ILAY <= NLAY ILAY > 0 IPT <= MPT IPT > 0 ) THEN
3748 IF (IFAILURE > 0) THEN
3749.OR.
IF (IGTYP == 51 IGTYP == 52) THEN
3750 NPTT = ELBUF_TAB(NG)%BUFLY(ILAY)%NPTT
3751 IF (IPT <= NPTT) THEN
3755 FBUF => ELBUF_TAB(NG)%BUFLY(ILAY)%FAIL(IR,IS,IPT)
3757 DO IFAIL = 1,ELBUF_TAB(NG)%BUFLY(ILAY)%NFAIL
3758 IF (FBUF%FLOC(IFAIL)%IDFAIL == ID) THEN
3759 DMGMX = FBUF%FLOC(IFAIL)%DAMMX(I)
3760 IS_WRITTEN_VALUE(I) = 1
3763 VALUE(I) = VALUE(I) + DMGMX/(NPTR*NPTS)
3771.AND..AND.
ELSEIF (ILAY <= NLAY ILAY > 0 IPT == -1) THEN
3772 IF (IFAILURE > 0) THEN
3774.OR..OR..OR.
IF (IGTYP == 10 IGTYP == 11 IGTYP == 16 IGTYP == 17) THEN
3778 FBUF => ELBUF_TAB(NG)%BUFLY(ILAY)%FAIL(IR,IS,1)
3780 DO IFAIL = 1,ELBUF_TAB(NG)%BUFLY(ILAY)%NFAIL
3781 IF (FBUF%FLOC(IFAIL)%IDFAIL == ID) THEN
3782 DMGMX = FBUF%FLOC(IFAIL)%DAMMX(I)
3783 IS_WRITTEN_VALUE(I) = 1
3786 VALUE(I) = VALUE(I) + DMGMX/(NPTR*NPTS)
3791.OR.
ELSEIF (IGTYP == 51 IGTYP == 52) THEN
3792 NPTT = ELBUF_TAB(NG)%BUFLY(ILAY)%NPTT
3797 FBUF => ELBUF_TAB(NG)%BUFLY(ILAY)%FAIL(IR,IS,IT)
3799 DO IFAIL = 1,ELBUF_TAB(NG)%BUFLY(ILAY)%NFAIL
3800 IF (FBUF%FLOC(IFAIL)%IDFAIL == ID) THEN
3801 DMGMX = FBUF%FLOC(IFAIL)%DAMMX(I)
3802 IS_WRITTEN_VALUE(I) = 1
3805 VALUE(I) = VALUE(I) + DMGMX/(NPTT*NPTR*NPTS)
3808 ENDDO ! DO IT = 1,NPTT
3813.AND.
ELSEIF ( IPT <= NPT IPT > 0) THEN
3814 IF (IFAILURE > 0) THEN
3815.OR.
IF (IGTYP == 1 IGTYP == 9 ) THEN
3819 FBUF => ELBUF_TAB(NG)%BUFLY(1)%FAIL(IR,IS,IPT)
3821 DO IFAIL = 1,ELBUF_TAB(NG)%BUFLY(1)%NFAIL
3822 IF (FBUF%FLOC(IFAIL)%IDFAIL == ID) THEN
3823 DMGMX = FBUF%FLOC(IFAIL)%DAMMX(I)
3824 IS_WRITTEN_VALUE(I) = 1
3827 VALUE(I) = VALUE(I) + DMGMX/(NPTR*NPTS)
3834 ELSEIF (IPT == -4) THEN
3835 IF (IFAILURE > 0) THEN
3836.OR.
IF (IGTYP == 1 IGTYP == 9 ) THEN
3837 IF (MOD(NPT,2) == 0) THEN
3841 FBUF1 => ELBUF_TAB(NG)%BUFLY(1)%FAIL(IR,IS,NINT(HALF*NPT))
3842 FBUF2 => ELBUF_TAB(NG)%BUFLY(1)%FAIL(IR,IS,NINT(HALF*NPT)+1)
3844 DO IFAIL = 1,ELBUF_TAB(NG)%BUFLY(1)%NFAIL
3845 IF (FBUF1%FLOC(IFAIL)%IDFAIL == ID) THEN
3846 DMGMX = HALF*(FBUF1%FLOC(IFAIL)%DAMMX(I) +
3847 . FBUF2%FLOC(IFAIL)%DAMMX(I))
3848 IS_WRITTEN_VALUE(I) = 1
3851 VALUE(I) = VALUE(I) + DMGMX/(NPTR*NPTS)
3859 FBUF => ELBUF_TAB(NG)%BUFLY(1)%FAIL(IR,IS,NINT(HALF*NPT))
3861 DO IFAIL = 1,ELBUF_TAB(NG)%BUFLY(1)%NFAIL
3862 IF (FBUF%FLOC(IFAIL)%IDFAIL == ID) THEN
3863 DMGMX = FBUF%FLOC(IFAIL)%DAMMX(I)
3864 IS_WRITTEN_VALUE(I) = 1
3867 VALUE(I) = VALUE(I) + DMGMX/(NPTR*NPTS)
3876!============================================================================================
3878.AND..AND.
IF (ILAY == -1 IPT == -1 IPLY == -1) THEN
3879 IF(IFAILURE > 0) THEN
3884 NPTT = ELBUF_TAB(NG)%BUFLY(N)%NPTT
3888 FBUF => ELBUF_TAB(NG)%BUFLY(N)%FAIL(IR,IS,IT)
3890 DO IFAIL = 1,ELBUF_TAB(NG)%BUFLY(N)%NFAIL
3891 IF (FBUF%FLOC(IFAIL)%IDFAIL == ID) THEN
3892 DMGMX = FBUF%FLOC(IFAIL)%DAMMX(NEL*MODE+I)
3893 IS_WRITTEN_VALUE(I) = 1
3894 NLAY_FAIL = NLAY_FAIL + 1
3897 VALUE(I) = VALUE(I) + DMGMX/(NPTT*NPTS*NPTR)
3900 ENDDO ! DO IT = 1,NPTT
3902 VALUE(I) = VALUE(I) / NLAY_FAIL
3904 ELSEIF (MPT > 0) THEN ! NLAY = 1
3905 NPTT = ELBUF_TAB(NG)%BUFLY(1)%NPTT
3910 FBUF => ELBUF_TAB(NG)%BUFLY(1)%FAIL(IR,IS,IT)
3912 DO IFAIL = 1,ELBUF_TAB(NG)%BUFLY(1)%NFAIL
3913 IF (FBUF%FLOC(IFAIL)%IDFAIL == ID) THEN
3914 DMGMX = FBUF%FLOC(IFAIL)%DAMMX(NEL*MODE+I)
3915 IS_WRITTEN_VALUE(I) = 1
3918 VALUE(I) = VALUE(I) + DMGMX/(NPTT*NPTS*NPTR)
3925.AND..AND.
ELSEIF ( IPLY > 0 IPT <= MPT IPT > 0 ) THEN
3927 IF (IFAILURE > 0) THEN
3929 NPTT = ELBUF_TAB(NG)%BUFLY(J)%NPTT
3931.OR.
IF (IGTYP == 17 IGTYP == 51) THEN
3932 ID_PLY = IGEO(1,STACK%IGEO(2+J,ISUBSTACK))
3933 ELSEIF (IGTYP == 52) THEN
3934 ID_PLY=PLY_INFO(1,STACK%IGEO(2+J,ISUBSTACK)-NUMSTACK)
3936 IF (ID_PLY == IPLY )THEN
3937 IF (IPT <= NPTT) THEN
3941 FBUF => ELBUF_TAB(NG)%BUFLY(J)%FAIL(IR,IS,IPT)
3942 DO IFAIL = 1,ELBUF_TAB(NG)%BUFLY(J)%NFAIL
3943 IF (FBUF%FLOC(IFAIL)%IDFAIL == ID) THEN
3944 VALUE(I) = VALUE(I) + FBUF%FLOC(IFAIL)%DAMMX(NEL*MODE+I)/(NPTR*NPTS)
3945 IS_WRITTEN_VALUE(I) = 1
3956.AND.
ELSEIF ( IPLY > 0 IPT == -1 ) THEN
3958 IF (IFAILURE > 0) THEN
3960 NPTT = ELBUF_TAB(NG)%BUFLY(J)%NPTT
3962.OR.
IF (IGTYP == 17 IGTYP == 51) THEN
3963 ID_PLY = IGEO(1,STACK%IGEO(2+J,ISUBSTACK))
3964 ELSEIF (IGTYP == 52) THEN
3965 ID_PLY=PLY_INFO(1,STACK%IGEO(2+J,ISUBSTACK)-NUMSTACK)
3967 IF (ID_PLY == IPLY )THEN
3972 FBUF => ELBUF_TAB(NG)%BUFLY(J)%FAIL(IR,IS,IT)
3973 DO IFAIL = 1,ELBUF_TAB(NG)%BUFLY(J)%NFAIL
3974 IF (FBUF%FLOC(IFAIL)%IDFAIL == ID) THEN
3975 VALUE(I) = VALUE(I) +
3976 . FBUF%FLOC(IFAIL)%DAMMX(NEL*MODE+I)/(NPTR*NPTS*NPTT)
3977 IS_WRITTEN_VALUE(I) = 1
3988.AND.
ELSEIF ( IPLY > 0 IPT == -4 ) THEN
3990 NPTT = ELBUF_TAB(NG)%BUFLY(J)%NPTT
3992.OR.
IF (IGTYP == 17 IGTYP == 51) THEN
3993 ID_PLY = IGEO(1,STACK%IGEO(2+J,ISUBSTACK))
3994 ELSEIF (IGTYP == 52) THEN
3995 ID_PLY=PLY_INFO(1,STACK%IGEO(2+J,ISUBSTACK)-NUMSTACK)
3997 IF (ID_PLY == IPLY ) THEN
3998 IF (MOD(NPTT,2) == 0) THEN
4002 FBUF1 => ELBUF_TAB(NG)%BUFLY(J)%FAIL(IR,IS,NINT(HALF*NPTT))
4003 FBUF2 => ELBUF_TAB(NG)%BUFLY(J)%FAIL(IR,IS,NINT(HALF*NPTT)+1)
4005 DO IFAIL = 1,ELBUF_TAB(NG)%BUFLY(J)%NFAIL
4006 IF (FBUF1%FLOC(IFAIL)%IDFAIL == ID) THEN
4007 DMGMX = HALF*(FBUF1%FLOC(IFAIL)%DAMMX(NEL*MODE+I) +
4008 . FBUF2%FLOC(IFAIL)%DAMMX(NEL*MODE+I))
4009 VALUE(I) = VALUE(I) + DMGMX/(NPTR*NPTS)
4010 IS_WRITTEN_VALUE(I) = 1
4020 FBUF => ELBUF_TAB(NG)%BUFLY(J)%FAIL(IR,IS,NINT(HALF*NPTT))
4022 DO IFAIL = 1,ELBUF_TAB(NG)%BUFLY(J)%NFAIL
4023 IF (FBUF%FLOC(IFAIL)%IDFAIL == ID) THEN
4024 DMGMX = FBUF%FLOC(IFAIL)%DAMMX(NEL*MODE+I)
4025 VALUE(I) = VALUE(I) + DMGMX/(NPTR*NPTS)
4026 IS_WRITTEN_VALUE(I) = 1
4037.AND..AND..AND.
ELSEIF (ILAY <= NLAY ILAY > 0 IPT <= MPT IPT > 0 ) THEN
4038 IF (IFAILURE > 0) THEN
4039.OR.
IF (IGTYP == 51 IGTYP == 52) THEN
4040 NPTT = ELBUF_TAB(NG)%BUFLY(ILAY)%NPTT
4041 IF (IPT <= NPTT) THEN
4045 FBUF => ELBUF_TAB(NG)%BUFLY(ILAY)%FAIL(IR,IS,IPT)
4047 DO IFAIL = 1,ELBUF_TAB(NG)%BUFLY(ILAY)%NFAIL
4048 IF (FBUF%FLOC(IFAIL)%IDFAIL == ID) THEN
4049 DMGMX = FBUF%FLOC(IFAIL)%DAMMX(NEL*MODE+I)
4050 IS_WRITTEN_VALUE(I) = 1
4053 VALUE(I) = VALUE(I) + DMGMX/(NPTR*NPTS)
4061.AND..AND.
ELSEIF (ILAY <= NLAY ILAY > 0 IPT == -1) THEN
4062 IF (IFAILURE > 0) THEN
4064.OR..OR..OR.
IF (IGTYP == 10 IGTYP == 11 IGTYP == 16 IGTYP == 17) THEN
4068 FBUF => ELBUF_TAB(NG)%BUFLY(ILAY)%FAIL(IR,IS,1)
4070 DO IFAIL = 1,ELBUF_TAB(NG)%BUFLY(ILAY)%NFAIL
4071 IF (FBUF%FLOC(IFAIL)%IDFAIL == ID) THEN
4072 DMGMX = FBUF%FLOC(IFAIL)%DAMMX(NEL*MODE+I)
4073 IS_WRITTEN_VALUE(I) = 1
4076 VALUE(I) = VALUE(I) + DMGMX/(NPTR*NPTS)
4081.OR.
ELSEIF (IGTYP == 51 IGTYP == 52) THEN
4082 NPTT = ELBUF_TAB(NG)%BUFLY(ILAY)%NPTT
4087 FBUF => ELBUF_TAB(NG)%BUFLY(ILAY)%FAIL(IR,IS,IT)
4089 DO IFAIL = 1,ELBUF_TAB(NG)%BUFLY(ILAY)%NFAIL
4090 IF (FBUF%FLOC(IFAIL)%IDFAIL == ID) THEN
4091 DMGMX = FBUF%FLOC(IFAIL)%DAMMX(NEL*MODE+I)
4092 IS_WRITTEN_VALUE(I) = 1
4095 VALUE(I) = VALUE(I) + DMGMX/(NPTT*NPTR*NPTS)
4098 ENDDO ! DO IT = 1,NPTT
4103.AND.
ELSEIF ( IPT <= NPT IPT > 0) THEN
4104 IF (IFAILURE > 0) THEN
4105.OR.
IF (IGTYP == 1 IGTYP == 9 ) THEN
4109 FBUF => ELBUF_TAB(NG)%BUFLY(1)%FAIL(IR,IS,IPT)
4111 DO IFAIL = 1,ELBUF_TAB(NG)%BUFLY(1)%NFAIL
4112 IF (FBUF%FLOC(IFAIL)%IDFAIL == ID) THEN
4113 DMGMX = FBUF%FLOC(IFAIL)%DAMMX(NEL*MODE+I)
4114 IS_WRITTEN_VALUE(I) = 1
4117 VALUE(I) = VALUE(I) + DMGMX/(NPTR*NPTS)
4124 ELSEIF (IPT == -4) THEN
4125 IF (IFAILURE > 0) THEN
4126.OR.
IF (IGTYP == 1 IGTYP == 9 ) THEN
4127 IF (MOD(NPT,2) == 0) THEN
4131 FBUF1 => ELBUF_TAB(NG)%BUFLY(1)%FAIL(IR,IS,NINT(HALF*NPT))
4132 FBUF2 => ELBUF_TAB(NG)%BUFLY(1)%FAIL(IR,IS,NINT(HALF*NPT)+1)
4134 DO IFAIL = 1,ELBUF_TAB(NG)%BUFLY(1)%NFAIL
4135 IF (FBUF1%FLOC(IFAIL)%IDFAIL == ID) THEN
4136 DMGMX = HALF*(FBUF1%FLOC(IFAIL)%DAMMX(NEL*MODE+I) +
4137 . FBUF2%FLOC(IFAIL)%DAMMX(NEL*MODE+I))
4138 IS_WRITTEN_VALUE(I) = 1
4141 VALUE(I) = VALUE(I) + DMGMX/(NPTR*NPTS)
4149 FBUF => ELBUF_TAB(NG)%BUFLY(1)%FAIL(IR,IS,NINT(HALF*NPT))
4151 DO IFAIL = 1,ELBUF_TAB(NG)%BUFLY(1)%NFAIL
4152 IF (FBUF%FLOC(IFAIL)%IDFAIL == ID) THEN
4153 DMGMX = FBUF%FLOC(IFAIL)%DAMMX(NEL*MODE+I)
4154 IS_WRITTEN_VALUE(I) = 1
4157 VALUE(I) = VALUE(I) + DMGMX/(NPTR*NPTS)
4165!============================================================================================
4168 ELSEIF (KEYWORD == 'damg/memb
') THEN
4171 ! Output only if global damage flag is activated
4172 IF (GBUF%G_DMG > 0) THEN
4179 ! Multilayer properties TYPE 10/11/16/17/51/52
4181 IPT = IABS(NLAY)/2 + 1
4182 IF (ELBUF_TAB(NG)%BUFLY(IPT)%L_DMG > 0) THEN
4183 NPTT = ELBUF_TAB(NG)%BUFLY(IPT)%NPTT
4188 LBUF => ELBUF_TAB(NG)%BUFLY(IPT)%LBUF(IR,IS,IT)
4189 VALUE(I) = VALUE(I) + LBUF%DMG(I)/(NPTR*NPTS*NPTT)
4193 IS_WRITTEN_VALUE(I) = 1
4196 ! Single layer properties TYPE 1/9
4197 ELSEIF (MPT > 0) THEN
4198 IPT = IABS(NPT)/2 + 1
4199 IF (ELBUF_TAB(NG)%BUFLY(1)%L_DMG > 0) THEN
4203 LBUF => ELBUF_TAB(NG)%BUFLY(1)%LBUF(IR,IS,IPT)
4204 VALUE(I) = VALUE(I) + LBUF%DMG(I)/(NPTR*NPTS)
4207 IS_WRITTEN_VALUE(I) = 1
4213 ELSEIF (KEYWORD == 'damg
') THEN
4216 ! Check if the variable can be lightened
4219 ! Output only if global damage flag is activated
4220 IF (GBUF%G_DMG > 0) THEN
4227 ! If no MODE is requested
4228 IF (MODE == -1) THEN
4229 ! If no specific input PLY=null LAYER=null NPT=null
4230.AND..AND.
IF (ILAY == -1 IPT == -1 IPLY == -1) THEN
4231 ! Multilayer properties TYPE 10/11/16/17/51/52
4232 ! -> Mean value among all layers and integration points
4236 IMAT = ELBUF_TAB(NG)%BUFLY(N)%IMAT
4237 MAT_ID = MATPARAM(IMAT)%MAT_ID
4238.OR..AND.
IF ((ID == -1) ((ID > 0)(MAT_ID == ID))) THEN
4239 IF (ELBUF_TAB(NG)%BUFLY(N)%L_DMG > 0) THEN
4240 NPTT = ELBUF_TAB(NG)%BUFLY(N)%NPTT
4244 LBUF => ELBUF_TAB(NG)%BUFLY(N)%LBUF(IR,IS,IT)
4245 VALUE(I) = VALUE(I) + LBUF%DMG(I)/(NPTT*NPTR*NPTS)
4250 IS_WRITTEN_VALUE(I) = 1
4253 VALUE(I) = VALUE(I) / NLAY
4255 ! Single layer properties TYPE 1/9
4256 ! -> Mean value among all layers and integration points
4257 ELSEIF (MPT > 0) THEN
4258 IF (ELBUF_TAB(NG)%BUFLY(1)%L_DMG > 0) THEN
4259 NPTT = ELBUF_TAB(NG)%BUFLY(1)%NPTT
4260 IMAT = ELBUF_TAB(NG)%BUFLY(1)%IMAT
4261 MAT_ID = MATPARAM(IMAT)%MAT_ID
4262.OR..AND.
IF ((ID == -1) ((ID > 0)(MAT_ID == ID))) THEN
4267 LBUF => ELBUF_TAB(NG)%BUFLY(1)%LBUF(IR,IS,IT)
4268 VALUE(I) = VALUE(I) + LBUF%DMG(I)/(NPTT*NPTR*NPTS)
4272 IS_WRITTEN_VALUE(I) = 1
4278 ! If ply and int. point input: PLY=IPLY LAYER=null NPT=IPT
4279 ! -> Properties type 17/51/52 only
4280.AND..AND.
ELSEIF (IPLY > 0 IPT <= MPT IPT > 0) THEN
4282 IMAT = ELBUF_TAB(NG)%BUFLY(J)%IMAT
4283 MAT_ID = MATPARAM(IMAT)%MAT_ID
4284.OR..AND.
IF ((ID == -1) ((ID > 0)(MAT_ID == ID))) THEN
4285 IF (ELBUF_TAB(NG)%BUFLY(J)%L_DMG > 0) THEN
4286 NPTT = ELBUF_TAB(NG)%BUFLY(J)%NPTT
4288.OR.
IF (IGTYP == 17 IGTYP == 51) THEN
4289 ID_PLY = IGEO(1,STACK%IGEO(2+J,ISUBSTACK))
4290 ELSEIF (IGTYP == 52) THEN
4291 ID_PLY = PLY_INFO(1,STACK%IGEO(2+J,ISUBSTACK)-NUMSTACK)
4293 IF (ID_PLY == IPLY) THEN
4294 IF (IPT <= NPTT) THEN
4298 LBUF => ELBUF_TAB(NG)%BUFLY(J)%LBUF(IR,IS,IPT)
4299 VALUE(I) = VALUE(I) + LBUF%DMG(I)/(NPTR*NPTS)
4302 IS_WRITTEN_VALUE(I) = 1
4310 ! If ply input only: PLY=IPLY LAYER=null NPT=null
4311 ! -> Properties type 17/51/52 only
4312.AND.
ELSEIF (IPLY > 0 IPT == -1) THEN
4314 IMAT = ELBUF_TAB(NG)%BUFLY(J)%IMAT
4315 MAT_ID = MATPARAM(IMAT)%MAT_ID
4316.OR..AND.
IF ((ID == -1) ((ID > 0)(MAT_ID == ID))) THEN
4317 IF (ELBUF_TAB(NG)%BUFLY(J)%L_DMG > 0) THEN
4318 NPTT = ELBUF_TAB(NG)%BUFLY(J)%NPTT
4320.OR.
IF (IGTYP == 17 IGTYP == 51) THEN
4321 ID_PLY = IGEO(1,STACK%IGEO(2+J,ISUBSTACK))
4322 ELSEIF (IGTYP == 52) THEN
4323 ID_PLY = PLY_INFO(1,STACK%IGEO(2+J,ISUBSTACK)-NUMSTACK)
4325 IF (ID_PLY == IPLY) THEN
4330 LBUF => ELBUF_TAB(NG)%BUFLY(J)%LBUF(IR,IS,IT)
4331 VALUE(I) = VALUE(I) + LBUF%DMG(I)/(NPTR*NPTS*NPTT)
4335 IS_WRITTEN_VALUE(I) = 1
4342 ! If ply input + membrane: PLY=IPLY LAYER=null NPT=MEMB
4343 ! -> Properties type 17/51/52 only
4344.AND.
ELSEIF ( IPLY > 0 IPT == -4 ) THEN
4346 IMAT = ELBUF_TAB(NG)%BUFLY(J)%IMAT
4347 MAT_ID = MATPARAM(IMAT)%MAT_ID
4348.OR..AND.
IF ((ID == -1) ((ID > 0)(MAT_ID == ID))) THEN
4349 IF (ELBUF_TAB(NG)%BUFLY(J)%L_DMG > 0) THEN
4350 NPTT = ELBUF_TAB(NG)%BUFLY(J)%NPTT
4352.OR.
IF (IGTYP == 17 IGTYP == 51) THEN
4353 ID_PLY = IGEO(1,STACK%IGEO(2+J,ISUBSTACK))
4354 ELSEIF (IGTYP == 52) THEN
4355 ID_PLY=PLY_INFO(1,STACK%IGEO(2+J,ISUBSTACK)-NUMSTACK)
4357 IF (ID_PLY == IPLY ) THEN
4358 IF (MOD(NPTT,2) == 0) THEN
4362 LBUF1 => ELBUF_TAB(NG)%BUFLY(J)%LBUF(IR,IS,NINT(HALF*NPTT))
4363 LBUF2 => ELBUF_TAB(NG)%BUFLY(J)%LBUF(IR,IS,NINT(HALF*NPTT)+1)
4364 VALUE(I) = VALUE(I) + HALF*(LBUF1%DMG(I) + LBUF2%DMG(I)
4366 IS_WRITTEN_VALUE(I) = 1
4375 LBUF => ELBUF_TAB(NG)%BUFLY(J)%LBUF(IR,IS,NINT(HALF*NPTT))
4376 VALUE(I) = VALUE(I) + LBUF%DMG(I)/(NPTR*NPTS)
4377 IS_WRITTEN_VALUE(I) = 1
4386 ! If layer input : PLY=null LAYER=ILAY NPT=null/IPT
4387 ! -> Properties type 10/11/16 only
4388.AND.
ELSEIF (ILAY <= NLAY ILAY > 0) THEN
4390.OR..OR.
IF (IGTYP == 10 IGTYP == 11 IGTYP == 16) THEN
4391 IMAT = ELBUF_TAB(NG)%BUFLY(ILAY)%IMAT
4392 MAT_ID = MATPARAM(IMAT)%MAT_ID
4393.OR..AND.
IF ((ID == -1) ((ID > 0)(MAT_ID == ID))) THEN
4394 IF (ELBUF_TAB(NG)%BUFLY(ILAY)%L_DMG > 0) THEN
4398 LBUF => ELBUF_TAB(NG)%BUFLY(ILAY)%LBUF(IR,IS,1)
4399 VALUE(I) = VALUE(I) + LBUF%DMG(I)/(NPTR*NPTS)
4402 IS_WRITTEN_VALUE(I) = 1
4408 ! If intg. point input : PLY=null LAYER=null NPT=IPT
4409 ! -> Properties type 1/9 only
4410.AND.
ELSEIF (IPT <= NPT IPT > 0) THEN
4411.OR.
IF (IGTYP == 1 IGTYP == 9) THEN
4412 IMAT = ELBUF_TAB(NG)%BUFLY(1)%IMAT
4413 MAT_ID = MATPARAM(IMAT)%MAT_ID
4414.OR..AND.
IF ((ID == -1) ((ID > 0)(MAT_ID == ID))) THEN
4415 IF (ELBUF_TAB(NG)%BUFLY(1)%L_DMG > 0) THEN
4419 LBUF => ELBUF_TAB(NG)%BUFLY(1)%LBUF(IR,IS,IPT)
4420 VALUE(I) = VALUE(I) + LBUF%DMG(I)/(NPTR*NPTS)
4423 IS_WRITTEN_VALUE(I) = 1
4429 ELSEIF (IPT == -4) THEN
4430.OR.
IF (IGTYP == 1 IGTYP == 9 ) THEN
4431 IMAT = ELBUF_TAB(NG)%BUFLY(1)%IMAT
4432 MAT_ID = MATPARAM(IMAT)%MAT_ID
4433.OR..AND.
IF ((ID == -1) ((ID > 0)(MAT_ID == ID))) THEN
4434 IF (ELBUF_TAB(NG)%BUFLY(1)%L_DMG > 0) THEN
4435 IF (MOD(NPT,2) == 0) THEN
4439 LBUF1 => ELBUF_TAB(NG)%BUFLY(1)%LBUF(IR,IS,NINT(HALF*NPT))
4440 LBUF2 => ELBUF_TAB(NG)%BUFLY(1)%LBUF(IR,IS,NINT(HALF*NPT)+1)
4441 VALUE(I) = VALUE(I) + HALF*(LBUF1%DMG(I) + LBUF2%DMG(I))/(NPTR*NPTS)
4444 IS_WRITTEN_VALUE(I) = 1
4450 LBUF => ELBUF_TAB(NG)%BUFLY(1)%LBUF(IR,IS,NINT(HALF*NPT))
4451 VALUE(I) = VALUE(I) + LBUF%DMG(I)/(NPTR*NPTS)
4454 IS_WRITTEN_VALUE(I) = 1
4462 ! If MODE is requested (MODE > 0) with a specific ID (ID > 0)
4464 ! If no specific input PLY=null LAYER=null NPT=null
4465.AND..AND.
IF (ILAY == -1 IPT == -1 IPLY == -1) THEN
4466 ! Multilayer properties TYPE 10/11/16/17/51/52
4467 ! -> Mean value among all layers and integration points
4471 IMAT = ELBUF_TAB(NG)%BUFLY(N)%IMAT
4472 NMOD = MATPARAM(IMAT)%NMOD
4473 MAT_ID = MATPARAM(IMAT)%MAT_ID
4474.AND..AND.
IF ((NMOD > 0 MODE <= NMOD) (MAT_ID == ID)) THEN
4475 IF (ELBUF_TAB(NG)%BUFLY(N)%L_DMG > 0) THEN
4476 NPTT = ELBUF_TAB(NG)%BUFLY(N)%NPTT
4480 LBUF => ELBUF_TAB(NG)%BUFLY(N)%LBUF(IR,IS,IT)
4481 VALUE(I) = VALUE(I) + LBUF%DMG(NEL*MODE+I)/(NPTT*NPTR*NPTS)
4486 IS_WRITTEN_VALUE(I) = 1
4489 VALUE(I) = VALUE(I) / NLAY
4491 ! Single layer properties TYPE 1/9
4492 ! -> Mean value among all layers and integration points
4493 ELSEIF (MPT > 0) THEN
4494 IMAT = ELBUF_TAB(NG)%BUFLY(1)%IMAT
4495 NMOD = MATPARAM(IMAT)%NMOD
4496 MAT_ID = MATPARAM(IMAT)%MAT_ID
4497.AND..AND.
IF ((NMOD > 0 MODE <= NMOD) (MAT_ID == ID)) THEN
4498 IF (ELBUF_TAB(NG)%BUFLY(1)%L_DMG > 0) THEN
4499 NPTT = ELBUF_TAB(NG)%BUFLY(1)%NPTT
4504 LBUF => ELBUF_TAB(NG)%BUFLY(1)%LBUF(IR,IS,IT)
4505 VALUE(I) = VALUE(I) + LBUF%DMG(NEL*MODE+I)/(NPTT*NPTR*NPTS)
4509 IS_WRITTEN_VALUE(I) = 1
4515 ! If ply and int. point input: PLY=IPLY LAYER=null NPT=IPT
4516 ! -> Properties type 17/51/52 only
4517.AND..AND.
ELSEIF (IPLY > 0 IPT <= MPT IPT > 0) THEN
4519 IMAT = ELBUF_TAB(NG)%BUFLY(J)%IMAT
4520 NMOD = MATPARAM(IMAT)%NMOD
4521 MAT_ID = MATPARAM(IMAT)%MAT_ID
4522.AND..AND.
IF ((NMOD > 0 MODE <= NMOD) (MAT_ID == ID)) THEN
4523 IF (ELBUF_TAB(NG)%BUFLY(J)%L_DMG > 0) THEN
4524 NPTT = ELBUF_TAB(NG)%BUFLY(J)%NPTT
4526.OR.
IF (IGTYP == 17 IGTYP == 51) THEN
4527 ID_PLY = IGEO(1,STACK%IGEO(2+J,ISUBSTACK))
4528 ELSEIF (IGTYP == 52) THEN
4529 ID_PLY = PLY_INFO(1,STACK%IGEO(2+J,ISUBSTACK)-NUMSTACK)
4531 IF (ID_PLY == IPLY) THEN
4532 IF (IPT <= NPTT) THEN
4536 LBUF => ELBUF_TAB(NG)%BUFLY(J)%LBUF(IR,IS,IPT)
4537 VALUE(I) = VALUE(I) + LBUF%DMG(NEL*MODE+I)/(NPTR*NPTS)
4540 IS_WRITTEN_VALUE(I) = 1
4548 ! If ply input only: PLY=IPLY LAYER=null NPT=null
4549 ! -> Properties type 17/51/52 only
4550.AND.
ELSEIF (IPLY > 0 IPT == -1) THEN
4552 IMAT = ELBUF_TAB(NG)%BUFLY(J)%IMAT
4553 NMOD = MATPARAM(IMAT)%NMOD
4554 MAT_ID = MATPARAM(IMAT)%MAT_ID
4555.AND..AND.
IF ((NMOD > 0 MODE <= NMOD) (MAT_ID == ID)) THEN
4556 IF (ELBUF_TAB(NG)%BUFLY(J)%L_DMG > 0) THEN
4557 NPTT = ELBUF_TAB(NG)%BUFLY(J)%NPTT
4559.OR.
IF (IGTYP == 17 IGTYP == 51) THEN
4560 ID_PLY = IGEO(1,STACK%IGEO(2+J,ISUBSTACK))
4561 ELSEIF (IGTYP == 52) THEN
4562 ID_PLY = PLY_INFO(1,STACK%IGEO(2+J,ISUBSTACK)-NUMSTACK)
4564 IF (ID_PLY == IPLY) THEN
4569 LBUF => ELBUF_TAB(NG)%BUFLY(J)%LBUF(IR,IS,IT)
4570 VALUE(I) = VALUE(I) + LBUF%DMG(NEL*MODE+I)/(NPTR*NPTS*NPTT)
4574 IS_WRITTEN_VALUE(I) = 1
4581 ! If ply input + membrane: PLY=IPLY LAYER=null NPT=MEMB
4582 ! -> Properties type 17/51/52 only
4583.AND.
ELSEIF ( IPLY > 0 IPT == -4 ) THEN
4585 IMAT = ELBUF_TAB(NG)%BUFLY(J)%IMAT
4586 MAT_ID = MATPARAM(IMAT)%MAT_ID
4587.OR..AND.
IF ((ID == -1) ((ID > 0)(MAT_ID == ID))) THEN
4588 IF (ELBUF_TAB(NG)%BUFLY(J)%L_DMG > 0) THEN
4589 NPTT = ELBUF_TAB(NG)%BUFLY(J)%NPTT
4591.OR.
IF (IGTYP == 17 IGTYP == 51) THEN
4592 ID_PLY = IGEO(1,STACK%IGEO(2+J,ISUBSTACK))
4593 ELSEIF (IGTYP == 52) THEN
4594 ID_PLY=PLY_INFO(1,STACK%IGEO(2+J,ISUBSTACK)-NUMSTACK)
4596 IF (ID_PLY == IPLY ) THEN
4597 IF (MOD(NPTT,2) == 0) THEN
4601 LBUF1 => ELBUF_TAB(NG)%BUFLY(J)%LBUF(IR,IS,NINT(HALF*NPTT))
4602 LBUF2 => ELBUF_TAB(NG)%BUFLY(J)%LBUF(IR,IS,NINT(HALF*NPTT)+1)
4603 VALUE(I) = VALUE(I) + HALF*(LBUF1%DMG(NEL*MODE+I) +
4604 . LBUF2%DMG(NEL*MODE+I)/(NPTR*NPTS))
4605 IS_WRITTEN_VALUE(I) = 1
4613 LBUF => ELBUF_TAB(NG)%BUFLY(J)%LBUF(IR,IS,NINT(HALF*NPTT))
4614 VALUE(I) = VALUE(I) + LBUF%DMG(NEL*MODE+I)/(NPTR*NPTS)
4615 IS_WRITTEN_VALUE(I) = 1
4625 ! If layer input : PLY=null LAYER=ILAY NPT=null/IPT
4626 ! -> Properties type 10/11/16 only
4627.AND.
ELSEIF (ILAY <= NLAY ILAY > 0) THEN
4629.OR..OR.
IF (IGTYP == 10 IGTYP == 11 IGTYP == 16) THEN
4630 IMAT = ELBUF_TAB(NG)%BUFLY(ILAY)%IMAT
4631 NMOD = MATPARAM(IMAT)%NMOD
4632 MAT_ID = MATPARAM(IMAT)%MAT_ID
4633.AND..AND.
IF ((NMOD > 0 MODE <= NMOD) (MAT_ID == ID)) THEN
4634 IF (ELBUF_TAB(NG)%BUFLY(ILAY)%L_DMG > 0) THEN
4638 LBUF => ELBUF_TAB(NG)%BUFLY(ILAY)%LBUF(IR,IS,1)
4639 VALUE(I) = VALUE(I) + LBUF%DMG(NEL*MODE+I)/(NPTR*NPTS)
4642 IS_WRITTEN_VALUE(I) = 1
4648 ! If intg. point input : PLY=null LAYER=null NPT=IPT
4649 ! -> Properties type 1/9 only
4650.AND.
ELSEIF (IPT <= NPT IPT > 0) THEN
4651.OR.
IF (IGTYP == 1 IGTYP == 9) THEN
4652 IMAT = ELBUF_TAB(NG)%BUFLY(1)%IMAT
4653 NMOD = MATPARAM(IMAT)%NMOD
4654 MAT_ID = MATPARAM(IMAT)%MAT_ID
4655.AND..AND.
IF ((NMOD > 0 MODE <= NMOD) (MAT_ID == ID)) THEN
4656 IF (ELBUF_TAB(NG)%BUFLY(1)%L_DMG > 0) THEN
4660 LBUF => ELBUF_TAB(NG)%BUFLY(1)%LBUF(IR,IS,IPT)
4661 VALUE(I) = VALUE(I) + LBUF%DMG(NEL*MODE+I)/(NPTR*NPTS)
4664 IS_WRITTEN_VALUE(I) = 1
4670 ELSEIF (IPT == -4) THEN
4671.OR.
IF (IGTYP == 1 IGTYP == 9) THEN
4672 IMAT = ELBUF_TAB(NG)%BUFLY(1)%IMAT
4673 NMOD = MATPARAM(IMAT)%NMOD
4674 MAT_ID = MATPARAM(IMAT)%MAT_ID
4675.AND..AND.
IF ((NMOD > 0 MODE <= NMOD) (MAT_ID == ID)) THEN
4676 IF (ELBUF_TAB(NG)%BUFLY(1)%L_DMG > 0) THEN
4677 IF (MOD(NPT,2) == 0) THEN
4681 LBUF1 => ELBUF_TAB(NG)%BUFLY(1)%LBUF(IR,IS,NINT(HALF*NPT))
4682 LBUF2 => ELBUF_TAB(NG)%BUFLY(1)%LBUF(IR,IS,NINT(HALF*NPT)+1)
4683 VALUE(I) = VALUE(I) + HALF*(LBUF1%DMG(NEL*MODE+I) +
4684 . LBUF2%DMG(NEL*MODE+I))/(NPTR*NPTS)
4687 IS_WRITTEN_VALUE(I) = 1
4693 LBUF => ELBUF_TAB(NG)%BUFLY(1)%LBUF(IR,IS,NINT(HALF*NPT))
4694 VALUE(I) = VALUE(I) + LBUF%DMG(NEL*MODE+I)/(NPTR*NPTS)
4697 IS_WRITTEN_VALUE(I) = 1
4707 ELSEIF (KEYWORD == 'damini
') THEN
4709 IF (IFAILURE > 0) THEN
4717.AND..AND.
IF ( ILAY == -1 IPT == -1 IPLY == -1) THEN
4721 NPTT = ELBUF_TAB(NG)%BUFLY(N)%NPTT
4725 FBUF => ELBUF_TAB(NG)%BUFLY(N)%FAIL(IR,IS,IT)
4727 DO IFAIL = 1,ELBUF_TAB(NG)%BUFLY(N)%NFAIL
4728 IF (FBUF%FLOC(IFAIL)%LF_DAMINI > 0) THEN
4729 MAXDAMINI = MAX(MAXDAMINI,FBUF%FLOC(IFAIL)%DAMINI(I))
4732 VALUE(I) = VALUE(I) + MAXDAMINI/(NPTT*NPTR*NPTS)
4735 ENDDO ! DO IT = 1,NPTT
4737 VALUE(I) = VALUE(I) / NLAY
4738 IS_WRITTEN_VALUE(I) = 1
4740 ELSEIF (MPT > 0) THEN ! NLAY = 1
4741 NPTT = ELBUF_TAB(NG)%BUFLY(1)%NPTT
4746 FBUF => ELBUF_TAB(NG)%BUFLY(1)%FAIL(IR,IS,IT)
4748 DO IFAIL = 1,ELBUF_TAB(NG)%BUFLY(1)%NFAIL
4749 IF (FBUF%FLOC(IFAIL)%LF_DAMINI > 0) THEN
4750 MAXDAMINI = MAX(MAXDAMINI,FBUF%FLOC(IFAIL)%DAMINI(I))
4753 VALUE(I) = VALUE(I) + MAXDAMINI/(NPTT*NPTR*NPTS)
4757 IS_WRITTEN_VALUE(I) = 1
4761.AND..AND.
ELSEIF ( IPLY > 0 IPT <= MPT IPT > 0 ) THEN
4763 NPTT = ELBUF_TAB(NG)%BUFLY(J)%NPTT
4765.OR.
IF (IGTYP == 17 IGTYP == 51) THEN
4766 ID_PLY = IGEO(1,STACK%IGEO(2+J,ISUBSTACK))
4767 ELSEIF (IGTYP == 52) THEN
4768 ID_PLY = PLY_INFO(1,STACK%IGEO(2+J,ISUBSTACK)-NUMSTACK)
4770 IF (ID_PLY == IPLY) THEN
4771 IF (IPT <= NPTT) THEN
4775 FBUF => ELBUF_TAB(NG)%BUFLY(J)%FAIL(IR,IS,IPT)
4777 DO IFAIL = 1, ELBUF_TAB(NG)%BUFLY(J)%NFAIL
4778 IF (FBUF%FLOC(IFAIL)%LF_DAMINI > 0) THEN
4779 MAXDAMINI = MAX(MAXDAMINI,FBUF%FLOC(IFAIL)%DAMINI(I))
4782 VALUE(I) = VALUE(I) + MAXDAMINI/(NPTR*NPTS)
4785 IS_WRITTEN_VALUE(I) = 1
4791.AND.
ELSEIF ( IPLY > 0 IPT == -1 ) THEN
4793 NPTT = ELBUF_TAB(NG)%BUFLY(J)%NPTT
4795.OR.
IF (IGTYP == 17 IGTYP == 51) THEN
4796 ID_PLY = IGEO(1,STACK%IGEO(2+J,ISUBSTACK))
4797 ELSEIF (IGTYP == 52) THEN
4798 ID_PLY = PLY_INFO(1,STACK%IGEO(2+J,ISUBSTACK)-NUMSTACK)
4800 IF (ID_PLY == IPLY) THEN
4805 FBUF => ELBUF_TAB(NG)%BUFLY(J)%FAIL(IR,IS,IT)
4807 DO IFAIL = 1, ELBUF_TAB(NG)%BUFLY(J)%NFAIL
4808 IF (FBUF%FLOC(IFAIL)%LF_DAMINI > 0) THEN
4809 MAXDAMINI = MAX(MAXDAMINI,FBUF%FLOC(IFAIL)%DAMINI(I))
4812 VALUE(I) = VALUE(I) + MAXDAMINI/(NPTR*NPTS*NPTT)
4816 IS_WRITTEN_VALUE(I) = 1
4821.AND..AND..AND.
ELSEIF (ILAY <= NLAY ILAY > 0 IPT <= MPT IPT > 0 ) THEN
4822.OR.
IF (IGTYP == 51 IGTYP == 52) THEN
4826 FBUF => ELBUF_TAB(NG)%BUFLY(ILAY)%FAIL(IR,IS,IPT)
4828 DO IFAIL = 1,ELBUF_TAB(NG)%BUFLY(ILAY)%NFAIL
4829 IF (FBUF%FLOC(IFAIL)%LF_DAMINI > 0) THEN
4830 MAXDAMINI = MAX(MAXDAMINI,FBUF%FLOC(IFAIL)%DAMINI(I))
4833 VALUE(I) = VALUE(I) + MAXDAMINI/(NPTR*NPTS)
4834 IS_WRITTEN_VALUE(I) = 1
4840.AND.
ELSEIF ( ILAY <= NLAY ILAY > 0) THEN
4842.OR..OR..OR.
IF (IGTYP == 10 IGTYP == 11 IGTYP == 16 IGTYP == 17) THEN
4846 FBUF => ELBUF_TAB(NG)%BUFLY(ILAY)%FAIL(IR,IS,1)
4848 DO IFAIL = 1,ELBUF_TAB(NG)%BUFLY(ILAY)%NFAIL
4849 IF (FBUF%FLOC(IFAIL)%LF_DAMINI > 0) THEN
4850 MAXDAMINI = MAX(MAXDAMINI,FBUF%FLOC(IFAIL)%DAMINI(I))
4853 VALUE(I) = VALUE(I) + MAXDAMINI/(NPTR*NPTS)
4856 IS_WRITTEN_VALUE(I) = 1
4858.OR.
ELSEIF (IGTYP == 51 IGTYP == 52) THEN
4859 NPTT = ELBUF_TAB(NG)%BUFLY(ILAY)%NPTT
4864 FBUF => ELBUF_TAB(NG)%BUFLY(ILAY)%FAIL(IR,IS,IT)
4866 DO IFAIL = 1,ELBUF_TAB(NG)%BUFLY(ILAY)%NFAIL
4867 IF (FBUF%FLOC(IFAIL)%LF_DAMINI > 0) THEN
4868 MAXDAMINI = MAX(MAXDAMINI,FBUF%FLOC(IFAIL)%DAMINI(I))
4871 VALUE(I) = VALUE(I) + MAXDAMINI/(NPTT*NPTR*NPTS)
4874 ENDDO ! DO IT = 1,NPTT
4875 IS_WRITTEN_VALUE(I) = 1
4879.AND.
ELSEIF ( IPT <= NPT IPT > 0) THEN
4880.OR.
IF (IGTYP == 1 IGTYP == 9 ) THEN
4884 FBUF => ELBUF_TAB(NG)%BUFLY(1)%FAIL(IR,IS,IPT)
4886 DO IFAIL = 1,ELBUF_TAB(NG)%BUFLY(1)%NFAIL
4887 IF (FBUF%FLOC(IFAIL)%LF_DAMINI > 0) THEN
4888 MAXDAMINI = MAX(MAXDAMINI,FBUF%FLOC(IFAIL)%DAMINI(I))
4891 VALUE(I) = VALUE(I) + MAXDAMINI/(NPTR*NPTS)
4892 IS_WRITTEN_VALUE(I) = 1
4900 ELSE IF (KEYWORD == 'tdel
') THEN
4905 NFAIL = ELBUF_TAB(NG)%BUFLY(IL)%NFAIL
4909 FBUF => ELBUF_TAB(NG)%BUFLY(IL)%FAIL(IR,IS,IT)
4912 VALUE(I) = MAX(VALUE(I),FBUF%FLOC(IFAIL)%TDEL(I))
4913 IS_WRITTEN_VALUE(I) = 1
4921 ELSE IF (KEYWORD == 'ssp
') THEN
4925 IF (MLW == 151) THEN
4927 VALUE(I) = MULTI_FVM%SOUND_SPEED(I + NFT)
4928 IS_WRITTEN_VALUE(I) = 1
4931 L = ELBUF_TAB(NG)%BUFLY(1)%L_SSP
4933 LBUF => ELBUF_TAB(NG)%BUFLY(1)%LBUF(1,1,1)
4935 VALUE(I) = LBUF%SSP(I)
4936 IS_WRITTEN_VALUE(I) = 1
4941 ELSEIF(KEYWORD == 'schlieren
') THEN
4943 IALEL=IPARG(7,NG)+IPARG(11,NG)
4945.AND.
IF(ITY ==7 N2D /= 0)THEN
4949 CALL OUTPUT_SCHLIEREN(
4951 2 IPARG , WA_L , ELBUF_TAB , ALE_CONNECT , GBUF%VOL,
4955 IS_WRITTEN_VALUE(I) = 1
4960 ELSE IF ( KEYWORD == 'error/thick
') THEN
4964 VALUE(I) = ERR_THK_SH4(I)
4965 IS_WRITTEN_VALUE(I) = 1
4969 VALUE(I) = ERR_THK_SH3(I)
4970 IS_WRITTEN_VALUE(I) = 1
4974 ELSE IF (KEYWORD == 'domain
') THEN
4979 IS_WRITTEN_VALUE(I) = 1
4982 ELSEIF (KEYWORD == 'sigeq
') THEN ! equiv stress (mid layer : npt/2 + 1)
4985 IF (GBUF%G_SEQ > 0) THEN
4987 ! Total number of integration points
4990 BUFLY => ELBUF_TAB(NG)%BUFLY(IL)
4991 NPTG = NPTG + BUFLY%NPTT*NPTR*NPTS
4993 ! Average equivalent stress on integration points
4996 BUFLY => ELBUF_TAB(NG)%BUFLY(IL)
5000 LBUF => ELBUF_TAB(NG)%BUFLY(IL)%LBUF(IR,IS,IT)
5002 VALUE(I) = VALUE(I) + LBUF%SEQ(I)/NPTG
5003 IS_WRITTEN_VALUE(I) = 1
5012 S1 = GBUF%FOR(JJ(1)+I)
5013 S2 = GBUF%FOR(JJ(2)+I)
5014 S12= GBUF%FOR(JJ(3)+I)
5015 VONM2= S1*S1 + S2*S2 - S1*S2 + THREE*S12*S12
5016 VALUE(I) = SQRT(VONM2)
5017 IS_WRITTEN_VALUE(I) = 1
5021 ELSEIF (KEYWORD == 'nl_epsp
') THEN
5022 IF (GBUF%G_PLANL > 0) THEN
5027 ! Mean value through all integration points in the thickness
5029 NPTT = ELBUF_TAB(NG)%BUFLY(1)%NPTT
5030 NPTG = NPTR*NPTS*NPTT
5035 LBUF => ELBUF_TAB(NG)%BUFLY(1)%LBUF(IR,IS,IT)
5036 VALUE(I) = VALUE(I) + LBUF%PLANL(I)/NPTG
5040 IS_WRITTEN_VALUE(I) = 1
5042 ! Value at a given integration point in the thickness
5043.AND.
ELSEIF ( IPT <= NPT IPT > 0) THEN
5048 LBUF => ELBUF_TAB(NG)%BUFLY(1)%LBUF(IR,IS,IPT)
5049 VALUE(I) = VALUE(I) + LBUF%PLANL(I)/NPTG
5052 IS_WRITTEN_VALUE(I) = 1
5057 ELSEIF (KEYWORD == 'nl_epsd
') THEN
5059 IF (GBUF%G_EPSDNL > 0) THEN
5065 ! Mean value through all integration points in the thickness
5067 NPTT = ELBUF_TAB(NG)%BUFLY(1)%NPTT
5068 NPTG = NPTR*NPTS*NPTT
5073 LBUF => ELBUF_TAB(NG)%BUFLY(1)%LBUF(IR,IS,IT)
5074 VALUE(I) = VALUE(I) + LBUF%EPSDNL(I)/NPTG
5078 IS_WRITTEN_VALUE(I) = 1
5080 ! Value at a given integration point in the thickness
5081.AND.
ELSEIF ( IPT <= NPT IPT > 0) THEN
5086 LBUF => ELBUF_TAB(NG)%BUFLY(1)%LBUF(IR,IS,IPT)
5087 VALUE(I) = VALUE(I) + LBUF%EPSDNL(I)/NPTG
5090 IS_WRITTEN_VALUE(I) = 1
5095 ELSEIF (KEYWORD == 'tsaiwu
') THEN
5097.AND..AND..AND.
IF ( ILAY == -1 IPT == -1 IPLY == -1 GBUF%G_TSAIWU > 0) THEN
5099 IPT = IABS(NLAY)/2 + 1
5100 BUFLY => ELBUF_TAB(NG)%BUFLY(IPT)
5101 IF (BUFLY%L_TSAIWU > 0) THEN
5107 VALUE(I) = VALUE(I) + BUFLY%LBUF(IR,IS,IT)%TSAIWU(I)/(NPTT*NPTR*NPTS)
5108 IS_WRITTEN_VALUE(I) = 1
5115 BUFLY => ELBUF_TAB(NG)%BUFLY(1)
5116 IF (BUFLY%L_TSAIWU > 0) THEN
5118 IPT = IABS(NPTT)/2 + 1
5122 VALUE(I) = VALUE(I) + BUFLY%LBUF(IR,IS,IPT)%TSAIWU(I)/(NPTR*NPTS)
5123 IS_WRITTEN_VALUE(I) = 1
5130 ! -- PLY=IPLY NPT=IPT
5131.AND..AND..AND.
ELSEIF ( IPLY > 0 (IPT <= MPT IPT > 0 ) GBUF%G_TSAIWU > 0) THEN
5135.OR.
IF (IGTYP == 17 IGTYP == 51) THEN
5136 ID_PLY = IGEO(1,STACK%IGEO(2+J,ISUBSTACK))
5137 ELSEIF (IGTYP == 52) THEN
5138 ID_PLY = PLY_INFO(1,STACK%IGEO(2+J,ISUBSTACK)-NUMSTACK)
5141 IF (ID_PLY == IPLY ) THEN
5142 BUFLY => ELBUF_TAB(NG)%BUFLY(J)
5143.OR..OR.
IF (IGTYP == 17 IGTYP == 51 IGTYP == 52 ) THEN
5145 IF( IPT <= NPTT) THEN
5150 VALUE(I) = VALUE(I) + BUFLY%LBUF(IR,IS,IPT)%TSAIWU(I)/NPG
5151 IS_WRITTEN_VALUE(I) = 1
5157 VALUE(I) = BUFLY%LBUF(1,1,IPT)%TSAIWU(I)
5158 IS_WRITTEN_VALUE(I) = 1
5166 ! -- PLY=IPLY NPT=NULL
5167.AND..AND.
ELSEIF ( IPLY > 0 IPT == -1 GBUF%G_TSAIWU > 0) THEN
5171.OR.
IF (IGTYP == 17 IGTYP == 51) THEN
5172 ID_PLY = IGEO(1,STACK%IGEO(2+J,ISUBSTACK))
5173 ELSEIF (IGTYP == 52) THEN
5174 ID_PLY = PLY_INFO(1,STACK%IGEO(2+J,ISUBSTACK)-NUMSTACK)
5177 IF (ID_PLY == IPLY ) THEN
5178 BUFLY => ELBUF_TAB(NG)%BUFLY(J)
5179.OR..OR.
IF (IGTYP == 17 IGTYP == 51 IGTYP == 52 ) THEN
5182 IF (IPT <= NPTT) THEN
5187 VALUE(I) = VALUE(I) + BUFLY%LBUF(IR,IS,IPT)%TSAIWU(I)/(NPG*NPTT)
5188 IS_WRITTEN_VALUE(I) = 1
5194 VALUE(I) = VALUE(I) + BUFLY%LBUF(1,1,IPT)%TSAIWU(I)/NPTT
5195 IS_WRITTEN_VALUE(I) = 1
5205.AND..AND..AND..AND.
ELSEIF ( (ILAY <= NLAY ILAY > 0) (IPT <= MPT IPT > 0 ) GBUF%G_TSAIWU > 0) THEN
5206.OR.
IF (IGTYP == 51 IGTYP == 52) THEN
5207 BUFLY => ELBUF_TAB(NG)%BUFLY(ILAY)
5209.AND.
IF ((BUFLY%L_TSAIWU > 0)(IPT <= NPTT)) THEN
5212 LBUF => BUFLY%LBUF(IR,IS,IPT)
5214 VALUE(I) = VALUE(I) + LBUF%TSAIWU(I)/NPG
5215 IS_WRITTEN_VALUE(I) = 1
5222 ! -- ILAYER=IL NPT=NULL
5223.AND..AND.
ELSEIF ( ILAY <= NLAY ILAY > 0 GBUF%G_TSAIWU > 0) THEN
5224.OR..OR..OR.
IF (IGTYP == 10 IGTYP == 11 IGTYP == 16 IGTYP == 17) THEN
5225 BUFLY => ELBUF_TAB(NG)%BUFLY(ILAY)
5226 IF (BUFLY%L_TSAIWU > 0) THEN
5229 LBUF => BUFLY%LBUF(IR,IS,1)
5231 VALUE(I) = VALUE(I) + LBUF%TSAIWU(I)/NPG
5232 IS_WRITTEN_VALUE(I) = 1
5237.OR.
ELSEIF (IGTYP == 51 IGTYP == 52) THEN
5238 BUFLY => ELBUF_TAB(NG)%BUFLY(ILAY)
5240 IF (BUFLY%L_TSAIWU > 0) THEN
5244 LBUF => BUFLY%LBUF(IR,IS,IT)
5246 VALUE(I) = VALUE(I) + LBUF%TSAIWU(I)/(NPG*NPTT)
5247 IS_WRITTEN_VALUE(I) = 1
5255 ! -- ILAYER=NULL NPT=IPT
5256.AND..AND.
ELSEIF ( IPT <= MPT IPT > 0 GBUF%G_TSAIWU > 0) THEN
5257.OR.
IF (IGTYP == 1 IGTYP == 9) THEN
5258 BUFLY => ELBUF_TAB(NG)%BUFLY(1)
5259 IF (BUFLY%L_TSAIWU > 0) THEN
5262 LBUF => BUFLY%LBUF(IR,IS,IPT)
5264 VALUE(I) = VALUE(I) + LBUF%TSAIWU(I)/NPG
5265 IS_WRITTEN_VALUE(I) = 1
5273 ELSEIF (KEYWORD == 'temp
') THEN ! ELEMENT TEMPERATURE
5275 VALUE(1:NEL) = ELBUF_TAB(NG)%GBUF%TEMP(1:NEL)
5276 IS_WRITTEN_VALUE(1:NEL) = 1
5281 IF (ELBUF_TAB(NG)%BUFLY(IL)%L_TEMP > 0) THEN
5282 NPTT = NPTT + ELBUF_TAB(NG)%BUFLY(IL)%NPTT
5285 NPTG = NPTR*NPTS*NPTT
5287 IF (ELBUF_TAB(NG)%BUFLY(IL)%L_TEMP > 0) THEN
5288 IS_WRITTEN_VALUE(1:NEL) = 1
5289 DO IT=1,ELBUF_TAB(NG)%BUFLY(IL)%NPTT
5292 LBUF => ELBUF_TAB(NG)%BUFLY(IL)%LBUF(IR,IS,IT)
5293 VALUE(1:NEL) = VALUE(1:NEL) + LBUF%TEMP(1:NEL)/NPTG
5301 ELSEIF(KEYWORD == 'bulk
')THEN
5302 !/ANIM/ELEM/BULK (QVIS)
5304 IF (GBUF%G_QVIS > 0) THEN
5306 VALUE(I) = GBUF%QVIS(I)
5307 IS_WRITTEN_VALUE(I) = 1
5311 ELSEIF(KEYWORD == 'dt
' )THEN
5315 VALUE(I) = GBUF%DT(I)
5316 IS_WRITTEN_VALUE(I) = 1
5320 ELSEIF(KEYWORD == 'ams
' )THEN
5322 IF(GBUF%G_ISMS>0)THEN
5324 VALUE(I) = GBUF%ISMS(I)
5325 IS_WRITTEN_VALUE(I) = 1
5329 ELSEIF(KEYWORD == 'tdet
' )THEN
5331 IF (GBUF%G_TB > 0) THEN
5333 VALUE(I) = -GBUF%TB(I)
5334 IS_WRITTEN_VALUE(I) = 1
5338 ELSEIF(KEYWORD == 'bfrac
' )THEN
5340 IF(GBUF%G_BFRAC>0)THEN
5342 VALUE(I) = GBUF%BFRAC(I)
5343 IS_WRITTEN_VALUE(I) = 1
5347 ELSEIF (KEYWORD == 'alpha') THEN ! shear angle - law58
5349.and.
IF ( IPLY == -1 ILAY == -1) THEN ! output mid-layer
5351 IL = IABS(NLAY)/2 + 1
5355 IPT = IABS(NPT)/2 + 1
5357 BUFLY => ELBUF_TAB(NG)%BUFLY(IL)
5359 IF (BUFLY%L_ANG > 0)THEN
5361 LBUF1 => BUFLY%LBUF(1,1,IPT)
5362 LBUF2 => BUFLY%LBUF(2,1,IPT)
5363 LBUF3 => BUFLY%LBUF(1,2,IPT)
5364 LBUF4 => BUFLY%LBUF(2,2,IPT)
5366 A1 = ABS( ATAND(LBUF1%ANG(I) ))
5367 A2 = ABS( ATAND(LBUF2%ANG(I) ))
5368 A3 = ABS( ATAND(LBUF3%ANG(I) ))
5369 A4 = ABS( ATAND(LBUF4%ANG(I) ))
5370 VALUE(I) = FOURTH*(A1 + A2 + A3 + A4)
5371 IS_WRITTEN_VALUE(I) = 1
5375 VALUE(I) = ABS( ATAND(BUFLY%LBUF(1,1,IPT)%ANG(I) ))
5376 IS_WRITTEN_VALUE(I) = 1
5381 ELSEIF (IPLY > 0) THEN ! PLY=IPLY
5384.OR.
IF (IGTYP == 17 IGTYP == 51) THEN
5385 ID_PLY = IGEO(1,STACK%IGEO(2+J,ISUBSTACK))
5386 ELSEIF (IGTYP == 52) THEN
5387 ID_PLY = PLY_INFO(1,STACK%IGEO(2+J,ISUBSTACK)-NUMSTACK)
5390 IF (ID_PLY == IPLY ) THEN
5391 BUFLY => ELBUF_TAB(NG)%BUFLY(J)
5392 IF (BUFLY%L_ANG > 0)THEN
5393.OR..OR.
IF (IGTYP == 17 IGTYP == 51 IGTYP == 52 ) THEN
5395 IPT = IABS(NPTT)/2 + 1
5397 LBUF1 => BUFLY%LBUF(1,1,IPT)
5398 LBUF2 => BUFLY%LBUF(2,1,IPT)
5399 LBUF3 => BUFLY%LBUF(1,2,IPT)
5400 LBUF4 => BUFLY%LBUF(2,2,IPT)
5402 A1 = ABS( ATAND(LBUF1%ANG(I) ))
5403 A2 = ABS( ATAND(LBUF2%ANG(I) ))
5404 A3 = ABS( ATAND(LBUF3%ANG(I) ))
5405 A4 = ABS( ATAND(LBUF4%ANG(I) ))
5406 VALUE(I) = FOURTH*(A1 + A2 + A3 + A4)
5407 IS_WRITTEN_VALUE(I) = 1
5411 VALUE(I) = ABS( ATAND(BUFLY%LBUF(1,1,IPT)%ANG(I) ))
5412 IS_WRITTEN_VALUE(I) = 1
5420.AND..AND.
ELSEIF (IPLY == -1 ILAY <= NLAY ILAY > 0) THEN
5421 BUFLY => ELBUF_TAB(NG)%BUFLY(ILAY)
5422 IF (BUFLY%L_ANG > 0) THEN
5424 IPT = IABS(NPTT)/2 + 1
5426 LBUF1 => BUFLY%LBUF(1,1,IPT)
5427 LBUF2 => BUFLY%LBUF(2,1,IPT)
5428 LBUF3 => BUFLY%LBUF(1,2,IPT)
5429 LBUF4 => BUFLY%LBUF(2,2,IPT)
5431 A1 = ABS( ATAND(LBUF1%ANG(I) ))
5432 A2 = ABS( ATAND(LBUF2%ANG(I) ))
5433 A3 = ABS( ATAND(LBUF3%ANG(I) ))
5434 A4 = ABS( ATAND(LBUF4%ANG(I) ))
5435 VALUE(I) = FOURTH*(A1 + A2 + A3 + A4)
5436 IS_WRITTEN_VALUE(I) = 1
5440 VALUE(I) = ABS( ATAND(BUFLY%LBUF(1,1,IPT)%ANG(I) ))
5441 IS_WRITTEN_VALUE(I) = 1
5448 ELSEIF (KEYWORD == 'fldf/memb
') THEN
5451 BUFLY => ELBUF_TAB(NG)%BUFLY(IL)
5453 NFAIL = ELBUF_TAB(NG)%BUFLY(IL)%NFAIL
5454 NPTT = ELBUF_TAB(NG)%BUFLY(IL)%NPTT
5458 FBUF => BUFLY%FAIL(IR,IS,IPT)
5460 IF (FBUF%FLOC(IFAIL)%ILAWF == 7) THEN ! check /FLD model
5462 VALUE(I) = MAX(VALUE(I),FBUF%FLOC(IFAIL)%DAM(I))
5463 IS_WRITTEN_VALUE(I) = 1
5470 ELSEIF (KEYWORD == 'fldf
') THEN
5473.AND..AND..AND.
IF (IPLY == -1 ILAY <= NLAY ILAY > 0 IPT == -1 ) THEN
5474.OR..OR..OR.
IF (IGTYP == 10 IGTYP == 11 IGTYP == 16 IGTYP == 17) THEN
5475 NFAIL = ELBUF_TAB(NG)%BUFLY(ILAY)%NFAIL
5476 NPTT = ELBUF_TAB(NG)%BUFLY(ILAY)%NPTT
5481 FBUF => ELBUF_TAB(NG)%BUFLY(ILAY)%FAIL(IR,IS,IPT)
5483 IF (FBUF%FLOC(IFAIL)%ILAWF == 7) THEN ! check /FLD model
5485 VALUE(I) = MAX(VALUE(I),FBUF%FLOC(IFAIL)%DAM(I))
5486 IS_WRITTEN_VALUE(I) = 1
5495.AND.
ELSEIF ( IPT <= MPT IPT > 0) THEN
5496.OR.
IF (IGTYP == 1 IGTYP == 9) THEN
5497 NFAIL = ELBUF_TAB(NG)%BUFLY(1)%NFAIL
5498 NPTT = ELBUF_TAB(NG)%BUFLY(1)%NPTT
5501 FBUF => ELBUF_TAB(NG)%BUFLY(1)%FAIL(IR,IS,IPT)
5503 IF (FBUF%FLOC(IFAIL)%ILAWF == 7) THEN ! check /FLD model
5505 VALUE(I) = MAX(VALUE(I),FBUF%FLOC(IFAIL)%DAM(I))
5506 IS_WRITTEN_VALUE(I) = 1
5516 ELSEIF (KEYWORD == 'fldz/memb
') THEN
5519 BUFLY => ELBUF_TAB(NG)%BUFLY(IL)
5521 NFAIL = ELBUF_TAB(NG)%BUFLY(IL)%NFAIL
5522 NPTT = ELBUF_TAB(NG)%BUFLY(IL)%NPTT
5526 FBUF => BUFLY%FAIL(IR,IS,IPT)
5528 IF (FBUF%FLOC(IFAIL)%ILAWF == 7) THEN ! check /FLD model
5530 RINDX = FBUF%FLOC(IFAIL)%INDX(I)
5531 VALUE(I) = MAX(VALUE(I),RINDX)
5532 IS_WRITTEN_VALUE(I) = 1
5539 ELSEIF (KEYWORD == 'fldz
') THEN
5542.AND..AND..AND.
IF (IPLY == -1 ILAY <= NLAY ILAY > 0 IPT == -1 ) THEN
5543.OR..OR..OR.
IF (IGTYP == 10 IGTYP == 11 IGTYP == 16 IGTYP == 17) THEN
5544 NFAIL = ELBUF_TAB(NG)%BUFLY(ILAY)%NFAIL
5545 NPTT = ELBUF_TAB(NG)%BUFLY(ILAY)%NPTT
5550 FBUF => ELBUF_TAB(NG)%BUFLY(ILAY)%FAIL(IR,IS,IPT)
5552 IF (FBUF%FLOC(IFAIL)%ILAWF == 7) THEN ! check /FLD model
5554 RINDX = FBUF%FLOC(IFAIL)%INDX(I)
5555 VALUE(I) = MAX(VALUE(I),RINDX)
5556 IS_WRITTEN_VALUE(I) = 1
5565.AND.
ELSEIF ( IPT <= MPT IPT > 0) THEN
5566.OR.
IF (IGTYP == 1 IGTYP == 9) THEN
5567 NFAIL = ELBUF_TAB(NG)%BUFLY(1)%NFAIL
5568 NPTT = ELBUF_TAB(NG)%BUFLY(1)%NPTT
5571 FBUF => ELBUF_TAB(NG)%BUFLY(1)%FAIL(IR,IS,IPT)
5573 IF (FBUF%FLOC(IFAIL)%ILAWF == 7) THEN ! check /FLD model
5575 RINDX = FBUF%FLOC(IFAIL)%INDX(I)
5576 VALUE(I) = MAX(VALUE(I),RINDX)
5577 IS_WRITTEN_VALUE(I) = 1
5587 ELSEIF (KEYWORD == 'hc_dsse_f/memb
') THEN
5589 ! Multilayer properties TYPE 10/11/16/17/51/52
5591 IPT = IABS(NLAY)/2 + 1
5592 BUFLY => ELBUF_TAB(NG)%BUFLY(IPT)
5599 FBUF => BUFLY%FAIL(IR,IS,IT)
5601 IF (FBUF%FLOC(IFAIL)%ILAWF == 32) THEN
5602 VALUE(I) = MAX(VALUE(I),FBUF%FLOC(IFAIL)%DAM(I))
5603 IS_WRITTEN_VALUE(I) = 1
5610 ! Single layer properties TYPE 1/9
5611 ELSEIF (MPT > 0) THEN
5612 IPT = IABS(NPT)/2 + 1
5613 BUFLY => ELBUF_TAB(NG)%BUFLY(1)
5618 FBUF => BUFLY%FAIL(IR,IS,IPT)
5620 IF (FBUF%FLOC(IFAIL)%ILAWF == 32) THEN
5621 VALUE(I) = MAX(VALUE(I),FBUF%FLOC(IFAIL)%DAM(I))
5622 IS_WRITTEN_VALUE(I) = 1
5631 ELSEIF (KEYWORD == 'hc_dsse_f
') THEN
5633 ! If no specific input PLY=null LAYER=null NPT=null
5634.AND..AND.
IF (ILAY == -1 IPT == -1 IPLY == -1) THEN
5635 ! Multilayer properties TYPE 10/11/16/17/51/52
5636 ! -> Max value among all layers and integration points
5640 BUFLY => ELBUF_TAB(NG)%BUFLY(N)
5646 FBUF => BUFLY%FAIL(IR,IS,IT)
5648 IF (FBUF%FLOC(IFAIL)%ILAWF == 32) THEN
5649 VALUE(I) = MAX(VALUE(I),FBUF%FLOC(IFAIL)%DAM(I))
5650 IS_WRITTEN_VALUE(I) = 1
5658 ! Single layer properties TYPE 1/9
5659 ! -> Max value among all layers and integration points
5660 ELSEIF (MPT > 0) THEN
5661 BUFLY => ELBUF_TAB(NG)%BUFLY(1)
5668 FBUF => BUFLY%FAIL(IR,IS,IT)
5670 IF (FBUF%FLOC(IFAIL)%ILAWF == 32) THEN
5671 VALUE(I) = MAX(VALUE(I),FBUF%FLOC(IFAIL)%DAM(I))
5672 IS_WRITTEN_VALUE(I) = 1
5681 ! -> Properties type 17/51/52 only
5682.AND..AND.
ELSEIF (IPLY > 0 IPT <= MPT IPT > 0) THEN
5684 BUFLY => ELBUF_TAB(NG)%BUFLY(J)
5688.OR.
IF (IGTYP == 17 IGTYP == 51) THEN
5689 ID_PLY = IGEO(1,STACK%IGEO(2+J,ISUBSTACK))
5690 ELSEIF (IGTYP == 52) THEN
5691 ID_PLY = PLY_INFO(1,STACK%IGEO(2+J,ISUBSTACK)-NUMSTACK)
5693 IF (ID_PLY == IPLY) THEN
5694 IF (IPT <= NPTT) THEN
5698 FBUF => BUFLY%FAIL(IR,IS,IPT)
5700 IF (FBUF%FLOC(IFAIL)%ILAWF == 32) THEN
5701 VALUE(I) = MAX(VALUE(I),FBUF%FLOC(IFAIL)%DAM(I))
5702 IS_WRITTEN_VALUE(I) = 1
5712 ! -> Properties type 17/51/52 only
5713.AND.
ELSEIF (IPLY > 0 IPT == -1) THEN
5715 BUFLY => ELBUF_TAB(NG)%BUFLY(J)
5719.OR.
IF (IGTYP == 17 IGTYP == 51) THEN
5720 ID_PLY = IGEO(1,STACK%IGEO(2+J,ISUBSTACK))
5721 ELSEIF (IGTYP == 52) THEN
5722 ID_PLY = PLY_INFO(1,STACK%IGEO(2+J,ISUBSTACK)-NUMSTACK)
5724 IF (ID_PLY == IPLY) THEN
5729 FBUF => BUFLY%FAIL(IR,IS,IT)
5731 IF (FBUF%FLOC(IFAIL)%ILAWF == 32) THEN
5732 VALUE(I) = MAX(VALUE(I),FBUF%FLOC(IFAIL)%DAM(I))
5733 IS_WRITTEN_VALUE(I) = 1
5743 ! -> Properties type 10/11/16 only
5744.AND.
ELSEIF (ILAY <= NLAY ILAY > 0) THEN
5746.OR..OR.
IF (IGTYP == 10 IGTYP == 11 IGTYP == 16) THEN
5747 BUFLY => ELBUF_TAB(NG)%BUFLY(ILAY)
5752 FBUF => BUFLY%FAIL(IR,IS,1)
5754 IF (FBUF%FLOC(IFAIL)%ILAWF == 32) THEN
5755 VALUE(I) = MAX(VALUE(I),FBUF%FLOC(IFAIL)%DAM(I))
5756 IS_WRITTEN_VALUE(I) = 1
5764 ! -> Properties type 1/9 only
5765.AND.
ELSEIF (IPT <= NPT IPT > 0) THEN
5766.OR.
IF (IGTYP == 1 IGTYP == 9) THEN
5767 BUFLY => ELBUF_TAB(NG)%BUFLY(1)
5772 FBUF => BUFLY%FAIL(IR,IS,IPT)
5774 IF (FBUF%FLOC(IFAIL)%ILAWF == 32) THEN
5775 VALUE(I) = MAX(VALUE(I),FBUF%FLOC(IFAIL)%DAM(I))
5776 IS_WRITTEN_VALUE(I) = 1
5785 ELSEIF (KEYWORD == 'hc_dsse_z/memb
') THEN
5787 ! Multilayer properties TYPE 10/11/16/17/51/52
5789 IPT = IABS(NLAY)/2 + 1
5790 BUFLY => ELBUF_TAB(NG)%BUFLY(IPT)
5797 FBUF => BUFLY%FAIL(IR,IS,IT)
5799 IF (FBUF%FLOC(IFAIL)%ILAWF == 32) THEN
5800 RINDX = FBUF%FLOC(IFAIL)%INDX(I)
5801 VALUE(I) = MAX(VALUE(I),RINDX)
5802 IS_WRITTEN_VALUE(I) = 1
5809 ! Single layer properties TYPE 1/9
5810 ELSEIF (MPT > 0) THEN
5811 IPT = IABS(NPT)/2 + 1
5812 BUFLY => ELBUF_TAB(NG)%BUFLY(1)
5817 FBUF => BUFLY%FAIL(IR,IS,IPT)
5819 IF (FBUF%FLOC(IFAIL)%ILAWF == 32) THEN
5820 RINDX = FBUF%FLOC(IFAIL)%INDX(I)
5821 VALUE(I) = MAX(VALUE(I),RINDX)
5822 IS_WRITTEN_VALUE(I) = 1
5831 ELSEIF (KEYWORD == 'hc_dsse_z
') THEN
5833 ! If no specific input PLY=null LAYER=null NPT=null
5834.AND..AND.
IF (ILAY == -1 IPT == -1 IPLY == -1) THEN
5835 ! Multilayer properties TYPE 10/11/16/17/51/52
5836 ! -> Max value among all layers and integration points
5840 BUFLY => ELBUF_TAB(NG)%BUFLY(N)
5846 FBUF => BUFLY%FAIL(IR,IS,IT)
5848 IF (FBUF%FLOC(IFAIL)%ILAWF == 32) THEN
5849 RINDX = FBUF%FLOC(IFAIL)%INDX(I)
5850 VALUE(I) = MAX(VALUE(I),RINDX)
5851 IS_WRITTEN_VALUE(I) = 1
5859 ! Single layer properties TYPE 1/9
5860 ! -> Max value among all layers and integration points
5861 ELSEIF (MPT > 0) THEN
5862 BUFLY => ELBUF_TAB(NG)%BUFLY(1)
5869 FBUF => BUFLY%FAIL(IR,IS,IT)
5871 IF (FBUF%FLOC(IFAIL)%ILAWF == 32) THEN
5872 RINDX = FBUF%FLOC(IFAIL)%INDX(I)
5873 VALUE(I) = MAX(VALUE(I),RINDX)
5874 IS_WRITTEN_VALUE(I) = 1
5883 ! -> Properties type 17/51/52 only
5884.AND..AND.
ELSEIF (IPLY > 0 IPT <= MPT IPT > 0) THEN
5886 BUFLY => ELBUF_TAB(NG)%BUFLY(J)
5890.OR.
IF (IGTYP == 17 IGTYP == 51) THEN
5891 ID_PLY = IGEO(1,STACK%IGEO(2+J,ISUBSTACK))
5892 ELSEIF (IGTYP == 52) THEN
5893 ID_PLY = PLY_INFO(1,STACK%IGEO(2+J,ISUBSTACK)-NUMSTACK)
5895 IF (ID_PLY == IPLY) THEN
5896 IF (IPT <= NPTT) THEN
5900 FBUF => BUFLY%FAIL(IR,IS,IPT)
5902 IF (FBUF%FLOC(IFAIL)%ILAWF == 32) THEN
5903 RINDX = FBUF%FLOC(IFAIL)%INDX(I)
5904 VALUE(I) = MAX(VALUE(I),RINDX)
5905 IS_WRITTEN_VALUE(I) = 1
5915 ! -> Properties type 17/51/52 only
5916.AND.
ELSEIF (IPLY > 0 IPT == -1) THEN
5918 BUFLY => ELBUF_TAB(NG)%BUFLY(J)
5922.OR.
IF (IGTYP == 17 IGTYP == 51) THEN
5923 ID_PLY = IGEO(1,STACK%IGEO(2+J,ISUBSTACK))
5924 ELSEIF (IGTYP == 52) THEN
5925 ID_PLY = PLY_INFO(1,STACK%IGEO(2+J,ISUBSTACK)-NUMSTACK)
5927 IF (ID_PLY == IPLY) THEN
5932 FBUF => BUFLY%FAIL(IR,IS,IT)
5934 IF (FBUF%FLOC(IFAIL)%ILAWF == 32) THEN
5935 RINDX = FBUF%FLOC(IFAIL)%INDX(I)
5936 VALUE(I) = MAX(VALUE(I),RINDX)
5937 IS_WRITTEN_VALUE(I) = 1
5947 ! -> Properties type 10/11/16 only
5948.AND.
ELSEIF (ILAY <= NLAY ILAY > 0) THEN
5950.OR..OR.
IF (IGTYP == 10 IGTYP == 11 IGTYP == 16) THEN
5951 BUFLY => ELBUF_TAB(NG)%BUFLY(ILAY)
5956 FBUF => BUFLY%FAIL(IR,IS,1)
5958 IF (FBUF%FLOC(IFAIL)%ILAWF == 32) THEN
5959 RINDX = FBUF%FLOC(IFAIL)%INDX(I)
5960 VALUE(I) = MAX(VALUE(I),RINDX)
5961 IS_WRITTEN_VALUE(I) = 1
5969 ! -> Properties type 1/9 only
5970.AND.
ELSEIF (IPT <= NPT IPT > 0) THEN
5971.OR.
IF (IGTYP == 1 IGTYP == 9) THEN
5972 BUFLY => ELBUF_TAB(NG)%BUFLY(1)
5977 FBUF => BUFLY%FAIL(IR,IS,IPT)
5979 IF (FBUF%FLOC(IFAIL)%ILAWF == 32) THEN
5980 RINDX = FBUF%FLOC(IFAIL)%INDX(I)
5981 VALUE(I) = MAX(VALUE(I),RINDX)
5982 IS_WRITTEN_VALUE(I) = 1
6024 ELSEIF(KEYWORD == 'off
')THEN
6027 IF (GBUF%G_OFF > 0) THEN
6028 IF(GBUF%OFF(I) > ONE) THEN
6029 VALUE(I) = GBUF%OFF(I) - ONE
6030.AND.
ELSEIF((GBUF%OFF(I) >= ZERO GBUF%OFF(I) <= ONE)) THEN
6031 VALUE(I) = GBUF%OFF(I)
6036 IS_WRITTEN_VALUE(I) = 1
6039 ELSEIF(KEYWORD == 'mach
')THEN
6041!to be moved in h3d_tria_scalar when implemented.
6043 IF (MLW == 151) THEN
6045 VEL(1) = MULTI_FVM%VEL(1, I + NFT)
6046 VEL(2) = MULTI_FVM%VEL(2, I + NFT)
6047 VEL(3) = MULTI_FVM%VEL(3, I + NFT)
6048 VEL(0) = SQRT(VEL(1)*VEL(1)+VEL(2)*VEL(2)+VEL(3)*VEL(3))
6049 VALUE(I) = VEL(0)/MULTI_FVM%SOUND_SPEED(I + NFT)
6050 IS_WRITTEN_VALUE(I) = 1
6052 ELSEIF(ALEFVM_Param%ISOLVER>1)THEN
6053 L = ELBUF_TAB(NG)%BUFLY(1)%L_SSP
6054 IF(ELBUF_TAB(NG)%BUFLY(1)%L_SSP /= 0)THEN
6055 LBUF => ELBUF_TAB(NG)%BUFLY(1)%LBUF(1,1,1)
6057 VEL(1) = GBUF%MOM(JJ(1) + I) / GBUF%RHO(I)
6058 VEL(2) = GBUF%MOM(JJ(2) + I) / GBUF%RHO(I)
6059 VEL(3) = GBUF%MOM(JJ(3) + I) / GBUF%RHO(I)
6060 VEL(0) = SQRT(VEL(1)*VEL(1)+VEL(2)*VEL(2)+VEL(3)*VEL(3))
6061 VALUE(I) = VEL(0)/LBUF%SSP(I)
6062 IS_WRITTEN_VALUE(I) = 1
6066 L = ELBUF_TAB(NG)%BUFLY(1)%L_SSP
6067 IF(ELBUF_TAB(NG)%BUFLY(1)%L_SSP /= 0)THEN
6068 LBUF => ELBUF_TAB(NG)%BUFLY(1)%LBUF(1,1,1)
6072 TMP(1,1:3)=V(1,IXTG(2:4,I+NFT))-W(1,IXTG(2:4,I+NFT))
6073 TMP(2,1:3)=V(2,IXTG(2:4,I+NFT))-W(2,IXTG(2:4,I+NFT))
6074 TMP(3,1:3)=V(3,IXTG(2:4,I+NFT))-W(3,IXTG(2:4,I+NFT))
6075 VEL(1) = SUM(TMP(1,1:3))*THIRD
6076 VEL(2) = SUM(TMP(2,1:3))*THIRD
6077 VEL(3) = SUM(TMP(3,1:3))*THIRD
6078 VALUE(I) = SQRT(VEL(1)*VEL(1)+VEL(2)*VEL(2)+VEL(3)*VEL(3))/LBUF%SSP(I)
6079 IS_WRITTEN_VALUE(I) = 1
6084 TMP(1,1:3)=V(1,IXTG(2:4,I+NFT))
6085 TMP(2,1:3)=V(2,IXTG(2:4,I+NFT))
6086 TMP(3,1:3)=V(3,IXTG(2:4,I+NFT))
6087 VEL(1) = SUM(TMP(1,1:3))*THIRD
6088 VEL(2) = SUM(TMP(2,1:3))*THIRD
6089 VEL(3) = SUM(TMP(3,1:3))*THIRD
6090 VALUE(I) = SQRT(VEL(1)*VEL(1)+VEL(2)*VEL(2)+VEL(3)*VEL(3))/LBUF%SSP(I)
6091 IS_WRITTEN_VALUE(I) = 1
6098 ELSEIF(KEYWORD == 'color
') THEN
6100!to be moved in h3d_tria_scalar when implemented.
6101 GBUF => ELBUF_TAB(NG)%GBUF
6102 IF (MLW == 151) THEN
6103 NFRAC=MULTI_FVM%NBMAT
6105 LBUF => ELBUF_TAB(NG)%BUFLY(IMAT)%LBUF(1,1,1)
6107 VFRAC(I,IMAT) = LBUF%VOL(I) / GBUF%VOL(I)
6110 ELSEIF(MLW == 20)THEN
6113 VFRAC(I,1) = ELBUF_TAB(NG)%BUFLY(1)%LBUF(1,1,1)%VOL(I) / GBUF%VOL(I)
6114 VFRAC(I,2) = ELBUF_TAB(NG)%BUFLY(2)%LBUF(1,1,1)%VOL(I) / GBUF%VOL(I)
6116 ELSEIF(MLW == 37)THEN
6117 MBUF => ELBUF_TAB(NG)%BUFLY(1)%MAT(1,1,1)
6120 VFRAC(I,1) = MBUF%VAR(I+3*NEL)
6121 VFRAC(I,2) = MBUF%VAR(I+4*NEL)
6123 ELSEIF(MLW == 51)THEN
6125 IMAT = IXTG(1,NFT+1)
6126 IADBUF = IPM(7,IMAT)
6127 NUPARAM= IPM(9,IMAT)
6128 UPARAM => BUFMAT(IADBUF:IADBUF+NUPARAM)
6129 !bijective order !indexes
6130 ISUBMAT = UPARAM(276+1); IU(1)=M51_N0PHAS+(ISUBMAT-1)*M51_NVPHAS
6131 ISUBMAT = UPARAM(276+2); IU(2)=M51_N0PHAS+(ISUBMAT-1)*M51_NVPHAS
6132 ISUBMAT = UPARAM(276+3); IU(3)=M51_N0PHAS+(ISUBMAT-1)*M51_NVPHAS
6133 ISUBMAT = UPARAM(276+4); IU(4)=M51_N0PHAS+(ISUBMAT-1)*M51_NVPHAS
6134 MBUF => ELBUF_TAB(NG)%BUFLY(1)%MAT(1,1,1)
6137 VFRAC(I,1) = MBUF%VAR(I+IU(1)*NEL)
6138 VFRAC(I,2) = MBUF%VAR(I+IU(2)*NEL)
6139 VFRAC(I,3) = MBUF%VAR(I+IU(3)*NEL)
6140 VFRAC(I,4) = MBUF%VAR(I+IU(4)*NEL)
6144 !VFRAC(1:NEL,1:21)=ZERO
6150 VALUE(I) = VALUE(I) + VFRAC(I,IMAT)*IMAT
6152 IS_WRITTEN_VALUE(I) = 1
6156 ELSEIF(KEYWORD == 'vortx
') THEN
6158.OR.
IF (MLW == 6 MLW == 17) THEN
6160 VALUE(I) = ELBUF_TAB(NG)%BUFLY(1)%LBUF(1,1,1)%VK(I)
6161 IS_WRITTEN_VALUE(I) = 1
6163.OR.
ELSEIF(MLW == 46 MLW == 47)THEN
6165 VALUE(I) = UVAR(NEL+I)
6166 IS_WRITTEN_VALUE(I) = 1
6168 ELSEIF(MLW == 151)THEN
6173 IAD2 = ALE_CONNECT%ee_connect%iad_connect(II)
6175 DO KFACE = 1, NB_FACE
6176 IV = ALE_CONNECT%ee_connect%connected(IAD2 + KFACE - 1)
6177 NX = ZERO !MULTI_FVM%FACE_DATA%NORMAL(1, KFACE, II)
6178 NY = MULTI_FVM%FACE_DATA%NORMAL(2, KFACE, II)
6179 NZ = MULTI_FVM%FACE_DATA%NORMAL(3, KFACE, II)
6180 SURF = MULTI_FVM%FACE_DATA%SURF(KFACE, II)
6181 VX = ZERO !MULTI_FVM%VEL(1, II)
6182 VY = MULTI_FVM%VEL(2, II)
6183 VZ = MULTI_FVM%VEL(3, II)
6185 VX = ZERO ! HALF(VX + MULTI_FVM%VEL(1, IV))
6186 VY = HALF*(VY + MULTI_FVM%VEL(2, IV))
6187 VZ = HALF*(VZ + MULTI_FVM%VEL(3, IV))
6189 CUMUL(1)=CUMUL(1)+SURF*(NY*VZ-NZ*VY)
6190 !CUMUL(2)=CUMUL(2)+NZ*VX-NX*VZ
6191 !CUMUL(3)=CUMUL(3)+NX*VY-NY*VX
6193 CUMUL(1)=CUMUL(1)/GBUF%VOL(I)
6195 IS_WRITTEN_VALUE(I) = 1
6199 ELSEIF(KEYWORD == 'group
')THEN
6203 IS_WRITTEN_VALUE(I) = 1
6206 ELSEIF(KEYWORD == 'internal.id
')THEN
6210 IS_WRITTEN_VALUE(I) = 1
6213 ELSEIF(KEYWORD == 'local.id
')THEN
6217 IS_WRITTEN_VALUE(I) = 1
6221 ELSEIF(KEYWORD == 'vonm/tmax
') THEN
6224 VALUE(I) = GBUF%TM_YIELD(I)
6225 IS_WRITTEN_VALUE(I) = 1
6228 ELSEIF(KEYWORD == 'sigeq/tmax
') THEN
6231 VALUE(I) = GBUF%TM_SEQ(I)
6232 IS_WRITTEN_VALUE(I) = 1
6235 ELSEIF(KEYWORD == 'ener/tmax
') THEN
6238 VALUE(I) = GBUF%TM_EINT(I)
6239 IS_WRITTEN_VALUE(I) = 1
6242 ELSEIF(KEYWORD == 'dama/tmax
') THEN
6245 VALUE(I) = GBUF%TM_DMG(I)
6246 IS_WRITTEN_VALUE(I) = 1
6249 ELSEIF(KEYWORD == 'div(u)
') THEN
6252 IALEL=IPARG(7,NG)+IPARG(11,NG)
6255 1 EVAR ,IXTG ,X ,V ,IPARG ,ELBUF_TAB ,NG ,NIXTG ,7,
6256 2 NUMELTG,NEL ,NUMNOD,NPARG,NGROUP,N2D ,NFT )
6259 IS_WRITTEN_VALUE(I) = 1
6262!--------------------------------------------------
6263 elseif(keyword == 'vstrain.and.
' N2D > 0) then
6264!--------------------------------------------------
6268 !multimaterial 151 (collocated scheme)
6270 mid = MATPARAM(mt)%multimat%mid(ilay)
6271 rho0i (ilay) = pm(89,mid)
6272 Vi (ilay) = multi_fvm%phase_alpha(ilay,i+nft) * gbuf%vol(i)
6273 V0i (ilay) = multi_fvm%phase_rho(ilay,i+nft) * Vi(ilay) / rho0i(ilay) !rho0.V0 = rho.V
6278 RHO0g = RHO0g + rho0i(ilay)*V0i(ilay)
6281 value(i) = multi_fvm%rho(i+nft) / RHO0g - ONE
6282 is_written_value(i) = 1
6284 elseif(mlw == 51)then
6285 !multimaterial 51 (staggered scheme)
6286 imat = ixtg(1,nft+1)
6287 iadbuf = ipm(7,imat)
6288 nuparam= ipm(9,imat)
6289 uparam => bufmat(iadbuf:iadbuf+nuparam)
6290 mbuf => elbuf_tab(ng)%bufly(1)%mat(1,1,1)
6292 !bijective order !indexes
6293 isubmat = nint(uparam(276+1)); iu(1)=m51_n0phas+(isubmat-1)*m51_nvphas + ipos-1
6294 isubmat = nint(uparam(276+2)); iu(2)=m51_n0phas+(isubmat-1)*m51_nvphas + ipos-1
6295 isubmat = nint(uparam(276+3)); iu(3)=m51_n0phas+(isubmat-1)*m51_nvphas + ipos-1
6296 isubmat = nint(uparam(276+4)); iu(4)=m51_n0phas+(isubmat-1)*m51_nvphas + ipos-1
6297 vfrac(i,1) = mbuf%var(i+iu(1)*nel)
6298 vfrac(i,2) = mbuf%var(i+iu(2)*nel)
6299 vfrac(i,3) = mbuf%var(i+iu(3)*nel)
6300 vfrac(i,4) = mbuf%var(i+iu(4)*nel)
6302 !bijective order !indexes
6303 isubmat = nint(uparam(276+1)); iu(1)=m51_n0phas+(isubmat-1)*m51_nvphas + ipos-1
6304 isubmat = nint(uparam(276+2)); iu(2)=m51_n0phas+(isubmat-1)*m51_nvphas + ipos-1
6305 isubmat = nint(uparam(276+3)); iu(3)=m51_n0phas+(isubmat-1)*m51_nvphas + ipos-1
6306 isubmat = nint(uparam(276+4)); iu(4)=m51_n0phas+(isubmat-1)*m51_nvphas + ipos-1
6307 rhoi(1) = mbuf%var(i+iu(1)*nel)
6308 rhoi(2) = mbuf%var(i+iu(2)*nel)
6309 rhoi(3) = mbuf%var(i+iu(3)*nel)
6310 rhoi(4) = mbuf%var(i+iu(4)*nel)
6312 mid = MATPARAM(mt)%multimat%mid(ilay)
6313 rho0i (ilay) = pm(89,mid)
6314 Vi (ilay) = vfrac(i,ilay) * gbuf%vol(i)
6316 V0i (ilay) = rhoi(ilay) * Vi(ilay) / rho0i(ilay) !rho0.V0 = rho.V
6321 RHO0g = RHO0g + rho0i(ilay)*V0i(ilay)
6324 value(i) = gbuf%rho(i) / RHO0g - ONE
6325 is_written_value(i) = 1
6327 elseif(mlw == 37)then
6328 !multimaterial 37 (staggered scheme)
6329 imat = ixtg(1,nft+1)
6330 iadbuf = ipm(7,imat)
6331 nuparam= ipm(9,imat)
6332 uparam => bufmat(iadbuf:iadbuf+nuparam)
6333 mbuf => elbuf_tab(ng)%bufly(1)%mat(1,1,1)
6334 rho0i(1) = uparam(11)
6335 rho0i(2) = uparam(12)
6336 Vi(1) = mbuf%var(i+3*nel) * gbuf%vol(i) !UVAR(I,4) = VFRAC1
6337 Vi(2) = mbuf%var(i+4*nel) * gbuf%vol(i) !UVAR(I,5) = VFRAC2
6338 rhoi(1) = mbuf%var(i+2*nel) !UVAR(I,3) = RHO1
6339 rhoi(2) = mbuf%var(i+1*nel) !UVAR(I,2) = RHO2
6340 V0i(1) = rhoi(1) * Vi(1) / rho0i(1) !rho0.V0 = rho.V
6341 V0i(2) = rhoi(2) * Vi(2) / rho0i(2) !rho0.V0 = rho.V
6345 RHO0g = RHO0g + rho0i(ilay)*V0i(ilay)
6348 value(i) = gbuf%rho(i) / RHO0g - ONE
6349 is_written_value(i) = 1
6351 elseif(mlw == 20)then
6352 !multimaterial 20 (staggered scheme)
6353 lbuf1 => elbuf_tab(ng)%bufly(1)%lbuf(1,1,1)
6354 lbuf2 => elbuf_tab(ng)%bufly(2)%lbuf(1,1,1)
6355 mid = MATPARAM(mt)%multimat%mid(1)
6356 rho0i(1) = pm(89,mid)
6357 mid = MATPARAM(mt)%multimat%mid(2)
6358 rho0i(2) = pm(89,mid)
6359 Vi(1) = lbuf1%vol(i)
6360 Vi(2) = lbuf2%vol(i)
6361 rhoi(1) = lbuf1%rho(i)
6362 rhoi(2) = lbuf2%rho(i)
6363 V0i(1) = rhoi(1) * Vi(1) / rho0i(1) !rho0.V0 = rho.V
6364 V0i(2) = rhoi(2) * Vi(2) / rho0i(2) !rho0.V0 = rho.V
6368 RHO0g = RHO0g + rho0i(ilay)*V0i(ilay)
6371 value(i) = gbuf%rho(i) / RHO0g - ONE
6372 is_written_value(i) = 1
6375 !general case (monomaterial law)
6376 if(pm(89,mt) > zero)then
6377 value(i) = gbuf%rho(i) / pm(89,mt) - one
6378 is_written_value(i) = 1
6383!--------------------------------------------------
6384 elseif(keyword(1:8) == 'vstrain/.and.
' N2D > 0) then
6385!--------------------------------------------------
6387 read(keyword(9:), '(i2)
', IOSTAT=ierr) ilay
6388.and.
if(ierr == 0 ilay > 0) then
6389.and.
if(mlw == 151 ilay <= min(10,multi_fvm%nbmat))detected = .true.
6390.and.
if(mlw == 51 ilay <= 4 )detected = .true.
6391.and.
if(mlw == 37 ilay <= 2 )detected = .true.
6392.and.
if(mlw == 20 ilay <= 2 )detected = .true.
6399 !multimaterial 151 (collocated scheme)
6400 mid = MATPARAM(mt)%multimat%mid(ilay)
6401 rho0i(ilay) = pm(89,mid)
6402 Vi(ilay) = multi_fvm%phase_alpha(ilay,i+nft) * gbuf%vol(i)
6403 V0i(ilay) = multi_fvm%phase_rho(ilay,i+nft) * Vi(ilay) / rho0i(ilay) !rho0.V0 = rho.V
6404 value(i) = multi_fvm%phase_rho(ilay,i+nft) / rho0i(ilay) - ONE
6405 is_written_value(i) = 1
6407 elseif(mlw == 51)then
6408 !multimaterial 51 (staggered scheme)
6409 imat = ixtg(1,nft+1)
6410 iadbuf = ipm(7,imat)
6411 nuparam= ipm(9,imat)
6412 uparam => bufmat(iadbuf:iadbuf+nuparam)
6413 mbuf => elbuf_tab(ng)%bufly(1)%mat(1,1,1)
6414 mid = MATPARAM(mt)%multimat%mid(ilay)
6415 rho0i(ilay) = pm(89,mid)
6417 !bijective order !indexes
6418 isubmat = nint(uparam(276+ilay)); iu(1)=m51_n0phas+(isubmat-1)*m51_nvphas + ipos-1
6419 vfrac(i,ilay) = mbuf%var(i+iu(ilay)*nel)
6420 Vi(ilay) = vfrac(i,ilay) * gbuf%vol(i)
6422 !bijective order !indexes
6423 isubmat = nint(uparam(276+ilay)); iu(ilay)=m51_n0phas+(isubmat-1)*m51_nvphas + ipos-1
6424 rhoi(ilay) = mbuf%var(i+iu(ilay)*nel)
6425 V0i (ilay) = rhoi(ilay) * Vi(ilay) / rho0i(ilay) !rho0.V0 = rho.V
6426 value(i) = rhoi(ilay) / rho0i(ilay) - ONE
6427 is_written_value(i) = 1
6429 elseif(mlw == 37)then
6430 !multimaterial 37 (staggered scheme)
6431 imat = ixtg(1,nft+1)
6432 iadbuf = ipm(7,imat)
6433 nuparam= ipm(9,imat)
6434 uparam => bufmat(iadbuf:iadbuf+nuparam)
6435 mbuf => elbuf_tab(ng)%bufly(1)%mat(1,1,1)
6436 rho0i(ilay) = uparam(10+ilay)
6437 Vi(ilay) = mbuf%var(i+(ilay+2)*nel) * gbuf%vol(i)
6438 rhoi(ilay) = mbuf%var(i+(3-ilay)*nel) !UVAR(I,3) = RHO1
6439 V0i(ilay) = rhoi(ilay) * Vi(ilay) / rho0i(ilay)
6440 value(i) = rhoi(ilay) / rho0i(ilay) - ONE
6441 is_written_value(i) = 1
6443 elseif(mlw == 20)then
6444 !multimaterial 20 (staggered scheme)
6445 lbuf => elbuf_tab(ng)%bufly(ilay)%lbuf(1,1,1)
6446 mid = MATPARAM(mt)%multimat%mid(ilay)
6447 rho0i(ilay) = pm(89,mid)
6448 Vi(ilay) = lbuf%vol(i)
6449 rhoi(ilay) = lbuf%rho(i)
6450 V0i(ilay) = rhoi(ilay) * Vi(ilay) / rho0i(ilay) !rho0.V0 = rho.V
6451 value(i) = rhoi(ilay) / rho0i(ilay) - ONE
6452 is_written_value(i) = 1
6455 !general case (monomaterial law)
6456 is_written_value(i) = 0
6461!--------------------------------------------------
6465 IF(CALLED_FROM_PYTHON) THEN
6466 SHELL_SCALAR(1:MVSIZ) = VALUE(1:MVSIZ)
6468 !< If LIGHT output activated, write only non-zero values
6469.AND.
IF ((H3D_LIGHT > 0)(IS_LIGHTER)) THEN
6471 IF (VALUE(I) /= ZERO) THEN
6472 IS_WRITTEN_VALUE(I) = 1
6474 IS_WRITTEN_VALUE(I) = 0
6478 CALL H3D_WRITE_SCALAR_STACK(IOK_PART,IS_WRITTEN_SHELL,SHELL_STACK,NEL,OFFSET,NFT,VALUE,
6479 * IS_WRITTEN_VALUE,SHELL_STACKSIZE)