Beispiel #1
0
 def test_element(self):
     """
     Test the creation and methods of a single element
     """
     nodes = [
         mesh.Node([0.0, 0.0]),
         mesh.Node([1.0, 0.0]),
         mesh.Node([1.0, 1.0]),
         mesh.Node([0.0, 1.0])
     ]
     for node in nodes:
         self.assertEquals(node.adjacent_elements, [])
     element = mesh.Element(nodes, 42)
     for node in element.nodes:
         self.assertEqual(len(node.adjacent_elements), 1)
         self.assertEqual(node.adjacent_elements[0].id_in_frame, 42)
         self.assertEqual(node.get_adjacent_element_ids(), [42])
     self.assertEqual(element.get_num_nodes(), 4)
     self.assertEqual(element.id_in_frame, 42)
     self.assertAlmostEqual(element.calculate_area(), 1.0)
     np.testing.assert_almost_equal(element.calculate_centroid(),
                                    [0.5, 0.5])
Beispiel #2
0
    def test_mesh_methods(self):
        """create a 2 by 2 rectangular mesh and test the number
        of elements, their number of nodes, etc"""
        # make some vertices
        vertices = []
        vertices.append(mesh.Node([0.0, 0.0]))
        vertices.append(mesh.Node([1.0, 0.0]))
        vertices.append(mesh.Node([2.0, 0.0]))
        vertices.append(mesh.Node([0.0, 1.0]))
        vertices.append(mesh.Node([1.0, 1.0]))
        vertices.append(mesh.Node([2.0, 1.0]))
        vertices.append(mesh.Node([0.0, 2.0]))
        vertices.append(mesh.Node([1.0, 2.0]))
        vertices.append(mesh.Node([2.0, 2.0]))

        # make some elements
        list_of_elements = []
        list_of_elements.append(
            mesh.Element([vertices[0], vertices[1], vertices[4], vertices[3]]))
        list_of_elements.append(
            mesh.Element([vertices[1], vertices[2], vertices[5], vertices[4]]))
        list_of_elements.append(
            mesh.Element([vertices[3], vertices[4], vertices[7], vertices[6]]))
        list_of_elements.append(
            mesh.Element([vertices[4], vertices[5], vertices[8], vertices[7]]))

        simple_mesh = mesh.Mesh(vertices, list_of_elements)
        simple_mesh.assign_frame_ids_in_order()

        self.assertEqual(simple_mesh.get_num_nodes(), 9)
        self.assertEqual(simple_mesh.get_num_elements(), 4)
        for counter, element in enumerate(simple_mesh.elements):
            self.assertEqual(element.get_num_nodes(), 4)
            self.assertEqual(element.id_in_frame, counter)

        for counter, node in enumerate(simple_mesh.nodes):
            self.assertEqual(node.id, counter)

        expected_edges = np.array([[0, 1], [1, 4], [4, 3], [3, 0], [1, 2],
                                   [2, 5], [5, 4], [4, 7], [7, 6], [6, 3],
                                   [5, 8], [8, 7]])

        edges = simple_mesh.collect_edges()
        np.testing.assert_equal(edges, expected_edges)

        inner_edges = simple_mesh.collect_elements_of_inner_edges()
        self.assertEqual(len(inner_edges), 4)
        assert (set([0, 1]) in inner_edges)
        assert (set([0, 2]) in inner_edges)
        assert (set([1, 3]) in inner_edges)
        assert (set([2, 3]) in inner_edges)

        nodes_between_element_0_and_1 = simple_mesh.get_nodes_shared_by_elements(
            [0, 1])
        nodes_between_element_0_and_2 = simple_mesh.get_nodes_shared_by_elements(
            [0, 2])
        nodes_between_element_0_and_3 = simple_mesh.get_nodes_shared_by_elements(
            [0, 3])
        self.assertEqual(set([1, 4]), nodes_between_element_0_and_1)
        self.assertEqual(set([3, 4]), nodes_between_element_0_and_2)
        self.assertEqual(set([4]), nodes_between_element_0_and_3)

        simple_mesh.assign_frame_ids_in_order()
        network_representation = simple_mesh.generate_network()

        self.assertEqual(network_representation.number_of_nodes(), 4)
        self.assertEqual(network_representation.number_of_edges(), 4)

        assert (network_representation.has_edge(0, 1))
        assert (network_representation.has_edge(0, 2))
        assert (network_representation.has_edge(1, 3))
        assert (network_representation.has_edge(2, 3))

        # test width and height methods

        self.assertAlmostEquals(simple_mesh.calculate_width(), 2.0)
        self.assertAlmostEquals(simple_mesh.calculate_height(), 2.0)

        filename = 'simple_mesh.pdf'
        if os.path.exists(filename):
            os.remove(filename)
        simple_mesh.plot(path.join(dirname(__file__), 'output', filename))

        assert (os.path.exists(path.join(dirname(__file__), 'output',
                                         filename)))

        # test the calculate total area and calculate average area methods
        # as well as calculate centroid

        self.assertEqual(simple_mesh.calculate_total_area(), 4.0)
        self.assertEqual(simple_mesh.calculate_average_element_area(), 1.0)
        np.testing.assert_almost_equal(simple_mesh.calculate_centre(),
                                       [1.0, 1.0])
