43 . LISTE,NOD,IRECT,IELEM,
45 . LA,FV,MS,STIFN,IPARG,ELBUF_TAB,EBCS,OUTPUT,DT1,TIME)
54 USE output_mod ,
ONLY : output_
58#include "implicit_f.inc"
68 INTEGER :: NSEG,NOD,ISEG(NSEG),LISTE(NOD),IRECT(4,NSEG),IPARG(NPARG,NGROUP),IELEM()
69 my_real :: A(3,NUMNOD),X(3,NUMNOD),V(3,NUMNOD),LA(3,NOD), P0(NOD),VO(NOD)
70TYPE(ELBUF_STRUCT_),
TARGET,
DIMENSION(NGROUP) :: ELBUF_TAB
71 TYPE(t_ebcs_gradp0),
INTENT(IN) :: EBCS
73 TYPE(output_),
INTENT(INOUT) :: OUTPUT
74 my_real,
INTENT(IN) :: dt1
75 my_real,
INTENT(IN) :: time
79 INTEGER :: I,,KSEG,ESEG,N1,N2,N3,N4,NG1,NG2,,NG4,N, KLT,KTY,MFT,EAD,IRHO,IENER,II(6)
80 my_real :: ORIENT,RHO,,LCAR,ROC,ALP,FAC,X13,Y13,Z13,X24,Y24,Z24,,NY,NZ,S
81 my_real :: ROOU,ENOU,VMX,VMY,VMZ,FLUXI,FLUXO,VN,PN,DU,DP,P,ENER,R1,R2,S2,DPDV
82 TYPE(G_BUFEL_) ,
POINTER :: GBUF
83 my_real :: de, de_in, de_out, dm_in, dm_out
100 ener=ebcs%ener*fv(iener)
110 IF(lcar > zero)alp=c*dt1/lcar
121 orient=float(iseg(is)/kseg)
127 IF(n4 == 0 .OR. n4 == n3)
THEN
128 fac=one_over_6*orient
131 fac=one_over_8*orient
138 x13=x(1,ng3)-x(1,ng1)
139 y13=x(2,ng3)-x(2,ng1)
140 z13=x(3,ng3)-x(3,ng1)
141 x24=x(1,ng4)-x(1,ng2)
142 y24=x(2,ng4)-x(2,ng2)
143 z24=x(3,ng4)-x(3,ng2)
145 nx=(y13*z24-z13*y24)*fac
146 ny=(z13*x24-x13*z24)*fac
147 nz=(x13*y24-y13*x24)*fac
159 vmx=v(1,ng1)+v(1,ng2)+v(1,ng3)
160 vmy=v(2,ng1)+v(2,ng2)+v(2,ng3)
161 vmz=v(3,ng1)+v(3,ng2)+v(3,ng3)
172 roou = segvar%RHO(kseg)
173 enou = segvar%EINT(kseg)
175 fluxo=(vmx*nx+vmy*ny+vmz*nz)*dt1
176 fluxi=
min(fluxo,zero)
177 fluxo=
max(fluxo,zero)
178 dm_out=dm_out-fluxo*roou
179 dm_in=dm_in-fluxi*rho
180 de_out=de_out-fluxo*enou
181 de_in=de_in-fluxi*ener
186 segvar%EINT(kseg)=ener
192 IF (kty == 1 .AND. eseg <= klt+mft)
EXIT
195 gbuf => elbuf_tab(n)%GBUF
200 p =-(gbuf%SIG(ii(1)+ead)+gbuf%SIG(ii(2)+ead)+gbuf%SIG(ii(3)+ead))*third
201 p0(n1)=p0(n1)+p*(nx*la(1,n1)+ny*la(2,n1)+nz*la(3,n1))
202 p0(n2)=p0(n2)+p*(nx*la(1,n2)+ny*la(2,n2)+nz*la(3,n2))
203 p0(n3)=p0(n3)+p*(nx*la(1,n3)+ny*la(2,n3)+nz*la(3,n3))
205 p0(n4)=p0(n4)+p*(nx*la(1,n4)+ny*la(2,n4)+nz*la(3,n4))
211 s2=la(1,i)**2+la(2,i)**2+la(3,i)**2
213 vn=(v(1,n)*la(1,i)+v(2,n)*la(2,i)+v(3,n)*la(3,i))/s
215 pn=p0(i)/s2+r1*vn+r2*vn*abs(vn)
216 dpdv=roc+r1+two*r2*abs(vn)
229 a(2,n)=a(2,n)-p*la(2,i)
230 a(3,n)=a(3,n)-p*la(3,i)
233 de=-half*(po(i)+p)*dt1*vn*s
235 de_in = de_in +
max(zero,de)
236 de_out = de_out +
min(zero,de)
243 output%DATA%INOUT%DM_IN = output%DATA%INOUT%DM_IN + dm_in
244 output%DATA%INOUT%DM_OUT = output%DATA%INOUT%DM_OUT + dm_out
245 output%DATA%INOUT%DE_IN = output%DATA%INOUT%DE_IN + de_in
246 output%DATA%INOUT%DE_OUT = output%DATA%INOUT%DE_OUT + de_out
subroutine ebcs0_gradp0(nseg, iseg, segvar, a, v, x, liste, nod, irect, ielem, vo, po, p0, la, fv, ms, stifn, iparg, elbuf_tab, ebcs, output, dt1, time)