31 SUBROUTINE ebcs1(NSEG,ISEG,SEGVAR,
35 . FV,MS,STIFN,EBCS_TAB, IEBCS)
41#include "implicit_f.inc"
50 INTEGER NSEG,NOD,ISEG(NSEG),LISTE(NOD),IRECT(
54TYPE(t_ebcs_tab),
TARGET,
INTENT(IN) :: EBCS_TAB
55 INTEGER,
INTENT(IN) :: IEBCS
56 TYPE(t_segvar) :: SEGVAR
60 INTEGER IPRES,IRHO,I,,KSEG,N1,N2,N3,N4,NG1,NG2,NG3,NG4,
63 . ORIENT,PRES,RHO,C,LCAR,R1,R2,ROC,ALP,FAC,
64 . x13,y13,z13,x24,y24,z24,nx,ny,nz,s,
65 . roou,enou,vmx,vmy,vmz,fluxi,fluxo,vn,pn,du,dp,p,
67 CLASS(t_ebcs),
POINTER :: EBCS
70 EBCS => ebcs_tab%tab(iebcs)%poly
87 pres=ebcs%pres*fv(ipres)
97 ener=ebcs%ener*fv(iener)
105 TYPE IS (t_ebcs_valvin)
110 pres=ebcs%pres*fv(ipres)
115 rho=ebcs%rho*fv(irho)
120 ener=ebcs%ener*fv(iener)
128 TYPE IS (t_ebcs_valvout)
133 pres=ebcs%pres*fv(ipres)
138 rho=ebcs%rho*fv(irho)
143 ener=ebcs%ener*fv(iener)
158 IF (lcar>0)alp=c*dt1/lcar
167 orient=float(iseg(is)/kseg)
172 IF(n4==0 .OR. n4==n3)
THEN
173 fac=one_over_6*orient
176 fac=one_over_8*orient
183 x13=x(1,ng3)-x(1,ng1)
184 y13=x(2,ng3)-x(2,ng1)
185 z13=x(3,ng3)-x(3,ng1)
186 x24=x(1,ng4)-x(1,ng2)
187 y24=x(2,ng4)-x(2,ng2)
188 z24=x(3,ng4)-x(3,ng2)
190 nx=(y13*z24-z13*y24)*fac
191 ny=(z13*x24-x13*z24)*fac
192 nz=(x13*y24-y13*x24)*fac
204 vmx=v(1,ng1)+v(1,ng2)+v(1,ng3)
205 vmy=v(2,ng1)+v(2,ng2)+v(2,ng3)
206 vmz=v(3,ng1)+v(3,ng2)+v(3,ng3)
218 roou = segvar%RHO(kseg)
219 enou = segvar%EINT(kseg)
221 fluxo=(vmx*nx+vmy*ny+vmz*nz)*dt1
222 fluxi=
min(fluxo,zero)
223 fluxo=
max(fluxo,zero)
224 dmf=dmf-fluxo*roou-fluxi*rho
225 def=def-fluxo*enou-fluxi*ener
230 segvar%EINT(kseg)=ener
235 s=sqrt(la(1,i)**2+la(2,i)**2+la(3,i)**2)
236 vn=(v(1,n)*la(1,i)+v(2,n)*la(2,i)+v(3,n)*la(3,i))/s
238 pn=pres+r1*vn+r2*vn*abs(vn)
239 dpdv=roc+r1+two*r2*abs(vn)
260 a(1,n)=a(1,n)-p*la(1,i)
261 a(2,n)=a(2,n)-p*la(2,i)
262 a(3,n)=a(3,n)-p*la(3,i)
264 def=def-half*(po(i)+p)*dt1*vn*s
266 stifn(n)=stifn(n)+(two*(s*dpdv)**2)/ms(n)
subroutine ebcs1(nseg, iseg, segvar, a, v, x, liste, nod, irect, vo, po, la, fv, ms, stifn, ebcs_tab, iebcs)