Overview
The Column tool performs rigorous multi-stage distillation and fractionation calculations.
Like the Flash tool, it uses a bespoke JavaScript implementation
of the Peng-Robinson (1978) equation of state coupled with thermodynamic data from
ChemSep and DWSIM.
The tool models multi-component columns (such as depropanizers, debutanizers, strippers,
and absorbers) with arbitrary feeds, vapour and liquid sidestreams using the Russell inside-out algorithm.
Formula based specifications allow a lot of flexibility without a complicated interface.
Stages are numbered 1 to N from top to bottom: Stage 1 is the top stage (condenser if present)
and Stage N is the bottom stage (reboiler if present).
Information View
The information view for the Column tool consists of an action bar
at the top and four selectable tabs:
- Profiles - A stage-by-stage table of temperatures, pressures, flows, heat duties, feeds, and draws.
- Setup - Thermodynamic definition, stage count, top/bottom pressures, temperature estimates, and equipment options.
- Feeds/Draws - Feed stream definitions and product draw configurations.
- Specifications - Operating specifications and error formulations driving column convergence.
The action bar contains:
-
Status Indicator - Displays ● Solved in green when the column has successfully converged,
○ Not Solved in gray when inputs have changed and need calculation, or ● Error in red
with diagnostic failure details if calculation failed.
-
Solve Button - Solves the column. Note that the column will also automatically solve on demand
whenever an external formula references any of its parameters.
-
Reset Button - Clears calculated profiles and resets the numerical solver state.
Setup Tab
The Setup tab defines the overall column configuration:
Feeds & Draws Tab
Feeds
Multiple feed streams can enter the column at any stage. Each feed specifies:
- Stage - The stage number (1 to N) where the feed enters.
- Feed Formula - A formula referencing a Flash tool or model that provides molar flow (f), temperature (t), pressure (p), enthalpy (h), and mole fractions (x).
When solving, each feed stream is automatically pre-flashed at the feed stage pressure via an isenthalpic (P-H) flash to determine its vapour/liquid split and thermal condition entering the column.
To add a feed, enter the stage number and formula in the entry row and tap + Feed.
Existing feeds can be deleted by tapping the red ✕ button. The feed stage number and formula can be edited directly.
Draws
Draws represent product streams leaving the column. By default, every column starts with two basis draws marked (B):
- Overhead - Distillate stream from stage 1 (vapour for partial condenser, liquid for total condenser).
- Bottoms - Liquid bottoms stream from stage N.
Additional side draws (liquid or vapour) can be added to any stage:
- Stage - Stage number (1 to N).
- Phase - Liquid (Liq) or Vapour (Vap).
- Name - Name for the draw stream.
- Flow Est - (Optional) An initial estimated flow rate formula to help the numerical solver initialize column traffic.
Tap + Draw to add a sidestream. Sidestreams can be removed by tapping the red ✕ button.
Specifications Tab
Distillation columns require operating specifications (degrees of freedom) to define a unique operating point.
For a standard column with a condenser, reboiler, and two product streams, 2 specifications are required.
The header indicates how many specifications are required based on your column configuration.
Each specification consists of:
- Name - An identifier for the specification.
- Formula - An error formula that the solver drives to zero. Within the formula, $ refers to the column itself.
- Scale - A divisor to scale the error magnitude to approximately order 1 for numerical conditioning (e.g. 28 for a 100 kmol/h flow, 1.0 for mole fractions or reflux ratios, or 1e6 for heat duty in Watts).
Common specification examples:
-
Distillate Vapour Rate (partial condenser):
$.vf[1] - 100 kmol/h 'Vapour Draw
-
Distillate Liquid Rate (total condenser):
$.ldraw[1] - 100 kmol/h 'Liquid Draw
-
Reflux Ratio (L/D):
$.lf[1] / $.vf[1] - 1.5 'Reflux Ratio
(or $.lf[1] / $.ldraw[1] - 1.5 'Reflux Ratio for total condenser)
-
Bottoms Flow Rate:
$.ldraw[-1] - 100 kmol/h 'Bottoms Draw
-
Reboiler Duty:
$.q[-1] - 1.8 MW
-
Condenser Duty:
$.q[1] - -1.5 MW
Note that a condenser is always assumed. For absorbers or reboiler absorbers, specify its duty to be zero.
$.q[1]
-
Product Purity (Mole Fraction):
$.lx[1, "Propane"] - 0.98
-
Stage Temperature:
$.t[5] - 340 K
To add a specification, enter its name, formula, and scale, and tap + Spec.
The scale factor can also be edited directly in the specification row.
When more specifications are present than required, unneeded specifications can be deleted with the red ✕ button.
The column will examine the specification formulas and try to deduce estimates from them. More complex formulas may result
in it resorting to more generic estimates. If this results in convergence problems (typically a singular jacobian)
you may need to provide some estimates manually.
Profiles Tab
The Profiles tab displays the converged stage-by-stage results in a table from stage 1 to stage N:
- T - Temperature on each stage.
- P - Pressure on each stage.
- V - Vapour flow rate leaving the stage upward.
- L - Liquid flow rate leaving the stage downward.
- Q - Net heat duty on the stage (negative for condenser cooling, positive for reboiler heating).
- Feeds - Total molar feed flow entering each stage.
- Draws - Product draw flow rates on each stage, prefixed by phase (V or L).
Tapping on any column cell will create a link above the table containing the current conversion unit.
Clicking on this link opens the Unit Picker to customize the display unit for that column.
Formula Parameters
Parameters that can be accessed in the form a.b where a is the column tool and b is the parameter
The following parameters can be referenced in formulas throughout your model:
- solved - Returns 1 if the column solved successfully, otherwise empty.
- thermo - The thermodynamic definition string.
- nstages (or stagecount) - The number of stages as a scalar.
- t - Stage temperatures as a column array (N × 1).
- p - Stage pressures as a column array (N × 1).
- vf - Stage vapour flow rates as a column array (N × 1).
- lf - Stage liquid flow rates as a column array (N × 1).
- q - Stage heat duties as a column array (N × 1).
- vdraw - Stage vapour draw rates as a column array (N × 1).
- ldraw - Stage liquid draw rates as a column array (N × 1).
- hl (or lh) - Stage liquid molar enthalpies as a column array (N × 1).
- hv (or vh) - Stage vapour molar enthalpies as a column array (N × 1).
- vx - Stage vapour mole fractions. Returns a table of all components across stages, with the column
headers being the compound name.
Thus col.lx.propane would return an N × 1 column array
for that propane and col.vx.propane[1] would return the mole fraction of propane in the
top stage vapour. However if the compound name has a hyphen, it must be references with the index operator and
enclosed in quotes e.g.
col.vx[1, "n-Decane"]
- lx - Stage liquid mole fractions. Returns a table of all components across stages in the same manner as the stage vapour mole fractions.
For example col.lx.propane[-1] or col.lx[-1, "propane"] would return the mole fraction
of propane in the bottom stage liquid.
Values for individual stages can be accessed using standard indexing (1 for stage 1, -1 for the bottom stage):
- col.t[1] - Condenser / top stage temperature.
- col.t[-1] - Reboiler / bottom stage temperature.
- col.t[3] - Third stage temperature.
- col.vf[1] - Overhead vapour distillate flow rate.
- col.ldraw[1] - Liquid distillate flow rate (total condenser).
- col.lf[1] - Reflux flow rate leaving stage 1.
- col.ldraw[-1] - Bottoms product liquid flow rate.
- col.q[1] - Condenser cooling duty.
- col.q[-1] - Reboiler heating duty.
- col.lx[1, "Propane"] or col.lx.propane[1] - Liquid mole fraction of Propane on stage 1.
- col.vx[-1, "n-Butane"] or col.vx.nbutane[-1] - Vapour mole fraction of n-Butane on the bottom stage.