Safety/relief valve sizing (fluids.safety_valve)¶
-
fluids.safety_valve.
API520_round_size
(A)[source]¶ Rounds up the area from an API 520 calculation to an API526 standard valve area. The returned area is always larger or equal to the input area.
Parameters: A : float
Minimum discharge area [m^2]
Returns: area : float
Actual discharge area [m^2]
Notes
To obtain the letter designation of an input area, lookup the area with the following:
API526_letters[API526_A.index(area)]
An exception is raised if the required relief area is larger than any of the API 526 sizes.
References
[R699] (1, 2) API Standard 526. Examples
From [R699], checked with many points on Table 8.
>>> API520_round_size(1E-4) 0.00012645136 >>> API526_letters[API526_A.index(API520_round_size(1E-4))] 'E'
-
fluids.safety_valve.
API520_C
(k)[source]¶ Calculates coefficient C for use in API 520 critical flow relief valve sizing.
\[C = 0.03948\sqrt{k\left(\frac{2}{k+1}\right)^\frac{k+1}{k-1}}\]Parameters: k : float
Isentropic coefficient or ideal gas heat capacity ratio [-]
Returns: C : float
Coefficient C [-]
Notes
If C cannot be established, assume a coefficient of 0.0239, the highest value possible for C.
Although not dimensional, C varies with the units used.
If k is exactly equal to 1, the expression is undefined, and the formula must be simplified as follows from an application of L’Hopital’s rule.
\[C = 0.03948\sqrt{\frac{1}{e}}\]References
[R700] (1, 2) API Standard 520, Part 1 - Sizing and Selection. Examples
From [R700], checked with many points on Table 8.
>>> API520_C(1.35) 0.02669419967057233
-
fluids.safety_valve.
API520_F2
(k, P1, P2)[source]¶ Calculates coefficient F2 for subcritical flow for use in API 520 subcritical flow relief valve sizing.
\[F_2 = \sqrt{\left(\frac{k}{k-1}\right)r^\frac{2}{k} \left[\frac{1-r^\frac{k-1}{k}}{1-r}\right]}\]\[r = \frac{P_2}{P_1}\]Parameters: k : float
Isentropic coefficient or ideal gas heat capacity ratio [-]
P1 : float
Upstream relieving pressure; the set pressure plus the allowable overpressure, plus atmospheric pressure, [Pa]
P2 : float
Built-up backpressure; the increase in pressure during flow at the outlet of a pressure-relief device after it opens, [Pa]
Returns: F2 : float
Subcritical flow coefficient F2 [-]
Notes
F2 is completely dimensionless.
References
[R701] (1, 2) API Standard 520, Part 1 - Sizing and Selection. Examples
From [R701] example 2, matches.
>>> API520_F2(1.8, 1E6, 7E5) 0.8600724121105563
-
fluids.safety_valve.
API520_Kv
(Re)[source]¶ Calculates correction due to viscosity for liquid flow for use in API 520 relief valve sizing.
\[K_v = \left(0.9935 + \frac{2.878}{Re^{0.5}} + \frac{342.75} {Re^{1.5}}\right)^{-1}\]Parameters: Re : float
Reynolds number for flow out the valve [-]
Returns: Kv : float
Correction due to viscosity [-]
Notes
Reynolds number in the standard is defined as follows, with Q in L/min, G1 as specific gravity, mu in centipoise, and area in mm^2:
\[Re = \frac{Q(18800G_1)}{\mu \sqrt{A}}\]It is unclear how this expression was derived with a constant of 18800; the following code demonstrates what the constant should be:
>>> from scipy.constants import * >>> liter/minute*1000./(0.001*(milli**2)**0.5) 16666.666666666668
References
[R702] (1, 2) API Standard 520, Part 1 - Sizing and Selection. Examples
From [R702], checked with example 5.
>>> API520_Kv(100) 0.6157445891444229
-
fluids.safety_valve.
API520_N
(P1)[source]¶ Calculates correction due to steam pressure for steam flow for use in API 520 relief valve sizing.
\[K_N = \frac{0.02764P_1-1000}{0.03324P_1-1061}\]Parameters: P1 : float
Upstream relieving pressure; the set pressure plus the allowable overpressure, plus atmospheric pressure, [Pa]
Returns: KN : float
Correction due to steam temperature [-]
Notes
Although not dimensional, KN varies with the units used.
For temperatures above 922 K or 22057 kPa, KN is not defined.
Internally, units of kPa are used to match the equation in the standard.
References
[R703] API Standard 520, Part 1 - Sizing and Selection. Examples
Custom example:
>>> API520_N(1774700) 0.9490406958152466
-
fluids.safety_valve.
API520_SH
(T1, P1)[source]¶ Calculates correction due to steam superheat for steam flow for use in API 520 relief valve sizing. 2D interpolation among a table with 28 pressures and 10 temperatures is performed.
Parameters: T1 : float
Temperature of the fluid entering the valve [K]
P1 : float
Upstream relieving pressure; the set pressure plus the allowable overpressure, plus atmospheric pressure, [Pa]
Returns: KSH : float
Correction due to steam superheat [-]
Notes
For P above 20679 kPag, use the critical flow model. Superheat cannot be above 649 degrees Celsius. If T1 is above 149 degrees Celsius, returns 1.
References
[R704] API Standard 520, Part 1 - Sizing and Selection. Examples
Custom example from table 9:
>>> API520_SH(593+273.15, 1066.325E3) 0.7201800000000002
-
fluids.safety_valve.
API520_B
(Pset, Pback, overpressure=0.1)[source]¶ Calculates capacity correction due to backpressure on balanced spring-loaded PRVs in vapor service. For pilot operated valves, this is always 1. Applicable up to 50% of the percent gauge backpressure, For use in API 520 relief valve sizing. 1D interpolation among a table with 53 backpressures is performed.
Parameters: Pset : float
Set pressure for relief [Pa]
Pback : float
Backpressure, [Pa]
overpressure : float, optional
The maximum fraction overpressure; one of 0.1, 0.16, or 0.21, []
Returns: Kb : float
Correction due to vapor backpressure [-]
Notes
If the calculated gauge backpressure is less than 30%, 38%, or 50% for overpressures of 0.1, 0.16, or 0.21, a value of 1 is returned.
Percent gauge backpressure must be under 50%.
References
[R705] API Standard 520, Part 1 - Sizing and Selection. Examples
Custom examples from figure 30:
>>> API520_B(1E6, 5E5) 0.7929945420944432
-
fluids.safety_valve.
API520_W
(Pset, Pback)[source]¶ Calculates capacity correction due to backpressure on balanced spring-loaded PRVs in liquid service. For pilot operated valves, this is always 1. Applicable up to 50% of the percent gauge backpressure, For use in API 520 relief valve sizing. 1D interpolation among a table with 53 backpressures is performed.
Parameters: Pset : float
Set pressure for relief [Pa]
Pback : float
Backpressure, [Pa]
Returns: KW : float
Correction due to liquid backpressure [-]
Notes
If the calculated gauge backpressure is less than 15%, a value of 1 is returned.
References
[R706] API Standard 520, Part 1 - Sizing and Selection. Examples
Custom example from figure 31:
>>> API520_W(1E6, 3E5) # 22% overpressure 0.9511471848008564
-
fluids.safety_valve.
API520_A_g
(m, T, Z, MW, k, P1, P2=101325, Kd=0.975, Kb=1, Kc=1)[source]¶ Calculates required relief valve area for an API 520 valve passing a gas or a vapor, at either critical or sub-critical flow.
For critical flow:
\[A = \frac{m}{CK_dP_1K_bK_c}\sqrt{\frac{TZ}{M}}\]For sub-critical flow:
\[A = \frac{17.9m}{F_2K_dK_c}\sqrt{\frac{TZ}{MP_1(P_1-P_2)}}\]Parameters: m : float
Mass flow rate of vapor through the valve, [kg/s]
T : float
Temperature of vapor entering the valve, [K]
Z : float
Compressibility factor of the vapor, [-]
MW : float
Molecular weight of the vapor, [g/mol]
k : float
Isentropic coefficient or ideal gas heat capacity ratio [-]
P1 : float
Upstream relieving pressure; the set pressure plus the allowable overpressure, plus atmospheric pressure, [Pa]
P2 : float, optional
Built-up backpressure; the increase in pressure during flow at the outlet of a pressure-relief device after it opens, [Pa]
Kd : float, optional
The effective coefficient of discharge, from the manufacturer or for preliminary sizing, using 0.975 normally or 0.62 when used with a rupture disc as described in [R707], []
Kb : float, optional
Correction due to vapor backpressure [-]
Kc : float, optional
Combination correction factor for installation with a ruture disk upstream of the PRV, []
Returns: A : float
Minimum area for relief valve according to [R707], [m^2]
Notes
Units are interlally kg/hr, kPa, and mm^2 to match [R707].
References
[R707] (1, 2, 3, 4, 5, 6) API Standard 520, Part 1 - Sizing and Selection. Examples
Example 1 from [R707] for critical flow, matches:
>>> API520_A_g(m=24270/3600., T=348., Z=0.90, MW=51., k=1.11, P1=670E3, Kb=1, Kc=1) 0.0036990460646834414
Example 2 from [R707] for sub-critical flow, matches:
>>> API520_A_g(m=24270/3600., T=348., Z=0.90, MW=51., k=1.11, P1=670E3, P2=532E3, Kd=0.975, Kb=1, Kc=1) 0.004248358775943481
-
fluids.safety_valve.
API520_A_steam
(m, T, P1, Kd=0.975, Kb=1, Kc=1)[source]¶ Calculates required relief valve area for an API 520 valve passing a steam, at either saturation or superheat but not partially condensed.
\[A = \frac{190.5m}{P_1 K_d K_b K_c K_N K_{SH}}\]Parameters: m : float
Mass flow rate of steam through the valve, [kg/s]
T : float
Temperature of steam entering the valve, [K]
P1 : float
Upstream relieving pressure; the set pressure plus the allowable overpressure, plus atmospheric pressure, [Pa]
Kd : float, optional
The effective coefficient of discharge, from the manufacturer or for preliminary sizing, using 0.975 normally or 0.62 when used with a rupture disc as described in [R708], []
Kb : float, optional
Correction due to vapor backpressure [-]
Kc : float, optional
Combination correction factor for installation with a rupture disk upstream of the PRV, []
Returns: A : float
Minimum area for relief valve according to [R708], [m^2]
Notes
Units are interlally kg/hr, kPa, and mm^2 to match [R708]. With the provided temperature and pressure, the KN coefficient is calculated with the function API520_N; as is the superheat correction KSH, with the function API520_SH.
References
[R708] (1, 2, 3, 4, 5) API Standard 520, Part 1 - Sizing and Selection. Examples
Example 4 from [R708], matches:
>>> API520_A_steam(m=69615/3600., T=592.5, P1=12236E3, Kd=0.975, Kb=1, Kc=1) 0.0011034712423692733