Class SimpleTEGAbsorber
- All Implemented Interfaces:
Serializable, Runnable, AutoSizeable, AbsorberInterface, CapacityConstrainedEquipment, ProcessEquipmentInterface, SeparatorInterface, StateVectorProvider, ProcessElementInterface, SimulationInterface, NamedInterface
SimpleTEGAbsorber class.
- Version:
- $Id: $Id
- Author:
- Even Solbraa
- See Also:
-
Nested Class Summary
Nested classes/interfaces inherited from class Separator
Separator.Builder -
Field Summary
FieldsModifier and TypeFieldDescriptionprotected StreamInterfaceprivate StreamInterfaceprivate booleanprivate double(package private) static org.apache.logging.log4j.LoggerLogger object for class.protected StreamInterfaceprotected intprotected StreamInterfaceprotected doubleprivate static final longSerialization version UID.protected StreamInterfaceprivate StreamInterface(package private) intprotected ArrayList<StreamInterface> private doubleFields inherited from class SimpleAbsorber
absorptionEfficiency, dT, inStream, setTemperature, system, temperatureOutFields inherited from class Separator
DEFAULT_DROPLET_CUTSIZE_LIMIT, DEFAULT_INLET_MOMENTUM_LIMIT, DEFAULT_K_VALUE_LIMIT, DEFAULT_LIQUID_DENSITY_FOR_SIZING, DEFAULT_MIN_OIL_RETENTION_TIME, DEFAULT_MIN_WATER_RETENTION_TIME, liquidLevelFields inherited from class ProcessEquipmentBaseClass
conditionAnalysisMessage, energyStream, hasController, isSolved, properties, reportFields inherited from class SimulationBaseClass
calcIdentifier, calculateSteadyState, timeFields inherited from class NamedBaseClass
name -
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionvoidaddGasInStream(StreamInterface newStream) addGasInStream.voidaddSolventInStream(StreamInterface newStream) addSolventInStream.voidaddStream(StreamInterface newStream) addStream.doublecalcEa()calcEa.doublecalcMixStreamEnthalpy.doublecalcNTU(double y0, double y1, double yb, double ymix) calcNTU.doublecalcNumberOfTheoreticalStages.doublecalcY0()calcY0.voiddisplayResult.doubleCalculates the Fs factor (gas capacity factor) for structured packing in the contactor.doubleCalculates the Fs factor utilization as a fraction of the maximum.Getter for the fieldgasInStream.doublegetGasLoadFactor.Getter for the fieldgasOutStream.getInStream.doubleCalculates the lean TEG equilibrium water dew point temperature at the contactor pressure.Getter for the fieldliquidOutStream.doubleCalculates the maximum allowable Fs factor for the contactor packing.doubleCalculates the minimum vessel internal diameter to meet the Fs factor limit at the current gas flow rate.Getter for the fieldoutStream.getSolventInStream.Getter for the fieldsolventOutStream.doubleguessTemperature.booleanhasAdequateTEGQualityMargin(double targetDewPointC, double marginC) Checks if the lean TEG equilibrium water dew point is at least the specified margin below the target dew point.booleanChecks whether the current Fs factor is within the design limit.voidisSetWaterInDryGas(boolean isSetwaterInDryGas) isSetWaterInDryGas.voidmixStream.voidreplaceSolventInStream(StreamInterface newStream) replaceSolventInStream.voidIn this method all thermodynamic and unit operations will be calculated in a steady state calculation.voidrunConditionAnalysis(ProcessEquipmentInterface refTEGabsorberloc) runConditionAnalysis.voidsetGasOutStream(StreamInterface gasOutStream) Setter for the fieldgasOutStream.voidsetPressure(double pressure) Setter for the fieldpressure.voidsetSolventOutStream(StreamInterface solventOutStream) Setter for the fieldsolventOutStream.voidsetWaterInDryGas(double waterInDryGasInput) Setter for the fieldwaterInDryGas.Validates the TEG contactor design by checking Fs factor, gas load factor, and lean TEG quality.Methods inherited from class SimpleAbsorber
getHTU, getInStream, getInTemperature, getMechanicalDesign, getNTU, getNumberOfStages, getNumberOfTheoreticalStages, getOutletStream, getOutletStream, getOutletTemperature, getOutStream, getOutTemperature, getStageEfficiency, getWettingRate, setAproachToEquilibrium, setdT, setHTU, setName, setNTU, setNumberOfStages, setNumberOfTheoreticalStages, setOutletTemperature, setOutTemperature, setStageEfficiencyMethods inherited from class Separator
addCapacityConstraint, addSeparatorSection, autoSize, autoSize, autoSize, builder, calcDropletCutSize, calcDropletCutSizeAtHLL, calcGasAreaAboveLevel, calcGasVelocityAboveLevel, calcInletMomentumFlux, calcInletMomentumFlux, calcKValue, calcKValueAtHLL, calcLiquidVolume, calcOilRetentionTime, calcSegmentArea, calcWaterRetentionTime, clearCapacityConstraints, disableConstraint, disableConstraints, enableConstraints, enforceHeadspace, equals, evaluateFireExposure, evaluateFireExposure, getBootVolume, getBottleneckConstraint, getCapacityConstraints, getCapacityDuty, getCapacityMax, getCapacityUtilization, getConstraintSummary, getDeRatedGasLoadFactor, getDeRatedGasLoadFactor, getDesignGasLoadFactor, getDesignLiquidLevelFraction, getEfficiency, getElectricalDesign, getEnabledConstraintNames, getEntropyProduction, getEquipmentState, getExergyChange, getExergyChange, getFeedStream, getGas, getGasCarryunderFraction, getGasLoadFactor, getGasSuperficialVelocity, getHeatDuty, getHeatDuty, getHeatInput, getHeatInput, getInletFlowRegime, getInletStreams, getInnerSurfaceArea, getInstrumentDesign, getInternalDiameter, getKFactor, getKFactorUtilization, getLiquid, getLiquidCarryoverFraction, getLiquidLevel, getMassBalance, getMaxAllowableGasFlowRate, getMaxAllowableGasVelocity, getMaxUtilization, getMistEliminatorDpCoeff, getMistEliminatorPressureDrop, getMistEliminatorThickness, getOperatingEnvelopeViolation, getOrientation, getOutletStreams, getPerformanceCalculator, getPerformanceSummary, getPressure, getPressureDrop, getResultTable, getSeparatorLength, getSeparatorSection, getSeparatorSection, getSeparatorSections, getSimulationValidationErrors, getSizingReport, getSizingReportJson, getStateVector, getThermoSystem, getUnwettedArea, getWeirHeight, getWeirLength, getWeirOverflowRate, getWettedArea, hasGeometry, hashCode, initDesignFromFlow, initElectricalDesign, initializeCapacityConstraints, initializeTransientCalculation, initInstrumentDesign, initMechanicalDesign, isAutoSized, isCapacityExceeded, isConstraintEnabled, isDetailedEntrainmentCalculation, isDropletCutSizeWithinLimit, isDropletCutSizeWithinLimit, isEnforceCapacityLimits, isEnhancedEntrainmentCalculation, isHardLimitExceeded, isInletMomentumWithinLimit, isInletMomentumWithinLimit, isKValueWithinLimit, isKValueWithinLimit, isMistEliminatorFlooded, isOilRetentionTimeAboveMinimum, isOilRetentionTimeAboveMinimum, isOverloaded, isSetHeatInput, isSimulationValid, isSinglePhase, isWaterRetentionTimeAboveMinimum, isWaterRetentionTimeAboveMinimum, isWithinAllLimits, isWithinOperatingEnvelope, levelFromVolume, liquidArea, removeCapacityConstraint, runTransient, setBootVolume, setDesignGasLoadFactor, setDesignLiquidLevelFraction, setDetailedEntrainmentCalculation, setDropletCutSizeLimit, setDuty, setDuty, setEfficiency, setEnforceCapacityLimits, setEnhancedEntrainmentCalculation, setEntrainment, setGasCarryunderFraction, setGasLiquidSurfaceTension, setHeatDuty, setHeatDuty, setHeatInput, setHeatInput, setInletDeviceType, setInletMomentumLimit, setInletPipeDiameter, setInletStream, setInternalDiameter, setKValueLimit, setLiquidCarryoverFraction, setLiquidLevel, setMinOilRetentionTime, setMinWaterRetentionTime, setMistEliminatorDpCoeff, setMistEliminatorThickness, setOrientation, setPerformanceCalculator, setPressureDrop, setSeparatorLength, setTempPres, setWeirHeight, setWeirLength, sizeFromFlow, toJson, toJson, updateEntrainmentForTransient, updateEntrainmentFromPerformanceCalculator, useAllConstraints, useAPIConstraints, useConstraints, useEquinorConstraints, useGasCapacityConstraints, useGasScrubberConstraints, useLiquidCapacityConstraints, validateSetupMethods inherited from class ProcessEquipmentBaseClass
addController, copy, getAvailableMargin, getAvailableMarginPercent, getConditionAnalysisMessage, getConstraintEvaluationReport, getController, getController, getControllers, getEffectiveCapacityFactor, getEnergyStream, getFailureMode, getMassBalance, getMaxUtilizationPercent, getMinimumFlow, getPressure, getProperty, getReferenceDesignation, getReport_json, getSpecification, getTemperature, getTemperature, getUtilizationSummary, initializeDefaultConstraints, isActive, isActive, isCapacityAnalysisEnabled, isFailed, isNearCapacityLimit, isSetEnergyStream, reportResults, restoreFromFailure, run_step, setCapacityAnalysisEnabled, setController, setEnergyStream, setEnergyStream, setFailureMode, setFlowValveController, setMinimumFlow, setReferenceDesignation, setRegulatorOutSignal, setSpecification, setTemperature, simulateDegradedOperation, simulateTrip, solvedMethods inherited from class SimulationBaseClass
getCalculateSteadyState, getCalculationIdentifier, getTime, increaseTime, isRunInSteps, setCalculateSteadyState, setCalculationIdentifier, setRunInSteps, setTimeMethods inherited from class NamedBaseClass
getName, getTagNumber, setTagNumberMethods inherited from class Object
clone, finalize, getClass, notify, notifyAll, toString, wait, wait, waitMethods inherited from interface CapacityConstrainedEquipment
disableAllConstraints, enableAllConstraints, getAvailableMargin, getAvailableMarginPercent, getMaxUtilizationPercent, getUtilizationSummary, isCapacityAnalysisEnabled, isNearCapacityLimit, setCapacityAnalysisEnabledMethods inherited from interface NamedInterface
getName, getTagName, getTagNumber, setTagName, setTagNumberMethods inherited from interface ProcessEquipmentInterface
addCapacityConstraint, addController, equals, getAvailableMargin, getAvailableMarginPercent, getBottleneckConstraint, getCapacityConstraints, getCapacityDuty, getCapacityMax, getConditionAnalysisMessage, getController, getController, getControllers, getElectricalDesign, getEntropyProduction, getEquipmentState, getExergyChange, getExergyChange, getExergyDestruction, getExergyDestruction, getFluid, getInletStreams, getInstrumentDesign, getMassBalance, getMassBalance, getMaxUtilization, getMaxUtilizationPercent, getOperatingEnvelopeViolation, getOutletFlowRate, getOutletPressure, getOutletStreams, getOutletTemperature, getPressure, getPressure, getReferenceDesignation, getReferenceDesignationString, getReport_json, getRestCapacity, getResultTable, getSimulationValidationErrors, getSpecification, getTemperature, getTemperature, getThermoSystem, getUtilizationSummary, hashCode, initElectricalDesign, initInstrumentDesign, initMechanicalDesign, isCapacityExceeded, isHardLimitExceeded, isNearCapacityLimit, isSimulationValid, isWithinOperatingEnvelope, needRecalculation, reportResults, setController, setReferenceDesignation, setRegulatorOutSignal, setSpecification, setTemperature, toJson, toJson, validateSetupMethods inherited from interface SimulationInterface
getCalculateSteadyState, getCalculationIdentifier, getTime, increaseTime, isRunInSteps, run, run_step, run_step, runTransient, runTransient, setCalculateSteadyState, setCalculationIdentifier, setRunInSteps, setTime, solvedMethods inherited from interface StateVectorProvider
getStateDimension, getStateNames
-
Field Details
-
serialVersionUID
private static final long serialVersionUIDSerialization version UID.- See Also:
-
logger
static org.apache.logging.log4j.Logger loggerLogger object for class. -
streams
-
pressure
protected double pressure -
numberOfInputStreams
protected int numberOfInputStreams -
mixedStream
-
gasInStream
-
solventInStream
-
gasOutStream
-
solventOutStream
-
outStream
-
kwater
private double kwater -
solventStreamNumber
int solventStreamNumber -
isSetWaterInDryGas
private boolean isSetWaterInDryGas -
waterInDryGas
private double waterInDryGas
-
-
Constructor Details
-
SimpleTEGAbsorber
-
-
Method Details
-
addStream
addStream.
- Overrides:
addStreamin classSeparator- Parameters:
newStream- aStreamInterfaceobject
-
addGasInStream
addGasInStream.
- Parameters:
newStream- aStreamInterfaceobject
-
addSolventInStream
addSolventInStream.
- Parameters:
newStream- aStreamInterfaceobject
-
replaceSolventInStream
replaceSolventInStream.
- Parameters:
newStream- aStreamInterfaceobject
-
setPressure
public void setPressure(double pressure) Setter for the field
pressure.- Specified by:
setPressurein interfaceProcessEquipmentInterface- Overrides:
setPressurein classProcessEquipmentBaseClass- 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
Getter for the field
outStream.- Overrides:
getOutStreamin classSimpleAbsorber- Returns:
- a
Streamobject
-
getInStream
-
getGasOutStream
Getter for the field
gasOutStream.- Overrides:
getGasOutStreamin classSeparator- Returns:
- a
StreamInterfaceobject
-
getGasInStream
-
getLiquidOutStream
Getter for the field
liquidOutStream.- Overrides:
getLiquidOutStreamin classSeparator- Returns:
- a
StreamInterfaceobject
-
getSolventInStream
getSolventInStream.
- Overrides:
getSolventInStreamin classSimpleAbsorber- Returns:
- a
Streamobject
-
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 doubley1- a doubleyb- a doubleymix- a double- Returns:
- a double
-
run
In this method all thermodynamic and unit operations will be calculated in a steady state calculation.
- Specified by:
runin interfaceSimulationInterface- Overrides:
runin classSimpleAbsorber- Parameters:
id- UUID
-
getGasLoadFactor
public double getGasLoadFactor()getGasLoadFactor.
- Overrides:
getGasLoadFactorin classSeparator- Returns:
- a double
-
displayResult
public void displayResult()displayResult.
- Specified by:
displayResultin interfaceProcessEquipmentInterface- Overrides:
displayResultin classSimpleAbsorber
-
setGasOutStream
Setter for the field
gasOutStream.- Parameters:
gasOutStream- aStreamobject
-
getSolventOutStream
Getter for the field
solventOutStream.- Returns:
- a
Streamobject
-
setSolventOutStream
Setter for the field
solventOutStream.- Parameters:
solventOutStream- aStreamInterfaceobject
-
runConditionAnalysis
runConditionAnalysis.
- Specified by:
runConditionAnalysisin interfaceProcessEquipmentInterface- Overrides:
runConditionAnalysisin classProcessEquipmentBaseClass- Parameters:
refTEGabsorberloc- aProcessEquipmentInterfaceobject
-
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:
getFsFactorin classSimpleAbsorber- 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 CelsiusmarginC- required margin in degrees Celsius (typically 10)- Returns:
- true if the lean TEG equilibrium dew point has sufficient margin
-
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
-