stardis-solver

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

commit 4a38743020138673f772b1b6f8c9885e83a6de25
parent 57611558ae834d9cd5feaf0c27cb51b15167b406
Author: Christophe Coustet <christophe.coustet@meso-star.com>
Date:   Fri,  9 Oct 2020 11:19:27 +0200

Merge branch 'develop' into feature_unsteady_green

Diffstat:
Msrc/sdis_scene_Xd.h | 57++++++++++-----------------------------------------------
1 file changed, 10 insertions(+), 47 deletions(-)

diff --git a/src/sdis_scene_Xd.h b/src/sdis_scene_Xd.h @@ -804,11 +804,9 @@ XD(setup_enclosures)(struct sdis_scene* scn, struct sencXd(scene)* senc3d_scn) { struct sencXd(enclosure)* enc = NULL; unsigned ienc, nencs; - unsigned enclosed_medium; - int outer_found = 0; + int inner_multi = 0; res_T res = RES_OK; ASSERT(scn && senc3d_scn); - (void)outer_found; SENCXD(scene_get_enclosure_count(senc3d_scn, &nencs)); FOR_EACH(ienc, 0, nencs) { @@ -818,53 +816,12 @@ XD(setup_enclosures)(struct sdis_scene* scn, struct sencXd(scene)* senc3d_scn) SENCXD(enclosure_get_header(enc, &header)); if(header.is_infinite) { - ASSERT(!outer_found); - outer_found = 1; + ASSERT(scn->outer_enclosure_id == UINT_MAX); /* Not set yet */ scn->outer_enclosure_id = ienc; } - /* 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) { - /* Dump the problematic enclosure. */ - double tmp[DIM]; - unsigned indices[DIM]; - unsigned i; - log_warn(scn->dev, "# Found internal enclosure with %u materials:\n", - header.enclosed_media_count); - FOR_EACH(i, 0, header.enclosed_media_count) { - unsigned imed; - const struct sdis_medium* med; - SENCXD(enclosure_get_medium(enc, i, &imed)); - med = darray_medium_cdata_get(&scn->media)[imed]; - log_warn(scn->dev, "# %u (%s)\n", - imed, (med->type == SDIS_SOLID ? "solid" : "fluid")); - } - FOR_EACH(i, 0, header.vertices_count) { - SENCXD(enclosure_get_vertex(enc, i, tmp)); - #if DIM == 2 - log_warn(scn->dev, "v %g %g\n", SPLIT2(tmp)); - #else - log_warn(scn->dev, "v %g %g %g\n", SPLIT3(tmp)); - #endif - } - FOR_EACH(i, 0, header.primitives_count) { - SENCXD(enclosure_get_primitive(enc, i, indices)); - #if DIM == 2 - log_warn(scn->dev, "f %u %u\n", indices[0]+1, indices[1]+1); - #else - log_warn(scn->dev, "f %u %u %u\n", - indices[0]+1, indices[1]+1, indices[2]+1); - #endif - } - SENCXD(enclosure_ref_put(enc)); - enc = NULL; - res = RES_BAD_ARG; - goto error; - } - - SENCXD(enclosure_get_medium(enc, 0, &enclosed_medium)); - ASSERT(enclosed_medium < darray_medium_size_get(&scn->media)); + if(header.enclosed_media_count != 1 && !header.is_infinite) + inner_multi++; /* Silently discard infinite enclosures */ if(!header.is_infinite) { @@ -875,6 +832,12 @@ XD(setup_enclosures)(struct sdis_scene* scn, struct sencXd(scene)* senc3d_scn) enc = NULL; } + if(inner_multi) { + log_info(scn->dev, + "# Found %d internal enclosure(s) with more than 1 medium.\n", + inner_multi); + } + /* tmp table no more useful */ htable_d_purge(&scn->tmp_hc_ub); exit: