MaximaLabs
Back to gallery
Blue-H2 / CCS plant, Teesside, United Kingdom

Blue hydrogen: SMR + water-gas-shift + CO2 capture — a PENG-ROBINSON process flowsheet

A low-carbon (blue) hydrogen train: steam-methane reforming converts natural gas + steam to syngas (CH₄ + H₂O <=> CO + 3H2) at 1123 K, a water-gas-shift reactor converts the CO with more steam to extra H₂ + CO₂ (CO + H₂O <=> CO₂ + H₂), the gas is cooled, the process water knocked out, and 96% of the CO₂ is captured as a pure stream for sequestration/EOR (the CCS that makes the hydrogen 'blue'). Both reactors are solved to real chemical equilibrium (partial-pressure basis) rather than a fixed conversion.

Modeling assumptions & limitations

  1. 1The reforming/shift Keq values are the representative high-temperature equilibrium magnitudes (~85% CH₄ conversion at 1123 K, near-complete CO shift at 620 K), not fitted to one plant; CO₂ capture is modeled as a component separator (a real unit uses an amine or physical-solvent loop — see the 'mixed-amine-acid-gas-treating' showcase for the rigorous MDEA/PZ chemistry, which needs its own electrolyte thermo package and so can't share this flowsheet's gas EoS); and the ~4% residual CH₄ slip in the product is real (a plant polishes it with a PSA — see 'psa-h2-purification').

186 views 1 forks

FEED
Reformer
Cool1
WGS
Cool2
Knockout
Water OUT
Co2cap
Captured CO2
BLUE H2
What this showcases
  • Rigorous PENG-ROBINSON thermodynamics, solved by the same engine every simulation runs on.
  • 4 unit operations modeled: 2× WGS, 2× Cool2, Knockout, Co2cap.
  • Focus areas: Blue hydrogen, Steam reforming, Water-gas shift, CCS, Equilibrium.
Specification
Thermodynamics
PENG-ROBINSON
Components
methane, water, co, co2, h2
Unit operations
2× WGS2× Cool2KnockoutCo2cap
Open in workspace

Opens in a new tab, loaded straight into the app — no setup.

Read the step-by-step guide
Python SDK

Reproduce 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("blue-hydrogen-smr-ccs")
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

Blue-H2 / CCS plant, Teesside, United Kingdom

Blue hydrogen with rigorous amine capture (multi-thermo)

The blue-hydrogen train done properly: steam-methane reforming and water-gas-shift run on a cubic gas EoS (Peng-Robinson), while the CO₂ capture runs on the rigorous electrolyte amine package (MDEA/piperazine 'enrtl-mdea-pz') — two thermo methods in one flowsheet, via per-node thermo_overrides. This is what legacy tools do with a property-method 'section' and what the plain 'blue-hydrogen-smr-ccs' showcase couldn't (one package per flowsheet forced a component-separator stand-in for the capture). Here the shifted syngas is contacted with a lean MDEA/PZ solvent in an absorber that removes the CO₂ by real reactive equilibrium (H₂/CO/CH₄ pass through as insoluble gases), delivering ~94% H₂ with the CO₂ driven to trace and a rich amine at a realistic ~0.7 mol CO₂/mol amine loading.

Gorgon LNG, Barrow Island, Western Australia

High-CO2 LNG with amine capture and CO2 reinjection

One 5.3 Mtpa LNG train on a reservoir whose gas is 14 mol% CO₂, where the CO₂ is not vented but compressed to dense phase and injected — 2.8 Mtpa of it, at 200 bar, which is the scale that makes this a storage project rather than a gesture. Two things make this different from every other LNG example here. First, the acid-gas removal is real chemistry, in the same flowsheet as the cryogenics: per-node thermo_overrides run the absorber, the rich/lean loop and the stripper on the 'enrtl-mdea-pz' electrolyte package (MDEA protonation + piperazine carbamate/dicarbamate speciation) while the gas train and the cold end run Peng-Robinson — the amine unit and the MCHE are not two models bolted together, they are one solve. Second, the CO₂ goes somewhere: the stripper overhead is knocked back, two-stage compressed with interstage cooling and drying, and pumped to 200 bar as a ~96 mol% dense-phase stream ready for a reinjection well, rather than leaving as a vent. The sweet gas is water-washed, dried and liquefied in the C3MR cold end to LNG at ~116 K.

Contact process (H2SO4 plant)

Sulfuric acid: catalytic SO2 oxidation (contact process)

