37 2 RHO, QOLD, EPXE, EPSD,
38 3 VOL, STIFN, DT2T, NELTST,
39 4 ITYPTST, OFFG, GEO, PID,
40 5 AMU, VOL_AVG, MUMAX, MAT,
41 6 NGL, SSP, DVOL, AIRE,
42 7 VNEW, VD2, DELTAX, VIS,
45 A QNEW, SSP_EQ, SOLD1, SOLD2,
46 B SOLD3, SOLD4, SOLD5, SOLD6,
48 D EPSP, TSTAR, ETSE, MSSA,
49 E DMELS, TEMPEL, SIGBAK, AL_IMP,
50 F SIGNOR, CONDE, DTEL, G_DT,
51 G NEL, IPM, RHOREF, RHOSP,
52 H IPG, DMG, ITY, JTUR,
53 I JTHE, JSPH, ISMSTR, JSMS,
54 J PLAP, NPG , IEOS , DPDM ,
55 K FHEAT, glob_therm, JLAG)
63#include "implicit_f.inc"
79 INTEGER,
INTENT(IN) :: NPG
80 INTEGER,
INTENT(IN) :: ISMSTR
81 INTEGER,
INTENT(IN) :: JSMS
82 INTEGER,
INTENT(IN) :: ITY
83 INTEGER,
INTENT(IN) :: JTUR
84 INTEGER,
INTENT(IN) :: JTHE
85 INTEGER,
INTENT(IN) :: JSPH
86 INTEGER,
INTENT(IN) :: IEOS
87 INTEGER,
INTENT(IN) :: JLAG
89 INTEGER NELTST,ITYPTST,PID(NEL),G_DT,NEL,IPG
90 INTEGER MAT(NEL),NGL(NEL), IPM(NPROPMI,*)
91 my_real,
DIMENSION(NEL) ,
INTENT(INOUT) :: PLAP
93 my_real PM(NPROPM,*), OFF(NEL), SIG(NEL,6), EINT(NEL), RHO(NEL), QOLD(NEL),
94 . EPXE(NEL), EPSD(NEL), VOL(NEL), STIFN(NEL), OFFG(NEL),GEO(NPROPG,*),
95 . MUMAX(NEL),AMU(NEL),VOL_AVG(NEL)
96 my_real VNEW(NEL), VD2(NEL), DELTAX(NEL), SSP(NEL), AIRE(NEL), VIS(NEL),
97 . PSH(NEL), PNEW(NEL),QNEW(NEL) ,SSP_EQ(NEL), DVOL(NEL),
98 . D1(NEL), D2(NEL), D3(NEL), D4(NEL), D5(NEL), D6(NEL),
99 . sold1(mvsiz), sold2(mvsiz), sold3(mvsiz),
100 . sold4(mvsiz), sold5(mvsiz), sold6(mvsiz),
101 . tstar(mvsiz), dpla(mvsiz), epsp(mvsiz), dmg(nel)
102 my_real,
DIMENSION(MVSIZ) ,
INTENT(IN) :: dpdm
103 my_real,
DIMENSION(NEL) ,
INTENT(INOUT) :: fheat
104 my_real sigy(nel) ,defp(nel),etse(nel), mssa(nel), dmels(nel), tempel(nel),
105 . sigbak(nel,6),al_imp(nel),signor(mvsiz,6),conde(nel),
dtel(nel),
106 . rhoref(nel) ,rhosp(nel)
107 type (glob_therm_) ,
intent(inout) :: glob_therm
111 INTEGER :: I, J, ICC,IRTY,ISRATE,VP,IDEV,MX,IBID,NINDX
113 my_real rho0, plap1,pold,pshift,bulk,p, epmx,cc,cn,epdr, cmx,
114 . z3,z4,rhocp,rhocpi,t_ref,t_melt,asrate,
115 . e1, e2, e3, e4, e5,e6, einc, g0,g1,g2,g3,g3h,
116 . scale, bid1, bid2, bid3, dta,mt,
118 . facq0,fisokin,beta,vm,vm_1,norm_1,ca0,cb,sigm0
119 my_real epd(mvsiz),g(mvsiz), ak(mvsiz),pc(mvsiz), qh(mvsiz),
120 . aj2(mvsiz), dav(mvsiz),ca(mvsiz),sigmx(mvsiz),
121 . sigexx(mvsiz),sigeyy(mvsiz),sigezz(mvsiz),
122 . sigexy(mvsiz),sigeyz(mvsiz),sigezx(mvsiz)
123 my_real,
DIMENSION(MVSIZ) :: bidmvsiz
134 icc = nint(pm(49,mx))
137 irty = nint(pm(50,mx))
141 asrate =
min(one,pm(9,mx)*dt1)
171 IF (fisokin > zero)
THEN
173 sig(i,1)=sig(i,1)-sigbak(i,1)
174 sig(i,2)=sig(i,2)-sigbak(i,2)
175 sig(i,3)=sig(i,3)-sigbak(i,3)
176 sig(i,4)=sig(i,4)-sigbak(i,4)
177 sig(i,5)=sig(i,5)-sigbak(i,5)
178 sig(i,6)=sig(i,6)-sigbak(i,6)
183 p =-third*(sig(i,1)+sig(i,2)+sig(i,3))
184 dav(i)=-third*(d1(i)+d2(i)+d3(i))
187 ssp(i)=sqrt((onep333*g(i)+bulk)/rho0)
189 sig(i,1)=sig(i,1)+p+g2*(d1(i)+dav(i))
190 sig(i,2)=sig(i,2)+p+g2*(d2(i)+dav(i))
192 sig(i,4)=sig(i,4)+g1*d4(i)
193 sig(i,5)=sig(i,5)+g1*d5(i)
194 sig(i,6)=sig(i,6)+g1*d6(i)
197 aj2(i)=half*(sig(i,1)**2+sig(i,2)**2+sig(i,3)**2)
198 . + sig(i,4)**2+sig(i,5)**2+sig(i,6)**2
199 aj2(i)=sqrt(three*aj2(i))
203 IF (impl_s>0 .OR. fisokin>zero)
THEN
220 epsp(1:nel) = epsd(1:nel)
226 epd(i)=
max(plap(i),epdr)
227 epd(i)= log(epd(i)/epdr)
231 epd(i)=
max(epsd(i),em15)
232 epd(i)= log(epd(i)/epdr)
239 epd(i)=
max(zero,epd(i))
240 epd(i)= (one +cc * epd(i))*(one -tstar(i)**mt)
241 IF(icc==1) sigmx(i)= sigm0*epd(i)
243 ELSEIF (irty==1)
THEN
245 epd(i)= cc*exp((-z3+z4 * epd(i))*tempel(i))
246 IF (icc==1) sigmx(i) = sigm0 + epd(i)
251 ELSEIF (irty == 0)
THEN
253 epd(1:nel) = one - tstar(1:nel)**mt
258 IF (fisokin == zero)
THEN
260 ak(1:nel)= ca(1:nel)+cb*epxe(1:nel)
261 qh(1:nel)= cb*epd(1:nel)
264 IF(epxe(i)>zero)
THEN
265 ak(i)=ca(i)+cb*epxe(i)**cn
267 qh(i) = (cb*cn*epxe(i)**(cn - one))*epd(i)
269 qh(i) = (cb*cn/epxe(i)**(one -cn))*epd(i)
279 IF(sigmx(i)<ak(i))
THEN
296 sigy(i) = ca(i)+cb*epxe(i)
297 ak(i)= ca(i)+beta*cb*epxe(i)
300 IF(epxe(i)>zero)
THEN
301 sigy(i)=ca(i)+cb*epxe(i)**cn
302 ak(i)=ca(i)+beta*cb*epxe(i)**cn
304 qh(i)= (cb*cn*epxe(i)**(cn - one))*epd(i)
306 qh(i)= (cb*cn/epxe(i)**(one -cn))*epd(i)
315 sigy(i)=sigy(i)*epd(i)
316 IF(sigmx(i)<ak(i))
THEN
320 sigy(i)=
min(sigy(i),sigmx(i))
330 scale=
min(one,ak(i)/
max(aj2(i),em15))
332 dpla(i)=(one-scale)*aj2(i)/
max(three*g(i)+qh(i),em15)
334 ak(i)=ak(i)+(one - fisokin)*dpla(i)*qh(i)
335 scale=
min(one,ak(i)/
max(aj2(i),em15))
336 sig(i,1)=scale*sig(i,1)
337 sig(i,2)=scale*sig(i,2)
338 sig(i,3)=scale*sig(i,3)
339 sig(i,4)=scale*sig(i,4)
340 sig(i,5)=scale*sig(i,5)
341 sig(i,6)=scale*sig(i,6)
342 epxe(i)=epxe(i)+dpla(i)
348 2 sigmx, epmx, dpla, ak,
349 3 qh, sigy, fisokin, nel)
353 IF (fisokin > zero)
THEN
355 dsxx = sigexx(i) - sig(i,1)
356 dsyy = sigeyy(i) - sig(i,2)
357 dszz = sigezz(i) - sig(i,3)
358 dsxy = sigexy(i) - sig(i,4)
359 dsyz = sigeyz(i) - sig(i,5)
360 dszx = sigezx(i) - sig(i,6)
362 hkin = two_third*fisokin*qh(i)
363 alpha = hkin/
max(two*g(i)+hkin,em15)
365 sigbak(i,1) = sigbak(i,1) +
alpha*dsxx
366 sigbak(i,2) = sigbak(i,2) +
alpha*dsyy
367 sigbak(i,3) = sigbak(i,3) +
alpha*dszz
368 sigbak(i,4) = sigbak(i,4) +
alpha*dsxy
369 sigbak(i,5) = sigbak(i,5) +
alpha*dsyz
370 sigbak(i,6) = sigbak(i,6) +
alpha*dszx
372 sig(i,1)=sig(i,1) + sigbak(i,1)
373 sig(i,2)=sig(i,2) + sigbak(i,2)
374 sig(i,3)=sig(i,3) + sigbak(i,3)
375 sig(i,4)=sig(i,4) + sigbak(i,4)
376 sig(i,5)=sig(i,5) + sigbak(i,5)
377 sig(i,6)=sig(i,6) + sigbak(i,6)
382 bidmvsiz(1:mvsiz) = zero
385 1 pm, off, rho, bidmvsiz,
386 2 bidmvsiz,ssp, bidmvsiz,stifn,
387 3 dt2t, neltst, ityptst, aire,
388 4 offg, geo, pid, vnew,
389 5 vd2, deltax, vis, d1,
391 7 mat, ngl, qnew, ssp_eq,
392 8 vol, mssa, dmels, ibid,
393 9 facq0, conde,
dtel, g_dt,
394 a ipm, rhoref, rhosp, nel,
395 b ity, ismstr, jtur, jthe,
396 c jsms, npg , glob_therm)
399 1 pm, off, rho, bidmvsiz,
400 2 bidmvsiz,bidmvsiz,stifn, dt2t,
401 3 neltst, ityptst, offg, geo,
402 4 pid, mumax, ssp, vnew,
403 5 vd2, deltax, vis, d1,
405 7 mat, ngl, qnew, ssp_eq,
406 8 g_dt,
dtel, nel, ity,
415 IF ((epxe(i) > epmx).AND.(dmg(i)==zero))
THEN
424 pnew(i) = bulk*amu(i)
425 sig(i,1) =(sig(i,1) - pnew(i))*off(i)
426 sig(i,2) =(sig(i,2) - pnew(i))*off(i)
427 sig(i,3) =(sig(i,3) - pnew(i))*off(i)
428 sig(i,4) = sig(i,4) * off(i)
429 sig(i,5) = sig(i,5) * off(i)
430 sig(i,6) = sig(i,6) * off(i)
434 e1 = d1(i)*(sold1(i)+sig(i,1))
435 e2 = d2(i)*(sold2(i)+sig(i,2))
436 e3 = d3(i)*(sold3(i)+sig(i,3))
437 e4 = d4(i)*(sold4(i)+sig(i,4))
438 e5 = d5(i)*(sold5(i)+sig(i,5))
439 e6 = d6(i)*(sold6(i)+sig(i,6))
440 einc = vol_avg(i)*(e1+e2+e3+e4+e5+e6)*dta - half*dvol(i)*(qold(i)+qnew(i))
441 eint(i) = (eint(i)+einc*off(i)) /
max(em15,vol(i))
449 ssp(i) = sqrt((dpdm(i) + four*g(i)/three)/rho0)
451 pold = (sold1(i)+sold2(i)+sold3
452 sold1(i) = sold1(i) - pold
453 sold2(i) = sold2(i) - pold
454 sold3(i) = sold3(i) - pold
455 e1 = d1(i) * (sold1(i)+sig(i,1))
456 e2 = d2(i) * (sold2(i)+sig(i,2))
457 e3 = d3(i) * (sold3(i)+sig(i,3))
458 e4 = d4(i) * (sold4(i)+sig(i,4))
459 e5 = d5(i) * (sold5(i)+sig(i,5))
460 e6 = d6(i) * (sold6(i)+sig(i,6))
461 einc = vol_avg(i) * (e1+e2+e3+e4+e5+e6) * dta
462 eint(i) = eint(i) + (einc+half*dvol(i)*(pold-pshift-qold(i)-qnew(i)))*off(i)
469 sigy(i) =
max(sigy(i),ak(i))
472 IF (dpla(i) > 0) etse(i)= half*qh(i)*off(i)/
max(g(i),em15)
479 IF (fisokin == zero)
THEN
485 qh(i)= (cb*cn*epxe(i)**(cn - one))*epd(i)
487 qh(i)= (cb*cn/epxe(i)**(one -cn))*epd(i)
494 IF (dpla(i)>zero)
THEN
498 vm =half*(sigexx(i)**2+sigeyy(i)**2+sigezz(i)**2)
499 1 +sigexy(i)**2+sigeyz(i)**2+sigezx(i)**2
500 vm_1 =one/sqrt(three*vm)
502 g3h =
max(g3+qh(i),em15)
503 scale =
max(zero,one-g3h*dpla(i)*vm_1)
506 norm_1=g3*vm_1*sqrt(scale/g3h)
508 signor(i,1)=sigexx(i)*norm_1
509 signor(i,2)=sigeyy(i)*norm_1
510 signor(i,3)=sigezz(i)*norm_1
511 signor(i,4)=sigexy(i)*norm_1
512 signor(i,5)=sigeyz(i)*norm_1
513 signor(i,6)=sigezx(i)*norm_1
516 al_imp(i)= one - g3*dpla(i)*vm_1
530 plap1 = dpla(i)/
max(em20,dt1)
531 plap(i) = asrate * plap1 + (one - asrate) * plap(i)
537 IF (jthe < 0 .AND. jlag /= 0)
THEN
539 fheat(i) = fheat(i) + sigy(i)*dpla(i)*vol(i)
541 ELSEIF(rhocp > zero)
THEN
543 tempel(i) = tempel(i) + sigy(i)*dpla(i) / rhocp
556 WRITE(iout, 1000) ngl(indx(j)),ipg
557 WRITE(istdo,1100) ngl(indx(j)),ipg,tt
558#include "lockoff.inc"
562 1000
FORMAT(1x,
'EXCEEDED EPS_MAX ON SOLID ELEMENT NUMBER ',i10,
563 .
': DEVIATORIC STRESS SET TO 0 ON INTEGRATION POINT ',i5 )
564 1100
FORMAT(1x,
'EXCEEDED EPS_MAX ON SOLID ELEMENT NUMBER ',i10,
565 .
': DEVIATORIC STRESS SET TO 0 ON INTEGRATION POINT ',i5 ,
566 .
' AT TIME :',g11.4)
subroutine m2law(pm, off, sig, eint, rho, qold, epxe, epsd, vol, stifn, dt2t, neltst, ityptst, offg, geo, pid, amu, vol_avg, 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, sigy, defp, dpla, epsp, tstar, etse, mssa, dmels, tempel, sigbak, al_imp, signor, conde, dtel, g_dt, nel, ipm, rhoref, rhosp, ipg, dmg, ity, jtur, jthe, jsph, ismstr, jsms, plap, npg, ieos, dpdm, fheat, glob_therm, jlag)