36 #include <boost/core/ignore_unused.hpp> 45 std::string APELaxFriedrichsSolver::solverName =
47 "APELaxFriedrichs", APELaxFriedrichsSolver::create,
48 "Lax-Friedrichs Solver");
53 APELaxFriedrichsSolver::APELaxFriedrichsSolver(
95 boost::ignore_unused(rhoL, rhoR, rhoF);
103 a_1_max = std::max(a_1_max, std::abs(u0L - cL));
104 a_1_max = std::max(a_1_max, std::abs(u0R - cR));
105 a_1_max = std::max(a_1_max, std::abs(u0L + cL));
106 a_1_max = std::max(a_1_max, std::abs(u0R + cR));
108 NekDouble pFL = rho0L * c0sqL * uL + pL * u0L;
109 NekDouble uFL = pL / rho0L + u0L * uL + v0L * vL + w0L * wL;
113 NekDouble pFR = rho0R * c0sqR * uR + pR * u0R;
114 NekDouble uFR = pR / rho0R + u0R * uR + v0R * vR + w0R * wR;
119 pF = 0.5 * (pFL + pFR - a_1_max * (pR - pL));
120 uF = 0.5 * (uFL + uFR - a_1_max * (uR - uL));
121 vF = 0.5 * (vFL + vFR - a_1_max * (vR - vL));
122 wF = 0.5 * (wFL + wFR - a_1_max * (wR - wL));
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)
Lax-Friedrichs Riemann solver.
RiemannSolverFactory & GetRiemannSolverFactory()
tKey RegisterCreatorFunction(tKey idKey, CreatorFunction classCreator, std::string pDesc="")
Register a class with the factory.
std::shared_ptr< SessionReader > SessionReaderSharedPtr