31 1 NEL ,NUPARAM ,NUVAR ,NFUNC ,IFUNC ,
32 2 NPF ,TF ,TIME ,TIMESTEP,UPARAM ,
33 3 UVAR ,NGL ,IPG ,NPG ,NDAMF ,
34 4 EPSD ,PLA ,OFFG ,OFFL ,ISOLID ,
35 5 SIGNZZ ,SIGNYZ ,SIGNZX ,SYM ,AREA ,
36 6 DMG ,DAMT ,DFMAX ,TDELE )
40#include "implicit_f.inc"
76 INTEGER NEL,NUPARAM,NUVAR,NFUNC,IPG,NPG,NDAMF,ISOLID
77 INTEGER NGL(NEL),NPF(*),IFUNC(*)
79 my_real UPARAM(NUPARAM),UVAR(NEL,NUVAR),DAMT(NEL,NDAMF),TF(*)
80 my_real ,
DIMENSION(NEL) :: OFFG,OFFL,EPSD,PLA,DEIN,DEIT,
81 . SIGNZZ,SIGNYZ,SIGNZX,SYM,DMG,DFMAX,TDELE,AREA
85 INTEGER I,J,IDEL,IDEV,NINDX,NINDXD,,ISYM,FUNN,FUNT,IFUN2N,
86 . ifun2t,ifun3n,ifun3t
87 INTEGER INDX(NEL),INDXD(NEL),INDXA(NEL)
88 my_real A2,B2,A3,B3,XSCALE2,XSCALE3,SVMN,SVMT,T1,T2,TTN,TTS,FCT,
89 . DYDX,DAMA,SSYM,CPHI,SPHI,AREASCALE,DEFO
90 my_real ,
DIMENSION(NEL) :: FUN2N,FUN2T,FUN3N,FUN3T,DYDX2N,
91 . dydx2t,dydx3n,dydx3t,phi,pla1,pla2
113 isolid = nint(uparam(5))
116 isym = nint(uparam(8))
117 areascale = uparam(9)
124 IF (uvar(1,3) == zero)
THEN
137 IF (ifun2n == 0)
THEN
141 fun2n(i) = finter(ifun2n,epsd(i)*xscale2,npf,tf,dydx2n)
144 IF (ifun2t == 0)
THEN
148 fun2t(i) = finter(ifun2t,epsd(i)*xscale2,npf,tf,dydx2t)
151 IF (ifun3n == 0)
THEN
157 fun3n(i) = finter(ifun3n,epsd(i)*xscale3,npf,tf,dydx3n)
160 IF (ifun3t == 0)
THEN
166 fun3t(i) = finter(ifun3t,epsd(i)*xscale3,npf,tf,dydx3t)
178 svmn = abs(signzz(i))
179 svmt = sqrt(signyz(i)**2 + signzx(i)**2)
180 phi(i)= atan(svmn/
max(em20,svmt))
184 IF (pla1(i) == zero)
THEN
185 IF (isym == 1 .AND. signzz(i)<= zero)
THEN
188 t1 = sphi/(one-a2*ssym)/fun2n(i)
193 fct = (ttn**b2 + tts**b2)**(one/b2)
194 damt(i,2) =
min(fct, one)
196 pla1(i) = (t1**b2 + t2**b2)**(-one/b2)
197 IF (isym == 1 .AND. signzz(i) <= zero)
THEN
200 t1 = sphi/(one-a3*ssym)/fun3n(i)
205 fct = (ttn**b3 + tts**b3) **(one / b3)
206 pla2(i) = (t1**b3 + t2**b3)**(-one/b3)
207 damt(i,1) = (pla(i)-pla1(i))/
max(em20,(pla2(i) - pla1(i)))
208 damt(i,1) =
min(damt(i,1), one)
209 damt(i,3) =
min(fct, one)
216 IF (isym == 1 .AND. signzz(i) <= zero)
THEN
219 t1 = sphi/(one-a3*ssym)/fun3n(i)
224 fct = (ttn**b3 + tts**b3) **(one / b3)
225 pla2(i) = (t1**b3 + t2**b3)**(-one/b3)
226 damt(i,1) = (pla(i)-pla1(i))/
max(em20,(pla2(i) - pla1(i)))
227 damt(i,1) =
min(damt(i,1), one)
228 damt(i,3) =
min(fct, one)
236 dmg(i) =
max(dmg(i),dama)
237 dmg(i) =
min(dmg(i),one)
239 IF (idel == 1 .AND. offl(i) == one)
THEN
249 dfmax(i) =
min(one,
max(dfmax(i),damt(i,1)))
252 IF (areascale > zero )
THEN
253 defo = uvar(i,3) * areascale
254 IF (area(i) > defo .AND. offg(i) == one)
THEN
269 WRITE(iout ,1000) ngl(i),ipg,pla1(i)
270 WRITE(istdo,1100) ngl(i),ipg,pla1(i),time
271#include "lockoff.inc"
273 ELSEIF (nindx > 0)
THEN
277 WRITE(iout ,1200) ngl(i),ipg,pla2(i)
278 WRITE(istdo,1300) ngl(i),ipg,pla2(i),time
279#include "lockoff.inc"
281 ELSEIF (nindxa > 0)
THEN
285 WRITE(iout ,1400) ngl(i),area(i)
286 WRITE(istdo,1500) ngl(i),area(i),time
287#include "lockoff.inc"
291 1000
FORMAT(5x,
'START DAMAGE CONNECTION ELEMENT ',i10,
292 .
' INTEGRATION POINT',i2,
', PLASTIC ELONGATION =',1pe16.9)
293 1100
FORMAT(5x,
'START DAMAGE CONNECTION ELEMENT ',i10,
294 .
' INTEGRATION POINT',i2,
', PLASTIC ELONGATION =',1pe16.9,
295 .
' AT TIME ',1pe16.9)
296 1200
FORMAT(5x,
'FAILURE CONNECTION SOLID ELEMENT ',i10,
297 .
' INTEGRATION POINT',i2,
', PLASTIC ELONGATION=',1pe16.9)
298 1300
FORMAT(5x,
'FAILURE CONNECTION SOLID ELEMENT ',i10,
299 .
' INTEGRATION POINT',i2
', PLASTIC ELONGATION :',1pe16.9,
300 .
' AT TIME ',1pe16.9)
301 1400
FORMAT(5x,
'FAILURE CONNECTION SOLID ELEMENT ',i10,
302 .
', AREA (LIMIT REACHED) :',1pe16.9)
303 1500
FORMAT(5x,
'FAILURE CONNECTION SOLID ELEMENT ',i10,
304 .
', AREA (LIMIT REACHED) :',1pe16.9,
' AT TIME ',1pe16.9)
subroutine fail_snconnect(nel, nuparam, nuvar, nfunc, ifunc, npf, tf, time, timestep, uparam, uvar, ngl, ipg, npg, ndamf, epsd, pla, offg, offl, isolid, signzz, signyz, signzx, sym, area, dmg, damt, dfmax, tdele)