FLOW_METER_DISCH
Overview
Calculate mass flow rate through a differential pressure flow meter based on measured pressures and meter geometry.
Excel Usage
=FLOW_METER_DISCH(D, Do, P_one, P_two, rho, C, expansibility, disch_meter_type)
D(float, required): Upstream internal pipe diameter (m)Do(float, required): Meter characteristic diameter - orifice hole, venturi throat, cone end, or wedge height (m)P_one(float, required): Static pressure upstream at pressure tap (Pa)P_two(float, required): Static pressure downstream at pressure tap (Pa)rho(float, required): Density of fluid at P1 (kg/m³)C(float, required): Coefficient of discharge of the meter (-)expansibility(float, optional, default: 1): Expansibility factor (1 for incompressible, <1 for compressible) (-)disch_meter_type(str, optional, default: “ISO 5167 orifice”): Type of differential pressure flow meter
Returns (float): Mass flow rate of fluid through the meter (kg/s)
Examples
Example 1: ISO 5167 orifice with air
Inputs:
| D | Do | P_one | P_two | rho | C | expansibility | disch_meter_type |
|---|---|---|---|---|---|---|---|
| 0.0739 | 0.0222 | 100000 | 99000 | 1.1646 | 0.5988 | 0.9975 | ISO 5167 orifice |
Excel formula:
=FLOW_METER_DISCH(0.0739, 0.0222, 100000, 99000, 1.1646, 0.5988, 0.9975, "ISO 5167 orifice")
Expected output:
| Result |
|---|
| 0.0112 |
Example 2: Machined venturi with water
Inputs:
| D | Do | P_one | P_two | rho | C | expansibility | disch_meter_type |
|---|---|---|---|---|---|---|---|
| 0.1 | 0.06 | 150000 | 145000 | 998 | 0.995 | 1 | machined convergent venturi tube |
Excel formula:
=FLOW_METER_DISCH(0.1, 0.06, 150000, 145000, 998, 0.995, 1, "machined convergent venturi tube")
Expected output:
| Result |
|---|
| 9.5262 |
Example 3: Cone meter with oil
Inputs:
| D | Do | P_one | P_two | rho | C | disch_meter_type |
|---|---|---|---|---|---|---|
| 0.2 | 0.15 | 300000 | 290000 | 850 | 0.82 | cone meter |
Excel formula:
=FLOW_METER_DISCH(0.2, 0.15, 300000, 290000, 850, 0.82, "cone meter")
Expected output:
| Result |
|---|
| 51.6774 |
Example 4: Wedge meter
Inputs:
| D | Do | P_one | P_two | rho | C | disch_meter_type |
|---|---|---|---|---|---|---|
| 0.15 | 0.05 | 100000 | 98000 | 800 | 0.73 | wedge meter |
Excel formula:
=FLOW_METER_DISCH(0.15, 0.05, 100000, 98000, 800, 0.73, "wedge meter")
Expected output:
| Result |
|---|
| 7.0399 |
Python Code
import micropip
await micropip.install(["fluids"])
from fluids.flow_meter import flow_meter_discharge
def flow_meter_disch(D, Do, P_one, P_two, rho, C, expansibility=1, disch_meter_type='ISO 5167 orifice'):
"""
Calculate mass flow rate through a differential pressure flow meter based on measured pressures and meter geometry.
See: https://fluids.readthedocs.io/fluids.flow_meter.html#fluids.flow_meter.flow_meter_discharge
This example function is provided as-is without any representation of accuracy.
Args:
D (float): Upstream internal pipe diameter (m)
Do (float): Meter characteristic diameter - orifice hole, venturi throat, cone end, or wedge height (m)
P_one (float): Static pressure upstream at pressure tap (Pa)
P_two (float): Static pressure downstream at pressure tap (Pa)
rho (float): Density of fluid at P1 (kg/m³)
C (float): Coefficient of discharge of the meter (-)
expansibility (float, optional): Expansibility factor (1 for incompressible, <1 for compressible) (-) Default is 1.
disch_meter_type (str, optional): Type of differential pressure flow meter Valid options: ISO 5167 Orifice, Orifice, Conical Orifice, Eccentric Orifice, Segmental Orifice, Quarter Circle Orifice, Venturi Nozzle, ISA 1932 Nozzle, Long Radius Nozzle, Machined Convergent Venturi Tube, Rough Welded Convergent Venturi Tube, As Cast Convergent Venturi Tube, Cone Meter, Wedge Meter. Default is 'ISO 5167 orifice'.
Returns:
float: Mass flow rate of fluid through the meter (kg/s)
"""
if D <= 0:
return "Error: D (upstream diameter) must be positive."
if Do <= 0:
return "Error: Do (meter diameter) must be positive."
try:
result = flow_meter_discharge(
D=D,
Do=Do,
P1=P_one,
P2=P_two,
rho=rho,
C=C,
expansibility=expansibility,
meter_type=disch_meter_type
)
return float(result)
except Exception as e:
return f"Error: {str(e)}"