Replacing legacy simulation codes with modern, reproducible Python — from nuclear safety analysis to ocean turbulence modeling.

My work focuses on nuclear and environmental engineering software: accelerated physics simulation, deterministic decision engines for engineering calculations, and engineering simulation pipelines. Everything is built for auditability, numerical fidelity, and reproducibility.

htcie Complete

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.

Python Pydantic heat transfer engineering traceability
View docs →
pyGOTM Complete

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.

Python Numba ocean turbulence NetCDF FABM validation scientific computing
View docs →
Aquirae In Development

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.

Python NiceGUI FastAPI SQLite reproducibility provenance aquatic modeling
Turbulence Meets a Real Lake: What 22 Years of Lake Erken Taught pyGOTM

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.

Jun 15, 2026 python oceanography limnology
Turbulence All the Way Down: Ten Weeks Rewriting a 40-Year Fortran Ocean Model in Python

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.

May 27, 2026 python fortran oceanography
The Enduring Value of the Nuclear Engineer in the Age of Expanding AI

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.

Apr 15, 2026 nuclear-engineering artificial-intelligence safety-analysis
All posts →