solstice-solver

Solver library of the solstice app
git clone git://git.meso-star.com/solstice-solver.git
Log | Files | Refs | README | LICENSE

commit 87a16b4cdda7ea6e0f3c77043241e458b24ca843
parent 535c992dd19e23769ef3b1e76b62404907d71116
Author: Vincent Forest <vincent.forest@meso-star.com>
Date:   Thu, 16 Feb 2017 14:06:13 +0100

Test the ssol_mc_primitive API

Diffstat:
Msrc/test_ssol_solver1.c | 25++++++++++++++++++++++++-
1 file changed, 24 insertions(+), 1 deletion(-)

diff --git a/src/test_ssol_solver1.c b/src/test_ssol_solver1.c @@ -68,6 +68,7 @@ main(int argc, char** argv) struct ssol_estimator* estimator; struct ssol_mc_global mc_global; struct ssol_mc_receiver mc_rcv; + struct ssol_mc_primitive mc_prim; double dir[3]; double wavelengths[3] = { 1, 2, 3 }; double intensities[3] = { 1, 0.8, 1 }; @@ -77,7 +78,7 @@ main(int argc, char** argv) double transform1[12]; /* 3x4 column major matrix */ double transform2[12]; /* 3x4 column major matrix */ double dbl; - size_t count, fcount; + size_t i, count, fcount; FILE* tmp = NULL; double m, std; double a_m, a_std; @@ -365,6 +366,7 @@ main(int argc, char** argv) CHECK(ssol_atmosphere_create_uniform(dev, &atm), RES_OK); CHECK(ssol_atmosphere_set_uniform_absorption(atm, abs), RES_OK); CHECK(ssol_scene_attach_atmosphere(scene, atm), RES_OK); + CHECK(ssol_instance_set_receiver(target, SSOL_FRONT, 1), RES_OK); NCHECK(tmp = tmpfile(), 0); CHECK(ssol_solve(scene, rng, N__, tmp, &estimator), RES_OK); @@ -415,10 +417,31 @@ main(int argc, char** argv) + mc_rcv.reflectivity_loss.E + mc_rcv.cos_loss.E, 4 * DNI, 1e-8), 1); CHECK(eq_eps(mc_rcv.cos_loss.E / (4 * DNI), 1 - COS, 1e-8), 1); + + CHECK(ssol_mc_receiver_get_mc_primitives_count(NULL, NULL), RES_BAD_ARG); + CHECK(ssol_mc_receiver_get_mc_primitives_count(&mc_rcv, NULL), RES_BAD_ARG); + CHECK(ssol_mc_receiver_get_mc_primitives_count(NULL, &count), RES_BAD_ARG); + CHECK(ssol_mc_receiver_get_mc_primitives_count(&mc_rcv, &count), RES_OK); + NCHECK(count, 0); + + CHECK(ssol_mc_receiver_get_mc_primitive(NULL, count, NULL), RES_BAD_ARG); + CHECK(ssol_mc_receiver_get_mc_primitive(&mc_rcv, count, NULL), RES_BAD_ARG); + CHECK(ssol_mc_receiver_get_mc_primitive(NULL, 0, NULL), RES_BAD_ARG); + CHECK(ssol_mc_receiver_get_mc_primitive(&mc_rcv, 0, NULL), RES_BAD_ARG); + CHECK(ssol_mc_receiver_get_mc_primitive(NULL, count, &mc_prim), RES_BAD_ARG); + CHECK(ssol_mc_receiver_get_mc_primitive(&mc_rcv, count, &mc_prim), RES_BAD_ARG); + CHECK(ssol_mc_receiver_get_mc_primitive(NULL, 0, &mc_prim), RES_BAD_ARG); + dbl = 0; + FOR_EACH(i, 0, count) { + CHECK(ssol_mc_receiver_get_mc_primitive(&mc_rcv, i, &mc_prim), RES_OK); + dbl += mc_prim.integrated_irradiance.E; + } + CHECK(eq_eps(dbl, a_m, 1.e-6), 1); CHECK(ssol_estimator_ref_put(estimator), RES_OK); CHECK(ssol_scene_detach_instance(scene, heliostat2), RES_OK); CHECK(ssol_scene_attach_instance(scene, heliostat), RES_OK); + CHECK(ssol_instance_set_receiver(target, SSOL_FRONT, 0), RES_OK); /* Check a monochromatic sun */ desc.wavelengths = &mono;