stardis-solver

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

commit 54a69d046b28c2ec48ae23e850ac7874fcc81eab
parent c207a555cdb008d5ef3958e3ed70bf05c24adbf1
Author: Christophe Coustet <christophe.coustet@meso-star.com>
Date:   Fri, 30 Oct 2020 11:35:34 +0100

Fix an assert preventing boundary computations at t=0

Diffstat:
Msrc/sdis_misc_Xd.h | 2+-
Msrc/test_sdis_solve_boundary.c | 42+++++++++++++++++++++++++++++++++++++++---
2 files changed, 40 insertions(+), 4 deletions(-)

diff --git a/src/sdis_misc_Xd.h b/src/sdis_misc_Xd.h @@ -53,7 +53,7 @@ XD(time_rewind) tau = ssp_ran_exp(rng, mu); /* Increment the elapsed time */ - ASSERT(rwalk->vtx.time > t0); + ASSERT(rwalk->vtx.time >= t0); rwalk->elapsed_time += MMIN(tau, rwalk->vtx.time - t0); if(IS_INF(rwalk->vtx.time)) goto exit; /* Steady computation */ diff --git a/src/test_sdis_solve_boundary.c b/src/test_sdis_solve_boundary.c @@ -66,7 +66,6 @@ fluid_get_temperature return ((const struct fluid*)sdis_data_cget(data))->temperature; } - static double solid_get_calorific_capacity (const struct sdis_rwalk_vertex* vtx, struct sdis_data* data) @@ -109,7 +108,8 @@ solid_get_temperature { (void)data; CHK(vtx != NULL); - return UNKNOWN_TEMPERATURE; + if(vtx->time > 0) return UNKNOWN_TEMPERATURE; + return Tf; } /******************************************************************************* @@ -217,7 +217,7 @@ main(int argc, char** argv) OK(sdis_fluid_create(dev, &fluid_shader, data, &fluid)); OK(sdis_data_ref_put(data)); - /* Create the solid_medium */ + /* Create the solid medium */ solid_shader.calorific_capacity = solid_get_calorific_capacity; solid_shader.thermal_conductivity = solid_get_thermal_conductivity; solid_shader.volumic_mass = solid_get_volumic_mass; @@ -389,6 +389,22 @@ main(int argc, char** argv) fluid_param->temperature = UNKNOWN_TEMPERATURE; BA(SOLVE(square_scn, &probe_args, &estimator)); fluid_param->temperature = Tf; + + /* Right-side temperature at initial time */ + probe_args.time_range[0] = 0; + probe_args.time_range[1] = 0; + + probe_args.iprim = 6; + OK(SOLVE(box_scn, &probe_args, &estimator)); + check_estimator(estimator, N, Tf); + + OK(sdis_estimator_ref_put(estimator)); + + probe_args.iprim = 3; + OK(SOLVE(square_scn, &probe_args, &estimator)); + check_estimator(estimator, N, Tf); + + OK(sdis_estimator_ref_put(estimator)); #undef F #undef SOLVE @@ -564,6 +580,26 @@ main(int argc, char** argv) OK(sdis_green_function_ref_put(green)); OK(sdis_estimator_ref_put(estimator)); OK(sdis_estimator_ref_put(estimator2)); + + /* Right-side temperature at initial time */ + bound_args.time_range[0] = 0; + bound_args.time_range[1] = 0; + + prims[0] = 6; + prims[1] = 7; + bound_args.nprimitives = 2; + OK(SOLVE(box_scn, &bound_args, &estimator)); + check_estimator(estimator, N, Tf); + + OK(sdis_estimator_ref_put(estimator)); + + prims[0] = 3; + bound_args.nprimitives = 1; + OK(SOLVE(square_scn, &bound_args, &estimator)); + check_estimator(estimator, N, Tf); + + OK(sdis_estimator_ref_put(estimator)); + #undef SOLVE #undef GREEN