Beispiel #3
0
    def test_remove_boundary_elements(self):
        """tests whether we can correctly remove all boundary elements in a mesh
        """

        vertices = []
        vertices.append(mesh.Node([-2.0, 0.0]))
        vertices.append(mesh.Node([0.0, 0.0]))
        vertices.append(mesh.Node([2.0, 0.0]))
        vertices.append(mesh.Node([-2.0, 2.0]))
        vertices.append(mesh.Node([-1.0, 2.0]))
        vertices.append(mesh.Node([0.0, 1.0]))
        vertices.append(mesh.Node([1.0, 2.0]))
        vertices.append(mesh.Node([2.0, 2.0]))
        vertices.append(mesh.Node([-2.0, 3.0]))
        vertices.append(mesh.Node([-1.0, 3.0]))
        vertices.append(mesh.Node([1.0, 3.0]))
        vertices.append(mesh.Node([2.0, 3.0]))
        vertices.append(mesh.Node([-2.0, 5.0]))
        vertices.append(mesh.Node([0.0, 4.0]))
        vertices.append(mesh.Node([2.0, 5.0]))
        vertices.append(mesh.Node([0.0, 5.0]))

        # make some elements
        list_of_elements = []
        list_of_elements.append(
            mesh.Element([
                vertices[0], vertices[1], vertices[5], vertices[4], vertices[3]
            ]))
        list_of_elements.append(
            mesh.Element([
                vertices[1], vertices[2], vertices[7], vertices[6], vertices[5]
            ]))
        list_of_elements.append(
            mesh.Element([vertices[3], vertices[4], vertices[9], vertices[8]]))
        list_of_elements.append(
            mesh.Element([
                vertices[4], vertices[5], vertices[6], vertices[10],
                vertices[13], vertices[9]
            ]))
        list_of_elements.append(
            mesh.Element(
                [vertices[6], vertices[7], vertices[11], vertices[10]]))
        list_of_elements.append(
            mesh.Element([
                vertices[8], vertices[9], vertices[13], vertices[15],
                vertices[12]
            ]))
        list_of_elements.append(
            mesh.Element([
                vertices[10], vertices[11], vertices[14], vertices[15],
                vertices[13]
            ]))

        simple_mesh = mesh.Mesh(vertices, list_of_elements)

        simple_mesh.assign_frame_ids_in_order()

        self.assert_(not simple_mesh.elements[3].check_if_on_boundary())

        for element in simple_mesh.elements:
            if element.id_in_frame != 3:
                self.assert_(element.check_if_on_boundary())

        simple_mesh.remove_boundary_elements()
        self.assertEqual(simple_mesh.get_num_elements(), 1)
        self.assertEqual(simple_mesh.get_num_nodes(), 6)
        self.assertEqual(simple_mesh.elements[0].id_in_frame, 3)

        for node in simple_mesh.nodes:
            self.assertEqual(len(node.get_adjacent_element_ids()), 1)


