Waste solvent recovery — extractive distillation (IPA/water) — a NRTL process flowsheet
A pharmaceutical waste isopropanol/water stream (near the ~68 mol% IPA azeotrope) is fed to an extractive column with a high-boiling entrainer feeding in a few stages above it; a second column strips the entrainer back out of the bottoms for reuse.
Modeling assumptions & limitations
- 1The brief's original entrainer, DMSO, doesn't have a pinned NRTL isopropanol binary in MaximaLabs's databank (only DMSO-water is pinned), so this uses sulfolane instead — a real, industrially-standard extractive/physical solvent with a genuine pinned NRTL isopropanol binary. At this stage count and solvent-to-feed ratio the entrainer effect is real but modest (overhead reaches ~82 mol% IPA, up from the 68% feed) — a sharper, near-anhydrous cut would need more stages/reflux or a higher solvent ratio than what this session verified converges reliably.
349 views 0 forks
- Rigorous NRTL thermodynamics, solved by the same engine every simulation runs on.
- 1 unit operations modeled: 2× Stripper.
- Focus areas: Extractive distillation, Solvent recovery, Azeotrope, NRTL.
- Thermodynamics
- NRTL
- Components
- isopropanol, water, sulfolane
- Unit operations
- 2× Stripper
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("extractive-distillation-ipa-water")
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
Anhydrous ethanol — extractive distillation past the azeotrope (NRTL)
Producing fuel-grade anhydrous ethanol from a near-azeotropic ethanol/water feed using ethylene glycol as the extractive entrainer. Ordinary distillation is capped at the 89.4 mol% ethanol azeotrope; the high-boiling glycol raises water's relative volatility so ethanol crosses its azeotrope and leaves the extractive column essentially pure, while a vacuum solvent-recovery column strips the water and recycles the glycol. This is modeled with the NRTL activity package on pinned DECHEMA binaries for every pair (ethanol/water, ethanol/glycol, water/glycol) — the non-ideal, azeotrope-crossing VLE a cubic equation of state structurally cannot reproduce (Peng-Robinson stays trapped at the ~89% azeotrope).
Extractive distillation (ethanol/water with ethylene glycol)
Near-azeotropic ethanol/water (85 mol% ethanol) can't be pushed past the 89 mol% azeotrope by ordinary distillation. A heavy, high-boiling entrainer (ethylene glycol) fed near the top of the column raises water's relative volatility enough to pull overhead ethanol past the azeotrope in one pass; a second column then strips water overhead from the glycol, regenerating it as the bottoms product. The classic extractive-distillation textbook case (Luyben, Ind. Eng. Chem. Res. 2006, 45, 4625).
n-Hexane / 1-butanol column with no fitted binary (UNIFAC)
A binary the databank has no regressed NRTL parameters for, so the column runs on predictive original UNIFAC from the two molecules' groups alone: 50/50 n-hexane and 1-butanol, 20 stages, reflux 2, 45% distillate. UNIFAC predicts the minimum-boiling azeotrope at 97 mol% hexane and 341.7 K, and the column lands its distillate exactly there (96.7%) with an 88% butanol bottoms — the azeotrope, not the stage count, is what caps the overhead purity, and that is a prediction from group contributions with no data on this pair behind it. Read it as a screening result: original UNIFAC's mean error against fitted binaries in this tree is 0.08 in ln gamma, and an alkane/alcohol pair is in its well-behaved range.
Toluene removal from 1-butanol solvent (modified UNIFAC, Dortmund)
A recovered 1-butanol solvent contaminated with 5 mol% toluene, redistilled to send the toluene overhead: 24 stages, reflux 3, an 8% distillate. There is no fitted toluene/1-butanol binary, so this runs on modified UNIFAC (Dortmund) — the variant that cuts infinite-dilution error from 42% to 16% in this tree, and a dilute contaminant in a solvent is exactly the infinite-dilution regime. The toluene/butanol azeotrope at 68 mol% toluene caps the overhead: it comes out at 39% toluene rather than pure, with 2.1% left in the bottoms — 62% of the contaminant removed per pass. The two variants agree on the azeotrope (67.6% against original UNIFAC's 67.7%) and differ where the toluene is dilute: original UNIFAC removes 67% on the same column, so the model choice is worth five points of recovery here.
Ethanol–water distillation
An 8-stage column concentrating ethanol overhead toward the azeotrope (the headline demo).
Pressure-swing ethanol dehydration (Gᴱ mixing rule)
Ethanol–water is the classic azeotrope, and pressure-swing distillation breaks it without an entrainer: the azeotrope moves with pressure, so a low-pressure column and a high-pressure column pass each other's azeotropic distillate and each recovers a pure product. The whole process only works if the property package tracks that shift — which is exactly where a conventional package choice falls between two chairs. This flowsheet runs the high-pressure column at 15 bar on pr-mhv1: Peng-Robinson with an MHV1 excess-Gibbs mixing rule, so the cubic equation of state gets its attraction parameter from NRTL's excess Gibbs energy instead of from a single binary interaction constant. Switch the thermo package (Solver menu) and compare the predicted azeotrope: | package | 1 atm | 15 bar | valid at 15 bar? | |---|---|---|---| | NRTL | 0.891 | 0.802 | no — γ-φ is a low-pressure formulation (~10 bar) | | Peng-Robinson (kij) | 0.586 | 0.613 | yes, but a kij cannot represent this azeotrope | | pr-mhv1 | 0.949 | 0.798 | yes | (mole fraction ethanol; the repo's DECHEMA-validated 1 atm anchor is 0.894.) At 15 bar pr-mhv1 lands within 0.005 of NRTL while remaining a genuine equation of state, whereas plain Peng-Robinson is off by ~0.19 and puts the azeotrope in the wrong place entirely. Selecting nrtl here also trips the applicability guard, which warns that the activity model is past its pressure ceiling and names the fix. The flowsheet demonstrates the mechanism on itself. Drop the column pressure to 1 atm and re-run, changing nothing else: the solve fails with SPEC_THERMODYNAMICALLY_IMPOSSIBLE, because at atmospheric pressure the requested bottoms purity sits beyond the azeotrope and no column can reach it. At 15 bar the same specification converges and the bottoms leaves at x_EtOH ≈ 0.924 — past the atmospheric azeotrope of 0.894, which is precisely the composition an atmospheric column cannot cross.