Class UtilityAirSystem

All Implemented Interfaces:
Serializable, Runnable, ProcessEquipmentInterface, SimulationInterface, NamedInterface

public class UtilityAirSystem extends ProcessEquipmentBaseClass
Models utility air systems for offshore and onshore facilities.

Utility air systems provide compressed air for:

  • Instrument air - Clean, dry air for pneumatic instruments and controls
  • Plant air - General purpose air for tools and cleaning
  • Service air - Air for maintenance activities
  • Breathing air - Respirable air for personnel (higher purity)

Design Standards

  • ISO 8573-1 - Compressed Air Quality Classes
  • NORSOK P-002 - Process System Design
  • API RP 11P - Packaged Reciprocating Compressors

Typical Specifications

Air quality requirements by service
Service Pressure Dew Point Oil Content
Instrument Air 7-8 barg -40°C <0.01 mg/m³
Plant Air 6-7 barg +3°C <1 mg/m³
Breathing Air 5-7 barg -40°C <0.003 mg/m³
Version:
1.0
Author:
NeqSim Development Team
See Also:
  • Field Details

    • serialVersionUID

      private static final long serialVersionUID
      See Also:
    • logger

      private static final org.apache.logging.log4j.Logger logger
    • targetQuality

      private UtilityAirSystem.AirQualityClass targetQuality
      Target air quality class.
    • compressorType

      private UtilityAirSystem.CompressorType compressorType
      Compressor type.
    • dryerType

      private UtilityAirSystem.DryerType dryerType
      Dryer type.
    • numberOfCompressors

      private int numberOfCompressors
      Number of compressors (N+1 redundancy typical).
    • receiverVolume

      private double receiverVolume
      Receiver tank volume [m³].
    • dischargePressure

      private double dischargePressure
      Discharge pressure [barg].
    • inletTemperature

      private double inletTemperature
      Inlet temperature [°C].
    • inletRelativeHumidity

      private double inletRelativeHumidity
      Relative humidity at inlet [%].
    • aftercoolerOutletTemp

      private double aftercoolerOutletTemp
      Aftercooler outlet temperature [°C].
    • totalAirDemand

      private double totalAirDemand
      Total air demand [Nm³/hr].
    • instrumentAirFraction

      private double instrumentAirFraction
      Instrument air demand fraction.
    • plantAirFraction

      private double plantAirFraction
      Plant air demand fraction.
    • serviceAirFraction

      private double serviceAirFraction
      Service/breathing air fraction.
    • consumers

      private final List<UtilityAirSystem.AirConsumer> consumers
    • compressorPowerKW

      private double compressorPowerKW
    • dryerPurgeLoss

      private double dryerPurgeLoss
    • condensateVolumeM3h

      private double condensateVolumeM3h
    • actualDewPointC

      private double actualDewPointC
    • specificEnergyKWhPerNm3

      private double specificEnergyKWhPerNm3
    • systemRunning

      private boolean systemRunning
  • Constructor Details

    • UtilityAirSystem

      public UtilityAirSystem(String name)
      Default constructor.
      Parameters:
      name - system name
    • UtilityAirSystem

      public UtilityAirSystem(String name, double airDemandNm3h)
      Constructor with capacity.
      Parameters:
      name - system name
      airDemandNm3h - total air demand in Nm³/hr
    • UtilityAirSystem

      public UtilityAirSystem(String name, double airDemandNm3h, UtilityAirSystem.AirQualityClass qualityClass)
      Constructor with quality specification.
      Parameters:
      name - system name
      airDemandNm3h - total air demand
      qualityClass - target air quality
  • Method Details

    • addConsumer

      public void addConsumer(UtilityAirSystem.AirConsumer consumer)
      Add an air consumer.
      Parameters:
      consumer - air consumer to add
    • addConsumer

      public void addConsumer(String name, double demandNm3h, UtilityAirSystem.AirQualityClass quality)
      Add an air consumer by parameters.
      Parameters:
      name - consumer name
      demandNm3h - air demand [Nm³/hr]
      quality - required quality class
    • updateTotalDemand

      private void updateTotalDemand()
      Update total demand from consumers.
    • selectDryerForQuality

      private void selectDryerForQuality()
      Select appropriate dryer for quality requirement.
    • autoSize

      public void autoSize()
      Auto-size system based on demand.
    • run

      public void run(UUID id)

      In this method all thermodynamic and unit operations will be calculated in a steady state calculation.

      Parameters:
      id - UUID
    • calculateSaturationPressure

      private double calculateSaturationPressure(double temperatureC)
      Calculate saturation pressure of water vapor.
      Parameters:
      temperatureC - temperature in °C
      Returns:
      saturation pressure in kPa
    • getCompressorPowerKW

      public double getCompressorPowerKW()
      Gets compressor power.
      Returns:
      total compressor power [kW]
    • getSpecificEnergy

      public double getSpecificEnergy()
      Gets specific energy consumption.
      Returns:
      energy per Nm³ [kWh/Nm³]
    • getDryerPurgeLoss

      public double getDryerPurgeLoss()
      Gets dryer purge air loss.
      Returns:
      purge loss [Nm³/hr]
    • getCondensateVolume

      public double getCondensateVolume()
      Gets condensate volume.
      Returns:
      condensate [m³/hr]
    • getActualDewPoint

      public double getActualDewPoint()
      Gets achieved dew point.
      Returns:
      dew point [°C]
    • isQualityTargetMet

      public boolean isQualityTargetMet()
      Checks if quality target is met.
      Returns:
      true if achieved dew point meets target
    • getReceiverHoldupMinutes

      public double getReceiverHoldupMinutes()
      Gets receiver holdup time at full demand.
      Returns:
      holdup time [minutes]
    • calculateAnnualOperatingCost

      public double calculateAnnualOperatingCost(double electricityCostPerKWh, double operatingHoursPerYear)
      Calculate annual operating cost.
      Parameters:
      electricityCostPerKWh - electricity cost
      operatingHoursPerYear - annual operating hours
      Returns:
      annual cost
    • toJson

      public String toJson()
      Gets results as JSON.
      Specified by:
      toJson in interface ProcessEquipmentInterface
      Overrides:
      toJson in class ProcessEquipmentBaseClass
      Returns:
      JSON string
    • getTargetQuality

      public UtilityAirSystem.AirQualityClass getTargetQuality()
      Gets target quality class.
      Returns:
      quality class
    • setTargetQuality

      public void setTargetQuality(UtilityAirSystem.AirQualityClass quality)
      Sets target quality class.
      Parameters:
      quality - quality class
    • getCompressorType

      public UtilityAirSystem.CompressorType getCompressorType()
      Gets compressor type.
      Returns:
      compressor type
    • setCompressorType

      public void setCompressorType(UtilityAirSystem.CompressorType type)
      Sets compressor type.
      Parameters:
      type - compressor type
    • getDryerType

      public UtilityAirSystem.DryerType getDryerType()
      Gets dryer type.
      Returns:
      dryer type
    • setDryerType

      public void setDryerType(UtilityAirSystem.DryerType type)
      Sets dryer type.
      Parameters:
      type - dryer type
    • getDischargePressure

      public double getDischargePressure()
      Gets discharge pressure.
      Returns:
      pressure [barg]
    • setDischargePressure

      public void setDischargePressure(double pressure)
      Sets discharge pressure.
      Parameters:
      pressure - pressure [barg]
    • getTotalAirDemand

      public double getTotalAirDemand()
      Gets total air demand.
      Returns:
      demand [Nm³/hr]
    • setTotalAirDemand

      public void setTotalAirDemand(double demand)
      Sets total air demand.
      Parameters:
      demand - demand [Nm³/hr]
    • getInletTemperature

      public double getInletTemperature()
      Gets inlet temperature.
      Returns:
      temperature [°C]
    • setInletTemperature

      public void setInletTemperature(double temperature)
      Sets inlet temperature.
      Parameters:
      temperature - temperature [°C]
    • getInletRelativeHumidity

      public double getInletRelativeHumidity()
      Gets inlet relative humidity.
      Returns:
      humidity [%]
    • setInletRelativeHumidity

      public void setInletRelativeHumidity(double humidity)
      Sets inlet relative humidity.
      Parameters:
      humidity - humidity [%]
    • getReceiverVolume

      public double getReceiverVolume()
      Gets receiver volume.
      Returns:
      volume [m³]
    • setReceiverVolume

      public void setReceiverVolume(double volume)
      Sets receiver volume.
      Parameters:
      volume - volume [m³]
    • getNumberOfCompressors

      public int getNumberOfCompressors()
      Gets number of compressors.
      Returns:
      number of compressors
    • setNumberOfCompressors

      public void setNumberOfCompressors(int number)
      Sets number of compressors.
      Parameters:
      number - number of compressors