45 . MS,STIFN,EBCS,OUTPUT,DT1,TIME)
51 USE output_mod ,
ONLY : output_
57#include "implicit_f.inc"
65 INTEGER NSEG,NOD,ISEG(NSEG),LISTE(NOD),IRECT(4,NSEG)
66 my_real :: A(3,*),X(3,*),V(3,*),LA(3,NOD),RO0(NSEG),EN0(NSEG),P0(NOD),VO(NOD),PO(NOD),MS(*),STIFN(*)
67 TYPE(t_ebcs_inip),
INTENT(IN) :: EBCS
68 TYPE(t_segvar) :: SEGVAR
69 my_real,
INTENT(IN) :: DT1
70 my_real,
INTENT(IN) :: time
71 TYPE(output_),
INTENT(INOUT) :: OUTPUT
75 INTEGER :: I,IS,KSEG,N1,N2,N3,N4,NG1,NG2,NG3,NG4,N
76 my_real :: orient,rho,c,lcar,roc,alp,fac,
77 . x13,y13,z13,x24,y24,z24,nx,ny,nz,s,
78 . roou,enou,vmx,vmy,vmz,fluxi,fluxo,vn,pn,du,dp,p,dpdv
79 my_real :: de, de_in, de_out, dm_in, dm_out
91 IF (lcar > zero) alp=c*dt1/lcar
96 ro0(is) = segvar%RHO(kseg)
97 en0(is) = segvar%EINT(kseg)
109 orient=float(iseg(is)/kseg)
114 IF(n4 == 0 .OR. n4 == n3)
THEN
115 fac=one_over_6*orient
118 fac=one_over_8*orient
125 x13=x(1,ng3)-x(1,ng1)
126 y13=x(2,ng3)-x(2,ng1)
127 z13=x(3,ng3)-x(3,ng1)
128 x24=x(1,ng4)-x(1,ng2)
129 y24=x(2,ng4)-x(2,ng2)
130 z24=x(3,ng4)-x(3,ng2)
133 ny=(z13*x24-x13*z24)*fac
134 nz=(x13*y24-y13*x24)*fac
146 vmx=v(1,ng1)+v(1,ng2)+v(1,ng3)
147 vmy=v(2,ng1)+v(2,ng2)+v(2,ng3)
148 vmz=v(3,ng1)+v(3,ng2)+v(3,ng3)
160 roou = segvar%RHO(kseg)
161 enou = segvar%EINT(kseg)
164 fluxo=(vmx*nx+vmy*ny+vmz*nz)*dt1
165 fluxi=
min(fluxo,zero)
166 fluxo=
max(fluxo,zero)
167 dm_out=dm_out-fluxo*roou
168 dm_in=dm_in-fluxi*ro0(is)
169 de_out=de_out-fluxo*enou
170 de_in=de_in-fluxi*en0(is)
175 segvar%RHO(kseg)=ro0(is)
176 segvar%EINT(kseg)=en0(is)
183 IF (time == zero)
THEN
186 s=la(1,i)**2+la(2,i)**2+la(3,i)**2
187 vn=(v(1,n)*la(1,i)+v(2,n)*la(2,i)+v(3,n)*la(3,i))/sqrt(s)
190 IF(vn<zero)p0(i)=p0(i)+half*rho*vn**2
199 s=sqrt(la(1,i)**2+la(2,i)**2+la(3,i)**2)
200 vn=(v(1,n)*la(1,i)+v(2,n)*la(2,i)+v(3,n)*la(3,i))/s
205 pn=p0(i)-half*rho*vn**2
214 a(1,n)=a(1,n)-p*la(1,i)
215 a(2,n)=a(2,n)-p*la(2,i)
216 a(3,n)=a(3,n)-p*la(3,i)
217 stifn(n)=stifn(n)+(two*(s*dpdv)**2)/ms(n)
219 de=-half*(po(i)+p)*dt1*vn*s
220 de_in = de_in +
max(de, zero)
221 de_out = de_out +
min(de, zero)
228 output%DATA%INOUT%DM_IN = output%DATA%INOUT%DM_IN + dm_in
229 output%DATA%INOUT%DM_OUT = output%DATA%INOUT%DM_OUT + dm_out
230 output%DATA%INOUT%DE_IN = output%DATA%INOUT%DE_IN + de_in
231 output%DATA%INOUT%DE_OUT = output%DATA%INOUT%DE_OUT + de_out
subroutine ebcs6_inip(nseg, iseg, segvar, a, v, x, liste, nod, irect, ro0, en0, p0, vo, po, la, ms, stifn, ebcs, output, dt1, time)