A desktop application for simulating two-component, non-isothermal adsorption breakthrough in a packed column. Select two gases and an adsorbent, define the operating conditions, and the simulator solves the coupled mass, momentum and energy balances along the bed and plots the outlet response.
It runs entirely on your own machine, with no account, no installer and no telemetry.
Current release: 2026.09v4 for Windows and Linux. A macOS build is planned.
Full documentation is available in the Wiki.
-
Go to Releases and download
BreakthroughSimulator-windows.exe(about 242 MB) for Windows 10/11, orBreakthroughSimulator-linux-x86_64.tar.gz(about 96 MB) for Linux (x86_64). -
Windows — double-click the
.exe. Linux — extract the archive and run the launcher:tar -xzf BreakthroughSimulator-linux-x86_64.tar.gz cd BreakthroughSimulator-linux-x86_64 ./run-breakthrough-simulator.shOptionally
./install.shonce, from a permanent folder, to add it to your application menu. To upgrade, run the new version'sinstall.shthe same way; it replaces the previous installation. -
Your browser opens at
http://127.0.0.1:8000after a few seconds, or on the next free port if 8000 is already in use.
Nothing is installed: no administrator rights are requested, and no registry keys, services or startup entries are created. Deleting the file or folder removes the application completely. Closing the browser tab shuts down the background process within about half a minute.
The Linux download is a folder rather than a single file; keep the extracted
layout intact, as the launcher requires BreakthroughSimulator/_internal/
beside it.
On first run, Windows displays "Windows protected your PC" because the build is not code-signed; click More info → Run anyway. The Windows build also takes a few seconds on each launch while roughly 200 MB of Python and scientific libraries unpack; the Linux build is pre-extracted and starts immediately. Both are covered in Troubleshooting.
Verify your download against the SHA256SUMS published with each release:
certutil -hashfile BreakthroughSimulator-windows.exe SHA256 Windows
sha256sum -c SHA256SUMS Linux
The simulator models a single packed column fed with a binary gas mixture, with CO₂/N₂ post-combustion capture as the reference case, in either operating mode:
- Adsorption (breakthrough). The bed starts clean, and the concentration and temperature fronts are followed until they reach the outlet.
-
Desorption (purge). The bed starts at equilibrium with the feed and is
purged at the same flow, temperature and pressure with
$y_1=0$ .
Six state variables are resolved in every cell: the gas-phase mole fraction, total pressure, gas temperature, wall temperature, and the adsorbed loading of each component. Because the wall carries its own energy balance and thermal mass, the temperature response persists well beyond the passage of the concentration front.
Physics
- Coupled mass, momentum and energy balances, non-isothermal, with a separate wall energy balance
- 13 isotherm models per component: Linear, Langmuir (SSL), Dual-Site Langmuir, Dual-Site Langmuir-Freundlich, Dual-Site BET, Toth, Sips/Hill, Freundlich, Anti-Langmuir, Quadratic, BET, Type V, Sips+Henry
- Mixture equilibrium by IAST (any model) or extended-Langmuir competitive mixing (SSL/DSL only); each preset carries its own rule, and the Zeolite 13X default uses competitive mixing
- Feed composition across its full range, with the flow entered in
SLPM, SCCM, NLPM, NmL/min, SCFH, SCFM (editable reference
$T$ ,$P$ ), LPM, mL/min, m³/h, mol/s or mmol/min — or directly as the interstitial velocity$v_0$ -
4 axial-dispersion correlations (Ruthven Ch. 7), each evaluated at the
operating point before you choose, or your own
$D_L$ ; Ruthven's basic correlation, Eq. 7.6, is the default - 5 mass-transfer modes: macropore, film, micropore, combined (resistances in series, individually selectable), or a directly entered LDF constant
-
Ergun or Darcy momentum balance, with
$Re_p$ reported for every run so you can judge whether neglecting the inertial term is justified - 12 selectable gases, with noble gases treated as non-adsorbing
- 5 adsorbent presets, each citing the source of its parameters. Zeolite 13X, Activated Carbon and CALF-20 also carry published bed and particle properties; Mg-MOF-74 and UTSA-16 provide isotherm parameters only, so their physical properties must be set for your own material, and the app notes this when either is selected
Interface
- Two pages: a six-step Inputs walk-through with live input checks, and Results; built-in guide and tour; colour-blind-safe light and dark themes
- Live isotherm preview while you edit parameters: both pure-component isotherms at the feed temperature and at a chosen offset, with the feed partial pressures marked
- Explanations on demand: notes behind (i) buttons and field descriptions on hover, so the input steps stay uncluttered
- Works fully offline; fonts and equation rendering ship with the app
Numerics
- Finite-volume discretisation with WENO reconstruction, upwinded by the local flow direction (6N coupled ODEs), robust on demanding cases including brief flow reversal at start-up
- SUNDIALS CVODE (implicit BDF) with a sparse SuperLU_MT linear solver
- Should CVODE fail to converge, the same equations are retried with SciPy LSODA and then SciPy BDF. Any run completed by a fallback is identified as such in the app and in the exported report, since the fallbacks do not enforce the non-negativity constraints that CVODE does
- A built-in suite of 139 engine self-checks passes for every published build
Working with results
- A results summary with breakthrough time, loadings against equilibrium, peak bed temperature and a Can I trust this run? check panel
- Breakthrough curves, normalised molar flow, temperature profiles, pressure, outlet flow, loading and wall temperature — against real time or dimensionless τ, with legends placed automatically clear of the data
- Every run verified two ways for each component: accumulated loading against the isotherm at feed conditions, and mole conservation across the column
- All dimensionless groups computed and reported for every run
- Save and reload complete cases as JSON; export a formatted report with equations, figures and citations
- Overlay your own measured data (
.csv/.xlsx) and score it with RMSE, MAE and R² — outlet flow in the same unit as the feed (or any listed unit) and thermocouples in °C, K or °F, converted on upload; the template is written in the units you choose - Reduce a measured breakthrough run to its equilibrium loading by mass balance, with every equation shown, and compare it with the mixing rule the run uses
| Page | |
|---|---|
| Using the App | Quick start, every tab, saving cases, reports, overlaying your data |
| The Model | Governing equations, dimensionless groups, numerics, verification |
| Isotherm Models | All thirteen models, IAST and competitive mixing |
| Mass Transfer | LDF, resistances in series, the five modes |
| Adsorbent Presets | The five presets and their sources |
| Limitations | What it does not model |
| Privacy and Security | What runs on your machine, and source availability |
| Troubleshooting | SmartScreen, antivirus, checksums, startup failures |
| References | Every source, and how to cite |
- Dry basis only — water vapour and humidity co-adsorption are not modelled.
- Intended for education and exploratory analysis. Validate results against your own data and apply engineering judgement before using them in design. The author accepts no liability for results applied beyond that purpose.
Full list: Limitations.
The application runs locally, bound to 127.0.0.1, and cannot be reached from
your network or the internet. There are no accounts, analytics or tracking. The
only outbound request is optional: if you enable update checks, the app asks
api.github.com once a week for the latest version number, and nothing else is
sent. Update checks are off until you opt in, and the app never downloads or
runs code on its own.
See PRIVACY.md and SECURITY.md.
The source code will be published once the underlying work has been written
up. Until then, releases are distributed as binaries, and the SHA-256
fingerprints and requirements-lock.txt shipped with each release let you
verify exactly what you received. If you need the source sooner, for a review,
an audit or an institutional requirement, please
open an issue
and ask.
CC BY 4.0 — use, share and adapt with attribution. See LICENSE. Bundled components keep their own licences (Python, NumPy, SciPy, scikit-sundae, SUNDIALS, SuperLU_MT, FastAPI, uvicorn, KaTeX, SheetJS); full attributions are in the app under Credits (footer, or the Case menu).
Anand, M. (2026). Dynamic Column Breakthrough Simulator (version 2026.09v4) [computer software]. https://github.com/Mk-learning-python07/dynamic-column-breakthrough
Please also cite the sources underlying the preset and theory your results depend on, listed under References.
Developed by Muthukrishnan Anand, with the assistance of Claude (Anthropic). Bug reports and questions are welcome: open an issue.