45
46
47
48#include "implicit_f.inc"
49#include "comlock.inc"
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96#include "mvsiz_p.inc"
97
98#include "param_c.inc"
99#include "scr17_c.inc"
100#include "scr05_c.inc"
101#include "com08_c.inc"
102#include "units_c.inc"
103
104
105
106
107 INTEGER NEL, NUPARAM, NUVAR,IPT,
108 . NGL(NEL),MAT(NEL),IPM(NPROPMI,*)
110 . time,timestep,uparam(*),
111 . rho(nel),rho0(nel),volume(nel),eint(nel),
112 . epspxx(nel),epspyy(nel),epspzz(nel),
113 . epspxy(nel),epspyz(nel),epspzx(nel),
114 . depsxx(nel),depsyy(nel),depszz(nel),
115 . depsxy(nel),depsyz(nel),depszx(nel),
116 . epsxx(nel) ,epsyy(nel) ,epszz(nel) ,
117 . epsxy(nel) ,epsyz(nel) ,epszx(nel) ,
118 . sigoxx(nel),sigoyy(nel),sigozz(nel),
119 . sigoxy(nel),sigoyz(nel),sigozx(nel),
120 . amu(nel)
121
122
123
125 . signxx(nel),signyy(nel),signzz(nel),
126 . signxy(nel),signyz(nel),signzx(nel),
127 . sigvxx(nel),sigvyy(nel),sigvzz(nel),
128 . sigvxy(nel),sigvyz(nel),sigvzx(nel),
129 . soundsp(nel),viscmax(nel)
130
131
132
134 . uvar(nel,nuvar), off(nel)
135
136
137
138 INTEGER NPF(*), NFUNC, IFUNC(NFUNC)
140 . finter ,tf(*)
141 EXTERNAL finter
142
143
144
145
146
147
148
149
150
151
152 INTEGER I,J,IADBUF,IF1,IF2,AUX,IC,II,K,
153 . IAD1(MVSIZ),IPOS1(MVSIZ),ILEN1(MVSIZ),
154 . INDEX(MVSIZ),
155 . NINDX,INDX(MVSIZ)
157 . e11,e22,e33,g12,g23,g31,
158 . y11,y22,y33,y12,y23,y31,ep1,ep2,ep3,ep4,ep5,ep6,
159 . yc(mvsiz),fac1(mvsiz),fac2(mvsiz),
160 . fac3(mvsiz),fac4(mvsiz),fac5(mvsiz),fac6(mvsiz),
161 . dydx,dydxv(mvsiz),ep(mvsiz,6),epc(mvsiz),
162 . emx11,emx22,emx33,emx12,emx23,emx31,amuv
163
164
165
166 IF(time==zero)THEN
167 IF (nuvar>0) THEN
168 DO 100 j=1,nuvar
169 DO 100 i=1,nel
170 uvar(i,j)=zero
171 100 CONTINUE
172 ENDIF
173 ENDIF
174
175 DO i=1,nel
176
177 iadbuf = ipm(7,mat(i))
178 e11 = uparam(iadbuf)
179 e22 = uparam(iadbuf+1)
180 e33 = uparam(iadbuf+2)
181 g12 = uparam(iadbuf+3)
182 g23 = uparam(iadbuf+4)
183 g31 = uparam(iadbuf+5)
184
185 signxx(i) = sigoxx(i) + e11 * depsxx(i)
186 signyy(i) = sigoyy(i) + e22 * depsyy(i)
187 signzz(i) = sigozz(i) + e33 * depszz(i)
188 signxy(i) = sigoxy(i) + g12 * depsxy(i)
189 signyz(i) = sigoyz(i) + g23 * depsyz(i)
190 signzx(i) = sigozx(i) + g31 * depszx(i)
191
192 soundsp(i) = sqrt(
max(e11,e22,e33,g12,g23,g31)/rho0(i))
193 viscmax(i) = zero
194
195 ENDDO
196
197 nindx=0
198 DO i=1,nel
199 iadbuf = ipm(7,mat(i)) - 1
200 emx11 = uparam(iadbuf+9)
201 emx22 = uparam(iadbuf+10)
202 emx33 = uparam(iadbuf+11)
203 emx12 = uparam(iadbuf+12)
204 emx23 = uparam(iadbuf+13)
205 emx31 = uparam(iadbuf+14)
206 fac1(i) = uparam(iadbuf+15)
207 fac2(i) = uparam(iadbuf+16)
208 fac3(i) = uparam(iadbuf+17)
209 fac4(i) = uparam(iadbuf+18)
210 fac5(i) = uparam(iadbuf+19)
211 fac6(i) = uparam(iadbuf+20)
212 IF((epsxx(i)>emx11.OR.
213 . epsyy(i)>emx22.OR.
214 . epszz(i)>emx33.OR.
215 . abs(epsxy(i)/two)>emx12.OR.
216 . abs(epsyz(i)/two)>emx23.OR.
217 . abs(epszx(i)/two)>emx31).AND.off(i)/=zero) THEN
218 off(i) = zero
219 nindx=nindx+1
220 indx(nindx)=i
221 ENDIF
222 ENDDO
223 IF(nindx>0)THEN
224 DO j=1,nindx
225#include "lockon.inc"
226 WRITE(iout, 1000) ngl(indx(j))
227 WRITE(istdo,1100) ngl(indx(j)),tt
228#include "lockoff.inc"
229 ENDDO
230 ENDIF
231
232 DO i=1,nel
233
234
235 ep(i,1) = amu(i)
236 ep(i,2) = amu(i)
237 ep(i,3) = amu(i)
238 ep(i,4) = amu(i)
239 ep(i,5) = amu(i)
240 ep(i,6) = amu(i)
241 iadbuf = ipm(7,mat(i))
242 if1=nint(uparam(iadbuf+6))
243 if2=nint(uparam(iadbuf+7))
244 IF(if1==1)THEN
245 ep(i,1) = epsxx(i)
246 ep(i,2) = epsyy(i)
247 ep(i,3) = epszz(i)
248 ELSEIF(if1==-1)THEN
249 ep(i,1) = -epsxx(i)
250 ep(i,2) = -epsyy(i)
251 ep(i,3) = -epszz(i)
252 ENDIF
253 IF(if2==1)THEN
254 ep(i,4) = epsxy(i)
255 ep(i,5) = epsyz(i)
256 ep(i,6) = epszx(i)
257 ELSEIF(if2==-1)THEN
258 ep(i,4) = -epsxy(i)
259 ep(i,5) = -epsyz(i)
260 ep(i,6) = -epszx(i)
261 ENDIF
262 ENDDO
263
264 DO j = 1, 6
265 ic = 0
266 DO i = 1, nel
267 nfunc = ipm(10,mat(i))
268 IF (nfunc>=j) THEN
269 aux = ipm(10+j,mat(i))
270 IF (aux/=0) THEN
271 ic = ic + 1
272 index(ic) = i
273 ipos1(ic) = nint(uvar(i,j))
274 iad1(ic) = npf(aux) / 2 + 1
275 ilen1(ic) = npf(aux+1) / 2 - iad1(ic) - ipos1(ic)
276 epc(ic) = ep(i,j)
277 ENDIF
278 ENDIF
279 ENDDO
280
281 IF (iresp==1) THEN
282 CALL vinter2dp(tf,iad1,ipos1,ilen1,ic,epc,dydxv,yc)
283 ELSE
284 CALL vinter2(tf,iad1,ipos1,ilen1,ic,epc,dydxv,yc)
285 ENDIF
286
287 IF (j==1) THEN
288#include "vectorize.inc"
289 DO ii = 1, ic
290 i = index(ii)
291 uvar(i,j)=ipos1(ii)
292 signxx(i)=sign(
min(abs(signxx(i)),yc(ii)*fac1(i)),signxx(i))
293 ENDDO
294 ELSEIF (j==2) THEN
295#include "vectorize.inc"
296 DO ii = 1, ic
297 i = index(ii)
298 uvar(i,j)=ipos1(ii)
299 signyy(i)=sign(
min(abs(signyy(i)),yc(ii)*fac2(i)),signyy(i))
300 ENDDO
301 ELSEIF (j==3) THEN
302#include "vectorize.inc"
303 DO ii = 1, ic
304 i = index(ii)
305 uvar(i,j)=ipos1(ii)
306 signzz(i)=sign(
min(abs(signzz(i)),yc(ii)*fac3(i)),signzz(i))
307 ENDDO
308 ELSEIF (j==4) THEN
309#include "vectorize.inc"
310 DO ii = 1, ic
311 i = index(ii)
312 uvar(i,j)=ipos1(ii)
313 signxy(i)=sign(
min(abs(signxy(i)),yc(ii)*fac4(i)),signxy(i))
314 ENDDO
315 ELSEIF (j==5) THEN
316#include "vectorize.inc"
317 DO ii = 1, ic
318 i = index(ii)
319 uvar(i,j)=ipos1(ii)
320 signyz(i)=sign(
min(abs(signyz(i)),yc(ii)*fac5(i)),signyz(i))
321 ENDDO
322 ELSEIF (j==6) THEN
323#include "vectorize.inc"
324 DO ii = 1, ic
325 i = index(ii)
326 uvar(i,j)=ipos1(ii)
327 signzx(i)=sign(
min(abs(signzx(i)),yc(ii)*fac6(i)),signzx(i))
328 ENDDO
329 ENDIF
330
331 ENDDO
332
333 1000 FORMAT(1x,'RUPTURE OF SOLID ELEMENT NUMBER ',i10)
334 1100 FORMAT(1x,'RUPTURE OF SOLID ELEMENT NUMBER ',i10,
335 . ' AT TIME :',g11.4)
336 RETURN
subroutine vinter2(tf, iad, ipos, ilen, nel0, x, dydx, y)
subroutine vinter2dp(tf, iad, ipos, ilen, nel0, x, dydx, y)