commit 91d57b90201c11857ecf4bcae3d0abb8ed2f7bf9
parent 4b1776d27045791c8ebb50170c6f5a7ba02ad4cb
Author: Vincent Forest <vincent.forest@meso-star.com>
Date: Tue, 4 Jun 2019 09:19:54 +0200
Clean up the tests
Replace the macros PRINT_GLOBAL and PRINT_RCV by functions
Diffstat:
9 files changed, 70 insertions(+), 64 deletions(-)
diff --git a/src/test_ssol_solver1.c b/src/test_ssol_solver1.c
@@ -325,7 +325,7 @@ main(int argc, char** argv)
std = dbl;
/* Target was sampled but shadowed by secondary */
CHK(ssol_estimator_get_mc_global(estimator, &mc_global) == RES_OK);
- PRINT_GLOBAL(mc_global);
+ print_global(&mc_global);
CHK(eq_eps(mc_global.shadowed.E, m, 2 * dbl) == 1);
CHK(eq_eps(mc_global.missing.E, 2*m, 2*mc_global.missing.SE) == 1);
CHK(GET_MC_RCV(NULL, NULL, SSOL_BACK, NULL) == RES_BAD_ARG);
@@ -360,7 +360,7 @@ main(int argc, char** argv)
m = 4 * DNI_cos;
std = 0;
CHK(ssol_estimator_get_mc_global(estimator, &mc_global) == RES_OK);
- PRINT_GLOBAL(mc_global);
+ print_global(&mc_global);
CHK(eq_eps(mc_global.shadowed.E, 0, 1e-4) == 1);
CHK(eq_eps(mc_global.missing.E, m, 1e-4) == 1);
CHK(eq_eps(mc_global.cos_factor.E, COS, 1e-4) == 1);
@@ -386,7 +386,7 @@ main(int argc, char** argv)
CHK(ssol_scene_detach_atmosphere(scene, atm) == RES_OK);
CHK(ssol_atmosphere_ref_put(atm) == RES_OK);
CHK(ssol_estimator_get_mc_global(estimator, &mc_global) == RES_OK);
- PRINT_GLOBAL(mc_global);
+ print_global(&mc_global);
CHK(eq_eps(mc_global.shadowed.E, 0, 1e-4) == 1);
CHK(eq_eps(mc_global.missing.E, m, 1e-4) == 1);
CHK(eq_eps(mc_global.cos_factor.E, COS, 1e-4) == 1);
@@ -429,7 +429,7 @@ main(int argc, char** argv)
a_m = REFLECTIVITY * 4 * K * DNI_cos;
a_std = 0;
CHK(ssol_estimator_get_mc_global(estimator, &mc_global) == RES_OK);
- PRINT_GLOBAL(mc_global);
+ print_global(&mc_global);
CHK(eq_eps(mc_global.shadowed.E, 0, 1e-4) == 1);
CHK(eq_eps(
mc_global.missing.E + mc_global.shadowed.E + mc_global.absorbed_by_receivers.E
@@ -437,7 +437,7 @@ main(int argc, char** argv)
m, 1e-4));
CHK(eq_eps(mc_global.cos_factor.E, COS, 1e-4) == 1);
CHK(GET_MC_RCV(estimator, target, SSOL_FRONT, &mc_rcv) == RES_OK);
- PRINT_RCV(mc_rcv);
+ print_rcv(&mc_rcv);
CHK(ssol_estimator_get_sampled_count(estimator, &scount) == RES_OK);
CHK(ssol_estimator_get_mc_sampled(estimator, heliostat, &sampled) == RES_BAD_ARG);
CHK(ssol_estimator_get_mc_sampled(estimator, heliostat2, &sampled) == RES_OK);
@@ -515,14 +515,14 @@ main(int argc, char** argv)
m = 4 * K2 * DNI_cos;
std = 0;
CHK(ssol_estimator_get_mc_global(estimator, &mc_global) == RES_OK);
- PRINT_GLOBAL(mc_global);
+ print_global(&mc_global);
CHK(eq_eps(mc_global.shadowed.E, 0, 1e-4) == 1);
CHK(eq_eps(mc_global.missing.E, m, 1e-4) == 1);
CHK(eq_eps(mc_global.cos_factor.E, COS, 1e-4) == 1);
CHK(GET_MC_RCV(estimator, target, SSOL_FRONT, &mc_rcv) == RES_OK);
printf("Ir(target) = %g +/- %g\n",
mc_rcv.incoming_flux.E, mc_rcv.incoming_flux.SE);
- PRINT_RCV(mc_rcv);
+ print_rcv(&mc_rcv);
CHK(eq_eps(mc_rcv.incoming_flux.E, m, 1e-4) == 1);
CHK(eq_eps(mc_rcv.incoming_flux.SE, std, 1e-4) == 1);
diff --git a/src/test_ssol_solver10.c b/src/test_ssol_solver10.c
@@ -135,8 +135,8 @@ main(int argc, char** argv)
CHK(ssol_estimator_get_mc_global(estimator, &mc_global1) == RES_OK);
CHK(GET_MC_RCV(estimator, geom1, SSOL_FRONT, &mc_rcv1) == RES_OK);
- PRINT_GLOBAL(mc_global1);
- PRINT_RCV(mc_rcv1);
+ print_global(&mc_global1);
+ print_rcv(&mc_rcv1);
CHK(mc_global1.cos_factor.E == 1);
CHK(mc_global1.cos_factor.SE == 0);
CHK(mc_global1.absorbed_by_receivers.E == DNI_S);
@@ -175,8 +175,8 @@ main(int argc, char** argv)
CHK(ssol_estimator_get_mc_global(estimator, &mc_global2) == RES_OK);
CHK(GET_MC_RCV(estimator, geom2, SSOL_FRONT, &mc_rcv2) == RES_OK);
- PRINT_GLOBAL(mc_global2);
- PRINT_RCV(mc_rcv2);
+ print_global(&mc_global2);
+ print_rcv(&mc_rcv2);
CHK(eq_eps(mc_global2.absorbed_by_receivers.E, DNI_S, 3 * mc_global2.absorbed_by_receivers.SE) == 1);
/* Free data */
diff --git a/src/test_ssol_solver11.c b/src/test_ssol_solver11.c
@@ -135,8 +135,8 @@ main(int argc, char** argv)
CHK(ssol_estimator_get_mc_global(estimator, &mc_global1) == RES_OK);
CHK(GET_MC_RCV(estimator, geom1, SSOL_FRONT, &mc_rcv1) == RES_OK);
- PRINT_GLOBAL(mc_global1);
- PRINT_RCV(mc_rcv1);
+ print_global(&mc_global1);
+ print_rcv(&mc_rcv1);
CHK(mc_global1.cos_factor.E == 1);
CHK(mc_global1.cos_factor.SE == 0);
CHK(mc_global1.absorbed_by_receivers.E == DNI_S);
@@ -175,8 +175,8 @@ main(int argc, char** argv)
CHK(ssol_estimator_get_mc_global(estimator, &mc_global2) == RES_OK);
CHK(GET_MC_RCV(estimator, geom2, SSOL_FRONT, &mc_rcv2) == RES_OK);
- PRINT_GLOBAL(mc_global2);
- PRINT_RCV(mc_rcv2);
+ print_global(&mc_global2);
+ print_rcv(&mc_rcv2);
CHK(eq_eps(mc_global2.absorbed_by_receivers.E, DNI_S, 3 * mc_global2.absorbed_by_receivers.SE) == 1);
/* Free data */
diff --git a/src/test_ssol_solver12.c b/src/test_ssol_solver12.c
@@ -135,8 +135,8 @@ main(int argc, char** argv)
CHK(ssol_estimator_get_mc_global(estimator, &mc_global1) == RES_OK);
CHK(GET_MC_RCV(estimator, geom1, SSOL_FRONT, &mc_rcv1) == RES_OK);
- PRINT_GLOBAL(mc_global1);
- PRINT_RCV(mc_rcv1);
+ print_global(&mc_global1);
+ print_rcv(&mc_rcv1);
CHK(mc_global1.cos_factor.E == 1);
CHK(mc_global1.cos_factor.SE == 0);
CHK(mc_global1.absorbed_by_receivers.E == DNI_S);
@@ -175,8 +175,8 @@ main(int argc, char** argv)
CHK(ssol_estimator_get_mc_global(estimator, &mc_global2) == RES_OK);
CHK(GET_MC_RCV(estimator, geom2, SSOL_FRONT, &mc_rcv2) == RES_OK);
- PRINT_GLOBAL(mc_global2);
- PRINT_RCV(mc_rcv2);
+ print_global(&mc_global2);
+ print_rcv(&mc_rcv2);
CHK(eq_eps(mc_global2.absorbed_by_receivers.E, DNI_S, 3 * mc_global2.absorbed_by_receivers.SE) == 1);
/* Free data */
diff --git a/src/test_ssol_solver4.c b/src/test_ssol_solver4.c
@@ -154,7 +154,7 @@ main(int argc, char** argv)
m2 = m1;
std2 = std1;
CHK(ssol_estimator_get_mc_global(estimator, &mc_global) == RES_OK);
- PRINT_GLOBAL(mc_global);
+ print_global(&mc_global);
CHK(eq_eps(mc_global.shadowed.E, 0, 1e-4) == 1);
CHK(eq_eps(mc_global.missing.E, 400 * DNI_cos, 1e-2) == 1); /* virtual => 100 % missing */
CHK(GET_MC_RCV(estimator, target1, SSOL_FRONT, &mc_rcv) == RES_OK);
diff --git a/src/test_ssol_solver6.c b/src/test_ssol_solver6.c
@@ -184,7 +184,7 @@ main(int argc, char** argv)
CHK(ssol_estimator_get_realisation_count(estimator, &count) == RES_OK);
CHK(count == N__);
CHK(ssol_estimator_get_mc_global(estimator, &mc_global) == RES_OK);
- PRINT_GLOBAL(mc_global);
+ print_global(&mc_global);
CHK(eq_eps(mc_global.shadowed.E, 100000, 2 * 100000/sqrt(N__)) == 1);
CHK(eq_eps(mc_global.missing.E, 0, 0) == 1);
diff --git a/src/test_ssol_solver7.c b/src/test_ssol_solver7.c
@@ -196,7 +196,7 @@ main(int argc, char** argv)
CHK(ssol_estimator_get_sampled_area(estimator, &area) == RES_OK);
printf("Total = %g\n", area * DNI_cos);
CHK(eq_eps(area * DNI_cos, TOTAL, TOTAL * 1e-4) == 1);
- PRINT_GLOBAL(mc_global);
+ print_global(&mc_global);
CHK(GET_MC_RCV(estimator, target, SSOL_FRONT, &mc_rcv) == RES_OK);
printf("Abs(target1) = %g +/- %g\n",
diff --git a/src/test_ssol_solver9.c b/src/test_ssol_solver9.c
@@ -141,7 +141,7 @@ main(int argc, char** argv)
#define DNI_TGT_S (DNI * TGT_X * TGT_Y)
#define DNI_S (DNI * SZ * SZ)
CHK(ssol_estimator_get_mc_global(estimator, &mc_global) == RES_OK);
- PRINT_GLOBAL(mc_global);
+ print_global(&mc_global);
CHK(eq_eps(mc_global.cos_factor.E, 1./3., 3 * mc_global.cos_factor.SE));
CHK(eq_eps(mc_global.shadowed.E, DNI_S, 3 * mc_global.shadowed.SE));
CHK(eq_eps(mc_global.missing.E, MMAX(DNI_S, DNI_TGT_S),
diff --git a/src/test_ssol_utils.h b/src/test_ssol_utils.h
@@ -30,47 +30,53 @@ check_memory_allocator(struct mem_allocator* allocator)
}
}
-#define PRINT_GLOBAL(Mc) { \
- printf("Shadows = %g +/- %g; ", (Mc).shadowed.E, (Mc).shadowed.SE); \
- printf("Missing = %g +/- %g; ", (Mc).missing.E, (Mc).missing.SE); \
- printf("Receivers = %g +/- %g; ", \
- (Mc).absorbed_by_receivers.E, (Mc).absorbed_by_receivers.SE); \
- printf("Atmosphere = %g +/- %g; ", \
- (Mc).extinguished_by_atmosphere.E, (Mc).extinguished_by_atmosphere.SE); \
- printf("Other absorbed = %g +/- %g; ", \
- (Mc).other_absorbed.E, (Mc).other_absorbed.SE); \
- printf("Cos = %g +/- %g\n", (Mc).cos_factor.E, (Mc).cos_factor.SE); \
-} (void)0
+static INLINE void
+print_global(const struct ssol_mc_global* mc)
+{
+ ASSERT(mc);
+ printf("Shadows = %g +/- %g; ", mc->shadowed.E, mc->shadowed.SE);
+ printf("Missing = %g +/- %g; ", mc->missing.E, mc->missing.SE);
+ printf("Receivers = %g +/- %g; ",
+ mc->absorbed_by_receivers.E, mc->absorbed_by_receivers.SE);
+ printf("Atmosphere = %g +/- %g; ",
+ mc->extinguished_by_atmosphere.E, mc->extinguished_by_atmosphere.SE);
+ printf("Other absorbed = %g +/- %g; ",
+ mc->other_absorbed.E, mc->other_absorbed.SE);
+ printf("Cos = %g +/- %g\n", mc->cos_factor.E, mc->cos_factor.SE);
+}
-#define PRINT_RCV(Rcv) { \
- printf("\tIncoming flux(target) = %g +/- %g \n", \
- (Rcv).incoming_flux.E, (Rcv).incoming_flux.SE); \
- printf("\tIncoming flux wo Atmosphere(target) = %g +/- %g (%.2g %%)\n", \
- (Rcv).incoming_if_no_atm_loss.E, (Rcv).incoming_if_no_atm_loss.SE, \
- 100 * (Rcv).incoming_if_no_atm_loss.E / (Rcv).incoming_flux.E); \
- printf("\tIncoming flux wo Field Loss(target) = %g +/- %g (%.2g %%)\n", \
- (Rcv).incoming_if_no_field_loss.E, (Rcv).incoming_if_no_field_loss.SE, \
- 100 * (Rcv).incoming_if_no_field_loss.E / (Rcv).incoming_flux.E); \
- printf("\tAtmospheric Loss on Incoming(target) = %g +/- %g (%.2g %%)\n", \
- (Rcv).incoming_lost_in_atmosphere.E, (Rcv).incoming_lost_in_atmosphere.SE, \
- 100 * (Rcv).incoming_lost_in_atmosphere.E / (Rcv).incoming_flux.E); \
- printf("\tOptical Field Loss(target) on Incoming = %g +/- %g (%.2g %%)\n", \
- (Rcv).incoming_lost_in_field.E, (Rcv).incoming_lost_in_field.SE, \
- 100 * (Rcv).incoming_lost_in_field.E / (Rcv).incoming_flux.E); \
- printf("\tAbsorbed flux(target) = %g +/- %g \n", \
- (Rcv).absorbed_flux.E, (Rcv).absorbed_flux.SE); \
- printf("\tAbsorbed flux wo Atmosphere(target) = %g +/- %g (%.2g %%)\n", \
- (Rcv).absorbed_if_no_atm_loss.E, (Rcv).absorbed_if_no_atm_loss.SE, \
- 100 * (Rcv).absorbed_if_no_atm_loss.E / (Rcv).absorbed_flux.E); \
- printf("\tAbsorbed flux wo Field Loss(target) = %g +/- %g (%.2g %%)\n", \
- (Rcv).absorbed_if_no_field_loss.E, (Rcv).absorbed_if_no_field_loss.SE, \
- 100 * (Rcv).absorbed_if_no_field_loss.E / (Rcv).absorbed_flux.E); \
- printf("\tAtmospheric Loss(target) on Absorbed = %g +/- %g (%.2g %%)\n", \
- (Rcv).absorbed_lost_in_atmosphere.E, (Rcv).absorbed_lost_in_atmosphere.SE, \
- 100 * (Rcv).absorbed_lost_in_atmosphere.E / (Rcv).absorbed_flux.E); \
- printf("\tOptical Field Loss(target) on Absorbed = %g +/- %g (%.2g %%)\n", \
- (Rcv).absorbed_lost_in_field.E, (Rcv).absorbed_lost_in_field.SE, \
- 100 * (Rcv).absorbed_lost_in_field.E / (Rcv).absorbed_flux.E); \
-} (void)0
+static INLINE void
+print_rcv(const struct ssol_mc_receiver* rcv)
+{
+ ASSERT(rcv);
+ printf("\tIncoming flux(target) = %g +/- %g \n",
+ rcv->incoming_flux.E, rcv->incoming_flux.SE);
+ printf("\tIncoming flux wo Atmosphere(target) = %g +/- %g (%.2g %%)\n",
+ rcv->incoming_if_no_atm_loss.E, rcv->incoming_if_no_atm_loss.SE,
+ 100 * rcv->incoming_if_no_atm_loss.E / rcv->incoming_flux.E);
+ printf("\tIncoming flux wo Field Loss(target) = %g +/- %g (%.2g %%)\n",
+ rcv->incoming_if_no_field_loss.E, rcv->incoming_if_no_field_loss.SE,
+ 100 * rcv->incoming_if_no_field_loss.E / rcv->incoming_flux.E);
+ printf("\tAtmospheric Loss on Incoming(target) = %g +/- %g (%.2g %%)\n",
+ rcv->incoming_lost_in_atmosphere.E, rcv->incoming_lost_in_atmosphere.SE,
+ 100 * rcv->incoming_lost_in_atmosphere.E / rcv->incoming_flux.E);
+ printf("\tOptical Field Loss(target) on Incoming = %g +/- %g (%.2g %%)\n",
+ rcv->incoming_lost_in_field.E, rcv->incoming_lost_in_field.SE,
+ 100 * rcv->incoming_lost_in_field.E / rcv->incoming_flux.E);
+ printf("\tAbsorbed flux(target) = %g +/- %g \n",
+ rcv->absorbed_flux.E, rcv->absorbed_flux.SE);
+ printf("\tAbsorbed flux wo Atmosphere(target) = %g +/- %g (%.2g %%)\n",
+ rcv->absorbed_if_no_atm_loss.E, rcv->absorbed_if_no_atm_loss.SE,
+ 100 * rcv->absorbed_if_no_atm_loss.E / rcv->absorbed_flux.E);
+ printf("\tAbsorbed flux wo Field Loss(target) = %g +/- %g (%.2g %%)\n",
+ rcv->absorbed_if_no_field_loss.E, rcv->absorbed_if_no_field_loss.SE,
+ 100 * rcv->absorbed_if_no_field_loss.E / rcv->absorbed_flux.E);
+ printf("\tAtmospheric Loss(target) on Absorbed = %g +/- %g (%.2g %%)\n",
+ rcv->absorbed_lost_in_atmosphere.E, rcv->absorbed_lost_in_atmosphere.SE,
+ 100 * rcv->absorbed_lost_in_atmosphere.E / rcv->absorbed_flux.E);
+ printf("\tOptical Field Loss(target) on Absorbed = %g +/- %g (%.2g %%)\n",
+ rcv->absorbed_lost_in_field.E, rcv->absorbed_lost_in_field.SE,
+ 100 * rcv->absorbed_lost_in_field.E / rcv->absorbed_flux.E);
+}
#endif /* TEST_SSOL_UTILS_H */