Heat Transfer Correlation Intelligence Engine. Deterministic, API-first correlation selection for single-phase convection — evaluates 13 correlations, ranks them with a reproducible scoring model, and reports confidence based on inter-method spread. Full traceability. Validated against Incropera 7th ed.
View docs →Python + Numba reimplementation of the General Ocean Turbulence Model (GOTM). Compiled single-column 1D ocean and lake physics — mean flow, turbulence closures (k-ε, k-ω, GLS, Mellor-Yamada), air-sea exchange, five ice thermodynamics models (including Winton three-layer sea ice and Holland-Jenkins ice-shelf basal melt), and FABM/pyfabm biogeochemistry coupling. Reads GOTM 6.x YAML configurations natively. Validates NetCDF output against Fortran GOTM 6.0.7 reference using a Fréchet-distance pipeline — all 22 official cases execute, default validation set (couette, channel, entrainment) passes. CLI, Python API, and warm JSON-RPC stdin/stdout daemon. No Fortran compiler required.
View docs →Aquirae (Aquatic Integrated Reproducible Analysis Environment) — a local-first, reproducible workbench for aquatic-system modeling. It is the application layer above an open-source simulation engine: the first engine is the pyGOTM 1D water-column model, and the architecture is built to host additional aquatic engines later. Aquirae turns a raw engine into a usable product: reproducibility-by-construction via hash-pinned manifests that record inputs, code versions, environment, and outputs; a SQLite provenance DAG linking every artifact from raw data to published figure; a portable project-bundle format (YAML + Parquet + NetCDF + Markdown) suitable for Zenodo archival; an auto-collected citation graph; and a NiceGUI browser UI with three vantage points (Operator / Modeler / Explorer) — Time-Depth Cinematic, Scenario Comparison, Intake-Depth Advisory, Provenance Inspector, Observation Browser, YAML Editor, and Report Builder. Runs entirely on-machine, no cloud account required. The engine is consumed across a strict process boundary (subprocess CLI and stdin/stdout JSON-RPC, never a linked import), keeping the AGPL-3.0 application cleanly separated from the GPL-2.0 engine while both share one conda environment. Currently pre-alpha (v0.1.0): package layout, agent contracts, and process-boundary stubs.
The sequel to the pyGOTM story. I pointed my Python ocean model at one real lake for twenty-two years and it failed in a way that was almost insulting. This is how I discovered the model was only half lake-aware, fixed the physics, and learned to live with an honest FAIL that is arguably more faithful than a PASS.
The honest story of pyGOTM — an open-source Python translation of GOTM that brings forty years of ocean turbulence physics into the language the next generation of scientists already uses. Ten weeks of failures, pivots, and one invented validation methodology.
A reflective look at what AI can and cannot replace in high-consequence engineering — and why the nuclear engineer doing safety analysis work is positioned for elevation, not obsolescence.