I develop and contribute to open-source scientific software. The projects below are grouped by whether I am a primary developer or a contributor. Contribution counts are merged pull requests on the upstream repository, current as of October 2026. Only projects where I contributed substantive features are listed.
Primary developer
HyPar
A conservative finite-difference solver for n-dimensional hyperbolic-parabolic partial differential equations on Cartesian grids, written in C with MPI. Several physical models are included (linear advection-reaction-diffusion, Euler and Navier-Stokes equations, Fokker-Planck models for power systems) and others can be added. Spatial discretizations include MUSCL, WENO, CRWENO, and compact central schemes; time integration uses built-in Runge-Kutta methods or the PETSc TS module. CUDA support is available for selected models.
Dependencies: MPI (a serial build is produced if
absent); PETSc and CUDA optional.
Documentation ·
Source
EUCLID
A high-order conservative finite-difference code for multifluid plasma simulation, used for interpenetrating and counterstreaming plasmas in inertial-confinement-fusion applications. Written in C++. The methods are described in Ghosh et al., Computers and Fluids 186 (2019).
The repository is not public; contact me for access.
TridiagLU
Parallel (MPI) solvers for distributed tridiagonal and block-tridiagonal systems. The parallel LU solver uses iterative substructuring, with the reduced system solved either directly (gather-and-solve with LU) or iteratively (point Jacobi). Multiple independent systems are solved in a single call, which is what makes nonlinear compact reconstruction affordable at scale. A test suite measures solver wall times.
Dependencies: MPI (a serial build is produced if
absent).
Documentation ·
Source
IBCartINS3D
A three-dimensional Cartesian incompressible Navier-Stokes solver with an immersed boundary technique. Based on the fractional-step method, with higher-order upwind reconstruction for convection and second-order central discretization for viscous and pressure-correction terms. Viscous terms are integrated implicitly and convection explicitly. The parallel version uses a three-dimensional Cartesian domain decomposition.
Dependencies: MPI (a serial build is produced if
absent).
Details ·
Source
Contributor
| Project | Merged PRs | Contribution |
|---|---|---|
| ERF | 53 | Lead developer of the Super-Droplet Method. Particle-based cloud microphysics including cold-cloud (ice) processes, adaptive-mesh support, terrain-following particle advection, a structure-of-arrays particle container, and CUDA/HIP/SYCL portability |
| ExaEpi | 31 | Multi-disease tracking with co-immunity and co-susceptibility, capacity-limited hospitalization, a medical workforce model, and the core agent-interaction kernels |
| WarpX | 7 | The preconditioning and linear-solver layer for implicit electromagnetic particle-in-cell: curl-curl operator preconditioner, sparse-matrix Jacobian assembly, and the PETSc SNES/KSP interface |
| PETSc | — | TSGLEE general linear methods with global error estimation; the MATKAIJ matrix format for implicit Runge-Kutta stage systems; Dormand-Prince and Bogacki-Shampine embedded RK schemes; extrapolated stage predictors for ARKIMEX (57 commits, 2013–2015) |
| COGENT | — | High-order time integration and implicit-explicit methods in a continuum gyrokinetic tokamak edge code |
| PICNIC | — | Particle-in-cell code with Coulomb collisions, on Chombo (131 commits) |
| PIAFS | — | Co-developer. High-order nonlinear hydrodynamics with photochemistry for plasma-based and gaseous optics, including the CUDA implementation (167 commits) |
| NUMA | — | Implicit-explicit, multirate, and extrapolated multirate time integration for adaptive-mesh atmospheric simulation |
Notes on use
- The codes I develop are mostly written in C or C++ and need only a standard compiler and MPI. Some builds optionally link PETSc.
- Repositories are mirrored across GitHub, GitLab, and Bitbucket. GitHub is canonical.
- Most repositories carry a readme covering the build and the input files. Documentation is uneven; the codes should be readable to someone with the relevant background in numerical methods and physics. Feedback is welcome.
Build notes
- PETSc installation, including configure examples for LLNL platforms.
- SUNDIALS installation.
- TridiagLU scalability results.