1*59599516SKenneth E. Jansen subroutine e3conv (g1yi, g2yi, g3yi, 2*59599516SKenneth E. Jansen & A1, A2, A3, 3*59599516SKenneth E. Jansen & rho, pres, T, 4*59599516SKenneth E. Jansen & ei, rk, u1, 5*59599516SKenneth E. Jansen & u2, u3, rLyi, 6*59599516SKenneth E. Jansen & ri, rmi, EGmass, 7*59599516SKenneth E. Jansen & shg, shape, WdetJ ) 8*59599516SKenneth E. Jansenc 9*59599516SKenneth E. Jansenc---------------------------------------------------------------------- 10*59599516SKenneth E. Jansenc 11*59599516SKenneth E. Jansenc This routine calculates the contribution of Galerkin part of the 12*59599516SKenneth E. Jansenc Convective term (Time and Euler fluxes) to both RHS and LHS. 13*59599516SKenneth E. Jansenc 14*59599516SKenneth E. Jansenc input: 15*59599516SKenneth E. Jansenc g1yi (npro,nflow) : grad-y in direction 1 16*59599516SKenneth E. Jansenc g2yi (npro,nflow) : grad-y in direction 2 17*59599516SKenneth E. Jansenc g3yi (npro,nflow) : grad-y in direction 3 18*59599516SKenneth E. Jansenc A1 (npro,nflow,nflow) : A-1 19*59599516SKenneth E. Jansenc A2 (npro,nflow,nflow) : A-2 20*59599516SKenneth E. Jansenc A3 (npro,nflow,nflow) : A-3 21*59599516SKenneth E. Jansenc rho (npro) : density 22*59599516SKenneth E. Jansenc pres (npro) : pressure 23*59599516SKenneth E. Jansenc T (npro) : temperature 24*59599516SKenneth E. Jansenc ei (npro) : internal energy 25*59599516SKenneth E. Jansenc rk (npro) : kinetic energy 26*59599516SKenneth E. Jansenc u1 (npro) : x1-velocity component 27*59599516SKenneth E. Jansenc u2 (npro) : x2-velocity component 28*59599516SKenneth E. Jansenc u3 (npro) : x3-velocity component 29*59599516SKenneth E. Jansenc shg (npro,nshl,nsd) : global grad's of shape functions 30*59599516SKenneth E. Jansenc shape (npro,nshl) : element shape functions 31*59599516SKenneth E. Jansenc WdetJ (npro) : weighted Jacobian determinant 32*59599516SKenneth E. Jansenc 33*59599516SKenneth E. Jansenc output: 34*59599516SKenneth E. Jansenc rLyi (npro,nflow) : least-squares residual vector 35*59599516SKenneth E. Jansenc ri (npro,nflow*(nsd+1)) : partial residual 36*59599516SKenneth E. Jansenc rmi (npro,nflow*(nsd+1)) : partial modified residual 37*59599516SKenneth E. Jansenc EGmass (npro,nedof,nedof) : partial LHS tangent matrix 38*59599516SKenneth E. Jansenc 39*59599516SKenneth E. Jansenc 40*59599516SKenneth E. Jansenc Zdenek Johan, Summer 1990. (Modified from e2conv.f) 41*59599516SKenneth E. Jansenc Zdenek Johan, Winter 1991. (Fortran 90) 42*59599516SKenneth E. Jansenc Kenneth Jansen, Winter 1997 Primitive Variables 43*59599516SKenneth E. Jansenc---------------------------------------------------------------------- 44*59599516SKenneth E. Jansenc 45*59599516SKenneth E. Jansen include "common.h" 46*59599516SKenneth E. Jansenc 47*59599516SKenneth E. Jansenc passed arrays 48*59599516SKenneth E. Jansenc 49*59599516SKenneth E. Jansen dimension g1yi(npro,nflow), g2yi(npro,nflow), 50*59599516SKenneth E. Jansen & g3yi(npro,nflow), 51*59599516SKenneth E. Jansen & A1(npro,nflow,nflow), 52*59599516SKenneth E. Jansen & A2(npro,nflow,nflow), A3(npro,nflow,nflow), 53*59599516SKenneth E. Jansen & rho(npro), pres(npro), 54*59599516SKenneth E. Jansen & T(npro), ei(npro), 55*59599516SKenneth E. Jansen & rk(npro), u1(npro), 56*59599516SKenneth E. Jansen & u2(npro), u3(npro), 57*59599516SKenneth E. Jansen & rLyi(npro,nflow), ri(npro,nflow*(nsd+1)), 58*59599516SKenneth E. Jansen & rmi(npro,nflow*(nsd+1)), EGmass(npro,nedof,nedof), 59*59599516SKenneth E. Jansen & shg(npro,nshl,nsd), shape(npro,nshl), 60*59599516SKenneth E. Jansen & WdetJ(npro) 61*59599516SKenneth E. Jansenc 62*59599516SKenneth E. Jansenc local arrays 63*59599516SKenneth E. Jansenc 64*59599516SKenneth E. Jansen dimension AiNbi(npro,nflow,nflow), fact1(npro), 65*59599516SKenneth E. Jansen & fact2(npro), fact3(npro) 66*59599516SKenneth E. Jansen 67*59599516SKenneth E. Jansen ttim(22) = ttim(22) - secs(0.0) 68*59599516SKenneth E. Jansen 69*59599516SKenneth E. Jansenc 70*59599516SKenneth E. Jansenc.... ----------------------> RHS, Euler Flux <---------------------- 71*59599516SKenneth E. Jansenc 72*59599516SKenneth E. Jansen if ((ires .eq. 1) .or. (ires .eq. 3)) then 73*59599516SKenneth E. Jansenc 74*59599516SKenneth E. Jansenc.... calculate integrated by part contribution of Euler flux (Galerkin) 75*59599516SKenneth E. Jansenc 76*59599516SKenneth E. Jansen ri(:, 1) = (- u1) * rho 77*59599516SKenneth E. Jansen ri(:, 2) = (- u1) * rho * u1 - pres 78*59599516SKenneth E. Jansen ri(:, 3) = (- u1) * rho * u2 79*59599516SKenneth E. Jansen ri(:, 4) = (- u1) * rho * u3 80*59599516SKenneth E. Jansen ri(:, 5) = (- u1) * rho * (ei + rk) - u1 * pres 81*59599516SKenneth E. Jansenc 82*59599516SKenneth E. Jansen ri(:, 6) = (- u2) * rho 83*59599516SKenneth E. Jansen ri(:, 7) = (- u2) * rho * u1 84*59599516SKenneth E. Jansen ri(:, 8) = (- u2) * rho * u2 - pres 85*59599516SKenneth E. Jansen ri(:, 9) = (- u2) * rho * u3 86*59599516SKenneth E. Jansen ri(:,10) = (- u2) * rho * (ei + rk) - u2 * pres 87*59599516SKenneth E. Jansenc 88*59599516SKenneth E. Jansen ri(:,11) = (- u3) * rho 89*59599516SKenneth E. Jansen ri(:,12) = (- u3) * rho * u1 90*59599516SKenneth E. Jansen ri(:,13) = (- u3) * rho * u2 91*59599516SKenneth E. Jansen ri(:,14) = (- u3) * rho * u3 - pres 92*59599516SKenneth E. Jansen ri(:,15) = (- u3) * rho * (ei + rk) - u3 * pres 93*59599516SKenneth E. Jansenc 94*59599516SKenneth E. Jansen flops = flops + 28*npro 95*59599516SKenneth E. Jansenc 96*59599516SKenneth E. Jansen endif 97*59599516SKenneth E. Jansenc 98*59599516SKenneth E. Jansenc.... calculate ( A_i Y,i ) --> rLyi Commented out zeros of A matrices 99*59599516SKenneth E. Jansenc 100*59599516SKenneth E. Jansen rLyi(:,1) = 101*59599516SKenneth E. Jansen & A1(:,1,1) * g1yi(:,1) 102*59599516SKenneth E. Jansen & + A1(:,1,2) * g1yi(:,2) 103*59599516SKenneth E. Jansenc & + A1(:,1,3) * g1yi(:,3) 104*59599516SKenneth E. Jansenc & + A1(:,1,4) * g1yi(:,4) 105*59599516SKenneth E. Jansen & + A1(:,1,5) * g1yi(:,5) 106*59599516SKenneth E. Jansen & + A2(:,1,1) * g2yi(:,1) 107*59599516SKenneth E. Jansenc & + A2(:,1,2) * g2yi(:,2) 108*59599516SKenneth E. Jansen & + A2(:,1,3) * g2yi(:,3) 109*59599516SKenneth E. Jansenc & + A2(:,1,4) * g2yi(:,4) 110*59599516SKenneth E. Jansen & + A2(:,1,5) * g2yi(:,5) 111*59599516SKenneth E. Jansen & + A3(:,1,1) * g3yi(:,1) 112*59599516SKenneth E. Jansenc & + A3(:,1,2) * g3yi(:,2) 113*59599516SKenneth E. Jansenc & + A3(:,1,3) * g3yi(:,3) 114*59599516SKenneth E. Jansen & + A3(:,1,4) * g3yi(:,4) 115*59599516SKenneth E. Jansen & + A3(:,1,5) * g3yi(:,5) 116*59599516SKenneth E. Jansen rLyi(:,2) = 117*59599516SKenneth E. Jansen & A1(:,2,1) * g1yi(:,1) 118*59599516SKenneth E. Jansen & + A1(:,2,2) * g1yi(:,2) 119*59599516SKenneth E. Jansenc & + A1(:,2,3) * g1yi(:,3) 120*59599516SKenneth E. Jansenc & + A1(:,2,4) * g1yi(:,4) 121*59599516SKenneth E. Jansen & + A1(:,2,5) * g1yi(:,5) 122*59599516SKenneth E. Jansen & + A2(:,2,1) * g2yi(:,1) 123*59599516SKenneth E. Jansen & + A2(:,2,2) * g2yi(:,2) 124*59599516SKenneth E. Jansen & + A2(:,2,3) * g2yi(:,3) 125*59599516SKenneth E. Jansenc & + A2(:,2,4) * g2yi(:,4) 126*59599516SKenneth E. Jansen & + A2(:,2,5) * g2yi(:,5) 127*59599516SKenneth E. Jansen & + A3(:,2,1) * g3yi(:,1) 128*59599516SKenneth E. Jansen & + A3(:,2,2) * g3yi(:,2) 129*59599516SKenneth E. Jansenc & + A3(:,2,3) * g3yi(:,3) 130*59599516SKenneth E. Jansen & + A3(:,2,4) * g3yi(:,4) 131*59599516SKenneth E. Jansen & + A3(:,2,5) * g3yi(:,5) 132*59599516SKenneth E. Jansen rLyi(:,3) = 133*59599516SKenneth E. Jansen & A1(:,3,1) * g1yi(:,1) 134*59599516SKenneth E. Jansen & + A1(:,3,2) * g1yi(:,2) 135*59599516SKenneth E. Jansen & + A1(:,3,3) * g1yi(:,3) 136*59599516SKenneth E. Jansenc & + A1(:,3,4) * g1yi(:,4) 137*59599516SKenneth E. Jansen & + A1(:,3,5) * g1yi(:,5) 138*59599516SKenneth E. Jansen & + A2(:,3,1) * g2yi(:,1) 139*59599516SKenneth E. Jansenc & + A2(:,3,2) * g2yi(:,2) 140*59599516SKenneth E. Jansen & + A2(:,3,3) * g2yi(:,3) 141*59599516SKenneth E. Jansenc & + A2(:,3,4) * g2yi(:,4) 142*59599516SKenneth E. Jansen & + A2(:,3,5) * g2yi(:,5) 143*59599516SKenneth E. Jansen & + A3(:,3,1) * g3yi(:,1) 144*59599516SKenneth E. Jansenc & + A3(:,3,2) * g3yi(:,2) 145*59599516SKenneth E. Jansen & + A3(:,3,3) * g3yi(:,3) 146*59599516SKenneth E. Jansen & + A3(:,3,4) * g3yi(:,4) 147*59599516SKenneth E. Jansen & + A3(:,3,5) * g3yi(:,5) 148*59599516SKenneth E. Jansen rLyi(:,4) = 149*59599516SKenneth E. Jansen & A1(:,4,1) * g1yi(:,1) 150*59599516SKenneth E. Jansen & + A1(:,4,2) * g1yi(:,2) 151*59599516SKenneth E. Jansenc & + A1(:,4,3) * g1yi(:,3) 152*59599516SKenneth E. Jansen & + A1(:,4,4) * g1yi(:,4) 153*59599516SKenneth E. Jansen & + A1(:,4,5) * g1yi(:,5) 154*59599516SKenneth E. Jansen & + A2(:,4,1) * g2yi(:,1) 155*59599516SKenneth E. Jansenc & + A2(:,4,2) * g2yi(:,2) 156*59599516SKenneth E. Jansen & + A2(:,4,3) * g2yi(:,3) 157*59599516SKenneth E. Jansen & + A2(:,4,4) * g2yi(:,4) 158*59599516SKenneth E. Jansen & + A2(:,4,5) * g2yi(:,5) 159*59599516SKenneth E. Jansen & + A3(:,4,1) * g3yi(:,1) 160*59599516SKenneth E. Jansenc & + A3(:,4,2) * g3yi(:,2) 161*59599516SKenneth E. Jansenc & + A3(:,4,3) * g3yi(:,3) 162*59599516SKenneth E. Jansen & + A3(:,4,4) * g3yi(:,4) 163*59599516SKenneth E. Jansen & + A3(:,4,5) * g3yi(:,5) 164*59599516SKenneth E. Jansen rLyi(:,5) = 165*59599516SKenneth E. Jansen & A1(:,5,1) * g1yi(:,1) 166*59599516SKenneth E. Jansen & + A1(:,5,2) * g1yi(:,2) 167*59599516SKenneth E. Jansen & + A1(:,5,3) * g1yi(:,3) 168*59599516SKenneth E. Jansen & + A1(:,5,4) * g1yi(:,4) 169*59599516SKenneth E. Jansen & + A1(:,5,5) * g1yi(:,5) 170*59599516SKenneth E. Jansen & + A2(:,5,1) * g2yi(:,1) 171*59599516SKenneth E. Jansen & + A2(:,5,2) * g2yi(:,2) 172*59599516SKenneth E. Jansen & + A2(:,5,3) * g2yi(:,3) 173*59599516SKenneth E. Jansen & + A2(:,5,4) * g2yi(:,4) 174*59599516SKenneth E. Jansen & + A2(:,5,5) * g2yi(:,5) 175*59599516SKenneth E. Jansen & + A3(:,5,1) * g3yi(:,1) 176*59599516SKenneth E. Jansen & + A3(:,5,2) * g3yi(:,2) 177*59599516SKenneth E. Jansen & + A3(:,5,3) * g3yi(:,3) 178*59599516SKenneth E. Jansen & + A3(:,5,4) * g3yi(:,4) 179*59599516SKenneth E. Jansen & + A3(:,5,5) * g3yi(:,5) 180*59599516SKenneth E. Jansenc 181*59599516SKenneth E. Jansenc.... add contribution to rmi 182*59599516SKenneth E. Jansenc 183*59599516SKenneth E. Jansen if ((ires .eq. 2) .or. (ires .eq. 3)) 184*59599516SKenneth E. Jansen & rmi(:,16:20) = rLyi ! modified residual uses non i.b.p form of conv. 185*59599516SKenneth E. Jansenc 186*59599516SKenneth E. Jansenc.... ----------------------> LHS <----------------------- 187*59599516SKenneth E. Jansenc 188*59599516SKenneth E. Jansen if (lhs .eq. 1) then 189*59599516SKenneth E. Jansenc 190*59599516SKenneth E. Jansenc.... loop through the columns 191*59599516SKenneth E. Jansenc 192*59599516SKenneth E. Jansen do j = 1, nshl 193*59599516SKenneth E. Jansen j0 = nflow * (j - 1) 194*59599516SKenneth E. Jansenc 195*59599516SKenneth E. Jansenc.... compute some useful factors 196*59599516SKenneth E. Jansenc 197*59599516SKenneth E. Jansen fact1 = WdetJ * shg(:,j,1) 198*59599516SKenneth E. Jansen fact2 = WdetJ * shg(:,j,2) 199*59599516SKenneth E. Jansen fact3 = WdetJ * shg(:,j,3) 200*59599516SKenneth E. Jansenc 201*59599516SKenneth E. Jansenc.... first compute (A_i N_b,i) 202*59599516SKenneth E. Jansenc 203*59599516SKenneth E. Jansen AiNbi(:,1,1) = 204*59599516SKenneth E. Jansen & fact1 * A1(:,1,1) 205*59599516SKenneth E. Jansen & + fact2 * A2(:,1,1) 206*59599516SKenneth E. Jansen & + fact3 * A3(:,1,1) 207*59599516SKenneth E. Jansen AiNbi(:,1,2) = 208*59599516SKenneth E. Jansen & fact1 * A1(:,1,2) 209*59599516SKenneth E. Jansen & + fact2 * A2(:,1,2) 210*59599516SKenneth E. Jansen & + fact3 * A3(:,1,2) 211*59599516SKenneth E. Jansen AiNbi(:,1,3) = 212*59599516SKenneth E. Jansen & fact1 * A1(:,1,3) 213*59599516SKenneth E. Jansen & + fact2 * A2(:,1,3) 214*59599516SKenneth E. Jansen & + fact3 * A3(:,1,3) 215*59599516SKenneth E. Jansen AiNbi(:,1,4) = 216*59599516SKenneth E. Jansen & fact1 * A1(:,1,4) 217*59599516SKenneth E. Jansen & + fact2 * A2(:,1,4) 218*59599516SKenneth E. Jansen & + fact3 * A3(:,1,4) 219*59599516SKenneth E. Jansen AiNbi(:,1,5) = 220*59599516SKenneth E. Jansen & fact1 * A1(:,1,5) 221*59599516SKenneth E. Jansen & + fact2 * A2(:,1,5) 222*59599516SKenneth E. Jansen & + fact3 * A3(:,1,5) 223*59599516SKenneth E. Jansenc 224*59599516SKenneth E. Jansen AiNbi(:,2,1) = 225*59599516SKenneth E. Jansen & fact1 * A1(:,2,1) 226*59599516SKenneth E. Jansen & + fact2 * A2(:,2,1) 227*59599516SKenneth E. Jansen & + fact3 * A3(:,2,1) 228*59599516SKenneth E. Jansen AiNbi(:,2,2) = 229*59599516SKenneth E. Jansen & fact1 * A1(:,2,2) 230*59599516SKenneth E. Jansen & + fact2 * A2(:,2,2) 231*59599516SKenneth E. Jansen & + fact3 * A3(:,2,2) 232*59599516SKenneth E. Jansen AiNbi(:,2,3) = 233*59599516SKenneth E. Jansen & fact1 * A1(:,2,3) 234*59599516SKenneth E. Jansen & + fact2 * A2(:,2,3) 235*59599516SKenneth E. Jansen & + fact3 * A3(:,2,3) 236*59599516SKenneth E. Jansen AiNbi(:,2,4) = 237*59599516SKenneth E. Jansen & fact1 * A1(:,2,4) 238*59599516SKenneth E. Jansen & + fact2 * A2(:,2,4) 239*59599516SKenneth E. Jansen & + fact3 * A3(:,2,4) 240*59599516SKenneth E. Jansen AiNbi(:,2,5) = 241*59599516SKenneth E. Jansen & fact1 * A1(:,2,5) 242*59599516SKenneth E. Jansen & + fact2 * A2(:,2,5) 243*59599516SKenneth E. Jansen & + fact3 * A3(:,2,5) 244*59599516SKenneth E. Jansenc 245*59599516SKenneth E. Jansen AiNbi(:,3,1) = 246*59599516SKenneth E. Jansen & fact1 * A1(:,3,1) 247*59599516SKenneth E. Jansen & + fact2 * A2(:,3,1) 248*59599516SKenneth E. Jansen & + fact3 * A3(:,3,1) 249*59599516SKenneth E. Jansen AiNbi(:,3,2) = 250*59599516SKenneth E. Jansen & fact1 * A1(:,3,2) 251*59599516SKenneth E. Jansen & + fact2 * A2(:,3,2) 252*59599516SKenneth E. Jansen & + fact3 * A3(:,3,2) 253*59599516SKenneth E. Jansen AiNbi(:,3,3) = 254*59599516SKenneth E. Jansen & fact1 * A1(:,3,3) 255*59599516SKenneth E. Jansen & + fact2 * A2(:,3,3) 256*59599516SKenneth E. Jansen & + fact3 * A3(:,3,3) 257*59599516SKenneth E. Jansen AiNbi(:,3,4) = 258*59599516SKenneth E. Jansen & fact1 * A1(:,3,4) 259*59599516SKenneth E. Jansen & + fact2 * A2(:,3,4) 260*59599516SKenneth E. Jansen & + fact3 * A3(:,3,4) 261*59599516SKenneth E. Jansen AiNbi(:,3,5) = 262*59599516SKenneth E. Jansen & fact1 * A1(:,3,5) 263*59599516SKenneth E. Jansen & + fact2 * A2(:,3,5) 264*59599516SKenneth E. Jansen & + fact3 * A3(:,3,5) 265*59599516SKenneth E. Jansenc 266*59599516SKenneth E. Jansen AiNbi(:,4,1) = 267*59599516SKenneth E. Jansen & fact1 * A1(:,4,1) 268*59599516SKenneth E. Jansen & + fact2 * A2(:,4,1) 269*59599516SKenneth E. Jansen & + fact3 * A3(:,4,1) 270*59599516SKenneth E. Jansen AiNbi(:,4,2) = 271*59599516SKenneth E. Jansen & fact1 * A1(:,4,2) 272*59599516SKenneth E. Jansen & + fact2 * A2(:,4,2) 273*59599516SKenneth E. Jansen & + fact3 * A3(:,4,2) 274*59599516SKenneth E. Jansen AiNbi(:,4,3) = 275*59599516SKenneth E. Jansen & fact1 * A1(:,4,3) 276*59599516SKenneth E. Jansen & + fact2 * A2(:,4,3) 277*59599516SKenneth E. Jansen & + fact3 * A3(:,4,3) 278*59599516SKenneth E. Jansen AiNbi(:,4,4) = 279*59599516SKenneth E. Jansen & fact1 * A1(:,4,4) 280*59599516SKenneth E. Jansen & + fact2 * A2(:,4,4) 281*59599516SKenneth E. Jansen & + fact3 * A3(:,4,4) 282*59599516SKenneth E. Jansen AiNbi(:,4,5) = 283*59599516SKenneth E. Jansen & fact1 * A1(:,4,5) 284*59599516SKenneth E. Jansen & + fact2 * A2(:,4,5) 285*59599516SKenneth E. Jansen & + fact3 * A3(:,4,5) 286*59599516SKenneth E. Jansenc 287*59599516SKenneth E. Jansen AiNbi(:,5,1) = 288*59599516SKenneth E. Jansen & fact1 * A1(:,5,1) 289*59599516SKenneth E. Jansen & + fact2 * A2(:,5,1) 290*59599516SKenneth E. Jansen & + fact3 * A3(:,5,1) 291*59599516SKenneth E. Jansen AiNbi(:,5,2) = 292*59599516SKenneth E. Jansen & fact1 * A1(:,5,2) 293*59599516SKenneth E. Jansen & + fact2 * A2(:,5,2) 294*59599516SKenneth E. Jansen & + fact3 * A3(:,5,2) 295*59599516SKenneth E. Jansen AiNbi(:,5,3) = 296*59599516SKenneth E. Jansen & fact1 * A1(:,5,3) 297*59599516SKenneth E. Jansen & + fact2 * A2(:,5,3) 298*59599516SKenneth E. Jansen & + fact3 * A3(:,5,3) 299*59599516SKenneth E. Jansen AiNbi(:,5,4) = 300*59599516SKenneth E. Jansen & fact1 * A1(:,5,4) 301*59599516SKenneth E. Jansen & + fact2 * A2(:,5,4) 302*59599516SKenneth E. Jansen & + fact3 * A3(:,5,4) 303*59599516SKenneth E. Jansen AiNbi(:,5,5) = 304*59599516SKenneth E. Jansen & fact1 * A1(:,5,5) 305*59599516SKenneth E. Jansen & + fact2 * A2(:,5,5) 306*59599516SKenneth E. Jansen & + fact3 * A3(:,5,5) 307*59599516SKenneth E. Jansenc 308*59599516SKenneth E. Jansenc.... now loop through the row nodes and add (N_a A_i N_b,i) to 309*59599516SKenneth E. Jansenc the tangent matrix. 310*59599516SKenneth E. Jansenc 311*59599516SKenneth E. Jansen do i = 1, nshl 312*59599516SKenneth E. Jansen i0 = nflow * (i - 1) 313*59599516SKenneth E. Jansenc 314*59599516SKenneth E. Jansenc.... loop through dof's 315*59599516SKenneth E. Jansenc 316*59599516SKenneth E. Jansen do jdof = 1, nflow 317*59599516SKenneth E. Jansen jl = j0 + jdof 318*59599516SKenneth E. Jansen 319*59599516SKenneth E. Jansen EGmass(:,i0+1,jl) = EGmass(:,i0+1,jl) + 320*59599516SKenneth E. Jansen & shape(:,i) * AiNbi(:,1,jdof) 321*59599516SKenneth E. Jansen 322*59599516SKenneth E. Jansen EGmass(:,i0+2,jl) = EGmass(:,i0+2,jl) + 323*59599516SKenneth E. Jansen & shape(:,i) * AiNbi(:,2,jdof) 324*59599516SKenneth E. Jansen 325*59599516SKenneth E. Jansen EGmass(:,i0+3,jl) = EGmass(:,i0+3,jl) + 326*59599516SKenneth E. Jansen & shape(:,i) * AiNbi(:,3,jdof) 327*59599516SKenneth E. Jansen 328*59599516SKenneth E. Jansen EGmass(:,i0+4,jl) = EGmass(:,i0+4,jl) + 329*59599516SKenneth E. Jansen & shape(:,i) * AiNbi(:,4,jdof) 330*59599516SKenneth E. Jansen 331*59599516SKenneth E. Jansen EGmass(:,i0+5,jl) = EGmass(:,i0+5,jl) + 332*59599516SKenneth E. Jansen & shape(:,i) * AiNbi(:,5,jdof) 333*59599516SKenneth E. Jansen enddo 334*59599516SKenneth E. Jansenc 335*59599516SKenneth E. Jansenc.... end loop on rows 336*59599516SKenneth E. Jansenc 337*59599516SKenneth E. Jansen enddo 338*59599516SKenneth E. Jansenc 339*59599516SKenneth E. Jansenc.... end loop on columns 340*59599516SKenneth E. Jansenc 341*59599516SKenneth E. Jansen enddo 342*59599516SKenneth E. Jansenc 343*59599516SKenneth E. Jansenc.... end of LHS tangent matrix computation 344*59599516SKenneth E. Jansenc 345*59599516SKenneth E. Jansen endif 346*59599516SKenneth E. Jansen 347*59599516SKenneth E. Jansen ttim(22) = ttim(22) + secs(0.0) 348*59599516SKenneth E. Jansenc 349*59599516SKenneth E. Jansenc.... return 350*59599516SKenneth E. Jansenc 351*59599516SKenneth E. Jansen return 352*59599516SKenneth E. Jansen end 353*59599516SKenneth E. Jansenc 354*59599516SKenneth E. Jansenc 355*59599516SKenneth E. Jansenc 356*59599516SKenneth E. Jansen subroutine e3convSclr (g1yti, g2yti, g3yti, 357*59599516SKenneth E. Jansen & A1t, A2t, A3t, 358*59599516SKenneth E. Jansen & rho, u1, Sclr, 359*59599516SKenneth E. Jansen & u2, u3, rLyti, 360*59599516SKenneth E. Jansen & rti, rmti, EGmasst, 361*59599516SKenneth E. Jansen & shg, shape, WdetJ) 362*59599516SKenneth E. Jansenc 363*59599516SKenneth E. Jansenc---------------------------------------------------------------------- 364*59599516SKenneth E. Jansenc 365*59599516SKenneth E. Jansenc This routine calculates the contribution of Galerkin part of the 366*59599516SKenneth E. Jansenc Convective term (Time and Euler fluxes) to both RHS and LHS. 367*59599516SKenneth E. Jansenc 368*59599516SKenneth E. Jansenc input: 369*59599516SKenneth E. Jansenc Sclr (npro) : Scalar variable 370*59599516SKenneth E. Jansenc g1yti (npro) : grad-y in direction 1 371*59599516SKenneth E. Jansenc g2yti (npro) : grad-y in direction 2 372*59599516SKenneth E. Jansenc g3yti (npro) : grad-y in direction 3 373*59599516SKenneth E. Jansenc A1t (npro) : A-1 374*59599516SKenneth E. Jansenc A2t (npro) : A-2 375*59599516SKenneth E. Jansenc A3t (npro) : A-3 376*59599516SKenneth E. Jansenc rho (npro) : density 377*59599516SKenneth E. Jansenc u1 (npro) : x1-velocity component 378*59599516SKenneth E. Jansenc u2 (npro) : x2-velocity component 379*59599516SKenneth E. Jansenc u3 (npro) : x3-velocity component 380*59599516SKenneth E. Jansenc shg (npro,nshl,nsd) : global grad's of shape functions 381*59599516SKenneth E. Jansenc shape (npro,nshl) : element shape functions 382*59599516SKenneth E. Jansenc WdetJ (npro) : weighted Jacobian determinant 383*59599516SKenneth E. Jansenc 384*59599516SKenneth E. Jansenc output: 385*59599516SKenneth E. Jansenc rLyti (npro) : least-squares residual vector 386*59599516SKenneth E. Jansenc rti (npro,nsd+1) : partial residual 387*59599516SKenneth E. Jansenc rmti (npro,nsd+1) : partial modified residual 388*59599516SKenneth E. Jansenc EGmasst (npro,nshape,nshape): partial LHS tangent matrix 389*59599516SKenneth E. Jansenc 390*59599516SKenneth E. Jansenc 391*59599516SKenneth E. Jansenc Zdenek Johan, Summer 1990. (Modified from e2conv.f) 392*59599516SKenneth E. Jansenc Zdenek Johan, Winter 1991. (Fortran 90) 393*59599516SKenneth E. Jansenc Kenneth Jansen, Winter 1997 Primitive Variables 394*59599516SKenneth E. Jansenc---------------------------------------------------------------------- 395*59599516SKenneth E. Jansenc 396*59599516SKenneth E. Jansen include "common.h" 397*59599516SKenneth E. Jansenc 398*59599516SKenneth E. Jansenc passed arrays 399*59599516SKenneth E. Jansenc 400*59599516SKenneth E. Jansen dimension g1yti(npro), g2yti(npro), 401*59599516SKenneth E. Jansen & g3yti(npro), Sclr(npro), 402*59599516SKenneth E. Jansen & A1t(npro), 403*59599516SKenneth E. Jansen & A2t(npro), A3t(npro), 404*59599516SKenneth E. Jansen & rho(npro), u1(npro), 405*59599516SKenneth E. Jansen & u2(npro), u3(npro), 406*59599516SKenneth E. Jansen & rLyti(npro), rti(npro,nsd+1), 407*59599516SKenneth E. Jansen & rmti(npro,nsd+1), EGmasst(npro,nshape,nshape), 408*59599516SKenneth E. Jansen & shg(npro,nshl,nsd), shape(npro,nshl), 409*59599516SKenneth E. Jansen & WdetJ(npro) 410*59599516SKenneth E. Jansenc 411*59599516SKenneth E. Jansenc local arrays 412*59599516SKenneth E. Jansenc 413*59599516SKenneth E. Jansen dimension AitNbi(npro) 414*59599516SKenneth E. Jansen 415*59599516SKenneth E. Jansen ttim(22) = ttim(22) - tmr(0.0) 416*59599516SKenneth E. Jansenc 417*59599516SKenneth E. Jansenc.... ----------------------> RHS, Euler Flux <---------------------- 418*59599516SKenneth E. Jansenc 419*59599516SKenneth E. Jansen if ((ires .eq. 1) .or. (ires .eq. 3)) then 420*59599516SKenneth E. Jansenc 421*59599516SKenneth E. Jansenc.... calculate integrated by part contribution of Euler flux (Galerkin) 422*59599516SKenneth E. Jansenc 423*59599516SKenneth E. Jansen if (iconvsclr.eq.2) then ! convective form 424*59599516SKenneth E. Jansenc 425*59599516SKenneth E. Jansen rti(:, 4) = rti(:,4) + ( u1) * g1yti(:) 426*59599516SKenneth E. Jansen & + ( u2) * g2yti(:) 427*59599516SKenneth E. Jansen & + ( u3) * g3yti(:) 428*59599516SKenneth E. Jansenc 429*59599516SKenneth E. Jansen else ! conservative form 430*59599516SKenneth E. Jansenc 431*59599516SKenneth E. Jansen rti(:, 1) = rti(:,1) + (- u1) * rho * Sclr 432*59599516SKenneth E. Jansen rti(:, 2) = rti(:,2) + (- u2) * rho * Sclr 433*59599516SKenneth E. Jansen rti(:, 3) = rti(:,3) + (- u3) * rho * Sclr 434*59599516SKenneth E. Jansenc 435*59599516SKenneth E. Jansen endif 436*59599516SKenneth E. Jansen 437*59599516SKenneth E. Jansen flops = flops + 28*npro 438*59599516SKenneth E. Jansen 439*59599516SKenneth E. Jansen endif 440*59599516SKenneth E. Jansenc 441*59599516SKenneth E. Jansenc.... calculate ( A_i Y,i ) --> rLyi 442*59599516SKenneth E. Jansenc 443*59599516SKenneth E. Jansen rLyti(:) = rLyti(:) 444*59599516SKenneth E. Jansen & + A1t(:) * g1yti(:) 445*59599516SKenneth E. Jansen & + A2t(:) * g2yti(:) 446*59599516SKenneth E. Jansen & + A3t(:) * g3yti(:) 447*59599516SKenneth E. Jansen 448*59599516SKenneth E. Jansenc 449*59599516SKenneth E. Jansenc.... add contribution to rmi 450*59599516SKenneth E. Jansenc 451*59599516SKenneth E. Jansenc if ((ires .eq. 2) .or. (ires .eq. 3)) 452*59599516SKenneth E. Jansenc & rmi(:,16:20) = rLyi ! modified residual uses non i.b.p form of conv 453*59599516SKenneth E. Jansenc 454*59599516SKenneth E. Jansenc.... ----------------------> LHS <----------------------- 455*59599516SKenneth E. Jansenc 456*59599516SKenneth E. Jansen if (lhs .eq. 1) then 457*59599516SKenneth E. Jansenc 458*59599516SKenneth E. Jansenc.... loop through the columns 459*59599516SKenneth E. Jansenc 460*59599516SKenneth E. Jansen do j = 1, nshl 461*59599516SKenneth E. Jansen 462*59599516SKenneth E. Jansenc 463*59599516SKenneth E. Jansenc.... first compute (A_i N_b,i) 464*59599516SKenneth E. Jansenc 465*59599516SKenneth E. Jansen AitNbi(:) = 466*59599516SKenneth E. Jansen & WdetJ * shg(:,j,1) * A1t(:) 467*59599516SKenneth E. Jansen & + WdetJ * shg(:,j,2) * A2t(:) 468*59599516SKenneth E. Jansen & + WdetJ * shg(:,j,3) * A3t(:) 469*59599516SKenneth E. Jansen 470*59599516SKenneth E. Jansenc 471*59599516SKenneth E. Jansenc.... now loop through the rows and add (N_a A_i N_b,i) to 472*59599516SKenneth E. Jansenc the tangent matrix. 473*59599516SKenneth E. Jansenc 474*59599516SKenneth E. Jansen do i = 1, nshl 475*59599516SKenneth E. Jansen 476*59599516SKenneth E. Jansen EGmasst(:,i,j) = EGmasst(:,i,j) + shape(:,i) * AitNbi(:) 477*59599516SKenneth E. Jansen 478*59599516SKenneth E. Jansen 479*59599516SKenneth E. Jansenc 480*59599516SKenneth E. Jansenc.... end loop on rows 481*59599516SKenneth E. Jansenc 482*59599516SKenneth E. Jansen enddo 483*59599516SKenneth E. Jansenc 484*59599516SKenneth E. Jansenc.... end loop on columns 485*59599516SKenneth E. Jansenc 486*59599516SKenneth E. Jansen enddo 487*59599516SKenneth E. Jansenc 488*59599516SKenneth E. Jansenc.... end of LHS tangent matrix computation 489*59599516SKenneth E. Jansenc 490*59599516SKenneth E. Jansen endif 491*59599516SKenneth E. Jansen 492*59599516SKenneth E. Jansen ttim(22) = ttim(22) + tmr() 493*59599516SKenneth E. Jansenc 494*59599516SKenneth E. Jansenc.... return 495*59599516SKenneth E. Jansenc 496*59599516SKenneth E. Jansen return 497*59599516SKenneth E. Jansen end 498*59599516SKenneth E. Jansen 499