35 #include <boost/test/tools/floating_point_comparison.hpp>
36 #include <boost/test/unit_test.hpp>
39 #include "../RoeSolver.h"
40 #include "../RoeSolverSIMD.h"
44 namespace RiemannTests
57 riemannSolver.SetParam(
"gamma",
58 [&gamma]() ->
NekDouble & {
return gamma; });
66 for (
size_t i = 0; i < spaceDim; ++i)
68 vecLocs[0][i] = 1 + i;
70 riemannSolver.SetAuxVec(
78 for (
size_t i = 0; i < spaceDim; ++i)
82 riemannSolver.SetVector(
87 size_t nFields = spaceDim + 2;
89 flx(nFields), flxRef(nFields);
90 for (
size_t i = 0; i < nFields; ++i)
101 for (
size_t i = 0; i < npts; ++i)
123 rhoe + 0.5 * (rhou * rhou + rhov * rhov + rhow * rhow) / rho;
124 fwd[nFields - 1][i] = E;
125 bwd[nFields - 1][i] = E;
130 flxRef[1][i] = rhou * rhou / rho +
p;
131 flxRef[2][i] = rhou * rhov / rho;
132 flxRef[3][i] = rhou * rhow / rho;
133 flxRef[nFields - 1][i] = (E +
p) * rhou / rho;
136 riemannSolver.Solve(spaceDim, fwd, bwd, flx);
139 for (
size_t i = 0; i < npts; ++i)
141 BOOST_CHECK_CLOSE(flxRef[0][i], flx[0][i], 1e-10);
142 BOOST_CHECK_CLOSE(flxRef[1][i], flx[1][i], 1e-10);
143 BOOST_CHECK_CLOSE(flxRef[2][i], flx[2][i], 1e-10);
144 BOOST_CHECK_CLOSE(flxRef[3][i], flx[3][i], 1e-10);
145 BOOST_CHECK_CLOSE(flxRef[4][i], flx[4][i], 1e-10);
160 riemannSolver.SetParam(
"gamma",
161 [&gamma]() ->
NekDouble & {
return gamma; });
169 for (
size_t i = 0; i < spaceDim; ++i)
171 vecLocs[0][i] = 1 + i;
173 riemannSolver.SetAuxVec(
181 for (
size_t i = 0; i < spaceDim; ++i)
185 riemannSolver.SetVector(
190 size_t nFields = spaceDim + 2;
192 flx(nFields), flxRef(nFields);
193 for (
size_t i = 0; i < nFields; ++i)
223 NekDouble E = rhoe + 0.5 * (rhou * rhou + rhov * rhov + rhow * rhow) / rho;
224 fwd[nFields - 1][0] = E;
225 bwd[nFields - 1][0] = E;
230 flxRef[1][0] = rhov * rhou / rho;
231 flxRef[2][0] = rhov * rhov / rho +
p;
232 flxRef[3][0] = rhov * rhow / rho;
233 flxRef[nFields - 1][0] = (E +
p) * rhov / rho;
235 riemannSolver.Solve(spaceDim, fwd, bwd, flx);
238 BOOST_CHECK_CLOSE(flxRef[0][0], flx[0][0], 1e-10);
239 BOOST_CHECK_CLOSE(flxRef[1][0], flx[1][0], 1e-10);
240 BOOST_CHECK_CLOSE(flxRef[2][0], flx[2][0], 1e-10);
241 BOOST_CHECK_CLOSE(flxRef[3][0], flx[3][0], 1e-10);
242 BOOST_CHECK_CLOSE(flxRef[4][0], flx[4][0], 1e-10);
256 riemannSolver.SetParam(
"gamma",
257 [&gamma]() ->
NekDouble & {
return gamma; });
265 for (
size_t i = 0; i < spaceDim; ++i)
267 vecLocs[0][i] = 1 + i;
269 riemannSolver.SetAuxVec(
277 for (
size_t i = 0; i < spaceDim; ++i)
281 riemannSolver.SetVector(
286 size_t nFields = spaceDim + 2;
288 flx(nFields), flxRef(nFields);
289 for (
size_t i = 0; i < nFields; ++i)
319 NekDouble E = rhoe + 0.5 * (rhou * rhou + rhov * rhov + rhow * rhow) / rho;
320 fwd[nFields - 1][0] = E;
321 bwd[nFields - 1][0] = E;
326 flxRef[1][0] = rhow * rhou / rho;
327 flxRef[2][0] = rhow * rhov / rho;
328 flxRef[3][0] = rhow * rhow / rho +
p;
329 flxRef[nFields - 1][0] = (E +
p) * rhow / rho;
331 riemannSolver.Solve(spaceDim, fwd, bwd, flx);
334 BOOST_CHECK_CLOSE(flxRef[0][0], flx[0][0], 1e-10);
335 BOOST_CHECK_CLOSE(flxRef[1][0], flx[1][0], 1e-10);
336 BOOST_CHECK_CLOSE(flxRef[2][0], flx[2][0], 1e-10);
337 BOOST_CHECK_CLOSE(flxRef[3][0], flx[3][0], 1e-10);
338 BOOST_CHECK_CLOSE(flxRef[4][0], flx[4][0], 1e-10);
352 riemannSolver.SetParam(
"gamma",
353 [&gamma]() ->
NekDouble & {
return gamma; });
361 for (
size_t i = 0; i < spaceDim; ++i)
363 vecLocs[0][i] = 1 + i;
365 riemannSolver.SetAuxVec(
373 for (
size_t i = 0; i < spaceDim; ++i)
377 riemannSolver.SetVector(
382 size_t nFields = spaceDim + 2;
384 flx(nFields), flxRef(nFields);
385 for (
size_t i = 0; i < nFields; ++i)
396 for (
size_t i = 0; i < npts; ++i)
419 rhoe + 0.5 * (rhou * rhou + rhov * rhov + rhow * rhow) / rhoL;
421 rhoe + 0.5 * (rhou * rhou + rhov * rhov + rhow * rhow) / rhoR;
422 fwd[nFields - 1][i] = EL;
423 bwd[nFields - 1][i] = ER;
427 flxRef[0][i] = 0.87858599768171342;
428 flxRef[1][i] = 2.0449028304431223;
429 flxRef[2][i] = 1.8282946712594808;
430 flxRef[3][i] = 2.7424420068892208;
431 flxRef[nFields - 1][i] = 9.8154698039903128;
434 riemannSolver.Solve(spaceDim, fwd, bwd, flx);
437 for (
size_t i = 0; i < npts; ++i)
439 BOOST_CHECK_CLOSE(flxRef[0][i], flx[0][i], 1e-10);
440 BOOST_CHECK_CLOSE(flxRef[1][i], flx[1][i], 1e-10);
441 BOOST_CHECK_CLOSE(flxRef[2][i], flx[2][i], 1e-10);
442 BOOST_CHECK_CLOSE(flxRef[3][i], flx[3][i], 1e-10);
443 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.