36 #include <boost/core/ignore_unused.hpp> 
   37 #include <boost/algorithm/string/predicate.hpp> 
   49         pSession->LoadSolverInfo(
"EquationOfState",
 
   54         m_idealGas = boost::iequals(eosType,
"IdealGas");
 
   66             int nvariables  = Fwd.num_elements();
 
   73                 for (
int i = 0; i < Fwd[0].num_elements(); ++i)
 
   76                         Fwd [0][i], Fwd [1][i], 0.0,   0.0,   Fwd [2][i],
 
   77                         Bwd [0][i], Bwd [1][i], 0.0,   0.0,   Bwd [2][i],
 
   78                         flux[0][i], flux[1][i], rhouf, rhovf, flux[2][i]);
 
   83                 if (nvariables == expDim+2)
 
   85                     for (
int i = 0; i < Fwd[0].num_elements(); ++i)
 
   88                             Fwd [0][i], Fwd [1][i], Fwd [2][i], 0.0,   Fwd [3][i],
 
   89                             Bwd [0][i], Bwd [1][i], Bwd [2][i], 0.0,   Bwd [3][i],
 
   90                             flux[0][i], flux[1][i], flux[2][i], rhovf, flux[3][i]);
 
   94                 if (nvariables > expDim+2)
 
   96                     for (
int i = 0; i < Fwd[0].num_elements(); ++i)
 
   99                             Fwd [0][i], Fwd [1][i], Fwd [2][i], 0.0, Fwd [3][i], Fwd [4][i],
 
  100                             Bwd [0][i], Bwd [1][i], Bwd [2][i], 0.0, Bwd [3][i], Bwd [4][i],
 
  101                             flux[0][i], flux[1][i], flux[2][i], rhovf, flux[3][i], flux[4][i]);
 
  106             else if (expDim == 3)
 
  108                 for (
int i = 0; i < Fwd[0].num_elements(); ++i)
 
  111                         Fwd [0][i], Fwd [1][i], Fwd [2][i], Fwd [3][i], Fwd [4][i],
 
  112                         Bwd [0][i], Bwd [1][i], Bwd [2][i], Bwd [3][i], Bwd [4][i],
 
  113                         flux[0][i], flux[1][i], flux[2][i], flux[3][i], flux[4][i]);
 
  115                 if (nvariables > expDim+2)
 
  117                     for (
int i = 0; i < Fwd[0].num_elements(); ++i)
 
  120                             Fwd [0][i], Fwd [1][i], Fwd [2][i], Fwd [3][i], Fwd [4][i], Fwd [5][i],
 
  121                             Bwd [0][i], Bwd [1][i], Bwd [2][i], Bwd [3][i], Bwd [4][i], Bwd [5][i],
 
  122                             flux[0][i], flux[1][i], flux[2][i], flux[3][i], flux[4][i], flux[5][i]);
 
  138         boost::ignore_unused(HL, srL, HR, srR, srLR);
 
  144             cRoe = sqrt((gamma - 1.0)*(HRoe - 0.5 * URoe2));
 
  159             NekDouble chiL    = dpdrhoL - eL / rhoL * dpdeL;
 
  161             NekDouble chiR    = dpdrhoR - eR / rhoR * dpdeR;
 
  173             NekDouble avgKappa  = 0.5 * (kappaL    + kappaR);
 
  174             NekDouble avgKappaH = 0.5 * (kappaL*hL + kappaR*hR);
 
  182             NekDouble dP = deltaP - avgChi * deltaRho - avgKappa * deltaRhoe;
 
  186             NekDouble D  = (s*deltaRho)*(s*deltaRho) + deltaP*deltaP;
 
  192                 chiRoe   = (D*avgChi + s*s*deltaRho*dP) / fac;
 
  193                 kappaRoe = D*avgKappa / fac;
 
  201             cRoe = sqrt( chiRoe + kappaRoe*(HRoe - 0.5 * URoe2));
 
virtual void v_ArraySolve(const Array< OneD, const Array< OneD, NekDouble > > &Fwd, const Array< OneD, const Array< OneD, NekDouble > > &Bwd, Array< OneD, Array< OneD, NekDouble > > &flux)
virtual void v_PointSolve(NekDouble rhoL, NekDouble rhouL, NekDouble rhovL, NekDouble rhowL, NekDouble EL, NekDouble rhoR, NekDouble rhouR, NekDouble rhovR, NekDouble rhowR, NekDouble ER, NekDouble &rhof, NekDouble &rhouf, NekDouble &rhovf, NekDouble &rhowf, NekDouble &Ef)
NekDouble GetRoeSoundSpeed(NekDouble rhoL, NekDouble pL, NekDouble eL, NekDouble HL, NekDouble srL, NekDouble rhoR, NekDouble pR, NekDouble eR, NekDouble HR, NekDouble srR, NekDouble HRoe, NekDouble URoe2, NekDouble srLR)
CompressibleSolver(const LibUtilities::SessionReaderSharedPtr &pSession)
EquationOfStateSharedPtr m_eos
virtual void v_PointSolveVisc(NekDouble rhoL, NekDouble rhouL, NekDouble rhovL, NekDouble rhowL, NekDouble EL, NekDouble EpsL, NekDouble rhoR, NekDouble rhouR, NekDouble rhovR, NekDouble rhowR, NekDouble ER, NekDouble EpsR, NekDouble &rhof, NekDouble &rhouf, NekDouble &rhovf, NekDouble &rhowf, NekDouble &Ef, NekDouble &Epsf)
virtual void v_Solve(const int nDim, const Array< OneD, const Array< OneD, NekDouble > > &Fwd, const Array< OneD, const Array< OneD, NekDouble > > &Bwd, Array< OneD, Array< OneD, NekDouble > > &flux)
tBaseSharedPtr CreateInstance(tKey idKey, tParam... args)
Create an instance of the class referred to by idKey.
The RiemannSolver class provides an abstract interface under which solvers for various Riemann proble...
bool m_requiresRotation
Indicates whether the Riemann solver requires a rotation to be applied to the velocity fields.
std::map< std::string, RSParamFuncType > m_params
Map of parameter function types.
std::shared_ptr< SessionReader > SessionReaderSharedPtr
static const NekDouble kNekZeroTol
EquationOfStateFactory & GetEquationOfStateFactory()
Declaration of the equation of state factory singleton.