stardis-solver

Solve coupled heat transfers
git clone git://git.meso-star.fr/stardis-solver.git
Log | Files | Refs | README | LICENSE

commit cb7d1e3f924e821fdd0a88da97df2fdd1f96336a
parent 1a6ee9136a174b87a847e8c77ae8604d8469ea74
Author: Vincent Forest <vincent.forest@meso-star.com>
Date:   Fri, 22 Jun 2018 11:29:16 +0200

Small upd of the tests

Make the tests verbose, print the #failures, and check that the
number of failures is small enough.

Diffstat:
Msrc/test_sdis_conducto_radiative.c | 6+++++-
Msrc/test_sdis_conducto_radiative_2d.c | 4++++
Msrc/test_sdis_flux.c | 6++++--
Msrc/test_sdis_solve_probe.c | 6++++--
Msrc/test_sdis_solve_probe2.c | 6+++---
Msrc/test_sdis_solve_probe2_2d.c | 6+++---
Msrc/test_sdis_solve_probe3.c | 6+++---
Msrc/test_sdis_solve_probe3_2d.c | 6+++---
Msrc/test_sdis_solve_probe_2d.c | 8+++++---
Msrc/test_sdis_solve_probe_boundary.c | 15+++++----------
Msrc/test_sdis_volumic_power.c | 9++++++---
Msrc/test_sdis_volumic_power3_2d.c | 16+++++++++-------
Msrc/test_sdis_volumic_power4_2d.c | 7++++---
13 files changed, 58 insertions(+), 43 deletions(-)

