31
32
33
34#include "implicit_f.inc"
35
36
37
38#include "mvsiz_p.inc"
39
40
41
42
43
44
45
46 INTEGER, INTENT(IN) ::NEL,NPG
47 my_real,
DIMENSION(MVSIZ),
INTENT(IN) :: vol,
48 . d1, d2, d3,d4, d5, d6,rhoref
50 my_real,
DIMENSION(NEL,6),
INTENT(INOUT) :: sig
51 my_real,
DIMENSION(MVSIZ),
INTENT(INOUT) :: g
52
53
54
55 INTEGER I, MT
56
58 . dd, al, cns1, cns2, cns3,ssp1,mu1,mu,
59 . dav, pvis, nrho,jac,fac,tol,ff,rhossp,facg,facmax
60#ifdef MYREAL8
61 my_real,
PARAMETER :: real_three = 3.0d0
62 my_real,
PARAMETER :: real_one = 1.0d0
63#else
64 my_real,
PARAMETER :: real_three = 3.0
65 my_real,
PARAMETER :: real_one = 1.0
66#endif
67
68 ssp1 = two_third*g2+c1
69 mu = zep02
70 mu1 = 0.015
71 DO i=1,nel
72 ff = -
min(sig(i,1),sig(i,2),sig(i,3))
73 IF (two*ff <=g2 ) cycle
74 facg =
max(one,sqrt(ff/g2))
75 IF (facg>one ) mu1 = facg*mu
76 al = (npg*vol(i))**(real_one/real_three)
77 rhossp = sqrt(ssp1*rhoref(i))
78 cns2=mu1*al*rhossp
79 cns3=half*cns2
80 sig(i,4)=sig(i,4) + cns3 * d4(i)
81 sig(i,5)=sig(i,5) + cns3 * d5(i)
82 sig(i,6)=sig(i,6) + cns3 * d6(i)
83 dd =-d1(i)-d2(i)-d3(i)
84 dav=dd * third
85 sig(i,1)=sig(i,1) + cns2 *(d1(i)+dav)
86 sig(i,2)=sig(i,2) + cns2 *(d2(i)+dav)
87 sig(i,3)=sig(i,3) + cns2 *(d3(i)+dav)
88 fac = one+two*mu1
89 g(i) =fac*g(i)
90 ENDDO
91
92 RETURN