Package neqsim.process.mechanicaldesign.valve.choke
package neqsim.process.mechanicaldesign.valve.choke
Multiphase choke flow correlations for production operations.
This package provides models for calculating two-phase (gas-liquid) flow through production chokes. These models are essential for:
- Wellhead choke sizing and performance prediction
- Production optimization and allocation
- Critical flow detection and management
- Flow metering and back-allocation
Available Models
Mechanistic Models
SachdevaChokeFlow- Industry standard, handles critical and subcritical flow
Empirical Correlations
GilbertChokeFlow- Classic correlation with variants (Gilbert, Baxendell, Ros, Achong)
Usage Example
// Create a two-phase fluid
SystemInterface fluid = new SystemSrkEos(300.0, 100.0);
fluid.addComponent("methane", 0.8);
fluid.addComponent("n-heptane", 0.2);
fluid.setMixingRule(2);
fluid.init(0);
fluid.init(1);
// Create Sachdeva choke model
MultiphaseChokeFlow choke = MultiphaseChokeFlowFactory.createModel(ModelType.SACHDEVA);
choke.setChokeDiameter(32, "64ths"); // 32/64" = 0.5 inch
// Calculate mass flow rate
double P1 = 100e5; // 100 bar upstream
double P2 = 30e5; // 30 bar downstream
double massFlow = choke.calculateMassFlowRate(fluid, P1, P2);
// Get detailed results
Map<String, Object> results = choke.calculateSizingResults(fluid, P1, P2);
System.out.println("Flow regime: " + results.get("flowRegime"));
System.out.println("Gas quality: " + results.get("gasQuality"));
Integration with ThrottlingValve
These models integrate with the ThrottlingValve unit
operation for process simulation:
// Create production choke using ThrottlingValve
ThrottlingValve choke = new ThrottlingValve("Production Choke", wellStream);
choke.setOutletPressure(30.0, "bara");
choke.setPercentValveOpening(50.0);
// Configure multiphase model via mechanical design
ValveMechanicalDesign design = choke.getMechanicalDesign();
design.setValveSizingStandard("Sachdeva"); // or "Gilbert", "Baxendell", "Ros", "Achong"
design.setChokeDiameter(0.5, "in");
// Run in transient mode to calculate flow
choke.setCalculateSteadyState(false);
choke.runTransient(0.1);
double calculatedFlow = choke.getOutletStream().getFlowRate("kg/hr");
Model Selection
| Condition | Recommended Model | Reason |
|---|---|---|
| General purpose | Sachdeva | Mechanistic, handles all flow regimes |
| Quick field estimate | Gilbert | Simple, widely used in operations |
| High GLR (>5000) | Achong | Developed for gas-rich conditions |
| Subcritical flow | Sachdeva | Only mechanistic model for subcritical |
References
- Sachdeva, R., et al. (1986). "Two-Phase Flow Through Chokes." SPE 15657.
- Gilbert, W.E. (1954). "Flowing and Gas-Lift Well Performance." API DPP.
- Baxendell, P.B. (1958). "Bean Performance - Lake Wells." Trans. AIME.
- Ros, N.C.J. (1960). "An Analysis of Critical Simultaneous Gas/Liquid Flow." Trans. AIME.
- Achong, I.B. (1961). "Revised Bean Performance Formula." Internal Report.
- Version:
- 1.0
- Author:
- esol
- See Also:
-
ClassDescriptionGilbert (1954) empirical correlation for two-phase critical choke flow.Correlation type for identifying which variant is used.Abstract base class for multiphase choke flow calculations.Flow regime: CRITICAL or SUBCRITICAL.Factory class for creating multiphase choke flow models.Available choke flow model types.Sachdeva et al. (1986) mechanistic model for two-phase choke flow.