41#include "implicit_f.inc"
45 INTEGER NSEG,ISEG(NSEG),SURF_NODES(NSEG,4)
47 . a(3,*),x(3,*),v(3,*),volmon(*),fsav(*)
52 INTEGER IS,K,KSEG,SEGAD,IRECT(4)
54 . pext,pres,vol,ro,en,
55 . fac,x13,y13,z13,x24,y24,z24,nx,ny,nz,s,
56 . vn1,vn2,vn3,vn4,vel,vn,vplus,vmoins,
57 . gam1,gamrp,vcrt2,fluxm,fluxe,flux,
58 . gv,rv,rsr,pn,enin,roin,enou,roou,pns,fx,fy,fz,
59 . gam,
norm,dmin,dmou,hin,hou,pna
60 my_real pna1,pna2,pna3,pna4,rsr1,rsr2,rsr3,rsr4,aire
74 gamrp= half*(gam-one)/gam
75 vcrt2= two*gam*pres/ro/(gam+one)
84 irect(k)=surf_nodes(is,k)
86 IF(irect(4) == 0)
THEN
96 orient=float(iseg(is)/kseg)
99 x13=x(1,irect(3))-x(1,irect(1))
100 y13=x(2,irect(3))-x(2,irect(1))
101 z13=x(3,irect(3))-x(3,irect(1))
102 x24=x(1,irect(4))-x(1,irect(2))
103 y24=x(2,irect(4))-x(2,irect(2))
104 z24=x(3,irect(4))-x(3,irect(2))
108 norm=sqrt(nx*nx+ny*ny+nz*nz)
120 vn1=v(1,irect(1))*nx+v(2,irect(1))*ny+v(3,irect(1))*nz
121 vn2=v(1,irect(2))*nx+v(2,irect(2))*ny+v(3,irect(2))*nz
122 vn3=v(1,irect(3))*nx+v(2,irect(3))*ny+v(3,irect(3))*nz
123 vn4=v(1,irect(4))*nx+v(2,irect(4))*ny+v(3,irect(4))*nz
124 IF(irect(4) == irect(3))
THEN
127 vn=fac*(vn1+vn2+vn3+vn4)
142 rsr = one - rv/(pres*gam)
155 rsr = one - rv/(pres*gam)
168 rsr = one - rv/(pres*gam)
181 rsr = one - rv/(pres*gam)
186 IF(irect(4) == irect(3))
THEN
187 pna=fac*(pna1+pna2+pna3)
188 rsr=fac*(rsr1+rsr2+rsr3)
190 pna=fac*(pna1+pna2+pna3+pna4)
191 rsr=fac*(rsr1+rsr2+rsr3+rsr4)
199 segad=
ale%GLOBAL%NVCONV*(kseg-1)
200 roou = segvar%RHO(kseg)
201 enou = segvar%EINT(kseg)
203 segvar%RHO(kseg)=roin
204 segvar%EINT(kseg)=enin
213 hou=gam*enou/roou+half*vplus**2
218 fluxm=fluxm+s*(dmou+dmin)
219 fluxe=fluxe+s*(hin*dmin+hou*dmou)
228 a(1,irect(1))=a(1,irect(1))+fx
229 a(2,irect(1))=a(2,irect(1))+fy
230 a(3,irect(1))=a(3,irect(1))+fz
237 a(1,irect(2))=a(1,irect(2))+fx
238 a(2,irect(2))=a(2,irect(2))+fy
239 a(3,irect(2))=a(3,irect(2))+fz
246 a(1,irect(3))=a(1,irect(3))+fx
247 a(2,irect(3))=a(2,irect(3))+fy
248 a(3,irect(3))=a(3,irect(3))+fz
250 IF(irect(4)/=irect(3))
THEN
256 a(1,irect(4))=a(1,irect(4))+fx
257 a(2,irect(4))=a(2,irect(4))+fy
258 a(3,irect(4))=a(3,irect(4))+fz
263 volmon(22)=volmon(22) - fluxe
264 volmon(24)=volmon(24) - fluxm
265 flux=-flux+fsav(9)*fsav(8)
266 fsav(8)=fsav(8) + aire