1*59599516SKenneth E. Jansen subroutine e3bvar (yl, ycl, BCB, shpb, shglb, 2*59599516SKenneth E. Jansen & xlb, lnode, g1yi, g2yi, 3*59599516SKenneth E. Jansen & g3yi, WdetJb, bnorm, pres, T, 4*59599516SKenneth E. Jansen & u1, u2, u3, rho, ei, 5*59599516SKenneth E. Jansen & cp, rk, 6*59599516SKenneth E. Jansen & rou, p, tau1n, tau2n, tau3n, 7*59599516SKenneth E. Jansen & heat) 8*59599516SKenneth E. Jansenc 9*59599516SKenneth E. Jansenc---------------------------------------------------------------------- 10*59599516SKenneth E. Jansenc 11*59599516SKenneth E. Jansenc This routine computes the variables at integration points for 12*59599516SKenneth E. Jansenc the boundary element routine. 13*59599516SKenneth E. Jansenc 14*59599516SKenneth E. Jansenc input: 15*59599516SKenneth E. Jansenc yl (npro,nshl,nflow) : primitive variables (perturbed, no scalars) 16*59599516SKenneth E. Jansenc ycl (npro,nshl,ndof) : primitive variables 17*59599516SKenneth E. Jansenc BCB (npro,nshlb,ndBCB) : Boundary Condition values 18*59599516SKenneth E. Jansenc shpb (npro,nshl) : boundary element shape-functions 19*59599516SKenneth E. Jansenc shglb (npro,nsd,nshl) : boundary element grad-shape-functions 20*59599516SKenneth E. Jansenc xlb (npro,nenl,nsd) : nodal coordinates at current step 21*59599516SKenneth E. Jansenc lnode (nenb) : local nodes on the boundary 22*59599516SKenneth E. Jansenc 23*59599516SKenneth E. Jansenc output: 24*59599516SKenneth E. Jansenc g1yi (npro,nflow) : grad-v in direction 1 25*59599516SKenneth E. Jansenc g2yi (npro,nflow) : grad-v in direction 2 26*59599516SKenneth E. Jansenc g3yi (npro,nflow) : grad-v in direction 3 27*59599516SKenneth E. Jansenc WdetJb (npro) : weighted Jacobian 28*59599516SKenneth E. Jansenc bnorm (npro,nsd) : outward normal 29*59599516SKenneth E. Jansenc pres (npro) : pressure 30*59599516SKenneth E. Jansenc T (npro) : temperature 31*59599516SKenneth E. Jansenc u1 (npro) : x1-velocity component 32*59599516SKenneth E. Jansenc u2 (npro) : x2-velocity component 33*59599516SKenneth E. Jansenc u3 (npro) : x3-velocity component 34*59599516SKenneth E. Jansenc rho (npro) : density 35*59599516SKenneth E. Jansenc ei (npro) : internal energy 36*59599516SKenneth E. Jansenc cp (npro) : specific energy at constant pressure 37*59599516SKenneth E. Jansenc rk (npro) : kinetic energy 38*59599516SKenneth E. Jansenc rou (npro) : BC mass flux 39*59599516SKenneth E. Jansenc p (npro) : BC pressure 40*59599516SKenneth E. Jansenc tau1n (npro) : BC viscous flux 1 41*59599516SKenneth E. Jansenc tau2n (npro) : BC viscous flux 2 42*59599516SKenneth E. Jansenc tau3n (npro) : BC viscous flux 3 43*59599516SKenneth E. Jansenc heat (npro) : BC heat flux 44*59599516SKenneth E. Jansenc 45*59599516SKenneth E. Jansenc 46*59599516SKenneth E. Jansenc Zdenek Johan, Summer 1990. (Modified from e2bvar.f) 47*59599516SKenneth E. Jansenc Zdenek Johan, Winter 1991. (Fortran 90) 48*59599516SKenneth E. Jansenc---------------------------------------------------------------------- 49*59599516SKenneth E. Jansenc 50*59599516SKenneth E. Jansen include "common.h" 51*59599516SKenneth E. Jansenc 52*59599516SKenneth E. Jansen dimension yl(npro,nshl,nflow), BCB(npro,nshlb,ndBCB), 53*59599516SKenneth E. Jansen & ycl(npro,nshl,ndof), 54*59599516SKenneth E. Jansen & shpb(npro,nshl), 55*59599516SKenneth E. Jansen & shglb(npro,nsd,nshl), 56*59599516SKenneth E. Jansen & xlb(npro,nenl,nsd), 57*59599516SKenneth E. Jansen & lnode(27), g1yi(npro,nflow), 58*59599516SKenneth E. Jansen & g2yi(npro,nflow), g3yi(npro,nflow), 59*59599516SKenneth E. Jansen & WdetJb(npro), bnorm(npro,nsd), 60*59599516SKenneth E. Jansen & pres(npro), T(npro), 61*59599516SKenneth E. Jansen & u1(npro), u2(npro), 62*59599516SKenneth E. Jansen & u3(npro), rho(npro), 63*59599516SKenneth E. Jansen & ei(npro), cp(npro), 64*59599516SKenneth E. Jansen & rk(npro), 65*59599516SKenneth E. Jansen & rou(npro), p(npro), 66*59599516SKenneth E. Jansen & tau1n(npro), tau2n(npro), 67*59599516SKenneth E. Jansen & tau3n(npro), heat(npro) 68*59599516SKenneth E. Jansenc 69*59599516SKenneth E. Jansen dimension gl1yi(npro,nflow), gl2yi(npro,nflow), 70*59599516SKenneth E. Jansen & gl3yi(npro,nflow), dxdxib(npro,nsd,nsd), 71*59599516SKenneth E. Jansen & dxidxb(npro,nsd,nsd), temp(npro), 72*59599516SKenneth E. Jansen & temp1(npro), temp2(npro), 73*59599516SKenneth E. Jansen & temp3(npro) 74*59599516SKenneth E. Jansenc 75*59599516SKenneth E. Jansen dimension h(npro), cv(npro), 76*59599516SKenneth E. Jansen & alfap(npro), betaT(npro), 77*59599516SKenneth E. Jansen & gamb(npro), c(npro), 78*59599516SKenneth E. Jansen & tmp(npro), 79*59599516SKenneth E. Jansen & v1(npro,nsd), v2(npro,nsd) 80*59599516SKenneth E. Jansenc 81*59599516SKenneth E. Jansenc.... -------------------> integration variables <-------------------- 82*59599516SKenneth E. Jansenc 83*59599516SKenneth E. Jansenc.... compute the primitive variables at the integration point 84*59599516SKenneth E. Jansenc 85*59599516SKenneth E. Jansen pres = zero 86*59599516SKenneth E. Jansen u1 = zero 87*59599516SKenneth E. Jansen u2 = zero 88*59599516SKenneth E. Jansen u3 = zero 89*59599516SKenneth E. Jansen T = zero 90*59599516SKenneth E. Jansenc 91*59599516SKenneth E. Jansen do n = 1, nshlb 92*59599516SKenneth E. Jansen nodlcl = lnode(n) 93*59599516SKenneth E. Jansenc 94*59599516SKenneth E. Jansen pres = pres + shpb(:,nodlcl) * yl(:,nodlcl,1) 95*59599516SKenneth E. Jansen u1 = u1 + shpb(:,nodlcl) * yl(:,nodlcl,2) 96*59599516SKenneth E. Jansen u2 = u2 + shpb(:,nodlcl) * yl(:,nodlcl,3) 97*59599516SKenneth E. Jansen u3 = u3 + shpb(:,nodlcl) * yl(:,nodlcl,4) 98*59599516SKenneth E. Jansen T = T + shpb(:,nodlcl) * yl(:,nodlcl,5) 99*59599516SKenneth E. Jansen enddo 100*59599516SKenneth E. Jansenc 101*59599516SKenneth E. Jansenc.... calculate the specific kinetic energy 102*59599516SKenneth E. Jansenc 103*59599516SKenneth E. Jansen rk = pt5 * ( u1**2 + u2**2 + u3**2 ) 104*59599516SKenneth E. Jansenc 105*59599516SKenneth E. Jansenc.... get the thermodynamic properties 106*59599516SKenneth E. Jansenc 107*59599516SKenneth E. Jansen if (iLSet .ne. 0)then 108*59599516SKenneth E. Jansen temp = zero 109*59599516SKenneth E. Jansen isc=abs(iRANS)+6 110*59599516SKenneth E. Jansen do n = 1, nshlb 111*59599516SKenneth E. Jansen temp = temp + shpb(:,n) * ycl(:,n,isc) 112*59599516SKenneth E. Jansen enddo 113*59599516SKenneth E. Jansen endif 114*59599516SKenneth E. Jansen 115*59599516SKenneth E. Jansen ithm = 6 116*59599516SKenneth E. Jansen if (Navier .eq. 1) ithm = 7 117*59599516SKenneth E. Jansen call getthm (pres, T, temp, 118*59599516SKenneth E. Jansen & rk, rho, ei, 119*59599516SKenneth E. Jansen & h, tmp, cv, 120*59599516SKenneth E. Jansen & cp, alfap, betaT, 121*59599516SKenneth E. Jansen & gamb, c) 122*59599516SKenneth E. Jansenc 123*59599516SKenneth E. Jansenc.... ----------------------> Element Metrics <----------------------- 124*59599516SKenneth E. Jansenc 125*59599516SKenneth E. Jansenc.... compute the deformation gradient 126*59599516SKenneth E. Jansenc 127*59599516SKenneth E. Jansen dxdxib = zero 128*59599516SKenneth E. Jansenc 129*59599516SKenneth E. Jansen do n = 1, nenl 130*59599516SKenneth E. Jansen dxdxib(:,1,1) = dxdxib(:,1,1) + xlb(:,n,1) * shglb(:,1,n) 131*59599516SKenneth E. Jansen dxdxib(:,1,2) = dxdxib(:,1,2) + xlb(:,n,1) * shglb(:,2,n) 132*59599516SKenneth E. Jansen dxdxib(:,1,3) = dxdxib(:,1,3) + xlb(:,n,1) * shglb(:,3,n) 133*59599516SKenneth E. Jansen dxdxib(:,2,1) = dxdxib(:,2,1) + xlb(:,n,2) * shglb(:,1,n) 134*59599516SKenneth E. Jansen dxdxib(:,2,2) = dxdxib(:,2,2) + xlb(:,n,2) * shglb(:,2,n) 135*59599516SKenneth E. Jansen dxdxib(:,2,3) = dxdxib(:,2,3) + xlb(:,n,2) * shglb(:,3,n) 136*59599516SKenneth E. Jansen dxdxib(:,3,1) = dxdxib(:,3,1) + xlb(:,n,3) * shglb(:,1,n) 137*59599516SKenneth E. Jansen dxdxib(:,3,2) = dxdxib(:,3,2) + xlb(:,n,3) * shglb(:,2,n) 138*59599516SKenneth E. Jansen dxdxib(:,3,3) = dxdxib(:,3,3) + xlb(:,n,3) * shglb(:,3,n) 139*59599516SKenneth E. Jansen enddo 140*59599516SKenneth E. Jansenc 141*59599516SKenneth E. Jansenc.... compute the normal to the boundary 142*59599516SKenneth E. Jansenc 143*59599516SKenneth E. Jansenc.... compute the normal to the boundary. This is achieved by taking 144*59599516SKenneth E. Jansenc the cross product of two vectors in the plane of the 2-d 145*59599516SKenneth E. Jansenc boundary face. 146*59599516SKenneth E. Jansen v1 = xlb(:,2,:) - xlb(:,1,:) 147*59599516SKenneth E. Jansen v2 = xlb(:,3,:) - xlb(:,1,:) 148*59599516SKenneth E. Jansenc 149*59599516SKenneth E. Jansenc.....The following are done in order to correct temp1..3 150*59599516SKenneth E. Jansenc based on the results from compressible code. This is done only 151*59599516SKenneth E. Jansenc for wedges, depending on the bounary face.(tri or quad) 152*59599516SKenneth E. Jansenc 153*59599516SKenneth E. Jansen if (lcsyst .eq. 4) then 154*59599516SKenneth E. Jansen temp1 = dxdxib(:,2,1) * dxdxib(:,3,3) - 155*59599516SKenneth E. Jansen & dxdxib(:,2,3) * dxdxib(:,3,1) 156*59599516SKenneth E. Jansen temp2 = dxdxib(:,3,1) * dxdxib(:,1,3) - 157*59599516SKenneth E. Jansen & dxdxib(:,3,3) * dxdxib(:,1,1) 158*59599516SKenneth E. Jansen temp3 = dxdxib(:,1,1) * dxdxib(:,2,3) - 159*59599516SKenneth E. Jansen & dxdxib(:,1,3) * dxdxib(:,2,1) 160*59599516SKenneth E. Jansen 161*59599516SKenneth E. Jansen elseif (lcsyst .eq. 1) then 162*59599516SKenneth E. Jansen temp1 = v1(:,2) * v2(:,3) - v2(:,2) * v1(:,3) 163*59599516SKenneth E. Jansen temp2 = v2(:,1) * v1(:,3) - v1(:,1) * v2(:,3) 164*59599516SKenneth E. Jansen temp3 = v1(:,1) * v2(:,2) - v2(:,1) * v1(:,2) 165*59599516SKenneth E. Jansen else 166*59599516SKenneth E. Jansen temp1 = - v1(:,2) * v2(:,3) + v2(:,2) * v1(:,3) 167*59599516SKenneth E. Jansen temp2 = - v2(:,1) * v1(:,3) + v1(:,1) * v2(:,3) 168*59599516SKenneth E. Jansen temp3 = - v1(:,1) * v2(:,2) + v2(:,1) * v1(:,2) 169*59599516SKenneth E. Jansen endif 170*59599516SKenneth E. Jansenc 171*59599516SKenneth E. Jansen temp = one / sqrt ( temp1**2 + temp2**2 + temp3**2 ) 172*59599516SKenneth E. Jansen bnorm(:,1) = temp1 * temp 173*59599516SKenneth E. Jansen bnorm(:,2) = temp2 * temp 174*59599516SKenneth E. Jansen bnorm(:,3) = temp3 * temp 175*59599516SKenneth E. Jansenc 176*59599516SKenneth E. Jansen 177*59599516SKenneth E. Jansen if (lcsyst .eq. 3) then 178*59599516SKenneth E. Jansen WdetJb = (1 - Qwtb(lcsyst,intp)) / (four*temp) 179*59599516SKenneth E. Jansen elseif (lcsyst .eq. 4) then 180*59599516SKenneth E. Jansenc 181*59599516SKenneth E. Jansenc quad face wedges have a conflict in lnode ordering that makes the 182*59599516SKenneth E. Jansenc normal negative 183*59599516SKenneth E. Jansenc 184*59599516SKenneth E. Jansenc bnorm=-bnorm 185*59599516SKenneth E. Jansenc 186*59599516SKenneth E. Jansen WdetJb = Qwtb(lcsyst,intp) / temp 187*59599516SKenneth E. Jansen else 188*59599516SKenneth E. Jansen WdetJb = Qwtb(lcsyst,intp) / (four*temp) 189*59599516SKenneth E. Jansen endif 190*59599516SKenneth E. Jansenc 191*59599516SKenneth E. Jansenc.... --------------------------> Grad-V <---------------------------- 192*59599516SKenneth E. Jansenc 193*59599516SKenneth E. Jansenc.... compute grad-v for Navier-Stokes terms 194*59599516SKenneth E. Jansenc 195*59599516SKenneth E. Jansen if (Navier .eq. 1) then 196*59599516SKenneth E. Jansenc 197*59599516SKenneth E. Jansenc.... compute the inverse of deformation gradient 198*59599516SKenneth E. Jansenc 199*59599516SKenneth E. Jansen dxidxb(:,1,1) = dxdxib(:,2,2) * dxdxib(:,3,3) 200*59599516SKenneth E. Jansen & - dxdxib(:,3,2) * dxdxib(:,2,3) 201*59599516SKenneth E. Jansen dxidxb(:,1,2) = dxdxib(:,3,2) * dxdxib(:,1,3) 202*59599516SKenneth E. Jansen & - dxdxib(:,1,2) * dxdxib(:,3,3) 203*59599516SKenneth E. Jansen dxidxb(:,1,3) = dxdxib(:,1,2) * dxdxib(:,2,3) 204*59599516SKenneth E. Jansen & - dxdxib(:,1,3) * dxdxib(:,2,2) 205*59599516SKenneth E. Jansen temp = one / ( dxidxb(:,1,1) * dxdxib(:,1,1) 206*59599516SKenneth E. Jansen & + dxidxb(:,1,2) * dxdxib(:,2,1) 207*59599516SKenneth E. Jansen & + dxidxb(:,1,3) * dxdxib(:,3,1) ) 208*59599516SKenneth E. Jansen dxidxb(:,1,1) = dxidxb(:,1,1) * temp 209*59599516SKenneth E. Jansen dxidxb(:,1,2) = dxidxb(:,1,2) * temp 210*59599516SKenneth E. Jansen dxidxb(:,1,3) = dxidxb(:,1,3) * temp 211*59599516SKenneth E. Jansen dxidxb(:,2,1) = (dxdxib(:,2,3) * dxdxib(:,3,1) 212*59599516SKenneth E. Jansen & - dxdxib(:,2,1) * dxdxib(:,3,3)) * temp 213*59599516SKenneth E. Jansen dxidxb(:,2,2) = (dxdxib(:,1,1) * dxdxib(:,3,3) 214*59599516SKenneth E. Jansen & - dxdxib(:,3,1) * dxdxib(:,1,3)) * temp 215*59599516SKenneth E. Jansen dxidxb(:,2,3) = (dxdxib(:,2,1) * dxdxib(:,1,3) 216*59599516SKenneth E. Jansen & - dxdxib(:,1,1) * dxdxib(:,2,3)) * temp 217*59599516SKenneth E. Jansen dxidxb(:,3,1) = (dxdxib(:,2,1) * dxdxib(:,3,2) 218*59599516SKenneth E. Jansen & - dxdxib(:,2,2) * dxdxib(:,3,1)) * temp 219*59599516SKenneth E. Jansen dxidxb(:,3,2) = (dxdxib(:,3,1) * dxdxib(:,1,2) 220*59599516SKenneth E. Jansen & - dxdxib(:,1,1) * dxdxib(:,3,2)) * temp 221*59599516SKenneth E. Jansen dxidxb(:,3,3) = (dxdxib(:,1,1) * dxdxib(:,2,2) 222*59599516SKenneth E. Jansen & - dxdxib(:,1,2) * dxdxib(:,2,1)) * temp 223*59599516SKenneth E. Jansenc 224*59599516SKenneth E. Jansenc.... compute local-grad-Y 225*59599516SKenneth E. Jansenc 226*59599516SKenneth E. Jansen gl1yi = zero 227*59599516SKenneth E. Jansen gl2yi = zero 228*59599516SKenneth E. Jansen gl3yi = zero 229*59599516SKenneth E. Jansenc 230*59599516SKenneth E. Jansen do n = 1, nshl 231*59599516SKenneth E. Jansen gl1yi(:,1) = gl1yi(:,1) + shglb(:,1,n) * yl(:,n,1) 232*59599516SKenneth E. Jansen gl1yi(:,2) = gl1yi(:,2) + shglb(:,1,n) * yl(:,n,2) 233*59599516SKenneth E. Jansen gl1yi(:,3) = gl1yi(:,3) + shglb(:,1,n) * yl(:,n,3) 234*59599516SKenneth E. Jansen gl1yi(:,4) = gl1yi(:,4) + shglb(:,1,n) * yl(:,n,4) 235*59599516SKenneth E. Jansen gl1yi(:,5) = gl1yi(:,5) + shglb(:,1,n) * yl(:,n,5) 236*59599516SKenneth E. Jansenc 237*59599516SKenneth E. Jansen gl2yi(:,1) = gl2yi(:,1) + shglb(:,2,n) * yl(:,n,1) 238*59599516SKenneth E. Jansen gl2yi(:,2) = gl2yi(:,2) + shglb(:,2,n) * yl(:,n,2) 239*59599516SKenneth E. Jansen gl2yi(:,3) = gl2yi(:,3) + shglb(:,2,n) * yl(:,n,3) 240*59599516SKenneth E. Jansen gl2yi(:,4) = gl2yi(:,4) + shglb(:,2,n) * yl(:,n,4) 241*59599516SKenneth E. Jansen gl2yi(:,5) = gl2yi(:,5) + shglb(:,2,n) * yl(:,n,5) 242*59599516SKenneth E. Jansenc 243*59599516SKenneth E. Jansen gl3yi(:,1) = gl3yi(:,1) + shglb(:,3,n) * yl(:,n,1) 244*59599516SKenneth E. Jansen gl3yi(:,2) = gl3yi(:,2) + shglb(:,3,n) * yl(:,n,2) 245*59599516SKenneth E. Jansen gl3yi(:,3) = gl3yi(:,3) + shglb(:,3,n) * yl(:,n,3) 246*59599516SKenneth E. Jansen gl3yi(:,4) = gl3yi(:,4) + shglb(:,3,n) * yl(:,n,4) 247*59599516SKenneth E. Jansen gl3yi(:,5) = gl3yi(:,5) + shglb(:,3,n) * yl(:,n,5) 248*59599516SKenneth E. Jansen enddo 249*59599516SKenneth E. Jansenc 250*59599516SKenneth E. Jansenc.... convert local-grads to global-grads 251*59599516SKenneth E. Jansenc 252*59599516SKenneth E. Jansen g1yi(:,2) = dxidxb(:,1,1) * gl1yi(:,2) + 253*59599516SKenneth E. Jansen & dxidxb(:,2,1) * gl2yi(:,2) + 254*59599516SKenneth E. Jansen & dxidxb(:,3,1) * gl3yi(:,2) 255*59599516SKenneth E. Jansen g2yi(:,2) = dxidxb(:,1,2) * gl1yi(:,2) + 256*59599516SKenneth E. Jansen & dxidxb(:,2,2) * gl2yi(:,2) + 257*59599516SKenneth E. Jansen & dxidxb(:,3,2) * gl3yi(:,2) 258*59599516SKenneth E. Jansen g3yi(:,2) = dxidxb(:,1,3) * gl1yi(:,2) + 259*59599516SKenneth E. Jansen & dxidxb(:,2,3) * gl2yi(:,2) + 260*59599516SKenneth E. Jansen & dxidxb(:,3,3) * gl3yi(:,2) 261*59599516SKenneth E. Jansenc 262*59599516SKenneth E. Jansen g1yi(:,3) = dxidxb(:,1,1) * gl1yi(:,3) + 263*59599516SKenneth E. Jansen & dxidxb(:,2,1) * gl2yi(:,3) + 264*59599516SKenneth E. Jansen & dxidxb(:,3,1) * gl3yi(:,3) 265*59599516SKenneth E. Jansen g2yi(:,3) = dxidxb(:,1,2) * gl1yi(:,3) + 266*59599516SKenneth E. Jansen & dxidxb(:,2,2) * gl2yi(:,3) + 267*59599516SKenneth E. Jansen & dxidxb(:,3,2) * gl3yi(:,3) 268*59599516SKenneth E. Jansen g3yi(:,3) = dxidxb(:,1,3) * gl1yi(:,3) + 269*59599516SKenneth E. Jansen & dxidxb(:,2,3) * gl2yi(:,3) + 270*59599516SKenneth E. Jansen & dxidxb(:,3,3) * gl3yi(:,3) 271*59599516SKenneth E. Jansenc 272*59599516SKenneth E. Jansen g1yi(:,4) = dxidxb(:,1,1) * gl1yi(:,4) + 273*59599516SKenneth E. Jansen & dxidxb(:,2,1) * gl2yi(:,4) + 274*59599516SKenneth E. Jansen & dxidxb(:,3,1) * gl3yi(:,4) 275*59599516SKenneth E. Jansen g2yi(:,4) = dxidxb(:,1,2) * gl1yi(:,4) + 276*59599516SKenneth E. Jansen & dxidxb(:,2,2) * gl2yi(:,4) + 277*59599516SKenneth E. Jansen & dxidxb(:,3,2) * gl3yi(:,4) 278*59599516SKenneth E. Jansen g3yi(:,4) = dxidxb(:,1,3) * gl1yi(:,4) + 279*59599516SKenneth E. Jansen & dxidxb(:,2,3) * gl2yi(:,4) + 280*59599516SKenneth E. Jansen & dxidxb(:,3,3) * gl3yi(:,4) 281*59599516SKenneth E. Jansenc 282*59599516SKenneth E. Jansen g1yi(:,5) = dxidxb(:,1,1) * gl1yi(:,5) + 283*59599516SKenneth E. Jansen & dxidxb(:,2,1) * gl2yi(:,5) + 284*59599516SKenneth E. Jansen & dxidxb(:,3,1) * gl3yi(:,5) 285*59599516SKenneth E. Jansen g2yi(:,5) = dxidxb(:,1,2) * gl1yi(:,5) + 286*59599516SKenneth E. Jansen & dxidxb(:,2,2) * gl2yi(:,5) + 287*59599516SKenneth E. Jansen & dxidxb(:,3,2) * gl3yi(:,5) 288*59599516SKenneth E. Jansen g3yi(:,5) = dxidxb(:,1,3) * gl1yi(:,5) + 289*59599516SKenneth E. Jansen & dxidxb(:,2,3) * gl2yi(:,5) + 290*59599516SKenneth E. Jansen & dxidxb(:,3,3) * gl3yi(:,5) 291*59599516SKenneth E. Jansenc 292*59599516SKenneth E. Jansenc.... end grad-v 293*59599516SKenneth E. Jansenc 294*59599516SKenneth E. Jansen endif 295*59599516SKenneth E. Jansenc 296*59599516SKenneth E. Jansenc.... --------------------> Boundary Conditions <-------------------- 297*59599516SKenneth E. Jansenc 298*59599516SKenneth E. Jansenc.... compute the Euler boundary conditions 299*59599516SKenneth E. Jansenc 300*59599516SKenneth E. Jansen rou = zero 301*59599516SKenneth E. Jansen p = zero 302*59599516SKenneth E. Jansenc 303*59599516SKenneth E. Jansen do n = 1, nshlb 304*59599516SKenneth E. Jansen nodlcl = lnode(n) 305*59599516SKenneth E. Jansenc 306*59599516SKenneth E. Jansen rou = rou + shpb(:,nodlcl) * BCB(:,n,1) 307*59599516SKenneth E. Jansen p = p + shpb(:,nodlcl) * BCB(:,n,2) 308*59599516SKenneth E. Jansen enddo 309*59599516SKenneth E. Jansenc 310*59599516SKenneth E. Jansenc.... compute the Navier-Stokes boundary conditions 311*59599516SKenneth E. Jansenc 312*59599516SKenneth E. Jansen if (Navier .eq. 1) then 313*59599516SKenneth E. Jansenc 314*59599516SKenneth E. Jansen tau1n = zero 315*59599516SKenneth E. Jansen tau2n = zero 316*59599516SKenneth E. Jansen tau3n = zero 317*59599516SKenneth E. Jansen heat = zero 318*59599516SKenneth E. Jansenc 319*59599516SKenneth E. Jansen do n = 1, nshlb 320*59599516SKenneth E. Jansen nodlcl = lnode(n) 321*59599516SKenneth E. Jansenc 322*59599516SKenneth E. Jansen tau1n = tau1n + shpb(:,nodlcl) * BCB(:,n,3) 323*59599516SKenneth E. Jansen tau2n = tau2n + shpb(:,nodlcl) * BCB(:,n,4) 324*59599516SKenneth E. Jansen tau3n = tau3n + shpb(:,nodlcl) * BCB(:,n,5) 325*59599516SKenneth E. Jansen heat = heat + shpb(:,nodlcl) * BCB(:,n,6) 326*59599516SKenneth E. Jansen enddo 327*59599516SKenneth E. Jansenc 328*59599516SKenneth E. Jansenc.... flop count 329*59599516SKenneth E. Jansenc 330*59599516SKenneth E. Jansen flops = flops + (184+30*nshl+8*nshlb)*npro 331*59599516SKenneth E. Jansenc 332*59599516SKenneth E. Jansen endif 333*59599516SKenneth E. Jansenc 334*59599516SKenneth E. Jansenc.... flop count 335*59599516SKenneth E. Jansenc 336*59599516SKenneth E. Jansen flops = flops + (27+18*nshl+14*nshlb)*npro 337*59599516SKenneth E. Jansenc 338*59599516SKenneth E. Jansenc.... return 339*59599516SKenneth E. Jansenc 340*59599516SKenneth E. Jansen return 341*59599516SKenneth E. Jansen end 342*59599516SKenneth E. Jansenc 343*59599516SKenneth E. Jansenc 344*59599516SKenneth E. Jansenc 345*59599516SKenneth E. Jansen subroutine e3bvarSclr(ycl, BCB, shpb, shglb, 346*59599516SKenneth E. Jansen & xlb, lnode, 347*59599516SKenneth E. Jansen & u1, u2, u3, 348*59599516SKenneth E. Jansen & g1yti, g2yti, g3yti, WdetJb, 349*59599516SKenneth E. Jansen & bnorm, T, rho, cp, rou, 350*59599516SKenneth E. Jansen & Sclr, SclrF) 351*59599516SKenneth E. Jansenc 352*59599516SKenneth E. Jansenc---------------------------------------------------------------------- 353*59599516SKenneth E. Jansenc 354*59599516SKenneth E. Jansenc This routine computes the variables at integration points for 355*59599516SKenneth E. Jansenc the boundary element routine. 356*59599516SKenneth E. Jansenc 357*59599516SKenneth E. Jansenc input: 358*59599516SKenneth E. Jansenc ycl (npro,nshl,ndof) : Y variables 359*59599516SKenneth E. Jansenc BCB (npro,nenbl,ndBCB) : Boundary Condition values 360*59599516SKenneth E. Jansenc shpb (npro,nen) : boundary element shape-functions 361*59599516SKenneth E. Jansenc shglb (nsd,nen) : boundary element grad-shape-functions 362*59599516SKenneth E. Jansenc xlb (npro,nshl,nsd) : nodal coordinates at current step 363*59599516SKenneth E. Jansenc lnode (nenb) : local nodes on the boundary 364*59599516SKenneth E. Jansenc 365*59599516SKenneth E. Jansenc output: 366*59599516SKenneth E. Jansenc g1yti (npro) 367*59599516SKenneth E. Jansenc g2yti (npro) 368*59599516SKenneth E. Jansenc g3yti (npro) 369*59599516SKenneth E. Jansenc WdetJb (npro) : weighted Jacobian 370*59599516SKenneth E. Jansenc bnorm (npro,nsd) : outward normal 371*59599516SKenneth E. Jansenc T (npro) : temperature 372*59599516SKenneth E. Jansenc rho (npro) : density 373*59599516SKenneth E. Jansenc cp (npro) : specific energy at constant pressure 374*59599516SKenneth E. Jansenc rou (npro) : BC mass flux 375*59599516SKenneth E. Jansenc SclrF (npro) : BC Scalar flux 376*59599516SKenneth E. Jansenc 377*59599516SKenneth E. Jansenc Zdenek Johan, Summer 1990. (Modified from e2bvar.f) 378*59599516SKenneth E. Jansenc Zdenek Johan, Winter 1991. (Fortran 90) 379*59599516SKenneth E. Jansenc---------------------------------------------------------------------- 380*59599516SKenneth E. Jansenc 381*59599516SKenneth E. Jansen include "common.h" 382*59599516SKenneth E. Jansenc 383*59599516SKenneth E. Jansen dimension ycl(npro,nshl,ndof), BCB(npro,nshlb,ndBCB), 384*59599516SKenneth E. Jansen & shpb(npro,nshl), shglb(npro,nsd,nshl), 385*59599516SKenneth E. Jansen & xlb(npro,nshl,nsd), 386*59599516SKenneth E. Jansen & lnode(27), 387*59599516SKenneth E. Jansen & g1yti(npro), g2yti(npro), 388*59599516SKenneth E. Jansen & g3yti(npro), 389*59599516SKenneth E. Jansen & WdetJb(npro), bnorm(npro,nsd), 390*59599516SKenneth E. Jansen & pres(npro), T(npro), 391*59599516SKenneth E. Jansen & u1(npro), u2(npro), 392*59599516SKenneth E. Jansen & u3(npro), rho(npro), 393*59599516SKenneth E. Jansen & ei(npro), cp(npro), 394*59599516SKenneth E. Jansen & rk(npro), Sclr(npro), 395*59599516SKenneth E. Jansen & rou(npro), 396*59599516SKenneth E. Jansen & SclrF(npro) 397*59599516SKenneth E. Jansenc 398*59599516SKenneth E. Jansen dimension dxdxib(npro,nsd,nsd), 399*59599516SKenneth E. Jansen & dxidxb(npro,nsd,nsd), temp(npro), 400*59599516SKenneth E. Jansen & temp1(npro), temp2(npro), 401*59599516SKenneth E. Jansen & temp3(npro), gl1yti(npro), 402*59599516SKenneth E. Jansen & gl2yti(npro), gl3yti(npro) 403*59599516SKenneth E. Jansenc 404*59599516SKenneth E. Jansen dimension h(npro), cv(npro), 405*59599516SKenneth E. Jansen & alfap(npro), betaT(npro), 406*59599516SKenneth E. Jansen & gamb(npro), c(npro), 407*59599516SKenneth E. Jansen & tmp(npro), v1(npro,nsd), 408*59599516SKenneth E. Jansen & v2(npro,nsd) 409*59599516SKenneth E. Jansenc 410*59599516SKenneth E. Jansenc.... -------------------> integration variables <-------------------- 411*59599516SKenneth E. Jansenc 412*59599516SKenneth E. Jansenc.... compute the primitive variables at the integration point 413*59599516SKenneth E. Jansenc 414*59599516SKenneth E. Jansen pres = zero 415*59599516SKenneth E. Jansen u1 = zero 416*59599516SKenneth E. Jansen u2 = zero 417*59599516SKenneth E. Jansen u3 = zero 418*59599516SKenneth E. Jansen T = zero 419*59599516SKenneth E. Jansen Sclr = zero 420*59599516SKenneth E. Jansen 421*59599516SKenneth E. Jansen id = isclr+5 422*59599516SKenneth E. Jansen ibb = isclr+6 423*59599516SKenneth E. Jansenc 424*59599516SKenneth E. Jansen do n = 1, nshlb 425*59599516SKenneth E. Jansen nodlcl = lnode(n) 426*59599516SKenneth E. Jansenc 427*59599516SKenneth E. Jansen pres = pres + shpb(:,nodlcl) * ycl(:,nodlcl,1) 428*59599516SKenneth E. Jansen u1 = u1 + shpb(:,nodlcl) * ycl(:,nodlcl,2) 429*59599516SKenneth E. Jansen u2 = u2 + shpb(:,nodlcl) * ycl(:,nodlcl,3) 430*59599516SKenneth E. Jansen u3 = u3 + shpb(:,nodlcl) * ycl(:,nodlcl,4) 431*59599516SKenneth E. Jansen T = T + shpb(:,nodlcl) * ycl(:,nodlcl,5) 432*59599516SKenneth E. Jansen Sclr = Sclr + shpb(:,nodlcl) * ycl(:,nodlcl,id) 433*59599516SKenneth E. Jansen enddo 434*59599516SKenneth E. Jansenc 435*59599516SKenneth E. Jansenc.... calculate the specific kinetic energy 436*59599516SKenneth E. Jansenc 437*59599516SKenneth E. Jansen rk = pt5 * ( u1**2 + u2**2 + u3**2 ) 438*59599516SKenneth E. Jansenc 439*59599516SKenneth E. Jansenc.... get the thermodynamic properties 440*59599516SKenneth E. Jansenc 441*59599516SKenneth E. Jansen ithm = 6 442*59599516SKenneth E. Jansen if (Navier .eq. 1) ithm = 7 443*59599516SKenneth E. Jansen call getthm (pres, T, Sclr, 444*59599516SKenneth E. Jansen & rk, rho, ei, 445*59599516SKenneth E. Jansen & h, tmp, cv, 446*59599516SKenneth E. Jansen & cp, alfap, betaT, 447*59599516SKenneth E. Jansen & gamb, c) 448*59599516SKenneth E. Jansenc 449*59599516SKenneth E. Jansen if (iconvsclr.eq.2) rho=one 450*59599516SKenneth E. Jansenc 451*59599516SKenneth E. Jansenc.... ----------------------> Element Metrics <----------------------- 452*59599516SKenneth E. Jansenc 453*59599516SKenneth E. Jansenc.... compute the deformation gradient 454*59599516SKenneth E. Jansenc 455*59599516SKenneth E. Jansen dxdxib = zero 456*59599516SKenneth E. Jansenc 457*59599516SKenneth E. Jansen do n = 1, nshl 458*59599516SKenneth E. Jansen dxdxib(:,1,1) = dxdxib(:,1,1) + xlb(:,n,1) * shglb(:,1,n) 459*59599516SKenneth E. Jansen dxdxib(:,1,2) = dxdxib(:,1,2) + xlb(:,n,1) * shglb(:,2,n) 460*59599516SKenneth E. Jansen dxdxib(:,1,3) = dxdxib(:,1,3) + xlb(:,n,1) * shglb(:,3,n) 461*59599516SKenneth E. Jansen dxdxib(:,2,1) = dxdxib(:,2,1) + xlb(:,n,2) * shglb(:,1,n) 462*59599516SKenneth E. Jansen dxdxib(:,2,2) = dxdxib(:,2,2) + xlb(:,n,2) * shglb(:,2,n) 463*59599516SKenneth E. Jansen dxdxib(:,2,3) = dxdxib(:,2,3) + xlb(:,n,2) * shglb(:,3,n) 464*59599516SKenneth E. Jansen dxdxib(:,3,1) = dxdxib(:,3,1) + xlb(:,n,3) * shglb(:,1,n) 465*59599516SKenneth E. Jansen dxdxib(:,3,2) = dxdxib(:,3,2) + xlb(:,n,3) * shglb(:,2,n) 466*59599516SKenneth E. Jansen dxdxib(:,3,3) = dxdxib(:,3,3) + xlb(:,n,3) * shglb(:,3,n) 467*59599516SKenneth E. Jansen enddo 468*59599516SKenneth E. Jansenc 469*59599516SKenneth E. Jansenc.... compute the normal to the boundary 470*59599516SKenneth E. Jansenc 471*59599516SKenneth E. Jansenc 472*59599516SKenneth E. Jansen v1 = xlb(:,2,:) - xlb(:,1,:) 473*59599516SKenneth E. Jansen v2 = xlb(:,3,:) - xlb(:,1,:) 474*59599516SKenneth E. Jansenc 475*59599516SKenneth E. Jansenc.... compute the normal to the boundary. This is achieved by taking 476*59599516SKenneth E. Jansenc the cross product of two vectors in the plane of the 2-d 477*59599516SKenneth E. Jansenc boundary face. 478*59599516SKenneth E. Jansenc 479*59599516SKenneth E. Jansenc.....The following are done in order to correct temp1..3 480*59599516SKenneth E. Jansenc based on the results from compressible code. This is done only 481*59599516SKenneth E. Jansenc for wedges, depending on the bounary face.(tri or quad) 482*59599516SKenneth E. Jansenc 483*59599516SKenneth E. Jansen if (lcsyst .eq. 4) then 484*59599516SKenneth E. Jansen temp1 = dxdxib(:,2,1) * dxdxib(:,3,3) - 485*59599516SKenneth E. Jansen & dxdxib(:,2,3) * dxdxib(:,3,1) 486*59599516SKenneth E. Jansen temp2 = dxdxib(:,3,1) * dxdxib(:,1,3) - 487*59599516SKenneth E. Jansen & dxdxib(:,3,3) * dxdxib(:,1,1) 488*59599516SKenneth E. Jansen temp3 = dxdxib(:,1,1) * dxdxib(:,2,3) - 489*59599516SKenneth E. Jansen & dxdxib(:,1,3) * dxdxib(:,2,1) 490*59599516SKenneth E. Jansen 491*59599516SKenneth E. Jansen elseif (lcsyst .eq. 1) then 492*59599516SKenneth E. Jansen temp1 = v1(:,2) * v2(:,3) - v2(:,2) * v1(:,3) 493*59599516SKenneth E. Jansen temp2 = v2(:,1) * v1(:,3) - v1(:,1) * v2(:,3) 494*59599516SKenneth E. Jansen temp3 = v1(:,1) * v2(:,2) - v2(:,1) * v1(:,2) 495*59599516SKenneth E. Jansen else 496*59599516SKenneth E. Jansen temp1 = - v1(:,2) * v2(:,3) + v2(:,2) * v1(:,3) 497*59599516SKenneth E. Jansen temp2 = - v2(:,1) * v1(:,3) + v1(:,1) * v2(:,3) 498*59599516SKenneth E. Jansen temp3 = - v1(:,1) * v2(:,2) + v2(:,1) * v1(:,2) 499*59599516SKenneth E. Jansen endif 500*59599516SKenneth E. Jansenc 501*59599516SKenneth E. Jansen temp = one / sqrt ( temp1**2 + temp2**2 + temp3**2 ) 502*59599516SKenneth E. Jansen bnorm(:,1) = temp1 * temp 503*59599516SKenneth E. Jansen bnorm(:,2) = temp2 * temp 504*59599516SKenneth E. Jansen bnorm(:,3) = temp3 * temp 505*59599516SKenneth E. Jansenc 506*59599516SKenneth E. Jansen 507*59599516SKenneth E. Jansen if (lcsyst .eq. 3) then 508*59599516SKenneth E. Jansen WdetJb = (1 - Qwtb(lcsyst,intp)) / (four*temp) 509*59599516SKenneth E. Jansen elseif (lcsyst .eq. 4) then 510*59599516SKenneth E. Jansen WdetJb = Qwtb(lcsyst,intp)/ temp 511*59599516SKenneth E. Jansen else 512*59599516SKenneth E. Jansen WdetJb =Qwtb(lcsyst,intp) / (four*temp) 513*59599516SKenneth E. Jansen endif 514*59599516SKenneth E. Jansenc 515*59599516SKenneth E. Jansenc.... --------------------------> Grad-V <---------------------------- 516*59599516SKenneth E. Jansenc 517*59599516SKenneth E. Jansenc.... compute grad-v for Navier-Stokes terms 518*59599516SKenneth E. Jansenc 519*59599516SKenneth E. Jansen if (Navier .eq. 1) then 520*59599516SKenneth E. Jansenc 521*59599516SKenneth E. Jansenc.... compute the inverse of deformation gradient 522*59599516SKenneth E. Jansenc 523*59599516SKenneth E. Jansen dxidxb(:,1,1) = dxdxib(:,2,2) * dxdxib(:,3,3) 524*59599516SKenneth E. Jansen & - dxdxib(:,3,2) * dxdxib(:,2,3) 525*59599516SKenneth E. Jansen dxidxb(:,1,2) = dxdxib(:,3,2) * dxdxib(:,1,3) 526*59599516SKenneth E. Jansen & - dxdxib(:,1,2) * dxdxib(:,3,3) 527*59599516SKenneth E. Jansen dxidxb(:,1,3) = dxdxib(:,1,2) * dxdxib(:,2,3) 528*59599516SKenneth E. Jansen & - dxdxib(:,1,3) * dxdxib(:,2,2) 529*59599516SKenneth E. Jansen temp = one / ( dxidxb(:,1,1) * dxdxib(:,1,1) 530*59599516SKenneth E. Jansen & + dxidxb(:,1,2) * dxdxib(:,2,1) 531*59599516SKenneth E. Jansen & + dxidxb(:,1,3) * dxdxib(:,3,1) ) 532*59599516SKenneth E. Jansen dxidxb(:,1,1) = dxidxb(:,1,1) * temp 533*59599516SKenneth E. Jansen dxidxb(:,1,2) = dxidxb(:,1,2) * temp 534*59599516SKenneth E. Jansen dxidxb(:,1,3) = dxidxb(:,1,3) * temp 535*59599516SKenneth E. Jansen dxidxb(:,2,1) = (dxdxib(:,2,3) * dxdxib(:,3,1) 536*59599516SKenneth E. Jansen & - dxdxib(:,2,1) * dxdxib(:,3,3)) * temp 537*59599516SKenneth E. Jansen dxidxb(:,2,2) = (dxdxib(:,1,1) * dxdxib(:,3,3) 538*59599516SKenneth E. Jansen & - dxdxib(:,3,1) * dxdxib(:,1,3)) * temp 539*59599516SKenneth E. Jansen dxidxb(:,2,3) = (dxdxib(:,2,1) * dxdxib(:,1,3) 540*59599516SKenneth E. Jansen & - dxdxib(:,1,1) * dxdxib(:,2,3)) * temp 541*59599516SKenneth E. Jansen dxidxb(:,3,1) = (dxdxib(:,2,1) * dxdxib(:,3,2) 542*59599516SKenneth E. Jansen & - dxdxib(:,2,2) * dxdxib(:,3,1)) * temp 543*59599516SKenneth E. Jansen dxidxb(:,3,2) = (dxdxib(:,3,1) * dxdxib(:,1,2) 544*59599516SKenneth E. Jansen & - dxdxib(:,1,1) * dxdxib(:,3,2)) * temp 545*59599516SKenneth E. Jansen dxidxb(:,3,3) = (dxdxib(:,1,1) * dxdxib(:,2,2) 546*59599516SKenneth E. Jansen & - dxdxib(:,1,2) * dxdxib(:,2,1)) * temp 547*59599516SKenneth E. Jansen 548*59599516SKenneth E. Jansenc 549*59599516SKenneth E. Jansenc.... compute local-grad-Y 550*59599516SKenneth E. Jansenc 551*59599516SKenneth E. Jansen gl1yti = zero 552*59599516SKenneth E. Jansen gl2yti = zero 553*59599516SKenneth E. Jansen gl3yti = zero 554*59599516SKenneth E. Jansenc 555*59599516SKenneth E. Jansen do n = 1, nshl 556*59599516SKenneth E. Jansen gl1yti(:) = gl1yti(:) + shglb(:,1,n) * ycl(:,n,id) 557*59599516SKenneth E. Jansen gl2yti(:) = gl2yti(:) + shglb(:,2,n) * ycl(:,n,id) 558*59599516SKenneth E. Jansen gl3yti(:) = gl3yti(:) + shglb(:,3,n) * ycl(:,n,id) 559*59599516SKenneth E. Jansen enddo 560*59599516SKenneth E. Jansenc 561*59599516SKenneth E. Jansenc.... convert local-grads to global-grads 562*59599516SKenneth E. Jansenc 563*59599516SKenneth E. Jansen g1yti(:) = dxidxb(:,1,1) * gl1yti(:) + 564*59599516SKenneth E. Jansen & dxidxb(:,2,1) * gl2yti(:) + 565*59599516SKenneth E. Jansen & dxidxb(:,3,1) * gl3yti(:) 566*59599516SKenneth E. Jansen g2yti(:) = dxidxb(:,1,2) * gl1yti(:) + 567*59599516SKenneth E. Jansen & dxidxb(:,2,2) * gl2yti(:) + 568*59599516SKenneth E. Jansen & dxidxb(:,3,2) * gl3yti(:) 569*59599516SKenneth E. Jansen g3yti(:) = dxidxb(:,1,3) * gl1yti(:) + 570*59599516SKenneth E. Jansen & dxidxb(:,2,3) * gl2yti(:) + 571*59599516SKenneth E. Jansen & dxidxb(:,3,3) * gl3yti(:) 572*59599516SKenneth E. Jansen 573*59599516SKenneth E. Jansenc 574*59599516SKenneth E. Jansenc.... end grad-Sclr 575*59599516SKenneth E. Jansen endif 576*59599516SKenneth E. Jansenc 577*59599516SKenneth E. Jansenc.... --------------------> Boundary Conditions <-------------------- 578*59599516SKenneth E. Jansenc 579*59599516SKenneth E. Jansenc.... compute the Euler boundary conditions 580*59599516SKenneth E. Jansenc 581*59599516SKenneth E. Jansen rou = zero 582*59599516SKenneth E. Jansen do n = 1, nshlb 583*59599516SKenneth E. Jansen nodlcl = lnode(n) 584*59599516SKenneth E. Jansen rou = rou + shpb(:,nodlcl) * BCB(:,n,1) 585*59599516SKenneth E. Jansen enddo 586*59599516SKenneth E. Jansenc 587*59599516SKenneth E. Jansenc.... impose scalar flux boundary conditions 588*59599516SKenneth E. Jansen SclrF = zero 589*59599516SKenneth E. Jansen do n=1,nshlb 590*59599516SKenneth E. Jansen nodlcl = lnode(n) 591*59599516SKenneth E. Jansen SclrF = SclrF + shpb(:,nodlcl) * BCB(:,n,ibb) 592*59599516SKenneth E. Jansen enddo 593*59599516SKenneth E. Jansen 594*59599516SKenneth E. Jansenc 595*59599516SKenneth E. Jansenc.... flop count 596*59599516SKenneth E. Jansenc 597*59599516SKenneth E. Jansen flops = flops + (27+18*nshl+14*nenbl)*npro 598*59599516SKenneth E. Jansenc 599*59599516SKenneth E. Jansenc.... return 600*59599516SKenneth E. Jansenc 601*59599516SKenneth E. Jansen return 602*59599516SKenneth E. Jansen end 603*59599516SKenneth E. Jansen 604