stardis-solver

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

commit 3807b863e0a268c13e3706cbe928b0cf28a1914c
parent 15801166fc6a68cb84aee94130414ac0b9d804e6
Author: Vincent Forest <vincent.forest@meso-star.com>
Date:   Tue, 19 Dec 2017 11:21:35 +0100

Add and test the sdis_scene_get_aabb function

Diffstat:
Msrc/sdis.h | 6++++++
Msrc/sdis_scene.c | 15+++++++++++++++
Msrc/test_sdis_scene.c | 23++++++++++++++++++-----
3 files changed, 39 insertions(+), 5 deletions(-)

diff --git a/src/sdis.h b/src/sdis.h @@ -261,6 +261,12 @@ SDIS_API res_T sdis_scene_ref_put (struct sdis_scene* scn); +SDIS_API res_T +sdis_scene_get_aabb + (const struct sdis_scene* scn, + double lower[3], + double upper[3]); + END_DECLS #endif /* SDIS_H */ diff --git a/src/sdis_scene.c b/src/sdis_scene.c @@ -17,6 +17,7 @@ #include "sdis_device_c.h" #include "sdis_interface_c.h" +#include <rsys/double3.h> #include <rsys/dynamic_array.h> #include <rsys/mem_allocator.h> #include <star/s3d.h> @@ -280,3 +281,17 @@ sdis_scene_ref_put(struct sdis_scene* scn) return RES_OK; } +res_T +sdis_scene_get_aabb + (const struct sdis_scene* scn, double lower[3], double upper[3]) +{ + float low[3], upp[3]; + res_T res = RES_OK; + if(!scn || !lower || !upper) return RES_BAD_ARG; + res = s3d_scene_view_get_aabb(scn->s3d_view, low, upp); + if(res != RES_OK) return res; + d3_set_f3(lower, low); + d3_set_f3(upper, upp); + return RES_OK; +} + diff --git a/src/test_sdis_scene.c b/src/test_sdis_scene.c @@ -15,6 +15,7 @@ #include "sdis.h" #include "test_sdis_utils.h" +#include <rsys/math.h> struct context { const double* positions; @@ -66,6 +67,7 @@ main(int argc, char** argv) struct sdis_fluid_shader fluid_shader = DUMMY_FLUID_SHADER; struct sdis_solid_shader solid_shader = DUMMY_SOLID_SHADER; struct sdis_interface_shader interface_shader = DUMMY_INTERFACE_SHADER; + double lower[3], upper[3]; struct context ctx; size_t ntris, npos; (void)argc, (void)argv; @@ -97,17 +99,28 @@ main(int argc, char** argv) CHK(CREATE(dev, ntris, IDS, IFA, npos, NULL, &ctx, &scn) == RES_BAD_ARG); CHK(CREATE(dev, ntris, IDS, IFA, npos, POS, &ctx, &scn) == RES_OK); + #undef CREATE + #undef IDS + #undef POS + #undef IFA + + CHK(sdis_scene_get_aabb(NULL, lower, upper) == RES_BAD_ARG); + CHK(sdis_scene_get_aabb(scn, NULL, upper) == RES_BAD_ARG); + CHK(sdis_scene_get_aabb(scn, lower, NULL) == RES_BAD_ARG); + CHK(sdis_scene_get_aabb(scn, lower, upper) == RES_OK); + CHK(eq_eps(lower[0], 0, 1.e-6)); + CHK(eq_eps(lower[1], 0, 1.e-6)); + CHK(eq_eps(lower[2], 0, 1.e-6)); + CHK(eq_eps(upper[0], 1, 1.e-6)); + CHK(eq_eps(upper[1], 1, 1.e-6)); + CHK(eq_eps(upper[2], 1, 1.e-6)); + CHK(sdis_scene_ref_get(NULL) == RES_BAD_ARG); CHK(sdis_scene_ref_get(scn) == RES_OK); CHK(sdis_scene_ref_put(NULL) == RES_BAD_ARG); CHK(sdis_scene_ref_put(scn) == RES_OK); CHK(sdis_scene_ref_put(scn) == RES_OK); - #undef CREATE - #undef IDS - #undef POS - #undef ITFACE - CHK(sdis_device_ref_put(dev) == RES_OK); CHK(sdis_interface_ref_put(interface) == RES_OK); CHK(sdis_medium_ref_put(solid) == RES_OK);