diff --git a/src/test_sdis_conducto_radiative.c b/src/test_sdis_conducto_radiative.c @@ -389,12 +389,13 @@ main(int argc, char** argv) double ref, u; size_t nreals = 0; size_t nfails = 0; + const size_t N = 10000; pos[0] = ssp_rng_uniform_double(rng, -0.9, 0.9); pos[1] = ssp_rng_uniform_double(rng, -0.9, 0.9); pos[2] = ssp_rng_uniform_double(rng, -0.9, 0.9); - CHK(sdis_solve_probe(scn, 10000, pos, INF, 1, -1, Tref, &estimator) == RES_OK); + CHK(sdis_solve_probe(scn, N, pos, INF, 1, -1, Tref, &estimator) == RES_OK); CHK(sdis_estimator_get_realisation_count(estimator, &nreals) == RES_OK); CHK(sdis_estimator_get_failure_count(estimator, &nfails) == RES_OK); CHK(sdis_estimator_get_temperature(estimator, &T) == RES_OK); @@ -403,7 +404,10 @@ main(int argc, char** argv) ref = u * Ts1 + (1-u) * Ts0; printf("Temperature at (%g, %g, %g) = %g ~ %g +/- %g\n", SPLIT3(pos), ref, T.E, T.SE); + printf("#failures = %lu/%lu\n", (unsigned long)nfails, (unsigned long)N); + CHK(nfails + nreals == N); + CHK(nfails < N/1000); CHK(eq_eps(T.E, ref, 2*T.SE) == 1); CHK(sdis_estimator_ref_put(estimator) == RES_OK); diff --git a/src/test_sdis_conducto_radiative_2d.c b/src/test_sdis_conducto_radiative_2d.c @@ -393,6 +393,7 @@ main(int argc, char** argv) double ref, u; size_t nreals = 0; size_t nfails = 0; + const size_t N = 10000; pos[0] = ssp_rng_uniform_double(rng, -0.9, 0.9); pos[1] = ssp_rng_uniform_double(rng, -0.9, 0.9); @@ -406,7 +407,10 @@ main(int argc, char** argv) ref = u * Ts1 + (1-u) * Ts0; printf("Temperature at (%g, %g) = %g ~ %g +/- %g\n", SPLIT2(pos), ref, T.E, T.SE); + printf("#failures = %lu/%lu\n", (unsigned long)nfails, (unsigned long)N); + CHK(nfails + nreals == N); + CHK(nfails < N/1000); CHK(eq_eps(T.E, ref, 3*T.SE) == 1); CHK(sdis_estimator_ref_put(estimator) == RES_OK); diff --git a/src/test_sdis_flux.c b/src/test_sdis_flux.c @@ -300,24 +300,26 @@ main(int argc, char** argv) CHK(sdis_solve_probe(box_scn, N, pos, INF, 1.0, 0, 0, &estimator) == RES_OK); CHK(sdis_estimator_get_realisation_count(estimator, &nreals) == RES_OK); CHK(sdis_estimator_get_failure_count(estimator, &nfails) == RES_OK); - CHK(nfails + nreals == N); CHK(sdis_estimator_get_temperature(estimator, &T) == RES_OK); CHK(sdis_estimator_ref_put(estimator) == RES_OK); printf("Temperature of the box at (%g %g %g) = %g ~ %g +/- %g\n", SPLIT3(pos), ref, T.E, T.SE); printf("#failures = %lu/%lu\n", (unsigned long)nfails, (unsigned long)N); + CHK(nfails + nreals == N); + CHK(nfails < N/1000); CHK(eq_eps(T.E, ref, T.SE*3)); /* Solve in 2D */ CHK(sdis_solve_probe(square_scn, N, pos, INF, 1.0, 0, 0, &estimator) == RES_OK); CHK(sdis_estimator_get_realisation_count(estimator, &nreals) == RES_OK); CHK(sdis_estimator_get_failure_count(estimator, &nfails) == RES_OK); - CHK(nfails + nreals == N); CHK(sdis_estimator_get_temperature(estimator, &T) == RES_OK); CHK(sdis_estimator_ref_put(estimator) == RES_OK); printf("Temperature of the square at (%g %g) = %g ~ %g +/- %g\n", SPLIT2(pos), ref, T.E, T.SE); printf("#failures = %lu/%lu\n", (unsigned long)nfails, (unsigned long)N); + CHK(nfails + nreals == N); + CHK(nfails < N/1000); CHK(eq_eps(T.E, ref, T.SE*3)); CHK(sdis_scene_ref_put(box_scn) == RES_OK); diff --git a/src/test_sdis_solve_probe.c b/src/test_sdis_solve_probe.c @@ -276,8 +276,6 @@ main(int argc, char** argv) CHK(sdis_estimator_get_failure_count(NULL, &nfails) == RES_BAD_ARG); CHK(sdis_estimator_get_failure_count(estimator, &nfails) == RES_OK); - CHK(nfails + nreals == N); - CHK(sdis_estimator_get_temperature(estimator, NULL) == RES_BAD_ARG); CHK(sdis_estimator_get_temperature(NULL, &T) == RES_BAD_ARG); CHK(sdis_estimator_get_temperature(estimator, &T) == RES_OK); @@ -285,6 +283,10 @@ main(int argc, char** argv) ref = 300; printf("Temperature at (%g, %g, %g) = %g ~ %g +/- %g\n", SPLIT3(pos), ref, T.E, T.SE); + printf("#failures = %lu/%lu\n", (unsigned long)nfails, (unsigned long)N); + + CHK(nfails + nreals == N); + CHK(nfails < N/1000); CHK(eq_eps(T.E, ref, T.SE)); CHK(sdis_estimator_ref_get(NULL) == RES_BAD_ARG); diff --git a/src/test_sdis_solve_probe2.c b/src/test_sdis_solve_probe2.c @@ -171,7 +171,7 @@ main(int argc, char** argv) CHK(mem_init_proxy_allocator(&allocator, &mem_default_allocator) == RES_OK); CHK(sdis_device_create - (NULL, &allocator, SDIS_NTHREADS_DEFAULT, 0, &dev) == RES_OK); + (NULL, &allocator, SDIS_NTHREADS_DEFAULT, 1, &dev) == RES_OK); /* Create the fluid medium */ fluid_shader.temperature = temperature_unknown; @@ -250,11 +250,11 @@ main(int argc, char** argv) ref = 350 * pos[2] + (1-pos[2]) * 300; printf("Temperature at (%g, %g, %g) = %g ~ %g +/- %g\n", SPLIT3(pos), ref, T.E, T.SE); - printf("#realisations: %lu; #failures: %lu\n", - (unsigned long)nreals, (unsigned long)nfails); + printf("#failures = %lu/%lu\n", (unsigned long)nfails, (unsigned long)N); /* Check the results */ CHK(nfails + nreals == N); + CHK(nfails < N/1000); CHK(eq_eps(T.E, ref, 3*T.SE)); /* Release data */ diff --git a/src/test_sdis_solve_probe2_2d.c b/src/test_sdis_solve_probe2_2d.c @@ -168,7 +168,7 @@ main(int argc, char** argv) CHK(mem_init_proxy_allocator(&allocator, &mem_default_allocator) == RES_OK); CHK(sdis_device_create - (NULL, &allocator, SDIS_NTHREADS_DEFAULT, 0, &dev) == RES_OK); + (NULL, &allocator, SDIS_NTHREADS_DEFAULT, 1, &dev) == RES_OK); /* Create the fluid medium */ fluid_shader.temperature = temperature_unknown; @@ -248,11 +248,11 @@ main(int argc, char** argv) ref = 350 * pos[0] + (1-pos[0]) * 300; printf("Temperature at (%g, %g) = %g ~ %g +/- %g\n", SPLIT2(pos), ref, T.E, T.SE); - printf("#realisations: %lu; #failures: %lu\n", - (unsigned long)nreals, (unsigned long)nfails); + printf("#failures = %lu/%lu\n", (unsigned long)nfails, (unsigned long)N); /* Check the results */ CHK(nfails + nreals == N); + CHK(nfails < N/1000); CHK(eq_eps(T.E, ref, T.SE*2)); /* Release data */ diff --git a/src/test_sdis_solve_probe3.c b/src/test_sdis_solve_probe3.c @@ -198,7 +198,7 @@ main(int argc, char** argv) CHK(mem_init_proxy_allocator(&allocator, &mem_default_allocator) == RES_OK); CHK(sdis_device_create - (NULL, &allocator, SDIS_NTHREADS_DEFAULT, 0, &dev) == RES_OK); + (NULL, &allocator, SDIS_NTHREADS_DEFAULT, 1, &dev) == RES_OK); /* Create the fluid medium */ fluid_shader.temperature = temperature_unknown; @@ -306,11 +306,11 @@ main(int argc, char** argv) ref = 350 * pos[2] + (1-pos[2]) * 300; printf("Temperature at (%g, %g, %g) = %g ~ %g +/- %g\n", SPLIT3(pos), ref, T.E, T.SE); - printf("#realisations: %lu; #failures: %lu\n", - (unsigned long)nreals, (unsigned long)nfails); + printf("#failures = %lu/%lu\n", (unsigned long)nfails, (unsigned long)N); /* Check the results */ CHK(nfails + nreals == N); + CHK(nfails < N/1000); CHK(eq_eps(T.E, ref, 2*T.SE)); /* Release data */ diff --git a/src/test_sdis_solve_probe3_2d.c b/src/test_sdis_solve_probe3_2d.c @@ -193,7 +193,7 @@ main(int argc, char** argv) CHK(mem_init_proxy_allocator(&allocator, &mem_default_allocator) == RES_OK); CHK(sdis_device_create - (NULL, &allocator, SDIS_NTHREADS_DEFAULT, 0, &dev) == RES_OK); + (NULL, &allocator, SDIS_NTHREADS_DEFAULT, 1, &dev) == RES_OK); /* Create the fluid medium */ fluid_shader.temperature = temperature_unknown; @@ -299,11 +299,11 @@ main(int argc, char** argv) ref = 350 * pos[0] + (1-pos[0]) * 300; printf("Temperature at (%g, %g) = %g ~ %g +/- %g\n", SPLIT2(pos), ref, T.E, T.SE); - printf("#realisations: %lu; #failures: %lu\n", - (unsigned long)nreals, (unsigned long)nfails); + printf("#failures = %lu/%lu\n", (unsigned long)nfails, (unsigned long)N); /* Check the results */ CHK(nfails + nreals == N); + CHK(nfails < N/1000); CHK(eq_eps(T.E, ref, 3*T.SE)); /* Release data */ diff --git a/src/test_sdis_solve_probe_2d.c b/src/test_sdis_solve_probe_2d.c @@ -151,7 +151,7 @@ main(int argc, char** argv) CHK(mem_init_proxy_allocator(&allocator, &mem_default_allocator) == RES_OK); CHK(sdis_device_create - (NULL, &allocator, SDIS_NTHREADS_DEFAULT, 0, &dev) == RES_OK); + (NULL, &allocator, SDIS_NTHREADS_DEFAULT, 1, &dev) == RES_OK); /* Create the fluid medium */ fluid_shader.temperature = fluid_get_temperature; @@ -193,13 +193,15 @@ main(int argc, char** argv) CHK(sdis_estimator_get_realisation_count(estimator, &nreals) == RES_OK); CHK(sdis_estimator_get_failure_count(estimator, &nfails) == RES_OK); - CHK(nfails + nreals == N); - CHK(sdis_estimator_get_temperature(estimator, &T) == RES_OK); ref = 300; printf("Temperature at (%g, %g) = %g ~ %g +/- %g\n", SPLIT2(pos), ref, T.E, T.SE); + printf("#failures = %lu/%lu\n", (unsigned long)nfails, (unsigned long)N); + + CHK(nfails + nreals == N); + CHK(nfails < N/1000); CHK(eq_eps(T.E, ref, T.SE)); CHK(sdis_estimator_ref_put(estimator) == RES_OK); diff --git a/src/test_sdis_solve_probe_boundary.c b/src/test_sdis_solve_probe_boundary.c @@ -229,7 +229,7 @@ main(int argc, char** argv) CHK(mem_init_proxy_allocator(&allocator, &mem_default_allocator) == RES_OK); CHK(sdis_device_create - (NULL, &allocator, SDIS_NTHREADS_DEFAULT, 0, &dev) == RES_OK); + (NULL, &allocator, SDIS_NTHREADS_DEFAULT, 1, &dev) == RES_OK); /* Create the fluid medium */ fluid_shader.temperature = fluid_get_temperature; @@ -329,17 +329,14 @@ main(int argc, char** argv) CHK(sdis_estimator_get_realisation_count(estimator, &nreals) == RES_OK); CHK(sdis_estimator_get_failure_count(estimator, &nfails) == RES_OK); - CHK(nfails + nreals == N); - CHK(sdis_estimator_get_temperature(estimator, &T) == RES_OK); CHK(sdis_estimator_ref_put(estimator) == RES_OK); - CHK(sdis_scene_get_boundary_position(box_scn, iprim, uv, pos) == RES_OK); - - printf("Boundary temperature of the box at (%g %g %g) = %g ~ %g +/- %g\n", SPLIT3(pos), ref, T.E, T.SE); printf("#failures = %lu/%lu\n", (unsigned long)nfails, (unsigned long)N); + CHK(nfails + nreals == N); + CHK(nfails < N/1000); CHK(eq_eps(T.E, ref, 3*T.SE)); uv[0] = 0.5; @@ -347,16 +344,14 @@ main(int argc, char** argv) CHK(SOLVE(square_scn, N, iprim, uv, INF, F, 1.0, 0, 0, &estimator) == RES_OK); CHK(sdis_estimator_get_realisation_count(estimator, &nreals) == RES_OK); CHK(sdis_estimator_get_failure_count(estimator, &nfails) == RES_OK); - CHK(nfails + nreals == N); - CHK(sdis_estimator_get_temperature(estimator, &T) == RES_OK); CHK(sdis_estimator_ref_put(estimator) == RES_OK); - CHK(sdis_scene_get_boundary_position(square_scn, iprim, uv, pos) == RES_OK); - printf("Boundary temperature of the square at (%g %g) = %g ~ %g +/- %g\n", SPLIT2(pos), ref, T.E, T.SE); printf("#failures = %lu/%lu\n", (unsigned long)nfails, (unsigned long)N); + CHK(nfails + nreals == N); + CHK(nfails < N/1000); CHK(eq_eps(T.E, ref, 3*T.SE)); #undef SOLVE diff --git a/src/test_sdis_volumic_power.c b/src/test_sdis_volumic_power.c @@ -239,7 +239,7 @@ main(int argc, char** argv) CHK(mem_init_proxy_allocator(&allocator, &mem_default_allocator) == RES_OK); CHK(sdis_device_create - (NULL, &allocator, SDIS_NTHREADS_DEFAULT, 0, &dev) == RES_OK); + (NULL, &allocator, SDIS_NTHREADS_DEFAULT, 1, &dev) == RES_OK); fluid_shader.temperature = fluid_get_temperature; CHK(sdis_fluid_create(dev, &fluid_shader, NULL, &fluid) == RES_OK); @@ -338,19 +338,22 @@ main(int argc, char** argv) printf("Temperature of the box at (%g %g %g) = %g ~ %g +/- %g\n", SPLIT3(pos), ref, T.E, T.SE); printf("#failures = %lu/%lu\n", (unsigned long)nfails, (unsigned long)N); + CHK(nfails + nreals == N); + CHK(nfails < N/1000); CHK(eq_eps(T.E, ref, 3*T.SE)); /* Solve in 2D */ CHK(sdis_solve_probe(square_scn, N, pos, INF, 1.0, 0, 0, &estimator) == RES_OK); CHK(sdis_estimator_get_realisation_count(estimator, &nreals) == RES_OK); CHK(sdis_estimator_get_failure_count(estimator, &nfails) == RES_OK); - CHK(nfails + nreals == N); CHK(sdis_estimator_get_temperature(estimator, &T) == RES_OK); CHK(sdis_estimator_ref_put(estimator) == RES_OK); printf("Temperature of the square at (%g %g) = %g ~ %g +/- %g\n", SPLIT2(pos), ref, T.E, T.SE); printf("#failures = %lu/%lu\n", (unsigned long)nfails, (unsigned long)N); - CHK(eq_eps(T.E, ref, T.SE*3.0)); + CHK(nfails + nreals == N); + CHK(nfails < N/1000); + CHK(eq_eps(T.E, ref, 3*T.SE)); CHK(sdis_scene_ref_put(box_scn) == RES_OK); CHK(sdis_scene_ref_put(square_scn) == RES_OK); diff --git a/src/test_sdis_volumic_power3_2d.c b/src/test_sdis_volumic_power3_2d.c @@ -47,12 +47,6 @@ #define Tsolid_solid1 UNKNOWN_TEMPERATURE /*Ta*/ #define Tsolid_solid2 UNKNOWN_TEMPERATURE /*Tb*/ -/* 1D reinjection scheme: - * - Legacy deltas, 400K realisations: 924.093 ~ 928.405 +/- 0.847232 - * - Deltas / 2, 400K realisations: 924.093 ~ 926.632 +/- 0.844205 - * - * 2D reinjection scheme: - * - Legacy deltas, 400K realisations: 924.093 ~ 928.013 +/- 0.847624 */ #define PROBE_POS 1.8 /* @@ -270,6 +264,8 @@ main(int argc, char** argv) struct sdis_mc T = SDIS_MC_NULL; double Tref; double pos[2]; + size_t nfails; + size_t nreals; (void)argc, (void)argv; CHK(mem_init_proxy_allocator(&allocator, &mem_default_allocator) == RES_OK); @@ -447,11 +443,17 @@ main(int argc, char** argv) CHK(sdis_solve_probe(scn, N, pos, INF, 1.f, -1, 0, &estimator) == RES_OK); CHK(sdis_estimator_get_temperature(estimator, &T) == RES_OK); + CHK(sdis_estimator_get_failure_count(estimator, &nfails) == RES_OK); + CHK(sdis_estimator_get_realisation_count(estimator, &nreals) == RES_OK); printf("Temperature at (%g %g) = %g ~ %g +/- %g [%g, %g]\n", SPLIT2(pos), Tref, T.E, T.SE, T.E-3*T.SE, T.E+3*T.SE); - CHK(eq_eps(T.E, Tref, T.SE*3)); + printf("#failures = %lu/%lu\n", (unsigned long)nfails, (unsigned long)N); CHK(sdis_estimator_ref_put(estimator) == RES_OK); + CHK(nfails + nreals == N); + CHK(nfails < N/1000); + CHK(eq_eps(T.E, Tref, T.SE*3)); + CHK(sdis_scene_ref_put(scn) == RES_OK); CHK(sdis_device_ref_put(dev) == RES_OK); diff --git a/src/test_sdis_volumic_power4_2d.c b/src/test_sdis_volumic_power4_2d.c @@ -354,10 +354,11 @@ main(int argc, char** argv) CHK(sdis_estimator_get_failure_count(estimator, &nfails) == RES_OK); printf("Temperature at (%g %g) = %g ~ %g +/- %g [%g %g]\n", SPLIT2(pos), Tref, T.E, T.SE, T.E-3*T.SE, T.E+3*T.SE); - printf("#realisations: %lu; #failures: %lu\n", - (unsigned long)nreals, (unsigned long)nfails); - CHK(eq_eps(T.E, Tref, T.SE*3)); + printf("#failures = %lu/%lu\n", (unsigned long)nfails, (unsigned long)N); CHK(sdis_estimator_ref_put(estimator) == RES_OK); + CHK(nfails + nreals == N); + CHK(nfails < N/1000); + CHK(eq_eps(T.E, Tref, T.SE*3)); CHK(sdis_scene_ref_put(scn) == RES_OK); CHK(sdis_device_ref_put(dev) == RES_OK);