stardis-solver

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

commit 4a4b2e47445621dcce2ceff0f06d3bf3fb0fe417
parent f13048f493ead83434cc627f75f743af7eb3511c
Author: Vincent Forest <vincent.forest@meso-star.com>
Date:   Thu, 21 Oct 2021 15:40:13 +0200

Merge branch 'release_0.12.3'

Diffstat:
MREADME.md | 5+++++
Mcmake/CMakeLists.txt | 2+-
Msrc/sdis_heat_path_convective_Xd.h | 14++++++++++++--
Msrc/test_sdis_convection.c | 32++++++++++++++------------------
Msrc/test_sdis_convection_non_uniform.c | 32++++++++++++++------------------
5 files changed, 46 insertions(+), 39 deletions(-)

diff --git a/README.md b/README.md @@ -111,6 +111,11 @@ variable the install directories of its dependencies. ## Release notes +### Version 0.12.3 + +Fix green paths ending in a fluid (transcient computation): The path's end was +not correctly registred and the path was later treated as failed. + ### Version 0.12.2 - Sets the required version of Star-SampPling to 0.12. This version fixes diff --git a/cmake/CMakeLists.txt b/cmake/CMakeLists.txt @@ -57,7 +57,7 @@ rcmake_append_runtime_dirs(_runtime_dirs ############################################################################### set(VERSION_MAJOR 0) set(VERSION_MINOR 12) -set(VERSION_PATCH 2) +set(VERSION_PATCH 3) set(VERSION ${VERSION_MAJOR}.${VERSION_MINOR}.${VERSION_PATCH}) set(SDIS_FILES_SRC diff --git a/src/sdis_heat_path_convective_Xd.h b/src/sdis_heat_path_convective_Xd.h @@ -220,8 +220,18 @@ XD(convective_path) if(tmp >= 0) { T->value += tmp; T->done = 1; - if(ctx->heat_path) { /* Update the weight of the last heat vertex */ - heat_path_get_last_vertex(ctx->heat_path)->weight = T->value; + if(ctx->heat_path) { + /* Update the registered vertex data */ + struct sdis_heat_vertex* vtx; + vtx = heat_path_get_last_vertex(ctx->heat_path); + vtx->time = rwalk->vtx.time; + vtx->weight = T->value; + } + + if(ctx->green_path) { + res = green_path_set_limit_vertex(ctx->green_path, rwalk->mdm, + &rwalk->vtx, rwalk->elapsed_time); + if(res != RES_OK) goto error; } goto exit; } diff --git a/src/test_sdis_convection.c b/src/test_sdis_convection.c @@ -304,15 +304,13 @@ main(int argc, char** argv) printf("#failures = %lu/%lu\n", (unsigned long)nfails, (unsigned long)N); CHK(eq_eps(T.E, ref, T.SE * 3)); - if(IS_INF(time)) { /* Check green function */ - OK(sdis_solve_probe_green_function(box_scn, &solve_args, &green)); - OK(sdis_green_function_solve(green, &estimator2)); - check_green_function(green); - check_estimator_eq(estimator, estimator2); - check_green_serialization(green, box_scn); - OK(sdis_estimator_ref_put(estimator2)); - OK(sdis_green_function_ref_put(green)); - } + OK(sdis_solve_probe_green_function(box_scn, &solve_args, &green)); + OK(sdis_green_function_solve(green, &estimator2)); + check_green_function(green); + check_estimator_eq(estimator, estimator2); + check_green_serialization(green, box_scn); + OK(sdis_estimator_ref_put(estimator2)); + OK(sdis_green_function_ref_put(green)); OK(sdis_estimator_ref_put(estimator)); printf("\n"); @@ -346,15 +344,13 @@ main(int argc, char** argv) printf("#failures = %lu/%lu\n", (unsigned long)nfails, (unsigned long)N); CHK(eq_eps(T.E, ref, T.SE * 3)); - if(IS_INF(time)) { /* Check green function */ - OK(sdis_solve_probe_green_function(square_scn, &solve_args, &green)); - OK(sdis_green_function_solve(green, &estimator2)); - check_green_function(green); - check_estimator_eq(estimator, estimator2); - check_green_serialization(green, square_scn); - OK(sdis_estimator_ref_put(estimator2)); - OK(sdis_green_function_ref_put(green)); - } + OK(sdis_solve_probe_green_function(square_scn, &solve_args, &green)); + OK(sdis_green_function_solve(green, &estimator2)); + check_green_function(green); + check_estimator_eq(estimator, estimator2); + check_green_serialization(green, square_scn); + OK(sdis_estimator_ref_put(estimator2)); + OK(sdis_green_function_ref_put(green)); OK(sdis_estimator_ref_put(estimator)); printf("\n"); diff --git a/src/test_sdis_convection_non_uniform.c b/src/test_sdis_convection_non_uniform.c @@ -320,15 +320,13 @@ main(int argc, char** argv) printf("#failures = %lu/%lu\n", (unsigned long)nfails,(unsigned long)N); CHK(eq_eps(T.E, ref, T.SE * 3)); - if(IS_INF(time)) { /* Check green function */ - OK(sdis_solve_probe_green_function(box_scn, &solve_args, &green)); - OK(sdis_green_function_solve(green, &estimator2)); - check_green_function(green); - check_estimator_eq(estimator, estimator2); - check_green_serialization(green, box_scn); - OK(sdis_estimator_ref_put(estimator2)); - OK(sdis_green_function_ref_put(green)); - } + OK(sdis_solve_probe_green_function(box_scn, &solve_args, &green)); + OK(sdis_green_function_solve(green, &estimator2)); + check_green_function(green); + check_estimator_eq(estimator, estimator2); + check_green_serialization(green, box_scn); + OK(sdis_estimator_ref_put(estimator2)); + OK(sdis_green_function_ref_put(green)); OK(sdis_estimator_ref_put(estimator)); printf("\n"); @@ -361,15 +359,13 @@ main(int argc, char** argv) printf("#failures = %lu/%lu\n", (unsigned long)nfails,(unsigned long)N); CHK(eq_eps(T.E, ref, T.SE * 3)); - if(IS_INF(time)) { /* Check green function */ - OK(sdis_solve_probe_green_function(square_scn, &solve_args, &green)); - OK(sdis_green_function_solve(green, &estimator2)); - check_green_function(green); - check_estimator_eq(estimator, estimator2); - check_green_serialization(green, square_scn); - OK(sdis_estimator_ref_put(estimator2)); - OK(sdis_green_function_ref_put(green)); - } + OK(sdis_solve_probe_green_function(square_scn, &solve_args, &green)); + OK(sdis_green_function_solve(green, &estimator2)); + check_green_function(green); + check_estimator_eq(estimator, estimator2); + check_green_serialization(green, square_scn); + OK(sdis_estimator_ref_put(estimator2)); + OK(sdis_green_function_ref_put(green)); OK(sdis_estimator_ref_put(estimator)); printf("\n");