From 0d6d222737141595b4d65a89df44122b102c40b9 Mon Sep 17 00:00:00 2001 From: Fan Kiat Date: Mon, 5 Dec 2022 01:38:16 -0600 Subject: [PATCH 1/4] reduce test parameter space --- .../test_poisson_solver_2d/test_fft_mpi_2d.py | 15 +++-- .../test_unbounded_poisson_solver_mpi_2d.py | 23 ++++--- .../test_advection_flux_mpi_2d.py | 19 +++--- .../test_advection_timestep_mpi_2d.py | 19 +++--- .../test_brinkmann_penalise_mpi_2d.py | 46 ++++++-------- .../test_char_func_from_level_set_mpi_2d.py | 17 +++-- .../test_diffusion_flux_mpi_2d.py | 15 +++-- .../test_diffusion_timestep_mpi_2d.py | 15 +++-- .../test_outplane_field_curl_mpi_2d.py | 23 ++++--- .../test_penalise_field_boundary_mpi_2d.py | 27 ++++---- ..._vorticity_from_velocity_forcing_mpi_2d.py | 17 +++-- .../test_advection_flux_mpi_3d.py | 26 ++++---- .../test_advection_timestep_mpi_3d.py | 59 +++++++----------- .../test_brinkmann_penalise_mpi_3d.py | 62 ++++++++----------- .../test_char_func_from_level_set_mpi_3d.py | 19 +++--- .../test_diffusion_flux_mpi_3d.py | 41 ++++++------ .../test_diffusion_timestep_mpi_3d.py | 47 +++++++------- .../test_virtual_boundary_forcing_mpi.py | 14 ++--- 18 files changed, 226 insertions(+), 278 deletions(-) diff --git a/tests/test_numeric/test_eulerian_grid_ops/test_poisson_solver_2d/test_fft_mpi_2d.py b/tests/test_numeric/test_eulerian_grid_ops/test_poisson_solver_2d/test_fft_mpi_2d.py index 208162a..f8cab81 100644 --- a/tests/test_numeric/test_eulerian_grid_ops/test_poisson_solver_2d/test_fft_mpi_2d.py +++ b/tests/test_numeric/test_eulerian_grid_ops/test_poisson_solver_2d/test_fft_mpi_2d.py @@ -10,20 +10,21 @@ @pytest.mark.mpi(group="MPI_Poisson_solver_2d", min_size=2) -@pytest.mark.parametrize("ghost_size", [1, 2, 3]) +@pytest.mark.parametrize("ghost_size", [1, 2]) @pytest.mark.parametrize("precision", ["single", "double"]) @pytest.mark.parametrize("rank_distribution", [(1, 0), (0, 1)]) -@pytest.mark.parametrize("aspect_ratio", [(1, 1), (1, 2), (2, 1)]) +@pytest.mark.parametrize("aspect_ratio", [(1, 1), (1.5, 1)]) def test_mpi_fft_slab(ghost_size, precision, rank_distribution, aspect_ratio): """ Test parallel FFT on slab distributed along x and y """ - n_values = 32 + n_values = 8 + grid_size_y, grid_size_x = (n_values * np.array(aspect_ratio)).astype(int) real_t = get_real_t(precision) # Generate the MPI topology minimal object mpi_construct = MPIConstruct2D( - grid_size_y=n_values * aspect_ratio[0], - grid_size_x=n_values * aspect_ratio[1], + grid_size_y=grid_size_y, + grid_size_x=grid_size_x, real_t=real_t, rank_distribution=rank_distribution, ) @@ -46,9 +47,7 @@ def test_mpi_fft_slab(ghost_size, precision, rank_distribution, aspect_ratio): # Generate solution and broadcast solution from rank 0 to all ranks if mpi_construct.rank == 0: - ref_field = np.random.randn( - n_values * aspect_ratio[0], n_values * aspect_ratio[1] - ).astype(real_t) + ref_field = np.random.randn(grid_size_y, grid_size_x).astype(real_t) else: ref_field = None ref_field = mpi_construct.grid.bcast(ref_field, root=0) diff --git a/tests/test_numeric/test_eulerian_grid_ops/test_poisson_solver_2d/test_unbounded_poisson_solver_mpi_2d.py b/tests/test_numeric/test_eulerian_grid_ops/test_poisson_solver_2d/test_unbounded_poisson_solver_mpi_2d.py index a975d04..b23a280 100644 --- a/tests/test_numeric/test_eulerian_grid_ops/test_poisson_solver_2d/test_unbounded_poisson_solver_mpi_2d.py +++ b/tests/test_numeric/test_eulerian_grid_ops/test_poisson_solver_2d/test_unbounded_poisson_solver_mpi_2d.py @@ -14,27 +14,28 @@ @pytest.mark.mpi(group="MPI_unbounded_poisson_solve_2d", min_size=2) -@pytest.mark.parametrize("ghost_size", [1, 2, 3]) +@pytest.mark.parametrize("ghost_size", [1, 2]) @pytest.mark.parametrize("precision", ["single", "double"]) @pytest.mark.parametrize("rank_distribution", [(1, 0), (0, 1)]) -@pytest.mark.parametrize("aspect_ratio", [(1, 1), (1, 2), (2, 1)]) +@pytest.mark.parametrize("aspect_ratio", [(1, 1), (1.5, 1)]) def test_mpi_unbounded_poisson_solve_2d( ghost_size, precision, rank_distribution, aspect_ratio ): - n_values = 32 + n_values = 8 + grid_size_y, grid_size_x = (n_values * np.array(aspect_ratio)).astype(int) real_t = get_real_t(precision) # Generate the MPI topology minimal object mpi_construct = MPIConstruct2D( - grid_size_y=n_values * aspect_ratio[0], - grid_size_x=n_values * aspect_ratio[1], + grid_size_y=grid_size_y, + grid_size_x=grid_size_x, real_t=real_t, rank_distribution=rank_distribution, ) # Create unbounded poisson solver unbounded_poisson_solver = UnboundedPoissonSolverMPI2D( - grid_size_y=n_values * aspect_ratio[0], - grid_size_x=n_values * aspect_ratio[1], + grid_size_y=grid_size_y, + grid_size_x=grid_size_x, real_t=real_t, mpi_construct=mpi_construct, ghost_size=ghost_size, @@ -58,9 +59,7 @@ def test_mpi_unbounded_poisson_solve_2d( # Initialize and broadcast solution for comparison later if mpi_construct.rank == 0: - ref_rhs_field = np.random.rand( - n_values * aspect_ratio[0], n_values * aspect_ratio[1] - ).astype(real_t) + ref_rhs_field = np.random.rand(grid_size_y, grid_size_x).astype(real_t) else: ref_rhs_field = None @@ -79,8 +78,8 @@ def test_mpi_unbounded_poisson_solve_2d( # assert correct if mpi_construct.rank == 0: ref_unbounded_poisson_solver = UnboundedPoissonSolverPYFFTW2D( - grid_size_y=n_values * aspect_ratio[0], - grid_size_x=n_values * aspect_ratio[1], + grid_size_y=grid_size_y, + grid_size_x=grid_size_x, real_t=real_t, ) ref_solution_field = np.zeros_like(ref_rhs_field) diff --git a/tests/test_numeric/test_eulerian_grid_ops/test_stencil_ops_2d/test_advection_flux_mpi_2d.py b/tests/test_numeric/test_eulerian_grid_ops/test_stencil_ops_2d/test_advection_flux_mpi_2d.py index 4b524d5..7ef4975 100644 --- a/tests/test_numeric/test_eulerian_grid_ops/test_stencil_ops_2d/test_advection_flux_mpi_2d.py +++ b/tests/test_numeric/test_eulerian_grid_ops/test_stencil_ops_2d/test_advection_flux_mpi_2d.py @@ -15,19 +15,20 @@ @pytest.mark.mpi(group="MPI_stencil_ops_2d", min_size=2) -@pytest.mark.parametrize("ghost_size", [pytest.param(1, marks=pytest.mark.xfail), 2, 3]) +@pytest.mark.parametrize("ghost_size", [pytest.param(1, marks=pytest.mark.xfail), 2]) @pytest.mark.parametrize("precision", ["single", "double"]) @pytest.mark.parametrize("rank_distribution", [(1, 0), (0, 1)]) -@pytest.mark.parametrize("aspect_ratio", [(1, 1), (1, 2), (2, 1)]) +@pytest.mark.parametrize("aspect_ratio", [(1, 1), (1, 1.5)]) def test_mpi_advection_flux_conservative_eno3_2d( ghost_size, precision, rank_distribution, aspect_ratio ): - n_values = 32 + n_values = 16 + grid_size_y, grid_size_x = (n_values * np.array(aspect_ratio)).astype(int) real_t = get_real_t(precision) # Generate the MPI topology minimal object mpi_construct = MPIConstruct2D( - grid_size_y=n_values * aspect_ratio[0], - grid_size_x=n_values * aspect_ratio[1], + grid_size_y=grid_size_y, + grid_size_x=grid_size_x, real_t=real_t, rank_distribution=rank_distribution, ) @@ -55,13 +56,9 @@ def test_mpi_advection_flux_conservative_eno3_2d( # Initialize and broadcast solution for comparison later if mpi_construct.rank == 0: - ref_field = np.random.rand( - n_values * aspect_ratio[0], n_values * aspect_ratio[1] - ).astype(real_t) + ref_field = np.random.rand(grid_size_y, grid_size_x).astype(real_t) ref_velocity = np.random.rand( - mpi_construct.grid_dim, - n_values * aspect_ratio[0], - n_values * aspect_ratio[1], + mpi_construct.grid_dim, grid_size_y, grid_size_x ).astype(real_t) inv_dx = real_t(0.1) else: diff --git a/tests/test_numeric/test_eulerian_grid_ops/test_stencil_ops_2d/test_advection_timestep_mpi_2d.py b/tests/test_numeric/test_eulerian_grid_ops/test_stencil_ops_2d/test_advection_timestep_mpi_2d.py index cff5ddc..360b5d1 100644 --- a/tests/test_numeric/test_eulerian_grid_ops/test_stencil_ops_2d/test_advection_timestep_mpi_2d.py +++ b/tests/test_numeric/test_eulerian_grid_ops/test_stencil_ops_2d/test_advection_timestep_mpi_2d.py @@ -15,20 +15,21 @@ @pytest.mark.mpi(group="MPI_stencil_ops_2d", min_size=2) -@pytest.mark.parametrize("ghost_size", [pytest.param(1, marks=pytest.mark.xfail), 2, 3]) +@pytest.mark.parametrize("ghost_size", [pytest.param(1, marks=pytest.mark.xfail), 2]) @pytest.mark.parametrize("precision", ["single", "double"]) @pytest.mark.parametrize("rank_distribution", [(1, 0), (0, 1)]) -@pytest.mark.parametrize("aspect_ratio", [(1, 1), (1, 2), (2, 1)]) +@pytest.mark.parametrize("aspect_ratio", [(1, 1), (1, 1.5)]) def test_mpi_advection_timestep_eno3_euler_forward_2d( ghost_size, precision, rank_distribution, aspect_ratio ): - n_values = 32 + n_values = 16 + grid_size_y, grid_size_x = (n_values * np.array(aspect_ratio)).astype(int) real_t = get_real_t(precision) # Generate the MPI topology minimal object mpi_construct = MPIConstruct2D( - grid_size_y=n_values * aspect_ratio[0], - grid_size_x=n_values * aspect_ratio[1], + grid_size_y=grid_size_y, + grid_size_x=grid_size_x, real_t=real_t, rank_distribution=rank_distribution, ) @@ -56,11 +57,9 @@ def test_mpi_advection_timestep_eno3_euler_forward_2d( # Initialize and broadcast solution for comparison later if mpi_construct.rank == 0: - ref_field = np.random.rand( - n_values * aspect_ratio[0], n_values * aspect_ratio[1] - ).astype(real_t) + ref_field = np.random.rand(grid_size_y, grid_size_x).astype(real_t) ref_velocity = np.random.rand( - 2, n_values * aspect_ratio[0], n_values * aspect_ratio[1] + mpi_construct.grid_dim, grid_size_y, grid_size_x ).astype(real_t) inv_dx = real_t(0.2) dt = real_t(0.1) @@ -82,7 +81,7 @@ def test_mpi_advection_timestep_eno3_euler_forward_2d( local_velocity = np.zeros( ( - 2, + mpi_construct.grid_dim, mpi_construct.local_grid_size[0] + 2 * ghost_size, mpi_construct.local_grid_size[1] + 2 * ghost_size, ) diff --git a/tests/test_numeric/test_eulerian_grid_ops/test_stencil_ops_2d/test_brinkmann_penalise_mpi_2d.py b/tests/test_numeric/test_eulerian_grid_ops/test_stencil_ops_2d/test_brinkmann_penalise_mpi_2d.py index 3fe9757..a6cb98d 100644 --- a/tests/test_numeric/test_eulerian_grid_ops/test_stencil_ops_2d/test_brinkmann_penalise_mpi_2d.py +++ b/tests/test_numeric/test_eulerian_grid_ops/test_stencil_ops_2d/test_brinkmann_penalise_mpi_2d.py @@ -11,19 +11,20 @@ @pytest.mark.mpi(group="MPI_stencil_ops_2d", min_size=2) -@pytest.mark.parametrize("ghost_size", [0, 1, 2, 3]) +@pytest.mark.parametrize("ghost_size", [1, 2]) @pytest.mark.parametrize("precision", ["single", "double"]) @pytest.mark.parametrize("rank_distribution", [(1, 0), (0, 1)]) -@pytest.mark.parametrize("aspect_ratio", [(1, 1), (1, 2), (2, 1)]) +@pytest.mark.parametrize("aspect_ratio", [(1, 1), (1, 1.5)]) def test_mpi_brinkmann_penalise_scalar_field_2d( ghost_size, precision, rank_distribution, aspect_ratio ): - n_values = 32 + n_values = 8 + grid_size_y, grid_size_x = (n_values * np.array(aspect_ratio)).astype(int) real_t = get_real_t(precision) # Generate the MPI topology minimal object mpi_construct = MPIConstruct2D( - grid_size_y=n_values * aspect_ratio[0], - grid_size_x=n_values * aspect_ratio[1], + grid_size_y=grid_size_y, + grid_size_x=grid_size_x, real_t=real_t, rank_distribution=rank_distribution, ) @@ -49,15 +50,9 @@ def test_mpi_brinkmann_penalise_scalar_field_2d( # Initialize and broadcast solution for comparison later if mpi_construct.rank == 0: - ref_field = np.random.rand( - n_values * aspect_ratio[0], n_values * aspect_ratio[1] - ).astype(real_t) - ref_penalty_field = np.random.rand( - n_values * aspect_ratio[0], n_values * aspect_ratio[1] - ).astype(real_t) - ref_char_field = np.random.rand( - n_values * aspect_ratio[0], n_values * aspect_ratio[1] - ).astype(real_t) + ref_field = np.random.rand(grid_size_y, grid_size_x).astype(real_t) + ref_penalty_field = np.random.rand(grid_size_y, grid_size_x).astype(real_t) + ref_char_field = np.random.rand(grid_size_y, grid_size_x).astype(real_t) penalty_factor = real_t(0.1) else: ref_field = None @@ -116,19 +111,20 @@ def test_mpi_brinkmann_penalise_scalar_field_2d( @pytest.mark.mpi(group="MPI_stencil_ops_2d", min_size=2) -@pytest.mark.parametrize("ghost_size", [0, 1, 2, 3]) +@pytest.mark.parametrize("ghost_size", [1, 2]) @pytest.mark.parametrize("precision", ["single", "double"]) @pytest.mark.parametrize("rank_distribution", [(1, 0), (0, 1)]) -@pytest.mark.parametrize("aspect_ratio", [(1, 1), (1, 2), (2, 1)]) +@pytest.mark.parametrize("aspect_ratio", [(1, 1), (1, 1.5)]) def test_mpi_brinkmann_penalise_vector_field_2d( ghost_size, precision, rank_distribution, aspect_ratio ): - n_values = 32 + n_values = 8 + grid_size_y, grid_size_x = (n_values * np.array(aspect_ratio)).astype(int) real_t = get_real_t(precision) # Generate the MPI topology minimal object mpi_construct = MPIConstruct2D( - grid_size_y=n_values * aspect_ratio[0], - grid_size_x=n_values * aspect_ratio[1], + grid_size_y=grid_size_y, + grid_size_x=grid_size_x, real_t=real_t, rank_distribution=rank_distribution, ) @@ -156,18 +152,12 @@ def test_mpi_brinkmann_penalise_vector_field_2d( # Initialize and broadcast solution for comparison later if mpi_construct.rank == 0: ref_vector_field = np.random.rand( - mpi_construct.grid_dim, - n_values * aspect_ratio[0], - n_values * aspect_ratio[1], + mpi_construct.grid_dim, grid_size_y, grid_size_x ).astype(real_t) ref_penalty_vector_field = np.random.rand( - mpi_construct.grid_dim, - n_values * aspect_ratio[0], - n_values * aspect_ratio[1], - ).astype(real_t) - ref_char_field = np.random.rand( - n_values * aspect_ratio[0], n_values * aspect_ratio[1] + mpi_construct.grid_dim, grid_size_y, grid_size_x ).astype(real_t) + ref_char_field = np.random.rand(grid_size_y, grid_size_x).astype(real_t) penalty_factor = real_t(0.1) else: ref_vector_field = None diff --git a/tests/test_numeric/test_eulerian_grid_ops/test_stencil_ops_2d/test_char_func_from_level_set_mpi_2d.py b/tests/test_numeric/test_eulerian_grid_ops/test_stencil_ops_2d/test_char_func_from_level_set_mpi_2d.py index 94154a0..a11d50d 100644 --- a/tests/test_numeric/test_eulerian_grid_ops/test_stencil_ops_2d/test_char_func_from_level_set_mpi_2d.py +++ b/tests/test_numeric/test_eulerian_grid_ops/test_stencil_ops_2d/test_char_func_from_level_set_mpi_2d.py @@ -11,19 +11,20 @@ @pytest.mark.mpi(group="MPI_stencil_ops_2d", min_size=2) -@pytest.mark.parametrize("ghost_size", [0, 1, 2, 3]) +@pytest.mark.parametrize("ghost_size", [1, 2]) @pytest.mark.parametrize("precision", ["single", "double"]) @pytest.mark.parametrize("rank_distribution", [(1, 0), (0, 1)]) -@pytest.mark.parametrize("aspect_ratio", [(1, 1), (1, 2), (2, 1)]) -def test_mpi_brinkmann_penalise_scalar_field_2d( +@pytest.mark.parametrize("aspect_ratio", [(1, 1), (1, 1.5)]) +def test_mpi_char_func_from_level_set_2d( ghost_size, precision, rank_distribution, aspect_ratio ): - n_values = 32 + n_values = 8 + grid_size_y, grid_size_x = (n_values * np.array(aspect_ratio)).astype(int) real_t = get_real_t(precision) # Generate the MPI topology minimal object mpi_construct = MPIConstruct2D( - grid_size_y=n_values * aspect_ratio[0], - grid_size_x=n_values * aspect_ratio[1], + grid_size_y=grid_size_y, + grid_size_x=grid_size_x, real_t=real_t, rank_distribution=rank_distribution, ) @@ -47,9 +48,7 @@ def test_mpi_brinkmann_penalise_scalar_field_2d( # Initialize and broadcast solution for comparison later if mpi_construct.rank == 0: - ref_level_set_field = np.random.rand( - n_values * aspect_ratio[0], n_values * aspect_ratio[1] - ).astype(real_t) + ref_level_set_field = np.random.rand(grid_size_y, grid_size_x).astype(real_t) blend_width = real_t(0.2) else: ref_level_set_field = None diff --git a/tests/test_numeric/test_eulerian_grid_ops/test_stencil_ops_2d/test_diffusion_flux_mpi_2d.py b/tests/test_numeric/test_eulerian_grid_ops/test_stencil_ops_2d/test_diffusion_flux_mpi_2d.py index e0bea58..5720ecf 100644 --- a/tests/test_numeric/test_eulerian_grid_ops/test_stencil_ops_2d/test_diffusion_flux_mpi_2d.py +++ b/tests/test_numeric/test_eulerian_grid_ops/test_stencil_ops_2d/test_diffusion_flux_mpi_2d.py @@ -15,17 +15,18 @@ @pytest.mark.mpi(group="MPI_stencil_ops_2d", min_size=2) -@pytest.mark.parametrize("ghost_size", [1, 2, 3]) +@pytest.mark.parametrize("ghost_size", [1, 2]) @pytest.mark.parametrize("precision", ["single", "double"]) @pytest.mark.parametrize("rank_distribution", [(1, 0), (0, 1)]) -@pytest.mark.parametrize("aspect_ratio", [(1, 1), (1, 2), (2, 1)]) +@pytest.mark.parametrize("aspect_ratio", [(1, 1), (1, 1.5)]) def test_mpi_diffusion_flux_2d(ghost_size, precision, rank_distribution, aspect_ratio): - n_values = 32 + n_values = 8 + grid_size_y, grid_size_x = (n_values * np.array(aspect_ratio)).astype(int) real_t = get_real_t(precision) # Generate the MPI topology minimal object mpi_construct = MPIConstruct2D( - grid_size_y=n_values * aspect_ratio[0], - grid_size_x=n_values * aspect_ratio[1], + grid_size_y=grid_size_y, + grid_size_x=grid_size_x, real_t=real_t, rank_distribution=rank_distribution, ) @@ -51,9 +52,7 @@ def test_mpi_diffusion_flux_2d(ghost_size, precision, rank_distribution, aspect_ # Initialize and broadcast solution for comparison later if mpi_construct.rank == 0: - ref_field = np.random.rand( - n_values * aspect_ratio[0], n_values * aspect_ratio[1] - ).astype(real_t) + ref_field = np.random.rand(grid_size_y, grid_size_x).astype(real_t) prefactor = real_t(0.1) else: ref_field = None diff --git a/tests/test_numeric/test_eulerian_grid_ops/test_stencil_ops_2d/test_diffusion_timestep_mpi_2d.py b/tests/test_numeric/test_eulerian_grid_ops/test_stencil_ops_2d/test_diffusion_timestep_mpi_2d.py index a52dd99..81ef7d2 100644 --- a/tests/test_numeric/test_eulerian_grid_ops/test_stencil_ops_2d/test_diffusion_timestep_mpi_2d.py +++ b/tests/test_numeric/test_eulerian_grid_ops/test_stencil_ops_2d/test_diffusion_timestep_mpi_2d.py @@ -15,20 +15,21 @@ @pytest.mark.mpi(group="MPI_stencil_ops_2d", min_size=2) -@pytest.mark.parametrize("ghost_size", [1, 2, 3]) +@pytest.mark.parametrize("ghost_size", [1, 2]) @pytest.mark.parametrize("precision", ["single", "double"]) @pytest.mark.parametrize("rank_distribution", [(1, 0), (0, 1)]) -@pytest.mark.parametrize("aspect_ratio", [(1, 1), (1, 2), (2, 1)]) +@pytest.mark.parametrize("aspect_ratio", [(1, 1), (1, 1.5)]) def test_mpi_diffusion_timestep_2d( ghost_size, precision, rank_distribution, aspect_ratio ): - n_values = 32 + n_values = 8 + grid_size_y, grid_size_x = (n_values * np.array(aspect_ratio)).astype(int) real_t = get_real_t(precision) # Generate the MPI topology minimal object mpi_construct = MPIConstruct2D( - grid_size_y=n_values * aspect_ratio[0], - grid_size_x=n_values * aspect_ratio[1], + grid_size_y=grid_size_y, + grid_size_x=grid_size_x, real_t=real_t, rank_distribution=rank_distribution, ) @@ -54,9 +55,7 @@ def test_mpi_diffusion_timestep_2d( # Initialize and broadcast solution for comparison later if mpi_construct.rank == 0: - ref_field = np.random.rand( - n_values * aspect_ratio[0], n_values * aspect_ratio[1] - ).astype(real_t) + ref_field = np.random.rand(grid_size_y, grid_size_x).astype(real_t) nu_dt_by_dx2 = real_t(0.1) else: ref_field = None diff --git a/tests/test_numeric/test_eulerian_grid_ops/test_stencil_ops_2d/test_outplane_field_curl_mpi_2d.py b/tests/test_numeric/test_eulerian_grid_ops/test_stencil_ops_2d/test_outplane_field_curl_mpi_2d.py index ede91bc..90c8cb3 100644 --- a/tests/test_numeric/test_eulerian_grid_ops/test_stencil_ops_2d/test_outplane_field_curl_mpi_2d.py +++ b/tests/test_numeric/test_eulerian_grid_ops/test_stencil_ops_2d/test_outplane_field_curl_mpi_2d.py @@ -15,19 +15,20 @@ @pytest.mark.mpi(group="MPI_stencil_ops_2d", min_size=2) -@pytest.mark.parametrize("ghost_size", [1, 2, 3]) +@pytest.mark.parametrize("ghost_size", [1, 2]) @pytest.mark.parametrize("precision", ["single", "double"]) @pytest.mark.parametrize("rank_distribution", [(1, 0), (0, 1)]) -@pytest.mark.parametrize("aspect_ratio", [(1, 1), (1, 2), (2, 1)]) +@pytest.mark.parametrize("aspect_ratio", [(1, 1), (1, 1.5)]) def test_mpi_outplane_field_curl_2d( ghost_size, precision, rank_distribution, aspect_ratio ): - n_values = 32 + n_values = 8 + grid_size_y, grid_size_x = (n_values * np.array(aspect_ratio)).astype(int) real_t = get_real_t(precision) # Generate the MPI topology minimal object mpi_construct = MPIConstruct2D( - grid_size_y=n_values * aspect_ratio[0], - grid_size_x=n_values * aspect_ratio[1], + grid_size_y=grid_size_y, + grid_size_x=grid_size_x, real_t=real_t, rank_distribution=rank_distribution, ) @@ -51,7 +52,7 @@ def test_mpi_outplane_field_curl_2d( ).astype(real_t) local_curl = np.zeros( ( - 2, + mpi_construct.grid_dim, mpi_construct.local_grid_size[0] + 2 * ghost_size, mpi_construct.local_grid_size[1] + 2 * ghost_size, ) @@ -59,9 +60,7 @@ def test_mpi_outplane_field_curl_2d( # Initialize and broadcast solution for comparison later if mpi_construct.rank == 0: - ref_field = np.random.rand( - n_values * aspect_ratio[0], n_values * aspect_ratio[1] - ).astype(real_t) + ref_field = np.random.rand(grid_size_y, grid_size_x).astype(real_t) prefactor = real_t(0.1) else: ref_field = None @@ -86,9 +85,9 @@ def test_mpi_outplane_field_curl_2d( ) # gather back the diffusion flux globally - global_curl = np.zeros( - (2, n_values * aspect_ratio[0], n_values * aspect_ratio[1]) - ).astype(real_t) + global_curl = np.zeros((mpi_construct.grid_dim, grid_size_y, grid_size_x)).astype( + real_t + ) gather_local_field(global_curl[0], local_curl[0], mpi_construct) gather_local_field(global_curl[1], local_curl[1], mpi_construct) diff --git a/tests/test_numeric/test_eulerian_grid_ops/test_stencil_ops_2d/test_penalise_field_boundary_mpi_2d.py b/tests/test_numeric/test_eulerian_grid_ops/test_stencil_ops_2d/test_penalise_field_boundary_mpi_2d.py index c4e11db..751f796 100644 --- a/tests/test_numeric/test_eulerian_grid_ops/test_stencil_ops_2d/test_penalise_field_boundary_mpi_2d.py +++ b/tests/test_numeric/test_eulerian_grid_ops/test_stencil_ops_2d/test_penalise_field_boundary_mpi_2d.py @@ -15,19 +15,20 @@ @pytest.mark.mpi(group="MPI_stencil_ops_2d", min_size=2) -@pytest.mark.parametrize("ghost_size", [1, 2, 3]) +@pytest.mark.parametrize("ghost_size", [1, 2]) @pytest.mark.parametrize("precision", ["single", "double"]) @pytest.mark.parametrize("rank_distribution", [(1, 0), (0, 1)]) -@pytest.mark.parametrize("aspect_ratio", [(1, 1), (1, 2), (2, 1)]) +@pytest.mark.parametrize("aspect_ratio", [(1, 1), (1, 1.5)]) def test_mpi_penalise_field_boundary_pyst_2d( ghost_size, precision, rank_distribution, aspect_ratio ): - n_values = 32 + n_values = 16 + grid_size_y, grid_size_x = (n_values * np.array(aspect_ratio)).astype(int) real_t = get_real_t(precision) # Generate the MPI topology minimal object mpi_construct = MPIConstruct2D( - grid_size_y=n_values * aspect_ratio[0], - grid_size_x=n_values * aspect_ratio[1], + grid_size_y=grid_size_y, + grid_size_x=grid_size_x, real_t=real_t, rank_distribution=rank_distribution, ) @@ -54,18 +55,16 @@ def test_mpi_penalise_field_boundary_pyst_2d( # Initialize and broadcast solution for comparison later if mpi_construct.rank == 0: - ref_field = np.random.rand( - n_values * aspect_ratio[0], n_values * aspect_ratio[1] - ).astype(real_t) + ref_field = np.random.rand(grid_size_y, grid_size_x).astype(real_t) width = 4 dx = real_t(0.1) grid_coord_shift = real_t(dx / 2) - x = np.linspace( - grid_coord_shift, 1 - grid_coord_shift, n_values * aspect_ratio[1] - ).astype(real_t) - y = np.linspace( - grid_coord_shift, 1 - grid_coord_shift, n_values * aspect_ratio[0] - ).astype(real_t) + x = np.linspace(grid_coord_shift, 1 - grid_coord_shift, grid_size_x).astype( + real_t + ) + y = np.linspace(grid_coord_shift, 1 - grid_coord_shift, grid_size_y).astype( + real_t + ) ref_x_grid_field, ref_y_grid_field = np.meshgrid(x, y) else: ref_field = None diff --git a/tests/test_numeric/test_eulerian_grid_ops/test_stencil_ops_2d/test_update_vorticity_from_velocity_forcing_mpi_2d.py b/tests/test_numeric/test_eulerian_grid_ops/test_stencil_ops_2d/test_update_vorticity_from_velocity_forcing_mpi_2d.py index f15ff34..e41df68 100644 --- a/tests/test_numeric/test_eulerian_grid_ops/test_stencil_ops_2d/test_update_vorticity_from_velocity_forcing_mpi_2d.py +++ b/tests/test_numeric/test_eulerian_grid_ops/test_stencil_ops_2d/test_update_vorticity_from_velocity_forcing_mpi_2d.py @@ -15,19 +15,20 @@ @pytest.mark.mpi(group="MPI_stencil_ops_2d", min_size=2) -@pytest.mark.parametrize("ghost_size", [1, 2, 3]) +@pytest.mark.parametrize("ghost_size", [1, 2]) @pytest.mark.parametrize("precision", ["single", "double"]) @pytest.mark.parametrize("rank_distribution", [(1, 0), (0, 1)]) -@pytest.mark.parametrize("aspect_ratio", [(1, 1), (1, 2), (2, 1)]) +@pytest.mark.parametrize("aspect_ratio", [(1, 1), (1, 1.5)]) def test_mpi_update_vorticity_from_velocity_forcing_2d( ghost_size, precision, rank_distribution, aspect_ratio ): - n_values = 32 + n_values = 8 + grid_size_y, grid_size_x = (n_values * np.array(aspect_ratio)).astype(int) real_t = get_real_t(precision) # Generate the MPI topology minimal object mpi_construct = MPIConstruct2D( - grid_size_y=n_values * aspect_ratio[0], - grid_size_x=n_values * aspect_ratio[1], + grid_size_y=grid_size_y, + grid_size_x=grid_size_x, real_t=real_t, rank_distribution=rank_distribution, ) @@ -59,11 +60,9 @@ def test_mpi_update_vorticity_from_velocity_forcing_2d( # Initialize and broadcast solution for comparison later if mpi_construct.rank == 0: - ref_vorticity_field = np.random.rand( - n_values * aspect_ratio[0], n_values * aspect_ratio[1] - ).astype(real_t) + ref_vorticity_field = np.random.rand(grid_size_y, grid_size_x).astype(real_t) ref_velocity_forcing_field = np.random.rand( - 2, n_values * aspect_ratio[0], n_values * aspect_ratio[1] + mpi_construct.grid_dim, grid_size_y, grid_size_x ).astype(real_t) prefactor = real_t(0.1) else: diff --git a/tests/test_numeric/test_eulerian_grid_ops/test_stencil_ops_3d/test_advection_flux_mpi_3d.py b/tests/test_numeric/test_eulerian_grid_ops/test_stencil_ops_3d/test_advection_flux_mpi_3d.py index 816d977..5152db9 100644 --- a/tests/test_numeric/test_eulerian_grid_ops/test_stencil_ops_3d/test_advection_flux_mpi_3d.py +++ b/tests/test_numeric/test_eulerian_grid_ops/test_stencil_ops_3d/test_advection_flux_mpi_3d.py @@ -14,8 +14,8 @@ ) -@pytest.mark.mpi(group="MPI_stencil_ops_3d", min_size=2) -@pytest.mark.parametrize("ghost_size", [pytest.param(1, marks=pytest.mark.xfail), 2, 3]) +@pytest.mark.mpi(group="MPI_stencil_ops_3d", min_size=4) +@pytest.mark.parametrize("ghost_size", [pytest.param(1, marks=pytest.mark.xfail), 2]) @pytest.mark.parametrize("precision", ["single", "double"]) @pytest.mark.parametrize( "rank_distribution", @@ -23,18 +23,21 @@ ) @pytest.mark.parametrize( "aspect_ratio", - [(1, 1, 1), (1, 1, 2), (1, 2, 1), (2, 1, 1), (1, 2, 2), (2, 1, 2), (2, 2, 1)], + [(1, 1, 1), (1, 1.5, 2)], ) def test_mpi_advection_flux_conservative_eno3_3d( ghost_size, precision, rank_distribution, aspect_ratio ): n_values = 16 + grid_size_z, grid_size_y, grid_size_x = (n_values * np.array(aspect_ratio)).astype( + int + ) real_t = get_real_t(precision) # Generate the MPI topology minimal object mpi_construct = MPIConstruct3D( - grid_size_z=n_values * aspect_ratio[0], - grid_size_y=n_values * aspect_ratio[1], - grid_size_x=n_values * aspect_ratio[2], + grid_size_z=grid_size_z, + grid_size_y=grid_size_y, + grid_size_x=grid_size_x, real_t=real_t, rank_distribution=rank_distribution, ) @@ -64,16 +67,9 @@ def test_mpi_advection_flux_conservative_eno3_3d( # Initialize and broadcast solution for comparison later if mpi_construct.rank == 0: - ref_field = np.random.rand( - n_values * aspect_ratio[0], - n_values * aspect_ratio[1], - n_values * aspect_ratio[2], - ).astype(real_t) + ref_field = np.random.rand(grid_size_z, grid_size_y, grid_size_x).astype(real_t) ref_velocity = np.random.rand( - mpi_construct.grid_dim, - n_values * aspect_ratio[0], - n_values * aspect_ratio[1], - n_values * aspect_ratio[2], + mpi_construct.grid_dim, grid_size_z, grid_size_y, grid_size_x ).astype(real_t) inv_dx = real_t(0.1) else: diff --git a/tests/test_numeric/test_eulerian_grid_ops/test_stencil_ops_3d/test_advection_timestep_mpi_3d.py b/tests/test_numeric/test_eulerian_grid_ops/test_stencil_ops_3d/test_advection_timestep_mpi_3d.py index a30e2a9..df405ec 100644 --- a/tests/test_numeric/test_eulerian_grid_ops/test_stencil_ops_3d/test_advection_timestep_mpi_3d.py +++ b/tests/test_numeric/test_eulerian_grid_ops/test_stencil_ops_3d/test_advection_timestep_mpi_3d.py @@ -14,8 +14,8 @@ ) -@pytest.mark.mpi(group="MPI_stencil_ops_3d", min_size=2) -@pytest.mark.parametrize("ghost_size", [pytest.param(1, marks=pytest.mark.xfail), 2, 3]) +@pytest.mark.mpi(group="MPI_stencil_ops_3d", min_size=4) +@pytest.mark.parametrize("ghost_size", [pytest.param(1, marks=pytest.mark.xfail), 2]) @pytest.mark.parametrize("precision", ["single", "double"]) @pytest.mark.parametrize( "rank_distribution", @@ -23,19 +23,22 @@ ) @pytest.mark.parametrize( "aspect_ratio", - [(1, 1, 1), (1, 1, 2), (1, 2, 1), (2, 1, 1), (1, 2, 2), (2, 1, 2), (2, 2, 1)], + [(1, 1, 1), (1, 1.5, 2)], ) def test_mpi_advection_timestep_eno3_euler_forward_3d( ghost_size, precision, rank_distribution, aspect_ratio ): n_values = 16 + grid_size_z, grid_size_y, grid_size_x = (n_values * np.array(aspect_ratio)).astype( + int + ) real_t = get_real_t(precision) # Generate the MPI topology minimal object mpi_construct = MPIConstruct3D( - grid_size_z=n_values * aspect_ratio[0], - grid_size_y=n_values * aspect_ratio[1], - grid_size_x=n_values * aspect_ratio[2], + grid_size_z=grid_size_z, + grid_size_y=grid_size_y, + grid_size_x=grid_size_x, real_t=real_t, rank_distribution=rank_distribution, ) @@ -65,16 +68,9 @@ def test_mpi_advection_timestep_eno3_euler_forward_3d( # Initialize and broadcast solution for comparison later if mpi_construct.rank == 0: - ref_field = np.random.rand( - n_values * aspect_ratio[0], - n_values * aspect_ratio[1], - n_values * aspect_ratio[2], - ).astype(real_t) + ref_field = np.random.rand(grid_size_z, grid_size_y, grid_size_x).astype(real_t) ref_velocity = np.random.rand( - mpi_construct.grid_dim, - n_values * aspect_ratio[0], - n_values * aspect_ratio[1], - n_values * aspect_ratio[2], + mpi_construct.grid_dim, grid_size_z, grid_size_y, grid_size_x ).astype(real_t) inv_dx = real_t(0.2) dt = real_t(0.1) @@ -156,7 +152,7 @@ def test_mpi_advection_timestep_eno3_euler_forward_3d( @pytest.mark.mpi(group="MPI_stencil_ops_3d", min_size=2) -@pytest.mark.parametrize("ghost_size", [pytest.param(1, marks=pytest.mark.xfail), 2, 3]) +@pytest.mark.parametrize("ghost_size", [pytest.param(1, marks=pytest.mark.xfail), 2]) @pytest.mark.parametrize("precision", ["single", "double"]) @pytest.mark.parametrize( "rank_distribution", @@ -164,19 +160,22 @@ def test_mpi_advection_timestep_eno3_euler_forward_3d( ) @pytest.mark.parametrize( "aspect_ratio", - [(1, 1, 1), (1, 1, 2), (1, 2, 1), (2, 1, 1), (1, 2, 2), (2, 1, 2), (2, 2, 1)], + [(1, 1, 1), (1, 1.5, 2)], ) def test_mpi_vector_field_advection_timestep_eno3_euler_forward_3d( ghost_size, precision, rank_distribution, aspect_ratio ): n_values = 16 + grid_size_z, grid_size_y, grid_size_x = (n_values * np.array(aspect_ratio)).astype( + int + ) real_t = get_real_t(precision) # Generate the MPI topology minimal object mpi_construct = MPIConstruct3D( - grid_size_z=n_values * aspect_ratio[0], - grid_size_y=n_values * aspect_ratio[1], - grid_size_x=n_values * aspect_ratio[2], + grid_size_z=grid_size_z, + grid_size_y=grid_size_y, + grid_size_x=grid_size_x, real_t=real_t, rank_distribution=rank_distribution, ) @@ -214,16 +213,10 @@ def test_mpi_vector_field_advection_timestep_eno3_euler_forward_3d( # Initialize and broadcast solution for comparison later if mpi_construct.rank == 0: ref_vector_field = np.random.rand( - mpi_construct.grid_dim, - n_values * aspect_ratio[0], - n_values * aspect_ratio[1], - n_values * aspect_ratio[2], + mpi_construct.grid_dim, grid_size_z, grid_size_y, grid_size_x ).astype(real_t) ref_velocity = np.random.rand( - mpi_construct.grid_dim, - n_values * aspect_ratio[0], - n_values * aspect_ratio[1], - n_values * aspect_ratio[2], + mpi_construct.grid_dim, grid_size_z, grid_size_y, grid_size_x ).astype(real_t) inv_dx = real_t(0.2) dt = real_t(0.1) @@ -284,13 +277,9 @@ def test_mpi_vector_field_advection_timestep_eno3_euler_forward_3d( vector_field_advection_timestep_euler_forward_conservative_eno3_pyst_kernel_3d = gen_advection_timestep_euler_forward_conservative_eno3_pyst_kernel_3d( real_t=real_t, field_type="vector" ) - ref_advection_flux = np.ones( - ( - n_values * aspect_ratio[0], - n_values * aspect_ratio[1], - n_values * aspect_ratio[2], - ) - ).astype(real_t) + ref_advection_flux = np.ones((grid_size_z, grid_size_y, grid_size_x)).astype( + real_t + ) vector_field_advection_timestep_euler_forward_conservative_eno3_pyst_kernel_3d( advection_flux=ref_advection_flux, vector_field=ref_vector_field, diff --git a/tests/test_numeric/test_eulerian_grid_ops/test_stencil_ops_3d/test_brinkmann_penalise_mpi_3d.py b/tests/test_numeric/test_eulerian_grid_ops/test_stencil_ops_3d/test_brinkmann_penalise_mpi_3d.py index 7ee6968..c96d9d8 100644 --- a/tests/test_numeric/test_eulerian_grid_ops/test_stencil_ops_3d/test_brinkmann_penalise_mpi_3d.py +++ b/tests/test_numeric/test_eulerian_grid_ops/test_stencil_ops_3d/test_brinkmann_penalise_mpi_3d.py @@ -11,7 +11,7 @@ @pytest.mark.mpi(group="MPI_stencil_ops_3d", min_size=4) -@pytest.mark.parametrize("ghost_size", [0, 1, 2, 3]) +@pytest.mark.parametrize("ghost_size", [1, 2]) @pytest.mark.parametrize("precision", ["single", "double"]) @pytest.mark.parametrize( "rank_distribution", @@ -19,18 +19,21 @@ ) @pytest.mark.parametrize( "aspect_ratio", - [(1, 1, 1), (1, 1, 2), (1, 2, 1), (2, 1, 1), (1, 2, 2), (2, 1, 2), (2, 2, 1)], + [(1, 1, 1), (1, 1.5, 2)], ) def test_mpi_brinkmann_penalise_scalar_field_3d( ghost_size, precision, rank_distribution, aspect_ratio ): n_values = 8 + grid_size_z, grid_size_y, grid_size_x = (n_values * np.array(aspect_ratio)).astype( + int + ) real_t = get_real_t(precision) # Generate the MPI topology minimal object mpi_construct = MPIConstruct3D( - grid_size_z=n_values * aspect_ratio[0], - grid_size_y=n_values * aspect_ratio[1], - grid_size_x=n_values * aspect_ratio[2], + grid_size_z=grid_size_z, + grid_size_y=grid_size_y, + grid_size_x=grid_size_x, real_t=real_t, rank_distribution=rank_distribution, ) @@ -57,21 +60,13 @@ def test_mpi_brinkmann_penalise_scalar_field_3d( # Initialize and broadcast solution for comparison later if mpi_construct.rank == 0: - ref_field = np.random.rand( - n_values * aspect_ratio[0], - n_values * aspect_ratio[1], - n_values * aspect_ratio[2], - ).astype(real_t) + ref_field = np.random.rand(grid_size_z, grid_size_y, grid_size_x).astype(real_t) ref_penalty_field = np.random.rand( - n_values * aspect_ratio[0], - n_values * aspect_ratio[1], - n_values * aspect_ratio[2], - ).astype(real_t) - ref_char_field = np.random.rand( - n_values * aspect_ratio[0], - n_values * aspect_ratio[1], - n_values * aspect_ratio[2], + grid_size_z, grid_size_y, grid_size_x ).astype(real_t) + ref_char_field = np.random.rand(grid_size_z, grid_size_y, grid_size_x).astype( + real_t + ) penalty_factor = real_t(0.1) else: ref_field = None @@ -130,7 +125,7 @@ def test_mpi_brinkmann_penalise_scalar_field_3d( @pytest.mark.mpi(group="MPI_stencil_ops_3d", min_size=4) -@pytest.mark.parametrize("ghost_size", [0, 1, 2, 3]) +@pytest.mark.parametrize("ghost_size", [1, 2]) @pytest.mark.parametrize("precision", ["single", "double"]) @pytest.mark.parametrize( "rank_distribution", @@ -138,18 +133,21 @@ def test_mpi_brinkmann_penalise_scalar_field_3d( ) @pytest.mark.parametrize( "aspect_ratio", - [(1, 1, 1), (1, 1, 2), (1, 2, 1), (2, 1, 1), (1, 2, 2), (2, 1, 2), (2, 2, 1)], + [(1, 1, 1), (1, 1.5, 2)], ) def test_mpi_brinkmann_penalise_vector_field_3d( ghost_size, precision, rank_distribution, aspect_ratio ): n_values = 8 + grid_size_z, grid_size_y, grid_size_x = (n_values * np.array(aspect_ratio)).astype( + int + ) real_t = get_real_t(precision) # Generate the MPI topology minimal object mpi_construct = MPIConstruct3D( - grid_size_z=n_values * aspect_ratio[0], - grid_size_y=n_values * aspect_ratio[1], - grid_size_x=n_values * aspect_ratio[2], + grid_size_z=grid_size_z, + grid_size_y=grid_size_y, + grid_size_x=grid_size_x, real_t=real_t, rank_distribution=rank_distribution, ) @@ -178,22 +176,14 @@ def test_mpi_brinkmann_penalise_vector_field_3d( # Initialize and broadcast solution for comparison later if mpi_construct.rank == 0: ref_vector_field = np.random.rand( - mpi_construct.grid_dim, - n_values * aspect_ratio[0], - n_values * aspect_ratio[1], - n_values * aspect_ratio[2], + mpi_construct.grid_dim, grid_size_z, grid_size_y, grid_size_x ).astype(real_t) ref_penalty_vector_field = np.random.rand( - mpi_construct.grid_dim, - n_values * aspect_ratio[0], - n_values * aspect_ratio[1], - n_values * aspect_ratio[2], - ).astype(real_t) - ref_char_field = np.random.rand( - n_values * aspect_ratio[0], - n_values * aspect_ratio[1], - n_values * aspect_ratio[2], + mpi_construct.grid_dim, grid_size_z, grid_size_y, grid_size_x ).astype(real_t) + ref_char_field = np.random.rand(grid_size_z, grid_size_y, grid_size_x).astype( + real_t + ) penalty_factor = real_t(0.1) else: ref_vector_field = None diff --git a/tests/test_numeric/test_eulerian_grid_ops/test_stencil_ops_3d/test_char_func_from_level_set_mpi_3d.py b/tests/test_numeric/test_eulerian_grid_ops/test_stencil_ops_3d/test_char_func_from_level_set_mpi_3d.py index 8a5e81a..c3cb8ba 100644 --- a/tests/test_numeric/test_eulerian_grid_ops/test_stencil_ops_3d/test_char_func_from_level_set_mpi_3d.py +++ b/tests/test_numeric/test_eulerian_grid_ops/test_stencil_ops_3d/test_char_func_from_level_set_mpi_3d.py @@ -11,7 +11,7 @@ @pytest.mark.mpi(group="MPI_stencil_ops_3d", min_size=4) -@pytest.mark.parametrize("ghost_size", [0, 1, 2, 3]) +@pytest.mark.parametrize("ghost_size", [1, 2]) @pytest.mark.parametrize("precision", ["single", "double"]) @pytest.mark.parametrize( "rank_distribution", @@ -19,18 +19,21 @@ ) @pytest.mark.parametrize( "aspect_ratio", - [(1, 1, 1), (1, 1, 2), (1, 2, 1), (2, 1, 1), (1, 2, 2), (2, 1, 2), (2, 2, 1)], + [(1, 1, 1), (1, 1.5, 2)], ) -def test_mpi_brinkmann_penalise_scalar_field_3d( +def test_mpi_char_func_from_level_set_3d( ghost_size, precision, rank_distribution, aspect_ratio ): n_values = 8 + grid_size_z, grid_size_y, grid_size_x = (n_values * np.array(aspect_ratio)).astype( + int + ) real_t = get_real_t(precision) # Generate the MPI topology minimal object mpi_construct = MPIConstruct3D( - grid_size_z=n_values * aspect_ratio[0], - grid_size_y=n_values * aspect_ratio[1], - grid_size_x=n_values * aspect_ratio[2], + grid_size_z=grid_size_z, + grid_size_y=grid_size_y, + grid_size_x=grid_size_x, real_t=real_t, rank_distribution=rank_distribution, ) @@ -56,9 +59,7 @@ def test_mpi_brinkmann_penalise_scalar_field_3d( # Initialize and broadcast solution for comparison later if mpi_construct.rank == 0: ref_level_set_field = np.random.rand( - n_values * aspect_ratio[0], - n_values * aspect_ratio[1], - n_values * aspect_ratio[2], + grid_size_z, grid_size_y, grid_size_x ).astype(real_t) blend_width = real_t(0.2) else: diff --git a/tests/test_numeric/test_eulerian_grid_ops/test_stencil_ops_3d/test_diffusion_flux_mpi_3d.py b/tests/test_numeric/test_eulerian_grid_ops/test_stencil_ops_3d/test_diffusion_flux_mpi_3d.py index 17af0ca..1297f8c 100644 --- a/tests/test_numeric/test_eulerian_grid_ops/test_stencil_ops_3d/test_diffusion_flux_mpi_3d.py +++ b/tests/test_numeric/test_eulerian_grid_ops/test_stencil_ops_3d/test_diffusion_flux_mpi_3d.py @@ -14,8 +14,8 @@ ) -@pytest.mark.mpi(group="MPI_stencil_ops_3d", min_size=2) -@pytest.mark.parametrize("ghost_size", [1, 2, 3]) +@pytest.mark.mpi(group="MPI_stencil_ops_3d", min_size=4) +@pytest.mark.parametrize("ghost_size", [1, 2]) @pytest.mark.parametrize("precision", ["single", "double"]) @pytest.mark.parametrize( "rank_distribution", @@ -23,16 +23,19 @@ ) @pytest.mark.parametrize( "aspect_ratio", - [(1, 1, 1), (1, 1, 2), (1, 2, 1), (2, 1, 1), (1, 2, 2), (2, 1, 2), (2, 2, 1)], + [(1, 1, 1), (1, 1.5, 2)], ) def test_mpi_diffusion_flux_3d(ghost_size, precision, rank_distribution, aspect_ratio): n_values = 8 + grid_size_z, grid_size_y, grid_size_x = (n_values * np.array(aspect_ratio)).astype( + int + ) real_t = get_real_t(precision) # Generate the MPI topology minimal object mpi_construct = MPIConstruct3D( - grid_size_z=n_values * aspect_ratio[0], - grid_size_y=n_values * aspect_ratio[1], - grid_size_x=n_values * aspect_ratio[2], + grid_size_z=grid_size_z, + grid_size_y=grid_size_y, + grid_size_x=grid_size_x, real_t=real_t, rank_distribution=rank_distribution, ) @@ -59,11 +62,7 @@ def test_mpi_diffusion_flux_3d(ghost_size, precision, rank_distribution, aspect_ # Initialize and broadcast solution for comparison later if mpi_construct.rank == 0: - ref_field = np.random.rand( - n_values * aspect_ratio[0], - n_values * aspect_ratio[1], - n_values * aspect_ratio[2], - ).astype(real_t) + ref_field = np.random.rand(grid_size_z, grid_size_y, grid_size_x).astype(real_t) prefactor = real_t(0.1) else: ref_field = None @@ -115,8 +114,8 @@ def test_mpi_diffusion_flux_3d(ghost_size, precision, rank_distribution, aspect_ ) -@pytest.mark.mpi(group="MPI_stencil_ops_3d", min_size=2) -@pytest.mark.parametrize("ghost_size", [1, 2, 3]) +@pytest.mark.mpi(group="MPI_stencil_ops_3d", min_size=4) +@pytest.mark.parametrize("ghost_size", [1, 2]) @pytest.mark.parametrize("precision", ["single", "double"]) @pytest.mark.parametrize( "rank_distribution", @@ -124,18 +123,21 @@ def test_mpi_diffusion_flux_3d(ghost_size, precision, rank_distribution, aspect_ ) @pytest.mark.parametrize( "aspect_ratio", - [(1, 1, 1), (1, 1, 2), (1, 2, 1), (2, 1, 1), (1, 2, 2), (2, 1, 2), (2, 2, 1)], + [(1, 1, 1), (1, 1.5, 2)], ) def test_mpi_vector_field_diffusion_flux_3d( ghost_size, precision, rank_distribution, aspect_ratio ): n_values = 8 + grid_size_z, grid_size_y, grid_size_x = (n_values * np.array(aspect_ratio)).astype( + int + ) real_t = get_real_t(precision) # Generate the MPI topology minimal object mpi_construct = MPIConstruct3D( - grid_size_z=n_values * aspect_ratio[0], - grid_size_y=n_values * aspect_ratio[1], - grid_size_x=n_values * aspect_ratio[2], + grid_size_z=grid_size_z, + grid_size_y=grid_size_y, + grid_size_x=grid_size_x, real_t=real_t, rank_distribution=rank_distribution, ) @@ -164,10 +166,7 @@ def test_mpi_vector_field_diffusion_flux_3d( # Initialize and broadcast solution for comparison later if mpi_construct.rank == 0: ref_vector_field = np.random.rand( - mpi_construct.grid_dim, - n_values * aspect_ratio[0], - n_values * aspect_ratio[1], - n_values * aspect_ratio[2], + mpi_construct.grid_dim, grid_size_z, grid_size_y, grid_size_x ).astype(real_t) prefactor = real_t(0.1) else: diff --git a/tests/test_numeric/test_eulerian_grid_ops/test_stencil_ops_3d/test_diffusion_timestep_mpi_3d.py b/tests/test_numeric/test_eulerian_grid_ops/test_stencil_ops_3d/test_diffusion_timestep_mpi_3d.py index 47b5fa2..cf2e37b 100644 --- a/tests/test_numeric/test_eulerian_grid_ops/test_stencil_ops_3d/test_diffusion_timestep_mpi_3d.py +++ b/tests/test_numeric/test_eulerian_grid_ops/test_stencil_ops_3d/test_diffusion_timestep_mpi_3d.py @@ -14,8 +14,8 @@ ) -@pytest.mark.mpi(group="MPI_stencil_ops_3d", min_size=2) -@pytest.mark.parametrize("ghost_size", [1, 2, 3]) +@pytest.mark.mpi(group="MPI_stencil_ops_3d", min_size=4) +@pytest.mark.parametrize("ghost_size", [1, 2]) @pytest.mark.parametrize("precision", ["single", "double"]) @pytest.mark.parametrize( "rank_distribution", @@ -23,19 +23,22 @@ ) @pytest.mark.parametrize( "aspect_ratio", - [(1, 1, 1), (1, 1, 2), (1, 2, 1), (2, 1, 1), (1, 2, 2), (2, 1, 2), (2, 2, 1)], + [(1, 1, 1), (1, 1.5, 2)], ) def test_mpi_diffusion_timestep_3d( ghost_size, precision, rank_distribution, aspect_ratio ): n_values = 8 + grid_size_z, grid_size_y, grid_size_x = (n_values * np.array(aspect_ratio)).astype( + int + ) real_t = get_real_t(precision) # Generate the MPI topology minimal object mpi_construct = MPIConstruct3D( - grid_size_z=n_values * aspect_ratio[0], - grid_size_y=n_values * aspect_ratio[1], - grid_size_x=n_values * aspect_ratio[2], + grid_size_z=grid_size_z, + grid_size_y=grid_size_y, + grid_size_x=grid_size_x, real_t=real_t, rank_distribution=rank_distribution, ) @@ -62,11 +65,7 @@ def test_mpi_diffusion_timestep_3d( # Initialize and broadcast solution for comparison later if mpi_construct.rank == 0: - ref_field = np.random.rand( - n_values * aspect_ratio[0], - n_values * aspect_ratio[1], - n_values * aspect_ratio[2], - ).astype(real_t) + ref_field = np.random.rand(grid_size_z, grid_size_y, grid_size_x).astype(real_t) nu_dt_by_dx2 = real_t(0.1) else: ref_field = None @@ -122,8 +121,8 @@ def test_mpi_diffusion_timestep_3d( ) -@pytest.mark.mpi(group="MPI_stencil_ops_3d", min_size=2) -@pytest.mark.parametrize("ghost_size", [1, 2, 3]) +@pytest.mark.mpi(group="MPI_stencil_ops_3d", min_size=4) +@pytest.mark.parametrize("ghost_size", [1, 2]) @pytest.mark.parametrize("precision", ["single", "double"]) @pytest.mark.parametrize( "rank_distribution", @@ -131,19 +130,22 @@ def test_mpi_diffusion_timestep_3d( ) @pytest.mark.parametrize( "aspect_ratio", - [(1, 1, 1), (1, 1, 2), (1, 2, 1), (2, 1, 1), (1, 2, 2), (2, 1, 2), (2, 2, 1)], + [(1, 1, 1), (1, 1.5, 2)], ) def test_mpi_vector_field_diffusion_timestep_3d( ghost_size, precision, rank_distribution, aspect_ratio ): n_values = 8 + grid_size_z, grid_size_y, grid_size_x = (n_values * np.array(aspect_ratio)).astype( + int + ) real_t = get_real_t(precision) # Generate the MPI topology minimal object mpi_construct = MPIConstruct3D( - grid_size_z=n_values * aspect_ratio[0], - grid_size_y=n_values * aspect_ratio[1], - grid_size_x=n_values * aspect_ratio[2], + grid_size_z=grid_size_z, + grid_size_y=grid_size_y, + grid_size_x=grid_size_x, real_t=real_t, rank_distribution=rank_distribution, ) @@ -178,10 +180,7 @@ def test_mpi_vector_field_diffusion_timestep_3d( # Initialize and broadcast solution for comparison later if mpi_construct.rank == 0: ref_vector_field = np.random.rand( - mpi_construct.grid_dim, - n_values * aspect_ratio[0], - n_values * aspect_ratio[1], - n_values * aspect_ratio[2], + mpi_construct.grid_dim, grid_size_z, grid_size_y, grid_size_x ).astype(real_t) nu_dt_by_dx2 = real_t(0.1) else: @@ -225,11 +224,7 @@ def test_mpi_vector_field_diffusion_timestep_3d( ) ) ref_vector_field_diffusion_flux = np.ones( - ( - n_values * aspect_ratio[0], - n_values * aspect_ratio[1], - n_values * aspect_ratio[2], - ) + (grid_size_z, grid_size_y, grid_size_x) ).astype(real_t) diffusion_timestep_euler_forward_pyst_kernel( diffusion_flux=ref_vector_field_diffusion_flux, diff --git a/tests/test_numeric/test_immersed_boundary_ops/test_virtual_boundary_forcing_mpi.py b/tests/test_numeric/test_immersed_boundary_ops/test_virtual_boundary_forcing_mpi.py index 62c5fa4..4273d83 100644 --- a/tests/test_numeric/test_immersed_boundary_ops/test_virtual_boundary_forcing_mpi.py +++ b/tests/test_numeric/test_immersed_boundary_ops/test_virtual_boundary_forcing_mpi.py @@ -105,7 +105,7 @@ def check_lag_grid_interaction_solution(self, virtual_boundary_forcing, mask): ) -@pytest.mark.mpi(group="MPI_immersed_boundary_ops_2d", min_size=4) +@pytest.mark.mpi(group="MPI_immersed_boundary_ops_2d", min_size=8) @pytest.mark.parametrize("grid_dim", [2]) @pytest.mark.parametrize("ghost_size", [2, 3]) @pytest.mark.parametrize("precision", ["single", "double"]) @@ -214,7 +214,7 @@ def test_mpi_virtual_boundary_forcing_init( ) -@pytest.mark.mpi(group="MPI_immersed_boundary_ops_2d", min_size=4) +@pytest.mark.mpi(group="MPI_immersed_boundary_ops_2d", min_size=8) @pytest.mark.parametrize("grid_dim", [2]) @pytest.mark.parametrize("ghost_size", [2, 3]) @pytest.mark.parametrize("precision", ["single", "double"]) @@ -317,7 +317,7 @@ def test_mpi_compute_lag_grid_velocity_mismatch_field( ) -@pytest.mark.mpi(group="MPI_immersed_boundary_ops_2d", min_size=4) +@pytest.mark.mpi(group="MPI_immersed_boundary_ops_2d", min_size=8) @pytest.mark.parametrize("grid_dim", [2]) @pytest.mark.parametrize("ghost_size", [2, 3]) @pytest.mark.parametrize("precision", ["single", "double"]) @@ -421,7 +421,7 @@ def test_mpi_update_lag_grid_position_mismatch_field_via_euler_forward( ) -@pytest.mark.mpi(group="MPI_immersed_boundary_ops_2d", min_size=4) +@pytest.mark.mpi(group="MPI_immersed_boundary_ops_2d", min_size=8) @pytest.mark.parametrize("grid_dim", [2]) @pytest.mark.parametrize("ghost_size", [2, 3]) @pytest.mark.parametrize("precision", ["single", "double"]) @@ -528,7 +528,7 @@ def test_mpi_compute_lag_grid_forcing_field( ) -@pytest.mark.mpi(group="MPI_immersed_boundary_ops_2d", min_size=4) +@pytest.mark.mpi(group="MPI_immersed_boundary_ops_2d", min_size=8) @pytest.mark.parametrize("grid_dim", [2]) @pytest.mark.parametrize("ghost_size", [2, 3]) @pytest.mark.parametrize("precision", ["single", "double"]) @@ -669,7 +669,7 @@ def test_mpi_compute_interaction_force_on_lag_grid( ) -@pytest.mark.mpi(group="MPI_immersed_boundary_ops_2d", min_size=4) +@pytest.mark.mpi(group="MPI_immersed_boundary_ops_2d", min_size=8) @pytest.mark.parametrize("grid_dim", [2]) @pytest.mark.parametrize("ghost_size", [2, 3]) @pytest.mark.parametrize("precision", ["single", "double"]) @@ -839,7 +839,7 @@ def test_mpi_compute_interaction_force_on_eul_and_lag_grid( ) -@pytest.mark.mpi(group="MPI_immersed_boundary_ops_2d", min_size=4) +@pytest.mark.mpi(group="MPI_immersed_boundary_ops_2d", min_size=8) @pytest.mark.parametrize("grid_dim", [2]) @pytest.mark.parametrize("ghost_size", [2, 3]) @pytest.mark.parametrize("precision", ["single", "double"]) From 74cadc4dfb0e1980e704fe617cbdf20fc523a664 Mon Sep 17 00:00:00 2001 From: Fan Kiat Date: Mon, 5 Dec 2022 01:41:47 -0600 Subject: [PATCH 2/4] refactor test divergence 3d test parameter --- .../test_divergence_mpi_3d.py | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/tests/test_numeric/test_eulerian_grid_ops/test_stencil_ops_3d/test_divergence_mpi_3d.py b/tests/test_numeric/test_eulerian_grid_ops/test_stencil_ops_3d/test_divergence_mpi_3d.py index f73b417..5caa5d0 100644 --- a/tests/test_numeric/test_eulerian_grid_ops/test_stencil_ops_3d/test_divergence_mpi_3d.py +++ b/tests/test_numeric/test_eulerian_grid_ops/test_stencil_ops_3d/test_divergence_mpi_3d.py @@ -13,7 +13,7 @@ @pytest.mark.mpi(group="MPI_stencil_ops_3d", min_size=4) -@pytest.mark.parametrize("ghost_size", [1, 2, 3]) +@pytest.mark.parametrize("ghost_size", [1, 2]) @pytest.mark.parametrize("precision", ["single", "double"]) @pytest.mark.parametrize( "rank_distribution", @@ -21,16 +21,19 @@ ) @pytest.mark.parametrize( "aspect_ratio", - [(1, 1, 1), (1, 1, 2), (1, 2, 1), (2, 1, 1), (1, 2, 2), (2, 1, 2), (2, 2, 1)], + [(1, 1, 1), (1, 1.5, 2)], ) def test_mpi_divergence_3d(ghost_size, precision, rank_distribution, aspect_ratio): n_values = 8 + grid_size_z, grid_size_y, grid_size_x = (n_values * np.array(aspect_ratio)).astype( + int + ) real_t = get_real_t(precision) # Generate the MPI topology minimal object mpi_construct = MPIConstruct3D( - grid_size_z=n_values * aspect_ratio[0], - grid_size_y=n_values * aspect_ratio[1], - grid_size_x=n_values * aspect_ratio[2], + grid_size_z=grid_size_z, + grid_size_y=grid_size_y, + grid_size_x=grid_size_x, real_t=real_t, rank_distribution=rank_distribution, ) @@ -65,10 +68,7 @@ def test_mpi_divergence_3d(ghost_size, precision, rank_distribution, aspect_rati # Initialize and broadcast solution for comparison later if mpi_construct.rank == 0: ref_vector_field = np.random.rand( - mpi_construct.grid_dim, - n_values * aspect_ratio[0], - n_values * aspect_ratio[1], - n_values * aspect_ratio[2], + mpi_construct.grid_dim, grid_size_z, grid_size_y, grid_size_x ).astype(real_t) inv_dx = real_t(0.1) else: From 555f3b4a6aa2113b3adda0711a8276be9dc538ef Mon Sep 17 00:00:00 2001 From: Fan Kiat Date: Mon, 5 Dec 2022 16:48:11 -0600 Subject: [PATCH 3/4] fix: typo in virtual boundary forcing tests --- .../test_virtual_boundary_forcing_mpi.py | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/tests/test_numeric/test_immersed_boundary_ops/test_virtual_boundary_forcing_mpi.py b/tests/test_numeric/test_immersed_boundary_ops/test_virtual_boundary_forcing_mpi.py index 4273d83..62c5fa4 100644 --- a/tests/test_numeric/test_immersed_boundary_ops/test_virtual_boundary_forcing_mpi.py +++ b/tests/test_numeric/test_immersed_boundary_ops/test_virtual_boundary_forcing_mpi.py @@ -105,7 +105,7 @@ def check_lag_grid_interaction_solution(self, virtual_boundary_forcing, mask): ) -@pytest.mark.mpi(group="MPI_immersed_boundary_ops_2d", min_size=8) +@pytest.mark.mpi(group="MPI_immersed_boundary_ops_2d", min_size=4) @pytest.mark.parametrize("grid_dim", [2]) @pytest.mark.parametrize("ghost_size", [2, 3]) @pytest.mark.parametrize("precision", ["single", "double"]) @@ -214,7 +214,7 @@ def test_mpi_virtual_boundary_forcing_init( ) -@pytest.mark.mpi(group="MPI_immersed_boundary_ops_2d", min_size=8) +@pytest.mark.mpi(group="MPI_immersed_boundary_ops_2d", min_size=4) @pytest.mark.parametrize("grid_dim", [2]) @pytest.mark.parametrize("ghost_size", [2, 3]) @pytest.mark.parametrize("precision", ["single", "double"]) @@ -317,7 +317,7 @@ def test_mpi_compute_lag_grid_velocity_mismatch_field( ) -@pytest.mark.mpi(group="MPI_immersed_boundary_ops_2d", min_size=8) +@pytest.mark.mpi(group="MPI_immersed_boundary_ops_2d", min_size=4) @pytest.mark.parametrize("grid_dim", [2]) @pytest.mark.parametrize("ghost_size", [2, 3]) @pytest.mark.parametrize("precision", ["single", "double"]) @@ -421,7 +421,7 @@ def test_mpi_update_lag_grid_position_mismatch_field_via_euler_forward( ) -@pytest.mark.mpi(group="MPI_immersed_boundary_ops_2d", min_size=8) +@pytest.mark.mpi(group="MPI_immersed_boundary_ops_2d", min_size=4) @pytest.mark.parametrize("grid_dim", [2]) @pytest.mark.parametrize("ghost_size", [2, 3]) @pytest.mark.parametrize("precision", ["single", "double"]) @@ -528,7 +528,7 @@ def test_mpi_compute_lag_grid_forcing_field( ) -@pytest.mark.mpi(group="MPI_immersed_boundary_ops_2d", min_size=8) +@pytest.mark.mpi(group="MPI_immersed_boundary_ops_2d", min_size=4) @pytest.mark.parametrize("grid_dim", [2]) @pytest.mark.parametrize("ghost_size", [2, 3]) @pytest.mark.parametrize("precision", ["single", "double"]) @@ -669,7 +669,7 @@ def test_mpi_compute_interaction_force_on_lag_grid( ) -@pytest.mark.mpi(group="MPI_immersed_boundary_ops_2d", min_size=8) +@pytest.mark.mpi(group="MPI_immersed_boundary_ops_2d", min_size=4) @pytest.mark.parametrize("grid_dim", [2]) @pytest.mark.parametrize("ghost_size", [2, 3]) @pytest.mark.parametrize("precision", ["single", "double"]) @@ -839,7 +839,7 @@ def test_mpi_compute_interaction_force_on_eul_and_lag_grid( ) -@pytest.mark.mpi(group="MPI_immersed_boundary_ops_2d", min_size=8) +@pytest.mark.mpi(group="MPI_immersed_boundary_ops_2d", min_size=4) @pytest.mark.parametrize("grid_dim", [2]) @pytest.mark.parametrize("ghost_size", [2, 3]) @pytest.mark.parametrize("precision", ["single", "double"]) From cc832ace487d53f8c3b0f1589d8ef8b085aa21af Mon Sep 17 00:00:00 2001 From: Fan Kiat Date: Mon, 5 Dec 2022 20:21:29 -0600 Subject: [PATCH 4/4] set all tests to run with min_size=4 --- .../test_poisson_solver_2d/test_fft_mpi_2d.py | 2 +- .../test_unbounded_poisson_solver_mpi_2d.py | 2 +- .../test_stencil_ops_2d/test_advection_flux_mpi_2d.py | 2 +- .../test_stencil_ops_2d/test_advection_timestep_mpi_2d.py | 2 +- .../test_stencil_ops_2d/test_brinkmann_penalise_mpi_2d.py | 4 ++-- .../test_char_func_from_level_set_mpi_2d.py | 2 +- .../test_stencil_ops_2d/test_diffusion_flux_mpi_2d.py | 2 +- .../test_stencil_ops_2d/test_diffusion_timestep_mpi_2d.py | 2 +- .../test_outplane_field_curl_mpi_2d.py | 2 +- .../test_penalise_field_boundary_mpi_2d.py | 2 +- .../test_update_vorticity_from_velocity_forcing_mpi_2d.py | 2 +- .../test_stencil_ops_3d/test_advection_timestep_mpi_3d.py | 2 +- .../test_mpi_cosserat_rod_flow_interaction.py | 2 +- .../rigid_body/test_mpi_rigid_body_flow_interaction.py | 2 +- tests/test_utils/test_mpi_utils_2d.py | 8 ++++---- tests/test_utils/test_mpi_utils_3d.py | 4 ++-- 16 files changed, 21 insertions(+), 21 deletions(-) diff --git a/tests/test_numeric/test_eulerian_grid_ops/test_poisson_solver_2d/test_fft_mpi_2d.py b/tests/test_numeric/test_eulerian_grid_ops/test_poisson_solver_2d/test_fft_mpi_2d.py index f8cab81..e82bdda 100644 --- a/tests/test_numeric/test_eulerian_grid_ops/test_poisson_solver_2d/test_fft_mpi_2d.py +++ b/tests/test_numeric/test_eulerian_grid_ops/test_poisson_solver_2d/test_fft_mpi_2d.py @@ -9,7 +9,7 @@ from scipy.fft import rfftn -@pytest.mark.mpi(group="MPI_Poisson_solver_2d", min_size=2) +@pytest.mark.mpi(group="MPI_Poisson_solver_2d", min_size=4) @pytest.mark.parametrize("ghost_size", [1, 2]) @pytest.mark.parametrize("precision", ["single", "double"]) @pytest.mark.parametrize("rank_distribution", [(1, 0), (0, 1)]) diff --git a/tests/test_numeric/test_eulerian_grid_ops/test_poisson_solver_2d/test_unbounded_poisson_solver_mpi_2d.py b/tests/test_numeric/test_eulerian_grid_ops/test_poisson_solver_2d/test_unbounded_poisson_solver_mpi_2d.py index b23a280..989d393 100644 --- a/tests/test_numeric/test_eulerian_grid_ops/test_poisson_solver_2d/test_unbounded_poisson_solver_mpi_2d.py +++ b/tests/test_numeric/test_eulerian_grid_ops/test_poisson_solver_2d/test_unbounded_poisson_solver_mpi_2d.py @@ -13,7 +13,7 @@ ) -@pytest.mark.mpi(group="MPI_unbounded_poisson_solve_2d", min_size=2) +@pytest.mark.mpi(group="MPI_unbounded_poisson_solve_2d", min_size=4) @pytest.mark.parametrize("ghost_size", [1, 2]) @pytest.mark.parametrize("precision", ["single", "double"]) @pytest.mark.parametrize("rank_distribution", [(1, 0), (0, 1)]) diff --git a/tests/test_numeric/test_eulerian_grid_ops/test_stencil_ops_2d/test_advection_flux_mpi_2d.py b/tests/test_numeric/test_eulerian_grid_ops/test_stencil_ops_2d/test_advection_flux_mpi_2d.py index 7ef4975..dd91065 100644 --- a/tests/test_numeric/test_eulerian_grid_ops/test_stencil_ops_2d/test_advection_flux_mpi_2d.py +++ b/tests/test_numeric/test_eulerian_grid_ops/test_stencil_ops_2d/test_advection_flux_mpi_2d.py @@ -14,7 +14,7 @@ ) -@pytest.mark.mpi(group="MPI_stencil_ops_2d", min_size=2) +@pytest.mark.mpi(group="MPI_stencil_ops_2d", min_size=4) @pytest.mark.parametrize("ghost_size", [pytest.param(1, marks=pytest.mark.xfail), 2]) @pytest.mark.parametrize("precision", ["single", "double"]) @pytest.mark.parametrize("rank_distribution", [(1, 0), (0, 1)]) diff --git a/tests/test_numeric/test_eulerian_grid_ops/test_stencil_ops_2d/test_advection_timestep_mpi_2d.py b/tests/test_numeric/test_eulerian_grid_ops/test_stencil_ops_2d/test_advection_timestep_mpi_2d.py index 360b5d1..afd91d7 100644 --- a/tests/test_numeric/test_eulerian_grid_ops/test_stencil_ops_2d/test_advection_timestep_mpi_2d.py +++ b/tests/test_numeric/test_eulerian_grid_ops/test_stencil_ops_2d/test_advection_timestep_mpi_2d.py @@ -14,7 +14,7 @@ ) -@pytest.mark.mpi(group="MPI_stencil_ops_2d", min_size=2) +@pytest.mark.mpi(group="MPI_stencil_ops_2d", min_size=4) @pytest.mark.parametrize("ghost_size", [pytest.param(1, marks=pytest.mark.xfail), 2]) @pytest.mark.parametrize("precision", ["single", "double"]) @pytest.mark.parametrize("rank_distribution", [(1, 0), (0, 1)]) diff --git a/tests/test_numeric/test_eulerian_grid_ops/test_stencil_ops_2d/test_brinkmann_penalise_mpi_2d.py b/tests/test_numeric/test_eulerian_grid_ops/test_stencil_ops_2d/test_brinkmann_penalise_mpi_2d.py index a6cb98d..043412d 100644 --- a/tests/test_numeric/test_eulerian_grid_ops/test_stencil_ops_2d/test_brinkmann_penalise_mpi_2d.py +++ b/tests/test_numeric/test_eulerian_grid_ops/test_stencil_ops_2d/test_brinkmann_penalise_mpi_2d.py @@ -10,7 +10,7 @@ ) -@pytest.mark.mpi(group="MPI_stencil_ops_2d", min_size=2) +@pytest.mark.mpi(group="MPI_stencil_ops_2d", min_size=4) @pytest.mark.parametrize("ghost_size", [1, 2]) @pytest.mark.parametrize("precision", ["single", "double"]) @pytest.mark.parametrize("rank_distribution", [(1, 0), (0, 1)]) @@ -110,7 +110,7 @@ def test_mpi_brinkmann_penalise_scalar_field_2d( ) -@pytest.mark.mpi(group="MPI_stencil_ops_2d", min_size=2) +@pytest.mark.mpi(group="MPI_stencil_ops_2d", min_size=4) @pytest.mark.parametrize("ghost_size", [1, 2]) @pytest.mark.parametrize("precision", ["single", "double"]) @pytest.mark.parametrize("rank_distribution", [(1, 0), (0, 1)]) diff --git a/tests/test_numeric/test_eulerian_grid_ops/test_stencil_ops_2d/test_char_func_from_level_set_mpi_2d.py b/tests/test_numeric/test_eulerian_grid_ops/test_stencil_ops_2d/test_char_func_from_level_set_mpi_2d.py index a11d50d..eccf7d9 100644 --- a/tests/test_numeric/test_eulerian_grid_ops/test_stencil_ops_2d/test_char_func_from_level_set_mpi_2d.py +++ b/tests/test_numeric/test_eulerian_grid_ops/test_stencil_ops_2d/test_char_func_from_level_set_mpi_2d.py @@ -10,7 +10,7 @@ ) -@pytest.mark.mpi(group="MPI_stencil_ops_2d", min_size=2) +@pytest.mark.mpi(group="MPI_stencil_ops_2d", min_size=4) @pytest.mark.parametrize("ghost_size", [1, 2]) @pytest.mark.parametrize("precision", ["single", "double"]) @pytest.mark.parametrize("rank_distribution", [(1, 0), (0, 1)]) diff --git a/tests/test_numeric/test_eulerian_grid_ops/test_stencil_ops_2d/test_diffusion_flux_mpi_2d.py b/tests/test_numeric/test_eulerian_grid_ops/test_stencil_ops_2d/test_diffusion_flux_mpi_2d.py index 5720ecf..3aad407 100644 --- a/tests/test_numeric/test_eulerian_grid_ops/test_stencil_ops_2d/test_diffusion_flux_mpi_2d.py +++ b/tests/test_numeric/test_eulerian_grid_ops/test_stencil_ops_2d/test_diffusion_flux_mpi_2d.py @@ -14,7 +14,7 @@ ) -@pytest.mark.mpi(group="MPI_stencil_ops_2d", min_size=2) +@pytest.mark.mpi(group="MPI_stencil_ops_2d", min_size=4) @pytest.mark.parametrize("ghost_size", [1, 2]) @pytest.mark.parametrize("precision", ["single", "double"]) @pytest.mark.parametrize("rank_distribution", [(1, 0), (0, 1)]) diff --git a/tests/test_numeric/test_eulerian_grid_ops/test_stencil_ops_2d/test_diffusion_timestep_mpi_2d.py b/tests/test_numeric/test_eulerian_grid_ops/test_stencil_ops_2d/test_diffusion_timestep_mpi_2d.py index 81ef7d2..34cfe1b 100644 --- a/tests/test_numeric/test_eulerian_grid_ops/test_stencil_ops_2d/test_diffusion_timestep_mpi_2d.py +++ b/tests/test_numeric/test_eulerian_grid_ops/test_stencil_ops_2d/test_diffusion_timestep_mpi_2d.py @@ -14,7 +14,7 @@ ) -@pytest.mark.mpi(group="MPI_stencil_ops_2d", min_size=2) +@pytest.mark.mpi(group="MPI_stencil_ops_2d", min_size=4) @pytest.mark.parametrize("ghost_size", [1, 2]) @pytest.mark.parametrize("precision", ["single", "double"]) @pytest.mark.parametrize("rank_distribution", [(1, 0), (0, 1)]) diff --git a/tests/test_numeric/test_eulerian_grid_ops/test_stencil_ops_2d/test_outplane_field_curl_mpi_2d.py b/tests/test_numeric/test_eulerian_grid_ops/test_stencil_ops_2d/test_outplane_field_curl_mpi_2d.py index 90c8cb3..ec35095 100644 --- a/tests/test_numeric/test_eulerian_grid_ops/test_stencil_ops_2d/test_outplane_field_curl_mpi_2d.py +++ b/tests/test_numeric/test_eulerian_grid_ops/test_stencil_ops_2d/test_outplane_field_curl_mpi_2d.py @@ -14,7 +14,7 @@ ) -@pytest.mark.mpi(group="MPI_stencil_ops_2d", min_size=2) +@pytest.mark.mpi(group="MPI_stencil_ops_2d", min_size=4) @pytest.mark.parametrize("ghost_size", [1, 2]) @pytest.mark.parametrize("precision", ["single", "double"]) @pytest.mark.parametrize("rank_distribution", [(1, 0), (0, 1)]) diff --git a/tests/test_numeric/test_eulerian_grid_ops/test_stencil_ops_2d/test_penalise_field_boundary_mpi_2d.py b/tests/test_numeric/test_eulerian_grid_ops/test_stencil_ops_2d/test_penalise_field_boundary_mpi_2d.py index 751f796..5155288 100644 --- a/tests/test_numeric/test_eulerian_grid_ops/test_stencil_ops_2d/test_penalise_field_boundary_mpi_2d.py +++ b/tests/test_numeric/test_eulerian_grid_ops/test_stencil_ops_2d/test_penalise_field_boundary_mpi_2d.py @@ -14,7 +14,7 @@ ) -@pytest.mark.mpi(group="MPI_stencil_ops_2d", min_size=2) +@pytest.mark.mpi(group="MPI_stencil_ops_2d", min_size=4) @pytest.mark.parametrize("ghost_size", [1, 2]) @pytest.mark.parametrize("precision", ["single", "double"]) @pytest.mark.parametrize("rank_distribution", [(1, 0), (0, 1)]) diff --git a/tests/test_numeric/test_eulerian_grid_ops/test_stencil_ops_2d/test_update_vorticity_from_velocity_forcing_mpi_2d.py b/tests/test_numeric/test_eulerian_grid_ops/test_stencil_ops_2d/test_update_vorticity_from_velocity_forcing_mpi_2d.py index e41df68..7baaa54 100644 --- a/tests/test_numeric/test_eulerian_grid_ops/test_stencil_ops_2d/test_update_vorticity_from_velocity_forcing_mpi_2d.py +++ b/tests/test_numeric/test_eulerian_grid_ops/test_stencil_ops_2d/test_update_vorticity_from_velocity_forcing_mpi_2d.py @@ -14,7 +14,7 @@ ) -@pytest.mark.mpi(group="MPI_stencil_ops_2d", min_size=2) +@pytest.mark.mpi(group="MPI_stencil_ops_2d", min_size=4) @pytest.mark.parametrize("ghost_size", [1, 2]) @pytest.mark.parametrize("precision", ["single", "double"]) @pytest.mark.parametrize("rank_distribution", [(1, 0), (0, 1)]) diff --git a/tests/test_numeric/test_eulerian_grid_ops/test_stencil_ops_3d/test_advection_timestep_mpi_3d.py b/tests/test_numeric/test_eulerian_grid_ops/test_stencil_ops_3d/test_advection_timestep_mpi_3d.py index df405ec..7f1f1fa 100644 --- a/tests/test_numeric/test_eulerian_grid_ops/test_stencil_ops_3d/test_advection_timestep_mpi_3d.py +++ b/tests/test_numeric/test_eulerian_grid_ops/test_stencil_ops_3d/test_advection_timestep_mpi_3d.py @@ -151,7 +151,7 @@ def test_mpi_advection_timestep_eno3_euler_forward_3d( ) -@pytest.mark.mpi(group="MPI_stencil_ops_3d", min_size=2) +@pytest.mark.mpi(group="MPI_stencil_ops_3d", min_size=4) @pytest.mark.parametrize("ghost_size", [pytest.param(1, marks=pytest.mark.xfail), 2]) @pytest.mark.parametrize("precision", ["single", "double"]) @pytest.mark.parametrize( diff --git a/tests/test_simulator/immersed_body/cosserat_rod/test_mpi_cosserat_rod_flow_interaction.py b/tests/test_simulator/immersed_body/cosserat_rod/test_mpi_cosserat_rod_flow_interaction.py index efb49ec..ecc370c 100644 --- a/tests/test_simulator/immersed_body/cosserat_rod/test_mpi_cosserat_rod_flow_interaction.py +++ b/tests/test_simulator/immersed_body/cosserat_rod/test_mpi_cosserat_rod_flow_interaction.py @@ -8,7 +8,7 @@ from sopht_mpi.utils import MPIConstruct2D, MPIGhostCommunicator2D -@pytest.mark.mpi(group="MPI_cosserat_rod_flow_interaction", min_size=2) +@pytest.mark.mpi(group="MPI_cosserat_rod_flow_interaction", min_size=4) @pytest.mark.parametrize("precision", ["single", "double"]) @pytest.mark.parametrize("master_rank", [0, 1]) @pytest.mark.parametrize("n_elems", [8, 16]) diff --git a/tests/test_simulator/immersed_body/rigid_body/test_mpi_rigid_body_flow_interaction.py b/tests/test_simulator/immersed_body/rigid_body/test_mpi_rigid_body_flow_interaction.py index f4376d0..cba9f1c 100644 --- a/tests/test_simulator/immersed_body/rigid_body/test_mpi_rigid_body_flow_interaction.py +++ b/tests/test_simulator/immersed_body/rigid_body/test_mpi_rigid_body_flow_interaction.py @@ -8,7 +8,7 @@ from sopht_mpi.utils import MPIConstruct2D, MPIGhostCommunicator2D -@pytest.mark.mpi(group="MPI_rigid_body_flow_interaction", min_size=2) +@pytest.mark.mpi(group="MPI_rigid_body_flow_interaction", min_size=4) @pytest.mark.parametrize("precision", ["single", "double"]) @pytest.mark.parametrize("master_rank", [0, 1]) def test_mpi_rigid_body_flow_interaction(precision, master_rank): diff --git a/tests/test_utils/test_mpi_utils_2d.py b/tests/test_utils/test_mpi_utils_2d.py index ef8dca5..3fd24c0 100644 --- a/tests/test_utils/test_mpi_utils_2d.py +++ b/tests/test_utils/test_mpi_utils_2d.py @@ -10,7 +10,7 @@ from mpi4py import MPI -@pytest.mark.mpi(group="MPI_utils", min_size=2) +@pytest.mark.mpi(group="MPI_utils", min_size=4) @pytest.mark.parametrize("ghost_size", [1, 2, 3]) @pytest.mark.parametrize("precision", ["single", "double"]) @pytest.mark.parametrize("rank_distribution", [(1, 0), (0, 1)]) @@ -54,7 +54,7 @@ def test_mpi_field_gather_scatter( np.testing.assert_allclose(ref_global_field, global_field) -@pytest.mark.mpi(group="MPI_utils", min_size=2) +@pytest.mark.mpi(group="MPI_utils", min_size=4) @pytest.mark.parametrize("ghost_size", [1, 2, 3]) @pytest.mark.parametrize("precision", ["single", "double"]) @pytest.mark.parametrize("rank_distribution", [(1, 0), (0, 1)]) @@ -105,7 +105,7 @@ def test_mpi_ghost_communication( ) -@pytest.mark.mpi(group="MPI_utils", min_size=2) +@pytest.mark.mpi(group="MPI_utils", min_size=4) @pytest.mark.parametrize("ghost_size", [1, 2, 3]) @pytest.mark.parametrize("precision", ["single", "double"]) @pytest.mark.parametrize("rank_distribution", [(1, 0), (0, 1)]) @@ -186,7 +186,7 @@ def test_mpi_lagrangian_field_map( assert global_num_lag_nodes == global_lagrangian_positions.shape[1] -@pytest.mark.mpi(group="MPI_utils", min_size=2) +@pytest.mark.mpi(group="MPI_utils", min_size=4) @pytest.mark.parametrize("ghost_size", [1, 2, 3]) @pytest.mark.parametrize("precision", ["single", "double"]) @pytest.mark.parametrize("rank_distribution", [(1, 0), (0, 1)]) diff --git a/tests/test_utils/test_mpi_utils_3d.py b/tests/test_utils/test_mpi_utils_3d.py index 73747c1..94ef7e7 100644 --- a/tests/test_utils/test_mpi_utils_3d.py +++ b/tests/test_utils/test_mpi_utils_3d.py @@ -8,7 +8,7 @@ ) -@pytest.mark.mpi(group="MPI_utils", min_size=2) +@pytest.mark.mpi(group="MPI_utils", min_size=4) @pytest.mark.parametrize("ghost_size", [1, 2, 3]) @pytest.mark.parametrize("precision", ["single", "double"]) @pytest.mark.parametrize( @@ -64,7 +64,7 @@ def test_mpi_field_gather_scatter( np.testing.assert_allclose(ref_global_field, global_field) -@pytest.mark.mpi(group="MPI_utils", min_size=2) +@pytest.mark.mpi(group="MPI_utils", min_size=4) @pytest.mark.parametrize("ghost_size", [1, 2, 3]) @pytest.mark.parametrize("precision", ["single", "double"]) @pytest.mark.parametrize(