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:
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");