36 SUBROUTINE m11law(PM ,OFF ,SIG ,EINT ,RHO ,
38 3 ALE_CONNECT,IX ,IPARG ,ELBUF_TAB,V ,
39 4 X ,EIS ,STIF ,W ,VD2 ,
40 5 VDX ,VDY ,VDZ ,VIS ,MAT ,
41 6 VOL ,QVIS,RHO0 ,BUFVOIS ,IPM ,
42 7 NPF ,TF ,SSP_EQ,MOM ,NEL )
52#include "implicit_f.inc"
62#include "vect01_c.inc"
67 INTEGER IX(*), IPARG(*),MAT(*),IPM(NPROPMI,*),NEL
69 . PM(NPROPM,*), OFF(*), SIG(NEL,6), EINT(*), RHO(*), T(*), RK(*),
70 . RE(*), V(3,*), W(3,*),VIS(*),VOL(*),QVIS(*),
71 . X(3,*), VO(*), EIS(*),STIF(*),VD2(*),VDX(*) ,VDY(*) ,VDZ(*),
72 . RHO0(*),BUFVOIS(*),SSP_EQ(*), MOM(NEL,3)
75 my_real ,
EXTERNAL :: finter
76 TYPE (ELBUF_STRUCT_),
DIMENSION(NGROUP) :: ELBUF_TAB
77 TYPE(t_ale_connectivity),
INTENT(IN) :: ALE_CONNECT
81 INTEGER I, MX, ITYP, IRFUN, IPFUN, IEFUN, ITFUN, IKFUN,
82 . isfun, inod, ivxfun, ivyfun, ivzfun, ialefvm_flg
84 . gam(mvsiz), p0(mvsiz) , vcrt(mvsiz), gam1(mvsiz), p(mvsiz),
85 . vel(mvsiz), gamrp(mvsiz), rhov(mvsiz), pv(mvsiz) , eiv(mvsiz),
86 . rev(mvsiz), rkv(mvsiz) , tv(mvsiz) , expt(mvsiz),
87 . vxv(mvsiz), vyv(mvsiz) , vzv(mvsiz) ,
88 . fac, cart, e0, xe0, rhof, pf, ef, t0,
89 . xk0, psh, rhon, pn, en, gv, rsr, rv, c1, dc, alp, du, dp,
90 . rhoc,rhoc2,dydx, vxn(mvsiz), vyn(mvsiz), vzn(mvsiz),
91 . vx0(mvsiz), vy0(mvsiz), vz0(mvsiz),
92 . xmomv(mvsiz), ymomv(mvsiz), zmomv(mvsiz) ,
95 . dvp(mvsiz), vn(mvsiz),vimp(mvsiz),ssp,tscal,
96 . rho0_1, gam_1, p0_1, vcrt_1, gamrp_1, gam1_1, vx_1, vy_1, vz_1, mass
113 ialefvm_flg = ipm(251,mx)
130 inod = nint(pm(51,mx))
154 eis(i) = eis(i) + eint(i) / vol(i)
161 vxn(i) = vx0(i)*finter(ivxfun,tscal,npf,tf,dydx
166 vyn(i) = vy0(i)*finter(ivyfun,tscal,npf,tf,dydx)
171 vzn(i) = vz0(i)*finter(ivzfun,tscal,npf,tf,dydx)
178 mass = rho(i) * vol(i)
179 vxn(i) = mom(i,1) / mass
180 vyn(i) = mom(i,2) / mass
181 vzn(i) = mom(i,3) / mass
194 CALL m11vs3(pm ,iparg ,ix ,ale_connect ,elbuf_tab ,v ,
195 2 x ,dvp ,vn ,w ,vel ,vd2,
196 3 vdx ,vdy ,vdz ,mat ,rhov ,pv ,
197 4 eiv ,rev ,rkv ,tv ,
198 5 ssp_eq,vxv ,vyv ,vzv ,ialefvm_flg ,
199 6 vxn ,vyn ,vzn ,mom ,rho ,vol,
200 7 xmomv ,ymomv ,zmomv ,bufvois ,nel )
203 CALL m11vs2(pm ,iparg ,ix ,ale_connect ,elbuf_tab ,v ,
204 2 x ,dvp ,vn ,w ,vel ,vd2 ,
205 3 vdy ,vdz ,vis ,mat ,rhov ,pv ,
206 4 eiv ,rev ,rkv ,tv ,
207 5 ssp_eq,vxv ,vyv ,vzv ,ialefvm_flg ,
208 6 vxn ,vyn ,vzn ,mom ,rho ,vol
209 7 xmomv ,ymomv ,zmomv ,bufvois ,nel )
217 expt(i) = exp(cart*tt**2)
227 vel(i) = v(1,inod)**2+v(2,inod)**2+v(3,inod)**2
243 ELSEIF(vn(i)<zero)
THEN
245 eiv(i) = eint(i)/vol(i)
246 rkv(i) = rk(i)/vol(i)
247 rev(i) = re(i)/vol(i)
250 mass = rho(i) * vol(i)
251 vxv(i) = mom(i,1)/mass
252 vyv(i) = mom(i,2)/mass
253 vzv(i) = mom(i,3)/mass
261 rhon = rho0(i)*finter(irfun,tscal,npf,tf,dydx)
263 rhon = rhof+(rho0(i)-rhof)*expt(i)
269 pn = p0(i)*finter(ipfun,tscal,npf,tf,dydx)
271 pn = pf+(p0(i)-pf)*expt(i)
276 IF(ityp==5 .OR. ityp==6 )
THEN
278 vimp = p0(i)*finter(ipfun,tscal,npf,tf,dydx)
285 en = e0*finter(iefun,tscal,npf,tf,dydx)
287 en =ef+(e0-ef)*expt(i)
294 rk(i) = rho0(i)*finter(ikfun,tscal,npf,tf,dydx)
299 re(i) = rho0(i)*finter(isfun,tscal,npf,tf,dydx)
306 t(i) = t0*finter(itfun,tscal,npf,tf,dydx)
313 xmomn = vx0(i)*finter(ivxfun,tscal,npf,tf,dydx)*rhon*vol(i)
318 ymomn = vy0(i)*finter(ivyfun,tscal,npf,tf,dydx)*rhon*vol(i)
323 zmomn = vz0(i)*finter(ivzfun,tscal,npf,tf,dydx)*rhon*vol(i)
335 vel(i) =
min(vel(i),vcrt(i))
337 gv = dc*gamrp(i)*rhon*vel(i)/(pn+psh)
339 rsr = (one - gv)**gam1(i)
340 p(i) = (pn+psh)*rsr**gam(i)-psh
342 rv = half*rhon*vel(i)*dc
343 rsr = one - rv/((pn+psh)*gam(i))
347 p(i) = p(i) + two_third*rk(i)
348 eint(i)= gam1(i)*(p(i)+psh)
349 ssp_eq(i) = sqrt(gam1(i)*(pn+psh)/rhon)
354 rho(i) = c1*rhon/(c1+half*dc*rhon*vel(i))
355 p(i) = pn-half*dc*rho(i)*vel(i)
356 eint(i) = (one - rho(i)/rhon)*(p(i)+psh)+en
357 ssp_eq(i) = sqrt(c1/rhon)
358 IF(ipfun/=0.AND.jtur/=0)p(i)=p(i)+ two_third*rk(i)
363 ELSEIF(ityp==2.OR.ityp==8)
THEN
368 IF(ipfun/=0.AND.jtur/=0)p(i)=p(i)+two_third*rk(i)
378 ELSEIF(ityp==3 .OR. ityp==7)
THEN
383 IF(ipfun/=0.AND.jtur/=0)pn=pn + two_third*rk(i)
384 IF(ipfun/=0 .AND. vn(i)<=0)pn=pn - half*rhon*vn(i)**2
392 IF(ipfun==0 .OR. vn(i)<=zero .OR. ityp==3)
THEN
393 du = (one-alp)*rhoc*(vn(i)-vo(i))
395 du = (one - alp)*rhoc*((vn(i)-vo(i))-vn(i)*dvp(i))
401 dp = alp*(sig(i,1)+pn)
403 p(i) = -sig(i,1)+dp+du
404 ssp_eq(i) = rhoc / rho0(i)
414 rhoc2=rhon*(rhoc/rho0(i))**2
416 IF(ipfun/=0.AND.jtur/=0)pn=pn + two_third*rk(i)
417 IF(ipfun/=0 .AND. vn(i)<=zero)pn=pn - half*rhon*vn(i)**2
419 du=(one - alp)*(rhoc*(vn(i)-vo(i))-rhoc2*dvp(i))
425 dp = alp*(sig(i,1)+pn)
439 vo(i) = vo(i)+alp*(pv(i)-vo(i))
440 p(i) = rhoc*(vn(i)-vimp(i))+vo(i)
441 ssp_eq(i) = rhoc / rho0(i)
450 IF(tt==zero)vo(i) = pv(i)
454 ssp = pm(97,mx)/rho0(i)
455 vo(i) = vo(i)+alp*(pv(i)-vo(i))
456 p(i) = ssp*(rhov(i)*vn(i)-vimp(i))+vo(i)