Class SimpleTEGAbsorber

All Implemented Interfaces:
Serializable, Runnable, AutoSizeable, AbsorberInterface, CapacityConstrainedEquipment, ProcessEquipmentInterface, SeparatorInterface, StateVectorProvider, ProcessElementInterface, SimulationInterface, NamedInterface

public class SimpleTEGAbsorber extends SimpleAbsorber

SimpleTEGAbsorber class.

Version:
$Id: $Id
Author:
Even Solbraa
See Also:
  • Field Details

    • serialVersionUID

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

      static org.apache.logging.log4j.Logger logger
      Logger object for class.
    • streams

      protected ArrayList<StreamInterface> streams
    • pressure

      protected double pressure
    • numberOfInputStreams

      protected int numberOfInputStreams
    • mixedStream

      protected StreamInterface mixedStream
    • gasInStream

      protected StreamInterface gasInStream
    • solventInStream

      protected StreamInterface solventInStream
    • gasOutStream

      private StreamInterface gasOutStream
    • solventOutStream

      private StreamInterface solventOutStream
    • outStream

      protected StreamInterface outStream
    • kwater

      private double kwater
    • solventStreamNumber

      int solventStreamNumber
    • isSetWaterInDryGas

      private boolean isSetWaterInDryGas
    • waterInDryGas

      private double waterInDryGas
  • Constructor Details

    • SimpleTEGAbsorber

      public SimpleTEGAbsorber(String name)

      Constructor for SimpleTEGAbsorber.

      Parameters:
      name - a String object
  • Method Details

    • addStream

      public void addStream(StreamInterface newStream)

      addStream.

      Overrides:
      addStream in class Separator
      Parameters:
      newStream - a StreamInterface object
    • addGasInStream

      public void addGasInStream(StreamInterface newStream)

      addGasInStream.

      Parameters:
      newStream - a StreamInterface object
    • addSolventInStream

      public void addSolventInStream(StreamInterface newStream)

      addSolventInStream.

      Parameters:
      newStream - a StreamInterface object
    • replaceSolventInStream

      public void replaceSolventInStream(StreamInterface newStream)

      replaceSolventInStream.

      Parameters:
      newStream - a StreamInterface object
    • setPressure

      public void setPressure(double pressure)

      Setter for the field pressure.

      Specified by:
      setPressure in interface ProcessEquipmentInterface
      Overrides:
      setPressure in class ProcessEquipmentBaseClass
      Parameters:
      pressure - a double
    • mixStream

      public void mixStream()

      mixStream.

    • guessTemperature

      public double guessTemperature()

      guessTemperature.

      Returns:
      a double
    • calcMixStreamEnthalpy

      public double calcMixStreamEnthalpy()

      calcMixStreamEnthalpy.

      Returns:
      a double
    • getOutStream

      public StreamInterface getOutStream()

      Getter for the field outStream.

      Overrides:
      getOutStream in class SimpleAbsorber
      Returns:
      a Stream object
    • getInStream

      public StreamInterface getInStream()

      getInStream.

      Returns:
      a Stream object
    • getGasOutStream

      public StreamInterface getGasOutStream()

      Getter for the field gasOutStream.

      Overrides:
      getGasOutStream in class Separator
      Returns:
      a StreamInterface object
    • getGasInStream

      public StreamInterface getGasInStream()

      Getter for the field gasInStream.

      Returns:
      a Stream object
    • getLiquidOutStream

      public StreamInterface getLiquidOutStream()

      Getter for the field liquidOutStream.

      Overrides:
      getLiquidOutStream in class Separator
      Returns:
      a StreamInterface object
    • getSolventInStream

      public StreamInterface getSolventInStream()

      getSolventInStream.

      Overrides:
      getSolventInStream in class SimpleAbsorber
      Returns:
      a Stream object
    • calcEa

      public double calcEa()

      calcEa.

      Returns:
      a double
    • calcY0

      public double calcY0()

      calcY0.

      Returns:
      a double
    • calcNumberOfTheoreticalStages

      public double calcNumberOfTheoreticalStages()

      calcNumberOfTheoreticalStages.

      Returns:
      a double
    • calcNTU

      public double calcNTU(double y0, double y1, double yb, double ymix)

      calcNTU.

      Parameters:
      y0 - a double
      y1 - a double
      yb - a double
      ymix - a double
      Returns:
      a double
    • run

      public void run(UUID id)

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

      Specified by:
      run in interface SimulationInterface
      Overrides:
      run in class SimpleAbsorber
      Parameters:
      id - UUID
    • getGasLoadFactor

      public double getGasLoadFactor()

      getGasLoadFactor.

      Overrides:
      getGasLoadFactor in class Separator
      Returns:
      a double
    • displayResult

      public void displayResult()

      displayResult.

      Specified by:
      displayResult in interface ProcessEquipmentInterface
      Overrides:
      displayResult in class SimpleAbsorber
    • setGasOutStream

      public void setGasOutStream(StreamInterface gasOutStream)

      Setter for the field gasOutStream.

      Parameters:
      gasOutStream - a Stream object
    • getSolventOutStream

      public StreamInterface getSolventOutStream()

      Getter for the field solventOutStream.

      Returns:
      a Stream object
    • setSolventOutStream

      public void setSolventOutStream(StreamInterface solventOutStream)

      Setter for the field solventOutStream.

      Parameters:
      solventOutStream - a StreamInterface object
    • runConditionAnalysis

      public void runConditionAnalysis(ProcessEquipmentInterface refTEGabsorberloc)

      runConditionAnalysis.

      Specified by:
      runConditionAnalysis in interface ProcessEquipmentInterface
      Overrides:
      runConditionAnalysis in class ProcessEquipmentBaseClass
      Parameters:
      refTEGabsorberloc - a ProcessEquipmentInterface object
    • setWaterInDryGas

      public void setWaterInDryGas(double waterInDryGasInput)

      Setter for the field waterInDryGas.

      Parameters:
      waterInDryGasInput - water in dry gas
    • isSetWaterInDryGas

      public void isSetWaterInDryGas(boolean isSetwaterInDryGas)

      isSetWaterInDryGas.

      Parameters:
      isSetwaterInDryGas - a boolean
    • getFsFactor

      public double getFsFactor()
      Calculates the Fs factor (gas capacity factor) for structured packing in the contactor.

      The Fs factor is defined as:

      Fs = Vs * sqrt(rho_gas)
      

      where Vs is the superficial gas velocity (m/s) and rho_gas is the gas density (kg/m3). The Fs factor is proportional to the aerodynamic lift exerted by the gas on the liquid flowing down the packing. Typical maximum design value for structured packing is 3.0 m/s*sqrt(kg/m3).

      Overrides:
      getFsFactor in class SimpleAbsorber
      Returns:
      Fs factor in m/s*sqrt(kg/m3), or 0 if streams are not initialized
    • getMaxAllowableFsFactor

      public double getMaxAllowableFsFactor()
      Calculates the maximum allowable Fs factor for the contactor packing.

      For structured packing in glycol contactors, the maximum Fs factor is typically limited to 3.0 m/s*sqrt(kg/m3) to ensure sufficient hydraulic packing capacity and robustness for protection of downstream equipment.

      Returns:
      maximum allowable Fs factor in m/s*sqrt(kg/m3)
    • isFsFactorWithinDesignLimit

      public boolean isFsFactorWithinDesignLimit()
      Checks whether the current Fs factor is within the design limit.
      Returns:
      true if Fs factor is within the maximum allowable limit
    • getFsFactorUtilization

      public double getFsFactorUtilization()
      Calculates the Fs factor utilization as a fraction of the maximum.
      Returns:
      utilization ratio (0.0-1.0+). Values above 1.0 indicate the design limit is exceeded.
    • getMinimumDiameterForFsLimit

      public double getMinimumDiameterForFsLimit()
      Calculates the minimum vessel internal diameter to meet the Fs factor limit at the current gas flow rate.

      From Fs = Vs * sqrt(rho_gas) and Vs = Q / A, the minimum diameter is:

      D_min = sqrt(4 * Q * sqrt(rho_gas) / (pi * Fs_max))
      
      Returns:
      minimum internal diameter in metres, or 0 if streams are not initialized
    • getLeanTEGEquilibriumWaterDewPoint

      public double getLeanTEGEquilibriumWaterDewPoint()
      Calculates the lean TEG equilibrium water dew point temperature at the contactor pressure.

      Returns the water dew point that the lean TEG can achieve in equilibrium. This is used to verify that the lean TEG quality provides sufficient margin below the treated gas dew point specification.

      Returns:
      equilibrium water dew point in Kelvin, or 0 if solvent stream is not available
    • hasAdequateTEGQualityMargin

      public boolean hasAdequateTEGQualityMargin(double targetDewPointC, double marginC)
      Checks if the lean TEG equilibrium water dew point is at least the specified margin below the target dew point.

      Industry practice requires that the equilibrium water dew point of the lean TEG be at least 10 degC below the treated gas dew point specification.

      Parameters:
      targetDewPointC - treated gas water dew point specification in degrees Celsius
      marginC - required margin in degrees Celsius (typically 10)
      Returns:
      true if the lean TEG equilibrium dew point has sufficient margin
    • validateContactorDesign

      public String validateContactorDesign()
      Validates the TEG contactor design by checking Fs factor, gas load factor, and lean TEG quality. Returns a summary string with all design checks.
      Returns:
      design validation summary string