31 SUBROUTINE ebcs5(NSEG,ISEG,SEGVAR,
34 . LA,FV,MS,STIFN,EBCS)
40#include "implicit_f.inc"
49 INTEGER NSEG,NOD,ISEG(NSEG),LISTE(NOD),IRECT(4,NSEG)
51 . A(3,*),V(3,*),X(3,*),
53 TYPE(t_ebcs_normv),
INTENT(IN) :: EBCS
54 TYPE(t_segvar) :: SEGVAR
58 INTEGER I,IS,KSEG,N1,N2,N3,N4,NG1,NG2,NG3,NG4,N,IVIMP,
61 . orient,rho,c,roc,fac,
62 . x13,y13,z13,x24,y24,z24,nx,ny,nz,s,
63 . roou,enou,vmx,vmy,vmz,fluxi,fluxo,p,dvx,dvy,dvz,vimp,ener
69 vimp=ebcs%vimp*fv(ivimp)
79 ener=ebcs%ener*fv(iener)
97 orient=float(iseg(is)/kseg)
102 IF(n4==0 .OR. n4==n3)
THEN
103 fac=one_over_6*orient
106 fac=one_over_8*orient
113 x13=x(1,ng3)-x(1,ng1)
114 y13=x(2,ng3)-x(2,ng1)
115 z13=x(3,ng3)-x(3,ng1)
116 x24=x(1,ng4)-x(1,ng2)
117 y24=x(2,ng4)-x(2,ng2)
118 z24=x(3,ng4)-x(3,ng2)
120 nx=(y13*z24-z13*y24)*fac
121 ny=(z13*x24-x13*z24)*fac
122 nz=(x13*y24-y13*x24)*fac
134 vmx=v(1,ng1)+v(1,ng2)+v(1,ng3)
135 vmy=v(2,ng1)+v(2,ng2)+v(2,ng3)
136 vmz=v(3,ng1)+v(3,ng2)+v(3,ng3)
148 roou = segvar%RHO(kseg)
149 enou = segvar%EINT(kseg)
151 fluxo=(vmx*nx+vmy*ny+vmz*nz)*dt1
152 fluxi=
min(fluxo,zero)
153 fluxo=
max(fluxo,zero)
155 dmf=dmf-fluxo*roou-fluxi*rho
156 def=def-fluxo*enou-fluxi*ener
161 segvar%EINT(kseg)=ener
167 fac=vimp/sqrt(la(1,i)**2+la(2,i)**2+la(3,i)**2)
176 s=sqrt(la(1,i)**2+la(2,i)**2+la(3,i)**2)
177 dvx=v(1,n)-vimp*la(1,i)/s
178 dvy=v(2,n)-vimp*la(2,i)/s
179 dvz=v(3,n)-vimp*la(3,i)/s
181 p=roc*(dvx*la(1,i)+dvy*la(2,i)+dvz*la(3,i))/s
183 a(1,n)=a(1,n)-p*la(1,i)
184 a(2,n)=a(2,n)-p*la(2,i)
185 a(3,n)=a(3,n)-p*la(3,i)
186 stifn(n)=stifn(n)+(two*(s*roc)**2)/ms(n)
subroutine ebcs5(nseg, iseg, segvar, a, v, x, liste, nod, irect, la, fv, ms, stifn, ebcs)