33 SUBROUTINE thcoq(ELBUF_TAB,MATPARAM_TAB,NTHGRP2 , ITHGRP ,
35 . IPM ,IGEO ,IXC ,IXTG ,PM ,
36 . RTHBUF ,THKE ,STACK)
47#include "implicit_f.inc"
59 INTEGER IPARG(NPARG,*),ITHBUF(*),IXC(NIXC,*),
60 . IXTG(NIXTG,*),IPM(NPROPMI,*),IGEO(NPROPGI,*)
61 INTEGER,
INTENT(in) :: NTHGRP2
62 INTEGER,
DIMENSION(NITHGR,*),
INTENT(in) :: ITHGRP
64 . wa(*),pm(npropm,*),rthbuf(*),thke(*)
65 TYPE (ELBUF_STRUCT_),
DIMENSION(NGROUP),
TARGET :: ELBUF_TAB
66 TYPE (MATPARAM_STRUCT_) ,
DIMENSION(NUMMAT) ,
INTENT(IN) :: MATPARAM_TAB
70 INTEGER I,J,K,L,II,JJ,N, IH, NG, ITY, MTE, M2, M3, M5,M8,
71 . NPT,MPT,NPG,NPTR,NPTS,NPTT,NLAY,IP,IR,IS,IT,IL,IPT,
72 . LWA,NEL,NFT,I1,I2,I3,I4,IUV,IAA,IADR,N16,N16A,
73 . istrain,nu,nuvar,nuvarv,nuvard,igtyp,ihbe,nbd1,nbd2,nbd3,
74 . ifailure,iadd,isrot,ivisc,ipmat,ptmat,ishplyxfem,ipmat_iply,
75 . mat_iply,nbdelm,iwa,nv,ngl,iigeo,iadi,isubstack,ithk,npt_all,
76 . matly,kk(8),ipinch,ipg,imat,mat_orth, idrape
77 INTEGER PID(MVSIZ),MAT(MVSIZ)
78 INTEGER :: NITER,IAD,NN,IADV,NVAR,ITYP,IJK
79 my_real :: WWA(50000),FUNC(6),SIG(5),SIGG(5)
80 my_real ,
DIMENSION(MVSIZ) :: dam1,dam2,wpla,dmax,wpmax,
81 . fail,fail1,fail2,fail3
82 my_real :: f1,f2,f3,f4,f5,f11,f22,f33,f44,f55,cp,sp,mm1,mm2,mm3,
83 . mm11,mm22,mm33,d1,d2,d11,d12,d22,val_ly_ip,val_ly_average
84 TYPE(g_bufel_) ,
POINTER :: GBUF
85 TYPE(l_bufel_) ,
POINTER :: LBUF
86 TYPE(BUF_LAY_) ,
POINTER :: BUFLY
87 my_real ,
DIMENSION(:),
POINTER :: uvar,dir_a
88 my_real ,
DIMENSION(:,:),
ALLOCATABLE :: var
89 TYPE (STACK_PLY) :: STACK
101 IF(ityp==3.OR.ityp==7)
THEN
107 DO WHILE((ithbuf(ih+nn)/=ispmd).AND.(ih<iad+nn))
110 IF (ih>=iad+nn)
GOTO 666
114 IF (ity == ityp)
THEN
120 istrain = iparg(44,ng)
122 ifailure = iparg(43,ng)
123 ishplyxfem = iparg(50,ng)
124 isubstack = iparg(71,ng)
126 gbuf => elbuf_tab(ng)%GBUF
127 nptr = elbuf_tab(ng)%NPTR
128 npts = elbuf_tab(ng)%NPTS
129 nptt = elbuf_tab(ng)%NPTT
130 nlay = elbuf_tab(ng)%NLAY
131 idrape = elbuf_tab(ng)%IDRAPE
141 IF (igtyp == 51 .OR. igtyp == 52)
THEN
144 npt_all = npt_all + elbuf_tab(ng)%BUFLY(ipt)%NPTT
146 IF (nlay == 1) mpt =
max(1,npt_all)
154 IF (mte /= 13 .and. mte /= 0)
THEN
156 IF ((mte>=29.AND.mte<=31).OR.
157 . mte == 35.OR.mte == 36.OR.mte == 43.OR.
158 . mte == 44.OR.mte == 45.OR.mte == 48.OR.mte>=50)
THEN
161 ELSEIF (mte == 25)
THEN
185 IF (igtyp == 11)
THEN
189 matly = igeo(ipmat+n,pid(i))
190 IF (matparam_tab(matly)%IVISC > 0)
THEN
192 nuvarv =
max(nuvarv, matparam_tab(matly)%VISC%NUVAR)
196 ELSEIF (igtyp == 9 .OR. igtyp == 10)
THEN
200 IF (matparam_tab(matly)%IVISC > 0)
THEN
202 nuvarv =
max(nuvarv, matparam_tab(matly)%VISC%NUVAR)
206 ELSEIF (igtyp == 17 .OR. igtyp == 51 .OR. igtyp == 52)
THEN
210 matly = stack%IGEO(ipmat+n,isubstack)
211 IF (matparam_tab(matly)%IVISC > 0)
THEN
213 nuvarv =
max(nuvarv, matparam_tab(matly)%VISC%NUVAR)
218 IF (ishplyxfem > 0)
THEN
219 ipmat_iply = ipmat + mpt
222 mat_iply = stack%IGEO(ipmat_iply + j ,isubstack)
223 nuvard =
max(nuvard, ipm(221,mat_iply))
242 ii = ((ih-1) - iad)*nvar
243 DO WHILE((ithbuf(ih+nn) /= ispmd) .AND. (ih < iad+nn))
247 IF (ih > iad+nn)
GOTO 666
256 f11 = gbuf%FOR(kk(1)+i)
257 f22 = gbuf%FOR(kk(2)+i)
258 f33 = gbuf%FOR(kk(3)+i)
259 f44 = gbuf%FOR(kk(4)+i)
260 f55 = gbuf%FOR(kk(5)+i)
262 mm11 = gbuf%MOM(kk(1)+i)
263 mm22 = gbuf%MOM(kk(2)+i)
264 mm33 = gbuf%MOM(kk(3)+i)
276 . + (cp*cp-sp*sp )*f33
291 . + (cp*cp-sp*sp )*mm33
293 f1 = gbuf%FOR(kk(1)+i)
294 f2 = gbuf%FOR(kk(2)+i)
295 f3 = gbuf%FOR(kk(3)+i)
296 f4 = gbuf%FOR(kk(4)+i)
297 f5 = gbuf%FOR(kk(5)+i)
299 mm1 = gbuf%MOM(kk(1)+i)
300 mm2 = gbuf%MOM(kk(2)+i)
301 mm3 = gbuf%MOM(kk(3)+i)
311 wwa(9) = gbuf%EINT(i)
312 wwa(10)= gbuf%EINT(i+nel)
329 IF (gbuf%G_EPSD == 0)
THEN
341 IF(idrape > 0 .AND. (igtyp == 51 .OR. igtyp == 52) )
THEN
343 bufly => elbuf_tab(ng)%BUFLY(il)
349 dir_a => elbuf_tab(ng)%BUFLY(il)%LBUF_DIR(it)%DIRA
353 lbuf => bufly%LBUF(ir,is,it)
355 sig(j) = sig(j) + lbuf%SIG(kk(j) + i) / npg
364 sigg(1) = sigg(1) + (d11*sig(
366 sigg(3) = sigg(3) + (d12*sig(
367 sigg(4) = sigg(4) + (d1 *sig(4) - d2 *sig(5)) / nptt
368 sigg(5) = sigg(5) + (d1 *sig
378 bufly => elbuf_tab(ng)%BUFLY(il)
386 lbuf => bufly%LBUF(ir,is,it)
388 sig(j) = sig(j) + lbuf%SIG(kk(j) + i) / (nptt*npg)
393 mat_orth = matparam_tab(imat)%ORTHOTROPY
394 IF (mat_orth == 1)
THEN
398 ELSE IF (mat_orth == 2)
THEN
399 dir_a => elbuf_tab(ng)%BUFLY(il)%DIRA
405 wwa(k + 1) = d11*sig(1) + d22*sig(2) + two*d12 *sig(3)
406 wwa(k + 2) = d22*sig(1) + d11*sig(2) - two*d12 *sig(3)
407 wwa(k + 3) =-d12*sig(1) + d12*sig(2) +(d11-d22)*sig(3)
408 wwa(k + 4) =-d2 *sig(5) + d1 *sig(4)
409 wwa(k + 5) = d1 *sig(5) + d2 *sig(4)
416 bufly => elbuf_tab(ng)%BUFLY(il)
418 ivisc = matparam_tab(imat)%IVISC
426 lbuf => bufly%LBUF(ir,is,it)
428 func(j) = func(j) + lbuf%VISC(kk(j) + i) / nptt
432 wwa(k+j) = func(j) / npg
444 IF (gbuf%G_PLA > 0)
THEN
473 bufly => elbuf_tab(ng)%BUFLY(ipt)
474 IF (bufly%L_PLA > 0)
THEN
475 wwa(13) =
min(wwa(13),abs(bufly%PLAPT(i)))
476 wwa(14) =
max(wwa(14),abs(bufly%PLAPT(i)))
481 bufly => elbuf_tab(ng)%BUFLY(ipt)
483 IF (bufly%L_PLA > 0)
THEN
486 lbuf => bufly%LBUF(1,1,it)
487 func(6) = func(6) + abs(lbuf%PLA(i))/nptt
489 wwa(13) =
min(wwa(13),func(6))
496 bufly => elbuf_tab(ng)%BUFLY(1)
500 IF (bufly%L_PLA > 0)
THEN
501 wwa(13) =
min(wwa(13),abs(bufly%PLAPT(i1+i)))
502 wwa(14) =
max(wwa(14),abs(bufly%PLAPT(i1+i)))
506 bufly => elbuf_tab(ng)%BUFLY(1)
509 lbuf => bufly%LBUF(1,1,it)
510 IF (bufly%L_PLA > 0)
THEN
511 wwa(13) =
min(wwa(13),abs(lbuf%PLA(i)))
512 wwa(14) =
max(wwa(14),abs(lbuf%PLA(i)))
521 IF (ifailure == 0)
THEN
523 wwa(30280) = 100*fail(i)/npt
524 wwa(30281) = fail1(i)
525 wwa(30282) = fail2(i)
526 wwa(30283) = fail3(i)
531 bufly => elbuf_tab(ng)%BUFLY(ipt)
533 val_ly_average = zero
538 lbuf => bufly%LBUF(ir,is
539 val_ly_ip = val_ly_ip + lbuf%PLA(i)/nptt
541 val_ly_average = val_ly_average + val_ly_ip/npg
544 wwa(30283 + ipt ) = val_ly_average
551 IF (gbuf%G_PLANL > 0)
THEN
552 bufly => elbuf_tab(ng)%BUFLY(1)
558 wwa(37855) = wwa(37855) +
559 . bufly%LBUF(ir,is,it)%PLANL(i)/(nptr*npts*nptt)
564 IF (gbuf%G_EPSDNL > 0)
THEN
565 bufly => elbuf_tab(ng)%BUFLY(1)
571 wwa(37856) = wwa(37856) +
572 . bufly%LBUF(ir,is,it)%EPSDNL(i)/(nptr*npts*nptt)
580 IF ((mte>=29.AND.mte<=31).OR.
581 . mte==35.OR.mte==36.OR.mte==43.OR.
582 . mte==44.OR.mte==45.OR.mte==48.OR.mte>=50)
THEN
584 nuvar = elbuf_tab(ng)%BUFLY(1)%NVAR_MAT
585 ALLOCATE (var(nuvar,
max(1,mpt)))
588 IF (mte == 58 .or. mte == 158)
THEN
591 nuvar = elbuf_tab(ng)%BUFLY(il)%NVAR_MAT
592 nptt = elbuf_tab(ng)%BUFLY(il)%NPTT
600 IF (j==4 .OR. j==5)
THEN
601 var(j,il) = var(j,il) + (exp(uvar(i1+i))-one)/npg
603 var(j,il) = var(j,il) + uvar(i1+i)/npg
605 wwa(6518 + (il-1)*60*4 + (k-1)*60 + j) =
613 nuvar = elbuf_tab(ng)%BUFLY(1)%NVAR_MAT
614 nptt = elbuf_tab(ng)%BUFLY(1)%NPTT
618 uvar=>elbuf_tab(ng)%BUFLY(1)%MAT(ir,is,ipt)%VAR
622 IF (j==4 .OR. j==5)
THEN
623 var(j,ipt) = var(j, ipt) + (exp(uvar(i1+i))-one)/npg
625 var(j,ipt) = var(j, ipt) + uvar(i1 + i)/npg
627 wwa(6518 + (ipt-1)*60*4 + (k-1)*60 + j) =
637 nuvar = elbuf_tab(ng)%BUFLY(il)%NVAR_MAT
638 nptt = elbuf_tab(ng)%BUFLY(il)%NPTT
643 uvar=>elbuf_tab(ng)%BUFLY(il)%MAT(ir,is,it)%VAR
646 var(j,il) = var(j,il) + uvar(i1+i)/npg
647 wwa(6518 + (il-1)*60*4 + (k-1)*60 + j) =
655 nuvar = elbuf_tab(ng)%BUFLY(1)%NVAR_MAT
656 nptt = elbuf_tab(ng)%BUFLY(1)%NPTT
660 uvar=>elbuf_tab(ng)%BUFLY(1)%MAT(ir,is,ipt)%VAR
664 var(j,ipt) = var(j, ipt) + uvar(i1 + i)/npg
665 wwa(6518 + (ipt-1)*60*4 + (k-1)*60 + j) =
676 wwa(23+j)=var(j,iabs(mpt)/2 + 1)
690 wwa(iuv + (j - 1)*iaa + ipt) = var(j, ipt)
699 IF (istrain /= 0)
THEN
700 wwa(15)=gbuf%STRA(kk(1)+i)
701 wwa(16)=gbuf%STRA(kk(2)+i)
703 wwa(18)=gbuf%STRA(kk(4)+i)
704 wwa(19)=gbuf%STRA(kk(5)+i)
705 wwa(20)=gbuf%STRA(kk(6)+i)
706 wwa(21)=gbuf%STRA(kk(7)+i)
707 wwa(22)=gbuf%STRA(kk(8)+i)
710 IF(ihbe ==11.AND.
npinch > 0)
THEN
711 wwa(37848:37853) = zero
713 wwa(37847+1) = wwa(37847+1) + fourth*gbuf%EPGPINCHXZ(4*(i-1)+ipg)
714 wwa(37847+2) = wwa(37847+2) + fourth*gbuf%EPGPINCHYZ(4*(i-1
715 wwa(37847+3) = wwa(37847+3) + fourth*gbuf%EPGPINCHZZ(4*(i-1)+ipg)
716 wwa(37847+4) = wwa(37847+4) + fourth*gbuf%FORPGPINCH(4*(i
717 wwa(37847+5) = wwa(37847+5) + fourth
720 wwa(37847+7) = gbuf%THK(i)
724 DO l=iadv,iadv+nvar-1