def test_hypocentre_index_multi_segments(self):
        hypocentre = Point(0.588100, 0.479057, 7.1711)
        upper_seismogenic_depth = 0.5
        lower_seismogenic_depth = 15.
        dip = 56.5

        mesh_spacing = 2.
        fault_trace = Line([Point(0., 0.), Point(0.55, 0.5), Point(1.2, 1.2)])

        whole_fault_surface = SimpleFaultSurface.from_fault_data(
            fault_trace, upper_seismogenic_depth, lower_seismogenic_depth, dip,
            mesh_spacing)

        target_rupture_surface = whole_fault_surface.get_resampled_top_edge()
        index = SimpleFaultSurface.hypocentre_patch_index(
            hypocentre, target_rupture_surface, upper_seismogenic_depth,
            lower_seismogenic_depth, dip)
        # The value used for this test is by hand calculation
        self.assertEqual(index, 2)
    def test_hypocentre_index_large_mesh_spacing(self):
        hypocentre = Point(10.443522, 45.379006, 20.0)
        upper_seismogenic_depth = 10.
        lower_seismogenic_depth = 28.
        dip = 30.

        mesh_spacing = 10.
        fault_trace = Line([Point(10., 45.2), Point(10., 45.487783)])

        whole_fault_surface = SimpleFaultSurface.from_fault_data(
            fault_trace, upper_seismogenic_depth, lower_seismogenic_depth, dip,
            mesh_spacing)

        target_rupture_surface = whole_fault_surface.get_resampled_top_edge()
        index = SimpleFaultSurface.hypocentre_patch_index(
            hypocentre, target_rupture_surface, upper_seismogenic_depth,
            lower_seismogenic_depth, dip)
        # The value used for this test is by hand calculation
        self.assertEqual(index, 1)
    def test_hypocentre_index_large_mesh_spacing(self):
        hypocentre = Point(10.443522, 45.379006, 20.0)
        upper_seismogenic_depth = 10.
        lower_seismogenic_depth = 28.
        dip = 30.

        mesh_spacing = 10.
        fault_trace = Line([Point(10., 45.2), Point(10., 45.487783)])

        whole_fault_surface = SimpleFaultSurface.from_fault_data(
            fault_trace, upper_seismogenic_depth,
            lower_seismogenic_depth, dip, mesh_spacing
        )

        target_rupture_surface = whole_fault_surface.get_resampled_top_edge()
        index = SimpleFaultSurface.hypocentre_patch_index(
            hypocentre, target_rupture_surface, upper_seismogenic_depth,
            lower_seismogenic_depth, dip)
        # The value used for this test is by hand calculation
        self.assertEqual(index, 1)
    def test_hypocentre_index_multi_segments(self):
        hypocentre = Point(0.588100, 0.479057, 7.1711)
        upper_seismogenic_depth = 0.5
        lower_seismogenic_depth = 15.
        dip = 56.5

        mesh_spacing = 2.
        fault_trace = Line([Point(0., 0.), Point(0.55, 0.5), Point(1.2, 1.2)])

        whole_fault_surface = SimpleFaultSurface.from_fault_data(
            fault_trace, upper_seismogenic_depth,
            lower_seismogenic_depth, dip, mesh_spacing
        )

        target_rupture_surface = whole_fault_surface.get_resampled_top_edge()
        index = SimpleFaultSurface.hypocentre_patch_index(
            hypocentre, target_rupture_surface, upper_seismogenic_depth,
            lower_seismogenic_depth, dip)
        # The value used for this test is by hand calculation
        self.assertEqual(index, 2)
    def test_hypocentre_index_2ndpatch(self):
        hypocentre = Point(10.237155, 45.562761, 8.0)
        upper_seismogenic_depth = 0.
        lower_seismogenic_depth = 15.
        dip = 30.

        mesh_spacing = 1.
        fault_trace = Line([Point(10., 45.2), Point(10.0, 45.559729),
                           Point(10.365145, 45.813659)])

        whole_fault_surface = SimpleFaultSurface.from_fault_data(
            fault_trace, upper_seismogenic_depth,
            lower_seismogenic_depth, dip, mesh_spacing
        )

        target_rupture_surface = whole_fault_surface.get_resampled_top_edge()
        index = SimpleFaultSurface.hypocentre_patch_index(
            hypocentre, target_rupture_surface, upper_seismogenic_depth,
            lower_seismogenic_depth, dip)
        # The value used for this test is by hand calculation
        self.assertEqual(index, 2)
    def test_hypocentre_index_2ndpatch(self):
        hypocentre = Point(10.237155, 45.562761, 8.0)
        upper_seismogenic_depth = 0.
        lower_seismogenic_depth = 15.
        dip = 30.

        mesh_spacing = 1.
        fault_trace = Line([Point(10., 45.2), Point(10.0, 45.559729),
                           Point(10.365145, 45.813659)])

        whole_fault_surface = SimpleFaultSurface.from_fault_data(
            fault_trace, upper_seismogenic_depth,
            lower_seismogenic_depth, dip, mesh_spacing
        )

        target_rupture_surface = whole_fault_surface.get_resampled_top_edge()
        index = SimpleFaultSurface.hypocentre_patch_index(
            hypocentre, target_rupture_surface, upper_seismogenic_depth,
            lower_seismogenic_depth, dip)
        # The value used for this test is by hand calculation
        self.assertEqual(index, 2)