41 std::string AverageSolver::solverName =
44 AverageSolver::create,
45 "Average Riemann solver");
47 AverageSolver::AverageSolver(
78 int expDim = Fwd.num_elements()-2;
81 for (j = 0; j < Fwd[0].num_elements(); ++j)
87 for (i = 0; i < expDim; ++i)
89 Ufwd[i] = Fwd[i+1][j]/Fwd[0][j];
90 Ubwd[i] = Bwd[i+1][j]/Bwd[0][j];
91 tmp1 += Ufwd[i]*Fwd[i+1][j];
92 tmp2 += Ubwd[i]*Bwd[i+1][j];
103 flux[0][j] = 0.5 * (Fwd[1][j] + Bwd[1][j]);
104 flux[expDim+1][j] = 0.5 * (Ufwd[0] * (Fwd[expDim+1][j] + Pfwd) +
105 Ubwd[0] * (Bwd[expDim+1][j] + Pbwd));
107 for (i = 0; i < expDim; ++i)
109 flux[i+1][j] = 0.5 * (Fwd[0][j] * Ufwd[0] * Ufwd[i] +
110 Bwd[0][j] * Ubwd[0] * Ubwd[i]);
114 flux[1][j] += 0.5 * (Pfwd + Pbwd);
virtual void v_ArraySolve(const Array< OneD, const Array< OneD, NekDouble > > &Fwd, const Array< OneD, const Array< OneD, NekDouble > > &Bwd, Array< OneD, Array< OneD, NekDouble > > &flux)
Average Riemann solver.
RiemannSolverFactory & GetRiemannSolverFactory()
tKey RegisterCreatorFunction(tKey idKey, CreatorFunction classCreator, std::string pDesc="")
Register a class with the factory.
EquationOfStateSharedPtr m_eos
std::shared_ptr< SessionReader > SessionReaderSharedPtr