37 1 NEL, NUPARAM, NUVAR, MFUNC,
38 2 KFUNC, NPF, TF, TIME,
39 3 TIMESTEP,UPARAM, RHO0, RHO,
40 4 VOL, EINT, EPSPXX, EPSPYY,
41 5 EPSPZZ, EPSPXY, EPSPYZ, EPSPZX,
42 6 DEPSXX, DEPSYY, DEPSZZ, DEPSXY,
43 7 DEPSYZ, DEPSZX, EPSXX, EPSYY,
44 8 EPSZZ, EPSXY, EPSYZ, EPSZX,
45 9 SIGOXX, SIGOYY, SIGOZZ, SIGOXY,
46 A SIGOYZ, SIGOZX, SIGNXX, SIGNYY,
47 B SIGNZZ, SIGNXY, SIGNYZ, SIGNZX,
48 C SOUNDSP, VISCMAX, UVAR, OFF,
49 D NGL, IPM, MAT, EPSP,
50 E YLD, PLA, TABLE, TEMP,
51 F NVARTMP, VARTMP, TRDEPSTH,EINTTH,
52 G JTHE ,IDT_THERM, THEACCFACT)
59#include "implicit_f.inc"
111#include
"param_c.inc"
112#include "com01_c.inc"
113#include "scr18_c.inc"
118 INTEGER NEL, NUPARAM, NUVAR,NVARTMP, NPT0, IPT,
119 . NGL(NEL),MAT(NEL),IPM(NPROPMI
133INTEGER,
INTENT(IN) :: JTHE
134 INTEGER,
INTENT(IN) :: IDT_THERM
135 my_real ,
intent(in) :: THEACCFACT
140 . signxx(nel),signyy(nel),signzz(nel),
141 . signxy(nel),signyz(nel),signzx(nel),
142 . soundsp(nel),viscmax(nel)
147 . uvar(nel,nuvar),epsp(nel),
148 . off(nel),thk(nel),yld(nel),eintth(nel)
149 INTEGER :: VARTMP(NEL,NVARTMP)
155 INTEGER NPF(*), MFUNC, KFUNC(MFUNC)
156 my_real FINTER ,TF(*)
161 INTEGER I,J,K,NRATE(NEL),II,J1,J2,N,NINDX,IADBUF,NINDXGLOB,NINDXLOC,
162 . nmax,index(nel),k2,iterk2,iter,niter,npfg(2),itable(5),
163 . efunc,ifunc(5),iterk,flag,ntab,heatflag,heatoption,
164 . niheat,nicool,flag_loc ,local,flag_tr_strain,flag_tr_kinetics
166 INTEGER,
DIMENSION(NEL) :: INDXLOC,INDXGLOB
168 . cun ,cdeux,ctrois,deno,efac,
169 . alambda,blambda,ceps,peps,sol1,sol2,
170 . yscale(5),teta2,teta3,teta4,teta5,qr2,qr3,qr4,pp,
171 . alfa1,alfa2,t2,t3,t4,t5,t1,voli,xfac(5),rscale(5),
172 . ppxx,ppyy,ppzz,ppxy,ppyz,ppzx,esfim1,
173 .
alpha,tref,ae1,ae3,bs,ms,gsize,nu,fcfer,fcper,fcbai,fg,
174 . e1po(nel),rhnew,eode,fgrain,kper,hfctn,kbain,xeq2,
175 . xeq4,lat1,lat2,hfp,hb,hm,vol0,tini,unitt,
176 . tgz(12),crit,test, heatflag1,dxrho,
177 . conv,huitcent,sspshell,sspsol,qptt,slope,dydxr,
179 . gfac_f,phi_f,psi_f,cr_f,cf,gfac_p,phi_p,psi_p,cr_p,cp,
180 . gfac_b,phi_b,psi_b,cr_b,cb,phi_m,psi_m,n_m,fgfer,fgper
182 . normxx,normyy,normzz,normxy,normyz,normzx,ddlam,dfdsig_dsig,dpla_dlam,ddep
185 . e(nel),rbulk(nel),shear(nel),g2(nel),tempel(nel),
186 . lamda(nel),dydxgz(nel),dydxe(nel),
187 . frac1(nel),frac2(nel),frac3(nel) ,frac4
188 . frac5(nel),totfrac(nel),totfracold(nel) ,soxx(nel) ,
189 . gz(nel) ,treo(nel) ,sigom(nel),soyy(nel),sozz(nel),
190 . dydx1(nel),dydx2(nel) ,dydx3(nel),
191 . dydx4(nel),dydx5(nel) ,yield(nel),
192 . y1(nel) ,y2(nel),y3(nel),y4(nel),y5(nel),
193 . strialxx(nel),strialyy(nel),strialzz(nel),
194 . strialxy(nel),strialyz(nel),strialzx(nel),svm(nel),
195 . eoxx(nel),eoyy(nel),eozz(nel),epsth(nel),
196 . eoxy(nel),eoyz(nel),eozx(nel),
197 . eodexx(nel),eodeyy(nel),eodezz(nel),
198 . eodexy(nel),eodezx(nel),eodeyz(nel),y1ini(nel),
199 . epsoxx(nel),epsoyy(nel),epsozz(nel),
200 . epsoxy(nel),epsoyz(nel),epsozx(nel
201 . dpla(nel) ,snorm(nel),seff(nel),
202 . sigm(nel) ,sxx(nel),syy(nel),szz(nel),
203 . sxy(nel) ,syz(nel),szx(nel) ,
204 . deplxx(nel),deplyy(nel),deplzz(nel),deplxy(nel),deplyz(nel),deplzx(nel),
205 . dpla1(nel),dpla2(nel),dpla3(nel),dpla4(nel),dpla5(nel),
206 . pla1(nel) ,pla2(nel) ,pla3(nel) ,pla4(nel) ,pla5(nel),
207 . depselzz(nel),depsplzz(nel),depsim1(nel),depsi(nel),
208 . depsip1(nel),sigzim1(nel),sigi(nel),
209 . volold(nel),rh(nel),de12(nel),yldold(nel),
210 . depselozz(nel),depsplozz(nel),
211 . svmi(nel),trdepsth(nel),svmim1(nel),svmtr(nel),trdeps,
212 . depsthxx(nel),depsthyy(nel),depsthzz(nel),depsth(nel),
213 . x1(nel),x2(nel),x3(nel),x4(nel),x5(nel),hard(nel),
214 . dexx(nel),deyy(nel),dezz(nel),gold(nel),svmtest(nel),
215 . eplxx(nel),eplyy(nel),eplzz(nel) ,eplxy(nel),eplyz(nel),eplzx(nel),
216 . eeloxx(nel),eeloyy(nel),eeloyz(nel),eelozx(nel),
217 . eeloxy(nel),eelozz(nel),sigkk(nel),
218 . xgama(nel),tempmin(nel),vr(nel),h(nel),tempo(nel),
219 . zeq(nel), tau(nel),normdev(nel),deth12(nel),depstr(nel),
220 . rho_a(nel),rho_f(nel),rho_p(nel),rho_b(nel),rho_m(nel),rho_n(nel)
221 my_real,
DIMENSION(NEL) ::
222 . a1, a2,fct,df,svmo,depsvol,hfct,a,b,c,dh,gsig,dgsig,esf,desf,p,svmt,
223 . lnf2,lnf3,lnf4,lnf5,faccs,stxx,styy,stzz,stxy,styz,stzx,logz,logzm1,
224 . dpxx,dpyy,dpzz,dpxy,dpyz,dpzx,phi2,phi3,phi4,phi5,psi2 ,psi3,psi4,psi5
226 .
DIMENSION(NEL,3) :: xx5,xx1,xx2,xx3,xx4
228 INTEGER,
DIMENSION(NEL,3) :: IPOS1,IPOS2,IPOS3,IPOS4,IPOS5
274 ntab = ipm(226,mat(1))
277 itable(i) = ipm(226+i,mat(1))
278 xfac(i) = uparam(58+i)
286 yscale(j)=uparam(9+j)
309 IF (idt_therm == 1)
THEN
360 tgz(j-58+12)=uparam(j)
363 heatoption = uparam(58 + ntab + 1)
364 tau1 = uparam(58 + ntab + 2)
365 tau3 = uparam(58 + ntab + 3)
366 flag_loc = uparam(58 + ntab + 4)
368 flag_tr_strain = uparam(58 + ntab + 5)
369 flag_tr_kinetics = uparam(58 + ntab + 6)
370 rscale(1) = uparam(58 + ntab + 7)
371 rscale(2) = uparam(58 + ntab + 8)
372 rscale(3) = uparam(58 + ntab + 9)
373 rscale(4) = uparam(58 + ntab +10)
374 rscale(5) = uparam(58 + ntab +11)
377 heatflag = heatoption
378 IF(heatoption == 2)
THEN
379 heatflag1 = finter(kfunc(2),time,npf,tf,slope)
380 heatflag = int(heatflag1)
384 qptt=four+three*(em01+em02)
389 cun = third/(one-two*nu)
390 cdeux = half/(one+nu)
391 ctrois = nu/(one+nu)/(one-two*nu)
394 IF (time == zero)
THEN
398 IF(heatflag == 1)
THEN
407 IF (jthe == -1) uvar(i,8) = temp(i)
416 CALL table_vinterp(table(itable(1)),nel,nel,ipos1,xx1,y1,dydx1)
418 uvar(1:nel,9) = y1(1:nel)
423 tempel(1:nel) = temp(1:nel)
429 tempmin(i) = uvar(i,1)
450 IF(kfunc(1) > zero)
THEN
452 e(i) = finter(kfunc(1),tempel(i),npf,tf,dydxe(i))
458 rbulk(i) = e(i)/three/(one - two*nu)
459 shear(i) = e(i)*half/(one+nu)
460 lamda(i) = e(i)*ctrois
462 a1(i) = e(i)*(one-nu) /((one + nu)*(one - two*nu))
463 a2(i) = a1(i)*nu/(one - nu)
476 totfracold(i) = frac2(i)+frac3(i)+frac4(i)+frac5(i)
505 IF (heatflag == 1)
THEN
515 IF(flag_loc == 2)
THEN
516 IF (heatflag == 1)
THEN
518 IF(tempel(i)>= uvar(i,8).AND.frac2(i)>zero)
THEN
519 zeq(i) = (tempel(i)-ae1)/(ae3-ae1)
520 tau(i) = tau1 + zeq(i) * ( tau3 - tau1)
521 zeq(i) =
min( one ,
max( zero, zeq(i)))
522 tau(i) =
max( tau3,
min( tau1, tau(i)))
523 frac1(i) = uvar(i,2) +
max(zero,(zeq(i) - uvar(i,2)) ) * timestep*theaccfact / tau(i)
524 frac2(i) = one - frac1(i) - frac3(i)- frac4(i)- frac5(i)
525 tempmin(i) = uvar(i,8)
532 IF (tempel(i)<= 1073.0 .AND. uvar(i,26)==zero)
THEN
536 IF (tempel(i)<= 773.0 .AND. uvar(i,16)==zero)
THEN
542 IF (flag_tr_kinetics == 2)
THEN
543 CALL phasekinetic2(nel,time,tempel,tempo,tempmin,ae1,ae3,bs,ms,fcfer,fcper,
544 . fcbai,fgrain,frac1,frac2,frac3,frac4,frac5,x2,x3,x4,x5,
545 . gfac_f,phi_f,psi_f,cr_f,cf,gfac_p,phi_p,psi_p,cr_p,cp,
546 . gfac_b,phi_b,psi_b,cr_b,cb,phi_m,psi_m
547 . qr2,qr3,qr4,kper,kbain,
alpha
550 CALL kirkaldykinetics(nel,time,tempel,tempmin,ae1,ae3,bs,ms,fcfer,fcper,
551 . fcbai,fgrain,frac1,frac2,frac3,frac4,frac5,x2,x3,x4,x5,qr2,
552 . qr3,qr4,kper,kbain,
alpha,xeq2,xeq4,xgama
559 IF(tempel(i)>= uvar(i,8).AND.frac2(i)>zero)
THEN
560 zeq(i) = (tempel(i)-ae1)/(ae3-ae1)
561 tau(i) = tau1 + zeq(i) * ( tau3 - tau1)
562 zeq(i) =
min( one ,
max( zero, zeq(i)))
563 tau(i) =
max( tau3,
min( tau1, tau(i)))
564 frac1(i) = uvar(i,2) +
max(zero,(zeq(i) - uvar(i,2)) ) * timestep*theaccfact / tau(i)
565 frac2(i) = one - frac1(i) - frac3(i)- frac4(i)- frac5(i)
566 tempmin(i) = uvar(i,8)
570 IF (tempel(i)<= 1073.0 .AND. uvar(i,26)==zero)
THEN
575 IF (tempel(i)<= 773.0 .AND. uvar(i,16)==zero)
THEN
582 IF (flag_tr_kinetics == 2)
THEN
583 CALL phasekinetic2(nel,time,tempel,tempo,tempmin,ae1,ae3,bs,ms,fcfer,fcper,
584 . fcbai,fgrain,frac1,frac2,frac3,frac4,frac5,x2,x3,x4,x5,
585 . gfac_f,phi_f,psi_f,cr_f,cf,gfac_p,phi_p,psi_p,cr_p,cp,
586 . gfac_b,phi_b,psi_b,cr_b,cb,phi_m,psi_m,n_m,fgfer,fgper,fgbai,
587 . qr2,qr3,qr4,kper,kbain,
alpha,xeq2,xeq4,xgama,totfracold,timestep,nicool,
590 CALL kirkaldykinetics(nel,time,tempel,tempmin,ae1,ae3,bs,ms,fcfer,fcper,
591 . fcbai,fgrain,frac1,frac2,frac3,frac4,frac5,x2,x3,x4,x5,qr2,
592 . qr3,qr4,kper,kbain,
alpha,xeq2,xeq4,xgama,totfracold,timestep,nicool,
599 IF(tempo(i)<=tempmin(i))tempmin(i)=tempo(i)
600 uvar(i,1) = tempmin(i)
608 ipos1(i,1) = vartmp(i,1)
609 ipos1(i,2) = vartmp(i,2)
610 ipos1(i,3) = vartmp(i,3)
612 ipos2(i,1) = vartmp(i,4)
613 ipos2(i,2) = vartmp(i,5)
614 ipos2(i,3) = vartmp(i,6)
616 ipos3(i,1) = vartmp(i
617 ipos3(i,2) = vartmp(i,8)
618 ipos3(i,3) = vartmp(i,9)
620 ipos4(i,1) = vartmp(i,10)
621 ipos4(i,2) = vartmp(i,11)
624 ipos5(i,1) = vartmp(i,13)
625 ipos5(i,2) = vartmp(i,14)
626 ipos5(i,3) = vartmp(i,15)
631 xx1(i,3)=epsp(i)*xfac(1)
635 xx2(i,3)=epsp(i)*xfac(2)
639 xx3(i,3)=epsp(i)*xfac(3)
643 xx4(i,3)=epsp(i)*xfac(4)
647 xx5(i,3)=epsp(i)*xfac(5)
650 CALL table_vinterp(table(itable(1)),nel,nel,ipos1,xx1,y1,dydx1)
651 CALL table_vinterp(table(itable(2)),nel,nel,ipos2,xx2,y2,dydx2)
652 CALL table_vinterp(table(itable(3)),nel,nel,ipos3,xx3,y3,dydx3)
653 CALL table_vinterp(table(itable(4)),nel,nel,ipos4,xx4,y4,dydx4)
654 CALL table_vinterp(table(itable(5)),nel,nel,ipos5,xx5,y5,dydx5)
658 y1(i)=y1(i)*yscale(1)
659 y2(i)=y2(i)*yscale(2)
660 y3(i)=y3(i)*yscale(3)
661 y4(i)=y4(i)*yscale(4)
662 y5(i)=y5(i)*yscale(5)
664 dydx1(i)=dydx1(i)*yscale(1)
665 dydx2(i)=dydx2(i)*yscale(2)
666 dydx3(i)=dydx3(i)*yscale(3)
667 dydx4(i)=dydx4(i)*yscale(4)
668 dydx5(i)=dydx5(i)*yscale(5)
670 yld(i)=
max(em20,y1(i)*frac1(i)+y2(i)*frac2(i)+
671 . y3(i)*frac3(i)+y4(i)*frac4(i)+y5(i)*frac5(i))
674 y1ini(i) =
max(em20,y1(i))
675 vartmp(i,1) = ipos1(i,1)
676 vartmp(i,2) = ipos1(i,2)
677 vartmp(i,3) = ipos1(i,3)
679 vartmp(i,4) = ipos2(i,1)
680 vartmp(i,5) = ipos2(i,2)
681 vartmp(i,6) = ipos2(i,3)
683 vartmp(i,7) = ipos3(i,1)
684 vartmp(i,8) = ipos3(i,2)
685 vartmp(i,9) = ipos3(i,3)
687 vartmp(i,10) = ipos4(i,1)
688 vartmp(i,11) = ipos4(i,2)
689 vartmp(i,12) = ipos4(i,3)
691 vartmp(i,13) = ipos5(i,1)
692 vartmp(i,14) = ipos5(i,2)
693 vartmp(i,15) = ipos5(i,3)
697 IF(ceps/=zero.AND.peps/=zero)
THEN
700 faccs(i)=one+ (epsp(i)/ceps)**(one/peps)
701 yld(i)= yld(i)*faccs(i)
711 totfrac(i) = frac2(i)+frac3(i)+frac4(i)+frac5(i)
712 depsth(i) = (frac1(i)*alfa1+totfrac(i)*alfa2)*(tempel(i)-uvar
716 IF(flag_tr_strain == 2)
THEN
721 rho_a(i) = finter(kfunc(3),tempel(i),npf,tf,dydxr)*rscale(1)
722 rho_f(i) = finter(kfunc(4),tempel(i
723 rho_p(i) = finter(kfunc(5),tempel(i),npf
724 rho_b(i) = finter(kfunc(6),tempel(i),npf,tf,dydxr
725 rho_m(i) = finter(kfunc(7),tempel(i),npf,tf,dydxr)*rscale(5)
726 dxrho = (frac1(i) - uvar(i,2)) * rho_a(i) +
727 . (frac2(i) - uvar(i,3)) * rho_f(i) +
728 . (frac3(i) - uvar(i,4)) * rho_p(i) +
729 . (frac4(i) - uvar(i,5)) * rho_b(i) +
730 . (frac5(i) - uvar(i,6)) * rho_m
731 rho_n(i) = frac1(i)*rho_a(i) + frac2(i)*rho_f(i) + frac3(i)*rho_p(i) + frac4(i)*rho_b(i) + frac5(i)*rho_m(i)
733 IF(totfrac(i) > zero.AND.totfrac(i)< one)
734 . depstr(i) = third*dxrho/(rho0(i) + rho_n(i)-uvar(i,43))
740 IF (tempel(i)<ms ) deth12(i)=six*em03
742 IF(totfrac(i) > zero.AND.totfrac(i)< one)
743 . depstr(i) = deth12(i) * (totfrac(i)-totfracold(i))
747 depsxx(i) = depsxx(i) - depsth(i) - depstr(i)
748 depsyy(i) = depsyy(i) - depsth(i) - depstr(i)
749 depszz(i) = depszz(i) - depsth(i) - depstr(i)
753 IF (timestep /=zero)
THEN
755 epspxx(i) = depsxx(i) /timestep
756 epspyy(i) = depsyy(i) /timestep
757 epspzz(i) = depszz(i) /timestep
761 gz(i) = finter(1, totfrac(i),npfg,tgz,dydxgz(i))
765 IF (off(i)== one )
THEN
770 IF(frac2(i)>uvar(i,3).AND. uvar(i,3) > zero) lnf2(i) = log(frac2(i)/uvar(i,3) )
771 IF(frac3(i)>uvar(i,4).AND. uvar(i,4) > zero) lnf3(i) = log(frac3(i)/uvar(i,4) )
772 IF(frac4(i)>uvar(i,5).AND. uvar(i,5) > zero) lnf4(i) = log(frac4(i)/uvar(i,5) )
773 IF(frac5(i)>uvar(i,6).AND. uvar(i,6) > zero) lnf5(i) = log(frac5(i)/uvar(i,6) )
782 signxx(i) = sigoxx(i) + a1(i)*depsxx(i)+ a2(i)*(depsyy(i) + depszz(i))
783 signyy(i) = sigoyy(i) + a1(i)*depsyy(i)+ a2(i)*(depsxx(i) + depszz(i))
784 signzz(i) = sigozz(i) + a1(i)*depszz(i)+ a2(i)*(depsxx(i) + depsyy(i))
785 signxy(i) = sigoxy(i) + shear(i)*depsxy(i)
786 signyz(i) = sigoyz(i) + shear(i)*depsyz(i)
787 signzx(i) = sigozx(i) + shear(i)*depszx(i)
789 p(i) = -third*(signxx(i) + signyy(i) + signzz(i
791 sxx(i) = signxx(i) + p(i)
793 szz(i) = signzz(i) + p(i)
797 svm(i) = half*(sxx(i)**2 + syy(i)**2 + szz(i)**2)
798 . + (sxy(i)**2 + szx(i)**2 + syz(i)**2)
799 svm(i) = sqrt(three*svm(i))
801 normdev(i) = sqrt(sxx(i)* sxx(i)
803 . + szz(i)* szz(i) ) /e(i)
806 sigom(i) = -(sigoxx(i)+sigoyy(i)+sigozz(i)) * third
807 soxx(i) = sigoxx(i)+sigom(i)
808 soyy(i) = sigoyy(i)+sigom(i)
809 sozz(i) = sigozz(i)+sigom(i)
810 svmo(i) = sqrt(three_half*(soxx(i)*soxx(i)
813 . +two*(sigoxy(i)*sigoxy(i)
814 . +sigoyz(i)*sigoyz(i)
815 . +sigozx(i)*sigozx(i)) ) )
825 IF ( svm(i) < yld(i) .AND. off(i) == one
826 . .AND.totfrac(i)>totfracold(i).AND. normdev(i)> em10
827 . .AND.totfrac(i)< one .AND. svm(i)>svmo(i))
THEN
830 nindxloc = nindxloc + 1
831 indxloc(nindxloc) = i
835 IF (svm(i) > yld(i) .AND. off(i) == one)
THEN
838 nindxglob = nindxglob + 1
839 indxglob(nindxglob) = i
846 IF (nindxglob > 0)
THEN
849 IF (uvar(i,3)/=zero)
THEN
850 psi2(i) =
max(zero,(lnf2(i)*(teta2*pla1(i)-pla2(i)))/(one+lnf2(i)) )
851 phi2(i) =(one+teta2*lnf2(i))/(one+lnf2(i))
853 IF (uvar(i,4)/=zero)
THEN
854 psi3(i) =
max(zero,(lnf3(i)*(teta3*pla1(i)-pla3(i)))/(one+lnf3(i)) )
855 phi3(i) =(one+teta3*lnf3(i))/(one+lnf3(i))
857 IF (uvar(i,5)/=zero)
THEN
858 psi4(i) =
max(zero, (lnf4(i)*(teta4*pla1(i)-pla4(i)))/(one+lnf4(i)) )
859 phi4(i) =(one+teta4*lnf4(i))/(one+lnf4(i))
861 IF (uvar(i,6)/=zero)
THEN
862 psi5(i) =
max(zero,(lnf5(i)*(teta5*pla1(i)-pla5(i)))/(one+lnf5(i)) )
863 phi5(i) = (one+teta5*lnf5(i))/(one
869 fct(i) = svm(i) - yld(i)
871 normxx = three_half * sxx(i) /svm(i)
872 normyy = three_half * syy(i) /svm(i)
873 normzz = three_half * szz(i) /svm(i)
874 normxy = two * three_half * signxy(i) /svm(i)
875 normyz = two * three_half * signyz(i) /svm(i)
876 normzx = two * three_half * signzx(i) /svm(i)
878 df(i) = normxx * (a1(i)*normxx + a2(i)*(normyy+normzz))
879 . + normyy * (a1(i)*normyy + a2(i)*(normxx+normzz))
880 . + normzz * (a1(i)*normzz + a2(i)*(normxx+normyy))
881 . + normxy * normxy * shear(i)
882 . + normyz * normyz * shear(i)
883 . + normzx * normzx * shear(i)
885 df(i) = sign(
max(abs(df(i)),em20) ,df(i))
890 . + signxy(i) * normxy + signyz(i) * normyz
891 dpla_dlam = dfdsig_dsig
895 dpxx(i) = ddlam * normxx
896 dpyy(i) = ddlam * normyy
898 dpxy(i) = ddlam * normxy
899 dpyz(i) = ddlam * normyz
900 dpzx(i) = ddlam * normzx
902 signxx(i) = signxx(i) - (a1(i)*dpxx(i) + a2(i)*(dpyy(i) + dpzz(i)))
903 signyy(i) = signyy(i) - (a1(i)*dpyy(i) + a2(i)*(dpxx(i) + dpzz(i)))
904 signzz(i) = signzz(i) - (a1(i)*dpzz(i) + a2(i)*(dpxx(i) + dpyy(i)))
905 signxy(i) = signxy(i) - shear(i)*dpxy(i)
906 signyz(i) = signyz(i) - shear(i)*dpyz(i)
907 signzx(i) = signzx(i) - shear(i)*dpzx(i)
908 p(i) = -third*(signxx(i) + signyy(i) + signzz(i))
910 sxx(i) = signxx(i) + p(i)
911 syy(i) = signyy(i) + p(i)
912 szz(i) = signzz(i) + p(i)
916 svm(i) = half*(sxx(i)**2 + syy(i)**2 + szz(i)**2)
917 . + (sxy(i)**2 + szx(i)**2 + syz(i)**2)
918 svm(i) = sqrt(three*svm(i))
920 ddep = ddlam * dpla_dlam
921 dpla(i) =
max(zero, dpla(i) + ddep )
924 dpla1(i)= dpla1(i) + ddep
925 IF (uvar(i,3)>zero)
THEN
926 dpla2(i)= dpla1(i) *phi2(i) + psi2(i)
928 IF (uvar(i,4)>zero)
THEN
929 dpla3(i)= dpla1(i) *phi3(i) + psi3(i)
931 IF (uvar(i,5)>zero)
THEN
932 dpla4(i)= dpla1(i) *phi4(i) + psi4(i)
934 IF (uvar(i,6)>zero)
THEN
935 dpla5(i)= dpla1(i) *phi5(i) + psi5(i)
940 ipos1(i,1) = vartmp(i,1)
941 ipos1(i,2) = vartmp(i,2)
942 ipos1(i,3) = vartmp(i,3)
944 ipos2(i,1) = vartmp(i,4)
945 ipos2(i,2) = vartmp(i,5)
946 ipos2(i,3) = vartmp(i,6)
948 ipos3(i,1) = vartmp(i,7)
949 ipos3(i,2) = vartmp(i,8)
950 ipos3(i,3) = vartmp(i,9)
952 ipos4(i,1) = vartmp(i,10)
953 ipos4(i,2) = vartmp(i,11)
954 ipos4(i,3) = vartmp(i,12)
956 ipos5(i,1) = vartmp(i,13)
957 ipos5(i,2) = vartmp(i,14)
958 ipos5(i,3) = vartmp(i,15)
960 xx1(i,1)=pla1(i) + dpla1(i)
961 xx2(i,1)=pla2(i) + dpla2(i)
962 xx3(i,1)=pla3(i) + dpla3(i)
963 xx4(i,1)=pla4(i) + dpla4(i)
964 xx5(i,1)=pla5(i) + dpla5(i)
967 CALL table_vinterp(table(itable(1)),nel,nel,ipos1,xx1,y1,dydx1)
968 CALL table_vinterp(table(itable(2)),nel,nel,ipos2,xx2,y2,dydx2
969 CALL table_vinterp(table(itable(3)),nel,nel,ipos3,xx3,y3,dydx3)
970 CALL table_vinterp(table(itable(4)),nel,nel,ipos4,xx4,y4,dydx4)
971 CALL table_vinterp(table(itable(5)),nel,nel,ipos5,xx5,y5,dydx5)
974 y1(i)=y1(i)*yscale(1)
975 y2(i)=y2(i)*yscale(2)
976 y3(i)=y3(i)*yscale(3)
977 y4(i)=y4(i)*yscale(4)
978 y5(i)=y5(i)*yscale(5)
979 dydx1(i)=dydx1(i)*yscale(1)
980 dydx2(i)=dydx2(i)*yscale(2)
981 dydx3(i)=dydx3(i)*yscale(3)
982 dydx4(i)=dydx4(i)*yscale(4)
983 dydx5(i)=dydx5(i)*yscale(5)
986 yld(i)=
max(em20, y1(i)*frac1(i)+
991 yld(i)= yld(i)*faccs(i)
993 vartmp(i,1) = ipos1(i,1)
994 vartmp(i,2) = ipos1(i,2)
995 vartmp(i,3) = ipos1(i,3)
997 vartmp(i,4) = ipos2(i,1)
998 vartmp(i,5) = ipos2(i,2)
999 vartmp(i,6) = ipos2(i,3)
1001 vartmp(i,7) = ipos3(i,1)
1002 vartmp(i,8) = ipos3(i,2)
1003 vartmp(i,9) = ipos3(i,3)
1005 vartmp(i,10) = ipos4(i,1)
1006 vartmp(i,11) = ipos4(i,2)
1007 vartmp(i,12) = ipos4(i,3)
1009 vartmp(i,13) = ipos5(i,1)
1010 vartmp(i,14) = ipos5(i,2)
1011 vartmp(i,15) = ipos5(i,3)
1016 pla(i) = pla(i)+
max(dpla1(i), zero)
1022 IF (nindxloc > 0)
THEN
1027 IF (uvar(i,3)/=zero)
THEN
1028 psi2(i) =
max(zero,(lnf2(i)*(teta2*pla1(i)))/(one+lnf2(i)) )
1029 phi2(i) = teta2*lnf2(i)/(one+lnf2(i))
1031 IF (uvar(i,4)/=zero)
THEN
1032 psi3(i) =
max(zero,(lnf3(i)*(teta3*pla1(i)))/(one+lnf3(i)) )
1033 phi3(i) = teta3*lnf3(i)/(one+lnf3(i))
1035 IF (uvar(i,5)/=zero)
THEN
1036 psi4(i) =
max(zero, (lnf4(i)*(teta4*pla1(i)))/(one+lnf4(i)) )
1037 phi4(i) = teta4*lnf4(i)/(one+lnf4(i))
1039 IF (uvar(i,6)/=zero)
THEN
1040 psi5(i) =
max(zero,(lnf5(i)*(teta5*pla1(i)))/(one+lnf5(i)) )
1041 phi5(i) = teta5*lnf5(i)/(one+lnf5(i))
1043 IF (totfrac(i) > zero)
THEN
1044 logz(i) = log(totfrac(i))
1046 IF ( totfracold(i)>zero)
THEN
1047 logzm1(i) = log( totfracold(i))
1060 a(i) = (one - totfrac(i))* gz(i) / e(i)
1061 b(i) = two * (alfa1 -alfa2)* (tempel(i)-tempo(i) ) *totfrac(i)*logz(i)
1064 hfct(i) = one +
max(zero,seven_half*(svmo(i)/yld(i)-half) )
1066 dpla(i) = a(i) * ( svm(i) - svmo(i) ) + b(i) + c(i) *hfct
1067 gsig(i) = one/( one + three * (shear(i) / y1(i)) * dpla(i) )
1069 normxx = three_half * soxx(i) /y1(i)
1070 normyy = three_half * soyy(i) /y1(i)
1071 normzz = three_half * sozz(i) /y1(i)
1072 normxy = two * three_half * sigoxy(i) /y1(i)
1073 normyz = two * three_half * sigoyz(i) /y1(i)
1074 normzx = two * three_half * sigozx(i) /y1(i)
1075 dpxx(i) = dpla(i) * normxx
1076 dpyy(i) = dpla(i) * normyy
1077 dpzz(i) = dpla(i) * normzz
1078 dpxy(i) = dpla(i) * normxy
1079 dpyz(i) = dpla(i) * normyz
1083 signyy(i) = signyy(i) - (a1(i)*dpyy(i) + a2(i)
1084 signzz(i) = signzz(i) - (a1(i)*dpzz(i) + a2(i)*(dpxx(i) + dpyy(i)))
1085 signxy(i) = signxy(i) - shear(i)*dpxy(i)
1086 signyz(i) = signyz(i) - shear(i)*dpyz(i)
1087 signzx(i) = signzx(i) - shear(i)*dpzx(i)
1088 p(i) = -third*(signxx(i) + signyy(i) + signzz(i))
1090 sxx(i) = signxx(i) + p(i)
1091 syy(i) = signyy(i) + p(i)
1092 szz(i) = signzz(i) + p(i)
1096 svm(i) = half*(sxx(i)**2 + syy(i)**2 + szz(i)**2)
1097 . + (sxy(i)**2 + szx(i)**2 + syz(i)**2)
1098 svm(i) = sqrt(three*svm(i))
1103 dpla1(i)= dpla(i)/(one - totfrac(i))
1104 IF (uvar(i,3)>zero)
THEN
1105 dpla2(i)= dpla1(i) *phi2(i) + psi2(i)
1107 IF (uvar(i,4)>zero)
THEN
1108 dpla3(i)= dpla1(i) *phi3(i) + psi3(i)
1110 IF (uvar(i,5)>zero)
THEN
1111 dpla4(i)= dpla1(i) *phi4(i) + psi4(i)
1113 IF (uvar(i,6)>zero)
THEN
1114 dpla5(i)= dpla1(i) *phi5(i) + psi5(i)
1116 pla1(i)= uvar(i,17) + dpla1(i)
1118 pla3(i)= uvar(i,19) + dpla3(i)
1119 pla4(i)= uvar(i,20) + dpla4(i)
1120 pla5(i)= uvar(i,21) + dpla5(i)
1129 ipos1(i,1) = vartmp(i,1)
1130 ipos1(i,2) = vartmp(i,2)
1131 ipos1(i,3) = vartmp(i,3)
1133 ipos2(i,1) = vartmp(i,4)
1134 ipos2(i,2) = vartmp(i,5)
1135 ipos2(i,3) = vartmp(i,6)
1137 ipos3(i,1) = vartmp(i,7)
1138 ipos3(i,2) = vartmp(i,8)
1139 ipos3(i,3) = vartmp(i,9)
1142 ipos4(i,2) = vartmp(i,11)
1143 ipos4(i,3) = vartmp(i,12)
1145 ipos5(i,1) = vartmp(i,13)
1146 ipos5(i,2) = vartmp(i,14)
1147 ipos5(i,3) = vartmp(i,15)
1150 CALL table_vinterp(table(itable(1)),nel,nel,ipos1,xx1,y1,dydx1)
1151 CALL table_vinterp(table(itable(2)),nel,nel,ipos2,xx2,y2,dydx2)
1152 CALL table_vinterp(table(itable(3)),nel,nel,ipos3,xx3,y3,dydx3)
1153 CALL table_vinterp(table(itable(4)),nel,nel,ipos4,xx4,y4,dydx4)
1154 CALL table_vinterp(table(itable(5)),nel,nel,ipos5,xx5,y5,dydx5)
1157 y1(i)=y1(i)*yscale(1)
1158 y2(i)=y2(i)*yscale(2)
1159 y3(i)=y3(i)*yscale(3)
1160 y4(i)=y4(i)*yscale(4)
1161 y5(i)=y5(i)*yscale(5)
1162 dydx1(i)=dydx1(i)*yscale(1)
1163 dydx2(i)=dydx2(i)*yscale(2)
1164 dydx3(i)=dydx3(i)*yscale(3)
1165 dydx4(i)=dydx4(i)*yscale(4)
1166 dydx5(i)=dydx5(i)*yscale(5)
1169 yld(i)=
max(em20, y1(i)*frac1(i)+
1174 yld(i)= yld(i)*faccs(i)
1179 vartmp(i,1) = ipos1(i,1)
1180 vartmp(i,2) = ipos1(i,2)
1181 vartmp(i,3) = ipos1(i,3)
1183 vartmp(i,4) = ipos2(i,1)
1184 vartmp(i,5) = ipos2(i,2)
1185 vartmp(i,6) = ipos2(i,3)
1187 vartmp(i,7) = ipos3(i,1)
1188 vartmp(i,8) = ipos3(i,2)
1189 vartmp(i,9) = ipos3(i,3)
1191 vartmp(i,10) = ipos4(i,1)
1192 vartmp(i,11) = ipos4(i,2)
1193 vartmp(i,12) = ipos4(i,3)
1195 vartmp(i,13) = ipos5(i,1)
1196 vartmp(i,14) = ipos5(i,2)
1197 vartmp(i,15) = ipos5(i,3)
1202 IF (off(i) == one )
THEN
1203 uvar(i,8) = tempel(i)
1204 uvar(i,17)= pla1(i) +
max(dpla1(i), zero)
1205 uvar(i,18)= pla2(i) +
max(dpla2(i), zero)
1206 uvar(i,19)= pla3(i) +
max(dpla3(i), zero)
1207 uvar(i,20)= pla4(i) +
max(dpla4(i), zero)
1208 uvar(i,21)= pla5(i) +
max(dpla5(i), zero)
1213 IF(uvar(i,15)<svm(i))uvar(i,15)=svm(i)
1214 IF(uvar(i,34)>tempel(i))uvar(i,34)=tempel(i)
1216 uvar(i,23)= frac2(i)/xeq2
1217 uvar(i,24)= frac3(i)/(one-xeq2)
1218 uvar(i,25)= frac4(i)
1219 uvar(i,44)= frac5(i)/
max(em20,xgama(i))
1230 soundsp(i) = sqrt((rbulk(i)+four_over_3*shear(i))/rho0(i))
1233 IF (alfa1/= zero .OR. alfa2 /= zero)
THEN
1235 sigkk(i) = signxx(i)+signyy(i)+signzz(i)+sigoxx(i)+sigoyy(i)+sigozz(i)
1236 eintth(i) = eintth(i)-half*sigkk(i)*depsth(i)
1241 IF (off(i) == one )
THEN
1245 IF (uvar(i,16) >uvar(i,26))
THEN
1246 vr(i) = (uvar(i,27)-uvar(i,33))*unitt/(uvar(i,16)-uvar(i,26))
1247 hard(i)= (frac2(i)+frac3(i))*hfp*log10(vr(i))+frac4(i)*hb+frac5(i)*hm
1251 die(i) =die(i)+ (lat2* (frac5(i)-uvar(i,6)) +
1252 . lat1* (frac2(i)-uvar(i,3)
1253 . + frac3(i)-uvar(i,4)
1254 . + frac4(i)-uvar(i,5) ) ) *vol(i)
1260 temp(1:nel) = tempel(1:nel)