Tray efficiency: 20 real trays are not 20 stages — a PENG-ROBINSON process flowsheet
Every equilibrium column model quietly assumes each tray reaches equilibrium. Real trays do not, and the gap is not small enough to ignore when you are buying a shell. The same depropaniser is solved twice at 20 trays, a 2.5 reflux ratio and a 50/50 split. As 20 equilibrium stages it puts 99.61% propane overhead. As 20 actual trays on the rate-based model it manages 96.63% — the tower is the same height and the separation is measurably worse, because the model applies an efficiency instead of assuming one. Left to itself it derives that efficiency from the feed's relative volatility and liquid viscosity through the O'Connell correlation; give it a stage_efficiency and it uses yours, and at a punishing Murphree 0.5 the overhead drops further to 95.33%. The practical reading: an equilibrium model sized this column at 20 trays and the tray efficiency spent roughly three points of product purity. Size on equilibrium stages and you will under-build the tower — that is what the efficiency is for. Bounded: this applies a single overall efficiency to every tray, which is a screening treatment. It is not a rigorous rate-based column — for genuine two-film Maxwell-Stefan transfer with per-stage interface composition and energy coupling, use nonequilibrium_distillation instead. O'Connell itself is a correlation fitted to commercial tray data, so it carries that scatter.
14 views 0 forks
- Rigorous PENG-ROBINSON thermodynamics, solved by the same engine every simulation runs on.
- 1 unit operations modeled: COL.
- Focus areas: Distillation, Tray efficiency, O'Connell, Murphree, Sizing.
- Thermodynamics
- PENG-ROBINSON
- Components
- propane, n_butane
- Unit operations
- COL
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("tray-efficiency-column")
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
Tray efficiency — real trays vs ideal stages
The same ethanol–water column solved with a Murphree vapor tray efficiency of 0.7 instead of ideal equilibrium stages. A real sieve/valve tray never reaches full vapor-liquid equilibrium — the vapor leaving it only partly approaches the equilibrium composition with the tray liquid, mixing in un-equilibrated vapor from the tray below: y = E·K·x + (1−E)·y_below (Murphree 1925). At E = 0.7 each of these 12 trays does 70% of an ideal stage's work, so the overhead ethanol is lower than an equilibrium column of the same tray count would predict — which is exactly why a real column needs more trays than a shortcut (ideal-stage) calculation says. Both HYSYS and Aspen RadFrac expose this per-tray efficiency; set murphree_efficiency back to 1.0 to recover the ideal-stage column. The efficiency auto-selects the component-flow Naphtali-Sandholm solver (the reduced-form solvers carry no explicit per-tray VLE row to apply an efficiency to).
Shortcut column sizing (Fenske-Underwood-Gilliland)
Before anyone builds a rigorous column they size it in about a second, and this is that step — Aspen's DSTWU, the calculation every distillation design starts from. State the two keys and how well you want them separated, and the shortcut answers the four questions that set the capital cost. For a depropaniser feed (30% propane, 40% n-butane, 30% n-pentane) at 10 bar recovering 98% of the propane overhead and 98% of the n-butane in the bottoms: Fenske gives 8.34 minimum stages — the count at total reflux, where you spend infinite energy to buy the fewest trays. Underwood gives a minimum reflux of 1.54 — the reflux at infinite stages, the opposite corner. Neither is buildable; the real column lives between them, and Gilliland interpolates: at 1.3x the minimum reflux you need 17.7 theoretical stages, with Kirkbride putting the feed on stage 7.85. That is a little over twice the minimum stage count for 1.3 times the minimum reflux, which is the trade every column is designed on. The energy follows: 1.67 MW reboiler against a 1.35 MW condenser. Bounded, and this is the important part. These are screening numbers, not a design. The shortcut assumes constant relative volatility and constant molal overflow — it cannot see a pinch, a tangent, an azeotrope, or a temperature profile. Its job is to give a rigorous MESH column a starting point that converges, not to replace it. Run the distillation unit op on 18 stages with a feed at 8 to check it.
Ethanol–water distillation
An 8-stage column concentrating ethanol overhead toward the azeotrope (the headline demo).
Distillation column startup dynamics (feed-rate step)
An 8-stage ethanol-water column at a reduced startup feed rate. Solves the steady state normally; switch to the Dynamic solve mode with weir/level-controlled hydraulics enabled and step the feed rate up (e.g. 6 → 9 mol/s) to watch the bottoms draw genuinely rebalance to the new throughput as the tray inventories fill — a feed-rate disturbance no fixed-hydraulics dynamic model (incl. this same column's own default rigorous mode) can show at all. Honest bound: the vapor traffic is held at its steady-state value in this mode, so the distillate draw (condenser-level-controlled off vapor inflow) does not move for a feed-rate-only step — only the liquid/bottoms side responds.
Perry Ch.13 Example 3: butane/pentane splitter
A simple two-cut distillation splitting butane overhead from pentane bottoms, from Chapter 13 of Perry's Chemical Engineers' Handbook.
Perry Ch.13 Example 4: sloppy-butane three-cut splitter
A three-cut column with a side draw producing a deliberately 'sloppy' (off-spec, cheaper-to-make) butane cut between a propane overhead and a pentane-plus bottoms, from Chapter 13 of Perry's Chemical Engineers' Handbook.