Software

Open-source software and libraries.

Below are open-source libraries I have contributed to or maintain. Additional code and experiments are on GitHub.

torch-harmonics

Build status pypi

torch-harmonics is a differentiable implementation of the spherical harmonic transform in PyTorch. It was originally developed for Spherical Fourier Neural Operators and is now used more broadly for global weather models, differentiable PDE solvers, and operator learning on the sphere. The library combines quadrature rules with FFT-based projections onto the harmonic basis and supports distributed computation across GPU ranks.

Examples below include SFNO weather rollouts, a zonal-jet simulation, and an Allen–Cahn solve on the sphere:

SFNO rollout Zonal jet simulation Allen-Cahn simulation
pip install torch-harmonics

makani

tests

Makani is a training framework for large machine-learning weather and climate models in PyTorch. It scales from a single GPU to thousands on ERA5-scale and similar reanalysis datasets, with data pipelines, model configurations, and distributed training utilities built in. Makani was used to train FourCastNet, SFNO, and AFNO.

Makani SFNO weather rollout

neuraloperator

neuraloperator is a Python library for learning mappings between function spaces—neural operators that generalize across resolutions and domains. It provides implementations of Fourier and related architectures (including FNO and Galerkin-style layers), training utilities, and example PDE benchmarks. I contribute to the core library and use it in several operator-learning projects.

HssMatrices.jl

CI DOI

HssMatrices.jl implements hierarchically semi-separable (HSS) matrices in Julia for PDE-related linear algebra. HSS compression represents dense blocks arising in sparse factorizations by low-rank structure, enabling fast matrix–vector products and approximate arithmetic. The package includes construction, multiplication, factorization hooks, and tools to visualize rank structure—useful when developing hierarchical preconditioners for wave problems.

HSS matrix rank structure

HierarchicalSolvers.jl

HierarchicalSolvers.jl is an approximate sparse direct solver in Julia that exploits hierarchical low-rank structure during factorization. Combined with nested-dissection orderings, it achieves quasi-linear complexity on many wave and Helmholtz problems and can be used as a robust preconditioner inside Krylov iterations. This code grew out of my PhD work on scalable solvers for time-harmonic wave equations.

nodal-dg-extensions

nodal-dg-extensions extends the nodal-dg Matlab library with continuous Galerkin (CG) discretizations on triangular meshes, alongside the existing discontinuous Galerkin (DG) machinery. The design reuses the same nodal data structures so CG and DG variants can be compared in a unified framework—mainly for research prototypes and teaching.