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