61 int nTracePts = Fwd[0].num_elements();
72 for (i = 0; i < nTracePts; ++i)
75 flux[0][i], flux[1][i], A0[i], beta[i], N[i]);
115 cL = sqrt(beta * sqrt(AL) / (2 * rho)) * n;
116 cR = sqrt(beta * sqrt(AR) / (2 * rho)) * n;
118 ASSERTL1(fabs(cL + cR) > fabs(uL + uR),
"Conditions are not sub-sonic");
131 upwindedphysfield[0] = w0mw1 * fac;
132 upwindedphysfield[1] = 0.5 * (W[0] + W[1]);
135 Aflux = upwindedphysfield[0] * upwindedphysfield[1] * n;
136 p = pext + beta * (sqrt(upwindedphysfield[0]) - sqrt(A_0));
137 p_t = 0.5 * (upwindedphysfield[1] * upwindedphysfield[1]) + p / rho;
SOLVER_UTILS_EXPORT bool CheckScalars(std::string name)
Determine whether a scalar has been defined in m_scalars.
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)
UpwindPulseSolver(const LibUtilities::SessionReaderSharedPtr &pSession)
std::map< std::string, RSScalarFuncType > m_scalars
Map of scalar function types.
void RiemannSolverUpwind(NekDouble AL, NekDouble uL, NekDouble AR, NekDouble uR, NekDouble &Aflux, NekDouble &uflux, NekDouble A_0, NekDouble beta, NekDouble n)
RiemannSolverFactory & GetRiemannSolverFactory()
static std::string solverName
static RiemannSolverSharedPtr create(const LibUtilities::SessionReaderSharedPtr &pSession)
The RiemannSolver class provides an abstract interface under which solvers for various Riemann proble...
std::map< std::string, RSParamFuncType > m_params
Map of parameter function types.
tKey RegisterCreatorFunction(tKey idKey, CreatorFunction classCreator, std::string pDesc="")
Register a class with the factory.
SOLVER_UTILS_EXPORT bool CheckParams(std::string name)
Determine whether a parameter has been defined in m_params.
#define ASSERTL1(condition, msg)
Assert Level 1 – Debugging which is used whether in FULLDEBUG or DEBUG compilation mode...
std::shared_ptr< SessionReader > SessionReaderSharedPtr