xref: /phasta/phSolver/compressible/e3conv.f (revision 712d3df0b59ebebaaeaea358162c8d2c043c6e08)
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 )
8513954efSKenneth E. Jansen!
9513954efSKenneth E. Jansen!----------------------------------------------------------------------
10513954efSKenneth E. Jansen!
11513954efSKenneth E. Jansen! This routine calculates the contribution of Galerkin part of the
12513954efSKenneth E. Jansen! Convective term (Time and Euler fluxes) to both RHS and LHS.
13513954efSKenneth E. Jansen!
14513954efSKenneth E. Jansen! input:
15513954efSKenneth E. Jansen!  g1yi   (npro,nflow)    : grad-y in direction 1
16513954efSKenneth E. Jansen!  g2yi   (npro,nflow)    : grad-y in direction 2
17513954efSKenneth E. Jansen!  g3yi   (npro,nflow)    : grad-y in direction 3
18513954efSKenneth E. Jansen!  A1    (npro,nflow,nflow)  : A-1
19513954efSKenneth E. Jansen!  A2    (npro,nflow,nflow)  : A-2
20513954efSKenneth E. Jansen!  A3    (npro,nflow,nflow)  : A-3
21513954efSKenneth E. Jansen!  rho    (npro)         : density
22513954efSKenneth E. Jansen!  pres   (npro)         : pressure
23513954efSKenneth E. Jansen!  T      (npro)         : temperature
24513954efSKenneth E. Jansen!  ei     (npro)         : internal energy
25513954efSKenneth E. Jansen!  rk     (npro)         : kinetic energy
26513954efSKenneth E. Jansen!  u1     (npro)         : x1-velocity component
27513954efSKenneth E. Jansen!  u2     (npro)         : x2-velocity component
28513954efSKenneth E. Jansen!  u3     (npro)         : x3-velocity component
29513954efSKenneth E. Jansen!  shg    (npro,nshl,nsd) : global grad's of shape functions
30513954efSKenneth E. Jansen!  shape  (npro,nshl)  : element shape functions
31513954efSKenneth E. Jansen!  WdetJ  (npro)         : weighted Jacobian determinant
32513954efSKenneth E. Jansen!
33513954efSKenneth E. Jansen! output:
34513954efSKenneth E. Jansen!  rLyi   (npro,nflow)           : least-squares residual vector
35513954efSKenneth E. Jansen!  ri     (npro,nflow*(nsd+1))   : partial residual
36513954efSKenneth E. Jansen!  rmi    (npro,nflow*(nsd+1))   : partial modified residual
37513954efSKenneth E. Jansen!  EGmass (npro,nedof,nedof)    : partial LHS tangent matrix
38513954efSKenneth E. Jansen!
39513954efSKenneth E. Jansen!
40513954efSKenneth E. Jansen! Zdenek Johan, Summer 1990. (Modified from e2conv.f)
41513954efSKenneth E. Jansen! Zdenek Johan, Winter 1991. (Fortran 90)
42513954efSKenneth E. Jansen! Kenneth Jansen, Winter 1997 Primitive Variables
43513954efSKenneth E. Jansen!----------------------------------------------------------------------
44513954efSKenneth E. Jansen!
4559599516SKenneth E. Jansen        include "common.h"
46513954efSKenneth E. Jansen!
47513954efSKenneth E. Jansen!  passed arrays
48513954efSKenneth 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)
61513954efSKenneth E. Jansen!
62513954efSKenneth E. Jansen!  local arrays
63513954efSKenneth 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
69513954efSKenneth E. Jansen!
70513954efSKenneth E. Jansen!.... ---------------------->  RHS, Euler Flux  <----------------------
71513954efSKenneth E. Jansen!
7259599516SKenneth E. Jansen        if ((ires .eq. 1) .or. (ires .eq. 3)) then
73513954efSKenneth E. Jansen!
74513954efSKenneth E. Jansen!.... calculate integrated by part contribution of Euler flux (Galerkin)
75513954efSKenneth 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
81513954efSKenneth 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
87513954efSKenneth 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
93513954efSKenneth E. Jansen!
94*f4d0b58bSKenneth E. Jansen!      flops = flops + 28*npro
95513954efSKenneth E. Jansen!
9659599516SKenneth E. Jansen        endif
97513954efSKenneth E. Jansen!
98513954efSKenneth E. Jansen!.... calculate ( A_i Y,i ) --> rLyi   Commented out zeros of A matrices
99513954efSKenneth E. Jansen!
10059599516SKenneth E. Jansen        rLyi(:,1) =
10159599516SKenneth E. Jansen     &              A1(:,1,1) * g1yi(:,1)
10259599516SKenneth E. Jansen     &            + A1(:,1,2) * g1yi(:,2)
103513954efSKenneth E. Jansen!    &            + A1(:,1,3) * g1yi(:,3)
104513954efSKenneth E. Jansen!    &            + A1(:,1,4) * g1yi(:,4)
10559599516SKenneth E. Jansen     &            + A1(:,1,5) * g1yi(:,5)
10659599516SKenneth E. Jansen     &            + A2(:,1,1) * g2yi(:,1)
107513954efSKenneth E. Jansen!    &            + A2(:,1,2) * g2yi(:,2)
10859599516SKenneth E. Jansen     &            + A2(:,1,3) * g2yi(:,3)
109513954efSKenneth E. Jansen!    &            + A2(:,1,4) * g2yi(:,4)
11059599516SKenneth E. Jansen     &            + A2(:,1,5) * g2yi(:,5)
11159599516SKenneth E. Jansen     &            + A3(:,1,1) * g3yi(:,1)
112513954efSKenneth E. Jansen!    &            + A3(:,1,2) * g3yi(:,2)
113513954efSKenneth 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)
119513954efSKenneth E. Jansen!    &            + A1(:,2,3) * g1yi(:,3)
120513954efSKenneth 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)
125513954efSKenneth 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)
129513954efSKenneth 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)
136513954efSKenneth E. Jansen!    &            + A1(:,3,4) * g1yi(:,4)
13759599516SKenneth E. Jansen     &            + A1(:,3,5) * g1yi(:,5)
13859599516SKenneth E. Jansen     &            + A2(:,3,1) * g2yi(:,1)
139513954efSKenneth E. Jansen!    &            + A2(:,3,2) * g2yi(:,2)
14059599516SKenneth E. Jansen     &            + A2(:,3,3) * g2yi(:,3)
141513954efSKenneth E. Jansen!    &            + A2(:,3,4) * g2yi(:,4)
14259599516SKenneth E. Jansen     &            + A2(:,3,5) * g2yi(:,5)
14359599516SKenneth E. Jansen     &            + A3(:,3,1) * g3yi(:,1)
144513954efSKenneth 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)
151513954efSKenneth 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)
155513954efSKenneth 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)
160513954efSKenneth E. Jansen!    &            + A3(:,4,2) * g3yi(:,2)
161513954efSKenneth 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)
180513954efSKenneth E. Jansen!
181513954efSKenneth E. Jansen!.... add contribution to rmi
182513954efSKenneth 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.
185513954efSKenneth E. Jansen!
186513954efSKenneth E. Jansen!.... ---------------------->  LHS   <-----------------------
187513954efSKenneth E. Jansen!
18859599516SKenneth E. Jansen        if (lhs .eq. 1) then
189513954efSKenneth E. Jansen!
190513954efSKenneth E. Jansen!.... loop through the columns
191513954efSKenneth E. Jansen!
19259599516SKenneth E. Jansen        do j = 1, nshl
19359599516SKenneth E. Jansen           j0 = nflow * (j - 1)
194513954efSKenneth E. Jansen!
195513954efSKenneth E. Jansen!.... compute some useful factors
196513954efSKenneth 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)
200513954efSKenneth E. Jansen!
201513954efSKenneth E. Jansen!.... first compute (A_i N_b,i)
202513954efSKenneth 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)
223513954efSKenneth 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)
244513954efSKenneth 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)
265513954efSKenneth 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)
286513954efSKenneth 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)
307513954efSKenneth E. Jansen!
308513954efSKenneth E. Jansen!.... now loop through the row nodes and add (N_a A_i N_b,i) to
309513954efSKenneth E. Jansen!     the tangent matrix.
310513954efSKenneth E. Jansen!
31159599516SKenneth E. Jansen           do i = 1, nshl
31259599516SKenneth E. Jansen              i0 = nflow * (i - 1)
313513954efSKenneth E. Jansen!
314513954efSKenneth E. Jansen!.... loop through dof's
315513954efSKenneth 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
334513954efSKenneth E. Jansen!
335513954efSKenneth E. Jansen!.... end loop on rows
336513954efSKenneth E. Jansen!
33759599516SKenneth E. Jansen           enddo
338513954efSKenneth E. Jansen!
339513954efSKenneth E. Jansen!.... end loop on columns
340513954efSKenneth E. Jansen!
34159599516SKenneth E. Jansen        enddo
342513954efSKenneth E. Jansen!
343513954efSKenneth E. Jansen!.... end of LHS tangent matrix computation
344513954efSKenneth E. Jansen!
34559599516SKenneth E. Jansen        endif
34659599516SKenneth E. Jansen
34759599516SKenneth E. Jansen        ttim(22) = ttim(22) + secs(0.0)
348513954efSKenneth E. Jansen!
349513954efSKenneth E. Jansen!.... return
350513954efSKenneth E. Jansen!
35159599516SKenneth E. Jansen        return
35259599516SKenneth E. Jansen        end
353513954efSKenneth E. Jansen!
354513954efSKenneth E. Jansen!
355513954efSKenneth 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)
362513954efSKenneth E. Jansen!
363513954efSKenneth E. Jansen!----------------------------------------------------------------------
364513954efSKenneth E. Jansen!
365513954efSKenneth E. Jansen! This routine calculates the contribution of Galerkin part of the
366513954efSKenneth E. Jansen! Convective term (Time and Euler fluxes) to both RHS and LHS.
367513954efSKenneth E. Jansen!
368513954efSKenneth E. Jansen! input:
369513954efSKenneth E. Jansen!  Sclr   (npro)          : Scalar variable
370513954efSKenneth E. Jansen!  g1yti  (npro)          : grad-y in direction 1
371513954efSKenneth E. Jansen!  g2yti  (npro)          : grad-y in direction 2
372513954efSKenneth E. Jansen!  g3yti  (npro)          : grad-y in direction 3
373513954efSKenneth E. Jansen!  A1t    (npro)          : A-1
374513954efSKenneth E. Jansen!  A2t    (npro)          : A-2
375513954efSKenneth E. Jansen!  A3t    (npro)          : A-3
376513954efSKenneth E. Jansen!  rho    (npro)          : density
377513954efSKenneth E. Jansen!  u1     (npro)          : x1-velocity component
378513954efSKenneth E. Jansen!  u2     (npro)          : x2-velocity component
379513954efSKenneth E. Jansen!  u3     (npro)          : x3-velocity component
380513954efSKenneth E. Jansen!  shg    (npro,nshl,nsd) : global grad's of shape functions
381513954efSKenneth E. Jansen!  shape  (npro,nshl)     : element shape functions
382513954efSKenneth E. Jansen!  WdetJ  (npro)          : weighted Jacobian determinant
383513954efSKenneth E. Jansen!
384513954efSKenneth E. Jansen! output:
385513954efSKenneth E. Jansen!  rLyti   (npro)         : least-squares residual vector
386513954efSKenneth E. Jansen!  rti     (npro,nsd+1)   : partial residual
387513954efSKenneth E. Jansen!  rmti    (npro,nsd+1)   : partial modified residual
388513954efSKenneth E. Jansen!  EGmasst (npro,nshape,nshape): partial LHS tangent matrix
389513954efSKenneth E. Jansen!
390513954efSKenneth E. Jansen!
391513954efSKenneth E. Jansen! Zdenek Johan, Summer 1990. (Modified from e2conv.f)
392513954efSKenneth E. Jansen! Zdenek Johan, Winter 1991. (Fortran 90)
393513954efSKenneth E. Jansen! Kenneth Jansen, Winter 1997 Primitive Variables
394513954efSKenneth E. Jansen!----------------------------------------------------------------------
395513954efSKenneth E. Jansen!
39659599516SKenneth E. Jansen        include "common.h"
397513954efSKenneth E. Jansen!
398513954efSKenneth E. Jansen!  passed arrays
399513954efSKenneth 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)
410513954efSKenneth E. Jansen!
411513954efSKenneth E. Jansen!  local arrays
412513954efSKenneth E. Jansen!
41359599516SKenneth E. Jansen        dimension AitNbi(npro)
41459599516SKenneth E. Jansen
415513954efSKenneth E. Jansen        ttim(22) = ttim(22) - tmr() !tmr(0.0)
416513954efSKenneth E. Jansen!
417513954efSKenneth E. Jansen!.... ---------------------->  RHS, Euler Flux  <----------------------
418513954efSKenneth E. Jansen!
41959599516SKenneth E. Jansen        if ((ires .eq. 1) .or. (ires .eq. 3)) then
420513954efSKenneth E. Jansen!
421513954efSKenneth E. Jansen!.... calculate integrated by part contribution of Euler flux (Galerkin)
422513954efSKenneth E. Jansen!
42359599516SKenneth E. Jansen           if (iconvsclr.eq.2) then ! convective form
424513954efSKenneth E. Jansen!
42559599516SKenneth E. Jansen              rti(:, 4) = rti(:,4) + ( u1) * g1yti(:)
42659599516SKenneth E. Jansen     &                             + ( u2) * g2yti(:)
42759599516SKenneth E. Jansen     &                             + ( u3) * g3yti(:)
428513954efSKenneth E. Jansen!
42959599516SKenneth E. Jansen           else                 ! conservative form
430513954efSKenneth 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
434513954efSKenneth E. Jansen!
43559599516SKenneth E. Jansen           endif
43659599516SKenneth E. Jansen
437*f4d0b58bSKenneth E. Jansen!      flops = flops + 28*npro
43859599516SKenneth E. Jansen
43959599516SKenneth E. Jansen        endif
440513954efSKenneth E. Jansen!
441513954efSKenneth E. Jansen!.... calculate ( A_i Y,i ) --> rLyi
442513954efSKenneth 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
448513954efSKenneth E. Jansen!
449513954efSKenneth E. Jansen!.... add contribution to rmi
450513954efSKenneth E. Jansen!
451513954efSKenneth E. Jansen!        if ((ires .eq. 2) .or. (ires .eq. 3))
452513954efSKenneth E. Jansen!     &    rmi(:,16:20) = rLyi  ! modified residual uses non i.b.p form of conv
453513954efSKenneth E. Jansen!
454513954efSKenneth E. Jansen!.... ---------------------->  LHS   <-----------------------
455513954efSKenneth E. Jansen!
45659599516SKenneth E. Jansen        if (lhs .eq. 1) then
457513954efSKenneth E. Jansen!
458513954efSKenneth E. Jansen!.... loop through the columns
459513954efSKenneth E. Jansen!
46059599516SKenneth E. Jansen        do j = 1, nshl
46159599516SKenneth E. Jansen
462513954efSKenneth E. Jansen!
463513954efSKenneth E. Jansen!.... first compute (A_i N_b,i)
464513954efSKenneth 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
470513954efSKenneth E. Jansen!
471513954efSKenneth E. Jansen!.... now loop through the rows and add (N_a A_i N_b,i) to
472513954efSKenneth E. Jansen!     the tangent matrix.
473513954efSKenneth 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
479513954efSKenneth E. Jansen!
480513954efSKenneth E. Jansen!.... end loop on rows
481513954efSKenneth E. Jansen!
48259599516SKenneth E. Jansen           enddo
483513954efSKenneth E. Jansen!
484513954efSKenneth E. Jansen!.... end loop on columns
485513954efSKenneth E. Jansen!
48659599516SKenneth E. Jansen        enddo
487513954efSKenneth E. Jansen!
488513954efSKenneth E. Jansen!.... end of LHS tangent matrix computation
489513954efSKenneth E. Jansen!
49059599516SKenneth E. Jansen        endif
49159599516SKenneth E. Jansen
49259599516SKenneth E. Jansen        ttim(22) = ttim(22) + tmr()
493513954efSKenneth E. Jansen!
494513954efSKenneth E. Jansen!.... return
495513954efSKenneth E. Jansen!
49659599516SKenneth E. Jansen        return
49759599516SKenneth E. Jansen        end
49859599516SKenneth E. Jansen
499