Class GilbertChokeFlow

java.lang.Object
neqsim.process.mechanicaldesign.valve.choke.MultiphaseChokeFlow
neqsim.process.mechanicaldesign.valve.choke.GilbertChokeFlow
All Implemented Interfaces:
Serializable

public class GilbertChokeFlow extends MultiphaseChokeFlow
Gilbert (1954) empirical correlation for two-phase critical choke flow.

This is the pioneering empirical correlation for multiphase flow through production chokes, developed from California oil field data. It is widely used for quick estimates and field calculations.

Gilbert Equation:

q_L = (P_wh * d ^ 1.89) / (C * GLR ^ 0.546)

where:

  • q_L = liquid flow rate (STB/day)
  • P_wh = upstream/wellhead pressure (psig)
  • d = choke diameter (64ths of an inch)
  • GLR = gas-liquid ratio (scf/STB)
  • C = 10 (Gilbert's original constant)

Key Assumptions:

  • Critical (choked) flow only - downstream pressure has no effect
  • No slip between gas and liquid phases
  • Based on California oil wells with specific fluid properties

Applicability Range:

  • GLR: 300 - 50,000 scf/STB
  • Oil gravity: API 20-40
  • Pressure: 100-5000 psig

Related correlations with different constants:

  • Baxendell (1958): C = 9.56, exponents: d^1.93, GLR^0.546
  • Ros (1960): C = 17.4, exponents: d^2.0, GLR^0.5
  • Achong (1961): C = 3.82, exponents: d^1.88, GLR^0.65

Reference: Gilbert, W.E. (1954). "Flowing and Gas-Lift Well Performance." API Drilling and Production Practice.

Version:
1.0
Author:
esol
See Also:
  • Field Details

    • serialVersionUID

      private static final long serialVersionUID
      See Also:
    • correlationConstant

      private double correlationConstant
      Correlation constant (Gilbert = 10, Baxendell = 9.56, Ros = 17.4, Achong = 3.82).
    • diameterExponent

      private double diameterExponent
      Diameter exponent (Gilbert = 1.89, Baxendell = 1.93, Ros = 2.0, Achong = 1.88).
    • glrExponent

      private double glrExponent
      GLR exponent (Gilbert = 0.546, Baxendell = 0.546, Ros = 0.5, Achong = 0.65).
    • correlationType

      private GilbertChokeFlow.CorrelationType correlationType
  • Constructor Details

    • GilbertChokeFlow

      public GilbertChokeFlow()
      Default constructor using Gilbert's original constants.
    • GilbertChokeFlow

      public GilbertChokeFlow(double chokeDiameter)
      Constructor with choke diameter.
      Parameters:
      chokeDiameter - choke throat diameter in meters
    • GilbertChokeFlow

      public GilbertChokeFlow(GilbertChokeFlow.CorrelationType correlationType)
      Constructor with correlation type selection.
      Parameters:
      correlationType - the correlation variant to use
  • Method Details

    • setCorrelationType

      public void setCorrelationType(GilbertChokeFlow.CorrelationType type)
      Sets the correlation type and updates constants accordingly.
      Parameters:
      type - correlation type
    • getCorrelationType

      public GilbertChokeFlow.CorrelationType getCorrelationType()
      Gets the correlation type.
      Returns:
      correlation type
    • calculateMassFlowRate

      public double calculateMassFlowRate(SystemInterface fluid, double upstreamPressure, double downstreamPressure)
      Calculates the mass flow rate through the choke.
      Specified by:
      calculateMassFlowRate in class MultiphaseChokeFlow
      Parameters:
      fluid - the thermodynamic system representing the fluid
      upstreamPressure - upstream pressure in Pa
      downstreamPressure - downstream pressure in Pa
      Returns:
      mass flow rate in kg/s
    • calculateGLR_scf_stb

      private double calculateGLR_scf_stb(SystemInterface fluid)
      Calculates GLR in field units (scf/STB).
      Parameters:
      fluid - thermodynamic system
      Returns:
      GLR in scf/STB
    • getLiquidDensity

      private double getLiquidDensity(SystemInterface fluid)
      Gets liquid density from fluid.
      Parameters:
      fluid - thermodynamic system
      Returns:
      liquid density in kg/m3
    • calculateLiquidOnlyMassFlow

      private double calculateLiquidOnlyMassFlow(SystemInterface fluid, double P1, double P2)
      Calculates liquid-only mass flow (pure liquid case).
      Parameters:
      fluid - thermodynamic system
      P1 - upstream pressure in Pa
      P2 - downstream pressure in Pa
      Returns:
      mass flow rate in kg/s
    • calculateDownstreamPressure

      public double calculateDownstreamPressure(SystemInterface fluid, double upstreamPressure, double massFlowRate)
      Calculates the downstream pressure for a given mass flow rate.
      Specified by:
      calculateDownstreamPressure in class MultiphaseChokeFlow
      Parameters:
      fluid - the thermodynamic system representing the fluid
      upstreamPressure - upstream pressure in Pa
      massFlowRate - mass flow rate in kg/s
      Returns:
      downstream pressure in Pa
    • calculateCriticalPressureRatio

      public double calculateCriticalPressureRatio(double gasQuality, double specificHeatRatio)
      Calculates the critical pressure ratio for two-phase flow.
      Specified by:
      calculateCriticalPressureRatio in class MultiphaseChokeFlow
      Parameters:
      gasQuality - gas mass fraction (0 to 1)
      specificHeatRatio - ratio of specific heats (Cp/Cv)
      Returns:
      critical pressure ratio (P2/P1 at choking)
    • calculateRequiredChokeDiameter

      public double calculateRequiredChokeDiameter(SystemInterface fluid, double upstreamPressure, double liquidFlowRate)
      Calculates the required choke size for a given flow rate.

      Inverts the Gilbert equation to find choke diameter.

      Parameters:
      fluid - thermodynamic system
      upstreamPressure - upstream pressure in Pa
      liquidFlowRate - liquid flow rate in m3/s
      Returns:
      required choke diameter in meters
    • setCorrelationConstant

      public void setCorrelationConstant(double constant)
      Sets the correlation constant.
      Parameters:
      constant - correlation constant C
    • getCorrelationConstant

      public double getCorrelationConstant()
      Gets the correlation constant.
      Returns:
      correlation constant
    • setDiameterExponent

      public void setDiameterExponent(double exponent)
      Sets the diameter exponent.
      Parameters:
      exponent - diameter exponent
    • getDiameterExponent

      public double getDiameterExponent()
      Gets the diameter exponent.
      Returns:
      diameter exponent
    • setGlrExponent

      public void setGlrExponent(double exponent)
      Sets the GLR exponent.
      Parameters:
      exponent - GLR exponent
    • getGlrExponent

      public double getGlrExponent()
      Gets the GLR exponent.
      Returns:
      GLR exponent
    • getModelName

      public String getModelName()
      Returns the name of this choke flow model.
      Specified by:
      getModelName in class MultiphaseChokeFlow
      Returns:
      model name