34 1 NEL ,NUPARAM ,NUVAR ,NFUNC ,IFUNC ,NPF ,
35 2 TF ,TIME ,TIMESTEP ,UPARAM ,RHO0 ,RHO ,
36 3 SIGA ,SIGB ,SIGC ,UVAR ,PLA ,DEP ,
37 4 DEPSXX ,DEPSYY ,DEPSZZ ,DEPSXY ,DEPSYZ ,DEPSZX ,
38 5 SIGOXX ,SIGOYY ,SIGOZZ ,SIGOXY ,SIGOYZ ,SIGOZX ,
39 6 SIGNXX ,SIGNYY ,SIGNZZ ,SIGNXY ,SIGNYZ ,SIGNZX ,
40 7 SOUNDSP ,OFF ,YLD ,ETSE )
44#include "implicit_f.inc"
52 my_real ,
DIMENSION(6,NEL),
INTENT(INOUT) :: siga,sigb,sigc
53 INTEGER NEL, NUPARAM, NUVAR
55 . TIME,TIMESTEP,UPARAM(),
57 . DEPSXX(),DEPSYY(NEL),DEPSZZ(NEL),
58 . DEPSXY(NEL),DEPSYZ(NEL),DEPSZX(NEL),
59 . sigoxx(nel),sigoyy(nel),sigozz(nel),
60 . sigoxy(nel),sigoyz(nel),sigozx(nel)
65 . signxx(nel),signyy(nel),signzz(nel),
66 . signxy(nel),signyz(nel),signzx(nel),
67 . soundsp(nel),yld(nel) ,
68 . pla(nel),dep(nel),etse(nel)
73 . uvar(nel,nuvar), off(nel)
77 INTEGER NPF(*), NFUNC, IFUNC(NFUNC)
91 INTEGER I,J,,NITER,OPTE
92 my_real EINI,NU,BSAT,HYU,CYU,RSAT,
93 . YIELD,BYU,MYU,C1_KH,C2_KH,
94 . EINF,COE,FCTP,FCT,,CDEUX,CTROIS,SIGY,DMU,PRDEN,
95 . THA,THB,TOLR,SEFF,DG,SEFFP,CASTA,THETAQ,DTCA,DTBM,
96 . STHABXX,STHABYY,STHABZZ,STHABXY,STHABYZ,STHABZX,
97 . SAXX,SAYY,SAZZ,SAXY,SAYZ,SAZX,GAMA,HDGSIG,H,BQDB,EQBQ
98 my_real :: young(nel),
99 . alxx(nel),alyy(nel),alzz(nel),rbulk(nel),shear(nel),lamda(nel),
100 . alxy(nel),alyz(nel),alzx(nel),
101 . ayu(nel),sigm(nel),sigeq(nel),dydxe(nel),wave(nel),r(nel),
102 . strialxx(nel),strialyy(nel),strialzz(nel),
103 . strialxy(nel),strialyz(nel),strialzx(nel),
104 . g2(nel),asta(nel),scalee(nel),rnih(nel),drnih(nel),epbar(nel),
106 my_real :: db(6,nel),ep(6,nel),ast(6,nel),beta(6,nel),
134 cun = third/(one-two*nu)
135 cdeux = half/(one+nu)
136 ctrois = nu/(one+nu)/(one-two*nu)
138 IF(time == zero)
THEN
140 uvar(i,3) = bsat - yield
158 IF(pla(i) > zero)
THEN
159 scalee(i) = finter(ifunc(1),pla(i),npf,tf,dydxe(i))
160 young(i) = scalee(i)*eini
166 IF(pla(i) > zero)
THEN
167 young(i)=eini-(eini-einf)*(one-exp(-coe*pla(i)))
172 rbulk(i) = young(i)*cun
173 shear(i) = young(i)*cdeux
174 lamda(i) = young(i)*ctrois
177 wave(i)=g2(i)+lamda(i)
179 max_asta(i) = uvar(i,6)
183 alxx(i)=ast(1,i)+beta(1,i)
184 alyy(i)=ast(2,i)+beta(2,i)
185 alzz(i)=ast(3,i)+beta(3,i)
186 alxy(i)=ast(4,i)+beta(4,i)
187 alyz(i)=ast(5,i)+beta(5,i)
188 alzx(i)=ast(6,i)+beta(6,i)
189 asta(i)=asta(i)+three_half*(
190 . ast(1,i)*ast(1,i)+ast(2,i)*ast(2,i)+ast(3,i)*ast(3,i)
191 . +two*(ast(4,i)*ast(4,i)+ast(5,i)*ast(5,i)
192 . +ast(6,i)*ast(6,i)))
193 asta(i)=sqrt(
max(em20,asta(i)))
194 max_asta(i) =
max(max_asta(i),asta(i))
201 signxx(i)=sigoxx(i)+wave(i)*depsxx(i)
202 . +lamda(i)*depsyy(i)
203 . +lamda(i)*depszz(i)
204 signyy(i)=sigoyy(i)+wave(i)*depsyy(i)
205 . +lamda(i)*depsxx(i)
206 . +lamda(i)*depszz(i)
207 signzz(i)=sigozz(i)+wave(i)*depszz(i)
208 . +lamda(i)*depsxx(i)
209 . +lamda(i)*depsyy(i)
210 sigm(i)=-(signxx(i)+signyy(i)+signzz(i)) * third
212 strialxx(i)=signxx(i)+sigm(i)
213 strialyy(i)=signyy(i)+sigm(i)
214 strialzz(i)=signzz(i)+sigm(i)
215 strialxy(i)=sigoxy(i)+g2(i)*depsxy(i)
216 strialyz(i)=sigoyz(i)+g2(i)*depsyz(i)
217 strialzx(i)=sigozx(i)+g2(i)*depszx(i)
224 seff=sqrt(three_half*(
225 . (strialxx(i)-alxx(i))*(strialxx(i)-alxx(i))
226 . +(strialyy(i)-alyy(i))*(strialyy(i)-alyy(i))
227 . +(strialzz(i)-alzz(i))*(strialzz(i)-alzz(i))
228 . +two*((strialxy(i)-alxy(i))*(strialxy(i)-alxy(i))
229 . +(strialyz(i)-alyz(i))*(strialyz(i)-alyz(i))
230 . +(strialzx(i)-alzx(i))*(strialzx(i)-alzx(i)))))
233 IF (seff <= yield)
THEN
248 IF (max_asta(i) < bsat - yield)
THEN
253 prden=three*shear(i)+cyu*ayu(i)+myu*byu
254 casta=cyu*sqrt(ayu(i)/asta(i))
260 sthabxx=tha*ast(1,i)+thb*beta(1,i)
261 sthabyy=tha*ast(2,i)+thb*beta(2,i)
262 sthabzz=tha*ast(3,i)+thb*beta(3,i)
263 sthabxy=tha*ast(4,i)+thb*beta(4,i)
264 sthabyz=tha*ast(5,i)+thb*beta(5,i)
265 sthabzx=tha*ast(6,i)+thb*beta(6,i)
266 seff=sqrt(three_half*(
267 . (strialxx(i)-sthabxx)*(strialxx(i)-sthabxx)
268 . +(strialyy(i)-sthabyy)*(strialyy(i)-sthabyy)
269 . +(strialzz(i)-sthabzz)*(strialzz(i)-sthabzz)
270 . +two*((strialxy(i)-sthabxy)*(strialxy(i)-sthabxy)
271 . +(strialyz(i)-sthabyz)*(strialyz(i)-sthabyz)
272 . +(strialzx(i)-sthabzx)*(strialzx(i)-sthabzx))))
274 fct=seff-yield-prden*dep(i)
275 seffp=three*((strialxx(i)-sthabxx)
276 . *(casta*ast(1,i)+myu*beta(1,i))
277 . +(strialyy(i)-sthabyy)
278 . *(casta*ast(2,i)+myu*beta(2,i))
279 . +(strialzz(i)-sthabzz)
280 . *(casta*ast(3,i)+myu*beta(3,i))
281 . +two*((strialxy(i)-sthabxy)
282 . *(casta*ast(4,i)+myu*beta(4,i))
283 . +(strialyz(i)-sthabyz)
284 . *(casta*ast(5,i)+myu*beta(5,i))
285 . +(strialzx(i)-sthabzx)
286 . *(casta*ast(6,i)+myu*beta(6,i))))
288 fctp=half*seffp/seff-prden
289 dep(i)=
max(zero,dep(i)-fct/fctp)
297 sthabxx=tha*ast(1,i)+thb*beta(1,i)
298 sthabyy=tha*ast(2,i)+thb*beta(2,i)
299 sthabzz=tha*ast(3,i)+thb*beta(3,i)
300 sthabxy=tha*ast(4,i)+thb*beta(4,i)
301 sthabyz=tha*ast(5,i)+thb*beta(5,i)
302 sthabzx=tha*ast(6,i)+thb*beta(6,i)
314 saxx=yield*(strialxx(i)-sthabxx)/(yield+dep(i)*prden)
315 sayy=yield*(strialyy(i)-sthabyy)/(yield+dep(i)*prden)
316 sazz=yield*(strialzz(i)-sthabzz)/(yield+dep(i)*prden)
317 saxy=yield*(strialxy(i)-sthabxy)/(yield+dep(i)*prden)
318 sayz=yield*(strialyz(i)-sthabyz)/(yield+dep(i)*prden)
319 sazx=yield*(strialzx(i)-sthabzx)/(yield+dep(i)*prden)
321 ep(1,i)=three_half*dep(i)*saxx/yield
322 ep(2,i)=three_half*dep(i)*sayy/yield
323 ep(3,i)=three_half*dep(i)*sazz/yield
324 ep(4,i)=three_half*dep(i)*saxy/yield
325 ep(5,i)=three_half*dep(i)*sayz/yield
326 ep(6,i)=three_half*dep(i)*sazx/yield
331 dtca=two*third*cyu*ayu(i)
332 dtbm=two*third*byu*myu
335 ast(j,i)=tha*ast(j,i)+dtca*ep(j,i)
336 beta(j,i)=thb*beta(j,i)+dtbm*ep(j,i)
340 db(j,i)=beta(j,i)-sigb(j,i)
353 bq(j,i)=beta(j,i)-sigc(j,i)
355 eqbq=eqbq+three_half*bq(j,i)*bq(j,i)
356 bqdb=bqdb+bq(j,i)*db(j,i)
358 tolr=eqbq-rnih(i)*rnih(i)
359 IF (tolr >= zero .AND. bqdb > zero)
THEN
360 r(i)=thb*uvar(i,1)+myu*rsat*dep(i)
368 hdgsig=three*hyu*bqdb
369 IF (rnih(i) == zero)
THEN
370 dmu = eqbq/hdgsig-one
372 dmu =((three*hyu*bqdb+sqrt(hdgsig*hdgsig
373 . +four*rnih(i)*rnih(i)*eqbq))
374 . /(two*rnih(i)*rnih(i)))-one
378 sigc(j,i)=beta(j,i)-bq(j,i)/(one+dmu)
381 bq(j,i)=beta(j,i)-sigc(j,i)
384 bqdb=bqdb+bq(j,i)*db(j,i)
386 IF (dr(i) > zero)
THEN
387 IF ( rnih(i) == zero)
THEN
388 rnih(i)=three*bqdb*hyu
390 gama=bqdb*three_half/rnih(i)
391 rnih(i)= uvar(i,2)+ hyu*gama
397 ayu(i)=bsat+r(i)-yield
406 signxx(i)=sigoxx(i)+wave(i)*(depsxx(i)-ep(1,i))
407 . +lamda(i)*(depsyy(i)-ep(2,i))
408 . +lamda(i)*(depszz(i)-ep(3,i))
409 signyy(i)=sigoyy(i)+wave(i)*(depsyy(i)-ep(2,i))
410 . +lamda(i)*(depsxx(i)-ep(1,i))
411 . +lamda(i)*(depszz(i)-ep(3,i))
412 signzz(i)=sigozz(i)+wave(i)*(depszz(i)-ep(3,i))
413 . +lamda(i)*(depsxx(i)-ep(1,i))
414 . +lamda(i)*(depsyy(i)-ep(2,i))
415 signxy(i)=sigoxy(i)+g2(i)*(depsxy(i)-ep(4,i))
416 signyz(i)=sigoyz(i)+g2(i)*(depsyz(i)-ep(5,i))
417 signzx(i)=sigozx(i)+g2(i)*(depszx(i)-ep(6,i))
420 IF( dep(i) > zero)
THEN
421 sigm(i)=-(signxx(i)+signyy(i)+signzz(i))*third
422 sigy=sqrt(three_half*(
423 . (signxx(i)+sigm(i))*(signxx(i)+sigm(i))
424 . +(signyy(i)+sigm(i))*(signyy(i)+sigm(i))
426 . +two*(signxy(i)*signxy(i)+signyz(i)*signyz(i)
427 . +signzx(i)*signzx(i))))
428 h = (sigy-uvar(i,4))/dep(i)
432 uvar(i,6) = max_asta(i)
434 pla(i) = pla(i)+dep(i)
439 soundsp(i) = sqrt((rbulk(i)+four_over_3*shear(i))/rho0(i))