Repository navigation
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.