44 1 X ,IPARG ,IPM ,IGEO ,IXC ,
45 2 IXTG ,WA,WAP0 ,IPARTC, IPARTTG,
46 3 IPART_STATE,STAT_INDXC,STAT_INDXTG,THKE,SIZP0,
47 4 GEO ,STACK,DRAPE_SH4N,DRAPE_SH3N,DRAPEG)
55 use element_mod ,
only : nixc,nixtg
59#include "implicit_f.inc"
75 INTEGER IXC(NIXC,*),IXTG(NIXTG,*),
76 . IPARG(NPARG,*),IPM(NPROPMI,*),IGEO(NPROPGI,*),
77 . IPARTC(*), IPARTTG(*), IPART_STATE(*),
78 . stat_indxc(*), stat_indxtg(*)
80 . thke(*),x(3,*),geo(*)
81 TYPE (ELBUF_STRUCT_),
DIMENSION(NGROUP),
TARGET :: ELBUF_TAB
82 TYPE (STACK_PLY) :: STACK
83 TYPE (DRAPE_) :: DRAPE_SH4N(NUMELC_DRAPE), DRAPE_SH3N(NUMELTG_DRAPE)
84 TYPE (DRAPEG_) :: DRAPEG
85 double precision WA(*),WAP0(*)
89 INTEGER I, J, K, N, JJ, LEN, IOFF, NG, NEL, NFT, ITY, LFT, NPT,
90 . LLT, MLW, ISTRAIN,ID, IPRT0, IPRT,NPG,IPG,IE,NPTR,NPTS,G_STRA,
91 . ITHK,KK(8),NF1,IGTYP,IREL,IHBE,NLAY,IBID0,MAT_1,PID_1,ILAY,NF3,
93 INTEGER,
DIMENSION(:),
ALLOCATABLE :: PTWA
94 INTEGER,
DIMENSION(:),
ALLOCATABLE :: PTWA_P0
96 . THK, EM, EB, H1, H2, H3
97 CHARACTER*100 DELIMIT,LINE
98 TYPE(g_bufel_) ,
POINTER :: GBUF
100 TYPE(buf_lay_) ,
POINTER :: BUFLY
101 INTEGER LAYNPT_MAX,NLAY_MAX,ISUBSTACK,IPT_ALL,NPTT,IT,IPT,NPT_ALL,MPT
103 .
DIMENSION(:),
POINTER :: strain
105 . qt(9,mvsiz),straing(6),zh,thkp ,thk0(mvsiz)
106 INTEGER,
DIMENSION(:) ,
ALLOCATABLE :: MATLY
107 my_real,
DIMENSION(:) ,
ALLOCATABLE :: THKLY
108 my_real,
DIMENSION(:,:) ,
ALLOCATABLE :: posly,thk_ly
112 ./
'#---1----|----2----|----3----|----4----|----5----|----6----|'/
114 ./
'----7----|----8----|----9----|----10---|'/
118 CALL my_alloc(ptwa,
max(stat_numelc ,stat_numeltg))
119 ALLOCATE(ptwa_p0(0:
max(1,stat_numelc_g,stat_numeltg_g)))
122 IF(stat_numelc==0)
GOTO 200
128 gbuf => elbuf_tab(ng)%GBUF
134 nptr = elbuf_tab(ng)%NPTR
135 npts = elbuf_tab(ng)%NPTS
136 nlay = elbuf_tab(ng)%NLAY
139 isubstack=iparg(71,ng)
141 IF (ihbe == 23 .AND. gbuf%G_STRPG>gbuf%G_STRA) npg=4
142 IF (ihbe == 23 .AND. npg/=4) cycle
147 IF (ihbe>10.OR.igtyp==16.OR.ishfram ==0)
THEN
149 ELSEIF (ishfram ==1)
THEN
163 thk0(lft:llt) = gbuf%THK(lft:llt)
165 thk0(lft:llt) = thke(lft+nft:llt+nft)
169 IF(igtyp == 51 .OR. igtyp == 52)
THEN
171 laynpt_max =
max(laynpt_max , elbuf_tab(ng)%BUFLY(ilay)%NPTT)
174 nlay_max =
max(nlay,npt, elbuf_tab(ng)%NLAY)
175 ALLOCATE(matly(mvsiz*nlay_max), thkly(mvsiz*nlay_max*laynpt_max),
176 . posly(mvsiz,nlay_max*laynpt_max),thk_ly(nel,nlay_max*laynpt_max))
181 numel_drape = numelc_drape
183 CALL layini(elbuf_tab(ng),lft ,llt ,geo ,igeo ,
184 . mat_1 ,pid_1 ,thkly ,matly ,posly ,
185 . igtyp ,ibid0 ,ibid0 ,nlay ,npt ,
186 . isubstack,stack ,drape_sh4n ,nft ,thke ,
187 . nel ,thk_ly ,drapeg%INDX_SH4N ,sedrape,numel_drape)
188 CALL get_q4l(lft ,llt ,ixc(1,nf1),x ,gbuf%OFF,irel ,qt )
191 npt_all = npt_all + elbuf_tab(ng)%BUFLY(ilay)%NPTT
200 IF(ipart_state(iprt)==0)cycle
203 IF (mlw /= 0 .AND. mlw /= 13)
THEN
218 IF (mlw /= 0 .AND. mlw /= 13)
THEN
225 IF (mlw == 0 .or. mlw == 13)
THEN
232 ELSEIF (npt==0 .AND. g_stra /= 0)
THEN
240 k = (ipg-1)*nel*g_stra
241 straing(1:2)=strain(kk(1:2)+i+k)
242 straing(3:5)=half*strain(kk(3:5)+i+k)
254 k = (ipg-1)*nel*g_stra
256 straing(1:3)=strain(kk(1:3)+i+k)+zh*strain(kk(6:8)+i+k)
257 straing(3)=half*straing(3)
258 straing(4:5)=half*strain(kk(4:5)+i+k)
268 ELSEIF (g_stra /= 0)
THEN
276 bufly => elbuf_tab(ng)%BUFLY(ilay)
282 k = (ipg-1)*nel*g_stra
283 zh = posly(i,ipt)*thkp
284 straing(1:3)=strain(kk(1:3)+i+k)+zh*strain(kk(6:8)+i+k)
285 straing(3)=half*straing(3)
286 straing(4:5)=half*strain(kk(4:5)+i+k)
294 wa(jj) = posly(i,ipt)*two
306 DEALLOCATE(matly, thkly, posly, thk_ly)
328 IF(ispmd==0.AND.len>0)
THEN
338 ioff = nint(wap0(j + 1))
340 iprt = nint(wap0(j + 2))
341 IF(iprt /= iprt0)
THEN
342 IF (izipstrs == 0)
THEN
343 WRITE(iugeo,
'(A)') delimit
344 WRITE(iugeo,
'(A)')
'/INISHE/STRA_F/GLOB'
346 .
'#------------------------ REPEAT --------------------------'
348 .
'# SHELLID NPT NPG THK'
349 WRITE(iugeo,
'(A/A/A)')
350 .
'# REPEAT I=1,NPG :',
352 .
'# E12, E23, E31, T,'
354 .
'#---------------------- END REPEAT ------------------------'
355 WRITE(iugeo,
'(A)') delimit
357 WRITE(line,
'(A)') delimit
359 WRITE(line,
'(A)')
'/INISHE/STRA_F/GLOB'
362 .
'#------------------------ REPEAT --------------------------'
365 .
'# SHELLID NPT NPG THK'
367 WRITE(line,
'(A)')
'# REPEAT I=1,NPG :'
369 WRITE(line,
'(A)')
'# E11, E22, E33,'
371 WRITE(line,
'(A)')
'# E12, E23, E31, T '
374 .
'#---------------------- END REPEAT ------------------------'
376 WRITE(line,
'(A)') delimit
381 id = nint(wap0(j + 3))
382 npt = nint(wap0(j + 4))
383 npg = nint(wap0(j + 5))
386 IF (izipstrs == 0)
THEN
387 WRITE(iugeo,
'(3I10,1PE20.13)')id,npt,npg,thk
389 WRITE(line,
'(3I10,1PE20.13)')id,npt,npg,thk
394 IF (izipstrs == 0)
THEN
395 WRITE(iugeo,
'(1P3E20.13)')(wap0(j + k),k
396 WRITE(iugeo,
'(1P4E20.13)')(wap0(j + k),k=4,7)
405 IF (izipstrs == 0)
THEN
406 WRITE(iugeo,
'(1P3E20.13)')(wap0(j + k),k=1,3)
407 WRITE(iugeo,
'(1P4E20.13)')(wap0(j + k),k=4,7)
417 IF (izipstrs == 0)
THEN
418 WRITE(iugeo,
'(1P3E20.13)')(wap0(j + k),k=1,3)
419 WRITE(iugeo,
'(1P4E20.13)')(wap0(j + k),k=4,7)
436 IF (stat_numeltg==0)
GOTO 300
442 gbuf => elbuf_tab(ng)%GBUF
451 isubstack=iparg(71,ng)
452 nptr = elbuf_tab(ng)%NPTR
453 npts = elbuf_tab(ng)%NPTS
454 nlay = elbuf_tab(ng)%NLAY
471 pid_1 = ixtg(nixtg-1,nf1)
473 thk0(lft:llt) = gbuf%THK(lft:llt)
476 thk0(lft:llt) = thke(lft+nf3:llt+nf3)
480 IF(igtyp == 51 .OR. igtyp == 52)
THEN
482 laynpt_max =
max(laynpt_max , elbuf_tab(ng)%BUFLY(ilay)%NPTT)
485 nlay_max =
max(nlay,npt, elbuf_tab(ng)%NLAY)
486 ALLOCATE(matly(mvsiz*nlay_max), thkly(mvsiz*nlay_max*laynpt_max),
487 . posly(mvsiz,nlay_max*laynpt_max),thk_ly(nel
492 numel_drape = numeltg_drape
494 CALL layini(elbuf_tab(ng),lft ,llt ,geo ,igeo ,
495 . mat_1 ,pid_1 ,thkly ,matly ,posly ,
496 . igtyp ,ibid0 ,ibid0 ,nlay ,npt ,
497 . isubstack,stack ,drape_sh3n ,nft ,thke ,
498 . nel ,thk_ly ,drapeg%INDX_SH3N,sedrape,numel_drape)
499 CALL get_t3l(lft ,llt ,ixtg(1,nf1),x ,gbuf%OFF,
503 npt_all = npt_all + elbuf_tab(ng)%BUFLY(ilay)%NPTT
512 IF(ipart_state(iprt)==0)cycle
516 IF (mlw /= 0 .AND. mlw /= 13)
THEN
524 wa(jj) = ixtg(nixtg,n)
530 IF (mlw /= 0 .AND. mlw /= 13)
THEN
538 IF (mlw == 0 .or. mlw == 13)
THEN
545 ELSEIF (npt==0 .AND. g_stra /= 0)
THEN
553 k = (ipg-1)*nel*g_stra
554 straing(1:2)=strain(kk(1:2)+i+k)
555 straing(3:5)=half*strain(kk(3:5)+i+k)
567 k = (ipg-1)*nel*g_stra
569 straing(1:3)=strain(kk(1:3)+i+k)+zh*strain(kk(6:8)+i+k)
570 straing(3)=half*straing(3)
571 straing(4:5)=half*strain(kk(4:5)+i+k)
581 ELSEIF (g_stra > 0)
THEN
589 bufly => elbuf_tab(ng)%BUFLY(ilay)
595 k = (ipg-1)*nel*g_stra
596 zh = posly(i,ipt)*thkp
597 straing(1:3)=strain(kk(1:3)+i+k)+zh*strain(kk(6:8)+i+k)
598 straing(3)=half*straing(3)
599 straing(4:5)=half*strain(kk(4:5)+i+k)
607 wa(jj) = posly(i,ipt)*two
610 ipt_all = ipt_all + nptt
619 DEALLOCATE(matly, thkly, posly, thk_ly)
641 IF(ispmd==0.AND.len>0)
THEN
644 DO n=1,stat_numeltg_g
651 ioff = nint(wap0(j + 1))
653 iprt = nint(wap0(j + 2))
654 IF(iprt /= iprt0)
THEN
655 IF (izipstrs == 0)
THEN
656 WRITE(iugeo,
'(A)') delimit
657 WRITE(iugeo,
'(A)')
'/INISH3/STRA_F/GLOB'
659 .
'#------------------------ REPEAT --------------------------'
661 .
'# SH3NID NPT NPG THK'
662 WRITE(iugeo,
'(A/A/A)')
663 .
'# REPEAT I=1,NPG :',
665 .
'# E12, E23, E31, T '
667 .
'#---------------------- END REPEAT ------------------------'
668 WRITE(iugeo,
'(A)') delimit
670 WRITE(line,
'(A)') delimit
672 WRITE(line,
'(A)')
'/INISH3/STRA_F/GLOB'
675 .
'#------------------------ REPEAT --------------------------'
678 .
'# SH3NID NPT NPG THK'
680 WRITE(line,
'(A)')
'# REPEAT I=1,NPG :'
682 WRITE(line,
'(A)')
'# E11, E22, E33,'
684 WRITE(line,
'(A)')
'# E12, E23, E31, T '
687 .
'#---------------------- END REPEAT ------------------------'
689 WRITE(line,
'(A)') delimit
694 id = nint(wap0(j + 3))
695 npt = nint(wap0(j + 4))
696 npg = nint(wap0(j + 5))
699 IF (izipstrs == 0)
THEN
700 WRITE(iugeo,
'(3I10,1PE20.13)')id,npt,npg,thk
702 WRITE(line,
'(3I10,1PE20.13)')id,npt,npg,thk
707 IF (izipstrs == 0)
THEN
708 WRITE(iugeo,
'(1P3E20.13)')(wap0(j + k),k=1,3)
709 WRITE(iugeo,
'(1P4E20.13)')(wap0(j + k),k=4,7)
718 IF (izipstrs == 0)
THEN
719 WRITE(iugeo,
'(1P3E20.13)')(wap0(j + k),k=1,3)
720 WRITE(iugeo,
'(1P4E20.13)')(wap0(j + k),k=4,7)
730 IF (izipstrs == 0)
THEN
731 WRITE(iugeo,
'(1P3E20.13)'
732 WRITE(iugeo,
'(1P4E20.13)')(wap0(j + k),k=4,7)
764 use element_mod ,
only : nixc
766#include "implicit_f.inc"
770#include "mvsiz_p.inc"
774 INTEGER IXC(NIXC,*),JFT,JLT,IREL
776 . X(3,*), OFFG(*),VQ(3,3,MVSIZ)
781 INTEGER IXCTMP2,IXCTMP3,IXCTMP4,IXCTMP5
783 . RX(MVSIZ),RY(MVSIZ),RZ(MVSIZ),SX(MVSIZ),SY(MVSIZ),
784 . R11(MVSIZ),R12(MVSIZ),R13(MVSIZ),R21(MVSIZ),R22(MVSIZ),
785 . r23(mvsiz),r31(mvsiz),r32(mvsiz),r33(mvsiz),
786 . sz(mvsiz),deta1(mvsiz)
794 rx(i)=x(1,ixctmp3)+x(1,ixctmp4)-x(1,ixctmp2)-x(1,ixctmp5)
795 sx(i)=x(1,ixctmp4)+x(1,ixctmp5)-x(1,ixctmp2)-x(1,ixctmp3)
796 ry(i)=x(2,ixctmp3)+x(2,ixctmp4)-x(2,ixctmp2)-x(2,ixctmp5)
797 sy(i)=x(2,ixctmp4)+x(2,ixctmp5)-x(2,ixctmp2)-x(2,ixctmp3)
798 rz(i)=x(3,ixctmp3)+x(3,ixctmp4)-x(3,ixctmp2)-x(3,ixctmp5)
799 sz(i)=x(3,ixctmp4)+x(3,ixctmp5)-x(3,ixctmp2)-x(3,ixctmp3)
807 . r11,r12,r13,r21,r22,r23,r31,r32,r33,deta1,offg )
900#include "implicit_f.inc"
912 . txx,tyy,tzz,txy,tyz,tzx,uxx,uyy,uzz,uxy,uyz,uzx,a,b,c
921 a = qt(1,1)*txx + qt(1,2)*txy + qt(1,3)*tzx
922 b = qt(1,1)*txy + qt(1,2)*tyy + qt(1,3)*tyz
923 c = qt(1,1)*tzx + qt(1,2)*tyz + qt(1,3)*tzz
924 uxx = a*qt(1,1) + b*qt(1,2) + c*qt(1,3)
925 uxy = a*qt(2,1) + b*qt(2,2) + c*qt(2,3)
926 uzx = a*qt(3,1) + b*qt(3,2) + c*qt(3,3)
927 a = qt(2,1)*txx + qt(2,2)*txy + qt(2,3)*tzx
928 b = qt(2,1)*txy + qt(2,2)*tyy + qt(2,3)*tyz
929 c = qt(2,1)*tzx + qt(2,2)*tyz + qt(2,3)*tzz
930 uyy = a*qt(2,1) + b*qt(2,2) + c*qt(2,3)
931 uyz = a*qt(3,1) + b*qt(3,2) + c*qt(3,3)
932 a = qt(3,1)*txx + qt(3,2)*txy + qt(3,3)*tzx
933 b = qt(3,1)*txy + qt(3,2)*tyy + qt(3,3)*tyz
934 c = qt(3,1)*tzx + qt(3,2)*tyz + qt(3,3)*tzz
935 uzz = a*qt(3,1) + b*qt(3,2) + c*qt(3,3)