Skip to content

Commit 6cae7a8

Browse files
committed
H2S scavenger unit op
1 parent fb63875 commit 6cae7a8

File tree

3 files changed

+1322
-0
lines changed

3 files changed

+1322
-0
lines changed
Lines changed: 267 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,267 @@
1+
---
2+
title: H2S Scavenger Unit Operation
3+
description: Guide to using the H2S scavenger unit operation for modeling chemical scavenging of hydrogen sulfide from gas streams. Covers scavenger types, injection rate sizing, efficiency correlations, and cost estimation.
4+
---
5+
6+
# H2S Scavenger Unit Operation
7+
8+
The `H2SScavenger` class models chemical scavenging of hydrogen sulfide (H2S) from gas streams. Unlike absorption or amine treatment, this unit operation uses empirical correlations based on scavenger type, injection rate, and operating conditions rather than rigorous chemical reaction calculations.
9+
10+
## Overview
11+
12+
H2S scavengers are commonly used for:
13+
- Treating low-to-moderate H2S concentrations (typically < 1000 ppm)
14+
- Wellhead or field gas conditioning
15+
- Emergency or temporary H2S control
16+
- Situations where amine systems are impractical
17+
18+
The implementation is based on literature correlations from:
19+
- GPSA Engineering Data Book
20+
- Kohl & Nielsen "Gas Purification"
21+
- Arnold & Stewart "Surface Production Operations"
22+
23+
## Scavenger Types
24+
25+
Five scavenger types are supported, each with different characteristics:
26+
27+
| Type | Chemical | Stoichiometry | Base Efficiency | Typical Application |
28+
|------|----------|---------------|-----------------|---------------------|
29+
| `TRIAZINE` | MEA-Triazine | 4.5 lb/lb H2S | 95% | Most common liquid scavenger |
30+
| `GLYOXAL` | Glyoxal-based | 5.5 lb/lb H2S | 90% | Lower temperature applications |
31+
| `IRON_SPONGE` | Iron oxide on wood chips | 2.5 lb/lb H2S | 98% | Dry bed, batch operation |
32+
| `CAUSTIC` | Sodium hydroxide (NaOH) | 2.4 lb/lb H2S | 95% | High pH applications |
33+
| `LIQUID_REDOX` | LO-CAT, SulFerox | Catalytic | 99.5% | Continuous regeneration |
34+
35+
## Basic Usage
36+
37+
### Java Example
38+
39+
```java
40+
import neqsim.process.equipment.absorber.H2SScavenger;
41+
import neqsim.process.equipment.absorber.H2SScavenger.ScavengerType;
42+
import neqsim.process.equipment.stream.Stream;
43+
import neqsim.process.processmodel.ProcessSystem;
44+
import neqsim.thermo.system.SystemSrkEos;
45+
46+
// Create sour gas
47+
SystemSrkEos sourGas = new SystemSrkEos(273.15 + 40.0, 50.0);
48+
sourGas.addComponent("methane", 0.90);
49+
sourGas.addComponent("ethane", 0.04);
50+
sourGas.addComponent("H2S", 0.005); // 5000 ppm
51+
sourGas.addComponent("CO2", 0.015);
52+
sourGas.setMixingRule("classic");
53+
54+
// Create stream
55+
Stream feed = new Stream("Sour Gas", sourGas);
56+
feed.setFlowRate(100000.0, "Sm3/day");
57+
58+
// Add H2S scavenger
59+
H2SScavenger scavenger = new H2SScavenger("MEA-Triazine Injection", feed);
60+
scavenger.setScavengerType(ScavengerType.TRIAZINE);
61+
scavenger.setScavengerInjectionRate(50.0, "l/hr");
62+
scavenger.setScavengerConcentration(0.5); // 50% active ingredient
63+
64+
// Build and run process
65+
ProcessSystem process = new ProcessSystem();
66+
process.add(feed);
67+
process.add(scavenger);
68+
process.run();
69+
70+
// Get results
71+
System.out.println("Inlet H2S: " + scavenger.getInletH2SConcentration() + " ppm");
72+
System.out.println("Outlet H2S: " + scavenger.getOutletH2SConcentration() + " ppm");
73+
System.out.println("Removal Efficiency: " + scavenger.getH2SRemovalEfficiencyPercent() + "%");
74+
```
75+
76+
### Python Example (via neqsim-python)
77+
78+
```python
79+
from neqsim import jneqsim
80+
81+
# Import classes
82+
SystemSrkEos = jneqsim.thermo.system.SystemSrkEos
83+
Stream = jneqsim.process.equipment.stream.Stream
84+
H2SScavenger = jneqsim.process.equipment.absorber.H2SScavenger
85+
ScavengerType = jneqsim.process.equipment.absorber.H2SScavenger.ScavengerType
86+
ProcessSystem = jneqsim.process.processmodel.ProcessSystem
87+
88+
# Create sour gas (temperature in Kelvin, pressure in bara)
89+
sour_gas = SystemSrkEos(273.15 + 40.0, 50.0)
90+
sour_gas.addComponent("methane", 0.90)
91+
sour_gas.addComponent("ethane", 0.04)
92+
sour_gas.addComponent("H2S", 0.005) # 5000 ppm
93+
sour_gas.addComponent("CO2", 0.015)
94+
sour_gas.setMixingRule("classic")
95+
96+
# Create feed stream
97+
feed = Stream("Sour Gas", sour_gas)
98+
feed.setFlowRate(100000.0, "Sm3/day")
99+
100+
# Create scavenger unit
101+
scavenger = H2SScavenger("Triazine Injection", feed)
102+
scavenger.setScavengerType(ScavengerType.TRIAZINE)
103+
scavenger.setScavengerInjectionRate(50.0, "l/hr")
104+
scavenger.setScavengerConcentration(0.5)
105+
106+
# Run simulation
107+
process = ProcessSystem()
108+
process.add(feed)
109+
process.add(scavenger)
110+
process.run()
111+
112+
# Results
113+
print(f"Inlet H2S: {scavenger.getInletH2SConcentration():.1f} ppm")
114+
print(f"Outlet H2S: {scavenger.getOutletH2SConcentration():.1f} ppm")
115+
print(f"Efficiency: {scavenger.getH2SRemovalEfficiencyPercent():.1f}%")
116+
```
117+
118+
## Configuration Parameters
119+
120+
### Scavenger Properties
121+
122+
| Method | Description | Units |
123+
|--------|-------------|-------|
124+
| `setScavengerType(type)` | Set scavenger chemical type | `ScavengerType` enum |
125+
| `setScavengerInjectionRate(rate, unit)` | Injection rate | l/hr, gal/hr, kg/hr, lb/hr |
126+
| `setScavengerConcentration(conc)` | Active ingredient fraction | 0-1 (e.g., 0.5 = 50%) |
127+
128+
### Operating Conditions
129+
130+
| Method | Description | Default |
131+
|--------|-------------|---------|
132+
| `setContactTime(seconds)` | Gas-liquid contact time | 30 seconds |
133+
| `setMixingEfficiency(eff)` | Contactor mixing quality | 0.85 (0-1 scale) |
134+
| `setTargetH2SConcentration(ppm)` | Target outlet spec | 4.0 ppm |
135+
136+
### Design Sizing
137+
138+
```java
139+
// Calculate required injection rate for a target spec
140+
scavenger.setTargetH2SConcentration(4.0); // 4 ppm sales gas spec
141+
double requiredRate = scavenger.calculateRequiredInjectionRate(); // l/hr
142+
```
143+
144+
## Efficiency Correlation
145+
146+
The removal efficiency is calculated using an empirical correlation:
147+
148+
$$
149+
\eta = \eta_{base} \times f_{excess} \times f_{contact} \times f_{temp} \times f_{mix}
150+
$$
151+
152+
Where:
153+
154+
| Factor | Description | Formula |
155+
|--------|-------------|---------|
156+
| $\eta_{base}$ | Base efficiency per scavenger type | From literature |
157+
| $f_{excess}$ | Excess ratio correction | $1 - e^{-k \cdot R_{excess}}$ |
158+
| $f_{contact}$ | Contact time factor | $(t/30)^{0.3}$, capped at 1.2 |
159+
| $f_{temp}$ | Temperature factor | Optimum at 40°C |
160+
| $f_{mix}$ | Mixing efficiency | User input (0-1) |
161+
162+
The excess ratio $R_{excess}$ is:
163+
164+
$$
165+
R_{excess} = \frac{\text{Scavenger injected}}{\text{Stoichiometric requirement}} - 1
166+
$$
167+
168+
## Output Methods
169+
170+
### Concentration and Removal
171+
172+
| Method | Description | Units |
173+
|--------|-------------|-------|
174+
| `getInletH2SConcentration()` | Feed H2S content | ppm (molar) |
175+
| `getOutletH2SConcentration()` | Treated gas H2S | ppm (molar) |
176+
| `getH2SRemovalEfficiency()` | Removal fraction | 0-1 |
177+
| `getH2SRemovalEfficiencyPercent()` | Removal percentage | % |
178+
| `getH2SRemoved(unit)` | Mass of H2S removed | kg/hr, lb/hr, kg/day |
179+
180+
### Scavenger Consumption
181+
182+
| Method | Description | Units |
183+
|--------|-------------|-------|
184+
| `getActualScavengerConsumption()` | Scavenger consumed reacting with H2S | kg/hr |
185+
| `getScavengerExcess()` | Excess over stoichiometric | fraction |
186+
187+
### Cost Estimation
188+
189+
```java
190+
// Calculate operating cost
191+
double costPerGal = 7.0; // $/gal for triazine
192+
double hourlyCost = scavenger.calculateHourlyCost(costPerGal, "$/gal");
193+
double dailyCost = hourlyCost * 24;
194+
double annualCost = dailyCost * 365;
195+
```
196+
197+
## JSON Output
198+
199+
The `toJson()` method provides comprehensive results:
200+
201+
```json
202+
{
203+
"equipmentName": "H2S Scavenger",
204+
"scavengerType": "MEA-Triazine",
205+
"injectionRate_l_hr": 50.0,
206+
"scavengerConcentration": 0.5,
207+
"inletH2S_ppm": 5000.0,
208+
"outletH2S_ppm": 125.3,
209+
"removalEfficiencyPercent": 97.5,
210+
"h2sRemoved_kg_hr": 12.4,
211+
"scavengerConsumption_kg_hr": 55.8,
212+
"excessRatio": 1.25,
213+
"contactTime_s": 30.0,
214+
"mixingEfficiency": 0.85
215+
}
216+
```
217+
218+
## Design Guidelines
219+
220+
### Scavenger Selection
221+
222+
| Condition | Recommended Type |
223+
|-----------|------------------|
224+
| General purpose, moderate H2S | TRIAZINE |
225+
| Low temperature (< 20°C) | GLYOXAL |
226+
| Batch operation, high efficiency | IRON_SPONGE |
227+
| Very high H2S, continuous operation | LIQUID_REDOX |
228+
| High pH tolerance required | CAUSTIC |
229+
230+
### Typical Operating Ranges
231+
232+
| Parameter | Typical Range |
233+
|-----------|---------------|
234+
| H2S inlet | 10 - 10,000 ppm |
235+
| Gas flow | 1,000 - 500,000 Sm³/day |
236+
| Injection rate | 5 - 500 l/hr |
237+
| Contact time | 15 - 120 seconds |
238+
| Temperature | 10 - 60°C |
239+
| Pressure | 1 - 150 bara |
240+
241+
### Excess Ratio Guidelines
242+
243+
| Target | Recommended Excess |
244+
|--------|-------------------|
245+
| Normal operation | 20-50% excess |
246+
| High reliability required | 50-100% excess |
247+
| Upset conditions | 100-200% excess |
248+
249+
## Limitations
250+
251+
1. **Correlation-based**: Results are estimates based on empirical correlations, not rigorous reaction kinetics
252+
2. **Single-phase assumption**: Assumes gas-phase H2S removal; does not model aqueous phase reactions in detail
253+
3. **No regeneration**: Does not model scavenger regeneration (relevant for liquid redox systems)
254+
4. **Temperature range**: Correlations are most accurate for 20-60°C range
255+
256+
## References
257+
258+
1. GPSA Engineering Data Book, 14th Edition, Section 21
259+
2. Kohl, A.L. & Nielsen, R.B., "Gas Purification", 5th Edition, Gulf Publishing
260+
3. Arnold, K. & Stewart, M., "Surface Production Operations", Vol. 2, Gulf Publishing
261+
4. Nagl, G.J., "Controlling H2S Emissions", Chemical Engineering, 1997
262+
263+
## See Also
264+
265+
- [H2S Distribution Modeling Guide](../thermo/H2S_distribution_guide.md)
266+
- [Simple Absorber](SimpleAbsorber.md)
267+
- [Gas Sweetening Overview](gas_sweetening_overview.md)

0 commit comments

Comments
 (0)