def test_Pago_VeianoMontaguto(self):
        # regression test
        fault_trace = Line([Point(15.2368, 41.1594), Point(15.1848, 41.1644),
                            Point(15.1327, 41.1694), Point(15.0807, 41.1745),
                            Point(15.0286, 41.1795), Point(14.9765, 41.1846),
                            Point(14.9245, 41.1896), Point(14.8724, 41.1946),
                            Point(14.8204, 41.1997)])
        mfd = EvenlyDiscretizedMFD(min_mag=6.9, bin_width=0.2,
                                   occurrence_rates=[1.0])
        dip = 70.0
        upper_seismogenic_depth = 11.0
        lower_seismogenic_depth = 25.0
        rake = -130
        scalerel = WC1994()
        rupture_mesh_spacing = 5
        rupture_aspect_ratio = 1
        tom = PoissonTOM(10)

        fault = SimpleFaultSource(
            'ITCS057', 'Pago Veiano-Montaguto', TRT.ACTIVE_SHALLOW_CRUST, mfd,
            rupture_mesh_spacing, scalerel, rupture_aspect_ratio,
            upper_seismogenic_depth, lower_seismogenic_depth,
            fault_trace, dip, rake
        )

        self.assertEqual(len(list(fault.iter_ruptures(tom))), 1)
    def test_Pago_VeianoMontaguto(self):
        # regression test
        fault_trace = Line([
            Point(15.2368, 41.1594),
            Point(15.1848, 41.1644),
            Point(15.1327, 41.1694),
            Point(15.0807, 41.1745),
            Point(15.0286, 41.1795),
            Point(14.9765, 41.1846),
            Point(14.9245, 41.1896),
            Point(14.8724, 41.1946),
            Point(14.8204, 41.1997)
        ])
        mfd = EvenlyDiscretizedMFD(min_mag=6.9,
                                   bin_width=0.2,
                                   occurrence_rates=[1.0])
        dip = 70.0
        upper_seismogenic_depth = 11.0
        lower_seismogenic_depth = 25.0
        rake = -130
        scalerel = WC1994()
        rupture_mesh_spacing = 5
        rupture_aspect_ratio = 1
        tom = PoissonTOM(10)

        fault = SimpleFaultSource(
            'ITCS057', 'Pago Veiano-Montaguto', TRT.ACTIVE_SHALLOW_CRUST, mfd,
            rupture_mesh_spacing, scalerel, rupture_aspect_ratio, tom,
            upper_seismogenic_depth, lower_seismogenic_depth, fault_trace, dip,
            rake)

        self.assertEqual(len(list(fault.iter_ruptures())), 1)
    def test_hypoloc_multisegment_rupture_test(self):
        source_id = name = 'test-source'
        trt = TRT.ACTIVE_SHALLOW_CRUST
        hypo_list = numpy.array([[0.25, 0.25, 0.4], [0.75, 0.75, 0.6]])
        slip_list = numpy.array([[90., 1.]])
        self.mesh_spacing = 5.
        self.fault_trace_nodes = [
            self.fault_trace_start,
            Point(0.3, 0.3), self.fault_trace_end
        ]
        self.fault_trace = Line(self.fault_trace_nodes)
        src = SimpleFaultSource(source_id, name, trt, self.src_mfd,
                                self.mesh_spacing, self.sarea, 1.,
                                self.src_tom, self.upper_seismogenic_depth,
                                self.lower_seismogenic_depth, self.fault_trace,
                                self.dip, self.rake, hypo_list, slip_list)

        lon = [
            0.0954, 0.2544, 0.1272, 0.2862, 0.159, 0.3279, 0.1908, 0.3696,
            0.2226, 0.4114, 0.2544, 0.4531, 0.2862, 0.4949, 0.3279, 0.5366,
            0.3696, 0.5783, 0.4114, 0.6201, 0.4531, 0.6618, 0.4949, 0.7035,
            0.5366, 0.7453, 0.5783, 0.787, 0.6201, 0.8288, 0.6618, 0.8705
        ]

        lat = [
            0.0954, 0.2544, 0.1272, 0.2862, 0.159, 0.2694, 0.1908, 0.2527,
            0.2226, 0.236, 0.2544, 0.2192, 0.2862, 0.2025, 0.2694, 0.1858,
            0.2527, 0.169, 0.236, 0.1523, 0.2192, 0.1356, 0.2025, 0.1188,
            0.1858, 0.1021, 0.169, 0.0854, 0.1523, 0.0687, 0.1356, 0.0519
        ]

        dep = [
            10.0, 30.0, 10.0, 30.0, 10.0, 30.0, 10.0, 30.0, 10.0, 30.0, 10.0,
            30.0, 10.0, 30.0, 10.0, 30.0, 10.0, 30.0, 10.0, 30.0, 10.0, 30.0,
            10.0, 30.0, 10.0, 30.0, 10.0, 30.0, 10.0, 30.0, 10.0, 30.0
        ]

        rate = [
            0.025, 0.0375, 0.025, 0.0375, 0.025, 0.0375, 0.025, 0.0375, 0.025,
            0.0375, 0.025, 0.0375, 0.025, 0.0375, 0.025, 0.0375, 0.025, 0.0375,
            0.025, 0.0375, 0.025, 0.0375, 0.025, 0.0375, 0.025, 0.0375, 0.025,
            0.0375, 0.025, 0.0375, 0.025, 0.0375
        ]

        for rup, i in zip(src.iter_ruptures(), range(1000)):
            self.assertAlmostEqual(rup.hypocenter.longitude, lon[i], delta=0.1)
            self.assertAlmostEqual(rup.hypocenter.latitude, lat[i], delta=0.1)
            self.assertAlmostEqual(rup.hypocenter.depth, dep[i], delta=0.1)
            self.assertAlmostEqual(rup.occurrence_rate, rate[i], delta=0.01)
