36 1 NEL ,NUPARAM,NUVAR ,MFUNC ,KFUNC ,NPF ,
37 2 TF ,TIME ,TIMESTEP,UPARAM ,RHO0 ,RHO ,
38 3 VOLUME ,EINT ,FHEAT ,JLAG ,
39 4 EPSPXX ,EPSPYY ,EPSPZZ ,EPSPXY ,EPSPYZ ,EPSPZX ,
40 5 DEPSXX ,DEPSYY ,DEPSZZ ,DEPSXY ,DEPSYZ ,DEPSZX ,
41 6 EPSXX ,EPSYY ,EPSZZ ,EPSXY ,EPSYZ ,EPSZX ,
42 7 SIGOXX ,SIGOYY ,SIGOZZ ,SIGOXY ,SIGOYZ ,SIGOZX ,
43 8 SIGNXX ,SIGNYY ,SIGNZZ ,SIGNXY ,SIGNYZ ,SIGNZX ,
44 9 SIGVXX ,SIGVYY ,SIGVZZ ,SIGVXY ,SIGVYZ ,SIGVZX ,
45 A SOUNDSP,VISCMAX,UVAR ,OFF ,NGL ,IPT ,
46 B IPM ,MAT ,EPSP ,IPLA ,YLD ,PLA ,
47 C DPLA ,ETSE ,JTHE ,TEMP ,TABLE ,SEQ_OUTPUT,
55#include "implicit_f.inc"
105#include "com01_c.inc"
106#include "com08_c.inc"
107#include "impl1_c.inc"
108#include "param_c.inc"
109#include "scr17_c.inc"
110#include "units_c.inc"
112 INTEGER NEL, , NUVAR,IPT,IPLA, JTHE,
113 . NGL(NEL),MAT(NEL),IPM(NPROPMI,*),ISEQ
114 INTEGER ,
INTENT(IN) :: JLAG
116 . TIME,TIMESTEP,UPARAM(*),
117 . RHO(NEL),RHO0(NEL),VOLUME(),EINT(NEL),
118 . EPSPXX(NEL),EPSPYY(NEL),(NEL),
119 . EPSPXY(NEL),EPSPYZ(NEL),EPSPZX(NEL),
120 . DEPSXX(NEL),DEPSYY(NEL),DEPSZZ(NEL),
121 . DEPSXY(NEL),DEPSYZ(NEL),(NEL),
122 . EPSXX(NEL) ,EPSYY() ,EPSZZ(NEL) ,
123 . EPSXY(NEL) ,EPSYZ(NEL) ,EPSZX(NEL) ,
124 . SIGOXX(NEL),SIGOYY(NEL),SIGOZZ(NEL),
125 . sigoxy(nel),sigoyz(nel),sigozx(nel),
126 . epsp(nel),etse(nel), temp(nel),seq_output(nel),
133 . SIGNXX(NEL),SIGNYY(NEL),SIGNZZ(NEL),
134 . SIGNXY(NEL),SIGNYZ(NEL),SIGNZX(NEL),
135 . SIGVXX(NEL),SIGVYY(NEL),SIGVZZ(NEL),
136 . SIGVXY(NEL),SIGVYZ(NEL),SIGVZX(NEL),
137 . SOUNDSP(NEL),(NEL),DPLA(NEL)
141 my_real :: uvar(nel,nuvar), off(nel), yld(nel), pla(nel)
142 my_real ,
DIMENSION(NEL) ,
INTENT(INOUT) :: fheat
146 INTEGER NPF(*), MFUNC, KFUNC(MFUNC)
149 EXTERNAL FINTER2,FINTER
161 INTEGER I,J,IADBUF,J1,J2,ITABLE,
162 . iparam,npar,opte,ifunce,
165 . e,nu,p,dav,r,fac,epst,ep1,ep2,ep3,ep4,ep5,ep6,
166 . e1,e2,e3,e4,e5,e6,c,cc,d,y,yp,e42,e52,e62,epst2,
167 . c1,g,g2,g3,ff,gg,hh,nn,ll,mm,vol0, rhocp,
168 . epsmax,h(mvsiz),cri(mvsiz),
169 . fail(mvsiz),epsr1,epsr2,p0(mvsiz),hkin,
170 . fisokin,sigexx(mvsiz),sigeyy(mvsiz),sigezz(mvsiz),
171 . sigexy(mvsiz),sigeyz(mvsiz),sigezx(mvsiz),
172 . dexx,deyy,dexy,dezz,deyz,dezx,dsxx,dsyy,dszz,dsxy,dsyz,
173 . dszx,sigpxx,sigpyy,sigpxy,sigpyz,sigpzx,sigpzz,
alpha,
174 . xfac, yfac,e0(mvsiz), g1(mvsiz), g21(mvsiz), g31(mvsiz),
175 . c11(mvsiz),escale(mvsiz),einf,dydxe(mvsiz),ce
177 . yk(mvsiz), dydx(mvsiz)
179 .
DIMENSION(NEL,3) :: xx3
181 .
DIMENSION(NEL,2) :: xx2
182 INTEGER,
DIMENSION(NEL,3) :: IPOS3
183 INTEGER,
DIMENSION(NEL,2) :: IPOS2
192 itable = ipm(227,mat(1))
193 iadbuf = ipm(7,mat(1))-1
194 fisokin=uparam(iadbuf+1)
195 rhocp = uparam(iadbuf+23)
196 opte = uparam(iadbuf+25)
197 ce = uparam(iadbuf+27)
198 einf = uparam(iadbuf+26)
202 e0(i) = uparam(iadbuf+2)
203 g1(i) = uparam(iadbuf+5)
204 g21(i) = uparam(iadbuf+18)
205 g31(i) = uparam(iadbuf+19)
206 c11(i) = uparam(iadbuf+20)
208 nu = uparam(iadbuf+6)
209 epsmax= uparam(iadbuf+15)
222 IF(pla(i) > zero)
THEN
223 ifunce = uparam(iadbuf+24)
224 escale(i) = finter(kfunc(ifunce),pla(i),npf,tf,dydxe(i))
225 e0(i) = escale(i)* e0(i)
226 g1(i) = half*e0(i)/(one+nu)
229 c11(i) =e0(i)/three/(one - two
235 IF(pla(i) > zero)
THEN
236 e0(i) = e0(i)-(e0(i)-einf)*(one-exp(-ce*pla(i)))
237 g1(i) = half*e0(i)/(one+nu)
240 c11(i) = e0(i)/three/(one - two*nu)
244 xfac =uparam(iadbuf+13)
245 yfac =uparam(iadbuf+14)
247 epsr1 =uparam(iadbuf+16)
248 IF(epsr1==zero)epsr1=ep30
249 epsr2 =uparam(iadbuf+17)
250 IF(epsr2==zero)epsr2=twoep30
252 ff = uparam(iadbuf+7)
253 gg = uparam(iadbuf+8)
254 hh = uparam(iadbuf+9)
255 ll = uparam(iadbuf+10)
256 mm = uparam(iadbuf+11)
257 nn = uparam(iadbuf+12)
259 IF (time == zero)
THEN
260 temp(1:nel) = uparam(iadbuf + 22)
276 IF (fisokin/=zero)
THEN
278 sigoxx(i) = sigoxx(i) - uvar(i,5)
279 sigoyy(i) = sigoyy(i) - uvar(i,6)
280 sigozz(i) = sigozz(i) - uvar(i,7)
281 sigoxy(i) = sigoxy(i) - uvar(i,8)
282 sigoyz(i) = sigoyz(i) - uvar(i,9)
283 sigozx(i) = sigozx(i) - uvar(i,10)
290 p0(i) = -(sigoxx(i)+sigoyy(i)+sigozz(i))*third
291 dav = (depsxx(i)+depsyy(i)+depszz(i))*third
292 signxx(i)=sigoxx(i)+p0(i)+g21(i)*(depsxx(i)-dav)
293 signyy(i)=sigoyy(i)+p0(i)+g21(i)*(depsyy(i)-dav)
294 signzz(i)=sigozz(i)+p0(i)+g21(i)*(depszz(i)-dav)
295 signxy(i)=sigoxy(i)+g1(i) *depsxy(i)
296 signyz(i)=sigoyz(i)+g1(i) *depsyz(i)
297 signzx(i)=sigozx(i)+g1(i) *depszx(i)
299 sigexx(i) = signxx(i)
300 sigeyy(i) = signyy(i)
301 sigezz(i) = signzz(i)
302 sigexy(i) = signxy(i)
303 sigeyz(i) = signyz(i)
304 sigezx(i) = signzx(i)
305 soundsp(i) = sqrt((c11(i)+four*g1(i)/three)/rho0(i))
317 dav = (epsxx(i)+epsyy(i)+epszz(i)) * third
333 c = - half *(e1*e1 + e2*e2 + e3*e3) - e42 - e52 - e62
334 d = - e1*e2*e3 + e1*e52 + e2*e62 + e3*e42
339 y = (epst2 + c)* epst + d
343 y = (epst2 + c)* epst + d
345 IF(yp/=zero)epst = epst - y
347 y = (epst2 + c)* epst + d
349 IF(yp/=zero)epst = epst - y/yp
351 y = (epst2 + c)* epst + d
353 IF(yp/=zero)epst = epst - y/yp
355 y = (epst2 + c)* epst + d
357 IF(yp/=zero)epst = epst - y/yp
363 fail(i) =
max(zero,
min(one,
364 . (epsr2-epst)/(epsr2-epsr1) ))
369 IF(table(itable)%NDIM==2)
THEN
371 ipos2(i,1) = nint(uvar(i,2))
372 ipos2(i,2) = nint(uvar(i,3))
375 xx2(i,2)=epsp(i)*xfac
382 yld(i) = fail(i)*yld(i)
383 h(i) = fail(i)*dydx(i)
384 uvar(i,2) = ipos2(i,1)
385 uvar(i,3) = ipos2(i,2)
388 IF(fisokin/=zero)
THEN
393 xx2(i,2)=epsp(i)*xfac
399 yld(i) = (one-fisokin) * yld(i) +
400 . fisokin * fail(i) * yfac * yk(i)
401 yld(i) =
max(yld(i),em20)
407 ipos3(i,1) = nint(uvar(i,2))
408 ipos3(i,2) = nint(uvar(i,3))
409 ipos3(i,3) = nint(uvar(i,4))
412 xx3(i,2) = epsp(i)*xfac
420 yld(i) = fail(i)*yld(i)
421 h(i) = fail(i)*dydx(i)
422 uvar(i,2) = ipos3(i,1)
423 uvar(i,3) = ipos3(i,2)
424 uvar(i,4) = ipos3(i,3)
427 IF(fisokin/=zero)
THEN
432 xx3(i,2)=epsp(i)*xfac
439 yld(i) = (one-fisokin) * yld(i) +
440 . fisokin * fail(i) * yfac * yk(i)
441 yld(i) =
max(yld(i),em20)
451 . ff*(signyy(i) - signzz(i))**2 + gg*(signzz(i) - signxx(i))**2
452 . + hh*(signxx(i) - signyy(i))**2 + two*ll*signyz(i)**2
453 . + two*mm*signzx(i)**2 + two*nn*signxy(i)**2
454 cri(i) = sqrt(cri(i))
455 r =
min(one,yld(i)/
max(cri(i),em20))
458 signxx(i)=signxx(i)*r-p
459 signyy(i)=signyy(i)*r-p
460 signzz(i)=signzz(i)*r-p
461 signxy(i)=signxy(i)*r
462 signyz(i)=signyz(i)*r
463 signzx(i)=signzx(i)*r
464 pla(i)=pla(i) + (one - r)*cri(i)/
max(g31(i)+h(i),em20)
466 dpla(i) = (one - r)*cri(i)/
max(g31(i)+h(i),em20)
471 . ff*(signyy(i) - signzz(i))**2 + gg*(signzz(i) - signxx(i))**2
472 . + hh*(signxx(i) - signyy(i))**2 + two*ll*signyz(i)**2
473 . + two*mm*signzx(i)**2 + two*nn*signxy(i)**2
474 cri(i) = sqrt(cri(i))
475 r =
min(one,yld(i)/
max(cri(i),em20))
478 signxx(i)=signxx(i)*r-p
479 signyy(i)=signyy(i)*r-p
480 signzz(i)=signzz(i)*r-p
481 signxy(i)=signxy(i)*r
482 signyz(i)=signyz(i)*r
483 signzx(i)=signzx(i)*r
484 pla(i)=pla(i) + (one-r)*cri(i)/
max(g31(i),em20)
486 dpla(i) = (one-r)*cri(i)/
max(g31(i),em20)
491 . ff*(signyy(i) - signzz(i))**2 + gg*(signzz(i) - signxx(i))**2
492 . + hh*(signxx(i) - signyy(i))**2 + two*ll*signyz(i)**2
493 . + two*mm*signzx(i)**2 + two*nn*signxy(i)**2
494 cri(i) = sqrt(cri(i))
495 r =
min(one,yld(i)/
max(cri(i),em20))
497 dpla(i)=(one - r)*cri(i)/
max(g31(i)+h(i),em20)
499 yld(i)=
max(yld(i)+(one - fisokin)*dpla(i)*h(i),zero)
500 r =
min(one,yld(i)/
max(cri(i),em20))
504 signxx(i)=signxx(i)*r-p
505 signyy(i)=signyy(i)*r-p
506 signzz(i)=signzz(i)*r-p
507 signxy(i)=signxy(i)*r
508 signyz(i)=signyz(i)*r
509 signzx(i)=signzx(i)*r
510 pla(i)=pla(i) + dpla(i)
517 IF (fisokin/=zero)
THEN
521 dsxx = sigexx(i) - signxx(i) - p
522 dsyy = sigeyy(i) - signyy(i) - p
523 dszz = sigezz(i) - signzz(i) - p
524 dsxy = sigexy(i) - signxy(i)
525 dsyz = sigeyz(i) - signyz(i)
526 dszx = sigezx(i) - signzx(i)
528 hkin = two_third*fisokin*h(i)
529 alpha = hkin/(g21(i)+hkin)
537 uvar(i, 5) = uvar(i, 5) + sigpxx
538 uvar(i, 6) = uvar(i, 6) + sigpyy
539 uvar(i, 7) = uvar(i, 7) + sigpzz
540 uvar(i, 8) = uvar(i, 8) + sigpxy
541 uvar(i, 9) = uvar(i, 9) + sigpyz
542 uvar(i,10) = uvar(i,10) + sigpzx
544 signxx(i) = signxx(i) + uvar(i, 5)
545 signyy(i) = signyy(i) + uvar(i, 6)
546 signzz(i) = signzz(i) + uvar(i, 7)
547 signxy(i) = signxy(i) + uvar(i, 8)
548 signyz(i) = signyz(i) + uvar(i, 9)
549 signzx(i) = signzx(i) + uvar(i,10)
555 IF(dpla(i)>0) etse(i)= h(i)/g21(i)
562 itable = ipm(227,mat(1))
563 iadbuf = ipm(7,mat(1))-1
564 fisokin=uparam(iadbuf+1)
568 g2 = uparam(iadbuf+18)
569 g3 = uparam(iadbuf+19)
570 nu = uparam(iadbuf+6)
572 epsmax= uparam(iadbuf+15)
582 xfac =uparam(iadbuf+13)
583 yfac =uparam(iadbuf+14)
585 epsr1 =uparam(iadbuf+16)
586 IF(epsr1==zero)epsr1=ep30
587 epsr2 =uparam(iadbuf+17)
588 IF(epsr2==zero)epsr2=twoep30
590 ff = uparam(iadbuf+7)
591 gg = uparam(iadbuf+8)
592 hh = uparam(iadbuf+9)
593 ll = uparam(iadbuf+10)
594 mm = uparam(iadbuf+11)
595 nn = uparam(iadbuf+12)
605 uvar(i,4 + j ) = zero
613 IF (fisokin/=zero)
THEN
615 sigoxx(i) = sigoxx(i) - uvar(i,5)
616 sigoyy(i) = sigoyy(i) - uvar(i,6)
617 sigozz(i) = sigozz(i) - uvar(i,7)
618 sigoxy(i) = sigoxy(i) - uvar(i,8)
619 sigoyz(i) = sigoyz(i) - uvar(i,9)
620 sigozx(i) = sigozx(i) - uvar(i,10)
627 p0(i) = -(sigoxx(i)+sigoyy(i)+sigozz(i))*third
628 dav = (depsxx(i)+depsyy(i)+depszz(i))*third
629 signxx(i)=sigoxx(i)+p0(i)+g2*(depsxx(i)-dav)
630 signyy(i)=sigoyy(i)+p0(i)+g2*(depsyy(i)-dav)
631 signzz(i)=sigozz(i)+p0(i)+g2*(depszz(i)-dav)
632 signxy(i)=sigoxy(i)+g *depsxy(i)
633 signyz(i)=sigoyz(i)+g *depsyz(i)
634 signzx(i)=sigozx(i)+g *depszx(i)
636 sigexx(i) = signxx(i)
637 sigeyy(i) = signyy(i)
638 sigezz(i) = signzz(i)
639 sigexy(i) = signxy(i)
640 sigeyz(i) = signyz(i)
641 sigezx(i) = signzx(i)
642 soundsp(i) = sqrt((c1+four*g/three)/rho0(i))
670 c = - half *(e1*e1 + e2*e2 + e3*e3) - e42 - e52 - e62
671 d = - e1*e2*e3 + e1*e52 + e2*e62 + e3*e42
676 y = (epst2 + c)* epst
680 y = (epst2 + c)* epst + d
682 IF(yp/=zero)epst = epst - y/yp
684 y = (epst2 + c)* epst + d
686 IF(yp/=zero)epst = epst - y/yp
688 y = (epst2 + c)* epst + d
690 IF(yp/=zero)epst = epst - y/yp
692 y = (epst2 + c)* epst + d
694 IF(yp/=zero)epst = epst - y/yp
700 fail(i) =
max(zero,
min(one,
701 . (epsr2-epst)/(epsr2-epsr1) ))
706 IF(table(itable)%NDIM==2)
THEN
708 ipos2(i,1) = nint(uvar(i,2))
709 ipos2(i,2) = nint(uvar(i,3))
712 xx2(i,2)=epsp(i)*xfac
719 yld(i) = fail(i)*yld(i)
720 h(i) = fail(i)*dydx(i)
721 uvar(i,2) = ipos2(i,1)
722 uvar(i,3) = ipos2(i,2)
725 IF(fisokin/=zero)
THEN
730 xx2(i,2)=epsp(i)*xfac
736 yld(i) = (one-fisokin) * yld(i) +
737 . fisokin * fail(i) * yfac * yk(i)
738 yld(i) =
max(yld(i),em20)
745 ipos3(i,1) = nint(uvar(i,2))
746 ipos3(i,2) = nint(uvar(i,3))
747 ipos3(i,3) = nint(uvar(i,4))
750 xx3(i,2)=epsp(i)*xfac
758 yld(i) = fail(i)*yld(i)
759 h(i) = fail(i)*dydx(i)
760 uvar(i,2) = ipos3(i,1)
761 uvar(i,3) = ipos3(i,2)
762 uvar(i,4) = ipos3(i,3)
765 IF(fisokin/=zero)
THEN
770 xx3(i,2)=epsp(i)*xfac
777 yld(i) = (one-fisokin) * yld(i) +
778 . fisokin * fail(i) * yfac * yk(i)
779 yld(i) =
max(yld(i),em20)
789 . ff*(signyy(i) - signzz(i))**2 + gg*(signzz(i)
790 . + hh*(signxx(i) - signyy(i))**2 + two*ll*signyz(i)**2
791 . + two*mm*signzx(i)**2 + two*nn*signxy
792 cri(i) = sqrt(cri(i))
793 r =
min(one,yld(i)/
max(cri(i),em20))
796 signxx(i)=signxx(i)*r-p
797 signyy(i)=signyy(i)*r-p
798 signzz(i)=signzz(i)*r-p
799 signxy(i)=signxy(i)*r
800 signyz(i)=signyz(i)*r
801 signzx(i)=signzx(i)*r
802 pla(i)=pla(i) + (one - r)*cri(i)/
max(g3
804 dpla(i) = (one - r)*cri(i)/
max(g3+h(i),em20)
809 . ff*(signyy(i) - signzz(i))**2 + gg*(signzz(i) - signxx(i))**2
810 . + hh*(signxx(i) - signyy(i))**2 + two*ll*signyz(i)**2
811 . + two*mm*signzx(i)**2 + two*nn*signxy(i)**2
812 cri(i) = sqrt(cri(i))
813 r =
min(one,yld(i)/
max(cri(i),em20))
816 signxx(i)=signxx(i)*r-p
817 signyy(i)=signyy(i)*r-p
818 signzz(i)=signzz(i)*r-p
819 signxy(i)=signxy(i)*r
820 signyz(i)=signyz(i)*r
821 signzx(i)=signzx(i)*r
822 pla(i)=pla(i) + (one-r)*cri(i)/
max(g3,em20)
824 dpla(i) = (one-r)*cri(i)/
max(g3,em20)
829 . ff*(signyy(i) - signzz(i))**2 + gg*(signzz(i) - signxx(i))**2
830 . + hh*(signxx(i) - signyy(i))**2 + two*ll*signyz(i)**2
831 . + two*mm*signzx(i)**2 + two*nn*signxy(i)**2
832 cri(i) = sqrt(cri(i))
833 r =
min(one,yld(i)/
max(cri(i),em20))
835 dpla(i)=(one - r)*cri(i)/
max(g3+h(i),em20)
837 yld(i)=
max(yld(i)+(one - fisokin)*dpla(i)*h(i),zero)
838 r =
min(one,yld(i)/
max(cri(i),em20))
842 signxx(i)=signxx(i)*r-p
843 signyy(i)=signyy(i)*r-p
844 signzz(i)=signzz(i)*r-p
845 signxy(i)=signxy(i)*r
846 signyz(i)=signyz(i)*r
847 signzx(i)=signzx(i)*r
848 pla(i)=pla(i) + dpla(i)
855 IF (fisokin/=zero)
THEN
857 p = c1 * (rho(i)/rho0(i)-one)
858 dsxx = sigexx(i) - signxx(i) - p
859 dsyy = sigeyy(i) - signyy(i) - p
860 dszz = sigezz(i) - signzz(i) - p
861 dsxy = sigexy(i) - signxy(i)
862 dsyz = sigeyz(i) - signyz(i)
865 hkin = two_third*fisokin*h(i)
866 alpha = hkin/(g2+hkin)
874 uvar(i, 5) = uvar(i, 5) + sigpxx
875 uvar(i, 6) = uvar(i, 6) + sigpyy
876 uvar(i, 7) = uvar(i, 7) + sigpzz
877 uvar(i, 8) = uvar(i, 8) + sigpxy
878 uvar(i, 9) = uvar(i, 9) + sigpyz
879 uvar(i,10) = uvar(i,10) + sigpzx
881 signxx(i) = signxx(i) + uvar(i, 5)
882 signyy(i) = signyy(i) + uvar(i, 6)
883 signzz(i) = signzz(i) + uvar(i, 7)
884 signxy(i) = signxy(i) + uvar(i, 8)
885 signyz(i) = signyz(i) + uvar(i, 9)
886 signzx(i) = signzx(i) + uvar(i,10)
892 IF(dpla(i)>0) etse(i)= h(i)/g2
903 IF (jthe < 0 .AND. jlag /= 0)
THEN
905 fheat(i) = fheat(i) + yld(i)*dpla(i)*volume(i)
907 ELSE IF (rhocp > zero)
THEN
909 temp(i) = temp(i) + yld(i)*dpla(i)*rhocp/
max(em15,volume(i))
915 IF(off(i)<em01) off(i)=zero
916 IF(off(i)<one) off(i)=off(i)*four_over_5
921 IF(pla(i)>epsmax.AND.off(i)==one)
THEN
927 IF(nindx>0.AND.imconv==1)
THEN
930 WRITE(iout, 1000) ngl(indx(j))
931 WRITE(istdo,1100) ngl(indx(j)),tt
932#include "lockoff.inc"
936 1000
FORMAT(1x,
'RUPTURE OF SOLID ELEMENT NUMBER ',i10)
937 1100
FORMAT(1x,
'RUPTURE OF SOLID ELEMENT NUMBER ',i10,
938 .
' AT TIME :',g11.4)