xref: /phasta/phSolver/compressible/e3conv.f (revision 513954ef803c300cddba2bb96b4a5dac0b93489a)
159599516SKenneth E. Jansen        subroutine e3conv (g1yi,   g2yi,   g3yi,
259599516SKenneth E. Jansen     &                     A1,     A2,     A3,
359599516SKenneth E. Jansen     &                     rho,    pres,   T,
459599516SKenneth E. Jansen     &                     ei,     rk,     u1,
559599516SKenneth E. Jansen     &                     u2,     u3,     rLyi,
659599516SKenneth E. Jansen     &                     ri,     rmi,    EGmass,
759599516SKenneth E. Jansen     &                     shg,    shape,  WdetJ )
8*513954efSKenneth E. Jansen!
9*513954efSKenneth E. Jansen!----------------------------------------------------------------------
10*513954efSKenneth E. Jansen!
11*513954efSKenneth E. Jansen! This routine calculates the contribution of Galerkin part of the
12*513954efSKenneth E. Jansen! Convective term (Time and Euler fluxes) to both RHS and LHS.
13*513954efSKenneth E. Jansen!
14*513954efSKenneth E. Jansen! input:
15*513954efSKenneth E. Jansen!  g1yi   (npro,nflow)    : grad-y in direction 1
16*513954efSKenneth E. Jansen!  g2yi   (npro,nflow)    : grad-y in direction 2
17*513954efSKenneth E. Jansen!  g3yi   (npro,nflow)    : grad-y in direction 3
18*513954efSKenneth E. Jansen!  A1    (npro,nflow,nflow)  : A-1
19*513954efSKenneth E. Jansen!  A2    (npro,nflow,nflow)  : A-2
20*513954efSKenneth E. Jansen!  A3    (npro,nflow,nflow)  : A-3
21*513954efSKenneth E. Jansen!  rho    (npro)         : density
22*513954efSKenneth E. Jansen!  pres   (npro)         : pressure
23*513954efSKenneth E. Jansen!  T      (npro)         : temperature
24*513954efSKenneth E. Jansen!  ei     (npro)         : internal energy
25*513954efSKenneth E. Jansen!  rk     (npro)         : kinetic energy
26*513954efSKenneth E. Jansen!  u1     (npro)         : x1-velocity component
27*513954efSKenneth E. Jansen!  u2     (npro)         : x2-velocity component
28*513954efSKenneth E. Jansen!  u3     (npro)         : x3-velocity component
29*513954efSKenneth E. Jansen!  shg    (npro,nshl,nsd) : global grad's of shape functions
30*513954efSKenneth E. Jansen!  shape  (npro,nshl)  : element shape functions
31*513954efSKenneth E. Jansen!  WdetJ  (npro)         : weighted Jacobian determinant
32*513954efSKenneth E. Jansen!
33*513954efSKenneth E. Jansen! output:
34*513954efSKenneth E. Jansen!  rLyi   (npro,nflow)           : least-squares residual vector
35*513954efSKenneth E. Jansen!  ri     (npro,nflow*(nsd+1))   : partial residual
36*513954efSKenneth E. Jansen!  rmi    (npro,nflow*(nsd+1))   : partial modified residual
37*513954efSKenneth E. Jansen!  EGmass (npro,nedof,nedof)    : partial LHS tangent matrix
38*513954efSKenneth E. Jansen!
39*513954efSKenneth E. Jansen!
40*513954efSKenneth E. Jansen! Zdenek Johan, Summer 1990. (Modified from e2conv.f)
41*513954efSKenneth E. Jansen! Zdenek Johan, Winter 1991. (Fortran 90)
42*513954efSKenneth E. Jansen! Kenneth Jansen, Winter 1997 Primitive Variables
43*513954efSKenneth E. Jansen!----------------------------------------------------------------------
44*513954efSKenneth E. Jansen!
4559599516SKenneth E. Jansen        include "common.h"
46*513954efSKenneth E. Jansen!
47*513954efSKenneth E. Jansen!  passed arrays
48*513954efSKenneth E. Jansen!
4959599516SKenneth E. Jansen        dimension g1yi(npro,nflow),           g2yi(npro,nflow),
5059599516SKenneth E. Jansen     &            g3yi(npro,nflow),
5159599516SKenneth E. Jansen     &            A1(npro,nflow,nflow),
5259599516SKenneth E. Jansen     &            A2(npro,nflow,nflow),       A3(npro,nflow,nflow),
5359599516SKenneth E. Jansen     &            rho(npro),                pres(npro),
5459599516SKenneth E. Jansen     &            T(npro),                  ei(npro),
5559599516SKenneth E. Jansen     &            rk(npro),                 u1(npro),
5659599516SKenneth E. Jansen     &            u2(npro),                 u3(npro),
5759599516SKenneth E. Jansen     &            rLyi(npro,nflow),          ri(npro,nflow*(nsd+1)),
5859599516SKenneth E. Jansen     &            rmi(npro,nflow*(nsd+1)),   EGmass(npro,nedof,nedof),
5959599516SKenneth E. Jansen     &            shg(npro,nshl,nsd),       shape(npro,nshl),
6059599516SKenneth E. Jansen     &            WdetJ(npro)
61*513954efSKenneth E. Jansen!
62*513954efSKenneth E. Jansen!  local arrays
63*513954efSKenneth E. Jansen!
6459599516SKenneth E. Jansen        dimension AiNbi(npro,nflow,nflow),     fact1(npro),
6559599516SKenneth E. Jansen     &            fact2(npro),               fact3(npro)
6659599516SKenneth E. Jansen
6759599516SKenneth E. Jansen        ttim(22) = ttim(22) - secs(0.0)
6859599516SKenneth E. Jansen
69*513954efSKenneth E. Jansen!
70*513954efSKenneth E. Jansen!.... ---------------------->  RHS, Euler Flux  <----------------------
71*513954efSKenneth E. Jansen!
7259599516SKenneth E. Jansen        if ((ires .eq. 1) .or. (ires .eq. 3)) then
73*513954efSKenneth E. Jansen!
74*513954efSKenneth E. Jansen!.... calculate integrated by part contribution of Euler flux (Galerkin)
75*513954efSKenneth E. Jansen!
7659599516SKenneth E. Jansen          ri(:, 1) = (- u1) * rho
7759599516SKenneth E. Jansen          ri(:, 2) = (- u1) * rho * u1 - pres
7859599516SKenneth E. Jansen          ri(:, 3) = (- u1) * rho * u2
7959599516SKenneth E. Jansen          ri(:, 4) = (- u1) * rho * u3
8059599516SKenneth E. Jansen          ri(:, 5) = (- u1) * rho * (ei + rk) - u1 * pres
81*513954efSKenneth E. Jansen!
8259599516SKenneth E. Jansen          ri(:, 6) = (- u2) * rho
8359599516SKenneth E. Jansen          ri(:, 7) = (- u2) * rho * u1
8459599516SKenneth E. Jansen          ri(:, 8) = (- u2) * rho * u2 - pres
8559599516SKenneth E. Jansen          ri(:, 9) = (- u2) * rho * u3
8659599516SKenneth E. Jansen          ri(:,10) = (- u2) * rho * (ei + rk) - u2 * pres
87*513954efSKenneth E. Jansen!
8859599516SKenneth E. Jansen          ri(:,11) = (- u3) * rho
8959599516SKenneth E. Jansen          ri(:,12) = (- u3) * rho * u1
9059599516SKenneth E. Jansen          ri(:,13) = (- u3) * rho * u2
9159599516SKenneth E. Jansen          ri(:,14) = (- u3) * rho * u3 - pres
9259599516SKenneth E. Jansen          ri(:,15) = (- u3) * rho * (ei + rk) - u3 * pres
93*513954efSKenneth E. Jansen!
9459599516SKenneth E. Jansen          flops = flops + 28*npro
95*513954efSKenneth E. Jansen!
9659599516SKenneth E. Jansen        endif
97*513954efSKenneth E. Jansen!
98*513954efSKenneth E. Jansen!.... calculate ( A_i Y,i ) --> rLyi   Commented out zeros of A matrices
99*513954efSKenneth E. Jansen!
10059599516SKenneth E. Jansen        rLyi(:,1) =
10159599516SKenneth E. Jansen     &              A1(:,1,1) * g1yi(:,1)
10259599516SKenneth E. Jansen     &            + A1(:,1,2) * g1yi(:,2)
103*513954efSKenneth E. Jansen!    &            + A1(:,1,3) * g1yi(:,3)
104*513954efSKenneth E. Jansen!    &            + A1(:,1,4) * g1yi(:,4)
10559599516SKenneth E. Jansen     &            + A1(:,1,5) * g1yi(:,5)
10659599516SKenneth E. Jansen     &            + A2(:,1,1) * g2yi(:,1)
107*513954efSKenneth E. Jansen!    &            + A2(:,1,2) * g2yi(:,2)
10859599516SKenneth E. Jansen     &            + A2(:,1,3) * g2yi(:,3)
109*513954efSKenneth E. Jansen!    &            + A2(:,1,4) * g2yi(:,4)
11059599516SKenneth E. Jansen     &            + A2(:,1,5) * g2yi(:,5)
11159599516SKenneth E. Jansen     &            + A3(:,1,1) * g3yi(:,1)
112*513954efSKenneth E. Jansen!    &            + A3(:,1,2) * g3yi(:,2)
113*513954efSKenneth E. Jansen!    &            + A3(:,1,3) * g3yi(:,3)
11459599516SKenneth E. Jansen     &            + A3(:,1,4) * g3yi(:,4)
11559599516SKenneth E. Jansen     &            + A3(:,1,5) * g3yi(:,5)
11659599516SKenneth E. Jansen        rLyi(:,2) =
11759599516SKenneth E. Jansen     &              A1(:,2,1) * g1yi(:,1)
11859599516SKenneth E. Jansen     &            + A1(:,2,2) * g1yi(:,2)
119*513954efSKenneth E. Jansen!    &            + A1(:,2,3) * g1yi(:,3)
120*513954efSKenneth E. Jansen!    &            + A1(:,2,4) * g1yi(:,4)
12159599516SKenneth E. Jansen     &            + A1(:,2,5) * g1yi(:,5)
12259599516SKenneth E. Jansen     &            + A2(:,2,1) * g2yi(:,1)
12359599516SKenneth E. Jansen     &            + A2(:,2,2) * g2yi(:,2)
12459599516SKenneth E. Jansen     &            + A2(:,2,3) * g2yi(:,3)
125*513954efSKenneth E. Jansen!    &            + A2(:,2,4) * g2yi(:,4)
12659599516SKenneth E. Jansen     &            + A2(:,2,5) * g2yi(:,5)
12759599516SKenneth E. Jansen     &            + A3(:,2,1) * g3yi(:,1)
12859599516SKenneth E. Jansen     &            + A3(:,2,2) * g3yi(:,2)
129*513954efSKenneth E. Jansen!    &            + A3(:,2,3) * g3yi(:,3)
13059599516SKenneth E. Jansen     &            + A3(:,2,4) * g3yi(:,4)
13159599516SKenneth E. Jansen     &            + A3(:,2,5) * g3yi(:,5)
13259599516SKenneth E. Jansen        rLyi(:,3) =
13359599516SKenneth E. Jansen     &              A1(:,3,1) * g1yi(:,1)
13459599516SKenneth E. Jansen     &            + A1(:,3,2) * g1yi(:,2)
13559599516SKenneth E. Jansen     &            + A1(:,3,3) * g1yi(:,3)
136*513954efSKenneth E. Jansen!    &            + A1(:,3,4) * g1yi(:,4)
13759599516SKenneth E. Jansen     &            + A1(:,3,5) * g1yi(:,5)
13859599516SKenneth E. Jansen     &            + A2(:,3,1) * g2yi(:,1)
139*513954efSKenneth E. Jansen!    &            + A2(:,3,2) * g2yi(:,2)
14059599516SKenneth E. Jansen     &            + A2(:,3,3) * g2yi(:,3)
141*513954efSKenneth E. Jansen!    &            + A2(:,3,4) * g2yi(:,4)
14259599516SKenneth E. Jansen     &            + A2(:,3,5) * g2yi(:,5)
14359599516SKenneth E. Jansen     &            + A3(:,3,1) * g3yi(:,1)
144*513954efSKenneth E. Jansen!    &            + A3(:,3,2) * g3yi(:,2)
14559599516SKenneth E. Jansen     &            + A3(:,3,3) * g3yi(:,3)
14659599516SKenneth E. Jansen     &            + A3(:,3,4) * g3yi(:,4)
14759599516SKenneth E. Jansen     &            + A3(:,3,5) * g3yi(:,5)
14859599516SKenneth E. Jansen        rLyi(:,4) =
14959599516SKenneth E. Jansen     &              A1(:,4,1) * g1yi(:,1)
15059599516SKenneth E. Jansen     &            + A1(:,4,2) * g1yi(:,2)
151*513954efSKenneth E. Jansen!    &            + A1(:,4,3) * g1yi(:,3)
15259599516SKenneth E. Jansen     &            + A1(:,4,4) * g1yi(:,4)
15359599516SKenneth E. Jansen     &            + A1(:,4,5) * g1yi(:,5)
15459599516SKenneth E. Jansen     &            + A2(:,4,1) * g2yi(:,1)
155*513954efSKenneth E. Jansen!    &            + A2(:,4,2) * g2yi(:,2)
15659599516SKenneth E. Jansen     &            + A2(:,4,3) * g2yi(:,3)
15759599516SKenneth E. Jansen     &            + A2(:,4,4) * g2yi(:,4)
15859599516SKenneth E. Jansen     &            + A2(:,4,5) * g2yi(:,5)
15959599516SKenneth E. Jansen     &            + A3(:,4,1) * g3yi(:,1)
160*513954efSKenneth E. Jansen!    &            + A3(:,4,2) * g3yi(:,2)
161*513954efSKenneth E. Jansen!    &            + A3(:,4,3) * g3yi(:,3)
16259599516SKenneth E. Jansen     &            + A3(:,4,4) * g3yi(:,4)
16359599516SKenneth E. Jansen     &            + A3(:,4,5) * g3yi(:,5)
16459599516SKenneth E. Jansen        rLyi(:,5) =
16559599516SKenneth E. Jansen     &              A1(:,5,1) * g1yi(:,1)
16659599516SKenneth E. Jansen     &            + A1(:,5,2) * g1yi(:,2)
16759599516SKenneth E. Jansen     &            + A1(:,5,3) * g1yi(:,3)
16859599516SKenneth E. Jansen     &            + A1(:,5,4) * g1yi(:,4)
16959599516SKenneth E. Jansen     &            + A1(:,5,5) * g1yi(:,5)
17059599516SKenneth E. Jansen     &            + A2(:,5,1) * g2yi(:,1)
17159599516SKenneth E. Jansen     &            + A2(:,5,2) * g2yi(:,2)
17259599516SKenneth E. Jansen     &            + A2(:,5,3) * g2yi(:,3)
17359599516SKenneth E. Jansen     &            + A2(:,5,4) * g2yi(:,4)
17459599516SKenneth E. Jansen     &            + A2(:,5,5) * g2yi(:,5)
17559599516SKenneth E. Jansen     &            + A3(:,5,1) * g3yi(:,1)
17659599516SKenneth E. Jansen     &            + A3(:,5,2) * g3yi(:,2)
17759599516SKenneth E. Jansen     &            + A3(:,5,3) * g3yi(:,3)
17859599516SKenneth E. Jansen     &            + A3(:,5,4) * g3yi(:,4)
17959599516SKenneth E. Jansen     &            + A3(:,5,5) * g3yi(:,5)
180*513954efSKenneth E. Jansen!
181*513954efSKenneth E. Jansen!.... add contribution to rmi
182*513954efSKenneth E. Jansen!
18359599516SKenneth E. Jansen        if ((ires .eq. 2) .or. (ires .eq. 3))
18459599516SKenneth E. Jansen     &    rmi(:,16:20) = rLyi  ! modified residual uses non i.b.p form of conv.
185*513954efSKenneth E. Jansen!
186*513954efSKenneth E. Jansen!.... ---------------------->  LHS   <-----------------------
187*513954efSKenneth E. Jansen!
18859599516SKenneth E. Jansen        if (lhs .eq. 1) then
189*513954efSKenneth E. Jansen!
190*513954efSKenneth E. Jansen!.... loop through the columns
191*513954efSKenneth E. Jansen!
19259599516SKenneth E. Jansen        do j = 1, nshl
19359599516SKenneth E. Jansen           j0 = nflow * (j - 1)
194*513954efSKenneth E. Jansen!
195*513954efSKenneth E. Jansen!.... compute some useful factors
196*513954efSKenneth E. Jansen!
19759599516SKenneth E. Jansen           fact1 = WdetJ * shg(:,j,1)
19859599516SKenneth E. Jansen           fact2 = WdetJ * shg(:,j,2)
19959599516SKenneth E. Jansen           fact3 = WdetJ * shg(:,j,3)
200*513954efSKenneth E. Jansen!
201*513954efSKenneth E. Jansen!.... first compute (A_i N_b,i)
202*513954efSKenneth E. Jansen!
20359599516SKenneth E. Jansen           AiNbi(:,1,1) =
20459599516SKenneth E. Jansen     &                    fact1 * A1(:,1,1)
20559599516SKenneth E. Jansen     &                  + fact2 * A2(:,1,1)
20659599516SKenneth E. Jansen     &                  + fact3 * A3(:,1,1)
20759599516SKenneth E. Jansen           AiNbi(:,1,2) =
20859599516SKenneth E. Jansen     &                    fact1 * A1(:,1,2)
20959599516SKenneth E. Jansen     &                  + fact2 * A2(:,1,2)
21059599516SKenneth E. Jansen     &                  + fact3 * A3(:,1,2)
21159599516SKenneth E. Jansen           AiNbi(:,1,3) =
21259599516SKenneth E. Jansen     &                    fact1 * A1(:,1,3)
21359599516SKenneth E. Jansen     &                  + fact2 * A2(:,1,3)
21459599516SKenneth E. Jansen     &                  + fact3 * A3(:,1,3)
21559599516SKenneth E. Jansen           AiNbi(:,1,4) =
21659599516SKenneth E. Jansen     &                    fact1 * A1(:,1,4)
21759599516SKenneth E. Jansen     &                  + fact2 * A2(:,1,4)
21859599516SKenneth E. Jansen     &                  + fact3 * A3(:,1,4)
21959599516SKenneth E. Jansen           AiNbi(:,1,5) =
22059599516SKenneth E. Jansen     &                    fact1 * A1(:,1,5)
22159599516SKenneth E. Jansen     &                  + fact2 * A2(:,1,5)
22259599516SKenneth E. Jansen     &                  + fact3 * A3(:,1,5)
223*513954efSKenneth E. Jansen
22459599516SKenneth E. Jansen           AiNbi(:,2,1) =
22559599516SKenneth E. Jansen     &                    fact1 * A1(:,2,1)
22659599516SKenneth E. Jansen     &                  + fact2 * A2(:,2,1)
22759599516SKenneth E. Jansen     &                  + fact3 * A3(:,2,1)
22859599516SKenneth E. Jansen           AiNbi(:,2,2) =
22959599516SKenneth E. Jansen     &                    fact1 * A1(:,2,2)
23059599516SKenneth E. Jansen     &                  + fact2 * A2(:,2,2)
23159599516SKenneth E. Jansen     &                  + fact3 * A3(:,2,2)
23259599516SKenneth E. Jansen           AiNbi(:,2,3) =
23359599516SKenneth E. Jansen     &                    fact1 * A1(:,2,3)
23459599516SKenneth E. Jansen     &                  + fact2 * A2(:,2,3)
23559599516SKenneth E. Jansen     &                  + fact3 * A3(:,2,3)
23659599516SKenneth E. Jansen           AiNbi(:,2,4) =
23759599516SKenneth E. Jansen     &                    fact1 * A1(:,2,4)
23859599516SKenneth E. Jansen     &                  + fact2 * A2(:,2,4)
23959599516SKenneth E. Jansen     &                  + fact3 * A3(:,2,4)
24059599516SKenneth E. Jansen           AiNbi(:,2,5) =
24159599516SKenneth E. Jansen     &                    fact1 * A1(:,2,5)
24259599516SKenneth E. Jansen     &                  + fact2 * A2(:,2,5)
24359599516SKenneth E. Jansen     &                  + fact3 * A3(:,2,5)
244*513954efSKenneth E. Jansen
24559599516SKenneth E. Jansen           AiNbi(:,3,1) =
24659599516SKenneth E. Jansen     &                    fact1 * A1(:,3,1)
24759599516SKenneth E. Jansen     &                  + fact2 * A2(:,3,1)
24859599516SKenneth E. Jansen     &                  + fact3 * A3(:,3,1)
24959599516SKenneth E. Jansen           AiNbi(:,3,2) =
25059599516SKenneth E. Jansen     &                    fact1 * A1(:,3,2)
25159599516SKenneth E. Jansen     &                  + fact2 * A2(:,3,2)
25259599516SKenneth E. Jansen     &                  + fact3 * A3(:,3,2)
25359599516SKenneth E. Jansen           AiNbi(:,3,3) =
25459599516SKenneth E. Jansen     &                    fact1 * A1(:,3,3)
25559599516SKenneth E. Jansen     &                  + fact2 * A2(:,3,3)
25659599516SKenneth E. Jansen     &                  + fact3 * A3(:,3,3)
25759599516SKenneth E. Jansen           AiNbi(:,3,4) =
25859599516SKenneth E. Jansen     &                    fact1 * A1(:,3,4)
25959599516SKenneth E. Jansen     &                  + fact2 * A2(:,3,4)
26059599516SKenneth E. Jansen     &                  + fact3 * A3(:,3,4)
26159599516SKenneth E. Jansen           AiNbi(:,3,5) =
26259599516SKenneth E. Jansen     &                    fact1 * A1(:,3,5)
26359599516SKenneth E. Jansen     &                  + fact2 * A2(:,3,5)
26459599516SKenneth E. Jansen     &                  + fact3 * A3(:,3,5)
265*513954efSKenneth E. Jansen
26659599516SKenneth E. Jansen           AiNbi(:,4,1) =
26759599516SKenneth E. Jansen     &                    fact1 * A1(:,4,1)
26859599516SKenneth E. Jansen     &                  + fact2 * A2(:,4,1)
26959599516SKenneth E. Jansen     &                  + fact3 * A3(:,4,1)
27059599516SKenneth E. Jansen           AiNbi(:,4,2) =
27159599516SKenneth E. Jansen     &                    fact1 * A1(:,4,2)
27259599516SKenneth E. Jansen     &                  + fact2 * A2(:,4,2)
27359599516SKenneth E. Jansen     &                  + fact3 * A3(:,4,2)
27459599516SKenneth E. Jansen           AiNbi(:,4,3) =
27559599516SKenneth E. Jansen     &                    fact1 * A1(:,4,3)
27659599516SKenneth E. Jansen     &                  + fact2 * A2(:,4,3)
27759599516SKenneth E. Jansen     &                  + fact3 * A3(:,4,3)
27859599516SKenneth E. Jansen           AiNbi(:,4,4) =
27959599516SKenneth E. Jansen     &                    fact1 * A1(:,4,4)
28059599516SKenneth E. Jansen     &                  + fact2 * A2(:,4,4)
28159599516SKenneth E. Jansen     &                  + fact3 * A3(:,4,4)
28259599516SKenneth E. Jansen           AiNbi(:,4,5) =
28359599516SKenneth E. Jansen     &                    fact1 * A1(:,4,5)
28459599516SKenneth E. Jansen     &                  + fact2 * A2(:,4,5)
28559599516SKenneth E. Jansen     &                  + fact3 * A3(:,4,5)
286*513954efSKenneth E. Jansen
28759599516SKenneth E. Jansen           AiNbi(:,5,1) =
28859599516SKenneth E. Jansen     &                    fact1 * A1(:,5,1)
28959599516SKenneth E. Jansen     &                  + fact2 * A2(:,5,1)
29059599516SKenneth E. Jansen     &                  + fact3 * A3(:,5,1)
29159599516SKenneth E. Jansen           AiNbi(:,5,2) =
29259599516SKenneth E. Jansen     &                    fact1 * A1(:,5,2)
29359599516SKenneth E. Jansen     &                  + fact2 * A2(:,5,2)
29459599516SKenneth E. Jansen     &                  + fact3 * A3(:,5,2)
29559599516SKenneth E. Jansen           AiNbi(:,5,3) =
29659599516SKenneth E. Jansen     &                    fact1 * A1(:,5,3)
29759599516SKenneth E. Jansen     &                  + fact2 * A2(:,5,3)
29859599516SKenneth E. Jansen     &                  + fact3 * A3(:,5,3)
29959599516SKenneth E. Jansen           AiNbi(:,5,4) =
30059599516SKenneth E. Jansen     &                    fact1 * A1(:,5,4)
30159599516SKenneth E. Jansen     &                  + fact2 * A2(:,5,4)
30259599516SKenneth E. Jansen     &                  + fact3 * A3(:,5,4)
30359599516SKenneth E. Jansen           AiNbi(:,5,5) =
30459599516SKenneth E. Jansen     &                    fact1 * A1(:,5,5)
30559599516SKenneth E. Jansen     &                  + fact2 * A2(:,5,5)
30659599516SKenneth E. Jansen     &                  + fact3 * A3(:,5,5)
307*513954efSKenneth E. Jansen!
308*513954efSKenneth E. Jansen!.... now loop through the row nodes and add (N_a A_i N_b,i) to
309*513954efSKenneth E. Jansen!     the tangent matrix.
310*513954efSKenneth E. Jansen!
31159599516SKenneth E. Jansen           do i = 1, nshl
31259599516SKenneth E. Jansen              i0 = nflow * (i - 1)
313*513954efSKenneth E. Jansen!
314*513954efSKenneth E. Jansen!.... loop through dof's
315*513954efSKenneth E. Jansen!
31659599516SKenneth E. Jansen              do jdof = 1, nflow
31759599516SKenneth E. Jansen                 jl = j0 + jdof
31859599516SKenneth E. Jansen
31959599516SKenneth E. Jansen                 EGmass(:,i0+1,jl) = EGmass(:,i0+1,jl) +
32059599516SKenneth E. Jansen     &                               shape(:,i) * AiNbi(:,1,jdof)
32159599516SKenneth E. Jansen
32259599516SKenneth E. Jansen                 EGmass(:,i0+2,jl) = EGmass(:,i0+2,jl) +
32359599516SKenneth E. Jansen     &                               shape(:,i) * AiNbi(:,2,jdof)
32459599516SKenneth E. Jansen
32559599516SKenneth E. Jansen                 EGmass(:,i0+3,jl) = EGmass(:,i0+3,jl) +
32659599516SKenneth E. Jansen     &                               shape(:,i) * AiNbi(:,3,jdof)
32759599516SKenneth E. Jansen
32859599516SKenneth E. Jansen                 EGmass(:,i0+4,jl) = EGmass(:,i0+4,jl) +
32959599516SKenneth E. Jansen     &                               shape(:,i) * AiNbi(:,4,jdof)
33059599516SKenneth E. Jansen
33159599516SKenneth E. Jansen                 EGmass(:,i0+5,jl) = EGmass(:,i0+5,jl) +
33259599516SKenneth E. Jansen     &                               shape(:,i) * AiNbi(:,5,jdof)
33359599516SKenneth E. Jansen              enddo
334*513954efSKenneth E. Jansen!
335*513954efSKenneth E. Jansen!.... end loop on rows
336*513954efSKenneth E. Jansen!
33759599516SKenneth E. Jansen           enddo
338*513954efSKenneth E. Jansen!
339*513954efSKenneth E. Jansen!.... end loop on columns
340*513954efSKenneth E. Jansen!
34159599516SKenneth E. Jansen        enddo
342*513954efSKenneth E. Jansen!
343*513954efSKenneth E. Jansen!.... end of LHS tangent matrix computation
344*513954efSKenneth E. Jansen!
34559599516SKenneth E. Jansen        endif
34659599516SKenneth E. Jansen
34759599516SKenneth E. Jansen        ttim(22) = ttim(22) + secs(0.0)
348*513954efSKenneth E. Jansen!
349*513954efSKenneth E. Jansen!.... return
350*513954efSKenneth E. Jansen!
35159599516SKenneth E. Jansen        return
35259599516SKenneth E. Jansen        end
353*513954efSKenneth E. Jansen!
354*513954efSKenneth E. Jansen!
355*513954efSKenneth E. Jansen!
35659599516SKenneth E. Jansen        subroutine e3convSclr (g1yti,   g2yti,   g3yti,
35759599516SKenneth E. Jansen     &                         A1t,     A2t,     A3t,
35859599516SKenneth E. Jansen     &                         rho,     u1,      Sclr,
35959599516SKenneth E. Jansen     &                         u2,      u3,      rLyti,
36059599516SKenneth E. Jansen     &                         rti,     rmti,    EGmasst,
36159599516SKenneth E. Jansen     &                         shg,     shape,   WdetJ)
362*513954efSKenneth E. Jansen!
363*513954efSKenneth E. Jansen!----------------------------------------------------------------------
364*513954efSKenneth E. Jansen!
365*513954efSKenneth E. Jansen! This routine calculates the contribution of Galerkin part of the
366*513954efSKenneth E. Jansen! Convective term (Time and Euler fluxes) to both RHS and LHS.
367*513954efSKenneth E. Jansen!
368*513954efSKenneth E. Jansen! input:
369*513954efSKenneth E. Jansen!  Sclr   (npro)          : Scalar variable
370*513954efSKenneth E. Jansen!  g1yti  (npro)          : grad-y in direction 1
371*513954efSKenneth E. Jansen!  g2yti  (npro)          : grad-y in direction 2
372*513954efSKenneth E. Jansen!  g3yti  (npro)          : grad-y in direction 3
373*513954efSKenneth E. Jansen!  A1t    (npro)          : A-1
374*513954efSKenneth E. Jansen!  A2t    (npro)          : A-2
375*513954efSKenneth E. Jansen!  A3t    (npro)          : A-3
376*513954efSKenneth E. Jansen!  rho    (npro)          : density
377*513954efSKenneth E. Jansen!  u1     (npro)          : x1-velocity component
378*513954efSKenneth E. Jansen!  u2     (npro)          : x2-velocity component
379*513954efSKenneth E. Jansen!  u3     (npro)          : x3-velocity component
380*513954efSKenneth E. Jansen!  shg    (npro,nshl,nsd) : global grad's of shape functions
381*513954efSKenneth E. Jansen!  shape  (npro,nshl)     : element shape functions
382*513954efSKenneth E. Jansen!  WdetJ  (npro)          : weighted Jacobian determinant
383*513954efSKenneth E. Jansen!
384*513954efSKenneth E. Jansen! output:
385*513954efSKenneth E. Jansen!  rLyti   (npro)         : least-squares residual vector
386*513954efSKenneth E. Jansen!  rti     (npro,nsd+1)   : partial residual
387*513954efSKenneth E. Jansen!  rmti    (npro,nsd+1)   : partial modified residual
388*513954efSKenneth E. Jansen!  EGmasst (npro,nshape,nshape): partial LHS tangent matrix
389*513954efSKenneth E. Jansen!
390*513954efSKenneth E. Jansen!
391*513954efSKenneth E. Jansen! Zdenek Johan, Summer 1990. (Modified from e2conv.f)
392*513954efSKenneth E. Jansen! Zdenek Johan, Winter 1991. (Fortran 90)
393*513954efSKenneth E. Jansen! Kenneth Jansen, Winter 1997 Primitive Variables
394*513954efSKenneth E. Jansen!----------------------------------------------------------------------
395*513954efSKenneth E. Jansen!
39659599516SKenneth E. Jansen        include "common.h"
397*513954efSKenneth E. Jansen!
398*513954efSKenneth E. Jansen!  passed arrays
399*513954efSKenneth E. Jansen!
40059599516SKenneth E. Jansen        dimension g1yti(npro),            g2yti(npro),
40159599516SKenneth E. Jansen     &            g3yti(npro),            Sclr(npro),
40259599516SKenneth E. Jansen     &            A1t(npro),
40359599516SKenneth E. Jansen     &            A2t(npro),              A3t(npro),
40459599516SKenneth E. Jansen     &            rho(npro),              u1(npro),
40559599516SKenneth E. Jansen     &            u2(npro),               u3(npro),
40659599516SKenneth E. Jansen     &            rLyti(npro),            rti(npro,nsd+1),
40759599516SKenneth E. Jansen     &            rmti(npro,nsd+1),       EGmasst(npro,nshape,nshape),
40859599516SKenneth E. Jansen     &            shg(npro,nshl,nsd),     shape(npro,nshl),
40959599516SKenneth E. Jansen     &            WdetJ(npro)
410*513954efSKenneth E. Jansen!
411*513954efSKenneth E. Jansen!  local arrays
412*513954efSKenneth E. Jansen!
41359599516SKenneth E. Jansen        dimension AitNbi(npro)
41459599516SKenneth E. Jansen
415*513954efSKenneth E. Jansen        ttim(22) = ttim(22) - tmr() !tmr(0.0)
416*513954efSKenneth E. Jansen!
417*513954efSKenneth E. Jansen!.... ---------------------->  RHS, Euler Flux  <----------------------
418*513954efSKenneth E. Jansen!
41959599516SKenneth E. Jansen        if ((ires .eq. 1) .or. (ires .eq. 3)) then
420*513954efSKenneth E. Jansen!
421*513954efSKenneth E. Jansen!.... calculate integrated by part contribution of Euler flux (Galerkin)
422*513954efSKenneth E. Jansen!
42359599516SKenneth E. Jansen           if (iconvsclr.eq.2) then ! convective form
424*513954efSKenneth E. Jansen!
42559599516SKenneth E. Jansen              rti(:, 4) = rti(:,4) + ( u1) * g1yti(:)
42659599516SKenneth E. Jansen     &                             + ( u2) * g2yti(:)
42759599516SKenneth E. Jansen     &                             + ( u3) * g3yti(:)
428*513954efSKenneth E. Jansen!
42959599516SKenneth E. Jansen           else                 ! conservative form
430*513954efSKenneth E. Jansen!
43159599516SKenneth E. Jansen              rti(:, 1) = rti(:,1) + (- u1) * rho * Sclr
43259599516SKenneth E. Jansen              rti(:, 2) = rti(:,2) + (- u2) * rho * Sclr
43359599516SKenneth E. Jansen              rti(:, 3) = rti(:,3) + (- u3) * rho * Sclr
434*513954efSKenneth E. Jansen!
43559599516SKenneth E. Jansen           endif
43659599516SKenneth E. Jansen
43759599516SKenneth E. Jansen           flops = flops + 28*npro
43859599516SKenneth E. Jansen
43959599516SKenneth E. Jansen        endif
440*513954efSKenneth E. Jansen!
441*513954efSKenneth E. Jansen!.... calculate ( A_i Y,i ) --> rLyi
442*513954efSKenneth E. Jansen!
44359599516SKenneth E. Jansen        rLyti(:) = rLyti(:)
44459599516SKenneth E. Jansen     &            + A1t(:) * g1yti(:)
44559599516SKenneth E. Jansen     &            + A2t(:) * g2yti(:)
44659599516SKenneth E. Jansen     &            + A3t(:) * g3yti(:)
44759599516SKenneth E. Jansen
448*513954efSKenneth E. Jansen!
449*513954efSKenneth E. Jansen!.... add contribution to rmi
450*513954efSKenneth E. Jansen!
451*513954efSKenneth E. Jansen!        if ((ires .eq. 2) .or. (ires .eq. 3))
452*513954efSKenneth E. Jansen!     &    rmi(:,16:20) = rLyi  ! modified residual uses non i.b.p form of conv
453*513954efSKenneth E. Jansen!
454*513954efSKenneth E. Jansen!.... ---------------------->  LHS   <-----------------------
455*513954efSKenneth E. Jansen!
45659599516SKenneth E. Jansen        if (lhs .eq. 1) then
457*513954efSKenneth E. Jansen!
458*513954efSKenneth E. Jansen!.... loop through the columns
459*513954efSKenneth E. Jansen!
46059599516SKenneth E. Jansen        do j = 1, nshl
46159599516SKenneth E. Jansen
462*513954efSKenneth E. Jansen!
463*513954efSKenneth E. Jansen!.... first compute (A_i N_b,i)
464*513954efSKenneth E. Jansen!
46559599516SKenneth E. Jansen           AitNbi(:) =
46659599516SKenneth E. Jansen     &                    WdetJ * shg(:,j,1) * A1t(:)
46759599516SKenneth E. Jansen     &                  + WdetJ * shg(:,j,2) * A2t(:)
46859599516SKenneth E. Jansen     &                  + WdetJ * shg(:,j,3) * A3t(:)
46959599516SKenneth E. Jansen
470*513954efSKenneth E. Jansen!
471*513954efSKenneth E. Jansen!.... now loop through the rows and add (N_a A_i N_b,i) to
472*513954efSKenneth E. Jansen!     the tangent matrix.
473*513954efSKenneth E. Jansen!
47459599516SKenneth E. Jansen           do i = 1, nshl
47559599516SKenneth E. Jansen
47659599516SKenneth E. Jansen             EGmasst(:,i,j) = EGmasst(:,i,j) +  shape(:,i) * AitNbi(:)
47759599516SKenneth E. Jansen
47859599516SKenneth E. Jansen
479*513954efSKenneth E. Jansen!
480*513954efSKenneth E. Jansen!.... end loop on rows
481*513954efSKenneth E. Jansen!
48259599516SKenneth E. Jansen           enddo
483*513954efSKenneth E. Jansen!
484*513954efSKenneth E. Jansen!.... end loop on columns
485*513954efSKenneth E. Jansen!
48659599516SKenneth E. Jansen        enddo
487*513954efSKenneth E. Jansen!
488*513954efSKenneth E. Jansen!.... end of LHS tangent matrix computation
489*513954efSKenneth E. Jansen!
49059599516SKenneth E. Jansen        endif
49159599516SKenneth E. Jansen
49259599516SKenneth E. Jansen        ttim(22) = ttim(22) + tmr()
493*513954efSKenneth E. Jansen!
494*513954efSKenneth E. Jansen!.... return
495*513954efSKenneth E. Jansen!
49659599516SKenneth E. Jansen        return
49759599516SKenneth E. Jansen        end
49859599516SKenneth E. Jansen
499