Exemplo n.º 1
0
    def test_add_event_type_atts_to_sources(self):
        (handle, file_name) = tempfile.mkstemp('.xml', __name__ + '_')
        os.close(handle)
        handle = open(file_name, 'w')

        sample = '\n'.join([
            '<?xml version="1.0" encoding="UTF-8"?>',
            '<event_type_controlfile>'
            '  <event_group event_type = "ham">'
            '    <GMPE fault_type = "more_ham">'
            '      <branch model = "food" weight = "1.0"/>'
            '    </GMPE>'
            '    <scaling scaling_rule = "y" />'
            '  </event_group>'
            '  <event_group event_type = "eggs">'
            '    <GMPE fault_type = "more_eggs">'
            '      <branch model = "Camp" weight = "0.33"/>'
            '      <branch model = "Tongs" weight = ".66"/>'
            '    </GMPE>'
            '    <scaling scaling_rule = "e" />'
            '  </event_group>'
            '</event_type_controlfile>'
        ])

        handle.write(sample)
        handle.close()

        event_type = ['ham', 'eggs', 'ham', 'eggs', 'eggs']
        dummy_list = []
        for name in event_type:
            d = DummyEventSet()
            d.event_type = name
            dummy_list.append(d)
            source_mod = Source_Model(dummy_list, 'Mw')
        source_mod.add_event_type_atts_to_sources(file_name)

        for s in source_mod:
            if s.event_type == 'ham':
                self.failUnlessEqual(s.fault_type, "more_ham")
            else:
                self.failUnlessEqual(s.fault_type, "more_eggs")

        os.remove(file_name)
        max_num_atten_models = source_mod.get_max_num_atten_models()
        self.failUnlessEqual(max_num_atten_models, 2)
Exemplo n.º 2
0
    def _create_fault_sources(self):
        (handle, file_name) = tempfile.mkstemp('.xml', __name__ + '_')
        os.close(handle)
        handle = open(file_name, 'w')

        sample = '\n'.join([
            '<?xml version="1.0" encoding="UTF-8"?>',
            '<event_type_controlfile>'
            '  <event_group event_type = "background">'
            '    <GMPE fault_type = "reverseft">'
            '      <branch model = "Campbel8" weight = "0.8"/>'
            '      <branch model = "Boore08" weight = "0.2"/>'
            '    </GMPE>'
            '    <scaling scaling_rule = "background" scaling_fault_type = "reverse" />'
            '  </event_group>'
            '  <event_group event_type = "intraslab">'
            '    <GMPE fault_type = "reverse2">'
            '      <branch model = "Zhao06" weight = "0.5"/>'
            '      <branch model = "Atkin" weight = "0.5"/>'
            '    </GMPE>'
            '    <scaling scaling_rule = "intraslab" scaling_fault_type = "unspecified" />'
            '  </event_group>'
            '</event_type_controlfile>'
        ])

        handle.write(sample)
        handle.close()

        generation_min_mag = 7.9
        recurrence_min_mag = 4
        actual_generation_min_mag = max(generation_min_mag, recurrence_min_mag)
        recurrence_max_mag = 8.0
        A_min = 10
        b = 1.4
        distribution = 'distribution'

        fsg_list = []
        for i, event_type in enumerate(
            ['background', 'intraslab', 'intraslab']):
            dummy = DummyEventSet()
            dummy.magnitude_dist = {}
            dummy.magnitude_dist['minimum'] = actual_generation_min_mag + i
            dummy.magnitude_dist['maximum'] = recurrence_max_mag + i
            dummy.generation_min_mag = generation_min_mag + i
            dummy.event_type = event_type
            dummy.name = 'name' + str(i)

            dummyRm = DummyEventSet()
            dummyRm.max_magnitude = recurrence_max_mag + i
            dummyRm.min_magnitude = recurrence_min_mag + i
            dummyRm.A_min = A_min + i
            dummyRm.b = b + i
            dummyRm.recurrence_model_distribution = 'distribution' + str(i)
            dummyRm.raw_weight = 1.0
            dummy.recurrence_models = [dummyRm]

            fsg_list.append(dummy)

        magnitude_type = 'Mw'

        source_model = create_fault_sources(file_name, fsg_list,
                                            magnitude_type)

        os.remove(file_name)

        return source_model