32 #include <boost/test/auto_unit_test.hpp>
33 #include <boost/test/test_case_template.hpp>
34 #include <boost/test/floating_point_comparison.hpp>
35 #include <boost/test/unit_test.hpp>
38 #include "../RoeSolver.h"
39 #include "../RoeSolverSIMD.h"
44 namespace RiemannTests
57 riemannSolver.SetParam(
"gamma", [&gamma]()
66 for (
size_t i = 0; i < spaceDim; ++i)
68 vecLocs[0][i] = 1 + i;
70 riemannSolver.SetAuxVec(
"vecLocs", [&vecLocs]()
76 for (
size_t i = 0; i < spaceDim; ++i)
80 riemannSolver.SetVector(
"N", [&normals]()
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)
119 NekDouble E = rhoe + 0.5*(rhou*rhou + rhov*rhov + rhow*rhow) / rho;
120 fwd[nFields-1][i] = E;
121 bwd[nFields-1][i] = E;
126 flxRef[1][i] = rhou*rhou/rho +
p;
127 flxRef[2][i] = rhou*rhov/rho;
128 flxRef[3][i] = rhou*rhow/rho;
129 flxRef[nFields-1][i] = (E+
p)*rhou/rho;
132 riemannSolver.Solve(spaceDim, fwd, bwd, flx);
135 for (
size_t i = 0; i < npts; ++i)
137 BOOST_CHECK_CLOSE(flxRef[0][i], flx[0][i], 1e-10);
138 BOOST_CHECK_CLOSE(flxRef[1][i], flx[1][i], 1e-10);
139 BOOST_CHECK_CLOSE(flxRef[2][i], flx[2][i], 1e-10);
140 BOOST_CHECK_CLOSE(flxRef[3][i], flx[3][i], 1e-10);
141 BOOST_CHECK_CLOSE(flxRef[4][i], flx[4][i], 1e-10);
158 riemannSolver.SetParam(
"gamma", [&gamma]()
167 for (
size_t i = 0; i < spaceDim; ++i)
169 vecLocs[0][i] = 1 + i;
171 riemannSolver.SetAuxVec(
"vecLocs", [&vecLocs]()
177 for (
size_t i = 0; i < spaceDim; ++i)
181 riemannSolver.SetVector(
"N", [&normals]()
185 size_t nFields = spaceDim + 2;
187 flx(nFields), flxRef(nFields);
188 for (
size_t i = 0; i < nFields; ++i)
218 NekDouble E = rhoe + 0.5*(rhou*rhou + rhov*rhov + rhow*rhow) / rho;
219 fwd[nFields-1][0] = E;
220 bwd[nFields-1][0] = E;
225 flxRef[1][0] = rhov*rhou/rho;
226 flxRef[2][0] = rhov*rhov/rho +
p;
227 flxRef[3][0] = rhov*rhow/rho;
228 flxRef[nFields-1][0] = (E+
p)*rhov/rho;
230 riemannSolver.Solve(spaceDim, fwd, bwd, flx);
233 BOOST_CHECK_CLOSE(flxRef[0][0], flx[0][0], 1e-10);
234 BOOST_CHECK_CLOSE(flxRef[1][0], flx[1][0], 1e-10);
235 BOOST_CHECK_CLOSE(flxRef[2][0], flx[2][0], 1e-10);
236 BOOST_CHECK_CLOSE(flxRef[3][0], flx[3][0], 1e-10);
237 BOOST_CHECK_CLOSE(flxRef[4][0], flx[4][0], 1e-10);
252 riemannSolver.SetParam(
"gamma", [&gamma]()
261 for (
size_t i = 0; i < spaceDim; ++i)
263 vecLocs[0][i] = 1 + i;
265 riemannSolver.SetAuxVec(
"vecLocs", [&vecLocs]()
271 for (
size_t i = 0; i < spaceDim; ++i)
275 riemannSolver.SetVector(
"N", [&normals]()
279 size_t nFields = spaceDim + 2;
281 flx(nFields), flxRef(nFields);
282 for (
size_t i = 0; i < nFields; ++i)
312 NekDouble E = rhoe + 0.5*(rhou*rhou + rhov*rhov + rhow*rhow) / rho;
313 fwd[nFields-1][0] = E;
314 bwd[nFields-1][0] = E;
319 flxRef[1][0] = rhow*rhou/rho;
320 flxRef[2][0] = rhow*rhov/rho;
321 flxRef[3][0] = rhow*rhow/rho +
p;
322 flxRef[nFields-1][0] = (E+
p)*rhow/rho;
324 riemannSolver.Solve(spaceDim, fwd, bwd, flx);
327 BOOST_CHECK_CLOSE(flxRef[0][0], flx[0][0], 1e-10);
328 BOOST_CHECK_CLOSE(flxRef[1][0], flx[1][0], 1e-10);
329 BOOST_CHECK_CLOSE(flxRef[2][0], flx[2][0], 1e-10);
330 BOOST_CHECK_CLOSE(flxRef[3][0], flx[3][0], 1e-10);
331 BOOST_CHECK_CLOSE(flxRef[4][0], flx[4][0], 1e-10);
347 riemannSolver.SetParam(
"gamma", [&gamma]()
356 for (
size_t i = 0; i < spaceDim; ++i)
358 vecLocs[0][i] = 1 + i;
360 riemannSolver.SetAuxVec(
"vecLocs", [&vecLocs]()
366 for (
size_t i = 0; i < spaceDim; ++i)
370 riemannSolver.SetVector(
"N", [&normals]()
374 size_t nFields = spaceDim + 2;
376 flx(nFields), flxRef(nFields);
377 for (
size_t i = 0; i < nFields; ++i)
388 for (
size_t i = 0; i < npts; ++i)
410 NekDouble EL = rhoe + 0.5*(rhou*rhou + rhov*rhov + rhow*rhow) / rhoL;
411 NekDouble ER = rhoe + 0.5*(rhou*rhou + rhov*rhov + rhow*rhow) / rhoR;
412 fwd[nFields-1][i] = EL;
413 bwd[nFields-1][i] = ER;
417 flxRef[0][i] = 0.87858599768171342;
418 flxRef[1][i] = 2.0449028304431223;
419 flxRef[2][i] = 1.8282946712594808;
420 flxRef[3][i] = 2.7424420068892208;
421 flxRef[nFields-1][i] = 9.8154698039903128;
424 riemannSolver.Solve(spaceDim, fwd, bwd, flx);
427 for (
size_t i = 0; i < npts; ++i)
429 BOOST_CHECK_CLOSE(flxRef[0][i], flx[0][i], 1e-10);
430 BOOST_CHECK_CLOSE(flxRef[1][i], flx[1][i], 1e-10);
431 BOOST_CHECK_CLOSE(flxRef[2][i], flx[2][i], 1e-10);
432 BOOST_CHECK_CLOSE(flxRef[3][i], flx[3][i], 1e-10);
433 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.