Process engineering, in-house
Distillation Unit Calculator (CDU / VDU)
The sizing model our engineers use for a client's atmospheric and vacuum tower: material balance, furnace duty and Souders–Brown tower diameter, computed from a distillation assay — not a rule of thumb.
Every number on this page — the worked case below and the calculator you can run yourself — comes out of the same TypeScript engine (src/lib/cdu) that runs the small estimator on our homepage and the internal CDU/VDU sizing tool our engineers use day to day.
Who reads this page
Four reasons to open this tool
EPC / process engineer
Needs a defensible first-pass tower diameter and furnace duty before committing to a detailed simulation.
Enter a throughput and pick a crude below, and read the governing section, tray count and duty in seconds.
Refinery or plant owner
Wants to know whether an existing shell still has margin at a higher throughput or a different crude.
The same Souders–Brown check the tool runs states under / ok / over for a proposed diameter and height.
Vendor pricing a column
Needs the vapour load and diameter a quotation has to match, not just a client's say-so.
The governing section's vapour rate and flooding velocity sit right next to the diameter they produce.
Anyone evaluating Barmaan as a software partner
Wants proof this is a real, running engineering model and not marketing copy.
The worked case below and the calculator both call the exact same pure TypeScript module, with its own self-check suite.
What the engine actually computes
Six calculations, not one formula
src/lib/cdu is pure TypeScript with no React and no network call — every module below can be read, and re-run, on its own.
Assay & TBP curve
Reads a distillation curve — either the lab TBP points entered, or an indicative correlation for the crude's API and sulfur, always labelled as such.
Material balance
Integrates the curve into eight product cuts, naphtha through vacuum residue, that close to the feed's own mass and sulfur.
Furnace duty
Sensible plus latent heat from crude inlet to cut-point temperature, split into what the preheat train recovers and what the fired heater must supply.
Atmospheric tower sizing
Souders–Brown vapour velocity and diameter at the flash zone and the top, tray count from the required height, and a verdict on a proposed shell.
Draw-off elevation check
Places every side draw on the tower's own temperature profile and flags one that sits at the wrong elevation for its cut point.
Vacuum tower sizing
The same hydraulics at vacuum pressure — packed-bed sizing, duty and diameter for the atmospheric residue's heavier cuts.
Computed live, on this request
The worked case: 500 t/d, 27° API crude
- Throughput
- 500 t/d
- Barrels per stream day
- 3,523
- Recommended diameter
- 1.00 m
- Computed trays
- 32
- Tangent-to-tangent height
- 25.1 m
- Fired duty
- 2,499 kW
- Recommended diameter
- 1.50 m
- Furnace duty
- 766 kW
Product cuts
| Cut | vol % | t/d | bpsd | SG |
|---|---|---|---|---|
| Naphtha | 19.3 | 81.7 | 679 | 0.757 |
| Kerosene | 9.9 | 45.3 | 347 | 0.821 |
| Light gas oil | 10.9 | 52.0 | 383 | 0.853 |
| Heavy gas oil | 10.9 | 53.8 | 383 | 0.883 |
| Light vacuum gas oil | 9.9 | 50.7 | 350 | 0.912 |
| Heavy vacuum gas oil | 12.0 | 63.5 | 423 | 0.942 |
| Slop wax | 5.3 | 28.8 | 187 | 0.968 |
| Vacuum residue | 21.9 | 124.2 | 770 | 1.015 |

Where the numbers stop
What this is — and what it is not
No assay entered, no invented split
When no lab TBP curve is entered the engine still needs a curve to integrate, so it builds one from the API and sulfur entered — and marks the whole case "indicative" rather than presenting it as a measured yield.
Souders–Brown fixes an order of magnitude
It says nothing about downcomer backup, weir loading, weeping at turndown, jet flooding on a specific tray valve, or a wash-bed's liquid irrigation rate — the things a tray vendor's own rating actually checks.
The furnace duty is preliminary, not a heater datasheet
Two averaged constants — specific heat and latent heat — stand in for a real enthalpy curve, good to roughly ±10% on the duty.
A D86-to-TBP conversion loses accuracy on a wide curve
The published correlation is accurate to a few degrees on a well-behaved fraction and degrades on a wide crude curve, which is why TBP stays the engine's default, preferred basis.
Try it yourself
Run the same engine with your own numbers
Pick a starting crude and a throughput — the tower diameters, tray count and furnace duties below are computed live, by the same function the worked case above and our internal sizing tool both call.
Every other input — cut points, tray spacing, flood fraction — stays at the chosen case's own default. Send us your own assay for a real, full run.
Read-only. Nothing entered here is saved or sent anywhere.
- Feed
- 3,523 bpsd
- Atmospheric tower diameter
- 1.00 m
- Computed trays
- 32
- Furnace fired duty
- 2,499 kW
- Vacuum tower diameter
- 1.50 m
- Vacuum furnace duty
- 766 kW
Want this on your own crude
Send us your assay
Enquire with a throughput, an API/sulfur or a lab TBP curve, and we run the full ~30-input model — cut points, tray spacing, draw elevations and both towers — against your own numbers.

