32 SUBROUTINE ebcs0(NSEG,ISEG,SEGVAR,
34 . LISTE,NOD,IRECT,IELEM,
36 . LA,FV,MS,STIFN,IPARG,ELBUF_TAB,EBCS)
48#include "implicit_f.inc"
60 INTEGER NSEG,NOD,ISEG(NSEG),LISTE(NOD),IRECT(4,NSEG),
61 . (NPARG,),IELEM(NSEG)
63 . A(3,NUMNOD),X(3,NUMNOD),V(3,NUMNOD),LA(3,NOD),
64 . p0(nod),vo(nod),po(nod),ms(*),stifn(*),fv(*)
65 TYPE(elbuf_struct_),
TARGET,
DIMENSION(NGROUP) :: ELBUF_TAB
66 TYPE(t_ebcs_gradp0),
INTENT(IN) :: EBCS
67 TYPE(t_segvar) :: SEGVAR
71 INTEGER I,IS,KSEG,ESEG,N1,N2,N3,N4,NG1,NG2,,NG4,N,
72 . KLT,KTY,MFT,EAD,IRHO,IENER,II(6)
75 . orient,rho,c,lcar,roc,alp,fac,
76 . x13,y13,z13,x24,y24,z24,nx,ny,nz,s,
77 . roou,enou,vmx,vmy,vmz,fluxi,fluxo,vn,pn,du,dp,p,
79 TYPE(g_bufel_) ,
POINTER :: GBUF
91 ener=ebcs%ener*fv(iener)
101 IF(lcar>0)alp=c*dt1/lcar
114 orient=float(iseg(is)/kseg)
120 IF(n4==0 .OR. n4==n3)
THEN
121 fac=one_over_6*orient
124 fac=one_over_8*orient
131 x13=x(1,ng3)-x(1,ng1)
132 y13=x(2,ng3)-x(2,ng1)
133 z13=x(3,ng3)-x(3,ng1)
134 x24=x(1,ng4)-x(1,ng2)
135 y24=x(2,ng4)-x(2,ng2)
136 z24=x(3,ng4)-x(3,ng2)
138 nx=(y13*z24-z13*y24)*fac
139 ny=(z13*x24-x13*z24)*fac
140 nz=(x13*y24-y13*x24)*fac
152 vmx=v(1,ng1)+v(1,ng2)+v(1,ng3)
153 vmy=v(2,ng1)+v(2,ng2)+v(2,ng3)
154 vmz=v(3,ng1)+v(3,ng2)+v(3,ng3)
166 roou = segvar%RHO(kseg)
167 enou = segvar%EINT(kseg)
169 fluxo=(vmx*nx+vmy*ny+vmz*nz)*dt1
170 fluxi=
min(fluxo,zero)
171 fluxo=
max(fluxo,zero)
173 dmf=dmf-fluxo*roou-fluxi*rho
174 def=def-fluxo*enou-fluxi*ener
179 segvar%EINT(kseg)=ener
185 IF (kty==1 .AND. eseg<=klt+mft)
EXIT
188 gbuf => elbuf_tab(n)%GBUF
193 p =-(gbuf%SIG(ii(1)+ead)+gbuf%SIG(ii(2)+ead)+gbuf%SIG(ii(3)+ead))*third
195 p0(n1)=p0(n1)+p*(nx*la(1,n1)+ny*la(2,n1)+nz*la(3,n1))
196 p0(n2)=p0(n2)+p*(nx*la(1,n2)+ny*la(2,n2)+nz*la(3,n2))
197 p0(n3)=p0(n3)+p*(nx*la(1,n3)+ny*la(2,n3)+nz*la(3,n3))
199 p0(n4)=p0(n4)+p*(nx*la(1,n4)+ny*la(2,n4)+nz*la(3,n4))
207 s2=la(1,i)**2+la(2,i)**2+la(3,i)**2
209 vn=(v(1,n)*la(1,i)+v(2,n)*la(2,i)+v(3,n)*la(3,i))/s
211 pn=p0(i)/s2+r1*vn+r2*vn*abs(vn)
212 dpdv=roc+r1+two*r2*abs(vn)
225 a(1,n)=a(1,n)-p*la(1,i)
226 a(2,n)=a(2,n)-p*la(2,i)
227 a(3,n)=a(3,n)-p*la(3,i)
228 stifn(n)=stifn(n)+(two*(s*dpdv)**2)/ms(n)
230 def=def-half*(po(i)+p)*dt1*vn*s
subroutine ebcs0(nseg, iseg, segvar, a, v, x, liste, nod, irect, ielem, vo, po, p0, la, fv, ms, stifn, iparg, elbuf_tab, ebcs)