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,ITER,NORDER,NITER,II
77 my_real :: nu,rbulk,tenscut,gmax,sum,sumdwdl,partp,emax,a11
81 my_real ,
DIMENSION(NEL) :: rvt,gtmax,dlam3,kt3,rho,kir3
82 my_real ,
DIMENSION(NEL) :: invrv,dezz,rv,trav,rootv
83 my_real ,
DIMENSION(NEL,3) :: t,evv,ev,evm,cii,s_ldwdl
84 my_real ,
DIMENSION(NEL,3,2) :: eigv(nel,3,2)
85
86 mu(1) = uparam(1)
87 mu(2) = uparam(2)
88 mu(3) = uparam(3)
89 mu(4) = uparam(4)
90 mu(5) = uparam(5)
91 al(1) = uparam(6)
92 al(2) = uparam(7)
93 al(3) = uparam(8)
94 al(4) = uparam(9)
95 al(5) = uparam(10)
96 rbulk = uparam(11)
97 tenscut= uparam(12)
98 nu = uparam(14)
99 norder = nint(uparam(18))
100
101 gmax = zero
102 DO i=1,norder
103 gmax = gmax + mu(i)*al(i)
104 ENDDO
105
106
107 DO i=1,nel
108 trav(i) = epsxx(i)+epsyy(i)
109 rootv(i) = sqrt((epsxx(i)-epsyy(i))*(epsxx(i)-epsyy(i))
110 . + epsxy(i)*epsxy(i))
111 evv(i,1) = half*(trav(i)+rootv(i))
112 evv(i,2) = half*(trav(i)-rootv(i))
113 evv(i,3) = zero
114 ENDDO
115
116 IF (ismstr == 10) THEN
117 DO i=1,nel
118 IF (
min(evv(i,1),evv(i,2)) <= -one)
THEN
119 evv(i,1) = zero
120 evv(i,2) = zero
121 off(i) = four_over_5
122 END IF
123 ENDDO
124 END IF
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(i,2))
160 ev(i,3)=uvar(i,3)
161 ENDDO
162 ENDIF
163 niter = 4
164!--------------------------------------
165
166
167 dlam3(1:nel) =zero
168 DO iter = 1,niter
169 ev(1:nel,3) = uvar(1:nel,3)+dlam3(1:nel)
170 DO i=1,nel
171 rv(i) = ev(i,1)*ev(i,2)*ev(i,3)
172 rvt(i) = exp( (-third)* log(rv(i)) )
173 evm(i,1:3) = ev(i,1:3)*rvt(i)
174 ENDDO
175 kir3(1:nel) = zero
176 kt3(1:nel) = zero
177 DO ii = 1,norder
178 IF (mu(ii)*al(ii) /= zero) THEN
179 DO i=1,nel
180 IF (off(i)==zero.OR.off(i)==four_over_5) cycle
181 lam_al(1:3) = exp(al(ii)*log(evm(i,1:3)))
182 sumdwdl = third*(lam_al(1)+lam_al(2)+lam_al(3))
183 sum = mu(ii)*(lam_al(3)-sumdwdl)
184 kir3(i) = kir3(i) + sum
185 kt3(i) = kt3(i) + al(ii)*sum
186 ENDDO
187 ENDIF
188 ENDDO
189 DO i=1,nel
190 IF (off(i)==zero.OR.off(i)==four_over_5) cycle
191 partp = rbulk*(rv(i)- one)
192 t(i,3)= kir3(i) + partp*rv(i)
193 kt3(i)= two_third*kt3(i)/ev(i,3)+ rbulk*(two*rv(i)-one)*ev(i,1)*ev(i,2)
194 IF (kt3(i)>em20) dlam3(i) = dlam3(i) -t(i,3)/kt3(i)
195 ENDDO
196 END DO
197 ev(1:nel,3) = uvar(1:nel,3)+dlam3(1:nel)
198 dezz(1:nel) = log(one+dlam3(1:nel)/uvar(1:nel,3))
199 uvar(1:nel,3) = ev(1:nel,3)
200
201 DO i=1,nel
202 rv(i) = ev(i,1)*ev(i,2)*ev(i,3)
203 rvt(i) = exp((-third)*log(rv(i)))
204 evm(i,1:3) = ev(i,1:3)*rvt(i)
205 invrv(i) = one / rv(i)
206 END DO
207 s_ldwdl(1:nel,1:3) = zero
208 DO ii = 1,norder
209 IF (mu(ii)*al(ii) /= zero) THEN
210 DO i=1,nel
211 lam_al(1:3) = exp(al(ii)*log(evm(i,1:3)))
212 s_ldwdl(i,1:3) = s_ldwdl(i,1:3) + mu(ii)*lam_al(1:3)
213 ENDDO
214 ENDIF
215 ENDDO
216 DO i=1,nel
217 sumdwdl = (s_ldwdl(i,1) + s_ldwdl(i,2) + s_ldwdl(i,3)) * third
218 partp = rbulk*(rv(i)- one)
219 t(i,1) = (s_ldwdl(i,1) - sumdwdl) *invrv(i) + partp
220 t(i,2) = (s_ldwdl(i,2) - sumdwdl) *invrv(i) + partp
221 ENDDO
222
223
224 DO i=1,nel
225 IF (off(i) /= zero .AND.
226 . (t(i,1) > abs(tenscut) .OR. t(i,2) > abs(tenscut))) THEN
227 t(i,1) = zero
228 t(i,2) = zero
229 t(i,3) = zero
230 off(i) = four_over_5
231 ENDIF
232 ENDDO
233
234 cii(1:nel,1:3) = zero
235 DO ii = 1,norder
236 IF (mu(ii)*al(ii) /= zero) THEN
237 DO i=1,nel
238 lam_al(1:3) = exp(al(ii)*log(evm(i,1:3)))
239 amax = third*(lam_al(1)+lam_al(2)+lam_al(3))
240 cii(i,1:3) = cii(i,1:3) + mu(ii)*al(ii)*(lam_al(1:3)+amax)
241 ENDDO
242 ENDIF
243 ENDDO
244 DO i = 1,nel
245 gtmax(i) = half*
max(cii(i,1),cii(i,2),cii(i,3))
246 ENDDO
247
248 DO i=1,nel
249 signxx(i) = eigv(i,1,1)*t(i,1) + eigv(i,1,2)*t(i,2)
250 signyy(i) = eigv(i,2,1)*t(i,1) + eigv(i,2,2)*t(i,2)
251 signxy(i) = eigv(i,3,1)*t(i,1) + eigv(i,3,2)*t(i,2)
252
253 signyz(i) = sigoyz(i)+gs(i)*depsyz(i)
254 signzx(i) = sigozx(i)+gs(i)*depszx(i)
255 rho(i) = rho0(i)*invrv(i)
256 thkn(i) = thkn(i) + dezz(i)*thklyl(i)*off(i)
257 viscmax(i)= zero
258
259 emax =
max(gmax,gtmax(i))*(one + nu)
260 a11 = emax/(one - nu**2)
261 soundsp(i)= sqrt(a11/rho0(i))
262 ENDDO
263
264 RETURN
subroutine area(d1, x, x2, y, y2, eint, stif0)