diff --git a/test/test_meshmode.py b/test/test_meshmode.py index c6859cc94754577d462d32e7a2e925c8240d12d6..e2251a36a1b1fb47ef071c7b4d5001ced25deba0 100644 --- a/test/test_meshmode.py +++ b/test/test_meshmode.py @@ -48,26 +48,44 @@ import logging logger = logging.getLogger(__name__) -# {{{ partition_mesh -''' -#TODO facial_adjacency_groups is not available in generate_torus. -def test_partition_torus_mesh(): - from meshmode.mesh.generation import generate_torus - my_mesh = generate_torus(2, 1, n_outer=2, n_inner=2) +def test_partition_interpolation(ctx_getter): + cl_ctx = ctx_getter() + queue = cl.CommandQueue(cl_ctx) + order = 4 + group_factory = PolynomialWarpAndBlendGroupFactory(order) + n = 3 + dim = 2 + num_parts = 7 + from meshmode.mesh.generation import generate_warped_rect_mesh + mesh = generate_warped_rect_mesh(dim, order=order, n=n) + + adjacency_list = np.zeros((mesh.nelements,), dtype=set) + for elem in range(mesh.nelements): + adjacency_list[elem] = set() + starts = mesh.nodal_adjacency.neighbors_starts + for n in range(starts[elem], starts[elem + 1]): + adjacency_list[elem].add(mesh.nodal_adjacency.neighbors[n]) - part_per_element = np.array([0, 1, 2, 1, 1, 2, 1, 0]) + from pymetis import part_graph + (_, p) = part_graph(num_parts, adjacency=adjacency_list) + part_per_element = np.array(p) from meshmode.mesh.processing import partition_mesh - (part_mesh0, _) = partition_mesh(my_mesh, part_per_element, 0) - (part_mesh1, _) = partition_mesh(my_mesh, part_per_element, 1) - (part_mesh2, _) = partition_mesh(my_mesh, part_per_element, 2) + part_meshes = [ + partition_mesh(mesh, part_per_element, i)[0] for i in range(num_parts)] - assert part_mesh0.nelements == 2 - assert part_mesh1.nelements == 4 - assert part_mesh2.nelements == 2 -''' + from meshmode.discretization import Discretization + vol_discrs = [Discretization(cl_ctx, part_meshes[i], group_factory) + for i in range(num_parts)] + + from meshmode.discretization.connection import (make_face_restriction, + check_connection) + bdry_connections = [make_face_restriction(vol_discrs[i], group_factory, + FRESTR_INTERIOR_FACES) for i in range(num_parts)] +# {{{ partition_mesh + def test_partition_boxes_mesh(): n = 5 num_parts = 7