39 2 RHO, QOLD, EPXE, EPSD,
40 3 VOL, STIFN, DT2T, NELTST,
41 4 ITYPTST, OFFG, GEO, PID,
42 5 AMU, VOL_AVG, MUMAX, MAT,
43 6 NGL, SSP, DVOL, AIRE,
44 7 VNEW, VD2, DELTAX, VIS,
47 A QNEW, SSP_EQ, SOLD1, SOLD2,
48 B SOLD3, SOLD4, SOLD5, SOLD6,
49 C SIGY, DEFP, DPLA, JLAG,
50 D EPSP, TSTAR, ETSE, MSSA,
51 E DMELS, TEMPEL, SIGBAK, AL_IMP,
52 F SIGNOR, CONDE, DTEL, G_DT,
53 G NEL, IPM, RHOREF, RHOSP,
54 H IPG, DMG, ITY, JTUR,
55 I JTHE, JSPH, ISMSTR, JSMS,
56 J NPG , DPDM , FHEAT, glob_therm,
63 USE prop_param_mod ,
only : n_var_igeo
67#include "implicit_f.inc"
83 INTEGER,
INTENT(IN) :: NPG
84 INTEGER,
INTENT(IN) :: ISMSTR
85 INTEGER,
INTENT(IN) :: JSMS
86 INTEGER,
INTENT(IN) :: ITY
87 INTEGER,
INTENT(IN) :: JTUR
88 INTEGER,
INTENT(IN) :: JTHE
89 INTEGER,
INTENT(IN) :: JSPH
90 INTEGER,
INTENT(IN) :: JLAG
91 INTEGER,
INTENT(IN) :: NUMGEO
93 INTEGER NELTST,ITYPTST,PID(NEL),G_DT,NEL,IPG
94 INTEGER MAT(NEL),NGL(NEL), IPM(NPROPMI,*)
96 my_real PM(NPROPM,*), OFF(NEL), SIG(NEL,6), EINT(NEL), RHO(NEL), QOLD(NEL),
97 . EPXE(NEL), EPSD(NEL), VOL(NEL), STIFN(NEL), OFFG(NEL),GEO(NPROPG,*),
98 . MUMAX(NEL),AMU(NEL),VOL_AVG(NEL)
99 my_real VNEW(NEL), VD2(NEL), DELTAX(NEL), SSP(NEL), AIRE(NEL), VIS(NEL),
100 . PSH(NEL), PNEW(NEL),QNEW(NEL) ,SSP_EQ(NEL), DVOL(NEL),
101 . D1(NEL), D2(NEL), D3(NEL), D4(NEL), D5(NEL), D6(NEL),
102 . SOLD1(MVSIZ), SOLD2(MVSIZ), SOLD3(MVSIZ),
103 . sold4(mvsiz), sold5(mvsiz), sold6(mvsiz),
104 . tstar(mvsiz), dpla(mvsiz), epsp(mvsiz), dmg(nel)
105 my_real,
DIMENSION(MVSIZ) ,
INTENT(IN) :: dpdm
106 my_real,
DIMENSION(NEL) ,
INTENT(INOUT) :: fheat
107 my_real sigy(nel) ,defp(nel),etse(nel), mssa(nel), dmels(nel), tempel(nel),
108 . sigbak(nel,6),al_imp(nel),signor(mvsiz,6),conde(nel),
dtel(nel),
109 . rhoref(nel) ,rhosp(nel)
110 type (glob_therm_) ,
intent(inout) :: glob_therm
111 type (matparam_struct_) ,
intent(in) :: mat_param
112 integer,
dimension(n_var_igeo,numgeo),
intent(in) :: igeo
116 INTEGER :: I, J, ICC,IFORM,ISRATE,VP,IDEV,NINDX
118 my_real RHO0, PLAP,POLD,PSHIFT,BULK,P, EPMX,CC,CN,EPDR,
119 . z3,z4,rhocp,rhocpi,t_ref,t_melt,asrate,
120 . e1, e2, e3, e4, e5,e6, einc, g0,g1,g2,g3,g3h,
122 . dsxx,dsyy,dszz,dsxy,dsyz,dszx,
alpha,hkin,
124 my_real epd(mvsiz),g(mvsiz), ak(mvsiz), qh(mvsiz),
125 . aj2(mvsiz), dav(mvsiz),ca(mvsiz),sigmx(mvsiz),
126 . sigexx(mvsiz),sigeyy(mvsiz),sigezz(mvsiz),
127 . sigexy(mvsiz),sigeyz(mvsiz),sigezx(mvsiz)
128 my_real,
DIMENSION(MVSIZ) :: bidmvsiz
134 iform = mat_param%iparam(1)
135 icc = mat_param%iparam(2)
136 vp = mat_param%iparam(3)
137 israte = mat_param%iparam(4)
140 bulk = mat_param%bulk
144 ca0 = mat_param%uparam(1)
145 cb = mat_param%uparam(2)
146 cn = mat_param%uparam(3)
147 epmx = mat_param%uparam(4)
148 sigm0 = mat_param%uparam(5)
149 cc = mat_param%uparam(6)
150 epdr = mat_param%uparam(7)
151 fisokin = mat_param%uparam(8)
152 asrate = mat_param%uparam(9)
153 z3 = mat_param%uparam(10)
154 asrate =
min(one, asrate*dt1)
156 t_ref = mat_param%therm%tref
157 t_melt = mat_param%therm%tmelt
158 rhocp = mat_param%therm%rhocp
159 IF (rhocp > zero)
THEN
164 pshift = pm(88,mat(1))
167 z4 = mat_param%uparam(11)
180 IF (fisokin > zero)
THEN
182 sig(i,1)=sig(i,1)-sigbak(i,1)
183 sig(i,2)=sig(i,2)-sigbak(i,2)
184 sig(i,3)=sig(i,3)-sigbak(i,3)
185 sig(i,4)=sig(i,4)-sigbak(i,4)
186 sig(i,5)=sig(i,5)-sigbak(i,5)
187 sig(i,6)=sig(i,6)-sigbak(i,6)
192 p =-third*(sig(i,1)+sig(i,2)+sig(i,3))
193 dav(i)=-third*(d1(i)+d2(i)+d3(i))
196 ssp(i)=sqrt((onep333*g(i)+bulk)/rho0)
198 sig(i,1)=sig(i,1)+p+g2*(d1(i)+dav(i))
199 sig(i,2)=sig(i,2)+p+g2*(d2(i)+dav(i))
200 sig(i,3)=sig(i,3)+p+g2*(d3(i)+dav(i))
201 sig(i,4)=sig(i,4)+g1*d4(i)
202 sig(i,5)=sig(i,5)+g1*d5(i)
203 sig(i,6)=sig(i,6)+g1*d6(i)
206 aj2(i)=half*(sig(i,1)**2+sig(i,2)**2+sig(i,3)**2)
207 . + sig(i,4)**2+sig(i,5)**2+sig(i,6)**2
208 aj2(i)=sqrt(three*aj2(i))
212 IF (impl_s>0 .OR. fisokin>zero)
THEN
227 . d1, d2, d3, d4, d5, d6)
229 epsp(1:nel) = epsd(1:nel)
235 epd(i)=
max(epsd(i),epdr)
236 epd(i)= log(epd(i)/epdr)
240 epd(i)=
max(epsd(i),em15)
241 epd(i)= log(epd(i)/epdr)
248 epd(i)=
max(zero,epd(i))
249 epd(i)= (one +cc * epd(i))*(one -tstar(i)**mt)
250 IF (icc==1) sigmx(i) = sigm0*epd(i)
252 ELSEIF (iform==1)
THEN
254 epd(i)= cc*exp((-z3+z4 * epd(i))*tempel(i))
255 IF (icc==1) sigmx(i) = sigm0 + epd(i)
260 ELSEIF (iform == 0)
THEN
262 epd(1:nel) = one - tstar(1:nel)**mt
263 IF (icc==1) sigmx(1:nel) = sigm0*epd(1:nel)
268 IF (fisokin == zero)
THEN
270 ak(1:nel)= ca(1:nel)+cb*epxe(1:nel)
271 qh(1:nel)= cb*epd(1:nel)
274 IF(epxe(i)>zero)
THEN
275 ak(i)=ca(i)+cb*epxe(i)**cn
277 qh(i) = (cb*cn*epxe(i)**(cn - one))*epd(i)
279 qh(i) = (cb*cn/epxe(i)**(one -cn))*epd(i)
289 IF(sigmx(i)<ak(i))
THEN
306 sigy(i) = ca(i)+cb*epxe(i)
307 ak(i)= ca(i)+beta*cb*epxe(i)
310 IF(epxe(i)>zero)
THEN
311 sigy(i)=ca(i)+cb*epxe(i)**cn
312 ak(i)=ca(i)+beta*cb*epxe(i)**cn
314 qh(i)= (cb*cn*epxe(i)**(cn - one))*epd(i)
316 qh(i)= (cb*cn/epxe(i)**(one -cn))*epd(i)
325 sigy(i)=sigy(i)*epd(i)
326 IF(sigmx(i)<ak(i))
THEN
330 sigy(i)=
min(sigy(i),sigmx(i))
340 scale=
min(one,ak(i)/
max(aj2(i),em15))
342 dpla(i)=(one-scale)*aj2(i)/
max(three*g(i)+qh(i),em15)
344 ak(i)=ak(i)+(one - fisokin)*dpla(i)*qh(i)
345 scale=
min(one,ak(i)/
max(aj2(i),em15))
346 sig(i,1)=scale*sig(i,1)
347 sig(i,2)=scale*sig(i,2)
348 sig(i,3)=scale*sig(i,3)
349 sig(i,4)=scale*sig(i,4)
350 sig(i,5)=scale*sig(i,5)
351 sig(i,6)=scale*sig(i,6)
352 epxe(i)=epxe(i)+dpla(i)
358 2 sigmx, epmx, dpla, ak,
359 3 qh, sigy, fisokin, nel)
363 IF (fisokin > zero)
THEN
365 dsxx = sigexx(i) - sig(i,1)
366 dsyy = sigeyy(i) - sig(i,2)
367 dszz = sigezz(i) - sig(i,3)
368 dsxy = sigexy(i) - sig(i,4)
369 dsyz = sigeyz(i) - sig(i,5)
370 dszx = sigezx(i) - sig(i,6)
372 hkin = two_third*fisokin*qh(i)
373 alpha = hkin/
max(two*g(i)+hkin,em15)
375 sigbak(i,1) = sigbak(i,1) +
alpha*dsxx
376 sigbak(i,2) = sigbak(i,2) +
alpha*dsyy
377 sigbak(i,3) = sigbak(i,3) +
alpha*dszz
378 sigbak(i,4) = sigbak(i,4) +
alpha*dsxy
379 sigbak(i,5) = sigbak(i,5) +
alpha*dsyz
380 sigbak(i,6) = sigbak(i,6) +
alpha*dszx
382 sig(i,1)=sig(i,1) + sigbak(i,1)
383 sig(i,2)=sig(i,2) + sigbak(i,2)
384 sig(i,3)=sig(i,3) + sigbak(i,3)
385 sig(i,4)=sig(i,4) + sigbak(i,4)
386 sig(i,5)=sig(i,5) + sigbak(i,5)
387 sig(i,6)=sig(i,6) + sigbak(i,6)
392 bidmvsiz(1:mvsiz) = zero
395 1 pm, off, rho, bidmvsiz,
396 2 bidmvsiz,ssp, bidmvsiz,stifn,
397 3 dt2t, neltst, ityptst, aire,
398 4 offg, geo, pid, vnew,
399 5 vd2, deltax, vis, d1,
401 7 mat, ngl, qnew, ssp_eq,
402 8 vol, mssa, dmels, igeo,
403 9 facq0, conde,
dtel, g_dt,
404 a ipm, rhoref, rhosp, nel,
405 b ity, ismstr, jtur, jthe,
406 c jsms, npg , glob_therm)
409 1 pm, off, rho, bidmvsiz,
410 2 bidmvsiz,bidmvsiz,stifn, dt2t,
411 3 neltst, ityptst, offg, geo,
412 4 pid, mumax, ssp, vnew,
413 5 vd2, deltax, vis, d1,
415 7 mat, ngl, qnew, ssp_eq,
416 8 g_dt,
dtel, nel, ity,
425 IF ((epxe(i) > epmx).AND.(dmg(i)==zero))
THEN
432 IF (mat_param%IEOS == 0)
THEN
434 pnew(i) = bulk*amu(i)
435 sig(i,1) =(sig(i,1) - pnew(i))*off(i)
436 sig(i,2) =(sig(i,2) - pnew(i))*off(i)
437 sig(i,3) =(sig(i,3) - pnew(i))*off(i)
438 sig(i,4) = sig(i,4) * off(i)
439 sig(i,5) = sig(i,5) * off(i)
440 sig(i,6) = sig(i,6) * off(i)
444 e1 = d1(i)*(sold1(i)+sig(i,1))
445 e2 = d2(i)*(sold2(i)+sig(i,2))
446 e3 = d3(i)*(sold3(i)+sig(i,3))
447 e4 = d4(i)*(sold4(i)+sig(i,4))
448 e5 = d5(i)*(sold5(i)+sig(i,5))
449 e6 = d6(i)*(sold6(i)+sig(i,6))
450 einc = vol_avg(i)*(e1+e2+e3+e4+e5+e6)*dta - half*dvol(i)*(qold(i)+qnew(i))
451 eint(i) = (eint(i)+einc*off(i)) /
max(em15,vol(i))
459 ssp(i) = sqrt((dpdm(i) + four*g(i)/three)/rho0)
461 pold = (sold1(i)+sold2(i)+sold3(i)) * third
462 sold1(i) = sold1(i) - pold
463 sold2(i) = sold2(i) - pold
464 sold3(i) = sold3(i) - pold
465 e1 = d1(i) * (sold1(i)+sig(i,1))
466 e2 = d2(i) * (sold2(i)+sig(i,2))
467 e3 = d3(i) * (sold3(i)+sig(i,3))
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
472 eint(i) = eint(i) + (einc+half*dvol(i)*(pold-pshift-qold(i)-qnew(i)))*off(i)
479 sigy(i) =
max(sigy(i),ak(i))
482 IF (dpla(i) > 0) etse(i)= half*qh(i)*off(i)/
max(g(i),em15)
489 IF (fisokin == zero)
THEN
495 qh(i)= (cb*cn*epxe(i)**(cn - one))*epd(i)
497 qh(i)= (cb*cn/epxe(i)**(one -cn))*epd(i)
504 IF (dpla(i)>zero)
THEN
508 vm =half*(sigexx(i)**2+sigeyy(i)**2+sigezz(i)**2)
509 1 +sigexy(i)**2+sigeyz(i)**2+sigezx(i)**2
510 vm_1 =one/sqrt(three*vm)
512 g3h =
max(g3+qh(i),em15)
513 scale =
max(zero,one-g3h*dpla(i)*vm_1)
516 norm_1=g3*vm_1*sqrt(scale/g3h)
518 signor(i,1)=sigexx(i)*norm_1
519 signor(i,2)=sigeyy(i)*norm_1
520 signor(i,3)=sigezz(i)*norm_1
521 signor(i,4)=sigexy(i)*norm_1
522 signor(i,5)=sigeyz(i)*norm_1
523 signor(i,6)=sigezx(i)*norm_1
526 al_imp(i)= one - g3*dpla(i)*vm_1
540 plap = dpla(i) /
max(em20,dt1)
541 epsd(i) = asrate * plap + (one - asrate) * epsd(i)
549 fheat(i) = fheat(i) + sigy(i)*dpla(i)*vol(i)
551 ELSEIF (rhocp > zero)
THEN
553 tempel(i) = tempel(i) + sigy(i)*dpla(i) * rhocpi
566 WRITE(iout, 1000) ngl(indx(j)),ipg
567 WRITE(istdo,1100) ngl(indx(j)),ipg,tt
568#include "lockoff.inc"
572 1000
FORMAT(1x,
'EXCEEDED EPS_MAX ON SOLID ELEMENT NUMBER ',i10,
573 .
': DEVIATORIC STRESS SET TO 0 ON INTEGRATION POINT ',i5 )
574 1100
FORMAT(1x,
'EXCEEDED EPS_MAX ON SOLID ELEMENT NUMBER ',i10,
575 .
': DEVIATORIC STRESS SET TO 0 ON INTEGRATION POINT ',i5 ,
576 .
' AT TIME :',g11.4)
subroutine m2law(mat_param, 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, jlag, 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, npg, dpdm, fheat, glob_therm, numgeo, igeo)