33 1 NEL ,UPARAM ,NUPARAM ,UVAR ,NUVAR ,
34 2 TIME ,NGL ,IPG ,DPLA ,TDELE ,
35 3 SIGNXX ,SIGNYY ,SIGNZZ ,SIGNXY ,SIGNYZ ,SIGNZX ,
36 4 DFMAX ,NFUNC ,IFUNC ,ALDT ,OFF ,
37 5 NPF ,TF ,UELR ,NPG ,LOFF )
41#include "implicit_f.inc"
50#include "tabsiz_c.inc"
54 INTEGER,
INTENT(IN) ::
55 . NEL ,NUPARAM,NUVAR,NGL(NEL),IPG ,
56 . NFUNC ,IFUNC(NFUNC) ,NPG
57 my_real,
INTENT(IN) ::
58 . TIME ,UPARAM(NUPARAM),DPLA(NEL) ,
59 . signxx(nel),signyy(nel),signzz(nel),
60 . signxy(nel),signyz(nel),signzx(nel),
65 my_real,
INTENT(INOUT) ::
66 . uvar(nel,nuvar),loff(nel),off(nel),
67 . dfmax(nel),tdele(nel),uelr(nel)
71 INTEGER,
INTENT(IN) :: NPF(SNPC)
72 my_real,
INTENT(IN) :: TF(STF)
79 INTEGER I,J,NINDX,NINDX2,FAILIP
80 INTEGER,
DIMENSION(NEL) :: INDX,INDX2
82 . C1 ,C2 ,C3 ,C4 ,C5 ,
83 . C6 ,REF_LEN ,REG_SCALE
85 . lambda ,dydx ,fac(nel),p ,svm ,
86 . triax ,cos3theta,lodep ,epsfail,
87 . det ,sxx ,syy ,szz ,epfmin
99 reg_scale = uparam(15)
101 failip =
min(nint(uparam(17)),npg)
105 IF (uvar(1,1) == zero)
THEN
106 IF (ifunc(1) > 0)
THEN
108 lambda = aldt(i)/ref_len
109 uvar(i,1) = finter(ifunc(1),lambda,npf,tf,dydx)
110 uvar(i,1) = uvar(i,1)*reg_scale
120 IF (off(i) < em01) off(i) = zero
121 IF (off(i) < one .AND. off(i) > zero) off(i) = off(i)*four_over_5
136 IF (loff(i) == one .AND. dpla(i) > zero .AND. off(i) == one)
THEN
139 p = third*(signxx(i) + signyy(i) + signzz(i))
143 svm = half*(sxx**2 + syy**2 + szz**2)
144 . + signxy(i)**2+ signzx(i)**2 + signyz(i)**2
145 svm = sqrt(three*svm)
146 triax = p/
max(em20,svm)
147 IF (triax < -two_third) triax = -two_third
148 IF (triax > two_third) triax = two_third
151 det = sxx*syy*szz + two*signxy(i)*signzx(i)*signyz(i)-
152 . sxx*signyz(i)**2-szz*signxy(i)**2-syy*signzx(i)**2
153 cos3theta = half*twenty7*det/
max(em20,svm**3)
154 IF(cos3theta < -one) cos3theta = -one
155 IF(cos3theta > one) cos3theta = one
156 lodep = one - two*acos(cos3theta)/pi
159 epsfail = c1 + c2*triax + c3*lodep + c4*(triax**2) +
160 . c5*(lodep**2) + c6*triax*lodep
161 epsfail = epsfail*fac(i)
162 epsfail =
max(epfmin,epsfail)
165 dfmax(i) = dfmax(i) + dpla(i)/
max(epsfail,em20)
166 dfmax(i) =
min(dfmax(i),one)
169 IF (dfmax(i) >= one)
THEN
173 uelr(i) = uelr(i) + one
174 IF (nint(uelr(i)) >= failip)
THEN
191 WRITE(iout, 1000) ngl(i),ipg,time
192 WRITE(istdo,1000) ngl(i),ipg,time
193#include "lockoff.inc"
200 WRITE(iout, 2000) ngl(i),time
201 WRITE(istdo,2000) ngl(i),time
202#include "lockoff.inc"
206 1000
FORMAT(1x,
'FOR SOLID ELEMENT NUMBER el#',i10,
207 .
' FAILURE (SYAZWAN) AT GAUSS POINT ',i5,
208 .
' AT TIME :',1pe12.4)
209 2000
FORMAT(1x,
'-- RUPTURE OF SOLID ELEMENT :',i10,
210 .
' AT TIME :',1pe12.4)
subroutine fail_syazwan_s(nel, uparam, nuparam, uvar, nuvar, time, ngl, ipg, dpla, tdele, signxx, signyy, signzz, signxy, signyz, signzx, dfmax, nfunc, ifunc, aldt, off, npf, tf, uelr, npg, loff)
subroutine mulaw(lft, llt, nft, mtn, jcvt, pm, off, sig, eint, rho, vol, strain, gama, uvar, bufmat, tf, npf, imat, ngl, nuvar, nvartmp, vartmp, geo, pid, epsd, wxx, wyy, wzz, jsph, ssp, voln, vis, d1, d2, d3, d4, d5, d6, dvol, sold1, sold2, sold3, sold4, sold5, sold6, rx, ry, rz, sx, sy, sz, tx, ty, tz, ismstr, mfxx, mfxy, mfxz, mfyx, mfyy, mfyz, mfzx, mfzy, mfzz, ipm, isorth, nel, matparam)