From f7f30301de34644494f5ccf2949fdecb4988e73d Mon Sep 17 00:00:00 2001 From: Matt Wala Date: Thu, 30 Nov 2017 16:43:35 -0600 Subject: [PATCH 1/2] Fix an unbound variable in ChainedDiscretizationConnection. Also test ChainedDiscretizationConnection, because it doesn't look like it is being tested. --- .../discretization/connection/__init__.py | 1 + test/test_meshmode.py | 58 +++++++++++++++++++ 2 files changed, 59 insertions(+) diff --git a/meshmode/discretization/connection/__init__.py b/meshmode/discretization/connection/__init__.py index da982c9d..85e41d89 100644 --- a/meshmode/discretization/connection/__init__.py +++ b/meshmode/discretization/connection/__init__.py @@ -218,6 +218,7 @@ class ChainedDiscretizationConnection(DiscretizationConnection): else: from_discr = connections[0].from_discr is_surjective = all(cnx.is_surjective for cnx in connections) + to_discr = connections[-1].to_discr else: if from_discr is None: raise ValueError("connections may not be empty if from_discr " diff --git a/test/test_meshmode.py b/test/test_meshmode.py index 2cb0470a..9df446fe 100644 --- a/test/test_meshmode.py +++ b/test/test_meshmode.py @@ -1036,6 +1036,64 @@ def test_quad_multi_element(): plt.show() +# {{{ ChainedDiscretizationConnection + +def test_ChainedDiscretizationConnection(ctx_getter): + mesh_order = 5 + order = 5 + npanels = 10 + group_factory = InterpolatoryQuadratureSimplexGroupFactory + + def refine_flags(mesh): + return np.ones(mesh.nelements) + + cl_ctx = ctx_getter() + queue = cl.CommandQueue(cl_ctx) + + from functools import partial + from meshmode.discretization import Discretization + from meshmode.discretization.connection import make_refinement_connection + from meshmode.mesh.generation import make_curve_mesh, ellipse + + mesh = make_curve_mesh( + partial(ellipse, 1), np.linspace(0, 1, npanels + 1), + order=mesh_order) + + discr = Discretization(cl_ctx, mesh, group_factory(order)) + + connections = [] + + def refine_discr(discr): + mesh = discr.mesh + from meshmode.mesh.refinement import Refiner + refiner = Refiner(mesh) + flags = refine_flags(mesh) + refiner.refine(flags) + connections.append( + make_refinement_connection(refiner, discr, group_factory(order))) + return connections[-1].to_discr + + discr = refine_discr(discr) + refine_discr(discr) + + from meshmode.discretization.connection import ( + ChainedDiscretizationConnection) + + chained_conn = ChainedDiscretizationConnection(connections) + + def f(x): + from six.moves import reduce + return 0.1 * reduce(lambda x, y: x * cl.clmath.sin(5 * y), x) + + x = connections[0].from_discr.nodes().with_queue(queue) + + assert np.allclose( + chained_conn(queue, f(x)).get(queue), + connections[1](queue, connections[0](queue, f(x))).get(queue)) + +# }}} + + if __name__ == "__main__": import sys if len(sys.argv) > 1: -- GitLab From 18540dd30352bbc29245f1763669c4892285c870 Mon Sep 17 00:00:00 2001 From: Matt Wala Date: Thu, 30 Nov 2017 16:53:48 -0600 Subject: [PATCH 2/2] flake8 fix --- test/test_meshmode.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test/test_meshmode.py b/test/test_meshmode.py index 9df446fe..958130ac 100644 --- a/test/test_meshmode.py +++ b/test/test_meshmode.py @@ -1038,7 +1038,7 @@ def test_quad_multi_element(): # {{{ ChainedDiscretizationConnection -def test_ChainedDiscretizationConnection(ctx_getter): +def test_ChainedDiscretizationConnection(ctx_getter): # noqa mesh_order = 5 order = 5 npanels = 10 -- GitLab