From 74b891c3e7947592b0a506ea3c072e873adda6a5 Mon Sep 17 00:00:00 2001 From: Markus Holzer <markus.holzer@fau.de> Date: Mon, 8 Nov 2021 09:02:27 +0100 Subject: [PATCH] shortened some test cases --- ...onserved_quantity_relaxation_invariance.py | 30 +++++++++++++------ lbmpy_tests/test_diffusion.py | 17 +++++++---- 2 files changed, 33 insertions(+), 14 deletions(-) diff --git a/lbmpy_tests/test_conserved_quantity_relaxation_invariance.py b/lbmpy_tests/test_conserved_quantity_relaxation_invariance.py index af29332f..8881a7d3 100644 --- a/lbmpy_tests/test_conserved_quantity_relaxation_invariance.py +++ b/lbmpy_tests/test_conserved_quantity_relaxation_invariance.py @@ -58,7 +58,7 @@ def check_for_collision_rule_equivalence(collision_rule1, collision_rule2, use_n for eq1, eq2 in zip(collision_rule1.main_assignments, collision_rule2.main_assignments): diff = sp.cancel(sp.expand(eq1.rhs - eq2.rhs)) if use_numeric_subs: - assert math.isclose(diff, 0, rel_tol=0.0, abs_tol=1e-12) + assert math.isclose(diff, 0, rel_tol=0.0, abs_tol=1e-10) else: assert diff == 0 @@ -78,8 +78,8 @@ def test_cumulant(): original_method = create_with_default_polynomial_cumulants(stencil, [sp.Symbol("omega")]) changed_method = __change_relaxation_rate_of_conserved_moments(original_method) - check_method_equivalence(original_method, changed_method, True, True) - check_method_equivalence(original_method, changed_method, False, True) + check_method_equivalence(original_method, changed_method, True, use_numeric_subs=True) + check_method_equivalence(original_method, changed_method, False, use_numeric_subs=True) @pytest.mark.longrun @@ -89,8 +89,8 @@ def test_srt(): maxwellian_moments=True) changed_method = __change_relaxation_rate_of_conserved_moments(original_method) - check_method_equivalence(original_method, changed_method, True) - check_method_equivalence(original_method, changed_method, False) + check_method_equivalence(original_method, changed_method, True, use_numeric_subs=True) + check_method_equivalence(original_method, changed_method, False, use_numeric_subs=True) def test_srt_short(): @@ -99,8 +99,8 @@ def test_srt_short(): maxwellian_moments=True) changed_method = __change_relaxation_rate_of_conserved_moments(original_method) - check_method_equivalence(original_method, changed_method, True) - check_method_equivalence(original_method, changed_method, False) + check_method_equivalence(original_method, changed_method, True, use_numeric_subs=False) + check_method_equivalence(original_method, changed_method, False, use_numeric_subs=False) @pytest.mark.parametrize('stencil_name', [Stencil.D2Q9, Stencil.D3Q19, Stencil.D3Q27]) @@ -117,8 +117,8 @@ def test_trt(stencil_name, continuous_moments): @pytest.mark.parametrize('method_name', [Method.TRT_KBC_N1, Method.TRT_KBC_N2, Method.TRT_KBC_N3, Method.TRT_KBC_N4]) -@pytest.mark.parametrize('dim', [2, 3]) -def test_trt_kbc_long(method_name, dim): +def test_trt_kbc(method_name): + dim = 2 method_nr = method_name.name[-1] original_method = create_trt_kbc(dim, sp.Symbol("omega1"), sp.Symbol("omega2"), method_name='KBC-N' + method_nr, @@ -127,3 +127,15 @@ def test_trt_kbc_long(method_name, dim): check_method_equivalence(original_method, changed_method, True) check_method_equivalence(original_method, changed_method, False) + +@pytest.mark.parametrize('method_name', [Method.TRT_KBC_N1, Method.TRT_KBC_N2, Method.TRT_KBC_N3, Method.TRT_KBC_N4]) +@pytest.mark.longrun +def test_trt_kbc_long(method_name): + dim = 3 + method_nr = method_name.name[-1] + original_method = create_trt_kbc(dim, sp.Symbol("omega1"), sp.Symbol("omega2"), + method_name='KBC-N' + method_nr, + maxwellian_moments=False) + changed_method = __change_relaxation_rate_of_conserved_moments(original_method) + check_method_equivalence(original_method, changed_method, True) + check_method_equivalence(original_method, changed_method, False) diff --git a/lbmpy_tests/test_diffusion.py b/lbmpy_tests/test_diffusion.py index 69215f25..df390b94 100644 --- a/lbmpy_tests/test_diffusion.py +++ b/lbmpy_tests/test_diffusion.py @@ -75,8 +75,8 @@ def test_diffusion(): C(x,y) = 1 * erfc(y / sqrt(4Dx/u)) The hydrodynamic field is not simulated, instead a constant velocity is assumed. - """ - + """ + pytest.importorskip("pycuda") # Parameters domain_size = (1600, 160) omega = 1.38 @@ -84,9 +84,10 @@ def test_diffusion(): velocity = 0.05 time_steps = 50000 stencil = LBStencil(Stencil.D2Q9) + target = ps.Target.GPU # Data Handling - dh = ps.create_data_handling(domain_size=domain_size) + dh = ps.create_data_handling(domain_size=domain_size, default_target=target) vel_field = dh.add_array('vel_field', values_per_cell=stencil.D) dh.fill('vel_field', velocity, 0, ghost_layers=True) @@ -96,7 +97,9 @@ def test_diffusion(): dh.fill('con_field', 0.0, ghost_layers=True) pdfs = dh.add_array('pdfs', values_per_cell=stencil.Q) + dh.fill('pdfs', 0.0, ghost_layers=True) pdfs_tmp = dh.add_array('pdfs_tmp', values_per_cell=stencil.Q) + dh.fill('pdfs_tmp', 0.0, ghost_layers=True) # Lattice Boltzmann method lbm_config = LBMConfig(stencil=stencil, method=Method.MRT, relaxation_rates=[1, 1.5, 1, 1.5, 1], @@ -104,21 +107,24 @@ def test_diffusion(): weighted=True, kernel_type='stream_pull_collide') lbm_opt = LBMOptimisation(symbolic_field=pdfs, symbolic_temporary_field=pdfs_tmp) + config = ps.CreateKernelConfig(target=dh.default_target, cpu_openmp=True) method = create_lb_method(lbm_config=lbm_config) method.set_conserved_moments_relaxation_rate(omega) lbm_config = replace(lbm_config, lb_method=method) update_rule = create_lb_update_rule(lbm_config=lbm_config, lbm_optimisation=lbm_opt) - kernel = ps.create_kernel(update_rule).compile() + kernel = ps.create_kernel(update_rule, config=config).compile() # PDF initalization init = pdf_initialization_assignments(method, con_field.center, vel_field.center_vector, pdfs.center_vector) dh.run_kernel(ps.create_kernel(init).compile()) + dh.all_to_gpu() + # Boundary Handling - bh = LatticeBoltzmannBoundaryHandling(update_rule.method, dh, 'pdfs', name="bh") + bh = LatticeBoltzmannBoundaryHandling(update_rule.method, dh, 'pdfs', name="bh", target=dh.default_target) add_box_boundary(bh, boundary=NeumannByCopy()) bh.set_boundary(DiffusionDirichlet(0), slice_from_direction('W', dh.dim)) bh.set_boundary(DiffusionDirichlet(1), slice_from_direction('S', dh.dim)) @@ -129,6 +135,7 @@ def test_diffusion(): dh.run_kernel(kernel) dh.swap("pdfs", "pdfs_tmp") + dh.all_to_cpu() # Verification x = np.arange(1, domain_size[0], 1) y = np.arange(0, domain_size[1], 1) -- GitLab