35 1 NEL ,NUPARAM ,NUVAR ,UPARAM ,UVAR ,
36 2 NFUNC ,IFUNC ,NPF ,TF ,
37 3 TIME ,NGL ,IPG ,ILAY ,IPT ,
38 4 SIGNXX ,SIGNYY ,SIGNXY ,SIGNYZ ,SIGNZX ,
39 5 DPLA ,EPSP ,THK ,ALDT ,TEMP ,
40 6 OFF ,FOFF ,DFMAX ,TDEL )
48#include "implicit_f.inc"
57 INTEGER ,
INTENT(IN) :: NEL,NUPARAM,NUVAR,IPG,ILAY,IPT
58 INTEGER ,
DIMENSION(NEL) ,
INTENT(IN) :: NGL
59 my_real ,
INTENT(IN) :: TIME
60 my_real ,
DIMENSION(NEL) ,
INTENT(IN) :: OFF,THK,ALDT,DPLA,EPSP,
61 . TEMP,SIGNXX,SIGNYY,SIGNXY,SIGNYZ,SIGNZX
62 my_real,
DIMENSION(NUPARAM) ,
INTENT(IN) :: UPARAM
66 INTEGER ,
DIMENSION(NEL) ,
INTENT(INOUT) :: FOFF
67 my_real ,
DIMENSION(NEL) ,
INTENT(INOUT) :: DFMAX
68 my_real ,
DIMENSION(NEL) ,
INTENT(OUT) :: tdel
69 my_real ,
DIMENSION(NEL,NUVAR) ,
INTENT(INOUT) :: uvar
73 INTEGER NPF(*), NFUNC, IFUNC(NFUNC)
79 INTEGER :: I,J,J1,J2,K,IP_THICK,NINDX,NINDXF
81 INTEGER,
DIMENSION(NEL) :: INDX,INDXF,IPOSV,IADP,ILENP
83 INTEGER ,
DIMENSION(NFUNC) :: IFUN_STR
85 my_real :: p,svm,df,fac,lambda,dcrit,el_ref,sc_el,sc_temp,p_thick,
86 . dp,dd,dn,yy,yy_n,ef1,ef2
87 my_real,
DIMENSION(NFUNC) :: yfac,rate
88 my_real,
DIMENSION(NEL) :: epsf,epsf_n,sigm,yyv,dxdyv,lambdav
94 IF (uvar(1,2) == zero)
THEN
95 uvar(1:nel,2) = aldt(1:nel)
98 ifail_sh = int(uparam(2))
107 yfac(1:nrate) = uparam(11+1 :11+nrate)
108 rate(1:nrate) = uparam(11+nrate:11+nrate*2)
111 ifun_str(1:nrate) = ifunc(1:nrate)
113 ifun_el = ifunc(nrate+1)
114 ifun_temp = ifunc(nrate+2)
119 IF (off(i) == one .and. foff(i) == 1)
THEN
131 IF (epsp(i) > rate(i)) j1 = k
133 p = third*(signxx(i) + signyy(i))
134 svm = sqrt(signxx(i)*signxx(i) + signyy(i)*signyy(i)
135 . - signxx(i)*signyy(i) + three*signxy(i)*signxy(i))
136 sigm = p /
max(em20,svm)
140 ef1 = yfac(j1)*finter(ifunc(j1),sigm,npf,tf,df)
141 ef2 = yfac(j2)*finter(ifunc(j2),sigm,npf,tf,df)
142 fac = (epsp(i) - rate(j1)) / (rate(j2) - rate(j1))
143 epsf(i) =
max(ef1 + fac*(ef2 - ef1), em20)
145 epsf(i) = yfac(j1)*finter(ifunc(j1),sigm,npf,tf,df)
149 IF (ifun_el > 0)
THEN
150#include "vectorize.inc"
154 lambdav(j) = uvar(i,2) / el_ref
155 iposv(j) = nint(uvar(i,3))
156 iadp(j) = npf(ifun_el) / 2 + 1
157 ilenp(j) = npf(ifun_el + 1) / 2 -iadp(j) - iposv(j)
162#include "vectorize.inc"
166 epsf(i) = epsf(i)* fac
171#include "vectorize.inc"
177 IF (ifun_temp > 0)
THEN
180 fac = sc_temp*finter(ifun_temp,temp(i),npf,tf,df)
181 epsf(i) = epsf(i)* fac
187 IF (uvar(i,1) < dcrit)
THEN
188 IF (uvar(i,1) == zero
THEN
191 dp = dn*uvar(i,1)**(one-one/dn)
193 IF (epsf(i) > zero) uvar(i,1) = uvar(i,1)+dp*dpla(i)/epsf(i)
195 IF (uvar(i,1) >= dcrit)
THEN
199 IF (ifail_sh == 3)
THEN
213 dfmax(i)=
min(one,
max(dfmax(i),uvar(i,1)/dcrit))
222 WRITE(iout, 2000) ngl(i),ipg,ilay,ipt
223 WRITE(istdo,2100) ngl(i),ipg,ilay,ipt,time
224#include "lockoff.inc"
228 2000
FORMAT(1x,
'FAILURE (FTAB) OF SHELL ELEMENT ',i10,1x,
',GAUSS PT',
229 . i2,1x,
',LAYER',i3,1x,
',INTEGRATION PT',i3)
230 2100
FORMAT(1x,
'FAILURE (FTAB) OF SHELL ELEMENT ',i10,1x,
',GAUSS PT',
231 . i2,1x,
',LAYER',i3,1x,
',INTEGRATION PT',i3,1x,
'AT TIME :',1pe12.4)
subroutine fail_tab_old_c(nel, nuparam, nuvar, uparam, uvar, nfunc, ifunc, npf, tf, time, ngl, ipg, ilay, ipt, signxx, signyy, signxy, signyz, signzx, dpla, epsp, thk, aldt, temp, off, foff, dfmax, tdel)