42 . IXC , IXTG , MASS ,PM ,EL2FA,
43 . NBF , IADP , NBF_L,EHOUR,ANIM ,
44 . NBPART,IADG , IPM ,IGEO ,THKE ,
45 . ERR_THK_SH4,ERR_THK_SH3,MAT_PARAM,
46 . NBF_PXFEMG ,X, STACK)
56 use element_mod ,
only : nixc,nixtg
60#include "implicit_f.inc"
64#include "vect01_c.inc"
74 INTEGER IPARG(NPARG,*),IXC(NIXC,*),IXTG(NIXTG,*),EL2FA(*),
75 . IFUNC,NBF,NBF_L, NBPART,NBF_PXFEMG,
76 . IADP(*),IADG(NSPMD,*),IPM(NPROPMI,*),
80 . func(*), mass(*) , geo(npropg,*),
81 . ehour(*),anim(*),pm(npropm,*),thke(*),
82 . err_thk_sh4(*), err_thk_sh3(*), x(3,*)
83 TYPE (ELBUF_STRUCT_),
DIMENSION(NGROUP)TARGET :: ELBUF_TAB
84 TYPE (MATPARAM_STRUCT_) ,
DIMENSION(NUMMAT) ,
INTENT(IN) :: MAT_PARAM
85 TYPE (STACK_PLY) :: STACK
92 . off, p, vonm2, vonm, s1, s2, s12, s3,
VALUE,
93 . a1,b1,b2,b3,yeq,f1,m1,m2,m3, fac, dam1(mvsiz),dam2(mvsiz),
94 . wpla(mvsiz), dmax(mvsiz),wpmax(mvsiz),
95 . fail(mvsiz),sige(mvsiz,5)
96 INTEGER I, NG, NEL, ISS, N, J, MLW, NUVAR, IUS,
97 . ISTRAIN,NN, K1, K2,JTURB,MT,IMID, IALEL,IPID,
98 . NN1,NN2,NN3,NN4,NN5,NN6,NN7,NN8,NN9,NN10,NF,
100 . OFFSET,K,II,II_L,INC,KK,IHBE,
101 . nptm,npg, nbvu, i1, mpt, nel5, nel8,
102 . ipt,buf,nptr,npts,nptt,nlay,ir,is,ptf,lenf,il,
103 . iadr,ipmat,pid(mvsiz),mat(mvsiz),matly(mvsiz*100),
104 . nel_ply,ilayer,iflag,jj(5)
105 INTEGER IE, ISHPLYXFEM, ILAST, NUVARV,
106 . IVISC,IPMAT_IPLY,NUVARD,MAT_IPLY,
107 . MATPLY,LL,IPLYC,I3,I2
108 INTEGER PLYS,IPLY,PLYELEMS(NUMELC),ELC,NS1,MATL,
109 . IIGEO,IADI,ISUBSTACK
111 TYPE(G_BUFEL_) ,
POINTER :: GBUF
112 TYPE(BUF_LAY_) ,
POINTER :: BUFLY
113 TYPE(l_bufel_) ,
POINTER :: LBUF
115 TYPE(buf_intloc_) ,
POINTER :: ILBUF
116 TYPE(buf_fail_) ,
POINTER :: FBUF
118 .
DIMENSION(:),
POINTER :: uvar
119 REAL,
DIMENSION(:),
ALLOCATABLE:: WAL
121 CALL my_alloc(wal,nbf_l)
146 2 mlw ,nel ,nft ,iad ,ity ,
147 3 npt ,jale ,ismstr ,jeul ,jturb ,
148 4 jthe ,jlag ,jmult ,jhbe ,jivf ,
149 5 nvaux ,jpor ,jcvt ,jclose ,jplasol ,
150 6 irep ,iint ,igtyp ,israt ,isrot ,
151 7 icsen ,isorth ,isorthg ,ifailure,jsms)
152 DO offset = 0,nel-1,nvsiz
153 nft = iparg(3,ng) + offset
155 llt =
min(nvsiz,nel-offset)
156 ishplyxfem = iparg(50,ng)
157 isubstack = iparg(71,ng)
161 IF (ishplyxfem > 0 .AND.(ity == 3.OR.ity == 7))
THEN
162 gbuf => elbuf_tab(ng)%GBUF
166 nptr = elbuf_tab(ng)%NPTR
167 npts = elbuf_tab(ng)%NPTS
168 nptt = elbuf_tab(ng)%NPTT
169 nlay = elbuf_tab(ng)%NLAY
170 nintlay = elbuf_tab(ng)%NINTLAY
196 IF (ilayer > 0) iflag = 1
199 IF (iflag == 0)
GO TO 900
223 bufly => elbuf_tab(ng)%BUFLY(ilayer)
224 lbuf => elbuf_tab(ng)%BUFLY(ilayer)%LBUF(1,1,1)
227 IF (npg > 1 .and. bufly%LY_PLAPT > 0)
THEN
228 evar(i) = abs(bufly%PLAPT(i))
229 ELSEIF (npg == 1 .and. bufly%L_PLA > 0)
THEN
230 evar(i) = abs(lbuf%PLA(i))
234 ELSEIF (ifunc == 3)
THEN
241 ELSEIF(ifunc == 5)
THEN
247 ELSEIF(ifunc == 7)
THEN
257 bufly => elbuf_tab(ng)%BUFLY(ilayer)
260 lbuf => bufly%LBUF(ir,is,1)
261 s1 = s1 + lbuf%SIG(i )/npg
262 s2 = s2 + lbuf%SIG(nel + i)/npg
263 s12= s12 + lbuf%SIG(2*nel + i)/npg
266 vonm2= s1*s1 + s2*s2 - s1*s2 + three*s12*s12
267 evar(i) = sqrt(vonm2)
271 ELSEIF (ifunc == 11)
THEN
292 ELSEIF(ifunc == 12)
THEN
311 ELSEIF(ifunc == 13)
THEN
313 IF(mlw == 25.OR.mlw == 15)
THEN
321 ELSEIF (ifunc>=14.AND.ifunc<=15)
THEN
327 IF (mlw == 25.AND. irep == 1)
THEN
352 matl = stack%IGEO(ipmat+n,isubstack)
353 IF (mat_param(matl)%IVISC > 0 ) ivisc = 1
359 CALL sigrota(lft ,llt ,nft ,ilayer ,nel ,
360 2 ns1 ,x ,ixc ,elbuf_tab(ng) ,
361 3 sige ,ity ,ixtg ,ihbe ,istrain ,
364 evar(i) = sige(i,ifunc - 13)
366 ELSEIF (mlw == 25 .AND. irep == 0)
THEN
369 lenf = nel*gbuf%G_FORPG/npg
379 evar(i) = evar(i)+gbuf%FORPG(ptf+jj(ius)+i)/npg
390 evar(i) = evar(i)+gbuf%FORPG(jj(ius)+i)/npg
399 evar(i) = gbuf%FORPG(jj(ius)+i
405 ELSEIF(ifunc>=17.AND.ifunc<=19)
THEN
412 IF (mlw == 25.AND. irep == 1)
THEN
437 matl = stack%IGEO(ipmat+n,isubstack)
438 IF (mat_param(matl)%IVISC > 0 ) ivisc = 1
445 CALL sigrota(lft ,llt ,nft ,ilayer ,nel ,
446 2 ns1 ,x ,ixc ,elbuf_tab(ng) ,
447 3 sige ,ity ,ixtg ,ihbe ,istrain ,
450 evar(i) = sige(i,ifunc - 14)
452 ELSEIF (mlw == 25 .AND. irep == 0)
THEN
477 ELSEIF(ifunc == 26)
THEN
481 ELSEIF(ifunc == 2155)
THEN
492 ELSEIF(ifunc>=20.AND.ifunc<=24)
THEN
498 . (mlw == 29.OR.mlw == 30.OR.mlw == 31.OR.mlw>=33))
THEN
501 IF (ity == 3.AND.ihbe == 11)
THEN
506 IF (ity == 7.AND.ihbe == 11)
THEN
517 igtyp = nint(geo(12,ixtg(6,nft+1)))
519 igtyp = nint(geo(12,ixc(6,nft+1)))
534 nuvar = elbuf_tab(ng)%BUFLY(ipt)%NVAR_MAT
538 uvar=>elbuf_tab(ng)%BUFLY(ipt)%MAT(ir,is,1)%VAR
539 evar(i) = evar(i) + uvar(i1 + i)*fac
546 ELSEIF (mlw == 29 .OR. mlw == 30.OR.
547 . mlw == 31.OR.mlw>=33)
THEN
552 IF (ipm(8,ixc(1,n))>ius)
THEN
557 ELSEIF(ifunc>=27.AND.ifunc<=39)
THEN
559 IF (mlw == 29.OR.mlw == 30.OR.mlw == 31.OR.mlw>=33)
THEN
568 nuvar = elbuf_tab(ng)%BUFLY(ipt)%NVAR_MAT
573 uvar=>elbuf_tab(ng)%BUFLY(ipt)%MAT(ir,is,1)%VAR
574 evar(i) = evar(i) + uvar(i1 + i)*fac
583 ELSEIF((ifunc>=40.AND.ifunc<=2039).OR.
584 . (ifunc>=2240.AND.ifunc<=10139))
THEN
586 IF (ifunc>=40.AND.ifunc<=2039)
THEN
587 ius = (ifunc - 39)/100
588 ipt = mod((ifunc - 39), 100)
589 ELSEIF (ifunc>=2240.AND.ifunc<=10139)
THEN
590 ius = ((ifunc - 2239)/100) +20
591 ipt = mod((ifunc - 2239), 100)
604 IF (mlw == 29.OR.mlw == 30.OR.mlw == 31.OR.mlw>=33)
THEN
607 IF (ity == 3.AND.ihbe == 11)
THEN
612 IF (ity == 7.AND.ihbe == 11)
THEN
621 nuvar =
max(nuvar,ipm(8,ixtg(1,nft+1)))
625 IF (nuvar>=ius.AND.npt>=ipt)
THEN
633 uvar=>elbuf_tab(ng)%BUFLY(il)%MAT(ir,is,ipt)%VAR
634 evar(i) = evar(i) + uvar(i1 + i)*fac
643 ELSEIF (ifunc == 10240 .OR. ifunc == 10669)
THEN
647 IF (ifunc == 10240 )
THEN
652 IF(ilayer /= 0.AND. ilayer <= elbuf_tab
653 . nfail = elbuf_tab(ng)%INTLAY(ilayer)%NFAIL
654 IF (ilayer > 0 .AND. ilayer <= elbuf_tab(ng)%NINTLAY .AND.
THEN
655 nuvar = elbuf_tab(ng)%INTLAY(ilayer)%FAIL(1,1)%FLOC(1)%NVAR
660 fbuf => elbuf_tab(ng)%INTLAY(ilayer)%FAIL(ir,is)
661 evar(i) =
min(evar(i), fbuf%FLOC(1)%VAR(i))
667 ELSEIF (ifunc == 10669 )
THEN
672 IF(ilayer /= 0.AND. ilayer <= elbuf_tab(ng)%NINTLAY)
673 . nfail = elbuf_tab(ng)%INTLAY(ilayer)%NFAIL
674 IF (ilayer > 0 .AND. ilayer <= elbuf_tab(ng)%NINTLAY .AND. nfail >
THEN
679 fbuf => elbuf_tab(ng)%INTLAY(ilayer)%FAIL(ir,is)
680 evar(i) =
max(evar(i), fbuf%FLOC(1)%VAR(i))
689 ELSEIF((ifunc>=10241.AND.ifunc<=10243))
THEN
697 IF (ilayer > 0 .and. ilayer <= elbuf_tab(ng)%NINTLAY)
THEN
700 ilbuf => elbuf_tab(ng)%INTLAY(ilayer
701 evar(i) = evar(i) + ilbuf%SIG(nel*(ll-1) + i) / npg
708 ELSEIF((ifunc>=10244.AND.ifunc<=10246))
THEN
716 IF(ilayer > 0 .and. ilayer <= elbuf_tab(ng)%NINTLAY)
THEN
719 ilbuf => elbuf_tab(ng)%INTLAY(ilayer)%ILBUF(ir,is)
720 evar(i) = evar(i) + ilbuf%EPS((i-1)*3 + ll) / npg
727 ELSEIF(ifunc == 10247)
THEN
733 IF(ilayer > 0 .and. ilayer <= elbuf_tab(ng)%NINTLAY)
THEN
734 evar(i) = elbuf_tab(ng)%INTLAY(ilayer)%EINT(i)
739 ELSEIF (ifunc == 2040)
THEN
748 bufly => elbuf_tab(ng)%BUFLY(il)
749 IF (bufly%L_PLA > 0)
THEN
751 evar(i) = abs(bufly%LBUF(1,1,ipt)%PLA(i))
759 ELSEIF (ifunc == 2041)
THEN
761 bufly => elbuf_tab(ng)%BUFLY(1)
762 IF (bufly%L_PLA > 0)
THEN
764 evar(i) = abs(bufly%LBUF(1,1,1)%PLA(i))
768 ELSEIF(ifunc>=2042.AND.ifunc<=2141)
THEN
771 ipt = mod((ifunc - 2041), 100)
772 IF(ipt == 0)ipt = 100
782 ELSE IF(npt == 0)
THEN
790 ELSE IF(ifunc == 2142)
THEN
844 IF(ifailure == 0 .OR.(ifailure /=0 .AND.ifaila ==1))
THEN
849 ELSEIF(off > zero)
THEN
859 ELSE IF(ifunc == 2156)
THEN
863 IF(mlw == 0 .OR. mlw == 13)
THEN
870 func(el2fa(nel_ply + ie)) = zero
874 ELSEIF(ifunc == 3)
THEN
884 func(el2fa(nel_ply + ie)) = zero
893 func(el2fa(nel_ply + ie)) = zero
897 ELSEIF(ifunc == 25.AND.ity == 3)
THEN
906 func(el2fa(nel_ply + ie)) = zero
919 func(el2fa(nel_ply + ie)) = evar(i)
934 ilast =
max(nel_ply,1)
936 n = el2fa(nel_ply + i)
942 n = el2fa(nel_ply + i)
943 wal(i+nel_ply) = func(n)
948 nel_ply = nel_ply +
plyshell(iply)%PLYNUMSHELL