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