xref: /phasta/phSolver/compressible/e3ls.f (revision 595995161822a203c8467e0e4a253d7bd7d6df32)
1*59599516SKenneth E. Jansen        subroutine e3LS   (A1,        A2,          A3,
2*59599516SKenneth E. Jansen     &                     rho,       rmu,         cp,
3*59599516SKenneth E. Jansen     &                     cv,        con,         T,
4*59599516SKenneth E. Jansen     &                     u1,        u2,          u3,
5*59599516SKenneth E. Jansen     &                     rLyi,      dxidx,       tau,
6*59599516SKenneth E. Jansen     &                     ri,        rmi,         rk,
7*59599516SKenneth E. Jansen     &                     dui,       aci,         A0,
8*59599516SKenneth E. Jansen     &                     divqi,     shape,       shg,
9*59599516SKenneth E. Jansen     &                     EGmass,    stiff,       WdetJ,
10*59599516SKenneth E. Jansen     &                     giju,      rTLS,        raLS,
11*59599516SKenneth E. Jansen     &                     A0inv,     dVdY,        rerrl,
12*59599516SKenneth E. Jansen     &                     compK,     pres,        PTau)
13*59599516SKenneth E. Jansenc
14*59599516SKenneth E. Jansenc----------------------------------------------------------------------
15*59599516SKenneth E. Jansenc
16*59599516SKenneth E. Jansenc This routine calculates the contribution of the least-squares
17*59599516SKenneth E. Jansenc operator to the RHS vector and LHS tangent matrix. The temporary
18*59599516SKenneth E. Jansenc results are put in ri.
19*59599516SKenneth E. Jansenc
20*59599516SKenneth E. Jansenc input:
21*59599516SKenneth E. Jansenc  A1    (npro,nflow,nflow)     : A_1
22*59599516SKenneth E. Jansenc  A2    (npro,nflow,nflow)     : A_2
23*59599516SKenneth E. Jansenc  A3    (npro,nflow,nflow)     : A_3
24*59599516SKenneth E. Jansenc  rho   (npro)               : density
25*59599516SKenneth E. Jansenc  T     (npro)               : temperature
26*59599516SKenneth E. Jansenc  cp    (npro)               : specific heat at constant pressure
27*59599516SKenneth E. Jansenc  u1    (npro)               : x1-velocity component
28*59599516SKenneth E. Jansenc  u2    (npro)               : x2-velocity component
29*59599516SKenneth E. Jansenc  u3    (npro)               : x3-velocity component
30*59599516SKenneth E. Jansenc  rLyi  (npro,nflow)          : least-squares residual vector
31*59599516SKenneth E. Jansenc  dxidx (npro,nsd,nsd)       : inverse of deformation gradient
32*59599516SKenneth E. Jansenc  tau   (npro,3)             : stability parameter
33*59599516SKenneth E. Jansenc  PTau  (npro,5,5)           : matrix of stability parameters
34*59599516SKenneth E. Jansenc  rLyi  (npro,nflow)          : convective portion of least-squares
35*59599516SKenneth E. Jansenc                               residual vector
36*59599516SKenneth E. Jansenc  divqi (npro,nflow-1)        : divergence of diffusive flux
37*59599516SKenneth E. Jansenc  shape (npro,nshl)        : element shape functions
38*59599516SKenneth E. Jansenc  shg   (npro,nshl,nsd)    : global element shape function grads
39*59599516SKenneth E. Jansenc  WdetJ (npro)               : weighted jacobian determinant
40*59599516SKenneth E. Jansenc  stiff (npro,nsd*nflow,nsd*nflow) : stiffness matrix
41*59599516SKenneth E. Jansenc  EGmass(npro,nedof,nedof)   : partial mass matrix
42*59599516SKenneth E. Jansenc  compK (npro,10)             : K_ij in (eq.134) A new ... III
43*59599516SKenneth E. Jansenc
44*59599516SKenneth E. Jansenc output:
45*59599516SKenneth E. Jansenc  ri     (npro,nflow*(nsd+1)) : partial residual
46*59599516SKenneth E. Jansenc  rmi    (npro,nflow*(nsd+1)) : partial modified residual
47*59599516SKenneth E. Jansenc  EGmass (npro,nedof,nedof)  : partial mass matrix
48*59599516SKenneth E. Jansenc
49*59599516SKenneth E. Jansenc
50*59599516SKenneth E. Jansenc Zdenek Johan, Summer 1990. (Modified from e2ls.f)
51*59599516SKenneth E. Jansenc Zdenek Johan, Winter 1991. (Fortran 90)
52*59599516SKenneth E. Jansenc Kenneth Jansen, Winter 1997. Prim. Var. with Diag Tau
53*59599516SKenneth E. Jansenc----------------------------------------------------------------------
54*59599516SKenneth E. Jansenc
55*59599516SKenneth E. Jansen        include "common.h"
56*59599516SKenneth E. Jansen
57*59599516SKenneth E. Jansenc
58*59599516SKenneth E. Jansenc  passed arrays
59*59599516SKenneth E. Jansenc
60*59599516SKenneth E. Jansen        dimension A1(npro,nflow,nflow),    A2(npro,nflow,nflow),
61*59599516SKenneth E. Jansen     &            A3(npro,nflow,nflow),    cv(npro),
62*59599516SKenneth E. Jansen     &            A0(npro,nflow,nflow),    rho(npro),
63*59599516SKenneth E. Jansen     &            con(npro),               cp(npro),
64*59599516SKenneth E. Jansen     &            dui(npro,nflow),         aci(npro,nflow),
65*59599516SKenneth E. Jansen     &            u1(npro),                u2(npro),
66*59599516SKenneth E. Jansen     &            u3(npro),                rk(npro),
67*59599516SKenneth E. Jansen     &            rLyi(npro,nflow),        dxidx(npro,nsd,nsd),
68*59599516SKenneth E. Jansen     &            tau(npro,5),             giju(npro,6),
69*59599516SKenneth E. Jansen     &            rTLS(npro),              raLS(npro),
70*59599516SKenneth E. Jansen     &            ri(npro,nflow*(nsd+1)),  rmi(npro,nflow*(nsd+1)),
71*59599516SKenneth E. Jansen     &            divqi(npro,nflow-1),     stiff(npro,3*nflow,3*nflow),
72*59599516SKenneth E. Jansen     &            EGmass(npro,nedof,nedof),shape(npro,nshl),
73*59599516SKenneth E. Jansen     &            shg(npro,nshl,nsd),      WdetJ(npro),
74*59599516SKenneth E. Jansen     &            PTau(npro,5,5),          T(npro),
75*59599516SKenneth E. Jansen     &            pres(npro)
76*59599516SKenneth E. Jansenc
77*59599516SKenneth E. Jansenc local arrays
78*59599516SKenneth E. Jansenc
79*59599516SKenneth E. Jansen        dimension rLymi(npro,nflow),         Atau(npro,nflow,nflow),
80*59599516SKenneth E. Jansen     &            A1tauA0(npro,nflow,nflow), A2tauA0(npro,nflow,nflow),
81*59599516SKenneth E. Jansen     &            A3tauA0(npro,nflow,nflow), fact(npro),
82*59599516SKenneth E. Jansen     &            A0inv(npro,15),            dVdY(npro,15),
83*59599516SKenneth E. Jansen     &            compK(npro,10),            ac1(npro),
84*59599516SKenneth E. Jansen     &            ac2(npro),                 ac3(npro)
85*59599516SKenneth E. Jansenc
86*59599516SKenneth E. Jansen        real*8    rerrl(npro,nshl,6), tmp(npro), tmp1(npro)
87*59599516SKenneth E. Jansen        ttim(24) = ttim(24) - secs(0.0)
88*59599516SKenneth E. Jansenc
89*59599516SKenneth E. Jansenc
90*59599516SKenneth E. Jansenc last step to the least squares is adding the time term.  So that we
91*59599516SKenneth E. Jansenc only have to localize one vector for each Krylov vector the modified
92*59599516SKenneth E. Jansenc residual is quite different from the total residual.
93*59599516SKenneth E. Jansenc
94*59599516SKenneth E. Jansenc
95*59599516SKenneth E. Jansenc the modified residual
96*59599516SKenneth E. Jansenc
97*59599516SKenneth E. Jansen       fct1=almi/gami/alfi*dtgl
98*59599516SKenneth E. Jansenc
99*59599516SKenneth E. Jansenc  add possibility of not including time term
100*59599516SKenneth E. Jansenc
101*59599516SKenneth E. Jansenc       if(idiff.ne.-1)
102*59599516SKenneth E. Jansen
103*59599516SKenneth E. Jansen       if(ires.ne.1) rLymi = rLyi + fct1*dui
104*59599516SKenneth E. Jansenc
105*59599516SKenneth E. Jansen       if(ires.eq.1 .or. ires .eq. 3) then
106*59599516SKenneth E. Jansenc       rLymi = rLyi
107*59599516SKenneth E. Jansen
108*59599516SKenneth E. Jansen        rLyi(:,1) = rLyi(:,1)
109*59599516SKenneth E. Jansen     &            + A0(:,1,1)*aci(:,1)
110*59599516SKenneth E. Jansenc    &            + A0(:,1,2)*aci(:,2)
111*59599516SKenneth E. Jansenc    &            + A0(:,1,3)*aci(:,3)
112*59599516SKenneth E. Jansenc    &            + A0(:,1,4)*aci(:,4)
113*59599516SKenneth E. Jansen     &            + A0(:,1,5)*aci(:,5)
114*59599516SKenneth E. Jansenc
115*59599516SKenneth E. Jansen        rLyi(:,2) = rLyi(:,2)
116*59599516SKenneth E. Jansen     &            + A0(:,2,1)*aci(:,1)
117*59599516SKenneth E. Jansen     &            + A0(:,2,2)*aci(:,2)
118*59599516SKenneth E. Jansenc    &            + A0(:,2,3)*aci(:,3)
119*59599516SKenneth E. Jansenc    &            + A0(:,2,4)*aci(:,4)
120*59599516SKenneth E. Jansen     &            + A0(:,2,5)*aci(:,5)
121*59599516SKenneth E. Jansenc
122*59599516SKenneth E. Jansen        rLyi(:,3) = rLyi(:,3)
123*59599516SKenneth E. Jansen     &            + A0(:,3,1)*aci(:,1)
124*59599516SKenneth E. Jansenc    &            + A0(:,3,2)*aci(:,2)
125*59599516SKenneth E. Jansen     &            + A0(:,3,3)*aci(:,3)
126*59599516SKenneth E. Jansenc    &            + A0(:,3,4)*aci(:,4)
127*59599516SKenneth E. Jansen     &            + A0(:,3,5)*aci(:,5)
128*59599516SKenneth E. Jansenc
129*59599516SKenneth E. Jansen        rLyi(:,4) = rLyi(:,4)
130*59599516SKenneth E. Jansen     &            + A0(:,4,1)*aci(:,1)
131*59599516SKenneth E. Jansenc    &            + A0(:,4,2)*aci(:,2)
132*59599516SKenneth E. Jansenc    &            + A0(:,4,3)*aci(:,3)
133*59599516SKenneth E. Jansen     &            + A0(:,4,4)*aci(:,4)
134*59599516SKenneth E. Jansen     &            + A0(:,4,5)*aci(:,5)
135*59599516SKenneth E. Jansenc
136*59599516SKenneth E. Jansen        rLyi(:,5) = rLyi(:,5)
137*59599516SKenneth E. Jansen     &            + A0(:,5,1)*aci(:,1)
138*59599516SKenneth E. Jansen     &            + A0(:,5,2)*aci(:,2)
139*59599516SKenneth E. Jansen     &            + A0(:,5,3)*aci(:,3)
140*59599516SKenneth E. Jansen     &            + A0(:,5,4)*aci(:,4)
141*59599516SKenneth E. Jansen     &            + A0(:,5,5)*aci(:,5)
142*59599516SKenneth E. Jansenc
143*59599516SKenneth E. Jansen      endif
144*59599516SKenneth E. Jansenc
145*59599516SKenneth E. Jansenc.... subtract div(q) from the least squares term
146*59599516SKenneth E. Jansenc
147*59599516SKenneth E. Jansen      if ((idiff >= 1).and.(ires==3 .or. ires==1)) then
148*59599516SKenneth E. Jansenc
149*59599516SKenneth E. Jansen      if (isurf.eq.zero) then
150*59599516SKenneth E. Jansen         rLyi(:,2) = rLyi(:,2) - divqi(:,1)
151*59599516SKenneth E. Jansen         rLyi(:,3) = rLyi(:,3) - divqi(:,2)
152*59599516SKenneth E. Jansen         rLyi(:,4) = rLyi(:,4) - divqi(:,3)
153*59599516SKenneth E. Jansen         rLyi(:,5) = rLyi(:,5) - divqi(:,4)
154*59599516SKenneth E. Jansen      endif
155*59599516SKenneth E. Jansen      endif
156*59599516SKenneth E. Jansenc
157*59599516SKenneth E. Jansenc.... -------------------> error calculation  <-----------------
158*59599516SKenneth E. Jansenc
159*59599516SKenneth E. Jansen       if((ierrcalc.eq.1).and.(nitr.eq.iter)) then
160*59599516SKenneth E. Jansen          do ia=1,nshl
161*59599516SKenneth E. Jansen             tmp=shape(:,ia)*WdetJ(:)
162*59599516SKenneth E. Jansen             tmp1=shape(:,ia)*Qwt(lcsyst,intp)
163*59599516SKenneth E. Jansen             rerrl(:,ia,1) = rerrl(:,ia,1) +
164*59599516SKenneth E. Jansen     &                       tmp1(:)*rLyi(:,1)*rLyi(:,1)
165*59599516SKenneth E. Jansen             rerrl(:,ia,2) = rerrl(:,ia,2) +
166*59599516SKenneth E. Jansen     &                       tmp1(:)*rLyi(:,2)*rLyi(:,2)
167*59599516SKenneth E. Jansen             rerrl(:,ia,3) = rerrl(:,ia,3) +
168*59599516SKenneth E. Jansen     &                       tmp1(:)*rLyi(:,3)*rLyi(:,3)
169*59599516SKenneth E. Jansen
170*59599516SKenneth E. Jansen             rerrl(:,ia,4) = rerrl(:,ia,4) +
171*59599516SKenneth E. Jansen     &                       tmp(:)*divqi(:,1)*divqi(:,1)
172*59599516SKenneth E. Jansen             rerrl(:,ia,5) = rerrl(:,ia,5) +
173*59599516SKenneth E. Jansen     &                       tmp(:)*divqi(:,2)*divqi(:,2)
174*59599516SKenneth E. Jansen             rerrl(:,ia,6) = rerrl(:,ia,6) +
175*59599516SKenneth E. Jansen     &                       tmp(:)*divqi(:,3)*divqi(:,3)
176*59599516SKenneth E. Jansen          enddo
177*59599516SKenneth E. Jansen       endif
178*59599516SKenneth E. Jansenc
179*59599516SKenneth E. Jansenc
180*59599516SKenneth E. Jansenc.... --------------------------->  Tau  <-----------------------------
181*59599516SKenneth E. Jansenc
182*59599516SKenneth E. Jansenc.... calculate the tau matrix
183*59599516SKenneth E. Jansenc
184*59599516SKenneth E. Jansenc.... in the first incarnation we will ONLY have a diagonal tau here
185*59599516SKenneth E. Jansen
186*59599516SKenneth E. Jansen       if (itau .lt. 10) then    ! diagonal tau
187*59599516SKenneth E. Jansen
188*59599516SKenneth E. Jansen          call e3tau  (rho,             cp,		rmu,
189*59599516SKenneth E. Jansen     &         u1,              u2,             u3,
190*59599516SKenneth E. Jansen     &         con,             dxidx,          rLyi,
191*59599516SKenneth E. Jansen     &         rLymi,           tau,            rk,
192*59599516SKenneth E. Jansen     &         giju,            rTLS,           raLS,
193*59599516SKenneth E. Jansen     &         A0inv,           dVdY,           cv)
194*59599516SKenneth E. Jansen
195*59599516SKenneth E. Jansen       else
196*59599516SKenneth E. Jansen
197*59599516SKenneth E. Jansenc.... looks like need a non-diagonal, discribed in "A new ... III"
198*59599516SKenneth E. Jansenc.... by Hughes and Mallet. Original work - developed diffusive (and as
199*59599516SKenneth E. Jansenc.... well advective) correction factors for 1-D a-d equation w/ hier. b.
200*59599516SKenneth E. Jansen
201*59599516SKenneth E. Jansen
202*59599516SKenneth E. Jansen          ac1(:) = aci(:,2)
203*59599516SKenneth E. Jansen          ac2(:) = aci(:,3)
204*59599516SKenneth E. Jansen          ac3(:) = aci(:,4)
205*59599516SKenneth E. Jansen
206*59599516SKenneth E. Jansen          call e3tau_nd  (rho,       cp,  rmu,   T,
207*59599516SKenneth E. Jansen     &         u1,              u2,             u3,
208*59599516SKenneth E. Jansen     &         ac1,             ac2,             ac3,
209*59599516SKenneth E. Jansen     &         con,             dxidx,          rLyi,
210*59599516SKenneth E. Jansen     &         rLymi,           PTau,           rk,
211*59599516SKenneth E. Jansen     &         giju,            rTLS,           raLS,
212*59599516SKenneth E. Jansen     &         cv,              compK,          pres,
213*59599516SKenneth E. Jansen     &         A0inv,           dVdY)
214*59599516SKenneth E. Jansen
215*59599516SKenneth E. Jansen       endif
216*59599516SKenneth E. Jansen
217*59599516SKenneth E. Jansen
218*59599516SKenneth E. Jansen        ttim(25) = ttim(25) + secs(0.0)
219*59599516SKenneth E. Jansenc
220*59599516SKenneth E. Jansenc Warning:  to save space I have put the tau times the modified residual
221*59599516SKenneth E. Jansenc           in rLymi and the tau times the total residual back in rLyi
222*59599516SKenneth E. Jansenc
223*59599516SKenneth E. Jansenc
224*59599516SKenneth E. Jansenc.... ---------------------------->  RHS  <----------------------------
225*59599516SKenneth E. Jansenc
226*59599516SKenneth E. Jansenc.... calculate (A_i^T tau Ly)
227*59599516SKenneth E. Jansenc
228*59599516SKenneth E. Jansen
229*59599516SKenneth E. Jansen       if(ires.ne.1) then
230*59599516SKenneth E. Jansenc
231*59599516SKenneth E. Jansenc  A1 * Tau L(Y):  to be hit on left with Na,x in e3wmlt
232*59599516SKenneth E. Jansenc
233*59599516SKenneth E. Jansen        rmi(:,1) =
234*59599516SKenneth E. Jansen     &               A1(:,1,1) * rLymi(:,1)
235*59599516SKenneth E. Jansen     &             + A1(:,1,2) * rLymi(:,2)
236*59599516SKenneth E. Jansenc    &             + A1(:,1,3) * rLymi(:,3)
237*59599516SKenneth E. Jansenc    &             + A1(:,1,4) * rLymi(:,4)
238*59599516SKenneth E. Jansen     &             + A1(:,1,5) * rLymi(:,5)
239*59599516SKenneth E. Jansen     &             + rmi(:,1)
240*59599516SKenneth E. Jansen        rmi(:,2) =
241*59599516SKenneth E. Jansen     &               A1(:,2,1) * rLymi(:,1)
242*59599516SKenneth E. Jansen     &             + A1(:,2,2) * rLymi(:,2)
243*59599516SKenneth E. Jansenc    &             + A1(:,2,3) * rLymi(:,3)
244*59599516SKenneth E. Jansenc    &             + A1(:,2,4) * rLymi(:,4)
245*59599516SKenneth E. Jansen     &             + A1(:,2,5) * rLymi(:,5)
246*59599516SKenneth E. Jansen     &             + rmi(:,2)
247*59599516SKenneth E. Jansen        rmi(:,3) =
248*59599516SKenneth E. Jansen     &               A1(:,3,1) * rLymi(:,1)
249*59599516SKenneth E. Jansen     &             + A1(:,3,2) * rLymi(:,2)
250*59599516SKenneth E. Jansen     &             + A1(:,3,3) * rLymi(:,3)
251*59599516SKenneth E. Jansenc    &             + A1(:,3,4) * rLymi(:,4)
252*59599516SKenneth E. Jansen     &             + A1(:,3,5) * rLymi(:,5)
253*59599516SKenneth E. Jansen     &             + rmi(:,3)
254*59599516SKenneth E. Jansen        rmi(:,4) =
255*59599516SKenneth E. Jansen     &               A1(:,4,1) * rLymi(:,1)
256*59599516SKenneth E. Jansen     &             + A1(:,4,2) * rLymi(:,2)
257*59599516SKenneth E. Jansenc    &             + A1(:,4,3) * rLymi(:,3)
258*59599516SKenneth E. Jansen     &             + A1(:,4,4) * rLymi(:,4)
259*59599516SKenneth E. Jansen     &             + A1(:,4,5) * rLymi(:,5)
260*59599516SKenneth E. Jansen     &             + rmi(:,4)
261*59599516SKenneth E. Jansen        rmi(:,5) =
262*59599516SKenneth E. Jansen     &               A1(:,5,1) * rLymi(:,1)
263*59599516SKenneth E. Jansen     &             + A1(:,5,2) * rLymi(:,2)
264*59599516SKenneth E. Jansen     &             + A1(:,5,3) * rLymi(:,3)
265*59599516SKenneth E. Jansen     &             + A1(:,5,4) * rLymi(:,4)
266*59599516SKenneth E. Jansen     &             + A1(:,5,5) * rLymi(:,5)
267*59599516SKenneth E. Jansen     &             + rmi(:,5)
268*59599516SKenneth E. Jansenc
269*59599516SKenneth E. Jansenc  A2 * Tau L(Y),  to be hit on left with Na,y
270*59599516SKenneth E. Jansenc
271*59599516SKenneth E. Jansen        rmi(:,6) =
272*59599516SKenneth E. Jansen     &               A2(:,1,1) * rLymi(:,1)
273*59599516SKenneth E. Jansenc    &             + A2(:,1,2) * rLymi(:,2)
274*59599516SKenneth E. Jansen     &             + A2(:,1,3) * rLymi(:,3)
275*59599516SKenneth E. Jansenc    &             + A2(:,1,4) * rLymi(:,4)
276*59599516SKenneth E. Jansen     &             + A2(:,1,5) * rLymi(:,5)
277*59599516SKenneth E. Jansen     &             + rmi(:,6)
278*59599516SKenneth E. Jansen        rmi(:,7) =
279*59599516SKenneth E. Jansen     &               A2(:,2,1) * rLymi(:,1)
280*59599516SKenneth E. Jansen     &             + A2(:,2,2) * rLymi(:,2)
281*59599516SKenneth E. Jansen     &             + A2(:,2,3) * rLymi(:,3)
282*59599516SKenneth E. Jansenc    &             + A2(:,2,4) * rLymi(:,4)
283*59599516SKenneth E. Jansen     &             + A2(:,2,5) * rLymi(:,5)
284*59599516SKenneth E. Jansen     &             + rmi(:,7)
285*59599516SKenneth E. Jansen        rmi(:,8) =
286*59599516SKenneth E. Jansen     &               A2(:,3,1) * rLymi(:,1)
287*59599516SKenneth E. Jansenc    &             + A2(:,3,2) * rLymi(:,2)
288*59599516SKenneth E. Jansen     &             + A2(:,3,3) * rLymi(:,3)
289*59599516SKenneth E. Jansenc    &             + A2(:,3,4) * rLymi(:,4)
290*59599516SKenneth E. Jansen     &             + A2(:,3,5) * rLymi(:,5)
291*59599516SKenneth E. Jansen     &             + rmi(:,8)
292*59599516SKenneth E. Jansen        rmi(:,9) =
293*59599516SKenneth E. Jansen     &               A2(:,4,1) * rLymi(:,1)
294*59599516SKenneth E. Jansenc    &             + A2(:,4,2) * rLymi(:,2)
295*59599516SKenneth E. Jansen     &             + A2(:,4,3) * rLymi(:,3)
296*59599516SKenneth E. Jansen     &             + A2(:,4,4) * rLymi(:,4)
297*59599516SKenneth E. Jansen     &             + A2(:,4,5) * rLymi(:,5)
298*59599516SKenneth E. Jansen     &             + rmi(:,9)
299*59599516SKenneth E. Jansen        rmi(:,10) =
300*59599516SKenneth E. Jansen     &               A2(:,5,1) * rLymi(:,1)
301*59599516SKenneth E. Jansen     &             + A2(:,5,2) * rLymi(:,2)
302*59599516SKenneth E. Jansen     &             + A2(:,5,3) * rLymi(:,3)
303*59599516SKenneth E. Jansen     &             + A2(:,5,4) * rLymi(:,4)
304*59599516SKenneth E. Jansen     &             + A2(:,5,5) * rLymi(:,5)
305*59599516SKenneth E. Jansen     &             + rmi(:,10)
306*59599516SKenneth E. Jansenc
307*59599516SKenneth E. Jansenc  A3 * Tau L(Y)  to be hit on left with Na,z
308*59599516SKenneth E. Jansenc
309*59599516SKenneth E. Jansen        rmi(:,11) =
310*59599516SKenneth E. Jansen     &               A3(:,1,1) * rLymi(:,1)
311*59599516SKenneth E. Jansenc    &             + A3(:,1,2) * rLymi(:,2)
312*59599516SKenneth E. Jansenc    &             + A3(:,1,3) * rLymi(:,3)
313*59599516SKenneth E. Jansen     &             + A3(:,1,4) * rLymi(:,4)
314*59599516SKenneth E. Jansen     &             + A3(:,1,5) * rLymi(:,5)
315*59599516SKenneth E. Jansen     &             + rmi(:,11)
316*59599516SKenneth E. Jansen        rmi(:,12) =
317*59599516SKenneth E. Jansen     &               A3(:,2,1) * rLymi(:,1)
318*59599516SKenneth E. Jansen     &             + A3(:,2,2) * rLymi(:,2)
319*59599516SKenneth E. Jansenc    &             + A3(:,2,3) * rLymi(:,3)
320*59599516SKenneth E. Jansen     &             + A3(:,2,4) * rLymi(:,4)
321*59599516SKenneth E. Jansen     &             + A3(:,2,5) * rLymi(:,5)
322*59599516SKenneth E. Jansen     &             + rmi(:,12)
323*59599516SKenneth E. Jansen        rmi(:,13) =
324*59599516SKenneth E. Jansen     &               A3(:,3,1) * rLymi(:,1)
325*59599516SKenneth E. Jansenc    &             + A3(:,3,2) * rLymi(:,2)
326*59599516SKenneth E. Jansen     &             + A3(:,3,3) * rLymi(:,3)
327*59599516SKenneth E. Jansen     &             + A3(:,3,4) * rLymi(:,4)
328*59599516SKenneth E. Jansen     &             + A3(:,3,5) * rLymi(:,5)
329*59599516SKenneth E. Jansen     &             + rmi(:,13)
330*59599516SKenneth E. Jansen        rmi(:,14) =
331*59599516SKenneth E. Jansen     &               A3(:,4,1) * rLymi(:,1)
332*59599516SKenneth E. Jansenc    &             + A3(:,4,2) * rLymi(:,2)
333*59599516SKenneth E. Jansenc    &             + A3(:,4,3) * rLymi(:,3)
334*59599516SKenneth E. Jansen     &             + A3(:,4,4) * rLymi(:,4)
335*59599516SKenneth E. Jansen     &             + A3(:,4,5) * rLymi(:,5)
336*59599516SKenneth E. Jansen     &             + rmi(:,14)
337*59599516SKenneth E. Jansen        rmi(:,15) =
338*59599516SKenneth E. Jansen     &               A3(:,5,1) * rLymi(:,1)
339*59599516SKenneth E. Jansen     &             + A3(:,5,2) * rLymi(:,2)
340*59599516SKenneth E. Jansen     &             + A3(:,5,3) * rLymi(:,3)
341*59599516SKenneth E. Jansen     &             + A3(:,5,4) * rLymi(:,4)
342*59599516SKenneth E. Jansen     &             + A3(:,5,5) * rLymi(:,5)
343*59599516SKenneth E. Jansen     &             + rmi(:,15)
344*59599516SKenneth E. Jansen      endif  !ires.ne.1
345*59599516SKenneth E. Jansen
346*59599516SKenneth E. Jansenc
347*59599516SKenneth E. Jansenc  same thing for the real residual
348*59599516SKenneth E. Jansenc
349*59599516SKenneth E. Jansen       if(ires.eq.3 .or. ires .eq. 1) then  ! we need the total residual
350*59599516SKenneth E. Jansen        ri(:,1) =
351*59599516SKenneth E. Jansen     &               A1(:,1,1) * rLyi(:,1)
352*59599516SKenneth E. Jansen     &             + A1(:,1,2) * rLyi(:,2)
353*59599516SKenneth E. Jansenc    &             + A1(:,1,3) * rLyi(:,3)
354*59599516SKenneth E. Jansenc    &             + A1(:,1,4) * rLyi(:,4)
355*59599516SKenneth E. Jansen     &             + A1(:,1,5) * rLyi(:,5)
356*59599516SKenneth E. Jansen     &             + ri(:,1)
357*59599516SKenneth E. Jansen        ri(:,2) =
358*59599516SKenneth E. Jansen     &               A1(:,2,1) * rLyi(:,1)
359*59599516SKenneth E. Jansen     &             + A1(:,2,2) * rLyi(:,2)
360*59599516SKenneth E. Jansenc    &             + A1(:,2,3) * rLyi(:,3)
361*59599516SKenneth E. Jansenc    &             + A1(:,2,4) * rLyi(:,4)
362*59599516SKenneth E. Jansen     &             + A1(:,2,5) * rLyi(:,5)
363*59599516SKenneth E. Jansen     &             + ri(:,2)
364*59599516SKenneth E. Jansen        ri(:,3) =
365*59599516SKenneth E. Jansen     &               A1(:,3,1) * rLyi(:,1)
366*59599516SKenneth E. Jansen     &             + A1(:,3,2) * rLyi(:,2)
367*59599516SKenneth E. Jansen     &             + A1(:,3,3) * rLyi(:,3)
368*59599516SKenneth E. Jansenc    &             + A1(:,3,4) * rLyi(:,4)
369*59599516SKenneth E. Jansen     &             + A1(:,3,5) * rLyi(:,5)
370*59599516SKenneth E. Jansen     &             + ri(:,3)
371*59599516SKenneth E. Jansen        ri(:,4) =
372*59599516SKenneth E. Jansen     &               A1(:,4,1) * rLyi(:,1)
373*59599516SKenneth E. Jansen     &             + A1(:,4,2) * rLyi(:,2)
374*59599516SKenneth E. Jansenc    &             + A1(:,4,3) * rLyi(:,3)
375*59599516SKenneth E. Jansen     &             + A1(:,4,4) * rLyi(:,4)
376*59599516SKenneth E. Jansen     &             + A1(:,4,5) * rLyi(:,5)
377*59599516SKenneth E. Jansen     &             + ri(:,4)
378*59599516SKenneth E. Jansen        ri(:,5) =
379*59599516SKenneth E. Jansen     &               A1(:,5,1) * rLyi(:,1)
380*59599516SKenneth E. Jansen     &             + A1(:,5,2) * rLyi(:,2)
381*59599516SKenneth E. Jansen     &             + A1(:,5,3) * rLyi(:,3)
382*59599516SKenneth E. Jansen     &             + A1(:,5,4) * rLyi(:,4)
383*59599516SKenneth E. Jansen     &             + A1(:,5,5) * rLyi(:,5)
384*59599516SKenneth E. Jansen     &             + ri(:,5)
385*59599516SKenneth E. Jansenc
386*59599516SKenneth E. Jansen        ri(:,6) =
387*59599516SKenneth E. Jansen     &               A2(:,1,1) * rLyi(:,1)
388*59599516SKenneth E. Jansenc    &             + A2(:,1,2) * rLyi(:,2)
389*59599516SKenneth E. Jansen     &             + A2(:,1,3) * rLyi(:,3)
390*59599516SKenneth E. Jansenc    &             + A2(:,1,4) * rLyi(:,4)
391*59599516SKenneth E. Jansen     &             + A2(:,1,5) * rLyi(:,5)
392*59599516SKenneth E. Jansen     &             + ri(:,6)
393*59599516SKenneth E. Jansen        ri(:,7) =
394*59599516SKenneth E. Jansen     &               A2(:,2,1) * rLyi(:,1)
395*59599516SKenneth E. Jansen     &             + A2(:,2,2) * rLyi(:,2)
396*59599516SKenneth E. Jansen     &             + A2(:,2,3) * rLyi(:,3)
397*59599516SKenneth E. Jansenc    &             + A2(:,2,4) * rLyi(:,4)
398*59599516SKenneth E. Jansen     &             + A2(:,2,5) * rLyi(:,5)
399*59599516SKenneth E. Jansen     &             + ri(:,7)
400*59599516SKenneth E. Jansen        ri(:,8) =
401*59599516SKenneth E. Jansen     &               A2(:,3,1) * rLyi(:,1)
402*59599516SKenneth E. Jansenc    &             + A2(:,3,2) * rLyi(:,2)
403*59599516SKenneth E. Jansen     &             + A2(:,3,3) * rLyi(:,3)
404*59599516SKenneth E. Jansenc    &             + A2(:,3,4) * rLyi(:,4)
405*59599516SKenneth E. Jansen     &             + A2(:,3,5) * rLyi(:,5)
406*59599516SKenneth E. Jansen     &             + ri(:,8)
407*59599516SKenneth E. Jansen        ri(:,9) =
408*59599516SKenneth E. Jansen     &               A2(:,4,1) * rLyi(:,1)
409*59599516SKenneth E. Jansenc    &             + A2(:,4,2) * rLyi(:,2)
410*59599516SKenneth E. Jansen     &             + A2(:,4,3) * rLyi(:,3)
411*59599516SKenneth E. Jansen     &             + A2(:,4,4) * rLyi(:,4)
412*59599516SKenneth E. Jansen     &             + A2(:,4,5) * rLyi(:,5)
413*59599516SKenneth E. Jansen     &             + ri(:,9)
414*59599516SKenneth E. Jansen        ri(:,10) =
415*59599516SKenneth E. Jansen     &               A2(:,5,1) * rLyi(:,1)
416*59599516SKenneth E. Jansen     &             + A2(:,5,2) * rLyi(:,2)
417*59599516SKenneth E. Jansen     &             + A2(:,5,3) * rLyi(:,3)
418*59599516SKenneth E. Jansen     &             + A2(:,5,4) * rLyi(:,4)
419*59599516SKenneth E. Jansen     &             + A2(:,5,5) * rLyi(:,5)
420*59599516SKenneth E. Jansen     &             + ri(:,10)
421*59599516SKenneth E. Jansen        ri(:,11) =
422*59599516SKenneth E. Jansen     &               A3(:,1,1) * rLyi(:,1)
423*59599516SKenneth E. Jansenc    &             + A3(:,1,2) * rLyi(:,2)
424*59599516SKenneth E. Jansenc    &             + A3(:,1,3) * rLyi(:,3)
425*59599516SKenneth E. Jansen     &             + A3(:,1,4) * rLyi(:,4)
426*59599516SKenneth E. Jansen     &             + A3(:,1,5) * rLyi(:,5)
427*59599516SKenneth E. Jansen     &             + ri(:,11)
428*59599516SKenneth E. Jansen        ri(:,12) =
429*59599516SKenneth E. Jansen     &               A3(:,2,1) * rLyi(:,1)
430*59599516SKenneth E. Jansen     &             + A3(:,2,2) * rLyi(:,2)
431*59599516SKenneth E. Jansenc    &             + A3(:,2,3) * rLyi(:,3)
432*59599516SKenneth E. Jansen     &             + A3(:,2,4) * rLyi(:,4)
433*59599516SKenneth E. Jansen     &             + A3(:,2,5) * rLyi(:,5)
434*59599516SKenneth E. Jansen     &             + ri(:,12)
435*59599516SKenneth E. Jansen        ri(:,13) =
436*59599516SKenneth E. Jansen     &               A3(:,3,1) * rLyi(:,1)
437*59599516SKenneth E. Jansenc    &             + A3(:,3,2) * rLyi(:,2)
438*59599516SKenneth E. Jansen     &             + A3(:,3,3) * rLyi(:,3)
439*59599516SKenneth E. Jansen     &             + A3(:,3,4) * rLyi(:,4)
440*59599516SKenneth E. Jansen     &             + A3(:,3,5) * rLyi(:,5)
441*59599516SKenneth E. Jansen     &             + ri(:,13)
442*59599516SKenneth E. Jansen        ri(:,14) =
443*59599516SKenneth E. Jansen     &               A3(:,4,1) * rLyi(:,1)
444*59599516SKenneth E. Jansenc    &             + A3(:,4,2) * rLyi(:,2)
445*59599516SKenneth E. Jansenc    &             + A3(:,4,3) * rLyi(:,3)
446*59599516SKenneth E. Jansen     &             + A3(:,4,4) * rLyi(:,4)
447*59599516SKenneth E. Jansen     &             + A3(:,4,5) * rLyi(:,5)
448*59599516SKenneth E. Jansen     &             + ri(:,14)
449*59599516SKenneth E. Jansen        ri(:,15) =
450*59599516SKenneth E. Jansen     &               A3(:,5,1) * rLyi(:,1)
451*59599516SKenneth E. Jansen     &             + A3(:,5,2) * rLyi(:,2)
452*59599516SKenneth E. Jansen     &             + A3(:,5,3) * rLyi(:,3)
453*59599516SKenneth E. Jansen     &             + A3(:,5,4) * rLyi(:,4)
454*59599516SKenneth E. Jansen     &             + A3(:,5,5) * rLyi(:,5)
455*59599516SKenneth E. Jansen     &             + ri(:,15)
456*59599516SKenneth E. Jansenc
457*59599516SKenneth E. Jansen       endif ! for ires=3 or 1
458*59599516SKenneth E. Jansen
459*59599516SKenneth E. Jansenc
460*59599516SKenneth E. Jansenc.... ---------------------------->  LHS  <----------------------------
461*59599516SKenneth E. Jansenc
462*59599516SKenneth E. Jansen       if (lhs .eq. 1) then
463*59599516SKenneth E. Jansenc
464*59599516SKenneth E. Jansenc.... calculate (Atau) <-- (A_1 tau) (Recall that we are using a
465*59599516SKenneth E. Jansenc                                     diagonal tau here)
466*59599516SKenneth E. Jansenc
467*59599516SKenneth E. Jansen
468*59599516SKenneth E. Jansen          if (itau.lt.10) then
469*59599516SKenneth E. Jansen
470*59599516SKenneth E. Jansen             do i = 1, nflow
471*59599516SKenneth E. Jansen                Atau(:,i,1) = A1(:,i,1)*tau(:,1)
472*59599516SKenneth E. Jansen                Atau(:,i,2) = A1(:,i,2)*tau(:,2)
473*59599516SKenneth E. Jansen                Atau(:,i,3) = A1(:,i,3)*tau(:,2)
474*59599516SKenneth E. Jansen                Atau(:,i,4) = A1(:,i,4)*tau(:,2)
475*59599516SKenneth E. Jansen                Atau(:,i,5) = A1(:,i,5)*tau(:,3)
476*59599516SKenneth E. Jansen             enddo
477*59599516SKenneth E. Jansen
478*59599516SKenneth E. Jansen          else
479*59599516SKenneth E. Jansen
480*59599516SKenneth E. Jansen             Atau = zero
481*59599516SKenneth E. Jansen             do i = 1, nflow
482*59599516SKenneth E. Jansen                do j = 1, nflow
483*59599516SKenneth E. Jansen                   do k = 1, nflow
484*59599516SKenneth E. Jansen                      Atau(:,i,j) =Atau(:,i,j) + A1(:,i,k)*PTau(:,k,j)
485*59599516SKenneth E. Jansen                   enddo
486*59599516SKenneth E. Jansen                enddo
487*59599516SKenneth E. Jansen             enddo
488*59599516SKenneth E. Jansen
489*59599516SKenneth E. Jansen          endif
490*59599516SKenneth E. Jansenc
491*59599516SKenneth E. Jansenc.... calculate (A_1 tau A_0) (for L.S. time term of EGmass)
492*59599516SKenneth E. Jansenc
493*59599516SKenneth E. Jansen       do j = 1, nflow
494*59599516SKenneth E. Jansen          do i = 1, nflow
495*59599516SKenneth E. Jansen             A1tauA0(:,i,j) =
496*59599516SKenneth E. Jansen     &            Atau(:,i,1)*A0(:,1,j) +
497*59599516SKenneth E. Jansen     &            Atau(:,i,2)*A0(:,2,j) +
498*59599516SKenneth E. Jansen     &            Atau(:,i,3)*A0(:,3,j) +
499*59599516SKenneth E. Jansen     &            Atau(:,i,4)*A0(:,4,j) +
500*59599516SKenneth E. Jansen     &            Atau(:,i,5)*A0(:,5,j)
501*59599516SKenneth E. Jansen          enddo
502*59599516SKenneth E. Jansen       enddo
503*59599516SKenneth E. Jansenc
504*59599516SKenneth E. Jansenc.... add (A_1 tau A_1) to stiff [1,1]
505*59599516SKenneth E. Jansenc
506*59599516SKenneth E. Jansen       do j = 1, nflow
507*59599516SKenneth E. Jansen          do i = 1, nflow
508*59599516SKenneth E. Jansen             stiff(:,i,j) = stiff(:,i,j) + (
509*59599516SKenneth E. Jansen     &              Atau(:,i,1)*A1(:,1,j)
510*59599516SKenneth E. Jansen     &            + Atau(:,i,2)*A1(:,2,j)
511*59599516SKenneth E. Jansen     &            + Atau(:,i,3)*A1(:,3,j)
512*59599516SKenneth E. Jansen     &            + Atau(:,i,4)*A1(:,4,j)
513*59599516SKenneth E. Jansen     &            + Atau(:,i,5)*A1(:,5,j)
514*59599516SKenneth E. Jansen     &            )
515*59599516SKenneth E. Jansen          enddo
516*59599516SKenneth E. Jansen       enddo
517*59599516SKenneth E. Jansenc
518*59599516SKenneth E. Jansenc.... add (A_1 tau A_2) to stiff [1,2]
519*59599516SKenneth E. Jansenc
520*59599516SKenneth E. Jansen       do j = 1, nflow
521*59599516SKenneth E. Jansen          do i = 1, nflow
522*59599516SKenneth E. Jansen             stiff(:,i,j+5) = stiff(:,i,j+5) + (
523*59599516SKenneth E. Jansen     &              Atau(:,i,1)*A2(:,1,j)
524*59599516SKenneth E. Jansen     &            + Atau(:,i,2)*A2(:,2,j)
525*59599516SKenneth E. Jansen     &            + Atau(:,i,3)*A2(:,3,j)
526*59599516SKenneth E. Jansen     &            + Atau(:,i,4)*A2(:,4,j)
527*59599516SKenneth E. Jansen     &            + Atau(:,i,5)*A2(:,5,j)
528*59599516SKenneth E. Jansen     &            )
529*59599516SKenneth E. Jansen          enddo
530*59599516SKenneth E. Jansen       enddo
531*59599516SKenneth E. Jansenc
532*59599516SKenneth E. Jansenc.... add (A_1 tau A_3) to stiff [1,3]
533*59599516SKenneth E. Jansenc
534*59599516SKenneth E. Jansen       do j = 1, nflow
535*59599516SKenneth E. Jansen          do i = 1, nflow
536*59599516SKenneth E. Jansen             stiff(:,i,j+10) = stiff(:,i,j+10) + (
537*59599516SKenneth E. Jansen     &              Atau(:,i,1)*A3(:,1,j)
538*59599516SKenneth E. Jansen     &            + Atau(:,i,2)*A3(:,2,j)
539*59599516SKenneth E. Jansen     &            + Atau(:,i,3)*A3(:,3,j)
540*59599516SKenneth E. Jansen     &            + Atau(:,i,4)*A3(:,4,j)
541*59599516SKenneth E. Jansen     &            + Atau(:,i,5)*A3(:,5,j)
542*59599516SKenneth E. Jansen     &            )
543*59599516SKenneth E. Jansen          enddo
544*59599516SKenneth E. Jansen       enddo
545*59599516SKenneth E. Jansenc
546*59599516SKenneth E. Jansenc.... calculate (Atau) <-- (A_2 tau) (Recall that we are using a
547*59599516SKenneth E. Jansenc                                     diagonal tau here)
548*59599516SKenneth E. Jansenc
549*59599516SKenneth E. Jansen       if (itau.lt.10) then
550*59599516SKenneth E. Jansen
551*59599516SKenneth E. Jansen          do i = 1, nflow
552*59599516SKenneth E. Jansen             Atau(:,i,1) = A2(:,i,1)*tau(:,1)
553*59599516SKenneth E. Jansen             Atau(:,i,2) = A2(:,i,2)*tau(:,2)
554*59599516SKenneth E. Jansen             Atau(:,i,3) = A2(:,i,3)*tau(:,2)
555*59599516SKenneth E. Jansen             Atau(:,i,4) = A2(:,i,4)*tau(:,2)
556*59599516SKenneth E. Jansen             Atau(:,i,5) = A2(:,i,5)*tau(:,3)
557*59599516SKenneth E. Jansen          enddo
558*59599516SKenneth E. Jansen
559*59599516SKenneth E. Jansen       else
560*59599516SKenneth E. Jansen          Atau = zero
561*59599516SKenneth E. Jansen          do i = 1, nflow
562*59599516SKenneth E. Jansen             do j = 1, nflow
563*59599516SKenneth E. Jansen                do k = 1, nflow
564*59599516SKenneth E. Jansen                   Atau(:,i,j) = Atau(:,i,j) + A2(:,i,k)*PTau(:,k,j)
565*59599516SKenneth E. Jansen                enddo
566*59599516SKenneth E. Jansen             enddo
567*59599516SKenneth E. Jansen          enddo
568*59599516SKenneth E. Jansen
569*59599516SKenneth E. Jansen       endif
570*59599516SKenneth E. Jansenc
571*59599516SKenneth E. Jansenc.... calculate (A_2 tau A_0) (for L.S. time term of EGmass)
572*59599516SKenneth E. Jansenc
573*59599516SKenneth E. Jansen       do j = 1, nflow
574*59599516SKenneth E. Jansen          do i = 1, nflow
575*59599516SKenneth E. Jansen             A2tauA0(:,i,j) =
576*59599516SKenneth E. Jansen     &            Atau(:,i,1)*A0(:,1,j) +
577*59599516SKenneth E. Jansen     &            Atau(:,i,2)*A0(:,2,j) +
578*59599516SKenneth E. Jansen     &            Atau(:,i,3)*A0(:,3,j) +
579*59599516SKenneth E. Jansen     &            Atau(:,i,4)*A0(:,4,j) +
580*59599516SKenneth E. Jansen     &            Atau(:,i,5)*A0(:,5,j)
581*59599516SKenneth E. Jansen          enddo
582*59599516SKenneth E. Jansen       enddo
583*59599516SKenneth E. Jansenc
584*59599516SKenneth E. Jansenc.... add (A_2 tau A_1) to stiff [2,1]
585*59599516SKenneth E. Jansenc
586*59599516SKenneth E. Jansen       do j = 1, nflow
587*59599516SKenneth E. Jansen          do i = 1, nflow
588*59599516SKenneth E. Jansen             stiff(:,i+5,j) = stiff(:,i+5,j) + (
589*59599516SKenneth E. Jansen     &              Atau(:,i,1)*A1(:,1,j)
590*59599516SKenneth E. Jansen     &            + Atau(:,i,2)*A1(:,2,j)
591*59599516SKenneth E. Jansen     &            + Atau(:,i,3)*A1(:,3,j)
592*59599516SKenneth E. Jansen     &            + Atau(:,i,4)*A1(:,4,j)
593*59599516SKenneth E. Jansen     &            + Atau(:,i,5)*A1(:,5,j)
594*59599516SKenneth E. Jansen     &            )
595*59599516SKenneth E. Jansen          enddo
596*59599516SKenneth E. Jansen       enddo
597*59599516SKenneth E. Jansenc
598*59599516SKenneth E. Jansenc.... add (A_2 tau A_2) to stiff [2,2]
599*59599516SKenneth E. Jansenc
600*59599516SKenneth E. Jansen       do j = 1, nflow
601*59599516SKenneth E. Jansen          do i = 1, nflow
602*59599516SKenneth E. Jansen             stiff(:,i+5,j+5) = stiff(:,i+5,j+5) + (
603*59599516SKenneth E. Jansen     &              Atau(:,i,1)*A2(:,1,j)
604*59599516SKenneth E. Jansen     &            + Atau(:,i,2)*A2(:,2,j)
605*59599516SKenneth E. Jansen     &            + Atau(:,i,3)*A2(:,3,j)
606*59599516SKenneth E. Jansen     &            + Atau(:,i,4)*A2(:,4,j)
607*59599516SKenneth E. Jansen     &            + Atau(:,i,5)*A2(:,5,j)
608*59599516SKenneth E. Jansen     &            )
609*59599516SKenneth E. Jansen          enddo
610*59599516SKenneth E. Jansen       enddo
611*59599516SKenneth E. Jansenc
612*59599516SKenneth E. Jansenc.... add (A_2 tau A_3) to stiff [2,3]
613*59599516SKenneth E. Jansenc
614*59599516SKenneth E. Jansen       do j = 1, nflow
615*59599516SKenneth E. Jansen          do i = 1, nflow
616*59599516SKenneth E. Jansen             stiff(:,i+5,j+10) = stiff(:,i+5,j+10) + (
617*59599516SKenneth E. Jansen     &              Atau(:,i,1)*A3(:,1,j)
618*59599516SKenneth E. Jansen     &            + Atau(:,i,2)*A3(:,2,j)
619*59599516SKenneth E. Jansen     &            + Atau(:,i,3)*A3(:,3,j)
620*59599516SKenneth E. Jansen     &            + Atau(:,i,4)*A3(:,4,j)
621*59599516SKenneth E. Jansen     &            + Atau(:,i,5)*A3(:,5,j)
622*59599516SKenneth E. Jansen     &            )
623*59599516SKenneth E. Jansen          enddo
624*59599516SKenneth E. Jansen       enddo
625*59599516SKenneth E. Jansenc
626*59599516SKenneth E. Jansenc.... calculate (Atau) <-- (A_3 tau) (Recall that we are using a
627*59599516SKenneth E. Jansenc                                     diagonal tau here)
628*59599516SKenneth E. Jansenc
629*59599516SKenneth E. Jansen       if (itau.lt.10) then
630*59599516SKenneth E. Jansen
631*59599516SKenneth E. Jansen          do i = 1, nflow
632*59599516SKenneth E. Jansen             Atau(:,i,1) = A3(:,i,1)*tau(:,1)
633*59599516SKenneth E. Jansen             Atau(:,i,2) = A3(:,i,2)*tau(:,2)
634*59599516SKenneth E. Jansen             Atau(:,i,3) = A3(:,i,3)*tau(:,2)
635*59599516SKenneth E. Jansen             Atau(:,i,4) = A3(:,i,4)*tau(:,2)
636*59599516SKenneth E. Jansen             Atau(:,i,5) = A3(:,i,5)*tau(:,3)
637*59599516SKenneth E. Jansen          enddo
638*59599516SKenneth E. Jansen
639*59599516SKenneth E. Jansen       else
640*59599516SKenneth E. Jansen          Atau = zero
641*59599516SKenneth E. Jansen          do i = 1, nflow
642*59599516SKenneth E. Jansen             do j = 1, nflow
643*59599516SKenneth E. Jansen                do k = 1, nflow
644*59599516SKenneth E. Jansen                   Atau(:,i,j) = Atau(:,i,j) + A3(:,i,k)*PTau(:,k,j)
645*59599516SKenneth E. Jansen                enddo
646*59599516SKenneth E. Jansen             enddo
647*59599516SKenneth E. Jansen          enddo
648*59599516SKenneth E. Jansen
649*59599516SKenneth E. Jansen       endif
650*59599516SKenneth E. Jansenc
651*59599516SKenneth E. Jansenc.... calculate (A_3 tau A_0) (for L.S. time term of EGmass)
652*59599516SKenneth E. Jansenc
653*59599516SKenneth E. Jansen       do j = 1, nflow
654*59599516SKenneth E. Jansen          do i = 1, nflow
655*59599516SKenneth E. Jansen             A3tauA0(:,i,j) =
656*59599516SKenneth E. Jansen     &            Atau(:,i,1)*A0(:,1,j) +
657*59599516SKenneth E. Jansen     &            Atau(:,i,2)*A0(:,2,j) +
658*59599516SKenneth E. Jansen     &            Atau(:,i,3)*A0(:,3,j) +
659*59599516SKenneth E. Jansen     &            Atau(:,i,4)*A0(:,4,j) +
660*59599516SKenneth E. Jansen     &            Atau(:,i,5)*A0(:,5,j)
661*59599516SKenneth E. Jansen          enddo
662*59599516SKenneth E. Jansen       enddo
663*59599516SKenneth E. Jansenc
664*59599516SKenneth E. Jansenc.... add (A_3 tau A_1) to stiff [3,1]
665*59599516SKenneth E. Jansenc
666*59599516SKenneth E. Jansen       do j = 1, nflow
667*59599516SKenneth E. Jansen          do i = 1, nflow
668*59599516SKenneth E. Jansen             stiff(:,i+10,j) = stiff(:,i+10,j) + (
669*59599516SKenneth E. Jansen     &              Atau(:,i,1)*A1(:,1,j)
670*59599516SKenneth E. Jansen     &            + Atau(:,i,2)*A1(:,2,j)
671*59599516SKenneth E. Jansen     &            + Atau(:,i,3)*A1(:,3,j)
672*59599516SKenneth E. Jansen     &            + Atau(:,i,4)*A1(:,4,j)
673*59599516SKenneth E. Jansen     &            + Atau(:,i,5)*A1(:,5,j)
674*59599516SKenneth E. Jansen     &            )
675*59599516SKenneth E. Jansen          enddo
676*59599516SKenneth E. Jansen       enddo
677*59599516SKenneth E. Jansenc
678*59599516SKenneth E. Jansenc.... add (A_3 tau A_2) to stiff [3,2]
679*59599516SKenneth E. Jansenc
680*59599516SKenneth E. Jansen       do j = 1, nflow
681*59599516SKenneth E. Jansen          do i = 1, nflow
682*59599516SKenneth E. Jansen             stiff(:,i+10,j+5) = stiff(:,i+10,j+5) + (
683*59599516SKenneth E. Jansen     &              Atau(:,i,1)*A2(:,1,j)
684*59599516SKenneth E. Jansen     &            + Atau(:,i,2)*A2(:,2,j)
685*59599516SKenneth E. Jansen     &            + Atau(:,i,3)*A2(:,3,j)
686*59599516SKenneth E. Jansen     &            + Atau(:,i,4)*A2(:,4,j)
687*59599516SKenneth E. Jansen     &            + Atau(:,i,5)*A2(:,5,j)
688*59599516SKenneth E. Jansen     &            )
689*59599516SKenneth E. Jansen          enddo
690*59599516SKenneth E. Jansen       enddo
691*59599516SKenneth E. Jansenc
692*59599516SKenneth E. Jansenc.... add (A_3 tau A_3) to stiff [3,3]
693*59599516SKenneth E. Jansenc
694*59599516SKenneth E. Jansen       do j = 1, nflow
695*59599516SKenneth E. Jansen          do i = 1, nflow
696*59599516SKenneth E. Jansen             stiff(:,i+10,j+10) = stiff(:,i+10,j+10) + (
697*59599516SKenneth E. Jansen     &              Atau(:,i,1)*A3(:,1,j)
698*59599516SKenneth E. Jansen     &            + Atau(:,i,2)*A3(:,2,j)
699*59599516SKenneth E. Jansen     &            + Atau(:,i,3)*A3(:,3,j)
700*59599516SKenneth E. Jansen     &            + Atau(:,i,4)*A3(:,4,j)
701*59599516SKenneth E. Jansen     &            + Atau(:,i,5)*A3(:,5,j)
702*59599516SKenneth E. Jansen     &            )
703*59599516SKenneth E. Jansen          enddo
704*59599516SKenneth E. Jansen       enddo
705*59599516SKenneth E. Jansenc
706*59599516SKenneth E. Jansenc.... add least squares time term to the LHS tangent mass matrix
707*59599516SKenneth E. Jansenc
708*59599516SKenneth E. Jansenc
709*59599516SKenneth E. Jansenc.... loop through rows (nodes i)
710*59599516SKenneth E. Jansenc
711*59599516SKenneth E. Jansen       do i = 1, nshl
712*59599516SKenneth E. Jansen          i0 = nflow * (i - 1)
713*59599516SKenneth E. Jansenc
714*59599516SKenneth E. Jansenc.... first calculate (Atau) <-- (N_a,i A_i tau A_0)
715*59599516SKenneth E. Jansenc     ( use Atau to conserve space )
716*59599516SKenneth E. Jansenc
717*59599516SKenneth E. Jansen          do idof = 1, nflow
718*59599516SKenneth E. Jansen             do jdof = 1, nflow
719*59599516SKenneth E. Jansen                Atau(:,idof,jdof) =
720*59599516SKenneth E. Jansen     &               shg(:,i,1) * A1tauA0(:,idof,jdof) +
721*59599516SKenneth E. Jansen     &               shg(:,i,2) * A2tauA0(:,idof,jdof) +
722*59599516SKenneth E. Jansen     &               shg(:,i,3) * A3tauA0(:,idof,jdof)
723*59599516SKenneth E. Jansen             enddo
724*59599516SKenneth E. Jansen          enddo
725*59599516SKenneth E. Jansenc
726*59599516SKenneth E. Jansenc.... loop through column nodes, add (N_a,i A_i tau N_b) to EGmass
727*59599516SKenneth E. Jansenc
728*59599516SKenneth E. Jansen          do j = 1, nshl
729*59599516SKenneth E. Jansen             j0 = nflow * (j - 1)
730*59599516SKenneth E. Jansenc
731*59599516SKenneth E. Jansenc.... compute the factors
732*59599516SKenneth E. Jansenc
733*59599516SKenneth E. Jansen            fact = shape(:,j) * WdetJ * almi/gami/alfi*dtgl
734*59599516SKenneth E. Jansenc
735*59599516SKenneth E. Jansenc.... loop through d.o.f.'s
736*59599516SKenneth E. Jansenc
737*59599516SKenneth E. Jansen            do idof = 1, nflow
738*59599516SKenneth E. Jansen               il = i0 + idof
739*59599516SKenneth E. Jansen
740*59599516SKenneth E. Jansen               EGmass(:,il,j0+1) = EGmass(:,il,j0+1) +
741*59599516SKenneth E. Jansen     &                             fact * Atau(:,idof,1)
742*59599516SKenneth E. Jansen               EGmass(:,il,j0+2) = EGmass(:,il,j0+2) +
743*59599516SKenneth E. Jansen     &                             fact * Atau(:,idof,2)
744*59599516SKenneth E. Jansen               EGmass(:,il,j0+3) = EGmass(:,il,j0+3) +
745*59599516SKenneth E. Jansen     &                             fact * Atau(:,idof,3)
746*59599516SKenneth E. Jansen               EGmass(:,il,j0+4) = EGmass(:,il,j0+4) +
747*59599516SKenneth E. Jansen     &                             fact * Atau(:,idof,4)
748*59599516SKenneth E. Jansen               EGmass(:,il,j0+5) = EGmass(:,il,j0+5) +
749*59599516SKenneth E. Jansen     &                             fact * Atau(:,idof,5)
750*59599516SKenneth E. Jansen            enddo
751*59599516SKenneth E. Jansenc
752*59599516SKenneth E. Jansenc.... end loop on column nodes
753*59599516SKenneth E. Jansenc
754*59599516SKenneth E. Jansen         enddo
755*59599516SKenneth E. Jansenc
756*59599516SKenneth E. Jansenc.... end loop on row nodes
757*59599516SKenneth E. Jansenc
758*59599516SKenneth E. Jansen       enddo
759*59599516SKenneth E. Jansenc
760*59599516SKenneth E. Jansenc.... end LHS computation
761*59599516SKenneth E. Jansenc
762*59599516SKenneth E. Jansen       endif
763*59599516SKenneth E. Jansen
764*59599516SKenneth E. Jansen       ttim(24) = ttim(24) + secs(0.0)
765*59599516SKenneth E. Jansenc
766*59599516SKenneth E. Jansenc.... return
767*59599516SKenneth E. Jansenc
768*59599516SKenneth E. Jansen        return
769*59599516SKenneth E. Jansen        end
770*59599516SKenneth E. Jansenc
771*59599516SKenneth E. Jansenc
772*59599516SKenneth E. Jansenc
773*59599516SKenneth E. Jansen        subroutine e3LSSclr  (A1t,     A2t,     A3t,
774*59599516SKenneth E. Jansen     &                        rho,     rmu,     rTLSt,
775*59599516SKenneth E. Jansen     &                        u1,      u2,      u3,
776*59599516SKenneth E. Jansen     &                        rLyti,   dxidx,   raLSt,
777*59599516SKenneth E. Jansen     &                        rti,     rk,      giju,
778*59599516SKenneth E. Jansen     &                        acti,    A0t,
779*59599516SKenneth E. Jansen     &                        shape,   shg,
780*59599516SKenneth E. Jansen     &                        EGmasst, stifft,  WdetJ,
781*59599516SKenneth E. Jansen     &                        srcp)
782*59599516SKenneth E. Jansenc
783*59599516SKenneth E. Jansenc----------------------------------------------------------------------
784*59599516SKenneth E. Jansenc
785*59599516SKenneth E. Jansenc This routine calculates the contribution of the least-squares
786*59599516SKenneth E. Jansenc operator to the RHS vector and LHS tangent matrix. The temporary
787*59599516SKenneth E. Jansenc results are put in ri.
788*59599516SKenneth E. Jansenc
789*59599516SKenneth E. Jansenc input:
790*59599516SKenneth E. Jansenc  A0t    (npro)              : A_0
791*59599516SKenneth E. Jansenc  A1t    (npro)              : A_1
792*59599516SKenneth E. Jansenc  A2t    (npro)              : A_2
793*59599516SKenneth E. Jansenc  A3t    (npro)              : A_3
794*59599516SKenneth E. Jansenc  acti   (npro)              : time-deriv. of Sclr
795*59599516SKenneth E. Jansenc  rho    (npro)              : density
796*59599516SKenneth E. Jansenc  rmu    (npro)              : molecular viscosity
797*59599516SKenneth E. Jansenc  rk     (npro)              : kinetic energy
798*59599516SKenneth E. Jansenc  u1     (npro)              : x1-velocity component
799*59599516SKenneth E. Jansenc  u2     (npro)              : x2-velocity component
800*59599516SKenneth E. Jansenc  u3     (npro)              : x3-velocity component
801*59599516SKenneth E. Jansenc  rLyti  (npro)              : least-squares residual vector
802*59599516SKenneth E. Jansenc  dxidx  (npro,nsd,nsd)      : inverse of deformation gradient
803*59599516SKenneth E. Jansenc  taut   (npro)              : stability parameter
804*59599516SKenneth E. Jansenc  rLyti  (npro)              : convective portion of least-squares
805*59599516SKenneth E. Jansenc                               residual vector
806*59599516SKenneth E. Jansenc  divqti (npro,1)            : divergence of diffusive flux
807*59599516SKenneth E. Jansenc  shape  (npro,nshl)         : element shape functions
808*59599516SKenneth E. Jansenc  shg    (npro,nshl,nsd)     : global element shape function grads
809*59599516SKenneth E. Jansenc  WdetJ  (npro)              : weighted jacobian determinant
810*59599516SKenneth E. Jansenc  stifft (npro,nsd,nsd)      : stiffness matrix
811*59599516SKenneth E. Jansenc  EGmasst(npro,nshape,nshape): partial mass matrix
812*59599516SKenneth E. Jansenc
813*59599516SKenneth E. Jansenc output:
814*59599516SKenneth E. Jansenc  rti    (npro,nsd+1)        : partial residual
815*59599516SKenneth E. Jansenc  EGmasst(npro,nshape,nshape): partial mass matrix
816*59599516SKenneth E. Jansenc
817*59599516SKenneth E. Jansenc
818*59599516SKenneth E. Jansenc Zdenek Johan, Summer 1990. (Modified from e2ls.f)
819*59599516SKenneth E. Jansenc Zdenek Johan, Winter 1991. (Fortran 90)
820*59599516SKenneth E. Jansenc Kenneth Jansen, Winter 1997. Prim. Var. with Diag Tau
821*59599516SKenneth E. Jansenc----------------------------------------------------------------------
822*59599516SKenneth E. Jansenc
823*59599516SKenneth E. Jansen        include "common.h"
824*59599516SKenneth E. Jansen
825*59599516SKenneth E. Jansenc
826*59599516SKenneth E. Jansenc  passed arrays
827*59599516SKenneth E. Jansenc
828*59599516SKenneth E. Jansen        dimension A1t(npro),                 A2t(npro),
829*59599516SKenneth E. Jansen     &            A3t(npro),
830*59599516SKenneth E. Jansen     &            A0t(npro),                 rho(npro),
831*59599516SKenneth E. Jansen     &            acti(npro),                rmu(npro),
832*59599516SKenneth E. Jansen     &            u1(npro),                  u2(npro),
833*59599516SKenneth E. Jansen     &            u3(npro),                  rk(npro),
834*59599516SKenneth E. Jansen     &            rLyti(npro),               dxidx(npro,nsd,nsd),
835*59599516SKenneth E. Jansen     &            taut(npro),                raLSt(npro),
836*59599516SKenneth E. Jansen     &            rti(npro,nsd+1),           rTLSt(npro),
837*59599516SKenneth E. Jansen     &            stifft(npro,3,3),          giju(npro,6),
838*59599516SKenneth E. Jansen     &            EGmasst(npro,nshape,nshape),
839*59599516SKenneth E. Jansen     &            shape(npro,nshl),
840*59599516SKenneth E. Jansen     &            shg(npro,nshl,nsd),        WdetJ(npro),
841*59599516SKenneth E. Jansen     &            srcp(npro)
842*59599516SKenneth E. Jansenc
843*59599516SKenneth E. Jansenc local arrays
844*59599516SKenneth E. Jansenc
845*59599516SKenneth E. Jansen        dimension rLymti(npro),          Ataut(npro),
846*59599516SKenneth E. Jansen     &            A1tautA0(npro),        A2tautA0(npro),
847*59599516SKenneth E. Jansen     &            A3tautA0(npro),        fact(npro)
848*59599516SKenneth E. Jansen
849*59599516SKenneth E. Jansen        ttim(24) = ttim(24) - tmr()
850*59599516SKenneth E. Jansenc
851*59599516SKenneth E. Jansen       if(ivart.lt.2) return
852*59599516SKenneth E. Jansenc
853*59599516SKenneth E. Jansenc last step to the least squares is adding the time term.  So that we
854*59599516SKenneth E. Jansenc only have to localize one vector for each Krylov vector the modified
855*59599516SKenneth E. Jansenc residual is quite different from the total residual.
856*59599516SKenneth E. Jansenc
857*59599516SKenneth E. Jansenc
858*59599516SKenneth E. Jansenc the modified residual
859*59599516SKenneth E. Jansenc
860*59599516SKenneth E. Jansen       fct1=almi/gami/alfi*dtgl
861*59599516SKenneth E. Jansenc
862*59599516SKenneth E. Jansenc  add possibility of not including time term
863*59599516SKenneth E. Jansenc
864*59599516SKenneth E. Jansenc       if(idiff.ne.-1)
865*59599516SKenneth E. Jansenc       rLymti = rLyti + fct1*duti
866*59599516SKenneth E. Jansen
867*59599516SKenneth E. Jansen       if((ires.eq.1 .or. ires .eq. 3).and. idiff.ne.-1) then
868*59599516SKenneth E. Jansen
869*59599516SKenneth E. Jansen        rLyti(:) = rLyti(:) + A0t(:)*acti(:)
870*59599516SKenneth E. Jansen
871*59599516SKenneth E. Jansen      endif
872*59599516SKenneth E. Jansenc
873*59599516SKenneth E. Jansenc.... subtract div(q) from the least squares term
874*59599516SKenneth E. Jansenc
875*59599516SKenneth E. Jansenc      if ((idiff >= 1).and.(ires==3 .or. ires==1)) then
876*59599516SKenneth E. Jansenc         rLyi(:) = rLyi(:) - divqti(:)
877*59599516SKenneth E. Jansenc      endif
878*59599516SKenneth E. Jansenc
879*59599516SKenneth E. Jansenc.... --------------------------->  Tau  <-----------------------------
880*59599516SKenneth E. Jansenc
881*59599516SKenneth E. Jansenc.... calculate the tau matrix
882*59599516SKenneth E. Jansenc
883*59599516SKenneth E. Jansen
884*59599516SKenneth E. Jansenc
885*59599516SKenneth E. Jansenc.... we will use the same tau as used for momentum equations here
886*59599516SKenneth E. Jansenc
887*59599516SKenneth E. Jansen        ttim(25) = ttim(25) - tmr()
888*59599516SKenneth E. Jansen
889*59599516SKenneth E. Jansen          call e3tauSclr(rho,         rmu,        A0t,
890*59599516SKenneth E. Jansen     &                   u1,          u2,         u3,
891*59599516SKenneth E. Jansen     &                   dxidx,       rLyti,      rLymti,
892*59599516SKenneth E. Jansen     &                   taut,        rk,         raLSt,
893*59599516SKenneth E. Jansen     &                   rTLSt,       giju)
894*59599516SKenneth E. Jansen
895*59599516SKenneth E. Jansen        ttim(25) = ttim(25) + tmr()
896*59599516SKenneth E. Jansenc
897*59599516SKenneth E. Jansenc Warning:  to save space I have put the tau times the modified residual
898*59599516SKenneth E. Jansenc           in rLymi and the tau times the total residual back in rLyi
899*59599516SKenneth E. Jansenc
900*59599516SKenneth E. Jansenc
901*59599516SKenneth E. Jansenc.... ---------------------------->  RHS  <----------------------------
902*59599516SKenneth E. Jansenc
903*59599516SKenneth E. Jansenc.... calculate (A_i^T tau Ly)
904*59599516SKenneth E. Jansenc
905*59599516SKenneth E. Jansen
906*59599516SKenneth E. Jansenc      if(ires.ne.1) then
907*59599516SKenneth E. Jansenc
908*59599516SKenneth E. Jansenc  A1 * Tau L(Y):  to be hit on left with Na,x in e3wmlt
909*59599516SKenneth E. Jansenc
910*59599516SKenneth E. Jansenc        rmti(:,1) =   A1t(:) * rLymti(:)
911*59599516SKenneth E. Jansenc
912*59599516SKenneth E. Jansenc
913*59599516SKenneth E. Jansenc  A2 * Tau L(Y),  to be hit on left with Na,y
914*59599516SKenneth E. Jansenc
915*59599516SKenneth E. Jansenc        rmti(:,2) = A2t(:) * rLymti(:)
916*59599516SKenneth E. Jansenc
917*59599516SKenneth E. Jansenc
918*59599516SKenneth E. Jansenc  A3 * Tau L(Y)  to be hit on left with Na,z
919*59599516SKenneth E. Jansenc
920*59599516SKenneth E. Jansenc        rmti(:,3) = A3t(:) * rLymti(:)
921*59599516SKenneth E. Jansenc
922*59599516SKenneth E. Jansenc      endif  !ires.ne.1
923*59599516SKenneth E. Jansen
924*59599516SKenneth E. Jansenc
925*59599516SKenneth E. Jansenc  same thing for the real residual
926*59599516SKenneth E. Jansenc
927*59599516SKenneth E. Jansen       if(ires.eq.3 .or. ires .eq. 1) then  ! we need the total residual
928*59599516SKenneth E. Jansen        rti(:,1) = rti(:,1) + A1t(:) * rLyti(:)
929*59599516SKenneth E. Jansen
930*59599516SKenneth E. Jansen        rti(:,2) = rti(:,2) + A2t(:) * rLyti(:)
931*59599516SKenneth E. Jansen
932*59599516SKenneth E. Jansen        rti(:,3) = rti(:,3) + A3t(:) * rLyti(:)
933*59599516SKenneth E. Jansen
934*59599516SKenneth E. Jansen       endif ! for ires=3 or 1
935*59599516SKenneth E. Jansen
936*59599516SKenneth E. Jansenc
937*59599516SKenneth E. Jansenc.... ---------------------------->  LHS  <----------------------------
938*59599516SKenneth E. Jansenc
939*59599516SKenneth E. Jansen       if (lhs .eq. 1) then
940*59599516SKenneth E. Jansenc
941*59599516SKenneth E. Jansenc
942*59599516SKenneth E. Jansenc.... calculate (Atau) <-- (A_1 tau)
943*59599516SKenneth E. Jansenc
944*59599516SKenneth E. Jansen
945*59599516SKenneth E. Jansen          Ataut(:) = A1t(:)*taut(:)
946*59599516SKenneth E. Jansen
947*59599516SKenneth E. Jansenc
948*59599516SKenneth E. Jansenc.... calculate (A_1 tau (A_0-srcp)) (for L.S. time term of EGmass)
949*59599516SKenneth E. Jansenc
950*59599516SKenneth E. Jansen
951*59599516SKenneth E. Jansen             A1tautA0(:) = Ataut(:)*(a0t(:)*fct1-srcp(:))
952*59599516SKenneth E. Jansen
953*59599516SKenneth E. Jansenc
954*59599516SKenneth E. Jansenc.... add (A_1 tau A_1) to stiff [1,1]
955*59599516SKenneth E. Jansenc
956*59599516SKenneth E. Jansen
957*59599516SKenneth E. Jansen             stifft(:,1,1) = stifft(:,1,1) + Ataut(:)*A1t(:)
958*59599516SKenneth E. Jansenc            stifft(:,1,1) = Ataut(:)*A1t(:)
959*59599516SKenneth E. Jansenc
960*59599516SKenneth E. Jansenc.... add (A_1 tau A_2) to stiff [1,2]
961*59599516SKenneth E. Jansenc
962*59599516SKenneth E. Jansen
963*59599516SKenneth E. Jansen             stifft(:,1,2) = stifft(:,1,2) + Ataut(:)*A2t(:)
964*59599516SKenneth E. Jansenc            stifft(:,1,2) =  Ataut(:)*A2t(:)
965*59599516SKenneth E. Jansenc
966*59599516SKenneth E. Jansenc.... add (A_1 tau A_3) to stiff [1,3]
967*59599516SKenneth E. Jansenc
968*59599516SKenneth E. Jansen
969*59599516SKenneth E. Jansen             stifft(:,1,3) = stifft(:,1,3) + Ataut(:)*A3t(:)
970*59599516SKenneth E. Jansenc            stifft(:,1,3) =  Ataut(:)*A3t(:)
971*59599516SKenneth E. Jansenc
972*59599516SKenneth E. Jansenc.... calculate (Atau) <-- (A_2 tau)
973*59599516SKenneth E. Jansenc
974*59599516SKenneth E. Jansen
975*59599516SKenneth E. Jansen          Ataut(:) = A2t(:)*taut(:)
976*59599516SKenneth E. Jansen
977*59599516SKenneth E. Jansenc
978*59599516SKenneth E. Jansenc.... calculate (A_2 tau (A_0-srcp)) (for L.S. time term of EGmass)
979*59599516SKenneth E. Jansenc
980*59599516SKenneth E. Jansen
981*59599516SKenneth E. Jansen             A2tautA0(:) = Ataut(:)*(a0t(:)*fct1-srcp(:))
982*59599516SKenneth E. Jansen
983*59599516SKenneth E. Jansenc
984*59599516SKenneth E. Jansenc.... add (A_2 tau A_1) to stiff [2,1]
985*59599516SKenneth E. Jansenc
986*59599516SKenneth E. Jansen
987*59599516SKenneth E. Jansen             stifft(:,2,1) = stifft(:,1,2)
988*59599516SKenneth E. Jansenc
989*59599516SKenneth E. Jansenc.... add (A_2 tau A_2) to stiff [2,2]
990*59599516SKenneth E. Jansenc
991*59599516SKenneth E. Jansen
992*59599516SKenneth E. Jansen             stifft(:,2,2) = stifft(:,2,2) + Ataut(:)*A2t(:)
993*59599516SKenneth E. Jansen
994*59599516SKenneth E. Jansenc
995*59599516SKenneth E. Jansenc.... add (A_2 tau A_3) to stiff [2,3]
996*59599516SKenneth E. Jansenc
997*59599516SKenneth E. Jansen
998*59599516SKenneth E. Jansen             stifft(:,2,3) = stifft(:,2,3) + Ataut(:)*A3t(:)
999*59599516SKenneth E. Jansen
1000*59599516SKenneth E. Jansenc
1001*59599516SKenneth E. Jansenc.... calculate (Atau) <-- (A_3 tau)
1002*59599516SKenneth E. Jansenc
1003*59599516SKenneth E. Jansen
1004*59599516SKenneth E. Jansen          Ataut(:) = A3t(:)*taut(:)
1005*59599516SKenneth E. Jansen
1006*59599516SKenneth E. Jansenc
1007*59599516SKenneth E. Jansenc.... calculate (A_3 tau (A_0-srcp)) (for L.S. time term of EGmass)
1008*59599516SKenneth E. Jansenc
1009*59599516SKenneth E. Jansen
1010*59599516SKenneth E. Jansen             A3tautA0(:) = Ataut(:)*(a0t(:)*fct1-srcp(:))
1011*59599516SKenneth E. Jansen
1012*59599516SKenneth E. Jansenc
1013*59599516SKenneth E. Jansenc.... add (A_3 tau A_1) to stiff [3,1]
1014*59599516SKenneth E. Jansenc
1015*59599516SKenneth E. Jansen
1016*59599516SKenneth E. Jansen             stifft(:,3,1) = stifft(:,1,3)
1017*59599516SKenneth E. Jansen
1018*59599516SKenneth E. Jansenc
1019*59599516SKenneth E. Jansenc.... add (A_3 tau A_2) to stiff [3,2]
1020*59599516SKenneth E. Jansenc
1021*59599516SKenneth E. Jansen
1022*59599516SKenneth E. Jansen             stifft(:,3,2) = stifft(:,2,3)
1023*59599516SKenneth E. Jansen
1024*59599516SKenneth E. Jansenc
1025*59599516SKenneth E. Jansenc.... add (A_3 tau A_3) to stiff [3,3]
1026*59599516SKenneth E. Jansenc
1027*59599516SKenneth E. Jansen
1028*59599516SKenneth E. Jansen             stifft(:,3,3) = stifft(:,3,3) + Ataut(:)*A3t(:)
1029*59599516SKenneth E. Jansen
1030*59599516SKenneth E. Jansenc
1031*59599516SKenneth E. Jansenc.... add least squares time term to the LHS tangent mass matrix
1032*59599516SKenneth E. Jansenc
1033*59599516SKenneth E. Jansenc
1034*59599516SKenneth E. Jansenc.... loop through rows (nodes i)
1035*59599516SKenneth E. Jansenc
1036*59599516SKenneth E. Jansen       do ia = 1, nshl
1037*59599516SKenneth E. Jansenc
1038*59599516SKenneth E. Jansenc.... first calculate (Atau) <-- (N_a,i A_i tau A_0)
1039*59599516SKenneth E. Jansenc     ( use Atau to conserve space )
1040*59599516SKenneth E. Jansenc
1041*59599516SKenneth E. Jansen
1042*59599516SKenneth E. Jansen                Ataut(:) =
1043*59599516SKenneth E. Jansen     &               shg(:,ia,1) * A1tautA0(:) +
1044*59599516SKenneth E. Jansen     &               shg(:,ia,2) * A2tautA0(:) +
1045*59599516SKenneth E. Jansen     &               shg(:,ia,3) * A3tautA0(:)
1046*59599516SKenneth E. Jansen
1047*59599516SKenneth E. Jansenc
1048*59599516SKenneth E. Jansenc.... loop through column nodes, add (N_a,i A_i tau N_b) to EGmass
1049*59599516SKenneth E. Jansenc
1050*59599516SKenneth E. Jansen          do jb = 1, nshl
1051*59599516SKenneth E. Jansen
1052*59599516SKenneth E. Jansen            fact = shape(:,jb) * WdetJ
1053*59599516SKenneth E. Jansen
1054*59599516SKenneth E. Jansen            EGmasst(:,ia,jb) = EGmasst(:,ia,jb) + fact * Ataut(:)
1055*59599516SKenneth E. Jansen
1056*59599516SKenneth E. Jansenc
1057*59599516SKenneth E. Jansenc.... end loop on column nodes
1058*59599516SKenneth E. Jansenc
1059*59599516SKenneth E. Jansen
1060*59599516SKenneth E. Jansen          enddo
1061*59599516SKenneth E. Jansenc
1062*59599516SKenneth E. Jansenc.... end loop on row nodes
1063*59599516SKenneth E. Jansenc
1064*59599516SKenneth E. Jansen       enddo
1065*59599516SKenneth E. Jansenc
1066*59599516SKenneth E. Jansenc.... end LHS computation
1067*59599516SKenneth E. Jansenc
1068*59599516SKenneth E. Jansen       endif
1069*59599516SKenneth E. Jansen
1070*59599516SKenneth E. Jansen       ttim(24) = ttim(24) + tmr()
1071*59599516SKenneth E. Jansenc
1072*59599516SKenneth E. Jansenc.... return
1073*59599516SKenneth E. Jansenc
1074*59599516SKenneth E. Jansen        return
1075*59599516SKenneth E. Jansen        end
1076*59599516SKenneth E. Jansen
1077