45 2 RHO, QOLD, VOL, STIFN,
46 3 DT2T, NELTST, ITYPTST, OFFG,
47 4 GEO, PID, AMU, MUMAX,
48 5 MAT, NGL, SSP, DVOL,
49 6 AIRE, VNEW, VD2, DELTAX,
52 9 PSH, QNEW, SSP_EQ, SOLD1,
53 A SOLD2, SOLD3, SOLD4, SOLD5,
54 B SOLD6, MSSA, DMELS, CONDE,
55 C MFXX, MFXY, MFXZ, MFYX,
56 D MFYY, MFYZ, MFZX, MFZY,
57 E MFZZ, OFFG0, VOL_AVG, EPSTH,
58 F DTEL, G_DT, NEL, ETOTSH,
59 G ISELECT, IPM, RHOREF, RHOSP,
60 H SIGL, ITY, ISMSTR, JTUR,
61 I JTHE, JCVT, JSPH, JSMS,
62 J NPG , glob_therm,NUMGEO,IGEO)
67 USE prop_param_mod ,
only : n_var_igeo
71#include "implicit_f.inc"
86 INTEGER,
INTENT(IN) :: ITY
88INTEGER,
INTENT(IN) :: JTUR
90INTEGER,
INTENT(IN) :: JCVT
91 INTEGER,
INTENT(IN) :: JSPH
92 INTEGER,
INTENT(IN) :: JSMS,NPG
93 INTEGER,
INTENT(IN) :: NUMGEO
95 INTEGER NELTST,ITYPTST,PID(*),G_DT,NEL,ISELECT
96 INTEGER MAT(*),NGL(*),(NPROPMI,*)
101 . PM(NPROPM,*), OFF(*), SIG(NEL,6), EINT(*), RHO(*), QOLD(*),
102 . VOL(*),STIFN(*), OFFG(*),GEO(NPROPG,*),MUMAX(*),SIGL(NEL,6)
104 . VNEW(*), VD2(*), DELTAX(*), SSP(*), AIRE(*), VIS(*),
105 . psh(*), pnew(*),qnew(*) ,ssp_eq(*), dvol(*),
106 . sold1(*), sold2(*), sold3(*), sold4(*), sold5(*), sold6(*),
107 . d1(*), d2(*), d3(*), d4(*), d5(*), d6(*),
108 . mssa(*), dmels(*),conde(*),
109 . mfxx(*) ,mfxy(*) ,mfxz(*) ,mfyx(*) ,mfyy(*) ,
110 . mfyz(*) ,mfzx(*) ,mfzy(*) ,mfzz(*) ,offg0(*) ,vol_avg(*),
111 . epsth(*),
dtel(*),etotsh(nel,6), rhoref(*), rhosp(*),amu(*)
112 type (glob_therm_) ,
intent(inout) :: glob_therm
113 integer,
dimension(n_var_igeo,numgeo),
intent(in) :: igeo
117 INTEGER I, MX, J,NLAR,INDEX(MVSIZ),NSM,IPRES,ISTAB
120 . g(mvsiz), g1(mvsiz), g2(mvsiz),
122 . es1(mvsiz), es2(mvsiz), es3(mvsiz),
123 . es4(mvsiz), es5(mvsiz), es6(mvsiz),
125 . e1, e2, e3, e4, e5, e6, einc,
126 . bid1, bid2, bid3, dta,facq0,
129 . epsth11(mvsiz),sigtmp(mvsiz,6),facg,ff,frho
136 g2_11 = two*pm(22,mx)
138 IF (nu_1>0.49)ipres=1
140 IF (ipres==1.OR.ismstr == 11) istab = 0
143 g(i) =pm(22,mx)*off(i)
148 IF (ismstr == 10)
THEN
151 es1(i)=etotsh(i,1)*off(i)
152 es2(i)=etotsh(i,2)*off(i)
153 es3(i)=etotsh(i,3)*off(i)
154 es4(i)=etotsh(i,4)*off(i)
155 es6(i)=etotsh(i,6)*off(i)
156 es5(i)=etotsh(i,5)*off(i)
160 es1(i)=(mfxx(i)*(two+mfxx(i))+mfxy(i)*mfxy(i)+mfxz(i)*mfxz(i))*off(i)
161 es2(i)=(mfyy(i)*(two+mfyy(i))+mfyx(i)*mfyx(i)+mfyz(i)*mfyz(i))*off(i)
162 es3(i)=(mfzz(i)*(two+mfzz(i))+mfzx(i)*mfzx(i)+mfzy(i)*mfzy(i))*off(i)
163 es4(i)=(mfxy(i)+mfyx(i)+mfxx(i)*mfyx(i)+mfxy(i)*mfyy(i)+mfxz(i)*mfyz(i))*off(i)
164 es6(i)=(mfxz(i)+mfzx(i)+mfxx(i)*mfzx(i)+mfxy(i)*mfzy(i)+mfxz(i)*mfzz(i))*off(i)
165 es5(i)=(mfzy(i)+mfyz(i)+mfzx(i)*mfyx(i)+mfzy(i)*mfyy(i)+mfzz(i)*mfyz(i))*off(i)
169 1 es5 ,es6 ,epsth, c1 ,g ,sigtmp)
170 IF(ipres==1.AND.iresp==1)
THEN
172 ff = -
min(sig(i,1),sig(i,2),sig(i,3))
173 facg =
max(one,ff/g2_11)
174 IF (facg>one) facg = onep2*facg
175 sigtmp(i,4)= facg*sigtmp(i,4)
176 sigtmp(i,5)= facg*sigtmp(i,5)
177 sigtmp(i,6)= facg*sigtmp(i,6)
181 sig(1:nel,1:6)=sigtmp(1:nel,1:6)
182 ELSEIF (ismstr == 12)
THEN
186 IF (offg0(i)<=one.AND.off(i)/=zero)
THEN
189 es1(nlar)=etotsh(i,1)
190 es2(nlar)=etotsh(i,2)
191 es3(nlar)=etotsh(i,3)
192 es4(nlar)=etotsh(i,4)
193 es6(nlar)=etotsh(i,6)
194 es5(nlar)=etotsh(i,5)
195 epsth11(nlar)=epsth(i)
200 IF (offg0(i)<=one.AND.off(i)/=zero)
THEN
203 es1(nlar)=mfxx(i)*(two+mfxx(i))+mfxy(i)*mfxy(i)+mfxz(i)*mfxz(i)
204 es2(nlar)=mfyy(i)*(two+mfyy(i))+mfyx(i)*mfyx(i)+mfyz(i)*mfyz(i)
205 es3(nlar)=mfzz(i)*(two+mfzz(i))+mfzx(i)*mfzx(i)+mfzy(i)*mfzy(i)
206 es4(nlar)=mfxy(i)+mfyx(i)+mfxx(i)*mfyx(i)+mfxy(i)*mfyy(i)+mfxz(i)*mfyz(i)
207 es6(nlar)=mfxz(i)+mfzx(i)+mfxx(i)*mfzx(i)+mfxy(i)*mfzy(i)+mfxz(i)*mfzz(i)
208 es5(nlar)=mfzy(i)+mfyz(i)+mfzx(i)*mfyx(i)+mfzy(i)*mfyy(i)+mfzz(i)*mfyz(i)
209 epsth11(nlar)=epsth(i)
215 1 es5 ,es6 ,epsth11, c1 ,g ,sigtmp)
216#include "vectorize.inc"
219 sig(i,1) =sigtmp(j,1)
220 sig(i,2) =sigtmp(j,2)
221 sig(i,3) =sigtmp(j,3)
222 sig(i,4) =sigtmp(j,4)
223 sig(i,5) =sigtmp(j,5)
224 sig(i,6) =sigtmp(j,6)
232 IF (offg0(i)>one)
THEN
238 es4(nsm)=mfxy(i)+mfyx(i)
239 es6(nsm)=mfxz(i)+mfzx(i)
240 es5(nsm)=mfzy(i)+mfyz(i)
241 epsth11(nsm)=epsth(i)
245 ekk=es1(i)+es2(i)+es3(i)-epsth11(i)
246 dav=-third*(es1(i)+es2(i)+es3(i))
247 sigtmp(i,1)=c1_1*ekk+g2_11*(es1(i)+dav)
248 sigtmp(i,2)=c1_1*ekk+g2_11*(es2(i)+dav)
249 sigtmp(i,3)=c1_1*ekk+g2_11*(es3(i)+dav)
250 sigtmp(i,4)=g(i)*es4(i)
251 sigtmp(i,5)=g(i)*es5(i)
252 sigtmp(i,6)=g(i)*es6(i)
255#include "vectorize.inc"
258 ff = -
min(sig(i,1),sig(i,2),sig(i,3))
259 facg =
max(one,ff/g2_11)
260 IF (facg>one) facg = onep2*facg
261 frho = rhoref(i)/rho0_1
262 IF (frho<onep01) facg = one
263 sig(i,1)=sigl(i,1) + sigtmp(j,1)
264 sig(i,2)=sigl(i,2) + sigtmp(j,2)
265 sig(i,3)=sigl(i,3) + sigtmp(j,3)
266 sig(i,3)=sigl(i,4) + facg*sigtmp(j,4)
267 sig(i,5)=sigl(i,5) + facg*sigtmp(j,5)
268 sig(i,6)=sigl(i,6) + facg*sigtmp(j,6)
272#include "vectorize.inc"
275 sig(i,1)=sigl(i,1) + sigtmp(j,1)
276 sig(i,2)=sigl(i,2) + sigtmp(j,2)
277 sig(i,3)=sigl(i,3) + sigtmp(j,3)
278 sig(i,4)=sigl(i,4) + sigtmp(j,4)
279 sig(i,5)=sigl(i,5) + sigtmp(j,5)
280 sig(i,6)=sigl(i,6) + sigtmp(j,6)
286 IF (offg0(i)>one)
THEN
295 epsth11(nsm)=epsth(i)
300 IF (offg0(i)>one)
THEN
303 es1(nsm)=mfxx(i)*(two+mfxx(i))+mfxy(i)*mfxy(i)+mfxz(i)*mfxz(i)
304 es2(nsm)=mfyy(i)*(two+mfyy(i))+mfyx(i)*mfyx(i)+mfyz(i)*mfyz(i)
305 es3(nsm)=mfzz(i)*(two+mfzz(i))+mfzx(i)*mfzx(i)+mfzy(i)*mfzy(i)
306 es4(nsm)=mfxy(i)+mfyx(i)+mfxx(i)*mfyx(i)+mfxy(i)*mfyy(i)+mfxz(i)*mfyz(i)
307 es6(nsm)=mfxz(i)+mfzx(i)+mfxx(i)*mfzx(i)+mfxy(i)*mfzy(i)+mfxz(i)*mfzz(i)
308 es5(nsm)=mfzy(i)+mfyz(i)+mfzx(i)*mfyx(i)+mfzy(i)*mfyy(i)+mfzz(i)*mfyz(i)
309 epsth11(nsm)=epsth(i)
314 1 es1 , es2 ,es3 ,es4 ,es5 ,
315 2 es6 ,epsth11, c1_1 ,g2_11 ,sigtmp )
316#include "vectorize.inc"
319 sig(i,1)=sigl(i,1) + sigtmp(j,1)
320 sig(i,2)=sigl(i,2) + sigtmp(j,2)
321 sig(i,3)=sigl(i,3) + sigtmp(j,3)
322 sig(i,4)=sigl(i,4) + sigtmp(j,4)
323 sig(i,5)=sigl(i,5) + sigtmp(j,5)
324 sig(i,6)=sigl(i,6) + sigtmp(j,6)
326 p =-third*(sigtmp(j,1)+sigtmp(j,2)+sigtmp(j,3))
327 sig(i,1)= sig(i,1)-pnew(i) + p
328 sig(i,2)= sig(i,2)-pnew(i) + p
329 sig(i,3)= sig(i,3)-pnew(i) + p
334 ELSEIF (ismstr==11)
THEN
339 es4(i)=mfxy(i)+mfyx(i)
340 es6(i)=mfxz(i)+mfzx(i)
341 es5(i)=mfzy(i)+mfyz(i)
346 ekk=es1(i)+es2(i)+es3(i)-epsth(i)
347 dav=-third*(es1(i)+es2(i)+es3(i))
348 sig(i,1)=c1(i)*ekk+g2(i)*(es1(i)+dav)
349 sig(i,2)=c1(i)*ekk+g2(i)*(es2(i)+dav)
350 sig(i,3)=c1(i)*ekk+g2(i)*(es3(i)+dav)
351 sig(i,4)=g1(i)*es4(i)
352 sig(i,5)=g1(i)*es5(i)
353 sig(i,6)=g1(i)*es6(i)
357 . d2,d3 ,d4 ,d5 ,d6 ,
365 . d2 ,d3 ,d4 ,d5 ,d6 ,
366 . rhoref ,g ,npg ,nel)
373 . d2 ,d3 ,d4 ,d5 ,d6 ,
374 . rhoref,g ,npg ,nel )
378 . d2 ,d3 ,d4 ,d5 ,d6 ,
379 . rhoref,g ,npg ,nel )
385 IF(abs(offg0(i)) <= one)
THEN
386 ssp(i)=sqrt((onep333*g(i)+c1(i))/rho(i))
389 ssp(i)=sqrt((onep333*g(i)+c1(i))/rhoref(i))
393 ELSEIF(idtmins/=2.OR.jsms==0)
THEN
400 ssp(i)=sqrt((onep333*g(i)+c1(i))/rho0(i))
403 ELSEIF(ismstr==11)
THEN
409 ssp(i)=sqrt((onep333*g(i)+c1(i))/rho0(i))
414 IF(abs(offg0(i)) <= one)
THEN
419 ssp(i)=sqrt((onep333*g(i)+c1(i))/rho(i))
426 ssp(i)=sqrt((onep333*g(i)+c1(i))/rho0(i))
434 1 pm, off, rho, bid1,
435 2 bid2, ssp, bid3, stifn,
436 3 dt2t, neltst, ityptst, aire,
437 4 offg, geo, pid, vnew,
438 5 vd2, deltax, vis, d1,
440 7 mat, ngl, qnew, ssp_eq,
441 8 vol, mssa, dmels, igeo,
442 9 facq0, conde,
dtel, g_dt,
443 a ipm, rhoref, rhosp, nel,
444 b ity, ismstr, jtur, jthe,
445 c jsms, npg , glob_therm)
448 1 pm, off, rho, bid1,
449 2 bid2, bid3, stifn, dt2t,
450 3 neltst, ityptst, offg, geo,
451 4 pid, mumax, ssp, vnew,
452 5 vd2, deltax, vis, d1,
454 7 mat, ngl, qnew, ssp_eq,
455 8 g_dt,
dtel, nel, ity,
462 sig(i,1)=sig(i,1)*off(i)
463 sig(i,2)=sig(i,2)*off(i)
464 sig(i,3)=sig(i,3)*off(i)
465 sig(i,4)=sig(i,4)*off(i)
466 sig(i,5)=sig(i,5)*off(i)
467 sig(i,6)=sig(i,6)*off(i)
468 p2 = -(sold1(i)+sig(i,1)+sold2(i)+sig(i,2)+sold3(i)+sig(i,3))* third
469 e1=d1(i)*(sold1(i)+sig(i,1)+p2)
470 e2=d2(i)*(sold2(i)+sig(i,2)+p2)
471 e3=d3(i)*(sold3(i)+sig(i,3)+p2)
472 e4=d4(i)*(sold4(i)+sig(i,4))
473 e5=d5(i)*(sold5(i)+sig(i,5))
474 e6=d6(i)*(sold6(i)+sig(i,6))
475 einc= vol_avg(i)*(e1+e2+e3+e4+e5+e6)*dta - half*dvol(i)*(qold(i)+qnew(i)+p2)
476 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, numgeo, igeo)