xref: /phasta/phSolver/compressible/e3visc.f (revision 595995161822a203c8467e0e4a253d7bd7d6df32)
1*59599516SKenneth E. Jansen        subroutine e3visc (g1yi,    g2yi,    g3yi,
2*59599516SKenneth E. Jansen     &                     dxidx,
3*59599516SKenneth E. Jansen     &                     rmu,     rlm,     rlm2mu,
4*59599516SKenneth E. Jansen     &                     u1,      u2,      u3,
5*59599516SKenneth E. Jansen     &                     ri,      rmi,     stiff,
6*59599516SKenneth E. Jansen     &                     con,     rlsli,   compK, T)
7*59599516SKenneth E. Jansenc
8*59599516SKenneth E. Jansenc----------------------------------------------------------------------
9*59599516SKenneth E. Jansenc
10*59599516SKenneth E. Jansenc This routine calculates the contribution of viscous and heat fluxes
11*59599516SKenneth E. Jansenc to both RHS and LHS.
12*59599516SKenneth E. Jansenc
13*59599516SKenneth E. Jansenc input:
14*59599516SKenneth E. Jansenc  g1yi   (npro,nflow)         : grad-y in direction 1
15*59599516SKenneth E. Jansenc  g2yi   (npro,nflow)         : grad-y in direction 2
16*59599516SKenneth E. Jansenc  g3yi   (npro,nflow)         : grad-y in direction 3
17*59599516SKenneth E. Jansenc  u1     (npro)              : x1-velocity component
18*59599516SKenneth E. Jansenc  u2     (npro)              : x2-velocity component
19*59599516SKenneth E. Jansenc  u3     (npro)              : x3-velocity component
20*59599516SKenneth E. Jansenc  rmu    (npro)              : viscosity
21*59599516SKenneth E. Jansenc  rlm    (npro)              : Lambda
22*59599516SKenneth E. Jansenc  rlm2mu (npro)              : Lambda + 2 Mu
23*59599516SKenneth E. Jansenc  con    (npro)              : Conductivity
24*59599516SKenneth E. Jansenc  cp     (npro)              : specific heat at constant pressure
25*59599516SKenneth E. Jansenc  rlsli  (npro,6)              : Resolved Reynold's stresses
26*59599516SKenneth E. Jansenc output:
27*59599516SKenneth E. Jansenc  ri     (npro,nflow*(nsd+1)) : partial residual
28*59599516SKenneth E. Jansenc  rmi    (npro,nflow*(nsd+1)) : partial modified residual
29*59599516SKenneth E. Jansenc  stiff  (npro,nsd*nflow,nsd*nflow) : stiffness matrix
30*59599516SKenneth E. Jansenc  compK (npro,10)             : K_ij in (eq.134) A new ... III
31*59599516SKenneth E. Jansenc
32*59599516SKenneth E. Jansenc
33*59599516SKenneth E. Jansenc Zdenek Johan, Summer 1990. (Modified from e2visc.f)
34*59599516SKenneth E. Jansenc Zdenek Johan, Winter 1991. (Fortran 90)
35*59599516SKenneth E. Jansenc Kenneth Jansen, Winter 1997 Primitive Variables
36*59599516SKenneth E. Jansenc----------------------------------------------------------------------
37*59599516SKenneth E. Jansenc
38*59599516SKenneth E. Jansen      include "common.h"
39*59599516SKenneth E. Jansenc
40*59599516SKenneth E. Jansenc     passed arrays
41*59599516SKenneth E. Jansenc
42*59599516SKenneth E. Jansen      dimension g1yi(npro,nflow),           g2yi(npro,nflow),
43*59599516SKenneth E. Jansen     &     g3yi(npro,nflow),
44*59599516SKenneth E. Jansen     &     Sclr(npro),                dxidx(npro,nsd,nsd),
45*59599516SKenneth E. Jansen     &     u1(npro),                  u2(npro),
46*59599516SKenneth E. Jansen     &     u3(npro),                  rho(npro),
47*59599516SKenneth E. Jansen     &     ri(npro,nflow*(nsd+1)),     rmi(npro,nflow*(nsd+1))
48*59599516SKenneth E. Jansenc
49*59599516SKenneth E. Jansenc
50*59599516SKenneth E. Jansen      dimension rmu(npro),                 rlm(npro),
51*59599516SKenneth E. Jansen     &     rlm2mu(npro),                   con(npro),
52*59599516SKenneth E. Jansen     &     stiff(npro,3*nflow,3*nflow),
53*59599516SKenneth E. Jansen     &     rlsli(npro,6),                  compK(npro,10),
54*59599516SKenneth E. Jansen     &     f1(npro), f2(npro), f3(npro), f4(npro),
55*59599516SKenneth E. Jansen     &     f5(npro), f6(npro),  T(npro), rk(npro)
56*59599516SKenneth E. Jansen
57*59599516SKenneth E. Jansen      ttim(23) = ttim(23) - secs(0.0)
58*59599516SKenneth E. Jansenc
59*59599516SKenneth E. Jansenc... dynamic model is now being accounted for in getdiff.f
60*59599516SKenneth E. Jansenc
61*59599516SKenneth E. Jansenc
62*59599516SKenneth E. Jansenc.... --------------------->  Diffusivity Matrix  <-------------------
63*59599516SKenneth E. Jansenc
64*59599516SKenneth E. Jansen
65*59599516SKenneth E. Jansen      if (lhs .eq. 1) then
66*59599516SKenneth E. Jansenc
67*59599516SKenneth E. Jansenc.... K11
68*59599516SKenneth E. Jansenc
69*59599516SKenneth E. Jansen         stiff(:, 2, 2) = rlm2mu
70*59599516SKenneth E. Jansen         stiff(:, 3, 3) = rmu
71*59599516SKenneth E. Jansen         stiff(:, 4, 4) = rmu
72*59599516SKenneth E. Jansen         stiff(:, 5, 2) = rlm2mu * u1
73*59599516SKenneth E. Jansen         stiff(:, 5, 3) = rmu    * u2
74*59599516SKenneth E. Jansen         stiff(:, 5, 4) = rmu    * u3
75*59599516SKenneth E. Jansen         stiff(:, 5, 5) = con
76*59599516SKenneth E. Jansenc
77*59599516SKenneth E. Jansenc.... K12
78*59599516SKenneth E. Jansenc
79*59599516SKenneth E. Jansen         stiff(:, 2, 8) = rlm
80*59599516SKenneth E. Jansen         stiff(:, 3, 7) = rmu
81*59599516SKenneth E. Jansen         stiff(:, 5, 7) = rmu    * u2
82*59599516SKenneth E. Jansen         stiff(:, 5, 8) = rlm    * u1
83*59599516SKenneth E. Jansenc
84*59599516SKenneth E. Jansenc.... K13
85*59599516SKenneth E. Jansenc
86*59599516SKenneth E. Jansen         stiff(:, 2,14) = rlm
87*59599516SKenneth E. Jansen         stiff(:, 4,12) = rmu
88*59599516SKenneth E. Jansen         stiff(:, 5,12) = rmu    * u3
89*59599516SKenneth E. Jansen         stiff(:, 5,14) = rlm    * u1
90*59599516SKenneth E. Jansen
91*59599516SKenneth E. Jansenc
92*59599516SKenneth E. Jansenc.... K21
93*59599516SKenneth E. Jansenc
94*59599516SKenneth E. Jansen         stiff(:, 7, 3) = rmu
95*59599516SKenneth E. Jansen         stiff(:, 8, 2) = rlm
96*59599516SKenneth E. Jansen         stiff(:,10, 2) = rlm    * u2
97*59599516SKenneth E. Jansen         stiff(:,10, 3) = rmu    * u1
98*59599516SKenneth E. Jansen
99*59599516SKenneth E. Jansenc
100*59599516SKenneth E. Jansenc.... K22
101*59599516SKenneth E. Jansenc
102*59599516SKenneth E. Jansen         stiff(:, 7, 7) = rmu
103*59599516SKenneth E. Jansen         stiff(:, 8, 8) = rlm2mu
104*59599516SKenneth E. Jansen         stiff(:, 9, 9) = rmu
105*59599516SKenneth E. Jansen         stiff(:,10, 7) = rmu    * u1
106*59599516SKenneth E. Jansen         stiff(:,10, 8) = rlm2mu * u2
107*59599516SKenneth E. Jansen         stiff(:,10, 9) = rmu    * u3
108*59599516SKenneth E. Jansen         stiff(:,10,10) = con
109*59599516SKenneth E. Jansenc
110*59599516SKenneth E. Jansenc.... K23
111*59599516SKenneth E. Jansenc
112*59599516SKenneth E. Jansen         stiff(:, 8,14) = rlm
113*59599516SKenneth E. Jansen         stiff(:, 9,13) = rmu
114*59599516SKenneth E. Jansen         stiff(:,10,13) = rmu    * u3
115*59599516SKenneth E. Jansen         stiff(:,10,14) = rlm    * u2
116*59599516SKenneth E. Jansenc
117*59599516SKenneth E. Jansenc.... K31
118*59599516SKenneth E. Jansenc
119*59599516SKenneth E. Jansen         stiff(:,12, 4) = rmu
120*59599516SKenneth E. Jansen         stiff(:,14, 2) = rlm
121*59599516SKenneth E. Jansen         stiff(:,15, 2) = rlm    * u3
122*59599516SKenneth E. Jansen         stiff(:,15, 4) = rmu    * u1
123*59599516SKenneth E. Jansenc
124*59599516SKenneth E. Jansenc.... K32
125*59599516SKenneth E. Jansenc
126*59599516SKenneth E. Jansen         stiff(:,13, 9) = rmu
127*59599516SKenneth E. Jansen         stiff(:,14, 8) = rlm
128*59599516SKenneth E. Jansen         stiff(:,15, 8) = rlm    * u3
129*59599516SKenneth E. Jansen         stiff(:,15, 9) = rmu    * u2
130*59599516SKenneth E. Jansenc
131*59599516SKenneth E. Jansenc.... K33
132*59599516SKenneth E. Jansenc
133*59599516SKenneth E. Jansen         stiff(:,12,12) = rmu
134*59599516SKenneth E. Jansen         stiff(:,13,13) = rmu
135*59599516SKenneth E. Jansen         stiff(:,14,14) = rlm2mu
136*59599516SKenneth E. Jansen         stiff(:,15,12) = rmu    * u1
137*59599516SKenneth E. Jansen         stiff(:,15,13) = rmu    * u2
138*59599516SKenneth E. Jansen         stiff(:,15,14) = rlm2mu * u3
139*59599516SKenneth E. Jansen         stiff(:,15,15) = con
140*59599516SKenneth E. Jansen
141*59599516SKenneth E. Jansen      endif
142*59599516SKenneth E. Jansen
143*59599516SKenneth E. Jansen      if (itau .ge. 10) then     ! non-diag tau, buld compK
144*59599516SKenneth E. Jansen
145*59599516SKenneth E. Jansenc
146*59599516SKenneth E. Jansenc.... calculate element factors
147*59599516SKenneth E. Jansenc
148*59599516SKenneth E. Jansen         f1 = dxidx(:,1,1) * dxidx(:,1,1) +
149*59599516SKenneth E. Jansen     &           dxidx(:,2,1) * dxidx(:,2,1) +
150*59599516SKenneth E. Jansen     &           dxidx(:,3,1) * dxidx(:,3,1)
151*59599516SKenneth E. Jansen         f2 = dxidx(:,1,1) * dxidx(:,1,2) +
152*59599516SKenneth E. Jansen     &           dxidx(:,2,1) * dxidx(:,2,2) +
153*59599516SKenneth E. Jansen     &           dxidx(:,3,1) * dxidx(:,3,2)
154*59599516SKenneth E. Jansen         f3 = dxidx(:,1,2) * dxidx(:,1,2) +
155*59599516SKenneth E. Jansen     &           dxidx(:,2,2) * dxidx(:,2,2) +
156*59599516SKenneth E. Jansen     &           dxidx(:,3,2) * dxidx(:,3,2)
157*59599516SKenneth E. Jansen         f4 = dxidx(:,1,1) * dxidx(:,1,3) +
158*59599516SKenneth E. Jansen     &           dxidx(:,2,1) * dxidx(:,2,3) +
159*59599516SKenneth E. Jansen     &           dxidx(:,3,1) * dxidx(:,3,3)
160*59599516SKenneth E. Jansen         f5 = dxidx(:,1,2) * dxidx(:,1,3) +
161*59599516SKenneth E. Jansen     &           dxidx(:,2,2) * dxidx(:,2,3) +
162*59599516SKenneth E. Jansen     &           dxidx(:,3,2) * dxidx(:,3,3)
163*59599516SKenneth E. Jansen         f6 = dxidx(:,1,3) * dxidx(:,1,3) +
164*59599516SKenneth E. Jansen     &           dxidx(:,2,3) * dxidx(:,2,3) +
165*59599516SKenneth E. Jansen     &           dxidx(:,3,3) * dxidx(:,3,3)
166*59599516SKenneth E. Jansenc
167*59599516SKenneth E. Jansenc.... correction for tetrahedra (invariance w.r.t triangular coord)
168*59599516SKenneth E. Jansenc
169*59599516SKenneth E. Jansen         if (lcsyst .eq. 1) then
170*59599516SKenneth E. Jansen            f1 = ( f1 + (dxidx(:,1,1) +
171*59599516SKenneth E. Jansen     &           dxidx(:,2,1) + dxidx(:,3,1))**2 ) * pt39
172*59599516SKenneth E. Jansen            f2 = ( f2 + (dxidx(:,1,1) +
173*59599516SKenneth E. Jansen     &              dxidx(:,2,1) + dxidx(:,3,1)) *
174*59599516SKenneth E. Jansen     &              (dxidx(:,1,2) +
175*59599516SKenneth E. Jansen     &              dxidx(:,2,2) + dxidx(:,3,2)) ) * pt39
176*59599516SKenneth E. Jansen            f3 = ( f3 + (dxidx(:,1,2) +
177*59599516SKenneth E. Jansen     &              dxidx(:,2,2) + dxidx(:,3,2))**2 ) * pt39
178*59599516SKenneth E. Jansen            f4 = ( f4 + (dxidx(:,1,1) +
179*59599516SKenneth E. Jansen     &              dxidx(:,2,1) + dxidx(:,3,1)) *
180*59599516SKenneth E. Jansen     &              (dxidx(:,1,3) +
181*59599516SKenneth E. Jansen     &              dxidx(:,2,3) + dxidx(:,3,3)) ) * pt39
182*59599516SKenneth E. Jansen            f5 = ( f5 + (dxidx(:,1,2) +
183*59599516SKenneth E. Jansen     &              dxidx(:,2,2) + dxidx(:,3,2)) *
184*59599516SKenneth E. Jansen     &              (dxidx(:,1,3) +
185*59599516SKenneth E. Jansen     &              dxidx(:,2,3) + dxidx(:,3,3)) ) * pt39
186*59599516SKenneth E. Jansen            f6 = ( f6 + (dxidx(:,1,3) +
187*59599516SKenneth E. Jansen     &              dxidx(:,2,3) + dxidx(:,3,3))**2 ) * pt39
188*59599516SKenneth E. Jansenc
189*59599516SKenneth E. Jansen            flops = flops + 36*npro
190*59599516SKenneth E. Jansen         endif
191*59599516SKenneth E. Jansenc
192*59599516SKenneth E. Jansenc.... correction for wedges
193*59599516SKenneth E. Jansenc
194*59599516SKenneth E. Jansen         if ((lcsyst .eq. 3) .or. (lcsyst .eq. 4)) then
195*59599516SKenneth E. Jansen            f1 = ( dxidx(:,1,1) * dxidx(:,1,1) +
196*59599516SKenneth E. Jansen     &           dxidx(:,2,1) * dxidx(:,2,1) +
197*59599516SKenneth E. Jansen     &           ( dxidx(:,1,1) + dxidx(:,2,1) )**2 ) * pt57
198*59599516SKenneth E. Jansen     &           + dxidx(:,3,1) * dxidx(:,3,1)
199*59599516SKenneth E. Jansen            f2 = ( dxidx(:,1,1) * dxidx(:,1,2) +
200*59599516SKenneth E. Jansen     &           dxidx(:,2,1) * dxidx(:,2,2) +
201*59599516SKenneth E. Jansen     &           ( dxidx(:,1,1) + dxidx(:,2,1) ) *
202*59599516SKenneth E. Jansen     &           ( dxidx(:,1,2) + dxidx(:,2,2) ) ) * pt57
203*59599516SKenneth E. Jansen     &           + dxidx(:,3,1) * dxidx(:,3,2)
204*59599516SKenneth E. Jansen            f3 = ( dxidx(:,1,2) * dxidx(:,1,2) +
205*59599516SKenneth E. Jansen     &           dxidx(:,2,2) * dxidx(:,2,2) +
206*59599516SKenneth E. Jansen     &           ( dxidx(:,1,2) + dxidx(:,2,2) )**2 ) * pt57
207*59599516SKenneth E. Jansen     &           + dxidx(:,3,2) * dxidx(:,3,2)
208*59599516SKenneth E. Jansen            f4 = ( dxidx(:,1,1) * dxidx(:,1,3) +
209*59599516SKenneth E. Jansen     &           dxidx(:,2,1) * dxidx(:,2,3) +
210*59599516SKenneth E. Jansen     &           ( dxidx(:,1,1) + dxidx(:,2,1) ) *
211*59599516SKenneth E. Jansen     &           ( dxidx(:,1,3) + dxidx(:,2,3) ) ) * pt57
212*59599516SKenneth E. Jansen     &           + dxidx(:,3,1) * dxidx(:,3,3)
213*59599516SKenneth E. Jansen            f5 = ( dxidx(:,1,2) * dxidx(:,1,3) +
214*59599516SKenneth E. Jansen     &           dxidx(:,2,2) * dxidx(:,2,3) +
215*59599516SKenneth E. Jansen     &           ( dxidx(:,1,2) + dxidx(:,2,2) ) *
216*59599516SKenneth E. Jansen     &           ( dxidx(:,1,3) + dxidx(:,2,3) ) ) * pt57
217*59599516SKenneth E. Jansen     &           + dxidx(:,3,2) * dxidx(:,3,3)
218*59599516SKenneth E. Jansen            f6 = ( dxidx(:,1,3) * dxidx(:,1,3) +
219*59599516SKenneth E. Jansen     &           dxidx(:,2,3) * dxidx(:,2,3) +
220*59599516SKenneth E. Jansen     &           ( dxidx(:,1,3) + dxidx(:,2,3) )**2 ) * pt57
221*59599516SKenneth E. Jansen     &           + dxidx(:,3,3) * dxidx(:,3,3)
222*59599516SKenneth E. Jansenc
223*59599516SKenneth E. Jansen            flops = flops + 51*npro
224*59599516SKenneth E. Jansen         endif
225*59599516SKenneth E. Jansenc
226*59599516SKenneth E. Jansenc.... calculate compact K matrix in local parent coordinates
227*59599516SKenneth E. Jansenc.... equation 134 in "A new ... III" only w/ K^tilde_jj. Might need
228*59599516SKenneth E. Jansenc.... complete Kij.
229*59599516SKenneth E. Jansen
230*59599516SKenneth E. Jansen         compK(:, 1) = f1 * T * rlm2mu + f3 * T * rmu
231*59599516SKenneth E. Jansen     &        + f6 * T * rmu
232*59599516SKenneth E. Jansenc
233*59599516SKenneth E. Jansen         compK(:, 2) = f2 * T * (rlm + rmu)
234*59599516SKenneth E. Jansen         compK(:, 3) = f1 * T * rmu + f3 * T * rlm2mu
235*59599516SKenneth E. Jansen     &        + f6 * T * rmu
236*59599516SKenneth E. Jansenc
237*59599516SKenneth E. Jansen         compK(:, 4) = f4 * T * (rlm + rmu)
238*59599516SKenneth E. Jansen         compK(:, 5) = f5 * T * (rlm + rmu)
239*59599516SKenneth E. Jansen         compK(:, 6) = f1 * T * rmu + f3 * T * rmu
240*59599516SKenneth E. Jansen     &        + f6 * T * rlm2mu
241*59599516SKenneth E. Jansenc
242*59599516SKenneth E. Jansen         compK(:, 7) = f1 * T * rlm2mu  * u1 + f2 * T * (rlm + rmu) * u2
243*59599516SKenneth E. Jansen     &        + f3 * T * rmu * u1 + f4 * T * (rlm + rmu) * u3
244*59599516SKenneth E. Jansen     &        + f6 * T * rmu * u1
245*59599516SKenneth E. Jansen         compK(:, 8) = f1 * T * rmu * u2 + f2 * T * (rlm + rmu) * u1
246*59599516SKenneth E. Jansen     &        + f3 * T * rlm2mu  * u2 + f5 * T * (rlm + rmu) * u3
247*59599516SKenneth E. Jansen     &        + f6 * T * rmu * u2
248*59599516SKenneth E. Jansen         compK(:, 9) = f1 * T * rmu * u3 + f3 * T * rmu * u3
249*59599516SKenneth E. Jansen     &        + f4 * T * (rlm + rmu) * u1 + f5 * T * (rlm + rmu) * u2
250*59599516SKenneth E. Jansen     &        + f6 * T * rlm2mu  * u3
251*59599516SKenneth E. Jansen
252*59599516SKenneth E. Jansen         rk=pt5*(u1**2+u2**2+u3**2)
253*59599516SKenneth E. Jansen
254*59599516SKenneth E. Jansen         compK(:,10) = f1 * T * (con    * T + two * rmu * rk + (rlm +
255*59599516SKenneth E. Jansen     &        rmu) * u1**2) + f2 * T * (rlm + rmu) * two * u1 * u2
256*59599516SKenneth E. Jansen     &        + f3 * T * (con    * T + two * rmu * rk + (rlm + rmu) *
257*59599516SKenneth E. Jansen     &        u2**2) + f4 * T * (rlm + rmu) * two * u1 * u3
258*59599516SKenneth E. Jansen     &        + f5 * T * (rlm + rmu) * two * u2 * u3 + f6 * T * (con
259*59599516SKenneth E. Jansen     &        * T + two * rmu * rk + (rlm + rmu) * u3**2)
260*59599516SKenneth E. Jansenc
261*59599516SKenneth E. Jansenc.... flop count
262*59599516SKenneth E. Jansenc
263*59599516SKenneth E. Jansen         flops = flops + 86*npro
264*59599516SKenneth E. Jansenc
265*59599516SKenneth E. Jansenc.... end of GLS
266*59599516SKenneth E. Jansenc
267*59599516SKenneth E. Jansen
268*59599516SKenneth E. Jansen      endif
269*59599516SKenneth E. Jansenc
270*59599516SKenneth E. Jansenc.... --------------------------->  RHS  <-----------------------------
271*59599516SKenneth E. Jansenc
272*59599516SKenneth E. Jansenc.... compute diffusive fluxes and add them to ri and rmi
273*59599516SKenneth E. Jansen
274*59599516SKenneth E. Jansenc
275*59599516SKenneth E. Jansenc.... diffusive flux in x1-direction
276*59599516SKenneth E. Jansenc
277*59599516SKenneth E. Jansenc       rmi(:,1) = zero ! already initialized
278*59599516SKenneth E. Jansen        rmi(:,2) =  rlm2mu      * g1yi(:,2)
279*59599516SKenneth E. Jansen     &               +      rlm * g2yi(:,3)
280*59599516SKenneth E. Jansen     &               +      rlm * g3yi(:,4)
281*59599516SKenneth E. Jansen     &               -      rlsli(:,1)
282*59599516SKenneth E. Jansen        rmi(:,3) =  rmu         * g1yi(:,3)
283*59599516SKenneth E. Jansen     &               +      rmu * g2yi(:,2)
284*59599516SKenneth E. Jansen     &               -      rlsli(:,4)
285*59599516SKenneth E. Jansen        rmi(:,4) =  rmu         * g1yi(:,4)
286*59599516SKenneth E. Jansen     &               +      rmu * g3yi(:,2)
287*59599516SKenneth E. Jansen     &               -      rlsli(:,5)
288*59599516SKenneth E. Jansen        rmi(:,5) =  rlm2mu * u1 * g1yi(:,2) + rmu * u2 * g1yi(:,3)
289*59599516SKenneth E. Jansen     &                                   +    rmu * u3 * g1yi(:,4)
290*59599516SKenneth E. Jansen     &               + rmu * u2 * g2yi(:,2) + rlm * u1 * g2yi(:,3)
291*59599516SKenneth E. Jansen     &               + rmu * u3 * g3yi(:,2) + rlm * u1 * g3yi(:,4)
292*59599516SKenneth E. Jansen     &               + con      * g1yi(:,5)
293*59599516SKenneth E. Jansen
294*59599516SKenneth E. Jansenc
295*59599516SKenneth E. Jansen      ri (:,2:5) = ri (:,2:5) + rmi(:,2:5)
296*59599516SKenneth E. Jansenc     rmi(:,2:5) = rmi(:,2:5) + qdi(:,2:5)
297*59599516SKenneth E. Jansenc
298*59599516SKenneth E. Jansenc     flops = flops + 74*npro
299*59599516SKenneth E. Jansenc
300*59599516SKenneth E. Jansenc.... diffusive flux in x2-direction
301*59599516SKenneth E. Jansenc
302*59599516SKenneth E. Jansenc       rmi(:, 6) = zero
303*59599516SKenneth E. Jansen        rmi(:, 7) =       rmu * g1yi(:,3)
304*59599516SKenneth E. Jansen     &             +      rmu * g2yi(:,2)
305*59599516SKenneth E. Jansen     &             -      rlsli(:,4)
306*59599516SKenneth E. Jansen        rmi(:, 8) =       rlm * g1yi(:,2)
307*59599516SKenneth E. Jansen     &             +   rlm2mu * g2yi(:,3)
308*59599516SKenneth E. Jansen     &             +      rlm * g3yi(:,4)
309*59599516SKenneth E. Jansen     &             -      rlsli(:,2)
310*59599516SKenneth E. Jansen        rmi(:, 9) =       rmu * g2yi(:,4)
311*59599516SKenneth E. Jansen     &             +      rmu * g3yi(:,3)
312*59599516SKenneth E. Jansen     &             -      rlsli(:,6)
313*59599516SKenneth E. Jansen        rmi(:,10) =  rlm * u2 * g1yi(:,2) +    rmu * u1 * g1yi(:,3)
314*59599516SKenneth E. Jansen     &             + rmu * u1 * g2yi(:,2) + rlm2mu * u2 * g2yi(:,3)
315*59599516SKenneth E. Jansen     &             + rmu * u3 * g2yi(:,4)
316*59599516SKenneth E. Jansen     &             + rmu * u3 * g3yi(:,3) +    rlm * u2 * g3yi(:,4)
317*59599516SKenneth E. Jansen     &             +    con   * g2yi(:,5)
318*59599516SKenneth E. Jansenc
319*59599516SKenneth E. Jansen      ri (:,7:10) = ri (:,7:10) + rmi(:,7:10)
320*59599516SKenneth E. Jansenc     rmi(:,7:10) = rmi(:,7:10) + qdi(:,2:5)
321*59599516SKenneth E. Jansenc
322*59599516SKenneth E. Jansenc     flops = flops + 74*npro
323*59599516SKenneth E. Jansenc
324*59599516SKenneth E. Jansenc.... diffusive flux in x3-direction
325*59599516SKenneth E. Jansenc
326*59599516SKenneth E. Jansenc       rmi(:,11) = zero
327*59599516SKenneth E. Jansen        rmi(:,12) =       rmu * g1yi(:,4)
328*59599516SKenneth E. Jansen     &             +      rmu * g3yi(:,2)
329*59599516SKenneth E. Jansen     &             -      rlsli(:,5)
330*59599516SKenneth E. Jansen        rmi(:,13) =       rmu * g2yi(:,4)
331*59599516SKenneth E. Jansen     &             +      rmu * g3yi(:,3)
332*59599516SKenneth E. Jansen     &             -      rlsli(:,6)
333*59599516SKenneth E. Jansen        rmi(:,14) =       rlm * g1yi(:,2)
334*59599516SKenneth E. Jansen     &             +      rlm * g2yi(:,3)
335*59599516SKenneth E. Jansen     &             +   rlm2mu * g3yi(:,4)
336*59599516SKenneth E. Jansen     &             -   rlsli(:,3)
337*59599516SKenneth E. Jansen        rmi(:,15) =     rlm * u3 * g1yi(:,2) + rmu * u1 * g1yi(:,4)
338*59599516SKenneth E. Jansen     &             +    rlm * u3 * g2yi(:,3) + rmu * u2 * g2yi(:,4)
339*59599516SKenneth E. Jansen     &             +    rmu * u1 * g3yi(:,2) + rmu * u2 * g3yi(:,3)
340*59599516SKenneth E. Jansen     &             + rlm2mu * u3 * g3yi(:,4)
341*59599516SKenneth E. Jansen     &             +    con      * g3yi(:,5)
342*59599516SKenneth E. Jansenc
343*59599516SKenneth E. Jansen      ri (:,12:15) = ri (:,12:15) + rmi(:,12:15)
344*59599516SKenneth E. Jansenc
345*59599516SKenneth E. Jansenc     flops = flops + 74*npro
346*59599516SKenneth E. Jansenc
347*59599516SKenneth E. Jansenc  stiff for preconditioner has been eliminated
348*59599516SKenneth E. Jansenc  all preconditioner stuff is in e3bdg.f
349*59599516SKenneth E. Jansenc
350*59599516SKenneth E. Jansen
351*59599516SKenneth E. Jansen      ttim(23) = ttim(23) + secs(0.0)
352*59599516SKenneth E. Jansen
353*59599516SKenneth E. Jansenc
354*59599516SKenneth E. Jansenc.... return
355*59599516SKenneth E. Jansenc
356*59599516SKenneth E. Jansen        return
357*59599516SKenneth E. Jansen        end
358*59599516SKenneth E. Jansenc
359*59599516SKenneth E. Jansenc
360*59599516SKenneth E. Jansenc
361*59599516SKenneth E. Jansen      subroutine e3viscSclr (g1yti,    g2yti,    g3yti,
362*59599516SKenneth E. Jansen     &     rmu,      Sclr,     rho,
363*59599516SKenneth E. Jansen     &     rti,      rmti,     stifft)
364*59599516SKenneth E. Jansenc
365*59599516SKenneth E. Jansenc----------------------------------------------------------------------
366*59599516SKenneth E. Jansenc
367*59599516SKenneth E. Jansenc     This routine calculates the contribution of viscous and heat fluxes
368*59599516SKenneth E. Jansenc     to both RHS and LHS.
369*59599516SKenneth E. Jansenc
370*59599516SKenneth E. Jansenc     input:
371*59599516SKenneth E. Jansenc     g1yti  (npro)              : grad-y in direction 1
372*59599516SKenneth E. Jansenc     g2yti  (npro)              : grad-y in direction 2
373*59599516SKenneth E. Jansenc     g3yti  (npro)              : grad-y in direction 3
374*59599516SKenneth E. Jansenc     rmu    (npro)              : viscosity
375*59599516SKenneth E. Jansenc     Sclr   (npro)              : scalar variable
376*59599516SKenneth E. Jansenc
377*59599516SKenneth E. Jansenc     output:
378*59599516SKenneth E. Jansenc     rti     (npro,nsd+1)       : partial residual
379*59599516SKenneth E. Jansenc     rmti    (npro,nsd+1)       : partial modified residual
380*59599516SKenneth E. Jansenc     stifft  (npro,nsd,nsd)     : stiffness matrix
381*59599516SKenneth E. Jansenc
382*59599516SKenneth E. Jansenc
383*59599516SKenneth E. Jansenc
384*59599516SKenneth E. Jansenc     Zdenek Johan, Summer 1990. (Modified from e2visc.f)
385*59599516SKenneth E. Jansenc     Zdenek Johan, Winter 1991. (Fortran 90)
386*59599516SKenneth E. Jansenc     Kenneth Jansen, Winter 1997 Primitive Variables
387*59599516SKenneth E. Jansenc----------------------------------------------------------------------
388*59599516SKenneth E. Jansenc
389*59599516SKenneth E. Jansen      use turbSA                ! for saSigma
390*59599516SKenneth E. Jansen      include "common.h"
391*59599516SKenneth E. Jansenc
392*59599516SKenneth E. Jansenc     passed arrays
393*59599516SKenneth E. Jansenc
394*59599516SKenneth E. Jansen      dimension g1yti(npro),           g2yti(npro),
395*59599516SKenneth E. Jansen     &     g3yti(npro),           rmu(npro),
396*59599516SKenneth E. Jansen     &     Sclr(npro),            rho(npro),
397*59599516SKenneth E. Jansen     &     rti(npro,nsd+1),       rmti(npro,nsd+1),
398*59599516SKenneth E. Jansen     &     stifft(npro,3,3)
399*59599516SKenneth E. Jansen
400*59599516SKenneth E. Jansen      ttim(23) = ttim(23) - tmr()
401*59599516SKenneth E. Jansen
402*59599516SKenneth E. Jansen      if ((ilset.ne.zero) .and. (isclr.lt.3)) return
403*59599516SKenneth E. Jansenc
404*59599516SKenneth E. Jansenc.... --------------------------->  RHS  <-----------------------------
405*59599516SKenneth E. Jansenc
406*59599516SKenneth E. Jansenc.... --------------------->  Diffusivity Matrix  <-------------------
407*59599516SKenneth E. Jansenc
408*59599516SKenneth E. Jansenc      if (lhs .eq. 1) then
409*59599516SKenneth E. Jansen
410*59599516SKenneth E. Jansen         stifft = zero
411*59599516SKenneth E. Jansenc
412*59599516SKenneth E. Jansenc.... K11
413*59599516SKenneth E. Jansenc
414*59599516SKenneth E. Jansen         stifft(:,1,1)=rmu
415*59599516SKenneth E. Jansen         if (iRANS .lt. 0) then
416*59599516SKenneth E. Jansen            stifft(:,1,1)=saSigmaInv*rho*((rmu/rho)+max(zero,Sclr))
417*59599516SKenneth E. Jansen         endif
418*59599516SKenneth E. Jansenc
419*59599516SKenneth E. Jansenc.... K22
420*59599516SKenneth E. Jansenc
421*59599516SKenneth E. Jansen         stifft(:,2,2)=stifft(:,1,1)
422*59599516SKenneth E. Jansenc
423*59599516SKenneth E. Jansenc.... K33
424*59599516SKenneth E. Jansenc
425*59599516SKenneth E. Jansen         stifft(:,3,3)=stifft(:,1,1)
426*59599516SKenneth E. Jansen
427*59599516SKenneth E. Jansenc      endif
428*59599516SKenneth E. Jansenc
429*59599516SKenneth E. Jansenc.... --------------------------->  RHS  <-----------------------------
430*59599516SKenneth E. Jansenc
431*59599516SKenneth E. Jansenc.... compute diffusive fluxes and add them to ri and rmi
432*59599516SKenneth E. Jansenc
433*59599516SKenneth E. Jansenc.... diffusive fluxes
434*59599516SKenneth E. Jansenc
435*59599516SKenneth E. Jansen      rmti(:,1) = stifft(:,1,1) * g1yti(:)
436*59599516SKenneth E. Jansen      rmti(:,2) = stifft(:,2,2) * g2yti(:)
437*59599516SKenneth E. Jansen      rmti(:,3) = stifft(:,3,3) * g3yti(:)
438*59599516SKenneth E. Jansen
439*59599516SKenneth E. Jansen      rti (:,:) = rti (:,:) + rmti(:,:)
440*59599516SKenneth E. Jansenc     rmi(:,2:5) = rmi(:,2:5) + qdi(:,2:5)
441*59599516SKenneth E. Jansenc
442*59599516SKenneth E. Jansenc     flops = flops + 74*npro
443*59599516SKenneth E. Jansenc
444*59599516SKenneth E. Jansen      ttim(23) = ttim(23) + tmr()
445*59599516SKenneth E. Jansen
446*59599516SKenneth E. Jansenc
447*59599516SKenneth E. Jansenc.... return
448*59599516SKenneth E. Jansenc
449*59599516SKenneth E. Jansen      return
450*59599516SKenneth E. Jansen      end
451