stardis-solver

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

commit 2ded4cdaf561b9805467ac435cdbcc2b4142197c
parent 120757aa250419d48c8118fdd4e7f423faabdda7
Author: Christophe Coustet <christophe.coustet@meso-star.com>
Date:   Tue, 21 Aug 2018 17:32:49 +0200

Allow external enclosures to be ill-formed regarding media.

Diffstat:
Msrc/sdis_scene_Xd.h | 16++++++++++++++--
1 file changed, 14 insertions(+), 2 deletions(-)

diff --git a/src/sdis_scene_Xd.h b/src/sdis_scene_Xd.h @@ -630,6 +630,7 @@ XD(setup_enclosures)(struct sdis_scene* scn, struct sencXd(descriptor)* desc) { struct sencXd(enclosure)* enc = NULL; unsigned ienc, nencs; + unsigned enclosed_medium; res_T res = RES_OK; ASSERT(scn && desc); @@ -645,8 +646,19 @@ XD(setup_enclosures)(struct sdis_scene* scn, struct sencXd(descriptor)* desc) SENCXD(descriptor_get_enclosure(desc, ienc, &enc)); SENCXD(enclosure_get_header(enc, &header)); - ASSERT(header.enclosed_medium < darray_medium_size_get(&scn->media)); - mdm = darray_medium_cdata_get(&scn->media)[header.enclosed_medium]; + /* As paths don't go in infinite enclosures + * we can accept models are broken there. + * But nowhere else. */ + if(header.enclosed_media_count != 1 + && !header.is_infinite) { + res = RES_BAD_ARG; + goto error; + } + + SENCXD(enclosure_get_medium(enc, 0, &enclosed_medium)); + if(res != RES_OK) goto error; + ASSERT(enclosed_medium < darray_medium_size_get(&scn->media)); + mdm = darray_medium_cdata_get(&scn->media)[enclosed_medium]; ASSERT(mdm); /* Silently discard the solid and infinite enclosures */