xref: /phasta/phSolver/compressible/e3conv.f (revision 595995161822a203c8467e0e4a253d7bd7d6df32)
1*59599516SKenneth E. Jansen        subroutine e3conv (g1yi,   g2yi,   g3yi,
2*59599516SKenneth E. Jansen     &                     A1,     A2,     A3,
3*59599516SKenneth E. Jansen     &                     rho,    pres,   T,
4*59599516SKenneth E. Jansen     &                     ei,     rk,     u1,
5*59599516SKenneth E. Jansen     &                     u2,     u3,     rLyi,
6*59599516SKenneth E. Jansen     &                     ri,     rmi,    EGmass,
7*59599516SKenneth E. Jansen     &                     shg,    shape,  WdetJ )
8*59599516SKenneth E. Jansenc
9*59599516SKenneth E. Jansenc----------------------------------------------------------------------
10*59599516SKenneth E. Jansenc
11*59599516SKenneth E. Jansenc This routine calculates the contribution of Galerkin part of the
12*59599516SKenneth E. Jansenc Convective term (Time and Euler fluxes) to both RHS and LHS.
13*59599516SKenneth E. Jansenc
14*59599516SKenneth E. Jansenc input:
15*59599516SKenneth E. Jansenc  g1yi   (npro,nflow)    : grad-y in direction 1
16*59599516SKenneth E. Jansenc  g2yi   (npro,nflow)    : grad-y in direction 2
17*59599516SKenneth E. Jansenc  g3yi   (npro,nflow)    : grad-y in direction 3
18*59599516SKenneth E. Jansenc  A1    (npro,nflow,nflow)  : A-1
19*59599516SKenneth E. Jansenc  A2    (npro,nflow,nflow)  : A-2
20*59599516SKenneth E. Jansenc  A3    (npro,nflow,nflow)  : A-3
21*59599516SKenneth E. Jansenc  rho    (npro)         : density
22*59599516SKenneth E. Jansenc  pres   (npro)         : pressure
23*59599516SKenneth E. Jansenc  T      (npro)         : temperature
24*59599516SKenneth E. Jansenc  ei     (npro)         : internal energy
25*59599516SKenneth E. Jansenc  rk     (npro)         : kinetic energy
26*59599516SKenneth E. Jansenc  u1     (npro)         : x1-velocity component
27*59599516SKenneth E. Jansenc  u2     (npro)         : x2-velocity component
28*59599516SKenneth E. Jansenc  u3     (npro)         : x3-velocity component
29*59599516SKenneth E. Jansenc  shg    (npro,nshl,nsd) : global grad's of shape functions
30*59599516SKenneth E. Jansenc  shape  (npro,nshl)  : element shape functions
31*59599516SKenneth E. Jansenc  WdetJ  (npro)         : weighted Jacobian determinant
32*59599516SKenneth E. Jansenc
33*59599516SKenneth E. Jansenc output:
34*59599516SKenneth E. Jansenc  rLyi   (npro,nflow)           : least-squares residual vector
35*59599516SKenneth E. Jansenc  ri     (npro,nflow*(nsd+1))   : partial residual
36*59599516SKenneth E. Jansenc  rmi    (npro,nflow*(nsd+1))   : partial modified residual
37*59599516SKenneth E. Jansenc  EGmass (npro,nedof,nedof)    : partial LHS tangent matrix
38*59599516SKenneth E. Jansenc
39*59599516SKenneth E. Jansenc
40*59599516SKenneth E. Jansenc Zdenek Johan, Summer 1990. (Modified from e2conv.f)
41*59599516SKenneth E. Jansenc Zdenek Johan, Winter 1991. (Fortran 90)
42*59599516SKenneth E. Jansenc Kenneth Jansen, Winter 1997 Primitive Variables
43*59599516SKenneth E. Jansenc----------------------------------------------------------------------
44*59599516SKenneth E. Jansenc
45*59599516SKenneth E. Jansen        include "common.h"
46*59599516SKenneth E. Jansenc
47*59599516SKenneth E. Jansenc  passed arrays
48*59599516SKenneth E. Jansenc
49*59599516SKenneth E. Jansen        dimension g1yi(npro,nflow),           g2yi(npro,nflow),
50*59599516SKenneth E. Jansen     &            g3yi(npro,nflow),
51*59599516SKenneth E. Jansen     &            A1(npro,nflow,nflow),
52*59599516SKenneth E. Jansen     &            A2(npro,nflow,nflow),       A3(npro,nflow,nflow),
53*59599516SKenneth E. Jansen     &            rho(npro),                pres(npro),
54*59599516SKenneth E. Jansen     &            T(npro),                  ei(npro),
55*59599516SKenneth E. Jansen     &            rk(npro),                 u1(npro),
56*59599516SKenneth E. Jansen     &            u2(npro),                 u3(npro),
57*59599516SKenneth E. Jansen     &            rLyi(npro,nflow),          ri(npro,nflow*(nsd+1)),
58*59599516SKenneth E. Jansen     &            rmi(npro,nflow*(nsd+1)),   EGmass(npro,nedof,nedof),
59*59599516SKenneth E. Jansen     &            shg(npro,nshl,nsd),       shape(npro,nshl),
60*59599516SKenneth E. Jansen     &            WdetJ(npro)
61*59599516SKenneth E. Jansenc
62*59599516SKenneth E. Jansenc  local arrays
63*59599516SKenneth E. Jansenc
64*59599516SKenneth E. Jansen        dimension AiNbi(npro,nflow,nflow),     fact1(npro),
65*59599516SKenneth E. Jansen     &            fact2(npro),               fact3(npro)
66*59599516SKenneth E. Jansen
67*59599516SKenneth E. Jansen	ttim(22) = ttim(22) - secs(0.0)
68*59599516SKenneth E. Jansen
69*59599516SKenneth E. Jansenc
70*59599516SKenneth E. Jansenc.... ---------------------->  RHS, Euler Flux  <----------------------
71*59599516SKenneth E. Jansenc
72*59599516SKenneth E. Jansen        if ((ires .eq. 1) .or. (ires .eq. 3)) then
73*59599516SKenneth E. Jansenc
74*59599516SKenneth E. Jansenc.... calculate integrated by part contribution of Euler flux (Galerkin)
75*59599516SKenneth E. Jansenc
76*59599516SKenneth E. Jansen          ri(:, 1) = (- u1) * rho
77*59599516SKenneth E. Jansen          ri(:, 2) = (- u1) * rho * u1 - pres
78*59599516SKenneth E. Jansen          ri(:, 3) = (- u1) * rho * u2
79*59599516SKenneth E. Jansen          ri(:, 4) = (- u1) * rho * u3
80*59599516SKenneth E. Jansen          ri(:, 5) = (- u1) * rho * (ei + rk) - u1 * pres
81*59599516SKenneth E. Jansenc
82*59599516SKenneth E. Jansen          ri(:, 6) = (- u2) * rho
83*59599516SKenneth E. Jansen          ri(:, 7) = (- u2) * rho * u1
84*59599516SKenneth E. Jansen          ri(:, 8) = (- u2) * rho * u2 - pres
85*59599516SKenneth E. Jansen          ri(:, 9) = (- u2) * rho * u3
86*59599516SKenneth E. Jansen          ri(:,10) = (- u2) * rho * (ei + rk) - u2 * pres
87*59599516SKenneth E. Jansenc
88*59599516SKenneth E. Jansen          ri(:,11) = (- u3) * rho
89*59599516SKenneth E. Jansen          ri(:,12) = (- u3) * rho * u1
90*59599516SKenneth E. Jansen          ri(:,13) = (- u3) * rho * u2
91*59599516SKenneth E. Jansen          ri(:,14) = (- u3) * rho * u3 - pres
92*59599516SKenneth E. Jansen          ri(:,15) = (- u3) * rho * (ei + rk) - u3 * pres
93*59599516SKenneth E. Jansenc
94*59599516SKenneth E. Jansen          flops = flops + 28*npro
95*59599516SKenneth E. Jansenc
96*59599516SKenneth E. Jansen        endif
97*59599516SKenneth E. Jansenc
98*59599516SKenneth E. Jansenc.... calculate ( A_i Y,i ) --> rLyi   Commented out zeros of A matrices
99*59599516SKenneth E. Jansenc
100*59599516SKenneth E. Jansen        rLyi(:,1) =
101*59599516SKenneth E. Jansen     &              A1(:,1,1) * g1yi(:,1)
102*59599516SKenneth E. Jansen     &            + A1(:,1,2) * g1yi(:,2)
103*59599516SKenneth E. Jansenc    &            + A1(:,1,3) * g1yi(:,3)
104*59599516SKenneth E. Jansenc    &            + A1(:,1,4) * g1yi(:,4)
105*59599516SKenneth E. Jansen     &            + A1(:,1,5) * g1yi(:,5)
106*59599516SKenneth E. Jansen     &            + A2(:,1,1) * g2yi(:,1)
107*59599516SKenneth E. Jansenc    &            + A2(:,1,2) * g2yi(:,2)
108*59599516SKenneth E. Jansen     &            + A2(:,1,3) * g2yi(:,3)
109*59599516SKenneth E. Jansenc    &            + A2(:,1,4) * g2yi(:,4)
110*59599516SKenneth E. Jansen     &            + A2(:,1,5) * g2yi(:,5)
111*59599516SKenneth E. Jansen     &            + A3(:,1,1) * g3yi(:,1)
112*59599516SKenneth E. Jansenc    &            + A3(:,1,2) * g3yi(:,2)
113*59599516SKenneth E. Jansenc    &            + A3(:,1,3) * g3yi(:,3)
114*59599516SKenneth E. Jansen     &            + A3(:,1,4) * g3yi(:,4)
115*59599516SKenneth E. Jansen     &            + A3(:,1,5) * g3yi(:,5)
116*59599516SKenneth E. Jansen        rLyi(:,2) =
117*59599516SKenneth E. Jansen     &              A1(:,2,1) * g1yi(:,1)
118*59599516SKenneth E. Jansen     &            + A1(:,2,2) * g1yi(:,2)
119*59599516SKenneth E. Jansenc    &            + A1(:,2,3) * g1yi(:,3)
120*59599516SKenneth E. Jansenc    &            + A1(:,2,4) * g1yi(:,4)
121*59599516SKenneth E. Jansen     &            + A1(:,2,5) * g1yi(:,5)
122*59599516SKenneth E. Jansen     &            + A2(:,2,1) * g2yi(:,1)
123*59599516SKenneth E. Jansen     &            + A2(:,2,2) * g2yi(:,2)
124*59599516SKenneth E. Jansen     &            + A2(:,2,3) * g2yi(:,3)
125*59599516SKenneth E. Jansenc    &            + A2(:,2,4) * g2yi(:,4)
126*59599516SKenneth E. Jansen     &            + A2(:,2,5) * g2yi(:,5)
127*59599516SKenneth E. Jansen     &            + A3(:,2,1) * g3yi(:,1)
128*59599516SKenneth E. Jansen     &            + A3(:,2,2) * g3yi(:,2)
129*59599516SKenneth E. Jansenc    &            + A3(:,2,3) * g3yi(:,3)
130*59599516SKenneth E. Jansen     &            + A3(:,2,4) * g3yi(:,4)
131*59599516SKenneth E. Jansen     &            + A3(:,2,5) * g3yi(:,5)
132*59599516SKenneth E. Jansen        rLyi(:,3) =
133*59599516SKenneth E. Jansen     &              A1(:,3,1) * g1yi(:,1)
134*59599516SKenneth E. Jansen     &            + A1(:,3,2) * g1yi(:,2)
135*59599516SKenneth E. Jansen     &            + A1(:,3,3) * g1yi(:,3)
136*59599516SKenneth E. Jansenc    &            + A1(:,3,4) * g1yi(:,4)
137*59599516SKenneth E. Jansen     &            + A1(:,3,5) * g1yi(:,5)
138*59599516SKenneth E. Jansen     &            + A2(:,3,1) * g2yi(:,1)
139*59599516SKenneth E. Jansenc    &            + A2(:,3,2) * g2yi(:,2)
140*59599516SKenneth E. Jansen     &            + A2(:,3,3) * g2yi(:,3)
141*59599516SKenneth E. Jansenc    &            + A2(:,3,4) * g2yi(:,4)
142*59599516SKenneth E. Jansen     &            + A2(:,3,5) * g2yi(:,5)
143*59599516SKenneth E. Jansen     &            + A3(:,3,1) * g3yi(:,1)
144*59599516SKenneth E. Jansenc    &            + A3(:,3,2) * g3yi(:,2)
145*59599516SKenneth E. Jansen     &            + A3(:,3,3) * g3yi(:,3)
146*59599516SKenneth E. Jansen     &            + A3(:,3,4) * g3yi(:,4)
147*59599516SKenneth E. Jansen     &            + A3(:,3,5) * g3yi(:,5)
148*59599516SKenneth E. Jansen        rLyi(:,4) =
149*59599516SKenneth E. Jansen     &              A1(:,4,1) * g1yi(:,1)
150*59599516SKenneth E. Jansen     &            + A1(:,4,2) * g1yi(:,2)
151*59599516SKenneth E. Jansenc    &            + A1(:,4,3) * g1yi(:,3)
152*59599516SKenneth E. Jansen     &            + A1(:,4,4) * g1yi(:,4)
153*59599516SKenneth E. Jansen     &            + A1(:,4,5) * g1yi(:,5)
154*59599516SKenneth E. Jansen     &            + A2(:,4,1) * g2yi(:,1)
155*59599516SKenneth E. Jansenc    &            + A2(:,4,2) * g2yi(:,2)
156*59599516SKenneth E. Jansen     &            + A2(:,4,3) * g2yi(:,3)
157*59599516SKenneth E. Jansen     &            + A2(:,4,4) * g2yi(:,4)
158*59599516SKenneth E. Jansen     &            + A2(:,4,5) * g2yi(:,5)
159*59599516SKenneth E. Jansen     &            + A3(:,4,1) * g3yi(:,1)
160*59599516SKenneth E. Jansenc    &            + A3(:,4,2) * g3yi(:,2)
161*59599516SKenneth E. Jansenc    &            + A3(:,4,3) * g3yi(:,3)
162*59599516SKenneth E. Jansen     &            + A3(:,4,4) * g3yi(:,4)
163*59599516SKenneth E. Jansen     &            + A3(:,4,5) * g3yi(:,5)
164*59599516SKenneth E. Jansen        rLyi(:,5) =
165*59599516SKenneth E. Jansen     &              A1(:,5,1) * g1yi(:,1)
166*59599516SKenneth E. Jansen     &            + A1(:,5,2) * g1yi(:,2)
167*59599516SKenneth E. Jansen     &            + A1(:,5,3) * g1yi(:,3)
168*59599516SKenneth E. Jansen     &            + A1(:,5,4) * g1yi(:,4)
169*59599516SKenneth E. Jansen     &            + A1(:,5,5) * g1yi(:,5)
170*59599516SKenneth E. Jansen     &            + A2(:,5,1) * g2yi(:,1)
171*59599516SKenneth E. Jansen     &            + A2(:,5,2) * g2yi(:,2)
172*59599516SKenneth E. Jansen     &            + A2(:,5,3) * g2yi(:,3)
173*59599516SKenneth E. Jansen     &            + A2(:,5,4) * g2yi(:,4)
174*59599516SKenneth E. Jansen     &            + A2(:,5,5) * g2yi(:,5)
175*59599516SKenneth E. Jansen     &            + A3(:,5,1) * g3yi(:,1)
176*59599516SKenneth E. Jansen     &            + A3(:,5,2) * g3yi(:,2)
177*59599516SKenneth E. Jansen     &            + A3(:,5,3) * g3yi(:,3)
178*59599516SKenneth E. Jansen     &            + A3(:,5,4) * g3yi(:,4)
179*59599516SKenneth E. Jansen     &            + A3(:,5,5) * g3yi(:,5)
180*59599516SKenneth E. Jansenc
181*59599516SKenneth E. Jansenc.... add contribution to rmi
182*59599516SKenneth E. Jansenc
183*59599516SKenneth E. Jansen        if ((ires .eq. 2) .or. (ires .eq. 3))
184*59599516SKenneth E. Jansen     &    rmi(:,16:20) = rLyi  ! modified residual uses non i.b.p form of conv.
185*59599516SKenneth E. Jansenc
186*59599516SKenneth E. Jansenc.... ---------------------->  LHS   <-----------------------
187*59599516SKenneth E. Jansenc
188*59599516SKenneth E. Jansen        if (lhs .eq. 1) then
189*59599516SKenneth E. Jansenc
190*59599516SKenneth E. Jansenc.... loop through the columns
191*59599516SKenneth E. Jansenc
192*59599516SKenneth E. Jansen        do j = 1, nshl
193*59599516SKenneth E. Jansen           j0 = nflow * (j - 1)
194*59599516SKenneth E. Jansenc
195*59599516SKenneth E. Jansenc.... compute some useful factors
196*59599516SKenneth E. Jansenc
197*59599516SKenneth E. Jansen           fact1 = WdetJ * shg(:,j,1)
198*59599516SKenneth E. Jansen           fact2 = WdetJ * shg(:,j,2)
199*59599516SKenneth E. Jansen           fact3 = WdetJ * shg(:,j,3)
200*59599516SKenneth E. Jansenc
201*59599516SKenneth E. Jansenc.... first compute (A_i N_b,i)
202*59599516SKenneth E. Jansenc
203*59599516SKenneth E. Jansen           AiNbi(:,1,1) =
204*59599516SKenneth E. Jansen     &                    fact1 * A1(:,1,1)
205*59599516SKenneth E. Jansen     &                  + fact2 * A2(:,1,1)
206*59599516SKenneth E. Jansen     &                  + fact3 * A3(:,1,1)
207*59599516SKenneth E. Jansen           AiNbi(:,1,2) =
208*59599516SKenneth E. Jansen     &                    fact1 * A1(:,1,2)
209*59599516SKenneth E. Jansen     &                  + fact2 * A2(:,1,2)
210*59599516SKenneth E. Jansen     &                  + fact3 * A3(:,1,2)
211*59599516SKenneth E. Jansen           AiNbi(:,1,3) =
212*59599516SKenneth E. Jansen     &                    fact1 * A1(:,1,3)
213*59599516SKenneth E. Jansen     &                  + fact2 * A2(:,1,3)
214*59599516SKenneth E. Jansen     &                  + fact3 * A3(:,1,3)
215*59599516SKenneth E. Jansen           AiNbi(:,1,4) =
216*59599516SKenneth E. Jansen     &                    fact1 * A1(:,1,4)
217*59599516SKenneth E. Jansen     &                  + fact2 * A2(:,1,4)
218*59599516SKenneth E. Jansen     &                  + fact3 * A3(:,1,4)
219*59599516SKenneth E. Jansen           AiNbi(:,1,5) =
220*59599516SKenneth E. Jansen     &                    fact1 * A1(:,1,5)
221*59599516SKenneth E. Jansen     &                  + fact2 * A2(:,1,5)
222*59599516SKenneth E. Jansen     &                  + fact3 * A3(:,1,5)
223*59599516SKenneth E. Jansenc
224*59599516SKenneth E. Jansen           AiNbi(:,2,1) =
225*59599516SKenneth E. Jansen     &                    fact1 * A1(:,2,1)
226*59599516SKenneth E. Jansen     &                  + fact2 * A2(:,2,1)
227*59599516SKenneth E. Jansen     &                  + fact3 * A3(:,2,1)
228*59599516SKenneth E. Jansen           AiNbi(:,2,2) =
229*59599516SKenneth E. Jansen     &                    fact1 * A1(:,2,2)
230*59599516SKenneth E. Jansen     &                  + fact2 * A2(:,2,2)
231*59599516SKenneth E. Jansen     &                  + fact3 * A3(:,2,2)
232*59599516SKenneth E. Jansen           AiNbi(:,2,3) =
233*59599516SKenneth E. Jansen     &                    fact1 * A1(:,2,3)
234*59599516SKenneth E. Jansen     &                  + fact2 * A2(:,2,3)
235*59599516SKenneth E. Jansen     &                  + fact3 * A3(:,2,3)
236*59599516SKenneth E. Jansen           AiNbi(:,2,4) =
237*59599516SKenneth E. Jansen     &                    fact1 * A1(:,2,4)
238*59599516SKenneth E. Jansen     &                  + fact2 * A2(:,2,4)
239*59599516SKenneth E. Jansen     &                  + fact3 * A3(:,2,4)
240*59599516SKenneth E. Jansen           AiNbi(:,2,5) =
241*59599516SKenneth E. Jansen     &                    fact1 * A1(:,2,5)
242*59599516SKenneth E. Jansen     &                  + fact2 * A2(:,2,5)
243*59599516SKenneth E. Jansen     &                  + fact3 * A3(:,2,5)
244*59599516SKenneth E. Jansenc
245*59599516SKenneth E. Jansen           AiNbi(:,3,1) =
246*59599516SKenneth E. Jansen     &                    fact1 * A1(:,3,1)
247*59599516SKenneth E. Jansen     &                  + fact2 * A2(:,3,1)
248*59599516SKenneth E. Jansen     &                  + fact3 * A3(:,3,1)
249*59599516SKenneth E. Jansen           AiNbi(:,3,2) =
250*59599516SKenneth E. Jansen     &                    fact1 * A1(:,3,2)
251*59599516SKenneth E. Jansen     &                  + fact2 * A2(:,3,2)
252*59599516SKenneth E. Jansen     &                  + fact3 * A3(:,3,2)
253*59599516SKenneth E. Jansen           AiNbi(:,3,3) =
254*59599516SKenneth E. Jansen     &                    fact1 * A1(:,3,3)
255*59599516SKenneth E. Jansen     &                  + fact2 * A2(:,3,3)
256*59599516SKenneth E. Jansen     &                  + fact3 * A3(:,3,3)
257*59599516SKenneth E. Jansen           AiNbi(:,3,4) =
258*59599516SKenneth E. Jansen     &                    fact1 * A1(:,3,4)
259*59599516SKenneth E. Jansen     &                  + fact2 * A2(:,3,4)
260*59599516SKenneth E. Jansen     &                  + fact3 * A3(:,3,4)
261*59599516SKenneth E. Jansen           AiNbi(:,3,5) =
262*59599516SKenneth E. Jansen     &                    fact1 * A1(:,3,5)
263*59599516SKenneth E. Jansen     &                  + fact2 * A2(:,3,5)
264*59599516SKenneth E. Jansen     &                  + fact3 * A3(:,3,5)
265*59599516SKenneth E. Jansenc
266*59599516SKenneth E. Jansen           AiNbi(:,4,1) =
267*59599516SKenneth E. Jansen     &                    fact1 * A1(:,4,1)
268*59599516SKenneth E. Jansen     &                  + fact2 * A2(:,4,1)
269*59599516SKenneth E. Jansen     &                  + fact3 * A3(:,4,1)
270*59599516SKenneth E. Jansen           AiNbi(:,4,2) =
271*59599516SKenneth E. Jansen     &                    fact1 * A1(:,4,2)
272*59599516SKenneth E. Jansen     &                  + fact2 * A2(:,4,2)
273*59599516SKenneth E. Jansen     &                  + fact3 * A3(:,4,2)
274*59599516SKenneth E. Jansen           AiNbi(:,4,3) =
275*59599516SKenneth E. Jansen     &                    fact1 * A1(:,4,3)
276*59599516SKenneth E. Jansen     &                  + fact2 * A2(:,4,3)
277*59599516SKenneth E. Jansen     &                  + fact3 * A3(:,4,3)
278*59599516SKenneth E. Jansen           AiNbi(:,4,4) =
279*59599516SKenneth E. Jansen     &                    fact1 * A1(:,4,4)
280*59599516SKenneth E. Jansen     &                  + fact2 * A2(:,4,4)
281*59599516SKenneth E. Jansen     &                  + fact3 * A3(:,4,4)
282*59599516SKenneth E. Jansen           AiNbi(:,4,5) =
283*59599516SKenneth E. Jansen     &                    fact1 * A1(:,4,5)
284*59599516SKenneth E. Jansen     &                  + fact2 * A2(:,4,5)
285*59599516SKenneth E. Jansen     &                  + fact3 * A3(:,4,5)
286*59599516SKenneth E. Jansenc
287*59599516SKenneth E. Jansen           AiNbi(:,5,1) =
288*59599516SKenneth E. Jansen     &                    fact1 * A1(:,5,1)
289*59599516SKenneth E. Jansen     &                  + fact2 * A2(:,5,1)
290*59599516SKenneth E. Jansen     &                  + fact3 * A3(:,5,1)
291*59599516SKenneth E. Jansen           AiNbi(:,5,2) =
292*59599516SKenneth E. Jansen     &                    fact1 * A1(:,5,2)
293*59599516SKenneth E. Jansen     &                  + fact2 * A2(:,5,2)
294*59599516SKenneth E. Jansen     &                  + fact3 * A3(:,5,2)
295*59599516SKenneth E. Jansen           AiNbi(:,5,3) =
296*59599516SKenneth E. Jansen     &                    fact1 * A1(:,5,3)
297*59599516SKenneth E. Jansen     &                  + fact2 * A2(:,5,3)
298*59599516SKenneth E. Jansen     &                  + fact3 * A3(:,5,3)
299*59599516SKenneth E. Jansen           AiNbi(:,5,4) =
300*59599516SKenneth E. Jansen     &                    fact1 * A1(:,5,4)
301*59599516SKenneth E. Jansen     &                  + fact2 * A2(:,5,4)
302*59599516SKenneth E. Jansen     &                  + fact3 * A3(:,5,4)
303*59599516SKenneth E. Jansen           AiNbi(:,5,5) =
304*59599516SKenneth E. Jansen     &                    fact1 * A1(:,5,5)
305*59599516SKenneth E. Jansen     &                  + fact2 * A2(:,5,5)
306*59599516SKenneth E. Jansen     &                  + fact3 * A3(:,5,5)
307*59599516SKenneth E. Jansenc
308*59599516SKenneth E. Jansenc.... now loop through the row nodes and add (N_a A_i N_b,i) to
309*59599516SKenneth E. Jansenc     the tangent matrix.
310*59599516SKenneth E. Jansenc
311*59599516SKenneth E. Jansen           do i = 1, nshl
312*59599516SKenneth E. Jansen              i0 = nflow * (i - 1)
313*59599516SKenneth E. Jansenc
314*59599516SKenneth E. Jansenc.... loop through dof's
315*59599516SKenneth E. Jansenc
316*59599516SKenneth E. Jansen              do jdof = 1, nflow
317*59599516SKenneth E. Jansen                 jl = j0 + jdof
318*59599516SKenneth E. Jansen
319*59599516SKenneth E. Jansen                 EGmass(:,i0+1,jl) = EGmass(:,i0+1,jl) +
320*59599516SKenneth E. Jansen     &                               shape(:,i) * AiNbi(:,1,jdof)
321*59599516SKenneth E. Jansen
322*59599516SKenneth E. Jansen                 EGmass(:,i0+2,jl) = EGmass(:,i0+2,jl) +
323*59599516SKenneth E. Jansen     &                               shape(:,i) * AiNbi(:,2,jdof)
324*59599516SKenneth E. Jansen
325*59599516SKenneth E. Jansen                 EGmass(:,i0+3,jl) = EGmass(:,i0+3,jl) +
326*59599516SKenneth E. Jansen     &                               shape(:,i) * AiNbi(:,3,jdof)
327*59599516SKenneth E. Jansen
328*59599516SKenneth E. Jansen                 EGmass(:,i0+4,jl) = EGmass(:,i0+4,jl) +
329*59599516SKenneth E. Jansen     &                               shape(:,i) * AiNbi(:,4,jdof)
330*59599516SKenneth E. Jansen
331*59599516SKenneth E. Jansen                 EGmass(:,i0+5,jl) = EGmass(:,i0+5,jl) +
332*59599516SKenneth E. Jansen     &                               shape(:,i) * AiNbi(:,5,jdof)
333*59599516SKenneth E. Jansen              enddo
334*59599516SKenneth E. Jansenc
335*59599516SKenneth E. Jansenc.... end loop on rows
336*59599516SKenneth E. Jansenc
337*59599516SKenneth E. Jansen           enddo
338*59599516SKenneth E. Jansenc
339*59599516SKenneth E. Jansenc.... end loop on columns
340*59599516SKenneth E. Jansenc
341*59599516SKenneth E. Jansen        enddo
342*59599516SKenneth E. Jansenc
343*59599516SKenneth E. Jansenc.... end of LHS tangent matrix computation
344*59599516SKenneth E. Jansenc
345*59599516SKenneth E. Jansen        endif
346*59599516SKenneth E. Jansen
347*59599516SKenneth E. Jansen        ttim(22) = ttim(22) + secs(0.0)
348*59599516SKenneth E. Jansenc
349*59599516SKenneth E. Jansenc.... return
350*59599516SKenneth E. Jansenc
351*59599516SKenneth E. Jansen        return
352*59599516SKenneth E. Jansen        end
353*59599516SKenneth E. Jansenc
354*59599516SKenneth E. Jansenc
355*59599516SKenneth E. Jansenc
356*59599516SKenneth E. Jansen        subroutine e3convSclr (g1yti,   g2yti,   g3yti,
357*59599516SKenneth E. Jansen     &                         A1t,     A2t,     A3t,
358*59599516SKenneth E. Jansen     &                         rho,     u1,      Sclr,
359*59599516SKenneth E. Jansen     &                         u2,      u3,      rLyti,
360*59599516SKenneth E. Jansen     &                         rti,     rmti,    EGmasst,
361*59599516SKenneth E. Jansen     &                         shg,     shape,   WdetJ)
362*59599516SKenneth E. Jansenc
363*59599516SKenneth E. Jansenc----------------------------------------------------------------------
364*59599516SKenneth E. Jansenc
365*59599516SKenneth E. Jansenc This routine calculates the contribution of Galerkin part of the
366*59599516SKenneth E. Jansenc Convective term (Time and Euler fluxes) to both RHS and LHS.
367*59599516SKenneth E. Jansenc
368*59599516SKenneth E. Jansenc input:
369*59599516SKenneth E. Jansenc  Sclr   (npro)          : Scalar variable
370*59599516SKenneth E. Jansenc  g1yti  (npro)          : grad-y in direction 1
371*59599516SKenneth E. Jansenc  g2yti  (npro)          : grad-y in direction 2
372*59599516SKenneth E. Jansenc  g3yti  (npro)          : grad-y in direction 3
373*59599516SKenneth E. Jansenc  A1t    (npro)          : A-1
374*59599516SKenneth E. Jansenc  A2t    (npro)          : A-2
375*59599516SKenneth E. Jansenc  A3t    (npro)          : A-3
376*59599516SKenneth E. Jansenc  rho    (npro)          : density
377*59599516SKenneth E. Jansenc  u1     (npro)          : x1-velocity component
378*59599516SKenneth E. Jansenc  u2     (npro)          : x2-velocity component
379*59599516SKenneth E. Jansenc  u3     (npro)          : x3-velocity component
380*59599516SKenneth E. Jansenc  shg    (npro,nshl,nsd) : global grad's of shape functions
381*59599516SKenneth E. Jansenc  shape  (npro,nshl)     : element shape functions
382*59599516SKenneth E. Jansenc  WdetJ  (npro)          : weighted Jacobian determinant
383*59599516SKenneth E. Jansenc
384*59599516SKenneth E. Jansenc output:
385*59599516SKenneth E. Jansenc  rLyti   (npro)         : least-squares residual vector
386*59599516SKenneth E. Jansenc  rti     (npro,nsd+1)   : partial residual
387*59599516SKenneth E. Jansenc  rmti    (npro,nsd+1)   : partial modified residual
388*59599516SKenneth E. Jansenc  EGmasst (npro,nshape,nshape): partial LHS tangent matrix
389*59599516SKenneth E. Jansenc
390*59599516SKenneth E. Jansenc
391*59599516SKenneth E. Jansenc Zdenek Johan, Summer 1990. (Modified from e2conv.f)
392*59599516SKenneth E. Jansenc Zdenek Johan, Winter 1991. (Fortran 90)
393*59599516SKenneth E. Jansenc Kenneth Jansen, Winter 1997 Primitive Variables
394*59599516SKenneth E. Jansenc----------------------------------------------------------------------
395*59599516SKenneth E. Jansenc
396*59599516SKenneth E. Jansen        include "common.h"
397*59599516SKenneth E. Jansenc
398*59599516SKenneth E. Jansenc  passed arrays
399*59599516SKenneth E. Jansenc
400*59599516SKenneth E. Jansen        dimension g1yti(npro),            g2yti(npro),
401*59599516SKenneth E. Jansen     &            g3yti(npro),            Sclr(npro),
402*59599516SKenneth E. Jansen     &            A1t(npro),
403*59599516SKenneth E. Jansen     &            A2t(npro),              A3t(npro),
404*59599516SKenneth E. Jansen     &            rho(npro),              u1(npro),
405*59599516SKenneth E. Jansen     &            u2(npro),               u3(npro),
406*59599516SKenneth E. Jansen     &            rLyti(npro),            rti(npro,nsd+1),
407*59599516SKenneth E. Jansen     &            rmti(npro,nsd+1),       EGmasst(npro,nshape,nshape),
408*59599516SKenneth E. Jansen     &            shg(npro,nshl,nsd),     shape(npro,nshl),
409*59599516SKenneth E. Jansen     &            WdetJ(npro)
410*59599516SKenneth E. Jansenc
411*59599516SKenneth E. Jansenc  local arrays
412*59599516SKenneth E. Jansenc
413*59599516SKenneth E. Jansen        dimension AitNbi(npro)
414*59599516SKenneth E. Jansen
415*59599516SKenneth E. Jansen	ttim(22) = ttim(22) - tmr(0.0)
416*59599516SKenneth E. Jansenc
417*59599516SKenneth E. Jansenc.... ---------------------->  RHS, Euler Flux  <----------------------
418*59599516SKenneth E. Jansenc
419*59599516SKenneth E. Jansen        if ((ires .eq. 1) .or. (ires .eq. 3)) then
420*59599516SKenneth E. Jansenc
421*59599516SKenneth E. Jansenc.... calculate integrated by part contribution of Euler flux (Galerkin)
422*59599516SKenneth E. Jansenc
423*59599516SKenneth E. Jansen           if (iconvsclr.eq.2) then ! convective form
424*59599516SKenneth E. Jansenc
425*59599516SKenneth E. Jansen              rti(:, 4) = rti(:,4) + ( u1) * g1yti(:)
426*59599516SKenneth E. Jansen     &                             + ( u2) * g2yti(:)
427*59599516SKenneth E. Jansen     &                             + ( u3) * g3yti(:)
428*59599516SKenneth E. Jansenc
429*59599516SKenneth E. Jansen           else                 ! conservative form
430*59599516SKenneth E. Jansenc
431*59599516SKenneth E. Jansen              rti(:, 1) = rti(:,1) + (- u1) * rho * Sclr
432*59599516SKenneth E. Jansen              rti(:, 2) = rti(:,2) + (- u2) * rho * Sclr
433*59599516SKenneth E. Jansen              rti(:, 3) = rti(:,3) + (- u3) * rho * Sclr
434*59599516SKenneth E. Jansenc
435*59599516SKenneth E. Jansen           endif
436*59599516SKenneth E. Jansen
437*59599516SKenneth E. Jansen           flops = flops + 28*npro
438*59599516SKenneth E. Jansen
439*59599516SKenneth E. Jansen        endif
440*59599516SKenneth E. Jansenc
441*59599516SKenneth E. Jansenc.... calculate ( A_i Y,i ) --> rLyi
442*59599516SKenneth E. Jansenc
443*59599516SKenneth E. Jansen        rLyti(:) = rLyti(:)
444*59599516SKenneth E. Jansen     &            + A1t(:) * g1yti(:)
445*59599516SKenneth E. Jansen     &            + A2t(:) * g2yti(:)
446*59599516SKenneth E. Jansen     &            + A3t(:) * g3yti(:)
447*59599516SKenneth E. Jansen
448*59599516SKenneth E. Jansenc
449*59599516SKenneth E. Jansenc.... add contribution to rmi
450*59599516SKenneth E. Jansenc
451*59599516SKenneth E. Jansenc        if ((ires .eq. 2) .or. (ires .eq. 3))
452*59599516SKenneth E. Jansenc     &    rmi(:,16:20) = rLyi  ! modified residual uses non i.b.p form of conv
453*59599516SKenneth E. Jansenc
454*59599516SKenneth E. Jansenc.... ---------------------->  LHS   <-----------------------
455*59599516SKenneth E. Jansenc
456*59599516SKenneth E. Jansen        if (lhs .eq. 1) then
457*59599516SKenneth E. Jansenc
458*59599516SKenneth E. Jansenc.... loop through the columns
459*59599516SKenneth E. Jansenc
460*59599516SKenneth E. Jansen        do j = 1, nshl
461*59599516SKenneth E. Jansen
462*59599516SKenneth E. Jansenc
463*59599516SKenneth E. Jansenc.... first compute (A_i N_b,i)
464*59599516SKenneth E. Jansenc
465*59599516SKenneth E. Jansen           AitNbi(:) =
466*59599516SKenneth E. Jansen     &                    WdetJ * shg(:,j,1) * A1t(:)
467*59599516SKenneth E. Jansen     &                  + WdetJ * shg(:,j,2) * A2t(:)
468*59599516SKenneth E. Jansen     &                  + WdetJ * shg(:,j,3) * A3t(:)
469*59599516SKenneth E. Jansen
470*59599516SKenneth E. Jansenc
471*59599516SKenneth E. Jansenc.... now loop through the rows and add (N_a A_i N_b,i) to
472*59599516SKenneth E. Jansenc     the tangent matrix.
473*59599516SKenneth E. Jansenc
474*59599516SKenneth E. Jansen           do i = 1, nshl
475*59599516SKenneth E. Jansen
476*59599516SKenneth E. Jansen             EGmasst(:,i,j) = EGmasst(:,i,j) +  shape(:,i) * AitNbi(:)
477*59599516SKenneth E. Jansen
478*59599516SKenneth E. Jansen
479*59599516SKenneth E. Jansenc
480*59599516SKenneth E. Jansenc.... end loop on rows
481*59599516SKenneth E. Jansenc
482*59599516SKenneth E. Jansen           enddo
483*59599516SKenneth E. Jansenc
484*59599516SKenneth E. Jansenc.... end loop on columns
485*59599516SKenneth E. Jansenc
486*59599516SKenneth E. Jansen        enddo
487*59599516SKenneth E. Jansenc
488*59599516SKenneth E. Jansenc.... end of LHS tangent matrix computation
489*59599516SKenneth E. Jansenc
490*59599516SKenneth E. Jansen        endif
491*59599516SKenneth E. Jansen
492*59599516SKenneth E. Jansen        ttim(22) = ttim(22) + tmr()
493*59599516SKenneth E. Jansenc
494*59599516SKenneth E. Jansenc.... return
495*59599516SKenneth E. Jansenc
496*59599516SKenneth E. Jansen        return
497*59599516SKenneth E. Jansen        end
498*59599516SKenneth E. Jansen
499