#     def test_copy_large_mesh(self):
#         """test whether we can use deepcopy() to copy a mesh"""
#
#         random_mesh = mesh.creation.generate_random_tesselation(30, 30, 0)
#         random_mesh.assign_frame_ids_randomly()
#
#         mesh_copy = random_mesh.copy()
#
#         node_5_position = random_mesh.nodes[5].position
#         self.assertNotAlmostEqual(node_5_position[0], 1.01, msg = 'randomly ran into this, just run the test again!')
#         self.assertNotAlmostEqual(node_5_position[1], 1.01, msg = 'randomly ran into this, just run the test again!')
#
#         for node_index, node in enumerate(random_mesh.nodes):
#             np.testing.assert_almost_equal(node.position, mesh_copy.nodes[node_index].position)
#             self.assertEqual(node.id, mesh_copy.nodes[node_index].id)
#
#         for element_index, element in enumerate(random_mesh.elements):
#             self.assertEqual(element.id_in_frame, mesh_copy.elements[element_index].id_in_frame)
#             copied_element = mesh_copy.elements[element_index]
#             for node_index, node in enumerate(element.nodes):
#                 np.testing.assert_almost_equal(node.position, mesh_copy.nodes[node_index].position)
#                 self.assertEqual(node.id, copied_element.nodes[node_index].id)
#
#
#         mesh_copy.nodes[5].position = np.array([1.01, 1.01])
#
#         self.assertNotAlmostEqual(random_mesh.nodes[5].position[0], 1.01)
#         self.assertNotAlmostEqual(random_mesh.nodes[5].position[1], 1.01)
#
#         frame_id_of_7th_element = random_mesh.elements[7].id_in_frame
#
#         mesh_copy.elements[7].id_in_frame = 5000
#
#         self.assertEqual(random_mesh.elements[7].id_in_frame, frame_id_of_7th_element)
#         self.assertNotEqual(random_mesh.elements[7].id_in_frame, 5000)
#
#         for node in enumerate(random_mesh.nodes):
#             self.assertEquals(random_mesh.node.position, mesh_copy.node.position)
Beispiel #4
0
    def test_divide_element_in_direction(self):
        """Test whether we can perform a division event"""

        vertices = []
        vertices.append(mesh.Node([-2.0, 0.0]))
        vertices.append(mesh.Node([0.0, 0.0]))
        vertices.append(mesh.Node([2.0, 0.0]))
        vertices.append(mesh.Node([-2.0, 2.0]))
        vertices.append(mesh.Node([-1.0, 2.0]))
        vertices.append(mesh.Node([0.0, 1.0]))
        vertices.append(mesh.Node([1.0, 2.0]))
        vertices.append(mesh.Node([2.0, 2.0]))
        vertices.append(mesh.Node([-2.0, 3.0]))
        vertices.append(mesh.Node([-1.0, 3.0]))
        vertices.append(mesh.Node([1.0, 3.0]))
        vertices.append(mesh.Node([2.0, 3.0]))
        vertices.append(mesh.Node([-2.0, 5.0]))
        vertices.append(mesh.Node([0.0, 4.0]))
        vertices.append(mesh.Node([2.0, 5.0]))
        vertices.append(mesh.Node([0.0, 5.0]))

        # make some elements
        list_of_elements = []
        list_of_elements.append(
            mesh.Element([
                vertices[0], vertices[1], vertices[5], vertices[4], vertices[3]
            ]))
        list_of_elements.append(
            mesh.Element([
                vertices[1], vertices[2], vertices[7], vertices[6], vertices[5]
            ]))
        list_of_elements.append(
            mesh.Element([vertices[3], vertices[4], vertices[9], vertices[8]]))
        list_of_elements.append(
            mesh.Element([
                vertices[4], vertices[5], vertices[6], vertices[10],
                vertices[13], vertices[9]
            ]))
        list_of_elements.append(
            mesh.Element(
                [vertices[6], vertices[7], vertices[11], vertices[10]]))
        list_of_elements.append(
            mesh.Element([
                vertices[8], vertices[9], vertices[13], vertices[15],
                vertices[12]
            ]))
        list_of_elements.append(
            mesh.Element([
                vertices[10], vertices[11], vertices[14], vertices[15],
                vertices[13]
            ]))

        simple_mesh = mesh.Mesh(vertices, list_of_elements)

        self.assertEqual(simple_mesh.get_num_nodes(), 16)
        self.assertEqual(simple_mesh.get_num_elements(), 7)

        simple_mesh.assign_frame_ids_in_order()

        simple_mesh.plot(
            path.join(dirname(__file__), 'output', 'division_test_before.pdf'))

        area_of_element_to_divide = simple_mesh.get_element_with_frame_id(
            3).calculate_area()

        simple_mesh.divide_element_with_frame_id_in_direction(3, [0.5, 1.0])

        simple_mesh.plot(
            path.join(dirname(__file__), 'output', 'division_test_after.pdf'))

        self.assertEquals(
            simple_mesh.get_element_with_frame_id(0).get_num_nodes(), 6)
        self.assertEquals(
            simple_mesh.get_element_with_frame_id(1).get_num_nodes(), 5)
        self.assertEquals(
            simple_mesh.get_element_with_frame_id(2).get_num_nodes(), 4)
        self.assertEquals(
            simple_mesh.get_element_with_frame_id(4).get_num_nodes(), 4)
        self.assertEquals(
            simple_mesh.get_element_with_frame_id(5).get_num_nodes(), 5)
        self.assertEquals(
            simple_mesh.get_element_with_frame_id(6).get_num_nodes(), 6)

        first_new_node_exists = False
        second_new_node_exists = False
        for node in simple_mesh.nodes:
            if np.allclose(node.position, [0.5, 3.5]):
                first_new_node_exists = True
                first_new_node = node
            if np.allclose(node.position, [-0.5, 1.5]):
                second_new_node_exists = True
                second_new_node = node

        assert (first_new_node_exists)
        assert (second_new_node_exists)

        self.assertEquals(len(first_new_node.adjacent_elements), 3)
        self.assertEquals(len(second_new_node.adjacent_elements), 3)

        daughter_element_ids = set.intersection(
            set(first_new_node.get_adjacent_element_ids()),
            set(second_new_node.get_adjacent_element_ids()))

        self.assertEquals(len(daughter_element_ids), 2)

        first_daughter_element = simple_mesh.get_element_with_frame_id(
            daughter_element_ids.pop())
        self.assertAlmostEqual(first_daughter_element.get_num_nodes(), 5)

        second_daughter_element = simple_mesh.get_element_with_frame_id(
            daughter_element_ids.pop())
        self.assertAlmostEqual(second_daughter_element.get_num_nodes(), 5)

        self.assertAlmostEqual(
            first_daughter_element.calculate_area() +
            second_daughter_element.calculate_area(),
            area_of_element_to_divide)
