def _simple_to_mtk(src, fault_mesh_spacing=1.0): """Convert a NRML simple fault source to the MTK equivalent. See :mod:`nrml.models` and :mod:`nhlib.source`. :param src: :class:`nrml.models.SimpleFaultSource` instance. """ shapely_line = wkt.loads(src.geometry.wkt) input_geometry = np.array(shapely_line.coords) simple_fault = mtkSimpleFaultSource( src.id, src.name, src.trt, src.rupt_aspect_ratio, input_geometry, src.geometry.dip, src.geometry.upper_seismo_depth, src.geometry.lower_seismo_depth, mesh_spacing=fault_mesh_spacing) return simple_fault
def _simple_to_nhlib(src, mesh_spacing, bin_width): """Convert a NRML simple fault source to the NHLib equivalent. See :mod:`nrml.models` and :mod:`nhlib.source`. :param src: :class:`nrml.models.PointSource` 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 NHLib 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_nhlib(src.mfd, bin_width) simple = mtkSimpleFaultSource( source_id=src.id, name=src.name, tectonic_region_type=src.trt, mfd=mf_dist, rupture_mesh_spacing=mesh_spacing, magnitude_scaling_relationship=_SCALE_REL_MAP[src.mag_scale_rel](), 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