From 5ad0a6bb514009945b875239dc984ce9325963ac Mon Sep 17 00:00:00 2001 From: Matt Wala Date: Thu, 18 May 2017 13:26:35 -0500 Subject: [PATCH 1/6] test_identities: Run on sphere. --- test/test_layer_pot.py | 1 + 1 file changed, 1 insertion(+) diff --git a/test/test_layer_pot.py b/test/test_layer_pot.py index 1c704e52..7748e104 100644 --- a/test/test_layer_pot.py +++ b/test/test_layer_pot.py @@ -712,6 +712,7 @@ def get_sphere_mesh(refinement_increment, target_order): #("circle", partial(ellipse, 1)), #("3-to-1 ellipse", partial(ellipse, 3)), ("starfish", get_starfish_mesh), + ("sphere", get_sphere_mesh), ]) @pytest.mark.parametrize("qbx_order", [5]) @pytest.mark.parametrize(("zero_op_name", "k"), [ -- GitLab From dabc73b05a230252f2bbbfa442e05c4203fe7ba1 Mon Sep 17 00:00:00 2001 From: Andreas Kloeckner Date: Fri, 19 May 2017 01:05:03 -0500 Subject: [PATCH 2/6] Twiddle knobs for 3D identities test --- test/test_layer_pot.py | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/test/test_layer_pot.py b/test/test_layer_pot.py index 7748e104..f7913e18 100644 --- a/test/test_layer_pot.py +++ b/test/test_layer_pot.py @@ -708,13 +708,12 @@ def get_sphere_mesh(refinement_increment, target_order): return mesh -@pytest.mark.parametrize(("mesh_name", "mesh_getter"), [ +@pytest.mark.parametrize(("mesh_name", "mesh_getter", "qbx_order"), [ #("circle", partial(ellipse, 1)), #("3-to-1 ellipse", partial(ellipse, 3)), - ("starfish", get_starfish_mesh), - ("sphere", get_sphere_mesh), + ("starfish", get_starfish_mesh, 5), + ("sphere", get_sphere_mesh, 3), ]) -@pytest.mark.parametrize("qbx_order", [5]) @pytest.mark.parametrize(("zero_op_name", "k"), [ ("green", 0), ("green", 1.2), @@ -797,7 +796,7 @@ def test_identities(ctx_getter, zero_op_name, mesh_name, mesh_getter, qbx_order, if d == 2: order_bump = 15 elif d == 3: - order_bump = 6 + order_bump = 8 qbx, _ = QBXLayerPotentialSource( pre_density_discr, 4*target_order, -- GitLab From 5dd1d50ab066da28c6096046a6510bac8a1ca72d Mon Sep 17 00:00:00 2001 From: Matt Wala Date: Thu, 1 Jun 2017 00:23:48 -0500 Subject: [PATCH 3/6] test_identities: Fix potential for 3D Helmholtz case. --- test/test_layer_pot.py | 15 +++++++++++---- 1 file changed, 11 insertions(+), 4 deletions(-) diff --git a/test/test_layer_pot.py b/test/test_layer_pot.py index f7913e18..91192cc1 100644 --- a/test/test_layer_pot.py +++ b/test/test_layer_pot.py @@ -810,10 +810,17 @@ def test_identities(ctx_getter, zero_op_name, mesh_name, mesh_getter, qbx_order, normal_host = [normal[j].get() for j in range(d)] if k != 0: - angle = 0.3 - wave_vec = np.array([np.cos(angle), np.sin(angle)]) - u = np.exp(1j*k*np.tensordot(wave_vec, nodes_host, axes=1)) - grad_u = 1j*k*wave_vec[:, np.newaxis]*u + if d == 2: + angle = 0.3 + wave_vec = np.array([np.cos(angle), np.sin(angle)]) + u = np.exp(1j*k*np.tensordot(wave_vec, nodes_host, axes=1)) + grad_u = 1j*k*wave_vec[:, np.newaxis]*u + else: + center = np.array([3, 1, 2]) + diff = nodes_host - center[:, np.newaxis] + r = la.norm(diff, axis=0) + u = np.exp(1j*k*r) / r + grad_u = diff * (1j*k*u/r - u/r**2) else: center = np.array([3, 1, 2])[:d] diff = nodes_host - center[:, np.newaxis] -- GitLab From 4b4d1fc215eea214d0de6158c411ff38bd11dd26 Mon Sep 17 00:00:00 2001 From: Matt Wala Date: Thu, 1 Jun 2017 00:31:02 -0500 Subject: [PATCH 4/6] test_identities: Use direct eval for 3D Helmholtz. --- test/test_layer_pot.py | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/test/test_layer_pot.py b/test/test_layer_pot.py index 91192cc1..c67b2e5c 100644 --- a/test/test_layer_pot.py +++ b/test/test_layer_pot.py @@ -795,12 +795,17 @@ def test_identities(ctx_getter, zero_op_name, mesh_name, mesh_getter, qbx_order, if d == 2: order_bump = 15 + direct_eval = False elif d == 3: order_bump = 8 + # FIXME: FMM kernel generation slow + direct_eval = (k != 0) qbx, _ = QBXLayerPotentialSource( - pre_density_discr, 4*target_order, - qbx_order, fmm_order=qbx_order + order_bump).with_refinement() + pre_density_discr, 4*target_order, + qbx_order, fmm_order=( + False if direct_eval else qbx_order + order_bump) + ).with_refinement() density_discr = qbx.density_discr # {{{ compute values of a solution to the PDE -- GitLab From 79298c01f621e712f59630a80047d293e400454f Mon Sep 17 00:00:00 2001 From: Matt Wala Date: Thu, 1 Jun 2017 00:58:09 -0500 Subject: [PATCH 5/6] Skip Helmholtz 3D tests. --- test/test_layer_pot.py | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/test/test_layer_pot.py b/test/test_layer_pot.py index 6e8a8100..8cf906df 100644 --- a/test/test_layer_pot.py +++ b/test/test_layer_pot.py @@ -748,6 +748,9 @@ def test_identities(ctx_getter, zero_op_name, mesh_name, mesh_getter, qbx_order, from sympy.core.cache import clear_cache clear_cache() + if mesh_name == "sphere" and k != 0: + pytest.skip("both direct eval and generating the FMM kernels are too slow") + target_order = 8 order_table = { @@ -823,8 +826,7 @@ def test_identities(ctx_getter, zero_op_name, mesh_name, mesh_getter, qbx_order, qbx, _ = QBXLayerPotentialSource( pre_density_discr, 4*target_order, - qbx_order, fmm_order=( - False if direct_eval else qbx_order + order_bump) + qbx_order, fmm_order=qbx_order + order_bump ).with_refinement(**refiner_extra_kwargs) density_discr = qbx.density_discr -- GitLab From 7725d1d1ff7d6932fe4927422ca98232444ee5bf Mon Sep 17 00:00:00 2001 From: Matt Wala Date: Thu, 1 Jun 2017 02:28:32 -0500 Subject: [PATCH 6/6] Skip green_grad test in 3D. --- test/test_layer_pot.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/test/test_layer_pot.py b/test/test_layer_pot.py index 8cf906df..dceb0c36 100644 --- a/test/test_layer_pot.py +++ b/test/test_layer_pot.py @@ -751,6 +751,9 @@ def test_identities(ctx_getter, zero_op_name, mesh_name, mesh_getter, qbx_order, if mesh_name == "sphere" and k != 0: pytest.skip("both direct eval and generating the FMM kernels are too slow") + if mesh_name == "sphere" and zero_op_name == "green_grad": + pytest.skip("does not achieve sufficient precision") + target_order = 8 order_table = { @@ -813,11 +816,8 @@ def test_identities(ctx_getter, zero_op_name, mesh_name, mesh_getter, qbx_order, if d == 2: order_bump = 15 - direct_eval = False elif d == 3: order_bump = 8 - # FIXME: FMM kernel generation slow - direct_eval = (k != 0) refiner_extra_kwargs = {} -- GitLab