39 2 EINT, S01, S02, S03,
45 8 SSP, VOL, EPSD, WPLA,
47 A FLAY, NGL, NEL, NFT,
49 C JCVT, JSPH, ISORTH, DMG,
55 use mat25_tsaiwu_s_mod
56 use mat25_crasurv_s_mod
60#include "implicit_f.inc"
77 INTEGER,
INTENT(IN) :: NFT
78 INTEGER,
INTENT(IN) :: NPT
79 INTEGER,
INTENT(IN) :: JCVT
80 INTEGER,
INTENT(IN) :: JSPH
81 INTEGER,
INTENT(IN) :: ISORTH
82 INTEGER,
INTENT(IN) :: L_DMG
83 INTEGER NGL(MVSIZ),ILAY,NEL,IPG
84 INTEGER,
INTENT(INOUT) :: OUTV(NEL)
85 my_real ,
DIMENSION(NEL) ,
INTENT(INOUT) :: EPSD
87 . PM(NPROPM),OFF(*), SIG(NEL,6), WPLA(*), GAMA(MVSIZ,6),
88 . EINT(*),RX(*) ,RY(*),RZ(*) ,SX(*),SY(*),SZ(*),TX(*) ,TY(*) ,TZ(*)
90 . d1(*), d2(*), d3(*), d4(*),
92 . s01(*),s02(*),s03(*),s04(*),s05(*),s06(*),
93 . vol(*),vnew(*),ssp(*),epst(nel,6),sigl(mvsiz,6),flay(*),
95 type (matparam_struct_) ,
intent(in) :: mat_param
96 my_real,
DIMENSION(NEL,L_DMG) :: dmg
100 INTEGER NFIS1(MVSIZ), NFIS2(MVSIZ), NFIS3(MVSIZ), INDX(MVSIZ)
101 INTEGER I, J, JADR, J1, J2, J3, JJ, II, I2, NINDX, I1,
102 . ioff,joff,idir,iflag
105 . degmb(mvsiz),degfx(mvsiz),
106 . wplar(mvsiz),strn1(mvsiz),strn2(mvsiz),strn3(mvsiz),
107 . damcr(mvsiz,2), dmaxt(mvsiz),strp1(mvsiz) ,strp2(mvsiz),
108 . epspl(mvsiz),s1(mvsiz),s2(mvsiz),s3(mvsiz),
109 . s4(mvsiz),s5(mvsiz),s6(mvsiz),
110 . ep1(mvsiz),ep2(mvsiz),ep3(mvsiz),ep4(mvsiz),ep5(mvsiz),
111 . ep6(mvsiz),epst1(mvsiz),epst2(mvsiz),epsm1(mvsiz),epsm2(mvsiz),
112 . dmax(mvsiz),r11(mvsiz),r12(mvsiz),r13(mvsiz),r21(mvsiz),
115 . asrate,eps_k2, eps_m2, sigt1, sigt2,
116 . zt, wmc, visc, dtinv ,epd,dav,dam1,dam2,dt5,
117 . epst1_1,epst2_1,epsm1_1,epsm2_1,dmax_1,ssp_1
121 iflag = mat_param%IPARAM(1)
123 epst1_1 = mat_param%UPARAM(12)
124 epst2_1 = mat_param%UPARAM(13)
125 epsm1_1 = mat_param%UPARAM(14)
126 epsm2_1 = mat_param%UPARAM(15) ! pm(63)
127 dmax_1 = mat_param%UPARAM(18)
142 asrate = asrate / (asrate + one)
144 dav = -third*(d1(i)+d2(i)+d3(i))
145 epd = half*((d1(i)+dav )**2 + (d2(i)+dav)**2 + (d3(i)+dav)**2)
146 . + fourth*(d4(i)**2 + d5(i)**2 + d6(i)**2)
147 epd = sqrt(three*epd)/three_half
148 epsd(i) = asrate*epd + (one - asrate)*epsd(i)
168 IF (isorth > 0 .AND. jcvt == 0)
THEN
170 1 gama, r11, r12, r13,
171 2 r21, r22, r23, r31,
174 5 tx, ty, tz, nel, jsph)
180 CALL mrotens(1,nel,ep1,ep2,ep3,ep4,ep5,ep6,
190 CALL mrotens(1,nel,s1,s2,s3,s4,s5,s6,
199 CALL mat25_tsaiwu_s(mat_param,
200 1 nel ,ngl ,off ,flay ,
201 2 s1 ,s2 ,s3 ,s4 ,s5 ,s6 ,
202 3 ep1 ,ep2 ,ep3 ,ep4 , ep5 ,ep6 ,
203 4 epst ,nfis1,nfis2 ,nfis3,
204 5 wplar ,epsd ,wpla ,sigl ,ilay ,ipg ,
205 6 tsaiwu ,tt ,imconv,mvsiz,iout ,dmg ,
210 CALL mat25_crasurv_s(mat_param ,
211 1 nel ,ngl, off ,flay ,
212 2 s1 ,s2 ,s3 ,s4 ,s5 ,s6 ,
213 3 ep1 ,ep2 ,ep3 ,ep4 , ep5 ,ep6,
214 4 epst ,nfis1,nfis2,nfis3,
215 5 wplar,epsd, wpla, sigl, ilay,
216 6 ipg ,tsaiwu,tt,imconv ,mvsiz ,iout,
220!-----------------------------------------------------------------------
221 IF (isorth > 0 .AND. jcvt == 0)
THEN
222 CALL mrotens(1,nel,s1 ,s2 ,s3 ,s4 ,s5 ,s6 ,
223 . r11,r21,r31,r12,r22,r32,r13,r23,r33 )
227 sig(i,1) = s1(i)*off(i)
228 sig(i,2) = s2(i)*off(i)
229 sig(i,3) = s3(i)*off(i)
230 sig(i,4) = s4(i)*off(i)
231 sig(i,5) = s5(i)*off(i)
232 sig(i,6) = s6(i)*off(i)
250 IF(epst(i,1) >= epst1(i)
251 + .AND. dmg(i,2) == zero .AND. off(i) == one)
THEN
261 dam1=(epst(i,1)-epst1(i))/(epsm1(i)-epst1(i))
262 dam2= dam1*epsm1(i)/epst(i,1)
263 dmg(i,2)=
min(dam2,dmax(i))
264 IF(dmg(i,2)==dmax(i).AND.imconv==1)
THEN
266 WRITE(iout,
'(A,I1,A,I10,A,I3,A,I3,A,1PE11.4)')
267 +
' FAILURE-',idir,
', ELEMENT #',ngl(i),
268 +
', LAYER #',ilay,
', INTEGRATION POINT #',ipg,
270#include "lockoff.inc"
277 IF(epst(i,2) >= epst2(i)
278 + .AND. dmg(i,3) == zero .AND. off(i) == one)
THEN
288 dam1=(epst(i,2)-epst2(i))/(epsm2(i)-epst2(i))
289 dam2= dam1*epsm2(i)/epst(i,2)
290 dmg(i,3)=
min(dam2,dmax(i))
291 IF(dmg(i,3) == dmax(i) .AND. imconv == 1)
THEN
293 WRITE(iout,
'(A,I1,A,I10,A,I3,A,I3,A,1PE11.4)')
294 +
' FAILURE-',idir,
', ELEMENT #',ngl(i),
295 +
', LAYER #',ilay,
', INTEGRATION POINT #',ipg,
297#include "lockoff.inc"
306 dmg(i,1) =
max(dmg(i,2),dmg(i,3),dmg(i,4))
310 dmg(i,1) =
max(dmg(i,2),dmg(i,3),dmg(i,4))
311 IF (abs(dmg(i,5)) >= one)
THEN
312 dmg(i,1) =
max(abs(dmg(i,5))-one,dmg(i,1))
314 IF (abs(dmg(i,6)) >= one)
THEN
315 dmg(i,1) =
max(abs(dmg(i,6))-one,dmg(i,1))
317 IF (dmg(i,7) >= one)
THEN
318 dmg(i,1) =
max(dmg(i,7)-one,dmg(i,1))
326 IF(off(i) < em01) off(i)=zero
327 IF(off(i) < one ) off(i)=off
333 ioff = mat_param%iparam
346 off(i)=off(i)*four_over_5
352 WRITE(iout,1000) ngl(i)
353 WRITE(istdo,1100) ngl(i),tt
354#include "lockoff.inc"
361 eint(i)=eint(i) + dt5*vnew(i)*
362 . ( d1(i)*(s01(i)+sig(i,1))
363 . + d2(i)*(s02(i)+sig(i,2))
364 . + d3(i)*(s03(i)+sig(i
365 . + d4(i)*(s04(i)+sig(i,4))
366 . + d5(i)*(s05(i)+sig(i,5))
367 . + d6(i)*(s06(i)+sig(i,6)))
368 eint(i)=eint(i)/vol(i)
371 1000
FORMAT(1x,
'-- RUPTURE OF SOLID ELEMENT NUMBER ',i10)
372 1100
FORMAT(1x,
'-- RUPTURE OF SOLID ELEMENT :',i10,
' AT TIME :',g11.4)
subroutine m25law(mat_param, pm, off, sig, eint, s01, s02, s03, s04, s05, s06, d1, d2, d3, d4, d5, d6, rx, ry, rz, sx, sy, sz, tx, ty, tz, gama, vnew, ssp, vol, epsd, wpla, epst, sigl, tsaiwu, flay, ngl, nel, nft, ilay, npt, ipg, jcvt, jsph, isorth, dmg, l_dmg, outv)