The heart of a sulfuric-acid plant: roaster/burner gas (SO₂ in excess air) is oxidized to SO₃ over a vanadium-pentoxide catalyst bed, then the SO₃ is absorbed to make acid. The converter is a Gibbs-minimization reactor (Aspen RGibbs equivalent) that finds the SO₂ ⇌ SO₃ equilibrium from first-principles formation energies — no assumed conversion — so it captures the real design tension of the contact process: the reaction SO₂ + ½O2 → SO₃ is exothermic, so a lower bed temperature drives the equilibrium toward SO₃ (higher conversion) while a higher temperature is needed for catalyst activity. At 700 K this converts ~99% of the SO₂; raise the sensitivity temperature and watch the equilibrium conversion fall — the reason real plants use multiple catalyst beds with interstage cooling. The SO₃-rich gas then goes to an absorption tower (modeled as SO₃ capture into the acid product, leaving a spent tail gas of N₂ + excess O₂). Formation-energy source: CRC Handbook / NIST-JANAF (ΔHf°/ΔGf° for SO₂ and SO₃).

Light naphtha isomerization unit, Corpus Christi, Texas, USA

C5/C6 isomerization: why the colder catalyst wins

The light end of a gasoline pool. Straight-chain C₅/C₆ paraffins have poor octane, their branched isomers have good octane, and the reaction between them is a simple reversible exothermic rearrangement. Which means the equilibrium gets worse as the reactor gets hotter — and that single fact, not activity, is the technology choice in this unit. Run the built-in temperature sweep: this light straight-run naphtha reaches 74.9% iso-C₅ and 67.2% iso-C₆ at 400 K (the chlorided-alumina window) and only 65.3% and 57.6% at 530 K (the zeolitic window). A chlorided-alumina catalyst does not beat a zeolite by being more active; it beats it by approaching a better equilibrium. That is also why the two are not interchangeable in a revamp — a zeolitic unit cannot be pushed to alumina octane by running harder, only by running colder than its catalyst allows. Two things the flowsheet shows directly: moles are conserved exactly (one molecule in, one molecule out — 100.00000 mol/s out for 100 in, the module's own gate), and the benzene and cyclohexane in the feed pass through untouched at 4.00% and 6.00%, because a component named in no pair is not something this block pretends to convert. Only two pairs are written (n-pentane/isopentane and n-hexane/2-methylpentane) and that is deliberate: pairs are applied in sequence over a shared mole pool, so two pairs sharing one normal would let the second redistribute what the first already converted. A real C₆ network (n-hexane / 2-MP / 3-MP / 2,2-DMB / 2,3-DMB, each with its own equilibrium) is a coupled problem this block does not solve — see the.

Reference model

Batch campaign: a batch step inside a continuous flowsheet

Fine chemicals and pharma run batches, but a flowsheet is written in mol/s. These two unit ops reconcile that: they integrate the real batch physics over the batch, then report the products as the RATE that campaign delivers, so a batch step sits inside a continuous flowsheet the way a plant actually runs one. The batch reactor esterifies ethanol with acetic acid to ethyl acetate and water. It reaches 63.2% conversion and stops, and that number is not a specification — it is the equilibrium. The reaction is reversible with an equilibrium constant of 4 (the forward and reverse pre-exponentials are given as 5.0e4 and 1.25e4), and solving K = x(0.10+x)/(0.45-x)^2 = 4 for an equimolar charge carrying 10% water gives an extent of 0.285, which is 63.3% of the acid. Fischer esterification really does plateau there; a model that ran to completion would be describing a different reaction. Turnaround time costs throughput exactly as reaction time does. Two hours of reaction plus one hour of turnaround is a 3-hour cycle and 2922 batches a year, and the reactor is only reacting for 67% of the time it is occupied. That fraction is the number that decides whether you need a second reactor, and it is invisible to a steady-state model. The batch still then takes the crude and recovers the ethyl acetate — the distillate comes off essentially pure, from a pot that started at 28.5 mol% ester — on its own longer 4-hour cycle, so the two units run at genuinely different campaign rates. Bounded: the flowsheet sees each unit's CYCLE AVERAGE, not the transient. A real plant has a surge tank between these two smoothing the pulses, and neither the concentration profile during the batch nor the still's changing overhead composition is visible downstream.

Werlte, Germany

CO₂ methanation (e-fuels / power-to-gas)

The Sabatier reaction (CO₂ + 4H₂ ⇌ CH₄ + 2H₂O) converts captured CO₂ and green H₂ into synthetic natural gas at a 97% single-pass-equivalent conversion (real plants stage several adiabatic beds with intercooling to reach this; lumped into one reactor here), then a cooler and knockout drum condense the reaction water from the SNG — the e-fuels loop that closes the loop on captured carbon instead of just storing it.

Stop fighting legacy software. Build your first flowsheet in 60 seconds.