31 1 NEL , NUPARAM, NUVAR , NFUNC , IFUNC , NPF ,
32 2 NPT0 , ILAYER , IFLAG ,
33 2 TF , TIME , TIMESTEP, UPARAM, RHO0 ,
34 3 AREA , EINT , THKLYL,
35 4 EPSPXX , EPSPYY , EPSPXY, EPSPYZ, EPSPZX,
36 5 DEPSXX , DEPSYY , DEPSXY, DEPSYZ, DEPSZX,
37 6 EPSXX , EPSYY , EPSXY , EPSYZ , EPSZX ,
38 7 SIGOXX , SIGOYY , SIGOXY, SIGOYZ, SIGOZX,
39 8 SIGNXX , SIGNYY , SIGNXY, SIGNYZ, SIGNZX,
40 9 SIGVXX , SIGVYY , SIGVXY, SIGVYZ, SIGVZX,
41 A SOUNDSP, VISCMAX, THKN , UVAR , OFF ,
42 B NGL , ISMSTR , IPM , GS )
46#include
"implicit_f.inc"
54 INTEGER NEL,NUPARAM, NUVAR,, IPM(NPROPMI,*),MAT(NEL),
55 . NPT0,ILAYER, IFLAG(*),NGL(NEL)
57 . TIME,TIMESTEP,UPARAM(NUPARAM),THKN(NEL),THKLYL(NEL),
58 . RHO0(NEL),AREA(NEL),EINT(NEL,2),GS(NEL),
59 . EPSPXX(NEL),EPSPYY(NEL),(NEL),EPSPYZ(NEL),EPSPZX(NEL),
60 . DEPSXX(NEL),DEPSYY(NEL),DEPSXY(NEL),DEPSYZ(NEL),(NEL),
61 . EPSXX (NEL),EPSYY (NEL),EPSXY (NEL),EPSYZ (NEL),EPSZX (NEL),
62 . SIGOXX(NEL),SIGOYY(NEL),SIGOXY(NEL),SIGOYZ(NEL),SIGOZX()
67 . signxx(nel),signyy(nel),signxy(nel),signyz(nel),signzx(nel),
68 . sigvxx(nel),sigvyy(nel),sigvxy(nel),sigvyz(nel),sigvzx(nel),
69 . soundsp(nel),viscmax(nel),et(nel)
74 . uvar(nel,nuvar), off(nel)
78 INTEGER NPF(*), NFUNC, IFUNC(NFUNC)
79 FINTER,FINTTE,TF(*),FINT2V
80 EXTERNAL FINTER,FINTTE
84 INTEGER I,J,K,NORDRE,NPRONY,ITER,IVISC,JNV
86 . nu,gmax,rbulk,beta(100),gamainf,dvisc,sum,fac,rvt,evl,
87 . ev1,ev2,ev3,kt3(nel),invr(nel),dsdev(nel),dsvol(nel),
88 . dq1(nel),dq2(nel),dq3(nel),sdh01(nel),
89 . sdh02(nel),sdh03(nel),sdh1(nel),sdh2(nel),sdh3(nel),
90 . dqdev(nel),dqidev,inv31,inv32(nel),inv33(nel),
91 . rvd(nel),h10,h20,h30,h1,h2,h3,hp1,hp2,hp3,hd1,hd2,hd3,a11,
92 . emax,sdhp1,sdhp2,inv11,inv21
94 . evv(nel,3),ev(nel,3),evm(nel),dwdl(3),ec(nel,3),
95 . rho(nel),gama(nel),pres(nel),rv(nel),p,sp(nel,3),
96 . t(nel,3),sv(nel,3),s(nel,3),s0(nel,3),sd(nel,3),sd0(nel,3),
97 . trav(nel),rootv(nel),eigv(nel,3,2),dezz(nel),
98 . ev1_sav(nel,100),ev2_sav(nel,100)
100 . mu(100),al(100),d(100),
105 nordre = nint(uparam(2))
106 nprony = nint(uparam(3))
112 mu(i) = uparam(6 + i)
113 al(i) = uparam(6 + nordre + i)
114 beta(i) = uparam(2*nordre + 2*nprony + 7 + i)
118 IF (nprony /= zero)
THEN
120 gama(i) = uparam(6 + 2*nordre + i)
121 taux(i) = uparam(6 + 2*nordre + nprony + i)
127 IF (time == zero)
THEN
137 trav(i) = epsxx(i)+epsyy(i)
138 rootv(i) = sqrt((epsxx(i)-epsyy(i))*(epsxx(i)-epsyy(i))
139 . + epsxy(i)*epsxy(i))
140 evv(i,1) = half*(trav(i)+rootv(i))
141 evv(i,2) = half*(trav(i)-rootv(i))
146 IF (abs(evv(i,2)-evv(i,1)) < em10)
THEN
154 eigv(i,1,1) = (epsxx(i)-evv(i,2))/rootv(i)
155 eigv(i,2,1) = (epsyy(i)-evv(i,2))/rootv(i)
156 eigv(i,3,1) = (half*epsxy(i)) /rootv(i)
157 eigv(i,1,2) = (evv(i,1)-epsxx(i))/rootv(i)
158 eigv(i,2,2) = (evv(i,1)-epsyy(i))/rootv(i)
159 eigv(i,3,2) =-(half*epsxy(i)) /rootv(i)
163 IF (ismstr == 1 .OR. ismstr == 3)
THEN
165 ev(i,1)=evv(i,1)+ one
166 ev(i,2)=evv(i,2)+ one
171 ev(i,1)=exp(evv(i,1))
172 ev(i,2)=exp(evv(i,2))
183 IF(ev(i,1) > zero)
THEN
185 IF(al(k) /= zero)ev1 = exp(al(k)*log(ev(i,1)))
188 IF(ev(i,2)> zero)
THEN
190 IF(al(k) /= zero) ev2 = exp(al(k)*log(ev(i,2)))
202 rv(1:nel) = ev(1:nel,1)*ev(1:nel,2)*ev(1:nel,3)
211 IF(ev(i,3)> zero)
THEN
213 IF(al(k) /= zero) ev3 = exp(al(k)*log(ev(i,3)))
216 IF(rv(i) > zero)
THEN
218 IF(al(k)/= zero) rvt = exp((-beta(k)*al(k))*log(rv(i)))
221 fac = two*mu(k)/al(k)
223 t(i,3) = t(i,3) + fac*(ev3 - rvt)/rv(i)
226 . (-fac *(ev3 - rvt) +
227 . two*mu(k)*(ev3 + beta(k)*rvt))/ev(i,3)/rv(i)
232 IF(kt3(i) /= zero) ev(i,3)= ev(i,3) - t(i,3) / kt3(i)
237 uvar(1:nel,4) = ev(1:nel,3)
239 rv(1:nel) = ev(1:nel,1)*ev(1:nel,2)*ev(1:nel,3)
250 IF(ev(i,3)> zero)
THEN
252 IF(al(k) /= zero) ev3 = exp(al(k)*log(ev(i,3)))
255 IF(rv(i) > zero)
THEN
257 IF(al(k)/= zero) rvt = exp((-beta(k)*al(k))*log(rv(i)))
260 fac = two*mu(k)/al(k)
261 t(i,1) = t(i,1) + fac*(ev1 - rvt)/rv(i)
262 t(i,2) = t(i,2) + fac*(ev2 - rvt)/rv(i)
263 t(i,3) = t(i,3) + fac*(ev3 - rvt)/rv(i)
274 IF(ev(i,1) > zero)
THEN
276 IF(al(k) /= zero)ev1 = exp(al(k)*log(ev(i,1)))
279 IF(ev(i,2)> zero)
THEN
281 IF(al(k) /= zero) ev2 = exp(al(k)*log(ev(i,2)))
289 rv(1:nel) = ev(1:nel,1)*ev(1:nel,2)*ev(1:nel,3)
290 invr(1:nel) = one/
max(em20,rv(1:nel))
305 IF(ev(i,3)> zero)
THEN
307 IF(al(k) /= zero) ev3 = exp(al(k)*log(ev(i,3)))
311 IF(rv(i) > zero)
THEN
313 IF(al(k)/= zero) rvt = exp((-beta(k)*al(k))*log
316 fac = two*mu(k)/al(k)
318 t(i,1) = t(i,1) + fac*(ev1 - rvt)*invr(i)
319 t(i,2) = t(i,2) + fac*(ev2 - rvt)*invr(i)
320 t(i,3) = t(i,3) + fac*(ev3 - rvt)*invr(i)
322 dsvol(i) = dsvol(i) - two_third*fac*(ev1 + ev2 + ev3)
323 . + two*fac*rvt + two_third*mu(k)*ev3
324 . + two*beta(k)*mu(k)*rvt
326 dsdev(i) = dsdev(i) - two*fac*(two_third*ev3 - third*(ev1 + ev2))
327 . + four_over_3*mu(k)*ev3
328 dq1(i) = dq1(i) - two_third*mu(k)*ev1
329 dq2(i) = dq2(i) - two_third*mu(k)*ev2
330 dq3(i) = dq3(i) + four_over_3
337 inv32(i) = inv31*inv31
338 inv33(i) = inv32(i)*inv31
339 inv11 = one/
max(em20,ev(i,1))
340 inv21 = one/
max(em20,ev(i,2))
342 dsvol(i) = dsvol(i)*inv33(i)
343 dsdev(i) = dsdev(i)*inv33(i)
344 dq1(i) = dq1(i)*inv31*inv11*inv11
345 dq2(i) = dq2(i)*inv31*inv21*inv21
346 dq2(i) = dq3(i)*inv31
350 p = third*(t(i,1) + t(i,2) + t(i,3))
352 ec(i,1) = ev(i,1)*ev(i,1)
353 ec(i,2) = ev(i,2)*ev(i,2)
354 ec(i,3) = ev(i,3)*ev(i,3)
356 sp(i,1)= rv(i)*p/
max(em20,ec(i,1))
357 sp(i,2)= rv(i)*p/
max(em20,ec(i,2))
358 sp(i,3)= rv(i)*p/
max(em20,ec(i,3))
361 sd(i,1)= rv(i)*(t(i,1) - p)/
max(em20,ec(i,1))
362 sd(i,2)= rv(i)*(t(i,2) - p)/
max(em20,ec(i,2))
363 sd(i,3)= rv(i)*(t(i,3) - p)/
max(em20,ec(i,3))
365 IF(rv(i)>zero) rvd(i) = exp( two_third*log(rv(i)))
367 sdhp1 = rvd(i)*sd(i,1)
368 sdhp2 = rvd(i)*sd(i,2)
369 sdh3(i) = rvd(i)*sd(i,3)
371 dq1(i) = dq1(i)*rvd(i) + two_third*sdhp1*inv31
372 dq2(i) = dq2(i)*rvd(i) + two_third*sdhp2*inv31
373 dq2(i) = dq2(i)*rvd(i) + two_third*sdh3(i)*ev(i,3)
380 sdh1(i) = eigv(i,1,1)*sdhp1 + eigv(i,1,2)*sdhp2
381 sdh2(i) = eigv(i,2,1)*sdhp1 + eigv(i,2,2)*sdhp2
386 IF(rv(i) > zero)rvd(i) = exp( (-two_third)*log(rv(i)) )
387 s(i,3) = sp(i,3) + gamainf*sd(i,3)
393 fac= -timestep/taux(k)
395 h10 = uvar(i,jnv + k )
396 h20 = uvar(i,jnv + nprony + k )
397 h30 = uvar(i,jnv + 2*nprony + k )
399 h1 = exp(fac)*h10+ exp(half*fac)*(sdh1(i) - sdh01(i))
400 h2 = exp(fac)*h20+ exp(half*fac)*(sdh2(i) - sdh02(i))
401 h3 = exp(fac)*h30+ exp(half*fac)*(sdh3(i) - sdh03(i))
404 hp1 = eigv(i,1,1)*h1 + eigv(i,2,1)*h2
405 hp2 = eigv(i,1,2)*h1 + eigv(i,2,2)*h2
408 fac = third*(hp1*ec(i,1) + hp2*ec(i,2) + h3*ec(i,3))
409 hd1 = hp1 - fac/
max(em20,ec(i,1))
410 hd2 = hp2 - fac/
max(em20,ec(i,2))
411 hd3 = h3 - fac/
max(em20,ec(i,3))
413 s(i,3) = s(i,3) + gama(k)*rvd(i)*hd3
414 dqidev = exp(half*fac)*(dsdev(i)
415 . -third*(ec(i,1)*dq1(i)+ec(i,2)*dq2(i)+ec(i,3)*dq3(i))*inv32(i))
416 . +two_third*(ec(i,1)*hp1+ ec(i,2)*hp2 + h3*ec(i,3))*inv33(i)
417 dqdev(i)=dqdev(i) + rvd(i)*(-gama(k)*dqidev + two_third*gama(k)*hd3 )
420 kt3(1:nel) = dsvol(1:nel) + gamainf*dsdev(1:nel) + dqdev(1:nel)
423 IF(kt3(i) /= zero) ev(i,3) = ev(i,3) - s(i,3)/ kt3(i)
432 uvar(1:nel,4) = ev(1:nel,3)
437 rv(1:nel) = ev(1:nel,1)*ev(1:nel,2)*ev(1:nel,3)
448 IF(rv(i) > zero)
THEN
450 IF(al(k)/= zero) rvt = exp((-beta(k)*al(k))*log(rv(i)))
454 IF(ev(i,3)> zero)
THEN
456 IF(al(k) /= zero) ev3 = exp(al(k)*log(ev(i,3)))
459 fac = two*mu(k)/al(k)
461 t(i,1) = t(i,1) + fac*(ev1 - rvt)/rv(i)
462 t(i,2) = t(i,2) + fac*(ev2 - rvt)/rv(i)
463 t(i,3) = t(i,3) + fac*(ev3 - rvt)/rv(i)
471 p = third*(t(i,1) + t(i,2) + t(i,3))
473 ec(i,1) = ev(i,1)*ev(i,1)
474 ec(i,2) = ev(i,2)*ev(i,2)
475 ec(i,3) = ev(i,3)*ev(i,3)
477 sp(i,1)= rv(i)*p/
max(em20,ec(i,1))
478 sp(i,2)= rv(i)*p/
max(em20,ec(i,2))
479 sp(i,3)= rv(i)*p/
max(em20,ec(i,3))
481 sd(i,1)= rv(i)*(t(i,1) - p)/
max(em20,ec(i,1))
482 sd(i,2)= rv(i)*(t(i,2) - p)/
max(em20,ec(i,2))
483 sd(i,3)= rv(i)*(t(i,3) - p)/
max(em20,ec(i,3))
485 IF(rv(i)>zero) rvd(i) = exp( two_third*log(rv(i)))
487 sdhp1 = rvd(i)*sd(i,1)
488 sdhp2 = rvd(i)*sd(i,2)
489 sdh3(i) = rvd(i)*sd(i,3)
499 sdh1(i) = eigv(i,1,1)*sdhp1 + eigv(i,1,2)*sdhp2
500 sdh2(i) = eigv(i,2,1)*sdhp1 + eigv(i,2,2)*sdhp2
508 IF(rv(i) > zero)rvd(i) = exp( (-two_third)*log(rv(i)) )
509 s(i,1) = sp(i,1) + gamainf*sd(i,1)
510 s(i,2) = sp(i,2) + gamainf*sd(i,2)
511 s(i,3) = sp(i,3) + gamainf*sd(i,3)
517 fac= -timestep/taux(k)
519 h20 = uvar(i,jnv + nprony + k )
520 h30 = uvar(i,jnv + 2*nprony + k )
521 h1 = exp(fac)*h10+ exp(half*fac)*(sdh1(i) - sdh01(i))
522 h2 = exp(fac)*h20+ exp(half*fac)*(sdh2(i) - sdh02(i))
523 h3 = exp(fac)*h30+ exp(half*fac)*(sdh3(i) - sdh03(i))
526 uvar(i,jnv + nprony + k )= h2
527 uvar(i,jnv + 2*nprony + k )= h3
529 hp1 = eigv(i,1,1)*h1 + eigv(i,2,1)*h2
530 hp2 = eigv(i,1,2)*h1 + eigv(i,2,2)*h2
533 fac = third*(hp1*ec(i,1) + hp2*ec(i,2) + h3*ec(i,3))
534 hd1 = hp1 - fac/
max(em20,ec(i,1))
535 hd2 = hp2 - fac/
max(em20,ec(i,2))
536 hd3 = h3 - fac/
max(em20,ec(i,3))
538 s(i,1) = s(i,1) + gama(k)*rvd(i)*hd1
539 s(i,2) = s(i,2) + gama(k)*rvd(i)*hd2
540 s(i,3) = s(i,3) + gama(k)*rvd(i)*hd3
546 invr(i)= one/
max(em20,rv(i))
547 t(i,1) = invr(i)*s(i,1)*ev(i,1)**2
548 t(i,2) = invr(i)*s(i,2)*ev(i,2)**2
549 t(i,3) = invr(i)*s(i,3)*ev(i,3)**2
556 signxx(i) = eigv(i,1,1)*t(i,1) + eigv(i,1,2)*t(i,2)
557 signyy(i) = eigv(i,2,1)*t(i,1) + eigv(i,2,2)*t(i,2)
558 signxy(i) = eigv(i,3,1)*t(i,1) + eigv(i,3,2)*t(i,2)
559 signyz(i) = sigoyz(i) + gs(i)*depsyz(i)
560 signzx(i) = sigozx(i) + gs(i)*depszx(i)
565 dezz(i) =-nu/(one-nu)*(depsxx(i)+depsyy(i))
566 thkn(i) = thkn(i) + dezz(i)*thklyl(i)
567 rho(i) = rho0(i)/rv(i)
570 a11 = emax/(one - nu**2)
571 soundsp(i)= sqrt(a11/rho0(i))