36#include <boost/core/ignore_unused.hpp>
48 "Lax-Friedrichs Solver");
96 boost::ignore_unused(rhoL, rhoR, rhoF);
104 a_1_max = std::max(a_1_max,
std::abs(u0L - cL));
105 a_1_max = std::max(a_1_max,
std::abs(u0R - cR));
106 a_1_max = std::max(a_1_max,
std::abs(u0L + cL));
107 a_1_max = std::max(a_1_max,
std::abs(u0R + cR));
109 NekDouble pFL = rho0L * c0sqL * uL + pL * u0L;
110 NekDouble uFL = pL / rho0L + u0L * uL + v0L * vL + w0L * wL;
114 NekDouble pFR = rho0R * c0sqR * uR + pR * u0R;
115 NekDouble uFR = pR / rho0R + u0R * uR + v0R * vR + w0R * wR;
120 pF = 0.5 * (pFL + pFR - a_1_max * (pR - pL));
121 uF = 0.5 * (uFL + uFR - a_1_max * (uR - uL));
122 vF = 0.5 * (vFL + vFR - a_1_max * (vR - vL));
123 wF = 0.5 * (wFL + wFR - a_1_max * (wR - wL));
static std::string solverName
static RiemannSolverSharedPtr create(const LibUtilities::SessionReaderSharedPtr &pSession)
APELaxFriedrichsSolver(const LibUtilities::SessionReaderSharedPtr &pSession)
virtual void v_PointSolve(NekDouble pL, NekDouble rhoL, NekDouble uL, NekDouble vL, NekDouble wL, NekDouble pR, NekDouble rhoR, NekDouble uR, NekDouble vR, NekDouble wR, NekDouble c0sqL, NekDouble rho0L, NekDouble u0L, NekDouble v0L, NekDouble w0L, NekDouble c0sqR, NekDouble rho0R, NekDouble u0R, NekDouble v0R, NekDouble w0R, NekDouble &pF, NekDouble &rhoF, NekDouble &uF, NekDouble &vF, NekDouble &wF) override
Lax-Friedrichs Riemann solver.
tKey RegisterCreatorFunction(tKey idKey, CreatorFunction classCreator, std::string pDesc="")
Register a class with the factory.
std::shared_ptr< SessionReader > SessionReaderSharedPtr
RiemannSolverFactory & GetRiemannSolverFactory()
The above copyright notice and this permission notice shall be included.
scalarT< T > abs(scalarT< T > in)
scalarT< T > sqrt(scalarT< T > in)