84 double rhowL,
double EL,
double rhoR,
double rhouR,
85 double rhovR,
double rhowR,
double ER,
86 double &rhof,
double &rhouf,
double &rhovf,
87 double &rhowf,
double &Ef)
91 RoeKernel(rhoL, rhouL, rhovL, rhowL, EL, rhoR, rhouR, rhovR, rhowR, ER,
92 rhof, rhouf, rhovf, rhowf, Ef, gamma);
103 static auto gamma =
m_params[
"gamma"]();
104 static size_t nVars = fwd.size();
105 static size_t spaceDim = nVars - 2;
111 size_t sizeScalar = fwd[0].size();
112 size_t sizeVec = (sizeScalar / vec_t::width) * vec_t::width;
116 for (; i < sizeVec; i += vec_t::width)
118 vec_t rhoL{}, rhouL{}, rhovL{}, rhowL{}, EL{};
119 vec_t rhoR{}, rhouR{}, rhovR{}, rhowR{}, ER{};
134 else if (spaceDim == 3)
142 vec_t rhof{}, rhouf{}, rhovf{}, rhowf{}, Ef{};
144 RoeKernel(rhoL, rhouL, rhovL, rhowL, EL, rhoR, rhouR, rhovR, rhowR, ER,
145 rhof, rhouf, rhovf, rhowf, Ef, gamma);
155 else if (spaceDim == 3)
164 for (; i < sizeScalar; ++i)
166 NekDouble rhoL{}, rhouL{}, rhovL{}, rhowL{}, EL{};
167 NekDouble rhoR{}, rhouR{}, rhovR{}, rhowR{}, ER{};
172 EL = fwd[spaceDim + 1][i];
175 ER = bwd[spaceDim + 1][i];
182 else if (spaceDim == 3)
190 NekDouble rhof{}, rhouf{}, rhovf{}, rhowf{}, Ef{};
192 RoeKernel(rhoL, rhouL, rhovL, rhowL, EL, rhoR, rhouR, rhovR, rhowR, ER,
193 rhof, rhouf, rhovf, rhowf, Ef, gamma);
198 flux[nVars - 1][i] = Ef;
203 else if (spaceDim == 3)
tKey RegisterCreatorFunction(tKey idKey, CreatorFunction classCreator, std::string pDesc="")
Register a class with the factory.
void v_PointSolve(ND rhoL, ND rhouL, ND rhovL, ND rhowL, ND EL, ND rhoR, ND rhouR, ND rhovR, ND rhowR, ND ER, ND &rhof, ND &rhouf, ND &rhovf, ND &rhowf, ND &Ef) final
Roe Riemann solver.
void v_ArraySolve(const Array< OneD, const Array< OneD, ND > > &Fwd, const Array< OneD, const Array< OneD, ND > > &Bwd, Array< OneD, Array< OneD, ND > > &flux) final
RoeSolver()
programmatic ctor
static RiemannSolverSharedPtr create(const LibUtilities::SessionReaderSharedPtr &pSession)
static std::string solverName
std::map< std::string, RSParamFuncType > m_params
Map of parameter function types.
std::shared_ptr< SessionReader > SessionReaderSharedPtr
RiemannSolverFactory & GetRiemannSolverFactory()
void RoeKernel(T &rhoL, T &rhouL, T &rhovL, T &rhowL, T &EL, T &rhoR, T &rhouR, T &rhovR, T &rhowR, T &ER, T &rhof, T &rhouf, T &rhovf, T &rhowf, T &Ef, NekDouble gamma)
tinysimd::simd< NekDouble > vec_t
static constexpr struct tinysimd::is_not_aligned_t is_not_aligned
typename abi< ScalarType, width >::type simd