37
38
39
40#include "implicit_f.inc"
41
42
43
44#include "mvsiz_p.inc"
45
46
47
48 INTEGER JFT,JLT,IPLA,NEL
49
51 . ezz(*),off(*),epseq(*),gs(*),dpla(*)
53 . yld(mvsiz),a1(mvsiz),nu(mvsiz),
ymax(mvsiz),
54 . cn(mvsiz),young(mvsiz),epchk(mvsiz),cc(mvsiz),epdr(mvsiz),
55 . epsl(mvsiz),hl(mvsiz),ym(mvsiz),yldl(mvsiz),alpe(mvsiz),
56 . ca(mvsiz),cb(mvsiz),
57 . sigoxx(nel),sigoyy(nel),sigoxy(nel),sigoyz(nel),sigozx(nel),
58 . signxx(nel),signyy(nel),signxy(nel),signyz(nel),signzx(nel),
59 . depsxx(mvsiz),depsyy(mvsiz),depsxy(mvsiz),depsyz(mvsiz),depszx(mvsiz)
60 INTEGER ICC(MVSIZ)
61
62
63
64 INTEGER I,J,N,NINDX,INDEX(MVSIZ),NMAX
65
67 . a(mvsiz),b(mvsiz),dpla_i(mvsiz),dpla_j(mvsiz),dr(mvsiz),
68 . h(mvsiz),nu1(mvsiz),nu2(mvsiz),p(mvsiz),q(mvsiz),
69 . svm(mvsiz),dk(mvsiz),ff(mvsiz),g(mvsiz),
70 . plaef(mvsiz),plaxx(mvsiz),playy(mvsiz),plaxy(mvsiz),
71 . epmax(mvsiz),depsl,alpei,gi,a1i,a2i,epsp,s11,s22,s12,
72 . s1s2,s122,vm2,pla_i,yld_i,f,df,p2,q2,nnu1,
73 . nnu2,nu3,nu4,nu5,nu6,r,umr,aa,bb,c,ee,sigz,pp,qq,s1,s2,s3,
74 . small
75 DATA nmax/3/
76
77 small = em7
78 DO i=jft,jlt
79 signxx(i)=sigoxx(i)
80 signyy(i)=sigoyy(i)
81 signxy(i)=sigoxy(i)
82 signyz(i)=sigoyz(i)
83 signzx(i)=sigozx(i)
84 ENDDO
85
86#include "vectorize.inc"
87 DO i=jft,jlt
88 yld(i) = (ca(i)+cb(i)*epseq(i)**cn(i))
90 depsl =
max(zero,epseq(i)-epsl(i))
91 yld(i) =
min(yld(i),yldl(i)+hl(i)*depsl)
92 yld(i) =
max(yld(i),em30)
93 alpei =
min(one,yld(i)/(yld(i)+ym(i)*depsl))
94 alpei =
max(em30,alpei)
95 young(i)= alpei*ym(i)
96 gi = half*young(i)/(one +nu(i))
97 g(i) = gi
98 a1i = young(i)/(one -nu(i)**2)
99 alpe(i) =
max(alpe(i),a1i/a1(i))
100 a2i = nu(i)*a1i
101 signxx(i)= signxx(i)+a1i*depsxx(i)+a2i*depsyy(i)
102 signyy(i)= signyy(i)+a2i*depsxx(i)+a1i*depsyy(i)
103 signxy(i)= signxy(i)+gi *depsxy(i)
104 signyz(i)= signyz(i)+alpei*gs(i)*depsyz(i)
105 signzx(i)= signzx(i)+alpei*gs(i)*depszx(i)
106 ENDDO
107
108
109
110#include "vectorize.inc"
111 DO i=jft,jlt
112 svm(i) = sqrt(signxx(i)*signxx(i)
113 . +signyy(i)*signyy(i)
114 . -signxx(i)*signyy(i)
115 . + three*signxy(i)*signxy(i))
116 ENDDO
117
118
119
120 DO i=jft,jlt
121 epsp =
max( abs(depsxx(i)), abs(depsyy(i)), half*abs(depsxy(i)))
122 epsp =
max(epsp,epdr(i))
123 yld(i)= yld(i)*(one +cc(i) * log(epsp/epdr(i)))
124 IF (icc(i) == 2) yld(i) =
min(yld(i),
ymax(i))
125 ENDDO
126
127
128
129 IF (ipla == 0) THEN
130
131#include "vectorize.inc"
132 DO i=jft,jlt
133 dk(i) =
min(one,yld(i)/
max(svm(i),em30))
134 signxx(i) = signxx(i)*dk(i)
135 signyy(i) = signyy(i)*dk(i)
136 signxy(i) = signxy(i)*dk(i)
137 dpla(i) = off(i) *
max(zero,(svm(i)-yld(i))/young(i))
138 s1 = half*(signxx(i)+signyy(i))
139 ezz(i) = dpla(i) * s1 /yld(i)
140 epseq(i) = epseq(i) + dpla(i)
141 epchk(i) =
max(epseq(i),epchk(i))
142 ENDDO
143
144 ELSEIF (ipla == 1) THEN
145
146
147
148#include "vectorize.inc"
149 DO i=jft,jlt
150 s1 = signxx(i) + signyy(i)
151 s2 = signxx(i) - signyy(i)
152 s3 = signxy(i)
153 a(i) = fourth*s1*s1
154 b(i) = three_over_4*s2*s2 + three*s3*s3
155 svm(i) = sqrt(a(i) + b(i))
156 ENDDO
157
158
159
160 nindx=0
161
162 DO i=jft,jlt
163 dpla(i) = zero
164 IF (svm(i) > yld(i) .AND. off(i) == one) THEN
165 nindx = nindx + 1
166 index(nindx) = i
167 ENDIF
168 ENDDO
169
170 IF (nindx == 0) GOTO 800
171
172
173
174#include "vectorize.inc"
175 DO j=1,nindx
176 i = index(j)
177 nu1(i) = one/(one-nu(i))
178 nu2(i) = one/(one+nu(i))
179 h(i) = cn(i)*cb(i)*exp((cn(i)-one)*log(epseq(i)+small))
180 IF (yld(i) >=
ymax(i)) h(i) = zero
181 dpla_j(i) = (svm(i)-yld(i))/(three*g(i)+h(i))
182 ENDDO
183
184 DO n=1,nmax
185#include "vectorize.inc"
186 DO j=1,nindx
187 i = index(j)
188 dpla_i(i) = dpla_j(i)
189 dpla(i) = dpla_j(i)
190 pla_i = epseq(i)+dpla_i(i)
191 yld_i =
min(
ymax(i),ca(i)+cb(i)*pla_i**cn(i))
192 dr(i) = half*young(i)*dpla_i(i)/yld_i
193 p(i) = one/(one+dr(i)*nu1(i))
194 q(i) = one/(one+three*dr(i)*nu2(i))
195 p2 = p(i)*p(i)
196 q2 = q(i)*q(i)
197 f = a(i)*p2+b(i)*q2-yld_i*yld_i
198 df = -(a(i)*nu1(i)*p2*p(i)+three*b(i)*nu2(i)*q2*q(i))
199 . *(young(i)-two*dr(i)*h(i))/yld_i
200 . -two*h(i)*yld_i
201 IF (dpla_i(i) > zero) THEN
202 dpla_j(i) =
max(zero,dpla_i(i)-f/df)
203 ELSE
204 dpla_j(i) = zero
205 ENDIF
206 ENDDO
207 ENDDO
208
209
210
211#include "vectorize.inc"
212 DO j=1,nindx
213 i = index(j)
214 dpla(i) = dpla_i(i)
215 epseq(i)= epseq(i) + dpla_i(i)
216 epchk(i)=
max(epseq(i),epchk(i))
217 s1 = (signxx(i)+signyy(i))*p(i)
218 s2 = (signxx(i)-signyy(i))*q(i)
219 signxx(i) = half*(s1+s2)
220 signyy(i) = half*(s1-s2)
221 signxy(i) = signxy(i)*q(i)
222 ezz(i) = dr(i)*s1/young(i)
223 ENDDO
224 ELSEIF (ipla == 2) THEN
225
226
227
228
229
230
231#include "vectorize.inc"
232 DO i=jft,jlt
233 pp = -(signxx(i)+signyy(i))*third
234 s11 = signxx(i)+pp
235 s22 = signyy(i)+pp
236
237 s12 = signxy(i)
238 p2 = pp*pp
239 s1s2 = s11*s22
240 s122 = s12*s12
241 nnu1 = nu(i) / (one - nu(i))
242 nnu2 = nnu1*nnu1
243 nu4 = one + nnu2 + nnu1
244 nu6 = half - nnu2 + half*nnu1
245 qq = (one - nnu1)*pp
246 aa = p2*nu4 + three*(s122 - s1s2)
247 bb = p2*nu6
248 c = qq*qq
249 vm2= aa+bb+bb+c
250 c = c - yld(i)*yld(i)
251 r =
min(one,(-bb+ sqrt(
max(zero,bb*bb-aa*c)))/
max(aa ,em20))
252 umr = one - r
253 qq = qq*umr
254 signxx(i) = signxx(i)*r - qq
255 signyy(i) = signyy(i)*r - qq
256 signxy(i) = s12*r
257 dpla(i) = off(i)*sqrt(vm2)*umr/(three*g(i))
258 s1 = half*(signxx(i)+signyy(i))
259 ezz(i) = dpla(i) * s1 / yld(i)
260 epseq(i) = epseq(i) + dpla(i)
261 epchk(i) =
max(epseq(i),epchk(i))
262 ENDDO
263 ENDIF
264
265 800 CONTINUE
266
267 DO i=jft,jlt
268 IF (alpe(i) < zep999) THEN
269 r = one - young(i)*dpla(i)/
max(em20,yld(i))
271 signyz(i) = signyz(i)*r
272 signzx(i) = signzx(i)*r
273 ENDIF
274 ENDDO
275
276 RETURN
subroutine ymax(idn, fac, npc, pld, stiffmin, stiffmax, stiffini, stiffavg)