34 SUBROUTINE thcoq(ELBUF_TAB,MATPARAM_TAB,NTHGRP2 , ITHGRP ,
36 . IPM ,IGEO ,IXC ,IXTG ,PM ,
37 . RTHBUF ,THKE ,STACK)
45 use element_mod ,
only : nixc,nixtg
49#include "implicit_f.inc"
61 INTEGER IPARG(NPARG,*),ITHBUF(*),IXC(NIXC,*),
62 . IXTG(NIXTG,*),(NPROPMI,*),IGEO(NPROPGI,*)
63 INTEGER,
INTENT(in) :: NTHGRP2
64 INTEGER,
DIMENSION(NITHGR,*),
INTENT(in) :: ITHGRP
66 . wa(*),pm(npropm,*),rthbuf(*),thke(*)
67 TYPE (ELBUF_STRUCT_),
DIMENSION(NGROUP),
TARGET :: ELBUF_TAB
68 TYPE () ,
DIMENSION(NUMMAT) ,
INTENT(IN) :: MATPARAM_TAB
72 INTEGER I,J,K,L,II,N, IH, NG, ITY, MTE, M5,M8,
73 . NPT,MPT,NPG,NPTR,NPTS,NPTT,NLAY,IP,IR,IS,IT,IL,IPT,
74 . NEL,NFT,I1,IUV,IAA,IADR,
75 . istrain,nu,nuvar,nuvarv,nuvard,igtyp,ihbe,
76 . ifailure,ivisc,ipmat,ishplyxfem,ipmat_iply,
77 . mat_iply,isubstack,ithk,npt_all,
78 . matly,kk(8),ipg,imat,mat_orth, idrape
79 INTEGER PID(MVSIZ),MAT(MVSIZ)
80 INTEGER :: NITER,IAD,NN,IADV,NVAR,ITYP,IJK
81 my_real :: WWA(50000),FUNC(6),SIG(5),SIGG(5)
82 my_real ,
DIMENSION(MVSIZ) :: dam1,dam2,wpla,
83 . fail,fail1,fail2,fail3
84 my_real :: f1,f2,f3,f4,f5,f11,f22,f33,f44,f55,cp,sp,mm1,mm2,mm3,
85 . mm11,mm22,mm33,d1,d2,d11,d12,d22,val_ly_ip,val_ly_average
86 TYPE(g_bufel_) ,
POINTER :: GBUF
87 TYPE(l_bufel_) ,
POINTER :: LBUF
88 TYPE(BUF_LAY_) ,
POINTER :: BUFLY
89 my_real ,
DIMENSION(:),
POINTER :: uvar,dir_a
90 my_real ,
DIMENSION(:,:),
ALLOCATABLE :: var
91 TYPE (STACK_PLY) :: STACK
103 IF(ityp==3.OR.ityp==7)
THEN
109 DO WHILE((ithbuf(ih+nn)/=ispmd).AND.(ih<iad+nn))
112 IF (ih>=iad+nn)
GOTO 666
116 IF (ity == ityp)
THEN
122 istrain = iparg(44,ng)
124 ifailure = iparg(43,ng)
125 ishplyxfem = iparg(50,ng)
126 isubstack = iparg(71,ng)
128 gbuf => elbuf_tab(ng)%GBUF
129 nptr = elbuf_tab(ng)%NPTR
130 npts = elbuf_tab(ng)%NPTS
131 nptt = elbuf_tab(ng)%NPTT
132 nlay = elbuf_tab(ng)%NLAY
133 idrape = elbuf_tab(ng)%IDRAPE
143 IF (igtyp == 51 .OR. igtyp == 52)
THEN
146 npt_all = npt_all + elbuf_tab(ng)%BUFLY(ipt)%NPTT
148 IF (nlay == 1) mpt =
max(1,npt_all)
156 IF (mte /= 13 .and. mte /= 0)
THEN
158 IF ((mte>=29.AND.mte<=31).OR.
159 . mte == 35.OR.mte == 36.OR.mte == 43.OR.
160 . mte == 44.OR.mte == 45.OR.mte == 48.OR.mte>=50)
THEN
163 ELSEIF (mte == 25)
THEN
187 IF (igtyp == 11)
THEN
191 matly = igeo(ipmat+n,pid(i))
192 IF (matparam_tab(matly)%IVISC > 0)
THEN
194 nuvarv =
max(nuvarv, matparam_tab(matly)%VISC%NUVAR)
198 ELSEIF (igtyp == 9 .OR. igtyp == 10)
THEN
202 IF (matparam_tab(matly)%IVISC > 0)
THEN
204 nuvarv =
max(nuvarv, matparam_tab(matly)%VISC%NUVAR)
208 ELSEIF (igtyp == 17 .OR. igtyp == 51 .OR. igtyp == 52)
THEN
212 matly = stack%IGEO(ipmat+n,isubstack)
213 IF (matparam_tab(matly
THEN
215 nuvarv =
max(nuvarv, matparam_tab(matly)%VISC%NUVAR)
220 IF (ishplyxfem > 0)
THEN
221 ipmat_iply = ipmat + mpt
224 mat_iply = stack%IGEO(ipmat_iply + j ,isubstack)
225 nuvard =
max(nuvard, ipm(221,mat_iply))
244 ii = ((ih-1) - iad)*nvar
245 DO WHILE((ithbuf(ih+nn) /= ispmd) .AND. (ih < iad+nn))
249 IF (ih > iad+nn)
GOTO 666
258 f11 = gbuf%FOR(kk(1)+i)
259 f22 = gbuf%FOR(kk(2)+i)
260 f33 = gbuf%FOR(kk(3)+i)
261 f44 = gbuf%FOR(kk(4)+i)
262 f55 = gbuf%FOR(kk(5)+i)
264 mm11 = gbuf%MOM(kk(1)+i)
265 mm22 = gbuf%MOM(kk(2)+i)
266 mm33 = gbuf%MOM(kk(3)+i)
278 . + (cp*cp-sp*sp )*f33
293 . + (cp*cp-sp*sp )*mm33
295 f1 = gbuf%FOR(kk(1)+i)
296 f2 = gbuf%FOR(kk(2)+i)
297 f3 = gbuf%FOR(kk(3)+i)
298 f4 = gbuf%FOR(kk(4)+i)
299 f5 = gbuf%FOR(kk(5)+i)
301 mm1 = gbuf%MOM(kk(1)+i)
302 mm2 = gbuf%MOM(kk(2)+i)
303 mm3 = gbuf%MOM(kk(3)+i)
313 wwa(9) = gbuf%EINT(i)
314 wwa(10)= gbuf%EINT(i+nel)
331 IF (gbuf%G_EPSD == 0)
THEN
343 IF(idrape > 0 .AND. (igtyp == 51 .OR. igtyp == 52) )
THEN
345 bufly => elbuf_tab(ng)%BUFLY(il)
351 dir_a => elbuf_tab(ng)%BUFLY(il)%LBUF_DIR(it)%DIRA
355 lbuf => bufly%LBUF(ir,is,it)
357 sig(j) = sig(j) + lbuf%SIG(kk(j) + i) / npg
366 sigg(1) = sigg(1) + (d11*sig(1) + d22*sig(2) + two*d12 *sig(3)) /nptt
368 sigg(3) = sigg(3) + (d12*sig(2) + (d11-d22)*sig(3) -d12*sig
369 sigg(4) = sigg(4) + (d1 *sig(4) - d2 *sig(5)) / nptt
370 sigg(5) = sigg(5) + (d1 *sig(5) + d2 *sig(4)) / nptt
380 bufly => elbuf_tab(ng)%BUFLY(il)
388 lbuf => bufly%LBUF(ir,is,it)
390 sig(j) = sig(j) + lbuf%SIG(kk
395 mat_orth = matparam_tab(imat)%ORTHOTROPY
396 IF (mat_orth == 1)
THEN
400 ELSE IF (mat_orth == 2)
THEN
401 dir_a => elbuf_tab(ng)%BUFLY(il)%DIRA
407 wwa(k + 1) = d11*sig(1) + d22*sig(2) + two*d12 *sig(3)
408 wwa(k + 2) = d22*sig(1) + d11*sig(2) - two*d12 *sig(3)
409 wwa(k + 3) =-d12*sig(1) + d12*sig(2) +(d11-d22)*sig(3)
410 wwa(k + 4) =-d2 *sig(5) + d1 *sig(4)
411 wwa(k + 5) = d1 *sig(5) + d2 *sig(4)
418 bufly => elbuf_tab(ng)%BUFLY(il)
420 ivisc = matparam_tab(imat)%IVISC
428 lbuf => bufly%LBUF(ir,is,it)
430 func(j) = func(j) + lbuf%VISC(kk(j) + i) / nptt
434 wwa(k+j) = func(j) / npg
446 IF (gbuf%G_PLA > 0)
THEN
475 bufly => elbuf_tab(ng)%BUFLY(ipt)
476 IF (bufly%L_PLA > 0)
THEN
477 wwa(13) =
min(wwa(13),abs(bufly%PLAPT(i)))
478 wwa(14) =
max(wwa(14),abs(bufly%PLAPT(i)))
483 bufly => elbuf_tab(ng)%BUFLY(ipt)
485 IF (bufly%L_PLA > 0)
THEN
488 lbuf => bufly%LBUF(1,1,it)
489 func(6) = func(6) + abs(lbuf%PLA(i))/nptt
491 wwa(13) =
min(wwa(13),func(6))
492 wwa(14) =
max(wwa(14),func(6))
498 bufly => elbuf_tab(ng)%BUFLY(1)
502 IF (bufly%L_PLA > 0)
THEN
503 wwa(13) =
min(wwa(13),abs(bufly%PLAPT(i1+i)))
504 wwa(14) =
max(wwa(14),abs(bufly%PLAPT(i1+i)))
508 bufly => elbuf_tab(ng)%BUFLY(1)
511 lbuf => bufly%LBUF(1,1,it)
512 IF (bufly%L_PLA > 0)
THEN
514 wwa(14) =
max(wwa(14),abs(lbuf%PLA(i)))
523 IF (ifailure == 0)
THEN
525 wwa(30280) = 100*fail(i)/npt
526 wwa(30281) = fail1(i)
527 wwa(30282) = fail2(i)
528 wwa(30283) = fail3(i)
533 bufly => elbuf_tab(ng)%BUFLY(ipt)
535 val_ly_average = zero
540 lbuf => bufly%LBUF(ir,is,it)
541 val_ly_ip = val_ly_ip + lbuf%PLA(i)/nptt
543 val_ly_average = val_ly_average + val_ly_ip/npg
546 wwa(30283 + ipt ) = val_ly_average
553 IF (gbuf%G_PLANL > 0)
THEN
554 bufly => elbuf_tab(ng)%BUFLY(1)
560 wwa(37855) = wwa(37855) +
561 . bufly%LBUF(ir,is,it)%PLANL(i)/(nptr*npts*nptt)
566 IF (gbuf%G_EPSDNL > 0)
THEN
573 wwa(37856) = wwa(37856) +
574 . bufly%LBUF(ir,is,it)%EPSDNL(i)/(nptr*npts*nptt)
582 IF ((mte>=29.AND.mte<=31).OR.
583 . mte==35.OR.mte==36.OR.mte==43.OR.
584 . mte==44.OR.mte==45.OR.mte==48.OR.mte>=50)
THEN
586 nuvar = elbuf_tab(ng)%BUFLY(1)%NVAR_MAT
587 ALLOCATE (var(nuvar,
max(1,mpt)))
590 IF (mte == 58 .or. mte == 158)
THEN
593 nuvar = elbuf_tab(ng)%BUFLY(il)%NVAR_MAT
594 nptt = elbuf_tab(ng)%BUFLY(il)%NPTT
599 uvar=>elbuf_tab(ng)%BUFLY(il)%MAT(ir,is,it)%VAR
602 IF (j==4 .OR. j==5)
THEN
603 var(j,il) = var(j,il) + (exp(uvar(i1+i))-one)/npg
605 var(j,il) = var(j,il) + uvar(i1+i)/npg
607 wwa(6518 + (il-1)*60*4 + (k-1)*60 + j) =
615 nuvar = elbuf_tab(ng)%BUFLY(1)%NVAR_MAT
616 nptt = elbuf_tab(ng)%BUFLY(1)%NPTT
620 uvar=>elbuf_tab(ng)%BUFLY(1)%MAT(ir,is,ipt)%VAR
624 IF (j==4 .OR. j==5)
THEN
625 var(j,ipt) = var(j, ipt) + (exp(uvar(i1+i))-one)/npg
627 var(j,ipt) = var(j, ipt) + uvar(i1 + i)/npg
629 wwa(6518 + (ipt-1)*60*4 + (k-1)*60 + j) =
639 nuvar = elbuf_tab(ng)%BUFLY(il)%NVAR_MAT
640 nptt = elbuf_tab(ng)%BUFLY(il)%NPTT
645 uvar=>elbuf_tab(ng)%BUFLY(il)%MAT(ir,is,it)%VAR
648 var(j,il) = var(j,il) + uvar(i1+i)/npg
649 wwa(6518 + (il-1)*60*4 + (k-1)*60 + j) =
657 nuvar = elbuf_tab(ng)%BUFLY(1)%NVAR_MAT
658 nptt = elbuf_tab(ng)%BUFLY(1)%NPTT
662 uvar=>elbuf_tab(ng)%BUFLY(1)%MAT(ir,is,ipt)%VAR
666 var(j,ipt) = var(j, ipt) + uvar(i1 + i)/npg
667 wwa(6518 + (ipt-1)*60*4 + (k-1)*60 + j) =
678 wwa(23+j)=var(j,iabs(mpt)/2 + 1)
692 wwa(iuv + (j - 1)*iaa + ipt) = var(j, ipt)
701 IF (istrain /= 0)
THEN
702 wwa(15)=gbuf%STRA(kk(1)+i)
703 wwa(16)=gbuf%STRA(kk(2)+i)
704 wwa(17)=gbuf%STRA(kk(3)+i)
705 wwa(18)=gbuf%STRA(kk(4)+i)
706 wwa(19)=gbuf%STRA(kk(5)+i)
707 wwa(20)=gbuf%STRA(kk(6)+i)
708 wwa(21)=gbuf%STRA(kk(7)+i)
709 wwa(22)=gbuf%STRA(kk(8)+i)
712 IF(ihbe ==11.AND.
npinch > 0)
THEN
713 wwa(37848:37853) = zero
715 wwa(37847+1) = wwa(37847+1) + fourth*gbuf%EPGPINCHXZ(4*(i-1)+ipg)
716 wwa(37847+2) = wwa(37847+2) + fourth*gbuf%EPGPINCHYZ(4*(i-1)+ipg)
717 wwa(37847+3) = wwa(37847+3) + fourth*gbuf%EPGPINCHZZ(4*(i-1)+ipg)
718 wwa(37847+4) = wwa(37847+4) + fourth*gbuf%FORPGPINCH(4*(i-1)+ipg)
719 wwa(37847+5) = wwa(37847+5) + fourth*gbuf%MOMPGPINCH(8*(i-1)+2*(ipg-1)+1)
720 wwa(37847+6) = wwa(37847+6) + fourth*gbuf%MOMPGPINCH(8*(i-1)+2*ipg)
722 wwa(37847+7) = gbuf%THK(i)
726 DO l=iadv,iadv+nvar-1