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