40 SUBROUTINE tensorc(ELBUF_TAB,IPARG ,ITENS ,INVERT,NELCUT,
41 . EL2FA ,NBF ,TENS ,EPSDOT,IADP ,
42 . NBF_L ,NBPART,IADG ,X ,IXC ,
43 . IGEO ,IXTG ,IPM ,STACK ,MAT_PARAM,
44 . GEO ,DRAPE_SH4N, DRAPE_SH3N, DRAPEG)
56#include "implicit_f.inc"
71 INTEGER IPARG(NPARG,*),ITENS,INVERT(*),
72 . EL2FA(*),IXC(NIXC,*), IGEO(NPROPGI,*),
73 . NELCUT,NBF,IADP(*),NBF_L,NBPART,IADG(NSPMD,*),
74 . IXTG(NIXTG,*),IPM(NPROPMI,*)
76 my_real tens(3,*),epsdot(6,*),x(3,*)
77 my_real,
INTENT(IN) :: geo(npropg,numgeo)
78 TYPE (ELBUF_STRUCT_),
DIMENSION(NGROUP),
TARGET :: ELBUF_TAB
79 TYPE (STACK_PLY) :: STACK
80 TYPE (MATPARAM_STRUCT_) ,
DIMENSION(NUMMAT) ,
INTENT(IN) :: MAT_PARAM
81 TYPE (DRAPE_) ,
INTENT(IN) :: DRAPE_SH4N(NUMELC_DRAPE)
82 TYPE (DRAPE_) ,
INTENT(IN) :: DRAPE_SH3N(NUMELTG_DRAPE)
83 TYPE (DRAPEG_),
INTENT(IN) :: DRAPEG
91 INTEGER I,NG,NEL,NFT,ITY,LFT,NPT,MPT,IPT,
92 . n,j,llt,mlw,istrain,il,ir,is,it,nptr,npts,nlay,
93 . ipid,i1,i2,ns1,ns2,istre,input_error,
94 . nn1,nn2,nn3,nn4,nn5,nn6,nn7,nn8,nn9,nn10,nni,n0,
95 . ihbe,buf,npg,k,isrot,nuvarv,ivisc,
96 . ipmat,igtyp,isubstack,iigeo,iadi,ipmat_iply,ixfem,ixlay,
97 . npt_all,nptt,ilay,ius,id_ply,iply,ipang,ippos,ipthk,jj(8),
98 . idx,idx_mstress,idx_idply_mstress,igmat,idrape,idir,imat,mat_orth
99 INTEGER PID(MVSIZ),MAT(MVSIZ)
100 my_real ,
DIMENSION(:,:) ,
ALLOCATABLE :: SIGE
102 TYPE(BUF_LAY_) ,
POINTER :: BUFLY
103 TYPE(g_bufel_) ,
POINTER :: GBUF
104 TYPE(l_bufel_) ,
POINTER :: LBUF
105 TYPE(L_BUFEL_DIR_) ,
POINTER :: LBUF_DIR
107 my_real,
DIMENSION(:),
POINTER :: dir_a,dir_b
108 REAL,
DIMENSION(:),
ALLOCATABLE :: WA
110 INTEGER :: NLAY_MAX,LAYNPT_MAX,NUMEL_DRAPE,SEDRAPE
111 INTEGER,
DIMENSION(:) ,
ALLOCATABLE :: MATLY
112 my_real,
DIMENSION(:) ,
ALLOCATABLE :: thkly
113 my_real,
DIMENSION(:,:),
ALLOCATABLE :: posly,thk_ly
115 CALL my_alloc(wa,3*nbf_l)
142 istrain = iparg(44,ng)
143 isubstack = iparg(71,ng)
145 idrape = elbuf_tab(ng)%IDRAPE
153 IF (
ALLOCATED(sige))
DEALLOCATE(sige)
154 ALLOCATE(sige(nel,3))
155 sige(1:nel,1:3) = zero
164 tens(1,el2fa(nn3+n)) = zero
165 tens(2,el2fa(nn3+n)) = zero
166 tens(3,el2fa(nn3+n)) = zero
171 ELSEIF (ity == 3 .OR. ity == 7)
THEN
172 gbuf => elbuf_tab(ng)%GBUF
173 nptr = elbuf_tab(ng)%NPTR
174 npts = elbuf_tab(ng)%NPTS
175 nptt = elbuf_tab(ng)%NPTT
176 nlay = elbuf_tab(ng)%NLAY
183 IF (ihbe == 11) npg = 4
192 IF (ihbe == 11) npg = 3
202 tens(1,el2fa(nni+n)) = zero
203 tens(2,el2fa(nni+n)) = zero
204 tens(3,el2fa(nni+n)) = zero
207 IF (mlw == 0)
GOTO 490
215 npt = iabs(iparg(6,ng))
219 IF (igtyp == 51 .OR. igtyp == 52)
THEN
221 laynpt_max =
max(laynpt_max ,elbuf_tab(ng)%BUFLY(ilay)%NPTT)
226 nlay_max =
max(nlay,npt)
227 ALLOCATE(matly(mvsiz*nlay_max))
228 ALLOCATE(thkly(mvsiz*nlay_max*laynpt_max))
229 ALLOCATE(posly(mvsiz,nlay_max*laynpt_max))
230 ALLOCATE(thk_ly(nel ,nlay_max*laynpt_max))
237 numel_drape = numeltg_drape
240 . elbuf_tab(ng),1 ,nel ,geo
241 . mat ,pid ,thkly ,matly ,posly ,
243 . isubstack,stack ,drape_sh3n ,nft ,gbuf%THK ,
244 . nel ,thk_ly ,drapeg%INDX_SH3N,sedrape,numel_drape)
246 numel_drape = numelc_drape
249 . elbuf_tab(ng),1 ,nel ,geo ,igeo ,
250 . mat ,pid ,thkly ,matly ,posly
251 . igtyp ,ixfem ,ixlay ,nlay ,npt ,
252 . isubstack,stack ,drape_sh4n ,nft ,gbuf%THK ,
253 . nel ,thk_ly ,drapeg%INDX_SH4N,sedrape,numel_drape)
256 IF (igtyp == 51 .OR. igtyp == 52)
THEN
259 npt_all = npt_all + elbuf_tab(ng)%BUFLY(ipt)%NPTT
261 IF (nlay == 1) mpt =
max(1,npt_all)
263 idx_mstress = 3120 + 3*mx_ply_anim
264 idx_idply_mstress = idx_mstress + 103
273 ELSEIF (itens == 2)
THEN
278 ELSEIF (itens == 3)
THEN
287 ELSEIF (mlw == 2 .OR. mlw == 19 .OR.
289 . mlw == 22 .OR. mlw == 25 .OR.
290 . mlw == 27 .OR. mlw == 32 .OR.
294 ELSEIF (mlw == 3 .OR. mlw == 23)
THEN
298 ELSEIF (itens == 4)
THEN
306 ELSEIF (mlw == 2 .OR. mlw == 19 .OR.
308 . mlw == 22 .OR. mlw == 25.OR.
309 . mlw == 27 .OR. mlw == 32.OR.
313 ELSEIF (mlw == 3 .OR. mlw == 23)
THEN
317 ELSEIF (itens > 100 .AND. itens < 201)
THEN
320 ipt =
min(mpt,itens-1
321 IF (itens - 100 > mpt)
THEN
324 ELSEIF (mlw == 1 .OR. mlw == 3 .OR. mlw == 23)
THEN
327 ELSEIF (mlw == 2 .OR. mlw == 19 .OR.
329 . mlw == 22 .OR. mlw == 25 .OR.
330 . mlw == 27 .OR. mlw == 32 .OR.
335 ELSEIF (itens > 400 .AND. itens < 501)
THEN
341 ilay = mod((itens - 400), 100)
342 IF (ilay == 0) ilay = 100
347 ELSEIF (mlw == 1 .OR. mlw == 3 .OR. mlw == 23)
THEN
350 ELSEIF (mlw == 2 .OR. mlw == 19 .OR.
352 . mlw == 22 .OR. mlw == 25 .OR.
353 . mlw == 27 .OR. mlw == 32 .OR.
358 ELSEIF (itens > 500 .AND. itens < 601)
THEN
364 ilay = mod((itens - 500), 100)
365 IF (ilay == 0) ilay = 100
370 ELSEIF (mlw == 1 .OR. mlw == 3 .OR. mlw == 23)
THEN
373 ELSEIF (mlw == 2 .OR. mlw == 19 .OR.
375 . mlw == 22 .OR. mlw == 25 .OR.
376 . mlw == 27 .OR. mlw == 32 .OR.
381 ELSEIF (itens > 600 .AND. itens < 1611)
THEN
388 ilay = int((ius - 1)/10)
389 IF (ilay == 0) ilay = 100
394 ELSEIF (mlw == 1 .OR. mlw == 3 .OR. mlw == 23)
THEN
397 ELSEIF (mlw == 2 .OR. mlw == 19 .OR.
399 . mlw == 22 .OR. mlw == 25 .OR.
400 . mlw == 27 .OR. mlw == 32 .OR.
408 ELSEIF (itens == 5)
THEN
419 ELSEIF (itens == 6)
THEN
425 ELSEIF (itens == 7)
THEN
432 ELSEIF (itens == 8)
THEN
439 ELSEIF (itens > 200 .AND. itens < 301)
THEN
443 ipt =
min(mpt,itens-200)
444 IF ((itens - 200 > mpt) .OR. igtyp == 51 .OR. igtyp == 52 .OR. igtyp == 17)
THEN
447 ELSE IF (igtyp == 11)
THEN
453 a2 = half*(((2*ipt-one)/mpt)-one)
455 ELSEIF (itens > 1610+ mx_ply_anim .AND. itens < 1611 + 2*mx_ply_anim )
THEN
456 il = itens - (1610+ mx_ply_anim)
462 IF (igtyp == 17 .OR. igtyp == 51 .OR. igtyp == 52)
THEN
463 IF (ply_anim_strain( 3 * (il - 1) + 2) == 3 )
THEN
467 ipt = ply_anim_strain( 3 * (il - 1) + 3)
469 bufly => elbuf_tab(ng)%BUFLY(j)
471 IF (igtyp == 17 .OR. igtyp == 51)
THEN
472 id_ply = igeo(1,stack%IGEO(2+j,isubstack))
473 ELSEIF (igtyp == 52)
THEN
474 id_ply =
ply_info(1,stack%IGEO(2+j,isubstack)-numstack)
476 IF (id_ply == ply_anim_strain( 3 * (il - 1) + 1) .AND.
480 a2 = stack%GEO(ippos+j,isubstack)+
481 . half*(((2*ipt-one)/nptt)-one) *
482 . stack%GEO(ipthk+j,isubstack)
492 ELSEIF (itens > 1610 + 3*mx_ply_anim .AND.
493 . itens < 1711 + 3*mx_ply_anim)
THEN
502 IF (igtyp == 51 .OR. igtyp == 52)
THEN
504 idx = 1610 + 3*mx_ply_anim
506 ilay = mod((itens - idx),100)
507 IF (ilay == 0) ilay = 100
513 bufly => elbuf_tab(ng)%BUFLY(il)
523 a2 = stack%GEO(ippos+il,isubstack)+
524 . half*(((2*it-one)/nptt)-one) *
525 . stack%GEO(ipthk+il,isubstack)
529 ELSEIF (itens > 1710 + 3*mx_ply_anim .AND.
530 . itens < 1811 + 3*mx_ply_anim)
THEN
539 IF (igtyp == 51 .OR. igtyp == 52)
THEN
541 idx = 1710 + 3*mx_ply_anim
543 ilay = mod((itens - idx),100)
544 IF (ilay == 0) ilay = 100
550 bufly => elbuf_tab(ng)%BUFLY(il)
560 a2 = stack%GEO(ippos+il,isubstack)+
561 . half*(((2*it-one)/nptt)-one) *
562 . stack%GEO(ipthk+il,isubstack)
566 ELSEIF (itens > 1810 + 3*mx_ply_anim .AND.
567 . itens < 2821 + 3*mx_ply_anim)
THEN
576 IF (igtyp == 51 .OR. igtyp == 52)
THEN
578 idx = 1810 + 3*mx_ply_anim
581 ilay = int((ius - 1)/10)
582 IF (ilay == 0) ilay = 100
591 bufly => elbuf_tab(ng)%BUFLY(il)
595 a2 = stack%GEO(ippos+il,isubstack)+
596 . half*(((2*it-one)/nptt)-one) *
597 . stack%GEO(ipthk+il,isubstack)
604 ELSEIF (itens == 91)
THEN
608 ELSEIF (itens == 92)
THEN
612 ELSEIF (itens == 93)
THEN
616 ELSEIF (itens == 94)
THEN
620 ELSEIF (itens > 300 .AND. itens < 401)
THEN
622 ipt =
min(mpt,itens - 300)
623 IF (itens - 300 > mpt)
THEN
626 ELSEIF (npt /= 0)
THEN
628 a2 = half*(((2*ipt-one)/mpt)-one)
633 ELSEIF (itens > 1610+ 2*mx_ply_anim .AND. itens < 1611 + 3*mx_ply_anim )
THEN
634 il = itens - (1610+ 2*mx_ply_anim)
638 IF (igtyp == 17 .OR. igtyp == 51 .OR. igtyp == 52)
THEN
639 IF (ply_anim_epsdot( 3 * (il - 1) + 2) == 6 )
THEN
643 ipt = ply_anim_epsdot( 3 * (il - 1) + 3)
645 bufly => elbuf_tab(ng)%BUFLY(j)
647 IF (igtyp == 17 .OR. igtyp == 51)
THEN
648 id_ply = igeo(1,stack%IGEO(2+j,isubstack))
649 ELSEIF (igtyp == 52)
THEN
650 id_ply =
ply_info(1,stack%IGEO(2+j,isubstack)-numstack)
652 IF (id_ply == ply_anim_epsdot( 3 * (il - 1) + 1) )
THEN
655 a2 = stack%GEO(ippos+j,isubstack)+
656 . half*(((2*ipt-one)/nptt)-one) *
657 . stack%GEO(ipthk+j,isubstack)
667 ELSEIF (itens > 2820 + 3*mx_ply_anim .AND.
668 . itens < 2921 + 3*mx_ply_anim)
THEN
675 IF (igtyp == 51 .OR. igtyp == 52)
THEN
677 idx = 2820 + 3*mx_ply_anim
679 ilay = mod((itens - idx),100)
680 IF (ilay == 0) ilay = 100
686 bufly => elbuf_tab(ng)%BUFLY(il)
696 a2 = stack%GEO(ippos+il,isubstack)+
697 . half*(((2*it-one)/nptt)-one) *
698 . stack%GEO(ipthk+il,isubstack)
702 ELSEIF (itens > 2920 + 3*mx_ply_anim .AND.
703 . itens < 3021 + 3*mx_ply_anim)
THEN
710 IF (igtyp == 51 .OR. igtyp == 52)
THEN
712 idx = 2920 + 3*mx_ply_anim
714 ilay = mod((itens - idx),100)
715 IF (ilay == 0) ilay = 100
721 bufly => elbuf_tab(ng)%BUFLY(il)
731 a2 = stack%GEO(ippos+il,isubstack)+
732 . half*(((2*it-one)/nptt)-one) *
733 . stack%GEO(ipthk+il,isubstack)
737 ELSEIF (itens > 3020 + 3*mx_ply_anim .AND.
738 . itens < 4031 + 3*mx_ply_anim)
THEN
745 IF (igtyp == 51 .OR. igtyp == 52)
THEN
747 idx = 3020 + 3*mx_ply_anim
750 ilay = int((ius - 1)/10)
751 IF (ilay == 0) ilay = 100
760 bufly => elbuf_tab(ng)%BUFLY(il)
764 a2 = stack%GEO(ippos+il,isubstack)+
765 . half*(((2*it-one)/nptt)-one) *
766 . stack%GEO(ipthk+il,isubstack)
788 r4(1) = gbuf%FOR(jj(1)+i)
789 r4(2) = gbuf%FOR(jj(2)+i)
790 r4(3) = gbuf%FOR(jj(3)+i)
791 r4(3) = r4(3) * invert(el2fa(nni+n))
792 tens(1,el2fa(nni+n)) = r4(1)
793 tens(2,el2fa(nni+n)) = r4(2)
794 tens(3,el2fa(nni+n)) = r4(3)
797 ELSE IF (itens == 2)
THEN
802 r4(1) = gbuf%MOM(jj(1)+i)
803 r4(2) = gbuf%MOM(jj(2)+i)
804 r4(3) = gbuf%MOM(jj(3)+i)
805 r4(3) = r4(3) * invert(el2fa(nni+n))
806 tens(1,el2fa(nni+n)) = r4(1)
807 tens(2,el2fa(nni+n)) = r4(2)
808 tens(3,el2fa(nni+n)) = r4(3)
811 ELSE IF (itens == 3 .OR. itens == 4)
THEN
816 IF (igtyp == 1 .OR. igtyp == 9)
THEN
818 ipt = elbuf_tab(ng)%BUFLY(il)%NPTT
819 ELSE IF (igtyp == 10 .OR. igtyp == 11 .OR. igtyp == 16)
THEN
820 il = elbuf_tab(ng)%NLAY
822 ELSE IF (igtyp == 17 .OR. igtyp == 51 .OR. igtyp == 52)
THEN
823 il = elbuf_tab(ng)%NLAY
824 ipt = elbuf_tab(ng)%BUFLY(il)%NPTT
826 ELSE IF (itens == 4)
THEN
830 imat = elbuf_tab(ng)%BUFLY(il)%IMAT
831 ivisc = mat_param(imat)%IVISC
835 lbuf => elbuf_tab(ng)%BUFLY(il)%LBUF(ir,is,ipt)
836 sige(i,1) = sige(i,1) + lbuf%SIG(jj
837 sige(i,2) = sige(i,2) + lbuf%SIG(jj(
838 sige(i,3) = sige(i,3) + lbuf%SIG(jj(3) + i) / npg
846 lbuf => elbuf_tab(ng)%BUFLY(il)%LBUF(ir
847 sige(i,1) = sige(i,1) + lbuf%VISC(jj(1) + i) / npg
848 sige(i,2) = sige(i,2) + lbuf%VISC(jj(2) + i) /
849 sige(i,3) = sige(i,3) + lbuf%VISC(jj(3) + i) / npg
854 mat_orth = mat_param(imat)%ORTHOTROPY
855 IF (mat_orth == 2)
THEN
856 IF(idrape > 0 .AND. (igtyp == 51 .OR. igtyp ==52))
THEN
857 dir_a => elbuf_tab(ng)%BUFLY(il)%LBUF_DIR(ipt)%DIRA
859 dir_a => elbuf_tab(ng)%BUFLY(il)%DIRA
865 IF (itens == 3) a2 = six
866 IF (itens == 4) a2 = -six ! lower
868 sige(i,1) = gbuf%FOR(jj(1)+i) + gbuf%MOM(jj(1)+i) * a2
869 sige(i,2) = gbuf%FOR(jj(2)+i) + gbuf%MOM(jj(2)+i) * a2
870 sige(i,3) = gbuf%FOR(jj(3)+i) + gbuf%MOM(jj(3)+i) * a2
879 r4(3) = r4(3) * invert(el2fa(nni+n))
880 tens(1,el2fa(nni+n)) = r4(1)
881 tens(2,el2fa(nni+n)) = r4(2)
882 tens(3,el2fa(nni+n)) = r4(3)
885 ELSE IF (itens > 100 .AND. itens < 201)
THEN
891 IF (igtyp == 51 .OR. igtyp == 52 .OR. igtyp == 17)
THEN
895 IF (igtyp == 1 .OR. igtyp == 9)
THEN
897 ipt =
min(ipt, elbuf_tab(ng)%BUFLY(1)%NPTT)
898 ELSE IF (igtyp == 10 .OR. igtyp == 11 .OR. igtyp == 16)
THEN
899 il =
min(ipt, elbuf_tab(ng)%NLAY)
903 imat = elbuf_tab(ng)%BUFLY(il)%IMAT
904 ivisc = mat_param(imat)%IVISC
908 lbuf => elbuf_tab(ng)%BUFLY(il)%LBUF(ir,is,ipt)
909 sige(i,1) = sige(i,1) + lbuf%SIG(jj(1) + i) / npg
910 sige(i,2) = sige(i,2) + lbuf%SIG(jj(2) + i) / npg
911 sige(i,3) = sige(i,3) + lbuf%SIG(jj(3) + i) / npg
919 lbuf => elbuf_tab(ng)%BUFLY(il)%LBUF(ir,is,ipt)
920 sige(i,1) = sige(i,1) + lbuf%VISC(jj(1) + i) / npg
921 sige(i,2) = sige(i,2) + lbuf%VISC(jj(2) + i) / npg
922 sige(i,3) = sige(i,3) + lbuf%VISC(jj(3) + i) / npg
927 mat_orth = mat_param(imat)%ORTHOTROPY
928 IF (mat_orth == 2)
THEN
929 dir_a => elbuf_tab(ng)%BUFLY(il)%DIRA
934 sige(i,1) = gbuf%FOR(jj(1)+i)
935 sige(i,2) = gbuf%FOR(jj(2)+i)
936 sige(i,3) = gbuf%FOR(jj(3)+i)
945 r4(3) = r4(3) * invert(el2fa(nni+n))
946 tens(1,el2fa(nni+n)) = r4(1)
947 tens(2,el2fa(nni+n)) = r4(2)
948 tens(3,el2fa(nni+n)) = r4(3)
953 ELSEIF (itens > 400 .AND. itens < 501)
THEN
957 IF (igtyp == 17 .OR. igtyp == 51 .OR. igtyp == 52)
THEN
958 il = elbuf_tab(ng)%NLAY
959 ipt = elbuf_tab(ng)%BUFLY(il)%NPTT
961 id_ply = igeo(1,stack%IGEO(2+j,isubstack))
962 IF (id_ply == iply)
THEN
964 ipt = elbuf_tab(ng)%BUFLY(il)%NPTT
968 imat = elbuf_tab(ng)%BUFLY(il)%IMAT
969 ivisc = mat_param(imat)%IVISC
971 sige(1:nel,1:3) = zero
975 lbuf => elbuf_tab(ng)%BUFLY(il)%LBUF(ir,is,ipt)
976 sige(i,1) = sige(i,1) + lbuf%SIG(jj(1) + i) / npg
977 sige(i,2) = sige(i,2) + lbuf%SIG(jj(2) + i) / npg
978 sige(i,3) = sige(i,3) + lbuf%SIG(jj(3) + i
987 lbuf => elbuf_tab(ng)%BUFLY(il)%LBUF(ir,is,ipt)
988 sige(i,1) = sige(i,1) + lbuf%VISC(jj(1) + i) / npg
989 sige(i,2) = sige(i,2) + lbuf%VISC(jj(2) + i) / npg
990 sige(i,3) = sige(i,3) + lbuf%VISC(jj(3) + i) / npg
996 mat_orth = mat_param(imat)%ORTHOTROPY
997 IF (mat_orth == 2)
THEN
998 dir_a => elbuf_tab(ng)%BUFLY(il)%DIRA
1007 r4(3) = r4(3) * invert(el2fa(nni+n))
1008 tens(1,el2fa(nni+n)) = r4(1)
1009 tens(2,el2fa(nni+n)) = r4(2)
1010 tens(3,el2fa(nni+n)) = r4(3)
1014 ELSEIF (itens > 500 .AND. itens < 601 .AND.
1015 . (igtyp == 17 .OR. igtyp == 51 .OR. igtyp ==
THEN
1021 id_ply = igeo(1,stack%IGEO(2+j,isubstack))
1022 IF (id_ply == iply)
THEN
1027 imat = elbuf_tab(ng)%BUFLY(il)%IMAT
1028 ivisc = mat_param(imat)%IVISC
1030 sige(1:nel,1:3) = zero
1034 lbuf => elbuf_tab(ng)%BUFLY(il)%LBUF(ir,is,ipt)
1035 sige(i,1) = sige(i,1) + lbuf%SIG(jj(1) + i
1036 sige(i,2) = sige(i,2)
1037 sige(i,3) = sige(i,3) + lbuf%SIG(jj(3) + i) / npg
1046 lbuf => elbuf_tab(ng)%BUFLY(il)%LBUF(ir,is,ipt)
1047 sige(i,1) = sige(i,1) + lbuf%VISC(jj(1) + i) / npg
1048 sige(i,2) = sige(i,2) + lbuf%VISC(jj(2) + i) / npg
1049 sige(i,3) = sige(i,3) + lbuf%VISC(jj(3) + i) / npg
1055 mat_orth = mat_param(imat)%ORTHOTROPY
1056 IF (mat_orth == 2)
THEN
1057 dir_a => elbuf_tab(ng)%BUFLY(il)%DIRA
1066 r4(3) = r4(3) * invert(el2fa(nni+n))
1067 tens(1,el2fa(nni+n)) = r4(1)
1068 tens(2,el2fa(nni+n)) = r4(2)
1069 tens(3,el2fa(nni+n)) = r4(3)
1072 ELSE IF (itens > 600 .AND. itens < 1611)
THEN
1074 IF ((igtyp == 10 .OR. igtyp == 11 .OR. igtyp == 16))
THEN
1076 ilay = int((ius - 1)/10)
1077 IF (ilay == 0) ilay = 100
1078 il =
min(ilay, elbuf_tab(ng)%NLAY)
1081 imat = elbuf_tab(ng)%BUFLY(il)%IMAT
1082 ivisc = mat_param(imat)%IVISC
1084 sige(1:nel,1:3) = zero
1088 lbuf => elbuf_tab(ng)%BUFLY(il)%LBUF(ir,is,ipt)
1089 sige(i,1) = sige(i,1) + lbuf%SIG(jj(1) + i) / npg
1090 sige(i,2) = sige(i,2) + lbuf%SIG(jj(2) + i) / npg
1091 sige(i,3) = sige(i,3) + lbuf%SIG(jj(3) + i) / npg
1100 lbuf => elbuf_tab(ng)%BUFLY(il)%LBUF(ir,is,ipt)
1101 sige(i,1) = sige(i,1) + lbuf%VISC(jj(1) + i) / npg
1102 sige(i,2) = sige(i,2) + lbuf%VISC(jj(2) + i) / npg
1103 sige(i,3) = sige(i,3) + lbuf%VISC(jj(3) + i) / npg
1109 mat_orth = mat_param(imat)%ORTHOTROPY
1110 IF (mat_orth == 2)
THEN
1111 dir_a => elbuf_tab(ng)%BUFLY(il)%DIRA
1120 r4(3) = r4(3) * invert(el2fa(nni+n))
1121 tens(1,el2fa(nni+n)) = r4(1)
1122 tens(2,el2fa(nni+n)) = r4(2)
1123 tens(3,el2fa(nni+n)) = r4(3)
1127 ELSEIF (itens > 1610 .AND. itens < 1611 + mx_ply_anim )
THEN
1130 IF (igtyp == 17 .or. igtyp == 51 .or. igtyp == 52)
THEN
1131 sige(1:nel,1:3) = zero
1133 IF (ply_anim_stress(3*(iply - 1) + 2) == 2)
THEN
1134 ipt = ply_anim_stress(3*(iply - 1) + 3)
1137 IF (igtyp == 17 .OR. igtyp == 51)
THEN
1138 id_ply = igeo(1,stack%IGEO(2+il,isubstack))
1139 ELSE IF (igtyp == 52)
THEN
1140 id_ply =
ply_info(1,stack%IGEO(2+il,isubstack) - numstack)
1142 IF (id_ply == ply_anim_stress(3*(iply - 1) + 1))
THEN
1143 imat = elbuf_tab(ng)%BUFLY(il)%IMAT
1144 ivisc = mat_param(imat)%IVISC
1145 IF (ipt <= elbuf_tab(ng)%BUFLY(il)%NPTT)
THEN
1149 lbuf => elbuf_tab(ng)%BUFLY(il)%LBUF(ir,is,ipt)
1150 sige(i,1) = sige(i,1) + lbuf%SIG(jj(1) + i) / npg
1151 sige(i,2) = sige(i,2) + lbuf%SIG(jj(2) + i) / npg
1152 sige(i,3) = sige(i,3) + lbuf%SIG(jj(3) + i) / npg
1157 mat_orth = mat_param(imat)%ORTHOTROPY
1158 IF (mat_orth > 0)
THEN
1159 IF (idrape > 0 .AND. (igtyp == 51 .OR. igtyp ==52) )
THEN
1160 dir_a => elbuf_tab(ng)%BUFLY(il)%LBUF_DIR(ipt)%DIRA
1161 dir_b => elbuf_tab(ng)%BUFLY(il)%LBUF_DIR(ipt)%DIRB
1163 dir_a => elbuf_tab(ng)%BUFLY(il)%DIRA
1164 dir_b => elbuf_tab(ng)%BUFLY(il)%DIRB
1167 IF (mat_orth == 2)
THEN
1169 ELSE IF (mat_orth == 3)
THEN
1178 r4(3) = r4(3) * invert(el2fa(nni+n))
1179 tens(1,el2fa(nni+n)) = r4(1)
1180 tens(2,el2fa(nni+n)) = r4(2)
1181 tens(3,el2fa(nni+n)) = r4(3)
1191 ELSE IF (itens == idx_mstress+2 .OR. itens == idx_mstress+3)
THEN
1195 IF (itens == idx_mstress+2)
THEN
1196 IF (igtyp == 1 .OR. igtyp == 9)
THEN
1198 ipt = elbuf_tab(ng)%BUFLY(il)%NPTT
1199 ELSE IF (igtyp == 10 .OR. igtyp == 11 .OR. igtyp == 16)
THEN
1200 il = elbuf_tab(ng)%NLAY
1202 ELSE IF (igtyp == 17 .OR. igtyp == 51 .OR. igtyp == 52)
THEN
1203 il = elbuf_tab(ng)%NLAY
1204 ipt = elbuf_tab(ng)%BUFLY(il)%NPTT
1206 ELSE IF (itens == idx_mstress+3)
THEN
1211 imat = elbuf_tab(ng)%BUFLY(il)%IMAT
1212 ivisc = mat_param(imat)%IVISC
1216 lbuf => elbuf_tab(ng)%BUFLY(il)%LBUF(ir,is,ipt)
1217 sige(i,1) = sige(i,1) + lbuf%SIG(jj(1) + i) / npg
1218 sige(i,2) = sige(i,2) + lbuf%SIG(jj(2) + i) / npg
1219 sige(i,3) = sige(i,3) + lbuf%SIG(jj(3) + i) / npg
1227 lbuf => elbuf_tab(ng)%BUFLY(il)%LBUF(ir,is,ipt)
1228 sige(i,1) = sige(i,1) + lbuf%VISC(jj(1) + i) / npg
1229 sige(i,2) = sige(i,2) + lbuf%VISC(jj(2) + i) / npg
1230 sige(i,3) = sige(i,3) + lbuf%VISC(jj(3) + i) / npg
1241 r4(3) = r4(3) * invert(el2fa(nni+n))
1242 tens(1,el2fa(nni+n)) = r4(1)
1243 tens(2,el2fa(nni+n)) = r4(2)
1244 tens(3,el2fa(nni+n)) = r4(3)
1247 ELSE IF (itens > idx_mstress+3 .AND. itens < idx_mstress+103)
THEN
1253 IF (igtyp == 51 .OR. igtyp == 52)
THEN
1256 IF (igtyp == 1 .OR. igtyp == 9)
THEN
1258 ipt =
min(ipt, elbuf_tab(ng)%BUFLY(1)%NPTT)
1259 ELSE IF (igtyp == 10 .OR. igtyp == 11 .OR. igtyp == 16)
THEN
1261 il =
min(ipt, elbuf_tab(ng)%NLAY)
1262 ELSE IF (igtyp == 17)
THEN
1267 id_ply = igeo(1,stack%IGEO(2+j,isubstack))
1268 IF (id_ply == iply)
THEN
1274 imat = elbuf_tab(ng)%BUFLY(il)%IMAT
1275 ivisc = mat_param(imat)%IVISC
1279 lbuf => elbuf_tab(ng)%BUFLY(il)%LBUF(ir,is,ipt)
1280 sige(i,1) = sige(i,1) + lbuf%SIG(jj(1) + i) / npg
1281 sige(i,2) = sige(i,2) + lbuf%SIG(jj(2) + i) / npg
1282 sige(i,3) = sige(i,3) + lbuf%SIG(jj(3) + i) / npg
1290 lbuf => elbuf_tab(ng)%BUFLY(il)%LBUF(ir,is,ipt)
1291 sige(i,1) = sige(i,1) + lbuf%VISC(jj(1) + i) / npg
1292 sige(i,2) = sige(i,2) + lbuf%VISC(jj(2) + i) / npg
1293 sige(i,3) = sige(i,3) + lbuf%VISC(jj(3) + i) / npg
1304 r4(3) = r4(3) * invert(el2fa(nni+n))
1305 tens(1,el2fa(nni+n)) = r4(1)
1306 tens(2,el2fa(nni+n)) = r4(2)
1307 tens(3,el2fa(nni+n)) = r4(3)
1312 ELSEIF (itens > idx_idply_mstress .AND.
1313 . itens < idx_idply_mstress + mx_ply_anim )
THEN
1316 IF (igtyp == 17 .or. igtyp == 51 .or. igtyp == 52)
THEN
1317 sige(1:nel,1:3) = zero
1318 iply = itens - idx_idply_mstress
1319 IF (ply_anim_stress(3*(iply - 1) + 2) == 3)
THEN
1321 ipt = ply_anim_stress(3*(iply - 1) + 3)
1323 IF (igtyp == 17 .OR. igtyp == 51)
THEN
1324 id_ply = igeo(1,stack%IGEO(2+il,isubstack))
1325 ELSE IF (igtyp == 52)
THEN
1326 id_ply =
ply_info(1,stack%IGEO(2+il,isubstack) - numstack)
1328 IF (id_ply == iply)
THEN
1329 imat = elbuf_tab(ng)%BUFLY(il)%IMAT
1330 ivisc = mat_param(imat)%IVISC
1331 IF (ipt <= elbuf_tab(ng)%BUFLY(il)%NPTT)
THEN
1335 lbuf => elbuf_tab(ng)%BUFLY(il)%LBUF(ir,is,ipt)
1336 sige(i,1) = sige(i,1) + lbuf%SIG(jj(1) + i) / npg
1337 sige(i,2) = sige(i,2) + lbuf%SIG(jj(2) + i) / npg
1338 sige(i,3) = sige(i,3) + lbuf%SIG(jj(3) + i) / npg
1348 r4(3) = r4(3) * invert(el2fa(nni+n))
1349 tens(1,el2fa(nni+n)) = r4(1)
1350 tens(2,el2fa(nni+n)) = r4(2)
1351 tens(3,el2fa(nni+n)) = r4(3)
1361 ELSE IF (itens >= 1 .and. itens <= 4)
THEN
1366 r4(j) = a1 * gbuf%FOR(jj(j)+i) + a2 * gbuf%MOM(jj(j)+i)
1368 r4(3) = r4(3) * invert(el2fa(nni+n))
1369 tens(1,el2fa(nni+n)) = r4(1)
1370 tens(2,el2fa(nni+n)) = r4(2)
1371 tens(3,el2fa(nni+n)) = r4(3)
1375 ELSEIF (istre == 0 .AND. istrain > 0)
THEN
1379 IF (itens == 5)
THEN
1384 r4(1) = gbuf%STRA(jj(1)+i)
1385 r4(2) = gbuf%STRA(jj(2)+i)
1386 r4(3) = gbuf%STRA(jj(3)+i) * invert(j)*half
1396 r4(1) = a1*gbuf%STRA(jj(1)+i
1397 r4(2) = a1*gbuf%STRA(jj
1398 r4(3) = a1*gbuf%STRA(jj(3)+i) + a2*gbuf%STRA(jj(8)+i) * thk
1399 r4(3) = r4(3) * invert(j) * half
1406 ELSEIF (istre == 2)
THEN
1414 IF (itens /= 92)
THEN
1416 r4(j) = a1*epsdot(j,n+n0) + a2*epsdot(j+3,n+n0)*thk
1420 r4(j) = epsdot(j+3,n+n0)
1423 r4(3) = r4(3) * invert(el2fa(nni+n)) * half
1424 tens(1,el2fa(nni+n)) = r4(1)
1425 tens(2,el2fa(nni+n)) = r4(2)
1426 tens(3,el2fa(nni+n)) = r4(3)
1432 IF(
ALLOCATED(matly))
DEALLOCATE(matly)
1433 IF(
ALLOCATED(thkly))
DEALLOCATE(thkly)
1434 IF(
ALLOCATED(posly))
DEALLOCATE(posly)
1435 IF(
ALLOCATED(thk_ly))
DEALLOCATE(thk_ly)
1449 wa(3*n-2) = tens(1,n)
1450 wa(3*n-1) = tens(2,n)
1451 wa(3*n ) = tens(3,n)
1453 IF (ispmd == 0)
THEN
1454 buf = (numelqg+numelcg+numeltgg)*3
1461 IF (nelcut > 0)
THEN
1462 IF (nspmd == 1)
THEN
1466 ELSEIF (ispmd == 0)
THEN