The Turner Critical Rate Calculator is an essential engineering tool used in the oil and gas industry to determine the minimum gas flow rate required to continuously lift liquids (water or condensate) out of a wellbore. This phenomenon is known as "liquid loading."
When the gas velocity in the tubing drops below the critical level, liquid droplets are no longer carried to the surface. Instead, they fall back down, accumulating in the bottom of the well. This accumulation creates hydrostatic backpressure, which further reduces gas flow, potentially killing the well entirely.
The Turner Model Formula
In 1969, R.G. Turner proposed the droplet model, which remains the industry standard for predicting liquid loading. The calculation involves two main steps: determining the critical velocity required to lift a droplet, and converting that velocity into a volumetric flow rate.
1. Critical Velocity ($v_c$):
vc = 17.6 × [ (ρL – ρg)0.25 / ρg0.5 ]
Where:
vc = Critical gas velocity (ft/sec)
ρL = Liquid density (lb/ft³)
ρg = Gas density at flowing conditions (lb/ft³)
17.6 = Constant derived from surface tension and drag coefficient assumptions
How to Interpret the Results
This calculator outputs the critical rate in both Mcfd (thousand standard cubic feet per day) and MMscfd (million standard cubic feet per day).
Above Critical Rate: If your well's actual production rate is higher than the calculated critical rate, the well is unloading liquids effectively.
Below Critical Rate: If production is below this number, the well is likely suffering from liquid loading. Remedial actions such as velocity strings, plunger lift, or compression may be necessary.
Input Parameters Guide
Flowing Tubing Pressure (psia): Ensure you use absolute pressure. If your gauge reads in psig, add approximately 14.7 psi to get psia.
Gas Gravity: Standard natural gas is usually between 0.6 and 0.7. Heavier gases reduce the critical velocity required.
Liquid Density: Use 67 lb/ft³ for water. If the well produces primarily light condensate, values around 45-50 lb/ft³ are more appropriate.
Z-Factor: The gas compressibility factor accounts for the non-ideal behavior of gas under pressure. A default of 0.9 is often used for estimation, though it varies with pressure and temperature.
function calculateTurner() {
// 1. Get Inputs
var P = parseFloat(document.getElementById('tubingPressure').value); // psia
var T_F = parseFloat(document.getElementById('temperature').value); // Fahrenheit
var sg = parseFloat(document.getElementById('gasGravity').value); // Specific Gravity
var rho_L = parseFloat(document.getElementById('liquidDensity').value); // Liquid Density
var ID = parseFloat(document.getElementById('tubingID').value); // Tubing ID inches
var Z = parseFloat(document.getElementById('zFactor').value); // Compressibility
// 2. Validate Inputs
if (isNaN(P) || P <= 0 || isNaN(T_F) || isNaN(sg) || isNaN(rho_L) || isNaN(ID) || ID <= 0 || isNaN(Z) || Z rho_g to avoid imaginary numbers (rare in wells, but good safety)
if (rho_g >= rho_L) {
alert("Gas density is higher than liquid density. Check inputs.");
return;
}
var densityDiff = rho_L – rho_g;
var vc = 17.6 * Math.pow(densityDiff, 0.25) / Math.pow(rho_g, 0.5);
// Calculate Cross-Sectional Area (A) in ft^2
// ID is in inches, convert to feet: ID/12
var A = (Math.PI / 4) * Math.pow((ID / 12), 2);
// Calculate Actual Flow Rate (Q_act) in ft^3/sec
var Q_act = vc * A; // ft^3/sec
// Convert Actual Rate to Standard Conditions (Q_sc) in scf/day
// General Gas Law: (P1*V1)/T1*Z1 = (P2*V2)/T2*Z2
// V_std = V_act * (P_act / P_std) * (T_std / T_act) * (Z_std / Z_act)
// Standard conditions: P_std = 14.7 psia, T_std = 520 R (60 F), Z_std = 1.0
// Convert Q_act (ft3/sec) to Q_act_day (ft3/day)
var Q_act_day = Q_act * 86400;
var Q_std_day = Q_act_day * (P / 14.7) * (520 / T_R) * (1 / Z);
var Q_Mcfd = Q_std_day / 1000;
var Q_MMscfd = Q_std_day / 1000000;
// 4. Update UI
document.getElementById('resGasDensity').innerText = rho_g.toFixed(3) + " lb/ft³";
document.getElementById('resVelocity').innerText = vc.toFixed(2) + " ft/sec";
document.getElementById('resMcfd').innerText = Q_Mcfd.toFixed(1) + " Mcfd";
document.getElementById('resMmscfd').innerText = Q_MMscfd.toFixed(3) + " MMscfd";
// Show results div
document.getElementById('results').style.display = 'block';
}