Class H2SScavenger
java.lang.Object
neqsim.util.NamedBaseClass
neqsim.process.SimulationBaseClass
neqsim.process.equipment.ProcessEquipmentBaseClass
neqsim.process.equipment.TwoPortEquipment
neqsim.process.equipment.absorber.H2SScavenger
- All Implemented Interfaces:
Serializable, Runnable, ProcessEquipmentInterface, TwoPortInterface, SimulationInterface, NamedInterface
H2S Scavenger unit operation for removing hydrogen sulfide from gas streams.
This unit operation models H2S removal using chemical scavengers without rigorous chemical reaction calculations. Instead, it uses empirical correlations based on scavenger type, injection rate, and operating conditions.
Supported scavenger types and their characteristics:
| Type | Active Component | Stoichiometry (lb scavenger/lb H2S) | Typical Efficiency |
|---|---|---|---|
| TRIAZINE | MEA-triazine (1,3,5-tri(2-hydroxyethyl)-hexahydro-s-triazine) | 3.5-6.0 | 85-99% |
| GLYOXAL | Glyoxal-based | 4.0-7.0 | 80-95% |
| IRON_SPONGE | Iron oxide (Fe2O3) on wood chips | N/A (solid bed) | 95-99% |
| CAUSTIC | Sodium hydroxide (NaOH) | 2.4 (stoichiometric) | 90-99% |
| LIQUID_REDOX | Iron chelate solution (LO-CAT, SulFerox) | N/A (catalytic) | 99+% |
References:
- GPSA Engineering Data Book, 14th Edition, Section 21 - Hydrocarbon Treating
- Kohl, A.L. and Nielsen, R.B., "Gas Purification", 5th Edition, Gulf Publishing
- SPE-141434-MS: "H2S Scavenger Performance in Bakken Crude"
- Arnold, K. and Stewart, M., "Surface Production Operations", Vol. 2
- Version:
- 1.0
- Author:
- ESOL
- See Also:
-
Nested Class Summary
Nested ClassesModifier and TypeClassDescriptionstatic classResponse class for JSON serialization.static enumEnum representing types of H2S scavengers available. -
Field Summary
FieldsModifier and TypeFieldDescriptionprivate doubleprivate doubleprivate doubleprivate doubleprivate Stringprivate doubleprivate doubleprivate static final doubleprivate doubleprivate doubleprivate doubleprivate doubleprivate H2SScavenger.ScavengerTypeprivate static final longSerialization version UID.private doubleFields inherited from class TwoPortEquipment
inStream, outStreamFields inherited from class ProcessEquipmentBaseClass
conditionAnalysisMessage, energyStream, hasController, isSolved, properties, reportFields inherited from class SimulationBaseClass
calcIdentifier, calculateSteadyState, timeFields inherited from class NamedBaseClass
name -
Constructor Summary
ConstructorsConstructorDescriptionH2SScavenger(String name) Constructor for H2SScavenger.H2SScavenger(String name, StreamInterface inStream) Constructor for H2SScavenger with inlet stream. -
Method Summary
Modifier and TypeMethodDescriptiondoublecalculateHourlyCost(double costPerUnit, String unit) Calculate scavenger cost.private doublecalculateRemovalEfficiency(double inletH2SMassFlow, double temperature, double pressure) Calculate H2S removal efficiency based on scavenger type, injection rate, and conditions.doubleCalculate required scavenger injection rate to achieve target H2S outlet.doubleGet actual scavenger consumption rate.doubleGet contact time.doubleGet the calculated H2S removal efficiency.doubleGet the H2S removal efficiency as percentage.doublegetH2SRemoved(String unit) Get the mass of H2S removed.doubleGet inlet H2S concentration.private doubleGet kinetic constant for efficiency correlation based on scavenger type.doubleGet mixing efficiency.doubleGet outlet H2S concentration.Get summary report of scavenger performance.doubleGet scavenger concentration.doubleGet scavenger excess over stoichiometric requirement.doubleGet scavenger injection rate in specified unit.private doubleConvert injection rate to kg/hr.Get the scavenger type.doubleGet target H2S outlet concentration.voidIn this method all thermodynamic and unit operations will be calculated in a steady state calculation.voidsetContactTime(double seconds) Set contact time (residence time).voidsetMixingEfficiency(double efficiency) Set mixing efficiency of the contactor.voidsetScavengerConcentration(double concentration) Set the active ingredient concentration in the scavenger product.voidsetScavengerInjectionRate(double rate, String unit) Set scavenger injection rate.voidSet the scavenger type.voidsetTargetH2SConcentration(double ppm) Set target H2S outlet concentration.toJson()Serializes the Process Equipment along with its state to a JSON string.Methods inherited from class TwoPortEquipment
getInletPressure, getInletStream, getInletTemperature, getMassBalance, getOutletPressure, getOutletStream, getOutletTemperature, setInletPressure, setInletStream, setInletTemperature, setOutletPressure, setOutletPressure, setOutletStream, setOutletTemperature, setOutletTemperature, toJson, validateSetupMethods inherited from class ProcessEquipmentBaseClass
copy, displayResult, equals, getConditionAnalysisMessage, getController, getEffectiveCapacityFactor, getEnergyStream, getEntropyProduction, getExergyChange, getFailureMode, getMassBalance, getMechanicalDesign, getMinimumFlow, getPressure, getPressure, getProperty, getReport_json, getResultTable, getSpecification, getTemperature, getTemperature, getThermoSystem, hashCode, initMechanicalDesign, isActive, isActive, isCapacityAnalysisEnabled, isFailed, isSetEnergyStream, reportResults, restoreFromFailure, run_step, runConditionAnalysis, setCapacityAnalysisEnabled, setController, setEnergyStream, setEnergyStream, setFailureMode, setFlowValveController, setMinimumFlow, setPressure, setRegulatorOutSignal, setSpecification, setTemperature, simulateDegradedOperation, simulateTrip, solvedMethods inherited from class SimulationBaseClass
getCalculateSteadyState, getCalculationIdentifier, getTime, increaseTime, isRunInSteps, setCalculateSteadyState, setCalculationIdentifier, setRunInSteps, setTimeMethods inherited from class NamedBaseClass
getName, getTagName, setName, setTagNameMethods inherited from class Object
clone, finalize, getClass, notify, notifyAll, toString, wait, wait, waitMethods inherited from interface NamedInterface
getName, getTagName, setName, setTagNameMethods inherited from interface ProcessEquipmentInterface
getCapacityDuty, getCapacityMax, getExergyChange, getFluid, getOperatingEnvelopeViolation, getRestCapacity, getSimulationValidationErrors, isSimulationValid, isWithinOperatingEnvelope, needRecalculationMethods inherited from interface SimulationInterface
getCalculateSteadyState, getCalculationIdentifier, getTime, increaseTime, isRunInSteps, run, run_step, runTransient, runTransient, setCalculateSteadyState, setCalculationIdentifier, setRunInSteps, setTimeMethods inherited from interface TwoPortInterface
getInStream, getOutStream, setOutPressure, setOutPressure, setOutTemperature, setOutTemperature
-
Field Details
-
serialVersionUID
private static final long serialVersionUIDSerialization version UID.- See Also:
-
scavengerType
-
scavengerInjectionRate
private double scavengerInjectionRate -
injectionRateUnit
-
scavengerConcentration
private double scavengerConcentration -
targetH2SConcentration
private double targetH2SConcentration -
contactTime
private double contactTime -
mixingEfficiency
private double mixingEfficiency -
h2sRemovalEfficiency
private double h2sRemovalEfficiency -
h2sRemoved
private double h2sRemoved -
inletH2SConcentration
private double inletH2SConcentration -
outletH2SConcentration
private double outletH2SConcentration -
actualScavengerConsumption
private double actualScavengerConsumption -
scavengerExcess
private double scavengerExcess -
MW_H2S
private static final double MW_H2S- See Also:
-
-
Constructor Details
-
H2SScavenger
-
H2SScavenger
Constructor for H2SScavenger with inlet stream.- Parameters:
name- equipment nameinStream- inlet gas stream
-
-
Method Details
-
setScavengerType
Set the scavenger type.- Parameters:
type- ScavengerType enum value
-
getScavengerType
Get the scavenger type.- Returns:
- current ScavengerType
-
setScavengerInjectionRate
Set scavenger injection rate.- Parameters:
rate- injection rate valueunit- unit string ("l/hr", "gal/hr", "kg/hr", "lb/hr")
-
getScavengerInjectionRate
Get scavenger injection rate in specified unit.- Parameters:
unit- desired unit ("l/hr", "gal/hr", "kg/hr", "lb/hr")- Returns:
- injection rate in specified unit
-
getScavengerInjectionRateKgPerHour
private double getScavengerInjectionRateKgPerHour()Convert injection rate to kg/hr.- Returns:
- injection rate in kg/hr
-
setScavengerConcentration
public void setScavengerConcentration(double concentration) Set the active ingredient concentration in the scavenger product.- Parameters:
concentration- concentration as mass fraction (0-1), e.g., 0.5 for 50% active
-
getScavengerConcentration
public double getScavengerConcentration()Get scavenger concentration.- Returns:
- concentration as mass fraction
-
setTargetH2SConcentration
public void setTargetH2SConcentration(double ppm) Set target H2S outlet concentration.- Parameters:
ppm- target H2S in ppm (molar)
-
getTargetH2SConcentration
public double getTargetH2SConcentration()Get target H2S outlet concentration.- Returns:
- target in ppm
-
setContactTime
public void setContactTime(double seconds) Set contact time (residence time).- Parameters:
seconds- contact time in seconds
-
getContactTime
public double getContactTime()Get contact time.- Returns:
- contact time in seconds
-
setMixingEfficiency
public void setMixingEfficiency(double efficiency) Set mixing efficiency of the contactor.- Parameters:
efficiency- efficiency as fraction (0-1)
-
getMixingEfficiency
public double getMixingEfficiency()Get mixing efficiency.- Returns:
- mixing efficiency as fraction
-
calculateRemovalEfficiency
private double calculateRemovalEfficiency(double inletH2SMassFlow, double temperature, double pressure) Calculate H2S removal efficiency based on scavenger type, injection rate, and conditions.The efficiency correlation is based on empirical data from literature:
- Base efficiency depends on scavenger type
- Efficiency increases with excess scavenger (diminishing returns)
- Contact time affects mass transfer
- Temperature affects reaction kinetics
- Parameters:
inletH2SMassFlow- H2S mass flow in inlet stream (kg/hr)temperature- operating temperature (K)pressure- operating pressure (bara)- Returns:
- removal efficiency as fraction (0-1)
-
getKineticConstant
private double getKineticConstant()Get kinetic constant for efficiency correlation based on scavenger type.- Returns:
- kinetic constant k
-
calculateRequiredInjectionRate
public double calculateRequiredInjectionRate()Calculate required scavenger injection rate to achieve target H2S outlet.- Returns:
- required injection rate in current unit
-
run
In this method all thermodynamic and unit operations will be calculated in a steady state calculation.
- Parameters:
id- UUID
-
getH2SRemovalEfficiency
public double getH2SRemovalEfficiency()Get the calculated H2S removal efficiency.- Returns:
- removal efficiency as fraction (0-1)
-
getH2SRemovalEfficiencyPercent
public double getH2SRemovalEfficiencyPercent()Get the H2S removal efficiency as percentage.- Returns:
- removal efficiency as percentage
-
getH2SRemoved
Get the mass of H2S removed.- Parameters:
unit- mass flow unit ("kg/hr", "lb/hr", "kg/day")- Returns:
- H2S removed in specified unit
-
getInletH2SConcentration
public double getInletH2SConcentration()Get inlet H2S concentration.- Returns:
- inlet H2S in ppm (molar)
-
getOutletH2SConcentration
public double getOutletH2SConcentration()Get outlet H2S concentration.- Returns:
- outlet H2S in ppm (molar)
-
getActualScavengerConsumption
Get actual scavenger consumption rate.- Parameters:
unit- mass flow unit ("kg/hr", "lb/hr")- Returns:
- consumption rate in specified unit
-
getScavengerExcess
public double getScavengerExcess()Get scavenger excess over stoichiometric requirement.- Returns:
- excess as fraction (0 = stoichiometric, 1 = 100% excess)
-
calculateHourlyCost
Calculate scavenger cost.- Parameters:
costPerUnit- cost per unit of scavengerunit- cost unit basis ("$/L", "$/gal", "$/kg", "$/lb")- Returns:
- hourly cost in same currency
-
getPerformanceSummary
Get summary report of scavenger performance.- Returns:
- formatted string with performance summary
-
toJson
Serializes the Process Equipment along with its state to a JSON string.
- Specified by:
toJsonin interfaceProcessEquipmentInterface- Overrides:
toJsonin classTwoPortEquipment- Returns:
- json string.
-