stardis-solver

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

commit a00aafaca0f141d902d368962e7c5309c10849f4
parent 7d4d7b2a9887cdbb0eab2f41d5893fc3a4007dbc
Author: Vincent Forest <vincent.forest@meso-star.com>
Date:   Thu,  2 Dec 2021 10:28:55 +0100

Tune how the solve_probe2 test is run

When Stardis-Solver is built with MPI support, the test is run 2 times,
once using MPI and once without it.

Diffstat:
Mcmake/CMakeLists.txt | 10++++++++--
Msrc/test_sdis_solve_probe2.c | 15+++++++++++----
2 files changed, 19 insertions(+), 6 deletions(-)

diff --git a/cmake/CMakeLists.txt b/cmake/CMakeLists.txt @@ -218,7 +218,6 @@ if(NOT NO_TEST) new_test(test_sdis_solid_random_walk_robustness) new_test(test_sdis_solve_camera) new_test(test_sdis_solve_probe) - new_test(test_sdis_solve_probe2) new_test(test_sdis_solve_probe3) new_test(test_sdis_solve_probe_2d) new_test(test_sdis_solve_probe2_2d) @@ -232,6 +231,8 @@ if(NOT NO_TEST) new_test(test_sdis_volumic_power) new_test(test_sdis_volumic_power4) + build_test(test_sdis_solve_probe2) + # Additionnal tests build_test(test_sdis_volumic_power2) build_test(test_sdis_volumic_power2_2d) @@ -250,13 +251,18 @@ if(NOT NO_TEST) target_link_libraries(test_sdis_solve_probe3_2d ${MATH_LIB}) target_link_libraries(test_sdis_solve_camera Star3DUT) - if(ENABLE_MPI) + if(NOT ENABLE_MPI) + add_test(test_sdis_solve_probe2 test_sdis_solve_probe2) + else() set_target_properties(test_sdis PROPERTIES COMPILE_DEFINITIONS "SDIS_ENABLE_MPI") set_target_properties(test_sdis_device PROPERTIES COMPILE_DEFINITIONS "SDIS_ENABLE_MPI") set_target_properties(test_sdis_solve_probe2 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) endif() rcmake_copy_runtime_libraries(test_sdis_solid_random_walk_robustness) diff --git a/src/test_sdis_solve_probe2.c b/src/test_sdis_solve_probe2.c @@ -18,8 +18,10 @@ #include <rsys/math.h> +#include <string.h> + #ifdef SDIS_ENABLE_MPI -#include <mpi.h> + #include <mpi.h> #endif /* @@ -189,10 +191,15 @@ main(int argc, char** argv) CHK(MPI_Init_thread(&argc, &argv, MPI_THREAD_SERIALIZED, &mpi_thread_support) == MPI_SUCCESS); CHK(mpi_thread_support >= MPI_THREAD_SERIALIZED); - dev_args.use_mpi = 1; + dev_args.use_mpi = argc >= 2 && !strcmp(argv[1], "mpi"); OK(sdis_device_create(&dev_args, &dev)); - OK(sdis_device_get_mpi_rank(dev, &mpi_rank)); - is_master_process = mpi_rank == 0; + if(dev_args.use_mpi) { + OK(sdis_device_get_mpi_rank(dev, &mpi_rank)); + is_master_process = mpi_rank == 0; + } else { + CHK(sdis_device_get_mpi_rank(dev, &mpi_rank) == RES_BAD_OP); + is_master_process = 1; + } #endif /* Create the fluid medium */