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 Details

    • serialVersionUID

      private static final long serialVersionUID
      See Also:
    • valveMechanicalDesign

      private ValveMechanicalDesign valveMechanicalDesign
      The valve mechanical design object.
    • chokeModel

      private MultiphaseChokeFlow chokeModel
      The multiphase choke flow model.
    • modelType

      private String modelType
      Model type name for reporting.
    • allowChoked

      private boolean allowChoked
      Whether choked (critical) flow is allowed.
    • chokeDiameter

      private double chokeDiameter
      Choke diameter in meters.
    • xT

      private double xT
      Pressure drop ratio factor for choked flow (not used for choke models but required).
  • Constructor Details

    • ControlValveSizing_MultiphaseChoke

      public ControlValveSizing_MultiphaseChoke(ValveMechanicalDesign valveMechanicalDesign)
      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 design
      modelType - model type: "Sachdeva", "Gilbert", "Baxendell", "Ros", or "Achong"
  • Method Details

    • setChokeModel

      public void setChokeModel(String modelType)
      Sets the choke flow model type.
      Parameters:
      modelType - model type: "Sachdeva", "Gilbert", "Baxendell", "Ros", or "Achong"
    • setChokeDiameter

      public void setChokeDiameter(double diameter, String unit)
      Sets the choke diameter.
      Parameters:
      diameter - diameter value
      unit - 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

      private double convertToMeters(double value, String unit)
      Converts diameter to meters from various units.
      Parameters:
      value - the value to convert
      unit - the unit of the input value (m, mm, in, inch, inches, 64ths, 64th)
      Returns:
      the value converted to meters
    • calcValveSize

      public Map<String,Object> calcValveSize(double percentOpening)
      Calculates the valve size based on the fluid properties and operating conditions.
      Specified by:
      calcValveSize in interface ControlValveSizingInterface
      Parameters:
      percentOpening - a double
      Returns:
      a Map object
    • calculateFlowRateFromValveOpening

      public double calculateFlowRateFromValveOpening(double actualKv, StreamInterface inletStream, StreamInterface outletStream)

      calculateFlowRateFromValveOpening.

      Specified by:
      calculateFlowRateFromValveOpening in interface ControlValveSizingInterface
      Parameters:
      actualKv - a double
      inletStream - a StreamInterface object
      outletStream - a StreamInterface object
      Returns:
      a double
    • calculateValveOpeningFromFlowRate

      public double calculateValveOpeningFromFlowRate(double Q, double actualKv, StreamInterface inletStream, StreamInterface outletStream)

      calculateValveOpeningFromFlowRate.

      Specified by:
      calculateValveOpeningFromFlowRate in interface ControlValveSizingInterface
      Parameters:
      Q - a double
      actualKv - a double
      inletStream - a StreamInterface object
      outletStream - a StreamInterface object
      Returns:
      a double
    • findOutletPressureForFixedKv

      public double findOutletPressureForFixedKv(double actualKv, StreamInterface inletStream)

      findOutletPressureForFixedKv.

      Specified by:
      findOutletPressureForFixedKv in interface ControlValveSizingInterface
      Parameters:
      actualKv - a double
      inletStream - a StreamInterface object
      Returns:
      a double
    • isAllowChoked

      public boolean isAllowChoked()

      isAllowChoked.

      Specified by:
      isAllowChoked in interface ControlValveSizingInterface
      Returns:
      a boolean
    • setAllowChoked

      public void setAllowChoked(boolean allowChoked)

      setAllowChoked.

      Specified by:
      setAllowChoked in interface ControlValveSizingInterface
      Parameters:
      allowChoked - a boolean
    • getxT

      public double getxT()

      getxT.

      Specified by:
      getxT in interface ControlValveSizingInterface
      Returns:
      a double
    • setxT

      public void setxT(double xT)

      setxT.

      Specified by:
      setxT in interface ControlValveSizingInterface
      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

      public MultiphaseChokeFlow getChokeModel()
      Gets the underlying choke flow model.
      Returns:
      the multiphase choke flow model
    • getModelType

      public String getModelType()
      Gets the model type name.
      Returns:
      model type name
    • getChokeReport

      public String getChokeReport(StreamInterface inletStream, double outletPressure_bara)
      Gets comprehensive choke sizing results as a formatted string.
      Parameters:
      inletStream - the inlet stream
      outletPressure_bara - outlet pressure in bara
      Returns:
      formatted results string