159599516SKenneth E. Jansen subroutine e3LS (A1, A2, A3, 259599516SKenneth E. Jansen & rho, rmu, cp, 359599516SKenneth E. Jansen & cv, con, T, 459599516SKenneth E. Jansen & u1, u2, u3, 559599516SKenneth E. Jansen & rLyi, dxidx, tau, 659599516SKenneth E. Jansen & ri, rmi, rk, 759599516SKenneth E. Jansen & dui, aci, A0, 859599516SKenneth E. Jansen & divqi, shape, shg, 959599516SKenneth E. Jansen & EGmass, stiff, WdetJ, 1059599516SKenneth E. Jansen & giju, rTLS, raLS, 1159599516SKenneth E. Jansen & A0inv, dVdY, rerrl, 1259599516SKenneth E. Jansen & compK, pres, PTau) 1359599516SKenneth E. Jansenc 1459599516SKenneth E. Jansenc---------------------------------------------------------------------- 1559599516SKenneth E. Jansenc 1659599516SKenneth E. Jansenc This routine calculates the contribution of the least-squares 1759599516SKenneth E. Jansenc operator to the RHS vector and LHS tangent matrix. The temporary 1859599516SKenneth E. Jansenc results are put in ri. 1959599516SKenneth E. Jansenc 2059599516SKenneth E. Jansenc input: 2159599516SKenneth E. Jansenc A1 (npro,nflow,nflow) : A_1 2259599516SKenneth E. Jansenc A2 (npro,nflow,nflow) : A_2 2359599516SKenneth E. Jansenc A3 (npro,nflow,nflow) : A_3 2459599516SKenneth E. Jansenc rho (npro) : density 2559599516SKenneth E. Jansenc T (npro) : temperature 2659599516SKenneth E. Jansenc cp (npro) : specific heat at constant pressure 2759599516SKenneth E. Jansenc u1 (npro) : x1-velocity component 2859599516SKenneth E. Jansenc u2 (npro) : x2-velocity component 2959599516SKenneth E. Jansenc u3 (npro) : x3-velocity component 3059599516SKenneth E. Jansenc rLyi (npro,nflow) : least-squares residual vector 3159599516SKenneth E. Jansenc dxidx (npro,nsd,nsd) : inverse of deformation gradient 3259599516SKenneth E. Jansenc tau (npro,3) : stability parameter 3359599516SKenneth E. Jansenc PTau (npro,5,5) : matrix of stability parameters 3459599516SKenneth E. Jansenc rLyi (npro,nflow) : convective portion of least-squares 3559599516SKenneth E. Jansenc residual vector 3659599516SKenneth E. Jansenc divqi (npro,nflow-1) : divergence of diffusive flux 3759599516SKenneth E. Jansenc shape (npro,nshl) : element shape functions 3859599516SKenneth E. Jansenc shg (npro,nshl,nsd) : global element shape function grads 3959599516SKenneth E. Jansenc WdetJ (npro) : weighted jacobian determinant 4059599516SKenneth E. Jansenc stiff (npro,nsd*nflow,nsd*nflow) : stiffness matrix 4159599516SKenneth E. Jansenc EGmass(npro,nedof,nedof) : partial mass matrix 4259599516SKenneth E. Jansenc compK (npro,10) : K_ij in (eq.134) A new ... III 4359599516SKenneth E. Jansenc 4459599516SKenneth E. Jansenc output: 4559599516SKenneth E. Jansenc ri (npro,nflow*(nsd+1)) : partial residual 4659599516SKenneth E. Jansenc rmi (npro,nflow*(nsd+1)) : partial modified residual 4759599516SKenneth E. Jansenc EGmass (npro,nedof,nedof) : partial mass matrix 4859599516SKenneth E. Jansenc 4959599516SKenneth E. Jansenc 5059599516SKenneth E. Jansenc Zdenek Johan, Summer 1990. (Modified from e2ls.f) 5159599516SKenneth E. Jansenc Zdenek Johan, Winter 1991. (Fortran 90) 5259599516SKenneth E. Jansenc Kenneth Jansen, Winter 1997. Prim. Var. with Diag Tau 5359599516SKenneth E. Jansenc---------------------------------------------------------------------- 5459599516SKenneth E. Jansenc 5559599516SKenneth E. Jansen include "common.h" 5659599516SKenneth E. Jansen 5759599516SKenneth E. Jansenc 5859599516SKenneth E. Jansenc passed arrays 5959599516SKenneth E. Jansenc 6059599516SKenneth E. Jansen dimension A1(npro,nflow,nflow), A2(npro,nflow,nflow), 6159599516SKenneth E. Jansen & A3(npro,nflow,nflow), cv(npro), 6259599516SKenneth E. Jansen & A0(npro,nflow,nflow), rho(npro), 6359599516SKenneth E. Jansen & con(npro), cp(npro), 6459599516SKenneth E. Jansen & dui(npro,nflow), aci(npro,nflow), 6559599516SKenneth E. Jansen & u1(npro), u2(npro), 6659599516SKenneth E. Jansen & u3(npro), rk(npro), 6759599516SKenneth E. Jansen & rLyi(npro,nflow), dxidx(npro,nsd,nsd), 6859599516SKenneth E. Jansen & tau(npro,5), giju(npro,6), 6959599516SKenneth E. Jansen & rTLS(npro), raLS(npro), 7059599516SKenneth E. Jansen & ri(npro,nflow*(nsd+1)), rmi(npro,nflow*(nsd+1)), 7159599516SKenneth E. Jansen & divqi(npro,nflow-1), stiff(npro,3*nflow,3*nflow), 7259599516SKenneth E. Jansen & EGmass(npro,nedof,nedof),shape(npro,nshl), 7359599516SKenneth E. Jansen & shg(npro,nshl,nsd), WdetJ(npro), 7459599516SKenneth E. Jansen & PTau(npro,5,5), T(npro), 7559599516SKenneth E. Jansen & pres(npro) 7659599516SKenneth E. Jansenc 7759599516SKenneth E. Jansenc local arrays 7859599516SKenneth E. Jansenc 7959599516SKenneth E. Jansen dimension rLymi(npro,nflow), Atau(npro,nflow,nflow), 8059599516SKenneth E. Jansen & A1tauA0(npro,nflow,nflow), A2tauA0(npro,nflow,nflow), 8159599516SKenneth E. Jansen & A3tauA0(npro,nflow,nflow), fact(npro), 8259599516SKenneth E. Jansen & A0inv(npro,15), dVdY(npro,15), 8359599516SKenneth E. Jansen & compK(npro,10), ac1(npro), 8459599516SKenneth E. Jansen & ac2(npro), ac3(npro) 8559599516SKenneth E. Jansenc 8659599516SKenneth E. Jansen real*8 rerrl(npro,nshl,6), tmp(npro), tmp1(npro) 8759599516SKenneth E. Jansen ttim(24) = ttim(24) - secs(0.0) 8859599516SKenneth E. Jansenc 8959599516SKenneth E. Jansenc 9059599516SKenneth E. Jansenc last step to the least squares is adding the time term. So that we 9159599516SKenneth E. Jansenc only have to localize one vector for each Krylov vector the modified 9259599516SKenneth E. Jansenc residual is quite different from the total residual. 9359599516SKenneth E. Jansenc 9459599516SKenneth E. Jansenc 9559599516SKenneth E. Jansenc the modified residual 9659599516SKenneth E. Jansenc 9759599516SKenneth E. Jansen fct1=almi/gami/alfi*dtgl 9859599516SKenneth E. Jansenc 9959599516SKenneth E. Jansenc add possibility of not including time term 10059599516SKenneth E. Jansenc 10159599516SKenneth E. Jansenc if(idiff.ne.-1) 10259599516SKenneth E. Jansen 10359599516SKenneth E. Jansen if(ires.ne.1) rLymi = rLyi + fct1*dui 10459599516SKenneth E. Jansenc 10559599516SKenneth E. Jansen if(ires.eq.1 .or. ires .eq. 3) then 10659599516SKenneth E. Jansenc rLymi = rLyi 10759599516SKenneth E. Jansen 10859599516SKenneth E. Jansen rLyi(:,1) = rLyi(:,1) 10959599516SKenneth E. Jansen & + A0(:,1,1)*aci(:,1) 11059599516SKenneth E. Jansenc & + A0(:,1,2)*aci(:,2) 11159599516SKenneth E. Jansenc & + A0(:,1,3)*aci(:,3) 11259599516SKenneth E. Jansenc & + A0(:,1,4)*aci(:,4) 11359599516SKenneth E. Jansen & + A0(:,1,5)*aci(:,5) 11459599516SKenneth E. Jansenc 11559599516SKenneth E. Jansen rLyi(:,2) = rLyi(:,2) 11659599516SKenneth E. Jansen & + A0(:,2,1)*aci(:,1) 11759599516SKenneth E. Jansen & + A0(:,2,2)*aci(:,2) 11859599516SKenneth E. Jansenc & + A0(:,2,3)*aci(:,3) 11959599516SKenneth E. Jansenc & + A0(:,2,4)*aci(:,4) 12059599516SKenneth E. Jansen & + A0(:,2,5)*aci(:,5) 12159599516SKenneth E. Jansenc 12259599516SKenneth E. Jansen rLyi(:,3) = rLyi(:,3) 12359599516SKenneth E. Jansen & + A0(:,3,1)*aci(:,1) 12459599516SKenneth E. Jansenc & + A0(:,3,2)*aci(:,2) 12559599516SKenneth E. Jansen & + A0(:,3,3)*aci(:,3) 12659599516SKenneth E. Jansenc & + A0(:,3,4)*aci(:,4) 12759599516SKenneth E. Jansen & + A0(:,3,5)*aci(:,5) 12859599516SKenneth E. Jansenc 12959599516SKenneth E. Jansen rLyi(:,4) = rLyi(:,4) 13059599516SKenneth E. Jansen & + A0(:,4,1)*aci(:,1) 13159599516SKenneth E. Jansenc & + A0(:,4,2)*aci(:,2) 13259599516SKenneth E. Jansenc & + A0(:,4,3)*aci(:,3) 13359599516SKenneth E. Jansen & + A0(:,4,4)*aci(:,4) 13459599516SKenneth E. Jansen & + A0(:,4,5)*aci(:,5) 13559599516SKenneth E. Jansenc 13659599516SKenneth E. Jansen rLyi(:,5) = rLyi(:,5) 13759599516SKenneth E. Jansen & + A0(:,5,1)*aci(:,1) 13859599516SKenneth E. Jansen & + A0(:,5,2)*aci(:,2) 13959599516SKenneth E. Jansen & + A0(:,5,3)*aci(:,3) 14059599516SKenneth E. Jansen & + A0(:,5,4)*aci(:,4) 14159599516SKenneth E. Jansen & + A0(:,5,5)*aci(:,5) 14259599516SKenneth E. Jansenc 14359599516SKenneth E. Jansen endif 14459599516SKenneth E. Jansenc 14559599516SKenneth E. Jansenc.... subtract div(q) from the least squares term 14659599516SKenneth E. Jansenc 14759599516SKenneth E. Jansen if ((idiff >= 1).and.(ires==3 .or. ires==1)) then 14859599516SKenneth E. Jansenc 14959599516SKenneth E. Jansen if (isurf.eq.zero) then 15059599516SKenneth E. Jansen rLyi(:,2) = rLyi(:,2) - divqi(:,1) 15159599516SKenneth E. Jansen rLyi(:,3) = rLyi(:,3) - divqi(:,2) 15259599516SKenneth E. Jansen rLyi(:,4) = rLyi(:,4) - divqi(:,3) 15359599516SKenneth E. Jansen rLyi(:,5) = rLyi(:,5) - divqi(:,4) 15459599516SKenneth E. Jansen endif 15559599516SKenneth E. Jansen endif 15659599516SKenneth E. Jansenc 15759599516SKenneth E. Jansenc.... -------------------> error calculation <----------------- 15859599516SKenneth E. Jansenc 15959599516SKenneth E. Jansen if((ierrcalc.eq.1).and.(nitr.eq.iter)) then 16059599516SKenneth E. Jansen do ia=1,nshl 16159599516SKenneth E. Jansen tmp=shape(:,ia)*WdetJ(:) 16259599516SKenneth E. Jansen tmp1=shape(:,ia)*Qwt(lcsyst,intp) 16359599516SKenneth E. Jansen rerrl(:,ia,1) = rerrl(:,ia,1) + 16459599516SKenneth E. Jansen & tmp1(:)*rLyi(:,1)*rLyi(:,1) 16559599516SKenneth E. Jansen rerrl(:,ia,2) = rerrl(:,ia,2) + 16659599516SKenneth E. Jansen & tmp1(:)*rLyi(:,2)*rLyi(:,2) 16759599516SKenneth E. Jansen rerrl(:,ia,3) = rerrl(:,ia,3) + 16859599516SKenneth E. Jansen & tmp1(:)*rLyi(:,3)*rLyi(:,3) 16959599516SKenneth E. Jansen 17059599516SKenneth E. Jansen rerrl(:,ia,4) = rerrl(:,ia,4) + 17159599516SKenneth E. Jansen & tmp(:)*divqi(:,1)*divqi(:,1) 17259599516SKenneth E. Jansen rerrl(:,ia,5) = rerrl(:,ia,5) + 17359599516SKenneth E. Jansen & tmp(:)*divqi(:,2)*divqi(:,2) 174*0d39a63aSKenneth E. Jansen! SAM wants a threshold here so we are going to take over this little used 175*0d39a63aSKenneth E. Jansen! error indictor for that purpose 176*0d39a63aSKenneth E. Jansen! commented for ShockError rerrl(:,ia,6) = rerrl(:,ia,6) + 177*0d39a63aSKenneth E. Jansen! commented for ShockError & tmp(:)*divqi(:,3)*divqi(:,3) 17859599516SKenneth E. Jansen enddo 17959599516SKenneth E. Jansen endif 18059599516SKenneth E. Jansenc 18159599516SKenneth E. Jansenc 18259599516SKenneth E. Jansenc.... ---------------------------> Tau <----------------------------- 18359599516SKenneth E. Jansenc 18459599516SKenneth E. Jansenc.... calculate the tau matrix 18559599516SKenneth E. Jansenc 18659599516SKenneth E. Jansenc.... in the first incarnation we will ONLY have a diagonal tau here 18759599516SKenneth E. Jansen 18859599516SKenneth E. Jansen if (itau .lt. 10) then ! diagonal tau 18959599516SKenneth E. Jansen 19059599516SKenneth E. Jansen call e3tau (rho, cp, rmu, 19159599516SKenneth E. Jansen & u1, u2, u3, 19259599516SKenneth E. Jansen & con, dxidx, rLyi, 19359599516SKenneth E. Jansen & rLymi, tau, rk, 19459599516SKenneth E. Jansen & giju, rTLS, raLS, 19559599516SKenneth E. Jansen & A0inv, dVdY, cv) 19659599516SKenneth E. Jansen 19759599516SKenneth E. Jansen else 19859599516SKenneth E. Jansen 19959599516SKenneth E. Jansenc.... looks like need a non-diagonal, discribed in "A new ... III" 20059599516SKenneth E. Jansenc.... by Hughes and Mallet. Original work - developed diffusive (and as 20159599516SKenneth E. Jansenc.... well advective) correction factors for 1-D a-d equation w/ hier. b. 20259599516SKenneth E. Jansen 20359599516SKenneth E. Jansen 20459599516SKenneth E. Jansen ac1(:) = aci(:,2) 20559599516SKenneth E. Jansen ac2(:) = aci(:,3) 20659599516SKenneth E. Jansen ac3(:) = aci(:,4) 20759599516SKenneth E. Jansen 20859599516SKenneth E. Jansen call e3tau_nd (rho, cp, rmu, T, 20959599516SKenneth E. Jansen & u1, u2, u3, 21059599516SKenneth E. Jansen & ac1, ac2, ac3, 21159599516SKenneth E. Jansen & con, dxidx, rLyi, 21259599516SKenneth E. Jansen & rLymi, PTau, rk, 21359599516SKenneth E. Jansen & giju, rTLS, raLS, 21459599516SKenneth E. Jansen & cv, compK, pres, 21559599516SKenneth E. Jansen & A0inv, dVdY) 21659599516SKenneth E. Jansen 21759599516SKenneth E. Jansen endif 21859599516SKenneth E. Jansen 21959599516SKenneth E. Jansen 22059599516SKenneth E. Jansen ttim(25) = ttim(25) + secs(0.0) 22159599516SKenneth E. Jansenc 22259599516SKenneth E. Jansenc Warning: to save space I have put the tau times the modified residual 22359599516SKenneth E. Jansenc in rLymi and the tau times the total residual back in rLyi 22459599516SKenneth E. Jansenc 22559599516SKenneth E. Jansenc 22659599516SKenneth E. Jansenc.... ----------------------------> RHS <---------------------------- 22759599516SKenneth E. Jansenc 22859599516SKenneth E. Jansenc.... calculate (A_i^T tau Ly) 22959599516SKenneth E. Jansenc 23059599516SKenneth E. Jansen 23159599516SKenneth E. Jansen if(ires.ne.1) then 23259599516SKenneth E. Jansenc 23359599516SKenneth E. Jansenc A1 * Tau L(Y): to be hit on left with Na,x in e3wmlt 23459599516SKenneth E. Jansenc 23559599516SKenneth E. Jansen rmi(:,1) = 23659599516SKenneth E. Jansen & A1(:,1,1) * rLymi(:,1) 23759599516SKenneth E. Jansen & + A1(:,1,2) * rLymi(:,2) 23859599516SKenneth E. Jansenc & + A1(:,1,3) * rLymi(:,3) 23959599516SKenneth E. Jansenc & + A1(:,1,4) * rLymi(:,4) 24059599516SKenneth E. Jansen & + A1(:,1,5) * rLymi(:,5) 24159599516SKenneth E. Jansen & + rmi(:,1) 24259599516SKenneth E. Jansen rmi(:,2) = 24359599516SKenneth E. Jansen & A1(:,2,1) * rLymi(:,1) 24459599516SKenneth E. Jansen & + A1(:,2,2) * rLymi(:,2) 24559599516SKenneth E. Jansenc & + A1(:,2,3) * rLymi(:,3) 24659599516SKenneth E. Jansenc & + A1(:,2,4) * rLymi(:,4) 24759599516SKenneth E. Jansen & + A1(:,2,5) * rLymi(:,5) 24859599516SKenneth E. Jansen & + rmi(:,2) 24959599516SKenneth E. Jansen rmi(:,3) = 25059599516SKenneth E. Jansen & A1(:,3,1) * rLymi(:,1) 25159599516SKenneth E. Jansen & + A1(:,3,2) * rLymi(:,2) 25259599516SKenneth E. Jansen & + A1(:,3,3) * rLymi(:,3) 25359599516SKenneth E. Jansenc & + A1(:,3,4) * rLymi(:,4) 25459599516SKenneth E. Jansen & + A1(:,3,5) * rLymi(:,5) 25559599516SKenneth E. Jansen & + rmi(:,3) 25659599516SKenneth E. Jansen rmi(:,4) = 25759599516SKenneth E. Jansen & A1(:,4,1) * rLymi(:,1) 25859599516SKenneth E. Jansen & + A1(:,4,2) * rLymi(:,2) 25959599516SKenneth E. Jansenc & + A1(:,4,3) * rLymi(:,3) 26059599516SKenneth E. Jansen & + A1(:,4,4) * rLymi(:,4) 26159599516SKenneth E. Jansen & + A1(:,4,5) * rLymi(:,5) 26259599516SKenneth E. Jansen & + rmi(:,4) 26359599516SKenneth E. Jansen rmi(:,5) = 26459599516SKenneth E. Jansen & A1(:,5,1) * rLymi(:,1) 26559599516SKenneth E. Jansen & + A1(:,5,2) * rLymi(:,2) 26659599516SKenneth E. Jansen & + A1(:,5,3) * rLymi(:,3) 26759599516SKenneth E. Jansen & + A1(:,5,4) * rLymi(:,4) 26859599516SKenneth E. Jansen & + A1(:,5,5) * rLymi(:,5) 26959599516SKenneth E. Jansen & + rmi(:,5) 27059599516SKenneth E. Jansenc 27159599516SKenneth E. Jansenc A2 * Tau L(Y), to be hit on left with Na,y 27259599516SKenneth E. Jansenc 27359599516SKenneth E. Jansen rmi(:,6) = 27459599516SKenneth E. Jansen & A2(:,1,1) * rLymi(:,1) 27559599516SKenneth E. Jansenc & + A2(:,1,2) * rLymi(:,2) 27659599516SKenneth E. Jansen & + A2(:,1,3) * rLymi(:,3) 27759599516SKenneth E. Jansenc & + A2(:,1,4) * rLymi(:,4) 27859599516SKenneth E. Jansen & + A2(:,1,5) * rLymi(:,5) 27959599516SKenneth E. Jansen & + rmi(:,6) 28059599516SKenneth E. Jansen rmi(:,7) = 28159599516SKenneth E. Jansen & A2(:,2,1) * rLymi(:,1) 28259599516SKenneth E. Jansen & + A2(:,2,2) * rLymi(:,2) 28359599516SKenneth E. Jansen & + A2(:,2,3) * rLymi(:,3) 28459599516SKenneth E. Jansenc & + A2(:,2,4) * rLymi(:,4) 28559599516SKenneth E. Jansen & + A2(:,2,5) * rLymi(:,5) 28659599516SKenneth E. Jansen & + rmi(:,7) 28759599516SKenneth E. Jansen rmi(:,8) = 28859599516SKenneth E. Jansen & A2(:,3,1) * rLymi(:,1) 28959599516SKenneth E. Jansenc & + A2(:,3,2) * rLymi(:,2) 29059599516SKenneth E. Jansen & + A2(:,3,3) * rLymi(:,3) 29159599516SKenneth E. Jansenc & + A2(:,3,4) * rLymi(:,4) 29259599516SKenneth E. Jansen & + A2(:,3,5) * rLymi(:,5) 29359599516SKenneth E. Jansen & + rmi(:,8) 29459599516SKenneth E. Jansen rmi(:,9) = 29559599516SKenneth E. Jansen & A2(:,4,1) * rLymi(:,1) 29659599516SKenneth E. Jansenc & + A2(:,4,2) * rLymi(:,2) 29759599516SKenneth E. Jansen & + A2(:,4,3) * rLymi(:,3) 29859599516SKenneth E. Jansen & + A2(:,4,4) * rLymi(:,4) 29959599516SKenneth E. Jansen & + A2(:,4,5) * rLymi(:,5) 30059599516SKenneth E. Jansen & + rmi(:,9) 30159599516SKenneth E. Jansen rmi(:,10) = 30259599516SKenneth E. Jansen & A2(:,5,1) * rLymi(:,1) 30359599516SKenneth E. Jansen & + A2(:,5,2) * rLymi(:,2) 30459599516SKenneth E. Jansen & + A2(:,5,3) * rLymi(:,3) 30559599516SKenneth E. Jansen & + A2(:,5,4) * rLymi(:,4) 30659599516SKenneth E. Jansen & + A2(:,5,5) * rLymi(:,5) 30759599516SKenneth E. Jansen & + rmi(:,10) 30859599516SKenneth E. Jansenc 30959599516SKenneth E. Jansenc A3 * Tau L(Y) to be hit on left with Na,z 31059599516SKenneth E. Jansenc 31159599516SKenneth E. Jansen rmi(:,11) = 31259599516SKenneth E. Jansen & A3(:,1,1) * rLymi(:,1) 31359599516SKenneth E. Jansenc & + A3(:,1,2) * rLymi(:,2) 31459599516SKenneth E. Jansenc & + A3(:,1,3) * rLymi(:,3) 31559599516SKenneth E. Jansen & + A3(:,1,4) * rLymi(:,4) 31659599516SKenneth E. Jansen & + A3(:,1,5) * rLymi(:,5) 31759599516SKenneth E. Jansen & + rmi(:,11) 31859599516SKenneth E. Jansen rmi(:,12) = 31959599516SKenneth E. Jansen & A3(:,2,1) * rLymi(:,1) 32059599516SKenneth E. Jansen & + A3(:,2,2) * rLymi(:,2) 32159599516SKenneth E. Jansenc & + A3(:,2,3) * rLymi(:,3) 32259599516SKenneth E. Jansen & + A3(:,2,4) * rLymi(:,4) 32359599516SKenneth E. Jansen & + A3(:,2,5) * rLymi(:,5) 32459599516SKenneth E. Jansen & + rmi(:,12) 32559599516SKenneth E. Jansen rmi(:,13) = 32659599516SKenneth E. Jansen & A3(:,3,1) * rLymi(:,1) 32759599516SKenneth E. Jansenc & + A3(:,3,2) * rLymi(:,2) 32859599516SKenneth E. Jansen & + A3(:,3,3) * rLymi(:,3) 32959599516SKenneth E. Jansen & + A3(:,3,4) * rLymi(:,4) 33059599516SKenneth E. Jansen & + A3(:,3,5) * rLymi(:,5) 33159599516SKenneth E. Jansen & + rmi(:,13) 33259599516SKenneth E. Jansen rmi(:,14) = 33359599516SKenneth E. Jansen & A3(:,4,1) * rLymi(:,1) 33459599516SKenneth E. Jansenc & + A3(:,4,2) * rLymi(:,2) 33559599516SKenneth E. Jansenc & + A3(:,4,3) * rLymi(:,3) 33659599516SKenneth E. Jansen & + A3(:,4,4) * rLymi(:,4) 33759599516SKenneth E. Jansen & + A3(:,4,5) * rLymi(:,5) 33859599516SKenneth E. Jansen & + rmi(:,14) 33959599516SKenneth E. Jansen rmi(:,15) = 34059599516SKenneth E. Jansen & A3(:,5,1) * rLymi(:,1) 34159599516SKenneth E. Jansen & + A3(:,5,2) * rLymi(:,2) 34259599516SKenneth E. Jansen & + A3(:,5,3) * rLymi(:,3) 34359599516SKenneth E. Jansen & + A3(:,5,4) * rLymi(:,4) 34459599516SKenneth E. Jansen & + A3(:,5,5) * rLymi(:,5) 34559599516SKenneth E. Jansen & + rmi(:,15) 34659599516SKenneth E. Jansen endif !ires.ne.1 34759599516SKenneth E. Jansen 34859599516SKenneth E. Jansenc 34959599516SKenneth E. Jansenc same thing for the real residual 35059599516SKenneth E. Jansenc 35159599516SKenneth E. Jansen if(ires.eq.3 .or. ires .eq. 1) then ! we need the total residual 35259599516SKenneth E. Jansen ri(:,1) = 35359599516SKenneth E. Jansen & A1(:,1,1) * rLyi(:,1) 35459599516SKenneth E. Jansen & + A1(:,1,2) * rLyi(:,2) 35559599516SKenneth E. Jansenc & + A1(:,1,3) * rLyi(:,3) 35659599516SKenneth E. Jansenc & + A1(:,1,4) * rLyi(:,4) 35759599516SKenneth E. Jansen & + A1(:,1,5) * rLyi(:,5) 35859599516SKenneth E. Jansen & + ri(:,1) 35959599516SKenneth E. Jansen ri(:,2) = 36059599516SKenneth E. Jansen & A1(:,2,1) * rLyi(:,1) 36159599516SKenneth E. Jansen & + A1(:,2,2) * rLyi(:,2) 36259599516SKenneth E. Jansenc & + A1(:,2,3) * rLyi(:,3) 36359599516SKenneth E. Jansenc & + A1(:,2,4) * rLyi(:,4) 36459599516SKenneth E. Jansen & + A1(:,2,5) * rLyi(:,5) 36559599516SKenneth E. Jansen & + ri(:,2) 36659599516SKenneth E. Jansen ri(:,3) = 36759599516SKenneth E. Jansen & A1(:,3,1) * rLyi(:,1) 36859599516SKenneth E. Jansen & + A1(:,3,2) * rLyi(:,2) 36959599516SKenneth E. Jansen & + A1(:,3,3) * rLyi(:,3) 37059599516SKenneth E. Jansenc & + A1(:,3,4) * rLyi(:,4) 37159599516SKenneth E. Jansen & + A1(:,3,5) * rLyi(:,5) 37259599516SKenneth E. Jansen & + ri(:,3) 37359599516SKenneth E. Jansen ri(:,4) = 37459599516SKenneth E. Jansen & A1(:,4,1) * rLyi(:,1) 37559599516SKenneth E. Jansen & + A1(:,4,2) * rLyi(:,2) 37659599516SKenneth E. Jansenc & + A1(:,4,3) * rLyi(:,3) 37759599516SKenneth E. Jansen & + A1(:,4,4) * rLyi(:,4) 37859599516SKenneth E. Jansen & + A1(:,4,5) * rLyi(:,5) 37959599516SKenneth E. Jansen & + ri(:,4) 38059599516SKenneth E. Jansen ri(:,5) = 38159599516SKenneth E. Jansen & A1(:,5,1) * rLyi(:,1) 38259599516SKenneth E. Jansen & + A1(:,5,2) * rLyi(:,2) 38359599516SKenneth E. Jansen & + A1(:,5,3) * rLyi(:,3) 38459599516SKenneth E. Jansen & + A1(:,5,4) * rLyi(:,4) 38559599516SKenneth E. Jansen & + A1(:,5,5) * rLyi(:,5) 38659599516SKenneth E. Jansen & + ri(:,5) 38759599516SKenneth E. Jansenc 38859599516SKenneth E. Jansen ri(:,6) = 38959599516SKenneth E. Jansen & A2(:,1,1) * rLyi(:,1) 39059599516SKenneth E. Jansenc & + A2(:,1,2) * rLyi(:,2) 39159599516SKenneth E. Jansen & + A2(:,1,3) * rLyi(:,3) 39259599516SKenneth E. Jansenc & + A2(:,1,4) * rLyi(:,4) 39359599516SKenneth E. Jansen & + A2(:,1,5) * rLyi(:,5) 39459599516SKenneth E. Jansen & + ri(:,6) 39559599516SKenneth E. Jansen ri(:,7) = 39659599516SKenneth E. Jansen & A2(:,2,1) * rLyi(:,1) 39759599516SKenneth E. Jansen & + A2(:,2,2) * rLyi(:,2) 39859599516SKenneth E. Jansen & + A2(:,2,3) * rLyi(:,3) 39959599516SKenneth E. Jansenc & + A2(:,2,4) * rLyi(:,4) 40059599516SKenneth E. Jansen & + A2(:,2,5) * rLyi(:,5) 40159599516SKenneth E. Jansen & + ri(:,7) 40259599516SKenneth E. Jansen ri(:,8) = 40359599516SKenneth E. Jansen & A2(:,3,1) * rLyi(:,1) 40459599516SKenneth E. Jansenc & + A2(:,3,2) * rLyi(:,2) 40559599516SKenneth E. Jansen & + A2(:,3,3) * rLyi(:,3) 40659599516SKenneth E. Jansenc & + A2(:,3,4) * rLyi(:,4) 40759599516SKenneth E. Jansen & + A2(:,3,5) * rLyi(:,5) 40859599516SKenneth E. Jansen & + ri(:,8) 40959599516SKenneth E. Jansen ri(:,9) = 41059599516SKenneth E. Jansen & A2(:,4,1) * rLyi(:,1) 41159599516SKenneth E. Jansenc & + A2(:,4,2) * rLyi(:,2) 41259599516SKenneth E. Jansen & + A2(:,4,3) * rLyi(:,3) 41359599516SKenneth E. Jansen & + A2(:,4,4) * rLyi(:,4) 41459599516SKenneth E. Jansen & + A2(:,4,5) * rLyi(:,5) 41559599516SKenneth E. Jansen & + ri(:,9) 41659599516SKenneth E. Jansen ri(:,10) = 41759599516SKenneth E. Jansen & A2(:,5,1) * rLyi(:,1) 41859599516SKenneth E. Jansen & + A2(:,5,2) * rLyi(:,2) 41959599516SKenneth E. Jansen & + A2(:,5,3) * rLyi(:,3) 42059599516SKenneth E. Jansen & + A2(:,5,4) * rLyi(:,4) 42159599516SKenneth E. Jansen & + A2(:,5,5) * rLyi(:,5) 42259599516SKenneth E. Jansen & + ri(:,10) 42359599516SKenneth E. Jansen ri(:,11) = 42459599516SKenneth E. Jansen & A3(:,1,1) * rLyi(:,1) 42559599516SKenneth E. Jansenc & + A3(:,1,2) * rLyi(:,2) 42659599516SKenneth E. Jansenc & + A3(:,1,3) * rLyi(:,3) 42759599516SKenneth E. Jansen & + A3(:,1,4) * rLyi(:,4) 42859599516SKenneth E. Jansen & + A3(:,1,5) * rLyi(:,5) 42959599516SKenneth E. Jansen & + ri(:,11) 43059599516SKenneth E. Jansen ri(:,12) = 43159599516SKenneth E. Jansen & A3(:,2,1) * rLyi(:,1) 43259599516SKenneth E. Jansen & + A3(:,2,2) * rLyi(:,2) 43359599516SKenneth E. Jansenc & + A3(:,2,3) * rLyi(:,3) 43459599516SKenneth E. Jansen & + A3(:,2,4) * rLyi(:,4) 43559599516SKenneth E. Jansen & + A3(:,2,5) * rLyi(:,5) 43659599516SKenneth E. Jansen & + ri(:,12) 43759599516SKenneth E. Jansen ri(:,13) = 43859599516SKenneth E. Jansen & A3(:,3,1) * rLyi(:,1) 43959599516SKenneth E. Jansenc & + A3(:,3,2) * rLyi(:,2) 44059599516SKenneth E. Jansen & + A3(:,3,3) * rLyi(:,3) 44159599516SKenneth E. Jansen & + A3(:,3,4) * rLyi(:,4) 44259599516SKenneth E. Jansen & + A3(:,3,5) * rLyi(:,5) 44359599516SKenneth E. Jansen & + ri(:,13) 44459599516SKenneth E. Jansen ri(:,14) = 44559599516SKenneth E. Jansen & A3(:,4,1) * rLyi(:,1) 44659599516SKenneth E. Jansenc & + A3(:,4,2) * rLyi(:,2) 44759599516SKenneth E. Jansenc & + A3(:,4,3) * rLyi(:,3) 44859599516SKenneth E. Jansen & + A3(:,4,4) * rLyi(:,4) 44959599516SKenneth E. Jansen & + A3(:,4,5) * rLyi(:,5) 45059599516SKenneth E. Jansen & + ri(:,14) 45159599516SKenneth E. Jansen ri(:,15) = 45259599516SKenneth E. Jansen & A3(:,5,1) * rLyi(:,1) 45359599516SKenneth E. Jansen & + A3(:,5,2) * rLyi(:,2) 45459599516SKenneth E. Jansen & + A3(:,5,3) * rLyi(:,3) 45559599516SKenneth E. Jansen & + A3(:,5,4) * rLyi(:,4) 45659599516SKenneth E. Jansen & + A3(:,5,5) * rLyi(:,5) 45759599516SKenneth E. Jansen & + ri(:,15) 45859599516SKenneth E. Jansenc 45959599516SKenneth E. Jansen endif ! for ires=3 or 1 46059599516SKenneth E. Jansen 46159599516SKenneth E. Jansenc 46259599516SKenneth E. Jansenc.... ----------------------------> LHS <---------------------------- 46359599516SKenneth E. Jansenc 46459599516SKenneth E. Jansen if (lhs .eq. 1) then 46559599516SKenneth E. Jansenc 46659599516SKenneth E. Jansenc.... calculate (Atau) <-- (A_1 tau) (Recall that we are using a 46759599516SKenneth E. Jansenc diagonal tau here) 46859599516SKenneth E. Jansenc 46959599516SKenneth E. Jansen 47059599516SKenneth E. Jansen if (itau.lt.10) then 47159599516SKenneth E. Jansen 47259599516SKenneth E. Jansen do i = 1, nflow 47359599516SKenneth E. Jansen Atau(:,i,1) = A1(:,i,1)*tau(:,1) 47459599516SKenneth E. Jansen Atau(:,i,2) = A1(:,i,2)*tau(:,2) 47559599516SKenneth E. Jansen Atau(:,i,3) = A1(:,i,3)*tau(:,2) 47659599516SKenneth E. Jansen Atau(:,i,4) = A1(:,i,4)*tau(:,2) 47759599516SKenneth E. Jansen Atau(:,i,5) = A1(:,i,5)*tau(:,3) 47859599516SKenneth E. Jansen enddo 47959599516SKenneth E. Jansen 48059599516SKenneth E. Jansen else 48159599516SKenneth E. Jansen 48259599516SKenneth E. Jansen Atau = zero 48359599516SKenneth E. Jansen do i = 1, nflow 48459599516SKenneth E. Jansen do j = 1, nflow 48559599516SKenneth E. Jansen do k = 1, nflow 48659599516SKenneth E. Jansen Atau(:,i,j) =Atau(:,i,j) + A1(:,i,k)*PTau(:,k,j) 48759599516SKenneth E. Jansen enddo 48859599516SKenneth E. Jansen enddo 48959599516SKenneth E. Jansen enddo 49059599516SKenneth E. Jansen 49159599516SKenneth E. Jansen endif 49259599516SKenneth E. Jansenc 49359599516SKenneth E. Jansenc.... calculate (A_1 tau A_0) (for L.S. time term of EGmass) 49459599516SKenneth E. Jansenc 49559599516SKenneth E. Jansen do j = 1, nflow 49659599516SKenneth E. Jansen do i = 1, nflow 49759599516SKenneth E. Jansen A1tauA0(:,i,j) = 49859599516SKenneth E. Jansen & Atau(:,i,1)*A0(:,1,j) + 49959599516SKenneth E. Jansen & Atau(:,i,2)*A0(:,2,j) + 50059599516SKenneth E. Jansen & Atau(:,i,3)*A0(:,3,j) + 50159599516SKenneth E. Jansen & Atau(:,i,4)*A0(:,4,j) + 50259599516SKenneth E. Jansen & Atau(:,i,5)*A0(:,5,j) 50359599516SKenneth E. Jansen enddo 50459599516SKenneth E. Jansen enddo 50559599516SKenneth E. Jansenc 50659599516SKenneth E. Jansenc.... add (A_1 tau A_1) to stiff [1,1] 50759599516SKenneth E. Jansenc 50859599516SKenneth E. Jansen do j = 1, nflow 50959599516SKenneth E. Jansen do i = 1, nflow 51059599516SKenneth E. Jansen stiff(:,i,j) = stiff(:,i,j) + ( 51159599516SKenneth E. Jansen & Atau(:,i,1)*A1(:,1,j) 51259599516SKenneth E. Jansen & + Atau(:,i,2)*A1(:,2,j) 51359599516SKenneth E. Jansen & + Atau(:,i,3)*A1(:,3,j) 51459599516SKenneth E. Jansen & + Atau(:,i,4)*A1(:,4,j) 51559599516SKenneth E. Jansen & + Atau(:,i,5)*A1(:,5,j) 51659599516SKenneth E. Jansen & ) 51759599516SKenneth E. Jansen enddo 51859599516SKenneth E. Jansen enddo 51959599516SKenneth E. Jansenc 52059599516SKenneth E. Jansenc.... add (A_1 tau A_2) to stiff [1,2] 52159599516SKenneth E. Jansenc 52259599516SKenneth E. Jansen do j = 1, nflow 52359599516SKenneth E. Jansen do i = 1, nflow 52459599516SKenneth E. Jansen stiff(:,i,j+5) = stiff(:,i,j+5) + ( 52559599516SKenneth E. Jansen & Atau(:,i,1)*A2(:,1,j) 52659599516SKenneth E. Jansen & + Atau(:,i,2)*A2(:,2,j) 52759599516SKenneth E. Jansen & + Atau(:,i,3)*A2(:,3,j) 52859599516SKenneth E. Jansen & + Atau(:,i,4)*A2(:,4,j) 52959599516SKenneth E. Jansen & + Atau(:,i,5)*A2(:,5,j) 53059599516SKenneth E. Jansen & ) 53159599516SKenneth E. Jansen enddo 53259599516SKenneth E. Jansen enddo 53359599516SKenneth E. Jansenc 53459599516SKenneth E. Jansenc.... add (A_1 tau A_3) to stiff [1,3] 53559599516SKenneth E. Jansenc 53659599516SKenneth E. Jansen do j = 1, nflow 53759599516SKenneth E. Jansen do i = 1, nflow 53859599516SKenneth E. Jansen stiff(:,i,j+10) = stiff(:,i,j+10) + ( 53959599516SKenneth E. Jansen & Atau(:,i,1)*A3(:,1,j) 54059599516SKenneth E. Jansen & + Atau(:,i,2)*A3(:,2,j) 54159599516SKenneth E. Jansen & + Atau(:,i,3)*A3(:,3,j) 54259599516SKenneth E. Jansen & + Atau(:,i,4)*A3(:,4,j) 54359599516SKenneth E. Jansen & + Atau(:,i,5)*A3(:,5,j) 54459599516SKenneth E. Jansen & ) 54559599516SKenneth E. Jansen enddo 54659599516SKenneth E. Jansen enddo 54759599516SKenneth E. Jansenc 54859599516SKenneth E. Jansenc.... calculate (Atau) <-- (A_2 tau) (Recall that we are using a 54959599516SKenneth E. Jansenc diagonal tau here) 55059599516SKenneth E. Jansenc 55159599516SKenneth E. Jansen if (itau.lt.10) then 55259599516SKenneth E. Jansen 55359599516SKenneth E. Jansen do i = 1, nflow 55459599516SKenneth E. Jansen Atau(:,i,1) = A2(:,i,1)*tau(:,1) 55559599516SKenneth E. Jansen Atau(:,i,2) = A2(:,i,2)*tau(:,2) 55659599516SKenneth E. Jansen Atau(:,i,3) = A2(:,i,3)*tau(:,2) 55759599516SKenneth E. Jansen Atau(:,i,4) = A2(:,i,4)*tau(:,2) 55859599516SKenneth E. Jansen Atau(:,i,5) = A2(:,i,5)*tau(:,3) 55959599516SKenneth E. Jansen enddo 56059599516SKenneth E. Jansen 56159599516SKenneth E. Jansen else 56259599516SKenneth E. Jansen Atau = zero 56359599516SKenneth E. Jansen do i = 1, nflow 56459599516SKenneth E. Jansen do j = 1, nflow 56559599516SKenneth E. Jansen do k = 1, nflow 56659599516SKenneth E. Jansen Atau(:,i,j) = Atau(:,i,j) + A2(:,i,k)*PTau(:,k,j) 56759599516SKenneth E. Jansen enddo 56859599516SKenneth E. Jansen enddo 56959599516SKenneth E. Jansen enddo 57059599516SKenneth E. Jansen 57159599516SKenneth E. Jansen endif 57259599516SKenneth E. Jansenc 57359599516SKenneth E. Jansenc.... calculate (A_2 tau A_0) (for L.S. time term of EGmass) 57459599516SKenneth E. Jansenc 57559599516SKenneth E. Jansen do j = 1, nflow 57659599516SKenneth E. Jansen do i = 1, nflow 57759599516SKenneth E. Jansen A2tauA0(:,i,j) = 57859599516SKenneth E. Jansen & Atau(:,i,1)*A0(:,1,j) + 57959599516SKenneth E. Jansen & Atau(:,i,2)*A0(:,2,j) + 58059599516SKenneth E. Jansen & Atau(:,i,3)*A0(:,3,j) + 58159599516SKenneth E. Jansen & Atau(:,i,4)*A0(:,4,j) + 58259599516SKenneth E. Jansen & Atau(:,i,5)*A0(:,5,j) 58359599516SKenneth E. Jansen enddo 58459599516SKenneth E. Jansen enddo 58559599516SKenneth E. Jansenc 58659599516SKenneth E. Jansenc.... add (A_2 tau A_1) to stiff [2,1] 58759599516SKenneth E. Jansenc 58859599516SKenneth E. Jansen do j = 1, nflow 58959599516SKenneth E. Jansen do i = 1, nflow 59059599516SKenneth E. Jansen stiff(:,i+5,j) = stiff(:,i+5,j) + ( 59159599516SKenneth E. Jansen & Atau(:,i,1)*A1(:,1,j) 59259599516SKenneth E. Jansen & + Atau(:,i,2)*A1(:,2,j) 59359599516SKenneth E. Jansen & + Atau(:,i,3)*A1(:,3,j) 59459599516SKenneth E. Jansen & + Atau(:,i,4)*A1(:,4,j) 59559599516SKenneth E. Jansen & + Atau(:,i,5)*A1(:,5,j) 59659599516SKenneth E. Jansen & ) 59759599516SKenneth E. Jansen enddo 59859599516SKenneth E. Jansen enddo 59959599516SKenneth E. Jansenc 60059599516SKenneth E. Jansenc.... add (A_2 tau A_2) to stiff [2,2] 60159599516SKenneth E. Jansenc 60259599516SKenneth E. Jansen do j = 1, nflow 60359599516SKenneth E. Jansen do i = 1, nflow 60459599516SKenneth E. Jansen stiff(:,i+5,j+5) = stiff(:,i+5,j+5) + ( 60559599516SKenneth E. Jansen & Atau(:,i,1)*A2(:,1,j) 60659599516SKenneth E. Jansen & + Atau(:,i,2)*A2(:,2,j) 60759599516SKenneth E. Jansen & + Atau(:,i,3)*A2(:,3,j) 60859599516SKenneth E. Jansen & + Atau(:,i,4)*A2(:,4,j) 60959599516SKenneth E. Jansen & + Atau(:,i,5)*A2(:,5,j) 61059599516SKenneth E. Jansen & ) 61159599516SKenneth E. Jansen enddo 61259599516SKenneth E. Jansen enddo 61359599516SKenneth E. Jansenc 61459599516SKenneth E. Jansenc.... add (A_2 tau A_3) to stiff [2,3] 61559599516SKenneth E. Jansenc 61659599516SKenneth E. Jansen do j = 1, nflow 61759599516SKenneth E. Jansen do i = 1, nflow 61859599516SKenneth E. Jansen stiff(:,i+5,j+10) = stiff(:,i+5,j+10) + ( 61959599516SKenneth E. Jansen & Atau(:,i,1)*A3(:,1,j) 62059599516SKenneth E. Jansen & + Atau(:,i,2)*A3(:,2,j) 62159599516SKenneth E. Jansen & + Atau(:,i,3)*A3(:,3,j) 62259599516SKenneth E. Jansen & + Atau(:,i,4)*A3(:,4,j) 62359599516SKenneth E. Jansen & + Atau(:,i,5)*A3(:,5,j) 62459599516SKenneth E. Jansen & ) 62559599516SKenneth E. Jansen enddo 62659599516SKenneth E. Jansen enddo 62759599516SKenneth E. Jansenc 62859599516SKenneth E. Jansenc.... calculate (Atau) <-- (A_3 tau) (Recall that we are using a 62959599516SKenneth E. Jansenc diagonal tau here) 63059599516SKenneth E. Jansenc 63159599516SKenneth E. Jansen if (itau.lt.10) then 63259599516SKenneth E. Jansen 63359599516SKenneth E. Jansen do i = 1, nflow 63459599516SKenneth E. Jansen Atau(:,i,1) = A3(:,i,1)*tau(:,1) 63559599516SKenneth E. Jansen Atau(:,i,2) = A3(:,i,2)*tau(:,2) 63659599516SKenneth E. Jansen Atau(:,i,3) = A3(:,i,3)*tau(:,2) 63759599516SKenneth E. Jansen Atau(:,i,4) = A3(:,i,4)*tau(:,2) 63859599516SKenneth E. Jansen Atau(:,i,5) = A3(:,i,5)*tau(:,3) 63959599516SKenneth E. Jansen enddo 64059599516SKenneth E. Jansen 64159599516SKenneth E. Jansen else 64259599516SKenneth E. Jansen Atau = zero 64359599516SKenneth E. Jansen do i = 1, nflow 64459599516SKenneth E. Jansen do j = 1, nflow 64559599516SKenneth E. Jansen do k = 1, nflow 64659599516SKenneth E. Jansen Atau(:,i,j) = Atau(:,i,j) + A3(:,i,k)*PTau(:,k,j) 64759599516SKenneth E. Jansen enddo 64859599516SKenneth E. Jansen enddo 64959599516SKenneth E. Jansen enddo 65059599516SKenneth E. Jansen 65159599516SKenneth E. Jansen endif 65259599516SKenneth E. Jansenc 65359599516SKenneth E. Jansenc.... calculate (A_3 tau A_0) (for L.S. time term of EGmass) 65459599516SKenneth E. Jansenc 65559599516SKenneth E. Jansen do j = 1, nflow 65659599516SKenneth E. Jansen do i = 1, nflow 65759599516SKenneth E. Jansen A3tauA0(:,i,j) = 65859599516SKenneth E. Jansen & Atau(:,i,1)*A0(:,1,j) + 65959599516SKenneth E. Jansen & Atau(:,i,2)*A0(:,2,j) + 66059599516SKenneth E. Jansen & Atau(:,i,3)*A0(:,3,j) + 66159599516SKenneth E. Jansen & Atau(:,i,4)*A0(:,4,j) + 66259599516SKenneth E. Jansen & Atau(:,i,5)*A0(:,5,j) 66359599516SKenneth E. Jansen enddo 66459599516SKenneth E. Jansen enddo 66559599516SKenneth E. Jansenc 66659599516SKenneth E. Jansenc.... add (A_3 tau A_1) to stiff [3,1] 66759599516SKenneth E. Jansenc 66859599516SKenneth E. Jansen do j = 1, nflow 66959599516SKenneth E. Jansen do i = 1, nflow 67059599516SKenneth E. Jansen stiff(:,i+10,j) = stiff(:,i+10,j) + ( 67159599516SKenneth E. Jansen & Atau(:,i,1)*A1(:,1,j) 67259599516SKenneth E. Jansen & + Atau(:,i,2)*A1(:,2,j) 67359599516SKenneth E. Jansen & + Atau(:,i,3)*A1(:,3,j) 67459599516SKenneth E. Jansen & + Atau(:,i,4)*A1(:,4,j) 67559599516SKenneth E. Jansen & + Atau(:,i,5)*A1(:,5,j) 67659599516SKenneth E. Jansen & ) 67759599516SKenneth E. Jansen enddo 67859599516SKenneth E. Jansen enddo 67959599516SKenneth E. Jansenc 68059599516SKenneth E. Jansenc.... add (A_3 tau A_2) to stiff [3,2] 68159599516SKenneth E. Jansenc 68259599516SKenneth E. Jansen do j = 1, nflow 68359599516SKenneth E. Jansen do i = 1, nflow 68459599516SKenneth E. Jansen stiff(:,i+10,j+5) = stiff(:,i+10,j+5) + ( 68559599516SKenneth E. Jansen & Atau(:,i,1)*A2(:,1,j) 68659599516SKenneth E. Jansen & + Atau(:,i,2)*A2(:,2,j) 68759599516SKenneth E. Jansen & + Atau(:,i,3)*A2(:,3,j) 68859599516SKenneth E. Jansen & + Atau(:,i,4)*A2(:,4,j) 68959599516SKenneth E. Jansen & + Atau(:,i,5)*A2(:,5,j) 69059599516SKenneth E. Jansen & ) 69159599516SKenneth E. Jansen enddo 69259599516SKenneth E. Jansen enddo 69359599516SKenneth E. Jansenc 69459599516SKenneth E. Jansenc.... add (A_3 tau A_3) to stiff [3,3] 69559599516SKenneth E. Jansenc 69659599516SKenneth E. Jansen do j = 1, nflow 69759599516SKenneth E. Jansen do i = 1, nflow 69859599516SKenneth E. Jansen stiff(:,i+10,j+10) = stiff(:,i+10,j+10) + ( 69959599516SKenneth E. Jansen & Atau(:,i,1)*A3(:,1,j) 70059599516SKenneth E. Jansen & + Atau(:,i,2)*A3(:,2,j) 70159599516SKenneth E. Jansen & + Atau(:,i,3)*A3(:,3,j) 70259599516SKenneth E. Jansen & + Atau(:,i,4)*A3(:,4,j) 70359599516SKenneth E. Jansen & + Atau(:,i,5)*A3(:,5,j) 70459599516SKenneth E. Jansen & ) 70559599516SKenneth E. Jansen enddo 70659599516SKenneth E. Jansen enddo 70759599516SKenneth E. Jansenc 70859599516SKenneth E. Jansenc.... add least squares time term to the LHS tangent mass matrix 70959599516SKenneth E. Jansenc 71059599516SKenneth E. Jansenc 71159599516SKenneth E. Jansenc.... loop through rows (nodes i) 71259599516SKenneth E. Jansenc 71359599516SKenneth E. Jansen do i = 1, nshl 71459599516SKenneth E. Jansen i0 = nflow * (i - 1) 71559599516SKenneth E. Jansenc 71659599516SKenneth E. Jansenc.... first calculate (Atau) <-- (N_a,i A_i tau A_0) 71759599516SKenneth E. Jansenc ( use Atau to conserve space ) 71859599516SKenneth E. Jansenc 71959599516SKenneth E. Jansen do idof = 1, nflow 72059599516SKenneth E. Jansen do jdof = 1, nflow 72159599516SKenneth E. Jansen Atau(:,idof,jdof) = 72259599516SKenneth E. Jansen & shg(:,i,1) * A1tauA0(:,idof,jdof) + 72359599516SKenneth E. Jansen & shg(:,i,2) * A2tauA0(:,idof,jdof) + 72459599516SKenneth E. Jansen & shg(:,i,3) * A3tauA0(:,idof,jdof) 72559599516SKenneth E. Jansen enddo 72659599516SKenneth E. Jansen enddo 72759599516SKenneth E. Jansenc 72859599516SKenneth E. Jansenc.... loop through column nodes, add (N_a,i A_i tau N_b) to EGmass 72959599516SKenneth E. Jansenc 73059599516SKenneth E. Jansen do j = 1, nshl 73159599516SKenneth E. Jansen j0 = nflow * (j - 1) 73259599516SKenneth E. Jansenc 73359599516SKenneth E. Jansenc.... compute the factors 73459599516SKenneth E. Jansenc 73559599516SKenneth E. Jansen fact = shape(:,j) * WdetJ * almi/gami/alfi*dtgl 73659599516SKenneth E. Jansenc 73759599516SKenneth E. Jansenc.... loop through d.o.f.'s 73859599516SKenneth E. Jansenc 73959599516SKenneth E. Jansen do idof = 1, nflow 74059599516SKenneth E. Jansen il = i0 + idof 74159599516SKenneth E. Jansen 74259599516SKenneth E. Jansen EGmass(:,il,j0+1) = EGmass(:,il,j0+1) + 74359599516SKenneth E. Jansen & fact * Atau(:,idof,1) 74459599516SKenneth E. Jansen EGmass(:,il,j0+2) = EGmass(:,il,j0+2) + 74559599516SKenneth E. Jansen & fact * Atau(:,idof,2) 74659599516SKenneth E. Jansen EGmass(:,il,j0+3) = EGmass(:,il,j0+3) + 74759599516SKenneth E. Jansen & fact * Atau(:,idof,3) 74859599516SKenneth E. Jansen EGmass(:,il,j0+4) = EGmass(:,il,j0+4) + 74959599516SKenneth E. Jansen & fact * Atau(:,idof,4) 75059599516SKenneth E. Jansen EGmass(:,il,j0+5) = EGmass(:,il,j0+5) + 75159599516SKenneth E. Jansen & fact * Atau(:,idof,5) 75259599516SKenneth E. Jansen enddo 75359599516SKenneth E. Jansenc 75459599516SKenneth E. Jansenc.... end loop on column nodes 75559599516SKenneth E. Jansenc 75659599516SKenneth E. Jansen enddo 75759599516SKenneth E. Jansenc 75859599516SKenneth E. Jansenc.... end loop on row nodes 75959599516SKenneth E. Jansenc 76059599516SKenneth E. Jansen enddo 76159599516SKenneth E. Jansenc 76259599516SKenneth E. Jansenc.... end LHS computation 76359599516SKenneth E. Jansenc 76459599516SKenneth E. Jansen endif 76559599516SKenneth E. Jansen 76659599516SKenneth E. Jansen ttim(24) = ttim(24) + secs(0.0) 76759599516SKenneth E. Jansenc 76859599516SKenneth E. Jansenc.... return 76959599516SKenneth E. Jansenc 77059599516SKenneth E. Jansen return 77159599516SKenneth E. Jansen end 77259599516SKenneth E. Jansenc 77359599516SKenneth E. Jansenc 77459599516SKenneth E. Jansenc 77559599516SKenneth E. Jansen subroutine e3LSSclr (A1t, A2t, A3t, 77659599516SKenneth E. Jansen & rho, rmu, rTLSt, 77759599516SKenneth E. Jansen & u1, u2, u3, 77859599516SKenneth E. Jansen & rLyti, dxidx, raLSt, 77959599516SKenneth E. Jansen & rti, rk, giju, 78059599516SKenneth E. Jansen & acti, A0t, 78159599516SKenneth E. Jansen & shape, shg, 78259599516SKenneth E. Jansen & EGmasst, stifft, WdetJ, 78359599516SKenneth E. Jansen & srcp) 78459599516SKenneth E. Jansenc 78559599516SKenneth E. Jansenc---------------------------------------------------------------------- 78659599516SKenneth E. Jansenc 78759599516SKenneth E. Jansenc This routine calculates the contribution of the least-squares 78859599516SKenneth E. Jansenc operator to the RHS vector and LHS tangent matrix. The temporary 78959599516SKenneth E. Jansenc results are put in ri. 79059599516SKenneth E. Jansenc 79159599516SKenneth E. Jansenc input: 79259599516SKenneth E. Jansenc A0t (npro) : A_0 79359599516SKenneth E. Jansenc A1t (npro) : A_1 79459599516SKenneth E. Jansenc A2t (npro) : A_2 79559599516SKenneth E. Jansenc A3t (npro) : A_3 79659599516SKenneth E. Jansenc acti (npro) : time-deriv. of Sclr 79759599516SKenneth E. Jansenc rho (npro) : density 79859599516SKenneth E. Jansenc rmu (npro) : molecular viscosity 79959599516SKenneth E. Jansenc rk (npro) : kinetic energy 80059599516SKenneth E. Jansenc u1 (npro) : x1-velocity component 80159599516SKenneth E. Jansenc u2 (npro) : x2-velocity component 80259599516SKenneth E. Jansenc u3 (npro) : x3-velocity component 80359599516SKenneth E. Jansenc rLyti (npro) : least-squares residual vector 80459599516SKenneth E. Jansenc dxidx (npro,nsd,nsd) : inverse of deformation gradient 80559599516SKenneth E. Jansenc taut (npro) : stability parameter 80659599516SKenneth E. Jansenc rLyti (npro) : convective portion of least-squares 80759599516SKenneth E. Jansenc residual vector 80859599516SKenneth E. Jansenc divqti (npro,1) : divergence of diffusive flux 80959599516SKenneth E. Jansenc shape (npro,nshl) : element shape functions 81059599516SKenneth E. Jansenc shg (npro,nshl,nsd) : global element shape function grads 81159599516SKenneth E. Jansenc WdetJ (npro) : weighted jacobian determinant 81259599516SKenneth E. Jansenc stifft (npro,nsd,nsd) : stiffness matrix 81359599516SKenneth E. Jansenc EGmasst(npro,nshape,nshape): partial mass matrix 81459599516SKenneth E. Jansenc 81559599516SKenneth E. Jansenc output: 81659599516SKenneth E. Jansenc rti (npro,nsd+1) : partial residual 81759599516SKenneth E. Jansenc EGmasst(npro,nshape,nshape): partial mass matrix 81859599516SKenneth E. Jansenc 81959599516SKenneth E. Jansenc 82059599516SKenneth E. Jansenc Zdenek Johan, Summer 1990. (Modified from e2ls.f) 82159599516SKenneth E. Jansenc Zdenek Johan, Winter 1991. (Fortran 90) 82259599516SKenneth E. Jansenc Kenneth Jansen, Winter 1997. Prim. Var. with Diag Tau 82359599516SKenneth E. Jansenc---------------------------------------------------------------------- 82459599516SKenneth E. Jansenc 82559599516SKenneth E. Jansen include "common.h" 82659599516SKenneth E. Jansen 82759599516SKenneth E. Jansenc 82859599516SKenneth E. Jansenc passed arrays 82959599516SKenneth E. Jansenc 83059599516SKenneth E. Jansen dimension A1t(npro), A2t(npro), 83159599516SKenneth E. Jansen & A3t(npro), 83259599516SKenneth E. Jansen & A0t(npro), rho(npro), 83359599516SKenneth E. Jansen & acti(npro), rmu(npro), 83459599516SKenneth E. Jansen & u1(npro), u2(npro), 83559599516SKenneth E. Jansen & u3(npro), rk(npro), 83659599516SKenneth E. Jansen & rLyti(npro), dxidx(npro,nsd,nsd), 83759599516SKenneth E. Jansen & taut(npro), raLSt(npro), 83859599516SKenneth E. Jansen & rti(npro,nsd+1), rTLSt(npro), 83959599516SKenneth E. Jansen & stifft(npro,3,3), giju(npro,6), 84059599516SKenneth E. Jansen & EGmasst(npro,nshape,nshape), 84159599516SKenneth E. Jansen & shape(npro,nshl), 84259599516SKenneth E. Jansen & shg(npro,nshl,nsd), WdetJ(npro), 84359599516SKenneth E. Jansen & srcp(npro) 84459599516SKenneth E. Jansenc 84559599516SKenneth E. Jansenc local arrays 84659599516SKenneth E. Jansenc 84759599516SKenneth E. Jansen dimension rLymti(npro), Ataut(npro), 84859599516SKenneth E. Jansen & A1tautA0(npro), A2tautA0(npro), 84959599516SKenneth E. Jansen & A3tautA0(npro), fact(npro) 85059599516SKenneth E. Jansen 85159599516SKenneth E. Jansen ttim(24) = ttim(24) - tmr() 85259599516SKenneth E. Jansenc 85359599516SKenneth E. Jansen if(ivart.lt.2) return 85459599516SKenneth E. Jansenc 85559599516SKenneth E. Jansenc last step to the least squares is adding the time term. So that we 85659599516SKenneth E. Jansenc only have to localize one vector for each Krylov vector the modified 85759599516SKenneth E. Jansenc residual is quite different from the total residual. 85859599516SKenneth E. Jansenc 85959599516SKenneth E. Jansenc 86059599516SKenneth E. Jansenc the modified residual 86159599516SKenneth E. Jansenc 86259599516SKenneth E. Jansen fct1=almi/gami/alfi*dtgl 86359599516SKenneth E. Jansenc 86459599516SKenneth E. Jansenc add possibility of not including time term 86559599516SKenneth E. Jansenc 86659599516SKenneth E. Jansenc if(idiff.ne.-1) 86759599516SKenneth E. Jansenc rLymti = rLyti + fct1*duti 86859599516SKenneth E. Jansen 86959599516SKenneth E. Jansen if((ires.eq.1 .or. ires .eq. 3).and. idiff.ne.-1) then 87059599516SKenneth E. Jansen 87159599516SKenneth E. Jansen rLyti(:) = rLyti(:) + A0t(:)*acti(:) 87259599516SKenneth E. Jansen 87359599516SKenneth E. Jansen endif 87459599516SKenneth E. Jansenc 87559599516SKenneth E. Jansenc.... subtract div(q) from the least squares term 87659599516SKenneth E. Jansenc 87759599516SKenneth E. Jansenc if ((idiff >= 1).and.(ires==3 .or. ires==1)) then 87859599516SKenneth E. Jansenc rLyi(:) = rLyi(:) - divqti(:) 87959599516SKenneth E. Jansenc endif 88059599516SKenneth E. Jansenc 88159599516SKenneth E. Jansenc.... ---------------------------> Tau <----------------------------- 88259599516SKenneth E. Jansenc 88359599516SKenneth E. Jansenc.... calculate the tau matrix 88459599516SKenneth E. Jansenc 88559599516SKenneth E. Jansen 88659599516SKenneth E. Jansenc 88759599516SKenneth E. Jansenc.... we will use the same tau as used for momentum equations here 88859599516SKenneth E. Jansenc 88959599516SKenneth E. Jansen ttim(25) = ttim(25) - tmr() 89059599516SKenneth E. Jansen 89159599516SKenneth E. Jansen call e3tauSclr(rho, rmu, A0t, 89259599516SKenneth E. Jansen & u1, u2, u3, 89359599516SKenneth E. Jansen & dxidx, rLyti, rLymti, 89459599516SKenneth E. Jansen & taut, rk, raLSt, 89559599516SKenneth E. Jansen & rTLSt, giju) 89659599516SKenneth E. Jansen 89759599516SKenneth E. Jansen ttim(25) = ttim(25) + tmr() 89859599516SKenneth E. Jansenc 89959599516SKenneth E. Jansenc Warning: to save space I have put the tau times the modified residual 90059599516SKenneth E. Jansenc in rLymi and the tau times the total residual back in rLyi 90159599516SKenneth E. Jansenc 90259599516SKenneth E. Jansenc 90359599516SKenneth E. Jansenc.... ----------------------------> RHS <---------------------------- 90459599516SKenneth E. Jansenc 90559599516SKenneth E. Jansenc.... calculate (A_i^T tau Ly) 90659599516SKenneth E. Jansenc 90759599516SKenneth E. Jansen 90859599516SKenneth E. Jansenc if(ires.ne.1) then 90959599516SKenneth E. Jansenc 91059599516SKenneth E. Jansenc A1 * Tau L(Y): to be hit on left with Na,x in e3wmlt 91159599516SKenneth E. Jansenc 91259599516SKenneth E. Jansenc rmti(:,1) = A1t(:) * rLymti(:) 91359599516SKenneth E. Jansenc 91459599516SKenneth E. Jansenc 91559599516SKenneth E. Jansenc A2 * Tau L(Y), to be hit on left with Na,y 91659599516SKenneth E. Jansenc 91759599516SKenneth E. Jansenc rmti(:,2) = A2t(:) * rLymti(:) 91859599516SKenneth E. Jansenc 91959599516SKenneth E. Jansenc 92059599516SKenneth E. Jansenc A3 * Tau L(Y) to be hit on left with Na,z 92159599516SKenneth E. Jansenc 92259599516SKenneth E. Jansenc rmti(:,3) = A3t(:) * rLymti(:) 92359599516SKenneth E. Jansenc 92459599516SKenneth E. Jansenc endif !ires.ne.1 92559599516SKenneth E. Jansen 92659599516SKenneth E. Jansenc 92759599516SKenneth E. Jansenc same thing for the real residual 92859599516SKenneth E. Jansenc 92959599516SKenneth E. Jansen if(ires.eq.3 .or. ires .eq. 1) then ! we need the total residual 93059599516SKenneth E. Jansen rti(:,1) = rti(:,1) + A1t(:) * rLyti(:) 93159599516SKenneth E. Jansen 93259599516SKenneth E. Jansen rti(:,2) = rti(:,2) + A2t(:) * rLyti(:) 93359599516SKenneth E. Jansen 93459599516SKenneth E. Jansen rti(:,3) = rti(:,3) + A3t(:) * rLyti(:) 93559599516SKenneth E. Jansen 93659599516SKenneth E. Jansen endif ! for ires=3 or 1 93759599516SKenneth E. Jansen 93859599516SKenneth E. Jansenc 93959599516SKenneth E. Jansenc.... ----------------------------> LHS <---------------------------- 94059599516SKenneth E. Jansenc 94159599516SKenneth E. Jansen if (lhs .eq. 1) then 94259599516SKenneth E. Jansenc 94359599516SKenneth E. Jansenc 94459599516SKenneth E. Jansenc.... calculate (Atau) <-- (A_1 tau) 94559599516SKenneth E. Jansenc 94659599516SKenneth E. Jansen 94759599516SKenneth E. Jansen Ataut(:) = A1t(:)*taut(:) 94859599516SKenneth E. Jansen 94959599516SKenneth E. Jansenc 95059599516SKenneth E. Jansenc.... calculate (A_1 tau (A_0-srcp)) (for L.S. time term of EGmass) 95159599516SKenneth E. Jansenc 95259599516SKenneth E. Jansen 95359599516SKenneth E. Jansen A1tautA0(:) = Ataut(:)*(a0t(:)*fct1-srcp(:)) 95459599516SKenneth E. Jansen 95559599516SKenneth E. Jansenc 95659599516SKenneth E. Jansenc.... add (A_1 tau A_1) to stiff [1,1] 95759599516SKenneth E. Jansenc 95859599516SKenneth E. Jansen 95959599516SKenneth E. Jansen stifft(:,1,1) = stifft(:,1,1) + Ataut(:)*A1t(:) 96059599516SKenneth E. Jansenc stifft(:,1,1) = Ataut(:)*A1t(:) 96159599516SKenneth E. Jansenc 96259599516SKenneth E. Jansenc.... add (A_1 tau A_2) to stiff [1,2] 96359599516SKenneth E. Jansenc 96459599516SKenneth E. Jansen 96559599516SKenneth E. Jansen stifft(:,1,2) = stifft(:,1,2) + Ataut(:)*A2t(:) 96659599516SKenneth E. Jansenc stifft(:,1,2) = Ataut(:)*A2t(:) 96759599516SKenneth E. Jansenc 96859599516SKenneth E. Jansenc.... add (A_1 tau A_3) to stiff [1,3] 96959599516SKenneth E. Jansenc 97059599516SKenneth E. Jansen 97159599516SKenneth E. Jansen stifft(:,1,3) = stifft(:,1,3) + Ataut(:)*A3t(:) 97259599516SKenneth E. Jansenc stifft(:,1,3) = Ataut(:)*A3t(:) 97359599516SKenneth E. Jansenc 97459599516SKenneth E. Jansenc.... calculate (Atau) <-- (A_2 tau) 97559599516SKenneth E. Jansenc 97659599516SKenneth E. Jansen 97759599516SKenneth E. Jansen Ataut(:) = A2t(:)*taut(:) 97859599516SKenneth E. Jansen 97959599516SKenneth E. Jansenc 98059599516SKenneth E. Jansenc.... calculate (A_2 tau (A_0-srcp)) (for L.S. time term of EGmass) 98159599516SKenneth E. Jansenc 98259599516SKenneth E. Jansen 98359599516SKenneth E. Jansen A2tautA0(:) = Ataut(:)*(a0t(:)*fct1-srcp(:)) 98459599516SKenneth E. Jansen 98559599516SKenneth E. Jansenc 98659599516SKenneth E. Jansenc.... add (A_2 tau A_1) to stiff [2,1] 98759599516SKenneth E. Jansenc 98859599516SKenneth E. Jansen 98959599516SKenneth E. Jansen stifft(:,2,1) = stifft(:,1,2) 99059599516SKenneth E. Jansenc 99159599516SKenneth E. Jansenc.... add (A_2 tau A_2) to stiff [2,2] 99259599516SKenneth E. Jansenc 99359599516SKenneth E. Jansen 99459599516SKenneth E. Jansen stifft(:,2,2) = stifft(:,2,2) + Ataut(:)*A2t(:) 99559599516SKenneth E. Jansen 99659599516SKenneth E. Jansenc 99759599516SKenneth E. Jansenc.... add (A_2 tau A_3) to stiff [2,3] 99859599516SKenneth E. Jansenc 99959599516SKenneth E. Jansen 100059599516SKenneth E. Jansen stifft(:,2,3) = stifft(:,2,3) + Ataut(:)*A3t(:) 100159599516SKenneth E. Jansen 100259599516SKenneth E. Jansenc 100359599516SKenneth E. Jansenc.... calculate (Atau) <-- (A_3 tau) 100459599516SKenneth E. Jansenc 100559599516SKenneth E. Jansen 100659599516SKenneth E. Jansen Ataut(:) = A3t(:)*taut(:) 100759599516SKenneth E. Jansen 100859599516SKenneth E. Jansenc 100959599516SKenneth E. Jansenc.... calculate (A_3 tau (A_0-srcp)) (for L.S. time term of EGmass) 101059599516SKenneth E. Jansenc 101159599516SKenneth E. Jansen 101259599516SKenneth E. Jansen A3tautA0(:) = Ataut(:)*(a0t(:)*fct1-srcp(:)) 101359599516SKenneth E. Jansen 101459599516SKenneth E. Jansenc 101559599516SKenneth E. Jansenc.... add (A_3 tau A_1) to stiff [3,1] 101659599516SKenneth E. Jansenc 101759599516SKenneth E. Jansen 101859599516SKenneth E. Jansen stifft(:,3,1) = stifft(:,1,3) 101959599516SKenneth E. Jansen 102059599516SKenneth E. Jansenc 102159599516SKenneth E. Jansenc.... add (A_3 tau A_2) to stiff [3,2] 102259599516SKenneth E. Jansenc 102359599516SKenneth E. Jansen 102459599516SKenneth E. Jansen stifft(:,3,2) = stifft(:,2,3) 102559599516SKenneth E. Jansen 102659599516SKenneth E. Jansenc 102759599516SKenneth E. Jansenc.... add (A_3 tau A_3) to stiff [3,3] 102859599516SKenneth E. Jansenc 102959599516SKenneth E. Jansen 103059599516SKenneth E. Jansen stifft(:,3,3) = stifft(:,3,3) + Ataut(:)*A3t(:) 103159599516SKenneth E. Jansen 103259599516SKenneth E. Jansenc 103359599516SKenneth E. Jansenc.... add least squares time term to the LHS tangent mass matrix 103459599516SKenneth E. Jansenc 103559599516SKenneth E. Jansenc 103659599516SKenneth E. Jansenc.... loop through rows (nodes i) 103759599516SKenneth E. Jansenc 103859599516SKenneth E. Jansen do ia = 1, nshl 103959599516SKenneth E. Jansenc 104059599516SKenneth E. Jansenc.... first calculate (Atau) <-- (N_a,i A_i tau A_0) 104159599516SKenneth E. Jansenc ( use Atau to conserve space ) 104259599516SKenneth E. Jansenc 104359599516SKenneth E. Jansen 104459599516SKenneth E. Jansen Ataut(:) = 104559599516SKenneth E. Jansen & shg(:,ia,1) * A1tautA0(:) + 104659599516SKenneth E. Jansen & shg(:,ia,2) * A2tautA0(:) + 104759599516SKenneth E. Jansen & shg(:,ia,3) * A3tautA0(:) 104859599516SKenneth E. Jansen 104959599516SKenneth E. Jansenc 105059599516SKenneth E. Jansenc.... loop through column nodes, add (N_a,i A_i tau N_b) to EGmass 105159599516SKenneth E. Jansenc 105259599516SKenneth E. Jansen do jb = 1, nshl 105359599516SKenneth E. Jansen 105459599516SKenneth E. Jansen fact = shape(:,jb) * WdetJ 105559599516SKenneth E. Jansen 105659599516SKenneth E. Jansen EGmasst(:,ia,jb) = EGmasst(:,ia,jb) + fact * Ataut(:) 105759599516SKenneth E. Jansen 105859599516SKenneth E. Jansenc 105959599516SKenneth E. Jansenc.... end loop on column nodes 106059599516SKenneth E. Jansenc 106159599516SKenneth E. Jansen 106259599516SKenneth E. Jansen enddo 106359599516SKenneth E. Jansenc 106459599516SKenneth E. Jansenc.... end loop on row nodes 106559599516SKenneth E. Jansenc 106659599516SKenneth E. Jansen enddo 106759599516SKenneth E. Jansenc 106859599516SKenneth E. Jansenc.... end LHS computation 106959599516SKenneth E. Jansenc 107059599516SKenneth E. Jansen endif 107159599516SKenneth E. Jansen 107259599516SKenneth E. Jansen ttim(24) = ttim(24) + tmr() 107359599516SKenneth E. Jansenc 107459599516SKenneth E. Jansenc.... return 107559599516SKenneth E. Jansenc 107659599516SKenneth E. Jansen return 107759599516SKenneth E. Jansen end 107859599516SKenneth E. Jansen 1079