stardis-solver

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

commit b01c461881e959632e9ad29f713b908f2c1ba2a4
parent 52b86f4ce646f566f01f2c4f6a758cdf1975432f
Author: Vincent Forest <vincent.forest@meso-star.com>
Date:   Thu, 16 Dec 2021 14:11:19 +0100

Test the MPI support of the function sdis_solve_probe_boundary_flux

Diffstat:
Mcmake/CMakeLists.txt | 11++++++++---
Msrc/test_sdis_solve_boundary_flux.c | 37++++++++++++++++++++++---------------
2 files changed, 30 insertions(+), 18 deletions(-)

diff --git a/cmake/CMakeLists.txt b/cmake/CMakeLists.txt @@ -222,7 +222,6 @@ if(NOT NO_TEST) new_test(test_sdis_solve_probe_2d) new_test(test_sdis_solve_probe2_2d) new_test(test_sdis_solve_probe3_2d) - new_test(test_sdis_solve_boundary_flux) new_test(test_sdis_solve_medium) new_test(test_sdis_solve_medium_2d) new_test(test_sdis_transcient) @@ -232,6 +231,7 @@ if(NOT NO_TEST) build_test(test_sdis_solve_probe2) build_test(test_sdis_solve_boundary) + build_test(test_sdis_solve_boundary_flux) # Additionnal tests build_test(test_sdis_volumic_power2) @@ -254,6 +254,7 @@ if(NOT NO_TEST) if(NOT ENABLE_MPI) add_test(test_sdis_solve_probe2 test_sdis_solve_probe2) add_test(test_sdis_solve_boundary test_sdis_solve_boundary) + add_test(test_sdis_solve_boundary_flux test_sdis_solve_boundary_flux) else() set_target_properties(test_sdis PROPERTIES COMPILE_DEFINITIONS "SDIS_ENABLE_MPI") @@ -263,11 +264,15 @@ if(NOT NO_TEST) COMPILE_DEFINITIONS "SDIS_ENABLE_MPI") set_target_properties(test_sdis_solve_boundary PROPERTIES COMPILE_DEFINITIONS "SDIS_ENABLE_MPI") + set_target_properties(test_sdis_solve_boundary_flux PROPERTIES + COMPILE_DEFINITIONS "SDIS_ENABLE_MPI") add_test(test_sdis_solve_probe2_mpi_on mpirun -n 2 test_sdis_solve_probe2 mpi) - add_test(test_sdis_solve_probe2_mpi_off test_sdis_solve_probe2) + add_test(test_sdis_solve_probe2_no_mpi test_sdis_solve_probe2) add_test(test_sdis_solve_boundary_mpi_on mpirun -n 2 test_sdis_solve_boundary mpi) - add_test(test_sdis_solve_boundary_mpi_off test_sdis_solve_boundary) + add_test(test_sdis_solve_boundary_no_mpi test_sdis_solve_boundary) + add_test(test_sdis_solve_boundary_flux_mpi_on mpirun -n 2 test_sdis_solve_boundary_flux mpi) + add_test(test_sdis_solve_boundary_flux_no_mpi test_sdis_solve_boundary_flux) endif() diff --git a/src/test_sdis_solve_boundary_flux.c b/src/test_sdis_solve_boundary_flux.c @@ -254,9 +254,10 @@ main(int argc, char** argv) double pos[3]; double analyticT, analyticCF, analyticRF, analyticTF; size_t prims[2]; + int is_master_process; (void)argc, (void)argv; - OK(sdis_device_create(&SDIS_DEVICE_CREATE_ARGS_DEFAULT, &dev)); + create_default_device(&argc, &argv, &is_master_process, &dev); /* Create the fluid medium */ OK(sdis_data_create @@ -403,25 +404,31 @@ main(int argc, char** argv) probe_args.time_range[0] = INF; OK(SOLVE(box_scn, &probe_args, &estimator)); - OK(sdis_estimator_get_type(estimator, &type)); - CHK(type == SDIS_ESTIMATOR_FLUX); - - OK(sdis_scene_get_boundary_position - (box_scn, probe_args.iprim, probe_args.uv, pos)); - printf("Boundary values of the box at (%g %g %g) = ", SPLIT3(pos)); - check_estimator(estimator, N, analyticT, analyticCF, analyticRF, analyticTF); - OK(sdis_estimator_ref_put(estimator)); + if(!is_master_process) { + CHK(estimator == NULL); + } else { + OK(sdis_estimator_get_type(estimator, &type)); + CHK(type == SDIS_ESTIMATOR_FLUX); + + OK(sdis_scene_get_boundary_position + (box_scn, probe_args.iprim, probe_args.uv, pos)); + printf("Boundary values of the box at (%g %g %g) = ", SPLIT3(pos)); + check_estimator(estimator, N, analyticT, analyticCF, analyticRF, analyticTF); + OK(sdis_estimator_ref_put(estimator)); + } probe_args.uv[0] = 0.5; probe_args.iprim = 4; BA(SOLVE(square_scn, &probe_args, &estimator)); probe_args.iprim = 3; OK(SOLVE(square_scn, &probe_args, &estimator)); - OK(sdis_scene_get_boundary_position - (square_scn, probe_args.iprim, probe_args.uv, pos)); - printf("Boundary values of the square at (%g %g) = ", SPLIT2(pos)); - check_estimator(estimator, N, analyticT, analyticCF, analyticRF, analyticTF); - OK(sdis_estimator_ref_put(estimator)); + if(is_master_process) { + OK(sdis_scene_get_boundary_position + (square_scn, probe_args.iprim, probe_args.uv, pos)); + printf("Boundary values of the square at (%g %g) = ", SPLIT2(pos)); + check_estimator(estimator, N, analyticT, analyticCF, analyticRF, analyticTF); + OK(sdis_estimator_ref_put(estimator)); + } #undef F #undef SOLVE @@ -487,7 +494,7 @@ main(int argc, char** argv) OK(sdis_scene_ref_put(box_scn)); OK(sdis_scene_ref_put(square_scn)); - OK(sdis_device_ref_put(dev)); + free_default_device(dev); CHK(mem_allocated_size() == 0); return 0;