1*59599516SKenneth E. Jansen subroutine e3tau (rho, cp, rmu, 2*59599516SKenneth E. Jansen & u1, u2, u3, 3*59599516SKenneth E. Jansen & con, dxidx, rLyi, 4*59599516SKenneth E. Jansen & rLymi, tau, rk, 5*59599516SKenneth E. Jansen & giju, rTLS, raLS, 6*59599516SKenneth E. Jansen & A0inv, dVdY, cv) 7*59599516SKenneth E. Jansenc 8*59599516SKenneth E. Jansenc---------------------------------------------------------------------- 9*59599516SKenneth E. Jansenc 10*59599516SKenneth E. Jansenc This routine computes the diagonal Tau for least-squares operator. 11*59599516SKenneth E. Jansenc We receive the regular residual L operator and a 12*59599516SKenneth E. Jansenc modified residual L operator, calculate tau, and return values for 13*59599516SKenneth E. Jansenc tau and tau times these operators to maintain the format of past 14*59599516SKenneth E. Jansenc ENSA codes 15*59599516SKenneth E. Jansenc 16*59599516SKenneth E. Jansenc input: 17*59599516SKenneth E. Jansenc rho (npro) : density 18*59599516SKenneth E. Jansenc T (npro) : temperature 19*59599516SKenneth E. Jansenc cp (npro) : specific heat at constant pressure 20*59599516SKenneth E. Jansenc u1 (npro) : x1-velocity component 21*59599516SKenneth E. Jansenc u2 (npro) : x2-velocity component 22*59599516SKenneth E. Jansenc u3 (npro) : x3-velocity component 23*59599516SKenneth E. Jansenc dxidx (npro,nsd,nsd) : inverse of deformation gradient 24*59599516SKenneth E. Jansenc rLyi (npro,nflow) : least-squares residual vector 25*59599516SKenneth E. Jansenc rLymi (npro,nflow) : modified least-squares residual vector 26*59599516SKenneth E. Jansenc 27*59599516SKenneth E. Jansenc output: 28*59599516SKenneth E. Jansenc rLyi (npro,nflow) : least-squares residual vector 29*59599516SKenneth E. Jansenc rLymi (npro,nflow) : modified least-squares residual vector 30*59599516SKenneth E. Jansenc tau (npro,3) : 3 taus 31*59599516SKenneth E. Jansenc 32*59599516SKenneth E. Jansenc 33*59599516SKenneth E. Jansenc Zdenek Johan, Summer 1990. (Modified from e2tau.f) 34*59599516SKenneth E. Jansenc Zdenek Johan, Winter 1991. (Fortran 90) 35*59599516SKenneth E. Jansenc---------------------------------------------------------------------- 36*59599516SKenneth E. Jansenc 37*59599516SKenneth E. Jansen include "common.h" 38*59599516SKenneth E. Jansenc 39*59599516SKenneth E. Jansen dimension rho(npro), con(npro), 40*59599516SKenneth E. Jansen & cp(npro), u1(npro), 41*59599516SKenneth E. Jansen & u2(npro), u3(npro), 42*59599516SKenneth E. Jansen & dxidx(npro,nsd,nsd), rk(npro), 43*59599516SKenneth E. Jansen & tau(npro,5), rLyi(npro,nflow), 44*59599516SKenneth E. Jansen & rLymi(npro,nflow), dVdY(npro,15), 45*59599516SKenneth E. Jansen & rTLS(npro), raLS(npro), 46*59599516SKenneth E. Jansen & rLyitemp(npro,nflow), detgijI(npro) 47*59599516SKenneth E. Jansenc 48*59599516SKenneth E. Jansen dimension rmu(npro), cv(npro), 49*59599516SKenneth E. Jansen & gijd(npro,6), uh1(npro), 50*59599516SKenneth E. Jansen & fact(npro), h2o2u(npro), giju(npro,6), 51*59599516SKenneth E. Jansen & A0inv(npro,15),gijdu(npro,6) 52*59599516SKenneth E. Jansenc 53*59599516SKenneth E. Jansen call e3gijd( dxidx, gijd ) 54*59599516SKenneth E. Jansenc 55*59599516SKenneth E. Jansenc next form the diffusive length scale |u| h_1 = 2 ( ui (gijd)-1 uj)^{1/2} 56*59599516SKenneth E. Jansenc 57*59599516SKenneth E. Jansenc dividing factor for the inverse of gijd 58*59599516SKenneth E. Jansenc 59*59599516SKenneth E. Jansen fact = gijd(:,1) * gijd(:,3) * gijd(:,6) 60*59599516SKenneth E. Jansen & - gijd(:,1) * gijd(:,5) * gijd(:,5) 61*59599516SKenneth E. Jansen & - gijd(:,3) * gijd(:,4) * gijd(:,4) 62*59599516SKenneth E. Jansen & - gijd(:,6) * gijd(:,2) * gijd(:,2) 63*59599516SKenneth E. Jansen & + gijd(:,2) * gijd(:,4) * gijd(:,5) * two 64*59599516SKenneth E. Jansenc 65*59599516SKenneth E. Jansen uh1= u1*u1*(gijd(:,3)*gijd(:,6)-gijd(:,5)*gijd(:,5)) 66*59599516SKenneth E. Jansen & + u2*u2*(gijd(:,1)*gijd(:,6)-gijd(:,4)*gijd(:,4)) 67*59599516SKenneth E. Jansen & + u3*u3*(gijd(:,1)*gijd(:,3)-gijd(:,2)*gijd(:,2)) 68*59599516SKenneth E. Jansen & + two *(u1*u2*(gijd(:,4)*gijd(:,5)-gijd(:,2)*gijd(:,6)) 69*59599516SKenneth E. Jansen & + u1*u3*(gijd(:,2)*gijd(:,5)-gijd(:,4)*gijd(:,3)) 70*59599516SKenneth E. Jansen & + u2*u3*(gijd(:,4)*gijd(:,2)-gijd(:,1)*gijd(:,5))) 71*59599516SKenneth E. Jansenc 72*59599516SKenneth E. Jansenc at this point we have (u h1)^2 * inverse coefficient^2 / 4 73*59599516SKenneth E. Jansenc 74*59599516SKenneth E. Jansenc ^ fact 75*59599516SKenneth E. Jansenc 76*59599516SKenneth E. Jansen uh1= two * sqrt(uh1/fact) 77*59599516SKenneth E. Jansenc 78*59599516SKenneth E. Jansenc next form the advective length scale |u|/h_2 = 2 ( ui (gijd) uj)^{1/2} 79*59599516SKenneth E. Jansenc 80*59599516SKenneth E. Jansen h2o2u = u1*u1*gijd(:,1) 81*59599516SKenneth E. Jansen & + u2*u2*gijd(:,3) 82*59599516SKenneth E. Jansen & + u3*u3*gijd(:,6) 83*59599516SKenneth E. Jansen & +(u1*u2*gijd(:,2) 84*59599516SKenneth E. Jansen & + u1*u3*gijd(:,4) 85*59599516SKenneth E. Jansen & + u2*u3*gijd(:,5))*two + 1.0e-15 !FIX FOR INVALID MESHES 86*59599516SKenneth E. Jansenc 87*59599516SKenneth E. Jansenc at this point we have (2 u / h_2)^2 88*59599516SKenneth E. Jansenc 89*59599516SKenneth E. Jansen 90*59599516SKenneth E. Jansenc call tnanqe(h2o2u,1,"riaconv ") 91*59599516SKenneth E. Jansen 92*59599516SKenneth E. Jansen h2o2u = one / sqrt(h2o2u) ! this flips it over leaves it h_2/(2u) 93*59599516SKenneth E. Jansenc 94*59599516SKenneth E. Jansenc.... diffusive corrections 95*59599516SKenneth E. Jansen 96*59599516SKenneth E. Jansen if(itau.eq.1) then ! tau proposed by for nearly incompressible 97*59599516SKenneth E. Jansenc flows by Guillermo Hauke 98*59599516SKenneth E. Jansenc 99*59599516SKenneth E. Jansenc.... cell Reynold number 100*59599516SKenneth E. Jansenc 101*59599516SKenneth E. Jansen fact=pt5*rho*uh1/rmu 102*59599516SKenneth E. Jansen 103*59599516SKenneth E. Jansenc 104*59599516SKenneth E. Jansenc.... continuity tau 105*59599516SKenneth E. Jansenc 106*59599516SKenneth E. Jansen tau(:,1)=pt5*uh1*min(one,fact)*taucfct 107*59599516SKenneth E. Jansenc 108*59599516SKenneth E. Jansenc... momentum tau 109*59599516SKenneth E. Jansenc 110*59599516SKenneth E. Jansen dts=one/(Dtgl*dtsfct) 111*59599516SKenneth E. Jansen tau(:,2)=min(dts,h2o2u) 112*59599516SKenneth E. Jansen tau(:,2)=tau(:,2)/rho 113*59599516SKenneth E. Jansenc 114*59599516SKenneth E. Jansenc.... energy tau cv=cp/gamma assumed 115*59599516SKenneth E. Jansenc 116*59599516SKenneth E. Jansenc tau(:,3)=gamma*tau(:,2)/cp 117*59599516SKenneth E. Jansen tau(:,3)=tau(:,2)/cv 118*59599516SKenneth E. Jansenc 119*59599516SKenneth E. Jansenc.... diffusive corrections 120*59599516SKenneth E. Jansenc 121*59599516SKenneth E. Jansen if (ipord == 1) then 122*59599516SKenneth E. Jansen celt = pt66 123*59599516SKenneth E. Jansen else if (ipord == 2) then 124*59599516SKenneth E. Jansen celt = pt33 125*59599516SKenneth E. Jansenc celt = pt33*0.04762 126*59599516SKenneth E. Jansen else if (ipord == 3) then 127*59599516SKenneth E. Jansen celt = pt33 !.02 just a guess... 128*59599516SKenneth E. Jansen else if (ipord >= 4) then 129*59599516SKenneth E. Jansen celt = .008 ! yet another guess... 130*59599516SKenneth E. Jansen endif 131*59599516SKenneth E. Jansenc 132*59599516SKenneth E. Jansenc fact=h2o2u*h2o2u*rk*pt66/rmu 133*59599516SKenneth E. Jansen fact=h2o2u*h2o2u*rk*celt/rmu 134*59599516SKenneth E. Jansenc 135*59599516SKenneth E. Jansen tau(:,2)=min(tau(:,2),fact) 136*59599516SKenneth E. Jansen tau(:,3)=min(tau(:,3),fact*rmu/con)*temper 137*59599516SKenneth E. Jansenc 138*59599516SKenneth E. Jansen else if(itau.eq.0) then ! tau proposed by Farzin and Shakib 139*59599516SKenneth E. Jansenc 140*59599516SKenneth E. Jansenc... momentum tau 141*59599516SKenneth E. Jansenc 142*59599516SKenneth E. Jansen 143*59599516SKenneth E. Jansenc 144*59599516SKenneth E. Jansenc... higher order element diffusive correction 145*59599516SKenneth E. Jansenc 146*59599516SKenneth E. Jansen if (ipord == 1) then 147*59599516SKenneth E. Jansen fff = 36.0d0 148*59599516SKenneth E. Jansen else if (ipord == 2) then 149*59599516SKenneth E. Jansen fff = 60.0d0 150*59599516SKenneth E. Jansenc fff = 36.0d0 151*59599516SKenneth E. Jansen else if (ipord == 3) then 152*59599516SKenneth E. Jansen fff = 128.0d0 153*59599516SKenneth E. Jansenc fff = 144.0d0 154*59599516SKenneth E. Jansen endif 155*59599516SKenneth E. Jansen dts = dtsfct*Dtgl 156*59599516SKenneth E. Jansen tau(:,2)=rho**2*((two*dts)**2 157*59599516SKenneth E. Jansen & + u1*(u1*gijd(:,1) + two*(u2*gijd(:,2)+u3*gijd(:,4))) 158*59599516SKenneth E. Jansen & + u2*(u2*gijd(:,3) + two*u3*gijd(:,5)) 159*59599516SKenneth E. Jansen & + u3*u3*gijd(:,6)) 160*59599516SKenneth E. Jansen & +fff*rmu**2*(gijd(:,1)**2 + gijd(:,3)**2 + gijd(:,6)**2 + 161*59599516SKenneth E. Jansen & two*(gijd(:,2)**2 + gijd(:,4)**2 + gijd(:,5)**2)) 162*59599516SKenneth E. Jansen fact=sqrt(tau(:,2)) 163*59599516SKenneth E. Jansen tau(:,1)=pt125*fact/(gijd(:,1)+gijd(:,3)+gijd(:,6))*taucfct 164*59599516SKenneth E. Jansen tau(:,2)=one/fact 165*59599516SKenneth E. Jansenc 166*59599516SKenneth E. Jansenc.... energy tau cv=cp/gamma assumed 167*59599516SKenneth E. Jansenc 168*59599516SKenneth E. Jansen tau(:,3)=tau(:,2)/cv*temper 169*59599516SKenneth E. Jansenc 170*59599516SKenneth E. Jansen endif 171*59599516SKenneth E. Jansenc 172*59599516SKenneth E. Jansenc... finally multiply this tau matrix times the 173*59599516SKenneth E. Jansenc two residual vectors 174*59599516SKenneth E. Jansenc 175*59599516SKenneth E. Jansenc ... calculate (tau Ly) --> (rLyi) 176*59599516SKenneth E. Jansenc ... storing rLyi for the DC term 177*59599516SKenneth E. Jansen if(iDC .ne. 0) rLyitemp=rLyi 178*59599516SKenneth E. Jansen 179*59599516SKenneth E. Jansen if(ires.eq.3 .or. ires .eq. 1) then 180*59599516SKenneth E. Jansen rLyi(:,1) = tau(:,1) * rLyi(:,1) 181*59599516SKenneth E. Jansen rLyi(:,2) = tau(:,2) * rLyi(:,2) 182*59599516SKenneth E. Jansen rLyi(:,3) = tau(:,2) * rLyi(:,3) 183*59599516SKenneth E. Jansen rLyi(:,4) = tau(:,2) * rLyi(:,4) 184*59599516SKenneth E. Jansen rLyi(:,5) = tau(:,3) * rLyi(:,5) 185*59599516SKenneth E. Jansen endif 186*59599516SKenneth E. Jansenc 187*59599516SKenneth E. Jansen if(iDC .ne. 0) then 188*59599516SKenneth E. Jansenc..... calculation of rTLS & raLS for DC term 189*59599516SKenneth E. Jansenc 190*59599516SKenneth E. Jansenc..... calculation of (Ly - S).tau^tilda*(Ly - S) 191*59599516SKenneth E. Jansenc 192*59599516SKenneth E. Jansen rTLS = rLYItemp(:,1) * (rLyi(:,1)*dVdY(:,1) 193*59599516SKenneth E. Jansen & + dVdY(:,2)*rLyi(:,2) + dVdY(:,4)*rLyi(:,3) 194*59599516SKenneth E. Jansen & + rLyi(:,4)*dVdY(:,7) + dVdY(:,11)*rLyi(:,5)) 195*59599516SKenneth E. Jansen & + rLyitemp(:,2) * (rLyi(:,2)*dVdY(:,3) 196*59599516SKenneth E. Jansen & + rLyi(:,3)*dVdY(:,5) + dVdY(:,8)*rLyi(:,4) 197*59599516SKenneth E. Jansen & + rLyi(:,5)*dVdY(:,12)) 198*59599516SKenneth E. Jansen & + rLyitemp(:,3) * (rLyi(:,3)*dVdY(:,6) 199*59599516SKenneth E. Jansen & + dVdY(:,9)*rLyi(:,4) + dVdY(:,13)*rLyi(:,5)) 200*59599516SKenneth E. Jansen & + rLyitemp(:,4) * (rLyi(:,4)*dVdY(:,10) 201*59599516SKenneth E. Jansen & + dVdY(:,14)*rLyi(:,5)) 202*59599516SKenneth E. Jansen & + rLyitemp(:,5) * (dVdY(:,15)*rLyi(:,5)) 203*59599516SKenneth E. Jansen 204*59599516SKenneth E. Jansenc 205*59599516SKenneth E. Jansenc...... calculation of (Ly - S).A0inv*(Ly - S) 206*59599516SKenneth E. Jansenc 207*59599516SKenneth E. Jansen raLS = two*rLyitemp(:,4)*rLyitemp(:,5)*A0inv(:,15) 208*59599516SKenneth E. Jansen & + two*rLyitemp(:,3)*rLyitemp(:,5)*A0inv(:,14) 209*59599516SKenneth E. Jansen & + two*rLyitemp(:,1)*rLyitemp(:,2)*A0inv( :,6) 210*59599516SKenneth E. Jansen & + two*rLyitemp(:,2)*rLyitemp(:,3)*A0inv(:,10) 211*59599516SKenneth E. Jansen & + two*rLyitemp(:,2)*rLyitemp(:,4)*A0inv(:,11) 212*59599516SKenneth E. Jansen & + two*rLyitemp(:,1)*rLyitemp(:,3)*A0inv( :,7) 213*59599516SKenneth E. Jansen & + two*rLyitemp(:,3)*rLyitemp(:,4)*A0inv(:,13) 214*59599516SKenneth E. Jansen & + two*rLyitemp(:,2)*rLyitemp(:,5)*A0inv(:,12) 215*59599516SKenneth E. Jansen & + two*rLyitemp(:,1)*rLyitemp(:,4)*A0inv( :,8) 216*59599516SKenneth E. Jansen & + two*rLyitemp(:,1)*rLyitemp(:,5)*A0inv( :,9) 217*59599516SKenneth E. Jansen & + rLyitemp(:,1)**2*A0inv(:,1) 218*59599516SKenneth E. Jansen & + rLyitemp(:,2)**2*A0inv(:,2) 219*59599516SKenneth E. Jansen & + rLyitemp(:,3)**2*A0inv(:,3) 220*59599516SKenneth E. Jansen & + rLyitemp(:,4)**2*A0inv(:,4) 221*59599516SKenneth E. Jansen & + rLyitemp(:,5)**2*A0inv(:,5) 222*59599516SKenneth E. Jansenc 223*59599516SKenneth E. Jansenc.....****************calculation of giju for DC term*************** 224*59599516SKenneth E. Jansenc 225*59599516SKenneth E. Jansenc.... for the notation of different numbering 226*59599516SKenneth E. Jansenc 227*59599516SKenneth E. Jansen gijdu(:,1)=gijd(:,1) 228*59599516SKenneth E. Jansen gijdu(:,2)=gijd(:,3) 229*59599516SKenneth E. Jansen gijdu(:,3)=gijd(:,6) 230*59599516SKenneth E. Jansen gijdu(:,4)=gijd(:,2) 231*59599516SKenneth E. Jansen gijdu(:,5)=gijd(:,4) 232*59599516SKenneth E. Jansen gijdu(:,6)=gijd(:,5) 233*59599516SKenneth E. Jansenc 234*59599516SKenneth E. Jansenc 235*59599516SKenneth E. Jansen detgijI = one/( 236*59599516SKenneth E. Jansen & gijdu(:,1) * gijdu(:,2) * gijdu(:,3) 237*59599516SKenneth E. Jansen & - gijdu(:,1) * gijdu(:,6) * gijdu(:,6) 238*59599516SKenneth E. Jansen & - gijdu(:,4) * gijdu(:,4) * gijdu(:,3) 239*59599516SKenneth E. Jansen & + gijdu(:,4) * gijdu(:,5) * gijdu(:,6) * two 240*59599516SKenneth E. Jansen & - gijdu(:,5) * gijdu(:,5) * gijdu(:,2) 241*59599516SKenneth E. Jansen & ) 242*59599516SKenneth E. Jansen giju(:,1) = detgijI * (gijdu(:,2)*gijdu(:,3) 243*59599516SKenneth E. Jansen & - gijdu(:,6)**2) 244*59599516SKenneth E. Jansen giju(:,2) = detgijI * (gijdu(:,1)*gijdu(:,3) 245*59599516SKenneth E. Jansen & - gijdu(:,5)**2) 246*59599516SKenneth E. Jansen giju(:,3) = detgijI * (gijdu(:,1)*gijdu(:,2) 247*59599516SKenneth E. Jansen & - gijdu(:,4)**2) 248*59599516SKenneth E. Jansen giju(:,4) = detgijI * (gijdu(:,5)*gijdu(:,6) 249*59599516SKenneth E. Jansen & - gijdu(:,4)*gijdu(:,3) ) 250*59599516SKenneth E. Jansen giju(:,5) = detgijI * (gijdu(:,4)*gijdu(:,6) 251*59599516SKenneth E. Jansen & - gijdu(:,5)*gijdu(:,2) ) 252*59599516SKenneth E. Jansen giju(:,6) = detgijI * (gijdu(:,4)*gijdu(:,5) 253*59599516SKenneth E. Jansen & - gijdu(:,1)*gijdu(:,6) ) 254*59599516SKenneth E. Jansenc 255*59599516SKenneth E. Jansen endif ! end of iDC.ne.0 256*59599516SKenneth E. Jansenc 257*59599516SKenneth E. Jansenc.... calculate (tau Lym) --> (rLymi) 258*59599516SKenneth E. Jansenc 259*59599516SKenneth E. Jansen if(ires.ne.1 ) then 260*59599516SKenneth E. Jansen rLymi(:,1) = tau(:,1) * rLymi(:,1) 261*59599516SKenneth E. Jansen rLymi(:,2) = tau(:,2) * rLymi(:,2) 262*59599516SKenneth E. Jansen rLymi(:,3) = tau(:,2) * rLymi(:,3) 263*59599516SKenneth E. Jansen rLymi(:,4) = tau(:,2) * rLymi(:,4) 264*59599516SKenneth E. Jansen rLymi(:,5) = tau(:,3) * rLymi(:,5) 265*59599516SKenneth E. Jansen endif 266*59599516SKenneth E. Jansenc 267*59599516SKenneth E. Jansenc INCORRECT NOW flops = flops + 255*npro 268*59599516SKenneth E. Jansenc 269*59599516SKenneth E. Jansenc 270*59599516SKenneth E. Jansenc.... return 271*59599516SKenneth E. Jansenc 272*59599516SKenneth E. Jansen return 273*59599516SKenneth E. Jansen end 274*59599516SKenneth E. Jansenc 275*59599516SKenneth E. Jansenc 276*59599516SKenneth E. Jansen 277*59599516SKenneth E. Jansen 278*59599516SKenneth E. Jansen subroutine e3tau_nd (rho, cp, rmu, T, 279*59599516SKenneth E. Jansen & u1, u2, u3, 280*59599516SKenneth E. Jansen & a1, a2, a3, 281*59599516SKenneth E. Jansen & con, dxidx, rLyi, 282*59599516SKenneth E. Jansen & rLymi, Tau, rk, 283*59599516SKenneth E. Jansen & giju, rTLS, raLS, 284*59599516SKenneth E. Jansen & cv, compK, pres, 285*59599516SKenneth E. Jansen & A0inv, dVdY) 286*59599516SKenneth E. Jansenc 287*59599516SKenneth E. Jansenc---------------------------------------------------------------------- 288*59599516SKenneth E. Jansenc 289*59599516SKenneth E. Jansenc This routine computes the diagonal Tau for least-squares operator. 290*59599516SKenneth E. Jansenc We receive the regular residual L operator and a 291*59599516SKenneth E. Jansenc modified residual L operator, calculate tau, and return values for 292*59599516SKenneth E. Jansenc tau and tau times these operators to maintain the format of past 293*59599516SKenneth E. Jansenc ENSA codes 294*59599516SKenneth E. Jansenc 295*59599516SKenneth E. Jansenc input: 296*59599516SKenneth E. Jansenc rho (npro) : density 297*59599516SKenneth E. Jansenc T (npro) : temperature 298*59599516SKenneth E. Jansenc cp (npro) : specific heat at constant pressure 299*59599516SKenneth E. Jansenc u1 (npro) : x1-velocity component 300*59599516SKenneth E. Jansenc u2 (npro) : x2-velocity component 301*59599516SKenneth E. Jansenc u3 (npro) : x3-velocity component 302*59599516SKenneth E. Jansenc dxidx (npro,nsd,nsd) : inverse of deformation gradient 303*59599516SKenneth E. Jansenc rLyi (npro,nflow) : least-squares residual vector 304*59599516SKenneth E. Jansenc rLymi (npro,nflow) : modified least-squares residual vector 305*59599516SKenneth E. Jansenc 306*59599516SKenneth E. Jansenc output: 307*59599516SKenneth E. Jansenc rLyi (npro,nflow) : least-squares residual vector 308*59599516SKenneth E. Jansenc rLymi (npro,nflow) : modified least-squares residual vector 309*59599516SKenneth E. Jansenc Mtau (npro,5,5) : Matrix of Stabilized Parameters 310*59599516SKenneth E. Jansenc 311*59599516SKenneth E. Jansenc 312*59599516SKenneth E. Jansenc Zdenek Johan, Summer 1990. (Modified from e2tau.f) 313*59599516SKenneth E. Jansenc Zdenek Johan, Winter 1991. (Fortran 90) 314*59599516SKenneth E. Jansenc---------------------------------------------------------------------- 315*59599516SKenneth E. Jansenc 316*59599516SKenneth E. Jansen include "common.h" 317*59599516SKenneth E. Jansenc 318*59599516SKenneth E. Jansen dimension rho(npro), con(npro), 319*59599516SKenneth E. Jansen & cp(npro), u1(npro), 320*59599516SKenneth E. Jansen & u2(npro), u3(npro), 321*59599516SKenneth E. Jansen & dxidx(npro,nsd,nsd), rk(npro), 322*59599516SKenneth E. Jansen & rLyi(npro,nflow), 323*59599516SKenneth E. Jansen & rLymi(npro,nflow), dVdY(npro,15), 324*59599516SKenneth E. Jansen & rTLS(npro), raLS(npro), 325*59599516SKenneth E. Jansen & rLyitemp(npro,nflow), detgijI(npro) 326*59599516SKenneth E. Jansenc 327*59599516SKenneth E. Jansen dimension rmu(npro), cv(npro), 328*59599516SKenneth E. Jansen & gijd(npro,6), 329*59599516SKenneth E. Jansen & fact(npro), giju(npro,6), 330*59599516SKenneth E. Jansen & A0inv(npro,15),gijdu(npro,6), compK(npro,10), 331*59599516SKenneth E. Jansen & a1(npro), a2(npro), a3(npro), 332*59599516SKenneth E. Jansen & T(npro), pres(npro), alphap(npro), 333*59599516SKenneth E. Jansen & betaT(npro), gamb(npro), c(npro), 334*59599516SKenneth E. Jansen & u(npro), eb1(npro), Q(npro,5,5), 335*59599516SKenneth E. Jansen & rlam(npro,5), eigmax(npro,5), Pe(npro), 336*59599516SKenneth E. Jansen & Ak(npro), B(npro), D(npro), E(npro), 337*59599516SKenneth E. Jansen & STau(npro,15), Tau(npro,nflow,nflow) 338*59599516SKenneth E. Jansen 339*59599516SKenneth E. Jansen 340*59599516SKenneth E. Jansenc... build some necessary quantities at integration point: 341*59599516SKenneth E. Jansen 342*59599516SKenneth E. Jansenc alfap = one / T 343*59599516SKenneth E. Jansenc betaT = one / pres 344*59599516SKenneth E. Jansen gamb = gamma1 345*59599516SKenneth E. Jansen c = sqrt( (gamma * Rgas) * T ) 346*59599516SKenneth E. Jansen u = sqrt(u1**2+u2**2+u3**2) 347*59599516SKenneth E. Jansen eb1 = cp*T - pt5*(u1**2+u2**2+u3**2) 348*59599516SKenneth E. Jansen 349*59599516SKenneth E. Jansenc... get eigenvectors for diagonalizing Tau_adv (e.v) before final rotations 350*59599516SKenneth E. Jansenc... Note: the ordering of eigenvectors corresponds to the following 351*59599516SKenneth E. Jansenc... ordering of the eigenvalues in the 1-st Euler Jacobian rotated to 352*59599516SKenneth E. Jansenc... the streamline coordinates 353*59599516SKenneth E. Jansen 354*59599516SKenneth E. Jansenc |u+c | 355*59599516SKenneth E. Jansenc | u | 356*59599516SKenneth E. Jansenc | u | 357*59599516SKenneth E. Jansenc | u | ! for origins of this see Beam, Warming, Hyett 358*59599516SKenneth E. Jansenc | u-c| ! Mathematics of Computation vol. 29 No. 132 p. 1037 359*59599516SKenneth E. Jansen 360*59599516SKenneth E. Jansenc... different ordering assumed in Shakib/Johan entropy vars. code 361*59599516SKenneth E. Jansen 362*59599516SKenneth E. Jansen 363*59599516SKenneth E. Jansen 364*59599516SKenneth E. Jansen call e3eig1 (rho, T, cp, 365*59599516SKenneth E. Jansen & gamb, c, u1, 366*59599516SKenneth E. Jansen & u2, u3, a1, 367*59599516SKenneth E. Jansen & a2, a3, eb1, 368*59599516SKenneth E. Jansen & dxidx, u, Q) 369*59599516SKenneth E. Jansen 370*59599516SKenneth E. Jansenc... Perform a Jacobi rotation on the Lambda matrix as well as adjust 371*59599516SKenneth E. Jansenc... the eigenvectors. Tau still remains in entropy variables. 372*59599516SKenneth E. Jansen 373*59599516SKenneth E. Jansen 374*59599516SKenneth E. Jansen 375*59599516SKenneth E. Jansen call e3eig2 (u, c, a1, 376*59599516SKenneth E. Jansen & a2, a3, rlam, 377*59599516SKenneth E. Jansen & Q, eigmax) 378*59599516SKenneth E. Jansen 379*59599516SKenneth E. Jansenc 380*59599516SKenneth E. Jansenc.... invert the eigenvalues 381*59599516SKenneth E. Jansenc 382*59599516SKenneth E. Jansen 383*59599516SKenneth E. Jansen 384*59599516SKenneth E. Jansen where (rlam .gt. ((epsM**2) * eigmax)) 385*59599516SKenneth E. Jansen rlam = one / sqrt(rlam) 386*59599516SKenneth E. Jansen elsewhere 387*59599516SKenneth E. Jansen rlam = zero 388*59599516SKenneth E. Jansen endwhere 389*59599516SKenneth E. Jansen 390*59599516SKenneth E. Jansenc 391*59599516SKenneth E. Jansenc.... flop count 392*59599516SKenneth E. Jansenc 393*59599516SKenneth E. Jansen flops = flops + 65*npro 394*59599516SKenneth E. Jansen 395*59599516SKenneth E. Jansenc.... reduce the diffusion contribution 396*59599516SKenneth E. Jansenc 397*59599516SKenneth E. Jansen 398*59599516SKenneth E. Jansen if (Navier .eq. 1) then 399*59599516SKenneth E. Jansenc 400*59599516SKenneth E. Jansenc.... calculate sigma 401*59599516SKenneth E. Jansenc 402*59599516SKenneth E. Jansen 403*59599516SKenneth E. Jansen do i = 1, nflow ! diff. corr for every mode of Tau 404*59599516SKenneth E. Jansen 405*59599516SKenneth E. Jansen c(:) = pt33 * ( 406*59599516SKenneth E. Jansen & Q(:,2,i) * ( compK(:, 1) * Q(:,2,i) + compK(:, 2) * Q(:,3,i) 407*59599516SKenneth E. Jansen & + compK(:, 4) * Q(:,4,i) + compK(:, 7) * Q(:,5,i) ) 408*59599516SKenneth E. Jansen & + Q(:,3,i) * ( compK(:, 2) * Q(:,2,i) + compK(:, 3) * Q(:,3,i) 409*59599516SKenneth E. Jansen & + compK(:, 5) * Q(:,4,i) + compK(:, 8) * Q(:,5,i) ) 410*59599516SKenneth E. Jansen & + Q(:,4,i) * ( compK(:, 4) * Q(:,2,i) + compK(:, 5) * Q(:,3,i) 411*59599516SKenneth E. Jansen & + compK(:, 6) * Q(:,4,i) + compK(:, 9) * Q(:,5,i) ) 412*59599516SKenneth E. Jansen & + Q(:,5,i) * ( compK(:, 7) * Q(:,2,i) + compK(:, 8) * Q(:,3,i) 413*59599516SKenneth E. Jansen & + compK(:, 9) * Q(:,4,i) + compK(:,10) * Q(:,5,i) ) 414*59599516SKenneth E. Jansen & ) 415*59599516SKenneth E. Jansen 416*59599516SKenneth E. Jansenc... get Peclet Number 417*59599516SKenneth E. Jansen 418*59599516SKenneth E. Jansen 419*59599516SKenneth E. Jansen Pe(:) = one / (c(:)*rlam(:,i)) 420*59599516SKenneth E. Jansen 421*59599516SKenneth E. Jansen 422*59599516SKenneth E. Jansenc 423*59599516SKenneth E. Jansenc... branch out into different polynomial orders 424*59599516SKenneth E. Jansenc 425*59599516SKenneth E. Jansen 426*59599516SKenneth E. Jansen 427*59599516SKenneth E. Jansen if (ipord == 1) then ! linears - l = l^a*(coth(Pe)-1/Pe) 428*59599516SKenneth E. Jansen ! approx. l = l^a*min(1/3*Pe,1) 429*59599516SKenneth E. Jansen rlam(:,i) = rlam(:,i)*min(pt33*Pe(:),one) 430*59599516SKenneth E. Jansen 431*59599516SKenneth E. Jansen endif 432*59599516SKenneth E. Jansen 433*59599516SKenneth E. Jansen if (ipord == 2) then ! quads - Codina, CMAME' 92 434*59599516SKenneth E. Jansen ! approx. l = l^a*min(1/6*Pe,1/2) 435*59599516SKenneth E. Jansen rlam(:,i) = rlam(:,i)*min(pt33*pt5*Pe(:),pt5) 436*59599516SKenneth E. Jansen 437*59599516SKenneth E. Jansen endif 438*59599516SKenneth E. Jansen 439*59599516SKenneth E. Jansen if (ipord == 3) then ! cubics - Recent Work 440*59599516SKenneth E. Jansen ! l = l^a*1/Pe*b 441*59599516SKenneth E. Jansen ! b is a real root of the 442*59599516SKenneth E. Jansen ! following polynomial: 443*59599516SKenneth E. Jansen ! b^3+(-Pe*coth(Pe)b^2+(6/15*Pe^2-Pe*coth(Pe)+1)b+ 444*59599516SKenneth E. Jansen ! +(-1/15*Pe^3*coth(Pe)+6/15*Pe^2-Pe*coth(Pe)+1) = 0 445*59599516SKenneth E. Jansen ! proceed setting up newton iteration w/ initial 446*59599516SKenneth E. Jansen ! guess coming from the quad estimate. 447*59599516SKenneth E. Jansen 448*59599516SKenneth E. Jansen Ak(:)=1.0 ! get parameters for iteration 449*59599516SKenneth E. Jansen 450*59599516SKenneth E. Jansen where(Pe.lt.5.0) ! approx. to hyp. cothangent 451*59599516SKenneth E. Jansen alphap = exp(Pe) 452*59599516SKenneth E. Jansen betaT = exp(-Pe) 453*59599516SKenneth E. Jansen c = (alphap+betaT)/(alphap-betaT) 454*59599516SKenneth E. Jansen elsewhere 455*59599516SKenneth E. Jansen c = one 456*59599516SKenneth E. Jansen endwhere 457*59599516SKenneth E. Jansen 458*59599516SKenneth E. Jansen B= -Pe*c + Ak 459*59599516SKenneth E. Jansen D= 0.4 * (Pe**2) + B 460*59599516SKenneth E. Jansen E=-0.066666667 * (Pe**3) * c +D 461*59599516SKenneth E. Jansen 462*59599516SKenneth E. Jansen ! initial guess, use betaT 463*59599516SKenneth E. Jansen betaT(:) = Pe(:)*min(pt33*pt5*Pe(:),pt5) 464*59599516SKenneth E. Jansen 465*59599516SKenneth E. Jansen ! iteration - 3 iterations sufficient 466*59599516SKenneth E. Jansen do j = 1, 3 467*59599516SKenneth E. Jansen 468*59599516SKenneth E. Jansen betaT=betaT-(Ak*betaT**3+B*betaT**2+D*betaT+E)/(3*Ak 469*59599516SKenneth E. Jansen & *betaT**2+2*B*betaT+D) 470*59599516SKenneth E. Jansen enddo 471*59599516SKenneth E. Jansen 472*59599516SKenneth E. Jansen rlam(:,i) = rlam(:,i)*(1/Pe(:))*betaT(:) 473*59599516SKenneth E. Jansen 474*59599516SKenneth E. Jansen endif ! done w/ different polynomial orders 475*59599516SKenneth E. Jansen 476*59599516SKenneth E. Jansen enddo ! done with loop over dof's 477*59599516SKenneth E. Jansen 478*59599516SKenneth E. Jansen endif ! done with diffusive correction 479*59599516SKenneth E. Jansen 480*59599516SKenneth E. Jansen 481*59599516SKenneth E. Jansenc 482*59599516SKenneth E. Jansenc.... form Tau (symmetric - entropy variables - then convert) 483*59599516SKenneth E. Jansenc 484*59599516SKenneth E. Jansen STau(:, 1) = rlam(:,1) * Q(:,1,1) * Q(:,1,1) + 485*59599516SKenneth E. Jansen & rlam(:,2) * Q(:,1,2) * Q(:,1,2) + 486*59599516SKenneth E. Jansen & rlam(:,3) * Q(:,1,3) * Q(:,1,3) + 487*59599516SKenneth E. Jansen & rlam(:,4) * Q(:,1,4) * Q(:,1,4) + 488*59599516SKenneth E. Jansen & rlam(:,5) * Q(:,1,5) * Q(:,1,5) 489*59599516SKenneth E. Jansenc 490*59599516SKenneth E. Jansen STau(:, 2) = rlam(:,1) * Q(:,1,1) * Q(:,2,1) + 491*59599516SKenneth E. Jansen & rlam(:,2) * Q(:,1,2) * Q(:,2,2) + 492*59599516SKenneth E. Jansen & rlam(:,3) * Q(:,1,3) * Q(:,2,3) + 493*59599516SKenneth E. Jansen & rlam(:,4) * Q(:,1,4) * Q(:,2,4) + 494*59599516SKenneth E. Jansen & rlam(:,5) * Q(:,1,5) * Q(:,2,5) 495*59599516SKenneth E. Jansenc 496*59599516SKenneth E. Jansen STau(:, 3) = rlam(:,1) * Q(:,2,1) * Q(:,2,1) + 497*59599516SKenneth E. Jansen & rlam(:,2) * Q(:,2,2) * Q(:,2,2) + 498*59599516SKenneth E. Jansen & rlam(:,3) * Q(:,2,3) * Q(:,2,3) + 499*59599516SKenneth E. Jansen & rlam(:,4) * Q(:,2,4) * Q(:,2,4) + 500*59599516SKenneth E. Jansen & rlam(:,5) * Q(:,2,5) * Q(:,2,5) 501*59599516SKenneth E. Jansenc 502*59599516SKenneth E. Jansen STau(:, 4) = rlam(:,1) * Q(:,1,1) * Q(:,3,1) + 503*59599516SKenneth E. Jansen & rlam(:,2) * Q(:,1,2) * Q(:,3,2) + 504*59599516SKenneth E. Jansen & rlam(:,3) * Q(:,1,3) * Q(:,3,3) + 505*59599516SKenneth E. Jansen & rlam(:,4) * Q(:,1,4) * Q(:,3,4) + 506*59599516SKenneth E. Jansen & rlam(:,5) * Q(:,1,5) * Q(:,3,5) 507*59599516SKenneth E. Jansenc 508*59599516SKenneth E. Jansen STau(:, 5) = rlam(:,1) * Q(:,2,1) * Q(:,3,1) + 509*59599516SKenneth E. Jansen & rlam(:,2) * Q(:,2,2) * Q(:,3,2) + 510*59599516SKenneth E. Jansen & rlam(:,3) * Q(:,2,3) * Q(:,3,3) + 511*59599516SKenneth E. Jansen & rlam(:,4) * Q(:,2,4) * Q(:,3,4) + 512*59599516SKenneth E. Jansen & rlam(:,5) * Q(:,2,5) * Q(:,3,5) 513*59599516SKenneth E. Jansenc 514*59599516SKenneth E. Jansen STau(:, 6) = rlam(:,1) * Q(:,3,1) * Q(:,3,1) + 515*59599516SKenneth E. Jansen & rlam(:,2) * Q(:,3,2) * Q(:,3,2) + 516*59599516SKenneth E. Jansen & rlam(:,3) * Q(:,3,3) * Q(:,3,3) + 517*59599516SKenneth E. Jansen & rlam(:,4) * Q(:,3,4) * Q(:,3,4) + 518*59599516SKenneth E. Jansen & rlam(:,5) * Q(:,3,5) * Q(:,3,5) 519*59599516SKenneth E. Jansenc 520*59599516SKenneth E. Jansen STau(:, 7) = rlam(:,1) * Q(:,1,1) * Q(:,4,1) + 521*59599516SKenneth E. Jansen & rlam(:,2) * Q(:,1,2) * Q(:,4,2) + 522*59599516SKenneth E. Jansen & rlam(:,3) * Q(:,1,3) * Q(:,4,3) + 523*59599516SKenneth E. Jansen & rlam(:,4) * Q(:,1,4) * Q(:,4,4) + 524*59599516SKenneth E. Jansen & rlam(:,5) * Q(:,1,5) * Q(:,4,5) 525*59599516SKenneth E. Jansenc 526*59599516SKenneth E. Jansen STau(:, 8) = rlam(:,1) * Q(:,2,1) * Q(:,4,1) + 527*59599516SKenneth E. Jansen & rlam(:,2) * Q(:,2,2) * Q(:,4,2) + 528*59599516SKenneth E. Jansen & rlam(:,3) * Q(:,2,3) * Q(:,4,3) + 529*59599516SKenneth E. Jansen & rlam(:,4) * Q(:,2,4) * Q(:,4,4) + 530*59599516SKenneth E. Jansen & rlam(:,5) * Q(:,2,5) * Q(:,4,5) 531*59599516SKenneth E. Jansenc 532*59599516SKenneth E. Jansen STau(:, 9) = rlam(:,1) * Q(:,3,1) * Q(:,4,1) + 533*59599516SKenneth E. Jansen & rlam(:,2) * Q(:,3,2) * Q(:,4,2) + 534*59599516SKenneth E. Jansen & rlam(:,3) * Q(:,3,3) * Q(:,4,3) + 535*59599516SKenneth E. Jansen & rlam(:,4) * Q(:,3,4) * Q(:,4,4) + 536*59599516SKenneth E. Jansen & rlam(:,5) * Q(:,3,5) * Q(:,4,5) 537*59599516SKenneth E. Jansenc 538*59599516SKenneth E. Jansen STau(:,10) = rlam(:,1) * Q(:,4,1) * Q(:,4,1) + 539*59599516SKenneth E. Jansen & rlam(:,2) * Q(:,4,2) * Q(:,4,2) + 540*59599516SKenneth E. Jansen & rlam(:,3) * Q(:,4,3) * Q(:,4,3) + 541*59599516SKenneth E. Jansen & rlam(:,4) * Q(:,4,4) * Q(:,4,4) + 542*59599516SKenneth E. Jansen & rlam(:,5) * Q(:,4,5) * Q(:,4,5) 543*59599516SKenneth E. Jansenc 544*59599516SKenneth E. Jansen STau(:,11) = rlam(:,1) * Q(:,1,1) * Q(:,5,1) + 545*59599516SKenneth E. Jansen & rlam(:,2) * Q(:,1,2) * Q(:,5,2) + 546*59599516SKenneth E. Jansen & rlam(:,3) * Q(:,1,3) * Q(:,5,3) + 547*59599516SKenneth E. Jansen & rlam(:,4) * Q(:,1,4) * Q(:,5,4) + 548*59599516SKenneth E. Jansen & rlam(:,5) * Q(:,1,5) * Q(:,5,5) 549*59599516SKenneth E. Jansenc 550*59599516SKenneth E. Jansen STau(:,12) = rlam(:,1) * Q(:,2,1) * Q(:,5,1) + 551*59599516SKenneth E. Jansen & rlam(:,2) * Q(:,2,2) * Q(:,5,2) + 552*59599516SKenneth E. Jansen & rlam(:,3) * Q(:,2,3) * Q(:,5,3) + 553*59599516SKenneth E. Jansen & rlam(:,4) * Q(:,2,4) * Q(:,5,4) + 554*59599516SKenneth E. Jansen & rlam(:,5) * Q(:,2,5) * Q(:,5,5) 555*59599516SKenneth E. Jansenc 556*59599516SKenneth E. Jansen STau(:,13) = rlam(:,1) * Q(:,3,1) * Q(:,5,1) + 557*59599516SKenneth E. Jansen & rlam(:,2) * Q(:,3,2) * Q(:,5,2) + 558*59599516SKenneth E. Jansen & rlam(:,3) * Q(:,3,3) * Q(:,5,3) + 559*59599516SKenneth E. Jansen & rlam(:,4) * Q(:,3,4) * Q(:,5,4) + 560*59599516SKenneth E. Jansen & rlam(:,5) * Q(:,3,5) * Q(:,5,5) 561*59599516SKenneth E. Jansenc 562*59599516SKenneth E. Jansen STau(:,14) = rlam(:,1) * Q(:,4,1) * Q(:,5,1) + 563*59599516SKenneth E. Jansen & rlam(:,2) * Q(:,4,2) * Q(:,5,2) + 564*59599516SKenneth E. Jansen & rlam(:,3) * Q(:,4,3) * Q(:,5,3) + 565*59599516SKenneth E. Jansen & rlam(:,4) * Q(:,4,4) * Q(:,5,4) + 566*59599516SKenneth E. Jansen & rlam(:,5) * Q(:,4,5) * Q(:,5,5) 567*59599516SKenneth E. Jansenc 568*59599516SKenneth E. Jansen STau(:,15) = rlam(:,1) * Q(:,5,1) * Q(:,5,1) + 569*59599516SKenneth E. Jansen & rlam(:,2) * Q(:,5,2) * Q(:,5,2) + 570*59599516SKenneth E. Jansen & rlam(:,3) * Q(:,5,3) * Q(:,5,3) + 571*59599516SKenneth E. Jansen & rlam(:,4) * Q(:,5,4) * Q(:,5,4) + 572*59599516SKenneth E. Jansen & rlam(:,5) * Q(:,5,5) * Q(:,5,5) 573*59599516SKenneth E. Jansen 574*59599516SKenneth E. Jansen 575*59599516SKenneth E. Jansenc 576*59599516SKenneth E. Jansenc... Form Primitive Variable Tau as [dY/dV]*tilde{Tau}, 577*59599516SKenneth E. Jansenc... see G.Hauke's thesis appendix for [dY/dV] matrix 578*59599516SKenneth E. Jansenc 579*59599516SKenneth E. Jansen betaT = cp*T + pt5*(u1**2+u2**2+u3**2) !reuse betaT 580*59599516SKenneth E. Jansen 581*59599516SKenneth E. Jansen Tau(:,1,1) = rho*T*(STau(:,1)+u1*STau(:,2)+ 582*59599516SKenneth E. Jansen & u2*STau(:,4)+u3*STau(:,7)+betaT*STau(:,11)) 583*59599516SKenneth E. Jansen Tau(:,1,2) = rho*T*(STau(:,2)+u1*STau(:,3)+ 584*59599516SKenneth E. Jansen & u2*STau(:,5)+u3*STau(:,8)+betaT*STau(:,12)) 585*59599516SKenneth E. Jansen Tau(:,1,3) = rho*T*(STau(:,4)+u1*STau(:,5)+ 586*59599516SKenneth E. Jansen & u2*STau(:,6)+u3*STau(:,9)+betaT*STau(:,13)) 587*59599516SKenneth E. Jansen Tau(:,1,4) = rho*T*(STau(:,7)+u1*STau(:,8)+ 588*59599516SKenneth E. Jansen & u2*STau(:,9)+u3*STau(:,10)+betaT*STau(:,14)) 589*59599516SKenneth E. Jansen Tau(:,1,5) = rho*T*(STau(:,11)+u1*STau(:,12)+ 590*59599516SKenneth E. Jansen & u2*STau(:,13)+u3*STau(:,14)+betaT*STau(:,15)) 591*59599516SKenneth E. Jansen 592*59599516SKenneth E. Jansen 593*59599516SKenneth E. Jansen Tau(:,2,1) = T(:)*(STau(:,2) + u1(:)*STau(:,11)) 594*59599516SKenneth E. Jansen Tau(:,2,2) = T(:)*(STau(:,3) + u1(:)*STau(:,12)) 595*59599516SKenneth E. Jansen Tau(:,2,3) = T(:)*(STau(:,5) + u1(:)*STau(:,13)) 596*59599516SKenneth E. Jansen Tau(:,2,4) = T(:)*(STau(:,8) + u1(:)*STau(:,14)) 597*59599516SKenneth E. Jansen Tau(:,2,5) = T(:)*(STau(:,12) + u1(:)*STau(:,15)) 598*59599516SKenneth E. Jansen 599*59599516SKenneth E. Jansen Tau(:,3,1) = T(:)*(STau(:,4) + u2(:)*STau(:,11)) 600*59599516SKenneth E. Jansen Tau(:,3,2) = T(:)*(STau(:,5) + u2(:)*STau(:,12)) 601*59599516SKenneth E. Jansen Tau(:,3,3) = T(:)*(STau(:,6) + u2(:)*STau(:,13)) 602*59599516SKenneth E. Jansen Tau(:,3,4) = T(:)*(STau(:,9) + u2(:)*STau(:,14)) 603*59599516SKenneth E. Jansen Tau(:,3,5) = T(:)*(STau(:,13) + u2(:)*STau(:,15)) 604*59599516SKenneth E. Jansen 605*59599516SKenneth E. Jansen Tau(:,4,1) = T(:)*(STau(:,7) + u3(:)*STau(:,11)) 606*59599516SKenneth E. Jansen Tau(:,4,2) = T(:)*(STau(:,8) + u3(:)*STau(:,12)) 607*59599516SKenneth E. Jansen Tau(:,4,3) = T(:)*(STau(:,9) + u3(:)*STau(:,13)) 608*59599516SKenneth E. Jansen Tau(:,4,4) = T(:)*(STau(:,10) + u3(:)*STau(:,14)) 609*59599516SKenneth E. Jansen Tau(:,4,5) = T(:)*(STau(:,14) + u3(:)*STau(:,15)) 610*59599516SKenneth E. Jansen 611*59599516SKenneth E. Jansen betaT = T**2 612*59599516SKenneth E. Jansen 613*59599516SKenneth E. Jansen Tau(:,5,1) = betaT(:)*STau(:,11) 614*59599516SKenneth E. Jansen Tau(:,5,2) = betaT(:)*STau(:,12) 615*59599516SKenneth E. Jansen Tau(:,5,3) = betaT(:)*STau(:,13) 616*59599516SKenneth E. Jansen Tau(:,5,4) = betaT(:)*STau(:,14) 617*59599516SKenneth E. Jansen Tau(:,5,5) = betaT(:)*STau(:,15) 618*59599516SKenneth E. Jansen 619*59599516SKenneth E. Jansen 620*59599516SKenneth E. Jansenc 621*59599516SKenneth E. Jansenc... done with conversion to pressure primitive variables 622*59599516SKenneth E. Jansenc... now need to interface with the rest of the computations 623*59599516SKenneth E. Jansenc 624*59599516SKenneth E. Jansen 625*59599516SKenneth E. Jansenc... finally multiply this tau matrix times the 626*59599516SKenneth E. Jansenc two residual vectors 627*59599516SKenneth E. Jansenc 628*59599516SKenneth E. Jansenc ... calculate (tau Ly) --> (rLyi) 629*59599516SKenneth E. Jansenc ... storing rLyi for the DC term 630*59599516SKenneth E. Jansen 631*59599516SKenneth E. Jansen 632*59599516SKenneth E. Jansen if(iDC .ne. 0) rLyitemp=rLyi 633*59599516SKenneth E. Jansen 634*59599516SKenneth E. Jansen if(ires.eq.3 .or. ires .eq. 1) then 635*59599516SKenneth E. Jansen eigmax = rLyi !reuse 636*59599516SKenneth E. Jansen rLyi = zero 637*59599516SKenneth E. Jansen do i = 1, nflow 638*59599516SKenneth E. Jansen do j = 1, nflow 639*59599516SKenneth E. Jansen rLyi(:,i) = rLyi(:,i) + Tau(:,i,j) * eigmax(:,j) 640*59599516SKenneth E. Jansen enddo 641*59599516SKenneth E. Jansen enddo 642*59599516SKenneth E. Jansen endif 643*59599516SKenneth E. Jansen 644*59599516SKenneth E. Jansen 645*59599516SKenneth E. Jansen if(iDC .ne. 0) then 646*59599516SKenneth E. Jansenc.....calculation of rTLS & raLS for DC term 647*59599516SKenneth E. Jansenc 648*59599516SKenneth E. Jansenc.....calculation of (Ly - S).tau^tilda*(Ly - S) 649*59599516SKenneth E. Jansenc 650*59599516SKenneth E. Jansen rTLS = rLYItemp(:,1) * (rLyi(:,1)*dVdY(:,1) 651*59599516SKenneth E. Jansen & + dVdY(:,2)*rLyi(:,2) + dVdY(:,4)*rLyi(:,3) 652*59599516SKenneth E. Jansen & + rLyi(:,4)*dVdY(:,7) + dVdY(:,11)*rLyi(:,5)) 653*59599516SKenneth E. Jansen & + rLyitemp(:,2) * (rLyi(:,2)*dVdY(:,3) 654*59599516SKenneth E. Jansen & + rLyi(:,3)*dVdY(:,5) + dVdY(:,8)*rLyi(:,4) 655*59599516SKenneth E. Jansen & + rLyi(:,5)*dVdY(:,12)) 656*59599516SKenneth E. Jansen & + rLyitemp(:,3) * (rLyi(:,3)*dVdY(:,6) 657*59599516SKenneth E. Jansen & + dVdY(:,9)*rLyi(:,4) + dVdY(:,13)*rLyi(:,5)) 658*59599516SKenneth E. Jansen & + rLyitemp(:,4) * (rLyi(:,4)*dVdY(:,10) 659*59599516SKenneth E. Jansen & + dVdY(:,14)*rLyi(:,5)) 660*59599516SKenneth E. Jansen & + rLyitemp(:,5) * (dVdY(:,15)*rLyi(:,5)) 661*59599516SKenneth E. Jansen 662*59599516SKenneth E. Jansenc 663*59599516SKenneth E. Jansenc...... calculation of (Ly - S).A0inv*(Ly - S) 664*59599516SKenneth E. Jansenc 665*59599516SKenneth E. Jansen raLS = two*rLyitemp(:,4)*rLyitemp(:,5)*A0inv(:,15) 666*59599516SKenneth E. Jansen & + two*rLyitemp(:,3)*rLyitemp(:,5)*A0inv(:,14) 667*59599516SKenneth E. Jansen & + two*rLyitemp(:,1)*rLyitemp(:,2)*A0inv( :,6) 668*59599516SKenneth E. Jansen & + two*rLyitemp(:,2)*rLyitemp(:,3)*A0inv(:,10) 669*59599516SKenneth E. Jansen & + two*rLyitemp(:,2)*rLyitemp(:,4)*A0inv(:,11) 670*59599516SKenneth E. Jansen & + two*rLyitemp(:,1)*rLyitemp(:,3)*A0inv( :,7) 671*59599516SKenneth E. Jansen & + two*rLyitemp(:,3)*rLyitemp(:,4)*A0inv(:,13) 672*59599516SKenneth E. Jansen & + two*rLyitemp(:,2)*rLyitemp(:,5)*A0inv(:,12) 673*59599516SKenneth E. Jansen & + two*rLyitemp(:,1)*rLyitemp(:,4)*A0inv( :,8) 674*59599516SKenneth E. Jansen & + two*rLyitemp(:,1)*rLyitemp(:,5)*A0inv( :,9) 675*59599516SKenneth E. Jansen & + rLyitemp(:,1)**2*A0inv(:,1) 676*59599516SKenneth E. Jansen & + rLyitemp(:,2)**2*A0inv(:,2) 677*59599516SKenneth E. Jansen & + rLyitemp(:,3)**2*A0inv(:,3) 678*59599516SKenneth E. Jansen & + rLyitemp(:,4)**2*A0inv(:,4) 679*59599516SKenneth E. Jansen & + rLyitemp(:,5)**2*A0inv(:,5) 680*59599516SKenneth E. Jansenc 681*59599516SKenneth E. Jansenc.....****************calculation of giju for DC term*************** 682*59599516SKenneth E. Jansenc 683*59599516SKenneth E. Jansenc.... for the notation of different numbering 684*59599516SKenneth E. Jansenc 685*59599516SKenneth E. Jansen call e3gijd( dxidx, gijd ) 686*59599516SKenneth E. Jansen 687*59599516SKenneth E. Jansen gijdu(:,1)=gijd(:,1) 688*59599516SKenneth E. Jansen gijdu(:,2)=gijd(:,3) 689*59599516SKenneth E. Jansen gijdu(:,3)=gijd(:,6) 690*59599516SKenneth E. Jansen gijdu(:,4)=gijd(:,2) 691*59599516SKenneth E. Jansen gijdu(:,5)=gijd(:,4) 692*59599516SKenneth E. Jansen gijdu(:,6)=gijd(:,5) 693*59599516SKenneth E. Jansenc 694*59599516SKenneth E. Jansenc 695*59599516SKenneth E. Jansen detgijI = one/( 696*59599516SKenneth E. Jansen & gijdu(:,1) * gijdu(:,2) * gijdu(:,3) 697*59599516SKenneth E. Jansen & - gijdu(:,1) * gijdu(:,6) * gijdu(:,6) 698*59599516SKenneth E. Jansen & - gijdu(:,4) * gijdu(:,4) * gijdu(:,3) 699*59599516SKenneth E. Jansen & + gijdu(:,4) * gijdu(:,5) * gijdu(:,6) * two 700*59599516SKenneth E. Jansen & - gijdu(:,5) * gijdu(:,5) * gijdu(:,2) 701*59599516SKenneth E. Jansen & ) 702*59599516SKenneth E. Jansen giju(:,1) = detgijI * (gijdu(:,2)*gijdu(:,3) 703*59599516SKenneth E. Jansen & - gijdu(:,6)**2) 704*59599516SKenneth E. Jansen giju(:,2) = detgijI * (gijdu(:,1)*gijdu(:,3) 705*59599516SKenneth E. Jansen & - gijdu(:,5)**2) 706*59599516SKenneth E. Jansen giju(:,3) = detgijI * (gijdu(:,1)*gijdu(:,2) 707*59599516SKenneth E. Jansen & - gijdu(:,4)**2) 708*59599516SKenneth E. Jansen giju(:,4) = detgijI * (gijdu(:,5)*gijdu(:,6) 709*59599516SKenneth E. Jansen & - gijdu(:,4)*gijdu(:,3) ) 710*59599516SKenneth E. Jansen giju(:,5) = detgijI * (gijdu(:,4)*gijdu(:,6) 711*59599516SKenneth E. Jansen & - gijdu(:,5)*gijdu(:,2) ) 712*59599516SKenneth E. Jansen giju(:,6) = detgijI * (gijdu(:,4)*gijdu(:,5) 713*59599516SKenneth E. Jansen & - gijdu(:,1)*gijdu(:,6) ) 714*59599516SKenneth E. Jansenc 715*59599516SKenneth E. Jansen endif ! end of iDC.ne.0 716*59599516SKenneth E. Jansenc 717*59599516SKenneth E. Jansenc.... calculate (tau Lym) --> (rLymi) 718*59599516SKenneth E. Jansenc 719*59599516SKenneth E. Jansen if(ires.ne.1 ) then 720*59599516SKenneth E. Jansen eigmax = rLymi 721*59599516SKenneth E. Jansen rLymi = zero 722*59599516SKenneth E. Jansen do i = 1, nflow 723*59599516SKenneth E. Jansen do j = 1, nflow 724*59599516SKenneth E. Jansen rLymi(:,i) = rLymi(:,i) + Tau(:,i,j) * eigmax(:,j) 725*59599516SKenneth E. Jansen enddo 726*59599516SKenneth E. Jansen enddo 727*59599516SKenneth E. Jansen endif 728*59599516SKenneth E. Jansenc 729*59599516SKenneth E. Jansenc INCORRECT NOW flops = flops + 255*npro 730*59599516SKenneth E. Jansenc 731*59599516SKenneth E. Jansenc 732*59599516SKenneth E. Jansenc.... return 733*59599516SKenneth E. Jansenc 734*59599516SKenneth E. Jansen return 735*59599516SKenneth E. Jansen end 736*59599516SKenneth E. Jansenc 737*59599516SKenneth E. Jansen 738*59599516SKenneth E. Jansen 739*59599516SKenneth E. Jansen subroutine e3tau_nd_modal (rho, cp, rmu, T, 740*59599516SKenneth E. Jansen & u1, u2, u3, 741*59599516SKenneth E. Jansen & a1, a2, a3, 742*59599516SKenneth E. Jansen & con, dxidx, rLyi, 743*59599516SKenneth E. Jansen & rLymi, Tau, rk, 744*59599516SKenneth E. Jansen & giju, rTLS, raLS, 745*59599516SKenneth E. Jansen & cv, compK, pres, 746*59599516SKenneth E. Jansen & A0inv, dVdY) 747*59599516SKenneth E. Jansenc 748*59599516SKenneth E. Jansenc---------------------------------------------------------------------- 749*59599516SKenneth E. Jansenc 750*59599516SKenneth E. Jansenc This routine computes the diagonal Tau for least-squares operator. 751*59599516SKenneth E. Jansenc 752*59599516SKenneth E. Jansenc We receive the regular residual L operator and a 753*59599516SKenneth E. Jansenc modified residual L operator, calculate tau, and return values for 754*59599516SKenneth E. Jansenc tau and tau times these operators to maintain the format of past 755*59599516SKenneth E. Jansenc ENSA codes 756*59599516SKenneth E. Jansenc 757*59599516SKenneth E. Jansenc input: 758*59599516SKenneth E. Jansenc rho (npro) : density 759*59599516SKenneth E. Jansenc T (npro) : temperature 760*59599516SKenneth E. Jansenc cp (npro) : specific heat at constant pressure 761*59599516SKenneth E. Jansenc u1 (npro) : x1-velocity component 762*59599516SKenneth E. Jansenc u2 (npro) : x2-velocity component 763*59599516SKenneth E. Jansenc u3 (npro) : x3-velocity component 764*59599516SKenneth E. Jansenc dxidx (npro,nsd,nsd) : inverse of deformation gradient 765*59599516SKenneth E. Jansenc rLyi (npro,nflow) : least-squares residual vector 766*59599516SKenneth E. Jansenc rLymi (npro,nflow) : modified least-squares residual vector 767*59599516SKenneth E. Jansenc 768*59599516SKenneth E. Jansenc output: 769*59599516SKenneth E. Jansenc rLyi (npro,nflow) : least-squares residual vector 770*59599516SKenneth E. Jansenc rLymi (npro,nflow) : modified least-squares residual vector 771*59599516SKenneth E. Jansenc Mtau (npro,5,5) : Matrix of Stabilized Parameters 772*59599516SKenneth E. Jansenc 773*59599516SKenneth E. Jansenc 774*59599516SKenneth E. Jansenc Zdenek Johan, Summer 1990. (Modified from e2tau.f) 775*59599516SKenneth E. Jansenc Zdenek Johan, Winter 1991. (Fortran 90) 776*59599516SKenneth E. Jansenc---------------------------------------------------------------------- 777*59599516SKenneth E. Jansenc 778*59599516SKenneth E. Jansen include "common.h" 779*59599516SKenneth E. Jansenc 780*59599516SKenneth E. Jansen dimension rho(npro), con(npro), 781*59599516SKenneth E. Jansen & cp(npro), u1(npro), 782*59599516SKenneth E. Jansen & u2(npro), u3(npro), 783*59599516SKenneth E. Jansen & dxidx(npro,nsd,nsd), rk(npro), 784*59599516SKenneth E. Jansen & rLyi(npro,nflow,ipord), 785*59599516SKenneth E. Jansen & rLymi(npro,nflow,ipord), dVdY(npro,15), 786*59599516SKenneth E. Jansen & rTLS(npro), raLS(npro), 787*59599516SKenneth E. Jansen & rLyitemp(npro,nflow), detgijI(npro) 788*59599516SKenneth E. Jansenc 789*59599516SKenneth E. Jansen dimension rmu(npro), cv(npro), 790*59599516SKenneth E. Jansen & gijd(npro,6), 791*59599516SKenneth E. Jansen & fact(npro), giju(npro,6), 792*59599516SKenneth E. Jansen & A0inv(npro,15),gijdu(npro,6), compK(npro,10), 793*59599516SKenneth E. Jansen & a1(npro), a2(npro), a3(npro), 794*59599516SKenneth E. Jansen & T(npro), pres(npro), alphap(npro), 795*59599516SKenneth E. Jansen & betaT(npro), gamb(npro), c(npro), 796*59599516SKenneth E. Jansen & u(npro), eb1(npro), Q(npro,5,5), 797*59599516SKenneth E. Jansen & rlam(npro,5), eigmax(npro,5), Pe(npro), 798*59599516SKenneth E. Jansen & STau(npro,15, ipord), Tau(npro,nflow,nflow,ipord), 799*59599516SKenneth E. Jansen & rlamtmp(npro,5,ipord) 800*59599516SKenneth E. Jansen 801*59599516SKenneth E. Jansen 802*59599516SKenneth E. Jansenc... build some necessary quantities at integration point: 803*59599516SKenneth E. Jansen 804*59599516SKenneth E. Jansenc alfap = one / T 805*59599516SKenneth E. Jansenc betaT = one / pres 806*59599516SKenneth E. Jansen gamb = gamma1 807*59599516SKenneth E. Jansen c = sqrt( (gamma * Rgas) * T ) 808*59599516SKenneth E. Jansen u = sqrt(u1**2+u2**2+u3**2) 809*59599516SKenneth E. Jansen eb1 = cp*T - pt5*(u1**2+u2**2+u3**2) 810*59599516SKenneth E. Jansen 811*59599516SKenneth E. Jansenc... get eigenvectors for diagonalizing Tau_adv (e.v) before final rotations 812*59599516SKenneth E. Jansenc... Note: the ordering of eigenvectors corresponds to the following 813*59599516SKenneth E. Jansenc... ordering of the eigenvalues in the 1-st Euler Jacobian rotated to 814*59599516SKenneth E. Jansenc... the streamline coordinates 815*59599516SKenneth E. Jansen 816*59599516SKenneth E. Jansenc |u+c | 817*59599516SKenneth E. Jansenc | u | 818*59599516SKenneth E. Jansenc | u | 819*59599516SKenneth E. Jansenc | u | ! for origins of this see Beam, Warming, Hyett 820*59599516SKenneth E. Jansenc | u-c| ! Mathematics of Computation vol. 29 No. 132 p. 1037 821*59599516SKenneth E. Jansen 822*59599516SKenneth E. Jansenc... different ordering assumed in Shakib/Johan entropy vars. code 823*59599516SKenneth E. Jansen 824*59599516SKenneth E. Jansen 825*59599516SKenneth E. Jansen 826*59599516SKenneth E. Jansen call e3eig1 (rho, T, cp, 827*59599516SKenneth E. Jansen & gamb, c, u1, 828*59599516SKenneth E. Jansen & u2, u3, a1, 829*59599516SKenneth E. Jansen & a2, a3, eb1, 830*59599516SKenneth E. Jansen & dxidx, u, Q) 831*59599516SKenneth E. Jansen 832*59599516SKenneth E. Jansenc... Perform a Jacobi rotation on the Lambda matrix as well as adjust 833*59599516SKenneth E. Jansenc... the eigenvectors. Tau still remains in entropy variables. 834*59599516SKenneth E. Jansen 835*59599516SKenneth E. Jansen 836*59599516SKenneth E. Jansen 837*59599516SKenneth E. Jansen call e3eig2 (u, c, a1, 838*59599516SKenneth E. Jansen & a2, a3, rlam, 839*59599516SKenneth E. Jansen & Q, eigmax) 840*59599516SKenneth E. Jansen 841*59599516SKenneth E. Jansenc 842*59599516SKenneth E. Jansenc.... invert the eigenvalues 843*59599516SKenneth E. Jansenc 844*59599516SKenneth E. Jansen 845*59599516SKenneth E. Jansen 846*59599516SKenneth E. Jansen where (rlam .gt. ((epsM**2) * eigmax)) 847*59599516SKenneth E. Jansen rlam = one / sqrt(rlam) 848*59599516SKenneth E. Jansen elsewhere 849*59599516SKenneth E. Jansen rlam = zero 850*59599516SKenneth E. Jansen endwhere 851*59599516SKenneth E. Jansen 852*59599516SKenneth E. Jansen do i = 1, ipord 853*59599516SKenneth E. Jansen rlamtmp(:,:,i) = rlam(:,:) 854*59599516SKenneth E. Jansen enddo 855*59599516SKenneth E. Jansen 856*59599516SKenneth E. Jansenc 857*59599516SKenneth E. Jansenc.... flop count 858*59599516SKenneth E. Jansenc 859*59599516SKenneth E. Jansen flops = flops + 65*npro 860*59599516SKenneth E. Jansen 861*59599516SKenneth E. Jansenc.... reduce the diffusion contribution 862*59599516SKenneth E. Jansenc 863*59599516SKenneth E. Jansen 864*59599516SKenneth E. Jansen if (Navier .eq. 1) then 865*59599516SKenneth E. Jansenc 866*59599516SKenneth E. Jansenc.... calculate sigma 867*59599516SKenneth E. Jansenc 868*59599516SKenneth E. Jansen 869*59599516SKenneth E. Jansen do i = 1, nflow ! diff. corr for every mode of Tau 870*59599516SKenneth E. Jansen 871*59599516SKenneth E. Jansen c(:) = pt33 * ( 872*59599516SKenneth E. Jansen & Q(:,2,i) * ( compK(:, 1) * Q(:,2,i) + compK(:, 2) * Q(:,3,i) 873*59599516SKenneth E. Jansen & + compK(:, 4) * Q(:,4,i) + compK(:, 7) * Q(:,5,i) ) 874*59599516SKenneth E. Jansen & + Q(:,3,i) * ( compK(:, 2) * Q(:,2,i) + compK(:, 3) * Q(:,3,i) 875*59599516SKenneth E. Jansen & + compK(:, 5) * Q(:,4,i) + compK(:, 8) * Q(:,5,i) ) 876*59599516SKenneth E. Jansen & + Q(:,4,i) * ( compK(:, 4) * Q(:,2,i) + compK(:, 5) * Q(:,3,i) 877*59599516SKenneth E. Jansen & + compK(:, 6) * Q(:,4,i) + compK(:, 9) * Q(:,5,i) ) 878*59599516SKenneth E. Jansen & + Q(:,5,i) * ( compK(:, 7) * Q(:,2,i) + compK(:, 8) * Q(:,3,i) 879*59599516SKenneth E. Jansen & + compK(:, 9) * Q(:,4,i) + compK(:,10) * Q(:,5,i) ) 880*59599516SKenneth E. Jansen & ) 881*59599516SKenneth E. Jansen 882*59599516SKenneth E. Jansenc... get Peclet Number 883*59599516SKenneth E. Jansen 884*59599516SKenneth E. Jansen 885*59599516SKenneth E. Jansen Pe(:) = one / (c(:)*rlam(:,i)) 886*59599516SKenneth E. Jansen 887*59599516SKenneth E. Jansen 888*59599516SKenneth E. Jansenc 889*59599516SKenneth E. Jansenc... branch out into different polynomial orders 890*59599516SKenneth E. Jansenc 891*59599516SKenneth E. Jansen 892*59599516SKenneth E. Jansen 893*59599516SKenneth E. Jansen if (ipord == 1) then ! linears - l = l^a*(coth(Pe)-1/Pe) 894*59599516SKenneth E. Jansen ! approx. l = l^a*min(1/3*Pe,1) 895*59599516SKenneth E. Jansen rlamtmp(:,i,1) = rlamtmp(:,i,1)*min(pt33*Pe(:),one) 896*59599516SKenneth E. Jansen 897*59599516SKenneth E. Jansen endif 898*59599516SKenneth E. Jansen 899*59599516SKenneth E. Jansen if (ipord == 2) then 900*59599516SKenneth E. Jansen 901*59599516SKenneth E. Jansen rlamtmp(:,i,1) = rlamtmp(:,i,1)*min((1.0/15.0)*Pe(:),pt33) 902*59599516SKenneth E. Jansen rlamtmp(:,i,2) = rlamtmp(:,i,2)*min((1.0/12.0)*Pe(:),pt5) 903*59599516SKenneth E. Jansen 904*59599516SKenneth E. Jansen endif 905*59599516SKenneth E. Jansen 906*59599516SKenneth E. Jansen if (ipord == 3) then ! cubics - Recent Work 907*59599516SKenneth E. Jansen 908*59599516SKenneth E. Jansen do ii = 1, npro 909*59599516SKenneth E. Jansen if (Pe(ii).lt.3.0) then 910*59599516SKenneth E. Jansen rlamtmp(ii,i,1) = rlamtmp(ii,i,1)* 911*59599516SKenneth E. Jansen & 0.00054*Pe(ii)**2 912*59599516SKenneth E. Jansen endif 913*59599516SKenneth E. Jansen 914*59599516SKenneth E. Jansen if ((Pe(ii).ge.3).and.(Pe(ii).lt.17.20)) then 915*59599516SKenneth E. Jansen rlamtmp(ii,i,1) = rlamtmp(ii,i,1)*(0.0114*Pe(ii) 916*59599516SKenneth E. Jansen & -0.0294) 917*59599516SKenneth E. Jansen endif 918*59599516SKenneth E. Jansen 919*59599516SKenneth E. Jansen if (Pe(ii).ge.17.20) then 920*59599516SKenneth E. Jansen rlamtmp(ii,i,1) = rlamtmp(ii,i,1)*(1.0/6.0) 921*59599516SKenneth E. Jansen endif 922*59599516SKenneth E. Jansen 923*59599516SKenneth E. Jansen enddo 924*59599516SKenneth E. Jansen 925*59599516SKenneth E. Jansen rlamtmp(:,i,2) = rlamtmp(:,i,2)*min((1.0/45.0)*Pe(:) 926*59599516SKenneth E. Jansen & ,0.2d0) 927*59599516SKenneth E. Jansen rlamtmp(:,i,3) = rlamtmp(:,i,3)*min((1.0/25.0)*Pe(:) 928*59599516SKenneth E. Jansen & ,pt33) 929*59599516SKenneth E. Jansen 930*59599516SKenneth E. Jansen 931*59599516SKenneth E. Jansen endif ! done w/ different polynomial orders 932*59599516SKenneth E. Jansen 933*59599516SKenneth E. Jansen enddo ! done with loop over dof's 934*59599516SKenneth E. Jansen 935*59599516SKenneth E. Jansen endif ! done with diffusive correction 936*59599516SKenneth E. Jansen 937*59599516SKenneth E. Jansen 938*59599516SKenneth E. Jansenc 939*59599516SKenneth E. Jansenc.... form Tau (symmetric - entropy variables - then convert) 940*59599516SKenneth E. Jansenc 941*59599516SKenneth E. Jansen do i = 1, ipord 942*59599516SKenneth E. Jansen 943*59599516SKenneth E. Jansen STau(:, 1, i) = rlamtmp(:,1,i) * Q(:,1,1) * Q(:,1,1) + 944*59599516SKenneth E. Jansen & rlamtmp(:,2,i) * Q(:,1,2) * Q(:,1,2) + 945*59599516SKenneth E. Jansen & rlamtmp(:,3,i) * Q(:,1,3) * Q(:,1,3) + 946*59599516SKenneth E. Jansen & rlamtmp(:,4,i) * Q(:,1,4) * Q(:,1,4) + 947*59599516SKenneth E. Jansen & rlamtmp(:,5,i) * Q(:,1,5) * Q(:,1,5) 948*59599516SKenneth E. Jansenc 949*59599516SKenneth E. Jansen STau(:, 2, i) = rlamtmp(:,1,i) * Q(:,1,1) * Q(:,2,1) + 950*59599516SKenneth E. Jansen & rlamtmp(:,2,i) * Q(:,1,2) * Q(:,2,2) + 951*59599516SKenneth E. Jansen & rlamtmp(:,3,i) * Q(:,1,3) * Q(:,2,3) + 952*59599516SKenneth E. Jansen & rlamtmp(:,4,i) * Q(:,1,4) * Q(:,2,4) + 953*59599516SKenneth E. Jansen & rlamtmp(:,5,i) * Q(:,1,5) * Q(:,2,5) 954*59599516SKenneth E. Jansenc 955*59599516SKenneth E. Jansen STau(:, 3, i) = rlamtmp(:,1,i) * Q(:,2,1) * Q(:,2,1) + 956*59599516SKenneth E. Jansen & rlamtmp(:,2,i) * Q(:,2,2) * Q(:,2,2) + 957*59599516SKenneth E. Jansen & rlamtmp(:,3,i) * Q(:,2,3) * Q(:,2,3) + 958*59599516SKenneth E. Jansen & rlamtmp(:,4,i) * Q(:,2,4) * Q(:,2,4) + 959*59599516SKenneth E. Jansen & rlamtmp(:,5,i) * Q(:,2,5) * Q(:,2,5) 960*59599516SKenneth E. Jansenc 961*59599516SKenneth E. Jansen STau(:, 4, i) = rlamtmp(:,1,i) * Q(:,1,1) * Q(:,3,1) + 962*59599516SKenneth E. Jansen & rlamtmp(:,2,i) * Q(:,1,2) * Q(:,3,2) + 963*59599516SKenneth E. Jansen & rlamtmp(:,3,i) * Q(:,1,3) * Q(:,3,3) + 964*59599516SKenneth E. Jansen & rlamtmp(:,4,i) * Q(:,1,4) * Q(:,3,4) + 965*59599516SKenneth E. Jansen & rlamtmp(:,5,i) * Q(:,1,5) * Q(:,3,5) 966*59599516SKenneth E. Jansenc 967*59599516SKenneth E. Jansen STau(:, 5, i) = rlamtmp(:,1,i) * Q(:,2,1) * Q(:,3,1) + 968*59599516SKenneth E. Jansen & rlamtmp(:,2,i) * Q(:,2,2) * Q(:,3,2) + 969*59599516SKenneth E. Jansen & rlamtmp(:,3,i) * Q(:,2,3) * Q(:,3,3) + 970*59599516SKenneth E. Jansen & rlamtmp(:,4,i) * Q(:,2,4) * Q(:,3,4) + 971*59599516SKenneth E. Jansen & rlamtmp(:,5,i) * Q(:,2,5) * Q(:,3,5) 972*59599516SKenneth E. Jansenc 973*59599516SKenneth E. Jansen STau(:, 6, i) = rlamtmp(:,1,i) * Q(:,3,1) * Q(:,3,1) + 974*59599516SKenneth E. Jansen & rlamtmp(:,2,i) * Q(:,3,2) * Q(:,3,2) + 975*59599516SKenneth E. Jansen & rlamtmp(:,3,i) * Q(:,3,3) * Q(:,3,3) + 976*59599516SKenneth E. Jansen & rlamtmp(:,4,i) * Q(:,3,4) * Q(:,3,4) + 977*59599516SKenneth E. Jansen & rlamtmp(:,5,i) * Q(:,3,5) * Q(:,3,5) 978*59599516SKenneth E. Jansenc 979*59599516SKenneth E. Jansen STau(:, 7, i) = rlamtmp(:,1,i) * Q(:,1,1) * Q(:,4,1) + 980*59599516SKenneth E. Jansen & rlamtmp(:,2,i) * Q(:,1,2) * Q(:,4,2) + 981*59599516SKenneth E. Jansen & rlamtmp(:,3,i) * Q(:,1,3) * Q(:,4,3) + 982*59599516SKenneth E. Jansen & rlamtmp(:,4,i) * Q(:,1,4) * Q(:,4,4) + 983*59599516SKenneth E. Jansen & rlamtmp(:,5,i) * Q(:,1,5) * Q(:,4,5) 984*59599516SKenneth E. Jansenc 985*59599516SKenneth E. Jansen STau(:, 8, i) = rlamtmp(:,1,i) * Q(:,2,1) * Q(:,4,1) + 986*59599516SKenneth E. Jansen & rlamtmp(:,2,i) * Q(:,2,2) * Q(:,4,2) + 987*59599516SKenneth E. Jansen & rlamtmp(:,3,i) * Q(:,2,3) * Q(:,4,3) + 988*59599516SKenneth E. Jansen & rlamtmp(:,4,i) * Q(:,2,4) * Q(:,4,4) + 989*59599516SKenneth E. Jansen & rlamtmp(:,5,i) * Q(:,2,5) * Q(:,4,5) 990*59599516SKenneth E. Jansenc 991*59599516SKenneth E. Jansen STau(:, 9, i) = rlamtmp(:,1,i) * Q(:,3,1) * Q(:,4,1) + 992*59599516SKenneth E. Jansen & rlamtmp(:,2,i) * Q(:,3,2) * Q(:,4,2) + 993*59599516SKenneth E. Jansen & rlamtmp(:,3,i) * Q(:,3,3) * Q(:,4,3) + 994*59599516SKenneth E. Jansen & rlamtmp(:,4,i) * Q(:,3,4) * Q(:,4,4) + 995*59599516SKenneth E. Jansen & rlamtmp(:,5,i) * Q(:,3,5) * Q(:,4,5) 996*59599516SKenneth E. Jansenc 997*59599516SKenneth E. Jansen STau(:,10, i) = rlamtmp(:,1,i) * Q(:,4,1) * Q(:,4,1) + 998*59599516SKenneth E. Jansen & rlamtmp(:,2,i) * Q(:,4,2) * Q(:,4,2) + 999*59599516SKenneth E. Jansen & rlamtmp(:,3,i) * Q(:,4,3) * Q(:,4,3) + 1000*59599516SKenneth E. Jansen & rlamtmp(:,4,i) * Q(:,4,4) * Q(:,4,4) + 1001*59599516SKenneth E. Jansen & rlamtmp(:,5,i) * Q(:,4,5) * Q(:,4,5) 1002*59599516SKenneth E. Jansenc 1003*59599516SKenneth E. Jansen STau(:,11, i) = rlamtmp(:,1,i) * Q(:,1,1) * Q(:,5,1) + 1004*59599516SKenneth E. Jansen & rlamtmp(:,2,i) * Q(:,1,2) * Q(:,5,2) + 1005*59599516SKenneth E. Jansen & rlamtmp(:,3,i) * Q(:,1,3) * Q(:,5,3) + 1006*59599516SKenneth E. Jansen & rlamtmp(:,4,i) * Q(:,1,4) * Q(:,5,4) + 1007*59599516SKenneth E. Jansen & rlamtmp(:,5,i) * Q(:,1,5) * Q(:,5,5) 1008*59599516SKenneth E. Jansenc 1009*59599516SKenneth E. Jansen STau(:,12, i) = rlamtmp(:,1,i) * Q(:,2,1) * Q(:,5,1) + 1010*59599516SKenneth E. Jansen & rlamtmp(:,2,i) * Q(:,2,2) * Q(:,5,2) + 1011*59599516SKenneth E. Jansen & rlamtmp(:,3,i) * Q(:,2,3) * Q(:,5,3) + 1012*59599516SKenneth E. Jansen & rlamtmp(:,4,i) * Q(:,2,4) * Q(:,5,4) + 1013*59599516SKenneth E. Jansen & rlamtmp(:,5,i) * Q(:,2,5) * Q(:,5,5) 1014*59599516SKenneth E. Jansenc 1015*59599516SKenneth E. Jansen STau(:,13, i) = rlamtmp(:,1,i) * Q(:,3,1) * Q(:,5,1) + 1016*59599516SKenneth E. Jansen & rlamtmp(:,2,i) * Q(:,3,2) * Q(:,5,2) + 1017*59599516SKenneth E. Jansen & rlamtmp(:,3,i) * Q(:,3,3) * Q(:,5,3) + 1018*59599516SKenneth E. Jansen & rlamtmp(:,4,i) * Q(:,3,4) * Q(:,5,4) + 1019*59599516SKenneth E. Jansen & rlamtmp(:,5,i) * Q(:,3,5) * Q(:,5,5) 1020*59599516SKenneth E. Jansenc 1021*59599516SKenneth E. Jansen STau(:,14, i) = rlamtmp(:,1,i) * Q(:,4,1) * Q(:,5,1) + 1022*59599516SKenneth E. Jansen & rlamtmp(:,2,i) * Q(:,4,2) * Q(:,5,2) + 1023*59599516SKenneth E. Jansen & rlamtmp(:,3,i) * Q(:,4,3) * Q(:,5,3) + 1024*59599516SKenneth E. Jansen & rlamtmp(:,4,i) * Q(:,4,4) * Q(:,5,4) + 1025*59599516SKenneth E. Jansen & rlamtmp(:,5,i) * Q(:,4,5) * Q(:,5,5) 1026*59599516SKenneth E. Jansenc 1027*59599516SKenneth E. Jansen STau(:,15, i) = rlamtmp(:,1,i) * Q(:,5,1) * Q(:,5,1) + 1028*59599516SKenneth E. Jansen & rlamtmp(:,2,i) * Q(:,5,2) * Q(:,5,2) + 1029*59599516SKenneth E. Jansen & rlamtmp(:,3,i) * Q(:,5,3) * Q(:,5,3) + 1030*59599516SKenneth E. Jansen & rlamtmp(:,4,i) * Q(:,5,4) * Q(:,5,4) + 1031*59599516SKenneth E. Jansen & rlamtmp(:,5,i) * Q(:,5,5) * Q(:,5,5) 1032*59599516SKenneth E. Jansen 1033*59599516SKenneth E. Jansen enddo 1034*59599516SKenneth E. Jansen 1035*59599516SKenneth E. Jansenc 1036*59599516SKenneth E. Jansenc... Form Primitive Variable Tau as [dY/dV]*tilde{Tau}, 1037*59599516SKenneth E. Jansenc... see G.Hauke's thesis appendix for [dY/dV] matrix 1038*59599516SKenneth E. Jansenc 1039*59599516SKenneth E. Jansen do k = 1, ipord 1040*59599516SKenneth E. Jansen 1041*59599516SKenneth E. Jansen betaT = cp*T + pt5*(u1**2+u2**2+u3**2) !reuse betaT 1042*59599516SKenneth E. Jansen 1043*59599516SKenneth E. Jansen Tau(:,1,1,k) = rho*T*(STau(:,1,k)+u1*STau(:,2,k)+ 1044*59599516SKenneth E. Jansen & u2*STau(:,4,k)+u3*STau(:,7,k)+betaT*STau(:,11,k)) 1045*59599516SKenneth E. Jansen Tau(:,1,2,k) = rho*T*(STau(:,2,k)+u1*STau(:,3,k)+ 1046*59599516SKenneth E. Jansen & u2*STau(:,5,k)+u3*STau(:,8,k)+betaT*STau(:,12,k)) 1047*59599516SKenneth E. Jansen Tau(:,1,3,k) = rho*T*(STau(:,4,k)+u1*STau(:,5,k)+ 1048*59599516SKenneth E. Jansen & u2*STau(:,6,k)+u3*STau(:,9,k)+betaT*STau(:,13,k)) 1049*59599516SKenneth E. Jansen Tau(:,1,4,k) = rho*T*(STau(:,7,k)+u1*STau(:,8,k)+ 1050*59599516SKenneth E. Jansen & u2*STau(:,9,k)+u3*STau(:,10,k)+betaT*STau(:,14,k)) 1051*59599516SKenneth E. Jansen Tau(:,1,5,k) = rho*T*(STau(:,11,k)+u1*STau(:,12,k)+ 1052*59599516SKenneth E. Jansen & u2*STau(:,13,k)+u3*STau(:,14,k)+betaT*STau(:,15,k)) 1053*59599516SKenneth E. Jansen 1054*59599516SKenneth E. Jansen 1055*59599516SKenneth E. Jansen Tau(:,2,1,k) = T(:)*(STau(:,2,k) + u1(:)*STau(:,11,k)) 1056*59599516SKenneth E. Jansen Tau(:,2,2,k) = T(:)*(STau(:,3,k) + u1(:)*STau(:,12,k)) 1057*59599516SKenneth E. Jansen Tau(:,2,3,k) = T(:)*(STau(:,5,k) + u1(:)*STau(:,13,k)) 1058*59599516SKenneth E. Jansen Tau(:,2,4,k) = T(:)*(STau(:,8,k) + u1(:)*STau(:,14,k)) 1059*59599516SKenneth E. Jansen Tau(:,2,5,k) = T(:)*(STau(:,12,k) + u1(:)*STau(:,15,k)) 1060*59599516SKenneth E. Jansen 1061*59599516SKenneth E. Jansen Tau(:,3,1,k) = T(:)*(STau(:,4,k) + u2(:)*STau(:,11,k)) 1062*59599516SKenneth E. Jansen Tau(:,3,2,k) = T(:)*(STau(:,5,k) + u2(:)*STau(:,12,k)) 1063*59599516SKenneth E. Jansen Tau(:,3,3,k) = T(:)*(STau(:,6,k) + u2(:)*STau(:,13,k)) 1064*59599516SKenneth E. Jansen Tau(:,3,4,k) = T(:)*(STau(:,9,k) + u2(:)*STau(:,14,k)) 1065*59599516SKenneth E. Jansen Tau(:,3,5,k) = T(:)*(STau(:,13,k) + u2(:)*STau(:,15,k)) 1066*59599516SKenneth E. Jansen 1067*59599516SKenneth E. Jansen Tau(:,4,1,k) = T(:)*(STau(:,7,k) + u3(:)*STau(:,11,k)) 1068*59599516SKenneth E. Jansen Tau(:,4,2,k) = T(:)*(STau(:,8,k) + u3(:)*STau(:,12,k)) 1069*59599516SKenneth E. Jansen Tau(:,4,3,k) = T(:)*(STau(:,9,k) + u3(:)*STau(:,13,k)) 1070*59599516SKenneth E. Jansen Tau(:,4,4,k) = T(:)*(STau(:,10,k) + u3(:)*STau(:,14,k)) 1071*59599516SKenneth E. Jansen Tau(:,4,5,k) = T(:)*(STau(:,14,k) + u3(:)*STau(:,15,k)) 1072*59599516SKenneth E. Jansen 1073*59599516SKenneth E. Jansen betaT = T**2 1074*59599516SKenneth E. Jansen 1075*59599516SKenneth E. Jansen Tau(:,5,1,k) = betaT(:)*STau(:,11,k) 1076*59599516SKenneth E. Jansen Tau(:,5,2,k) = betaT(:)*STau(:,12,k) 1077*59599516SKenneth E. Jansen Tau(:,5,3,k) = betaT(:)*STau(:,13,k) 1078*59599516SKenneth E. Jansen Tau(:,5,4,k) = betaT(:)*STau(:,14,k) 1079*59599516SKenneth E. Jansen Tau(:,5,5,k) = betaT(:)*STau(:,15,k) 1080*59599516SKenneth E. Jansen 1081*59599516SKenneth E. Jansen enddo 1082*59599516SKenneth E. Jansen 1083*59599516SKenneth E. Jansenc 1084*59599516SKenneth E. Jansenc... done with conversion to pressure primitive variables 1085*59599516SKenneth E. Jansenc... now need to interface with the rest of the computations 1086*59599516SKenneth E. Jansenc 1087*59599516SKenneth E. Jansen 1088*59599516SKenneth E. Jansenc... finally multiply this tau matrix times the 1089*59599516SKenneth E. Jansenc two residual vectors 1090*59599516SKenneth E. Jansenc 1091*59599516SKenneth E. Jansenc ... calculate (tau Ly) --> (rLyi) 1092*59599516SKenneth E. Jansenc ... storing rLyi for the DC term 1093*59599516SKenneth E. Jansen 1094*59599516SKenneth E. Jansen 1095*59599516SKenneth E. Jansen if(iDC .ne. 0) rLyitemp(:,:)=rLyi(:,:,1) 1096*59599516SKenneth E. Jansen 1097*59599516SKenneth E. Jansen if(ires.eq.3 .or. ires .eq. 1) then 1098*59599516SKenneth E. Jansen eigmax(:,:) = rLyi(:,:,1) !reuse 1099*59599516SKenneth E. Jansen rLyi = zero 1100*59599516SKenneth E. Jansen do k = 1, ipord 1101*59599516SKenneth E. Jansen do i = 1, nflow 1102*59599516SKenneth E. Jansen do j = 1, nflow 1103*59599516SKenneth E. Jansen rLyi(:,i,k) = rLyi(:,i,k)+Tau(:,i,j,k)*eigmax(:,j) 1104*59599516SKenneth E. Jansen enddo 1105*59599516SKenneth E. Jansen enddo 1106*59599516SKenneth E. Jansen enddo 1107*59599516SKenneth E. Jansen endif 1108*59599516SKenneth E. Jansen 1109*59599516SKenneth E. Jansen 1110*59599516SKenneth E. Jansen if(iDC .ne. 0) then 1111*59599516SKenneth E. Jansenc.....calculation of rTLS & raLS for DC term 1112*59599516SKenneth E. Jansenc 1113*59599516SKenneth E. Jansenc.....calculation of (Ly - S).tau^tilda*(Ly - S) 1114*59599516SKenneth E. Jansenc 1115*59599516SKenneth E. Jansen rTLS = rLYItemp(:,1) * (rLyi(:,1,1)*dVdY(:,1) 1116*59599516SKenneth E. Jansen & + dVdY(:,2)*rLyi(:,2,1) + dVdY(:,4)*rLyi(:,3,1) 1117*59599516SKenneth E. Jansen & + rLyi(:,4,1)*dVdY(:,7) + dVdY(:,11)*rLyi(:,5,1)) 1118*59599516SKenneth E. Jansen & + rLyitemp(:,2) * (rLyi(:,2,1)*dVdY(:,3) 1119*59599516SKenneth E. Jansen & + rLyi(:,3,1)*dVdY(:,5) + dVdY(:,8)*rLyi(:,4,1) 1120*59599516SKenneth E. Jansen & + rLyi(:,5,1)*dVdY(:,12)) 1121*59599516SKenneth E. Jansen & + rLyitemp(:,3) * (rLyi(:,3,1)*dVdY(:,6) 1122*59599516SKenneth E. Jansen & + dVdY(:,9)*rLyi(:,4,1) + dVdY(:,13)*rLyi(:,5,1)) 1123*59599516SKenneth E. Jansen & + rLyitemp(:,4) * (rLyi(:,4,1)*dVdY(:,10) 1124*59599516SKenneth E. Jansen & + dVdY(:,14)*rLyi(:,5,1)) 1125*59599516SKenneth E. Jansen & + rLyitemp(:,5) * (dVdY(:,15)*rLyi(:,5,1)) 1126*59599516SKenneth E. Jansen 1127*59599516SKenneth E. Jansenc 1128*59599516SKenneth E. Jansenc...... calculation of (Ly - S).A0inv*(Ly - S) 1129*59599516SKenneth E. Jansenc 1130*59599516SKenneth E. Jansen raLS = two*rLyitemp(:,4)*rLyitemp(:,5)*A0inv(:,15) 1131*59599516SKenneth E. Jansen & + two*rLyitemp(:,3)*rLyitemp(:,5)*A0inv(:,14) 1132*59599516SKenneth E. Jansen & + two*rLyitemp(:,1)*rLyitemp(:,2)*A0inv( :,6) 1133*59599516SKenneth E. Jansen & + two*rLyitemp(:,2)*rLyitemp(:,3)*A0inv(:,10) 1134*59599516SKenneth E. Jansen & + two*rLyitemp(:,2)*rLyitemp(:,4)*A0inv(:,11) 1135*59599516SKenneth E. Jansen & + two*rLyitemp(:,1)*rLyitemp(:,3)*A0inv( :,7) 1136*59599516SKenneth E. Jansen & + two*rLyitemp(:,3)*rLyitemp(:,4)*A0inv(:,13) 1137*59599516SKenneth E. Jansen & + two*rLyitemp(:,2)*rLyitemp(:,5)*A0inv(:,12) 1138*59599516SKenneth E. Jansen & + two*rLyitemp(:,1)*rLyitemp(:,4)*A0inv( :,8) 1139*59599516SKenneth E. Jansen & + two*rLyitemp(:,1)*rLyitemp(:,5)*A0inv( :,9) 1140*59599516SKenneth E. Jansen & + rLyitemp(:,1)**2*A0inv(:,1) 1141*59599516SKenneth E. Jansen & + rLyitemp(:,2)**2*A0inv(:,2) 1142*59599516SKenneth E. Jansen & + rLyitemp(:,3)**2*A0inv(:,3) 1143*59599516SKenneth E. Jansen & + rLyitemp(:,4)**2*A0inv(:,4) 1144*59599516SKenneth E. Jansen & + rLyitemp(:,5)**2*A0inv(:,5) 1145*59599516SKenneth E. Jansenc 1146*59599516SKenneth E. Jansenc.....****************calculation of giju for DC term*************** 1147*59599516SKenneth E. Jansenc 1148*59599516SKenneth E. Jansenc.... for the notation of different numbering 1149*59599516SKenneth E. Jansenc 1150*59599516SKenneth E. Jansen gijdu(:,1)=gijd(:,1) 1151*59599516SKenneth E. Jansen gijdu(:,2)=gijd(:,3) 1152*59599516SKenneth E. Jansen gijdu(:,3)=gijd(:,6) 1153*59599516SKenneth E. Jansen gijdu(:,4)=gijd(:,2) 1154*59599516SKenneth E. Jansen gijdu(:,5)=gijd(:,4) 1155*59599516SKenneth E. Jansen gijdu(:,6)=gijd(:,5) 1156*59599516SKenneth E. Jansenc 1157*59599516SKenneth E. Jansenc 1158*59599516SKenneth E. Jansen detgijI = one/( 1159*59599516SKenneth E. Jansen & gijdu(:,1) * gijdu(:,2) * gijdu(:,3) 1160*59599516SKenneth E. Jansen & - gijdu(:,1) * gijdu(:,6) * gijdu(:,6) 1161*59599516SKenneth E. Jansen & - gijdu(:,4) * gijdu(:,4) * gijdu(:,3) 1162*59599516SKenneth E. Jansen & + gijdu(:,4) * gijdu(:,5) * gijdu(:,6) * two 1163*59599516SKenneth E. Jansen & - gijdu(:,5) * gijdu(:,5) * gijdu(:,2) 1164*59599516SKenneth E. Jansen & ) 1165*59599516SKenneth E. Jansen giju(:,1) = detgijI * (gijdu(:,2)*gijdu(:,3) 1166*59599516SKenneth E. Jansen & - gijdu(:,6)**2) 1167*59599516SKenneth E. Jansen giju(:,2) = detgijI * (gijdu(:,1)*gijdu(:,3) 1168*59599516SKenneth E. Jansen & - gijdu(:,5)**2) 1169*59599516SKenneth E. Jansen giju(:,3) = detgijI * (gijdu(:,1)*gijdu(:,2) 1170*59599516SKenneth E. Jansen & - gijdu(:,4)**2) 1171*59599516SKenneth E. Jansen giju(:,4) = detgijI * (gijdu(:,5)*gijdu(:,6) 1172*59599516SKenneth E. Jansen & - gijdu(:,4)*gijdu(:,3) ) 1173*59599516SKenneth E. Jansen giju(:,5) = detgijI * (gijdu(:,4)*gijdu(:,6) 1174*59599516SKenneth E. Jansen & - gijdu(:,5)*gijdu(:,2) ) 1175*59599516SKenneth E. Jansen giju(:,6) = detgijI * (gijdu(:,4)*gijdu(:,5) 1176*59599516SKenneth E. Jansen & - gijdu(:,1)*gijdu(:,6) ) 1177*59599516SKenneth E. Jansenc 1178*59599516SKenneth E. Jansen endif ! end of iDC.ne.0 1179*59599516SKenneth E. Jansenc 1180*59599516SKenneth E. Jansenc.... calculate (tau Lym) --> (rLymi) 1181*59599516SKenneth E. Jansenc 1182*59599516SKenneth E. Jansen if(ires.ne.1 ) then 1183*59599516SKenneth E. Jansen eigmax(:,:) = rLymi(:,:,1) 1184*59599516SKenneth E. Jansen rLymi = zero 1185*59599516SKenneth E. Jansen do k = 1, ipord 1186*59599516SKenneth E. Jansen do i = 1, nflow 1187*59599516SKenneth E. Jansen do j = 1, nflow 1188*59599516SKenneth E. Jansen rLymi(:,i,k) = rLymi(:,i,k)+Tau(:,i,j,k)*eigmax(:,j) 1189*59599516SKenneth E. Jansen enddo 1190*59599516SKenneth E. Jansen enddo 1191*59599516SKenneth E. Jansen enddo 1192*59599516SKenneth E. Jansen endif 1193*59599516SKenneth E. Jansenc 1194*59599516SKenneth E. Jansenc INCORRECT NOW flops = flops + 255*npro 1195*59599516SKenneth E. Jansenc 1196*59599516SKenneth E. Jansenc 1197*59599516SKenneth E. Jansenc.... return 1198*59599516SKenneth E. Jansenc 1199*59599516SKenneth E. Jansen return 1200*59599516SKenneth E. Jansen end 1201*59599516SKenneth E. Jansenc 1202*59599516SKenneth E. Jansen 1203*59599516SKenneth E. Jansen 1204*59599516SKenneth E. Jansen 1205*59599516SKenneth E. Jansen subroutine e3tauSclr(rho, rmu, A0t, 1206*59599516SKenneth E. Jansen & u1, u2, u3, 1207*59599516SKenneth E. Jansen & dxidx, rLyti, rLymti, 1208*59599516SKenneth E. Jansen & taut, rk, raLSt, 1209*59599516SKenneth E. Jansen & rTLSt, giju) 1210*59599516SKenneth E. Jansenc 1211*59599516SKenneth E. Jansenc---------------------------------------------------------------------- 1212*59599516SKenneth E. Jansenc 1213*59599516SKenneth E. Jansenc This routine computes the diagonal Tau for least-squares operator. 1214*59599516SKenneth E. Jansenc This Tau is the one proposed for nearly incompressible flows by 1215*59599516SKenneth E. Jansenc Franca and Frey. We receive the regular residual L operator and a 1216*59599516SKenneth E. Jansenc modified residual L operator, calculate tau, and return values for 1217*59599516SKenneth E. Jansenc tau and tau times these operators to maintain the format of past 1218*59599516SKenneth E. Jansenc ENSA codes 1219*59599516SKenneth E. Jansenc 1220*59599516SKenneth E. Jansenc input: 1221*59599516SKenneth E. Jansenc rho (npro) : density 1222*59599516SKenneth E. Jansenc T (npro) : temperature 1223*59599516SKenneth E. Jansenc cp (npro) : specific heat at constant pressure 1224*59599516SKenneth E. Jansenc u1 (npro) : x1-velocity component 1225*59599516SKenneth E. Jansenc u2 (npro) : x2-velocity component 1226*59599516SKenneth E. Jansenc u3 (npro) : x3-velocity component 1227*59599516SKenneth E. Jansenc dxidx (npro,nsd,nsd) : inverse of deformation gradient 1228*59599516SKenneth E. Jansenc rLyti (npro) : least-squares residual vector 1229*59599516SKenneth E. Jansenc rLymti (npro) : modified least-squares residual vector 1230*59599516SKenneth E. Jansenc 1231*59599516SKenneth E. Jansenc output: 1232*59599516SKenneth E. Jansenc rLyti (npro,nflow) : least-squares residual vector 1233*59599516SKenneth E. Jansenc rLymti (npro,nflow) : modified least-squares residual vector 1234*59599516SKenneth E. Jansenc tau (npro,3) : 3 taus 1235*59599516SKenneth E. Jansenc 1236*59599516SKenneth E. Jansenc 1237*59599516SKenneth E. Jansenc Zdenek Johan, Summer 1990. (Modified from e2tau.f) 1238*59599516SKenneth E. Jansenc Zdenek Johan, Winter 1991. (Fortran 90) 1239*59599516SKenneth E. Jansenc---------------------------------------------------------------------- 1240*59599516SKenneth E. Jansenc 1241*59599516SKenneth E. Jansen use turbSA 1242*59599516SKenneth E. Jansen include "common.h" 1243*59599516SKenneth E. Jansenc 1244*59599516SKenneth E. Jansen dimension rho(npro), T(npro), 1245*59599516SKenneth E. Jansen & cp(npro), u1(npro), 1246*59599516SKenneth E. Jansen & u2(npro), u3(npro), 1247*59599516SKenneth E. Jansen & dxidx(npro,nsd,nsd), rk(npro), 1248*59599516SKenneth E. Jansen & taut(npro), rLyti(npro), 1249*59599516SKenneth E. Jansen & rLymti(npro) 1250*59599516SKenneth E. Jansenc 1251*59599516SKenneth E. Jansen dimension rmu(npro), A0t(npro), 1252*59599516SKenneth E. Jansen & gijd(npro,6), uh1(npro), 1253*59599516SKenneth E. Jansen & fact(npro), h2o2u(npro), 1254*59599516SKenneth E. Jansen & rlytitemp(npro), raLSt(npro), 1255*59599516SKenneth E. Jansen & rTLSt(npro), gijdu(npro,6), 1256*59599516SKenneth E. Jansen & giju(npro,6), detgijI(npro) 1257*59599516SKenneth E. Jansenc 1258*59599516SKenneth E. Jansenc 1259*59599516SKenneth E. Jansen call e3gijd( dxidx, gijd ) 1260*59599516SKenneth E. Jansen 1261*59599516SKenneth E. Jansenc 1262*59599516SKenneth E. Jansenc next form the diffusive length scale |u| h_1 = 2 ( ui (gijd)-1 uj)^{1/2} 1263*59599516SKenneth E. Jansenc 1264*59599516SKenneth E. Jansenc dividing factor for the inverse of gijd 1265*59599516SKenneth E. Jansenc 1266*59599516SKenneth E. Jansen fact = gijd(:,1) * gijd(:,3) * gijd(:,6) 1267*59599516SKenneth E. Jansen & - gijd(:,1) * gijd(:,5) * gijd(:,5) 1268*59599516SKenneth E. Jansen & - gijd(:,3) * gijd(:,4) * gijd(:,4) 1269*59599516SKenneth E. Jansen & - gijd(:,6) * gijd(:,2) * gijd(:,2) 1270*59599516SKenneth E. Jansen & + gijd(:,2) * gijd(:,4) * gijd(:,5) * two 1271*59599516SKenneth E. Jansenc 1272*59599516SKenneth E. Jansen uh1= u1*u1*(gijd(:,3)*gijd(:,6)-gijd(:,5)*gijd(:,5)) 1273*59599516SKenneth E. Jansen & + u2*u2*(gijd(:,1)*gijd(:,6)-gijd(:,4)*gijd(:,4)) 1274*59599516SKenneth E. Jansen & + u3*u3*(gijd(:,1)*gijd(:,3)-gijd(:,2)*gijd(:,2)) 1275*59599516SKenneth E. Jansen & + two *(u1*u2*(gijd(:,4)*gijd(:,5)-gijd(:,2)*gijd(:,6)) 1276*59599516SKenneth E. Jansen & + u1*u3*(gijd(:,2)*gijd(:,5)-gijd(:,4)*gijd(:,3)) 1277*59599516SKenneth E. Jansen & + u2*u3*(gijd(:,4)*gijd(:,2)-gijd(:,1)*gijd(:,5))) 1278*59599516SKenneth E. Jansenc 1279*59599516SKenneth E. Jansenc at this point we have (u h1)^2 * inverse coefficient^2 / 4 1280*59599516SKenneth E. Jansenc 1281*59599516SKenneth E. Jansenc ^ fact 1282*59599516SKenneth E. Jansenc 1283*59599516SKenneth E. Jansen 1284*59599516SKenneth E. Jansen uh1= two * sqrt(uh1/fact) 1285*59599516SKenneth E. Jansen 1286*59599516SKenneth E. Jansenc 1287*59599516SKenneth E. Jansenc next form the advective length scale |u|/h_2 = 2 ( ui (gijd) uj)^{1/2} 1288*59599516SKenneth E. Jansenc 1289*59599516SKenneth E. Jansen h2o2u = u1*u1*gijd(:,1) 1290*59599516SKenneth E. Jansen & + u2*u2*gijd(:,3) 1291*59599516SKenneth E. Jansen & + u3*u3*gijd(:,6) 1292*59599516SKenneth E. Jansen & +(u1*u2*gijd(:,2) 1293*59599516SKenneth E. Jansen & + u1*u3*gijd(:,4) 1294*59599516SKenneth E. Jansen & + u2*u3*gijd(:,5))*two + 1.0e-15 !FIX FOR INVALID MESHES 1295*59599516SKenneth E. Jansenc 1296*59599516SKenneth E. Jansenc at this point we have (2 u / h_2)^2 1297*59599516SKenneth E. Jansenc 1298*59599516SKenneth E. Jansen 1299*59599516SKenneth E. Jansenc call tnanqe(h2o2u,1,"riaconv ") 1300*59599516SKenneth E. Jansen 1301*59599516SKenneth E. Jansen h2o2u = one / sqrt(h2o2u) ! this flips it over leaves it h_2/(2u) 1302*59599516SKenneth E. Jansenc 1303*59599516SKenneth E. Jansenc... momentum tau 1304*59599516SKenneth E. Jansenc 1305*59599516SKenneth E. Jansenc 1306*59599516SKenneth E. Jansenc... rmu will now hold the total (molecular plus eddy) viscosity... 1307*59599516SKenneth E. Jansen dts=one/(Dtgl*dtsfct) 1308*59599516SKenneth E. Jansen if(iremoveStabTimeTerm.gt.0) dts = dts*100000 ! remove time term from scalar 1309*59599516SKenneth E. Jansen taut(:)=min(dts,h2o2u) 1310*59599516SKenneth E. Jansen taut(:)=taut(:)/rho 1311*59599516SKenneth E. Jansen taut(:)=min(taut(:),h2o2u*h2o2u*rk*pt66*saSigma/rmu) 1312*59599516SKenneth E. Jansenc 1313*59599516SKenneth E. Jansenc... finally multiply this tau matrix times the 1314*59599516SKenneth E. Jansenc two residual vectors 1315*59599516SKenneth E. Jansenc 1316*59599516SKenneth E. Jansenc.... calculate (tau Lyt) --> (rLyti) 1317*59599516SKenneth E. Jansenc 1318*59599516SKenneth E. Jansenc.... storing rLyi for the DC term 1319*59599516SKenneth E. Jansen rLytitemp=rLyti 1320*59599516SKenneth E. Jansen 1321*59599516SKenneth E. Jansen if(ires.eq.3 .or. ires .eq. 1) then 1322*59599516SKenneth E. Jansen rLyti(:) = taut(:) * rLyti(:) 1323*59599516SKenneth E. Jansen 1324*59599516SKenneth E. Jansen endif 1325*59599516SKenneth E. Jansen if(iDCSclr(1) .ne. 0) then 1326*59599516SKenneth E. Jansenc..... calculation of rTLS & raLS for DC term 1327*59599516SKenneth E. Jansenc..... calculation of (Ly - S).tau^tilda*(Ly - S) 1328*59599516SKenneth E. Jansenc 1329*59599516SKenneth E. Jansen rTLSt = rLYtItemp(:)*rLyti(:) 1330*59599516SKenneth E. Jansenc 1331*59599516SKenneth E. Jansenc...... calculation of (Ly - S).A0inv*(Ly - S) 1332*59599516SKenneth E. Jansenc 1333*59599516SKenneth E. Jansen raLSt = rLYtItemp(:) * rLYtItemp(:) 1334*59599516SKenneth E. Jansenc.....*****************calculation of giju for DC term****************** 1335*59599516SKenneth E. Jansenc 1336*59599516SKenneth E. Jansenc.... for the notation of different numbering 1337*59599516SKenneth E. Jansenc 1338*59599516SKenneth E. Jansen gijdu(:,1)=gijd(:,1) 1339*59599516SKenneth E. Jansen gijdu(:,2)=gijd(:,3) 1340*59599516SKenneth E. Jansen gijdu(:,3)=gijd(:,6) 1341*59599516SKenneth E. Jansen gijdu(:,4)=gijd(:,2) 1342*59599516SKenneth E. Jansen gijdu(:,5)=gijd(:,4) 1343*59599516SKenneth E. Jansen gijdu(:,6)=gijd(:,5) 1344*59599516SKenneth E. Jansenc 1345*59599516SKenneth E. Jansenc we are going to need this in the dc factor later so we calculate it. 1346*59599516SKenneth E. Jansenc 1347*59599516SKenneth E. Jansen detgijI = one/( 1348*59599516SKenneth E. Jansen & gijdu(:,1) * gijdu(:,2) * gijdu(:,3) 1349*59599516SKenneth E. Jansen & - gijdu(:,1) * gijdu(:,6) * gijdu(:,6) 1350*59599516SKenneth E. Jansen & - gijdu(:,4) * gijdu(:,4) * gijdu(:,3) 1351*59599516SKenneth E. Jansen & + gijdu(:,4) * gijdu(:,5) * gijdu(:,6) * two 1352*59599516SKenneth E. Jansen & - gijdu(:,5) * gijdu(:,5) * gijdu(:,2) 1353*59599516SKenneth E. Jansen & ) 1354*59599516SKenneth E. Jansen giju(:,1) = detgijI * (gijdu(:,2)*gijdu(:,3) 1355*59599516SKenneth E. Jansen & - gijdu(:,6)**2) 1356*59599516SKenneth E. Jansen giju(:,2) = detgijI * (gijdu(:,1)*gijdu(:,3) 1357*59599516SKenneth E. Jansen & - gijdu(:,5)**2) 1358*59599516SKenneth E. Jansen giju(:,3) = detgijI * (gijdu(:,1)*gijdu(:,2) 1359*59599516SKenneth E. Jansen & - gijdu(:,4)**2) 1360*59599516SKenneth E. Jansen giju(:,4) = detgijI * (gijdu(:,5)*gijdu(:,6) 1361*59599516SKenneth E. Jansen & - gijdu(:,4)*gijdu(:,3) ) 1362*59599516SKenneth E. Jansen giju(:,5) = detgijI * (gijdu(:,4)*gijdu(:,6) 1363*59599516SKenneth E. Jansen & - gijdu(:,5)*gijdu(:,2) ) 1364*59599516SKenneth E. Jansen giju(:,6) = detgijI * (gijdu(:,4)*gijdu(:,5) 1365*59599516SKenneth E. Jansen & - gijdu(:,1)*gijdu(:,6) ) 1366*59599516SKenneth E. Jansenc 1367*59599516SKenneth E. Jansen endif ! end of iDCSclr(1).ne.0 1368*59599516SKenneth E. Jansenc 1369*59599516SKenneth E. Jansenc.... calculate (tau Lym) --> (rLymi) 1370*59599516SKenneth E. Jansenc 1371*59599516SKenneth E. Jansenc if(ires.ne.1 ) then 1372*59599516SKenneth E. Jansenc rLymi(:,1) = tau(:,1) * rLymi(:,1) 1373*59599516SKenneth E. Jansenc rLymi(:,2) = tau(:,2) * rLymi(:,2) 1374*59599516SKenneth E. Jansenc rLymi(:,3) = tau(:,2) * rLymi(:,3) 1375*59599516SKenneth E. Jansenc rLymi(:,4) = tau(:,2) * rLymi(:,4) 1376*59599516SKenneth E. Jansenc rLymi(:,5) = tau(:,3) * rLymi(:,5) 1377*59599516SKenneth E. Jansenc endif 1378*59599516SKenneth E. Jansenc 1379*59599516SKenneth E. Jansenc INCORRECT NOW flops = flops + 255*npro 1380*59599516SKenneth E. Jansenc 1381*59599516SKenneth E. Jansenc 1382*59599516SKenneth E. Jansenc.... return 1383*59599516SKenneth E. Jansenc 1384*59599516SKenneth E. Jansen return 1385*59599516SKenneth E. Jansen end 1386*59599516SKenneth E. Jansen 1387*59599516SKenneth E. Jansenc----------------------------------------------------------------------- 1388*59599516SKenneth E. Jansenc get the metric tensor g_{ij}=xi_{k,i} xi_{k,j}. 1389*59599516SKenneth E. Jansenc----------------------------------------------------------------------- 1390*59599516SKenneth E. Jansen subroutine e3gijd( dxidx, gijd ) 1391*59599516SKenneth E. Jansen 1392*59599516SKenneth E. Jansen include "common.h" 1393*59599516SKenneth E. Jansen 1394*59599516SKenneth E. Jansen real*8 dxidx(npro,nsd,nsd), gijd(npro,6), 1395*59599516SKenneth E. Jansen & tmp1(npro), tmp2(npro), 1396*59599516SKenneth E. Jansen & tmp3(npro) 1397*59599516SKenneth E. Jansenc form metric tensor g_{ij}=xi_{k,i} xi_{k,j}. It is a symmetric 1398*59599516SKenneth E. Jansenc tensor so we only form 6 components and use symmetric matrix numbering. 1399*59599516SKenneth E. Jansenc (d for down since giju=[gijd]^{-1}) 1400*59599516SKenneth E. Jansenc (Note FARZIN and others use numbering of 1,2,3 being diagonal 456 off) 1401*59599516SKenneth E. Jansen if (lcsyst .ge. 2) then 1402*59599516SKenneth E. Jansen 1403*59599516SKenneth E. Jansen gijd(:,1) = dxidx(:,1,1) * dxidx(:,1,1) 1404*59599516SKenneth E. Jansen & + dxidx(:,2,1) * dxidx(:,2,1) 1405*59599516SKenneth E. Jansen & + dxidx(:,3,1) * dxidx(:,3,1) 1406*59599516SKenneth E. Jansenc 1407*59599516SKenneth E. Jansen gijd(:,2) = dxidx(:,1,1) * dxidx(:,1,2) 1408*59599516SKenneth E. Jansen & + dxidx(:,2,1) * dxidx(:,2,2) 1409*59599516SKenneth E. Jansen & + dxidx(:,3,1) * dxidx(:,3,2) 1410*59599516SKenneth E. Jansenc 1411*59599516SKenneth E. Jansen gijd(:,3) = dxidx(:,1,2) * dxidx(:,1,2) 1412*59599516SKenneth E. Jansen & + dxidx(:,2,2) * dxidx(:,2,2) 1413*59599516SKenneth E. Jansen & + dxidx(:,3,2) * dxidx(:,3,2) 1414*59599516SKenneth E. Jansenc 1415*59599516SKenneth E. Jansen gijd(:,4) = dxidx(:,1,1) * dxidx(:,1,3) 1416*59599516SKenneth E. Jansen & + dxidx(:,2,1) * dxidx(:,2,3) 1417*59599516SKenneth E. Jansen & + dxidx(:,3,1) * dxidx(:,3,3) 1418*59599516SKenneth E. Jansenc 1419*59599516SKenneth E. Jansen gijd(:,5) = dxidx(:,1,2) * dxidx(:,1,3) 1420*59599516SKenneth E. Jansen & + dxidx(:,2,2) * dxidx(:,2,3) 1421*59599516SKenneth E. Jansen & + dxidx(:,3,2) * dxidx(:,3,3) 1422*59599516SKenneth E. Jansenc 1423*59599516SKenneth E. Jansen gijd(:,6) = dxidx(:,1,3) * dxidx(:,1,3) 1424*59599516SKenneth E. Jansen & + dxidx(:,2,3) * dxidx(:,2,3) 1425*59599516SKenneth E. Jansen & + dxidx(:,3,3) * dxidx(:,3,3) 1426*59599516SKenneth E. Jansenc 1427*59599516SKenneth E. Jansen else if (lcsyst .eq. 1) then 1428*59599516SKenneth E. Jansenc 1429*59599516SKenneth E. Jansenc There is an invariance problem with tets 1430*59599516SKenneth E. Jansenc It is fixed by the following modifications to gijd 1431*59599516SKenneth E. Jansenc 1432*59599516SKenneth E. Jansen 1433*59599516SKenneth E. Jansen c1 = 1.259921049894873D+00 1434*59599516SKenneth E. Jansen c2 = 6.299605249474365D-01 1435*59599516SKenneth E. Jansenc 1436*59599516SKenneth E. Jansen tmp1(:) = c1 * dxidx(:,1,1) + c2 *(dxidx(:,2,1)+dxidx(:,3,1)) 1437*59599516SKenneth E. Jansen tmp2(:) = c1 * dxidx(:,2,1) + c2 *(dxidx(:,1,1)+dxidx(:,3,1)) 1438*59599516SKenneth E. Jansen tmp3(:) = c1 * dxidx(:,3,1) + c2 *(dxidx(:,1,1)+dxidx(:,2,1)) 1439*59599516SKenneth E. Jansen gijd(:,1) = dxidx(:,1,1) * tmp1 1440*59599516SKenneth E. Jansen 1 + dxidx(:,2,1) * tmp2 1441*59599516SKenneth E. Jansen 2 + dxidx(:,3,1) * tmp3 1442*59599516SKenneth E. Jansenc 1443*59599516SKenneth E. Jansen tmp1(:) = c1 * dxidx(:,1,2) + c2 *(dxidx(:,2,2)+dxidx(:,3,2)) 1444*59599516SKenneth E. Jansen tmp2(:) = c1 * dxidx(:,2,2) + c2 *(dxidx(:,1,2)+dxidx(:,3,2)) 1445*59599516SKenneth E. Jansen tmp3(:) = c1 * dxidx(:,3,2) + c2 *(dxidx(:,1,2)+dxidx(:,2,2)) 1446*59599516SKenneth E. Jansen gijd(:,2) = dxidx(:,1,1) * tmp1 1447*59599516SKenneth E. Jansen 1 + dxidx(:,2,1) * tmp2 1448*59599516SKenneth E. Jansen 2 + dxidx(:,3,1) * tmp3 1449*59599516SKenneth E. Jansenc 1450*59599516SKenneth E. Jansen gijd(:,3) = dxidx(:,1,2) * tmp1 1451*59599516SKenneth E. Jansen 1 + dxidx(:,2,2) * tmp2 1452*59599516SKenneth E. Jansen 2 + dxidx(:,3,2) * tmp3 1453*59599516SKenneth E. Jansenc 1454*59599516SKenneth E. Jansen tmp1(:) = c1 * dxidx(:,1,3) + c2 *(dxidx(:,2,3)+dxidx(:,3,3)) 1455*59599516SKenneth E. Jansen tmp2(:) = c1 * dxidx(:,2,3) + c2 *(dxidx(:,1,3)+dxidx(:,3,3)) 1456*59599516SKenneth E. Jansen tmp3(:) = c1 * dxidx(:,3,3) + c2 *(dxidx(:,1,3)+dxidx(:,2,3)) 1457*59599516SKenneth E. Jansen gijd(:,4) = dxidx(:,1,1) * tmp1 1458*59599516SKenneth E. Jansen 1 + dxidx(:,2,1) * tmp2 1459*59599516SKenneth E. Jansen 2 + dxidx(:,3,1) * tmp3 1460*59599516SKenneth E. Jansenc 1461*59599516SKenneth E. Jansen gijd(:,5) = dxidx(:,1,2) * tmp1 1462*59599516SKenneth E. Jansen 1 + dxidx(:,2,2) * tmp2 1463*59599516SKenneth E. Jansen 2 + dxidx(:,3,2) * tmp3 1464*59599516SKenneth E. Jansenc 1465*59599516SKenneth E. Jansen gijd(:,6) = dxidx(:,1,3) * tmp1 1466*59599516SKenneth E. Jansen 1 + dxidx(:,2,3) * tmp2 1467*59599516SKenneth E. Jansen 2 + dxidx(:,3,3) * tmp3 1468*59599516SKenneth E. Jansenc 1469*59599516SKenneth E. Jansen else 1470*59599516SKenneth E. Jansenc This is just the hex copied from above. I have 1471*59599516SKenneth E. Jansenc to find my notes on invariance factors for wedges 1472*59599516SKenneth E. Jansenc 1473*59599516SKenneth E. Jansen 1474*59599516SKenneth E. Jansen gijd(:,1) = dxidx(:,1,1) * dxidx(:,1,1) 1475*59599516SKenneth E. Jansen & + dxidx(:,2,1) * dxidx(:,2,1) 1476*59599516SKenneth E. Jansen & + dxidx(:,3,1) * dxidx(:,3,1) 1477*59599516SKenneth E. Jansenc 1478*59599516SKenneth E. Jansen gijd(:,2) = dxidx(:,1,1) * dxidx(:,1,2) 1479*59599516SKenneth E. Jansen & + dxidx(:,2,1) * dxidx(:,2,2) 1480*59599516SKenneth E. Jansen & + dxidx(:,3,1) * dxidx(:,3,2) 1481*59599516SKenneth E. Jansenc 1482*59599516SKenneth E. Jansen gijd(:,3) = dxidx(:,1,2) * dxidx(:,1,2) 1483*59599516SKenneth E. Jansen & + dxidx(:,2,2) * dxidx(:,2,2) 1484*59599516SKenneth E. Jansen & + dxidx(:,3,2) * dxidx(:,3,2) 1485*59599516SKenneth E. Jansenc 1486*59599516SKenneth E. Jansen gijd(:,4) = dxidx(:,1,1) * dxidx(:,1,3) 1487*59599516SKenneth E. Jansen & + dxidx(:,2,1) * dxidx(:,2,3) 1488*59599516SKenneth E. Jansen & + dxidx(:,3,1) * dxidx(:,3,3) 1489*59599516SKenneth E. Jansenc 1490*59599516SKenneth E. Jansen gijd(:,5) = dxidx(:,1,2) * dxidx(:,1,3) 1491*59599516SKenneth E. Jansen & + dxidx(:,2,2) * dxidx(:,2,3) 1492*59599516SKenneth E. Jansen & + dxidx(:,3,2) * dxidx(:,3,3) 1493*59599516SKenneth E. Jansenc 1494*59599516SKenneth E. Jansen gijd(:,6) = dxidx(:,1,3) * dxidx(:,1,3) 1495*59599516SKenneth E. Jansen & + dxidx(:,2,3) * dxidx(:,2,3) 1496*59599516SKenneth E. Jansen & + dxidx(:,3,3) * dxidx(:,3,3) 1497*59599516SKenneth E. Jansen endif 1498*59599516SKenneth E. Jansenc 1499*59599516SKenneth E. Jansen return 1500*59599516SKenneth E. Jansen end 1501*59599516SKenneth E. Jansen 1502