Class ControlValveSizing_MultiphaseChoke
java.lang.Object
neqsim.process.mechanicaldesign.valve.ControlValveSizing_MultiphaseChoke
- All Implemented Interfaces:
Serializable, ControlValveSizingInterface
public class ControlValveSizing_MultiphaseChoke
extends Object
implements ControlValveSizingInterface, Serializable
Valve sizing implementation using multiphase choke flow models.
This class provides valve sizing calculations for production chokes using industry-standard
two-phase flow correlations. It implements the ControlValveSizingInterface to integrate
with the existing ThrottlingValve unit operation.
Available Models:
- Sachdeva - Mechanistic model (Sachdeva et al., 1986, SPE 15657)
- Gilbert - Empirical correlation (Gilbert, 1954)
- Baxendell - Empirical correlation (Baxendell, 1958)
- Ros - Empirical correlation (Ros, 1960)
- Achong - Empirical correlation (Achong, 1961)
Usage Example:
// Configure valve to use Sachdeva multiphase model
ThrottlingValve choke = new ThrottlingValve("Production Choke", feed);
choke.getMechanicalDesign().setValveSizingStandard("Sachdeva");
choke.getMechanicalDesign().setChokeDiameter(0.5, "in");
choke.setOutletPressure(30.0, "bara");
choke.run();
- Version:
- 1.0
- Author:
- esol
- See Also:
-
Field Summary
FieldsModifier and TypeFieldDescriptionprivate booleanWhether choked (critical) flow is allowed.private doubleChoke diameter in meters.private MultiphaseChokeFlowThe multiphase choke flow model.private StringModel type name for reporting.private static final longprivate ValveMechanicalDesignThe valve mechanical design object.private doublePressure drop ratio factor for choked flow (not used for choke models but required). -
Constructor Summary
ConstructorsConstructorDescriptionControlValveSizing_MultiphaseChoke(ValveMechanicalDesign valveMechanicalDesign) Constructs a new multiphase choke sizing method with default Sachdeva model.ControlValveSizing_MultiphaseChoke(ValveMechanicalDesign valveMechanicalDesign, String modelType) Constructs a new multiphase choke sizing method with specified model type. -
Method Summary
Modifier and TypeMethodDescriptiondoublecalculateFlowRateFromValveOpening(double actualKv, StreamInterface inletStream, StreamInterface outletStream) calculateFlowRateFromValveOpening.doublecalculateValveOpeningFromFlowRate(double Q, double actualKv, StreamInterface inletStream, StreamInterface outletStream) calculateValveOpeningFromFlowRate.calcValveSize(double percentOpening) Calculates the valve size based on the fluid properties and operating conditions.private doubleconvertToMeters(double value, String unit) Converts diameter to meters from various units.doublefindOutletPressureForFixedKv(double actualKv, StreamInterface inletStream) findOutletPressureForFixedKv.doubleGets the choke diameter in meters.Gets the underlying choke flow model.getChokeReport(StreamInterface inletStream, double outletPressure_bara) Gets comprehensive choke sizing results as a formatted string.doubleGets the discharge coefficient.Gets the model type name.doublegetxT()getxT.booleanisAllowChoked.booleanChecks if laminar flow is allowed.voidsetAllowChoked(boolean allowChoked) setAllowChoked.voidsetAllowLaminar(boolean allowLaminar) Sets whether laminar flow is allowed (no effect for choke models).voidsetChokeDiameter(double diameter, String unit) Sets the choke diameter.voidsetChokeModel(String modelType) Sets the choke flow model type.voidsetDischargeCoefficient(double cd) Sets the discharge coefficient.voidsetxT(double xT) setxT.
-
Field Details
-
serialVersionUID
private static final long serialVersionUID- See Also:
-
valveMechanicalDesign
The valve mechanical design object. -
chokeModel
The multiphase choke flow model. -
modelType
Model type name for reporting. -
allowChoked
private boolean allowChokedWhether choked (critical) flow is allowed. -
chokeDiameter
private double chokeDiameterChoke diameter in meters. -
xT
private double xTPressure drop ratio factor for choked flow (not used for choke models but required).
-
-
Constructor Details
-
ControlValveSizing_MultiphaseChoke
Constructs a new multiphase choke sizing method with default Sachdeva model.- Parameters:
valveMechanicalDesign- the parent valve mechanical design
-
ControlValveSizing_MultiphaseChoke
public ControlValveSizing_MultiphaseChoke(ValveMechanicalDesign valveMechanicalDesign, String modelType) Constructs a new multiphase choke sizing method with specified model type.- Parameters:
valveMechanicalDesign- the parent valve mechanical designmodelType- model type: "Sachdeva", "Gilbert", "Baxendell", "Ros", or "Achong"
-
-
Method Details
-
setChokeModel
Sets the choke flow model type.- Parameters:
modelType- model type: "Sachdeva", "Gilbert", "Baxendell", "Ros", or "Achong"
-
setChokeDiameter
Sets the choke diameter.- Parameters:
diameter- diameter valueunit- unit: "m", "mm", "in", "64ths"
-
getChokeDiameter
public double getChokeDiameter()Gets the choke diameter in meters.- Returns:
- choke diameter in meters
-
setDischargeCoefficient
public void setDischargeCoefficient(double cd) Sets the discharge coefficient.- Parameters:
cd- discharge coefficient (typically 0.75-0.90)
-
getDischargeCoefficient
public double getDischargeCoefficient()Gets the discharge coefficient.- Returns:
- discharge coefficient
-
convertToMeters
Converts diameter to meters from various units.- Parameters:
value- the value to convertunit- the unit of the input value (m, mm, in, inch, inches, 64ths, 64th)- Returns:
- the value converted to meters
-
calcValveSize
Calculates the valve size based on the fluid properties and operating conditions.- Specified by:
calcValveSizein interfaceControlValveSizingInterface- Parameters:
percentOpening- a double- Returns:
- a
Mapobject
-
calculateFlowRateFromValveOpening
public double calculateFlowRateFromValveOpening(double actualKv, StreamInterface inletStream, StreamInterface outletStream) calculateFlowRateFromValveOpening.
- Specified by:
calculateFlowRateFromValveOpeningin interfaceControlValveSizingInterface- Parameters:
actualKv- a doubleinletStream- aStreamInterfaceobjectoutletStream- aStreamInterfaceobject- Returns:
- a double
-
calculateValveOpeningFromFlowRate
public double calculateValveOpeningFromFlowRate(double Q, double actualKv, StreamInterface inletStream, StreamInterface outletStream) calculateValveOpeningFromFlowRate.
- Specified by:
calculateValveOpeningFromFlowRatein interfaceControlValveSizingInterface- Parameters:
Q- a doubleactualKv- a doubleinletStream- aStreamInterfaceobjectoutletStream- aStreamInterfaceobject- Returns:
- a double
-
findOutletPressureForFixedKv
findOutletPressureForFixedKv.
- Specified by:
findOutletPressureForFixedKvin interfaceControlValveSizingInterface- Parameters:
actualKv- a doubleinletStream- aStreamInterfaceobject- Returns:
- a double
-
isAllowChoked
public boolean isAllowChoked()isAllowChoked.
- Specified by:
isAllowChokedin interfaceControlValveSizingInterface- Returns:
- a boolean
-
setAllowChoked
public void setAllowChoked(boolean allowChoked) setAllowChoked.
- Specified by:
setAllowChokedin interfaceControlValveSizingInterface- Parameters:
allowChoked- a boolean
-
getxT
public double getxT()getxT.
- Specified by:
getxTin interfaceControlValveSizingInterface- Returns:
- a double
-
setxT
public void setxT(double xT) setxT.
- Specified by:
setxTin interfaceControlValveSizingInterface- Parameters:
xT- a double
-
isAllowLaminar
public boolean isAllowLaminar()Checks if laminar flow is allowed.- Returns:
- true (choke models handle all flow regimes)
-
setAllowLaminar
public void setAllowLaminar(boolean allowLaminar) Sets whether laminar flow is allowed (no effect for choke models).- Parameters:
allowLaminar- laminar flow flag (ignored)
-
getChokeModel
Gets the underlying choke flow model.- Returns:
- the multiphase choke flow model
-
getModelType
-
getChokeReport
Gets comprehensive choke sizing results as a formatted string.- Parameters:
inletStream- the inlet streamoutletPressure_bara- outlet pressure in bara- Returns:
- formatted results string
-