Correlations
Pressure, temperature, and friction factor correlations. Not used directly but passed as model arguments.
- Pressure drop correlations
Beggs and Brill
, with Payne correctionHagedorn and Brown
, with Griffith and Wallis bubble flow correction
- Temperature correlations & methods
Linear temperature profile
Shiu temperature profile
: Ramey temperature correlation with Shiu relaxation factorRamey temp
: single-point Ramey temperature correlationShiu relaxation factor
- Friction factor correlations
Serghide friction factor
(preferred)Chen friction factor
Pressure correlations
PressureDrop.BeggsAndBrill
— Function.BeggsAndBrill(<arguments>)
Calculates pressure drop for a single pipe segment using Beggs and Brill 1973 method, with optional Payne corrections.
Returns a ΔP in psi.
Doesn't account for oil/water phase slip, but does properly account for inclination.
As of release v0.9, assumes outlet-defined models only, i.e. top-down from wellhead; thus, uphill flow corresponds to producers and downhill flow to injectors.
For more information, see Petroleum Production Systems by Economides et al., or the the Fekete reference on pressure drops.
Arguments
All arguments take U.S. field units.
md
: measured depth of the pipe segment, feettvd
: true vertical depth, feetinclination
: inclination from vertical, degrees (e.g. vertical => 0)id
: inner diameter of the pipe segment, inchesv_sl
: superficial liquid mixture velocity, ft/sv_sg
: superficial gas velocity, ft/sρ_l
: liquid mixture density, lb/ft³ρ_g
: gas density, lb/ft³σ_l
: liquid/gas interfacial tension, centipoiseμ_l
: liquid mixture dynamic viscosityμ_g
: gas dynamic viscosityroughness
: pipe roughness, inchespressure_est
: estimated average pressure of the pipe segment (needed to determine the kinetic effects component of the pressure drop)frictionfactor::Function = SerghideFrictionFactor
: function used to determine the Moody friction factoruphill_flow = true
: indicates uphill or downhill flow. It is assumed that the start of the 1D segment is an outlet and not an inletPayneCorrection = true
: indicates whether the Payne et al. 1979 corrections should be applied to prevent overprediction of liquid holdup.
PressureDrop.HagedornAndBrown
— Function.HagedornAndBrown(<arguments>)
Calculates pressure drop for a single pipe segment using the Hagedorn & Brown 1965 method (with recent modifications), with optional Griffith and Wallis bubble flow corrections.
Returns a ΔP in psi.
Doesn't account for oil/water phase slip, and does not incorporate flow regimes distinctions outside of in/out of bubble flow. Originally developed for vertical wells.
As of release v0.9, assumes outlet-defined models only, i.e. top-down from wellhead; thus, uphill flow corresponds to producers and downhill flow to injectors.
For more information, see Petroleum Production Systems by Economides et al., or the the Fekete reference on pressure drops.
Arguments
All arguments take U.S. field units.
md
: measured depth of the pipe segment, feettvd
: true vertical depth, feetinclination
: inclination from vertical, degrees (e.g. vertical => 0)id
: inner diameter of the pipe segment, inchesv_sl
: superficial liquid mixture velocity, ft/sv_sg
: superficial gas velocity, ft/sρ_l
: liquid mixture density, lb/ft³ρ_g
: gas density, lb/ft³σ_l
: liquid/gas interfacial tension, centipoiseμ_l
: liquid mixture dynamic viscosityμ_g
: gas dynamic viscosityroughness
: pipe roughness, inchespressure_est
: estimated average pressure of the pipe segment (needed to determine the kinetic effects component of the pressure drop)frictionfactor::Function = SerghideFrictionFactor
: function used to determine the Moody friction factoruphill_flow = true
: indicates uphill or downhill flow. It is assumed that the start of the 1D segment is an outlet and not an inletGriffithWallisCorrection = true
: indicates whether the Griffith and Wallis 1961 corrections should be applied to prevent overprediction of liquid holdup.
Temperature correlations
PressureDrop.linear_wellboretemp
— Function.linear_wellboretemp(;WHT, BHT, wellbore::Wellbore)
Linear temperature profile from a wellhead temperature and bottomhole temperature in °F for a Wellbore object.
Interpolation is based on true vertical depth of the wellbore, not md.
PressureDrop.Shiu_wellboretemp
— Function.Shiu_wellboretemp(<named arguments>)
Wrapper to compute temperature profile for a Wellbore object using Ramey correlation with Shiu relaxation factor correlation.
Arguments
BHT
: bottomhole temperature in °Fgeothermal_gradient = 1.0
: geothermal gradient in °F per 100 feetwellbore::Wellbore
: Wellbore object to use as reference for segmentation, inclination, andq_o
: oil rate in stb/dq_w
: water rate in stb/dGLR
: gas:liquid ratio in scf/dayAPIoil
: oil gravitysg_water
: water specific gravitysg_gas
: gas specific gravityWHP
: wellhead/outlet absolute pressure in psig
PressureDrop.Ramey_temp
— Function.Ramey_wellboretemp(z, inclination, T_bh, A, G_g = 1.0)
Estimates wellbore temp using Ramey 1962 method.
Arguments
z
: true vertical depth from the bottom of the well, ftT_bh
: bottomhole temperature, °FA
: relaxation factorG_g = 1.0
: geothermal gradient in °F per 100 ft of true vertical depth
PressureDrop.Shiu_Beggs_relaxationfactor
— Function.Shiu_Beggs_relaxationfactor(<arguments>)
Generates the relaxation factor, A, needed for the Ramey method, for underspecified conditions.
This correlation assumes flow has stabilized and that the transient time component f(t) is not changing.
Arguments
All arguments are in U.S. field units.
q_o
: oil rate in stb/dq_w
: water rate in stb/dAPIoil
: API oil gravitysg_water
: water specific gravityGLR
: gas:liquid ratio in scf/stbsg_gas
: gas specific gravityid
: flow path inner diameter in inchesWHP
: wellhead/outlet absolute pressure in psig
Friction factor correlations
PressureDrop.SerghideFrictionFactor
— Function.SerghideFrictionFactor(N_Re, id, roughness = 0.01)
Uses the direct Serghide 1984 correlation to determine friction factor, in place of the Colebrook implicit solution.
Takes the dimensionless Reynolds number, pipe inner diameter in inches, and roughness in inches.
Not intended for Reynolds numbers between 2000-4000.
PressureDrop.ChenFrictionFactor
— Function.ChenFrictionFactor(N_Re, id, roughness = 0.01)
Uses the direct Chen 1979 correlation to determine friction factor, in place of the Colebrook implicit solution.
Takes the dimensionless Reynolds number, pipe inner diameter in inches, and roughness in inches.
Not intended for Reynolds numbers between 2000-4000.