def control_valve_choke_P_l(Psat, Pc, FL, P1=None, P2=None, disp=True):
    r'''Calculates either the upstream or downstream pressure at which choked
    flow though a liquid control valve occurs, given either a set upstream or 
    downstream pressure. Implements an analytical solution of 
    the needed equations from the full function
    :py:func:`~.size_control_valve_l`. For some pressures, no choked flow 
    is possible; for choked flow to occur the direction if flow must be 
    reversed. If `disp` is True, an exception will be raised for these
    conditions.
    
    .. math::
        P_1 = \frac{F_{F} F_{L}^{2} P_{sat} - P_{2}}{F_{L}^{2} - 1}
        
    .. math::
        P_2 = F_{F} F_{L}^{2} P_{sat} - F_{L}^{2} P_{1} + P_{1}
    
    Parameters
    ----------
    Psat : float
        Saturation pressure of the liquid at inlet temperature [Pa]
    Pc : float
        Critical pressure of the liquid [Pa]
    FL : float, optional
        Liquid pressure recovery factor of a control valve without attached 
        fittings [-]
    P1 : float, optional
        Absolute pressure upstream of the valve [Pa]
    P2 : float, optional
        Absolute pressure downstream of the valve [Pa]
    disp : bool, optional
        Whether or not to raise an exception on flow reversal, [-]

    Returns
    -------
    P_choke : float
        Pressure at which a choke occurs in the liquid valve [Pa]

    Notes
    -----
    Extremely cheap to compute.
    
    Examples
    --------
    >>> control_valve_choke_P_l(69682.89291024722, 22048320.0, 0.6, 680000.0)
    458887.5306077305
    >>> control_valve_choke_P_l(69682.89291024722, 22048320.0, 0.6, P2=458887.5306077305)
    680000.0
    '''
    FF = FF_critical_pressure_ratio_l(Psat=Psat, Pc=Pc)
    Pmin_absolute = FF*Psat
    if P2 is None:
        ans = P2 = FF*FL*FL*Psat - FL*FL*P1 + P1
    elif P1 is None:
        ans = P1 = (FF*FL*FL*Psat - P2)/(FL*FL - 1.0)
    else:
        raise Exception('Either P1 or P2 needs to be specified')
    if P2 > P1 and disp:
        raise Exception('Specified P1 is too low for choking to occur '
                        'at any downstream pressure; minimum '
                        'upstream pressure for choking to be possible '
                        'is %g Pa.' %Pmin_absolute)
    return ans