31 1 NEL ,NUPARAM ,NUVAR ,NFUNC ,IFUNC ,
32 2 NPF ,TF ,TIME ,TIMESTEP,UPARAM ,
33 3 UVAR ,NGL ,EPS1 ,EPS2 ,EPS3 ,
34 4 EPSP ,OFFG ,OFFL ,IPG ,ISOLID ,
35 5 SIGNZZ ,SIGNYZ ,SIGNZX ,DEIN ,DEIT ,
36 6 DFMAX ,LF_DAMMX,TDELE ,AREA ,SOFT )
40#include "implicit_f.inc"
81 INTEGER NEL,NUPARAM,NUVAR,NFUNC,IPG,ISOLID
82 INTEGER NGL(*),NPF(*),IFUNC(*)
83 INTEGER,
INTENT(IN) :: LF_DAMMX
85 UPARAM(NUPARAM),UVAR(NEL,NUVAR),TF(*)
86 my_real,
DIMENSION(NEL) :: OFFG,OFFL,,EPS2,EPS3,EPST,EPSP,
87 . signzz,signyz,signzx,dein,deit,tdele,
area,soft
88 my_real ,
DIMENSION(NEL,LF_DAMMX),
INTENT(INOUT) :: dfmax
92 INTEGER I,J,IDEL,NINDX,NINDXE,NINDXS,FUNN,FUNT,IFAILS,IFAILE,
94 INTEGER,
DIMENSION(NEL) :: INDX,INDXA,INDXE,INDXS
95 my_real C1,C2,C3,C4,CM,DYDX,DAMT,IFLAG,DEFO,DTIME,DSOFT,AREASCALE,
96 . ,MAXDT,MAXEI,MAXEN,MAXET,FAC1,FAC2,ASCALE,EXPN,EXPT,NN,NT
97 my_real,
DIMENSION(NEL) :: EI,EN,ET,DAM1,DAM2,DAM3
111 ifails = nint(uparam(8))
112 ifaile = nint(uparam(9))
113 isolid = nint(uparam(10))
121 isym = nint(uparam(18))
122 areascale = uparam(19)
126 IF (isigi == zero)
THEN
127 IF ((uvar(1,1) == zero).AND.(offl(1) == one))
THEN
132 IF (uvar(1,8) == zero)
THEN
155 et(i) = et(i) + deit(i)
156 IF (isym == 1 .AND. signzz(i) < zero)
THEN
159 en(i) = en(i) + dein(i)
161 ei(i) = en(i) + et(i)
170 IF (ifaile == 1)
THEN
172 dfmax(i,7) =
max(dfmax(i,7),c1)
173 dfmax(i,7) =
min(dfmax(i,7),one)
175 IF (dam1(i) == zero)
THEN
179 dam1(i) = dam1(i) + c1 * timestep
182 ELSEIF (ifaile == 2)
THEN
183 c2 = (et(i)/maxet)**nt+ (en(i)/maxen)**nn
184 dfmax(i,5) =
max(dfmax(i,5),en(i)/maxen)
185 dfmax(i,5) =
min(dfmax(i,5),one)
186 dfmax(i,6) =
max(dfmax(i,6),et(i)/maxet)
187 dfmax(i,6) =
min(dfmax(i,6),one)
189 IF (dam1(i) == zero)
THEN
193 dam1(i) = dam1(i) + c2*timestep
195 ELSEIF (ifaile == 3)
THEN
197 dfmax(i,7) =
max(dfmax(i,7),c1)
198 dfmax(i,7) =
min(dfmax(i,7),one)
199 c2 = (et(i)/maxet)**nt+ (en(i)/maxen)**nn
200 dfmax(i,5) =
max(dfmax(i,5),en(i)/maxen)
201 dfmax(i,5) =
min(dfmax(i,5),one)
202 dfmax(i,6) =
max(dfmax(i,6),et(i)/maxet)
203 dfmax(i,6) =
min(dfmax(i,6),one)
205 dfmax(i,8) =
max(dfmax(i,8),c1)
206 dfmax(i,8) =
min(dfmax(i,8),one)
208 IF (dam1(i) == zero)
THEN
212 dam1(i) = dam1(i) + c1*timestep
222 epst(i) = sqrt(eps2(i)**2 + eps3(i)**2)
223 c3 = fac1*eps1(i)/maxdn
224 c4 = fac2*epst(i)/maxdt
225 IF (funn > 0) c3 = c3*finter(funn,epsp(i)*ascale,npf,tf,dydx)
226 IF (funt > 0) c4 = c4*finter(funt,epsp(i)*ascale,npf,tf,dydx)
227 dfmax(i,2) =
max(dfmax(i,2),c3)
228 dfmax(i,2) =
min(dfmax(i,2),one)
229 dfmax(i,3) =
max(dfmax(i,3),c4)
230 dfmax(i,3) =
min(dfmax(i,3),one)
231 IF (ifails == 1)
THEN
234 dfmax(i,4) =
max(dfmax(i,4),c3)
235 dfmax(i,4) =
min(dfmax(i,4),one)
237 IF (dam3(i) == zero)
THEN
241 dam3(i) = dam3(i) + c3*timestep
243 ELSEIF (ifails == 2)
THEN
245 cm = abs(c3)**expn + abs(c4)**expt
246 dfmax(i,4) =
max(dfmax(i,4),cm)
247 dfmax(i,4) =
min(dfmax(i,4),one)
249 IF (dam3(i) == zero)
THEN
253 dam3(i) = dam3(i) + cm* timestep
258 damt =
max(dam1(i),dam3(i))
259 IF (damt > dtime)
THEN
262 ELSEIF (dsoft == one)
THEN
263 soft(i) = one - damt/
max(dtime,em20)
264 ELSEIF (dsoft > zero)
THEN
265 soft(i) = (one - damt/
max(dtime,em20))**dsoft
268 IF (idel == 1 .AND. offl(i) == one)
THEN
276 IF (areascale > zero .AND. offg
THEN
277 defo = uvar(i,8) * areascale
278 IF (
area(i) > defo)
THEN
296 dfmax(i,1) =
min(one,
max(dfmax(i,1),damt/
max(dtime,em20)))
304 WRITE(iout ,1000) ngl(i),ipg,ei(i)
305 WRITE(istdo,1100) ngl(i),ipg,ei(i),time
306#include "lockoff.inc"
308 ELSEIF (nindxs > 0)
THEN
312 WRITE(iout ,1600) ngl(i),ipg,eps1(i),epst(i)
313 WRITE(istdo,1700) ngl(i),ipg,eps1(i),epst(i),time
314#include "lockoff.inc"
316 ELSEIF (nindx > 0)
THEN
320 WRITE(iout ,1200) ngl(i),ipg
321 WRITE(istdo,1300) ngl(i),ipg,time
322#include "lockoff.inc"
324 ELSEIF (nindxa > 0)
THEN
328 WRITE(iout ,1400) ngl(i),
area(i)
329 WRITE(istdo,1500) ngl(i),
area(i),time
330#include "lockoff.inc"
334 1000
FORMAT(5x,
'START DAMAGE CONNECTION ELEMENT ',i10,
335 .
' INTEGRATION POINT',i2,
', ENERGY=',1pe16.9)
336 1100
FORMAT(5x,
'START DAMAGE CONNECTION ELEMENT ',i10,
337 .
' INTEGRATION POINT',i2,
', ENERGY=',1pe16.9,
338 .
' AT TIME ',1pe16.9)
339 1200
FORMAT(5x,
'FAILURE CONNECTION SOLID ELEMENT ',i10,
340 .
' INTEGRATION POINT',i2)
341 1300
FORMAT(5x,
'FAILURE CONNECTION SOLID ELEMENT ',i10,
342 .
' INTEGRATION POINT',i2,
' AT TIME ',1pe16.9)
343 1400
FORMAT(5x,
'FAILURE CONNECTION SOLID ELEMENT ',i10,
344 .
', AREA(LIMIT REACHED) =',1pe16.9)
345 1500
FORMAT(5x,
'FAILURE CONNECTION SOLID ELEMENT ',i10,
346 .
', AREA(LIMIT REACHED) :',1pe16.9,
' AT TIME ',1pe16.9)
347 1600
FORMAT(5x,
'START DAMAGE CONNECTION ELEMENT ',i10,
348 .
' INTEGRATION POINT',i2,
', EPSN=',1pe16.9,
', EPST=',1pe16.9)
349 1700
FORMAT(5x,
'START DAMAGE CONNECTION ELEMENT ',i10,
350 .
' INTEGRATION POINT',i2,
', EPSN=',1pe16.9,
', EPST=',1pe16.9,
351 .
' AT TIME ',1pe16.9)
subroutine fail_connect(nel, nuparam, nuvar, nfunc, ifunc, npf, tf, time, timestep, uparam, uvar, ngl, eps1, eps2, eps3, epsp, offg, offl, ipg, isolid, signzz, signyz, signzx, dein, deit, dfmax, lf_dammx, tdele, area, soft)