36
37
38
39#include "implicit_f.inc"
40
41#include "mvsiz_p.inc"
42#include "scr17_c.inc"
43#include "units_c.inc"
44#include "comlock.inc"
45
46 INTEGER NEL, NUPARAM, NUVAR,NGL(NEL)
47 my_real time,timestep,uparam(*),
48 . signxx(nel),signyy(nel),signzz(nel),
49 . signxy(nel),signyz(nel),signzx(nel),uvar(nel,nuvar),
50 . dpla(nel),off(nel),dfmax(nel),tdele(nel)
51
52
53
54 INTEGER I,J,INDX(MVSIZ),NINDX
56 . p,triaxs,svm,sxx,syy,szz,eps_cr,f_rtcl
57
58
59
60
61
62 eps_cr = uparam(1)
63
64
65 DO i=1,nel
66 IF (off(i) < em01) off(i) = zero
67 IF (off(i) < one .AND. off(i) > zero) off(i) = off(i)*four_over_5
68 END DO
69
70
71 nindx = 0
72
73
74
75
76 DO i=1,nel
77
78
79 IF (off(i) == one .AND. dpla(i) /= zero) THEN
80
81
82 p = third*(signxx(i) + signyy(i) + signzz(i))
83 sxx = signxx(i) - p
84 syy = signyy(i) - p
85 szz = signzz(i) - p
86 svm = half*(sxx**2 + syy**2 + szz**2)
87 . + signxy(i)**2 + signzx(i)**2 + signyz(i)**2
88 svm = sqrt(three*svm)
89 triaxs = p/
max(em20,svm)
90 IF (triaxs > one) triaxs = one
91 IF (triaxs < -one) triaxs = -one
92
93
94 IF (triaxs < -third) THEN
95 f_rtcl = zero
96 ELSEIF ((triaxs >= -third).AND.(triaxs < third)) THEN
97 f_rtcl = two*((one+triaxs*sqrt(twelve-twenty7*(triaxs**2)))/
98 . (three*triaxs+sqrt(twelve-twenty7*(triaxs**2))))
99 ELSE
100 f_rtcl = exp(-half)*exp(three_half*triaxs)
101 ENDIF
102
103
104 dfmax(i) = dfmax(i) + f_rtcl*dpla(i)/
max(eps_cr,em6)
105 dfmax(i) =
min(one,dfmax(i))
106
107
108 IF (dfmax(i) >= one .AND. off(i) == one) THEN
109 off(i) = four_over_5
110 nindx = nindx + 1
111 indx(nindx) = i
112 tdele(i) = time
113 ENDIF
114 ENDIF
115 ENDDO
116
117
118 IF (nindx > 0) THEN
119 DO j=1,nindx
120 i = indx(j)
121#include "lockon.inc"
122 WRITE(iout, 1000) ngl(i),time
123 WRITE(istdo,1100) ngl(i),time
124#include "lockoff.inc"
125 END DO
126 END IF
127
128 1000 FORMAT(1x,'DELETE SOLID ELEMENT NUMBER (RTCL) el#',i10,
129 . ' AT TIME :',1pe12.4)
130 1100 FORMAT(1x,'DELETE SOLID ELEMENT NUMBER (RTCL) el#',i10,
131 . ' AT TIME :',1pe12.4)