stardis-solver

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

commit 415b9a55a79c41759fcdd05548673ead37148e9f
parent 03a6935c69dd4b776d89f1e25dc800ec567bcbc9
Author: Christophe Coustet <christophe.coustet@meso-star.com>
Date:   Wed, 13 Feb 2019 15:12:04 +0100

Rename API calls on enclosure descriptors and add release API.

Diffstat:
Msrc/sdis.h | 13++++++++++---
Msrc/sdis_scene.c | 17+++++++++++++++--
Msrc/test_sdis_scene.c | 34++++++++++++++++++++++++----------
3 files changed, 49 insertions(+), 15 deletions(-)

diff --git a/src/sdis.h b/src/sdis.h @@ -531,17 +531,24 @@ sdis_scene_boundary_project_position const double pos[3], double uv[]); -/* Get the descriptor of the scene's enclosures */ +/* Get the descriptor of the 2D scene's enclosures */ SDIS_API res_T -sdis_get_geometry2d_analyze +sdis_get_scene_2d_analyze (struct sdis_scene* scn, struct senc2d_descriptor** descriptor); +/* Get the descriptor of the 3D scene's enclosures */ SDIS_API res_T -sdis_get_geometry_analyze +sdis_get_scene_analyze (struct sdis_scene* scn, struct senc_descriptor** descriptor); +/* Release the descriptor of the scene's enclosures; + * subsequent attempts to get it will fail. */ +SDIS_API res_T +sdis_release_scene_analyze + (struct sdis_scene* scn); + /******************************************************************************* * An estimator stores the state of a simulation ******************************************************************************/ diff --git a/src/sdis_scene.c b/src/sdis_scene.c @@ -278,7 +278,7 @@ sdis_scene_boundary_project_position } res_T -sdis_get_geometry2d_analyze +sdis_get_scene_2d_analyze (struct sdis_scene* scn, struct senc2d_descriptor** descriptor) { @@ -290,7 +290,7 @@ sdis_get_geometry2d_analyze } res_T -sdis_get_geometry_analyze +sdis_get_scene_analyze (struct sdis_scene* scn, struct senc_descriptor** descriptor) { @@ -301,6 +301,19 @@ sdis_get_geometry_analyze return RES_OK; } +res_T +sdis_release_scene_analyze(struct sdis_scene* scn) +{ + if (!scn) return RES_BAD_ARG; + if(scn->senc2d_descriptor) + SENC2D(descriptor_ref_put(scn->senc2d_descriptor)); + if(scn->senc_descriptor) + SENC(descriptor_ref_put(scn->senc_descriptor)); + scn->senc_descriptor = NULL; + scn->senc2d_descriptor = NULL; + return RES_OK; +} + /******************************************************************************* * Local miscellaneous function ******************************************************************************/ diff --git a/src/test_sdis_scene.c b/src/test_sdis_scene.c @@ -166,12 +166,19 @@ test_scene_3d(struct sdis_device* dev, struct sdis_interface* interf) OK(sdis_scene_get_boundary_position(scn, 6, uv1, pos1)); CHK(!d3_eq_eps(pos1, pos, 1.e-6)); - BA(sdis_get_geometry_analyze(NULL, NULL)); - BA(sdis_get_geometry_analyze(scn, NULL)); - BA(sdis_get_geometry_analyze(NULL, &descriptor)); - OK(sdis_get_geometry_analyze(scn, &descriptor)); + BA(sdis_get_scene_analyze(NULL, NULL)); + BA(sdis_get_scene_analyze(scn, NULL)); + BA(sdis_get_scene_analyze(NULL, &descriptor)); + OK(sdis_get_scene_analyze(scn, &descriptor)); OK(senc_descriptor_ref_put(descriptor)); - BA(sdis_get_geometry2d_analyze(scn, &descriptor2d)); + /* No 2D available */ + BA(sdis_get_scene_2d_analyze(scn, &descriptor2d)); + BA(sdis_release_scene_analyze(NULL)); + OK(sdis_release_scene_analyze(scn)); + /* Allready released */ + BA(sdis_release_scene_analyze(scn)); + /* Descriptor released: cannot get it anymore */ + BA(sdis_get_scene_analyze(scn, &descriptor)); BA(sdis_scene_ref_get(NULL)); OK(sdis_scene_ref_get(scn)); @@ -261,12 +268,19 @@ test_scene_2d(struct sdis_device* dev, struct sdis_interface* interf) OK(sdis_scene_boundary_project_position(scn, 3, pos, &u0)); CHK(eq_eps(u0, 1, 1.e-6)); - BA(sdis_get_geometry2d_analyze(NULL, NULL)); - BA(sdis_get_geometry2d_analyze(scn, NULL)); - BA(sdis_get_geometry2d_analyze(NULL, &descriptor)); - OK(sdis_get_geometry2d_analyze(scn, &descriptor)); + BA(sdis_get_scene_2d_analyze(NULL, NULL)); + BA(sdis_get_scene_2d_analyze(scn, NULL)); + BA(sdis_get_scene_2d_analyze(NULL, &descriptor)); + OK(sdis_get_scene_2d_analyze(scn, &descriptor)); OK(senc2d_descriptor_ref_put(descriptor)); - BA(sdis_get_geometry_analyze(scn, &descriptor3d)); + /* No 3D available */ + BA(sdis_get_scene_analyze(scn, &descriptor3d)); + BA(sdis_release_scene_analyze(NULL)); + OK(sdis_release_scene_analyze(scn)); + /* Allready released */ + BA(sdis_release_scene_analyze(scn)); + /* Descriptor released: cannot get it anymore */ + BA(sdis_get_scene_2d_analyze(scn, &descriptor)); OK(sdis_scene_ref_put(scn)); }