Beispiel #5
0
    def test_make_triangular_element_in_division(self):
        """Test whether we can perform a division event"""

        vertices = []
        vertices.append(mesh.Node([-2.0, 0.0]))
        vertices.append(mesh.Node([0.0, 0.0]))
        vertices.append(mesh.Node([2.0, 0.0]))
        vertices.append(mesh.Node([-2.0, 2.0]))
        vertices.append(mesh.Node([-1.0, 2.0]))
        vertices.append(mesh.Node([0.0, 1.0]))
        vertices.append(mesh.Node([1.0, 2.0]))
        vertices.append(mesh.Node([2.0, 2.0]))
        vertices.append(mesh.Node([-2.0, 5.0]))
        vertices.append(mesh.Node([0.0, 4.0]))
        vertices.append(mesh.Node([2.0, 5.0]))
        vertices.append(mesh.Node([0.0, 5.0]))

        # make some elements
        list_of_elements = []
        list_of_elements.append(
            mesh.Element([
                vertices[0], vertices[1], vertices[5], vertices[4], vertices[3]
            ]))
        list_of_elements.append(
            mesh.Element([
                vertices[1], vertices[2], vertices[7], vertices[6], vertices[5]
            ]))
        list_of_elements.append(
            mesh.Element([vertices[4], vertices[5], vertices[6], vertices[9]]))
        list_of_elements.append(
            mesh.Element([
                vertices[9], vertices[11], vertices[8], vertices[3],
                vertices[4]
            ]))
        list_of_elements.append(
            mesh.Element([
                vertices[10], vertices[11], vertices[9], vertices[6],
                vertices[7]
            ]))

        simple_mesh = mesh.Mesh(vertices, list_of_elements)

        self.assertEqual(simple_mesh.get_num_nodes(), 12)
        self.assertEqual(simple_mesh.get_num_elements(), 5)

        simple_mesh.assign_frame_ids_in_order()

        simple_mesh.plot(
            path.join(dirname(__file__), 'output',
                      'triangular_division_test_before.pdf'))

        area_of_element_to_divide = simple_mesh.get_element_with_frame_id(
            3).calculate_area()

        simple_mesh.divide_element_with_frame_id_in_direction(2, [1.0, 0.0])

        simple_mesh.plot(
            path.join(dirname(__file__), 'output',
                      'triangular_division_test_after.pdf'))

        self.assertEquals(
            simple_mesh.get_element_with_frame_id(0).get_num_nodes(), 5)
        self.assertEquals(
            simple_mesh.get_element_with_frame_id(1).get_num_nodes(), 5)
        self.assertEquals(
            simple_mesh.get_element_with_frame_id(3).get_num_nodes(), 6)
        self.assertEquals(
            simple_mesh.get_element_with_frame_id(4).get_num_nodes(), 6)
        self.assertEquals(
            simple_mesh.get_element_with_frame_id(5).get_num_nodes(), 3)
        self.assertEquals(
            simple_mesh.get_element_with_frame_id(6).get_num_nodes(), 5)
