38
39
40
41
42
43#include "implicit_f.inc"
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63#include "scr17_c.inc"
64#include "units_c.inc"
65#include "comlock.inc"
66#include "param_c.inc"
67#include "impl1_c.inc"
68
69 INTEGER NEL, NUPARAM, NUVAR,NGL(NEL)
70 my_real time,timestep,uparam(nuparam),
71 . signxx(nel),signyy(nel),signzz(nel),
72 . signxy(nel),signyz(nel),signzx(nel),uvar(nel,nuvar),
73 . dpla(nel),epsp(nel),tstar(nel),off(nel),dfmax(nel),tdele(nel)
74
75
76
77 INTEGER I,J,JJ,IDEL,IDEV,IFLAG,NINDX,IR,IFAIL,ISOLID
78 INTEGER ,DIMENSION(NEL) :: INDX
79 my_real :: d1,d2,d3,d4,d5,epsp0,p,epsf,svm,scale,sxx,syy,szz,epsf_min
80
81 d1 = uparam(1)
82 d2 = uparam(2)
83 d3 = uparam(3)
84 d4 = uparam(4)
85 d5 = uparam(5)
86 epsp0 = uparam(6)
87 isolid = int(uparam(8))
88 epsf_min = uparam(12)
89
90
91 idel=0
92 idev=0
93 scale = zero
94 IF ((isolid==1).OR.(isolid == 4)) THEN
95 idel=1
96 ELSEIF ((isolid==2).OR.(isolid == 3)) THEN
97 idev =1
98 ENDIF
99
100 IF(idel==1)THEN
101 DO i=1,nel
102 IF(off(i)<0.1) off(i)=0.0
103 IF(off(i)<1.0) off(i)=off(i)*0.8
104 END DO
105 END IF
106
107 IF(idel==1)THEN
108 nindx=0
109 DO i=1,nel
110 IF ((isolid==1.AND.off(i)==one).OR.(isolid==4))THEN
111 IF(dpla(i)/=zero)THEN
112 p = third*(signxx(i) + signyy(i) + signzz(i))
113 sxx = signxx(i) - p
114 syy = signyy(i) - p
115 szz = signzz(i) - p
116 svm =half*(sxx**2 + syy**2 + szz**2)
117 . +signxy(i)**2 + signzx(i)**2 + signyz(i)**2
118 svm=sqrt(three*svm)
119 epsf = d3*p/
max(em20,svm)
120 epsf = d1 + d2*exp(epsf)
121 IF(d4/=zero) epsf = epsf * (one + d4*log(
max(one,epsp(i)/epsp0)))
122 IF(d5/=zero) epsf = epsf * (one + d5*tstar(i))
123 epsf =
max(epsf,epsf_min)
124 IF(epsf>zero) dfmax(i) = dfmax(i) + dpla(i)/epsf
125 dfmax(i) =
min(one,dfmax(i))
126 ENDIF
127 IF (dfmax(i)>=one.AND.off(i)==one) THEN
128 IF (isolid == 1) THEN
129 off(i)=four_over_5
130 nindx=nindx+1
131 indx(nindx)=i
132 tdele(i) = time
133 ELSEIF (isolid == 4) THEN
134 dfmax(i) = one
135 off(i) = one
136 signxx(i) = zero
137 signyy(i) = zero
138 signzz(i) = zero
139 signxy(i) = zero
140 signyz(i) = zero
141 signzx(i) = zero
142 ENDIF
143 ENDIF
144 ENDIF
145 ENDDO
146 IF(nindx>0.AND.imconv==1)THEN
147 DO j=1,nindx
148#include "lockon.inc"
149 WRITE(iout, 1000) ngl(indx(j))
150 WRITE(istdo,1100) ngl(indx(j)),time
151#include "lockoff.inc"
152 END DO
153 END IF
154 ENDIF
155
156 IF(idev==1)THEN
157 nindx=0
158 DO i=1,nel
159 IF((isolid==2.OR.isolid==3).AND.off(i)==one)THEN
160 IF(dfmax(i)<one.AND.dpla(i)/=zero)THEN
161 p = third*(signxx(i) + signyy(i) + signzz(i))
162 sxx = signxx(i) - p
163 syy = signyy(i) - p
164 szz = signzz(i) - p
165 svm =half*(sxx**2+ syy**2 + szz**2)
166 . +signxy(i)**2 + signzx(i)**2 + signyz(i)**2
167 svm=sqrt(three*svm)
168 epsf = d3*p/
max(em20,svm)
169 epsf = (d1 +
170 . d2*exp(epsf))*(one
171 . + d4*log(
max(one,epsp(i)/epsp0)))
172 . *(one + d5*tstar(i))
173 epsf =
max(epsf,epsf_min)
174 IF(epsf>zero) dfmax(i) = dfmax(i) + dpla(i)/epsf
175 dfmax(i) =
min(one,dfmax(i))
176 IF(dfmax(i)>=one.AND.off(i)==one) THEN
177 nindx=nindx+1
178 indx(nindx)=i
179 dfmax(i) = one
180 IF (isolid == 2) THEN
181 signxx(i) = p
182 signyy(i) = p
183 signzz(i) = p
184 signxy(i) = zero
185 signyz(i) = zero
186 signzx(i) = zero
187 ELSEIF (isolid == 3) THEN
188 signxx(i) =
min(p,zero)
189 signyy(i) =
min(p,zero)
190 signzz(i) =
min(p,zero)
191 signxy(i) = zero
192 signyz(i) = zero
193 signzx(i) = zero
194 ENDIF
195 ENDIF
196
197 ELSEIF(dfmax(i)>=one)THEN
198 p = third*(signxx(i) + signyy(i) + signzz(i))
199 dfmax(i) = one
200 IF (isolid == 2) THEN
201 signxx(i) = p
202 signyy(i) = p
203 signzz(i) = p
204 signxy(i) = zero
205 signyz(i) = zero
206 signzx(i) = zero
207 ELSEIF (isolid == 3) THEN
208 signxx(i) =
min(p,zero)
209 signyy(i) =
min(p,zero)
210 signzz(i) =
min(p,zero)
211 signxy(i) = zero
212 signyz(i) = zero
213 signzx(i) = zero
214 ENDIF
215 ENDIF
216 ENDIF
217 ENDDO
218 IF(nindx>0.AND.imconv==1)THEN
219 DO j=1,nindx
220 i = indx(j)
221#include "lockon.inc"
222 WRITE(iout, 2000) ngl(i)
223 WRITE(istdo,2100) ngl(i),time
224#include "lockoff.inc"
225 END DO
226 END IF
227 ENDIF
228
229
230
231
232
233
234
235 1000 FORMAT(1x,'DELETE SOLID ELEMENT NUMBER ',i10)
236 1100 FORMAT(1x,'DELETE SOLID ELEMENT NUMBER ',i10,
237 . ' AT TIME :',1pe12.4)
238
239 2000 FORMAT(1x,' DEVIATORIC STRESS WILL BE VANISHED',i10)
240 2100 FORMAT(1x,' DEVIATORIC STRESS WILL BE VANISHED',i10,
241 . ' AT TIME :',1pe12.4)
242 RETURN