CV_CHOKE_PRESS_LIQ

Solves for either upstream or downstream pressure at the choking limit for liquid flow through a control valve.

The calculation uses the IEC liquid critical pressure ratio factor F_F together with F_L:

P_1 = \frac{F_FF_L^2P_{sat} - P_2}{F_L^2 - 1}, \quad P_2 = F_FF_L^2P_{sat} - F_L^2P_1 + P_1

Provide p_inlet or p_outlet and the function returns the corresponding choked pressure.

Excel Usage

=CV_CHOKE_PRESS_LIQ(p_sat, p_crit, fl_factor, p_inlet, p_outlet)
  • p_sat (float, required): Saturation pressure (Pa)
  • p_crit (float, required): Critical pressure (Pa)
  • fl_factor (float, required): Liquid pressure recovery factor (-)
  • p_inlet (float, optional, default: null): Inlet pressure (Pa)
  • p_outlet (float, optional, default: null): Outlet pressure (Pa)

Returns (float): Choked pressure (Pa)

Example 1: Docs example (given P1)

Inputs:

p_sat p_crit fl_factor p_inlet
69682.89 22048320 0.6 680000

Excel formula:

=CV_CHOKE_PRESS_LIQ(69682.89, 22048320, 0.6, 680000)

Expected output:

458888

Example 2: Docs example (given P2)

Inputs:

p_sat p_crit fl_factor p_outlet
69682.89 22048320 0.6 458887.53

Excel formula:

=CV_CHOKE_PRESS_LIQ(69682.89, 22048320, 0.6, 458887.53)

Expected output:

680000

Example 3: Water at 100C

Inputs:

p_sat p_crit fl_factor p_inlet
101325 22064000 0.9 1000000

Excel formula:

=CV_CHOKE_PRESS_LIQ(101325, 22064000, 0.9, 1000000)

Expected output:

267233

Example 4: Ethanol at 25C

Inputs:

p_sat p_crit fl_factor p_inlet
7900 6140000 0.8 500000

Excel formula:

=CV_CHOKE_PRESS_LIQ(7900, 6140000, 0.8, 500000)

Expected output:

184803

Python Code

Show Code
from fluids.control_valve import control_valve_choke_P_l

def cv_choke_press_liq(p_sat, p_crit, fl_factor, p_inlet=None, p_outlet=None):
    """
    Calculates the pressure at which choked flow occurs in a liquid control valve.

    See: https://fluids.readthedocs.io/fluids.control_valve.html#fluids.control_valve.control_valve_choke_P_l

    This example function is provided as-is without any representation of accuracy.

    Args:
        p_sat (float): Saturation pressure (Pa)
        p_crit (float): Critical pressure (Pa)
        fl_factor (float): Liquid pressure recovery factor (-)
        p_inlet (float, optional): Inlet pressure (Pa) Default is None.
        p_outlet (float, optional): Outlet pressure (Pa) Default is None.

    Returns:
        float: Choked pressure (Pa)
    """
    try:
      p_sat = float(p_sat)
      p_crit = float(p_crit)
      fl_factor = float(fl_factor)
      if p_inlet is not None:
        p_inlet = float(p_inlet)
      if p_outlet is not None:
        p_outlet = float(p_outlet)

      if p_sat <= 0:
        return "Error: Saturation pressure must be positive."
      if p_crit <= 0:
        return "Error: Critical pressure must be positive."
      if fl_factor <= 0:
        return "Error: Liquid pressure recovery factor must be positive."

      if p_inlet is None and p_outlet is None:
        return "Error: Either inlet pressure or outlet pressure must be provided."
      if p_inlet is not None and p_outlet is not None:
        return "Error: Provide either inlet pressure or outlet pressure, not both."

      return float(control_valve_choke_P_l(Psat=p_sat, Pc=p_crit, FL=fl_factor, P1=p_inlet, P2=p_outlet, check_choking=True))
    except Exception as e:
      return f"Error: {str(e)}"

Online Calculator

Saturation pressure (Pa)
Critical pressure (Pa)
Liquid pressure recovery factor (-)
Inlet pressure (Pa)
Outlet pressure (Pa)