31 1 NEL ,NUPARAM ,NUVAR ,JSMS ,TIME ,TIMESTEP,
32 2 UPARAM ,UVAR ,AREA ,OFF ,OFFL ,
33 3 EPSZZ ,EPSYZ ,EPSZX ,DEPSZZ ,DEPSYZ ,DEPSZX ,
34 4 SIGNZZ ,SIGNYZ ,SIGNZX ,STIFM ,DMELS ,DMG ,
35 5 IPG ,NFAIL ,NGL ,NFUNC ,IFUNC ,NPF ,TF)
39#include "implicit_f.inc"
47 INTEGER ,
INTENT(IN) :: NEL,NUPARAM,NUVAR,JSMS,IPG
48 INTEGER ,
INTENT(OUT) :: NFAIL
49 INTEGER ,
DIMENSION(NEL) ,
INTENT(IN) :: NGL
50 my_real ,
INTENT(IN) :: TIME,TIMESTEP
51 my_real ,
DIMENSION(NEL) :: OFF,OFFL,AREA,DMELS,
52 . epszz,epsyz,epszx,depszz
53 my_real ,
DIMENSION(NEL) ,
INTENT(OUT) :: dmg
54 my_real ,
DIMENSION(NEL) ,
INTENT(INOUT) :: stifm
55 my_real ,
DIMENSION(NUPARAM) ,
INTENT(IN) :: uparam
56 my_real ,
DIMENSION(NEL,NUVAR) ,
INTENT(INOUT) :: uvar
58 INTEGER NPF(*), NFUNC, IFUNC(NFUNC)
64 INTEGER :: I,J,K,II, I_REL, IRUPT,NINDXF
65 INTEGER ,
DIMENSION(NEL) :: INDXF
66 my_real :: RHO0, DM, DAM, STF, ET2,DTB,
67 . E_ELAS_N,DTINV , T_N,T_S,
68 . EXP_G , EXP_BK, DELTA0S_CST, DELTA0N_CST,
69 . gic , giic , e_elas_s, und_cst, utd_cst,gama
71 my_real,
DIMENSION(NEL) :: epsm,delta0m, beta,
72 . etha,deltafmax,epst,fac1, fac2,fac3,epsmmax ,epsn ,
73 . delta0n,delta0s,und,utd,dydx1,dydx2,length,tmax_n,tmax_s
91 irupt = int(uparam(6) )
94 nfail = int(uparam(9))
97 delta0n_cst = uparam(13)
98 delta0s_cst = uparam(14)
103 dtinv = one / (
max(timestep, em20))
104 stf = e_elas_n + e_elas_s
107 IF (time == zero)
THEN
113 epsmmax(i) = uvar(i,4)
118 epsn(i) =
max(epszz(i) , zero)
119 epst(i) = sqrt(epsyz(i)**2 + epszx(i)**2)
120 epsm(i) = sqrt( epsn(i)**2 + epst(i)**2)
121 epsmmax(i) =
max(epsm(i),epsmmax(i))
126 IF ( ifunc(1) /= 0.OR. ifunc(2) /= 0)
THEN
127 length(1:nel) = sqrt(area(1:nel))
129 IF ( ifunc(1) /= 0)
THEN
131 tmax_n(i) = t_n * finter(ifunc(1),length(i),npf,tf
132 delta0n(i)= tmax_n(i) /e_elas_n
133 und(i) = two*gic /tmax_n(i)
137 delta0n(i) = delta0n_cst
141 IF ( ifunc(2) /= 0)
THEN
143 tmax_s(i) = t_s * finter(ifunc(2),length(i),npf,tf,dydx2(i))
144 delta0s(i)= tmax_s(i) /e_elas_s
145 utd(i) = two*giic/tmax_s(i)
149 delta0s(i) = delta0s_cst
157 IF (epst(i) == zero)
THEN
158 delta0m(i) = delta0n(i)
159 ELSE IF (epsn(i) == zero)
THEN
160 delta0m(i) = delta0s(i)
162 beta(i) = abs(epst(i) / epsn(i))
163 delta0m(i)= delta0s(i)* delta0n(i)*sqrt((one + beta(i)**2)/
164 . ((delta0s(i)**2) + (beta(i)* delta0n(i))**2))
173 IF (epst(i) == zero)
THEN
175 ELSE IF (epsn(i) == zero)
THEN
178 fac1(i) = (e_elas_n**gama)/(one + beta(i)**2)
179 fac2(i) = (e_elas_s**gama)*(beta(i)**2)/(one + beta(i)**2)
180 fac3(i) = (fac1(i) + fac2(i) )**(one/gama)
182 deltafmax(i)= two/(delta0m(i)* fac3(i) )*
183 . (gic + (giic - gic)*((e_elas_s*beta(i)**2)/
184 . (e_elas_n + e_elas_s*beta(i)**2))**abs(exp_bk))
190 IF (epst(i) == zero)
THEN
192 ELSE IF (epsn(i) == zero)
THEN
195 fac1(i) = two*((one+beta(i)**2))/delta0m(i)
198 . (e_elas_s*(beta(i)**2)/giic)**exp_g)**(-one/exp_g)
206 dm = epsmmax(i) - delta0m(i)
207 IF (dm > zero.AND.epsmmax(i) /= zero
THEN
208 dam = (deltafmax(i) / epsmmax(i))*
209 . (epsmmax(i) - delta0m(i))/
210 .
max((deltafmax(i) - delta0m(i)), em20)
212 dmg(i) =
max(dmg(i), dam)
213 dmg(i) =
min(dmg(i), one)
214 IF (offl(i) == one .AND. epsmmax(i) > deltafmax(i) )
THEN
221!---------------------------------------------------------------
225 IF (epszz(i) < zero )
THEN
226 signzz(i) = e_elas_n*epszz(i)
228 signzz(i) = (one-dmg(i))*e_elas_n*epszz(i)
231 signyz(i) = (one-dmg(i))*e_elas_s*(epsyz(i))
233 signzx(i) = (one-dmg(i))*e_elas_s*(epszx(i))
240 uvar(i,4)= epsmmax(i)
245 uvar(i,9)= delta0m(i)
247 uvar(i,12) = deltafmax(i)
252 IF (idtmins==2 .AND. jsms/=0)
THEN
253 dtb = (dtmins/dtfacs)**2
255 dmels(i)=
max(dmels(i),half*dtb*stf*area(i)*off(i))
258 stifm(1:nel) = stifm(1:nel) + stf*area(1:nel)*off(1:nel)
264 WRITE(iout ,1000) ngl(i),ipg,epsm(i)
265 WRITE(istdo,1100) ngl(i),ipg,epsm(i),time
266#include "lockoff.inc"
270 1000
FORMAT(5x,
'FAILURE COHESIVE ELEMENT ',i10,
271 .
' INTEGRATION POINT',i2,
', MIXED MODE STRAIN=',1pe16.9)
272 1100
FORMAT(5x,
'FAILURE COHESIVE ELEMENT ',i10,
273 .
' INTEGRATION POINT',i2,
', MIXED MODE STRAIN=',1pe16.9,
274 .
' AT TIME ',1pe16.9)
subroutine sigeps117(nel, nuparam, nuvar, jsms, time, timestep, uparam, uvar, area, off, offl, epszz, epsyz, epszx, depszz, depsyz, depszx, signzz, signyz, signzx, stifm, dmels, dmg, ipg, nfail, ngl, nfunc, ifunc, npf, tf)