commit e9927078ff834d704b11919de1b0949a14919328
parent e08fda6030de1bc1e65d0fcff3dbad679afda121
Author: Christophe Coustet <christophe.coustet@meso-star.com>
Date: Mon, 3 Oct 2016 14:22:01 +0200
Add a check in test solver #4
Receiver's new filtering allows 2 superposed receivers: we test this feature
there.
Diffstat:
1 file changed, 24 insertions(+), 13 deletions(-)
diff --git a/src/test_ssol_solver4.c b/src/test_ssol_solver4.c
@@ -59,7 +59,8 @@ main(int argc, char** argv)
struct ssol_object* m_object;
struct ssol_object* t_object;
struct ssol_instance* heliostat;
- struct ssol_instance* target;
+ struct ssol_instance* target1;
+ struct ssol_instance* target2;
struct ssol_sun* sun;
struct ssol_spectrum* spectrum;
double dir[3];
@@ -67,7 +68,7 @@ main(int argc, char** argv)
double intensities[3] = { 1, 0.8, 1 };
double transform[12]; /* 3x4 column major matrix */
FILE* tmp;
- double m, std;
+ double m1, std1, m2, std2;
(void) argc, (void) argv;
#define FOCAL 10
@@ -128,28 +129,38 @@ main(int argc, char** argv)
CHECK(ssol_scene_attach_instance(scene, heliostat), RES_OK);
CHECK(ssol_object_create(dev, square, v_mtl, v_mtl, &t_object), RES_OK);
- CHECK(ssol_object_instantiate(t_object, &target), RES_OK);
- CHECK(ssol_instance_set_transform(target, transform), RES_OK);
- CHECK(ssol_instance_set_receiver(target, "cible", NULL), RES_OK);
- CHECK(ssol_instance_set_target_mask(target, 0x1, 0), RES_OK);
- CHECK(ssol_instance_dont_sample(target, 1), RES_OK);
- CHECK(ssol_scene_attach_instance(scene, target), RES_OK);
+ CHECK(ssol_object_instantiate(t_object, &target1), RES_OK);
+ CHECK(ssol_instance_set_transform(target1, transform), RES_OK);
+ CHECK(ssol_instance_set_receiver(target1, "cible1", NULL), RES_OK);
+ CHECK(ssol_instance_set_target_mask(target1, 0x1, 0), RES_OK);
+ CHECK(ssol_instance_dont_sample(target1, 1), RES_OK);
+ CHECK(ssol_scene_attach_instance(scene, target1), RES_OK);
+ CHECK(ssol_object_instantiate(t_object, &target2), RES_OK);
+ CHECK(ssol_instance_set_transform(target2, transform), RES_OK);
+ CHECK(ssol_instance_set_receiver(target2, "cible2", NULL), RES_OK);
+ CHECK(ssol_instance_set_target_mask(target2, 0x1, 0), RES_OK);
+ CHECK(ssol_instance_dont_sample(target2, 1), RES_OK);
+ CHECK(ssol_scene_attach_instance(scene, target2), RES_OK);
CHECK(ssol_solve(scene, rng, 20, stdout), RES_OK);
tmp = tmpfile();
#define N 10000
CHECK(ssol_solve(scene, rng, N, tmp), RES_OK);
- CHECK(pp_sum(tmp, "cible", N, &m, &std), RES_OK);
- logger_print(&logger, LOG_OUTPUT, "\nP = %g +/- %g\n", m, std);
+ CHECK(pp_sum(tmp, "cible1", N, &m1, &std1), RES_OK);
+ CHECK(pp_sum(tmp, "cible2", N, &m2, &std2), RES_OK);
+ logger_print(&logger, LOG_OUTPUT, "\nP = %g +/- %g\n", m1, std1);
#define DNI_cos (1000 * cos(0))
- CHECK(eq_eps(m, 400 * DNI_cos, 400 * DNI_cos * 1e-4), 1);
- CHECK(eq_eps(std, 0, 0.1), 1);
+ CHECK(eq_eps(m1, 400 * DNI_cos, 400 * DNI_cos * 1e-4), 1);
+ CHECK(eq_eps(std1, 0, 0.1), 1);
+ CHECK(m1, m2);
+ CHECK(std1, std2);
/* free data */
CHECK(ssol_instance_ref_put(heliostat), RES_OK);
- CHECK(ssol_instance_ref_put(target), RES_OK);
+ CHECK(ssol_instance_ref_put(target1), RES_OK);
+ CHECK(ssol_instance_ref_put(target2), RES_OK);
CHECK(ssol_object_ref_put(m_object), RES_OK);
CHECK(ssol_object_ref_put(t_object), RES_OK);
CHECK(ssol_shape_ref_put(square), RES_OK);