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