32 #include <boost/test/tools/floating_point_comparison.hpp>
33 #include <boost/test/unit_test.hpp>
36 #include "../RoeSolver.h"
37 #include "../RoeSolverSIMD.h"
41 namespace RiemannTests
54 riemannSolver.SetParam(
"gamma",
55 [&gamma]() ->
NekDouble & {
return gamma; });
63 for (
size_t i = 0; i < spaceDim; ++i)
65 vecLocs[0][i] = 1 + i;
67 riemannSolver.SetAuxVec(
75 for (
size_t i = 0; i < spaceDim; ++i)
79 riemannSolver.SetVector(
84 size_t nFields = spaceDim + 2;
86 flx(nFields), flxRef(nFields);
87 for (
size_t i = 0; i < nFields; ++i)
98 for (
size_t i = 0; i < npts; ++i)
120 rhoe + 0.5 * (rhou * rhou + rhov * rhov + rhow * rhow) / rho;
121 fwd[nFields - 1][i] = E;
122 bwd[nFields - 1][i] = E;
127 flxRef[1][i] = rhou * rhou / rho +
p;
128 flxRef[2][i] = rhou * rhov / rho;
129 flxRef[3][i] = rhou * rhow / rho;
130 flxRef[nFields - 1][i] = (E +
p) * rhou / rho;
133 riemannSolver.Solve(spaceDim, fwd, bwd, flx);
136 for (
size_t i = 0; i < npts; ++i)
138 BOOST_CHECK_CLOSE(flxRef[0][i], flx[0][i], 1e-10);
139 BOOST_CHECK_CLOSE(flxRef[1][i], flx[1][i], 1e-10);
140 BOOST_CHECK_CLOSE(flxRef[2][i], flx[2][i], 1e-10);
141 BOOST_CHECK_CLOSE(flxRef[3][i], flx[3][i], 1e-10);
142 BOOST_CHECK_CLOSE(flxRef[4][i], flx[4][i], 1e-10);
157 riemannSolver.SetParam(
"gamma",
158 [&gamma]() ->
NekDouble & {
return gamma; });
166 for (
size_t i = 0; i < spaceDim; ++i)
168 vecLocs[0][i] = 1 + i;
170 riemannSolver.SetAuxVec(
178 for (
size_t i = 0; i < spaceDim; ++i)
182 riemannSolver.SetVector(
187 size_t nFields = spaceDim + 2;
189 flx(nFields), flxRef(nFields);
190 for (
size_t i = 0; i < nFields; ++i)
220 NekDouble E = rhoe + 0.5 * (rhou * rhou + rhov * rhov + rhow * rhow) / rho;
221 fwd[nFields - 1][0] = E;
222 bwd[nFields - 1][0] = E;
227 flxRef[1][0] = rhov * rhou / rho;
228 flxRef[2][0] = rhov * rhov / rho +
p;
229 flxRef[3][0] = rhov * rhow / rho;
230 flxRef[nFields - 1][0] = (E +
p) * rhov / rho;
232 riemannSolver.Solve(spaceDim, fwd, bwd, flx);
235 BOOST_CHECK_CLOSE(flxRef[0][0], flx[0][0], 1e-10);
236 BOOST_CHECK_CLOSE(flxRef[1][0], flx[1][0], 1e-10);
237 BOOST_CHECK_CLOSE(flxRef[2][0], flx[2][0], 1e-10);
238 BOOST_CHECK_CLOSE(flxRef[3][0], flx[3][0], 1e-10);
239 BOOST_CHECK_CLOSE(flxRef[4][0], flx[4][0], 1e-10);
253 riemannSolver.SetParam(
"gamma",
254 [&gamma]() ->
NekDouble & {
return gamma; });
262 for (
size_t i = 0; i < spaceDim; ++i)
264 vecLocs[0][i] = 1 + i;
266 riemannSolver.SetAuxVec(
274 for (
size_t i = 0; i < spaceDim; ++i)
278 riemannSolver.SetVector(
283 size_t nFields = spaceDim + 2;
285 flx(nFields), flxRef(nFields);
286 for (
size_t i = 0; i < nFields; ++i)
316 NekDouble E = rhoe + 0.5 * (rhou * rhou + rhov * rhov + rhow * rhow) / rho;
317 fwd[nFields - 1][0] = E;
318 bwd[nFields - 1][0] = E;
323 flxRef[1][0] = rhow * rhou / rho;
324 flxRef[2][0] = rhow * rhov / rho;
325 flxRef[3][0] = rhow * rhow / rho +
p;
326 flxRef[nFields - 1][0] = (E +
p) * rhow / rho;
328 riemannSolver.Solve(spaceDim, fwd, bwd, flx);
331 BOOST_CHECK_CLOSE(flxRef[0][0], flx[0][0], 1e-10);
332 BOOST_CHECK_CLOSE(flxRef[1][0], flx[1][0], 1e-10);
333 BOOST_CHECK_CLOSE(flxRef[2][0], flx[2][0], 1e-10);
334 BOOST_CHECK_CLOSE(flxRef[3][0], flx[3][0], 1e-10);
335 BOOST_CHECK_CLOSE(flxRef[4][0], flx[4][0], 1e-10);
349 riemannSolver.SetParam(
"gamma",
350 [&gamma]() ->
NekDouble & {
return gamma; });
358 for (
size_t i = 0; i < spaceDim; ++i)
360 vecLocs[0][i] = 1 + i;
362 riemannSolver.SetAuxVec(
370 for (
size_t i = 0; i < spaceDim; ++i)
374 riemannSolver.SetVector(
379 size_t nFields = spaceDim + 2;
381 flx(nFields), flxRef(nFields);
382 for (
size_t i = 0; i < nFields; ++i)
393 for (
size_t i = 0; i < npts; ++i)
416 rhoe + 0.5 * (rhou * rhou + rhov * rhov + rhow * rhow) / rhoL;
418 rhoe + 0.5 * (rhou * rhou + rhov * rhov + rhow * rhow) / rhoR;
419 fwd[nFields - 1][i] = EL;
420 bwd[nFields - 1][i] = ER;
424 flxRef[0][i] = 0.87858599768171342;
425 flxRef[1][i] = 2.0449028304431223;
426 flxRef[2][i] = 1.8282946712594808;
427 flxRef[3][i] = 2.7424420068892208;
428 flxRef[nFields - 1][i] = 9.8154698039903128;
431 riemannSolver.Solve(spaceDim, fwd, bwd, flx);
434 for (
size_t i = 0; i < npts; ++i)
436 BOOST_CHECK_CLOSE(flxRef[0][i], flx[0][i], 1e-10);
437 BOOST_CHECK_CLOSE(flxRef[1][i], flx[1][i], 1e-10);
438 BOOST_CHECK_CLOSE(flxRef[2][i], flx[2][i], 1e-10);
439 BOOST_CHECK_CLOSE(flxRef[3][i], flx[3][i], 1e-10);
440 BOOST_CHECK_CLOSE(flxRef[4][i], flx[4][i], 1e-10);
BOOST_AUTO_TEST_CASE(RoeAlongXconstSolution)
The above copyright notice and this permission notice shall be included.