stardis-solver

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

commit 7ca17757155e84efe86d77ccd7deef5fc7fc3c48
parent 241a8beb0e9453fcb2e1f95e6a13bea99cbd609e
Author: Vincent Forest <vincent.forest@meso-star.com>
Date:   Tue,  5 Mar 2019 17:14:49 +0100

Add the sdis_scene_get_medium_spread function

Diffstat:
Msrc/sdis.h | 7+++++++
Msrc/sdis_scene.c | 34+++++++++++++++++++++++++++++++++-
2 files changed, 40 insertions(+), 1 deletion(-)

diff --git a/src/sdis.h b/src/sdis.h @@ -681,6 +681,13 @@ sdis_scene_get_dimension (const struct sdis_scene* scn, enum sdis_scene_dimension* dim); +/* Return the volume/area of a medium */ +SDIS_API res_T +sdis_scene_get_medium_spread + (struct sdis_scene* scn, + const struct sdis_medium* mdm, + double* spread); + /******************************************************************************* * An estimator stores the state of a simulation ******************************************************************************/ diff --git a/src/sdis_scene.c b/src/sdis_scene.c @@ -312,13 +312,45 @@ sdis_scene_release_analysis(struct sdis_scene* scn) res_T sdis_scene_get_dimension - (const struct sdis_scene* scn, enum sdis_scene_dimension* dim) + (const struct sdis_scene* scn, enum sdis_scene_dimension* dim) { if(!scn || !dim) return RES_BAD_ARG; *dim = scene_is_2d(scn) ? SDIS_SCENE_2D : SDIS_SCENE_3D; return RES_OK; } +res_T +sdis_scene_get_medium_spread + (struct sdis_scene* scn, + const struct sdis_medium* mdm, + double* out_spread) +{ + struct htable_enclosure_iterator it, end; + double spread = 0; + res_T res = RES_OK; + + if(!scn || !mdm || !out_spread) { + res = RES_BAD_ARG; + goto error; + } + + htable_enclosure_begin(&scn->enclosures, &it); + htable_enclosure_end(&scn->enclosures, &end); + while(!htable_enclosure_iterator_eq(&it, &end)) { + const struct enclosure* enc = htable_enclosure_iterator_data_get(&it); + htable_enclosure_iterator_next(&it); + if(sdis_medium_get_id(mdm) == enc->medium_id) { + spread += enc->V; + } + } + *out_spread = spread; + +exit: + return res; +error: + goto exit; +} + /******************************************************************************* * Local miscellaneous function ******************************************************************************/