44 2 RHO, QOLD, VOL, STIFN,
45 3 DT2T, NELTST, ITYPTST, OFFG,
46 4 GEO, PID, AMU, MUMAX,
47 5 MAT, NGL, SSP, DVOL,
48 6 AIRE, VNEW, VD2, DELTAX,
51 9 PSH, QNEW, SSP_EQ, SOLD1,
52 A SOLD2, SOLD3, SOLD4, SOLD5,
53 B SOLD6, MSSA, DMELS, CONDE,
54 C MFXX, MFXY, MFXZ, MFYX,
55 D MFYY, MFYZ, MFZX, MFZY,
56 E MFZZ, OFFG0, VOL_AVG, EPSTH,
57 F DTEL, G_DT, NEL, ETOTSH,
58 G ISELECT, IPM, RHOREF, RHOSP,
59 H SIGL, ITY, ISMSTR, JTUR,
60 I JTHE, JCVT, JSPH, JSMS,
69#include "implicit_f.inc"
84 INTEGER,
INTENT(IN) :: ITY
85 INTEGER,
INTENT(IN) :: ISMSTR
86 INTEGER,
INTENT(IN) :: JTUR
87 INTEGER,
INTENT(IN) :: JTHE
88 INTEGER,
INTENT(IN) :: JCVT
89 INTEGER,
INTENT(IN) :: JSPH
90 INTEGER,
INTENT(IN) :: JSMS,NPG
92 INTEGER NELTST,ITYPTST,PID(*),G_DT,NEL,ISELECT
93 INTEGER MAT(*),NGL(*),IPM(NPROPMI,*)
98 . PM(NPROPM,*), OFF(*), SIG(NEL,6), EINT(*), RHO(*), QOLD(*),
99 . VOL(*),STIFN(*), OFFG(*),(NPROPG,*),MUMAX(*),SIGL(NEL,6)
101 . VNEW(*), VD2(*), DELTAX(*), SSP(*), AIRE(*), VIS(*),
102 . PSH(*), (*),QNEW(*) ,SSP_EQ(*), DVOL(*),
103 . sold1(*), sold2(*), sold3(*), sold4(*), sold5(*), sold6(*),
104 . d1(*), d2(*), d3(*), d4(*), d5(*), d6(*),
105 . mssa(*), dmels(*),conde(*),
106 . mfxx(*) ,mfxy(*) ,mfxz(*) ,mfyx(*) ,mfyy(*) ,
107 . mfyz(*) ,mfzx(*) ,mfzy(*) ,mfzz(*) ,offg0(*) ,vol_avg(*),
108 . epsth(*),
dtel(*),etotsh(nel,6), rhoref(*), rhosp(*),amu(*)
109 type (glob_therm_) ,
intent(inout) :: glob_therm
113 INTEGER I, MX, J,INDEX(MVSIZ),NSM,IPRES,ISTAB
118 . es1(mvsiz), es2(mvsiz
119 . es4(mvsiz), es5(mvsiz), es6(mvsiz),
120 . df,dav,ekk, dpdm, p,
121 . e1, e2, e3, e4, e5, e6, einc,
122 . bid1, bid2, bid3, dta, ym, dpdmp,facq0,
125 . epsth11(mvsiz),sigtmp(mvsiz,6),facg,ff,frho
132 g2_11 = two*pm(22,mx)
134 IF (nu_1>0.49)ipres=1
136 IF (ipres==1.OR.ismstr == 11) istab = 0
139 g(i) =pm(22,mx)*off(i)
144 IF (ismstr == 10)
THEN
147 es1(i)=etotsh(i,1)*off(i)
148 es2(i)=etotsh(i,2)*off(i)
149 es3(i)=etotsh(i,3)*off(i)
150 es4(i)=etotsh(i,4)*off(i)
151 es6(i)=etotsh(i,6)*off(i)
152 es5(i)=etotsh(i,5)*off(i)
156 es1(i)=(mfxx(i)*(two+mfxx(i))+mfxy(i)*mfxy(i)+mfxz(i)*mfxz(i))*off(i)
157 es2(i)=(mfyy(i)*(two+mfyy(i))+mfyx(i)*mfyx(i)+mfyz(i)*mfyz(i))*off(i)
158 es3(i)=(mfzz(i)*(two+mfzz(i))+mfzx(i)*mfzx(i)+mfzy(i)*mfzy(i))*off(i)
159 es4(i)=(mfxy(i)+mfyx(i)+mfxx(i)*mfyx(i)+mfxy(i)*mfyy(i)+mfxz(i)*mfyz(i))*off(i)
160 es6(i)=(mfxz(i)+mfzx(i)+mfxx(i)*mfzx(i)+mfxy(i)*mfzy(i)+mfxz(i)*mfzz(i))*off(i)
161 es5(i)=(mfzy(i)+mfyz(i)+mfzx(i)*mfyx(i)+mfzy(i)*mfyy(i)+mfzz(i)*mfyz(i))*off(i)
165 1 es5 ,es6 ,epsth, c1 ,g ,sigtmp)
166 IF(ipres==1.AND.iresp==1)
THEN
168 ff = -
min(sig(i,1),sig(i,2),sig(i,3))
169 facg =
max(one,ff/g2_11)
170 IF (facg>one) facg = onep2*facg
171 sigtmp(i,4)= facg*sigtmp(i,4)
172 sigtmp(i,5)= facg*sigtmp(i,5)
173 sigtmp(i,6)= facg*sigtmp(i,6)
177 sig(1:nel,1:6)=sigtmp(1:nel,1:6)
178 ELSEIF (ismstr == 12)
THEN
182 IF (offg0(i)<=one.AND.off(i)/=zero)
THEN
185 es1(nlar)=etotsh(i,1)
186 es2(nlar)=etotsh(i,2)
187 es3(nlar)=etotsh(i,3)
188 es4(nlar)=etotsh(i,4)
189 es6(nlar)=etotsh(i,6)
190 es5(nlar)=etotsh(i,5)
191 epsth11(nlar)=epsth(i)
196 IF (offg0(i)<=one.AND.off(i)/=zero)
THEN
199 es1(nlar)=mfxx(i)*(two+mfxx(i))+mfxy(i)*mfxy(i)+mfxz(i)*mfxz(i)
200 es2(nlar)=mfyy(i)*(two+mfyy(i))+mfyx(i)*mfyx(i)+mfyz(i)*mfyz(i)
201 es3(nlar)=mfzz(i)*(two+mfzz(i))+mfzx(i)*mfzx(i)+mfzy(i)*mfzy(i)
202 es4(nlar)=mfxy(i)+mfyx(i)+mfxx(i)*mfyx(i)+mfxy(i)*mfyy(i)+mfxz(i)*mfyz(i)
203 es6(nlar)=mfxz(i)+mfzx(i)+mfxx(i)*mfzx(i)+mfxy(i)*mfzy(i)+mfxz(i)*mfzz(i)
204 es5(nlar)=mfzy(i)+mfyz(i)+mfzx(i)*mfyx(i)+mfzy(i)*mfyy(i)+mfzz(i)*mfyz(i)
205 epsth11(nlar)=epsth(i)
211 1 es5 ,es6 ,epsth11, c1 ,g ,sigtmp)
212#include "vectorize.inc"
215 sig(i,1) =sigtmp(j,1)
216 sig(i,2) =sigtmp(j,2)
217 sig(i,3) =sigtmp(j,3)
218 sig(i,4) =sigtmp(j,4)
219 sig(i,5) =sigtmp(j,5)
220 sig(i,6) =sigtmp(j,6)
228 IF (offg0(i)>one)
THEN
234 es4(nsm)=mfxy(i)+mfyx(i)
235 es6(nsm)=mfxz(i)+mfzx(i)
236 es5(nsm)=mfzy(i)+mfyz(i)
237 epsth11(nsm)=epsth(i)
241 ekk=es1(i)+es2(i)+es3(i)-epsth11(i)
242 dav=-third*(es1(i)+es2(i)+es3(i))
243 sigtmp(i,1)=c1_1*ekk+g2_11*(es1(i)+dav)
244 sigtmp(i,2)=c1_1*ekk+g2_11*(es2(i)+dav)
245 sigtmp(i,3)=c1_1*ekk+g2_11*(es3(i)+dav)
246 sigtmp(i,4)=g(i)*es4(i)
247 sigtmp(i,5)=g(i)*es5(i)
248 sigtmp(i,6)=g(i)*es6(i)
251#include "vectorize.inc"
254 ff = -
min(sig(i,1),sig(i,2),sig(i,3))
255 facg =
max(one,ff/g2_11)
256 IF (facg>one) facg = onep2*facg
257 frho = rhoref(i)/rho0_1
258 IF (frho<onep01) facg = one
259 sig(i,1)=sigl(i,1) + sigtmp(j,1)
260 sig(i,2)=sigl(i,2) + sigtmp(j,2)
261 sig(i,3)=sigl(i,3) + sigtmp(j,3)
262 sig(i,3)=sigl(i,4) + facg*sigtmp(j,4)
263 sig(i,5)=sigl(i,5) + facg*sigtmp(j,5)
264 sig(i,6)=sigl(i,6) + facg*sigtmp(j,6)
268#include "vectorize.inc"
271 sig(i,1)=sigl(i,1) + sigtmp(j,1)
272 sig(i,2)=sigl(i,2) + sigtmp(j,2)
273 sig(i,3)=sigl(i,3) + sigtmp(j,3)
274 sig(i,4)=sigl(i,4) + sigtmp(j,4)
275 sig(i,5)=sigl(i,5) + sigtmp(j,5)
276 sig(i,6)=sigl(i,6) + sigtmp(j,6)
282 IF (offg0(i)>one)
THEN
291 epsth11(nsm)=epsth(i)
296 IF (offg0(i)>one)
THEN
299 es1(nsm)=mfxx(i)*(two+mfxx(i))+mfxy(i)*mfxy(i)+mfxz(i)*mfxz(i)
300 es2(nsm)=mfyy(i)*(two+mfyy(i))+mfyx(i)*mfyx(i)+mfyz(i)*mfyz(i)
301 es3(nsm)=mfzz(i)*(two+mfzz(i))+mfzx(i)*mfzx(i)+mfzy(i)*mfzy(i)
302 es4(nsm)=mfxy(i)+mfyx(i)+mfxx(i)*mfyx(i)+mfxy(i)*mfyy(i)+mfxz(i)*mfyz(i)
303 es6(nsm)=mfxz(i)+mfzx(i)+mfxx(i)*mfzx(i)+mfxy(i)*mfzy(i)+mfxz(i)*mfzz(i)
304 es5(nsm)=mfzy(i)+mfyz(i)+mfzx(i)*mfyx(i)+mfzy(i)*mfyy(i)+mfzz(i)*mfyz(i)
305 epsth11(nsm)=epsth(i)
310 1 es1 , es2 ,es3 ,es4 ,es5 ,
311 2 es6 ,epsth11, c1_1 ,g2_11 ,sigtmp )
312#include "vectorize.inc"
315 sig(i,1)=sigl(i,1) + sigtmp(j,1)
316 sig(i,2)=sigl(i,2) + sigtmp(j,2)
317 sig(i,3)=sigl(i,3) + sigtmp(j,3)
318 sig(i,4)=sigl(i,4) + sigtmp(j,4)
319 sig(i,5)=sigl(i,5) + sigtmp(j,5)
320 sig(i,6)=sigl(i,6) + sigtmp(j,6)
322 p =-third*(sigtmp(j,1)+sigtmp(j,2)+sigtmp(j,3))
323 sig(i,1)= sig(i,1)-pnew(i) + p
324 sig(i,2)= sig(i,2)-pnew(i) + p
325 sig(i,3)= sig(i,3)-pnew(i) + p
330 ELSEIF (ismstr==11)
THEN
335 es4(i)=mfxy(i)+mfyx(i)
336 es6(i)=mfxz(i)+mfzx(i)
337 es5(i)=mfzy(i)+mfyz(i)
342 ekk=es1(i)+es2(i)+es3(i)-epsth(i)
343 dav=-third*(es1(i)+es2(i)+es3(i))
344 sig(i,1)=c1(i)*ekk+g2(i)*(es1(i)+dav)
345 sig(i,2)=c1(i)*ekk+g2(i)*(es2(i)+dav)
346 sig(i,3)=c1(i)*ekk+g2(i)*(es3(i)+dav)
347 sig(i,4)=g1(i)*es4(i)
348 sig(i,5)=g1(i)*es5(i)
349 sig(i,6)=g1(i)*es6(i)
353 . d2,d3 ,d4 ,d5 ,d6 ,
361 . d2 ,d3 ,d4 ,d5 ,d6 ,
362 . rhoref ,g ,npg ,nel)
369 . d2 ,d3 ,d4 ,d5 ,d6 ,
370 . rhoref,g ,npg ,nel )
374 . d2 ,d3 ,d4 ,d5 ,d6 ,
375 . rhoref,g ,npg ,nel )
382 ssp(i)=sqrt((onep333*g(i)+c1(i))/rho(i))
385 ssp(i)=sqrt((onep333*g(i)+c1(i))/rhoref(i))
389 ELSEIF(idtmins/=2.OR.jsms==0)
THEN
396 ssp(i)=sqrt((onep333*g(i)+c1(i))/rho0(i))
399 ELSEIF(ismstr==11)
THEN
405 ssp(i)=sqrt((onep333*g(i)+c1(i))/rho0(i))
410 IF(abs(offg0(i)) <= one)
THEN
415 ssp(i)=sqrt((onep333*g(i)+c1(i))/rho(i))
422 ssp(i)=sqrt((onep333*g(i)+c1(i))/rho0(i))
430 1 pm, off, rho, bid1,
431 2 bid2, ssp, bid3, stifn,
432 3 dt2t, neltst, ityptst, aire,
433 4 offg, geo, pid, vnew,
434 5 vd2, deltax, vis, d1,
436 7 mat, ngl, qnew, ssp_eq,
437 8 vol, mssa, dmels, ibid,
438 9 facq0, conde,
dtel, g_dt,
439 a ipm, rhoref, rhosp, nel,
440 b ity, ismstr, jtur, jthe,
441 c jsms, npg , glob_therm)
444 1 pm, off, rho, bid1,
445 2 bid2, bid3, stifn, dt2t,
446 3 neltst, ityptst, offg, geo,
447 4 pid, mumax, ssp, vnew,
448 5 vd2, deltax, vis, d1,
450 7 mat, ngl, qnew, ssp_eq,
451 8 g_dt,
dtel, nel, ity,
458 sig(i,1)=sig(i,1)*off(i)
459 sig(i,2)=sig(i,2)*off(i)
460 sig(i,3)=sig(i,3)*off(i)
461 sig(i,4)=sig(i,4)*off(i)
462 sig(i,5)=sig(i,5)*off(i)
463 sig(i,6)=sig(i,6)*off(i)
464 p2 = -(sold1(i)+sig(i,1)+sold2(i)+sig(i,2)+sold3(i)+sig(i,3))* third
465 e1=d1(i)*(sold1(i)+sig(i,1)+p2)
466 e2=d2(i)*(sold2(i)+sig(i,2)+p2)
467 e3=d3(i)*(sold3(i)+sig(i,3)+p2)
468 e4=d4(i)*(sold4(i)+sig(i,4))
469 e5=d5(i)*(sold5(i)+sig(i,5))
470 e6=d6(i)*(sold6(i)+sig(i,6))
471 einc= vol_avg(i)*(e1+e2+e3+e4+e5+e6)*dta - half*dvol(i)*(qold(i)+qnew(i)+p2)
472 eint(i)=(eint(i)+einc*off(i)) /
max(em15,vol(i))
subroutine m1lawtot(pm, off, sig, eint, rho, qold, vol, stifn, dt2t, neltst, ityptst, offg, geo, pid, amu, mumax, mat, ngl, ssp, dvol, aire, vnew, vd2, deltax, vis, d1, d2, d3, d4, d5, d6, pnew, psh, qnew, ssp_eq, sold1, sold2, sold3, sold4, sold5, sold6, mssa, dmels, conde, mfxx, mfxy, mfxz, mfyx, mfyy, mfyz, mfzx, mfzy, mfzz, offg0, vol_avg, epsth, dtel, g_dt, nel, etotsh, iselect, ipm, rhoref, rhosp, sigl, ity, ismstr, jtur, jthe, jcvt, jsph, jsms, npg, glob_therm)