CV_NOISE_GAS_2011
This function estimates aerodynamic control-valve noise for gas service using the IEC 60534-8-3 (2011) method. It computes the A-weighted sound pressure level at 1 m from the downstream pipe wall based on flow rate, pressures, thermophysical properties, valve coefficient, and piping geometry.
The reported noise level is expressed in decibels using the logarithmic sound-pressure relation:
L_p = 20\log_{10}\left(\frac{p_{\mathrm{rms}}}{p_0}\right)
where p_0=2\times10^{-5} Pa is the reference sound pressure. Optional coefficients such as attached-fitting recovery factors and outlet temperature can be provided to refine the prediction.
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, optional, default: null): Liquid pressure recovery factor without attached fittings; provide this or flp (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.
Example 1: IEC example-style gas noise calculation with attached fittings only
Inputs:
| m | p_in | p_out | t_in | rho | gamma | mw | kv | d | di | t_pipe | fd | flp | fp | rho_pipe | rho_air |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 2.22 | 1000000 | 720000 | 450 | 5.3 | 1.22 | 19.8 | 77.85 | 0.1 | 0.2031 | 0.008 | 0.296 | 0.792 | 0.98 | 8000 | 1.293 |
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.98, 8000, 1.293)
Expected output:
91.677
Example 2: Lower pressure-drop gas noise scenario
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.131
Example 3: Higher flow and pressure-drop gas noise scenario
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:
97.5904
Example 4: Low-flow gas noise scenario
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.4581
Python Code
Show Code
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=None, 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, optional): Liquid pressure recovery factor without attached fittings; provide this or flp (dimensionless) Default is None.
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.
"""
try:
# Validate required inputs
required_params = [m, p_in, p_out, t_in, rho, gamma, mw, kv, d, di, t_pipe, fd]
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."
# 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 fl is None and flp is None:
return "Error: Either fl or flp must be provided."
if fl is not None:
if not isinstance(fl, (int, float)) or not math.isfinite(fl) or fl <= 0:
return "Error: fl must be a positive finite number if provided."
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)}"
except Exception as e:
return f"Error: {str(e)}"