MaximaLabs
Simulation gallery

High-CO2 LNG with amine capture and CO2 reinjection

LNGCCSCO2 injectionAmine treatingMDEAPiperazineMulti-thermoCryogenics
See it live
Open this exact flowsheet in the workspace, already solved — tweak a spec and re-run.
Launch interactive model

One 5.3 Mtpa LNG train on a reservoir whose gas is 14 mol% CO2, where the CO2 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 CO2 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. Honesty notes: (1) the absorber drives CO2 to exactly zero in the treated gas, and that is a model artifact, not a design result — an equilibrium Kremser absorber against a reactive solvent has no mass-transfer resistance to leave a slip behind, so this flowsheet cannot tell you what the AGRU outlet spec should be. That number has to come from the freeze-out limit instead: analysis/co2_freezeout.py (and the 'CO2 freeze-out' analysis tab) puts it at a few hundred ppm at 116 K, which is why the real spec is <=50 ppmv with margin, and why this field's gas would plug the MCHE with dry ice ~1000x over if it were fed raw. Use the rate-based 'rate-based-amine-absorber' showcase for a contactor that does resolve a slip. (2) The lean-amine loop is left OPEN (the regenerated solvent is a product, not recycled onto the absorber) with makeup steam as the reboiler surrogate — the same simplification 'mixed-amine-acid-gas-treating' discloses. (3) Streams crossing the PR<->eNRTL boundary are rebased onto the shared 298.15 K ideal-gas datum, so the material balance and the datum are consistent, but the Kremser absorber attempts no rigorous energy balance of its own. (4) The reservoir CO2 content is representative of a high-CO2 field; the injection well itself is out of scope — this train delivers CO2 at wellhead conditions, it does not model the reservoir. (5) Single-level precool and one MCHE bundle; refrigerant charges are set via tear_specs.

The flowsheet

The solved topology — every unit op's real duty, conversion, or split, read straight off a genuine converged solve.

Field GAS
LEAN
liq
gas
gas
rich
ABS
Richhx
Letdown
Stripvap
liq
gas
gas
rich
Strip
LEAN Regen
ACID KO
KO Water
CO2 K1
CO2 IC1
CO2 DRY
CO2 DRY Water
CO2 K2
CO2 IC2
CO2 PUMP
CO2 Injection
Amine WASH
WASH LIQ
1
2
3
4
5
6
1
2
3
4
5
6
E1
K1
Cond1
JT1
1
2
3
4
5
6
1
2
3
4
5
6
MCHE
K2
AC
JT2
JTN
DRUM
LNG
BOG

The stream table

Every stream's flow, temperature, pressure, and composition — real converged numbers, not placeholders.

See it live
Open this exact flowsheet in the workspace, already solved — tweak a spec and re-run.
Launch interactive model

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