Class FlowRateOptimizer.ProcessCapacityTable

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

public static class FlowRateOptimizer.ProcessCapacityTable extends Object implements Serializable
Represents a 2D capacity table showing maximum flow rates at different pressure boundary conditions.

This table maps inlet/outlet pressure combinations to maximum achievable flow rates while respecting equipment constraints. It is the inverse of the lift curve representation - instead of "flow vs outlet pressure at fixed inlet pressure", it shows "max flow for each pressure combination".

This format is particularly useful for reservoir simulators where pressures are known from deliverability curves and the question is "what flow rate can the production system handle?"

Table Structure

              Pout=130   Pout=140   Pout=150   Pout=160
Pin=60         12000      10500       8000       5000
Pin=70         15000      13000      11000       8500
Pin=80         18000      16000      14000      12000
Pin=90         20000      18500      17000      15500
Version:
1.0
Author:
EquinorASA
See Also:
  • Field Details

    • serialVersionUID

      private static final long serialVersionUID
      Serialization version UID.
      See Also:
    • tableName

      private String tableName
    • inletPressures

      private double[] inletPressures
    • outletPressures

      private double[] outletPressures
    • compressorNames

      private List<String> compressorNames
    • operatingPoints

      private FlowRateOptimizer.ProcessOperatingPoint[][] operatingPoints
    • pressureUnit

      private String pressureUnit
    • flowRateUnit

      private String flowRateUnit
    • maxUtilization

      private double maxUtilization
  • Constructor Details

    • ProcessCapacityTable

      public ProcessCapacityTable(String tableName, double[] inletPressures, double[] outletPressures, List<String> compressorNames)
      Constructs a capacity table.
      Parameters:
      tableName - the table name
      inletPressures - array of inlet pressures (rows)
      outletPressures - array of outlet pressures (columns)
      compressorNames - list of compressor names in the process
  • Method Details

    • setOperatingPoint

      public void setOperatingPoint(int inletIndex, int outletIndex, FlowRateOptimizer.ProcessOperatingPoint point)
      Sets the operating point for a specific inlet/outlet pressure combination.
      Parameters:
      inletIndex - index into inlet pressures array
      outletIndex - index into outlet pressures array
      point - the operating point (or null if infeasible)
    • getOperatingPoint

      public FlowRateOptimizer.ProcessOperatingPoint getOperatingPoint(int inletIndex, int outletIndex)
      Gets the operating point for a specific inlet/outlet pressure combination.
      Parameters:
      inletIndex - index into inlet pressures array
      outletIndex - index into outlet pressures array
      Returns:
      the operating point, or null if infeasible
    • getFlowRateValues

      public double[][] getFlowRateValues()
      Extracts maximum flow rates as a 2D array.
      Returns:
      2D array [inletPressures][outletPressures] of flow rates
    • getTotalPowerValues

      public double[][] getTotalPowerValues()
      Extracts total power values as a 2D array.
      Returns:
      2D array [inletPressures][outletPressures] of total power (kW)
    • getMaxUtilizationValues

      public double[][] getMaxUtilizationValues()
      Extracts maximum utilization values as a 2D array.
      Returns:
      2D array [inletPressures][outletPressures] of max utilization
    • findMaxFlowRatePoint

      public FlowRateOptimizer.ProcessOperatingPoint findMaxFlowRatePoint()
      Finds the operating point with maximum flow rate.
      Returns:
      the operating point with highest flow rate, or null if empty
    • findMinimumPowerPoint

      public FlowRateOptimizer.ProcessOperatingPoint findMinimumPowerPoint()
      Finds the operating point with minimum total power.
      Returns:
      the operating point with lowest total power, or null if empty
    • countFeasiblePoints

      public int countFeasiblePoints()
      Gets number of feasible operating points.
      Returns:
      count of feasible points
    • toFormattedString

      public String toFormattedString()
      Generates a formatted string representation.
      Returns:
      formatted table string
    • toEclipseFormat

      public String toEclipseFormat()
      Generates Eclipse VFP table format output.

      This format is compatible with Eclipse 300 reservoir simulator lift tables. The output generates VFPPROD tables that can be directly included in Eclipse DATA files.

      The generated table uses the following Eclipse conventions:

      • FLO = flow rate (in flowRateUnit)
      • THP = tubing head pressure (inlet pressure / wellhead pressure)
      • BHP = bottom hole pressure (outlet pressure in this context)
      Returns:
      Eclipse VFP format string ready for inclusion in Eclipse DATA file
    • toCsv

      public String toCsv()
      Generates a CSV export of the capacity table for spreadsheet analysis.
      Returns:
      CSV formatted string
    • toJson

      public String toJson()
      Generates JSON representation of the capacity table.
      Returns:
      JSON string
    • getTableName

      public String getTableName()
      Returns:
      the tableName
    • setTableName

      public void setTableName(String tableName)
      Parameters:
      tableName - the tableName to set
    • getInletPressures

      public double[] getInletPressures()
      Returns:
      the inletPressures
    • getOutletPressures

      public double[] getOutletPressures()
      Returns:
      the outletPressures
    • getCompressorNames

      public List<String> getCompressorNames()
      Returns:
      the compressorNames
    • getPressureUnit

      public String getPressureUnit()
      Returns:
      the pressureUnit
    • setPressureUnit

      public void setPressureUnit(String pressureUnit)
      Parameters:
      pressureUnit - the pressureUnit to set
    • getFlowRateUnit

      public String getFlowRateUnit()
      Returns:
      the flowRateUnit
    • setFlowRateUnit

      public void setFlowRateUnit(String flowRateUnit)
      Parameters:
      flowRateUnit - the flowRateUnit to set
    • getMaxUtilization

      public double getMaxUtilization()
      Returns:
      the maxUtilization
    • setMaxUtilization

      public void setMaxUtilization(double maxUtilization)
      Parameters:
      maxUtilization - the maxUtilization to set