Class MultiphaseChokeFlow
java.lang.Object
neqsim.process.mechanicaldesign.valve.choke.MultiphaseChokeFlow
- All Implemented Interfaces:
Serializable
- Direct Known Subclasses:
GilbertChokeFlow, SachdevaChokeFlow
Abstract base class for multiphase choke flow calculations.
This class provides the foundation for calculating two-phase (gas-liquid) flow through production chokes. Unlike single-phase IEC 60534 models, these correlations account for the interaction between gas and liquid phases during flow through a restriction.
Key concepts:
- Critical flow: Flow is choked when downstream pressure changes have no effect on flow rate. Occurs when pressure ratio P2/P1 falls below critical pressure ratio.
- Subcritical flow: Both upstream and downstream pressures affect flow rate.
- Gas quality (x_g): Mass fraction of gas in the two-phase mixture.
References:
- Sachdeva, R., et al. (1986). "Two-Phase Flow Through Chokes." SPE 15657.
- Perkins, T.K. (1990). "Critical and Subcritical Flow of Multiphase Mixtures Through Chokes." SPE 20633.
- Gilbert, W.E. (1954). "Flowing and Gas-Lift Well Performance." API Drilling and Production Practice.
- Version:
- 1.0
- Author:
- esol
- See Also:
-
Nested Class Summary
Nested ClassesModifier and TypeClassDescriptionstatic enumFlow regime: CRITICAL or SUBCRITICAL. -
Field Summary
FieldsModifier and TypeFieldDescriptionprotected doubleChoke throat diameter in meters.protected doubleDischarge coefficient for the choke (typically 0.75-0.90).protected doublePolytropic exponent for gas expansion (1.0 = isothermal, gamma = isentropic).private static final longprotected doubleUpstream pipe diameter in meters. -
Constructor Summary
ConstructorsConstructorDescriptionDefault constructor for MultiphaseChokeFlow.MultiphaseChokeFlow(double chokeDiameter) Constructor with choke diameter. -
Method Summary
Modifier and TypeMethodDescriptionabstract doublecalculateCriticalPressureRatio(double gasQuality, double specificHeatRatio) Calculates the critical pressure ratio for two-phase flow.abstract doublecalculateDownstreamPressure(SystemInterface fluid, double upstreamPressure, double massFlowRate) Calculates the downstream pressure for a given mass flow rate.doubleCalculates the gas quality (gas mass fraction) from the fluid.doublecalculateGLR(SystemInterface fluid) Calculates the gas-liquid ratio (GLR) from the fluid.abstract doublecalculateMassFlowRate(SystemInterface fluid, double upstreamPressure, double downstreamPressure) Calculates the mass flow rate through the choke.calculateSizingResults(SystemInterface fluid, double upstreamPressure, double downstreamPressure) Calculates complete sizing results including all parameters.determineFlowRegime(SystemInterface fluid, double upstreamPressure, double downstreamPressure) Determines the flow regime (critical or subcritical).doubleCalculates the choke throat area.doubleGets the choke diameter.doubleGets the discharge coefficient.abstract StringReturns the name of this choke flow model.doubleGets the polytropic exponent.doubleGets the upstream pipe diameter.voidsetChokeDiameter(double chokeDiameter) Sets the choke diameter.voidsetChokeDiameter(double diameter, String unit) Sets the choke diameter with unit specification.voidsetDischargeCoefficient(double dischargeCoefficient) Sets the discharge coefficient.voidsetPolytropicExponent(double polytropicExponent) Sets the polytropic exponent for gas expansion.voidsetUpstreamDiameter(double upstreamDiameter) Sets the upstream pipe diameter.
-
Field Details
-
serialVersionUID
private static final long serialVersionUID- See Also:
-
dischargeCoefficient
protected double dischargeCoefficientDischarge coefficient for the choke (typically 0.75-0.90). -
chokeDiameter
protected double chokeDiameterChoke throat diameter in meters. -
upstreamDiameter
protected double upstreamDiameterUpstream pipe diameter in meters. -
polytropicExponent
protected double polytropicExponentPolytropic exponent for gas expansion (1.0 = isothermal, gamma = isentropic).
-
-
Constructor Details
-
MultiphaseChokeFlow
public MultiphaseChokeFlow()Default constructor for MultiphaseChokeFlow. -
MultiphaseChokeFlow
public MultiphaseChokeFlow(double chokeDiameter) Constructor with choke diameter.- Parameters:
chokeDiameter- choke throat diameter in meters
-
-
Method Details
-
calculateMassFlowRate
public abstract double calculateMassFlowRate(SystemInterface fluid, double upstreamPressure, double downstreamPressure) Calculates the mass flow rate through the choke.- Parameters:
fluid- the thermodynamic system representing the fluidupstreamPressure- upstream pressure in PadownstreamPressure- downstream pressure in Pa- Returns:
- mass flow rate in kg/s
-
calculateDownstreamPressure
public abstract double calculateDownstreamPressure(SystemInterface fluid, double upstreamPressure, double massFlowRate) Calculates the downstream pressure for a given mass flow rate.- Parameters:
fluid- the thermodynamic system representing the fluidupstreamPressure- upstream pressure in PamassFlowRate- mass flow rate in kg/s- Returns:
- downstream pressure in Pa
-
calculateCriticalPressureRatio
public abstract double calculateCriticalPressureRatio(double gasQuality, double specificHeatRatio) Calculates the critical pressure ratio for two-phase flow.- Parameters:
gasQuality- gas mass fraction (0 to 1)specificHeatRatio- ratio of specific heats (Cp/Cv)- Returns:
- critical pressure ratio (P2/P1 at choking)
-
determineFlowRegime
public MultiphaseChokeFlow.FlowRegime determineFlowRegime(SystemInterface fluid, double upstreamPressure, double downstreamPressure) Determines the flow regime (critical or subcritical).- Parameters:
fluid- the thermodynamic systemupstreamPressure- upstream pressure in PadownstreamPressure- downstream pressure in Pa- Returns:
- the flow regime
-
calculateGasQuality
Calculates the gas quality (gas mass fraction) from the fluid.- Parameters:
fluid- the thermodynamic system- Returns:
- gas mass fraction (0 to 1)
-
calculateGLR
Calculates the gas-liquid ratio (GLR) from the fluid.- Parameters:
fluid- the thermodynamic system- Returns:
- GLR in Sm3/Sm3 (standard cubic meters gas per standard cubic meter liquid)
-
getChokeArea
public double getChokeArea()Calculates the choke throat area.- Returns:
- throat area in m^2
-
calculateSizingResults
public Map<String,Object> calculateSizingResults(SystemInterface fluid, double upstreamPressure, double downstreamPressure) Calculates complete sizing results including all parameters.- Parameters:
fluid- the thermodynamic systemupstreamPressure- upstream pressure in PadownstreamPressure- downstream pressure in Pa- Returns:
- map containing all sizing results
-
getDischargeCoefficient
public double getDischargeCoefficient()Gets the discharge coefficient.- Returns:
- discharge coefficient
-
setDischargeCoefficient
public void setDischargeCoefficient(double dischargeCoefficient) Sets the discharge coefficient.- Parameters:
dischargeCoefficient- discharge coefficient (typically 0.75-0.90)
-
getChokeDiameter
public double getChokeDiameter()Gets the choke diameter.- Returns:
- choke diameter in meters
-
setChokeDiameter
public void setChokeDiameter(double chokeDiameter) Sets the choke diameter.- Parameters:
chokeDiameter- choke diameter in meters
-
setChokeDiameter
Sets the choke diameter with unit specification.- Parameters:
diameter- choke diameter valueunit- unit of diameter ("m", "mm", "in", "64ths")
-
getUpstreamDiameter
public double getUpstreamDiameter()Gets the upstream pipe diameter.- Returns:
- upstream diameter in meters
-
setUpstreamDiameter
public void setUpstreamDiameter(double upstreamDiameter) Sets the upstream pipe diameter.- Parameters:
upstreamDiameter- upstream diameter in meters
-
getPolytropicExponent
public double getPolytropicExponent()Gets the polytropic exponent.- Returns:
- polytropic exponent
-
setPolytropicExponent
public void setPolytropicExponent(double polytropicExponent) Sets the polytropic exponent for gas expansion.- Parameters:
polytropicExponent- polytropic exponent (1.0 = isothermal, gamma = isentropic)
-
getModelName
Returns the name of this choke flow model.- Returns:
- model name
-