Beispiel #6
0
    def test_kill_element(self):
        """Test whether we can perform a death event"""

        vertices = []
        vertices.append(mesh.Node([-2.0, 0.0]))
        vertices.append(mesh.Node([0.0, 0.0]))
        vertices.append(mesh.Node([2.0, 0.0]))
        vertices.append(mesh.Node([-2.0, 2.0]))
        vertices.append(mesh.Node([-1.0, 2.0]))
        vertices.append(mesh.Node([0.0, 1.0]))
        vertices.append(mesh.Node([1.0, 2.0]))
        vertices.append(mesh.Node([2.0, 2.0]))
        vertices.append(mesh.Node([-2.0, 3.0]))
        vertices.append(mesh.Node([-1.0, 3.0]))
        vertices.append(mesh.Node([1.0, 3.0]))
        vertices.append(mesh.Node([2.0, 3.0]))
        vertices.append(mesh.Node([-2.0, 5.0]))
        vertices.append(mesh.Node([0.0, 4.0]))
        vertices.append(mesh.Node([2.0, 5.0]))
        vertices.append(mesh.Node([0.0, 5.0]))

        # make some elements
        list_of_elements = []
        list_of_elements.append(
            mesh.Element([
                vertices[0], vertices[1], vertices[5], vertices[4], vertices[3]
            ]))
        list_of_elements.append(
            mesh.Element([
                vertices[1], vertices[2], vertices[7], vertices[6], vertices[5]
            ]))
        list_of_elements.append(
            mesh.Element([vertices[3], vertices[4], vertices[9], vertices[8]]))
        list_of_elements.append(
            mesh.Element([
                vertices[4], vertices[5], vertices[6], vertices[10],
                vertices[13], vertices[9]
            ]))
        list_of_elements.append(
            mesh.Element(
                [vertices[6], vertices[7], vertices[11], vertices[10]]))
        list_of_elements.append(
            mesh.Element([
                vertices[8], vertices[9], vertices[13], vertices[15],
                vertices[12]
            ]))
        list_of_elements.append(
            mesh.Element([
                vertices[10], vertices[11], vertices[14], vertices[15],
                vertices[13]
            ]))

        simple_mesh = mesh.Mesh(vertices, list_of_elements)

        self.assertEqual(simple_mesh.get_num_nodes(), 16)
        self.assertEqual(simple_mesh.get_num_elements(), 7)

        simple_mesh.assign_frame_ids_in_order()

        simple_mesh.plot(
            path.join(dirname(__file__), 'output', 'death_test_before.pdf'))

        simple_mesh.kill_element_with_frame_id(3)

        simple_mesh.plot(
            path.join(dirname(__file__), 'output', 'death_test_after.pdf'))

        self.assertEqual(simple_mesh.get_num_nodes(), 11)
        self.assertEqual(simple_mesh.get_num_elements(), 6)

        self.assertEquals(
            simple_mesh.get_element_with_frame_id(0).get_num_nodes(), 4)
        self.assertEquals(
            simple_mesh.get_element_with_frame_id(1).get_num_nodes(), 4)
        self.assertEquals(
            simple_mesh.get_element_with_frame_id(2).get_num_nodes(), 3)
        self.assertEquals(
            simple_mesh.get_element_with_frame_id(4).get_num_nodes(), 3)
        self.assertEquals(
            simple_mesh.get_element_with_frame_id(5).get_num_nodes(), 4)
        self.assertEquals(
            simple_mesh.get_element_with_frame_id(6).get_num_nodes(), 4)

        new_node_exists = False
        for node in simple_mesh.nodes:
            if np.allclose(node.position, [0.0, 2.5]):
                new_node_exists = True
                new_node = node
                break

        assert (new_node_exists)

        self.assertEquals(len(new_node.adjacent_elements), 6)

        # We want to test that the new node got added in the right order to all elements. If it isn't added at the right position to the
        # elements, the elements will have a different area, and hence their total area will not add up to the total area
        # that the mesh should have.

        self.assertAlmostEqual(simple_mesh.calculate_total_area(), 20.0)
