Model, verification suite and reproduction scripts for the manuscript "Operating-domain screening of dynamic pressure swing adsorption models: a contact-time criterion that detects non-separating CO2/N2 cycles"
Description
Model, verification suite and reproduction scripts for the manuscript "Operating-domain screening of dynamic pressure swing adsorption models: a contact-time criterion that detects non-separating CO₂/N₂ cycles" Everything reported in the paper is reproducible from this deposit. run_all.sh executes the whole chain in order; the individual steps are: python test_model.py — the 41-check verification suite, including one regression test per defect class and three checks on the flux accounting itself. python reproduce.py --all — every performance number in Tables 10, 13, 14, 18 and 19, written to results_master.json together with its convergence evidence; python reproduce.py --check compares the stored results against the values printed in this paper. python revision_runs.py R1 R2 R2b R3 R4 R5 R5b R6 and python gridstudy.py, python mms.py, python toth_fit.py, python css_limit.py, python cycle_balance.py — the diagnostics behind Tables 6, 9, 11, 12, 15, 16, 17, 19 and S3–S6. FIG_N=80 python figdata.py profiles, python figdata.py sweep, python figdata.py css, FIG_N=40 python revision_runs.py R5b and python makefigs.py — Figures 1–5, with the profile figures produced at the resolutions stated in Section 7.3. python manuscript/check_ms.py — the cross-reference and quantity audit of the manuscript source: it resolves every table, figure, equation and section reference and checks every reported value against the stored result files. Environment: Python 3.12 with NumPy 2.4.4, SciPy 1.17.1 and Matplotlib 3.10.8, specified in environment.yml. Wall-clock times quoted in Table 11 were measured single-threaded on an x86-64 Linux machine; the full set of runs behind Tables 10–19 and Figures 1–5 takes approximately one hour on that hardware. The release deliberately retains the pre-audit version of the model as a separate module. Roughly half of the verification suite consists of regression tests that compare the corrected implementation against it term by term, and the seven-flow-mode numerical equivalence reported in Section 7.1 cannot be reproduced without it. The repository also contains a changelog documenting each of the twenty-eight defects, the measurement that exposed it, and the test that now guards against its recurrence. Changes in version 2. No model, accounting or stored-result change: every file in data/ is unchanged from version 1, and the verification suite still reports 41 of 41 checks passing and 17 of 17 reproduced values matching. This version fills in the citation metadata that version 1 left as placeholders, corrects the target journal, updates the manuscript title, brings the manuscript table numbers in the documentation into line with the submitted manuscript, adds vector figures for submission, and removes the document typesetting scripts, which produce a Word file rather than a result. Every change is itemized in RELEASE.md.
Files
Steps to reproduce
Environment: Python 3.12 with NumPy 2.4.4, SciPy 1.17.1 and Matplotlib 3.10.8, specified in environment.yml. There are no compiled extensions and a single CPU core is sufficient. 1. Unpack psa-verification-v1.4.1.zip and change into the resulting directory. 2. conda env create -f environment.yml && conda activate psa-verification (or: python -m venv .venv && pip install -r requirements.txt) 3. python test_model.py — the verification suite. All 41 checks must pass. 4. python reproduce.py --all — regenerates every performance number into data/results_master.json together with its convergence evidence (about 20 minutes). 5. python reproduce.py --check — compares those results against the values printed in the paper. It must report 17/17. 6. bash run_all.sh — the whole chain in order, about one hour on one core, ending with python manuscript/check_ms.py, which resolves every cross-reference in the manuscript source and checks every reported value against the data files. It must report 0 issues. Figures as submitted: python makefigs_vector.py writes manuscript/Fig1-Fig5 as PDF and EPS at the journal column width, with fonts embedded. Expected output: 41/41 from step 3, 17/17 from step 5, 0 issues from step 6.
Institutions
- Bursa Uludağ Üni̇versi̇tesi̇Bursa Province, Bursa