ORIFICE_DISCHARGE_C

Overview

Calculate the discharge coefficient for an orifice plate using the Reader-Harris-Gallagher correlation (ISO 5167 standard).

Excel Usage

=ORIFICE_DISCHARGE_C(pipe_diameter, orifice_diameter, density, viscosity, mass_flow_rate, orifice_taps)
  • pipe_diameter (float, required): Upstream internal pipe diameter (m)
  • orifice_diameter (float, required): Diameter of orifice at flow conditions (m)
  • density (float, required): Density of fluid (kg/m³)
  • viscosity (float, required): Viscosity of fluid (Pa·s)
  • mass_flow_rate (float, required): Mass flow rate of fluid through the orifice (kg/s)
  • orifice_taps (str, optional, default: “corner”): Orientation of the pressure taps

Returns (float): Coefficient of discharge of the orifice plate, dimensionless [-]

Examples

Example 1: Standard orifice with flange taps

Inputs:

pipe_diameter orifice_diameter density viscosity mass_flow_rate orifice_taps
0.07391 0.0222 1.165 0.0000185 0.12 flange

Excel formula:

=ORIFICE_DISCHARGE_C(0.07391, 0.0222, 1.165, 0.0000185, 0.12, "flange")

Expected output:

0.599

Example 2: Orifice with corner taps

Inputs:

pipe_diameter orifice_diameter density viscosity mass_flow_rate orifice_taps
0.07391 0.0222 1.165 0.0000185 0.12 corner

Excel formula:

=ORIFICE_DISCHARGE_C(0.07391, 0.0222, 1.165, 0.0000185, 0.12, "corner")

Expected output:

0.6

Example 3: Orifice with D taps

Inputs:

pipe_diameter orifice_diameter density viscosity mass_flow_rate orifice_taps
0.1 0.05 998.2 0.001 5 D

Excel formula:

=ORIFICE_DISCHARGE_C(0.1, 0.05, 998.2, 0.001, 5, "D")

Expected output:

0.6074

Example 4: Orifice with D/2 taps

Inputs:

pipe_diameter orifice_diameter density viscosity mass_flow_rate orifice_taps
0.1 0.05 998.2 0.001 5 D/2

Excel formula:

=ORIFICE_DISCHARGE_C(0.1, 0.05, 998.2, 0.001, 5, "D/2")

Expected output:

0.6074

Python Code

from fluids.flow_meter import C_Reader_Harris_Gallagher as fluids_c_reader_harris_gallagher

def orifice_discharge_c(pipe_diameter, orifice_diameter, density, viscosity, mass_flow_rate, orifice_taps='corner'):
    """
    Calculate the discharge coefficient for an orifice plate using the Reader-Harris-Gallagher correlation (ISO 5167 standard).

    See: https://fluids.readthedocs.io/fluids.flow_meter.html#fluids.flow_meter.C_Reader_Harris_Gallagher

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

    Args:
        pipe_diameter (float): Upstream internal pipe diameter (m)
        orifice_diameter (float): Diameter of orifice at flow conditions (m)
        density (float): Density of fluid (kg/m³)
        viscosity (float): Viscosity of fluid (Pa·s)
        mass_flow_rate (float): Mass flow rate of fluid through the orifice (kg/s)
        orifice_taps (str, optional): Orientation of the pressure taps Valid options: Corner, Flange, D, D/2. Default is 'corner'.

    Returns:
        float: Coefficient of discharge of the orifice plate, dimensionless [-]
    """
    try:
      pipe_diameter = float(pipe_diameter)
      orifice_diameter = float(orifice_diameter)
      density = float(density)
      viscosity = float(viscosity)
      mass_flow_rate = float(mass_flow_rate)

      if pipe_diameter <= 0:
        return "Error: Pipe_diameter must be positive."
      if orifice_diameter <= 0:
        return "Error: Orifice_diameter must be positive."
      if orifice_diameter >= pipe_diameter:
        return "Error: Orifice_diameter must be less than pipe_diameter."
      if density <= 0:
        return "Error: Density must be positive."
      if viscosity <= 0:
        return "Error: Viscosity must be positive."
      if mass_flow_rate <= 0:
        return "Error: Mass_flow_rate must be positive."

      result = fluids_c_reader_harris_gallagher(
        D=pipe_diameter,
        Do=orifice_diameter,
        rho=density,
        mu=viscosity,
        m=mass_flow_rate,
        taps=orifice_taps
      )
      return float(result)
    except (TypeError, ValueError):
      return "Error: All numeric parameters must be valid numbers."
    except Exception as e:
      return f"Error: {str(e)}"

Online Calculator