Beispiel #7
0
    def test_t1_swap(self):
        """Test whether we can perform a t1 swap"""

        vertices = []
        vertices.append(mesh.Node([0.0, 0.0]))
        vertices.append(mesh.Node([1.0, 1.0]))
        vertices.append(mesh.Node([0.0, 2.0]))
        vertices.append(mesh.Node([-1.0, 1.0]))
        vertices.append(mesh.Node([3.0, 2.5]))
        vertices.append(mesh.Node([-3.0, 2.5]))
        vertices.append(mesh.Node([0.0, 3.0]))
        vertices.append(mesh.Node([1.0, 4.0]))
        vertices.append(mesh.Node([-1.0, 4.0]))
        vertices.append(mesh.Node([0.0, 5.0]))

        # make some elements
        list_of_elements = []
        list_of_elements.append(
            mesh.Element([vertices[0], vertices[1], vertices[2], vertices[3]]))
        list_of_elements.append(
            mesh.Element([
                vertices[1], vertices[4], vertices[7], vertices[6], vertices[2]
            ]))
        list_of_elements.append(
            mesh.Element([
                vertices[3], vertices[2], vertices[6], vertices[8], vertices[5]
            ]))
        list_of_elements.append(
            mesh.Element([vertices[6], vertices[7], vertices[9], vertices[8]]))

        simple_mesh = mesh.Mesh(vertices, list_of_elements)

        self.assertEqual(simple_mesh.get_num_nodes(), 10)
        self.assertEqual(simple_mesh.get_num_elements(), 4)

        simple_mesh.assign_frame_ids_in_order()

        simple_mesh.plot(
            path.join(dirname(__file__), 'output', 't1_swap_before.pdf'))
        simple_mesh.perform_t1_swap(2, 6)

        for element in simple_mesh.elements:
            if element.id_in_frame in [1, 2]:
                self.assertEqual(element.get_num_nodes(), 4)
            if element.id_in_frame in [0, 3]:
                self.assertEqual(element.get_num_nodes(), 5)

        distance_between_the_new_nodes = np.linalg.norm(
            simple_mesh.nodes[2].position - simple_mesh.nodes[6].position)

        centre_of_the_two_nodes = np.mean(np.vstack(
            (simple_mesh.nodes[2].position, simple_mesh.nodes[6].position)),
                                          axis=0)

        #         self.assert_( simple_mesh.nodes[2].get_adjacent_element_ids()
        simple_mesh.plot(
            path.join(dirname(__file__), 'output', 't1_swap_after.pdf'))
        self.assertAlmostEqual(distance_between_the_new_nodes, 0.2)
        np.testing.assert_almost_equal(centre_of_the_two_nodes, [0.0, 2.5])

        for local_index, node in enumerate(simple_mesh.elements[0].nodes):
            if np.allclose(node.position, [0.1, 2.5]):
                np.testing.assert_almost_equal(
                    simple_mesh.elements[0].nodes[(local_index + 1) %
                                                  5].position, [-0.1, 2.5])
                self.assert_(0 in node.get_adjacent_element_ids())
                self.assert_(1 in node.get_adjacent_element_ids())
                self.assert_(3 in node.get_adjacent_element_ids())
                self.assert_(2 not in node.get_adjacent_element_ids())
                break
            else:
                self.assertNotEqual(local_index, 4)

        for local_index, node in enumerate(simple_mesh.elements[3].nodes):
            if np.allclose(node.position, [-0.1, 2.5]):
                np.testing.assert_almost_equal(
                    simple_mesh.elements[3].nodes[(local_index + 1) %
                                                  5].position, [0.1, 2.5])
                self.assert_(2 in node.get_adjacent_element_ids())
                self.assert_(0 in node.get_adjacent_element_ids())
                self.assert_(3 in node.get_adjacent_element_ids())
                self.assert_(1 not in node.get_adjacent_element_ids())
                break
            else:
                self.assertNotEqual(local_index, 4)