34 1 NEL , NUPARAM, NUVAR , NFUNC , IFUNC , NPF ,
35 2 TF , TIME , TIMESTEP, UPARAM, RHO0 , RHO ,
37 4 EPSPXX , EPSPYY , EPSPZZ , EPSPXY, EPSPYZ, EPSPZX,
38 5 DEPSXX , DEPSYY , DEPSZZ , DEPSXY, DEPSYZ, DEPSZX,
39 6 EPSXX , EPSYY , EPSZZ , EPSXY , EPSYZ , EPSZX ,
40 7 SIGOXX , SIGOYY , SIGOZZ , SIGOXY, SIGOYZ, SIGOZX,
41 8 SIGNXX , SIGNYY , SIGNZZ , SIGNXY, SIGNYZ, SIGNZX,
42 9 SIGVXX , SIGVYY , SIGVZZ , SIGVXY, SIGVYZ, SIGVZX,
43 A SOUNDSP, VISCMAX, UVAR , OFF , ISMSTR, ET ,
44 B IHET ,OFFG , EPSTH3 , IEXPAN)
48#include "implicit_f.inc"
61 INTEGER NEL, NUPARAM, NUVAR,ISMSTR,IHET,IEXPAN
64 . TIME , TIMESTEP , UPARAM(NUPARAM),
65 . RHO (NEL), RHO0 (NEL), VOLUME(NEL), EINT(NEL),
66 . EPSPXX(NEL), EPSPYY(NEL), EPSPZZ(NEL),
67 . EPSPXY(NEL), EPSPYZ(NEL), EPSPZX(NEL),
68 . DEPSXX(NEL), DEPSYY(NEL), DEPSZZ(NEL),
69 . DEPSXY(NEL), DEPSYZ(NEL), DEPSZX(NEL),
70 . (NEL), EPSYY (NEL), EPSZZ (NEL),
71 . EPSXY (NEL), EPSYZ (NEL), EPSZX (NEL),
72 . sigoxx(nel), sigoyy(nel), sigozz(nel),
73 . sigoxy(nel), sigoyz(nel), sigozx(nel), offg(nel),
79 . signxx(nel), signyy(nel), signzz(nel),
80 . signxy(nel), signyz(nel), signzx(nel),
81 . sigvxx(nel), sigvyy(nel), sigvzz(nel),
82 . sigvxy(nel), sigvyz(nel), sigvzx(nel),
83 . soundsp(nel), viscmax(nel), et(nel)
88 . uvar(nel,nuvar), off(nel)
92 INTEGER NPF(*), NFUNC, IFUNC(NFUNC)
93 my_real FINTER,FINTTE,TF(*),FINT2V
94 EXTERNAL FINTER,FINTTE
98 INTEGER I,J,K,II,NORDRE,NPRONY,ITYPE,IVISC
100 . MU(100),AL(100),TAUX(100), GAMA(100),GAMAINF,NU,
101 . GMAX,S(MVSIZ,3),SD(MVSIZ,3),
102 . EC(MVSIZ,3),HD(MVSIZ,3,100),
103 . ev(mvsiz,3),av(mvsiz,6),dirprv(mvsiz,3,3),
104 . rv(mvsiz),p(mvsiz),rbulk,
105 . evv(mvsiz,3),ssp(mvsiz,3),fac, beta(100),
107 . e1,e2,e3,e4,e5,e6,epsp, vm,dav,visc1,sigxx(mvsiz),
108 . sigyy(mvsiz),sigzz(mvsiz),sigxy(mvsiz),sigzx(mvsiz),
109 . sigyz(mvsiz),dvisc,a11,a12,a13,a22,a21,a23,
110 . a31,a32,a33,sdg0(mvsiz,6),sdg(mvsiz,6),hg(mvsiz,6),hg0(6),h(mvsiz,3,100)
113 . a(3,3),dpra(3,3),eigen(3),amax,eti(mvsiz),efac,rv_pui,rv_pui_tab(mvsiz),
114 . cj(mvsiz),lam_al(3),rvl,lamin,cimax(mvsiz),gvis,cmax,cmax0,
115 . d11,d12,d13,d21,d22,d23,d31,d32,d33,mu2
116 my_real ,
DIMENSION(NEL,3) :: ai,bi
122 nordre = nint(uparam(2))
123 nprony = nint(uparam(3))
129 mu(i) = uparam(6 + i)
130 al(i) = uparam(6 + nordre + i)
131 beta(i) = uparam(2*nordre + 2*nprony + 7 + i)
136 ivisc = uparam(2*nordre + 2*nprony + 7 )
137 IF(nprony /= zero)
THEN
139 gama(i) = uparam(6 + 2*nordre + i)
140 taux(i) = uparam(6 + 2*nordre + nprony + i)
173 IF(ismstr==0.OR.ismstr==2.OR.ismstr==4)
THEN
176 ev(i,1)=exp(evv(i,1))
177 ev(i,2)=exp(evv(i,2))
178 ev(i,3)=exp(evv(i,3))
180 ELSEIF(ismstr==10.OR.ismstr==12)
THEN
182 IF(offg(i)<=one)
THEN
183 ev(i,1)=sqrt(evv(i,1)+ one)
184 ev(i,2)=sqrt(evv(i,2)+ one)
185 ev(i,3)=sqrt(evv(i,3)+ one)
187 ev(i,1)=evv(i,1)+ one
188 ev(i,2)=evv(i,2)+ one
189 ev(i,3)=evv(i,3)+ one
195 ev(i,1)=evv(i,1)+ one
196 ev(i,2)=evv(i,2)+ one
201 IF (impl_s > 0 .OR. ihet > 1)
THEN
210 IF((al(k)-one)/=zero)
THEN
211 eti(i) = eti(i) + mu(k)*exp((al(k)-one)*log(amax))
213 eti(i) = eti(i) + mu(k)
216 eti(i) = eti(i) + zero
232 rv(1:nel) = ev(1:nel,1)*ev(1:nel,2)*ev(1:nel,3)
236 IF(iexpan > 0.AND.(ismstr==10.OR.ismstr==11.OR.ismstr==12)) rv(1:nel)= rv(1:nel)-epsth3(1:nel)
241 fac = two*mu(ii)/(al(ii))
243 IF(al(ii)/=zero)
THEN
246 IF(ev(i,1)>zero) p(i) = p(i) +
247 . fac1*third*( exp(al(ii)*log(ev(i,1))) )
248 IF(ev(i,2)>zero) p(i) = p(i) +
249 . fac1*third*( exp(al(ii)*log(ev(i,2))) )
250 IF(ev(i,3)>zero) p(i) = p(i) +
251 . fac1*third*( exp(al(ii)*log(ev(i,3))) )
253 IF(rv(i)>zero) p(i) = p(i)
254 . - fac1*exp((-beta(ii)*al(ii))*log(rv(i)))
259 IF(ev(i,1)/=zero) p(i) = p(i) + fac1*third
260 IF(ev(i,2)/=zero) p(i) = p(i) + fac1*third
261 IF(ev(i,3)/=zero) p(i) = p(i) + fac1*third
262 IF(rv(i)>zero) p(i) = p(i) - fac1
273 fac = two*mu(ii)/(al(ii))
276 fac1 = fac/(ev(i,j)**2)
277 IF(al(ii)/=zero)
THEN
278 IF(ev(i,j)>zero) s(i,j)= s(i,j) + fac1*exp(al(ii)*log(ev(i,j)))
279 IF(rv(i)>zero) s(i,j)= s(i,j) - fac1*exp((-beta(ii)*al(ii))*log(rv(i)))
281 IF(ev(i,j)==zero)
THEN
282 s(i,j)= s(i,j) - fac1
296 rv_pui_tab(i) = exp( two_third*log(rv(i)) )
302 ssp(1:nel,j) = p(1:nel)/(ev(1:nel,j)**2)
303 sd(1:nel,j) = s(1:nel,j) - ssp(1:nel,j)*rv(1:nel)
304 sd(1:nel,j) = rv_pui_tab(1:nel)*sd(1:nel,j)
307 IF(ivisc == 2) sd(1:nel,1:3) = s(1:nel,1:3)
314 sdg0(1:nel,1:6) = uvar(1:nel,1:6)
319 sdg(i,1) = dirprv(i,1,1)*dirprv(i,1,1)*sd(i,1)
320 . + dirprv(i,1,2)*dirprv(i,1,2)*sd(i,2)
321 . + dirprv(i,1,3)*dirprv(i,1,3)*sd(i,3)
323 sdg(i,2) = dirprv(i,2,2)*dirprv(i,2,2)*sd(i,2)
324 . + dirprv(i,2,3)*dirprv(i,2,3)*sd(i,3)
325 . + dirprv(i,2,1)*dirprv(i,2,1)*sd(i,1)
327 sdg(i,3) = dirprv(i,3,3)*dirprv(i,3,3)*sd(i,3)
328 . + dirprv(i,3,1)*dirprv(i,3,1)*sd(i,1)
329 . + dirprv(i,3,2)*dirprv(i,3,2)*sd(i,2)
331 sdg(i,4) = dirprv(i,1,1)*dirprv(i,2,1)*sd(i,1)
332 . + dirprv(i,1,2)*dirprv(i,2,2)*sd(i,2)
333 . + dirprv(i,1,3)*dirprv(i,2,3)*sd(i,3)
335 sdg(i,5) = dirprv(i,2,2)*dirprv(i,3,2)*sd(i,2)
336 . + dirprv(i,2,3)*dirprv(i,3,3)*sd(i,3)
337 . + dirprv(i,2,1)*dirprv(i,3,1)*sd(i,1)
339 sdg(i,6) = dirprv(i,3,3)*dirprv(i,1,3)*sd(i,3)
340 . + dirprv(i,3,1)*dirprv(i,1,1)*sd(i,1)
341 . + dirprv(i,3,2)*dirprv(i,1,2)*sd(i,2)
345 uvar(1:nel,j) = sdg(1:nel,j)
349 fac= -timestep/taux(ii)
352 hg0(j) = uvar(i, 6 + (ii - 1)*6 + j)
353 hg(i,j) = exp(fac)*hg0(j) + exp(half*fac)*(sdg(i,j)-sdg0(i,j))
354 uvar(i, 6 + (ii - 1)*6 + j)= hg(i,j)
361 a11 = dirprv(i,1,1)*hg(i,1) + dirprv(i,2,1)*hg(i,4)
362 . + dirprv(i,3,1)*hg(i,6)
363 a12 = dirprv(i,1,2)*hg(i,1) + dirprv(i,2,2)*hg(i,4)
364 . + dirprv(i,3,2)*hg(i,6)
365 a13 = dirprv(i,1,3)*hg(i,1) + dirprv(i,2,3)*hg(i,4)
366 . + dirprv(i,3,3)*hg(i,6)
369 a21 = dirprv(i,1,1)*hg(i,4) + dirprv(i,2,1)*hg(i,2)
370 . + dirprv(i,3,1)*hg(i,5)
371 a22 = dirprv(i,1,2)*hg(i,4) + dirprv(i,2,2)*hg(i,2)
372 . + dirprv(i,3,2)*hg(i,5)
373 a23 = dirprv(i,1,3)*hg(i,4) + dirprv(i,2,3)*hg(i,2)
374 . + dirprv(i,3,3)*hg(i,5)
376 a31 = dirprv(i,1,1)*hg(i,6) + dirprv(i,2,1)*hg(i,5)
377 . + dirprv(i,3,1)*hg(i,3)
378 a32 = dirprv(i,1,2)*hg(i,6) + dirprv(i,2,2)*hg(i,5)
379 . + dirprv(i,3,2)*hg(i,3)
380 a33 = dirprv(i,1,3)*hg(i,6) + dirprv(i,2,3)*hg(i,5)
381 . + dirprv(i,3,3)*hg(i,3)
383 h(i,1,ii) = dirprv(i,1,1)*a11 + dirprv(i,2,1)*a21
384 . + dirprv(i,3,1)*a31
385 h(i,2,ii) = dirprv(i,1,2)*a12 + dirprv(i,2,2)*a22
386 . + dirprv(i,3,2)*a32
387 h(i,3,ii) = dirprv(i,1,3)*a13 + dirprv(i,2,3)*a23
388 . + dirprv(i,3,3)*a33
393 fac = third*(h(i,1,ii)*ec(i,1) + h(i,2,ii)*ec(i,2)
394 . + h(i,3,ii)*ec(i,3))
395 hd(i,j,ii) = h(i,j,ii) - fac/
max(em20,ec(i,j))
407 rv_pui_tab(i) = exp( (-two_third)*log(rv(i)) )
415 fac= gamainf*rv_pui_tab(i)
416 s(i,j) = ssp(i,j)*rv(i) + fac*sd(i,j)
420 s(i,j) = s(i,j) + gama(ii)*rv_pui_tab(i)*hd(i,j,ii)
425 s(i,j) = (s(i,j)*ev(i,j)**2)/rv(i)
431 s(i,j) = gamainf*s(i,j)
435 s(i,j) = s(i,j) + gama(ii)*h(i,j,ii)
440 s(i,j) = (s(i,j)*ev(i,j)**2)/rv(i)
447 s(i,j) = s(i,j)*ev(i,j)**2/rv(i)
452 cmax0 = two_third*gmax+ rbulk
457 IF(al(ii)/=zero)
THEN
462 lam_al(1:3) = exp(al(ii)*log(ev(i,1:3)))
463 rvl = fac1*exp(-beta(ii)*al(ii)*log(rv(i)))
464 cj(i) = cj(i) + mu2*rvl
465 ai(i,1:3) = ai(i,1:3) + mu2*lam_al(1:3)
466 bi(i,1:3) = bi(i,1:3) + fac*mu2*lam_al(1:3)
472 d11 = ai(i,1)-bi(i,1)+cj(i)
473 d22 = ai(i,2)-bi(i,2)+cj(i)
474 d33 = ai(i,3)-bi(i,3)+cj(i)
477 cmax = fac*
max(d11,d22,d33)
478 cimax(i) = two_third*gvis +
max(cmax,cmax0)
483 signxx(i) = dirprv(i,1,1)*dirprv(i,1,1)*s(i,1)
484 . + dirprv(i,1,2)*dirprv(i,1,2)*s(i,2)
485 . + dirprv(i,1,3)*dirprv(i,1,3)*s(i,3)
487 signyy(i) = dirprv(i,2,2)*dirprv(i,2,2)*s(i,2)
488 . + dirprv(i,2,3)*dirprv(i,2,3)*s(i,3)
489 . + dirprv(i,2,1)*dirprv(i,2,1)*s(i,1)
491 signzz(i) = dirprv(i,3,3)*dirprv(i,3,3)*s(i,3)
492 . + dirprv(i,3,1)*dirprv(i,3,1)*s(i,1)
493 . + dirprv(i,3,2)*dirprv(i,3,2)*s(i,2)
495 signxy(i) = dirprv(i,1,1)*dirprv(i,2,1)*s(i,1)
496 . + dirprv(i,1,2)*dirprv(i,2,2)*s(i,2)
497 . + dirprv(i,1,3)*dirprv(i,2,3)*s(i,3)
499 signyz(i) = dirprv(i,2,2)*dirprv(i,3,2)*s(i,2)
500 . + dirprv(i,2,3)*dirprv(i,3,3)*s(i,3)
501 . + dirprv(i,2,1)*dirprv(i,3,1)*s(i,1)
503 signzx(i) = dirprv(i,3,3)*dirprv(i,1,3)*s(i,3)
504 . + dirprv(i,3,1)*dirprv(i,1,1)*s(i,1)
505 . + dirprv(i,3,2)*dirprv(i,1,2)*s(i,2)
510 soundsp(i)=sqrt(cimax(i)/rho(i))