39 SUBROUTINE cmatc3(JFT ,JLT ,PM ,MAT ,GEO ,
40 1 PID ,AREA ,THK0 ,THK02 ,THK ,
41 2 THKE ,VOLG ,MTN ,NPT ,ITHK ,
42 3 HM ,HF ,HC ,HZ ,IGTYP ,
43 4 IORTH ,HMOR ,HFOR ,DIR ,IGEO ,
44 5 IDRIL ,IHBE ,HMFOR ,GS ,ISUBSTACK,
45 6 STACK ,ELBUF_STR,NLAY ,DRAPE ,NFT ,
46 . NEL , INDX_DRAPE, SEDRAPE , NUMEL_DRAPE)
56#include "implicit_f.inc"
70 INTEGER JFT, JLT ,MTN , NPT,ITHK,IGTYP,IORTH,ISUBSTACK,NLAY,NFT
71 INTEGER MAT(*), PID(*),IGEO(NPROPGI,*),IDRIL,IHBE
72 INTEGER ,
INTENT(IN) :: SEDRAPE,NUMEL_DRAPE
73 INTEGER,
DIMENSION(SEDRAPE) :: INDX_DRAPE
75 . GEO(NPROPG,*), PM(NPROPM,*), AREA(*),
76 . (*),THK02(*),THK(*),THKE(*), DIR(*),
77 . volg(*),hm(mvsiz,4),hf(mvsiz,4),hc(mvsiz,2),hz(*),hmor(mvsiz,2),hfor(mvsiz,2),
78 . hmfor(mvsiz,6),gs(*)
79 TYPE (STACK_PLY) :: STACK
80 TYPE(elbuf_struct_) :: ELBUF_STR
81 TYPE (DRAPE_) :: DRAPE(NUMEL_DRAPE)
117 INTEGER I,MX,IPID,J,J2,J3,JJ,NEL,L,IGMAT,IPGMAT,
118 . LAYNPT_MAX, NLAY_MAX,ILAY
121 . SHF(MVSIZ),NU(MVSIZ),G(MVSIZ),YM(),A11(MVSIZ),A12(MVSIZ),
122 . E11,E22,NU12,G31,G23,A22,WMC,FACG,COEF,WM
124 . fac(mvsiz),hmly(mvsiz,4),hcly(mvsiz,2), hmorly(mvsiz,2),sfac(mvsiz)
125 INTEGER,
DIMENSION(:) ,
ALLOCATABLE :: MATLY
126 my_real,
DIMENSION(:) ,
ALLOCATABLE :: THKLY
127 my_real,
DIMENSION(:,:) ,
ALLOCATABLE :: posly,thk_ly
133 IF(igtyp == 51 .OR. igtyp == 52)
THEN
134 DO ilay=1,elbuf_str%NLAY
135 laynpt_max =
max(laynpt_max , elbuf_str%BUFLY(ilay)%NPTT)
138 nlay_max =
max(nlay,npt, elbuf_str%NLAY)
139 ALLOCATE(matly(mvsiz*nlay_max), thkly(mvsiz*nlay_max*laynpt_max),
140 . posly(mvsiz,nlay_max*laynpt_max),thk_ly(nel,nlay_max*laynpt_max))
143 IF(ithk>0.AND.ismdisp==0)
THEN
152 igmat = igeo(98,pid(1))
154 IF(igtyp == 11 .AND. igmat > 0)
THEN
156 thk02(i) = thk0(i)*thk0(i)
157 volg(i) = thk0(i)*area(i)
160 ym(i) = geo(ipgmat +2 ,mx)
161 nu(i) = geo(ipgmat +3 ,mx)
162 g(i) = geo(ipgmat +4 ,mx)
163 a11(i) = geo(ipgmat +5 ,mx)
164 a12(i) = geo(ipgmat +6 ,mx)
170 thk02(i) = thk0(i)*thk0(i)
171 volg(i) = thk0(i)*area(i)
186 shf(i)=geo(38,pid(i))
202 a11(i)=sfac(i)*a11(i)
206 IF (mtn==19.OR.mtn==15.OR.mtn==25)
THEN
221 CALL gepm_lc(jft,jlt,mat,pm,shf,hm,hc)
222 CALL cctoglob(jft,jlt,hm,hc,hmor,dir,nel)
224 hf(i,1)=one_over_12*hm(i,1)
225 hf(i,2)=one_over_12*hm(i,2)
226 hf(i,3)=one_over_12*hm(i,3)
227 hf(i,4)=one_over_12*hm(i,4)
228 hfor(i,1)=one_over_12*hmor(i,1)
229 hfor(i,2)=one_over_12*hmor(i,2)
230 hz(i)=
max(hf(i,1),hf(i,2),hf(i,4))*kz_tol
232 ELSEIF (mtn==15.OR.mtn==25)
THEN
234 CALL gepm_lc(jft,jlt,mat,pm,shf,hm,hc)
235 CALL cctoglob(jft,jlt,hm,hc,hmor,dir,nel)
237 hf(i,1)=one_over_12*hm(i,1)
238 hf(i,2)=one_over_12*hm(i,2)
239 hf(i,3)=one_over_12*hm(i,3)
240 hf(i,4)=one_over_12*hm(i,4)
241 hfor(i,1)=one_over_12*hmor(i,1)
242 hfor(i,2)=one_over_12*hmor(i,2)
243 hz(i)=
max(hf(i,1),hf(i,2),hf(i,4))*kz_tol
245 ELSEIF(igtyp == 10.OR.igtyp == 11.OR.igtyp == 17.OR.
246 . igtyp==51 .OR. igtyp == 52)
THEN
248 CALL layini(elbuf_str,jft ,jlt ,geo ,igeo ,
249 . mat ,pid ,thkly ,matly ,posly ,
251 . isubstack,stack ,drape ,nft ,thke ,
252 . nel ,thk_ly ,indx_drape,sedrape, numel_drape)
273 CALL gepm_lc(jft,jlt,matly(j2),pm,shf,hmly,hcly)
274 CALL cctoglob(jft,jlt,hmly,hcly,hmorly,dir(j3),nel)
277 wmc=posly(i,j)*posly(i,j)*thkly(jj)
278 hm(i,1)=hm(i,1)+thkly(jj)*hmly(i,1)
279 hm(i,2)=hm(i,2)+thkly(jj)*hmly(i,2)
280 hm(i,3)=hm(i,3)+thkly(jj)*hmly(i,3)
281 hm(i,4)=hm(i,4)+thkly(jj)*hmly(i,4)
282 hc(i,1)=hc(i,1)+thkly(jj)*hcly(i,1)
283 hc(i,2)=hc(i,2)+thkly(jj)*hcly(i,2)
284 hmor(i,1)=hmor(i,1)+thkly(jj)*hmorly(i,1)
285 hmor(i,2)=hmor(i,2)+thkly(jj)*hmorly(i,2)
286 hf(i,1)=hf(i,1)+wmc*hmly(i,1)
287 hf(i,2)=hf(i,2)+wmc*hmly(i,2)
288 hf(i,3)=hf(i,3)+wmc*hmly(i,3)
289 hf(i,4)=hf(i,4)+wmc*hmly(i,4)
290 hfor(i,1)=hfor(i,1)+wmc*hmorly(i,1)
291 hfor(i,2)=hfor(i,2)+wmc*hmorly(i,2)
298 CALL gepm_lc(jft,jlt,matly(j2),pm,shf,hmly,hcly)
299 CALL cctoglob(jft,jlt,hmly,hcly,hmorly,dir(j3),nel)
302 wm = posly(i,j)*thkly(jj)
304 hm(i,1)=hm(i,1)+thkly(jj)*hmly(i,1)
305 hm(i,2)=hm(i,2)+thkly(jj)*hmly(i,2)
306 hm(i,3)=hm(i,3)+thkly(jj)*hmly(i,3)
307 hm(i,4)=hm(i,4)+thkly(jj)*hmly(i,4)
308 hc(i,1)=hc(i,1)+thkly(jj)*hcly(i,1)
309 hc(i,2)=hc(i,2)+thkly(jj)*hcly(i,2)
310 hmor(i,1)=hmor(i,1)+thkly(jj)*hmorly(i,1)
311 hmor(i,2)=hmor(i,2)+thkly(jj)*hmorly(i,2)
312 hf(i,1)=hf(i,1)+wmc*hmly(i,1)
313 hf(i,2)=hf(i,2)+wmc*hmly(i,2)
314 hf(i,3)=hf(i,3)+wmc*hmly(i,3)
315 hf(i,4)=hf(i,4)+wmc*hmly(i,4)
316 hfor(i,1)=hfor(i,1)+wmc*hmorly(i,1)
317 hfor(i,2)=hfor(i,2)+wmc*hmorly(i,2)
318 hmfor(i,1)=hmfor(i,1)+wm*hmly(i,1)
319 hmfor(i,2)=hmfor(i,2)+wm*hmly(i,2)
320 hmfor(i,3)=hmfor(i,3)+wm*hmly(i,3)
321 hmfor(i,4)=hmfor(i,4)+wm*hmly(i,4)
322 hmfor(i,5)=hmfor(i,5)+wm*hmorly(i,1)
323 hmfor(i,6)=hmfor(i,6)+wm*hmorly(i,2)
328 hz(i)=
max(hf(i,1),hf(i,2),hf(i,4))*kz_tol
335 CALL layini(elbuf_str,jft ,jlt ,geo ,igeo ,
336 . mat ,pid ,thkly ,matly ,posly ,
337 . igtyp ,0 ,0 ,nlay ,npt ,
338 . isubstack,stack ,drape ,nft ,thke ,
339 . jlt ,thk_ly ,indx_drape,sedrape ,numel_drape)
356 wm = posly(i,j)*thkly(jj)
358 hf(i,1)=hf(i,1)+wmc*hm(i,1)
359 hf(i,2)=hf(i,2)+wmc*hm(i,2)
360 hf(i,3)=hf(i,3)+wmc*hm(i,3)
361 hf(i,4)=hf(i,4)+wmc*hm(i,4)
365 hz(i)= hf(i,1)*kz_tol
374 hf(i,1)=one_over_12*hm(i,1)
375 hf(i,2)=one_over_12*hm(i,2)
377 hf(i,4)=one_over_12*hm(i,4)
380 hz(i)= hf(i,1)*kz_tol
385 facg = coef*
min(one,kz_tol*2000)
393 DEALLOCATE(matly, thkly, posly, thk_ly)
580 1 MTN ,NPT ,HM ,HF ,IORTH ,
581 2 HMOR ,HFOR ,HMFOR ,IPG )
590#include
"implicit_f.inc"
594#include "mvsiz_p.inc"
598#include "param_c.inc"
599#include "impl1_c.inc"
600#include "com20_c.inc"
604 INTEGER JFT, JLT ,MTN , NPT,IORTH,IPG
605 INTEGER MAT(*), PID(*)
607 . PM(NPROPM,*),HM(MVSIZ,4),HF(MVSIZ,4),HMOR(MVSIZ,2),HFOR(MVSIZ,2),HMFOR(MVSIZ,6)
633 INTEGER I,MX,,J,J2,J3,JJ,L,IR,IS,IT,IPLAS,IR4(4),IS4(4),NEL
636 . NU,G,YM,A11,A12,BETA,
637 . THETA1,THETA2,HK(MVSIZ),HH(MVSIZ),DHK(MVSIZ),DHH(MVSIZ),
638 . GAMA(MVSIZ),C11(MVSIZ),C12(MVSIZ),C33(MVSIZ),SIG(MVSIZ,3),
639 . SIGM(MVSIZ,3),COEF,WM0,WF0,AA,B11,B12,D11,D12,DET,,SPS,
640 . NORM,CEP11,CEP12,CEP13,CEP23,CEP22,CEP33,FAC(MVSIZ),
643 TYPE(MLAW_TAG_) ,
POINTER :: MTAG
644 DATA ir4/1,2,2,1/,is4/1,1,2,2/
652 IF (ikt==0 .OR.(mtn /= 2 .AND. mtn /= 36))
RETURN
658 IF(fac(i) < one ) iplas =1
661 IF(iplas==0 .OR. iter_nl==0 )
RETURN
702 IF (fac(i)==one )
THEN
707 hf(i,1)=one_over_12*hm(i,1)
708 hf(i,2)=one_over_12*hm(i,2)
709 hf(i,3)=one_over_12*hm(i,3)
710 hf(i,4)=one_over_12*hm(i,4)
715 lbuf =>
ktbuf_str(ng_imp)%KTBUFEP(ir,is,it)
716 IF (mtag%L_A_KT>0)
THEN
719 gama(i)= lbuf%A_KT(i)
720 IF (gama(i) > zero)
THEN
722 sig(i,1)= lbuf%SIGE(j+1)
723 sig(i,2)= lbuf%SIGE(j+2)
724 sig(i,3)= lbuf%SIGE(j+3)
725 hk(i)= lbuf%SIGE(j+4)
726 hh(i)= lbuf%SIGE(j+5)
728 dhh(i)= two_third*hh(i)
738 IF (gama(i) >zero)
THEN
742 d11= b11+two_third*aa
744 det=one/(d11*d11-d12*d12)
747 c33(i)=g/(one+g*aa*two)
749 f_y2= sig(i,1)*(two*sig(i,1)+sig(i,2))+
750 . sig(i,2)*(sig(i,1)+two*sig(i,2))+
751 . half*sig(i,3)*sig(i,3)
752 sigm(i,1)= c11(i)*sig(i,1)+c12(i)*sig(i,2)
753 sigm(i,2)= c12(i)*sig(i,1)+c11(i)*sig(i,2)
754 sigm(i,3)= c33(i)*sig(i,3)
755 sps =sig(i,1)*sigm(i,1)+sig(i,2)*sigm(i,2)+sig(i,3)*sigm(i,3)
758 theta2=one-dhh(i)*gama(i)
759 coef=f_y2*theta1/theta2
760 beta=coef*(dhh(i)*theta1+dhk(i)*theta2)+sps
762 IF (abs(beta)<=em20)
THEN
771 wm0 = z0(it,npt)*wm(it,npt)
773 IF (gama(i) >zero)
THEN
775 cep11=c11(i)-sigm(i,1)*sigm(i,1)*det
776 cep22=c11(i)-sigm(i,2)*sigm(i,2)*det
777 cep12=c12(i)-sigm(i,1)*sigm(i,2)*det
778 cep13= -sigm(i,1)*sigm(i,3)*det
779 cep23= -sigm(i,2)*sigm(i,3)*det
780 cep33=c33(i)-sigm(i,3)*sigm(i,3)*det
781 hm(i,1)=hm(i,1)+wf0*cep11
782 hm(i,2)=hm(i,2)+wf0*cep22
783 hm(i,3)=hm(i,3)+wf0*cep12
784 hm(i,4)=hm(i,4)+wf0*cep33
785 hmor(i,1)=hmor(i,1)+wf0*cep13
786 hmor(i,2)=hmor(i,2)+wf0*cep23
787 hf(i,1)=hf(i,1)+wm0*cep11
788 hf(i,2)=hf(i,2)+wm0*cep22
789 hf(i,3)=hf(i,3)+wm0*cep12
790 hf(i,4)=hf(i,4)+wm0*cep33
791 hfor(i,1)=hfor(i,1)+wm0*cep13
792 hfor(i,2)=hfor(i,2)+wm0*cep23
793 IF (iorth == 0) iorth = 1
794 ELSEIF (fac(i)/= one)
THEN
795 hm(i,1)=hm(i,1)+wf0*a11
796 hm(i,2)=hm(i,2)+wf0*a11
797 hm(i,3)=hm(i,3)+wf0*a12
798 hm(i,4)=hm(i,4)+wf0*g
799 hf(i,1)=hf(i,1)+wm0*a11
800 hf(i,2)=hf(i,2)+wm0*a11
801 hf(i,3)=hf(i,3)+wm0*a12
802 hf(i,4)=hf(i,4)+wm0*g
subroutine usermat_shell(timers, elbuf_str, mat_elem, jft, jlt, nel, pm, for, mom, gstr, thk, eint, off, dir_a, dir_b, mat, area, exx, eyy, exy, exz, eyz, kxx, kyy, kxy, geo, thk_ly, pid, tf, npf, mtn, dt1c, dm, bufmat, ssp, rho, viscmx, ipla, iofc, indx, ngl, thkly, matly, zcfac, ng, shf, gs, sigy, thk0, epsd_pg, posly, igeo, ipm, failwave, fwave_el, ifailure, aldt, tempel, die, r11, r12, r13, r21, r22, r23, r31, r32, r33, table, ixfem, elcrkini, dir1_crk, dir2_crk, iparg, jhbe, ismstr, jthe, tensx, ir, is, nlay, npt, ixlay, ixel, ithk, f_def, ishplyxfem, itask, pm_stack, isubstack, stack, alpe, ply_exx, ply_eyy, ply_exy, ply_exz, ply_eyz, ply_f, varnl, nloc_dmg, nlay_max, laynpt_max, dt)