stardis

Perform coupled heat transfer calculations
git clone git://git.meso-star.fr/stardis.git
Log | Files | Refs | README | LICENSE

commit 1f5374da723e4ded7ac868975bdbd01b6057437c
parent 86a1b15a43d968304f4f6114cfe89ff1e3a39bdc
Author: Christophe Coustet <christophe.coustet@meso-star.com>
Date:   Fri, 28 Feb 2025 11:24:11 +0100

BugFix: cannot use -l, -L options with count 1

Raised an assert if the probe list file contained a single probe point.

Diffstat:
Msrc/stardis-compute-probe-boundary.c | 57+++++++++++++++++++++++++--------------------------------
Msrc/stardis-output.c | 6++++--
2 files changed, 29 insertions(+), 34 deletions(-)

diff --git a/src/stardis-compute-probe-boundary.c b/src/stardis-compute-probe-boundary.c @@ -1111,41 +1111,34 @@ error: res_T compute_probe_on_interface(struct stardis* stardis, struct time* start) { + int temp_flags = MODE_COMPUTE_PROBE_TEMP_ON_SURF + | MODE_COMPUTE_LIST_PROBE_TEMP_ON_SURF; + int flux_flags = MODE_COMPUTE_PROBE_FLUX_DNSTY_ON_SURF + | MODE_COMPUTE_LIST_PROBE_FLUX_DNSTY_ON_SURF; res_T res = RES_OK; ASSERT(stardis && start); - ASSERT((stardis->mode & MODE_COMPUTE_PROBE_TEMP_ON_SURF) - || (stardis->mode & MODE_COMPUTE_LIST_PROBE_TEMP_ON_SURF) - || (stardis->mode & MODE_COMPUTE_LIST_PROBE_FLUX_DNSTY_ON_SURF) - || (stardis->mode & MODE_COMPUTE_PROBE_FLUX_DNSTY_ON_SURF)); + ASSERT((stardis->mode & temp_flags) != (stardis->mode & flux_flags)); /* xor */ - /* Multiple probes */ - if(stardis->mode & MODE_COMPUTE_LIST_PROBE_TEMP_ON_SURF) { - ASSERT(darray_probe_boundary_size_get(&stardis->probe_boundary_list) > 1); - - res = compute_multiple_probes_on_interface(stardis, start); - if(res != RES_OK) goto error; - - } else if(stardis->mode & MODE_COMPUTE_LIST_PROBE_FLUX_DNSTY_ON_SURF) { - ASSERT(darray_probe_boundary_size_get(&stardis->probe_boundary_list) > 1); - - res = compute_multiple_flux_probes_on_interface(stardis, start); - if(res != RES_OK) goto error; - - /* Single probe */ - } else if(stardis->mode & MODE_COMPUTE_PROBE_TEMP_ON_SURF) { - const struct stardis_probe_boundary* probe = NULL; - ASSERT(darray_probe_boundary_size_get(&stardis->probe_boundary_list) == 1); - - probe = darray_probe_boundary_cdata_get(&stardis->probe_boundary_list); - res = compute_single_probe_on_interface(stardis, start, probe); - if(res != RES_OK) goto error; - } else if(stardis->mode & MODE_COMPUTE_PROBE_FLUX_DNSTY_ON_SURF) { - const struct stardis_probe_boundary* probe = NULL; - ASSERT(darray_probe_boundary_size_get(&stardis->probe_boundary_list) == 1); - - probe = darray_probe_boundary_cdata_get(&stardis->probe_boundary_list); - res = compute_single_flux_probe_on_interface(stardis, start, probe); - if(res != RES_OK) goto error; + if(stardis->mode & temp_flags) { + if(darray_probe_boundary_size_get(&stardis->probe_boundary_list) > 1) { + res = compute_multiple_probes_on_interface(stardis, start); + if(res != RES_OK) goto error; + } else { + const struct stardis_probe_boundary* probe + = darray_probe_boundary_cdata_get(&stardis->probe_boundary_list); + res = compute_single_probe_on_interface(stardis, start, probe); + if(res != RES_OK) goto error; + } + } else if(stardis->mode & flux_flags) { + if(darray_probe_boundary_size_get(&stardis->probe_boundary_list) > 1) { + res = compute_multiple_flux_probes_on_interface(stardis, start); + if(res != RES_OK) goto error; + } else { + const struct stardis_probe_boundary* probe + = darray_probe_boundary_cdata_get(&stardis->probe_boundary_list); + res = compute_single_flux_probe_on_interface(stardis, start, probe); + if(res != RES_OK) goto error; + } } exit: diff --git a/src/stardis-output.c b/src/stardis-output.c @@ -1649,7 +1649,9 @@ print_single_MC_result else fprintf(stream, "%g %g %lu %lu\n", result.E, result.SE, nfailures, nsamples); break; - case MODE_COMPUTE_PROBE_TEMP_ON_SURF: { + case MODE_COMPUTE_PROBE_TEMP_ON_SURF: + case MODE_COMPUTE_LIST_PROBE_TEMP_ON_SURF: + { const struct stardis_probe_boundary* probe = NULL; probe = darray_probe_boundary_cdata_get(&stardis->probe_boundary_list); ERR(print_single_MC_result_probe_boundary @@ -1869,7 +1871,7 @@ print_single_MC_result } break; } - default: FATAL("Invalid mode."); + default: FATAL("Invalid mode\n."); } if(stardis->mode & MODE_EXTENDED_RESULTS) fprintf(stream, "#failures: %lu/%lu\n", nfailures, nsamples);