Esempio n. 4
0
    def create_oqhazardlib_source(self, tom, mesh_spacing, use_defaults=False):
        """
        Returns an instance of the :class:
        `openquake.hazardlib.source.simple_fault.SimpleFaultSource`

        :param tom:
             Temporal occurrance model
        :param float mesh_spacing:
             Mesh spacing
        """
        if not self.mfd:
            raise ValueError("Cannot write to hazardlib without MFD")
        return SimpleFaultSource(
            self.id,
            self.name,
            self.trt,
            self.mfd,
            mesh_spacing,
            conv.mag_scale_rel_to_hazardlib(self.mag_scale_rel, use_defaults),
            conv.render_aspect_ratio(self.rupt_aspect_ratio, use_defaults),
            tom,
            self.upper_depth,
            self.lower_depth,
            self.fault_trace,
            self.dip,
            self.rake)
    def _make_source(self, mfd, aspect_ratio, fault_trace=None, dip=45):
        source_id = name = 'test-source'
        trt = self.TRT
        rake = self.RAKE
        rupture_mesh_spacing = 1
        upper_seismogenic_depth = 0
        lower_seismogenic_depth = 4.2426406871192848
        magnitude_scaling_relationship = PeerMSR()
        rupture_aspect_ratio = aspect_ratio
        tom = self.TOM
        if fault_trace is None:
            fault_trace = Line([
                Point(0.0, 0.0),
                Point(0.0, 0.0359728811758),
                Point(0.0190775080917, 0.0550503815181),
                Point(0.03974514139, 0.0723925718855)
            ])

        sfs = SimpleFaultSource(
            source_id, name, trt, mfd, rupture_mesh_spacing,
            magnitude_scaling_relationship, rupture_aspect_ratio, tom,
            upper_seismogenic_depth, lower_seismogenic_depth, fault_trace, dip,
            rake)
        assert_pickleable(sfs)
        return sfs
    def test_hypoloc_multisegment_rupture_test(self):
        source_id = name = 'test-source'
        trt = TRT.ACTIVE_SHALLOW_CRUST
        hypo_list = numpy.array([[0.25, 0.25, 0.4], [0.75, 0.75, 0.6]])
        slip_list = numpy.array([[90., 1.]])
        self.mesh_spacing = 5.
        self.fault_trace_nodes = [
            self.fault_trace_start, Point(0.3, 0.3), self.fault_trace_end]
        self.fault_trace = Line(self.fault_trace_nodes)
        src = SimpleFaultSource(source_id, name, trt,
                                self.src_mfd, self.mesh_spacing,
                                self.sarea, 1., self.src_tom,
                                self.upper_seismogenic_depth,
                                self.lower_seismogenic_depth,
                                self.fault_trace, self.dip, self.rake,
                                hypo_list, slip_list)

        lon = [0.0954, 0.2544, 0.1272, 0.2862, 0.159, 0.3279, 0.1908, 0.3696,
               0.2226, 0.4114, 0.2544, 0.4531, 0.2862, 0.4949, 0.3279, 0.5366,
               0.3696, 0.5783, 0.4114, 0.6201, 0.4531, 0.6618, 0.4949, 0.7035,
               0.5366, 0.7453, 0.5783, 0.787, 0.6201, 0.8288, 0.6618, 0.8705]

        lat = [0.0954, 0.2544, 0.1272, 0.2862, 0.159, 0.2694, 0.1908, 0.2527,
               0.2226, 0.236, 0.2544, 0.2192, 0.2862, 0.2025, 0.2694, 0.1858,
               0.2527, 0.169, 0.236, 0.1523, 0.2192, 0.1356, 0.2025, 0.1188,
               0.1858, 0.1021, 0.169, 0.0854, 0.1523, 0.0687, 0.1356, 0.0519]

        dep = [10.0, 30.0, 10.0, 30.0, 10.0, 30.0, 10.0, 30.0, 10.0, 30.0,
               10.0, 30.0, 10.0, 30.0, 10.0, 30.0, 10.0, 30.0, 10.0, 30.0,
               10.0, 30.0, 10.0, 30.0, 10.0, 30.0, 10.0, 30.0, 10.0, 30.0,
               10.0, 30.0]

        rate = [0.025, 0.0375, 0.025, 0.0375, 0.025, 0.0375, 0.025, 0.0375,
                0.025, 0.0375, 0.025, 0.0375, 0.025, 0.0375, 0.025, 0.0375,
                0.025, 0.0375, 0.025, 0.0375, 0.025, 0.0375, 0.025, 0.0375,
                0.025, 0.0375, 0.025, 0.0375, 0.025, 0.0375, 0.025, 0.0375]

        for rup, i in zip(src.iter_ruptures(), range(1000)):
            self.assertAlmostEqual(rup.hypocenter.longitude, lon[i], delta=0.1)
            self.assertAlmostEqual(rup.hypocenter.latitude, lat[i], delta=0.1)
            self.assertAlmostEqual(rup.hypocenter.depth, dep[i], delta=0.1)
            self.assertAlmostEqual(rup.occurrence_rate, rate[i], delta=0.01)
    def test_slip_vertical_rupture(self):
        self.src_mfd = mfdeven.EvenlyDiscretizedMFD(8.5, 1., [1.])
        source_id = name = 'test-source'
        trt = TRT.ACTIVE_SHALLOW_CRUST
        hypo_list = numpy.array([[0.25, 0.25, 0.4], [0.75, 0.75, 0.6]])
        slip_list = numpy.array([[90., 0.25], [0., 0.75]])
        src = SimpleFaultSource(source_id, name, trt, self.src_mfd,
                                self.mesh_spacing, self.sarea, 1.,
                                self.src_tom, self.upper_seismogenic_depth,
                                self.lower_seismogenic_depth, self.fault_trace,
                                self.dip, self.rake, hypo_list, slip_list)

        slip = [90., 0., 90., 0.]
        rate = [0.1, 0.3, 0.15, 0.45]

        for rup, i in zip(src.iter_ruptures(), range(1000)):
            self.assertAlmostEqual(rup.rupture_slip_direction,
                                   slip[i],
                                   delta=0.1)
            self.assertAlmostEqual(rup.occurrence_rate, rate[i], delta=0.01)
    def test_slip_vertical_rupture(self):
        self.src_mfd = mfdeven.EvenlyDiscretizedMFD(8.5, 1., [1.])
        source_id = name = 'test-source'
        trt = TRT.ACTIVE_SHALLOW_CRUST
        hypo_list = numpy.array([[0.25, 0.25, 0.4], [0.75, 0.75, 0.6]])
        slip_list = numpy.array([[90., 0.25], [0., 0.75]])
        src = SimpleFaultSource(source_id, name, trt,
                                self.src_mfd, self.mesh_spacing,
                                self.sarea, 1., self.src_tom,
                                self.upper_seismogenic_depth,
                                self.lower_seismogenic_depth,
                                self.fault_trace, self.dip,
                                self.rake, hypo_list, slip_list)

        slip = [90., 0., 90., 0.]
        rate = [0.1, 0.3, 0.15, 0.45]

        for rup, i in zip(src.iter_ruptures(), range(1000)):
            self.assertAlmostEqual(rup.rupture_slip_direction,
                                   slip[i], delta=0.1)
            self.assertAlmostEqual(rup.occurrence_rate, rate[i], delta=0.01)
Esempio n. 9
0
 def create_oqhazardlib_source(self, tom, mesh_spacing, use_defaults=False):
     """
     Returns an instance of the :class:
     openquake.hazardlib.source.simple_fault.SimpleFaultSource
     :param tom:
          Temporal occurrance model
     :param float mesh_spacing:
          Mesh spacing
     
     """
     return SimpleFaultSource(
         self.id,
         self.name,
         self.trt,
         conv.mfd_to_hazardlib(self.mfd),
         mesh_spacing,
         conv.mag_scale_rel_to_hazardlib(self.mag_scale_rel, use_defaults),
         conv.render_aspect_ratio(self.rupt_aspect_ratio, use_defaults),
         tom,
         self.upper_depth,
         self.lower_depth,
         self.fault_trace,
         self.dip,
         self.rake)
Esempio n. 10
0
                         PoissonTOM(1.0),
                         0.,
                         40.,
                         PMF([(1.0, NodalPlane(0.0, 90.0, 0.0))]),
                         PMF([(0.5, 5.0), (0.5, 15.0)]),
                         AREA_POLY,
                         4.0)

SIMPLE_TRACE = Line([Point(14.975, 15.0, 0.0), Point(15.025, 15.0, 0.0)])

SIMPLE_FAULT = SimpleFaultSource("SFLT000", "Simple Fault Source",
                                 "Active Shallow Crust",
                                 EvenlyDiscretizedMFD(7.0, 0.1, [1.0]),
                                 1.0,
                                 PeerMSR(),
                                 1.0,
                                 PoissonTOM(1.0),
                                 0.0,
                                 20.0,
                                 SIMPLE_TRACE,
                                 90.,
                                 0.0)

COMPLEX_EDGES = [SIMPLE_TRACE,
                 Line([Point(14.975, 15.0, 20.0),
                       Point(15.025, 15.0, 20.0)])]

