35 1 NEL ,NUVAR ,NPF ,TF ,TIME ,
37 4 SIGNXX ,SIGNYY ,SIGNZZ ,SIGNXY ,SIGNYZ ,SIGNZX ,
38 5 PLAS ,DPLA ,EPSP ,TSTAR ,UVAR ,
46#include "implicit_f.inc"
60 INTEGER,
INTENT(IN) :: NFUNC
61 INTEGER,
DIMENSION(NFUNC),
INTENT(IN) :: IFUNC
63 my_real TIME,TIMESTEP,UPARAM(*),ALDT(NEL),
64 . signxx(nel),signyy(nel),signzz(nel),
65 . signxy(nel),signyz(nel),signzx
66 . plas(nel),dpla(nel),epsp(nel),tstar(nel)
70 my_real :: uvar(nel,nuvar), off(nel), dfmax(nel),tdele(nel)
80 INTEGER I,J,K,,J2,IDEL,IDEV,,NINDX,NRATE,IFUN_EL,IFUN_TEMP,SFLAG
81 INTEGER,
DIMENSION(NEL) :: INDX
83 my_real :: dcrit,dd,dn,sc_temp,sc_el,el_ref,dp,p,sigm,svm,
84 . sxx,syy,szz,ef1,ef2,df,fac,lambda,eta,yy
85 my_real,
DIMENSION(NEL) :: epsf
86 my_real,
DIMENSION(NFUNC) :: yfac,rate
90 sflag = int(uparam(1))
103 ELSEIF (sflag == 2)
THEN
105 ELSEIF (sflag == 3)
THEN
109 yfac(1:nrate) = uparam(11+1 :11+nrate)
110 rate(1:nrate) = uparam(11+nrate:11+nrate*2)
117 p = third*(signxx(i) + signyy(i) + signzz(i))
121 svm = half*(sxx**2 + syy**2 + szz**2)
122 . + signxy(i)**2+ signzx(i)**2 + signyz(i)**2
123 svm = sqrt(three*svm)
124 sigm = p /
max(em20,svm)
129 ef1 = yfac(j1)*finter(ifunc(j1),sigm,npf,tf,df)
130 ef2 = yfac(j2)*finter(ifunc(j2),sigm,npf,tf,df)
131 fac = (epsp(i) - rate(j1)) / (rate(j2) - rate(j1))
132 epsf(i) =
max(ef1 + fac*(ef2 - ef1), em20)
134 epsf(i) = yfac(j1)*finter(ifunc(j1),sigm,npf,tf,df)
143 IF (ifun_el > 0)
THEN
144 lambda = aldt(i) / el_ref
145 fac = sc_el*finter(ifun_el,lambda,npf,tf,df)
146 epsf(i) = epsf(i)* fac
149 IF (ifun_temp > 0)
THEN
150 fac = sc_temp*finter(ifun_temp,tstar(i),npf,tf,df)
151 epsf(i) = epsf(i)* fac
158 IF (off(i) < 0.1) off(i)=zero
159 IF (off(i) < one) off(i)=off(i)*four_over_5
166 IF (sflag==1 .AND. off(i)==one)
THEN
167 dp = dn*dd**(one-one/dn)
168 IF (epsf(i) > zero) uvar(i,1)=uvar(i,1) + dp*dpla(i)/epsf(i)
169 IF (uvar(i,1) >= dcrit)
THEN
177 IF (nindx > 0 .AND. imconv == 1)
THEN
180 WRITE(iout, 1000) ngl(indx(j))
181 WRITE(istdo,1100) ngl(indx(j)),time
182#include "lockoff.inc"
191 IF (off(i) == one .AND. (sflag==2 .OR. sflag==3))
THEN
192 IF (uvar(i,1) < dcrit)
THEN
193 dp = dn*dd**(one-one/dn)
194 IF (epsf(i) > zero) uvar(i,1)=uvar(i,1)+dp*dpla(i)/epsf(i)
195 IF (uvar(i,1) >= dcrit)
THEN
198 p = third*(signxx(i) + signyy(i) + signzz(i))
205 ELSEIF (sflag == 2)
THEN
206 p = third*(signxx(i) + signyy(i) + signzz(i))
214 IF (nindx > 0.AND.imconv == 1)
THEN
218 WRITE(iout, 2000) ngl(i)
219 WRITE(istdo,2100) ngl(i),time
220#include "lockoff.inc"
226 dfmax(i)=
min(one,
max(dfmax(i),uvar(i,1)/dcrit))
229 1000
FORMAT(1x,
'DELETE SOLID ELEMENT NUMBER ',i10)
230 1100
FORMAT(1x,
'DELETE SOLID ELEMENT NUMBER ',i10,
231 .
' AT TIME :',1pe12.4)
233 2000
FORMAT(1x,
' DEVIATORIC STRESS SET TO ZERO',i10)
234 2100
FORMAT(1x,
' DEVIATORIC STRESS SET TO ZERO',i10,
235 .
' AT TIME :',1pe12.4)
subroutine fail_tab_old_s(nel, nuvar, npf, tf, time, uparam, ngl, aldt, signxx, signyy, signzz, signxy, signyz, signzx, plas, dpla, epsp, tstar, uvar, off, dfmax, tdele, nfunc, ifunc)