46 AcousticSolver::AcousticSolver(
61 int nTracePts = Fwd[0].num_elements();
65 for (
int i = 0; i < nDim + 2; i++)
78 for (
int i = 0; i < nTracePts; ++i)
81 Fwd[0][i], 0.0, Fwd[1][i], 0.0, 0.0,
82 Bwd[0][i], 0.0, Bwd[1][i], 0.0, 0.0,
83 bfFwd[0][i], bfFwd[1][i], bfFwd[2][i], 0.0, 0.0,
84 bfBwd[0][i], bfBwd[1][i], bfBwd[2][i], 0.0, 0.0,
85 flux[0][i], rhoF, flux[1][i], vF, wF);
90 for (
int i = 0; i < nTracePts; ++i)
93 Fwd[0][i], 0.0, Fwd[1][i], Fwd[2][i], 0.0,
94 Bwd[0][i], 0.0, Bwd[1][i], Bwd[2][i], 0.0,
95 bfFwd[0][i], bfFwd[1][i], bfFwd[2][i], bfFwd[3][i], 0.0,
96 bfBwd[0][i], bfBwd[1][i], bfBwd[2][i], bfBwd[3][i], 0.0,
97 flux[0][i], rhoF, flux[1][i], flux[2][i], wF);
100 else if (expDim == 3)
102 for (
int i = 0; i < nTracePts; ++i)
105 Fwd[0][i], 0.0, Fwd[1][i], Fwd[2][i], Fwd[3][i],
106 Bwd[0][i], 0.0, Bwd[1][i], Bwd[2][i], Bwd[3][i],
107 bfFwd[0][i], bfFwd[1][i], bfFwd[2][i], bfFwd[3][i], bfFwd[4][i],
108 bfBwd[0][i], bfBwd[1][i], bfBwd[2][i], bfBwd[3][i], bfBwd[4][i],
109 flux[0][i], rhoF, flux[1][i], flux[2][i], flux[3][i]);
126 int nBF = basefieldFwdBwd.num_elements() / 2;
127 int nDim = normals.num_elements();
132 for (
int i = 0; i < nBF; i++)
135 basefieldFwd[i] = basefieldFwdBwd[i];
136 basefieldBwd[i] = basefieldFwdBwd[j];
141 for (
int i = 0; i < nDim; ++i)
143 baseVecLocs[0][i] = i + 2;
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)
SOLVER_UTILS_EXPORT bool CheckVectors(std::string name)
Determine whether a vector has been defined in m_vectors.
void GetRotBasefield(Array< OneD, Array< OneD, NekDouble >> &bfFwd, Array< OneD, Array< OneD, NekDouble >> &bfBwd)
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)=0
bool m_requiresRotation
Indicates whether the Riemann solver requires a rotation to be applied to the velocity fields...
The RiemannSolver class provides an abstract interface under which solvers for various Riemann proble...
#define ASSERTL1(condition, msg)
Assert Level 1 – Debugging which is used whether in FULLDEBUG or DEBUG compilation mode...
std::map< std::string, RSVecFuncType > m_vectors
Map of vector function types.
std::shared_ptr< SessionReader > SessionReaderSharedPtr
SOLVER_UTILS_EXPORT void rotateToNormal(const Array< OneD, const Array< OneD, NekDouble > > &inarray, const Array< OneD, const Array< OneD, NekDouble > > &normals, const Array< OneD, const Array< OneD, NekDouble > > &vecLocs, Array< OneD, Array< OneD, NekDouble > > &outarray)
Rotate a vector field to trace normal.