xref: /phasta/phSolver/compressible/e3bvar.f (revision 595995161822a203c8467e0e4a253d7bd7d6df32)
1*59599516SKenneth E. Jansen        subroutine e3bvar (yl,      ycl,     BCB,     shpb,    shglb,
2*59599516SKenneth E. Jansen     &                     xlb,     lnode,   g1yi,    g2yi,
3*59599516SKenneth E. Jansen     &                     g3yi,    WdetJb,  bnorm,   pres,    T,
4*59599516SKenneth E. Jansen     &                     u1,      u2,      u3,      rho,     ei,
5*59599516SKenneth E. Jansen     &                     cp,      rk,
6*59599516SKenneth E. Jansen     &                     rou,     p,       tau1n,   tau2n,   tau3n,
7*59599516SKenneth E. Jansen     &                     heat)
8*59599516SKenneth E. Jansenc
9*59599516SKenneth E. Jansenc----------------------------------------------------------------------
10*59599516SKenneth E. Jansenc
11*59599516SKenneth E. Jansenc   This routine computes the variables at integration points for
12*59599516SKenneth E. Jansenc the boundary element routine.
13*59599516SKenneth E. Jansenc
14*59599516SKenneth E. Jansenc input:
15*59599516SKenneth E. Jansenc  yl     (npro,nshl,nflow)   : primitive variables (perturbed, no scalars)
16*59599516SKenneth E. Jansenc  ycl    (npro,nshl,ndof)    : primitive variables
17*59599516SKenneth E. Jansenc  BCB    (npro,nshlb,ndBCB)  : Boundary Condition values
18*59599516SKenneth E. Jansenc  shpb   (npro,nshl)         : boundary element shape-functions
19*59599516SKenneth E. Jansenc  shglb  (npro,nsd,nshl)     : boundary element grad-shape-functions
20*59599516SKenneth E. Jansenc  xlb    (npro,nenl,nsd)       : nodal coordinates at current step
21*59599516SKenneth E. Jansenc  lnode  (nenb)                : local nodes on the boundary
22*59599516SKenneth E. Jansenc
23*59599516SKenneth E. Jansenc output:
24*59599516SKenneth E. Jansenc  g1yi   (npro,nflow)           : grad-v in direction 1
25*59599516SKenneth E. Jansenc  g2yi   (npro,nflow)           : grad-v in direction 2
26*59599516SKenneth E. Jansenc  g3yi   (npro,nflow)           : grad-v in direction 3
27*59599516SKenneth E. Jansenc  WdetJb (npro)                : weighted Jacobian
28*59599516SKenneth E. Jansenc  bnorm  (npro,nsd)            : outward normal
29*59599516SKenneth E. Jansenc  pres   (npro)                : pressure
30*59599516SKenneth E. Jansenc  T      (npro)                : temperature
31*59599516SKenneth E. Jansenc  u1     (npro)                : x1-velocity component
32*59599516SKenneth E. Jansenc  u2     (npro)                : x2-velocity component
33*59599516SKenneth E. Jansenc  u3     (npro)                : x3-velocity component
34*59599516SKenneth E. Jansenc  rho    (npro)                : density
35*59599516SKenneth E. Jansenc  ei     (npro)                : internal energy
36*59599516SKenneth E. Jansenc  cp     (npro)                : specific energy at constant pressure
37*59599516SKenneth E. Jansenc  rk     (npro)                : kinetic energy
38*59599516SKenneth E. Jansenc  rou    (npro)                : BC mass flux
39*59599516SKenneth E. Jansenc  p      (npro)                : BC pressure
40*59599516SKenneth E. Jansenc  tau1n  (npro)                : BC viscous flux 1
41*59599516SKenneth E. Jansenc  tau2n  (npro)                : BC viscous flux 2
42*59599516SKenneth E. Jansenc  tau3n  (npro)                : BC viscous flux 3
43*59599516SKenneth E. Jansenc  heat   (npro)                : BC heat flux
44*59599516SKenneth E. Jansenc
45*59599516SKenneth E. Jansenc
46*59599516SKenneth E. Jansenc Zdenek Johan, Summer 1990.  (Modified from e2bvar.f)
47*59599516SKenneth E. Jansenc Zdenek Johan, Winter 1991.  (Fortran 90)
48*59599516SKenneth E. Jansenc----------------------------------------------------------------------
49*59599516SKenneth E. Jansenc
50*59599516SKenneth E. Jansen        include "common.h"
51*59599516SKenneth E. Jansenc
52*59599516SKenneth E. Jansen        dimension yl(npro,nshl,nflow),      BCB(npro,nshlb,ndBCB),
53*59599516SKenneth E. Jansen     &            ycl(npro,nshl,ndof),
54*59599516SKenneth E. Jansen     &            shpb(npro,nshl),
55*59599516SKenneth E. Jansen     &            shglb(npro,nsd,nshl),
56*59599516SKenneth E. Jansen     &            xlb(npro,nenl,nsd),
57*59599516SKenneth E. Jansen     &            lnode(27),               g1yi(npro,nflow),
58*59599516SKenneth E. Jansen     &            g2yi(npro,nflow),        g3yi(npro,nflow),
59*59599516SKenneth E. Jansen     &            WdetJb(npro),            bnorm(npro,nsd),
60*59599516SKenneth E. Jansen     &            pres(npro),              T(npro),
61*59599516SKenneth E. Jansen     &            u1(npro),                u2(npro),
62*59599516SKenneth E. Jansen     &            u3(npro),                rho(npro),
63*59599516SKenneth E. Jansen     &            ei(npro),                cp(npro),
64*59599516SKenneth E. Jansen     &            rk(npro),
65*59599516SKenneth E. Jansen     &            rou(npro),               p(npro),
66*59599516SKenneth E. Jansen     &            tau1n(npro),             tau2n(npro),
67*59599516SKenneth E. Jansen     &            tau3n(npro),             heat(npro)
68*59599516SKenneth E. Jansenc
69*59599516SKenneth E. Jansen        dimension gl1yi(npro,nflow),       gl2yi(npro,nflow),
70*59599516SKenneth E. Jansen     &            gl3yi(npro,nflow),       dxdxib(npro,nsd,nsd),
71*59599516SKenneth E. Jansen     &            dxidxb(npro,nsd,nsd),    temp(npro),
72*59599516SKenneth E. Jansen     &            temp1(npro),             temp2(npro),
73*59599516SKenneth E. Jansen     &            temp3(npro)
74*59599516SKenneth E. Jansenc
75*59599516SKenneth E. Jansen        dimension h(npro),                 cv(npro),
76*59599516SKenneth E. Jansen     &            alfap(npro),             betaT(npro),
77*59599516SKenneth E. Jansen     &            gamb(npro),              c(npro),
78*59599516SKenneth E. Jansen     &            tmp(npro),
79*59599516SKenneth E. Jansen     &            v1(npro,nsd),            v2(npro,nsd)
80*59599516SKenneth E. Jansenc
81*59599516SKenneth E. Jansenc.... ------------------->  integration variables  <--------------------
82*59599516SKenneth E. Jansenc
83*59599516SKenneth E. Jansenc.... compute the primitive variables at the integration point
84*59599516SKenneth E. Jansenc
85*59599516SKenneth E. Jansen        pres = zero
86*59599516SKenneth E. Jansen        u1   = zero
87*59599516SKenneth E. Jansen        u2   = zero
88*59599516SKenneth E. Jansen        u3   = zero
89*59599516SKenneth E. Jansen        T    = zero
90*59599516SKenneth E. Jansenc
91*59599516SKenneth E. Jansen        do n = 1, nshlb
92*59599516SKenneth E. Jansen          nodlcl = lnode(n)
93*59599516SKenneth E. Jansenc
94*59599516SKenneth E. Jansen          pres = pres + shpb(:,nodlcl) * yl(:,nodlcl,1)
95*59599516SKenneth E. Jansen          u1   = u1   + shpb(:,nodlcl) * yl(:,nodlcl,2)
96*59599516SKenneth E. Jansen          u2   = u2   + shpb(:,nodlcl) * yl(:,nodlcl,3)
97*59599516SKenneth E. Jansen          u3   = u3   + shpb(:,nodlcl) * yl(:,nodlcl,4)
98*59599516SKenneth E. Jansen          T    = T    + shpb(:,nodlcl) * yl(:,nodlcl,5)
99*59599516SKenneth E. Jansen        enddo
100*59599516SKenneth E. Jansenc
101*59599516SKenneth E. Jansenc.... calculate the specific kinetic energy
102*59599516SKenneth E. Jansenc
103*59599516SKenneth E. Jansen        rk = pt5 * ( u1**2 + u2**2  + u3**2 )
104*59599516SKenneth E. Jansenc
105*59599516SKenneth E. Jansenc.... get the thermodynamic properties
106*59599516SKenneth E. Jansenc
107*59599516SKenneth E. Jansen        if (iLSet .ne. 0)then
108*59599516SKenneth E. Jansen           temp = zero
109*59599516SKenneth E. Jansen           isc=abs(iRANS)+6
110*59599516SKenneth E. Jansen           do n = 1, nshlb
111*59599516SKenneth E. Jansen              temp = temp + shpb(:,n) * ycl(:,n,isc)
112*59599516SKenneth E. Jansen           enddo
113*59599516SKenneth E. Jansen        endif
114*59599516SKenneth E. Jansen
115*59599516SKenneth E. Jansen        ithm = 6
116*59599516SKenneth E. Jansen        if (Navier .eq. 1) ithm = 7
117*59599516SKenneth E. Jansen        call getthm (pres,            T,                  temp,
118*59599516SKenneth E. Jansen     &               rk,              rho,                ei,
119*59599516SKenneth E. Jansen     &               h,               tmp,                cv,
120*59599516SKenneth E. Jansen     &               cp,              alfap,              betaT,
121*59599516SKenneth E. Jansen     &               gamb,            c)
122*59599516SKenneth E. Jansenc
123*59599516SKenneth E. Jansenc.... ---------------------->  Element Metrics  <-----------------------
124*59599516SKenneth E. Jansenc
125*59599516SKenneth E. Jansenc.... compute the deformation gradient
126*59599516SKenneth E. Jansenc
127*59599516SKenneth E. Jansen        dxdxib = zero
128*59599516SKenneth E. Jansenc
129*59599516SKenneth E. Jansen        do n = 1, nenl
130*59599516SKenneth E. Jansen           dxdxib(:,1,1) = dxdxib(:,1,1) + xlb(:,n,1) * shglb(:,1,n)
131*59599516SKenneth E. Jansen           dxdxib(:,1,2) = dxdxib(:,1,2) + xlb(:,n,1) * shglb(:,2,n)
132*59599516SKenneth E. Jansen           dxdxib(:,1,3) = dxdxib(:,1,3) + xlb(:,n,1) * shglb(:,3,n)
133*59599516SKenneth E. Jansen           dxdxib(:,2,1) = dxdxib(:,2,1) + xlb(:,n,2) * shglb(:,1,n)
134*59599516SKenneth E. Jansen           dxdxib(:,2,2) = dxdxib(:,2,2) + xlb(:,n,2) * shglb(:,2,n)
135*59599516SKenneth E. Jansen           dxdxib(:,2,3) = dxdxib(:,2,3) + xlb(:,n,2) * shglb(:,3,n)
136*59599516SKenneth E. Jansen           dxdxib(:,3,1) = dxdxib(:,3,1) + xlb(:,n,3) * shglb(:,1,n)
137*59599516SKenneth E. Jansen           dxdxib(:,3,2) = dxdxib(:,3,2) + xlb(:,n,3) * shglb(:,2,n)
138*59599516SKenneth E. Jansen           dxdxib(:,3,3) = dxdxib(:,3,3) + xlb(:,n,3) * shglb(:,3,n)
139*59599516SKenneth E. Jansen        enddo
140*59599516SKenneth E. Jansenc
141*59599516SKenneth E. Jansenc.... compute the normal to the boundary
142*59599516SKenneth E. Jansenc
143*59599516SKenneth E. Jansenc.... compute the normal to the boundary. This is achieved by taking
144*59599516SKenneth E. Jansenc     the cross product of two vectors in the plane of the 2-d
145*59599516SKenneth E. Jansenc     boundary face.
146*59599516SKenneth E. Jansen        v1 = xlb(:,2,:) - xlb(:,1,:)
147*59599516SKenneth E. Jansen        v2 = xlb(:,3,:) - xlb(:,1,:)
148*59599516SKenneth E. Jansenc
149*59599516SKenneth E. Jansenc.....The following are done in order to correct temp1..3
150*59599516SKenneth E. Jansenc     based on the results from compressible code.  This is done only
151*59599516SKenneth E. Jansenc     for wedges, depending on the bounary face.(tri or quad)
152*59599516SKenneth E. Jansenc
153*59599516SKenneth E. Jansen        if (lcsyst .eq. 4) then
154*59599516SKenneth E. Jansen           temp1 = dxdxib(:,2,1) * dxdxib(:,3,3) -
155*59599516SKenneth E. Jansen     &             dxdxib(:,2,3) * dxdxib(:,3,1)
156*59599516SKenneth E. Jansen           temp2 = dxdxib(:,3,1) * dxdxib(:,1,3) -
157*59599516SKenneth E. Jansen     &             dxdxib(:,3,3) * dxdxib(:,1,1)
158*59599516SKenneth E. Jansen           temp3 = dxdxib(:,1,1) * dxdxib(:,2,3) -
159*59599516SKenneth E. Jansen     &             dxdxib(:,1,3) * dxdxib(:,2,1)
160*59599516SKenneth E. Jansen
161*59599516SKenneth E. Jansen        elseif (lcsyst .eq. 1) then
162*59599516SKenneth E. Jansen           temp1 = v1(:,2) * v2(:,3) - v2(:,2) * v1(:,3)
163*59599516SKenneth E. Jansen           temp2 = v2(:,1) * v1(:,3) - v1(:,1) * v2(:,3)
164*59599516SKenneth E. Jansen           temp3 = v1(:,1) * v2(:,2) - v2(:,1) * v1(:,2)
165*59599516SKenneth E. Jansen        else
166*59599516SKenneth E. Jansen           temp1 = - v1(:,2) * v2(:,3) + v2(:,2) * v1(:,3)
167*59599516SKenneth E. Jansen           temp2 = - v2(:,1) * v1(:,3) + v1(:,1) * v2(:,3)
168*59599516SKenneth E. Jansen           temp3 = - v1(:,1) * v2(:,2) + v2(:,1) * v1(:,2)
169*59599516SKenneth E. Jansen        endif
170*59599516SKenneth E. Jansenc
171*59599516SKenneth E. Jansen        temp       = one / sqrt ( temp1**2 + temp2**2 + temp3**2 )
172*59599516SKenneth E. Jansen        bnorm(:,1) = temp1 * temp
173*59599516SKenneth E. Jansen        bnorm(:,2) = temp2 * temp
174*59599516SKenneth E. Jansen        bnorm(:,3) = temp3 * temp
175*59599516SKenneth E. Jansenc
176*59599516SKenneth E. Jansen
177*59599516SKenneth E. Jansen        if (lcsyst .eq. 3) then
178*59599516SKenneth E. Jansen           WdetJb     = (1 - Qwtb(lcsyst,intp)) / (four*temp)
179*59599516SKenneth E. Jansen        elseif (lcsyst .eq. 4) then
180*59599516SKenneth E. Jansenc
181*59599516SKenneth E. Jansenc  quad face wedges have a conflict in lnode ordering that makes the
182*59599516SKenneth E. Jansenc  normal negative
183*59599516SKenneth E. Jansenc
184*59599516SKenneth E. Jansenc          bnorm=-bnorm
185*59599516SKenneth E. Jansenc
186*59599516SKenneth E. Jansen          WdetJb     = Qwtb(lcsyst,intp) / temp
187*59599516SKenneth E. Jansen        else
188*59599516SKenneth E. Jansen           WdetJb     = Qwtb(lcsyst,intp) / (four*temp)
189*59599516SKenneth E. Jansen        endif
190*59599516SKenneth E. Jansenc
191*59599516SKenneth E. Jansenc.... -------------------------->  Grad-V  <----------------------------
192*59599516SKenneth E. Jansenc
193*59599516SKenneth E. Jansenc.... compute grad-v for Navier-Stokes terms
194*59599516SKenneth E. Jansenc
195*59599516SKenneth E. Jansen        if (Navier .eq. 1) then
196*59599516SKenneth E. Jansenc
197*59599516SKenneth E. Jansenc.... compute the inverse of deformation gradient
198*59599516SKenneth E. Jansenc
199*59599516SKenneth E. Jansen          dxidxb(:,1,1) =   dxdxib(:,2,2) * dxdxib(:,3,3)
200*59599516SKenneth E. Jansen     &                    - dxdxib(:,3,2) * dxdxib(:,2,3)
201*59599516SKenneth E. Jansen          dxidxb(:,1,2) =   dxdxib(:,3,2) * dxdxib(:,1,3)
202*59599516SKenneth E. Jansen     &                    - dxdxib(:,1,2) * dxdxib(:,3,3)
203*59599516SKenneth E. Jansen          dxidxb(:,1,3) =   dxdxib(:,1,2) * dxdxib(:,2,3)
204*59599516SKenneth E. Jansen     &                    - dxdxib(:,1,3) * dxdxib(:,2,2)
205*59599516SKenneth E. Jansen          temp          = one / ( dxidxb(:,1,1) * dxdxib(:,1,1)
206*59599516SKenneth E. Jansen     &                          + dxidxb(:,1,2) * dxdxib(:,2,1)
207*59599516SKenneth E. Jansen     &                          + dxidxb(:,1,3) * dxdxib(:,3,1) )
208*59599516SKenneth E. Jansen          dxidxb(:,1,1) =  dxidxb(:,1,1) * temp
209*59599516SKenneth E. Jansen          dxidxb(:,1,2) =  dxidxb(:,1,2) * temp
210*59599516SKenneth E. Jansen          dxidxb(:,1,3) =  dxidxb(:,1,3) * temp
211*59599516SKenneth E. Jansen          dxidxb(:,2,1) = (dxdxib(:,2,3) * dxdxib(:,3,1)
212*59599516SKenneth E. Jansen     &                   - dxdxib(:,2,1) * dxdxib(:,3,3)) * temp
213*59599516SKenneth E. Jansen          dxidxb(:,2,2) = (dxdxib(:,1,1) * dxdxib(:,3,3)
214*59599516SKenneth E. Jansen     &                   - dxdxib(:,3,1) * dxdxib(:,1,3)) * temp
215*59599516SKenneth E. Jansen          dxidxb(:,2,3) = (dxdxib(:,2,1) * dxdxib(:,1,3)
216*59599516SKenneth E. Jansen     &                   - dxdxib(:,1,1) * dxdxib(:,2,3)) * temp
217*59599516SKenneth E. Jansen          dxidxb(:,3,1) = (dxdxib(:,2,1) * dxdxib(:,3,2)
218*59599516SKenneth E. Jansen     &                   - dxdxib(:,2,2) * dxdxib(:,3,1)) * temp
219*59599516SKenneth E. Jansen          dxidxb(:,3,2) = (dxdxib(:,3,1) * dxdxib(:,1,2)
220*59599516SKenneth E. Jansen     &                   - dxdxib(:,1,1) * dxdxib(:,3,2)) * temp
221*59599516SKenneth E. Jansen          dxidxb(:,3,3) = (dxdxib(:,1,1) * dxdxib(:,2,2)
222*59599516SKenneth E. Jansen     &                   - dxdxib(:,1,2) * dxdxib(:,2,1)) * temp
223*59599516SKenneth E. Jansenc
224*59599516SKenneth E. Jansenc.... compute local-grad-Y
225*59599516SKenneth E. Jansenc
226*59599516SKenneth E. Jansen          gl1yi = zero
227*59599516SKenneth E. Jansen          gl2yi = zero
228*59599516SKenneth E. Jansen          gl3yi = zero
229*59599516SKenneth E. Jansenc
230*59599516SKenneth E. Jansen          do n = 1, nshl
231*59599516SKenneth E. Jansen            gl1yi(:,1) = gl1yi(:,1) + shglb(:,1,n) * yl(:,n,1)
232*59599516SKenneth E. Jansen            gl1yi(:,2) = gl1yi(:,2) + shglb(:,1,n) * yl(:,n,2)
233*59599516SKenneth E. Jansen            gl1yi(:,3) = gl1yi(:,3) + shglb(:,1,n) * yl(:,n,3)
234*59599516SKenneth E. Jansen            gl1yi(:,4) = gl1yi(:,4) + shglb(:,1,n) * yl(:,n,4)
235*59599516SKenneth E. Jansen            gl1yi(:,5) = gl1yi(:,5) + shglb(:,1,n) * yl(:,n,5)
236*59599516SKenneth E. Jansenc
237*59599516SKenneth E. Jansen            gl2yi(:,1) = gl2yi(:,1) + shglb(:,2,n) * yl(:,n,1)
238*59599516SKenneth E. Jansen            gl2yi(:,2) = gl2yi(:,2) + shglb(:,2,n) * yl(:,n,2)
239*59599516SKenneth E. Jansen            gl2yi(:,3) = gl2yi(:,3) + shglb(:,2,n) * yl(:,n,3)
240*59599516SKenneth E. Jansen            gl2yi(:,4) = gl2yi(:,4) + shglb(:,2,n) * yl(:,n,4)
241*59599516SKenneth E. Jansen            gl2yi(:,5) = gl2yi(:,5) + shglb(:,2,n) * yl(:,n,5)
242*59599516SKenneth E. Jansenc
243*59599516SKenneth E. Jansen            gl3yi(:,1) = gl3yi(:,1) + shglb(:,3,n) * yl(:,n,1)
244*59599516SKenneth E. Jansen            gl3yi(:,2) = gl3yi(:,2) + shglb(:,3,n) * yl(:,n,2)
245*59599516SKenneth E. Jansen            gl3yi(:,3) = gl3yi(:,3) + shglb(:,3,n) * yl(:,n,3)
246*59599516SKenneth E. Jansen            gl3yi(:,4) = gl3yi(:,4) + shglb(:,3,n) * yl(:,n,4)
247*59599516SKenneth E. Jansen            gl3yi(:,5) = gl3yi(:,5) + shglb(:,3,n) * yl(:,n,5)
248*59599516SKenneth E. Jansen          enddo
249*59599516SKenneth E. Jansenc
250*59599516SKenneth E. Jansenc.... convert local-grads to global-grads
251*59599516SKenneth E. Jansenc
252*59599516SKenneth E. Jansen          g1yi(:,2) = dxidxb(:,1,1) * gl1yi(:,2) +
253*59599516SKenneth E. Jansen     &                dxidxb(:,2,1) * gl2yi(:,2) +
254*59599516SKenneth E. Jansen     &                dxidxb(:,3,1) * gl3yi(:,2)
255*59599516SKenneth E. Jansen          g2yi(:,2) = dxidxb(:,1,2) * gl1yi(:,2) +
256*59599516SKenneth E. Jansen     &                dxidxb(:,2,2) * gl2yi(:,2) +
257*59599516SKenneth E. Jansen     &                dxidxb(:,3,2) * gl3yi(:,2)
258*59599516SKenneth E. Jansen          g3yi(:,2) = dxidxb(:,1,3) * gl1yi(:,2) +
259*59599516SKenneth E. Jansen     &                dxidxb(:,2,3) * gl2yi(:,2) +
260*59599516SKenneth E. Jansen     &                dxidxb(:,3,3) * gl3yi(:,2)
261*59599516SKenneth E. Jansenc
262*59599516SKenneth E. Jansen          g1yi(:,3) = dxidxb(:,1,1) * gl1yi(:,3) +
263*59599516SKenneth E. Jansen     &                dxidxb(:,2,1) * gl2yi(:,3) +
264*59599516SKenneth E. Jansen     &                dxidxb(:,3,1) * gl3yi(:,3)
265*59599516SKenneth E. Jansen          g2yi(:,3) = dxidxb(:,1,2) * gl1yi(:,3) +
266*59599516SKenneth E. Jansen     &                dxidxb(:,2,2) * gl2yi(:,3) +
267*59599516SKenneth E. Jansen     &                dxidxb(:,3,2) * gl3yi(:,3)
268*59599516SKenneth E. Jansen          g3yi(:,3) = dxidxb(:,1,3) * gl1yi(:,3) +
269*59599516SKenneth E. Jansen     &                dxidxb(:,2,3) * gl2yi(:,3) +
270*59599516SKenneth E. Jansen     &                dxidxb(:,3,3) * gl3yi(:,3)
271*59599516SKenneth E. Jansenc
272*59599516SKenneth E. Jansen          g1yi(:,4) = dxidxb(:,1,1) * gl1yi(:,4) +
273*59599516SKenneth E. Jansen     &                dxidxb(:,2,1) * gl2yi(:,4) +
274*59599516SKenneth E. Jansen     &                dxidxb(:,3,1) * gl3yi(:,4)
275*59599516SKenneth E. Jansen          g2yi(:,4) = dxidxb(:,1,2) * gl1yi(:,4) +
276*59599516SKenneth E. Jansen     &                dxidxb(:,2,2) * gl2yi(:,4) +
277*59599516SKenneth E. Jansen     &                dxidxb(:,3,2) * gl3yi(:,4)
278*59599516SKenneth E. Jansen          g3yi(:,4) = dxidxb(:,1,3) * gl1yi(:,4) +
279*59599516SKenneth E. Jansen     &                dxidxb(:,2,3) * gl2yi(:,4) +
280*59599516SKenneth E. Jansen     &                dxidxb(:,3,3) * gl3yi(:,4)
281*59599516SKenneth E. Jansenc
282*59599516SKenneth E. Jansen          g1yi(:,5) = dxidxb(:,1,1) * gl1yi(:,5) +
283*59599516SKenneth E. Jansen     &                dxidxb(:,2,1) * gl2yi(:,5) +
284*59599516SKenneth E. Jansen     &                dxidxb(:,3,1) * gl3yi(:,5)
285*59599516SKenneth E. Jansen          g2yi(:,5) = dxidxb(:,1,2) * gl1yi(:,5) +
286*59599516SKenneth E. Jansen     &                dxidxb(:,2,2) * gl2yi(:,5) +
287*59599516SKenneth E. Jansen     &                dxidxb(:,3,2) * gl3yi(:,5)
288*59599516SKenneth E. Jansen          g3yi(:,5) = dxidxb(:,1,3) * gl1yi(:,5) +
289*59599516SKenneth E. Jansen     &                dxidxb(:,2,3) * gl2yi(:,5) +
290*59599516SKenneth E. Jansen     &                dxidxb(:,3,3) * gl3yi(:,5)
291*59599516SKenneth E. Jansenc
292*59599516SKenneth E. Jansenc.... end grad-v
293*59599516SKenneth E. Jansenc
294*59599516SKenneth E. Jansen        endif
295*59599516SKenneth E. Jansenc
296*59599516SKenneth E. Jansenc.... -------------------->  Boundary Conditions  <--------------------
297*59599516SKenneth E. Jansenc
298*59599516SKenneth E. Jansenc.... compute the Euler boundary conditions
299*59599516SKenneth E. Jansenc
300*59599516SKenneth E. Jansen        rou = zero
301*59599516SKenneth E. Jansen        p   = zero
302*59599516SKenneth E. Jansenc
303*59599516SKenneth E. Jansen        do n = 1, nshlb
304*59599516SKenneth E. Jansen          nodlcl = lnode(n)
305*59599516SKenneth E. Jansenc
306*59599516SKenneth E. Jansen          rou = rou + shpb(:,nodlcl) * BCB(:,n,1)
307*59599516SKenneth E. Jansen          p   = p   + shpb(:,nodlcl) * BCB(:,n,2)
308*59599516SKenneth E. Jansen        enddo
309*59599516SKenneth E. Jansenc
310*59599516SKenneth E. Jansenc.... compute the Navier-Stokes boundary conditions
311*59599516SKenneth E. Jansenc
312*59599516SKenneth E. Jansen        if (Navier .eq. 1) then
313*59599516SKenneth E. Jansenc
314*59599516SKenneth E. Jansen          tau1n = zero
315*59599516SKenneth E. Jansen          tau2n = zero
316*59599516SKenneth E. Jansen          tau3n = zero
317*59599516SKenneth E. Jansen          heat  = zero
318*59599516SKenneth E. Jansenc
319*59599516SKenneth E. Jansen          do n = 1, nshlb
320*59599516SKenneth E. Jansen            nodlcl = lnode(n)
321*59599516SKenneth E. Jansenc
322*59599516SKenneth E. Jansen            tau1n = tau1n + shpb(:,nodlcl) * BCB(:,n,3)
323*59599516SKenneth E. Jansen            tau2n = tau2n + shpb(:,nodlcl) * BCB(:,n,4)
324*59599516SKenneth E. Jansen            tau3n = tau3n + shpb(:,nodlcl) * BCB(:,n,5)
325*59599516SKenneth E. Jansen            heat  = heat  + shpb(:,nodlcl) * BCB(:,n,6)
326*59599516SKenneth E. Jansen          enddo
327*59599516SKenneth E. Jansenc
328*59599516SKenneth E. Jansenc.... flop count
329*59599516SKenneth E. Jansenc
330*59599516SKenneth E. Jansen          flops = flops + (184+30*nshl+8*nshlb)*npro
331*59599516SKenneth E. Jansenc
332*59599516SKenneth E. Jansen        endif
333*59599516SKenneth E. Jansenc
334*59599516SKenneth E. Jansenc.... flop count
335*59599516SKenneth E. Jansenc
336*59599516SKenneth E. Jansen        flops = flops + (27+18*nshl+14*nshlb)*npro
337*59599516SKenneth E. Jansenc
338*59599516SKenneth E. Jansenc.... return
339*59599516SKenneth E. Jansenc
340*59599516SKenneth E. Jansen        return
341*59599516SKenneth E. Jansen        end
342*59599516SKenneth E. Jansenc
343*59599516SKenneth E. Jansenc
344*59599516SKenneth E. Jansenc
345*59599516SKenneth E. Jansen        subroutine e3bvarSclr(ycl,      BCB,     shpb,    shglb,
346*59599516SKenneth E. Jansen     &                        xlb,     lnode,
347*59599516SKenneth E. Jansen     &                        u1,      u2,      u3,
348*59599516SKenneth E. Jansen     &                        g1yti,   g2yti,   g3yti,   WdetJb,
349*59599516SKenneth E. Jansen     &                        bnorm,   T,       rho,     cp,      rou,
350*59599516SKenneth E. Jansen     &                        Sclr,    SclrF)
351*59599516SKenneth E. Jansenc
352*59599516SKenneth E. Jansenc----------------------------------------------------------------------
353*59599516SKenneth E. Jansenc
354*59599516SKenneth E. Jansenc   This routine computes the variables at integration points for
355*59599516SKenneth E. Jansenc the boundary element routine.
356*59599516SKenneth E. Jansenc
357*59599516SKenneth E. Jansenc input:
358*59599516SKenneth E. Jansenc  ycl     (npro,nshl,ndof)      : Y variables
359*59599516SKenneth E. Jansenc  BCB    (npro,nenbl,ndBCB)    : Boundary Condition values
360*59599516SKenneth E. Jansenc  shpb   (npro,nen)            : boundary element shape-functions
361*59599516SKenneth E. Jansenc  shglb  (nsd,nen)             : boundary element grad-shape-functions
362*59599516SKenneth E. Jansenc  xlb    (npro,nshl,nsd)       : nodal coordinates at current step
363*59599516SKenneth E. Jansenc  lnode  (nenb)                : local nodes on the boundary
364*59599516SKenneth E. Jansenc
365*59599516SKenneth E. Jansenc output:
366*59599516SKenneth E. Jansenc  g1yti  (npro)
367*59599516SKenneth E. Jansenc  g2yti  (npro)
368*59599516SKenneth E. Jansenc  g3yti  (npro)
369*59599516SKenneth E. Jansenc  WdetJb (npro)                : weighted Jacobian
370*59599516SKenneth E. Jansenc  bnorm  (npro,nsd)            : outward normal
371*59599516SKenneth E. Jansenc  T      (npro)                : temperature
372*59599516SKenneth E. Jansenc  rho    (npro)                : density
373*59599516SKenneth E. Jansenc  cp     (npro)                : specific energy at constant pressure
374*59599516SKenneth E. Jansenc  rou    (npro)                : BC mass flux
375*59599516SKenneth E. Jansenc  SclrF  (npro)                : BC Scalar  flux
376*59599516SKenneth E. Jansenc
377*59599516SKenneth E. Jansenc Zdenek Johan, Summer 1990.  (Modified from e2bvar.f)
378*59599516SKenneth E. Jansenc Zdenek Johan, Winter 1991.  (Fortran 90)
379*59599516SKenneth E. Jansenc----------------------------------------------------------------------
380*59599516SKenneth E. Jansenc
381*59599516SKenneth E. Jansen        include "common.h"
382*59599516SKenneth E. Jansenc
383*59599516SKenneth E. Jansen        dimension ycl(npro,nshl,ndof),        BCB(npro,nshlb,ndBCB),
384*59599516SKenneth E. Jansen     &            shpb(npro,nshl),           shglb(npro,nsd,nshl),
385*59599516SKenneth E. Jansen     &            xlb(npro,nshl,nsd),
386*59599516SKenneth E. Jansen     &            lnode(27),
387*59599516SKenneth E. Jansen     &            g1yti(npro),               g2yti(npro),
388*59599516SKenneth E. Jansen     &            g3yti(npro),
389*59599516SKenneth E. Jansen     &            WdetJb(npro),              bnorm(npro,nsd),
390*59599516SKenneth E. Jansen     &            pres(npro),                T(npro),
391*59599516SKenneth E. Jansen     &            u1(npro),                  u2(npro),
392*59599516SKenneth E. Jansen     &            u3(npro),                  rho(npro),
393*59599516SKenneth E. Jansen     &            ei(npro),                  cp(npro),
394*59599516SKenneth E. Jansen     &            rk(npro),                  Sclr(npro),
395*59599516SKenneth E. Jansen     &            rou(npro),
396*59599516SKenneth E. Jansen     &            SclrF(npro)
397*59599516SKenneth E. Jansenc
398*59599516SKenneth E. Jansen        dimension dxdxib(npro,nsd,nsd),
399*59599516SKenneth E. Jansen     &            dxidxb(npro,nsd,nsd),      temp(npro),
400*59599516SKenneth E. Jansen     &            temp1(npro),               temp2(npro),
401*59599516SKenneth E. Jansen     &            temp3(npro),               gl1yti(npro),
402*59599516SKenneth E. Jansen     &            gl2yti(npro),              gl3yti(npro)
403*59599516SKenneth E. Jansenc
404*59599516SKenneth E. Jansen        dimension h(npro),                   cv(npro),
405*59599516SKenneth E. Jansen     &            alfap(npro),               betaT(npro),
406*59599516SKenneth E. Jansen     &            gamb(npro),                c(npro),
407*59599516SKenneth E. Jansen     &            tmp(npro),                 v1(npro,nsd),
408*59599516SKenneth E. Jansen     &            v2(npro,nsd)
409*59599516SKenneth E. Jansenc
410*59599516SKenneth E. Jansenc.... ------------------->  integration variables  <--------------------
411*59599516SKenneth E. Jansenc
412*59599516SKenneth E. Jansenc.... compute the primitive variables at the integration point
413*59599516SKenneth E. Jansenc
414*59599516SKenneth E. Jansen        pres = zero
415*59599516SKenneth E. Jansen        u1   = zero
416*59599516SKenneth E. Jansen        u2   = zero
417*59599516SKenneth E. Jansen        u3   = zero
418*59599516SKenneth E. Jansen        T    = zero
419*59599516SKenneth E. Jansen        Sclr = zero
420*59599516SKenneth E. Jansen
421*59599516SKenneth E. Jansen        id  = isclr+5
422*59599516SKenneth E. Jansen        ibb = isclr+6
423*59599516SKenneth E. Jansenc
424*59599516SKenneth E. Jansen        do n = 1, nshlb
425*59599516SKenneth E. Jansen          nodlcl = lnode(n)
426*59599516SKenneth E. Jansenc
427*59599516SKenneth E. Jansen          pres = pres + shpb(:,nodlcl) * ycl(:,nodlcl,1)
428*59599516SKenneth E. Jansen          u1   = u1   + shpb(:,nodlcl) * ycl(:,nodlcl,2)
429*59599516SKenneth E. Jansen          u2   = u2   + shpb(:,nodlcl) * ycl(:,nodlcl,3)
430*59599516SKenneth E. Jansen          u3   = u3   + shpb(:,nodlcl) * ycl(:,nodlcl,4)
431*59599516SKenneth E. Jansen          T    = T    + shpb(:,nodlcl) * ycl(:,nodlcl,5)
432*59599516SKenneth E. Jansen          Sclr = Sclr + shpb(:,nodlcl) * ycl(:,nodlcl,id)
433*59599516SKenneth E. Jansen        enddo
434*59599516SKenneth E. Jansenc
435*59599516SKenneth E. Jansenc.... calculate the specific kinetic energy
436*59599516SKenneth E. Jansenc
437*59599516SKenneth E. Jansen        rk = pt5 * ( u1**2 + u2**2  + u3**2 )
438*59599516SKenneth E. Jansenc
439*59599516SKenneth E. Jansenc.... get the thermodynamic properties
440*59599516SKenneth E. Jansenc
441*59599516SKenneth E. Jansen        ithm = 6
442*59599516SKenneth E. Jansen        if (Navier .eq. 1) ithm = 7
443*59599516SKenneth E. Jansen        call getthm (pres,            T,                  Sclr,
444*59599516SKenneth E. Jansen     &               rk,              rho,                ei,
445*59599516SKenneth E. Jansen     &               h,               tmp,                cv,
446*59599516SKenneth E. Jansen     &               cp,              alfap,              betaT,
447*59599516SKenneth E. Jansen     &               gamb,            c)
448*59599516SKenneth E. Jansenc
449*59599516SKenneth E. Jansen       if (iconvsclr.eq.2) rho=one
450*59599516SKenneth E. Jansenc
451*59599516SKenneth E. Jansenc.... ---------------------->  Element Metrics  <-----------------------
452*59599516SKenneth E. Jansenc
453*59599516SKenneth E. Jansenc.... compute the deformation gradient
454*59599516SKenneth E. Jansenc
455*59599516SKenneth E. Jansen        dxdxib = zero
456*59599516SKenneth E. Jansenc
457*59599516SKenneth E. Jansen        do n = 1, nshl
458*59599516SKenneth E. Jansen           dxdxib(:,1,1) = dxdxib(:,1,1) + xlb(:,n,1) * shglb(:,1,n)
459*59599516SKenneth E. Jansen           dxdxib(:,1,2) = dxdxib(:,1,2) + xlb(:,n,1) * shglb(:,2,n)
460*59599516SKenneth E. Jansen           dxdxib(:,1,3) = dxdxib(:,1,3) + xlb(:,n,1) * shglb(:,3,n)
461*59599516SKenneth E. Jansen           dxdxib(:,2,1) = dxdxib(:,2,1) + xlb(:,n,2) * shglb(:,1,n)
462*59599516SKenneth E. Jansen           dxdxib(:,2,2) = dxdxib(:,2,2) + xlb(:,n,2) * shglb(:,2,n)
463*59599516SKenneth E. Jansen           dxdxib(:,2,3) = dxdxib(:,2,3) + xlb(:,n,2) * shglb(:,3,n)
464*59599516SKenneth E. Jansen           dxdxib(:,3,1) = dxdxib(:,3,1) + xlb(:,n,3) * shglb(:,1,n)
465*59599516SKenneth E. Jansen           dxdxib(:,3,2) = dxdxib(:,3,2) + xlb(:,n,3) * shglb(:,2,n)
466*59599516SKenneth E. Jansen           dxdxib(:,3,3) = dxdxib(:,3,3) + xlb(:,n,3) * shglb(:,3,n)
467*59599516SKenneth E. Jansen        enddo
468*59599516SKenneth E. Jansenc
469*59599516SKenneth E. Jansenc.... compute the normal to the boundary
470*59599516SKenneth E. Jansenc
471*59599516SKenneth E. Jansenc
472*59599516SKenneth E. Jansen        v1 = xlb(:,2,:) - xlb(:,1,:)
473*59599516SKenneth E. Jansen        v2 = xlb(:,3,:) - xlb(:,1,:)
474*59599516SKenneth E. Jansenc
475*59599516SKenneth E. Jansenc.... compute the normal to the boundary. This is achieved by taking
476*59599516SKenneth E. Jansenc     the cross product of two vectors in the plane of the 2-d
477*59599516SKenneth E. Jansenc     boundary face.
478*59599516SKenneth E. Jansenc
479*59599516SKenneth E. Jansenc.....The following are done in order to correct temp1..3
480*59599516SKenneth E. Jansenc     based on the results from compressible code.  This is done only
481*59599516SKenneth E. Jansenc     for wedges, depending on the bounary face.(tri or quad)
482*59599516SKenneth E. Jansenc
483*59599516SKenneth E. Jansen        if (lcsyst .eq. 4) then
484*59599516SKenneth E. Jansen           temp1 = dxdxib(:,2,1) * dxdxib(:,3,3) -
485*59599516SKenneth E. Jansen     &             dxdxib(:,2,3) * dxdxib(:,3,1)
486*59599516SKenneth E. Jansen           temp2 = dxdxib(:,3,1) * dxdxib(:,1,3) -
487*59599516SKenneth E. Jansen     &             dxdxib(:,3,3) * dxdxib(:,1,1)
488*59599516SKenneth E. Jansen           temp3 = dxdxib(:,1,1) * dxdxib(:,2,3) -
489*59599516SKenneth E. Jansen     &             dxdxib(:,1,3) * dxdxib(:,2,1)
490*59599516SKenneth E. Jansen
491*59599516SKenneth E. Jansen        elseif (lcsyst .eq. 1) then
492*59599516SKenneth E. Jansen           temp1 = v1(:,2) * v2(:,3) - v2(:,2) * v1(:,3)
493*59599516SKenneth E. Jansen           temp2 = v2(:,1) * v1(:,3) - v1(:,1) * v2(:,3)
494*59599516SKenneth E. Jansen           temp3 = v1(:,1) * v2(:,2) - v2(:,1) * v1(:,2)
495*59599516SKenneth E. Jansen        else
496*59599516SKenneth E. Jansen           temp1 = - v1(:,2) * v2(:,3) + v2(:,2) * v1(:,3)
497*59599516SKenneth E. Jansen           temp2 = - v2(:,1) * v1(:,3) + v1(:,1) * v2(:,3)
498*59599516SKenneth E. Jansen           temp3 = - v1(:,1) * v2(:,2) + v2(:,1) * v1(:,2)
499*59599516SKenneth E. Jansen        endif
500*59599516SKenneth E. Jansenc
501*59599516SKenneth E. Jansen        temp       = one / sqrt ( temp1**2 + temp2**2 + temp3**2 )
502*59599516SKenneth E. Jansen        bnorm(:,1) = temp1 * temp
503*59599516SKenneth E. Jansen        bnorm(:,2) = temp2 * temp
504*59599516SKenneth E. Jansen        bnorm(:,3) = temp3 * temp
505*59599516SKenneth E. Jansenc
506*59599516SKenneth E. Jansen
507*59599516SKenneth E. Jansen        if (lcsyst .eq. 3) then
508*59599516SKenneth E. Jansen           WdetJb     = (1 - Qwtb(lcsyst,intp)) / (four*temp)
509*59599516SKenneth E. Jansen        elseif (lcsyst .eq. 4) then
510*59599516SKenneth E. Jansen          WdetJb     = Qwtb(lcsyst,intp)/ temp
511*59599516SKenneth E. Jansen        else
512*59599516SKenneth E. Jansen           WdetJb     =Qwtb(lcsyst,intp) / (four*temp)
513*59599516SKenneth E. Jansen        endif
514*59599516SKenneth E. Jansenc
515*59599516SKenneth E. Jansenc.... -------------------------->  Grad-V  <----------------------------
516*59599516SKenneth E. Jansenc
517*59599516SKenneth E. Jansenc.... compute grad-v for Navier-Stokes terms
518*59599516SKenneth E. Jansenc
519*59599516SKenneth E. Jansen        if (Navier .eq. 1) then
520*59599516SKenneth E. Jansenc
521*59599516SKenneth E. Jansenc.... compute the inverse of deformation gradient
522*59599516SKenneth E. Jansenc
523*59599516SKenneth E. Jansen          dxidxb(:,1,1) =   dxdxib(:,2,2) * dxdxib(:,3,3)
524*59599516SKenneth E. Jansen     &                    - dxdxib(:,3,2) * dxdxib(:,2,3)
525*59599516SKenneth E. Jansen          dxidxb(:,1,2) =   dxdxib(:,3,2) * dxdxib(:,1,3)
526*59599516SKenneth E. Jansen     &                    - dxdxib(:,1,2) * dxdxib(:,3,3)
527*59599516SKenneth E. Jansen          dxidxb(:,1,3) =   dxdxib(:,1,2) * dxdxib(:,2,3)
528*59599516SKenneth E. Jansen     &                    - dxdxib(:,1,3) * dxdxib(:,2,2)
529*59599516SKenneth E. Jansen          temp          = one / ( dxidxb(:,1,1) * dxdxib(:,1,1)
530*59599516SKenneth E. Jansen     &                          + dxidxb(:,1,2) * dxdxib(:,2,1)
531*59599516SKenneth E. Jansen     &                          + dxidxb(:,1,3) * dxdxib(:,3,1) )
532*59599516SKenneth E. Jansen          dxidxb(:,1,1) =  dxidxb(:,1,1) * temp
533*59599516SKenneth E. Jansen          dxidxb(:,1,2) =  dxidxb(:,1,2) * temp
534*59599516SKenneth E. Jansen          dxidxb(:,1,3) =  dxidxb(:,1,3) * temp
535*59599516SKenneth E. Jansen          dxidxb(:,2,1) = (dxdxib(:,2,3) * dxdxib(:,3,1)
536*59599516SKenneth E. Jansen     &                   - dxdxib(:,2,1) * dxdxib(:,3,3)) * temp
537*59599516SKenneth E. Jansen          dxidxb(:,2,2) = (dxdxib(:,1,1) * dxdxib(:,3,3)
538*59599516SKenneth E. Jansen     &                   - dxdxib(:,3,1) * dxdxib(:,1,3)) * temp
539*59599516SKenneth E. Jansen          dxidxb(:,2,3) = (dxdxib(:,2,1) * dxdxib(:,1,3)
540*59599516SKenneth E. Jansen     &                   - dxdxib(:,1,1) * dxdxib(:,2,3)) * temp
541*59599516SKenneth E. Jansen          dxidxb(:,3,1) = (dxdxib(:,2,1) * dxdxib(:,3,2)
542*59599516SKenneth E. Jansen     &                   - dxdxib(:,2,2) * dxdxib(:,3,1)) * temp
543*59599516SKenneth E. Jansen          dxidxb(:,3,2) = (dxdxib(:,3,1) * dxdxib(:,1,2)
544*59599516SKenneth E. Jansen     &                   - dxdxib(:,1,1) * dxdxib(:,3,2)) * temp
545*59599516SKenneth E. Jansen          dxidxb(:,3,3) = (dxdxib(:,1,1) * dxdxib(:,2,2)
546*59599516SKenneth E. Jansen     &                   - dxdxib(:,1,2) * dxdxib(:,2,1)) * temp
547*59599516SKenneth E. Jansen
548*59599516SKenneth E. Jansenc
549*59599516SKenneth E. Jansenc.... compute local-grad-Y
550*59599516SKenneth E. Jansenc
551*59599516SKenneth E. Jansen          gl1yti = zero
552*59599516SKenneth E. Jansen          gl2yti = zero
553*59599516SKenneth E. Jansen          gl3yti = zero
554*59599516SKenneth E. Jansenc
555*59599516SKenneth E. Jansen          do n = 1, nshl
556*59599516SKenneth E. Jansen            gl1yti(:) = gl1yti(:) + shglb(:,1,n) * ycl(:,n,id)
557*59599516SKenneth E. Jansen            gl2yti(:) = gl2yti(:) + shglb(:,2,n) * ycl(:,n,id)
558*59599516SKenneth E. Jansen            gl3yti(:) = gl3yti(:) + shglb(:,3,n) * ycl(:,n,id)
559*59599516SKenneth E. Jansen          enddo
560*59599516SKenneth E. Jansenc
561*59599516SKenneth E. Jansenc.... convert local-grads to global-grads
562*59599516SKenneth E. Jansenc
563*59599516SKenneth E. Jansen          g1yti(:) = dxidxb(:,1,1) * gl1yti(:) +
564*59599516SKenneth E. Jansen     &               dxidxb(:,2,1) * gl2yti(:) +
565*59599516SKenneth E. Jansen     &               dxidxb(:,3,1) * gl3yti(:)
566*59599516SKenneth E. Jansen          g2yti(:) = dxidxb(:,1,2) * gl1yti(:) +
567*59599516SKenneth E. Jansen     &               dxidxb(:,2,2) * gl2yti(:) +
568*59599516SKenneth E. Jansen     &               dxidxb(:,3,2) * gl3yti(:)
569*59599516SKenneth E. Jansen          g3yti(:) = dxidxb(:,1,3) * gl1yti(:) +
570*59599516SKenneth E. Jansen     &               dxidxb(:,2,3) * gl2yti(:) +
571*59599516SKenneth E. Jansen     &               dxidxb(:,3,3) * gl3yti(:)
572*59599516SKenneth E. Jansen
573*59599516SKenneth E. Jansenc
574*59599516SKenneth E. Jansenc.... end grad-Sclr
575*59599516SKenneth E. Jansen        endif
576*59599516SKenneth E. Jansenc
577*59599516SKenneth E. Jansenc.... -------------------->  Boundary Conditions  <--------------------
578*59599516SKenneth E. Jansenc
579*59599516SKenneth E. Jansenc.... compute the Euler boundary conditions
580*59599516SKenneth E. Jansenc
581*59599516SKenneth E. Jansen        rou = zero
582*59599516SKenneth E. Jansen        do n = 1, nshlb
583*59599516SKenneth E. Jansen          nodlcl = lnode(n)
584*59599516SKenneth E. Jansen          rou = rou + shpb(:,nodlcl) * BCB(:,n,1)
585*59599516SKenneth E. Jansen        enddo
586*59599516SKenneth E. Jansenc
587*59599516SKenneth E. Jansenc.... impose scalar flux boundary conditions
588*59599516SKenneth E. Jansen        SclrF = zero
589*59599516SKenneth E. Jansen        do n=1,nshlb
590*59599516SKenneth E. Jansen          nodlcl = lnode(n)
591*59599516SKenneth E. Jansen          SclrF = SclrF + shpb(:,nodlcl) * BCB(:,n,ibb)
592*59599516SKenneth E. Jansen        enddo
593*59599516SKenneth E. Jansen
594*59599516SKenneth E. Jansenc
595*59599516SKenneth E. Jansenc.... flop count
596*59599516SKenneth E. Jansenc
597*59599516SKenneth E. Jansen        flops = flops + (27+18*nshl+14*nenbl)*npro
598*59599516SKenneth E. Jansenc
599*59599516SKenneth E. Jansenc.... return
600*59599516SKenneth E. Jansenc
601*59599516SKenneth E. Jansen        return
602*59599516SKenneth E. Jansen        end
603*59599516SKenneth E. Jansen
604