- Typst 51.4%
- Python 40.1%
- Nix 7%
- Just 1.5%
| Filename | Latest commit message | Latest commit date |
|---|---|---|
Solutions for problem 1 (ozone production system: standard case, NO and isoprene emission sensitivity, contour of the maximum) and problem 2 (role of entrainment: multi-day episode, EU threshold exceedance and boundary-layer timing), with the questions and the generated figures. |
||
| assets | ||
| assignments | ||
| template | ||
| typst | ||
| .gitignore | ||
| .python-version | ||
| flake.lock | ||
| flake.nix | ||
| justfile | ||
| LICENSE | ||
| pyproject.toml | ||
| README.md | ||
| uv.lock | ||
Atmospheric Chemistry and Physical Processes (ACCP)
Course assignments for ACCP, Utrecht University, Fall 2026. Author: Niccolò Zanotti (student number 2259540).
Each hand-in pairs a Typst report with the Python that generates its figures.
Reports are built from a shared theme in typst/accp.typ;
template/ is the scaffold for the next assignment.
Assignments
| # | Topic | Report | Figures | Code |
|---|---|---|---|---|
| 01 | Methyl chloroform, H₂ deposition velocity, box vs. puff model, atmospheric layers | problem 2, problem 4 | 1, 2, 3, 4, diagram |
Build and run
The toolchain (Typst 0.15.1 with pinned fonts, uv/Python, ruff, typstyle and
the headless CLASS model) is provided by the Nix flake. The flake
fetches the CLASS-model fork,
puts its class-cli binary on the path and exports CLASS_BIN, so the
assignment 02 figures can be regenerated inside the shell:
nix develop # enter the reproducible shell
just all # regenerate all figures + compile every report
just figures # regenerate all figures
just build # compile every report in place
just lint # typstyle --check + ruff check
just sync # uv sync
The whole workflow is reproducible with a single command:
nix develop --command just all
nix build compiles the reports hermetically into ./result, and
nix flake check runs the compilation, style and lint checks. Reports are
compiled with --ignore-system-fonts and SOURCE_DATE_EPOCH, so the output is
reproducible.
Without Nix:
uv sync
typst compile --root . assignments/01/hand-in.typ # --root . lets reports import ../../typst/accp.typ and ../assets/
uv run python assignments/01/code/problem2.py # scripts resolve figures/ relative to the repo
# assignment 02 additionally needs the headless CLASS model:
git clone https://git.niccolozanotti.eu/niccolozanotti/CLASS-model.git
cmake -S CLASS-model -B CLASS-model/build && cmake --build CLASS-model/build -j
export CLASS_BIN=$PWD/CLASS-model/build/class-cli
uv run python assignments/02/code/problem1.py
Starting a new assignment
cp -r template assignments/02
Then edit assignments/02/hand-in.typ (set the title and add the problems) and
drop scripts and generated figures into assignments/02/code/ and
assignments/02/figures/.
Local-only material
The textbook and the assignment statements are not part of this repository:
they are kept locally in reference/ and assignments/*/statement/, both
git-ignored.
License
Released under the MIT License.