41 1 ITENS, INVERT, EL2FA, NBF,
42 2 TENS, EPSDOT, IADP, NBF_L,
43 3 NBPART,IADG, X, IXC,MAT_PARAM,
44 4 IGEO, IXTG, NBF_PXFEMG, IPM ,STACK)
53 use element_mod ,
only : nixc,nixtg
57#include "implicit_f.inc"
77 . tens(3,*),epsdot(6,*), x(3,*)
78 TYPE (ELBUF_STRUCT_),
DIMENSION(NGROUP),
TARGET :: ELBUF_TAB
79 TYPE (MATPARAM_STRUCT_) ,
DIMENSION(NUMMAT) ,
INTENT(IN) :: MAT_PARAM
80 TYPE (STACK_PLY) :: STACK
86 . fac, a1, a2, a3, thk, sige(mvsiz,5)
88 INTEGER I, NG, NEL, NFT, IAD, ITY, LFT, NPT, IR,IS,IPT,
89 . n, j, llt, mlw, istrain,nptr,npts,nptt,nlay,
90 . ipid, ns1, ns2 , istre,
91 . nn1,nn2,nn3,nn4,nn5,nn6,nni,n0,
92 . ii ,inc,ihbe ,irep,buf,ilayer,
94 INTEGER IE, ISHPLYXFEM, IFLAG, ION, NPG,
95 . ELC,PLYELEMS(NUMELC),PLYS,IFAILURE,IVISC,NUVARV,
96 . MAT(MVSIZ),PID(MVSIZ),IGTYP,IADR,MATLY,IPMAT,
97 . ISUBSTACK,IPMAT_IPLY
98 REAL,
DIMENSION(:,:),
ALLOCATABLE:: WA
100 TYPE(G_BUFEL_) ,
POINTER :: GBUF
101 TYPE(L_BUFEL_) ,
POINTER :: LBUF
103 CALL my_alloc(wa,3,nbf_l)
145 ifailure = iparg(43,ng)
146 istrain = iparg(44,ng)
147 ishplyxfem = iparg(50,ng)
148 isubstack = iparg(71,ng)
165 IF(ity==3.OR.ity==7.AND.ishplyxfem > 0)
THEN
166 gbuf => elbuf_tab(ng)%GBUF
167 nptr = elbuf_tab(ng)%NPTR
168 npts = elbuf_tab(ng)%NPTS
169 nptt = elbuf_tab(ng)%NPTT
170 nlay = elbuf_tab(ng)%NLAY
196 IF(ilayer > 0) iflag = ilayer
198 IF(iflag == 0)
GO TO 490
220 ELSEIF(mlw==2.OR.mlw==19.OR.
222 . mlw==22.OR.mlw==25.OR.
223 . mlw==27.OR.mlw==32.OR.
227 ELSEIF(mlw==3.OR.mlw==23)
THEN
237 ELSEIF(mlw==2.OR.mlw==19.OR.
239 . mlw==22.OR.mlw==25.OR.
240 . mlw==27.OR.mlw==32.OR.
244 ELSEIF(mlw==3.OR.mlw==23)
THEN
248 ELSEIF(itens>=101.AND.itens<=200)
THEN
251 IF(mlw==1.OR.mlw==3.OR.mlw==23)
THEN
254 ELSEIF(mlw==2.OR.mlw==19.OR.
256 . mlw==22.OR.mlw==25.OR.
257 . mlw==27.OR.mlw==32.OR.
259 ipt =
min(npt,itens-100)
262 IF(ipt == iply ) ion = 1
311 ELSEIF(itens>=201.AND.itens<=300)
THEN
315 ipt =
min(npt,itens - 200)
316 IF(ipt == iply ) ion = 1
317 IF(istrain==1.AND.npt/=0)
THEN
320 a2 = half*(((2*ilayer-one)/npt)-one)
328 ELSEIF(itens==91)
THEN
332 ELSEIF(itens==92)
THEN
336 ELSEIF(itens==93)
THEN
340 ELSEIF(itens==94)
THEN
344 ELSEIF(itens>=301.AND.itens<=400)
THEN
345 ipt =
min(npt,itens - 300)
346 IF(ipt == iply ) ion = 1
351 a2 = half*(((2*ilayer-one)/npt)-one)
370 IF (itens>=101.AND.itens<=200
371 . .AND.(mlw==25.OR.mlw==15).AND.irep==1)
THEN
390 ipmat_iply = ipmat + npt
396 matly = stack%IGEO(ipmat+n,isubstack)
397 IF (mat_param(matly)%IVISC > 0)
THEN
399 nuvarv =
max(nuvarv, mat_param(matly)%VISC%NUVAR)
406 CALL sigrota(lft ,llt ,nft ,ilayer ,nel ,
407 2 ns1 ,x ,ixc ,elbuf_tab(ng),
408 3 sige ,ity ,ixtg ,ihbe ,istrain ,
419 tens(1,el2fa(nel_ply + ie)) = r4(1)
420 tens(2,el2fa(nel_ply + ie)) = r4(2)
421 tens(3,el2fa(nel_ply + ie)) = r4(3)
430 tens(1,el2fa(nel_ply + ie)) = zero
431 tens(2,el2fa(nel_ply + ie)) = zero
432 tens(3,el2fa(nel_ply + ie)) = zero
437 ELSEIF (itens>=101.AND.itens<=200
438 . .AND.mlw==25.AND.irep==0)
THEN
452 lbuf => elbuf_tab(ng)%BUFLY(ilayer)%LBUF(ir,is,1)
454 sige(i,j) = sige(i,j) + lbuf%SIG(jj(j)+i)/npg
470 tens(1,el2fa(nel_ply + ie)) = r4(1)
471 tens(2,el2fa(nel_ply + ie)) = r4(2)
472 tens(3,el2fa(nel_ply + ie)) = r4(3)
482 tens(1,el2fa(nel_ply + ie)) = zero
483 tens(2,el2fa(nel_ply + ie)) = zero
484 tens(3,el2fa(nel_ply + ie)) = zero
495 r4(j) = a1 * gbuf%FOR(jj(j)+i) + a2 * gbuf%MOM(jj(j)+i)
498 tens(1,el2fa(nel_ply + ie)) = r4(1)
499 tens(2,el2fa(nel_ply + ie)) = r4(2)
500 tens(3,el2fa(nel_ply + ie)) = r4(3)
504 ELSEIF (istre == 0 .AND. gbuf%G_STRA > 0)
THEN
515 r4(j) = a1*gbuf%STRA(jj(j)+i)+a2*gbuf%STRA(jj(j)+i)*thk
519 r4(j) = gbuf%STRA(jj(j)+i)
524 tens(1,el2fa(nel_ply + ie)) = r4(1)
525 tens(2,el2fa(nel_ply + ie)) = r4(2)
526 tens(3,el2fa(nel_ply + ie)) = r4(3)
540 r4(j) = a1*epsdot(j,n+n0) + a2*epsdot(j+3,n+n0)*thk
544 r4(j) = epsdot(j+3,n+n0)
549 tens(1,el2fa(nel_ply + ie)) = r4(1)
550 tens(2,el2fa(nel_ply + ie)) = r4(2)
551 tens(3,el2fa(nel_ply + ie)) = r4(3)
563 n = el2fa(nel_ply + i)
571 n = el2fa(nel_ply + i)
572 wa(1,i+nel_ply) = tens(1,n)
573 wa(2,i+nel_ply) = tens(2,n)
574 wa(3,i+nel_ply) = tens(3,n)
579 nel_ply = nel_ply +
plyshell(iply)%PLYNUMSHELL