Refinery sour water stripper (NH₃ + H₂S) — a SOUR-WATER process flowsheet
The standard refinery sour water stripper: sour water carrying ammonia and hydrogen sulfide is steam-stripped in a 10-stage column, sending both overhead as sour gas and returning stripped water fit for reuse. Runs on the new sour-water weak-electrolyte package, which is what makes the result meaningful — ammonia and H₂S suppress each other's volatility (ammonia raises pH and holds sulfide down as HS⁻; H₂S lowers pH and holds ammonia down as NH₄⁺), and heat reverses both, which is precisely why a stripper works. The two removals come out asymmetric for the real reason: H₂S strips essentially completely while ammonia, five orders of magnitude more soluble, is the duty that sets the steam rate.
Modeling assumptions & limitations
- 1This is the NH₃/H₂S system — real sour water often also carries CO₂, which competes for the ammonia and is out of scope for this package.
256 views 0 forks
- Rigorous SOUR-WATER thermodynamics, solved by the same engine every simulation runs on.
- 1 unit operations modeled: SWS.
- Focus areas: Sour water, Steam stripping, Weak electrolyte, Ammonia, H2S.
- Thermodynamics
- SOUR-WATER
- Components
- ammonia, h2s, water
- Unit operations
- SWS
Opens in a new tab, loaded straight into the app — no setup.
Read the step-by-step guideReproduce this exact result from Python — the real client.get_example() → run_and_wait() path, not a mockup.
from flowsim.sdk import FlowSimClient
client = FlowSimClient()
example = client.get_example("sour-water-stripper")
sim = client.create_simulation(example["title"], example["flowsheet"])
result = client.run_and_wait(sim["id"])
print(result["status"]) # "converged"
streams = client.streams(sim["id"])Related models
Ammonia refrigeration cycle
A single-stage vapor-compression refrigeration loop using ammonia — the classic industrial (rather than HFC) refrigerant — condensed to subcooled liquid, throttled through a valve, and superheated back to vapor in the evaporator before recycling (inspired by ChemSep's Refrigeration_Ammonia-30C reference case).
Ammonia refrigeration (−30 °C)
A closed single-stage ammonia vapor-compression cycle serving a −30 °C load: compressor → ambient condenser → JT valve → evaporator. The charge is set via tear_specs; metrics give duty and work (COP ≈ 2). From the ChemSep casebook (Refrigeration_Ammonia-30C).
Ammonia-water neutralization with sulfuric acid to ammonium sulfate
A 2 wt% ammonia water (a scrubber or coke-oven bleed) is neutralized with 20 wt% sulfuric acid to pH 6.0. The neutralizer solves the acid dose (drawn from the acid supply, the rest returned) on the aqueous speciation (NH4+ pKa 9.25), so at pH 6 nearly every ammonia molecule is protonated and the dose lands at half a mole of sulfuric acid per mole of ammonia: the stream leaves as ammonium sulfate solution, reported from the speciation. The heat of neutralization is the ammonium dissociation enthalpy, 52.2 kJ per mole of ammonia protonated (110 kW here), and the outlet is adiabatic, so the liquor warms by about 12 K.
Refinery acid-gas treating: MDEA/PZ absorber-stripper
Simultaneous CO₂ AND H₂S removal from a sour natural-gas / refinery off-gas stream by a piperazine-promoted MDEA solvent — the mixed-amine chemistry legacy tools reach for heavy rate-based/OLI add-ons to model. A high-pressure absorber contacts the sour gas with lean MDEA/PZ solvent (both acid gases absorb into the amine); the rich amine is heated and let down to a low-pressure steam stripper that drives the acid gases back off as a concentrated acid-gas stream and regenerates the lean solvent. Runs on the new 'enrtl-mdea-pz' electrolyte package: a generalized speciation (MDEA protonation + piperazine carbamate/dicarbamate + CO₂/HCO₃-/CO₃-- + H₂S/HS- + water) with Davies activity — it correctly reproduces piperazine's promotion (the blend holds more CO₂ at a given partial pressure than MDEA alone).
Quench-converter ammonia synthesis loop
The multi-bed quench converter BASF first installed in 1942, which displaced the tube-cooled converters before it, running inside a complete 200 bar synthesis loop. Ammonia synthesis is equilibrium-limited and exothermic, so the catalyst wants to run hot for rate and cool for equilibrium, and no single adiabatic bed can do both. The quench converter's answer is mechanical: split the loop gas, send 55% through the interchanger into bed 1 and inject the other 45% as cold shots between the beds, so each bed heats up adiabatically and each quench pulls it back down. What it computes: the sawtooth, 673 → 766 K in bed 1, quenched to 689 K and out at 760 K, quenched to 712 K and out at 766 K; 12.5 mol% ammonia at the converter exit, in the 12-18% band real quench converters deliver, at 20.9% nitrogen conversion per pass; 44.6 mol/s of 97.8% liquid ammonia off the 250 K separator; and argon and methane held at 3.3% and 4.2% in the loop by a 3% purge, with the recycle closed by a Wegstein tear. The acid test is the counterfactual: one adiabatic bed producing that same 12.51 mol% ammonia exit ends at 834.7 K — 562 C, past the sintering limit of promoted-magnetite catalyst — while the three-bed quench converter delivers the identical duty with a 766 K (493 C) peak.
High-recycle ammonia loop (equation-oriented)
A tight, high-recycle ammonia synthesis loop built to show why a modern simulator solves recycles the way legacy sequential-modular tools can't. Fresh syngas (N₂ + 3H2, with argon inert) mixes with a large recycle, reacts to only ~10% per pass, chills so ammonia condenses out as product, and the unreacted gas recycles — a recycle-to-fresh ratio of ~5:1, with argon building up until a small purge balances it. Run this in Equation-Oriented mode (Solver menu > Mode > Equation-oriented). In the default sequential-modular mode the solver tears the recycle and needs tens of passes to close the loop (about 56 on Wegstein alone; the default hands the loop to Broyden once Wegstein starts bouncing); the equation-oriented solver instead makes every inter-unit stream a global unknown and closes all ~35 of them in one simultaneous Newton solve — the same simultaneous approach AVEVA SimCentral / gPROMS / IDAES use, and the reason tightly coupled recycles that crawl (or stall) in sequential-modular converge cleanly here.