64     static auto gamma    = 
m_params[
"gamma"]();
 
   65     static auto nVars    = fwd.size();
 
   66     static auto spaceDim = nVars - 2;
 
   69     ASSERTL0(spaceDim == 3, 
"SIMD Roe implemented only for 3D case...");
 
   76     size_t sizeScalar = fwd[0].size();
 
   77     size_t sizeVec    = (sizeScalar / vec_t::width) * vec_t::width;
 
   98     for (; i < sizeVec; i += vec_t::width)
 
  101         vec_t rhoL, rhoR, ER, EL;
 
  108         vec_t tmpIn[3], tmpOut[3];
 
  115         for (
size_t j = 0; j < 9; ++j)
 
  123         vec_t rhouL = tmpOut[0];
 
  124         vec_t rhovL = tmpOut[1];
 
  125         vec_t rhowL = tmpOut[2];
 
  135         vec_t rhouR = tmpOut[0];
 
  136         vec_t rhovR = tmpOut[1];
 
  137         vec_t rhowR = tmpOut[2];
 
  141         RoeKernel(rhoL, rhouL, rhovL, rhowL, EL, rhoR, rhouR, rhovR, rhowR, ER,
 
  142                   rhof, tmpIn[0], tmpIn[1], tmpIn[2], Ef, gamma);
 
  158     for (; i < sizeScalar; ++i)
 
  169         tmpIn[0] = fwd[1][i];
 
  170         tmpIn[1] = fwd[2][i];
 
  171         tmpIn[2] = fwd[3][i];
 
  175         for (
size_t j = 0; j < 9; ++j)
 
  188         tmpIn[0] = bwd[1][i];
 
  189         tmpIn[1] = bwd[2][i];
 
  190         tmpIn[2] = bwd[3][i];
 
  201         RoeKernel(rhoL, rhouL, rhovL, rhowL, EL, rhoR, rhouR, rhovR, rhowR, ER,
 
  202                   rhof, tmpIn[0], tmpIn[1], tmpIn[2], Ef, gamma);
 
  209         flux[nVars - 1][i] = Ef;
 
  212         flux[1][i] = tmpOut[0];
 
  213         flux[2][i] = tmpOut[1];
 
  214         flux[3][i] = tmpOut[2];
 
#define ASSERTL0(condition, msg)
 
#define ASSERTL1(condition, msg)
Assert Level 1 – Debugging which is used whether in FULLDEBUG or DEBUG compilation mode....
 
tKey RegisterCreatorFunction(tKey idKey, CreatorFunction classCreator, std::string pDesc="")
Register a class with the factory.
 
void v_Solve(const int nDim, const Array< OneD, const Array< OneD, ND >> &Fwd, const Array< OneD, const Array< OneD, ND >> &Bwd, Array< OneD, Array< OneD, ND >> &flux) final
 
static RiemannSolverSharedPtr create(const LibUtilities::SessionReaderSharedPtr &pSession)
 
static std::string solverName
 
RoeSolverSIMD()
programmatic ctor
 
bool m_requiresRotation
Indicates whether the Riemann solver requires a rotation to be applied to the velocity fields.
 
SOLVER_UTILS_EXPORT void GenerateRotationMatrices(const Array< OneD, const Array< OneD, NekDouble >> &normals)
Generate rotation matrices for 3D expansions.
 
Array< OneD, Array< OneD, NekDouble > > m_rotMat
Rotation matrices for each trace quadrature point.
 
std::map< std::string, RSVecFuncType > m_vectors
Map of vector function types.
 
SOLVER_UTILS_EXPORT bool CheckVectors(std::string name)
Determine whether a vector has been defined in m_vectors.
 
std::map< std::string, RSParamFuncType > m_params
Map of parameter function types.
 
std::shared_ptr< SessionReader > SessionReaderSharedPtr
 
void rotateFromNormalKernel(T *in, T *rotMat, T *out)
 
void rotateToNormalKernel(T *in, T *rotMat, T *out)
 
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, width >::type simd