def srama_velocity_2000(chnl, trise):
    """
    Function srama_velocity_2000

    This function computes the mean velocity and corresponding error for a
    given channel rise time. The rise time shall be given in micro seconds and
    the returned dictionary, that contains the computed values are given in
    km/s. The functions are determined by [2].

    Parameters
    ----------
    chnl : str
        Requested channel calibration function. Available options:
            'cat_qc'
            'cat_qi'
            'iid_qt'
            'iid_qi'

    trise : int, float
        Rise time value.
        Physical Quantity: microseconds

    Returns
    -------
    out : dictionary
        Dictionary with the mean and error velocity named as the keys 'mean'
        and 'err', respectively. If trise is a list or an array, the values
        in the dictionary have the same shape as the input.

        Pysical Quantity: 'mean' : km/s
                          'err'  : km/s

    Notes:
    ------
    All three functions are defined within a certain rise time and amplitude
    domain. However, these values were not provided by [1]. Srama 2017 (priv.
    comm.) suggests to have signals with an amplitude of at least 10 fC (for
    each channel). The rise times and resulting velocities should  be handled
    with care. Extremely low velocities (< 2 - 5 km/s) and high paces
    (> 60 km/s) are mostly likely outside the definition range. Since no exact
    values are provided, no DefinitionRangeError raises.

    References
    ----------
    [2] R. Srama. Vom Cosmic-Dust-Analyzer zur Modellbeschreibung
        wissenschaftlicher Raumsonden. PhD thesis, Technische Universität
        München, 2000

    Examples
    --------
    >>> srama_velocity_2000(chnl='cat_qc', trise=10)
    {'err': 1.5547057674885145, 'mean': 3.109411534977029}

    >>> srama_velocity_2000('cat_qc', trise=0.0)
    ZeroDivisionError: 0.0 cannot be raised to a negative power

    Negative rise times lead to complex number, that has no technical or
    physical meaning. 

    >>> srama_velocity_2000('cat_qc', trise=-1)
    {'err': (0.8369516379290977-2.514825174937663j),
     'mean': (1.6739032758581953-5.029650349875326j)}

    """
    chnl = chnl.lower()
    x_10ns = trise * 100.0
    mean_vel_cat_qc = (lambda x_10ns: 5.35 + 1674270.0 * x_10ns ** -2.71 - 
        0.002253 * x_10ns)
    mean_vel_cat_qi = (lambda x_10ns: 3.535 + 18024000.0 * x_10ns ** -2.22 -
        0.00127 * x_10ns)
    mean_vel_iid_qt = (lambda x_10ns: 9.22 + 1.87 * 10.0 ** 5.0 * x_10ns **
        -1.26 - 1.45 * 10.0 ** -3.0 * x_10ns)
    mean_vel_iid_qi = (lambda x_10ns: 11.3 + 3.58 * 10.0 ** 5.0 * x_10ns **
        -1.35 - 2.21 * 10.0 ** -3.0 * x_10ns)
    _vel_cal = {'cat_qc': {'mean_func': mean_vel_cat_qc, 'err_fac': 0.5},
        'cat_qi': {'mean_func': mean_vel_cat_qi, 'err_fac': 0.6}, 'iid_qt':
        {'mean_func': mean_vel_iid_qt, 'err_fac': 0.64}, 'iid_qi': {
        'mean_func': mean_vel_iid_qi, 'err_fac': 0.6}}
    mean_vel = _vel_cal[chnl]['mean_func'](x_10ns)
    err_vel = _vel_cal[chnl]['err_fac'] * mean_vel
    return {'mean': mean_vel, 'err': err_vel}
