33 1 NEL ,NUPARAM,NUVAR ,MFUNC ,KFUNC ,
34 2 NPF ,NPT0 ,IPT ,IFLAG ,
35 2 TF ,TIME ,TIMESTEP,UPARAM ,RHO0 ,
36 3 AREA ,EINT ,THKLY ,ISRATE ,ASRATE ,
37 4 EPSPXX ,EPSPYY ,EPSPXY ,EPSPYZ ,EPSPZX ,
38 5 DEPSXX ,DEPSYY ,DEPSXY ,DEPSYZ ,DEPSZX ,
39 6 EPSXX ,EPSYY ,EPSXY ,EPSYZ ,EPSZX ,
40 7 SIGOXX ,SIGOYY ,SIGOXY ,SIGOYZ ,SIGOZX ,
41 8 SIGNXX ,SIGNYY ,SIGNXY ,SIGNYZ ,SIGNZX ,
42 9 SIGVXX ,SIGVYY ,SIGVXY ,SIGVYZ ,SIGVZX ,
43 A SOUNDSP,VISCMAX,THK ,PLA ,UVAR ,
44 B OFF ,NGL ,IPM ,MAT ,ETSE ,
45 C GS ,YLD ,EPSP ,DPLA_I )
49#include "implicit_f.inc"
101#include "param_c.inc"
102#include "com01_c.inc"
106 INTEGER NEL, NUPARAM, NUVAR, NPT0, ,ISRATE,
107 . IFLAG(*),NGL(),MAT(NEL),IPM(NPROPMI,*)
108 my_real ,
INTENT(IN) :: ASRATE
109 my_real ,
DIMENSION(NEL) ,
INTENT(INOUT) ::
110 my_real TIME,TIMESTEP,(*),
111 . AREA(NEL),RHO0(NEL),EINT(NEL,2),
112 . THKLY(NEL),PLA(NEL),
114 . EPSPXY(NEL),EPSPYZ(NEL),EPSPZX(NEL),
115 . DEPSXX(NEL),DEPSYY(NEL),
116 . DEPSXY(),DEPSYZ(NEL),DEPSZX(NEL),
117 . EPSXX(NEL) ,EPSYY(NEL) ,
118 . EPSXY(NEL) ,EPSYZ(NEL) ,EPSZX(NEL) ,
119 . sigoxx(nel),sigoyy(nel),
120 . sigoxy(nel),sigoyz(nel),sigozx(nel),
126 . signxx(nel),signyy(nel),
127 . signxy(nel),signyz(nel),signzx(nel),
128 . sigvxx(nel),sigvyy(nel),
129 . sigvxy(nel),sigvyz(nel),sigvzx(nel),
130 . soundsp(nel),viscmax(nel),etse(nel),
135 my_real uvar(nel,nuvar), off(nel),thk(nel),yld(nel)
139 INTEGER NPF(*), MFUNC, KFUNC(MFUNC)
140 my_real FINTER ,TF(*)
152 INTEGER I,I1,I2,J,J1,J2,K,K1,N0,N1,N2,N3,IADBUF,NFUNC,FUNC,FUND,
154 INTEGER JJ(NEL),IFUNC(NEL,100),
156 . IPOSC1(NEL),IADC1(NEL),ILENC1(NEL),
157 . IPOSC2(NEL),IADC2(NEL),ILENC2(NEL),
158 . IPOSD1(NEL),IADD1(NEL),ILEND1(NEL),
159 . IPOSD2(NEL),IADD2(),ILEND2(NEL)
161 . DEZZ,A11,A22,RATE1,RATE2,SIGY1,SIGY2,DYDX,DTDS,ALPHA,
162 . S1,S2,SX,T1,T2,TY,X1,X2,Y1,Y2,A,B,C,SFC,SFD,EPSPL
164 . E(NEL),A1(NEL),A2(NEL),G(NEL),G3(NEL),HC(NEL),HD(NEL),
165 . nu(nel),nnu1(nel),nu3(nel),epsmax(nel),fac(nel),deplzz(nel),
166 . sigo(nel),svm(nel),sigyld(nel),
167 . dydxc1(nel),dydxc2(nel),yc1(nel),yc2(nel),
168 . dydxd1(nel),dydxd2(nel),yd1(nel),yd2(nel),
169 . depse(nel),epse(nel),depss(nel),epss(nel),
170 . dsigxx(nel),dsigyy(nel),dsigxy(nel),
171 . crit(nel),sigfd(nel),sigfc(nel),
172 . sds(nel),dsig2(nel),sv2(nel),dsvm(nel),
173 . epsc1(nel),epsc2(nel),epsd1(nel),epsd2(nel),
174 . yfac1(nel),yfac2(nel)
192 nfunc = ipm(10,mat(i))
194 ifunc(i,j)=ipm(10+j,mat(i))
197 iadbuf = ipm(7,mat(1)) - 1
199 e(i) = uparam(iadbuf+2)
200 g(i) = uparam(iadbuf+3)
201 nu(i) = uparam(iadbuf+4)
202 a1(i) = uparam(iadbuf+5)
203 a2(i) = uparam(iadbuf+6)
204 g3(i) = uparam(iadbuf+8)
205 nnu1(i)= nu(i) / (one - nu(i))
206 nu3(i) = one - nnu1(i)
207 epsmax(i)= uparam(iadbuf+11)
209 nrate = nint(uparam(iadbuf+1))
215 IF (time == zero)
THEN
221 uvar(i,3) = sqrt(sigoxx(i)*sigoxx(i) + sigoyy(i)*sigoyy(i)
222 . -sigoxx(i)*sigoyy(i) + sigoxy(i)*sigoxy(i)*three)
229 fund = ifunc(i,i1+nrate)
230 np1 = (npf(func+1)-npf(func))/2
231 np2 = (npf(fund+1)-npf(fund))/2
236 s2=tf(npf(func)+j1+2)
237 t1=tf(npf(func)+j1+1)
238 t2=tf(npf(func)+j1+3)
242 x2=tf(npf(fund)+k1+2)
243 y1=tf(npf(fund)+k1+1)
244 y2=tf(npf(fund)+k1+3)
245 IF (y2>=t1 .AND. y1<=t2 .AND. x2>=s1 .AND. x1<=s2)
THEN
246 dydx = (y2-y1) / (x2-x1)
247 dtds = (t2-t1) / (s2-s1)
248 IF (dydx > dtds)
THEN
249 sx = (t1-y1-dtds*s1+dydx*x1) / (dydx-dtds)
250 ty = t1 + dtds*(sx - s1)
251 IF (ty>=y1 .AND. ty<=y2 .AND. sx>=x1 .AND. sx<=x2)
THEN
252 iadbuf = ipm(7,mat(i)) + 13
253 uparam(iadbuf+i1+nrate*2) = ty
269 epspl = half*(abs(epspxx(i)+epspyy(i))
270 . + sqrt((epspxx(i)-epspyy(i))**2 + epspxy(i)**2))
271 epsp(i) = asrate*epspl + (one-asrate)*epsp(i)
287 dsigxx(i) = a11*depsxx(i)+a22*depsyy(i)
288 dsigyy(i) = a22*depsxx(i)+a11*depsyy(i)
289 dsigxy(i) = g(i)*depsxy(i)
291 signxx(i) = sigoxx(i)+dsigxx(i)
292 signyy(i) = sigoyy(i)+dsigyy(i)
293 signxy(i) = sigoxy(i)+dsigxy(i)
294 signyz(i) = sigoyz(i) + gs(i)*depsyz(i)
295 signzx(i) = sigozx(i) + gs(i)*depszx(i)
297 crit(i) = sigoxx(i)*depsxx(i) + sigoyy(i)*depsyy(i)
298 . + half*(sigoxy(i)*depsxy(i))
299 dsvm(i) = dsigxx(i)*dsigxx(i) + dsigyy(i)*dsigyy(i)
300 . -dsigxx(i)*dsigyy(i) + dsigxy(i)*dsigxy(i)*three
302 sv2(i) = signxx(i)*signxx(i) + signyy(i)*signyy(i)
303 . -signxx(i)*signyy(i) + signxy(i)*signxy(i)*three
304 svm(i) = sqrt(sv2(i))
305 dsig2(i) = dsigxx(i)*dsigxx(i) + dsigyy(i)*dsigyy(i)
306 . -dsigxx(i)*dsigyy(i) + dsigxy(i)*dsigxy(i)*three
307 sds(i) = (sigoxx(i)*dsigxx(i) + sigoyy(i)*dsigyy(i)
308 . +sigoxy(i)*dsigxy(i)*three)*two
309 . -sigoxx(i)*dsigyy(i) - sigoyy(i)*dsigxx(i)
314 soundsp(i) = sqrt(e(i)/rho0(i))
321 iadbuf = ipm(7,mat(1))-1+14
325 IF (epsp(i) > uparam(iadbuf+j)) jj(i) = j
331 yfac1(i) = uparam(i1+nrate)
332 sigy1 = uparam(i1+nrate*2)*yfac1(i)
339 yfac2(i) = uparam(i2+nrate)
340 fac(i) = (epsp(i) - rate1) / (rate2 - rate1)
341 sigy2 = uparam(i2+nrate*2)*yfac2(i)
342 sigyld(i) = sigy1 + fac(i)*(sigy2-sigy1)
344 iposc1(i) = nint(uvar(i,n0+j1))
345 iposc2(i) = nint(uvar(i,n0+j2))
346 epsc1(i) = uvar(i,n1+j1)
347 epsc2(i) = uvar(i,n1+j2)
348 iadc1(i) = npf(ipm(10+j1,mat(i)))/2 + 1
349 iadc2(i) = npf(ipm(10+j2,mat(i)))/2 + 1
350 ilenc1(i) = npf(ipm(10+j1,mat(i))+1)/2-iadc1(i)-iposc1(i)
353 iposd1(i) = nint(uvar(i,n2+j1))
354 iposd2(i) = nint(uvar(i,n2+j2))
355 epsd1(i) = uvar(i,n3+j1)
356 epsd2(i) = uvar(i,n3+j2)
357 iadd1(i) = npf(ipm(10+nrate+j1,mat(i)))/2 + 1
358 iadd2(i) = npf(ipm(10+nrate+j2,mat(i)))/2 + 1
359 ilend1(i) = npf(ipm(10+nrate+j1,mat(i))+1)/2
360 . - iadd1(i) - iposd1(i)
361 ilend2(i) = npf(ipm(10+nrate+j2,mat(i))+1)/2
362 . - iadd2(i) - iposd2(i)
365 iposc1(i) = nint(uvar(i,n0+j1))
366 iposd1(i) = nint(uvar(i,n2+j1))
367 epsc1(i) = uvar(i,n1+j1)
368 epsd1(i) = uvar(i,n3+j1)
370 iadc1(i) = npf(ipm(10+j1,mat(i)))/2 + 1
371 iadd1(i) = npf(ipm(10+nrate+j1,mat(i)))/2 + 1
372 ilenc1(i) = npf(ipm(10+j1,mat(i))+1)/2-iadc1(i)-iposc1(i)
373 ilend1(i) = npf(ipm(10+nrate+j1,mat(i))+1)/2
374 . - iadd1(i) - iposd1(i)
380 CALL interstar(tf ,iadc1,iposc1,ilenc1,nel ,
381 . epss ,epsc1,dydxc1,e ,yc1 ,yfac1 )
382 CALL interstar(tf ,iadc2,iposc2,ilenc2,nel ,
383 . epss ,epsc2,dydxc2,e ,yc2 ,yfac2 )
385 CALL interstar(tf ,iadd1,iposd1,ilend1,nel ,
386 . epse ,epsd1,dydxd1,e ,yd1 ,yfac1 )
387 CALL interstar(tf ,iadd2,iposd2,ilend2,nel ,
388 . epse ,epsd2,dydxd2,e ,yd2 ,yfac2 )
390 CALL interstar(tf ,iadc1,iposc1,ilenc1,nel ,
391 . epss ,epsc1,dydxc1,e ,yc1 ,yfac1 )
392 CALL interstar(tf ,iadd1,iposd1,ilend1,nel ,
393 . epse ,epsd1,dydxd1,e ,yd1 ,yfac1 )
400 uvar(i,n0+j1) = iposc1(i)
401 uvar(i,n0+j2) = iposc2(i)
402 uvar(i,n1+j1) = epsc1(i)
403 uvar(i,n1+j2) = epsc2(i)
404 uvar(i,n2+j1) = iposd1(i)
405 uvar(i,n2+j2) = iposd2(i)
406 uvar(i,n3+j1) = epsd1(i)
407 uvar(i,n3+j2) = epsd2(i)
418 hc(i) = dydxc1(i) + (dydxc2(i)-dydxc1(i))*fac(i)
419 hd(i) = dydxd1(i) + (dydxd2(i)-dydxd1(i))*fac(i)
420 sigfc(i) = yc1(i) + (yc2(i)-yc1(i))*fac(i)
421 sigfd(i) = yd1(i) + (yd2(i)-yd1(i))*fac(i)
427 uvar(i,n0+j1) = iposc1(i)
428 uvar(i,n1+j1) = epsc1(i)
429 uvar(i,n2+j1) = iposd1(i)
430 uvar(i,n3+j1) = epsd1(i)
447 IF (svm(i) > sigfc(i))
THEN
449 depss(i) = (svm(i) - sigfc(i)) / (e(i) + hc(i))
450 sfc = sigfc(i) + hc(i)*depss(i)
451 sfd = sigfd(i) + hd(i)*depss(i)
455 c = sigo(i)*sigo(i) - sfc*sfc
458 signxx(i) = sigoxx(i) + dsigxx(i)*alpha
459 signyy(i) = sigoyy(i) + dsigyy(i)*alpha
460 signxy(i) = sigoxy(i) + dsigxy(i)*alpha
463 depss(i) = (svm(i) - sigfc(i)) / (g3(i) + hc(i))
464 sigfc(i) = sigfc(i) + hc(i)*depss(i)
465 sigfd(i) = sigfd(i) + hd(i)*depss(i)
469 c = sigo(i)*sigo(i) - sigfc(i)*sigfc(i)
472 signxx(i) = sigoxx(i) + dsigxx(i)*alpha
473 signyy(i) = sigoyy(i) + dsigyy(i)*alpha
474 signxy(i) = sigoxy(i) + dsigxy(i)*alpha
477 pla(i) = pla(i) + off(i)*dpla_i(i)
478 deplzz(i) = dpla_i(i)*(signxx(i)+signyy(i))*half*nu3(i)
479 . /
max(em20,sigfc(i))
480 etse(i)= hc(i)/(hc(i)+e(i))
487 ELSEIF (svm(i) < sigfd(i))
THEN
489 depss(i) = (svm(i) - sigfd(i)) / (e(i) + hd(i))
490 sigfd(i) = sigfd(i) + hd(i)*depss(i)
493 c = sigo(i)*sigo(i) - sigfd(i)*sigfd(i)
498 signxx(i) = sigoxx(i) + dsigxx(i)*alpha
499 signyy(i) = sigoyy(i) + dsigyy(i)*alpha
500 signxy(i) = sigoxy(i) + dsigxy(i)*alpha
510 dezz = (depsxx(i)+depsyy(i))*nnu1(i) + deplzz(i)
511 thk(i)= thk(i) - dezz*thkly(i)*off(i)
513 svm(i) = sqrt(signxx(i)*signxx(i) + signyy(i)*signyy(i)
514 . -signxx(i)*signyy(i) + three*signxy(i)*signxy(i))
515 epss(i) = epss(i) + depss(i)
516 epse(i) = epss(i) - pla(i)
523 IF (pla(i) > epsmax(i) .and. off(i) == one) off(i)=four_over_5
subroutine sigeps65(nel, nuparam, nuvar, mfunc, kfunc, npf, tf, time, timestep, uparam, rho0, rho, volume, eint, epspxx, epspyy, epspzz, epspxy, epspyz, epspzx, depsxx, depsyy, depszz, depsxy, depsyz, depszx, epsxx, epsyy, epszz, epsxy, epsyz, epszx, sigoxx, sigoyy, sigozz, sigoxy, sigoyz, sigozx, signxx, signyy, signzz, signxy, signyz, signzx, sigvxx, sigvyy, sigvzz, sigvxy, sigvyz, sigvzx, soundsp, viscmax, uvar, off, ngl, ipm, mat, epsp, ipla, yld, pla, etse, dpla, amu)