159599516SKenneth E. Jansen subroutine e3tau (rho, cp, rmu, 259599516SKenneth E. Jansen & u1, u2, u3, 359599516SKenneth E. Jansen & con, dxidx, rLyi, 459599516SKenneth E. Jansen & rLymi, tau, rk, 559599516SKenneth E. Jansen & giju, rTLS, raLS, 659599516SKenneth E. Jansen & A0inv, dVdY, cv) 759599516SKenneth E. Jansenc 859599516SKenneth E. Jansenc---------------------------------------------------------------------- 959599516SKenneth E. Jansenc 1059599516SKenneth E. Jansenc This routine computes the diagonal Tau for least-squares operator. 1159599516SKenneth E. Jansenc We receive the regular residual L operator and a 1259599516SKenneth E. Jansenc modified residual L operator, calculate tau, and return values for 1359599516SKenneth E. Jansenc tau and tau times these operators to maintain the format of past 1459599516SKenneth E. Jansenc ENSA codes 1559599516SKenneth E. Jansenc 1659599516SKenneth E. Jansenc input: 1759599516SKenneth E. Jansenc rho (npro) : density 1859599516SKenneth E. Jansenc T (npro) : temperature 1959599516SKenneth E. Jansenc cp (npro) : specific heat at constant pressure 2059599516SKenneth E. Jansenc u1 (npro) : x1-velocity component 2159599516SKenneth E. Jansenc u2 (npro) : x2-velocity component 2259599516SKenneth E. Jansenc u3 (npro) : x3-velocity component 2359599516SKenneth E. Jansenc dxidx (npro,nsd,nsd) : inverse of deformation gradient 2459599516SKenneth E. Jansenc rLyi (npro,nflow) : least-squares residual vector 2559599516SKenneth E. Jansenc rLymi (npro,nflow) : modified least-squares residual vector 2659599516SKenneth E. Jansenc 2759599516SKenneth E. Jansenc output: 2859599516SKenneth E. Jansenc rLyi (npro,nflow) : least-squares residual vector 2959599516SKenneth E. Jansenc rLymi (npro,nflow) : modified least-squares residual vector 3059599516SKenneth E. Jansenc tau (npro,3) : 3 taus 3159599516SKenneth E. Jansenc 3259599516SKenneth E. Jansenc 3359599516SKenneth E. Jansenc Zdenek Johan, Summer 1990. (Modified from e2tau.f) 3459599516SKenneth E. Jansenc Zdenek Johan, Winter 1991. (Fortran 90) 3559599516SKenneth E. Jansenc---------------------------------------------------------------------- 3659599516SKenneth E. Jansenc 3759599516SKenneth E. Jansen include "common.h" 3859599516SKenneth E. Jansenc 3959599516SKenneth E. Jansen dimension rho(npro), con(npro), 4059599516SKenneth E. Jansen & cp(npro), u1(npro), 4159599516SKenneth E. Jansen & u2(npro), u3(npro), 4259599516SKenneth E. Jansen & dxidx(npro,nsd,nsd), rk(npro), 4359599516SKenneth E. Jansen & tau(npro,5), rLyi(npro,nflow), 4459599516SKenneth E. Jansen & rLymi(npro,nflow), dVdY(npro,15), 4559599516SKenneth E. Jansen & rTLS(npro), raLS(npro), 4659599516SKenneth E. Jansen & rLyitemp(npro,nflow), detgijI(npro) 4759599516SKenneth E. Jansenc 4859599516SKenneth E. Jansen dimension rmu(npro), cv(npro), 4959599516SKenneth E. Jansen & gijd(npro,6), uh1(npro), 5059599516SKenneth E. Jansen & fact(npro), h2o2u(npro), giju(npro,6), 5159599516SKenneth E. Jansen & A0inv(npro,15),gijdu(npro,6) 5259599516SKenneth E. Jansenc 5359599516SKenneth E. Jansen call e3gijd( dxidx, gijd ) 5459599516SKenneth E. Jansenc 5559599516SKenneth E. Jansenc next form the diffusive length scale |u| h_1 = 2 ( ui (gijd)-1 uj)^{1/2} 5659599516SKenneth E. Jansenc 5759599516SKenneth E. Jansenc dividing factor for the inverse of gijd 5859599516SKenneth E. Jansenc 5959599516SKenneth E. Jansen fact = gijd(:,1) * gijd(:,3) * gijd(:,6) 6059599516SKenneth E. Jansen & - gijd(:,1) * gijd(:,5) * gijd(:,5) 6159599516SKenneth E. Jansen & - gijd(:,3) * gijd(:,4) * gijd(:,4) 6259599516SKenneth E. Jansen & - gijd(:,6) * gijd(:,2) * gijd(:,2) 6359599516SKenneth E. Jansen & + gijd(:,2) * gijd(:,4) * gijd(:,5) * two 6459599516SKenneth E. Jansenc 6559599516SKenneth E. Jansen uh1= u1*u1*(gijd(:,3)*gijd(:,6)-gijd(:,5)*gijd(:,5)) 6659599516SKenneth E. Jansen & + u2*u2*(gijd(:,1)*gijd(:,6)-gijd(:,4)*gijd(:,4)) 6759599516SKenneth E. Jansen & + u3*u3*(gijd(:,1)*gijd(:,3)-gijd(:,2)*gijd(:,2)) 6859599516SKenneth E. Jansen & + two *(u1*u2*(gijd(:,4)*gijd(:,5)-gijd(:,2)*gijd(:,6)) 6959599516SKenneth E. Jansen & + u1*u3*(gijd(:,2)*gijd(:,5)-gijd(:,4)*gijd(:,3)) 7059599516SKenneth E. Jansen & + u2*u3*(gijd(:,4)*gijd(:,2)-gijd(:,1)*gijd(:,5))) 7159599516SKenneth E. Jansenc 7259599516SKenneth E. Jansenc at this point we have (u h1)^2 * inverse coefficient^2 / 4 7359599516SKenneth E. Jansenc 7459599516SKenneth E. Jansenc ^ fact 7559599516SKenneth E. Jansenc 7659599516SKenneth E. Jansen uh1= two * sqrt(uh1/fact) 7759599516SKenneth E. Jansenc 7859599516SKenneth E. Jansenc next form the advective length scale |u|/h_2 = 2 ( ui (gijd) uj)^{1/2} 7959599516SKenneth E. Jansenc 8059599516SKenneth E. Jansen h2o2u = u1*u1*gijd(:,1) 8159599516SKenneth E. Jansen & + u2*u2*gijd(:,3) 8259599516SKenneth E. Jansen & + u3*u3*gijd(:,6) 8359599516SKenneth E. Jansen & +(u1*u2*gijd(:,2) 8459599516SKenneth E. Jansen & + u1*u3*gijd(:,4) 8559599516SKenneth E. Jansen & + u2*u3*gijd(:,5))*two + 1.0e-15 !FIX FOR INVALID MESHES 8659599516SKenneth E. Jansenc 8759599516SKenneth E. Jansenc at this point we have (2 u / h_2)^2 8859599516SKenneth E. Jansenc 8959599516SKenneth E. Jansen 9059599516SKenneth E. Jansenc call tnanqe(h2o2u,1,"riaconv ") 9159599516SKenneth E. Jansen 9259599516SKenneth E. Jansen h2o2u = one / sqrt(h2o2u) ! this flips it over leaves it h_2/(2u) 9359599516SKenneth E. Jansenc 9459599516SKenneth E. Jansenc.... diffusive corrections 9559599516SKenneth E. Jansen 9659599516SKenneth E. Jansen if(itau.eq.1) then ! tau proposed by for nearly incompressible 9759599516SKenneth E. Jansenc flows by Guillermo Hauke 9859599516SKenneth E. Jansenc 9959599516SKenneth E. Jansenc.... cell Reynold number 10059599516SKenneth E. Jansenc 10159599516SKenneth E. Jansen fact=pt5*rho*uh1/rmu 10259599516SKenneth E. Jansen 10359599516SKenneth E. Jansenc 10459599516SKenneth E. Jansenc.... continuity tau 10559599516SKenneth E. Jansenc 10659599516SKenneth E. Jansen tau(:,1)=pt5*uh1*min(one,fact)*taucfct 10759599516SKenneth E. Jansenc 10859599516SKenneth E. Jansenc... momentum tau 10959599516SKenneth E. Jansenc 11059599516SKenneth E. Jansen dts=one/(Dtgl*dtsfct) 11159599516SKenneth E. Jansen tau(:,2)=min(dts,h2o2u) 11259599516SKenneth E. Jansen tau(:,2)=tau(:,2)/rho 11359599516SKenneth E. Jansenc 11459599516SKenneth E. Jansenc.... energy tau cv=cp/gamma assumed 11559599516SKenneth E. Jansenc 11659599516SKenneth E. Jansenc tau(:,3)=gamma*tau(:,2)/cp 11759599516SKenneth E. Jansen tau(:,3)=tau(:,2)/cv 11859599516SKenneth E. Jansenc 11959599516SKenneth E. Jansenc.... diffusive corrections 12059599516SKenneth E. Jansenc 12159599516SKenneth E. Jansen if (ipord == 1) then 12259599516SKenneth E. Jansen celt = pt66 12359599516SKenneth E. Jansen else if (ipord == 2) then 12459599516SKenneth E. Jansen celt = pt33 12559599516SKenneth E. Jansenc celt = pt33*0.04762 12659599516SKenneth E. Jansen else if (ipord == 3) then 12759599516SKenneth E. Jansen celt = pt33 !.02 just a guess... 12859599516SKenneth E. Jansen else if (ipord >= 4) then 12959599516SKenneth E. Jansen celt = .008 ! yet another guess... 13059599516SKenneth E. Jansen endif 13159599516SKenneth E. Jansenc 13259599516SKenneth E. Jansenc fact=h2o2u*h2o2u*rk*pt66/rmu 13359599516SKenneth E. Jansen fact=h2o2u*h2o2u*rk*celt/rmu 13459599516SKenneth E. Jansenc 13559599516SKenneth E. Jansen tau(:,2)=min(tau(:,2),fact) 13659599516SKenneth E. Jansen tau(:,3)=min(tau(:,3),fact*rmu/con)*temper 13759599516SKenneth E. Jansenc 13859599516SKenneth E. Jansen else if(itau.eq.0) then ! tau proposed by Farzin and Shakib 13959599516SKenneth E. Jansenc 14059599516SKenneth E. Jansenc... momentum tau 14159599516SKenneth E. Jansenc 14259599516SKenneth E. Jansen 14359599516SKenneth E. Jansenc 14459599516SKenneth E. Jansenc... higher order element diffusive correction 14559599516SKenneth E. Jansenc 14659599516SKenneth E. Jansen if (ipord == 1) then 14759599516SKenneth E. Jansen fff = 36.0d0 14859599516SKenneth E. Jansen else if (ipord == 2) then 14959599516SKenneth E. Jansen fff = 60.0d0 15059599516SKenneth E. Jansenc fff = 36.0d0 15159599516SKenneth E. Jansen else if (ipord == 3) then 15259599516SKenneth E. Jansen fff = 128.0d0 15359599516SKenneth E. Jansenc fff = 144.0d0 15459599516SKenneth E. Jansen endif 15559599516SKenneth E. Jansen dts = dtsfct*Dtgl 15659599516SKenneth E. Jansen tau(:,2)=rho**2*((two*dts)**2 15759599516SKenneth E. Jansen & + u1*(u1*gijd(:,1) + two*(u2*gijd(:,2)+u3*gijd(:,4))) 15859599516SKenneth E. Jansen & + u2*(u2*gijd(:,3) + two*u3*gijd(:,5)) 15959599516SKenneth E. Jansen & + u3*u3*gijd(:,6)) 16059599516SKenneth E. Jansen & +fff*rmu**2*(gijd(:,1)**2 + gijd(:,3)**2 + gijd(:,6)**2 + 16159599516SKenneth E. Jansen & two*(gijd(:,2)**2 + gijd(:,4)**2 + gijd(:,5)**2)) 16259599516SKenneth E. Jansen fact=sqrt(tau(:,2)) 16359599516SKenneth E. Jansen tau(:,1)=pt125*fact/(gijd(:,1)+gijd(:,3)+gijd(:,6))*taucfct 16459599516SKenneth E. Jansen tau(:,2)=one/fact 16559599516SKenneth E. Jansenc 16659599516SKenneth E. Jansenc.... energy tau cv=cp/gamma assumed 16759599516SKenneth E. Jansenc 16859599516SKenneth E. Jansen tau(:,3)=tau(:,2)/cv*temper 16959599516SKenneth E. Jansenc 17059599516SKenneth E. Jansen endif 17159599516SKenneth E. Jansenc 17259599516SKenneth E. Jansenc... finally multiply this tau matrix times the 17359599516SKenneth E. Jansenc two residual vectors 17459599516SKenneth E. Jansenc 17559599516SKenneth E. Jansenc ... calculate (tau Ly) --> (rLyi) 17659599516SKenneth E. Jansenc ... storing rLyi for the DC term 17759599516SKenneth E. Jansen if(iDC .ne. 0) rLyitemp=rLyi 17859599516SKenneth E. Jansen 17959599516SKenneth E. Jansen if(ires.eq.3 .or. ires .eq. 1) then 18059599516SKenneth E. Jansen rLyi(:,1) = tau(:,1) * rLyi(:,1) 18159599516SKenneth E. Jansen rLyi(:,2) = tau(:,2) * rLyi(:,2) 18259599516SKenneth E. Jansen rLyi(:,3) = tau(:,2) * rLyi(:,3) 18359599516SKenneth E. Jansen rLyi(:,4) = tau(:,2) * rLyi(:,4) 18459599516SKenneth E. Jansen rLyi(:,5) = tau(:,3) * rLyi(:,5) 18559599516SKenneth E. Jansen endif 18659599516SKenneth E. Jansenc 18759599516SKenneth E. Jansen if(iDC .ne. 0) then 18859599516SKenneth E. Jansenc..... calculation of rTLS & raLS for DC term 18959599516SKenneth E. Jansenc 19059599516SKenneth E. Jansenc..... calculation of (Ly - S).tau^tilda*(Ly - S) 19159599516SKenneth E. Jansenc 19259599516SKenneth E. Jansen rTLS = rLYItemp(:,1) * (rLyi(:,1)*dVdY(:,1) 19359599516SKenneth E. Jansen & + dVdY(:,2)*rLyi(:,2) + dVdY(:,4)*rLyi(:,3) 19459599516SKenneth E. Jansen & + rLyi(:,4)*dVdY(:,7) + dVdY(:,11)*rLyi(:,5)) 19559599516SKenneth E. Jansen & + rLyitemp(:,2) * (rLyi(:,2)*dVdY(:,3) 19659599516SKenneth E. Jansen & + rLyi(:,3)*dVdY(:,5) + dVdY(:,8)*rLyi(:,4) 19759599516SKenneth E. Jansen & + rLyi(:,5)*dVdY(:,12)) 19859599516SKenneth E. Jansen & + rLyitemp(:,3) * (rLyi(:,3)*dVdY(:,6) 19959599516SKenneth E. Jansen & + dVdY(:,9)*rLyi(:,4) + dVdY(:,13)*rLyi(:,5)) 20059599516SKenneth E. Jansen & + rLyitemp(:,4) * (rLyi(:,4)*dVdY(:,10) 20159599516SKenneth E. Jansen & + dVdY(:,14)*rLyi(:,5)) 20259599516SKenneth E. Jansen & + rLyitemp(:,5) * (dVdY(:,15)*rLyi(:,5)) 20359599516SKenneth E. Jansen 20459599516SKenneth E. Jansenc 20559599516SKenneth E. Jansenc...... calculation of (Ly - S).A0inv*(Ly - S) 20659599516SKenneth E. Jansenc 20759599516SKenneth E. Jansen raLS = two*rLyitemp(:,4)*rLyitemp(:,5)*A0inv(:,15) 20859599516SKenneth E. Jansen & + two*rLyitemp(:,3)*rLyitemp(:,5)*A0inv(:,14) 20959599516SKenneth E. Jansen & + two*rLyitemp(:,1)*rLyitemp(:,2)*A0inv( :,6) 21059599516SKenneth E. Jansen & + two*rLyitemp(:,2)*rLyitemp(:,3)*A0inv(:,10) 21159599516SKenneth E. Jansen & + two*rLyitemp(:,2)*rLyitemp(:,4)*A0inv(:,11) 21259599516SKenneth E. Jansen & + two*rLyitemp(:,1)*rLyitemp(:,3)*A0inv( :,7) 21359599516SKenneth E. Jansen & + two*rLyitemp(:,3)*rLyitemp(:,4)*A0inv(:,13) 21459599516SKenneth E. Jansen & + two*rLyitemp(:,2)*rLyitemp(:,5)*A0inv(:,12) 21559599516SKenneth E. Jansen & + two*rLyitemp(:,1)*rLyitemp(:,4)*A0inv( :,8) 21659599516SKenneth E. Jansen & + two*rLyitemp(:,1)*rLyitemp(:,5)*A0inv( :,9) 21759599516SKenneth E. Jansen & + rLyitemp(:,1)**2*A0inv(:,1) 21859599516SKenneth E. Jansen & + rLyitemp(:,2)**2*A0inv(:,2) 21959599516SKenneth E. Jansen & + rLyitemp(:,3)**2*A0inv(:,3) 22059599516SKenneth E. Jansen & + rLyitemp(:,4)**2*A0inv(:,4) 22159599516SKenneth E. Jansen & + rLyitemp(:,5)**2*A0inv(:,5) 22259599516SKenneth E. Jansenc 22359599516SKenneth E. Jansenc.....****************calculation of giju for DC term*************** 22459599516SKenneth E. Jansenc 22559599516SKenneth E. Jansenc.... for the notation of different numbering 22659599516SKenneth E. Jansenc 22759599516SKenneth E. Jansen gijdu(:,1)=gijd(:,1) 22859599516SKenneth E. Jansen gijdu(:,2)=gijd(:,3) 22959599516SKenneth E. Jansen gijdu(:,3)=gijd(:,6) 23059599516SKenneth E. Jansen gijdu(:,4)=gijd(:,2) 23159599516SKenneth E. Jansen gijdu(:,5)=gijd(:,4) 23259599516SKenneth E. Jansen gijdu(:,6)=gijd(:,5) 23359599516SKenneth E. Jansenc 23459599516SKenneth E. Jansenc 23559599516SKenneth E. Jansen detgijI = one/( 23659599516SKenneth E. Jansen & gijdu(:,1) * gijdu(:,2) * gijdu(:,3) 23759599516SKenneth E. Jansen & - gijdu(:,1) * gijdu(:,6) * gijdu(:,6) 23859599516SKenneth E. Jansen & - gijdu(:,4) * gijdu(:,4) * gijdu(:,3) 23959599516SKenneth E. Jansen & + gijdu(:,4) * gijdu(:,5) * gijdu(:,6) * two 24059599516SKenneth E. Jansen & - gijdu(:,5) * gijdu(:,5) * gijdu(:,2) 24159599516SKenneth E. Jansen & ) 24259599516SKenneth E. Jansen giju(:,1) = detgijI * (gijdu(:,2)*gijdu(:,3) 24359599516SKenneth E. Jansen & - gijdu(:,6)**2) 24459599516SKenneth E. Jansen giju(:,2) = detgijI * (gijdu(:,1)*gijdu(:,3) 24559599516SKenneth E. Jansen & - gijdu(:,5)**2) 24659599516SKenneth E. Jansen giju(:,3) = detgijI * (gijdu(:,1)*gijdu(:,2) 24759599516SKenneth E. Jansen & - gijdu(:,4)**2) 24859599516SKenneth E. Jansen giju(:,4) = detgijI * (gijdu(:,5)*gijdu(:,6) 24959599516SKenneth E. Jansen & - gijdu(:,4)*gijdu(:,3) ) 25059599516SKenneth E. Jansen giju(:,5) = detgijI * (gijdu(:,4)*gijdu(:,6) 25159599516SKenneth E. Jansen & - gijdu(:,5)*gijdu(:,2) ) 25259599516SKenneth E. Jansen giju(:,6) = detgijI * (gijdu(:,4)*gijdu(:,5) 25359599516SKenneth E. Jansen & - gijdu(:,1)*gijdu(:,6) ) 25459599516SKenneth E. Jansenc 25559599516SKenneth E. Jansen endif ! end of iDC.ne.0 25659599516SKenneth E. Jansenc 25759599516SKenneth E. Jansenc.... calculate (tau Lym) --> (rLymi) 25859599516SKenneth E. Jansenc 25959599516SKenneth E. Jansen if(ires.ne.1 ) then 26059599516SKenneth E. Jansen rLymi(:,1) = tau(:,1) * rLymi(:,1) 26159599516SKenneth E. Jansen rLymi(:,2) = tau(:,2) * rLymi(:,2) 26259599516SKenneth E. Jansen rLymi(:,3) = tau(:,2) * rLymi(:,3) 26359599516SKenneth E. Jansen rLymi(:,4) = tau(:,2) * rLymi(:,4) 26459599516SKenneth E. Jansen rLymi(:,5) = tau(:,3) * rLymi(:,5) 26559599516SKenneth E. Jansen endif 26659599516SKenneth E. Jansenc 26759599516SKenneth E. Jansenc INCORRECT NOW flops = flops + 255*npro 26859599516SKenneth E. Jansenc 26959599516SKenneth E. Jansenc 27059599516SKenneth E. Jansenc.... return 27159599516SKenneth E. Jansenc 27259599516SKenneth E. Jansen return 27359599516SKenneth E. Jansen end 27459599516SKenneth E. Jansenc 27559599516SKenneth E. Jansenc 27659599516SKenneth E. Jansen 27759599516SKenneth E. Jansen 27859599516SKenneth E. Jansen subroutine e3tau_nd (rho, cp, rmu, T, 27959599516SKenneth E. Jansen & u1, u2, u3, 28059599516SKenneth E. Jansen & a1, a2, a3, 28159599516SKenneth E. Jansen & con, dxidx, rLyi, 28259599516SKenneth E. Jansen & rLymi, Tau, rk, 28359599516SKenneth E. Jansen & giju, rTLS, raLS, 28459599516SKenneth E. Jansen & cv, compK, pres, 28559599516SKenneth E. Jansen & A0inv, dVdY) 28659599516SKenneth E. Jansenc 28759599516SKenneth E. Jansenc---------------------------------------------------------------------- 28859599516SKenneth E. Jansenc 28959599516SKenneth E. Jansenc This routine computes the diagonal Tau for least-squares operator. 29059599516SKenneth E. Jansenc We receive the regular residual L operator and a 29159599516SKenneth E. Jansenc modified residual L operator, calculate tau, and return values for 29259599516SKenneth E. Jansenc tau and tau times these operators to maintain the format of past 29359599516SKenneth E. Jansenc ENSA codes 29459599516SKenneth E. Jansenc 29559599516SKenneth E. Jansenc input: 29659599516SKenneth E. Jansenc rho (npro) : density 29759599516SKenneth E. Jansenc T (npro) : temperature 29859599516SKenneth E. Jansenc cp (npro) : specific heat at constant pressure 29959599516SKenneth E. Jansenc u1 (npro) : x1-velocity component 30059599516SKenneth E. Jansenc u2 (npro) : x2-velocity component 30159599516SKenneth E. Jansenc u3 (npro) : x3-velocity component 30259599516SKenneth E. Jansenc dxidx (npro,nsd,nsd) : inverse of deformation gradient 30359599516SKenneth E. Jansenc rLyi (npro,nflow) : least-squares residual vector 30459599516SKenneth E. Jansenc rLymi (npro,nflow) : modified least-squares residual vector 30559599516SKenneth E. Jansenc 30659599516SKenneth E. Jansenc output: 30759599516SKenneth E. Jansenc rLyi (npro,nflow) : least-squares residual vector 30859599516SKenneth E. Jansenc rLymi (npro,nflow) : modified least-squares residual vector 30959599516SKenneth E. Jansenc Mtau (npro,5,5) : Matrix of Stabilized Parameters 31059599516SKenneth E. Jansenc 31159599516SKenneth E. Jansenc 31259599516SKenneth E. Jansenc Zdenek Johan, Summer 1990. (Modified from e2tau.f) 31359599516SKenneth E. Jansenc Zdenek Johan, Winter 1991. (Fortran 90) 31459599516SKenneth E. Jansenc---------------------------------------------------------------------- 31559599516SKenneth E. Jansenc 31659599516SKenneth E. Jansen include "common.h" 31759599516SKenneth E. Jansenc 31859599516SKenneth E. Jansen dimension rho(npro), con(npro), 31959599516SKenneth E. Jansen & cp(npro), u1(npro), 32059599516SKenneth E. Jansen & u2(npro), u3(npro), 32159599516SKenneth E. Jansen & dxidx(npro,nsd,nsd), rk(npro), 32259599516SKenneth E. Jansen & rLyi(npro,nflow), 32359599516SKenneth E. Jansen & rLymi(npro,nflow), dVdY(npro,15), 32459599516SKenneth E. Jansen & rTLS(npro), raLS(npro), 32559599516SKenneth E. Jansen & rLyitemp(npro,nflow), detgijI(npro) 32659599516SKenneth E. Jansenc 32759599516SKenneth E. Jansen dimension rmu(npro), cv(npro), 32859599516SKenneth E. Jansen & gijd(npro,6), 32959599516SKenneth E. Jansen & fact(npro), giju(npro,6), 33059599516SKenneth E. Jansen & A0inv(npro,15),gijdu(npro,6), compK(npro,10), 33159599516SKenneth E. Jansen & a1(npro), a2(npro), a3(npro), 33259599516SKenneth E. Jansen & T(npro), pres(npro), alphap(npro), 33359599516SKenneth E. Jansen & betaT(npro), gamb(npro), c(npro), 33459599516SKenneth E. Jansen & u(npro), eb1(npro), Q(npro,5,5), 33559599516SKenneth E. Jansen & rlam(npro,5), eigmax(npro,5), Pe(npro), 33659599516SKenneth E. Jansen & Ak(npro), B(npro), D(npro), E(npro), 33759599516SKenneth E. Jansen & STau(npro,15), Tau(npro,nflow,nflow) 33859599516SKenneth E. Jansen 33959599516SKenneth E. Jansen 34059599516SKenneth E. Jansenc... build some necessary quantities at integration point: 34159599516SKenneth E. Jansen 34259599516SKenneth E. Jansenc alfap = one / T 34359599516SKenneth E. Jansenc betaT = one / pres 34459599516SKenneth E. Jansen gamb = gamma1 34559599516SKenneth E. Jansen c = sqrt( (gamma * Rgas) * T ) 34659599516SKenneth E. Jansen u = sqrt(u1**2+u2**2+u3**2) 34759599516SKenneth E. Jansen eb1 = cp*T - pt5*(u1**2+u2**2+u3**2) 34859599516SKenneth E. Jansen 34959599516SKenneth E. Jansenc... get eigenvectors for diagonalizing Tau_adv (e.v) before final rotations 35059599516SKenneth E. Jansenc... Note: the ordering of eigenvectors corresponds to the following 35159599516SKenneth E. Jansenc... ordering of the eigenvalues in the 1-st Euler Jacobian rotated to 35259599516SKenneth E. Jansenc... the streamline coordinates 35359599516SKenneth E. Jansen 35459599516SKenneth E. Jansenc |u+c | 35559599516SKenneth E. Jansenc | u | 35659599516SKenneth E. Jansenc | u | 35759599516SKenneth E. Jansenc | u | ! for origins of this see Beam, Warming, Hyett 35859599516SKenneth E. Jansenc | u-c| ! Mathematics of Computation vol. 29 No. 132 p. 1037 35959599516SKenneth E. Jansen 36059599516SKenneth E. Jansenc... different ordering assumed in Shakib/Johan entropy vars. code 36159599516SKenneth E. Jansen 36259599516SKenneth E. Jansen 36359599516SKenneth E. Jansen 36459599516SKenneth E. Jansen call e3eig1 (rho, T, cp, 36559599516SKenneth E. Jansen & gamb, c, u1, 36659599516SKenneth E. Jansen & u2, u3, a1, 36759599516SKenneth E. Jansen & a2, a3, eb1, 36859599516SKenneth E. Jansen & dxidx, u, Q) 36959599516SKenneth E. Jansen 37059599516SKenneth E. Jansenc... Perform a Jacobi rotation on the Lambda matrix as well as adjust 37159599516SKenneth E. Jansenc... the eigenvectors. Tau still remains in entropy variables. 37259599516SKenneth E. Jansen 37359599516SKenneth E. Jansen 37459599516SKenneth E. Jansen 37559599516SKenneth E. Jansen call e3eig2 (u, c, a1, 37659599516SKenneth E. Jansen & a2, a3, rlam, 37759599516SKenneth E. Jansen & Q, eigmax) 37859599516SKenneth E. Jansen 37959599516SKenneth E. Jansenc 38059599516SKenneth E. Jansenc.... invert the eigenvalues 38159599516SKenneth E. Jansenc 38259599516SKenneth E. Jansen 38359599516SKenneth E. Jansen 38459599516SKenneth E. Jansen where (rlam .gt. ((epsM**2) * eigmax)) 38559599516SKenneth E. Jansen rlam = one / sqrt(rlam) 38659599516SKenneth E. Jansen elsewhere 38759599516SKenneth E. Jansen rlam = zero 38859599516SKenneth E. Jansen endwhere 38959599516SKenneth E. Jansen 39059599516SKenneth E. Jansenc 39159599516SKenneth E. Jansenc.... flop count 39259599516SKenneth E. Jansenc 39359599516SKenneth E. Jansen flops = flops + 65*npro 39459599516SKenneth E. Jansen 39559599516SKenneth E. Jansenc.... reduce the diffusion contribution 39659599516SKenneth E. Jansenc 39759599516SKenneth E. Jansen 39859599516SKenneth E. Jansen if (Navier .eq. 1) then 39959599516SKenneth E. Jansenc 40059599516SKenneth E. Jansenc.... calculate sigma 40159599516SKenneth E. Jansenc 40259599516SKenneth E. Jansen 40359599516SKenneth E. Jansen do i = 1, nflow ! diff. corr for every mode of Tau 40459599516SKenneth E. Jansen 40559599516SKenneth E. Jansen c(:) = pt33 * ( 40659599516SKenneth E. Jansen & Q(:,2,i) * ( compK(:, 1) * Q(:,2,i) + compK(:, 2) * Q(:,3,i) 40759599516SKenneth E. Jansen & + compK(:, 4) * Q(:,4,i) + compK(:, 7) * Q(:,5,i) ) 40859599516SKenneth E. Jansen & + Q(:,3,i) * ( compK(:, 2) * Q(:,2,i) + compK(:, 3) * Q(:,3,i) 40959599516SKenneth E. Jansen & + compK(:, 5) * Q(:,4,i) + compK(:, 8) * Q(:,5,i) ) 41059599516SKenneth E. Jansen & + Q(:,4,i) * ( compK(:, 4) * Q(:,2,i) + compK(:, 5) * Q(:,3,i) 41159599516SKenneth E. Jansen & + compK(:, 6) * Q(:,4,i) + compK(:, 9) * Q(:,5,i) ) 41259599516SKenneth E. Jansen & + Q(:,5,i) * ( compK(:, 7) * Q(:,2,i) + compK(:, 8) * Q(:,3,i) 41359599516SKenneth E. Jansen & + compK(:, 9) * Q(:,4,i) + compK(:,10) * Q(:,5,i) ) 41459599516SKenneth E. Jansen & ) 41559599516SKenneth E. Jansen 41659599516SKenneth E. Jansenc... get Peclet Number 41759599516SKenneth E. Jansen 41859599516SKenneth E. Jansen 41959599516SKenneth E. Jansen Pe(:) = one / (c(:)*rlam(:,i)) 42059599516SKenneth E. Jansen 42159599516SKenneth E. Jansen 42259599516SKenneth E. Jansenc 42359599516SKenneth E. Jansenc... branch out into different polynomial orders 42459599516SKenneth E. Jansenc 42559599516SKenneth E. Jansen 42659599516SKenneth E. Jansen 42759599516SKenneth E. Jansen if (ipord == 1) then ! linears - l = l^a*(coth(Pe)-1/Pe) 42859599516SKenneth E. Jansen ! approx. l = l^a*min(1/3*Pe,1) 42959599516SKenneth E. Jansen rlam(:,i) = rlam(:,i)*min(pt33*Pe(:),one) 43059599516SKenneth E. Jansen 43159599516SKenneth E. Jansen endif 43259599516SKenneth E. Jansen 43359599516SKenneth E. Jansen if (ipord == 2) then ! quads - Codina, CMAME' 92 43459599516SKenneth E. Jansen ! approx. l = l^a*min(1/6*Pe,1/2) 43559599516SKenneth E. Jansen rlam(:,i) = rlam(:,i)*min(pt33*pt5*Pe(:),pt5) 43659599516SKenneth E. Jansen 43759599516SKenneth E. Jansen endif 43859599516SKenneth E. Jansen 43959599516SKenneth E. Jansen if (ipord == 3) then ! cubics - Recent Work 44059599516SKenneth E. Jansen ! l = l^a*1/Pe*b 44159599516SKenneth E. Jansen ! b is a real root of the 44259599516SKenneth E. Jansen ! following polynomial: 44359599516SKenneth E. Jansen ! b^3+(-Pe*coth(Pe)b^2+(6/15*Pe^2-Pe*coth(Pe)+1)b+ 44459599516SKenneth E. Jansen ! +(-1/15*Pe^3*coth(Pe)+6/15*Pe^2-Pe*coth(Pe)+1) = 0 44559599516SKenneth E. Jansen ! proceed setting up newton iteration w/ initial 44659599516SKenneth E. Jansen ! guess coming from the quad estimate. 44759599516SKenneth E. Jansen 44859599516SKenneth E. Jansen Ak(:)=1.0 ! get parameters for iteration 44959599516SKenneth E. Jansen 45059599516SKenneth E. Jansen where(Pe.lt.5.0) ! approx. to hyp. cothangent 45159599516SKenneth E. Jansen alphap = exp(Pe) 45259599516SKenneth E. Jansen betaT = exp(-Pe) 45359599516SKenneth E. Jansen c = (alphap+betaT)/(alphap-betaT) 45459599516SKenneth E. Jansen elsewhere 45559599516SKenneth E. Jansen c = one 45659599516SKenneth E. Jansen endwhere 45759599516SKenneth E. Jansen 45859599516SKenneth E. Jansen B= -Pe*c + Ak 45959599516SKenneth E. Jansen D= 0.4 * (Pe**2) + B 46059599516SKenneth E. Jansen E=-0.066666667 * (Pe**3) * c +D 46159599516SKenneth E. Jansen 46259599516SKenneth E. Jansen ! initial guess, use betaT 46359599516SKenneth E. Jansen betaT(:) = Pe(:)*min(pt33*pt5*Pe(:),pt5) 46459599516SKenneth E. Jansen 46559599516SKenneth E. Jansen ! iteration - 3 iterations sufficient 46659599516SKenneth E. Jansen do j = 1, 3 46759599516SKenneth E. Jansen 46859599516SKenneth E. Jansen betaT=betaT-(Ak*betaT**3+B*betaT**2+D*betaT+E)/(3*Ak 46959599516SKenneth E. Jansen & *betaT**2+2*B*betaT+D) 47059599516SKenneth E. Jansen enddo 47159599516SKenneth E. Jansen 47259599516SKenneth E. Jansen rlam(:,i) = rlam(:,i)*(1/Pe(:))*betaT(:) 47359599516SKenneth E. Jansen 47459599516SKenneth E. Jansen endif ! done w/ different polynomial orders 47559599516SKenneth E. Jansen 47659599516SKenneth E. Jansen enddo ! done with loop over dof's 47759599516SKenneth E. Jansen 47859599516SKenneth E. Jansen endif ! done with diffusive correction 47959599516SKenneth E. Jansen 48059599516SKenneth E. Jansen 48159599516SKenneth E. Jansenc 48259599516SKenneth E. Jansenc.... form Tau (symmetric - entropy variables - then convert) 48359599516SKenneth E. Jansenc 48459599516SKenneth E. Jansen STau(:, 1) = rlam(:,1) * Q(:,1,1) * Q(:,1,1) + 48559599516SKenneth E. Jansen & rlam(:,2) * Q(:,1,2) * Q(:,1,2) + 48659599516SKenneth E. Jansen & rlam(:,3) * Q(:,1,3) * Q(:,1,3) + 48759599516SKenneth E. Jansen & rlam(:,4) * Q(:,1,4) * Q(:,1,4) + 48859599516SKenneth E. Jansen & rlam(:,5) * Q(:,1,5) * Q(:,1,5) 48959599516SKenneth E. Jansenc 49059599516SKenneth E. Jansen STau(:, 2) = rlam(:,1) * Q(:,1,1) * Q(:,2,1) + 49159599516SKenneth E. Jansen & rlam(:,2) * Q(:,1,2) * Q(:,2,2) + 49259599516SKenneth E. Jansen & rlam(:,3) * Q(:,1,3) * Q(:,2,3) + 49359599516SKenneth E. Jansen & rlam(:,4) * Q(:,1,4) * Q(:,2,4) + 49459599516SKenneth E. Jansen & rlam(:,5) * Q(:,1,5) * Q(:,2,5) 49559599516SKenneth E. Jansenc 49659599516SKenneth E. Jansen STau(:, 3) = rlam(:,1) * Q(:,2,1) * Q(:,2,1) + 49759599516SKenneth E. Jansen & rlam(:,2) * Q(:,2,2) * Q(:,2,2) + 49859599516SKenneth E. Jansen & rlam(:,3) * Q(:,2,3) * Q(:,2,3) + 49959599516SKenneth E. Jansen & rlam(:,4) * Q(:,2,4) * Q(:,2,4) + 50059599516SKenneth E. Jansen & rlam(:,5) * Q(:,2,5) * Q(:,2,5) 50159599516SKenneth E. Jansenc 50259599516SKenneth E. Jansen STau(:, 4) = rlam(:,1) * Q(:,1,1) * Q(:,3,1) + 50359599516SKenneth E. Jansen & rlam(:,2) * Q(:,1,2) * Q(:,3,2) + 50459599516SKenneth E. Jansen & rlam(:,3) * Q(:,1,3) * Q(:,3,3) + 50559599516SKenneth E. Jansen & rlam(:,4) * Q(:,1,4) * Q(:,3,4) + 50659599516SKenneth E. Jansen & rlam(:,5) * Q(:,1,5) * Q(:,3,5) 50759599516SKenneth E. Jansenc 50859599516SKenneth E. Jansen STau(:, 5) = rlam(:,1) * Q(:,2,1) * Q(:,3,1) + 50959599516SKenneth E. Jansen & rlam(:,2) * Q(:,2,2) * Q(:,3,2) + 51059599516SKenneth E. Jansen & rlam(:,3) * Q(:,2,3) * Q(:,3,3) + 51159599516SKenneth E. Jansen & rlam(:,4) * Q(:,2,4) * Q(:,3,4) + 51259599516SKenneth E. Jansen & rlam(:,5) * Q(:,2,5) * Q(:,3,5) 51359599516SKenneth E. Jansenc 51459599516SKenneth E. Jansen STau(:, 6) = rlam(:,1) * Q(:,3,1) * Q(:,3,1) + 51559599516SKenneth E. Jansen & rlam(:,2) * Q(:,3,2) * Q(:,3,2) + 51659599516SKenneth E. Jansen & rlam(:,3) * Q(:,3,3) * Q(:,3,3) + 51759599516SKenneth E. Jansen & rlam(:,4) * Q(:,3,4) * Q(:,3,4) + 51859599516SKenneth E. Jansen & rlam(:,5) * Q(:,3,5) * Q(:,3,5) 51959599516SKenneth E. Jansenc 52059599516SKenneth E. Jansen STau(:, 7) = rlam(:,1) * Q(:,1,1) * Q(:,4,1) + 52159599516SKenneth E. Jansen & rlam(:,2) * Q(:,1,2) * Q(:,4,2) + 52259599516SKenneth E. Jansen & rlam(:,3) * Q(:,1,3) * Q(:,4,3) + 52359599516SKenneth E. Jansen & rlam(:,4) * Q(:,1,4) * Q(:,4,4) + 52459599516SKenneth E. Jansen & rlam(:,5) * Q(:,1,5) * Q(:,4,5) 52559599516SKenneth E. Jansenc 52659599516SKenneth E. Jansen STau(:, 8) = rlam(:,1) * Q(:,2,1) * Q(:,4,1) + 52759599516SKenneth E. Jansen & rlam(:,2) * Q(:,2,2) * Q(:,4,2) + 52859599516SKenneth E. Jansen & rlam(:,3) * Q(:,2,3) * Q(:,4,3) + 52959599516SKenneth E. Jansen & rlam(:,4) * Q(:,2,4) * Q(:,4,4) + 53059599516SKenneth E. Jansen & rlam(:,5) * Q(:,2,5) * Q(:,4,5) 53159599516SKenneth E. Jansenc 53259599516SKenneth E. Jansen STau(:, 9) = rlam(:,1) * Q(:,3,1) * Q(:,4,1) + 53359599516SKenneth E. Jansen & rlam(:,2) * Q(:,3,2) * Q(:,4,2) + 53459599516SKenneth E. Jansen & rlam(:,3) * Q(:,3,3) * Q(:,4,3) + 53559599516SKenneth E. Jansen & rlam(:,4) * Q(:,3,4) * Q(:,4,4) + 53659599516SKenneth E. Jansen & rlam(:,5) * Q(:,3,5) * Q(:,4,5) 53759599516SKenneth E. Jansenc 53859599516SKenneth E. Jansen STau(:,10) = rlam(:,1) * Q(:,4,1) * Q(:,4,1) + 53959599516SKenneth E. Jansen & rlam(:,2) * Q(:,4,2) * Q(:,4,2) + 54059599516SKenneth E. Jansen & rlam(:,3) * Q(:,4,3) * Q(:,4,3) + 54159599516SKenneth E. Jansen & rlam(:,4) * Q(:,4,4) * Q(:,4,4) + 54259599516SKenneth E. Jansen & rlam(:,5) * Q(:,4,5) * Q(:,4,5) 54359599516SKenneth E. Jansenc 54459599516SKenneth E. Jansen STau(:,11) = rlam(:,1) * Q(:,1,1) * Q(:,5,1) + 54559599516SKenneth E. Jansen & rlam(:,2) * Q(:,1,2) * Q(:,5,2) + 54659599516SKenneth E. Jansen & rlam(:,3) * Q(:,1,3) * Q(:,5,3) + 54759599516SKenneth E. Jansen & rlam(:,4) * Q(:,1,4) * Q(:,5,4) + 54859599516SKenneth E. Jansen & rlam(:,5) * Q(:,1,5) * Q(:,5,5) 54959599516SKenneth E. Jansenc 55059599516SKenneth E. Jansen STau(:,12) = rlam(:,1) * Q(:,2,1) * Q(:,5,1) + 55159599516SKenneth E. Jansen & rlam(:,2) * Q(:,2,2) * Q(:,5,2) + 55259599516SKenneth E. Jansen & rlam(:,3) * Q(:,2,3) * Q(:,5,3) + 55359599516SKenneth E. Jansen & rlam(:,4) * Q(:,2,4) * Q(:,5,4) + 55459599516SKenneth E. Jansen & rlam(:,5) * Q(:,2,5) * Q(:,5,5) 55559599516SKenneth E. Jansenc 55659599516SKenneth E. Jansen STau(:,13) = rlam(:,1) * Q(:,3,1) * Q(:,5,1) + 55759599516SKenneth E. Jansen & rlam(:,2) * Q(:,3,2) * Q(:,5,2) + 55859599516SKenneth E. Jansen & rlam(:,3) * Q(:,3,3) * Q(:,5,3) + 55959599516SKenneth E. Jansen & rlam(:,4) * Q(:,3,4) * Q(:,5,4) + 56059599516SKenneth E. Jansen & rlam(:,5) * Q(:,3,5) * Q(:,5,5) 56159599516SKenneth E. Jansenc 56259599516SKenneth E. Jansen STau(:,14) = rlam(:,1) * Q(:,4,1) * Q(:,5,1) + 56359599516SKenneth E. Jansen & rlam(:,2) * Q(:,4,2) * Q(:,5,2) + 56459599516SKenneth E. Jansen & rlam(:,3) * Q(:,4,3) * Q(:,5,3) + 56559599516SKenneth E. Jansen & rlam(:,4) * Q(:,4,4) * Q(:,5,4) + 56659599516SKenneth E. Jansen & rlam(:,5) * Q(:,4,5) * Q(:,5,5) 56759599516SKenneth E. Jansenc 56859599516SKenneth E. Jansen STau(:,15) = rlam(:,1) * Q(:,5,1) * Q(:,5,1) + 56959599516SKenneth E. Jansen & rlam(:,2) * Q(:,5,2) * Q(:,5,2) + 57059599516SKenneth E. Jansen & rlam(:,3) * Q(:,5,3) * Q(:,5,3) + 57159599516SKenneth E. Jansen & rlam(:,4) * Q(:,5,4) * Q(:,5,4) + 57259599516SKenneth E. Jansen & rlam(:,5) * Q(:,5,5) * Q(:,5,5) 57359599516SKenneth E. Jansen 57459599516SKenneth E. Jansen 57559599516SKenneth E. Jansenc 57659599516SKenneth E. Jansenc... Form Primitive Variable Tau as [dY/dV]*tilde{Tau}, 57759599516SKenneth E. Jansenc... see G.Hauke's thesis appendix for [dY/dV] matrix 57859599516SKenneth E. Jansenc 57959599516SKenneth E. Jansen betaT = cp*T + pt5*(u1**2+u2**2+u3**2) !reuse betaT 58059599516SKenneth E. Jansen 58159599516SKenneth E. Jansen Tau(:,1,1) = rho*T*(STau(:,1)+u1*STau(:,2)+ 58259599516SKenneth E. Jansen & u2*STau(:,4)+u3*STau(:,7)+betaT*STau(:,11)) 58359599516SKenneth E. Jansen Tau(:,1,2) = rho*T*(STau(:,2)+u1*STau(:,3)+ 58459599516SKenneth E. Jansen & u2*STau(:,5)+u3*STau(:,8)+betaT*STau(:,12)) 58559599516SKenneth E. Jansen Tau(:,1,3) = rho*T*(STau(:,4)+u1*STau(:,5)+ 58659599516SKenneth E. Jansen & u2*STau(:,6)+u3*STau(:,9)+betaT*STau(:,13)) 58759599516SKenneth E. Jansen Tau(:,1,4) = rho*T*(STau(:,7)+u1*STau(:,8)+ 58859599516SKenneth E. Jansen & u2*STau(:,9)+u3*STau(:,10)+betaT*STau(:,14)) 58959599516SKenneth E. Jansen Tau(:,1,5) = rho*T*(STau(:,11)+u1*STau(:,12)+ 59059599516SKenneth E. Jansen & u2*STau(:,13)+u3*STau(:,14)+betaT*STau(:,15)) 59159599516SKenneth E. Jansen 59259599516SKenneth E. Jansen 59359599516SKenneth E. Jansen Tau(:,2,1) = T(:)*(STau(:,2) + u1(:)*STau(:,11)) 59459599516SKenneth E. Jansen Tau(:,2,2) = T(:)*(STau(:,3) + u1(:)*STau(:,12)) 59559599516SKenneth E. Jansen Tau(:,2,3) = T(:)*(STau(:,5) + u1(:)*STau(:,13)) 59659599516SKenneth E. Jansen Tau(:,2,4) = T(:)*(STau(:,8) + u1(:)*STau(:,14)) 59759599516SKenneth E. Jansen Tau(:,2,5) = T(:)*(STau(:,12) + u1(:)*STau(:,15)) 59859599516SKenneth E. Jansen 59959599516SKenneth E. Jansen Tau(:,3,1) = T(:)*(STau(:,4) + u2(:)*STau(:,11)) 60059599516SKenneth E. Jansen Tau(:,3,2) = T(:)*(STau(:,5) + u2(:)*STau(:,12)) 60159599516SKenneth E. Jansen Tau(:,3,3) = T(:)*(STau(:,6) + u2(:)*STau(:,13)) 60259599516SKenneth E. Jansen Tau(:,3,4) = T(:)*(STau(:,9) + u2(:)*STau(:,14)) 60359599516SKenneth E. Jansen Tau(:,3,5) = T(:)*(STau(:,13) + u2(:)*STau(:,15)) 60459599516SKenneth E. Jansen 60559599516SKenneth E. Jansen Tau(:,4,1) = T(:)*(STau(:,7) + u3(:)*STau(:,11)) 60659599516SKenneth E. Jansen Tau(:,4,2) = T(:)*(STau(:,8) + u3(:)*STau(:,12)) 60759599516SKenneth E. Jansen Tau(:,4,3) = T(:)*(STau(:,9) + u3(:)*STau(:,13)) 60859599516SKenneth E. Jansen Tau(:,4,4) = T(:)*(STau(:,10) + u3(:)*STau(:,14)) 60959599516SKenneth E. Jansen Tau(:,4,5) = T(:)*(STau(:,14) + u3(:)*STau(:,15)) 61059599516SKenneth E. Jansen 61159599516SKenneth E. Jansen betaT = T**2 61259599516SKenneth E. Jansen 61359599516SKenneth E. Jansen Tau(:,5,1) = betaT(:)*STau(:,11) 61459599516SKenneth E. Jansen Tau(:,5,2) = betaT(:)*STau(:,12) 61559599516SKenneth E. Jansen Tau(:,5,3) = betaT(:)*STau(:,13) 61659599516SKenneth E. Jansen Tau(:,5,4) = betaT(:)*STau(:,14) 61759599516SKenneth E. Jansen Tau(:,5,5) = betaT(:)*STau(:,15) 61859599516SKenneth E. Jansen 61959599516SKenneth E. Jansen 62059599516SKenneth E. Jansenc 62159599516SKenneth E. Jansenc... done with conversion to pressure primitive variables 62259599516SKenneth E. Jansenc... now need to interface with the rest of the computations 62359599516SKenneth E. Jansenc 62459599516SKenneth E. Jansen 62559599516SKenneth E. Jansenc... finally multiply this tau matrix times the 62659599516SKenneth E. Jansenc two residual vectors 62759599516SKenneth E. Jansenc 62859599516SKenneth E. Jansenc ... calculate (tau Ly) --> (rLyi) 62959599516SKenneth E. Jansenc ... storing rLyi for the DC term 63059599516SKenneth E. Jansen 63159599516SKenneth E. Jansen 63259599516SKenneth E. Jansen if(iDC .ne. 0) rLyitemp=rLyi 63359599516SKenneth E. Jansen 63459599516SKenneth E. Jansen if(ires.eq.3 .or. ires .eq. 1) then 63559599516SKenneth E. Jansen eigmax = rLyi !reuse 63659599516SKenneth E. Jansen rLyi = zero 63759599516SKenneth E. Jansen do i = 1, nflow 63859599516SKenneth E. Jansen do j = 1, nflow 63959599516SKenneth E. Jansen rLyi(:,i) = rLyi(:,i) + Tau(:,i,j) * eigmax(:,j) 64059599516SKenneth E. Jansen enddo 64159599516SKenneth E. Jansen enddo 64259599516SKenneth E. Jansen endif 64359599516SKenneth E. Jansen 64459599516SKenneth E. Jansen 64559599516SKenneth E. Jansen if(iDC .ne. 0) then 64659599516SKenneth E. Jansenc.....calculation of rTLS & raLS for DC term 64759599516SKenneth E. Jansenc 64859599516SKenneth E. Jansenc.....calculation of (Ly - S).tau^tilda*(Ly - S) 64959599516SKenneth E. Jansenc 65059599516SKenneth E. Jansen rTLS = rLYItemp(:,1) * (rLyi(:,1)*dVdY(:,1) 65159599516SKenneth E. Jansen & + dVdY(:,2)*rLyi(:,2) + dVdY(:,4)*rLyi(:,3) 65259599516SKenneth E. Jansen & + rLyi(:,4)*dVdY(:,7) + dVdY(:,11)*rLyi(:,5)) 65359599516SKenneth E. Jansen & + rLyitemp(:,2) * (rLyi(:,2)*dVdY(:,3) 65459599516SKenneth E. Jansen & + rLyi(:,3)*dVdY(:,5) + dVdY(:,8)*rLyi(:,4) 65559599516SKenneth E. Jansen & + rLyi(:,5)*dVdY(:,12)) 65659599516SKenneth E. Jansen & + rLyitemp(:,3) * (rLyi(:,3)*dVdY(:,6) 65759599516SKenneth E. Jansen & + dVdY(:,9)*rLyi(:,4) + dVdY(:,13)*rLyi(:,5)) 65859599516SKenneth E. Jansen & + rLyitemp(:,4) * (rLyi(:,4)*dVdY(:,10) 65959599516SKenneth E. Jansen & + dVdY(:,14)*rLyi(:,5)) 66059599516SKenneth E. Jansen & + rLyitemp(:,5) * (dVdY(:,15)*rLyi(:,5)) 66159599516SKenneth E. Jansen 66259599516SKenneth E. Jansenc 66359599516SKenneth E. Jansenc...... calculation of (Ly - S).A0inv*(Ly - S) 66459599516SKenneth E. Jansenc 66559599516SKenneth E. Jansen raLS = two*rLyitemp(:,4)*rLyitemp(:,5)*A0inv(:,15) 66659599516SKenneth E. Jansen & + two*rLyitemp(:,3)*rLyitemp(:,5)*A0inv(:,14) 66759599516SKenneth E. Jansen & + two*rLyitemp(:,1)*rLyitemp(:,2)*A0inv( :,6) 66859599516SKenneth E. Jansen & + two*rLyitemp(:,2)*rLyitemp(:,3)*A0inv(:,10) 66959599516SKenneth E. Jansen & + two*rLyitemp(:,2)*rLyitemp(:,4)*A0inv(:,11) 67059599516SKenneth E. Jansen & + two*rLyitemp(:,1)*rLyitemp(:,3)*A0inv( :,7) 67159599516SKenneth E. Jansen & + two*rLyitemp(:,3)*rLyitemp(:,4)*A0inv(:,13) 67259599516SKenneth E. Jansen & + two*rLyitemp(:,2)*rLyitemp(:,5)*A0inv(:,12) 67359599516SKenneth E. Jansen & + two*rLyitemp(:,1)*rLyitemp(:,4)*A0inv( :,8) 67459599516SKenneth E. Jansen & + two*rLyitemp(:,1)*rLyitemp(:,5)*A0inv( :,9) 67559599516SKenneth E. Jansen & + rLyitemp(:,1)**2*A0inv(:,1) 67659599516SKenneth E. Jansen & + rLyitemp(:,2)**2*A0inv(:,2) 67759599516SKenneth E. Jansen & + rLyitemp(:,3)**2*A0inv(:,3) 67859599516SKenneth E. Jansen & + rLyitemp(:,4)**2*A0inv(:,4) 67959599516SKenneth E. Jansen & + rLyitemp(:,5)**2*A0inv(:,5) 68059599516SKenneth E. Jansenc 68159599516SKenneth E. Jansenc.....****************calculation of giju for DC term*************** 68259599516SKenneth E. Jansenc 68359599516SKenneth E. Jansenc.... for the notation of different numbering 68459599516SKenneth E. Jansenc 68559599516SKenneth E. Jansen call e3gijd( dxidx, gijd ) 68659599516SKenneth E. Jansen 68759599516SKenneth E. Jansen gijdu(:,1)=gijd(:,1) 68859599516SKenneth E. Jansen gijdu(:,2)=gijd(:,3) 68959599516SKenneth E. Jansen gijdu(:,3)=gijd(:,6) 69059599516SKenneth E. Jansen gijdu(:,4)=gijd(:,2) 69159599516SKenneth E. Jansen gijdu(:,5)=gijd(:,4) 69259599516SKenneth E. Jansen gijdu(:,6)=gijd(:,5) 69359599516SKenneth E. Jansenc 69459599516SKenneth E. Jansenc 69559599516SKenneth E. Jansen detgijI = one/( 69659599516SKenneth E. Jansen & gijdu(:,1) * gijdu(:,2) * gijdu(:,3) 69759599516SKenneth E. Jansen & - gijdu(:,1) * gijdu(:,6) * gijdu(:,6) 69859599516SKenneth E. Jansen & - gijdu(:,4) * gijdu(:,4) * gijdu(:,3) 69959599516SKenneth E. Jansen & + gijdu(:,4) * gijdu(:,5) * gijdu(:,6) * two 70059599516SKenneth E. Jansen & - gijdu(:,5) * gijdu(:,5) * gijdu(:,2) 70159599516SKenneth E. Jansen & ) 70259599516SKenneth E. Jansen giju(:,1) = detgijI * (gijdu(:,2)*gijdu(:,3) 70359599516SKenneth E. Jansen & - gijdu(:,6)**2) 70459599516SKenneth E. Jansen giju(:,2) = detgijI * (gijdu(:,1)*gijdu(:,3) 70559599516SKenneth E. Jansen & - gijdu(:,5)**2) 70659599516SKenneth E. Jansen giju(:,3) = detgijI * (gijdu(:,1)*gijdu(:,2) 70759599516SKenneth E. Jansen & - gijdu(:,4)**2) 70859599516SKenneth E. Jansen giju(:,4) = detgijI * (gijdu(:,5)*gijdu(:,6) 70959599516SKenneth E. Jansen & - gijdu(:,4)*gijdu(:,3) ) 71059599516SKenneth E. Jansen giju(:,5) = detgijI * (gijdu(:,4)*gijdu(:,6) 71159599516SKenneth E. Jansen & - gijdu(:,5)*gijdu(:,2) ) 71259599516SKenneth E. Jansen giju(:,6) = detgijI * (gijdu(:,4)*gijdu(:,5) 71359599516SKenneth E. Jansen & - gijdu(:,1)*gijdu(:,6) ) 71459599516SKenneth E. Jansenc 71559599516SKenneth E. Jansen endif ! end of iDC.ne.0 71659599516SKenneth E. Jansenc 71759599516SKenneth E. Jansenc.... calculate (tau Lym) --> (rLymi) 71859599516SKenneth E. Jansenc 71959599516SKenneth E. Jansen if(ires.ne.1 ) then 72059599516SKenneth E. Jansen eigmax = rLymi 72159599516SKenneth E. Jansen rLymi = zero 72259599516SKenneth E. Jansen do i = 1, nflow 72359599516SKenneth E. Jansen do j = 1, nflow 72459599516SKenneth E. Jansen rLymi(:,i) = rLymi(:,i) + Tau(:,i,j) * eigmax(:,j) 72559599516SKenneth E. Jansen enddo 72659599516SKenneth E. Jansen enddo 72759599516SKenneth E. Jansen endif 72859599516SKenneth E. Jansenc 72959599516SKenneth E. Jansenc INCORRECT NOW flops = flops + 255*npro 73059599516SKenneth E. Jansenc 73159599516SKenneth E. Jansenc 73259599516SKenneth E. Jansenc.... return 73359599516SKenneth E. Jansenc 73459599516SKenneth E. Jansen return 73559599516SKenneth E. Jansen end 73659599516SKenneth E. Jansenc 73759599516SKenneth E. Jansen 73859599516SKenneth E. Jansen 73959599516SKenneth E. Jansen subroutine e3tau_nd_modal (rho, cp, rmu, T, 74059599516SKenneth E. Jansen & u1, u2, u3, 74159599516SKenneth E. Jansen & a1, a2, a3, 74259599516SKenneth E. Jansen & con, dxidx, rLyi, 74359599516SKenneth E. Jansen & rLymi, Tau, rk, 74459599516SKenneth E. Jansen & giju, rTLS, raLS, 74559599516SKenneth E. Jansen & cv, compK, pres, 74659599516SKenneth E. Jansen & A0inv, dVdY) 74759599516SKenneth E. Jansenc 74859599516SKenneth E. Jansenc---------------------------------------------------------------------- 74959599516SKenneth E. Jansenc 75059599516SKenneth E. Jansenc This routine computes the diagonal Tau for least-squares operator. 75159599516SKenneth E. Jansenc 75259599516SKenneth E. Jansenc We receive the regular residual L operator and a 75359599516SKenneth E. Jansenc modified residual L operator, calculate tau, and return values for 75459599516SKenneth E. Jansenc tau and tau times these operators to maintain the format of past 75559599516SKenneth E. Jansenc ENSA codes 75659599516SKenneth E. Jansenc 75759599516SKenneth E. Jansenc input: 75859599516SKenneth E. Jansenc rho (npro) : density 75959599516SKenneth E. Jansenc T (npro) : temperature 76059599516SKenneth E. Jansenc cp (npro) : specific heat at constant pressure 76159599516SKenneth E. Jansenc u1 (npro) : x1-velocity component 76259599516SKenneth E. Jansenc u2 (npro) : x2-velocity component 76359599516SKenneth E. Jansenc u3 (npro) : x3-velocity component 76459599516SKenneth E. Jansenc dxidx (npro,nsd,nsd) : inverse of deformation gradient 76559599516SKenneth E. Jansenc rLyi (npro,nflow) : least-squares residual vector 76659599516SKenneth E. Jansenc rLymi (npro,nflow) : modified least-squares residual vector 76759599516SKenneth E. Jansenc 76859599516SKenneth E. Jansenc output: 76959599516SKenneth E. Jansenc rLyi (npro,nflow) : least-squares residual vector 77059599516SKenneth E. Jansenc rLymi (npro,nflow) : modified least-squares residual vector 77159599516SKenneth E. Jansenc Mtau (npro,5,5) : Matrix of Stabilized Parameters 77259599516SKenneth E. Jansenc 77359599516SKenneth E. Jansenc 77459599516SKenneth E. Jansenc Zdenek Johan, Summer 1990. (Modified from e2tau.f) 77559599516SKenneth E. Jansenc Zdenek Johan, Winter 1991. (Fortran 90) 77659599516SKenneth E. Jansenc---------------------------------------------------------------------- 77759599516SKenneth E. Jansenc 77859599516SKenneth E. Jansen include "common.h" 77959599516SKenneth E. Jansenc 78059599516SKenneth E. Jansen dimension rho(npro), con(npro), 78159599516SKenneth E. Jansen & cp(npro), u1(npro), 78259599516SKenneth E. Jansen & u2(npro), u3(npro), 78359599516SKenneth E. Jansen & dxidx(npro,nsd,nsd), rk(npro), 78459599516SKenneth E. Jansen & rLyi(npro,nflow,ipord), 78559599516SKenneth E. Jansen & rLymi(npro,nflow,ipord), dVdY(npro,15), 78659599516SKenneth E. Jansen & rTLS(npro), raLS(npro), 78759599516SKenneth E. Jansen & rLyitemp(npro,nflow), detgijI(npro) 78859599516SKenneth E. Jansenc 78959599516SKenneth E. Jansen dimension rmu(npro), cv(npro), 79059599516SKenneth E. Jansen & gijd(npro,6), 79159599516SKenneth E. Jansen & fact(npro), giju(npro,6), 79259599516SKenneth E. Jansen & A0inv(npro,15),gijdu(npro,6), compK(npro,10), 79359599516SKenneth E. Jansen & a1(npro), a2(npro), a3(npro), 79459599516SKenneth E. Jansen & T(npro), pres(npro), alphap(npro), 79559599516SKenneth E. Jansen & betaT(npro), gamb(npro), c(npro), 79659599516SKenneth E. Jansen & u(npro), eb1(npro), Q(npro,5,5), 79759599516SKenneth E. Jansen & rlam(npro,5), eigmax(npro,5), Pe(npro), 79859599516SKenneth E. Jansen & STau(npro,15, ipord), Tau(npro,nflow,nflow,ipord), 79959599516SKenneth E. Jansen & rlamtmp(npro,5,ipord) 80059599516SKenneth E. Jansen 80159599516SKenneth E. Jansen 80259599516SKenneth E. Jansenc... build some necessary quantities at integration point: 80359599516SKenneth E. Jansen 80459599516SKenneth E. Jansenc alfap = one / T 80559599516SKenneth E. Jansenc betaT = one / pres 80659599516SKenneth E. Jansen gamb = gamma1 80759599516SKenneth E. Jansen c = sqrt( (gamma * Rgas) * T ) 80859599516SKenneth E. Jansen u = sqrt(u1**2+u2**2+u3**2) 80959599516SKenneth E. Jansen eb1 = cp*T - pt5*(u1**2+u2**2+u3**2) 81059599516SKenneth E. Jansen 81159599516SKenneth E. Jansenc... get eigenvectors for diagonalizing Tau_adv (e.v) before final rotations 81259599516SKenneth E. Jansenc... Note: the ordering of eigenvectors corresponds to the following 81359599516SKenneth E. Jansenc... ordering of the eigenvalues in the 1-st Euler Jacobian rotated to 81459599516SKenneth E. Jansenc... the streamline coordinates 81559599516SKenneth E. Jansen 81659599516SKenneth E. Jansenc |u+c | 81759599516SKenneth E. Jansenc | u | 81859599516SKenneth E. Jansenc | u | 81959599516SKenneth E. Jansenc | u | ! for origins of this see Beam, Warming, Hyett 82059599516SKenneth E. Jansenc | u-c| ! Mathematics of Computation vol. 29 No. 132 p. 1037 82159599516SKenneth E. Jansen 82259599516SKenneth E. Jansenc... different ordering assumed in Shakib/Johan entropy vars. code 82359599516SKenneth E. Jansen 82459599516SKenneth E. Jansen 82559599516SKenneth E. Jansen 82659599516SKenneth E. Jansen call e3eig1 (rho, T, cp, 82759599516SKenneth E. Jansen & gamb, c, u1, 82859599516SKenneth E. Jansen & u2, u3, a1, 82959599516SKenneth E. Jansen & a2, a3, eb1, 83059599516SKenneth E. Jansen & dxidx, u, Q) 83159599516SKenneth E. Jansen 83259599516SKenneth E. Jansenc... Perform a Jacobi rotation on the Lambda matrix as well as adjust 83359599516SKenneth E. Jansenc... the eigenvectors. Tau still remains in entropy variables. 83459599516SKenneth E. Jansen 83559599516SKenneth E. Jansen 83659599516SKenneth E. Jansen 83759599516SKenneth E. Jansen call e3eig2 (u, c, a1, 83859599516SKenneth E. Jansen & a2, a3, rlam, 83959599516SKenneth E. Jansen & Q, eigmax) 84059599516SKenneth E. Jansen 84159599516SKenneth E. Jansenc 84259599516SKenneth E. Jansenc.... invert the eigenvalues 84359599516SKenneth E. Jansenc 84459599516SKenneth E. Jansen 84559599516SKenneth E. Jansen 84659599516SKenneth E. Jansen where (rlam .gt. ((epsM**2) * eigmax)) 84759599516SKenneth E. Jansen rlam = one / sqrt(rlam) 84859599516SKenneth E. Jansen elsewhere 84959599516SKenneth E. Jansen rlam = zero 85059599516SKenneth E. Jansen endwhere 85159599516SKenneth E. Jansen 85259599516SKenneth E. Jansen do i = 1, ipord 85359599516SKenneth E. Jansen rlamtmp(:,:,i) = rlam(:,:) 85459599516SKenneth E. Jansen enddo 85559599516SKenneth E. Jansen 85659599516SKenneth E. Jansenc 85759599516SKenneth E. Jansenc.... flop count 85859599516SKenneth E. Jansenc 85959599516SKenneth E. Jansen flops = flops + 65*npro 86059599516SKenneth E. Jansen 86159599516SKenneth E. Jansenc.... reduce the diffusion contribution 86259599516SKenneth E. Jansenc 86359599516SKenneth E. Jansen 86459599516SKenneth E. Jansen if (Navier .eq. 1) then 86559599516SKenneth E. Jansenc 86659599516SKenneth E. Jansenc.... calculate sigma 86759599516SKenneth E. Jansenc 86859599516SKenneth E. Jansen 86959599516SKenneth E. Jansen do i = 1, nflow ! diff. corr for every mode of Tau 87059599516SKenneth E. Jansen 87159599516SKenneth E. Jansen c(:) = pt33 * ( 87259599516SKenneth E. Jansen & Q(:,2,i) * ( compK(:, 1) * Q(:,2,i) + compK(:, 2) * Q(:,3,i) 87359599516SKenneth E. Jansen & + compK(:, 4) * Q(:,4,i) + compK(:, 7) * Q(:,5,i) ) 87459599516SKenneth E. Jansen & + Q(:,3,i) * ( compK(:, 2) * Q(:,2,i) + compK(:, 3) * Q(:,3,i) 87559599516SKenneth E. Jansen & + compK(:, 5) * Q(:,4,i) + compK(:, 8) * Q(:,5,i) ) 87659599516SKenneth E. Jansen & + Q(:,4,i) * ( compK(:, 4) * Q(:,2,i) + compK(:, 5) * Q(:,3,i) 87759599516SKenneth E. Jansen & + compK(:, 6) * Q(:,4,i) + compK(:, 9) * Q(:,5,i) ) 87859599516SKenneth E. Jansen & + Q(:,5,i) * ( compK(:, 7) * Q(:,2,i) + compK(:, 8) * Q(:,3,i) 87959599516SKenneth E. Jansen & + compK(:, 9) * Q(:,4,i) + compK(:,10) * Q(:,5,i) ) 88059599516SKenneth E. Jansen & ) 88159599516SKenneth E. Jansen 88259599516SKenneth E. Jansenc... get Peclet Number 88359599516SKenneth E. Jansen 88459599516SKenneth E. Jansen 88559599516SKenneth E. Jansen Pe(:) = one / (c(:)*rlam(:,i)) 88659599516SKenneth E. Jansen 88759599516SKenneth E. Jansen 88859599516SKenneth E. Jansenc 88959599516SKenneth E. Jansenc... branch out into different polynomial orders 89059599516SKenneth E. Jansenc 89159599516SKenneth E. Jansen 89259599516SKenneth E. Jansen 89359599516SKenneth E. Jansen if (ipord == 1) then ! linears - l = l^a*(coth(Pe)-1/Pe) 89459599516SKenneth E. Jansen ! approx. l = l^a*min(1/3*Pe,1) 89559599516SKenneth E. Jansen rlamtmp(:,i,1) = rlamtmp(:,i,1)*min(pt33*Pe(:),one) 89659599516SKenneth E. Jansen 89759599516SKenneth E. Jansen endif 89859599516SKenneth E. Jansen 89959599516SKenneth E. Jansen if (ipord == 2) then 90059599516SKenneth E. Jansen 90159599516SKenneth E. Jansen rlamtmp(:,i,1) = rlamtmp(:,i,1)*min((1.0/15.0)*Pe(:),pt33) 90259599516SKenneth E. Jansen rlamtmp(:,i,2) = rlamtmp(:,i,2)*min((1.0/12.0)*Pe(:),pt5) 90359599516SKenneth E. Jansen 90459599516SKenneth E. Jansen endif 90559599516SKenneth E. Jansen 90659599516SKenneth E. Jansen if (ipord == 3) then ! cubics - Recent Work 90759599516SKenneth E. Jansen 90859599516SKenneth E. Jansen do ii = 1, npro 90959599516SKenneth E. Jansen if (Pe(ii).lt.3.0) then 91059599516SKenneth E. Jansen rlamtmp(ii,i,1) = rlamtmp(ii,i,1)* 91159599516SKenneth E. Jansen & 0.00054*Pe(ii)**2 91259599516SKenneth E. Jansen endif 91359599516SKenneth E. Jansen 91459599516SKenneth E. Jansen if ((Pe(ii).ge.3).and.(Pe(ii).lt.17.20)) then 91559599516SKenneth E. Jansen rlamtmp(ii,i,1) = rlamtmp(ii,i,1)*(0.0114*Pe(ii) 91659599516SKenneth E. Jansen & -0.0294) 91759599516SKenneth E. Jansen endif 91859599516SKenneth E. Jansen 91959599516SKenneth E. Jansen if (Pe(ii).ge.17.20) then 92059599516SKenneth E. Jansen rlamtmp(ii,i,1) = rlamtmp(ii,i,1)*(1.0/6.0) 92159599516SKenneth E. Jansen endif 92259599516SKenneth E. Jansen 92359599516SKenneth E. Jansen enddo 92459599516SKenneth E. Jansen 92559599516SKenneth E. Jansen rlamtmp(:,i,2) = rlamtmp(:,i,2)*min((1.0/45.0)*Pe(:) 92659599516SKenneth E. Jansen & ,0.2d0) 92759599516SKenneth E. Jansen rlamtmp(:,i,3) = rlamtmp(:,i,3)*min((1.0/25.0)*Pe(:) 92859599516SKenneth E. Jansen & ,pt33) 92959599516SKenneth E. Jansen 93059599516SKenneth E. Jansen 93159599516SKenneth E. Jansen endif ! done w/ different polynomial orders 93259599516SKenneth E. Jansen 93359599516SKenneth E. Jansen enddo ! done with loop over dof's 93459599516SKenneth E. Jansen 93559599516SKenneth E. Jansen endif ! done with diffusive correction 93659599516SKenneth E. Jansen 93759599516SKenneth E. Jansen 93859599516SKenneth E. Jansenc 93959599516SKenneth E. Jansenc.... form Tau (symmetric - entropy variables - then convert) 94059599516SKenneth E. Jansenc 94159599516SKenneth E. Jansen do i = 1, ipord 94259599516SKenneth E. Jansen 94359599516SKenneth E. Jansen STau(:, 1, i) = rlamtmp(:,1,i) * Q(:,1,1) * Q(:,1,1) + 94459599516SKenneth E. Jansen & rlamtmp(:,2,i) * Q(:,1,2) * Q(:,1,2) + 94559599516SKenneth E. Jansen & rlamtmp(:,3,i) * Q(:,1,3) * Q(:,1,3) + 94659599516SKenneth E. Jansen & rlamtmp(:,4,i) * Q(:,1,4) * Q(:,1,4) + 94759599516SKenneth E. Jansen & rlamtmp(:,5,i) * Q(:,1,5) * Q(:,1,5) 94859599516SKenneth E. Jansenc 94959599516SKenneth E. Jansen STau(:, 2, i) = rlamtmp(:,1,i) * Q(:,1,1) * Q(:,2,1) + 95059599516SKenneth E. Jansen & rlamtmp(:,2,i) * Q(:,1,2) * Q(:,2,2) + 95159599516SKenneth E. Jansen & rlamtmp(:,3,i) * Q(:,1,3) * Q(:,2,3) + 95259599516SKenneth E. Jansen & rlamtmp(:,4,i) * Q(:,1,4) * Q(:,2,4) + 95359599516SKenneth E. Jansen & rlamtmp(:,5,i) * Q(:,1,5) * Q(:,2,5) 95459599516SKenneth E. Jansenc 95559599516SKenneth E. Jansen STau(:, 3, i) = rlamtmp(:,1,i) * Q(:,2,1) * Q(:,2,1) + 95659599516SKenneth E. Jansen & rlamtmp(:,2,i) * Q(:,2,2) * Q(:,2,2) + 95759599516SKenneth E. Jansen & rlamtmp(:,3,i) * Q(:,2,3) * Q(:,2,3) + 95859599516SKenneth E. Jansen & rlamtmp(:,4,i) * Q(:,2,4) * Q(:,2,4) + 95959599516SKenneth E. Jansen & rlamtmp(:,5,i) * Q(:,2,5) * Q(:,2,5) 96059599516SKenneth E. Jansenc 96159599516SKenneth E. Jansen STau(:, 4, i) = rlamtmp(:,1,i) * Q(:,1,1) * Q(:,3,1) + 96259599516SKenneth E. Jansen & rlamtmp(:,2,i) * Q(:,1,2) * Q(:,3,2) + 96359599516SKenneth E. Jansen & rlamtmp(:,3,i) * Q(:,1,3) * Q(:,3,3) + 96459599516SKenneth E. Jansen & rlamtmp(:,4,i) * Q(:,1,4) * Q(:,3,4) + 96559599516SKenneth E. Jansen & rlamtmp(:,5,i) * Q(:,1,5) * Q(:,3,5) 96659599516SKenneth E. Jansenc 96759599516SKenneth E. Jansen STau(:, 5, i) = rlamtmp(:,1,i) * Q(:,2,1) * Q(:,3,1) + 96859599516SKenneth E. Jansen & rlamtmp(:,2,i) * Q(:,2,2) * Q(:,3,2) + 96959599516SKenneth E. Jansen & rlamtmp(:,3,i) * Q(:,2,3) * Q(:,3,3) + 97059599516SKenneth E. Jansen & rlamtmp(:,4,i) * Q(:,2,4) * Q(:,3,4) + 97159599516SKenneth E. Jansen & rlamtmp(:,5,i) * Q(:,2,5) * Q(:,3,5) 97259599516SKenneth E. Jansenc 97359599516SKenneth E. Jansen STau(:, 6, i) = rlamtmp(:,1,i) * Q(:,3,1) * Q(:,3,1) + 97459599516SKenneth E. Jansen & rlamtmp(:,2,i) * Q(:,3,2) * Q(:,3,2) + 97559599516SKenneth E. Jansen & rlamtmp(:,3,i) * Q(:,3,3) * Q(:,3,3) + 97659599516SKenneth E. Jansen & rlamtmp(:,4,i) * Q(:,3,4) * Q(:,3,4) + 97759599516SKenneth E. Jansen & rlamtmp(:,5,i) * Q(:,3,5) * Q(:,3,5) 97859599516SKenneth E. Jansenc 97959599516SKenneth E. Jansen STau(:, 7, i) = rlamtmp(:,1,i) * Q(:,1,1) * Q(:,4,1) + 98059599516SKenneth E. Jansen & rlamtmp(:,2,i) * Q(:,1,2) * Q(:,4,2) + 98159599516SKenneth E. Jansen & rlamtmp(:,3,i) * Q(:,1,3) * Q(:,4,3) + 98259599516SKenneth E. Jansen & rlamtmp(:,4,i) * Q(:,1,4) * Q(:,4,4) + 98359599516SKenneth E. Jansen & rlamtmp(:,5,i) * Q(:,1,5) * Q(:,4,5) 98459599516SKenneth E. Jansenc 98559599516SKenneth E. Jansen STau(:, 8, i) = rlamtmp(:,1,i) * Q(:,2,1) * Q(:,4,1) + 98659599516SKenneth E. Jansen & rlamtmp(:,2,i) * Q(:,2,2) * Q(:,4,2) + 98759599516SKenneth E. Jansen & rlamtmp(:,3,i) * Q(:,2,3) * Q(:,4,3) + 98859599516SKenneth E. Jansen & rlamtmp(:,4,i) * Q(:,2,4) * Q(:,4,4) + 98959599516SKenneth E. Jansen & rlamtmp(:,5,i) * Q(:,2,5) * Q(:,4,5) 99059599516SKenneth E. Jansenc 99159599516SKenneth E. Jansen STau(:, 9, i) = rlamtmp(:,1,i) * Q(:,3,1) * Q(:,4,1) + 99259599516SKenneth E. Jansen & rlamtmp(:,2,i) * Q(:,3,2) * Q(:,4,2) + 99359599516SKenneth E. Jansen & rlamtmp(:,3,i) * Q(:,3,3) * Q(:,4,3) + 99459599516SKenneth E. Jansen & rlamtmp(:,4,i) * Q(:,3,4) * Q(:,4,4) + 99559599516SKenneth E. Jansen & rlamtmp(:,5,i) * Q(:,3,5) * Q(:,4,5) 99659599516SKenneth E. Jansenc 99759599516SKenneth E. Jansen STau(:,10, i) = rlamtmp(:,1,i) * Q(:,4,1) * Q(:,4,1) + 99859599516SKenneth E. Jansen & rlamtmp(:,2,i) * Q(:,4,2) * Q(:,4,2) + 99959599516SKenneth E. Jansen & rlamtmp(:,3,i) * Q(:,4,3) * Q(:,4,3) + 100059599516SKenneth E. Jansen & rlamtmp(:,4,i) * Q(:,4,4) * Q(:,4,4) + 100159599516SKenneth E. Jansen & rlamtmp(:,5,i) * Q(:,4,5) * Q(:,4,5) 100259599516SKenneth E. Jansenc 100359599516SKenneth E. Jansen STau(:,11, i) = rlamtmp(:,1,i) * Q(:,1,1) * Q(:,5,1) + 100459599516SKenneth E. Jansen & rlamtmp(:,2,i) * Q(:,1,2) * Q(:,5,2) + 100559599516SKenneth E. Jansen & rlamtmp(:,3,i) * Q(:,1,3) * Q(:,5,3) + 100659599516SKenneth E. Jansen & rlamtmp(:,4,i) * Q(:,1,4) * Q(:,5,4) + 100759599516SKenneth E. Jansen & rlamtmp(:,5,i) * Q(:,1,5) * Q(:,5,5) 100859599516SKenneth E. Jansenc 100959599516SKenneth E. Jansen STau(:,12, i) = rlamtmp(:,1,i) * Q(:,2,1) * Q(:,5,1) + 101059599516SKenneth E. Jansen & rlamtmp(:,2,i) * Q(:,2,2) * Q(:,5,2) + 101159599516SKenneth E. Jansen & rlamtmp(:,3,i) * Q(:,2,3) * Q(:,5,3) + 101259599516SKenneth E. Jansen & rlamtmp(:,4,i) * Q(:,2,4) * Q(:,5,4) + 101359599516SKenneth E. Jansen & rlamtmp(:,5,i) * Q(:,2,5) * Q(:,5,5) 101459599516SKenneth E. Jansenc 101559599516SKenneth E. Jansen STau(:,13, i) = rlamtmp(:,1,i) * Q(:,3,1) * Q(:,5,1) + 101659599516SKenneth E. Jansen & rlamtmp(:,2,i) * Q(:,3,2) * Q(:,5,2) + 101759599516SKenneth E. Jansen & rlamtmp(:,3,i) * Q(:,3,3) * Q(:,5,3) + 101859599516SKenneth E. Jansen & rlamtmp(:,4,i) * Q(:,3,4) * Q(:,5,4) + 101959599516SKenneth E. Jansen & rlamtmp(:,5,i) * Q(:,3,5) * Q(:,5,5) 102059599516SKenneth E. Jansenc 102159599516SKenneth E. Jansen STau(:,14, i) = rlamtmp(:,1,i) * Q(:,4,1) * Q(:,5,1) + 102259599516SKenneth E. Jansen & rlamtmp(:,2,i) * Q(:,4,2) * Q(:,5,2) + 102359599516SKenneth E. Jansen & rlamtmp(:,3,i) * Q(:,4,3) * Q(:,5,3) + 102459599516SKenneth E. Jansen & rlamtmp(:,4,i) * Q(:,4,4) * Q(:,5,4) + 102559599516SKenneth E. Jansen & rlamtmp(:,5,i) * Q(:,4,5) * Q(:,5,5) 102659599516SKenneth E. Jansenc 102759599516SKenneth E. Jansen STau(:,15, i) = rlamtmp(:,1,i) * Q(:,5,1) * Q(:,5,1) + 102859599516SKenneth E. Jansen & rlamtmp(:,2,i) * Q(:,5,2) * Q(:,5,2) + 102959599516SKenneth E. Jansen & rlamtmp(:,3,i) * Q(:,5,3) * Q(:,5,3) + 103059599516SKenneth E. Jansen & rlamtmp(:,4,i) * Q(:,5,4) * Q(:,5,4) + 103159599516SKenneth E. Jansen & rlamtmp(:,5,i) * Q(:,5,5) * Q(:,5,5) 103259599516SKenneth E. Jansen 103359599516SKenneth E. Jansen enddo 103459599516SKenneth E. Jansen 103559599516SKenneth E. Jansenc 103659599516SKenneth E. Jansenc... Form Primitive Variable Tau as [dY/dV]*tilde{Tau}, 103759599516SKenneth E. Jansenc... see G.Hauke's thesis appendix for [dY/dV] matrix 103859599516SKenneth E. Jansenc 103959599516SKenneth E. Jansen do k = 1, ipord 104059599516SKenneth E. Jansen 104159599516SKenneth E. Jansen betaT = cp*T + pt5*(u1**2+u2**2+u3**2) !reuse betaT 104259599516SKenneth E. Jansen 104359599516SKenneth E. Jansen Tau(:,1,1,k) = rho*T*(STau(:,1,k)+u1*STau(:,2,k)+ 104459599516SKenneth E. Jansen & u2*STau(:,4,k)+u3*STau(:,7,k)+betaT*STau(:,11,k)) 104559599516SKenneth E. Jansen Tau(:,1,2,k) = rho*T*(STau(:,2,k)+u1*STau(:,3,k)+ 104659599516SKenneth E. Jansen & u2*STau(:,5,k)+u3*STau(:,8,k)+betaT*STau(:,12,k)) 104759599516SKenneth E. Jansen Tau(:,1,3,k) = rho*T*(STau(:,4,k)+u1*STau(:,5,k)+ 104859599516SKenneth E. Jansen & u2*STau(:,6,k)+u3*STau(:,9,k)+betaT*STau(:,13,k)) 104959599516SKenneth E. Jansen Tau(:,1,4,k) = rho*T*(STau(:,7,k)+u1*STau(:,8,k)+ 105059599516SKenneth E. Jansen & u2*STau(:,9,k)+u3*STau(:,10,k)+betaT*STau(:,14,k)) 105159599516SKenneth E. Jansen Tau(:,1,5,k) = rho*T*(STau(:,11,k)+u1*STau(:,12,k)+ 105259599516SKenneth E. Jansen & u2*STau(:,13,k)+u3*STau(:,14,k)+betaT*STau(:,15,k)) 105359599516SKenneth E. Jansen 105459599516SKenneth E. Jansen 105559599516SKenneth E. Jansen Tau(:,2,1,k) = T(:)*(STau(:,2,k) + u1(:)*STau(:,11,k)) 105659599516SKenneth E. Jansen Tau(:,2,2,k) = T(:)*(STau(:,3,k) + u1(:)*STau(:,12,k)) 105759599516SKenneth E. Jansen Tau(:,2,3,k) = T(:)*(STau(:,5,k) + u1(:)*STau(:,13,k)) 105859599516SKenneth E. Jansen Tau(:,2,4,k) = T(:)*(STau(:,8,k) + u1(:)*STau(:,14,k)) 105959599516SKenneth E. Jansen Tau(:,2,5,k) = T(:)*(STau(:,12,k) + u1(:)*STau(:,15,k)) 106059599516SKenneth E. Jansen 106159599516SKenneth E. Jansen Tau(:,3,1,k) = T(:)*(STau(:,4,k) + u2(:)*STau(:,11,k)) 106259599516SKenneth E. Jansen Tau(:,3,2,k) = T(:)*(STau(:,5,k) + u2(:)*STau(:,12,k)) 106359599516SKenneth E. Jansen Tau(:,3,3,k) = T(:)*(STau(:,6,k) + u2(:)*STau(:,13,k)) 106459599516SKenneth E. Jansen Tau(:,3,4,k) = T(:)*(STau(:,9,k) + u2(:)*STau(:,14,k)) 106559599516SKenneth E. Jansen Tau(:,3,5,k) = T(:)*(STau(:,13,k) + u2(:)*STau(:,15,k)) 106659599516SKenneth E. Jansen 106759599516SKenneth E. Jansen Tau(:,4,1,k) = T(:)*(STau(:,7,k) + u3(:)*STau(:,11,k)) 106859599516SKenneth E. Jansen Tau(:,4,2,k) = T(:)*(STau(:,8,k) + u3(:)*STau(:,12,k)) 106959599516SKenneth E. Jansen Tau(:,4,3,k) = T(:)*(STau(:,9,k) + u3(:)*STau(:,13,k)) 107059599516SKenneth E. Jansen Tau(:,4,4,k) = T(:)*(STau(:,10,k) + u3(:)*STau(:,14,k)) 107159599516SKenneth E. Jansen Tau(:,4,5,k) = T(:)*(STau(:,14,k) + u3(:)*STau(:,15,k)) 107259599516SKenneth E. Jansen 107359599516SKenneth E. Jansen betaT = T**2 107459599516SKenneth E. Jansen 107559599516SKenneth E. Jansen Tau(:,5,1,k) = betaT(:)*STau(:,11,k) 107659599516SKenneth E. Jansen Tau(:,5,2,k) = betaT(:)*STau(:,12,k) 107759599516SKenneth E. Jansen Tau(:,5,3,k) = betaT(:)*STau(:,13,k) 107859599516SKenneth E. Jansen Tau(:,5,4,k) = betaT(:)*STau(:,14,k) 107959599516SKenneth E. Jansen Tau(:,5,5,k) = betaT(:)*STau(:,15,k) 108059599516SKenneth E. Jansen 108159599516SKenneth E. Jansen enddo 108259599516SKenneth E. Jansen 108359599516SKenneth E. Jansenc 108459599516SKenneth E. Jansenc... done with conversion to pressure primitive variables 108559599516SKenneth E. Jansenc... now need to interface with the rest of the computations 108659599516SKenneth E. Jansenc 108759599516SKenneth E. Jansen 108859599516SKenneth E. Jansenc... finally multiply this tau matrix times the 108959599516SKenneth E. Jansenc two residual vectors 109059599516SKenneth E. Jansenc 109159599516SKenneth E. Jansenc ... calculate (tau Ly) --> (rLyi) 109259599516SKenneth E. Jansenc ... storing rLyi for the DC term 109359599516SKenneth E. Jansen 109459599516SKenneth E. Jansen 109559599516SKenneth E. Jansen if(iDC .ne. 0) rLyitemp(:,:)=rLyi(:,:,1) 109659599516SKenneth E. Jansen 109759599516SKenneth E. Jansen if(ires.eq.3 .or. ires .eq. 1) then 109859599516SKenneth E. Jansen eigmax(:,:) = rLyi(:,:,1) !reuse 109959599516SKenneth E. Jansen rLyi = zero 110059599516SKenneth E. Jansen do k = 1, ipord 110159599516SKenneth E. Jansen do i = 1, nflow 110259599516SKenneth E. Jansen do j = 1, nflow 110359599516SKenneth E. Jansen rLyi(:,i,k) = rLyi(:,i,k)+Tau(:,i,j,k)*eigmax(:,j) 110459599516SKenneth E. Jansen enddo 110559599516SKenneth E. Jansen enddo 110659599516SKenneth E. Jansen enddo 110759599516SKenneth E. Jansen endif 110859599516SKenneth E. Jansen 110959599516SKenneth E. Jansen 111059599516SKenneth E. Jansen if(iDC .ne. 0) then 111159599516SKenneth E. Jansenc.....calculation of rTLS & raLS for DC term 111259599516SKenneth E. Jansenc 111359599516SKenneth E. Jansenc.....calculation of (Ly - S).tau^tilda*(Ly - S) 111459599516SKenneth E. Jansenc 111559599516SKenneth E. Jansen rTLS = rLYItemp(:,1) * (rLyi(:,1,1)*dVdY(:,1) 111659599516SKenneth E. Jansen & + dVdY(:,2)*rLyi(:,2,1) + dVdY(:,4)*rLyi(:,3,1) 111759599516SKenneth E. Jansen & + rLyi(:,4,1)*dVdY(:,7) + dVdY(:,11)*rLyi(:,5,1)) 111859599516SKenneth E. Jansen & + rLyitemp(:,2) * (rLyi(:,2,1)*dVdY(:,3) 111959599516SKenneth E. Jansen & + rLyi(:,3,1)*dVdY(:,5) + dVdY(:,8)*rLyi(:,4,1) 112059599516SKenneth E. Jansen & + rLyi(:,5,1)*dVdY(:,12)) 112159599516SKenneth E. Jansen & + rLyitemp(:,3) * (rLyi(:,3,1)*dVdY(:,6) 112259599516SKenneth E. Jansen & + dVdY(:,9)*rLyi(:,4,1) + dVdY(:,13)*rLyi(:,5,1)) 112359599516SKenneth E. Jansen & + rLyitemp(:,4) * (rLyi(:,4,1)*dVdY(:,10) 112459599516SKenneth E. Jansen & + dVdY(:,14)*rLyi(:,5,1)) 112559599516SKenneth E. Jansen & + rLyitemp(:,5) * (dVdY(:,15)*rLyi(:,5,1)) 112659599516SKenneth E. Jansen 112759599516SKenneth E. Jansenc 112859599516SKenneth E. Jansenc...... calculation of (Ly - S).A0inv*(Ly - S) 112959599516SKenneth E. Jansenc 113059599516SKenneth E. Jansen raLS = two*rLyitemp(:,4)*rLyitemp(:,5)*A0inv(:,15) 113159599516SKenneth E. Jansen & + two*rLyitemp(:,3)*rLyitemp(:,5)*A0inv(:,14) 113259599516SKenneth E. Jansen & + two*rLyitemp(:,1)*rLyitemp(:,2)*A0inv( :,6) 113359599516SKenneth E. Jansen & + two*rLyitemp(:,2)*rLyitemp(:,3)*A0inv(:,10) 113459599516SKenneth E. Jansen & + two*rLyitemp(:,2)*rLyitemp(:,4)*A0inv(:,11) 113559599516SKenneth E. Jansen & + two*rLyitemp(:,1)*rLyitemp(:,3)*A0inv( :,7) 113659599516SKenneth E. Jansen & + two*rLyitemp(:,3)*rLyitemp(:,4)*A0inv(:,13) 113759599516SKenneth E. Jansen & + two*rLyitemp(:,2)*rLyitemp(:,5)*A0inv(:,12) 113859599516SKenneth E. Jansen & + two*rLyitemp(:,1)*rLyitemp(:,4)*A0inv( :,8) 113959599516SKenneth E. Jansen & + two*rLyitemp(:,1)*rLyitemp(:,5)*A0inv( :,9) 114059599516SKenneth E. Jansen & + rLyitemp(:,1)**2*A0inv(:,1) 114159599516SKenneth E. Jansen & + rLyitemp(:,2)**2*A0inv(:,2) 114259599516SKenneth E. Jansen & + rLyitemp(:,3)**2*A0inv(:,3) 114359599516SKenneth E. Jansen & + rLyitemp(:,4)**2*A0inv(:,4) 114459599516SKenneth E. Jansen & + rLyitemp(:,5)**2*A0inv(:,5) 114559599516SKenneth E. Jansenc 114659599516SKenneth E. Jansenc.....****************calculation of giju for DC term*************** 114759599516SKenneth E. Jansenc 114859599516SKenneth E. Jansenc.... for the notation of different numbering 114959599516SKenneth E. Jansenc 115059599516SKenneth E. Jansen gijdu(:,1)=gijd(:,1) 115159599516SKenneth E. Jansen gijdu(:,2)=gijd(:,3) 115259599516SKenneth E. Jansen gijdu(:,3)=gijd(:,6) 115359599516SKenneth E. Jansen gijdu(:,4)=gijd(:,2) 115459599516SKenneth E. Jansen gijdu(:,5)=gijd(:,4) 115559599516SKenneth E. Jansen gijdu(:,6)=gijd(:,5) 115659599516SKenneth E. Jansenc 115759599516SKenneth E. Jansenc 115859599516SKenneth E. Jansen detgijI = one/( 115959599516SKenneth E. Jansen & gijdu(:,1) * gijdu(:,2) * gijdu(:,3) 116059599516SKenneth E. Jansen & - gijdu(:,1) * gijdu(:,6) * gijdu(:,6) 116159599516SKenneth E. Jansen & - gijdu(:,4) * gijdu(:,4) * gijdu(:,3) 116259599516SKenneth E. Jansen & + gijdu(:,4) * gijdu(:,5) * gijdu(:,6) * two 116359599516SKenneth E. Jansen & - gijdu(:,5) * gijdu(:,5) * gijdu(:,2) 116459599516SKenneth E. Jansen & ) 116559599516SKenneth E. Jansen giju(:,1) = detgijI * (gijdu(:,2)*gijdu(:,3) 116659599516SKenneth E. Jansen & - gijdu(:,6)**2) 116759599516SKenneth E. Jansen giju(:,2) = detgijI * (gijdu(:,1)*gijdu(:,3) 116859599516SKenneth E. Jansen & - gijdu(:,5)**2) 116959599516SKenneth E. Jansen giju(:,3) = detgijI * (gijdu(:,1)*gijdu(:,2) 117059599516SKenneth E. Jansen & - gijdu(:,4)**2) 117159599516SKenneth E. Jansen giju(:,4) = detgijI * (gijdu(:,5)*gijdu(:,6) 117259599516SKenneth E. Jansen & - gijdu(:,4)*gijdu(:,3) ) 117359599516SKenneth E. Jansen giju(:,5) = detgijI * (gijdu(:,4)*gijdu(:,6) 117459599516SKenneth E. Jansen & - gijdu(:,5)*gijdu(:,2) ) 117559599516SKenneth E. Jansen giju(:,6) = detgijI * (gijdu(:,4)*gijdu(:,5) 117659599516SKenneth E. Jansen & - gijdu(:,1)*gijdu(:,6) ) 117759599516SKenneth E. Jansenc 117859599516SKenneth E. Jansen endif ! end of iDC.ne.0 117959599516SKenneth E. Jansenc 118059599516SKenneth E. Jansenc.... calculate (tau Lym) --> (rLymi) 118159599516SKenneth E. Jansenc 118259599516SKenneth E. Jansen if(ires.ne.1 ) then 118359599516SKenneth E. Jansen eigmax(:,:) = rLymi(:,:,1) 118459599516SKenneth E. Jansen rLymi = zero 118559599516SKenneth E. Jansen do k = 1, ipord 118659599516SKenneth E. Jansen do i = 1, nflow 118759599516SKenneth E. Jansen do j = 1, nflow 118859599516SKenneth E. Jansen rLymi(:,i,k) = rLymi(:,i,k)+Tau(:,i,j,k)*eigmax(:,j) 118959599516SKenneth E. Jansen enddo 119059599516SKenneth E. Jansen enddo 119159599516SKenneth E. Jansen enddo 119259599516SKenneth E. Jansen endif 119359599516SKenneth E. Jansenc 119459599516SKenneth E. Jansenc INCORRECT NOW flops = flops + 255*npro 119559599516SKenneth E. Jansenc 119659599516SKenneth E. Jansenc 119759599516SKenneth E. Jansenc.... return 119859599516SKenneth E. Jansenc 119959599516SKenneth E. Jansen return 120059599516SKenneth E. Jansen end 120159599516SKenneth E. Jansenc 120259599516SKenneth E. Jansen 120359599516SKenneth E. Jansen 120459599516SKenneth E. Jansen 120559599516SKenneth E. Jansen subroutine e3tauSclr(rho, rmu, A0t, 120659599516SKenneth E. Jansen & u1, u2, u3, 120759599516SKenneth E. Jansen & dxidx, rLyti, rLymti, 120859599516SKenneth E. Jansen & taut, rk, raLSt, 120959599516SKenneth E. Jansen & rTLSt, giju) 121059599516SKenneth E. Jansenc 121159599516SKenneth E. Jansenc---------------------------------------------------------------------- 121259599516SKenneth E. Jansenc 121359599516SKenneth E. Jansenc This routine computes the diagonal Tau for least-squares operator. 121459599516SKenneth E. Jansenc This Tau is the one proposed for nearly incompressible flows by 121559599516SKenneth E. Jansenc Franca and Frey. We receive the regular residual L operator and a 121659599516SKenneth E. Jansenc modified residual L operator, calculate tau, and return values for 121759599516SKenneth E. Jansenc tau and tau times these operators to maintain the format of past 121859599516SKenneth E. Jansenc ENSA codes 121959599516SKenneth E. Jansenc 122059599516SKenneth E. Jansenc input: 122159599516SKenneth E. Jansenc rho (npro) : density 122259599516SKenneth E. Jansenc T (npro) : temperature 122359599516SKenneth E. Jansenc cp (npro) : specific heat at constant pressure 122459599516SKenneth E. Jansenc u1 (npro) : x1-velocity component 122559599516SKenneth E. Jansenc u2 (npro) : x2-velocity component 122659599516SKenneth E. Jansenc u3 (npro) : x3-velocity component 122759599516SKenneth E. Jansenc dxidx (npro,nsd,nsd) : inverse of deformation gradient 122859599516SKenneth E. Jansenc rLyti (npro) : least-squares residual vector 122959599516SKenneth E. Jansenc rLymti (npro) : modified least-squares residual vector 123059599516SKenneth E. Jansenc 123159599516SKenneth E. Jansenc output: 123259599516SKenneth E. Jansenc rLyti (npro,nflow) : least-squares residual vector 123359599516SKenneth E. Jansenc rLymti (npro,nflow) : modified least-squares residual vector 123459599516SKenneth E. Jansenc tau (npro,3) : 3 taus 123559599516SKenneth E. Jansenc 123659599516SKenneth E. Jansenc 123759599516SKenneth E. Jansenc Zdenek Johan, Summer 1990. (Modified from e2tau.f) 123859599516SKenneth E. Jansenc Zdenek Johan, Winter 1991. (Fortran 90) 123959599516SKenneth E. Jansenc---------------------------------------------------------------------- 124059599516SKenneth E. Jansenc 124159599516SKenneth E. Jansen use turbSA 124259599516SKenneth E. Jansen include "common.h" 124359599516SKenneth E. Jansenc 124459599516SKenneth E. Jansen dimension rho(npro), T(npro), 124559599516SKenneth E. Jansen & cp(npro), u1(npro), 124659599516SKenneth E. Jansen & u2(npro), u3(npro), 124759599516SKenneth E. Jansen & dxidx(npro,nsd,nsd), rk(npro), 124859599516SKenneth E. Jansen & taut(npro), rLyti(npro), 124959599516SKenneth E. Jansen & rLymti(npro) 125059599516SKenneth E. Jansenc 125159599516SKenneth E. Jansen dimension rmu(npro), A0t(npro), 125259599516SKenneth E. Jansen & gijd(npro,6), uh1(npro), 125359599516SKenneth E. Jansen & fact(npro), h2o2u(npro), 125459599516SKenneth E. Jansen & rlytitemp(npro), raLSt(npro), 125559599516SKenneth E. Jansen & rTLSt(npro), gijdu(npro,6), 125659599516SKenneth E. Jansen & giju(npro,6), detgijI(npro) 125759599516SKenneth E. Jansenc 125859599516SKenneth E. Jansenc 125959599516SKenneth E. Jansen call e3gijd( dxidx, gijd ) 126059599516SKenneth E. Jansen 126159599516SKenneth E. Jansenc 126259599516SKenneth E. Jansenc next form the diffusive length scale |u| h_1 = 2 ( ui (gijd)-1 uj)^{1/2} 126359599516SKenneth E. Jansenc 126459599516SKenneth E. Jansenc dividing factor for the inverse of gijd 126559599516SKenneth E. Jansenc 126659599516SKenneth E. Jansen fact = gijd(:,1) * gijd(:,3) * gijd(:,6) 126759599516SKenneth E. Jansen & - gijd(:,1) * gijd(:,5) * gijd(:,5) 126859599516SKenneth E. Jansen & - gijd(:,3) * gijd(:,4) * gijd(:,4) 126959599516SKenneth E. Jansen & - gijd(:,6) * gijd(:,2) * gijd(:,2) 127059599516SKenneth E. Jansen & + gijd(:,2) * gijd(:,4) * gijd(:,5) * two 127159599516SKenneth E. Jansenc 127259599516SKenneth E. Jansen uh1= u1*u1*(gijd(:,3)*gijd(:,6)-gijd(:,5)*gijd(:,5)) 127359599516SKenneth E. Jansen & + u2*u2*(gijd(:,1)*gijd(:,6)-gijd(:,4)*gijd(:,4)) 127459599516SKenneth E. Jansen & + u3*u3*(gijd(:,1)*gijd(:,3)-gijd(:,2)*gijd(:,2)) 127559599516SKenneth E. Jansen & + two *(u1*u2*(gijd(:,4)*gijd(:,5)-gijd(:,2)*gijd(:,6)) 127659599516SKenneth E. Jansen & + u1*u3*(gijd(:,2)*gijd(:,5)-gijd(:,4)*gijd(:,3)) 127759599516SKenneth E. Jansen & + u2*u3*(gijd(:,4)*gijd(:,2)-gijd(:,1)*gijd(:,5))) 127859599516SKenneth E. Jansenc 127959599516SKenneth E. Jansenc at this point we have (u h1)^2 * inverse coefficient^2 / 4 128059599516SKenneth E. Jansenc 128159599516SKenneth E. Jansenc ^ fact 128259599516SKenneth E. Jansenc 128359599516SKenneth E. Jansen 128459599516SKenneth E. Jansen uh1= two * sqrt(uh1/fact) 128559599516SKenneth E. Jansen 128659599516SKenneth E. Jansenc 128759599516SKenneth E. Jansenc next form the advective length scale |u|/h_2 = 2 ( ui (gijd) uj)^{1/2} 128859599516SKenneth E. Jansenc 128959599516SKenneth E. Jansen h2o2u = u1*u1*gijd(:,1) 129059599516SKenneth E. Jansen & + u2*u2*gijd(:,3) 129159599516SKenneth E. Jansen & + u3*u3*gijd(:,6) 129259599516SKenneth E. Jansen & +(u1*u2*gijd(:,2) 129359599516SKenneth E. Jansen & + u1*u3*gijd(:,4) 129459599516SKenneth E. Jansen & + u2*u3*gijd(:,5))*two + 1.0e-15 !FIX FOR INVALID MESHES 129559599516SKenneth E. Jansenc 129659599516SKenneth E. Jansenc at this point we have (2 u / h_2)^2 129759599516SKenneth E. Jansenc 129859599516SKenneth E. Jansen 129959599516SKenneth E. Jansenc call tnanqe(h2o2u,1,"riaconv ") 130059599516SKenneth E. Jansen 130159599516SKenneth E. Jansen h2o2u = one / sqrt(h2o2u) ! this flips it over leaves it h_2/(2u) 130259599516SKenneth E. Jansenc 130359599516SKenneth E. Jansenc... momentum tau 130459599516SKenneth E. Jansenc 130559599516SKenneth E. Jansenc 130659599516SKenneth E. Jansenc... rmu will now hold the total (molecular plus eddy) viscosity... 130759599516SKenneth E. Jansen dts=one/(Dtgl*dtsfct) 130859599516SKenneth E. Jansen if(iremoveStabTimeTerm.gt.0) dts = dts*100000 ! remove time term from scalar 1309*513954efSKenneth E. Jansen! Duct code had this dts=1.0e16 131059599516SKenneth E. Jansen taut(:)=min(dts,h2o2u) 131159599516SKenneth E. Jansen taut(:)=taut(:)/rho 131259599516SKenneth E. Jansen taut(:)=min(taut(:),h2o2u*h2o2u*rk*pt66*saSigma/rmu) 131359599516SKenneth E. Jansenc 131459599516SKenneth E. Jansenc... finally multiply this tau matrix times the 131559599516SKenneth E. Jansenc two residual vectors 131659599516SKenneth E. Jansenc 131759599516SKenneth E. Jansenc.... calculate (tau Lyt) --> (rLyti) 131859599516SKenneth E. Jansenc 131959599516SKenneth E. Jansenc.... storing rLyi for the DC term 132059599516SKenneth E. Jansen rLytitemp=rLyti 132159599516SKenneth E. Jansen 132259599516SKenneth E. Jansen if(ires.eq.3 .or. ires .eq. 1) then 132359599516SKenneth E. Jansen rLyti(:) = taut(:) * rLyti(:) 132459599516SKenneth E. Jansen 132559599516SKenneth E. Jansen endif 132659599516SKenneth E. Jansen if(iDCSclr(1) .ne. 0) then 132759599516SKenneth E. Jansenc..... calculation of rTLS & raLS for DC term 132859599516SKenneth E. Jansenc..... calculation of (Ly - S).tau^tilda*(Ly - S) 132959599516SKenneth E. Jansenc 133059599516SKenneth E. Jansen rTLSt = rLYtItemp(:)*rLyti(:) 133159599516SKenneth E. Jansenc 133259599516SKenneth E. Jansenc...... calculation of (Ly - S).A0inv*(Ly - S) 133359599516SKenneth E. Jansenc 133459599516SKenneth E. Jansen raLSt = rLYtItemp(:) * rLYtItemp(:) 133559599516SKenneth E. Jansenc.....*****************calculation of giju for DC term****************** 133659599516SKenneth E. Jansenc 133759599516SKenneth E. Jansenc.... for the notation of different numbering 133859599516SKenneth E. Jansenc 133959599516SKenneth E. Jansen gijdu(:,1)=gijd(:,1) 134059599516SKenneth E. Jansen gijdu(:,2)=gijd(:,3) 134159599516SKenneth E. Jansen gijdu(:,3)=gijd(:,6) 134259599516SKenneth E. Jansen gijdu(:,4)=gijd(:,2) 134359599516SKenneth E. Jansen gijdu(:,5)=gijd(:,4) 134459599516SKenneth E. Jansen gijdu(:,6)=gijd(:,5) 134559599516SKenneth E. Jansenc 134659599516SKenneth E. Jansenc we are going to need this in the dc factor later so we calculate it. 134759599516SKenneth E. Jansenc 134859599516SKenneth E. Jansen detgijI = one/( 134959599516SKenneth E. Jansen & gijdu(:,1) * gijdu(:,2) * gijdu(:,3) 135059599516SKenneth E. Jansen & - gijdu(:,1) * gijdu(:,6) * gijdu(:,6) 135159599516SKenneth E. Jansen & - gijdu(:,4) * gijdu(:,4) * gijdu(:,3) 135259599516SKenneth E. Jansen & + gijdu(:,4) * gijdu(:,5) * gijdu(:,6) * two 135359599516SKenneth E. Jansen & - gijdu(:,5) * gijdu(:,5) * gijdu(:,2) 135459599516SKenneth E. Jansen & ) 135559599516SKenneth E. Jansen giju(:,1) = detgijI * (gijdu(:,2)*gijdu(:,3) 135659599516SKenneth E. Jansen & - gijdu(:,6)**2) 135759599516SKenneth E. Jansen giju(:,2) = detgijI * (gijdu(:,1)*gijdu(:,3) 135859599516SKenneth E. Jansen & - gijdu(:,5)**2) 135959599516SKenneth E. Jansen giju(:,3) = detgijI * (gijdu(:,1)*gijdu(:,2) 136059599516SKenneth E. Jansen & - gijdu(:,4)**2) 136159599516SKenneth E. Jansen giju(:,4) = detgijI * (gijdu(:,5)*gijdu(:,6) 136259599516SKenneth E. Jansen & - gijdu(:,4)*gijdu(:,3) ) 136359599516SKenneth E. Jansen giju(:,5) = detgijI * (gijdu(:,4)*gijdu(:,6) 136459599516SKenneth E. Jansen & - gijdu(:,5)*gijdu(:,2) ) 136559599516SKenneth E. Jansen giju(:,6) = detgijI * (gijdu(:,4)*gijdu(:,5) 136659599516SKenneth E. Jansen & - gijdu(:,1)*gijdu(:,6) ) 136759599516SKenneth E. Jansenc 136859599516SKenneth E. Jansen endif ! end of iDCSclr(1).ne.0 136959599516SKenneth E. Jansenc 137059599516SKenneth E. Jansenc.... calculate (tau Lym) --> (rLymi) 137159599516SKenneth E. Jansenc 137259599516SKenneth E. Jansenc if(ires.ne.1 ) then 137359599516SKenneth E. Jansenc rLymi(:,1) = tau(:,1) * rLymi(:,1) 137459599516SKenneth E. Jansenc rLymi(:,2) = tau(:,2) * rLymi(:,2) 137559599516SKenneth E. Jansenc rLymi(:,3) = tau(:,2) * rLymi(:,3) 137659599516SKenneth E. Jansenc rLymi(:,4) = tau(:,2) * rLymi(:,4) 137759599516SKenneth E. Jansenc rLymi(:,5) = tau(:,3) * rLymi(:,5) 137859599516SKenneth E. Jansenc endif 137959599516SKenneth E. Jansenc 138059599516SKenneth E. Jansenc INCORRECT NOW flops = flops + 255*npro 138159599516SKenneth E. Jansenc 138259599516SKenneth E. Jansenc 138359599516SKenneth E. Jansenc.... return 138459599516SKenneth E. Jansenc 138559599516SKenneth E. Jansen return 138659599516SKenneth E. Jansen end 138759599516SKenneth E. Jansen 138859599516SKenneth E. Jansenc----------------------------------------------------------------------- 138959599516SKenneth E. Jansenc get the metric tensor g_{ij}=xi_{k,i} xi_{k,j}. 139059599516SKenneth E. Jansenc----------------------------------------------------------------------- 139159599516SKenneth E. Jansen subroutine e3gijd( dxidx, gijd ) 139259599516SKenneth E. Jansen 139359599516SKenneth E. Jansen include "common.h" 139459599516SKenneth E. Jansen 139559599516SKenneth E. Jansen real*8 dxidx(npro,nsd,nsd), gijd(npro,6), 139659599516SKenneth E. Jansen & tmp1(npro), tmp2(npro), 139759599516SKenneth E. Jansen & tmp3(npro) 139859599516SKenneth E. Jansenc form metric tensor g_{ij}=xi_{k,i} xi_{k,j}. It is a symmetric 139959599516SKenneth E. Jansenc tensor so we only form 6 components and use symmetric matrix numbering. 140059599516SKenneth E. Jansenc (d for down since giju=[gijd]^{-1}) 140159599516SKenneth E. Jansenc (Note FARZIN and others use numbering of 1,2,3 being diagonal 456 off) 140259599516SKenneth E. Jansen if (lcsyst .ge. 2) then 140359599516SKenneth E. Jansen 140459599516SKenneth E. Jansen gijd(:,1) = dxidx(:,1,1) * dxidx(:,1,1) 140559599516SKenneth E. Jansen & + dxidx(:,2,1) * dxidx(:,2,1) 140659599516SKenneth E. Jansen & + dxidx(:,3,1) * dxidx(:,3,1) 140759599516SKenneth E. Jansenc 140859599516SKenneth E. Jansen gijd(:,2) = dxidx(:,1,1) * dxidx(:,1,2) 140959599516SKenneth E. Jansen & + dxidx(:,2,1) * dxidx(:,2,2) 141059599516SKenneth E. Jansen & + dxidx(:,3,1) * dxidx(:,3,2) 141159599516SKenneth E. Jansenc 141259599516SKenneth E. Jansen gijd(:,3) = dxidx(:,1,2) * dxidx(:,1,2) 141359599516SKenneth E. Jansen & + dxidx(:,2,2) * dxidx(:,2,2) 141459599516SKenneth E. Jansen & + dxidx(:,3,2) * dxidx(:,3,2) 141559599516SKenneth E. Jansenc 141659599516SKenneth E. Jansen gijd(:,4) = dxidx(:,1,1) * dxidx(:,1,3) 141759599516SKenneth E. Jansen & + dxidx(:,2,1) * dxidx(:,2,3) 141859599516SKenneth E. Jansen & + dxidx(:,3,1) * dxidx(:,3,3) 141959599516SKenneth E. Jansenc 142059599516SKenneth E. Jansen gijd(:,5) = dxidx(:,1,2) * dxidx(:,1,3) 142159599516SKenneth E. Jansen & + dxidx(:,2,2) * dxidx(:,2,3) 142259599516SKenneth E. Jansen & + dxidx(:,3,2) * dxidx(:,3,3) 142359599516SKenneth E. Jansenc 142459599516SKenneth E. Jansen gijd(:,6) = dxidx(:,1,3) * dxidx(:,1,3) 142559599516SKenneth E. Jansen & + dxidx(:,2,3) * dxidx(:,2,3) 142659599516SKenneth E. Jansen & + dxidx(:,3,3) * dxidx(:,3,3) 142759599516SKenneth E. Jansenc 142859599516SKenneth E. Jansen else if (lcsyst .eq. 1) then 142959599516SKenneth E. Jansenc 143059599516SKenneth E. Jansenc There is an invariance problem with tets 143159599516SKenneth E. Jansenc It is fixed by the following modifications to gijd 143259599516SKenneth E. Jansenc 143359599516SKenneth E. Jansen 143459599516SKenneth E. Jansen c1 = 1.259921049894873D+00 143559599516SKenneth E. Jansen c2 = 6.299605249474365D-01 143659599516SKenneth E. Jansenc 143759599516SKenneth E. Jansen tmp1(:) = c1 * dxidx(:,1,1) + c2 *(dxidx(:,2,1)+dxidx(:,3,1)) 143859599516SKenneth E. Jansen tmp2(:) = c1 * dxidx(:,2,1) + c2 *(dxidx(:,1,1)+dxidx(:,3,1)) 143959599516SKenneth E. Jansen tmp3(:) = c1 * dxidx(:,3,1) + c2 *(dxidx(:,1,1)+dxidx(:,2,1)) 144059599516SKenneth E. Jansen gijd(:,1) = dxidx(:,1,1) * tmp1 144159599516SKenneth E. Jansen 1 + dxidx(:,2,1) * tmp2 144259599516SKenneth E. Jansen 2 + dxidx(:,3,1) * tmp3 144359599516SKenneth E. Jansenc 144459599516SKenneth E. Jansen tmp1(:) = c1 * dxidx(:,1,2) + c2 *(dxidx(:,2,2)+dxidx(:,3,2)) 144559599516SKenneth E. Jansen tmp2(:) = c1 * dxidx(:,2,2) + c2 *(dxidx(:,1,2)+dxidx(:,3,2)) 144659599516SKenneth E. Jansen tmp3(:) = c1 * dxidx(:,3,2) + c2 *(dxidx(:,1,2)+dxidx(:,2,2)) 144759599516SKenneth E. Jansen gijd(:,2) = dxidx(:,1,1) * tmp1 144859599516SKenneth E. Jansen 1 + dxidx(:,2,1) * tmp2 144959599516SKenneth E. Jansen 2 + dxidx(:,3,1) * tmp3 145059599516SKenneth E. Jansenc 145159599516SKenneth E. Jansen gijd(:,3) = dxidx(:,1,2) * tmp1 145259599516SKenneth E. Jansen 1 + dxidx(:,2,2) * tmp2 145359599516SKenneth E. Jansen 2 + dxidx(:,3,2) * tmp3 145459599516SKenneth E. Jansenc 145559599516SKenneth E. Jansen tmp1(:) = c1 * dxidx(:,1,3) + c2 *(dxidx(:,2,3)+dxidx(:,3,3)) 145659599516SKenneth E. Jansen tmp2(:) = c1 * dxidx(:,2,3) + c2 *(dxidx(:,1,3)+dxidx(:,3,3)) 145759599516SKenneth E. Jansen tmp3(:) = c1 * dxidx(:,3,3) + c2 *(dxidx(:,1,3)+dxidx(:,2,3)) 145859599516SKenneth E. Jansen gijd(:,4) = dxidx(:,1,1) * tmp1 145959599516SKenneth E. Jansen 1 + dxidx(:,2,1) * tmp2 146059599516SKenneth E. Jansen 2 + dxidx(:,3,1) * tmp3 146159599516SKenneth E. Jansenc 146259599516SKenneth E. Jansen gijd(:,5) = dxidx(:,1,2) * tmp1 146359599516SKenneth E. Jansen 1 + dxidx(:,2,2) * tmp2 146459599516SKenneth E. Jansen 2 + dxidx(:,3,2) * tmp3 146559599516SKenneth E. Jansenc 146659599516SKenneth E. Jansen gijd(:,6) = dxidx(:,1,3) * tmp1 146759599516SKenneth E. Jansen 1 + dxidx(:,2,3) * tmp2 146859599516SKenneth E. Jansen 2 + dxidx(:,3,3) * tmp3 146959599516SKenneth E. Jansenc 147059599516SKenneth E. Jansen else 147159599516SKenneth E. Jansenc This is just the hex copied from above. I have 147259599516SKenneth E. Jansenc to find my notes on invariance factors for wedges 147359599516SKenneth E. Jansenc 147459599516SKenneth E. Jansen 147559599516SKenneth E. Jansen gijd(:,1) = dxidx(:,1,1) * dxidx(:,1,1) 147659599516SKenneth E. Jansen & + dxidx(:,2,1) * dxidx(:,2,1) 147759599516SKenneth E. Jansen & + dxidx(:,3,1) * dxidx(:,3,1) 147859599516SKenneth E. Jansenc 147959599516SKenneth E. Jansen gijd(:,2) = dxidx(:,1,1) * dxidx(:,1,2) 148059599516SKenneth E. Jansen & + dxidx(:,2,1) * dxidx(:,2,2) 148159599516SKenneth E. Jansen & + dxidx(:,3,1) * dxidx(:,3,2) 148259599516SKenneth E. Jansenc 148359599516SKenneth E. Jansen gijd(:,3) = dxidx(:,1,2) * dxidx(:,1,2) 148459599516SKenneth E. Jansen & + dxidx(:,2,2) * dxidx(:,2,2) 148559599516SKenneth E. Jansen & + dxidx(:,3,2) * dxidx(:,3,2) 148659599516SKenneth E. Jansenc 148759599516SKenneth E. Jansen gijd(:,4) = dxidx(:,1,1) * dxidx(:,1,3) 148859599516SKenneth E. Jansen & + dxidx(:,2,1) * dxidx(:,2,3) 148959599516SKenneth E. Jansen & + dxidx(:,3,1) * dxidx(:,3,3) 149059599516SKenneth E. Jansenc 149159599516SKenneth E. Jansen gijd(:,5) = dxidx(:,1,2) * dxidx(:,1,3) 149259599516SKenneth E. Jansen & + dxidx(:,2,2) * dxidx(:,2,3) 149359599516SKenneth E. Jansen & + dxidx(:,3,2) * dxidx(:,3,3) 149459599516SKenneth E. Jansenc 149559599516SKenneth E. Jansen gijd(:,6) = dxidx(:,1,3) * dxidx(:,1,3) 149659599516SKenneth E. Jansen & + dxidx(:,2,3) * dxidx(:,2,3) 149759599516SKenneth E. Jansen & + dxidx(:,3,3) * dxidx(:,3,3) 149859599516SKenneth E. Jansen endif 149959599516SKenneth E. Jansenc 150059599516SKenneth E. Jansen return 150159599516SKenneth E. Jansen end 150259599516SKenneth E. Jansen 1503