Class SimpleAmineAbsorber
- All Implemented Interfaces:
Serializable, Runnable, AutoSizeable, AbsorberInterface, CapacityConstrainedEquipment, ProcessEquipmentInterface, SeparatorInterface, StateVectorProvider, ProcessElementInterface, SimulationInterface, NamedInterface
Models the gas sweetening process using amine solvents (MDEA, DEA, MEA, or blends). The model calculates acid gas removal based on:
- Acid gas loading (mole acid gas per mole amine)
- Approach to equilibrium (typically 70% of equilibrium loading)
- Solvent circulation rate
- Number of theoretical stages
Design Parameters
- Foaming margin: Applied as capacity derating on gas flow (default 20%)
- Packing height: Maximum 5-6 m per section for fixed installations
- Amine temperature margin: Lean amine temperature at least 6 degC above gas feed
- Gas carry-under: Default 0.03 Am3 gas per Am3 amine
- Demister K-factor: Maximum 0.08 m/s for wire mesh at outlet
- Version:
- 1.0
- Author:
- NeqSim
- See Also:
-
Nested Class Summary
Nested ClassesModifier and TypeClassDescriptionstatic classResult of a single design check.Nested classes/interfaces inherited from class Separator
Separator.Builder -
Field Summary
FieldsModifier and TypeFieldDescriptionprivate doubleAmine weight percent concentration in the lean solvent (typically 30-50 wt%).private doubleAmine loss rate (kg/MSm3 gas treated).private booleanWhether the amine temperature is above gas feed by the required margin.private doubleRequired temperature margin: lean amine T above gas feed T (degC).private StringAmine type: "MDEA", "DEA", "MEA", or blend.private doubleApproach to equilibrium fraction (typically 0.70).private doubleCalculated demister K-factor at gas outlet (m/s).private doubleCalculated number of theoretical stages.private doubleOverall CO2 removal efficiency (0.0-1.0).private doubleFoaming design margin as fraction (0.0-1.0).private doubleGas carry-under: Am3 gas per Am3 amine downstream the contactor.private doubleOverall H2S removal efficiency (0.0-1.0).private doubleHeat of absorption (kW).private StreamInterfaceLean amine inlet stream.private doubleLean amine acid gas loading (mol acid gas / mol amine).private static final org.apache.logging.log4j.LoggerLogger object for class.private doubleDemister K-factor limit for wire mesh at gas outlet (m/s).private doubleMaximum packing height per section in metres.private doubleMaximum lean amine temperature in the reboiler (degrees C).private intNumber of packing sections needed.private doubleRequired solvent circulation rate (m3/h).private doubleEffective packing height required (m).private doubleCalculated acid gas loading (mol acid gas / mol amine).private StreamInterfaceRich amine outlet stream.private static final longSerialization version UID.private StreamInterfaceSour gas inlet stream.private StreamInterfaceSweet gas outlet stream.private doubleTarget CO2 content in sweet gas (mol fraction).private doubleTarget H2S content in sweet gas (ppmv).Fields inherited from class SimpleAbsorber
absorptionEfficiency, dT, inStream, outStream, 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, liquidLevel, numberOfInputStreamsFields inherited from class ProcessEquipmentBaseClass
conditionAnalysisMessage, energyStream, hasController, isSolved, properties, reportFields inherited from class SimulationBaseClass
calcIdentifier, calculateSteadyState, timeFields inherited from class NamedBaseClass
name -
Constructor Summary
ConstructorsConstructorDescriptionSimpleAmineAbsorber(String name) Creates a simple amine absorber.SimpleAmineAbsorber(String name, StreamInterface sourGasStream) Creates a simple amine absorber with a sour gas feed stream. -
Method Summary
Modifier and TypeMethodDescriptiondoublecalcDemisterKFactor(double gasVelocityMs, double gasDensityKgM3, double liquidDensityKgM3) Calculates the demister K-factor for wire mesh at the gas outlet.voidcalcPackingHeight(double htuM, double ntu) Calculates the required packing height and number of sections.doublecalcRequiredCirculationRate(double acidGasMolFlowMolPerSec, double amineDensityKgPerM3, double amineMolarMassKgPerMol) Calculates the minimum required amine circulation rate.doublecalcRichAmineLoading(double equilibriumLoading) Calculates the acid gas loading on the rich amine.booleancheckAmineTemperatureMargin(double gasFeedTemperatureC, double amineInletTemperatureC) Checks if the amine temperature has sufficient margin above the gas feed temperature to prevent hydrocarbon condensation in the contactor.doubleGets the amine weight percent concentration.doubleGets the required lean amine to gas feed temperature margin.Gets the amine type.doubleGets the approach to equilibrium fraction.doubleGets the calculated demister K-factor.doubleGets the CO2 removal efficiency.Gets a summary of the absorber design.doublegetEffectiveGasCapacityWithFoamingMargin(double designGasFlowM3s) Calculates the effective gas capacity with foaming derating.doubleGets the foaming design margin.doubleGets the gas carry-under design value.doubleGets the H2S removal efficiency.Returns all inlet streams connected to this equipment.Gets the lean amine inlet stream.doubleGets the lean amine loading.doubleGets the maximum allowable demister K-factor.doubleGets the maximum packing height per section.intGets the number of packing sections needed (each with redistribution).Returns all outlet streams produced by this equipment.doubleGets the required amine circulation rate.doubleGets the required total packing height.doubleGets the calculated rich amine acid gas loading.Gets the rich amine outlet stream.Gets the sour gas inlet stream.Gets the sweet gas outlet stream.booleanGets whether the amine inlet temperature is adequate.booleanChecks if the demister K-factor is within the design limit.voidIn this method all thermodynamic and unit operations will be calculated in a steady state calculation.voidsetAmineConcentrationWtPct(double wtPct) Sets the amine weight percent concentration in lean solvent.voidsetAmineTemperatureMarginC(double marginC) Sets the required lean amine to gas feed temperature margin.voidsetAmineType(String type) Sets the amine type.voidsetApproachToEquilibrium(double fraction) Sets the approach to equilibrium fraction for acid gas loading.voidsetCO2RemovalEfficiency(double efficiency) Sets the CO2 removal efficiency.voidsetFoamingDesignMargin(double margin) Sets the foaming design margin.voidsetGasCarryUnder(double carryUnder) Sets the gas carry-under design value.voidsetH2SRemovalEfficiency(double efficiency) Sets the H2S removal efficiency.voidsetLeanAmineInStream(StreamInterface stream) Sets the lean amine inlet stream.voidsetLeanAmineLoading(double loading) Sets the lean amine loading (residual acid gas in lean amine).voidsetMaxPackingHeightPerSection(double heightM) Sets the maximum packing height per section.voidsetSourGasInStream(StreamInterface stream) Sets the sour gas inlet stream.Validates the amine absorber design against industry best practices.Methods inherited from class SimpleAbsorber
displayResult, getFsFactor, getHTU, getInStream, getInTemperature, getMechanicalDesign, getNTU, getNumberOfStages, getNumberOfTheoreticalStages, getOutletStream, getOutletStream, getOutletTemperature, getOutStream, getOutStream, getOutTemperature, getSolventInStream, getStageEfficiency, getWettingRate, setAproachToEquilibrium, setdT, setHTU, setName, setNTU, setNumberOfStages, setNumberOfTheoreticalStages, setOutletTemperature, setOutTemperature, setStageEfficiencyMethods inherited from class Separator
addCapacityConstraint, addSeparatorSection, addStream, 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, getGasLoadFactor, getGasOutStream, getGasSuperficialVelocity, getHeatDuty, getHeatDuty, getHeatInput, getHeatInput, getInletFlowRegime, getInnerSurfaceArea, getInstrumentDesign, getInternalDiameter, getKFactor, getKFactorUtilization, getLiquid, getLiquidCarryoverFraction, getLiquidLevel, getLiquidOutStream, getMassBalance, getMaxAllowableGasFlowRate, getMaxAllowableGasVelocity, getMaxUtilization, getMistEliminatorDpCoeff, getMistEliminatorPressureDrop, getMistEliminatorThickness, getOperatingEnvelopeViolation, getOrientation, 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, runConditionAnalysis, setCapacityAnalysisEnabled, setController, setEnergyStream, setEnergyStream, setFailureMode, setFlowValveController, setMinimumFlow, setPressure, 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, getInstrumentDesign, getMassBalance, getMassBalance, getMaxUtilization, getMaxUtilizationPercent, getOperatingEnvelopeViolation, getOutletFlowRate, getOutletPressure, 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, runConditionAnalysis, setController, setPressure, 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
private static final org.apache.logging.log4j.Logger loggerLogger object for class. -
sourGasInStream
Sour gas inlet stream. -
leanAmineInStream
Lean amine inlet stream. -
sweetGasOutStream
Sweet gas outlet stream. -
richAmineOutStream
Rich amine outlet stream. -
amineType
Amine type: "MDEA", "DEA", "MEA", or blend. -
amineConcentrationWtPct
private double amineConcentrationWtPctAmine weight percent concentration in the lean solvent (typically 30-50 wt%). -
targetCO2MolFraction
private double targetCO2MolFractionTarget CO2 content in sweet gas (mol fraction). -
targetH2SPpmv
private double targetH2SPpmvTarget H2S content in sweet gas (ppmv). If zero, H2S removal is not modelled. -
co2RemovalEfficiency
private double co2RemovalEfficiencyOverall CO2 removal efficiency (0.0-1.0). -
h2sRemovalEfficiency
private double h2sRemovalEfficiencyOverall H2S removal efficiency (0.0-1.0). -
foamingDesignMargin
private double foamingDesignMarginFoaming design margin as fraction (0.0-1.0). Applied as capacity derating. -
maxPackingHeightPerSection
private double maxPackingHeightPerSectionMaximum packing height per section in metres. -
maxReboilerTemperatureC
private double maxReboilerTemperatureCMaximum lean amine temperature in the reboiler (degrees C). Above this, amine degrades. -
gasCarryUnder
private double gasCarryUnderGas carry-under: Am3 gas per Am3 amine downstream the contactor. -
maxDemisterKFactor
private double maxDemisterKFactorDemister K-factor limit for wire mesh at gas outlet (m/s). -
amineTemperatureMarginC
private double amineTemperatureMarginCRequired temperature margin: lean amine T above gas feed T (degC). -
richAmineLoading
private double richAmineLoadingCalculated acid gas loading (mol acid gas / mol amine). -
leanAmineLoading
private double leanAmineLoadingLean amine acid gas loading (mol acid gas / mol amine). -
approachToEquilibrium
private double approachToEquilibriumApproach to equilibrium fraction (typically 0.70). -
requiredCirculationRate
private double requiredCirculationRateRequired solvent circulation rate (m3/h). -
calculatedTheoreticalStages
private double calculatedTheoreticalStagesCalculated number of theoretical stages. -
requiredPackingHeight
private double requiredPackingHeightEffective packing height required (m). -
numberOfPackingSections
private int numberOfPackingSectionsNumber of packing sections needed. -
heatOfAbsorption
private double heatOfAbsorptionHeat of absorption (kW). -
amineLossRate
private double amineLossRateAmine loss rate (kg/MSm3 gas treated). -
calculatedDemisterKFactor
private double calculatedDemisterKFactorCalculated demister K-factor at gas outlet (m/s). -
amineTemperatureAdequate
private boolean amineTemperatureAdequateWhether the amine temperature is above gas feed by the required margin.
-
-
Constructor Details
-
SimpleAmineAbsorber
Creates a simple amine absorber.- Parameters:
name- equipment name
-
SimpleAmineAbsorber
Creates a simple amine absorber with a sour gas feed stream.- Parameters:
name- equipment namesourGasStream- sour gas inlet stream
-
-
Method Details
-
setSourGasInStream
Sets the sour gas inlet stream.The sweet gas outlet stream is created as a clone of the sour gas input.
- Parameters:
stream- sour gas stream containing CO2/H2S
-
getSourGasInStream
Gets the sour gas inlet stream.- Returns:
- sour gas inlet stream
-
setLeanAmineInStream
Sets the lean amine inlet stream.The rich amine outlet stream is created as a clone of the lean amine input.
- Parameters:
stream- lean amine stream
-
getLeanAmineInStream
Gets the lean amine inlet stream.- Returns:
- lean amine inlet stream
-
getSweetGasOutStream
Gets the sweet gas outlet stream.- Returns:
- sweet gas outlet stream
-
getRichAmineOutStream
Gets the rich amine outlet stream.- Returns:
- rich amine outlet stream
-
setAmineType
Sets the amine type.- Parameters:
type- amine type identifier ("MDEA", "DEA", "MEA")
-
getAmineType
-
setAmineConcentrationWtPct
public void setAmineConcentrationWtPct(double wtPct) Sets the amine weight percent concentration in lean solvent.- Parameters:
wtPct- weight percent (typically 30-50 for MDEA)
-
getAmineConcentrationWtPct
public double getAmineConcentrationWtPct()Gets the amine weight percent concentration.- Returns:
- amine concentration in wt%
-
setCO2RemovalEfficiency
public void setCO2RemovalEfficiency(double efficiency) Sets the CO2 removal efficiency.- Parameters:
efficiency- removal efficiency (0.0-1.0)
-
getCO2RemovalEfficiency
public double getCO2RemovalEfficiency()Gets the CO2 removal efficiency.- Returns:
- removal efficiency (0.0-1.0)
-
setH2SRemovalEfficiency
public void setH2SRemovalEfficiency(double efficiency) Sets the H2S removal efficiency.- Parameters:
efficiency- removal efficiency (0.0-1.0)
-
getH2SRemovalEfficiency
public double getH2SRemovalEfficiency()Gets the H2S removal efficiency.- Returns:
- removal efficiency (0.0-1.0)
-
setFoamingDesignMargin
public void setFoamingDesignMargin(double margin) Sets the foaming design margin.- Parameters:
margin- foaming margin as fraction (default 0.20 = 20%)
-
getFoamingDesignMargin
public double getFoamingDesignMargin()Gets the foaming design margin.- Returns:
- foaming margin as fraction
-
setMaxPackingHeightPerSection
public void setMaxPackingHeightPerSection(double heightM) Sets the maximum packing height per section.- Parameters:
heightM- maximum height in metres
-
getMaxPackingHeightPerSection
public double getMaxPackingHeightPerSection()Gets the maximum packing height per section.- Returns:
- maximum height in metres
-
setApproachToEquilibrium
public void setApproachToEquilibrium(double fraction) Sets the approach to equilibrium fraction for acid gas loading.Experience demonstrates that the loading of acid gas is limited to around 70% of the equilibrium loading in the liquid phase.
- Parameters:
fraction- approach fraction (typically 0.70)
-
getApproachToEquilibrium
public double getApproachToEquilibrium()Gets the approach to equilibrium fraction.- Returns:
- approach fraction
-
setLeanAmineLoading
public void setLeanAmineLoading(double loading) Sets the lean amine loading (residual acid gas in lean amine).- Parameters:
loading- mol acid gas per mol amine in lean solvent
-
getLeanAmineLoading
public double getLeanAmineLoading()Gets the lean amine loading.- Returns:
- mol acid gas per mol amine in lean solvent
-
setAmineTemperatureMarginC
public void setAmineTemperatureMarginC(double marginC) Sets the required lean amine to gas feed temperature margin.- Parameters:
marginC- margin in degrees Celsius (typically 6 for HC service)
-
getAmineTemperatureMarginC
public double getAmineTemperatureMarginC()Gets the required lean amine to gas feed temperature margin.- Returns:
- margin in degrees Celsius
-
calcRichAmineLoading
public double calcRichAmineLoading(double equilibriumLoading) Calculates the acid gas loading on the rich amine.The acid gas pick-up is described as mole acid gas per mole amine. The practical loading is limited by the approach to equilibrium, typically 70% of the thermodynamic equilibrium value.
- Parameters:
equilibriumLoading- equilibrium loading (mol acid gas / mol amine)- Returns:
- practical rich amine loading
-
getRichAmineLoading
public double getRichAmineLoading()Gets the calculated rich amine acid gas loading.- Returns:
- acid gas loading (mol acid gas / mol amine)
-
calcRequiredCirculationRate
public double calcRequiredCirculationRate(double acidGasMolFlowMolPerSec, double amineDensityKgPerM3, double amineMolarMassKgPerMol) Calculates the minimum required amine circulation rate.Based on the amount of acid gas to be removed and the net loading capacity of the amine:
Q_amine = F_gas * y_acidgas * efficiency / (rho_amine * x_amine * (loading_rich - loading_lean))- Parameters:
acidGasMolFlowMolPerSec- molar flow of acid gas to remove (mol/s)amineDensityKgPerM3- lean amine solution density (kg/m3)amineMolarMassKgPerMol- amine molar mass (kg/mol)- Returns:
- required circulation rate in m3/h
-
getRequiredCirculationRate
public double getRequiredCirculationRate()Gets the required amine circulation rate.- Returns:
- circulation rate in m3/h
-
calcPackingHeight
public void calcPackingHeight(double htuM, double ntu) Calculates the required packing height and number of sections.The packing height is estimated from the number of transfer units and the height of a transfer unit (HTU). Multiple sections with liquid redistribution are used when the height exceeds the maximum per section (typically 5-6 m for fixed installations, 3-5 m for floating).
- Parameters:
htuM- height of a transfer unit in metres (typically 0.5-1.5 m)ntu- number of transfer units
-
getRequiredPackingHeight
public double getRequiredPackingHeight()Gets the required total packing height.- Returns:
- packing height in metres
-
getNumberOfPackingSections
public int getNumberOfPackingSections()Gets the number of packing sections needed (each with redistribution).- Returns:
- number of sections
-
calcDemisterKFactor
public double calcDemisterKFactor(double gasVelocityMs, double gasDensityKgM3, double liquidDensityKgM3) Calculates the demister K-factor for wire mesh at the gas outlet.K = Vs * sqrt(rho_gas / (rho_liquid - rho_gas))
- Parameters:
gasVelocityMs- superficial gas velocity through the demister (m/s)gasDensityKgM3- gas density (kg/m3)liquidDensityKgM3- amine liquid density (kg/m3)- Returns:
- K-factor in m/s
-
getMaxDemisterKFactor
public double getMaxDemisterKFactor()Gets the maximum allowable demister K-factor.- Returns:
- max K-factor in m/s
-
isDemisterWithinLimit
public boolean isDemisterWithinLimit()Checks if the demister K-factor is within the design limit.- Returns:
- true if demister is adequately sized
-
getCalculatedDemisterKFactor
public double getCalculatedDemisterKFactor()Gets the calculated demister K-factor.- Returns:
- K-factor in m/s
-
getGasCarryUnder
public double getGasCarryUnder()Gets the gas carry-under design value.- Returns:
- gas carry-under in Am3 gas per Am3 amine
-
setGasCarryUnder
public void setGasCarryUnder(double carryUnder) Sets the gas carry-under design value.- Parameters:
carryUnder- gas carry-under in Am3 gas per Am3 amine
-
checkAmineTemperatureMargin
public boolean checkAmineTemperatureMargin(double gasFeedTemperatureC, double amineInletTemperatureC) Checks if the amine temperature has sufficient margin above the gas feed temperature to prevent hydrocarbon condensation in the contactor.- Parameters:
gasFeedTemperatureC- gas feed temperature in degrees CelsiusamineInletTemperatureC- lean amine inlet temperature in degrees Celsius- Returns:
- true if the margin is sufficient
-
isAmineTemperatureAdequate
public boolean isAmineTemperatureAdequate()Gets whether the amine inlet temperature is adequate.- Returns:
- true if temperature margin has been verified as adequate
-
getEffectiveGasCapacityWithFoamingMargin
public double getEffectiveGasCapacityWithFoamingMargin(double designGasFlowM3s) Calculates the effective gas capacity with foaming derating.- Parameters:
designGasFlowM3s- design gas flow rate in m3/s- Returns:
- effective capacity in m3/s after foaming derating
-
getInletStreams
Returns all inlet streams connected to this equipment. Subclasses override to report their specific inlets. Used by graph builders, DEXPI export, and auto-instrumentation to discover topology withoutinstanceofchecks.- Specified by:
getInletStreamsin interfaceProcessEquipmentInterface- Overrides:
getInletStreamsin classSeparator- Returns:
- unmodifiable list of inlet streams (empty by default)
-
getOutletStreams
Returns all outlet streams produced by this equipment. Subclasses override to report their specific outlets. Used by graph builders, DEXPI export, and auto-instrumentation to discover topology withoutinstanceofchecks.- Specified by:
getOutletStreamsin interfaceProcessEquipmentInterface- Overrides:
getOutletStreamsin classSeparator- Returns:
- unmodifiable list of outlet streams (empty by default)
-
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
-
validateDesign
Validates the amine absorber design against industry best practices.- Returns:
- map of check names to pass/fail results
-
getDesignSummary
Gets a summary of the absorber design.- Returns:
- design summary string
-