46 AcousticSolver::AcousticSolver(
61 int nTracePts = Fwd[0].size();
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.size() / 2;
127 int nDim = normals.size();
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;
#define ASSERTL1(condition, msg)
Assert Level 1 – Debugging which is used whether in FULLDEBUG or DEBUG compilation mode....
void GetRotBasefield(Array< OneD, Array< OneD, NekDouble >> &bfFwd, Array< OneD, Array< OneD, NekDouble >> &bfBwd)
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)
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
The RiemannSolver class provides an abstract interface under which solvers for various Riemann proble...
bool m_requiresRotation
Indicates whether the Riemann solver requires a rotation to be applied to the velocity fields.
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.
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::shared_ptr< SessionReader > SessionReaderSharedPtr
The above copyright notice and this permission notice shall be included.