33
34
35
36
37
38
39#include "implicit_f.inc"
40
41
42
43#include "mvsiz_p.inc"
44
45
46
47#include "com08_c.inc"
48#include "param_c.inc"
49
50
51
52 INTEGER MAT(*),NEL
54 . pm(npropm,*), off(*), sig(nel,6), rho(*), epxe(*), theta(*),
55 . epd(*), z(*), voln(mvsiz), dvol(*), d1(*), d2(*), d3(*), d4(*),
56 . d5(*), d6(*), p(*), rho0(*), df(*)
57
58
59
60 INTEGER I, MX
62 . g(mvsiz), g1(mvsiz), g2(mvsiz), ak(mvsiz), qh(mvsiz), tmelt(mvsiz),
63 . aj2(mvsiz), dmu(mvsiz), dav(mvsiz), epmx(mvsiz),
64 . thetl(mvsiz), ca(mvsiz), cb(mvsiz), cc(mvsiz), cn(mvsiz), epdr(mvsiz), cmx(mvsiz),
65 . sigmx(mvsiz), tstar, ct, ce, ch, scale,
66 . rho0_1, ca_1, cb_1, cn_1, cc_1,
67 . cmx_1, tmelt_1, epdr_1, thetl_1,epmx_1,
68 . sigmx_1
69
70
71 mx =mat(1)
72
73 rho0_1 =pm( 1,mx)
74 ca_1 =pm(38,mx)
75 cb_1 =pm(39,mx)
76 cn_1 =pm(40,mx)
77 cc_1 =pm(43,mx)
78 cmx_1 =pm(45,mx)
79 tmelt_1=pm(46,mx)
80 epdr_1 =pm(44,mx)
81 thetl_1=pm(47,mx)
82 epmx_1 =pm(41,mx)
83 sigmx_1=pm(42,mx)
84
85 DO 10 i=1,nel
86 rho0(i) =rho0_1
87 g(i) =pm(22,mx)*off(i)
88 ca(i) =ca_1
89 cb(i) =cb_1
90 cn(i) =cn_1
91 cc(i) =cc_1
92 cmx(i) =cmx_1
93 tmelt(i)=tmelt_1
94 epdr(i) =epdr_1
95
96
97 thetl(i)=thetl_1
98 epmx(i) =epmx_1
99 sigmx(i)=sigmx_1
100 10 CONTINUE
101
102 DO 15 i=1,nel
103 15 df(i)=rho0(i)/rho(i)
104
105 DO 30 i=1,nel
106 p(i) =-third*(sig(i,1)+sig(i,2)+sig(i,3))
107 dav(i)=-third*(d1(i)+d2(i)+d3(i))
108 g1(i)=dt1*g(i)
109 g2(i)=two*g1(i)
110 dmu(i)=-dvol(i)/voln(i)
111 30 CONTINUE
112
113
114
115 DO 40 i=1,nel
116 sig(i,1)=sig(i,1)+p(i)+g2(i)*(d1(i)+dav(i))
117 sig(i,2)=sig(i,2)+p(i)+g2(i)*(d2(i)+dav(i))
118 sig(i,3)=sig(i,3)+p(i)+g2(i)*(d3(i)+dav(i))
119 sig(i,4)=sig(i,4)+g1(i)*d4(i)
120 sig(i,5)=sig(i,5)+g1(i)*d5(i)
121 40 sig(i,6)=sig(i,6)+g1(i)*d6(i)
122
123 DO 50 i=1,nel
124 aj2(i)=half*(sig(i,1)**2+sig(i,2)**2+sig(i,3)**2)
125 1 +sig(i,4)**2+sig(i,5)**2+sig(i,6)**2
126 50 aj2(i)=sqrt(3.*aj2(i))
127
128 DO 90 i=1,nel
129 IF(theta(i)>=tmelt(i)) GOTO 90
130
131 tstar=0.
132 ct=1.
133 IF(theta(i)<=three100) GOTO 60
134 tstar=(theta(i)-three100)/(tmelt(i)-three100)
135 IF(theta(i)>thetl(i)) cmx(i)=one
136 ct=one -tstar**cmx(i)
137
138 60 ce=one
139
140 epd(i)=off(i)*
max( abs(d1(i)), abs(d2(i)), abs(d3(i)),
141 . half*abs(d4(i)),.5*abs(d5(i)),.5*abs(d6(i)))
142
143 IF(epd(i)<=epdr(i)) GOTO 70
144 ce=one + cc(i) * log(epd(i)/epdr(i))
145
146 70 ch=ca(i)
147 IF(epxe(i)<=zero) GOTO 80
148 ch=ca(i)+cb(i)*epxe(i)**cn(i)
149 IF(epxe(i)>epmx(i)) ch=ca(i)+cb(i)*epmx(i)**cn(i)
150
151 80 ak(i)=
min(sigmx(i),ch)*ce*ct
152
153
154
155 IF(cn(i)>=1) THEN
156 qh(i)= (cb(i)*cn(i)*epxe(i)**(cn(i)-one))*ce*ct
157 ELSE
158 IF(epxe(i)/=zero)THEN
159 qh(i)= (cb(i)*cn(i)/epxe(i)**(one-cn(i)))*ce*ct
160 ELSE
161 qh(i)=zero
162 ENDIF
163 ENDIF
164 90 CONTINUE
165
166 DO 110 i=1,nel
167 IF(theta(i)>=tmelt(i)) GOTO 100
168 IF(aj2(i)<=ak(i)) GOTO 110
169
170 scale=zero
171 IF(aj2(i)/=zero) scale=ak(i)/aj2(i)
172 sig(i,1)=scale*sig(i,1)
173 sig(i,2)=scale*sig(i,2)
174 sig(i,3)=scale*sig(i,3)
175 sig(i,4)=scale*sig(i,4)
176 sig(i,5)=scale*sig(i,5)
177 sig(i,6)=scale*sig(i,6)
178 epxe(i)=epxe(i)+(one-scale)*aj2(i)/(three*g(i)+qh(i))
179 GOTO 110
180
181 100 ak(i)=zero
182 epxe(i)=zero
183 sig(i,1)=zero
184 sig(i,2)=zero
185 sig(i,3)=zero
186 sig(i,4)=zero
187 sig(i,5)=zero
188 sig(i,6)=zero
189
190 110 CONTINUE
191 RETURN