Steam utility island: deaerator, boiler, desuperheater — a STEAM process flowsheet
The three units that stand between raw makeup water and steam a turbine can accept, on the IAPWS steam tables. The deaerator takes 500 mol/s of 300 K makeup and 40 mol/s of LP steam and returns 540 mol/s of saturated liquid at 5 bar (425 K) for 3.23 MW. It is a direct-contact heater, so the heating steam does not leave — it condenses into the feedwater and shows up in the outlet flow. That is the point of the unit: the reason a plant heats feedwater by injecting steam into it rather than through a tube bundle is that boiling the water is what strips the dissolved oxygen out of it. The boiler then absorbs 26.6 MW into the water and fires 31.3 MW to do it — the gap is the stack loss, and it is the number a fuel bill is written against, not the absorbed duty. The desuperheater takes that 720 K steam down to a 660 K target by spraying 25.96 mol/s of water into it. The spray rate is SOLVED, not specified: you state the temperature you want and the unit finds the water that achieves it, which is how an attemperator is actually specified. Note the outlet is 566 mol/s, more than entered it, the spray water becomes steam. Bounded: the deaerator is an equilibrium model, so it reports no rate-based O₂/CO₂ stripping (there is no residual-oxygen ppb number here, which is what a real deaerator is guaranteed on), and the desuperheater assumes the spray fully evaporates.
192 views 1 forks
- Rigorous STEAM thermodynamics, solved by the same engine every simulation runs on.
- 3 unit operations modeled: DA, Boiler, DSH.
- Focus areas: Steam, Utilities, Deaerator, Boiler, Desuperheater, IAPWS.
- Thermodynamics
- STEAM
- Components
- water
- Unit operations
- DABoilerDSH
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("steam-utility-island")
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
Rankine steam power cycle (pump -> boiler -> turbine -> condenser)
The classic steam power cycle behind most of the world's electricity, on the rigorous IAPWS-97 steam properties. Feedwater is pressurized by a boiler-feed pump, fired to superheated steam in the boiler, expanded through a steam turbine to make shaft power, then condensed back to water in the surface condenser. The four Rankine components appear in order, and the numbers are the real thermodynamic ones: at 60 bar / 500 degC steam expanding to a 0.1-bar condenser vacuum the turbine makes ~18 MW of shaft work at 85% isentropic efficiency, the exhaust leaves the turbine as wet steam (~92% quality, the classic low-pressure blade-erosion concern), the condenser rejects ~40 MW to cooling water, and the feed pump costs only ~0.15 MW (the small back-work ratio that makes the Rankine cycle practical, since pressurizing a liquid is nearly free next to expanding a gas). Cycle thermal efficiency comes out ~28%. Every property (the superheat enthalpy, the isentropic expansion endpoint, the exhaust steam quality) is the real IAPWS steam-table value, not a correlation.
Geothermal flash-steam power plant (~90 MW)
A single-flash geothermal power plant on the IAPWS steam tables. A liquid-dominated geothermal well arrives at 240 °C / 35 bar and flashes across a separator down to 8 bar: about 15% of the brine becomes saturated steam and the rest is reinjected. The steam drives a condensing turbine to a 10 kPa vacuum (82% isentropic, exhaust quality ~0.9 — a real wet-steam expansion), a water-cooled condenser drops it to ~46 °C condensate, and a hotwell pump lifts it for reinjection alongside the brine. It converges to 89.9 MW of turbine shaft power. The separator (flash) pressure is the plant's key design knob: the defaultSensitivity sweeps it, trading a larger steam fraction at low pressure against higher steam enthalpy at high pressure — the flash-pressure optimization every single-flash geothermal plant makes. It runs on the rigorous IAPWS-95 water properties (steam package), and the turbine tracks steam quality into the two-phase dome rather than assuming a dry expansion.
Cooling-water tower (Merkel sizing)
A process cooling-water utility: a hot ethanol-water process stream is cooled against cooling water in a counter-current exchanger, and the warmed cooling water is then sent to an evaporative cooling tower that rejects the picked-up heat to ambient air and returns it cold. The tower reports the evaporation + blowdown makeup water and — because the wet-bulb temperature and the water-to-air ratio L/G are given — the Merkel tower characteristic KaV/L a designer sizes the fill to, plus the range (hot→cold water drop, 10 K here) and the approach to the wet-bulb (5 K). Rate a fill against that demand with the standalone Cooling tower (Merkel) analysis tool. Honest scope: the cooling-water side is shown open (supply → exchanger → tower → return); a real plant recycles the return with makeup, and the Merkel model carries Le=1 assumptions.
Phosphoric acid concentration: steam evaporator baseline (29 → 54% P2O5)
The conventional wet-process step, at the scale of one Jorf Lasfar concentration line: 138 t/h of 29% P₂O₅ acid, heated by 3.5 bar LP steam in a graphite exchanger and flashed under vacuum (0.12 bar) to 54% P₂O₅, evaporating 64.0 t/h of water. The steam feed is tuned so the concentrate lands on 54.0 wt% P₂O₅ (the user variable p2o5_wt_product), which takes 73.6 t/h of steam — 1.84 t steam per tonne of P₂O₅, 44.5 MW of condensing duty. That is the single-effect ideal; the published plant benchmark of ~2.8 t/t carries exchanger approach, losses and off-design operation on top. The point of the number here is what it costs the site: at Jorf Lasfar this steam is a co-product of the exothermic sulfuric-acid plants, which is the fact any electric alternative has to beat. Compare the two sibling examples, phosphoric-acid-concentration-microwave and -hybrid. Model scope, stated up front. The acid runs on the brine package, which carries phosphoric acid as a non-volatile molecular solute with its CRC liquid heat capacity (145 J/mol/K) — the streams show the real H₃PO₄/water compositions and the acid's sensible heat is in the balance — and a water activity fitted to measured data: binary boiling points (Li 2017, NIST TRC ThermoML Archive) and 20 °C vapour pressures up to 85 wt% (Kirk-Othmer), with a held-out error of 2% in water activity. The boiling-point elevation is therefore the fitted one, 23.5 K at 54% P₂O₅ and 0.12 bar (the ideal, Raoult's-law activity this replaced gave 9 K). Checked against a boiling point the fit never saw, it puts 85 wt% acid at 164 °C at atmospheric pressure against a measured 158 °C. Above 18 mol% acid the temperature dependence rests on one coefficient and that single check, so read the concentrate temperature to within a few kelvin. No heat of dilution is carried (about 1.5% of the latent duty at 54% P₂O₅). The 320 K feed stands in for a hotter plant feed. The acid heated at 1 atm here partly boils in the exchanger (the model's fitted boiling point at 1 atm); the real acid is kept liquid under static head and flashes in the chamber.
Phosphoric acid concentration: microwave-then-steam hybrid (29 → 42 → 54% P2O5)
The transition path the concept proposes: microwaves take the acid from 29 to 42% P₂O₅ in a first vacuum flash (29.6 MW absorbed), a pump returns the 42% acid to atmospheric pressure, and the existing steam exchanger and second flash finish it to 54.0 wt% — 24.2 t/h of steam (0.61 t/t) plus 1,140 kWh of electricity per tonne of P₂O₅ at 65% magnetron efficiency, the same 64.0 t/h of water removed in total. The split is not free: two-thirds of the latent duty moved from a co-product steam to purchased electricity, and nothing about the second stage got easier. What a hybrid does buy is a pilot that can be run beside the existing evaporator without betting the line on it, and the freedom to put the microwave stage where it has a case — the viscous, fouling end — rather than on the dilute feed. Compare phosphoric-acid-concentration-steam and -microwave. Model scope, stated up front. The acid runs on the brine package, which carries phosphoric acid as a non-volatile molecular solute with its CRC liquid heat capacity (145 J/mol/K) — the streams show the real H₃PO₄/water compositions and the acid's sensible heat is in the balance — and a water activity fitted to measured data: binary boiling points (Li 2017, NIST TRC ThermoML Archive) and 20 °C vapour pressures up to 85 wt% (Kirk-Othmer), with a held-out error of 2% in water activity. The boiling-point elevation is therefore the fitted one, 23.5 K at 54% P₂O₅ and 0.12 bar (the ideal, Raoult's-law activity this replaced gave 9 K). Checked against a boiling point the fit never saw, it puts 85 wt% acid at 164 °C at atmospheric pressure against a measured 158 °C. Above 18 mol% acid the temperature dependence rests on one coefficient and that single check, so read the concentrate temperature to within a few kelvin. No heat of dilution is carried (about 1.5% of the latent duty at 54% P₂O₅). The 320 K feed stands in for a hotter plant feed.
Steam-jet vacuum ejector (thermocompressor)
A steam-jet ejector holds vacuum on a vacuum-distillation overhead with no moving parts: high-pressure motive steam (16 bar) expands through a nozzle to a supersonic jet (~1100 m/s) that entrains the low-pressure suction vapor (0.1 bar), and the combined flow is recompressed in a diffuser to the 0.25 bar discharge. It reports the mass entrainment ratio ω = suction/motive (the ejector's defining performance number), the maximum ω it can sustain at this discharge pressure, and whether the duty is feasible (ω below ω_max, with margin here). Honest scope: geometry-free 1-D thermocompressor model (ideal-gas γ, lumped nozzle/mixing/diffuser efficiencies, no normal-shock/area detail).