40
41
42
43#include "implicit_f.inc"
44
45
46
47#include "param_c.inc"
48#include "com01_c.inc"
49
50
51
52 INTEGER NEL,NUPARAM,NUVAR,ISMSTR,NPT0,ILAYER
53 INTEGER NGL(NEL)
56 . uparam(*),thkn(nel),thklyl(nel),
57 . rho0(nel),
area(nel),eint(nel,2),gs(nel),
58 . epspxx(nel),epspyy(nel),epspxy(nel),epspyz(nel),epspzx(nel),
59 . depsxx(nel),depsyy(nel),depsxy(nel),depsyz(nel),depszx(nel),
60 . epsxx(nel),epsyy(nel),epsxy(nel),epsyz(nel),epszx(nel),
61 . sigoxx(nel),sigoyy(nel),sigoxy(nel),sigoyz(nel),sigozx(nel)
62
63
64
66 . signxx(nel),signyy(nel),signxy(nel),signyz(nel),signzx(nel),
67 . sigvxx(nel),sigvyy(nel),sigvxy(nel),sigvyz(nel),sigvzx(nel),
68 . soundsp(nel),viscmax(nel)
69
70
71
72 my_real :: uvar(nel,nuvar), off(nel)
73
74
75
76 INTEGER :: I,J,K,ITER,NORDER
77 my_real :: nu,rbulk,tenscut,gmax,rvt,sum,sumdwdl,partp,emax,a11
79 . mu(5),al(5),evma1(nel,5),evma2(nel,5),evma3(nel,5),evm(nel,3),
80 . eigv(nel,3,2),trav(nel),rootv(nel),evv(nel,3),ev(nel,3),
81 . rho(nel),dezz(nel),dwdl(3),ddwddl(3),rv(nel),t(nel,3),
82 . epszz(nel),sv(nel,3),
83 . h30(100),h31(nel,100),h1(100),h10(100),
84 . h2(100),h20(100),h12(100),h120(100),
85 . cd1(nel),cd2(nel),cd12(nel),cd10
86 . cd20(nel),cd120(nel), dc3ev3(nel),c31(nel),c30(nel),kt3(nel)
87
88 mu(1) = uparam(1)
89 mu(2) = uparam(2)
90 mu(3) = uparam(3)
91 mu(4) = uparam(4)
92 mu(5) = uparam(5)
93 al(1) = uparam(6)
94 al(2) = uparam(7)
95 al(3) = uparam(8)
96 al(4) = uparam(9)
97 al(5) = uparam(10)
98 rbulk = uparam(11)
99 tenscut= uparam(12)
100 nu = uparam(14)
101 norder = nint(uparam(18))
102
103 gmax = zero
104 DO i=1,norder
105 gmax = gmax + mu(i)*al(i)
106 ENDDO
107
108 IF (time == zero .AND. isigi == 0) THEN
109 DO i=1,nel
110 DO j=1,nuvar
111 uvar(i,j) = zero
112 ENDDO
113 uvar(i,3) = one
114 ENDDO
115 ENDIF
116
117 DO i=1,nel
118 trav(i) = epsxx(i)+epsyy(i)
119 rootv(i) = sqrt((epsxx(i)-epsyy(i))*(epsxx(i)-epsyy(i))
120 . + epsxy(i)*epsxy(i))
121 evv(i,1) = half*(trav(i)+rootv(i))
122 evv(i,2) = half*(trav(i)-rootv(i))
123 evv(i,3) = zero
124 ENDDO
125
126 DO i=1,nel
127 IF(abs(evv(i,2)-evv(i,1))<em10) THEN
128 eigv(i,1,1) = one
129 eigv(i,2,1) = one
130 eigv(i,3,1) = zero
131 eigv(i,1,2) = zero
132 eigv(i,2,2) = zero
133 eigv(i,3,2) = zero
134 ELSE
135 eigv(i,1,1) = (epsxx(i)-evv(i,2)) /rootv(i)
136 eigv(i,2,1) = (epsyy(i)-evv(i,2)) /rootv(i)
137 eigv(i,1,2) = (evv(i,1)-epsxx(i)) /rootv(i)
138 eigv(i,2,2) = (evv(i,1)-epsyy(i)) /rootv(i)
139 eigv(i,3,1) = (half*epsxy(i)) /rootv(i)
140 eigv(i,3,2) =-(half*epsxy(i)) /rootv(i)
141 ENDIF
142 ENDDO
143
144 IF (ismstr == 1 .OR. ismstr == 3 .OR. ismstr == 11) THEN
145 DO i=1,nel
146 ev(i,1)=evv(i,1)+ one
147 ev(i,2)=evv(i,2)+ one
148 ev(i,3)=uvar(i,3)
149 ENDDO
150 ELSEIF(ismstr == 10) THEN
151 DO i=1,nel
152 ev(i,1)=sqrt(evv(i,1)+ one)
153 ev(i,2)=sqrt(evv(i,2)+ one)
154 ev(i,3)=one/ev(i,1)/ev(i,2)
155 ENDDO
156 ELSE
157 DO i=1,nel
158 ev(i,1)=exp(evv(i,1))
159 ev(i,2)=exp(evv
160 ev(i,3)=uvar(i,3)
161 ENDDO
162 ENDIF
163
164
165
166 DO iter = 1,5
167
168 DO i=1,nel
169 rv(i) = ev(i,1)*ev(i,2)*ev(i,3)
170
171
172 IF(rv(i)> zero) THEN
173 rvt = exp((-third)*log(rv(i)))
174 ELSE
175 rvt = zero
176 ENDIF
177 evm(i,1) = ev(i,1)*rvt
178 evm(i,2) = ev(i,2)*rvt
179 evm(i,3) = ev(i,3)*rvt
180 ENDDO
181
182
183
184 DO j=1,5
185 DO i=1,nel
186 IF(evm(i,1)>zero) THEN
187 IF(al(j)/=zero) THEN
188 evma1(i,j) = mu(j) * exp(al(j)*log(evm(i,1)))
189 ELSE
190 evma1(i,j) = mu(j)
191 ENDIF
192 ELSE
193 evma1(i,j) = zero
194 ENDIF
195 IF(evm(i,2)>zero) THEN
196 IF(al(j)/=zero) THEN
197 evma2(i,j) = mu(j) * exp(al(j)*log(evm(i,2)))
198 ELSE
199 evma2(i,j) = mu(j)
200 ENDIF
201 ELSE
202 evma2(i,j) = zero
203 ENDIF
204 IF(evm(i,3)>zero) THEN
205 IF(al(j)/=zero) THEN
206 evma3(i,j) = mu(j) * exp(al(j)*log(evm(i,3)))
207 ELSE
208 evma3(i,j) = mu(j)
209 ENDIF
210 ELSE
211 evma3(i,j) = zero
212 ENDIF
213 ENDDO
214 ENDDO
215
216 DO i=1,nel
217 dwdl(1) = evma1(i,1)+evma1(i,2)+evma1(i,3)+evma1(i,4)+evma1
218 dwdl(2) = evma2(i,1)+evma2(i,2)+evma2(i,3)+evma2(i,4)+evma2(i,5)
219 dwdl(3) = evma3(i,1)+evma3(i,2)+evma3(i,3)+evma3(i,4)+evma3(i,5)
220 sumdwdl = (dwdl(1)+dwdl(2)+dwdl(3))* third
221 partp = rbulk*(rv(i)- one)
222
223
224 t(i,1) = (dwdl(1) - sumdwdl) / rv(i) + partp
225 t(i,2) = (dwdl(2) - sumdwdl) / rv(i) + partp
226 t(i,3) = (dwdl(3) - sumdwdl) / rv(i) + partp
227
228
229 kt3(i) = -third*(evma1(i,1)+evma1(i,2)+evma1(i,3)+evma1(i,4)+evma1(i,5))
230 . -third*(evma2(i,1)+evma2(i,2)+evma2(i,3)+evma2(i,4)+evma2(i,5))
231 . +two_third*(evma3(i,1)+evma3(i,2)+evma3(i,3)+evma3(i,4)+evma3(i,5))
232 kt3(i) =-ev(i,1)*ev(i,2)*kt3(i)/(rv(i)**2) + rbulk*ev(i,1)*ev(i,2)
233 kt3(i) = kt3(i)
234 . +(one_over_9*(al(1)*evma1(i,1)+al(2)*evma1(i,2)+al(3)*evma1(i,3)
235 . + al(4)*evma1(i,4)+al(5)*evma1(i,5)
236 . + al(1)*evma2(i,1)+al(2)*evma2(i,2) + al(3)*evma2(i,3)
237 . + al(4)*evma2(i,4)+al(5)*evma2(i,5)
238 . + four*(al(1)*evma3(i,1) + al(2)*evma3(i,2)
239 . + al(3)*evma3(i,3)
240 . + al(4)*evma3(i,4)+al(5)*evma3(i,5))))/ev(i,3)/rv(i)
241
242 ev(i,3) = ev(i,3) - t(i,3)/kt3(i)
243 rv(i) = ev(i,1)*ev(i,2)*ev(i,3)
244 ENDDO
245 ENDDO
246
247 sv(1:nel,1) = zero
248 sv(1:nel,2) = zero
249 sv(1:nel,3) = zero
250
251 DO i=1,nel
252 uvar(i,3) = ev(i,3)
253 ENDDO
254
255
256 DO i=1,nel
257 IF (off(i) /= zero .AND.
258 . (t(i,1) > abs(tenscut) .OR. t(i,2) > abs(tenscut))) THEN
259 t(i,1) = zero
260 t(i,2) = zero
261 t(i,3) = zero
262 off(i) = four_over_5
263 ENDIF
264 ENDDO
265
266
267
268
269 ! thkn(i) = thkn(i) + dezz(i)*thklyl(i)
270
271
272
273
274 IF (ismstr == 1 .OR. ismstr == 3 .OR. ismstr == 11) THEN
275 DO i=1,nel
276 epszz(i) =ev(i,3) - one
277 uvar(i,3) = ev(i,3)
278 ENDDO
279 ELSEIF (ismstr == 10) THEN
280 DO i=1,nel
281 epszz(i) =ev(i,3) - one
282 uvar(i,3) = ev(i,3)
283 ENDDO
284 ELSE
285 DO i=1,nel
286 epszz(i) =log(ev(i,3))
287 uvar(i,3) = ev(i,3)
288 ENDDO
289 ENDIF
290 DO i=1,nel
291 rv(i) = ev(i,1)*ev(i,2)*ev(i,3)
292 dezz(i) =-nu/(one-nu)*(depsxx(i)+depsyy(i))
293 signxx(i) =eigv(i,1,1)*t(i,1)+eigv(i,1,2)*t(i,2) + sv(i,1)/rv(i)
294 signyy(i) =eigv(i,2,1)*t(i,1)+eigv(i,2,2)*t(i,2) + sv(i,2)/rv(i)
295 signxy(i) =eigv(i,3,1)*t(i,1)+eigv(i,3,2)*t(i,2) + sv(i,3)/rv(i)
296
297 signyz(i) = sigoyz(i)+gs(i)*depsyz(i)
298 signzx(i) = sigozx(i)+gs(i)*depszx(i)
299 rho(i) = rho0(i)/rv(i)
300 thkn(i) = thkn(i) + dezz(i)*thklyl(i)*off(i)
301 viscmax(i)= zero
302
303 emax = gmax*(one + nu)
304 a11 = emax/(one - nu**2)
305 soundsp(i)= sqrt(a11/rho0(i))
306 ENDDO
307
308 RETURN
subroutine area(d1, x, x2, y, y2, eint, stif0)