COMPLEX_FAULT = ComplexFaultSource("CFLT000", "Complex Fault Source",
                                   "Active Shallow Crust",
                                   EvenlyDiscretizedMFD(7.0, 0.1, [1.0]),
                                   1.0,
                                   PeerMSR(),
    def test_hypoloc_dip_rupture(self):
        source_id = name = 'test-source'
        trt = TRT.ACTIVE_SHALLOW_CRUST
        dip = 30.
        hypo_list = numpy.array([[0.25, 0.25, 0.4], [0.75, 0.75, 0.6]])
        slip_list = numpy.array([[90., 1.]])
        self.mesh_spacing = 5.
        src = SimpleFaultSource(source_id, name, trt,
                                self.src_mfd, self.mesh_spacing, self.sarea,
                                1., self.src_tom, self.upper_seismogenic_depth,
                                self.lower_seismogenic_depth,
                                self.fault_trace, dip, self.rake, hypo_list,
                                slip_list)

        lon = [0.0899, 0.3148, 0.1349, 0.3597, 0.1799, 0.4047, 0.2248,
               0.4497, 0.2698, 0.4946, 0.3148, 0.5396, 0.3597, 0.5846,
               0.4047, 0.6295, 0.4497, 0.6745, 0.4946, 0.7195, 0.5396,
               0.7644, 0.5846, 0.8094, 0.6295, 0.8544, 0.6745, 0.8993,
               0.0899, 0.3148, 0.1349, 0.3597, 0.1799, 0.4047, 0.2248,
               0.4497, 0.2698, 0.4946, 0.3148, 0.5396, 0.3597, 0.5846,
               0.4047, 0.6295, 0.4497, 0.6745, 0.4946, 0.7195, 0.5396,
               0.7644, 0.5846, 0.8094, 0.6295, 0.8544, 0.6745, 0.8993,
               0.0899, 0.3148, 0.1349, 0.3597, 0.1799, 0.4047, 0.2248,
               0.4497, 0.2698, 0.4946, 0.3148, 0.5396, 0.3597, 0.5846,
               0.4047, 0.6295, 0.4497, 0.6745, 0.4946, 0.7195, 0.5396,
               0.7644, 0.5846, 0.8094, 0.6295, 0.8544, 0.6745, 0.8993,
               0.0899, 0.3148, 0.1349, 0.3597, 0.1799, 0.4047, 0.2248,
               0.4497, 0.2698, 0.4946, 0.3148, 0.5396, 0.3597, 0.5846,
               0.4047, 0.6295, 0.4497, 0.6745, 0.4946, 0.7195, 0.5396,
               0.7644, 0.5846, 0.8094, 0.6295, 0.8544, 0.6745, 0.8993,
               0.0899, 0.3148, 0.1349, 0.3597, 0.1799, 0.4047, 0.2248,
               0.4497, 0.2698, 0.4946, 0.3148, 0.5396, 0.3597, 0.5846,
               0.4047, 0.6295, 0.4497, 0.6745, 0.4946, 0.7195, 0.5396,
               0.7644, 0.5846, 0.8094, 0.6295, 0.8544, 0.6745, 0.8993,
               0.0899, 0.3148, 0.1349, 0.3597, 0.1799, 0.4047, 0.2248,
               0.4497, 0.2698, 0.4946, 0.3148, 0.5396, 0.3597, 0.5846,
               0.4047, 0.6295, 0.4497, 0.6745, 0.4946, 0.7195, 0.5396,
               0.7644, 0.5846, 0.8094, 0.6295, 0.8544, 0.6745, 0.8993,
               0.0899, 0.3148, 0.1349, 0.3597, 0.1799, 0.4047, 0.2248,
               0.4497, 0.2698, 0.4946, 0.3148, 0.5396, 0.3597, 0.5846,
               0.4047, 0.6295, 0.4497, 0.6745, 0.4946, 0.7195, 0.5396,
               0.7644, 0.5846, 0.8094, 0.6295, 0.8544, 0.6745, 0.8993,
               0.0899, 0.3148, 0.1349, 0.3597, 0.1799, 0.4047, 0.2248,
               0.4497, 0.2698, 0.4946, 0.3148, 0.5396, 0.3597, 0.5846,
               0.4047, 0.6295, 0.4497, 0.6745, 0.4946, 0.7195, 0.5396,
               0.7644, 0.5846, 0.8094, 0.6295, 0.8544, 0.6745, 0.8993]

        lat = [-0.0779, -0.2726, -0.0779, -0.2726, -0.0779, -0.2726,
               -0.0779, -0.2726, -0.0779, -0.2726, -0.0779, -0.2726, -0.0779,
               -0.2726, -0.0779, -0.2726, -0.0779, -0.2726, -0.0779, -0.2726,
               -0.0779, -0.2726, -0.0779, -0.2726, -0.0779, -0.2726, -0.0779,
               -0.2726, -0.1168, -0.3115, -0.1168, -0.3115, -0.1168, -0.3115,
               -0.1168, -0.3115, -0.1168, -0.3115, -0.1168, -0.3115, -0.1168,
               -0.3115, -0.1168, -0.3115, -0.1168, -0.3115, -0.1168, -0.3115,
               -0.1168, -0.3115, -0.1168, -0.3115, -0.1168, -0.3115, -0.1168,
               -0.3115, -0.1558, -0.3505, -0.1558, -0.3505, -0.1558, -0.3505,
               -0.1558, -0.3505, -0.1558, -0.3505, -0.1558, -0.3505, -0.1558,
               -0.3505, -0.1558, -0.3505, -0.1558, -0.3505, -0.1558, -0.3505,
               -0.1558, -0.3505, -0.1558, -0.3505, -0.1558, -0.3505, -0.1558,
               -0.3505, -0.1947, -0.3894, -0.1947, -0.3894, -0.1947, -0.3894,
               -0.1947, -0.3894, -0.1947, -0.3894, -0.1947, -0.3894, -0.1947,
               -0.3894, -0.1947, -0.3894, -0.1947, -0.3894, -0.1947, -0.3894,
               -0.1947, -0.3894, -0.1947, -0.3894, -0.1947, -0.3894, -0.1947,
               -0.3894, -0.2337, -0.4284, -0.2337, -0.4284, -0.2337,
               -0.4284, -0.2337, -0.4284, -0.2337, -0.4284, -0.2337, -0.4284,
               -0.2337, -0.4284, -0.2337, -0.4284, -0.2337, -0.4284, -0.2337,
               -0.4284, -0.2337, -0.4284, -0.2337, -0.4284, -0.2337, -0.4284,
               -0.2337, -0.4284, -0.2726, -0.4673, -0.2726, -0.4673, -0.2726,
               -0.4673, -0.2726, -0.4673, -0.2726, -0.4673, -0.2726, -0.4673,
               -0.2726, -0.4673, -0.2726, -0.4673, -0.2726, -0.4673, -0.2726,
               -0.4673, -0.2726, -0.4673, -0.2726, -0.4673, -0.2726, -0.4673,
               -0.2726, -0.4673, -0.3115, -0.5062, -0.3115, -0.5062, -0.3115,
               -0.5062, -0.3115, -0.5062, -0.3115, -0.5062, -0.3115, -0.5062,
               -0.3115, -0.5062, -0.3115, -0.5062, -0.3115, -0.5062, -0.3115,
               -0.5062, -0.3115, -0.5062, -0.3115, -0.5062, -0.3115, -0.5062,
               -0.3115, -0.5062, -0.3505, -0.5452, -0.3505, -0.5452, -0.3505,
               -0.5452, -0.3505, -0.5452, -0.3505, -0.5452, -0.3505, -0.5452,
               -0.3505, -0.5452, -0.3505, -0.5452, -0.3505, -0.5452, -0.3505,
               -0.5452, -0.3505, -0.5452, -0.3505, -0.5452, -0.3505, -0.5452,
               -0.3505, -0.5452]

        dep = [5.0, 17.5, 5.0, 17.5, 5.0, 17.5, 5.0,
               17.5, 5.0, 17.5, 5.0, 17.5, 5.0, 17.5, 5.0, 17.5, 5.0, 17.5,
               5.0, 17.5, 5.0, 17.5, 5.0, 17.5, 5.0, 17.5, 5.0, 17.5, 7.5,
               20.0, 7.5, 20.0, 7.5, 20.0, 7.5, 20.0, 7.5, 20.0, 7.5, 20.0,
               7.5, 20.0, 7.5, 20.0, 7.5, 20.0, 7.5, 20.0, 7.5, 20.0, 7.5,
               20.0, 7.5, 20.0, 7.5, 20.0, 10.0, 22.5, 10.0, 22.5, 10.0,
               22.5, 10.0, 22.5, 10.0, 22.5, 10.0, 22.5, 10.0, 22.5, 10.0,
               22.5, 10.0, 22.5, 10.0, 22.5, 10.0, 22.5, 10.0, 22.5, 10.0,
               22.5, 10.0, 22.5, 12.5, 25.0, 12.5, 25.0, 12.5, 25.0, 12.5,
               25.0, 12.5, 25.0, 12.5, 25.0, 12.5, 25.0, 12.5, 25.0, 12.5,
               25.0, 12.5, 25.0, 12.5, 25.0, 12.5, 25.0, 12.5, 25.0, 12.5,
               25.0, 15.0, 27.5, 15.0, 27.5, 15.0, 27.5, 15.0, 27.5,
               15.0, 27.5, 15.0, 27.5, 15.0, 27.5, 15.0, 27.5, 15.0, 27.5,
               15.0, 27.5, 15.0, 27.5, 15.0, 27.5, 15.0, 27.5, 15.0, 27.5,
               17.5, 30.0, 17.5, 30.0, 17.5, 30.0, 17.5, 30.0, 17.5, 30.0,
               17.5, 30.0, 17.5, 30.0, 17.5, 30.0, 17.5, 30.0, 17.5, 30.0,
               17.5, 30.0, 17.5, 30.0, 17.5, 30.0, 17.5, 30.0, 20.0, 32.5,
               20.0, 32.5, 20.0, 32.5, 20.0, 32.5, 20.0, 32.5, 20.0, 32.5,
               20.0, 32.5, 20.0, 32.5, 20.0, 32.5, 20.0, 32.5, 20.0, 32.5,
               20.0, 32.5, 20.0, 32.5, 20.0, 32.5, 22.5, 35.0, 22.5, 35.0,
               22.5, 35.0, 22.5, 35.0, 22.5, 35.0, 22.5, 35.0, 22.5, 35.0,
               22.5, 35.0, 22.5, 35.0, 22.5, 35.0, 22.5, 35.0, 22.5, 35.0,
               22.5, 35.0, 22.5, 35.0]

        rate = [0.0036, 0.0054, 0.0036,
                0.0054, 0.0036, 0.0054, 0.0036, 0.0054, 0.0036, 0.0054,
                0.0036, 0.0054, 0.0036, 0.0054, 0.0036, 0.0054, 0.0036,
                0.0054, 0.0036, 0.0054, 0.0036, 0.0054, 0.0036, 0.0054,
                0.0036, 0.0054, 0.0036, 0.0054, 0.0036, 0.0054, 0.0036,
                0.0054, 0.0036, 0.0054, 0.0036, 0.0054, 0.0036, 0.0054,
                0.0036, 0.0054, 0.0036, 0.0054, 0.0036, 0.0054, 0.0036,
                0.0054, 0.0036, 0.0054, 0.0036, 0.0054, 0.0036, 0.0054,
                0.0036, 0.0054, 0.0036, 0.0054, 0.0036, 0.0054, 0.0036,
                0.0054, 0.0036, 0.0054, 0.0036, 0.0054, 0.0036, 0.0054,
                0.0036, 0.0054, 0.0036, 0.0054, 0.0036, 0.0054, 0.0036,
                0.0054, 0.0036, 0.0054, 0.0036, 0.0054, 0.0036, 0.0054,
                0.0036, 0.0054, 0.0036, 0.0054, 0.0036, 0.0054, 0.0036,
                0.0054, 0.0036, 0.0054, 0.0036, 0.0054, 0.0036, 0.0054,
                0.0036, 0.0054, 0.0036, 0.0054, 0.0036, 0.0054, 0.0036,
                0.0054, 0.0036, 0.0054, 0.0036, 0.0054, 0.0036, 0.0054,
                0.0036, 0.0054, 0.0036, 0.0054, 0.0036, 0.0054, 0.0036,
                0.0054, 0.0036, 0.0054, 0.0036, 0.0054, 0.0036, 0.0054,
                0.0036, 0.0054, 0.0036, 0.0054, 0.0036, 0.0054, 0.0036,
                0.0054, 0.0036, 0.0054, 0.0036, 0.0054, 0.0036, 0.0054,
                0.0036, 0.0054, 0.0036, 0.0054, 0.0036, 0.0054, 0.0036,
                0.0054, 0.0036, 0.0054, 0.0036, 0.0054, 0.0036, 0.0054,
                0.0036, 0.0054, 0.0036, 0.0054, 0.0036, 0.0054, 0.0036,
                0.0054, 0.0036, 0.0054, 0.0036, 0.0054, 0.0036, 0.0054,
                0.0036, 0.0054, 0.0036, 0.0054, 0.0036, 0.0054, 0.0036,
                0.0054, 0.0036, 0.0054, 0.0036, 0.0054, 0.0036, 0.0054,
                0.0036, 0.0054, 0.0036, 0.0054, 0.0036, 0.0054, 0.0036,
                0.0054, 0.0036, 0.0054, 0.0036, 0.0054, 0.0036, 0.0054,
                0.0036, 0.0054, 0.0036, 0.0054, 0.0036, 0.0054, 0.0036,
                0.0054, 0.0036, 0.0054, 0.0036, 0.0054, 0.0036, 0.0054,
                0.0036, 0.0054, 0.0036, 0.0054, 0.0036, 0.0054, 0.0036,
                0.0054, 0.0036, 0.0054, 0.0036, 0.0054, 0.0036, 0.0054,
                0.0036, 0.0054, 0.0036, 0.0054]

        for rup, i in zip(src.iter_ruptures(), range(1000)):
            self.assertAlmostEqual(rup.hypocenter.longitude, lon[i], delta=0.1)
            self.assertAlmostEqual(rup.hypocenter.latitude, lat[i], delta=0.1)
            self.assertAlmostEqual(rup.hypocenter.depth, dep[i], delta=0.1)
            self.assertAlmostEqual(rup.occurrence_rate, rate[i], delta=0.01)
    def test_hypoloc_vertical_rupture(self):
        source_id = name = 'test-source'
        trt = TRT.ACTIVE_SHALLOW_CRUST
        hypo_list = numpy.array([[0.25, 0.25, 0.4], [0.75, 0.75, 0.6]])
        slip_list = numpy.array([[90., 1.]])
        src = SimpleFaultSource(source_id, name, trt,
                                self.src_mfd, self.mesh_spacing,
                                self.sarea, 1., self.src_tom,
                                self.upper_seismogenic_depth,
                                self.lower_seismogenic_depth,
                                self.fault_trace, self.dip,
                                self.rake, hypo_list, slip_list)

        lon = [0.11691180881629422, 0.35972864251163345, 0.12590502487907043,
               0.36872185857443507, 0.13489824094187208, 0.37771507463723675,
               0.14389145700464828, 0.38670829070001295, 0.15288467306744993,
               0.39570150676281457, 0.16187788913025158, 0.40469472282559077,
               0.17087110519302778, 0.41368793888839245, 0.17986432125582943,
               0.42268115495119407, 0.18885753731860563, 0.43167437101397027,
               0.19785075338140728, 0.44066758707677195, 0.20684396944418348,
               0.44966080313954815, 0.21583718550698514, 0.45865401920234977,
               0.22483040156978679, 0.46764723526512603, 0.23382361763256301,
               0.47664045132792765, 0.24281683369536466, 0.48563366739072933,
               0.25181004975814086, 0.49462688345350553, 0.26080326582094249,
               0.50362009951630715, 0.26979648188374417, 0.51261331557908341,
               0.27878969794652037, 0.52160653164188497, 0.28778291400932199,
               0.53059974770468665, 0.29677613007209824, 0.53959296376746291,
               0.30576934613489987, 0.54858617983026448, 0.31476256219770149,
               0.55757939589304073, 0.32375577826047774, 0.56657261195584241,
               0.33274899432327937, 0.57556582801864398, 0.34174221038605557,
               0.58455904408142023, 0.35073542644885725, 0.59355226014422191,
               0.35972864251163345, 0.60254547620699805, 0.36872185857443507,
               0.61153869226979973, 0.37771507463723675, 0.62053190833257599,
               0.38670829070001295, 0.62952512439537756, 0.39570150676281457,
               0.63851834045817923, 0.40469472282559077, 0.64751155652095549,
               0.41368793888839245, 0.65650477258375706, 0.42268115495119407,
               0.66549798864653331, 0.43167437101397027, 0.67449120470933499,
               0.44066758707677195, 0.68348442077213656, 0.44966080313954815,
               0.69247763683491281, 0.45865401920234977, 0.70147085289771449,
               0.46764723526512603, 0.71046406896049064, 0.47664045132792765,
               0.71945728502329231, 0.48563366739072933, 0.72845050108606846,
               0.49462688345350553, 0.73744371714887014, 0.50362009951630715,
               0.74643693321167182, 0.51261331557908341, 0.75543014927444796,
               0.52160653164188497, 0.76442336533724964, 0.53059974770468665,
               0.77341658140002589, 0.53959296376746291, 0.78240979746282757,
               0.54858617983026448, 0.79140301352562914, 0.55757939589304073,
               0.80039622958840539, 0.56657261195584241, 0.80938944565120707,
               0.57556582801864398, 0.81838266171398322, 0.58455904408142023,
               0.82737587777678498, 0.59355226014422191, 0.83636909383958657,
               0.60254547620699805, 0.84536230990236272, 0.61153869226979973,
               0.85435552596516445, 0.62053190833257599, 0.86334874202794054,
               0.62952512439537756, 0.87234195809074222, 0.63851834045817923,
               0.88133517415351847]
        lat = [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
               0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
               0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
               0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
               0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
               0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
               0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
               0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
               0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
               0.0]
        dep = [10.0, 30.0, 10.0, 30.0, 10.0, 30.0, 10.0, 30.0, 10.0, 30.0,
               10.0, 30.0, 10.0, 30.0, 10.0, 30.0, 10.0, 30.0, 10.0, 30.0,
               10.0, 30.0, 10.0, 30.0, 10.0, 30.0, 10.0, 30.0, 10.0, 30.0,
               10.0, 30.0, 10.0, 30.0, 10.0, 30.0, 10.0, 30.0, 10.0, 30.0,
               10.0, 30.0, 10.0, 30.0, 10.0, 30.0, 10.0, 30.0, 10.0, 30.0,
               10.0, 30.0, 10.0, 30.0, 10.0, 30.0, 10.0, 30.0, 10.0, 30.0,
               10.0, 30.0, 10.0, 30.0, 10.0, 30.0, 10.0, 30.0, 10.0, 30.0,
               10.0, 30.0, 10.0, 30.0, 10.0, 30.0, 10.0, 30.0, 10.0, 30.0,
               10.0, 30.0, 10.0, 30.0, 10.0, 30.0, 10.0, 30.0, 10.0, 30.0,
               10.0, 30.0, 10.0, 30.0, 10.0, 30.0, 10.0, 30.0, 10.0, 30.0,
               10.0, 30.0, 10.0, 30.0, 10.0, 30.0, 10.0, 30.0, 10.0, 30.0,
               10.0, 30.0, 10.0, 30.0, 10.0, 30.0, 10.0, 30.0]

        rate = [0.0067796610169491532, 0.010169491525423728,
                0.0067796610169491532, 0.010169491525423728,
                0.0067796610169491532, 0.010169491525423728,
                0.0067796610169491532, 0.010169491525423728,
                0.0067796610169491532, 0.010169491525423728,
                0.0067796610169491532, 0.010169491525423728,
                0.0067796610169491532, 0.010169491525423728,
                0.0067796610169491532, 0.010169491525423728,
                0.0067796610169491532, 0.010169491525423728,
                0.0067796610169491532, 0.010169491525423728,
                0.0067796610169491532, 0.010169491525423728,
                0.0067796610169491532, 0.010169491525423728,
                0.0067796610169491532, 0.010169491525423728,
                0.0067796610169491532, 0.010169491525423728,
                0.0067796610169491532, 0.010169491525423728,
                0.0067796610169491532, 0.010169491525423728,
                0.0067796610169491532, 0.010169491525423728,
                0.0067796610169491532, 0.010169491525423728,
                0.0067796610169491532, 0.010169491525423728,
                0.0067796610169491532, 0.010169491525423728,
                0.0067796610169491532, 0.010169491525423728,
                0.0067796610169491532, 0.010169491525423728,
                0.0067796610169491532, 0.010169491525423728,
                0.0067796610169491532, 0.010169491525423728,
                0.0067796610169491532, 0.010169491525423728,
                0.0067796610169491532, 0.010169491525423728,
                0.0067796610169491532, 0.010169491525423728,
                0.0067796610169491532, 0.010169491525423728,
                0.0067796610169491532, 0.010169491525423728,
                0.0067796610169491532, 0.010169491525423728,
                0.0067796610169491532, 0.010169491525423728,
                0.0067796610169491532, 0.010169491525423728,
                0.0067796610169491532, 0.010169491525423728,
                0.0067796610169491532, 0.010169491525423728,
                0.0067796610169491532, 0.010169491525423728,
                0.0067796610169491532, 0.010169491525423728,
                0.0067796610169491532, 0.010169491525423728,
                0.0067796610169491532, 0.010169491525423728,
                0.0067796610169491532, 0.010169491525423728,
                0.0067796610169491532, 0.010169491525423728,
                0.0067796610169491532, 0.010169491525423728,
                0.0067796610169491532, 0.010169491525423728,
                0.0067796610169491532, 0.010169491525423728,
                0.0067796610169491532, 0.010169491525423728,
                0.0067796610169491532, 0.010169491525423728,
                0.0067796610169491532, 0.010169491525423728,
                0.0067796610169491532, 0.010169491525423728,
                0.0067796610169491532, 0.010169491525423728,
                0.0067796610169491532, 0.010169491525423728,
                0.0067796610169491532, 0.010169491525423728,
                0.0067796610169491532, 0.010169491525423728,
                0.0067796610169491532, 0.010169491525423728,
                0.0067796610169491532, 0.010169491525423728,
                0.0067796610169491532, 0.010169491525423728,
                0.0067796610169491532, 0.010169491525423728,
                0.0067796610169491532, 0.010169491525423728,
                0.0067796610169491532, 0.010169491525423728,
                0.0067796610169491532, 0.010169491525423728,
                0.0067796610169491532, 0.010169491525423728]

        for rup, i in zip(src.iter_ruptures(), range(1000)):
            self.assertAlmostEqual(
                rup.hypocenter.longitude, lon[i], delta=0.01)
            self.assertAlmostEqual(rup.hypocenter.latitude, lat[i], delta=0.01)
            self.assertAlmostEqual(rup.hypocenter.depth, dep[i], delta=0.01)
            self.assertAlmostEqual(rup.occurrence_rate, rate[i], delta=0.01)
    def test_hypoloc_dip_rupture(self):
        source_id = name = 'test-source'
        trt = TRT.ACTIVE_SHALLOW_CRUST
        dip = 30.
        hypo_list = numpy.array([[0.25, 0.25, 0.4], [0.75, 0.75, 0.6]])
        slip_list = numpy.array([[90., 1.]])
        self.mesh_spacing = 5.
        src = SimpleFaultSource(source_id, name, trt, self.src_mfd,
                                self.mesh_spacing, self.sarea, 1.,
                                self.src_tom, self.upper_seismogenic_depth,
                                self.lower_seismogenic_depth, self.fault_trace,
                                dip, self.rake, hypo_list, slip_list)

        lon = [
            0.0899, 0.3148, 0.1349, 0.3597, 0.1799, 0.4047, 0.2248, 0.4497,
            0.2698, 0.4946, 0.3148, 0.5396, 0.3597, 0.5846, 0.4047, 0.6295,
            0.4497, 0.6745, 0.4946, 0.7195, 0.5396, 0.7644, 0.5846, 0.8094,
            0.6295, 0.8544, 0.6745, 0.8993, 0.0899, 0.3148, 0.1349, 0.3597,
            0.1799, 0.4047, 0.2248, 0.4497, 0.2698, 0.4946, 0.3148, 0.5396,
            0.3597, 0.5846, 0.4047, 0.6295, 0.4497, 0.6745, 0.4946, 0.7195,
            0.5396, 0.7644, 0.5846, 0.8094, 0.6295, 0.8544, 0.6745, 0.8993,
            0.0899, 0.3148, 0.1349, 0.3597, 0.1799, 0.4047, 0.2248, 0.4497,
            0.2698, 0.4946, 0.3148, 0.5396, 0.3597, 0.5846, 0.4047, 0.6295,
            0.4497, 0.6745, 0.4946, 0.7195, 0.5396, 0.7644, 0.5846, 0.8094,
            0.6295, 0.8544, 0.6745, 0.8993, 0.0899, 0.3148, 0.1349, 0.3597,
            0.1799, 0.4047, 0.2248, 0.4497, 0.2698, 0.4946, 0.3148, 0.5396,
            0.3597, 0.5846, 0.4047, 0.6295, 0.4497, 0.6745, 0.4946, 0.7195,
            0.5396, 0.7644, 0.5846, 0.8094, 0.6295, 0.8544, 0.6745, 0.8993,
            0.0899, 0.3148, 0.1349, 0.3597, 0.1799, 0.4047, 0.2248, 0.4497,
            0.2698, 0.4946, 0.3148, 0.5396, 0.3597, 0.5846, 0.4047, 0.6295,
            0.4497, 0.6745, 0.4946, 0.7195, 0.5396, 0.7644, 0.5846, 0.8094,
            0.6295, 0.8544, 0.6745, 0.8993, 0.0899, 0.3148, 0.1349, 0.3597,
            0.1799, 0.4047, 0.2248, 0.4497, 0.2698, 0.4946, 0.3148, 0.5396,
            0.3597, 0.5846, 0.4047, 0.6295, 0.4497, 0.6745, 0.4946, 0.7195,
            0.5396, 0.7644, 0.5846, 0.8094, 0.6295, 0.8544, 0.6745, 0.8993,
            0.0899, 0.3148, 0.1349, 0.3597, 0.1799, 0.4047, 0.2248, 0.4497,
            0.2698, 0.4946, 0.3148, 0.5396, 0.3597, 0.5846, 0.4047, 0.6295,
            0.4497, 0.6745, 0.4946, 0.7195, 0.5396, 0.7644, 0.5846, 0.8094,
            0.6295, 0.8544, 0.6745, 0.8993, 0.0899, 0.3148, 0.1349, 0.3597,
            0.1799, 0.4047, 0.2248, 0.4497, 0.2698, 0.4946, 0.3148, 0.5396,
            0.3597, 0.5846, 0.4047, 0.6295, 0.4497, 0.6745, 0.4946, 0.7195,
            0.5396, 0.7644, 0.5846, 0.8094, 0.6295, 0.8544, 0.6745, 0.8993
        ]

        lat = [
            -0.0779, -0.2726, -0.0779, -0.2726, -0.0779, -0.2726, -0.0779,
            -0.2726, -0.0779, -0.2726, -0.0779, -0.2726, -0.0779, -0.2726,
            -0.0779, -0.2726, -0.0779, -0.2726, -0.0779, -0.2726, -0.0779,
            -0.2726, -0.0779, -0.2726, -0.0779, -0.2726, -0.0779, -0.2726,
            -0.1168, -0.3115, -0.1168, -0.3115, -0.1168, -0.3115, -0.1168,
            -0.3115, -0.1168, -0.3115, -0.1168, -0.3115, -0.1168, -0.3115,
            -0.1168, -0.3115, -0.1168, -0.3115, -0.1168, -0.3115, -0.1168,
            -0.3115, -0.1168, -0.3115, -0.1168, -0.3115, -0.1168, -0.3115,
            -0.1558, -0.3505, -0.1558, -0.3505, -0.1558, -0.3505, -0.1558,
            -0.3505, -0.1558, -0.3505, -0.1558, -0.3505, -0.1558, -0.3505,
            -0.1558, -0.3505, -0.1558, -0.3505, -0.1558, -0.3505, -0.1558,
            -0.3505, -0.1558, -0.3505, -0.1558, -0.3505, -0.1558, -0.3505,
            -0.1947, -0.3894, -0.1947, -0.3894, -0.1947, -0.3894, -0.1947,
            -0.3894, -0.1947, -0.3894, -0.1947, -0.3894, -0.1947, -0.3894,
            -0.1947, -0.3894, -0.1947, -0.3894, -0.1947, -0.3894, -0.1947,
            -0.3894, -0.1947, -0.3894, -0.1947, -0.3894, -0.1947, -0.3894,
            -0.2337, -0.4284, -0.2337, -0.4284, -0.2337, -0.4284, -0.2337,
            -0.4284, -0.2337, -0.4284, -0.2337, -0.4284, -0.2337, -0.4284,
            -0.2337, -0.4284, -0.2337, -0.4284, -0.2337, -0.4284, -0.2337,
            -0.4284, -0.2337, -0.4284, -0.2337, -0.4284, -0.2337, -0.4284,
            -0.2726, -0.4673, -0.2726, -0.4673, -0.2726, -0.4673, -0.2726,
            -0.4673, -0.2726, -0.4673, -0.2726, -0.4673, -0.2726, -0.4673,
            -0.2726, -0.4673, -0.2726, -0.4673, -0.2726, -0.4673, -0.2726,
            -0.4673, -0.2726, -0.4673, -0.2726, -0.4673, -0.2726, -0.4673,
            -0.3115, -0.5062, -0.3115, -0.5062, -0.3115, -0.5062, -0.3115,
            -0.5062, -0.3115, -0.5062, -0.3115, -0.5062, -0.3115, -0.5062,
            -0.3115, -0.5062, -0.3115, -0.5062, -0.3115, -0.5062, -0.3115,
            -0.5062, -0.3115, -0.5062, -0.3115, -0.5062, -0.3115, -0.5062,
            -0.3505, -0.5452, -0.3505, -0.5452, -0.3505, -0.5452, -0.3505,
            -0.5452, -0.3505, -0.5452, -0.3505, -0.5452, -0.3505, -0.5452,
            -0.3505, -0.5452, -0.3505, -0.5452, -0.3505, -0.5452, -0.3505,
            -0.5452, -0.3505, -0.5452, -0.3505, -0.5452, -0.3505, -0.5452
        ]

        dep = [
            5.0, 17.5, 5.0, 17.5, 5.0, 17.5, 5.0, 17.5, 5.0, 17.5, 5.0, 17.5,
            5.0, 17.5, 5.0, 17.5, 5.0, 17.5, 5.0, 17.5, 5.0, 17.5, 5.0, 17.5,
            5.0, 17.5, 5.0, 17.5, 7.5, 20.0, 7.5, 20.0, 7.5, 20.0, 7.5, 20.0,
            7.5, 20.0, 7.5, 20.0, 7.5, 20.0, 7.5, 20.0, 7.5, 20.0, 7.5, 20.0,
            7.5, 20.0, 7.5, 20.0, 7.5, 20.0, 7.5, 20.0, 10.0, 22.5, 10.0, 22.5,
            10.0, 22.5, 10.0, 22.5, 10.0, 22.5, 10.0, 22.5, 10.0, 22.5, 10.0,
            22.5, 10.0, 22.5, 10.0, 22.5, 10.0, 22.5, 10.0, 22.5, 10.0, 22.5,
            10.0, 22.5, 12.5, 25.0, 12.5, 25.0, 12.5, 25.0, 12.5, 25.0, 12.5,
            25.0, 12.5, 25.0, 12.5, 25.0, 12.5, 25.0, 12.5, 25.0, 12.5, 25.0,
            12.5, 25.0, 12.5, 25.0, 12.5, 25.0, 12.5, 25.0, 15.0, 27.5, 15.0,
            27.5, 15.0, 27.5, 15.0, 27.5, 15.0, 27.5, 15.0, 27.5, 15.0, 27.5,
            15.0, 27.5, 15.0, 27.5, 15.0, 27.5, 15.0, 27.5, 15.0, 27.5, 15.0,
            27.5, 15.0, 27.5, 17.5, 30.0, 17.5, 30.0, 17.5, 30.0, 17.5, 30.0,
            17.5, 30.0, 17.5, 30.0, 17.5, 30.0, 17.5, 30.0, 17.5, 30.0, 17.5,
            30.0, 17.5, 30.0, 17.5, 30.0, 17.5, 30.0, 17.5, 30.0, 20.0, 32.5,
            20.0, 32.5, 20.0, 32.5, 20.0, 32.5, 20.0, 32.5, 20.0, 32.5, 20.0,
            32.5, 20.0, 32.5, 20.0, 32.5, 20.0, 32.5, 20.0, 32.5, 20.0, 32.5,
            20.0, 32.5, 20.0, 32.5, 22.5, 35.0, 22.5, 35.0, 22.5, 35.0, 22.5,
            35.0, 22.5, 35.0, 22.5, 35.0, 22.5, 35.0, 22.5, 35.0, 22.5, 35.0,
            22.5, 35.0, 22.5, 35.0, 22.5, 35.0, 22.5, 35.0, 22.5, 35.0
        ]

        rate = [
            0.0036, 0.0054, 0.0036, 0.0054, 0.0036, 0.0054, 0.0036, 0.0054,
            0.0036, 0.0054, 0.0036, 0.0054, 0.0036, 0.0054, 0.0036, 0.0054,
            0.0036, 0.0054, 0.0036, 0.0054, 0.0036, 0.0054, 0.0036, 0.0054,
            0.0036, 0.0054, 0.0036, 0.0054, 0.0036, 0.0054, 0.0036, 0.0054,
            0.0036, 0.0054, 0.0036, 0.0054, 0.0036, 0.0054, 0.0036, 0.0054,
            0.0036, 0.0054, 0.0036, 0.0054, 0.0036, 0.0054, 0.0036, 0.0054,
            0.0036, 0.0054, 0.0036, 0.0054, 0.0036, 0.0054, 0.0036, 0.0054,
            0.0036, 0.0054, 0.0036, 0.0054, 0.0036, 0.0054, 0.0036, 0.0054,
            0.0036, 0.0054, 0.0036, 0.0054, 0.0036, 0.0054, 0.0036, 0.0054,
            0.0036, 0.0054, 0.0036, 0.0054, 0.0036, 0.0054, 0.0036, 0.0054,
            0.0036, 0.0054, 0.0036, 0.0054, 0.0036, 0.0054, 0.0036, 0.0054,
            0.0036, 0.0054, 0.0036, 0.0054, 0.0036, 0.0054, 0.0036, 0.0054,
            0.0036, 0.0054, 0.0036, 0.0054, 0.0036, 0.0054, 0.0036, 0.0054,
            0.0036, 0.0054, 0.0036, 0.0054, 0.0036, 0.0054, 0.0036, 0.0054,
            0.0036, 0.0054, 0.0036, 0.0054, 0.0036, 0.0054, 0.0036, 0.0054,
            0.0036, 0.0054, 0.0036, 0.0054, 0.0036, 0.0054, 0.0036, 0.0054,
            0.0036, 0.0054, 0.0036, 0.0054, 0.0036, 0.0054, 0.0036, 0.0054,
            0.0036, 0.0054, 0.0036, 0.0054, 0.0036, 0.0054, 0.0036, 0.0054,
            0.0036, 0.0054, 0.0036, 0.0054, 0.0036, 0.0054, 0.0036, 0.0054,
            0.0036, 0.0054, 0.0036, 0.0054, 0.0036, 0.0054, 0.0036, 0.0054,
            0.0036, 0.0054, 0.0036, 0.0054, 0.0036, 0.0054, 0.0036, 0.0054,
            0.0036, 0.0054, 0.0036, 0.0054, 0.0036, 0.0054, 0.0036, 0.0054,
            0.0036, 0.0054, 0.0036, 0.0054, 0.0036, 0.0054, 0.0036, 0.0054,
            0.0036, 0.0054, 0.0036, 0.0054, 0.0036, 0.0054, 0.0036, 0.0054,
            0.0036, 0.0054, 0.0036, 0.0054, 0.0036, 0.0054, 0.0036, 0.0054,
            0.0036, 0.0054, 0.0036, 0.0054, 0.0036, 0.0054, 0.0036, 0.0054,
            0.0036, 0.0054, 0.0036, 0.0054, 0.0036, 0.0054, 0.0036, 0.0054,
            0.0036, 0.0054, 0.0036, 0.0054, 0.0036, 0.0054, 0.0036, 0.0054
        ]

        for rup, i in zip(src.iter_ruptures(), range(1000)):
            self.assertAlmostEqual(rup.hypocenter.longitude, lon[i], delta=0.1)
            self.assertAlmostEqual(rup.hypocenter.latitude, lat[i], delta=0.1)
            self.assertAlmostEqual(rup.hypocenter.depth, dep[i], delta=0.1)
            self.assertAlmostEqual(rup.occurrence_rate, rate[i], delta=0.01)
    def test_hypoloc_vertical_rupture(self):
        source_id = name = 'test-source'
        trt = TRT.ACTIVE_SHALLOW_CRUST
        hypo_list = numpy.array([[0.25, 0.25, 0.4], [0.75, 0.75, 0.6]])
        slip_list = numpy.array([[90., 1.]])
        src = SimpleFaultSource(source_id, name, trt, self.src_mfd,
                                self.mesh_spacing, self.sarea, 1.,
                                self.src_tom, self.upper_seismogenic_depth,
                                self.lower_seismogenic_depth, self.fault_trace,
                                self.dip, self.rake, hypo_list, slip_list)

        lon = [
            0.11691180881629422, 0.35972864251163345, 0.12590502487907043,
            0.36872185857443507, 0.13489824094187208, 0.37771507463723675,
            0.14389145700464828, 0.38670829070001295, 0.15288467306744993,
            0.39570150676281457, 0.16187788913025158, 0.40469472282559077,
            0.17087110519302778, 0.41368793888839245, 0.17986432125582943,
            0.42268115495119407, 0.18885753731860563, 0.43167437101397027,
            0.19785075338140728, 0.44066758707677195, 0.20684396944418348,
            0.44966080313954815, 0.21583718550698514, 0.45865401920234977,
            0.22483040156978679, 0.46764723526512603, 0.23382361763256301,
            0.47664045132792765, 0.24281683369536466, 0.48563366739072933,
            0.25181004975814086, 0.49462688345350553, 0.26080326582094249,
            0.50362009951630715, 0.26979648188374417, 0.51261331557908341,
            0.27878969794652037, 0.52160653164188497, 0.28778291400932199,
            0.53059974770468665, 0.29677613007209824, 0.53959296376746291,
            0.30576934613489987, 0.54858617983026448, 0.31476256219770149,
            0.55757939589304073, 0.32375577826047774, 0.56657261195584241,
            0.33274899432327937, 0.57556582801864398, 0.34174221038605557,
            0.58455904408142023, 0.35073542644885725, 0.59355226014422191,
            0.35972864251163345, 0.60254547620699805, 0.36872185857443507,
            0.61153869226979973, 0.37771507463723675, 0.62053190833257599,
            0.38670829070001295, 0.62952512439537756, 0.39570150676281457,
            0.63851834045817923, 0.40469472282559077, 0.64751155652095549,
            0.41368793888839245, 0.65650477258375706, 0.42268115495119407,
            0.66549798864653331, 0.43167437101397027, 0.67449120470933499,
            0.44066758707677195, 0.68348442077213656, 0.44966080313954815,
            0.69247763683491281, 0.45865401920234977, 0.70147085289771449,
            0.46764723526512603, 0.71046406896049064, 0.47664045132792765,
            0.71945728502329231, 0.48563366739072933, 0.72845050108606846,
            0.49462688345350553, 0.73744371714887014, 0.50362009951630715,
            0.74643693321167182, 0.51261331557908341, 0.75543014927444796,
            0.52160653164188497, 0.76442336533724964, 0.53059974770468665,
            0.77341658140002589, 0.53959296376746291, 0.78240979746282757,
            0.54858617983026448, 0.79140301352562914, 0.55757939589304073,
            0.80039622958840539, 0.56657261195584241, 0.80938944565120707,
            0.57556582801864398, 0.81838266171398322, 0.58455904408142023,
            0.82737587777678498, 0.59355226014422191, 0.83636909383958657,
            0.60254547620699805, 0.84536230990236272, 0.61153869226979973,
            0.85435552596516445, 0.62053190833257599, 0.86334874202794054,
            0.62952512439537756, 0.87234195809074222, 0.63851834045817923,
            0.88133517415351847
        ]
        lat = [
            0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
            0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
            0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
            0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
            0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
            0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
            0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
            0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
            0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
            0.0
        ]
        dep = [
            10.0, 30.0, 10.0, 30.0, 10.0, 30.0, 10.0, 30.0, 10.0, 30.0, 10.0,
            30.0, 10.0, 30.0, 10.0, 30.0, 10.0, 30.0, 10.0, 30.0, 10.0, 30.0,
            10.0, 30.0, 10.0, 30.0, 10.0, 30.0, 10.0, 30.0, 10.0, 30.0, 10.0,
            30.0, 10.0, 30.0, 10.0, 30.0, 10.0, 30.0, 10.0, 30.0, 10.0, 30.0,
            10.0, 30.0, 10.0, 30.0, 10.0, 30.0, 10.0, 30.0, 10.0, 30.0, 10.0,
            30.0, 10.0, 30.0, 10.0, 30.0, 10.0, 30.0, 10.0, 30.0, 10.0, 30.0,
            10.0, 30.0, 10.0, 30.0, 10.0, 30.0, 10.0, 30.0, 10.0, 30.0, 10.0,
            30.0, 10.0, 30.0, 10.0, 30.0, 10.0, 30.0, 10.0, 30.0, 10.0, 30.0,
            10.0, 30.0, 10.0, 30.0, 10.0, 30.0, 10.0, 30.0, 10.0, 30.0, 10.0,
            30.0, 10.0, 30.0, 10.0, 30.0, 10.0, 30.0, 10.0, 30.0, 10.0, 30.0,
            10.0, 30.0, 10.0, 30.0, 10.0, 30.0, 10.0, 30.0
        ]

        rate = [
            0.0067796610169491532, 0.010169491525423728, 0.0067796610169491532,
            0.010169491525423728, 0.0067796610169491532, 0.010169491525423728,
            0.0067796610169491532, 0.010169491525423728, 0.0067796610169491532,
            0.010169491525423728, 0.0067796610169491532, 0.010169491525423728,
            0.0067796610169491532, 0.010169491525423728, 0.0067796610169491532,
            0.010169491525423728, 0.0067796610169491532, 0.010169491525423728,
            0.0067796610169491532, 0.010169491525423728, 0.0067796610169491532,
            0.010169491525423728, 0.0067796610169491532, 0.010169491525423728,
            0.0067796610169491532, 0.010169491525423728, 0.0067796610169491532,
            0.010169491525423728, 0.0067796610169491532, 0.010169491525423728,
            0.0067796610169491532, 0.010169491525423728, 0.0067796610169491532,
            0.010169491525423728, 0.0067796610169491532, 0.010169491525423728,
            0.0067796610169491532, 0.010169491525423728, 0.0067796610169491532,
            0.010169491525423728, 0.0067796610169491532, 0.010169491525423728,
            0.0067796610169491532, 0.010169491525423728, 0.0067796610169491532,
            0.010169491525423728, 0.0067796610169491532, 0.010169491525423728,
            0.0067796610169491532, 0.010169491525423728, 0.0067796610169491532,
            0.010169491525423728, 0.0067796610169491532, 0.010169491525423728,
            0.0067796610169491532, 0.010169491525423728, 0.0067796610169491532,
            0.010169491525423728, 0.0067796610169491532, 0.010169491525423728,
            0.0067796610169491532, 0.010169491525423728, 0.0067796610169491532,
            0.010169491525423728, 0.0067796610169491532, 0.010169491525423728,
            0.0067796610169491532, 0.010169491525423728, 0.0067796610169491532,
            0.010169491525423728, 0.0067796610169491532, 0.010169491525423728,
            0.0067796610169491532, 0.010169491525423728, 0.0067796610169491532,
            0.010169491525423728, 0.0067796610169491532, 0.010169491525423728,
            0.0067796610169491532, 0.010169491525423728, 0.0067796610169491532,
            0.010169491525423728, 0.0067796610169491532, 0.010169491525423728,
            0.0067796610169491532, 0.010169491525423728, 0.0067796610169491532,
            0.010169491525423728, 0.0067796610169491532, 0.010169491525423728,
            0.0067796610169491532, 0.010169491525423728, 0.0067796610169491532,
            0.010169491525423728, 0.0067796610169491532, 0.010169491525423728,
            0.0067796610169491532, 0.010169491525423728, 0.0067796610169491532,
            0.010169491525423728, 0.0067796610169491532, 0.010169491525423728,
            0.0067796610169491532, 0.010169491525423728, 0.0067796610169491532,
            0.010169491525423728, 0.0067796610169491532, 0.010169491525423728,
            0.0067796610169491532, 0.010169491525423728, 0.0067796610169491532,
            0.010169491525423728, 0.0067796610169491532, 0.010169491525423728,
            0.0067796610169491532, 0.010169491525423728, 0.0067796610169491532,
            0.010169491525423728
        ]

        for rup, i in zip(src.iter_ruptures(), range(1000)):
            self.assertAlmostEqual(rup.hypocenter.longitude,
                                   lon[i],
                                   delta=0.01)
            self.assertAlmostEqual(rup.hypocenter.latitude, lat[i], delta=0.01)
            self.assertAlmostEqual(rup.hypocenter.depth, dep[i], delta=0.01)
            self.assertAlmostEqual(rup.occurrence_rate, rate[i], delta=0.01)