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(i,4),one)
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
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)