def _expected_simple(self): incr_mfd = mfd.EvenlyDiscretizedMFD(min_mag=5.0, bin_width=0.1, occurrence_rates=[ 0.0010614989, 8.8291627E-4, 7.3437777E-4, 6.108288E-4, 5.080653E-4, ]) simple = source.SimpleFaultSource( source_id="3", name="Mount Diablo Thrust", tectonic_region_type="Active Shallow Crust", mfd=incr_mfd, rupture_mesh_spacing=MESH_SPACING, magnitude_scaling_relationship=scalerel.WC1994(), rupture_aspect_ratio=1.5, upper_seismogenic_depth=10.0, lower_seismogenic_depth=20.0, fault_trace=geo.Line([ geo.Point(-121.82290, 37.73010), geo.Point(-122.03880, 37.87710) ]), dip=45.0, rake=30.0) return simple
def _expected_simple(self): incr_mfd = mfd.EvenlyDiscretizedMFD( min_mag=5.0, bin_width=0.1, occurrence_rates=[ 0.0010614989, 8.8291627E-4, 7.3437777E-4, 6.108288E-4, 5.080653E-4]) simple = source.SimpleFaultSource( source_id="3", name="Mount Diablo Thrust", tectonic_region_type="Active Shallow Crust", mfd=incr_mfd, rupture_mesh_spacing=self.rupture_mesh_spacing, magnitude_scaling_relationship=scalerel.WC1994(), rupture_aspect_ratio=1.5, upper_seismogenic_depth=10.0, lower_seismogenic_depth=20.0, fault_trace=geo.Line( [geo.Point(-121.82290, 37.73010), geo.Point(-122.03880, 37.87710)]), dip=45.0, rake=30.0, temporal_occurrence_model=PoissonTOM(50.), hypo_list=numpy.array([[0.25, 0.25, 0.3], [0.75, 0.75, 0.7]]), slip_list=numpy.array([[90, 0.7], [135, 0.3]])) simple.num_ruptures = simple.count_ruptures() return simple
def _simple_to_hazardlib(self, src): """Convert a NRML simple fault source to the HazardLib equivalent. See :mod:`openquake.nrmllib.models` and :mod:`openquake.hazardlib.source`. :param src: :class:`openquake.nrmllib.models.SimpleFaultRuptureModel` instance. :returns: The HazardLib representation of the input source. """ shapely_line = wkt.loads(src.geometry.wkt) fault_trace = geo.Line([geo.Point(*x) for x in shapely_line.coords]) mf_dist = self._mfd_to_hazardlib(src.mfd) msr = scalerel.get_available_magnitude_scalerel()[src.mag_scale_rel]() simple = source.SimpleFaultSource( source_id=src.id, name=src.name, tectonic_region_type=src.trt, mfd=mf_dist, rupture_mesh_spacing=self.rupture_mesh_spacing, magnitude_scaling_relationship=msr, rupture_aspect_ratio=src.rupt_aspect_ratio, upper_seismogenic_depth=src.geometry.upper_seismo_depth, lower_seismogenic_depth=src.geometry.lower_seismo_depth, fault_trace=fault_trace, dip=src.geometry.dip, rake=src.rake, temporal_occurrence_model=self.default_tom, ) return simple
def convert_simpleFaultSource(self, node): """ Convert the given node into a simple fault object. :param node: a node with tag areaGeometry :returns: a :class:`openquake.hazardlib.source.SimpleFaultSource` instance """ geom = node.simpleFaultGeometry msr = valid.SCALEREL[~node.magScaleRel]() simple = source.SimpleFaultSource( source_id=node['id'], name=node['name'], tectonic_region_type=node['tectonicRegion'], mfd=self.convert_mfdist(node), rupture_mesh_spacing=self.rupture_mesh_spacing, magnitude_scaling_relationship=msr, rupture_aspect_ratio=~node.ruptAspectRatio, upper_seismogenic_depth=~geom.upperSeismoDepth, lower_seismogenic_depth=~geom.lowerSeismoDepth, fault_trace=self.geo_line(geom), dip=~geom.dip, rake=~node.rake, temporal_occurrence_model=self.tom) return simple
def convert_simpleFaultSource(self, node): """ Convert the given node into a simple fault object. :param node: a node with tag areaGeometry :returns: a :class:`openquake.hazardlib.source.SimpleFaultSource` instance """ geom = node.simpleFaultGeometry msr = valid.SCALEREL[~node.magScaleRel]() fault_trace = self.geo_line(geom) mfd = self.convert_mfdist(node) with context(self.fname, node): try: hypo_list = valid.hypo_list(node.hypoList) except AttributeError: hypo_list = () try: slip_list = valid.slip_list(node.slipList) except AttributeError: slip_list = () simple = source.SimpleFaultSource( source_id=node['id'], name=node['name'], tectonic_region_type=node.attrib.get('tectonicRegion'), mfd=mfd, rupture_mesh_spacing=self.rupture_mesh_spacing, magnitude_scaling_relationship=msr, rupture_aspect_ratio=~node.ruptAspectRatio, upper_seismogenic_depth=~geom.upperSeismoDepth, lower_seismogenic_depth=~geom.lowerSeismoDepth, fault_trace=fault_trace, dip=~geom.dip, rake=~node.rake, temporal_occurrence_model=self.get_tom(node), hypo_list=hypo_list, slip_list=slip_list) return simple
def _simple_to_hazardlib(src, mesh_spacing, bin_width): """Convert a NRML simple fault source to the HazardLib equivalent. See :mod:`openquake.nrmllib.models` and :mod:`openquake.hazardlib.source`. :param src: :class:`openquake.nrmllib.models.SimpleFaultRuptureModel` instance. :param float mesh_spacing: Rupture mesh spacing, in km. :param float bin_width: Truncated Gutenberg-Richter MFD (Magnitude Frequency Distribution) bin width. :returns: The HazardLib representation of the input source. """ shapely_line = wkt.loads(src.geometry.wkt) fault_trace = geo.Line([geo.Point(*x) for x in shapely_line.coords]) mf_dist = _mfd_to_hazardlib(src.mfd, bin_width) msr = scalerel.get_available_magnitude_scalerel()[src.mag_scale_rel]() simple = source.SimpleFaultSource( source_id=src.id, name=src.name, tectonic_region_type=src.trt, mfd=mf_dist, rupture_mesh_spacing=mesh_spacing, magnitude_scaling_relationship=msr, rupture_aspect_ratio=src.rupt_aspect_ratio, upper_seismogenic_depth=src.geometry.upper_seismo_depth, lower_seismogenic_depth=src.geometry.lower_seismo_depth, fault_trace=fault_trace, dip=src.geometry.dip, rake=src.rake) return simple