Skip to content

pyDAC 3.0.0

Choose a tag to compare

@MattiaGalantii MattiaGalantii released this 12 Oct 14:39
· 14 commits to main since this release

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, with steps, css, nsga2, validate and get-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 FOLDER copies 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-sundae 1.1.x, pandas<3); a shared
    environment can break. The distribution is pydac3; the import and the command are
    pydac. pip install pydac installs an unrelated project.
  • To change pyDAC itself, install it editable from a clone: see CONTRIBUTING.md.

Known limitations

  • pymrm 2.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/, from 01_first_steps.ipynb in order
    (pydac get-started copies 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.