Repository navigation
Releases: process-intensification-lab/pyDAC
Release list
pyDAC 3.1.0
pyDAC can now simulate beds other than a packed bed: register your own bed architecture at
run time, as you already can for an isotherm or a kinetic law. This release also fixes a set
of input, plotting and terminal issues. The packed bed is unchanged: its computed results
(trajectories, KPIs, NSGA-II fronts) are bit-identical to 3.0.1.
New
pydac.register_bed_architecture(name, entry)registers a bed architecture (a monolith, a
structured packing, ...). ItsBedArchitectureEntrygives the design, the structure, and
the pressure-drop, dispersion and thermal closures of the bed. pyDAC checks every value the
closures return before the column uses it. The user guide shows a complete registration and
what each closure has to give for a monolith:
Extending pyDAC: a bed architecture.- The saved simulation context (schema 3) keeps the two wall coefficients apart: the
bed-side coefficient h_w and the lumped 1D coefficient. Contexts saved by 3.0.x read in
the new rows.
Fixed
external_htc_W_m2K = 0is accepted: an adiabatic outer wall.- The outlet species figures of a step run show the stream that leaves the outlet, the
value the KPIs use, instead of the last cell center. - Terminal settings: an object value (
--set 'sorbent={"density_kg_m3": 800}') changes only
the fields it gives; species keys match whatever their case; an empty block such as
grid={}is refused instead of passing silently (a block replaced as one may still be
empty). - NSGA-II refuses a cycle without a desorption step, and warns when a campaign starts
without any product constraint. - An older frozen case written before one of its fields existed is refused with how to
bring it up to date. - Terminal messages print a path inside the working folder relative to it; a path
elsewhere stays absolute. - One qualification lock for Linux and Windows; CI runs on Node 24 actions.
The full list is in the
changelog.
Upgrade
python -m pip install --upgrade pydac3
pydac get-started NEW_FOLDERThe tutorials changed (wording in 01 and 05, printed paths in all seven): get a fresh copy
with pydac get-started into a new folder. Runs written by 3.0.x can be read and reported with 3.1.0; as for any version
change, a run written by 3.0.x is not continued by 3.1.0.
pyDAC 3.0.1
pyDAC 3.0.1
The pyDAC paper is now available as a preprint on ChemRxiv:
doi:10.26434/chemrxiv.15010382/v1.
This release links it. The code and the results are the same as in 3.0.0.
- Every mention of the pyDAC paper in the README, the tutorials, the examples and the manual
links to the preprint. - README "How to cite" gives the preprint and the Zenodo concept DOI of the software,
10.5281/zenodo.23319859 (always the latest version). CITATION.cfflists the preprint inreferences; the Zenodo record names the third author
"van Sint Annaland, Martin".- The user guide no longer says to install from a clone until pyDAC is on PyPI: it is.
Upgrade with pip install --upgrade pydac3. Runs written by 3.0.0 can be read and reported with
3.0.1; as for any version change, a run written by 3.0.0 is not continued by 3.0.1.
pyDAC 3.0.0
pyDAC 3.0.0
First public release of pyDAC, a simulator of adsorption-based direct air capture (DAC).
Version 3 is the first one published; earlier versions were internal.
What pyDAC does
- Solves the coupled mass, energy and momentum balances of a packed sorbent column in 1D or
2D (axisymmetric), with CVODE (SUNDIALS) and a finite-volume discretization (pymrm). - Runs adsorption cycles composed from configurable steps (adsorption, blowdown, heating,
purge, steam- or wall-heated desorption, cooling, pressurization), by default a
steam-assisted temperature-vacuum swing adsorption (TVSA) cycle: step by step, or repeated
until cyclic steady state (CSS). - Reports process key performance indicators: CO2 purity and recovery, productivity,
equivalent work and its breakdown, and the O2 and hot-bed check. - Optimizes operating conditions with NSGA-II (pymoo), with checkpoints and exact
continuation of an interrupted campaign.
How you use it
- One command,
pydac, withsteps,css,nsga2,validateandget-started, and the same
functions from Python (pydac.load_case,run_steps,run_css,run_nsga2,resume,
report). - A case is a JSON document. Start from the built-in defaults and change settings with
--set, or save a complete case (--export-case) and run it exactly as saved with
--case. A JSON Schema is included for editor validation and completion. - Every run folder is named by the fingerprint of the complete case and saves the case it
ran (resolved_config.json) and a provenance record: package version, Python and the
numerically relevant dependency versions. Runs are reproducible without Git. pydac get-started FOLDERcopies a starter kit into a new folder: README, licence, citation, the
user guide and seven tutorials (cases, notebooks with their saved outputs, and the
validation data).- Saved runs can be continued (
--resume) or reported again (--report). A continuation
needs the pyDAC version that wrote the run; reading, replaying and reporting it work with
any later 3.x release.
Requirements and installation
- Python 3.11 to 3.14 on Linux (x86_64). Windows is being tested: the full test suite passes
on Windows with Python 3.14 in CI, but it is not supported yet. macOS is neither tested nor
supported. - CI runs the full test suite on Linux with Python 3.11 (lowest allowed dependency
versions), 3.12 (the exact lock file, and the base dependencies only), 3.13 and 3.14
(newest dependency versions), and on Windows with Python 3.14. - Install pyDAC in a dedicated environment with
python -m pip install pydac3. It pins some
dependencies exactly (pymrm==2.1.10,scikit-sundae1.1.x,pandas<3); a shared
environment can break. The distribution ispydac3; the import and the command are
pydac.pip install pydacinstalls an unrelated project. - To change pyDAC itself, install it editable from a clone: see
CONTRIBUTING.md.
Known limitations
pymrm2.1.10 declares documentation and test tools (Sphinx, pytest, numba, ...) as
runtime dependencies, so the installation is larger than pyDAC needs.- A few tests need the repository files next to
tests/; run the test suite from a clone,
not from the installed package. - The H2O GAB isotherm is fitted up to 90 % relative humidity. Above it pyDAC extrapolates
and prints a warning; the default cycle reaches it briefly during pressurization. - The 2D model is the costly one: start with the 1D examples of the guide.
Documentation
- Start with the tutorials:
examples/notebooks/, from01_first_steps.ipynbin order
(pydac get-startedcopies them). README.md: installation and a first run.docs/guide/: the user guide (installation, quick start, cases, running, optimization,
results, reproducibility, extending).docs/manual/: the reference manual (framework map, inputs, core, discretization,
equations, cycle steps, post-processing, NSGA-II).CONTRIBUTING.md: working in a clone, tests, extending the model.
Citation and license
MIT license. Please cite pyDAC with the metadata in CITATION.cff. Zenodo archives this
release with its own DOI; the DOI enters CITATION.cff and the README in 3.0.1.