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 ) 8513954efSKenneth E. Jansen! 9513954efSKenneth E. Jansen!---------------------------------------------------------------------- 10513954efSKenneth E. Jansen! 11513954efSKenneth E. Jansen! This routine calculates the contribution of Galerkin part of the 12513954efSKenneth E. Jansen! Convective term (Time and Euler fluxes) to both RHS and LHS. 13513954efSKenneth E. Jansen! 14513954efSKenneth E. Jansen! input: 15513954efSKenneth E. Jansen! g1yi (npro,nflow) : grad-y in direction 1 16513954efSKenneth E. Jansen! g2yi (npro,nflow) : grad-y in direction 2 17513954efSKenneth E. Jansen! g3yi (npro,nflow) : grad-y in direction 3 18513954efSKenneth E. Jansen! A1 (npro,nflow,nflow) : A-1 19513954efSKenneth E. Jansen! A2 (npro,nflow,nflow) : A-2 20513954efSKenneth E. Jansen! A3 (npro,nflow,nflow) : A-3 21513954efSKenneth E. Jansen! rho (npro) : density 22513954efSKenneth E. Jansen! pres (npro) : pressure 23513954efSKenneth E. Jansen! T (npro) : temperature 24513954efSKenneth E. Jansen! ei (npro) : internal energy 25513954efSKenneth E. Jansen! rk (npro) : kinetic energy 26513954efSKenneth E. Jansen! u1 (npro) : x1-velocity component 27513954efSKenneth E. Jansen! u2 (npro) : x2-velocity component 28513954efSKenneth E. Jansen! u3 (npro) : x3-velocity component 29513954efSKenneth E. Jansen! shg (npro,nshl,nsd) : global grad's of shape functions 30513954efSKenneth E. Jansen! shape (npro,nshl) : element shape functions 31513954efSKenneth E. Jansen! WdetJ (npro) : weighted Jacobian determinant 32513954efSKenneth E. Jansen! 33513954efSKenneth E. Jansen! output: 34513954efSKenneth E. Jansen! rLyi (npro,nflow) : least-squares residual vector 35513954efSKenneth E. Jansen! ri (npro,nflow*(nsd+1)) : partial residual 36513954efSKenneth E. Jansen! rmi (npro,nflow*(nsd+1)) : partial modified residual 37513954efSKenneth E. Jansen! EGmass (npro,nedof,nedof) : partial LHS tangent matrix 38513954efSKenneth E. Jansen! 39513954efSKenneth E. Jansen! 40513954efSKenneth E. Jansen! Zdenek Johan, Summer 1990. (Modified from e2conv.f) 41513954efSKenneth E. Jansen! Zdenek Johan, Winter 1991. (Fortran 90) 42513954efSKenneth E. Jansen! Kenneth Jansen, Winter 1997 Primitive Variables 43513954efSKenneth E. Jansen!---------------------------------------------------------------------- 44513954efSKenneth E. Jansen! 4559599516SKenneth E. Jansen include "common.h" 46513954efSKenneth E. Jansen! 47513954efSKenneth E. Jansen! passed arrays 48513954efSKenneth 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) 61513954efSKenneth E. Jansen! 62513954efSKenneth E. Jansen! local arrays 63513954efSKenneth 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 69513954efSKenneth E. Jansen! 70513954efSKenneth E. Jansen!.... ----------------------> RHS, Euler Flux <---------------------- 71513954efSKenneth E. Jansen! 7259599516SKenneth E. Jansen if ((ires .eq. 1) .or. (ires .eq. 3)) then 73513954efSKenneth E. Jansen! 74513954efSKenneth E. Jansen!.... calculate integrated by part contribution of Euler flux (Galerkin) 75513954efSKenneth 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 81513954efSKenneth 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 87513954efSKenneth 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 93513954efSKenneth E. Jansen! 94*f4d0b58bSKenneth E. Jansen! flops = flops + 28*npro 95513954efSKenneth E. Jansen! 9659599516SKenneth E. Jansen endif 97513954efSKenneth E. Jansen! 98513954efSKenneth E. Jansen!.... calculate ( A_i Y,i ) --> rLyi Commented out zeros of A matrices 99513954efSKenneth E. Jansen! 10059599516SKenneth E. Jansen rLyi(:,1) = 10159599516SKenneth E. Jansen & A1(:,1,1) * g1yi(:,1) 10259599516SKenneth E. Jansen & + A1(:,1,2) * g1yi(:,2) 103513954efSKenneth E. Jansen! & + A1(:,1,3) * g1yi(:,3) 104513954efSKenneth E. Jansen! & + A1(:,1,4) * g1yi(:,4) 10559599516SKenneth E. Jansen & + A1(:,1,5) * g1yi(:,5) 10659599516SKenneth E. Jansen & + A2(:,1,1) * g2yi(:,1) 107513954efSKenneth E. Jansen! & + A2(:,1,2) * g2yi(:,2) 10859599516SKenneth E. Jansen & + A2(:,1,3) * g2yi(:,3) 109513954efSKenneth E. Jansen! & + A2(:,1,4) * g2yi(:,4) 11059599516SKenneth E. Jansen & + A2(:,1,5) * g2yi(:,5) 11159599516SKenneth E. Jansen & + A3(:,1,1) * g3yi(:,1) 112513954efSKenneth E. Jansen! & + A3(:,1,2) * g3yi(:,2) 113513954efSKenneth 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) 119513954efSKenneth E. Jansen! & + A1(:,2,3) * g1yi(:,3) 120513954efSKenneth 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) 125513954efSKenneth 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) 129513954efSKenneth 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) 136513954efSKenneth E. Jansen! & + A1(:,3,4) * g1yi(:,4) 13759599516SKenneth E. Jansen & + A1(:,3,5) * g1yi(:,5) 13859599516SKenneth E. Jansen & + A2(:,3,1) * g2yi(:,1) 139513954efSKenneth E. Jansen! & + A2(:,3,2) * g2yi(:,2) 14059599516SKenneth E. Jansen & + A2(:,3,3) * g2yi(:,3) 141513954efSKenneth E. Jansen! & + A2(:,3,4) * g2yi(:,4) 14259599516SKenneth E. Jansen & + A2(:,3,5) * g2yi(:,5) 14359599516SKenneth E. Jansen & + A3(:,3,1) * g3yi(:,1) 144513954efSKenneth 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) 151513954efSKenneth 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) 155513954efSKenneth 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) 160513954efSKenneth E. Jansen! & + A3(:,4,2) * g3yi(:,2) 161513954efSKenneth 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) 180513954efSKenneth E. Jansen! 181513954efSKenneth E. Jansen!.... add contribution to rmi 182513954efSKenneth 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. 185513954efSKenneth E. Jansen! 186513954efSKenneth E. Jansen!.... ----------------------> LHS <----------------------- 187513954efSKenneth E. Jansen! 18859599516SKenneth E. Jansen if (lhs .eq. 1) then 189513954efSKenneth E. Jansen! 190513954efSKenneth E. Jansen!.... loop through the columns 191513954efSKenneth E. Jansen! 19259599516SKenneth E. Jansen do j = 1, nshl 19359599516SKenneth E. Jansen j0 = nflow * (j - 1) 194513954efSKenneth E. Jansen! 195513954efSKenneth E. Jansen!.... compute some useful factors 196513954efSKenneth 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) 200513954efSKenneth E. Jansen! 201513954efSKenneth E. Jansen!.... first compute (A_i N_b,i) 202513954efSKenneth 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) 223513954efSKenneth 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) 244513954efSKenneth 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) 265513954efSKenneth 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) 286513954efSKenneth 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) 307513954efSKenneth E. Jansen! 308513954efSKenneth E. Jansen!.... now loop through the row nodes and add (N_a A_i N_b,i) to 309513954efSKenneth E. Jansen! the tangent matrix. 310513954efSKenneth E. Jansen! 31159599516SKenneth E. Jansen do i = 1, nshl 31259599516SKenneth E. Jansen i0 = nflow * (i - 1) 313513954efSKenneth E. Jansen! 314513954efSKenneth E. Jansen!.... loop through dof's 315513954efSKenneth 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 334513954efSKenneth E. Jansen! 335513954efSKenneth E. Jansen!.... end loop on rows 336513954efSKenneth E. Jansen! 33759599516SKenneth E. Jansen enddo 338513954efSKenneth E. Jansen! 339513954efSKenneth E. Jansen!.... end loop on columns 340513954efSKenneth E. Jansen! 34159599516SKenneth E. Jansen enddo 342513954efSKenneth E. Jansen! 343513954efSKenneth E. Jansen!.... end of LHS tangent matrix computation 344513954efSKenneth E. Jansen! 34559599516SKenneth E. Jansen endif 34659599516SKenneth E. Jansen 34759599516SKenneth E. Jansen ttim(22) = ttim(22) + secs(0.0) 348513954efSKenneth E. Jansen! 349513954efSKenneth E. Jansen!.... return 350513954efSKenneth E. Jansen! 35159599516SKenneth E. Jansen return 35259599516SKenneth E. Jansen end 353513954efSKenneth E. Jansen! 354513954efSKenneth E. Jansen! 355513954efSKenneth 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) 362513954efSKenneth E. Jansen! 363513954efSKenneth E. Jansen!---------------------------------------------------------------------- 364513954efSKenneth E. Jansen! 365513954efSKenneth E. Jansen! This routine calculates the contribution of Galerkin part of the 366513954efSKenneth E. Jansen! Convective term (Time and Euler fluxes) to both RHS and LHS. 367513954efSKenneth E. Jansen! 368513954efSKenneth E. Jansen! input: 369513954efSKenneth E. Jansen! Sclr (npro) : Scalar variable 370513954efSKenneth E. Jansen! g1yti (npro) : grad-y in direction 1 371513954efSKenneth E. Jansen! g2yti (npro) : grad-y in direction 2 372513954efSKenneth E. Jansen! g3yti (npro) : grad-y in direction 3 373513954efSKenneth E. Jansen! A1t (npro) : A-1 374513954efSKenneth E. Jansen! A2t (npro) : A-2 375513954efSKenneth E. Jansen! A3t (npro) : A-3 376513954efSKenneth E. Jansen! rho (npro) : density 377513954efSKenneth E. Jansen! u1 (npro) : x1-velocity component 378513954efSKenneth E. Jansen! u2 (npro) : x2-velocity component 379513954efSKenneth E. Jansen! u3 (npro) : x3-velocity component 380513954efSKenneth E. Jansen! shg (npro,nshl,nsd) : global grad's of shape functions 381513954efSKenneth E. Jansen! shape (npro,nshl) : element shape functions 382513954efSKenneth E. Jansen! WdetJ (npro) : weighted Jacobian determinant 383513954efSKenneth E. Jansen! 384513954efSKenneth E. Jansen! output: 385513954efSKenneth E. Jansen! rLyti (npro) : least-squares residual vector 386513954efSKenneth E. Jansen! rti (npro,nsd+1) : partial residual 387513954efSKenneth E. Jansen! rmti (npro,nsd+1) : partial modified residual 388513954efSKenneth E. Jansen! EGmasst (npro,nshape,nshape): partial LHS tangent matrix 389513954efSKenneth E. Jansen! 390513954efSKenneth E. Jansen! 391513954efSKenneth E. Jansen! Zdenek Johan, Summer 1990. (Modified from e2conv.f) 392513954efSKenneth E. Jansen! Zdenek Johan, Winter 1991. (Fortran 90) 393513954efSKenneth E. Jansen! Kenneth Jansen, Winter 1997 Primitive Variables 394513954efSKenneth E. Jansen!---------------------------------------------------------------------- 395513954efSKenneth E. Jansen! 39659599516SKenneth E. Jansen include "common.h" 397513954efSKenneth E. Jansen! 398513954efSKenneth E. Jansen! passed arrays 399513954efSKenneth 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) 410513954efSKenneth E. Jansen! 411513954efSKenneth E. Jansen! local arrays 412513954efSKenneth E. Jansen! 41359599516SKenneth E. Jansen dimension AitNbi(npro) 41459599516SKenneth E. Jansen 415513954efSKenneth E. Jansen ttim(22) = ttim(22) - tmr() !tmr(0.0) 416513954efSKenneth E. Jansen! 417513954efSKenneth E. Jansen!.... ----------------------> RHS, Euler Flux <---------------------- 418513954efSKenneth E. Jansen! 41959599516SKenneth E. Jansen if ((ires .eq. 1) .or. (ires .eq. 3)) then 420513954efSKenneth E. Jansen! 421513954efSKenneth E. Jansen!.... calculate integrated by part contribution of Euler flux (Galerkin) 422513954efSKenneth E. Jansen! 42359599516SKenneth E. Jansen if (iconvsclr.eq.2) then ! convective form 424513954efSKenneth E. Jansen! 42559599516SKenneth E. Jansen rti(:, 4) = rti(:,4) + ( u1) * g1yti(:) 42659599516SKenneth E. Jansen & + ( u2) * g2yti(:) 42759599516SKenneth E. Jansen & + ( u3) * g3yti(:) 428513954efSKenneth E. Jansen! 42959599516SKenneth E. Jansen else ! conservative form 430513954efSKenneth 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 434513954efSKenneth E. Jansen! 43559599516SKenneth E. Jansen endif 43659599516SKenneth E. Jansen 437*f4d0b58bSKenneth E. Jansen! flops = flops + 28*npro 43859599516SKenneth E. Jansen 43959599516SKenneth E. Jansen endif 440513954efSKenneth E. Jansen! 441513954efSKenneth E. Jansen!.... calculate ( A_i Y,i ) --> rLyi 442513954efSKenneth 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 448513954efSKenneth E. Jansen! 449513954efSKenneth E. Jansen!.... add contribution to rmi 450513954efSKenneth E. Jansen! 451513954efSKenneth E. Jansen! if ((ires .eq. 2) .or. (ires .eq. 3)) 452513954efSKenneth E. Jansen! & rmi(:,16:20) = rLyi ! modified residual uses non i.b.p form of conv 453513954efSKenneth E. Jansen! 454513954efSKenneth E. Jansen!.... ----------------------> LHS <----------------------- 455513954efSKenneth E. Jansen! 45659599516SKenneth E. Jansen if (lhs .eq. 1) then 457513954efSKenneth E. Jansen! 458513954efSKenneth E. Jansen!.... loop through the columns 459513954efSKenneth E. Jansen! 46059599516SKenneth E. Jansen do j = 1, nshl 46159599516SKenneth E. Jansen 462513954efSKenneth E. Jansen! 463513954efSKenneth E. Jansen!.... first compute (A_i N_b,i) 464513954efSKenneth 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 470513954efSKenneth E. Jansen! 471513954efSKenneth E. Jansen!.... now loop through the rows and add (N_a A_i N_b,i) to 472513954efSKenneth E. Jansen! the tangent matrix. 473513954efSKenneth 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 479513954efSKenneth E. Jansen! 480513954efSKenneth E. Jansen!.... end loop on rows 481513954efSKenneth E. Jansen! 48259599516SKenneth E. Jansen enddo 483513954efSKenneth E. Jansen! 484513954efSKenneth E. Jansen!.... end loop on columns 485513954efSKenneth E. Jansen! 48659599516SKenneth E. Jansen enddo 487513954efSKenneth E. Jansen! 488513954efSKenneth E. Jansen!.... end of LHS tangent matrix computation 489513954efSKenneth E. Jansen! 49059599516SKenneth E. Jansen endif 49159599516SKenneth E. Jansen 49259599516SKenneth E. Jansen ttim(22) = ttim(22) + tmr() 493513954efSKenneth E. Jansen! 494513954efSKenneth E. Jansen!.... return 495513954efSKenneth E. Jansen! 49659599516SKenneth E. Jansen return 49759599516SKenneth E. Jansen end 49859599516SKenneth E. Jansen 499