45 "Roe Riemann solver");
86 double rhoL,
double rhouL,
double rhovL,
double rhowL,
double EL,
87 double rhoR,
double rhouR,
double rhovR,
double rhowR,
double ER,
88 double &rhof,
double &rhouf,
double &rhovf,
double &rhowf,
double &Ef)
93 rhoL, rhouL, rhovL, rhowL, EL,
94 rhoR, rhouR, rhovR, rhowR, ER,
95 rhof, rhouf, rhovf, rhowf, Ef,
105 static auto gamma =
m_params[
"gamma"]();
106 static auto nVars = fwd.size();
107 static auto spaceDim = nVars-2;
113 size_t sizeScalar = fwd[0].size();
114 size_t sizeVec = (sizeScalar / vec_t::width) * vec_t::width;
118 for (; i < sizeVec; i+=vec_t::width)
120 vec_t rhoL{}, rhouL{}, rhovL{}, rhowL{}, EL{};
121 vec_t rhoR{}, rhouR{}, rhovR{}, rhowR{}, ER{};
136 else if (spaceDim == 3)
144 vec_t rhof{}, rhouf{}, rhovf{}, rhowf{}, Ef{};
147 rhoL, rhouL, rhovL, rhowL, EL,
148 rhoR, rhouR, rhovR, rhowR, ER,
149 rhof, rhouf, rhovf, rhowf, Ef,
160 else if (spaceDim == 3)
170 for (; i < sizeScalar; ++i)
172 NekDouble rhoL{}, rhouL{}, rhovL{}, rhowL{}, EL{};
173 NekDouble rhoR{}, rhouR{}, rhovR{}, rhowR{}, ER{};
178 EL = fwd[spaceDim+1][i];
181 ER = bwd[spaceDim+1][i];
188 else if (spaceDim == 3)
196 NekDouble rhof{}, rhouf{}, rhovf{}, rhowf{}, Ef{};
199 rhoL, rhouL, rhovL, rhowL, EL,
200 rhoR, rhouR, rhovR, rhowR, ER,
201 rhof, rhouf, rhovf, rhowf, Ef,
207 flux[nVars-1][i] = Ef;
212 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()
The above copyright notice and this permission notice shall be included.
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 >::type simd