def stuhlinger_velocity(total_efficiency, t_m, specific_mass):
    """Stuhlinger velocity, a characteristic velocity for electric propulsion missions.

    The Stuhlinger velocity is a characteristic velocity for electric propulsion missions,
    and is used in calculation of optimal specific impulse. It is defined as:

    :math:`v_{ch} \\equiv \\sqrt{ \\frac{2 \\eta_T t_m}{\\alpha} }`

    where :math:`\\eta_T` is the thruster total efficiency,
    :math:`t_m` is the mission thrust duration, and
    :math:`\\alpha` is the propulsion and power system specific mass.

    The Stuhlinger velocity is also an approximate upper limit for the :math:`\\Delta v`
    capability of an electric propulsion spacecraft.

    Reference: `Lozano 16.522 notes`_, equation 3-7.

    Arguments:
        total_efficiency (scalar in (0, 1]): The total efficiency of the thruster
            [units: dimensionless].
        t_m: mission thrust duration [units: second].
        specific_mass: specific mass (per unit power) of the thruster and power system
            [units: kilogram watt**1].

    Returns:
        scalar: Stuhlinger velocity [units: meter second**-1].

    .. _Lozano 16.522 notes: https://ocw.mit.edu/courses/aeronautics-and-astronautics/16-522-space-propulsion-spring-2015/lecture-notes/MIT16_522S15_Lecture3-4.pdf
    """
    # Check inputs
    if total_efficiency < 0 or total_efficiency > 1:
        raise ValueError('total_efficiency {:.f} is not in [0, 1]'.format(total_efficiency))

    return (2 * total_efficiency * t_m / specific_mass)**0.5