I develop open-source tools for computational astrophysics. My main projects are Quokka, Honghu.jl, and AstroCalculator.

Quokka

Core developer since 2023 · C++ · MIT license

A GPU-accelerated, adaptive-mesh-refinement code for two-moment radiation hydrodynamics in astrophysics, with self-gravity, particles, chemistry, and magnetic fields. The project was started by Mark Krumholz and Ben Wibking in 2021. My contributions:

GitHub · Documentation · Code paper: Wibking & Krumholz 2022

Honghu.jl

Author · Julia · MIT license

A three-dimensional radiation-hydrodynamics code in pure Julia, built for comparing numerical schemes. It solves the Euler equations coupled to two-moment (M1) radiation transport, either grey or in frequency groups, on a uniform Cartesian grid. It is a rewrite of Hydro.jl that follows the algorithms of Quokka.

Kelvin–Helmholtz instability, $256^2$ cells
M1 radiation shadow: a beam strikes an opaque clump. Colour is $\log_{10} E_r$ over ten decades.
  • Methods: PPM reconstruction, an HLLC Riemann solver, and SSP Runge–Kutta time stepping for the hydrodynamics. The radiation uses a second-order, asymptotic-preserving IMEX scheme with an implicit matter–radiation coupling.
  • Verification: a test suite of over 1,000 tests, including the Sod shock tube (exact solution), radiation diffusion (analytic solution), and the Mach 3 radiative shock (semi-analytic solution of Lowrie & Edwards).
  • Comparing schemes: a built-in tool runs a problem for each scheme and resolution, and reports the error and convergence rate of each.
  • Limits: uniform grid and shared-memory threading only, with no mesh refinement, MPI, or GPU support.

GitHub

AstroCalculator

Author · Python

A calculator for astronomers and physicists that knows physical constants and units. You type an expression such as m_e c^2, or a list of assignments followed by an expression, such as M = 1.4 M_sun, R = 10 km, sqrt(2 G M / R), and it returns the result in SI and cgs units; a follow-up such as in km/s converts it to any unit. Constants come from astropy (CODATA values, with uncertainty and reference), and expressions are parsed with sympy.

  • Web app: runs fully in the browser through Pyodide, with no installation. It has a multi-line editor, a searchable sidebar of constants, units, and equation templates (for example the Bondi accretion rate or the Alfvén velocity), and an evaluation history.
  • Command line: pip install astrocalculator, then run calc for an interactive, colour-coded prompt.
  • Python module: from calc import * gives all its constants inside your own scripts or IPython.

Web app · GitHub · PyPI

Other software

  • ramtools (Python, built on yt): a toolkit for fast post-processing of RAMSES-RT simulations, used among my collaborators. Documentation.
  • Hydro.jl (Julia): a modular hydrodynamics code in pure Julia, written for both educational and practical purposes. It is the predecessor of Honghu.jl. See also my blog post Fun with Julia.