CV_NOISE_GAS_2011
Overview
The CV_NOISE_GAS_2011 function calculates the A-weighted sound pressure level (in decibels) generated by gas flowing through a control valve. This implementation follows the international standard IEC 60534-8-3 (2011), which specifies the aerodynamic noise prediction method for industrial process control valves.
Control valve noise in gas applications arises primarily from turbulent flow, shock waves, and high-velocity jet interactions as the gas expands through the valve trim. The IEC 60534-8-3 standard provides a comprehensive model that accounts for five distinct flow regimes based on pressure ratios and valve geometry. The calculation determines the internal acoustic power generated at the valve outlet, transmission losses through the pipe wall, and the resulting external sound level at a reference distance of 1 meter from the pipe wall.
This function uses the fluids library, an open-source Python package for fluid dynamics and chemical engineering calculations. For detailed parameter descriptions and additional examples, see the fluids control valve documentation.
Key parameters affecting the calculated noise level include:
- Mass flow rate and pressure drop across the valve
- Valve flow coefficient (K_v) and valve style modifier (F_d)
- Liquid pressure recovery factor (F_L) which influences flow regime transitions
- Pipe dimensions and material properties (density and speed of sound)
- Strouhal number (S_{tp}) for peak frequency estimation, typically 0.1–0.3
The result represents the A-weighted sound pressure level at 1 meter downstream of the valve and 1 meter from the pipe wall, referenced to the standard threshold of hearing (2×10⁻⁵ Pa). This metric is essential for evaluating occupational noise exposure, environmental compliance, and valve selection in noise-sensitive applications.
This example function is provided as-is without any representation of accuracy.
Excel Usage
=CV_NOISE_GAS_2011(m, p_in, p_out, t_in, rho, gamma, mw, kv, d, di, t_pipe, fd, fl, flp, fp, rho_pipe, c_pipe, p_air, rho_air, c_air, an, stp, t_out, beta)
m(float, required): Mass flow rate of gas through the control valve (kg/s)p_in(float, required): Inlet pressure of the gas before valves and reducers (Pa)p_out(float, required): Outlet pressure of the gas after valves and reducers (Pa)t_in(float, required): Inlet gas temperature (K)rho(float, required): Density of the gas at the inlet (kg/m³)gamma(float, required): Specific heat capacity ratio (dimensionless)mw(float, required): Molecular weight of the gas (g/mol)kv(float, required): Metric Kv valve flow coefficient (m³/hr)d(float, required): Diameter of the valve (m)di(float, required): Internal diameter of the pipe before and after the valve (m)t_pipe(float, required): Wall thickness of the pipe after the valve (m)fd(float, required): Valve style modifier (dimensionless)fl(float, required): Liquid pressure recovery factor (dimensionless)flp(float, optional, default: null): Liquid pressure recovery factor with piping geometry factor (dimensionless)fp(float, optional, default: null): Piping geometry factor (dimensionless)rho_pipe(float, optional, default: 7800): Density of the pipe wall material (kg/m³)c_pipe(float, optional, default: 5000): Speed of sound in the pipe wall material (m/s)p_air(float, optional, default: 101325): Standard atmospheric pressure (Pa)rho_air(float, optional, default: 1.2): Density of air at standard conditions (kg/m³)c_air(float, optional, default: 343): Speed of sound in air (m/s)an(float, optional, default: -3.8): Constant for gas noise calculationstp(float, optional, default: 0.2): Strouhal number for gas noise calculationt_out(float, optional, default: null): Outlet gas temperature (K)beta(float, optional, default: 0.93): Correction factor for gas properties
Returns (float): LpAe1m - A-weighted sound pressure level [dB], or an error message (str) if input is invalid.
Examples
Example 1: Demo case 1
Inputs:
| m | p_in | p_out | t_in | rho | gamma | mw | kv | d | di | t_pipe | fd | fl | flp | fp |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 2.22 | 1000000 | 720000 | 450 | 5.3 | 1.22 | 19.8 | 77.85 | 0.1 | 0.2031 | 0.008 | 0.296 | 0.792 | 0.792 | 0.98 |
Excel formula:
=CV_NOISE_GAS_2011(2.22, 1000000, 720000, 450, 5.3, 1.22, 19.8, 77.85, 0.1, 0.2031, 0.008, 0.296, 0.792, 0.792, 0.98)
Expected output:
91.7
Example 2: Demo case 2
Inputs:
| m | p_in | p_out | t_in | rho | gamma | mw | kv | d | di | t_pipe | fd | fl |
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 1.5 | 800000 | 700000 | 300 | 3 | 1.3 | 20 | 50 | 0.08 | 0.15 | 0.006 | 0.3 | 0.8 |
Excel formula:
=CV_NOISE_GAS_2011(1.5, 800000, 700000, 300, 3, 1.3, 20, 50, 0.08, 0.15, 0.006, 0.3, 0.8)
Expected output:
80.1
Example 3: Demo case 3
Inputs:
| m | p_in | p_out | t_in | rho | gamma | mw | kv | d | di | t_pipe | fd | fl | flp | fp |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 3 | 1200000 | 600000 | 500 | 6 | 1.25 | 18 | 100 | 0.12 | 0.25 | 0.01 | 0.25 | 0.75 | 0.8 | 0.95 |
Excel formula:
=CV_NOISE_GAS_2011(3, 1200000, 600000, 500, 6, 1.25, 18, 100, 0.12, 0.25, 0.01, 0.25, 0.75, 0.8, 0.95)
Expected output:
99.2
Example 4: Demo case 4
Inputs:
| m | p_in | p_out | t_in | rho | gamma | mw | kv | d | di | t_pipe | fd | fl |
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 0.5 | 500000 | 400000 | 293 | 1.2 | 1.4 | 28.96 | 20 | 0.05 | 0.1 | 0.004 | 0.4 | 0.85 |
Excel formula:
=CV_NOISE_GAS_2011(0.5, 500000, 400000, 293, 1.2, 1.4, 28.96, 20, 0.05, 0.1, 0.004, 0.4, 0.85)
Expected output:
73.5
Python Code
import micropip
await micropip.install(["fluids"])
import math
from fluids.control_valve import control_valve_noise_g_2011 as fluids_control_valve_noise_g_2011
def cv_noise_gas_2011(m, p_in, p_out, t_in, rho, gamma, mw, kv, d, di, t_pipe, fd, fl, flp=None, fp=None, rho_pipe=7800, c_pipe=5000, p_air=101325, rho_air=1.2, c_air=343, an=-3.8, stp=0.2, t_out=None, beta=0.93):
"""
Calculate the A-weighted sound pressure level for gas flow through a control valve per IEC 60534-8-3 (2011).
See: https://fluids.readthedocs.io/fluids.control_valve.html#fluids.control_valve.control_valve_noise_g_2011
This example function is provided as-is without any representation of accuracy.
Args:
m (float): Mass flow rate of gas through the control valve (kg/s)
p_in (float): Inlet pressure of the gas before valves and reducers (Pa)
p_out (float): Outlet pressure of the gas after valves and reducers (Pa)
t_in (float): Inlet gas temperature (K)
rho (float): Density of the gas at the inlet (kg/m³)
gamma (float): Specific heat capacity ratio (dimensionless)
mw (float): Molecular weight of the gas (g/mol)
kv (float): Metric Kv valve flow coefficient (m³/hr)
d (float): Diameter of the valve (m)
di (float): Internal diameter of the pipe before and after the valve (m)
t_pipe (float): Wall thickness of the pipe after the valve (m)
fd (float): Valve style modifier (dimensionless)
fl (float): Liquid pressure recovery factor (dimensionless)
flp (float, optional): Liquid pressure recovery factor with piping geometry factor (dimensionless) Default is None.
fp (float, optional): Piping geometry factor (dimensionless) Default is None.
rho_pipe (float, optional): Density of the pipe wall material (kg/m³) Default is 7800.
c_pipe (float, optional): Speed of sound in the pipe wall material (m/s) Default is 5000.
p_air (float, optional): Standard atmospheric pressure (Pa) Default is 101325.
rho_air (float, optional): Density of air at standard conditions (kg/m³) Default is 1.2.
c_air (float, optional): Speed of sound in air (m/s) Default is 343.
an (float, optional): Constant for gas noise calculation Default is -3.8.
stp (float, optional): Strouhal number for gas noise calculation Default is 0.2.
t_out (float, optional): Outlet gas temperature (K) Default is None.
beta (float, optional): Correction factor for gas properties Default is 0.93.
Returns:
float: LpAe1m - A-weighted sound pressure level [dB], or an error message (str) if input is invalid.
"""
# Validate required inputs
required_params = [m, p_in, p_out, t_in, rho, gamma, mw, kv, d, di, t_pipe, fd, fl]
if not all(isinstance(x, (int, float)) for x in required_params):
return "Error: All required parameters must be numeric."
if any(not math.isfinite(x) for x in required_params):
return "Error: All required parameters must be finite numbers."
if m < 0:
return "Error: Mass flow rate (m) must be non-negative."
if p_in <= 0 or p_out <= 0:
return "Error: Pressures must be positive."
if t_in <= 0:
return "Error: Inlet temperature (t_in) must be positive."
if rho <= 0:
return "Error: Gas density (rho) must be positive."
if gamma <= 0:
return "Error: Specific heat capacity ratio (gamma) must be positive."
if mw <= 0:
return "Error: Molecular weight (mw) must be positive."
if kv <= 0:
return "Error: Valve flow coefficient (kv) must be positive."
if d <= 0:
return "Error: Valve diameter (d) must be positive."
if di <= 0:
return "Error: Pipe internal diameter (di) must be positive."
if t_pipe <= 0:
return "Error: Pipe wall thickness (t_pipe) must be positive."
if fd <= 0:
return "Error: Valve style modifier (fd) must be positive."
if fl <= 0:
return "Error: Liquid pressure recovery factor (fl) must be positive."
# Validate optional numeric inputs with defaults
other_numeric_params = [rho_pipe, c_pipe, p_air, rho_air, c_air, an, stp, beta]
if not all(isinstance(x, (int, float)) for x in other_numeric_params):
return "Error: All numeric parameters must be numeric."
if any(not math.isfinite(x) for x in other_numeric_params):
return "Error: All numeric parameters must be finite numbers."
if rho_pipe <= 0 or c_pipe <= 0 or p_air <= 0 or rho_air <= 0 or c_air <= 0:
return "Error: Material property values must be positive."
# Validate optional parameters without defaults
if flp is not None:
if not isinstance(flp, (int, float)) or not math.isfinite(flp) or flp <= 0:
return "Error: flp must be a positive finite number if provided."
if fp is not None:
if not isinstance(fp, (int, float)) or not math.isfinite(fp) or fp <= 0:
return "Error: fp must be a positive finite number if provided."
if t_out is not None:
if not isinstance(t_out, (int, float)) or not math.isfinite(t_out) or t_out <= 0:
return "Error: Outlet temperature (t_out) must be a positive finite number if provided."
try:
# Prepare the function call with all parameters
kwargs = {
'm': m, 'P1': p_in, 'P2': p_out, 'T1': t_in, 'rho': rho, 'gamma': gamma, 'MW': mw,
'Kv': kv, 'd': d, 'Di': di, 't_pipe': t_pipe, 'Fd': fd, 'FL': fl,
'rho_pipe': rho_pipe, 'c_pipe': c_pipe, 'P_air': p_air,
'rho_air': rho_air, 'c_air': c_air, 'An': an, 'Stp': stp, 'beta': beta
}
# Add optional parameters if they are provided
if flp is not None:
kwargs['FLP'] = flp
if fp is not None:
kwargs['FP'] = fp
if t_out is not None:
kwargs['T2'] = t_out
result = fluids_control_valve_noise_g_2011(**kwargs)
if not math.isfinite(result):
return "Error: Function returned non-finite value."
return result
except Exception as e:
return f"Error: Failed to compute gas noise: {str(e)}"