41 SUBROUTINE tensorc(ELBUF_TAB,IPARG ,ITENS ,INVERT,NELCUT,
42 . EL2FA ,NBF ,TENS ,EPSDOT,IADP ,
43 . NBF_L ,NBPART,IADG ,X ,IXC ,
44 . IGEO ,IXTG ,IPM ,STACK ,MAT_PARAM,
45 . GEO ,DRAPE_SH4N, DRAPE_SH3N, DRAPEG)
54 use element_mod ,
only : nixc,nixtg
58#include "implicit_f.inc"
73 INTEGER IPARG(NPARG,*),ITENS,INVERT(*),
74 . EL2FA(*),IXC(NIXC,*), IGEO(NPROPGI,*),
75 . NELCUT,NBF,IADP(*),NBF_L,NBPART,IADG(NSPMD,*),
76 . IXTG(NIXTG,*),IPM(NPROPMI,*)
78 my_real tens(3,*),epsdot(6,*),x(3,*)
79 my_real,
INTENT(IN) :: geo(npropg,numgeo)
80 TYPE (ELBUF_STRUCT_),
DIMENSION(NGROUP),
TARGET :: ELBUF_TAB
82 TYPE (MATPARAM_STRUCT_) ,
DIMENSION(NUMMAT) ,
INTENT(IN) :: MAT_PARAM
83 TYPE (DRAPE_) ,
INTENT(IN) :: DRAPE_SH4N(NUMELC_DRAPE)
84 TYPE (DRAPE_)
INTENT(IN)
85TYPE (DRAPEG_),
INTENT(IN) :: DRAPEG
93 INTEGER I,NG,NEL,NFT,ITY,LFT,NPT,MPT,IPT,
94 . n,j,llt,mlw,istrain,il,ir,is,it,nptr,npts,nlay,
95 . ipid,i1,i2,ns1,ns2,istre,input_error,
96 . nn1,nn2,nn3,nn4,nn5,nn6,nn7,nn8,nn9,nn10,nni,n0,
97 . ihbe,buf,npg,k,isrot,nuvarv,ivisc,
98 . ipmat,igtyp,isubstack,iigeo,iadi,ipmat_iply,ixfem,ixlay,
99 . npt_all,nptt,ilay,ius,id_ply,iply,ipang,ippos,ipthk,jj(8),
100 . idx,idx_mstress,idx_idply_mstress,igmat,idrape,idir,imat,mat_orth
101 INTEGER PID(MVSIZ),MAT(MVSIZ)
102 my_real ,
DIMENSION(:,:) ,
ALLOCATABLE :: SIGE
104 TYPE(BUF_LAY_) ,
POINTER :: BUFLY
105 TYPE(g_bufel_) ,
POINTER :: GBUF
106 TYPE(l_bufel_) ,
POINTER :: LBUF
109 my_real,
DIMENSION(:),
POINTER :: dir_a,dir_b
110 REAL,
DIMENSION(:),
ALLOCATABLE :: WA
112 INTEGER :: NLAY_MAX,LAYNPT_MAX,,SEDRAPE
113 INTEGER,
DIMENSION(:) ,
ALLOCATABLE :: MATLY
114 my_real,
DIMENSION(:) ,
ALLOCATABLE :: thkly
115 my_real,
DIMENSION(:,:),
ALLOCATABLE :: posly,thk_ly
117 CALL my_alloc(wa,3*nbf_l)
144 istrain = iparg(44,ng)
145 isubstack = iparg(71,ng)
147 idrape = elbuf_tab(ng)%IDRAPE
155 IF (
ALLOCATED(sige))
DEALLOCATE(sige)
156 ALLOCATE(sige(nel,3))
157 sige(1:nel,1:3) = zero
166 tens(1,el2fa(nn3+n)) = zero
167 tens(2,el2fa(nn3+n)) = zero
168 tens(3,el2fa(nn3+n)) = zero
173 ELSEIF (ity == 3 .OR. ity == 7)
THEN
174 gbuf => elbuf_tab(ng)%GBUF
176 npts = elbuf_tab(ng)%NPTS
177 nptt = elbuf_tab(ng)%NPTT
178 nlay = elbuf_tab(ng)%NLAY
185 IF (ihbe == 11) npg = 4
194 IF (ihbe == 11) npg = 3
204 tens(1,el2fa(nni+n)) = zero
205 tens(2,el2fa(nni+n)) = zero
206 tens(3,el2fa(nni+n)) = zero
209 IF (mlw == 0)
GOTO 490
217 npt = iabs(iparg(6,ng))
221 IF (igtyp == 51 .OR. igtyp == 52)
THEN
223 laynpt_max =
max(laynpt_max ,elbuf_tab(ng)%BUFLY(ilay)%NPTT)
228 nlay_max =
max(nlay,npt)
229 ALLOCATE(matly(mvsiz*nlay_max))
230 ALLOCATE(thkly(mvsiz*nlay_max*laynpt_max))
231 ALLOCATE(posly(mvsiz,nlay_max*laynpt_max))
232 ALLOCATE(thk_ly(nel ,nlay_max*laynpt_max))
239 numel_drape = numeltg_drape
242 . elbuf_tab(ng),1 ,nel ,geo ,igeo ,
243 . mat ,pid ,thkly ,matly ,posly ,
244 . igtyp ,ixfem ,ixlay ,nlay ,npt ,
245 . isubstack,stack ,drape_sh3n ,nft ,gbuf%THK ,
246 . nel ,thk_ly ,drapeg%INDX_SH3N,sedrape,numel_drape)
248 numel_drape = numelc_drape
251 . elbuf_tab(ng),1 ,nel ,geo ,igeo ,
252 . mat ,pid ,thkly ,matly ,posly ,
253 . igtyp ,ixfem ,ixlay ,nlay ,npt ,
254 . isubstack,stack ,drape_sh4n ,nft ,gbuf%THK ,
255 . nel ,thk_ly ,drapeg%INDX_SH4N,sedrape,numel_drape)
258 IF (igtyp == 51 .OR. igtyp == 52)
THEN
261 npt_all = npt_all + elbuf_tab(ng)%BUFLY(ipt)%NPTT
263 IF (nlay == 1) mpt =
max(1,npt_all)
265 idx_mstress = 3120 + 3*mx_ply_anim
266 idx_idply_mstress = idx_mstress + 103
275 ELSEIF (itens == 2)
THEN
280 ELSEIF (itens == 3)
THEN
289 ELSEIF (mlw == 2 .OR. mlw == 19 .OR.
291 . mlw == 22 .OR. mlw == 25 .OR.
292 . mlw == 27 .OR. mlw == 32 .OR.
296 ELSEIF (mlw == 3 .OR. mlw == 23)
THEN
300 ELSEIF (itens == 4)
THEN
308 ELSEIF (mlw == 2 .OR. mlw == 19 .OR.
310 . mlw == 22 .OR. mlw == 25.OR.
311 . mlw == 27 .OR. mlw == 32.OR.
315 ELSEIF (mlw == 3 .OR. mlw == 23)
THEN
319 ELSEIF (itens > 100 .AND. itens < 201)
THEN
322 ipt =
min(mpt,itens-100)
323 IF (itens - 100 > mpt)
THEN
326 ELSEIF (mlw == 1 .OR. mlw == 3 .OR. mlw == 23)
THEN
329 ELSEIF (mlw == 2 .OR. mlw == 19 .OR.
331 . mlw == 22 .OR. mlw == 25 .OR.
332 . mlw == 27 .OR. mlw == 32 .OR.
337 ELSEIF (itens > 400 .AND. itens < 501)
THEN
343 ilay = mod((itens - 400), 100)
344 IF (ilay == 0) ilay = 100
349 ELSEIF (mlw == 1 .OR. mlw == 3 .OR. mlw == 23)
THEN
352 ELSEIF (mlw == 2 .OR. mlw == 19 .OR.
354 . mlw == 22 .OR. mlw == 25 .OR.
355 . mlw == 27 .OR. mlw == 32 .OR.
360 ELSEIF (itens > 500 .AND. itens < 601)
THEN
366 ilay = mod((itens - 500), 100)
367 IF (ilay == 0) ilay = 100
372 ELSEIF (mlw == 1 .OR. mlw == 3 .OR. mlw == 23)
THEN
375 ELSEIF (mlw == 2 .OR. mlw == 19 .OR.
377 . mlw == 22 .OR. mlw == 25 .OR.
378 . mlw == 27 .OR. mlw == 32 .OR.
383 ELSEIF (itens > 600 .AND. itens < 1611)
THEN
390 ilay = int((ius - 1)/10)
391 IF (ilay == 0) ilay = 100
396 ELSEIF (mlw == 1 .OR. mlw == 3 .OR. mlw == 23)
THEN
399 ELSEIF (mlw == 2 .OR. mlw == 19 .OR.
401 . mlw == 22 .OR. mlw == 25 .OR.
402 . mlw == 27 .OR. mlw == 32 .OR.
410 ELSEIF (itens == 5)
THEN
414 IF (istrain == 1)
THEN
421 ELSEIF (itens == 6)
THEN
427 ELSEIF (itens == 7)
THEN
434 ELSEIF (itens == 8)
THEN
441 ELSEIF (itens > 200 .AND. itens < 301)
THEN
445 ipt =
min(mpt,itens-200)
446 IF ((itens - 200 > mpt) .OR. igtyp == 51 .OR. igtyp == 52 .OR. igtyp == 17)
THEN
449 ELSE IF (igtyp == 11)
THEN
455 a2 = half*(((2*ipt-one)/mpt)-one)
457 ELSEIF (itens > 1610+ mx_ply_anim .AND. itens < 1611 + 2*mx_ply_anim )
THEN
458 il = itens - (1610+ mx_ply_anim)
464 IF (igtyp == 17 .OR. igtyp == 51 .OR. igtyp == 52)
THEN
465 IF (ply_anim_strain( 3 * (il - 1) + 2) == 3 )
THEN
469 ipt = ply_anim_strain( 3 * (il - 1) + 3)
471 bufly => elbuf_tab(ng)%BUFLY(j)
473 IF (igtyp == 17 .OR. igtyp == 51)
THEN
474 id_ply = igeo(1,stack%IGEO(2+j,isubstack))
475 ELSEIF (igtyp == 52)
THEN
476 id_ply =
ply_info(1,stack%IGEO(2+j,isubstack)-numstack)
478 IF (id_ply == ply_anim_strain( 3 * (il - 1) + 1) .AND.
482 a2 = stack%GEO(ippos+j,isubstack)+
483 . half*(((2*ipt-one)/nptt)-one) *
484 . stack%GEO(ipthk+j,isubstack)
494 ELSEIF (itens > 1610 + 3*mx_ply_anim .AND.
495 . itens < 1711 + 3*mx_ply_anim)
THEN
504 IF (igtyp == 51 .OR. igtyp == 52)
THEN
506 idx = 1610 + 3*mx_ply_anim
508 ilay = mod((itens - idx),100)
509 IF (ilay == 0) ilay = 100
515 bufly => elbuf_tab(ng)%BUFLY(il)
525 a2 = stack%GEO(ippos+il,isubstack)+
526 . half*(((2*it-one)/nptt)-one) *
527 . stack%GEO(ipthk+il,isubstack)
531 ELSEIF (itens > 1710 + 3*mx_ply_anim .AND.
532 . itens < 1811 + 3*mx_ply_anim)
THEN
541 IF (igtyp == 51 .OR. igtyp == 52)
THEN
543 idx = 1710 + 3*mx_ply_anim
545 ilay = mod((itens - idx),100)
546 IF (ilay == 0) ilay = 100
552 bufly => elbuf_tab(ng)%BUFLY(il)
562 a2 = stack%GEO(ippos+il,isubstack)+
563 . half*(((2*it-one)/nptt)-one) *
564 . stack%GEO(ipthk+il,isubstack)
568 ELSEIF (itens > 1810 + 3*mx_ply_anim .AND.
569 . itens < 2821 + 3*mx_ply_anim)
THEN
578 IF (igtyp == 51 .OR. igtyp == 52)
THEN
580 idx = 1810 + 3*mx_ply_anim
583 ilay = int((ius - 1)/10)
584 IF (ilay == 0) ilay = 100
593 bufly => elbuf_tab(ng)%BUFLY(il)
597 a2 = stack%GEO(ippos+il,isubstack)+
598 . half*(((2*it-one)/nptt)-one) *
599 . stack%GEO(ipthk+il,isubstack)
606 ELSEIF (itens == 91)
THEN
610 ELSEIF (itens == 92)
THEN
614 ELSEIF (itens == 93)
THEN
618 ELSEIF (itens == 94)
THEN
622 ELSEIF (itens > 300 .AND. itens < 401)
THEN
624 ipt =
min(mpt,itens - 300)
625 IF (itens - 300 > mpt)
THEN
628 ELSEIF (npt /= 0)
THEN
630 a2 = half*(((2*ipt-one)/mpt)-one)
635 ELSEIF (itens > 1610+ 2*mx_ply_anim .AND. itens < 1611 + 3*mx_ply_anim )
THEN
636 il = itens - (1610+ 2*mx_ply_anim)
640 IF (igtyp == 17 .OR. igtyp == 51 .OR. igtyp == 52)
THEN
641 IF (ply_anim_epsdot( 3 * (il - 1) + 2) == 6 )
THEN
645 ipt = ply_anim_epsdot( 3 * (il - 1) + 3)
647 bufly => elbuf_tab(ng)%BUFLY(j
649 IF (igtyp == 17 .OR. igtyp == 51)
THEN
650 id_ply = igeo(1,stack%IGEO(2+j,isubstack))
651 ELSEIF (igtyp == 52)
THEN
652 id_ply =
ply_info(1,stack%IGEO(2+j,isubstack)-numstack)
654 IF (id_ply == ply_anim_epsdot( 3 * (il - 1) + 1) )
THEN
657 a2 = stack%GEO(ippos+j,isubstack)+
658 . half*(((2*ipt-one)/nptt)-one) *
659 . stack%GEO(ipthk+j,isubstack)
669 ELSEIF (itens > 2820 + 3*mx_ply_anim .AND.
670 . itens < 2921 + 3*mx_ply_anim)
THEN
677 IF (igtyp == 51 .OR. igtyp == 52)
THEN
679 idx = 2820 + 3*mx_ply_anim
681 ilay = mod((itens - idx),100)
682 IF (ilay == 0) ilay = 100
688 bufly => elbuf_tab(ng)%BUFLY(il)
698 a2 = stack%GEO(ippos+il,isubstack)+
699 . half*(((2*it-one)/nptt)-one) *
700 . stack%GEO(ipthk+il,isubstack)
704 ELSEIF (itens > 2920 + 3*mx_ply_anim .AND.
705 . itens < 3021 + 3*mx_ply_anim)
THEN
712 IF (igtyp == 51 .OR. igtyp == 52)
THEN
714 idx = 2920 + 3*mx_ply_anim
716 ilay = mod((itens - idx),100)
717 IF (ilay == 0) ilay = 100
723 bufly => elbuf_tab(ng)%BUFLY(il)
733 a2 = stack%GEO(ippos+il,isubstack)+
734 . half*(((2*it-one)/nptt)-one) *
735 . stack%GEO(ipthk+il,isubstack)
739 ELSEIF (itens > 3020 + 3*mx_ply_anim .AND.
740 . itens < 4031 + 3*mx_ply_anim)
THEN
747 IF (igtyp == 51 .OR. igtyp == 52)
THEN
749 idx = 3020 + 3*mx_ply_anim
752 ilay = int((ius - 1)/10)
753 IF (ilay == 0) ilay = 100
766 a2 = stack%GEO(ippos+il,isubstack)+
768 . stack%GEO(ipthk+il,isubstack)
790 r4(1) = gbuf%FOR(jj(1)+i)
791 r4(2) = gbuf%FOR(jj(2)+i)
792 r4(3) = gbuf%FOR(jj(3)+i)
793 r4(3) = r4(3) * invert(el2fa(nni+n))
794 tens(1,el2fa(nni+n)) = r4(1)
795 tens(2,el2fa(nni+n)) = r4(2)
796 tens(3,el2fa(nni+n)) = r4(3)
799 ELSE IF (itens == 2)
THEN
804 r4(1) = gbuf%MOM(jj(1)+i)
805 r4(2) = gbuf%MOM(jj(2)+i)
806 r4(3) = gbuf%MOM(jj(3)+i)
807 r4(3) = r4(3) * invert(el2fa(nni+n))
808 tens(1,el2fa(nni+n)) = r4(1)
809 tens(2,el2fa(nni+n)) = r4(2)
810 tens(3,el2fa(nni+n)) = r4(3)
813 ELSE IF (itens == 3 .OR. itens == 4)
THEN
818 IF (igtyp == 1 .OR. igtyp == 9)
THEN
820 ipt = elbuf_tab(ng)%BUFLY(il)%NPTT
821 ELSE IF (igtyp == 10 .OR. igtyp == 11 .OR. igtyp == 16)
THEN
822 il = elbuf_tab(ng)%NLAY
824 ELSE IF (igtyp == 17 .OR. igtyp == 51 .OR. igtyp == 52)
THEN
825 il = elbuf_tab(ng)%NLAY
826 ipt = elbuf_tab(ng)%BUFLY(il)%NPTT
828 ELSE IF (itens == 4)
THEN
832 imat = elbuf_tab(ng)%BUFLY(il)%IMAT
833 ivisc = mat_param(imat)%IVISC
837 lbuf => elbuf_tab(ng)%BUFLY(il)%LBUF(ir,is,ipt)
838 sige(i,1) = sige(i,1) + lbuf%SIG(jj(1) + i) / npg
839 sige(i,2) = sige(i,2) + lbuf%SIG(jj(2) + i) / npg
840 sige(i,3) = sige(i,3) + lbuf%SIG(jj(3) + i) / npg
848 lbuf => elbuf_tab(ng)%BUFLY(il)%LBUF(ir,is,ipt)
849 sige(i,1) = sige(i,1) + lbuf%VISC(jj(1) + i) / npg
850 sige(i,2) = sige(i,2) + lbuf%VISC(jj(2) + i) / npg
851 sige(i,3) = sige(i,3) + lbuf%VISC(jj(3) + i) / npg
856 mat_orth = mat_param(imat)%ORTHOTROPY
857 IF (mat_orth == 2)
THEN
858 IF(idrape > 0 .AND. (igtyp == 51 .OR. igtyp ==52))
THEN
859 dir_a => elbuf_tab(ng)%BUFLY(il)%LBUF_DIR(ipt)%DIRA
861 dir_a => elbuf_tab(ng)%BUFLY(il)%DIRA
867 IF (itens == 3) a2 = six
868 IF (itens == 4) a2 = -six ! lower
870 sige(i,1) = gbuf%FOR(jj(1)+i) + gbuf%MOM(jj(1)+i) * a2
871 sige(i,2) = gbuf%FOR(jj(2)+i) + gbuf%MOM(jj(2)+i) * a2
872 sige(i,3) = gbuf%FOR(jj(3)+i) + gbuf%MOM(jj(3)+i) * a2
881 r4(3) = r4(3) * invert(el2fa(nni+n))
882 tens(1,el2fa(nni+n)) = r4(1)
883 tens(2,el2fa(nni+n)) = r4(2)
884 tens(3,el2fa(nni+n)) = r4(3)
887 ELSE IF (itens > 100 .AND. itens < 201)
THEN
893 IF (igtyp == 51 .OR. igtyp == 52 .OR. igtyp == 17)
THEN
897 IF (igtyp == 1 .OR. igtyp == 9)
THEN
899 ipt =
min(ipt, elbuf_tab(ng)%BUFLY(1)%NPTT)
900 ELSE IF (igtyp == 10 .OR. igtyp == 11 .OR. igtyp == 16)
THEN
901 il =
min(ipt, elbuf_tab(ng)%NLAY)
905 imat = elbuf_tab(ng)%BUFLY(il)%IMAT
906 ivisc = mat_param(imat)%IVISC
910 lbuf => elbuf_tab(ng)%BUFLY(il)%LBUF(ir,is,ipt)
911 sige(i,1) = sige(i,1) + lbuf%SIG(jj(1) + i) / npg
912 sige(i,2) = sige(i,2) + lbuf%SIG(jj(2) + i) / npg
913 sige(i,3) = sige(i,3) + lbuf%SIG(jj(3) + i) / npg
921 lbuf => elbuf_tab(ng)%BUFLY(il)%LBUF(ir,is,ipt)
922 sige(i,1) = sige(i,1) + lbuf%VISC(jj(1) + i) / npg
923 sige(i,2) = sige(i,2) + lbuf%VISC(jj(2) + i) / npg
924 sige(i,3) = sige(i,3) + lbuf%VISC(jj(3) + i) / npg
929 mat_orth = mat_param(imat)%ORTHOTROPY
930 IF (mat_orth == 2)
THEN
931 dir_a => elbuf_tab(ng)%BUFLY(il)%DIRA
936 sige(i,1) = gbuf%FOR(jj(1)+i)
937 sige(i,2) = gbuf%FOR(jj(2)+i)
938 sige(i,3) = gbuf%FOR(jj(3)+i)
947 r4(3) = r4(3) * invert(el2fa(nni+n))
948 tens(1,el2fa(nni+n)) = r4(1)
949 tens(2,el2fa(nni+n)) = r4(2)
950 tens(3,el2fa(nni+n)) = r4(3)
955 ELSEIF (itens > 400 .AND. itens < 501)
THEN
959 IF (igtyp == 17 .OR. igtyp == 51 .OR. igtyp == 52)
THEN
960 il = elbuf_tab(ng)%NLAY
961 ipt = elbuf_tab(ng)%BUFLY(il)%NPTT
963 id_ply = igeo(1,stack%IGEO(2+j,isubstack))
964 IF (id_ply == iply)
THEN
966 ipt = elbuf_tab(ng)%BUFLY(il)%NPTT
970 imat = elbuf_tab(ng)%BUFLY(il)%IMAT
971 ivisc = mat_param(imat)%IVISC
973 sige(1:nel,1:3) = zero
977 lbuf => elbuf_tab(ng)%BUFLY(il)%LBUF(ir,is,ipt)
979 sige(i,2) = sige(i,2) + lbuf%SIG(jj(2) + i) / npg
980 sige(i,3) = sige(i,3) + lbuf%SIG(jj
989 lbuf => elbuf_tab(ng)%BUFLY(il)%LBUF(ir,is,ipt)
990 sige(i,1) = sige(i,1) + lbuf%VISC(jj(1) + i) / npg
991 sige(i,2) = sige(i,2)
992 sige(i,3) = sige(i,3) + lbuf%VISC(jj(3) + i) / npg
998 mat_orth = mat_param(imat)%ORTHOTROPY
999 IF (mat_orth == 2)
THEN
1000 dir_a => elbuf_tab(ng)%BUFLY(il)%DIRA
1010 tens(1,el2fa(nni+n)) = r4(1)
1011 tens(2,el2fa(nni+n)) = r4(2)
1012 tens(3,el2fa(nni+n)) = r4(3)
1016 ELSEIF (itens > 500 .AND. itens < 601 .AND.
1017 . (igtyp == 17 .OR. igtyp == 51 .OR. igtyp == 52))
THEN
1023 id_ply = igeo(1,stack%IGEO(2+j
1024 IF (id_ply == iply)
THEN
1029 imat = elbuf_tab(ng)%BUFLY(il)%IMAT
1030 ivisc = mat_param(imat)%IVISC
1032 sige(1:nel,1:3) = zero
1036 lbuf => elbuf_tab(ng)%BUFLY(il)%LBUF(ir,is,ipt)
1037 sige(i,1) = sige(i,1) + lbuf%SIG(jj(1) + i) / npg
1038 sige(i,2) = sige(i,2) + lbuf%SIG
1039 sige(i,3) = sige(i,3) + lbuf%SIG
1048 lbuf => elbuf_tab(ng)%BUFLY(il)%LBUF(ir
1049 sige(i,1) = sige(i,1
1057 mat_orth = mat_param(imat)%ORTHOTROPY
1058 IF (mat_orth == 2)
THEN
1059 dir_a => elbuf_tab(ng)%BUFLY(il)%DIRA
1068 r4(3) = r4(3) * invert(el2fa(nni+n))
1069 tens(1,el2fa(nni+n)) = r4(1)
1070 tens(2,el2fa(nni+n)) = r4(2)
1071 tens(3,el2fa(nni+n)) = r4(3)
1074 ELSE IF (itens > 600 .AND. itens < 1611)
THEN
1076 IF ((igtyp == 10 .OR. igtyp == 11 .OR. igtyp == 16))
THEN
1078 ilay = int((ius - 1)/10)
1079 IF (ilay == 0) ilay = 100
1080 il =
min(ilay, elbuf_tab(ng)%NLAY)
1083 imat = elbuf_tab(ng)%BUFLY(il)%IMAT
1084 ivisc = mat_param(imat)%IVISC
1086 sige(1:nel,1:3) = zero
1090 lbuf => elbuf_tab(ng)%BUFLY(il)%LBUF(ir,is
1091 sige(i,1) = sige(i,1) + lbuf%SIG(jj(1) + i) / npg
1092 sige(i,2) = sige(i,2) + lbuf%SIG(jj(2) + i) / npg
1093 sige(i,3) = sige(i,3) + lbuf%SIG(jj(3) + i) / npg
1102 lbuf => elbuf_tab(ng)%BUFLY(il)%LBUF(ir,is,ipt)
1103 sige(i,1) = sige(i,1) + lbuf%VISC(jj(1) + i) / npg
1104 sige(i,2) = sige(i,2) + lbuf%VISC(jj(2) + i) / npg
1105 sige(i,3) = sige(i,3) + lbuf%VISC(jj(3) + i) / npg
1111 mat_orth = mat_param(imat
1112 IF (mat_orth == 2)
THEN
1113 dir_a => elbuf_tab(ng)%BUFLY(il)%DIRA
1122 r4(3) = r4(3) * invert(el2fa(nni+n))
1123 tens(1,el2fa(nni+n)) = r4(1)
1124 tens(2,el2fa(nni+n)) = r4(2)
1125 tens(3,el2fa(nni+n)) = r4(3)
1129 ELSEIF (itens > 1610 .AND. itens < 1611 + mx_ply_anim )
THEN
1132 IF (igtyp == 17 .or. igtyp == 51 .or. igtyp == 52)
THEN
1133 sige(1:nel,1:3) = zero
1135 IF (ply_anim_stress(3*(iply - 1) + 2) == 2)
THEN
1136 ipt = ply_anim_stress(3
1139 IF (igtyp == 17 .OR. igtyp == 51)
THEN
1140 id_ply = igeo(1,stack%IGEO(2+il,isubstack))
1141 ELSE IF (igtyp == 52)
THEN
1142 id_ply =
ply_info(1,stack%IGEO(2+il,isubstack) - numstack)
1144 IF (id_ply == ply_anim_stress(3*(iply - 1) + 1))
THEN
1146 ivisc = mat_param(imat)%IVISC
1147 IF (ipt <= elbuf_tab(ng)%BUFLY(il)%NPTT)
THEN
1151 lbuf => elbuf_tab(ng)%BUFLY(il)%LBUF(ir,is,ipt)
1152 sige(i,1) = sige(i,1) + lbuf%SIG(jj(1) + i) / npg
1153 sige(i,2) = sige(i,2) + lbuf%SIG(jj(2) + i) / npg
1154 sige(i,3) = sige(i,3) + lbuf%SIG(jj(3) + i) / npg
1159 mat_orth = mat_param(imat)%ORTHOTROPY
1160 IF (mat_orth > 0)
THEN
1161 IF (idrape > 0 .AND. (igtyp == 51 .OR. igtyp ==52) )
THEN
1162 dir_a => elbuf_tab(ng)%BUFLY(il)%LBUF_DIR(ipt)%DIRA
1163 dir_b => elbuf_tab(ng)%BUFLY(il)%LBUF_DIR(ipt)%DIRB
1165 dir_a => elbuf_tab(ng)%BUFLY(il)%DIRA
1166 dir_b => elbuf_tab(ng)%BUFLY(il)%DIRB
1169 IF (mat_orth == 2)
THEN
1171 ELSE IF (mat_orth == 3)
THEN
1180 r4(3) = r4(3) * invert(el2fa(nni+n))
1181 tens(1,el2fa(nni+n)) = r4(1)
1182 tens(2,el2fa(nni+n)) = r4(2)
1183 tens(3,el2fa(nni+n)) = r4(3)
1193 ELSE IF (itens == idx_mstress+2 .OR. itens == idx_mstress+3)
THEN
1197 IF (itens == idx_mstress+2)
THEN
1198 IF (igtyp == 1 .OR. igtyp == 9)
THEN
1200 ipt = elbuf_tab(ng)%BUFLY(il)%NPTT
1201 ELSE IF (igtyp == 10 .OR. igtyp == 11 .OR. igtyp == 16)
THEN
1202 il = elbuf_tab(ng)%NLAY
1204 ELSE IF (igtyp == 17 .OR. igtyp == 51 .OR. igtyp == 52)
THEN
1205 il = elbuf_tab(ng)%NLAY
1206 ipt = elbuf_tab(ng)%BUFLY(il)%NPTT
1208 ELSE IF (itens == idx_mstress+3)
THEN
1213 imat = elbuf_tab(ng)%BUFLY(il)%IMAT
1214 ivisc = mat_param(imat)%IVISC
1218 lbuf => elbuf_tab(ng)%BUFLY(il
1219 sige(i,1) = sige(i,1) + lbuf%SIG(jj
1220 sige(i,2) = sige(i,2) + lbuf%SIG(jj(2) + i) / npg
1221 sige(i,3) = sige(i,3) + lbuf%SIG(jj(3) + i) / npg
1229 lbuf => elbuf_tab(ng)%BUFLY(il)%LBUF(ir,is,ipt)
1230 sige(i,1) = sige(i,1) + lbuf%VISC(jj(1
1231 sige(i,2) = sige(i,2) + lbuf%VISC(jj(2) + i) / npg
1232 sige(i,3) = sige(i,3) + lbuf%VISC(jj(3) + i) / npg
1243 r4(3) = r4(3) * invert(el2fa(nni+n))
1244 tens(1,el2fa(nni+n)) = r4(1)
1245 tens(2,el2fa(nni+n)) = r4(2)
1246 tens(3,el2fa(nni+n)) = r4(3)
1249 ELSE IF (itens > idx_mstress+3 .AND. itens < idx_mstress+103)
THEN
1255 IF (igtyp == 51 .OR. igtyp == 52)
THEN
1258 IF (igtyp == 1 .OR. igtyp == 9)
THEN
1260 ipt =
min(ipt, elbuf_tab(ng)%BUFLY(1)%NPTT)
1261 ELSE IF (igtyp == 10 .OR. igtyp == 11 .OR. igtyp == 16)
THEN
1263 il =
min(ipt, elbuf_tab(ng)%NLAY)
1264 ELSE IF (igtyp == 17)
THEN
1269 id_ply = igeo(1,stack%IGEO(2+j,isubstack))
1270 IF (id_ply == iply)
THEN
1276 imat = elbuf_tab(ng)%BUFLY(il)%IMAT
1277 ivisc = mat_param(imat)%IVISC
1281 lbuf => elbuf_tab(ng)%BUFLY(il)%LBUF(ir,is,ipt)
1282 sige(i,1) = sige(i,1) + lbuf%SIG(jj(1) + i) / npg
1283 sige(i,2) = sige(i,2) + lbuf%SIG(jj(2) + i) / npg
1284 sige(i,3) = sige(i,3) + lbuf%SIG(jj(3) + i) / npg
1292 lbuf => elbuf_tab(ng)%BUFLY(il)%LBUF(ir,is,ipt)
1293 sige(i,1) = sige(i,1) + lbuf%VISC(jj(1) + i) / npg
1294 sige(i,2) = sige(i,2) + lbuf%VISC(jj(2) + i) / npg
1295 sige(i,3) = sige(i,3) + lbuf%VISC(jj(3) + i) / npg
1306 r4(3) = r4(3) * invert(el2fa(nni+n))
1307 tens(1,el2fa(nni+n)) = r4(1)
1308 tens(2,el2fa(nni+n)) = r4(2)
1309 tens(3,el2fa(nni+n)) = r4(3)
1314 ELSEIF (itens > idx_idply_mstress .AND.
1315 . itens < idx_idply_mstress + mx_ply_anim )
THEN
1318 IF (igtyp == 17 .or. igtyp == 51 .or. igtyp == 52)
THEN
1319 sige(1:nel,1:3) = zero
1320 iply = itens - idx_idply_mstress
1321 IF (ply_anim_stress(3*(iply - 1) + 2) == 3)
THEN
1323 ipt = ply_anim_stress(3*(iply - 1) + 3)
1325 IF (igtyp == 17 .OR. igtyp == 51)
THEN
1326 id_ply = igeo(1,stack%IGEO(2+il,isubstack))
1327 ELSE IF (igtyp == 52)
THEN
1328 id_ply =
ply_info(1,stack%IGEO(2+il,isubstack) - numstack)
1330 IF (id_ply == iply)
THEN
1331 imat = elbuf_tab(ng)%BUFLY(il)%IMAT
1332 ivisc = mat_param(imat)%IVISC
1333 IF (ipt <= elbuf_tab(ng)%BUFLY(il)%NPTT)
THEN
1337 lbuf => elbuf_tab(ng)%BUFLY(il)%LBUF(ir,is,ipt)
1338 sige(i,1) = sige(i,1) + lbuf%SIG(jj(1) + i) / npg
1339 sige(i,2) = sige(i,2) + lbuf%SIG(jj(2) + i) / npg
1340 sige(i,3) = sige(i,3) + lbuf%SIG(jj(3) + i) / npg
1350 r4(3) = r4(3) * invert(el2fa(nni+n))
1351 tens(1,el2fa(nni+n)) = r4(1)
1352 tens(2,el2fa(nni+n)) = r4(2)
1353 tens(3,el2fa(nni+n)) = r4(3)
1363 ELSE IF (itens >= 1 .and. itens <= 4)
THEN
1368 r4(j) = a1 * gbuf%FOR(jj(j)+i) + a2 * gbuf%MOM(jj(j)+i)
1370 r4(3) = r4(3) * invert(el2fa(nni+n))
1371 tens(1,el2fa(nni+n)) = r4(1)
1372 tens(2,el2fa(nni+n)) = r4(2)
1373 tens(3,el2fa(nni+n)) = r4(3)
1377 ELSEIF (istre == 0 .AND. istrain > 0)
THEN
1381 IF (itens == 5)
THEN
1386 r4(1) = gbuf%STRA(jj(1)+i)
1387 r4(2) = gbuf%STRA(jj(2)+i)
1388 r4(3) = gbuf%STRA(jj(3)+i) * invert(j)*half
1398 r4(1) = a1*gbuf%STRA(jj(1)+i) + a2*gbuf%STRA(jj(6)+i) * thk
1399 r4(2) = a1*gbuf%STRA(jj(2)+i) + a2*gbuf%STRA(jj(7)+i) * thk
1400 r4(3) = a1*gbuf%STRA(jj(3)+i) + a2*gbuf%STRA(jj(8)+i) * thk
1401 r4(3) = r4(3) * invert(j) * half
1408 ELSEIF (istre == 2)
THEN
1416 IF (itens /= 92)
THEN
1418 r4(j) = a1*epsdot(j,n+n0) + a2*epsdot(j+3,n+n0)*thk
1422 r4(j) = epsdot(j+3,n+n0)
1425 r4(3) = r4(3) * invert(el2fa(nni+n)) * half
1426 tens(1,el2fa(nni+n)) = r4(1)
1427 tens(2,el2fa(nni+n)) = r4(2)
1428 tens(3,el2fa(nni+n)) = r4(3)
1434 IF(
ALLOCATED(matly))
DEALLOCATE(matly)
1435 IF(
ALLOCATED(thkly))
DEALLOCATE(thkly)
1436 IF(
ALLOCATED(posly))
DEALLOCATE(posly)
1437 IF(
ALLOCATED(thk_ly))
DEALLOCATE(thk_ly)
1451 wa(3*n-2) = tens(1,n)
1452 wa(3*n-1) = tens(2,n)
1453 wa(3*n ) = tens(3,n)
1455 IF (ispmd == 0)
THEN
1456 buf = (numelqg+numelcg+numeltgg)*3
1463 IF (nelcut > 0)
THEN
1464 IF (nspmd == 1)
THEN
1468 ELSEIF (ispmd == 0)
THEN