30 1 NEL ,NUPARAM ,NUVAR ,UPARAM ,UVAR ,
31 2 TIME ,TIMESTEP ,IPG ,ILAY ,IPT ,
32 3 NGL ,DMG_FLAG ,DMG_SCALE ,DFMAX ,TDEL ,
33 4 SIGNXX ,SIGNYY ,SIGNXY ,SIGNYZ ,SIGNZX ,
34 5 OFF ,FOFF ,LF_DAMMX )
40#include "implicit_f.inc"
75 INTEGER ,
INTENT(IN) :: NEL,NUPARAM,NUVAR,IPG,ILAY,IPT,LF_DAMMX
76 INTEGER ,
DIMENSION(NEL) ,
INTENT(IN) :: NGL
77 my_real ,
INTENT(IN) :: TIME
78 my_real ,
DIMENSION(NEL) ,
INTENT(IN) :: OFF,TIMESTEP,
79 . SIGNXX,SIGNYY,SIGNXY,SIGNYZ,SIGNZX
80 my_real,
DIMENSION(NUPARAM) ,
INTENT(IN) :: uparam
84 INTEGER ,
INTENT(OUT) ::DMG_FLAG
85 INTEGER ,
DIMENSION(NEL) ,
INTENT(INOUT) :: FOFF
86 my_real ,
DIMENSION(NEL,LF_DAMMX),
INTENT(INOUT) :: DFMAX
87 ,
DIMENSION(NEL) ,
INTENT(OUT) :: TDEL,DMG_SCALE
88 my_real ,
DIMENSION(NEL,NUVAR) ,
INTENT(INOUT) :: UVAR
92 INTEGER :: I,J,NINDX,IFAIL_SH,IDEL_FM,IDEL_F
93 INTEGER ,
DIMENSION(NEL) :: INDX
94 my_real :: SIGT1,SIGT2,SIGT12,SIGC1,SIGC2,BETA,TMAX,
95 . DAMFT,DAMFC,DAMMT,DAMMC,DAMMX
104 ifail_sh = int(uparam(8))
109 IF (ifail_sh == 1)
THEN
111 ELSEIF (ifail_sh == 2)
THEN
113 ELSEIF (ifail_sh == 3)
THEN
115 ELSEIF (ifail_sh == 4)
THEN
123 IF (idel_fm == 1)
THEN
126 IF (off(i) == one .and. foff(i) == 1)
THEN
128 IF (uvar(i,1) == zero)
THEN
130 IF (signxx(i) > zero)
THEN
131 damft = (signxx(i)/sigt1)**2 + beta*(signxy(i)/sigt12)**2
134 dfmax(i,2) =
min(dfmax(i,2),one)
136 damfc = (signxx(i)/sigc1)**2
138 dfmax(i,3) =
max(damfc,dfmax(i,3))
139 dfmax(i,3) =
min(dfmax(i,3),one)
143 IF (signyy(i) > zero)
THEN
144 dammt = (signyy(i)/sigt2)**2
145 . + (signxy(i)/sigt12)**2
147 dfmax(i,4) =
max(dammt,dfmax(i,4))
148 dfmax(i,4) =
min(dfmax(i,4),one)
150 dammc = (signyy(i)/(two*sigt12))**2
151 . + (signxy(i)/sigt12)**2
152 . + signyy(i)*((sigc2/(two*sigt12))**2 - one)/sigc2
154 dfmax(i,5) =
max(dammc,dfmax(i,5))
155 dfmax(i,5) =
min(dfmax(i,5),one)
157 dammx =
max(damft,damfc,dammc,dammt)
158 dfmax(i,1) =
min(one,dammx)
159 IF (dammx >= one)
THEN
166 IF (uvar(i,1) > zero)
THEN
168 dmg_scale(i) = exp(-(time + timestep(i) - uvar(i,1))/tmax)
170 IF (dmg_scale(i) < em02)
THEN
177 ELSEIF (foff(i) == 0)
THEN
185 IF (idel_f == 1)
THEN
188 IF (off(i) == one .and. foff(i) == 1)
THEN
190 IF (uvar(i,1) == zero)
THEN
192 IF (signxx(i) > zero)
THEN
193 damft = (signxx(i)/sigt1
196 dfmax(i,2) =
max(damft,dfmax(i,2))
197 dfmax(i,2) =
min(dfmax(i,2),one)
199 damfc = (signxx(i)/sigc1)**2
201 dfmax(i,3) =
max(damfc,dfmax(i,3))
202 dfmax(i,3) =
min(dfmax(i,3),one)
204 dammx =
max(damft,damfc)
205 dfmax(i,1) =
min(one,dammx)
206 IF (dammx >= one) uvar(i,1) = time
209 IF (uvar(i,1) > zero)
THEN
211 dmg_scale(i) = exp(-(time + timestep(i) - uvar(i,1))/tmax)
213 IF (dmg_scale(i) < em02)
THEN
221 ELSEIF (foff(i) == 0)
THEN
232 WRITE(iout, 2000) ngl(i),ipg,ilay,ipt
233 WRITE(istdo,2100) ngl(i),ipg,ilay,ipt,time
234#include "lockoff.inc"
238 2000
FORMAT(1x,
'FAILURE (CHANG) OF SHELL ELEMENT ',i10,1x,
',GAUSS PT',
239 . i2,1x,
',LAYER',i3,1x,
',INTEGRATION PT',i3)
240 2100
FORMAT(1x,
'FAILURE (CHANG) OF SHELL ELEMENT ',i10,1x,
',GAUSS PT',
241 . i2,1x,
',LAYER',i3,1x,
',INTEGRATION PT',i3,1x,
'AT TIME :',1pe12.4)
subroutine fail_changchang_c(nel, nuparam, nuvar, uparam, uvar, time, timestep, ipg, ilay, ipt, ngl, dmg_flag, dmg_scale, dfmax, tdel, signxx, signyy, signxy, signyz, signzx, off, foff, lf_dammx)
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)