Class FlowRateOptimizer.LiftCurveConfiguration

java.lang.Object
neqsim.process.util.optimizer.FlowRateOptimizer.LiftCurveConfiguration
All Implemented Interfaces:
Serializable
Enclosing class:
FlowRateOptimizer

public static class FlowRateOptimizer.LiftCurveConfiguration extends Object implements Serializable
Configuration class for professional lift curve generation.

This builder class encapsulates best practices for generating lift curves suitable for integration with reservoir simulators like Eclipse E300. It provides sensible defaults while allowing customization of all parameters.

Example Usage

LiftCurveConfiguration config =
    new LiftCurveConfiguration().withInletPressureRange(50.0, 90.0, 5) // 50-90 bara, 5 points
        .withOutletPressureRange(130.0, 160.0, 4) // 130-160 bara, 4 points
        .withSurgeMargin(0.15) // 15% surge margin
        .withMaxPowerLimit(5000.0) // 5 MW limit
        .withMaxUtilization(0.95) // 95% max utilization
        .withProgressLogging(true);

LiftCurveResult result = optimizer.generateProfessionalLiftCurves(config);
System.out.println(result.getCapacityTable().toEclipseFormat());
Version:
1.0
Author:
ESOL
See Also:
  • Field Details

    • serialVersionUID

      private static final long serialVersionUID
      See Also:
    • minInletPressure

      private double minInletPressure
    • maxInletPressure

      private double maxInletPressure
    • numInletPressurePoints

      private int numInletPressurePoints
    • minOutletPressure

      private double minOutletPressure
    • maxOutletPressure

      private double maxOutletPressure
    • numOutletPressurePoints

      private int numOutletPressurePoints
    • pressureUnit

      private String pressureUnit
    • minFlowRate

      private double minFlowRate
    • maxFlowRate

      private double maxFlowRate
    • numFlowRatePoints

      private int numFlowRatePoints
    • flowRateUnit

      private String flowRateUnit
    • surgeMargin

      private double surgeMargin
    • maxPowerLimit

      private double maxPowerLimit
    • maxTotalPowerLimit

      private double maxTotalPowerLimit
    • maxSpeedLimit

      private double maxSpeedLimit
    • minSpeedLimit

      private double minSpeedLimit
    • maxUtilization

      private double maxUtilization
    • enableProgressLogging

      private boolean enableProgressLogging
    • progressCallback

      private FlowRateOptimizer.ProgressCallback progressCallback
    • generateCapacityTable

      private boolean generateCapacityTable
    • generateLiftCurveTable

      private boolean generateLiftCurveTable
    • generatePerformanceTable

      private boolean generatePerformanceTable
  • Constructor Details

    • LiftCurveConfiguration

      public LiftCurveConfiguration()
      Default constructor with sensible defaults for offshore gas compression.
  • Method Details

    • withInletPressureRange

      public FlowRateOptimizer.LiftCurveConfiguration withInletPressureRange(double minPressure, double maxPressure, int numPoints)
      Sets the inlet pressure range.
      Parameters:
      minPressure - minimum inlet pressure
      maxPressure - maximum inlet pressure
      numPoints - number of pressure points
      Returns:
      this configuration for chaining
    • withOutletPressureRange

      public FlowRateOptimizer.LiftCurveConfiguration withOutletPressureRange(double minPressure, double maxPressure, int numPoints)
      Sets the outlet pressure range.
      Parameters:
      minPressure - minimum outlet pressure
      maxPressure - maximum outlet pressure
      numPoints - number of pressure points
      Returns:
      this configuration for chaining
    • withFlowRateRange

      public FlowRateOptimizer.LiftCurveConfiguration withFlowRateRange(double minFlow, double maxFlow, int numPoints)
      Sets the flow rate range.
      Parameters:
      minFlow - minimum flow rate
      maxFlow - maximum flow rate
      numPoints - number of flow rate points
      Returns:
      this configuration for chaining
    • withPressureUnit

      public FlowRateOptimizer.LiftCurveConfiguration withPressureUnit(String unit)
      Sets the pressure unit.
      Parameters:
      unit - pressure unit (e.g., "bara", "barg", "psia")
      Returns:
      this configuration for chaining
    • withFlowRateUnit

      public FlowRateOptimizer.LiftCurveConfiguration withFlowRateUnit(String unit)
      Sets the flow rate unit.
      Parameters:
      unit - flow rate unit (e.g., "kg/hr", "Sm3/day", "MMscfd")
      Returns:
      this configuration for chaining
    • withSurgeMargin

      public FlowRateOptimizer.LiftCurveConfiguration withSurgeMargin(double margin)
      Sets the minimum surge margin for compressors.
      Parameters:
      margin - surge margin as fraction (0.15 = 15%)
      Returns:
      this configuration for chaining
    • withMaxPowerLimit

      public FlowRateOptimizer.LiftCurveConfiguration withMaxPowerLimit(double powerKw)
      Sets the maximum power limit per compressor.
      Parameters:
      powerKw - maximum power in kW
      Returns:
      this configuration for chaining
    • withMaxTotalPowerLimit

      public FlowRateOptimizer.LiftCurveConfiguration withMaxTotalPowerLimit(double powerKw)
      Sets the maximum total power limit for all compressors.
      Parameters:
      powerKw - maximum total power in kW
      Returns:
      this configuration for chaining
    • withSpeedLimits

      public FlowRateOptimizer.LiftCurveConfiguration withSpeedLimits(double minSpeed, double maxSpeed)
      Sets compressor speed limits.
      Parameters:
      minSpeed - minimum speed in RPM
      maxSpeed - maximum speed in RPM
      Returns:
      this configuration for chaining
    • withMaxUtilization

      public FlowRateOptimizer.LiftCurveConfiguration withMaxUtilization(double utilization)
      Sets the maximum equipment utilization.
      Parameters:
      utilization - maximum utilization as fraction (0.95 = 95%)
      Returns:
      this configuration for chaining
    • withProgressLogging

      public FlowRateOptimizer.LiftCurveConfiguration withProgressLogging(boolean enabled)
      Enables or disables progress logging.
      Parameters:
      enabled - true to enable
      Returns:
      this configuration for chaining
    • withProgressCallback

      Sets a progress callback.
      Parameters:
      callback - the callback
      Returns:
      this configuration for chaining
    • withTables

      public FlowRateOptimizer.LiftCurveConfiguration withTables(boolean capacity, boolean liftCurve, boolean performance)
      Configures which tables to generate.
      Parameters:
      capacity - generate capacity table
      liftCurve - generate lift curve table
      performance - generate performance table
      Returns:
      this configuration for chaining
    • getInletPressures

      public double[] getInletPressures()
      Generates the inlet pressure array based on configuration.
      Returns:
      array of inlet pressures
    • getOutletPressures

      public double[] getOutletPressures()
      Generates the outlet pressure array based on configuration.
      Returns:
      array of outlet pressures
    • getFlowRates

      public double[] getFlowRates()
      Generates the flow rate array based on configuration.
      Returns:
      array of flow rates
    • generateLinearArray

      private double[] generateLinearArray(double min, double max, int points)
    • getPressureUnit

      public String getPressureUnit()
      Returns:
      the pressure unit
    • getFlowRateUnit

      public String getFlowRateUnit()
      Returns:
      the flow rate unit
    • getSurgeMargin

      public double getSurgeMargin()
      Returns:
      the surge margin
    • getMaxPowerLimit

      public double getMaxPowerLimit()
      Returns:
      the max power limit
    • getMaxTotalPowerLimit

      public double getMaxTotalPowerLimit()
      Returns:
      the max total power limit
    • getMaxSpeedLimit

      public double getMaxSpeedLimit()
      Returns:
      the max speed limit
    • getMinSpeedLimit

      public double getMinSpeedLimit()
      Returns:
      the min speed limit
    • getMaxUtilization

      public double getMaxUtilization()
      Returns:
      the max utilization
    • isEnableProgressLogging

      public boolean isEnableProgressLogging()
      Returns:
      whether progress logging is enabled
    • getProgressCallback

      public FlowRateOptimizer.ProgressCallback getProgressCallback()
      Returns:
      the progress callback
    • isGenerateCapacityTable

      public boolean isGenerateCapacityTable()
      Returns:
      whether to generate capacity table
    • isGenerateLiftCurveTable

      public boolean isGenerateLiftCurveTable()
      Returns:
      whether to generate lift curve table
    • isGeneratePerformanceTable

      public boolean isGeneratePerformanceTable()
      Returns:
      whether to generate performance table