31 1 NEL ,NUPARAM ,NUVAR ,UPARAM ,UVAR ,
32 2 TIME ,IP ,ILAY ,NPG ,NGL ,
33 3 DMG_SCALE ,DFMAX ,OFF ,LOFF ,NOFF ,
34 4 SIGNXX ,SIGNYY ,SIGNZZ ,SIGNXY ,SIGNZX ,
39#include "implicit_f.inc"
48 INTEGER,
INTENT(IN) :: NEL,NUPARAM,NUVAR,IP,ILAY,NPG,LF_DAMMX
49 INTEGER,
DIMENSION(NEL),
INTENT(IN) :: NGL
50 my_real,
INTENT(IN) :: TIME
51 my_real,
DIMENSION(NEL),
INTENT(IN) ::
52 . SIGNXX,SIGNYY,SIGNZZ,SIGNXY,SIGNZX
53 my_real,
DIMENSION(NUPARAM) ,
INTENT(IN) :: uparam
57 INTEGER,
DIMENSION(NEL),
INTENT(INOUT) :: NOFF
58 my_real,
DIMENSION(NEL),
INTENT(INOUT) :: tdele,
60 my_real,
DIMENSION(NEL,LF_DAMMX),
INTENT(INOUT) :: dfmax
61 my_real,
DIMENSION(NEL,NUVAR),
INTENT(INOUT) :: uvar
65 INTEGER :: I,J,NINDX,NINDX0,FAILIP
66 INTEGER,
DIMENSION(NEL) :: INDX,INDX0
67 my_real :: SIGT1,SIGT2,SIGT12,SIGC1,SIGC2,BETA,TMAX,
68 . DAMFT,DAMFC,DAMMT1,DAMMC1,DAMMT2,DAMMC2,DAMMX
81 failip = int(uparam(9))
82 failip =
min(failip,npg)
97 IF (dfmax(i,1) < one)
THEN
100 IF (signxx(i) > zero)
THEN
101 damft = (signxx(i)/sigt1)**2
102 . + beta*(signxy(i)/sigt12)**2
103 . + beta*(signzx(i)/sigt12)**2
105 dfmax(i,2) =
max(damft,dfmax(i,2))
106 dfmax(i,2) =
min(dfmax(i,2),one)
108 damfc = (signxx(i)/sigc1)**2
110 dfmax(i,3) =
max(damfc,dfmax(i,3))
111 dfmax(i,3) =
min(dfmax(i,3),one)
115 IF (signyy(i) > zero)
THEN
116 dammt1 = (signyy(i)/sigt2)**2
117 . + (signxy(i)/sigt12)**2
119 dfmax(i,4) =
max(dammt1,dfmax(i,4))
120 dfmax(i,4) =
min(dfmax(i,4),one)
122 dammc1 = (signyy(i)/(two*sigt12))**2
123 . + (signxy(i)/sigt12)**2
124 . + signyy(i)*((sigc2/(two*sigt12))**2 - one)/sigc2
126 dfmax(i,5) =
max(dammc1,dfmax(i,5))
127 dfmax(i,5) =
min(dfmax(i,5),one)
131 IF (signzz(i) > zero)
THEN
132 dammt2 = (signzz(i)/sigt2)**2
133 . + (signzx(i)/sigt12)**2
135 dfmax(i,4) =
max(dammt2,dfmax(i,4))
136 dfmax(i,4) =
min(dfmax
138 dammc2 = (signzz(i)/(two*sigt12))**2
139 . + (signzx(i)/sigt12)**2
140 . + signzz(i)*((sigc2/(two*sigt12))**2 - one)/sigc2
142 dfmax(i,5) =
max(dammc2,dfmax(i,5))
143 dfmax(i,5) =
min(dfmax(i,5),one)
147 dammx =
max(damft,damfc,dammc1,dammt1,dammc2,dammt2)
148 dfmax(i,1) =
min(one,
max(dammx,dfmax(i,1)))
149 IF (dfmax(i,1) >= one)
THEN
157 IF ((uvar(i,1) > zero).AND.(loff(i) /= zero).AND.(off(i) /= zero))
THEN
158 dmg_scale(i) = exp(-(time - uvar(i,1))/tmax)
159 IF (dmg_scale(i) < em02)
THEN
163 noff(i) = noff(i) + 1
164 IF (noff(i) >= failip)
THEN
181 WRITE(iout, 1000) ngl(i),ip,ilay
182 WRITE(istdo,1100) ngl(i),ip,ilay,time
183#include "lockoff.inc"
191 WRITE(iout, 1200) ngl(i),time
192 WRITE(istdo,1200) ngl(i),time
193#include "lockoff.inc"
197 1000
FORMAT(1x,
'FAILURE (CHANG) OF SOLID ELEMENT ',i10,1x,
198 .
',GAUSS PT',i5,1x,
',LAYER',i5)
199 1100
FORMAT(1x,
'FAILURE (CHANG) OF SOLID ELEMENT ',i10,1x,
200 .
',GAUSS PT',i5,1x,
',LAYER',i5,1x,
'AT TIME :',1pe20.13)
201 1200
FORMAT(1x,
'-- RUPTURE OF SOLID ELEMENT : ',i10,1x,
202 .
'AT TIME :',1pe20.13)
subroutine fail_changchang_s(nel, nuparam, nuvar, uparam, uvar, time, ip, ilay, npg, ngl, dmg_scale, dfmax, off, loff, noff, signxx, signyy, signzz, signxy, signzx, tdele, lf_dammx)
subroutine mulaw(lft, llt, nft, mtn, jcvt, pm, off, sig, eint, rho, vol, strain, gama, uvar, bufmat, tf, npf, imat, ngl, nuvar, nvartmp, vartmp, geo, pid, epsd, wxx, wyy, wzz, jsph, ssp, voln, vis, d1, d2, d3, d4, d5, d6, dvol, sold1, sold2, sold3, sold4, sold5, sold6, rx, ry, rz, sx, sy, sz, tx, ty, tz, ismstr, mfxx, mfxy, mfxz, mfyx, mfyy, mfyz, mfzx, mfzy, mfzz, ipm, isorth, nel, matparam)