Scientific Software
Projects
Scientific Software
Projects
Image by R Meyrand
My programming experience is primarily in the context of science and scientific computing. I have been a member of and also led teams working on nonlinear codes for gyrofluid, continuum gyrokinetic, Vlasov-Poisson, full PIC, gyrokinetic PIC, full-f , the kinetic reduced electron heating model (KREHM), and kinetic reduced MHD, focusing on problems from both laboratory and Nature, of both theoretical and practical interest; on linear codes for MHD and microstability analyses; on multiscale, integrated modeling packages for time-dependent, transport timescale simulations of tokamaks and stellarators; on optimizers for tokamaks and stellarators; on generalized regression packages; and on multiscale time-integration methods. I was an early convert to GPU/heterogeneous computing, with a paper at SC2007 in that space and a plenary talk at an early Nvidia science meeting. A couple of years ago, I tried my hand at some problems related to stoquastic Hamiltonians and quantum annealing. Currently, I've begun exploring some ideas in machine learning with graduate students at Maryland while putting the finishing touches on a new GPU-based code (GX) to enable "desktop gyrokinetics." Most recently, I am starting a new machine learning project funded through the NSF-DOE partnership, in collaboration with UCLA, SLAC, and MIT.
Over the last twenty years, I have co-supervised graduate students on a wider range of problems, including computational finance, natural language processing, data assimilation methods to improve weather prediction, and liquid metal models of accretion flows. During the seven years that I directed the undergraduate Honors College at the University of Maryland, I wrote custom software to manage undergraduate admissions for the university. That was quite an adventure.
Follow the links to learn more about a few ongoing projects I have helped to develop.
Originally designed for stability analyses by Mike Kotschenreuther, GS2 was the first Eulerian, gyrokinetic code to be made nonlinear, enabling higher fidelity turbulence calculations than were otherwise available (from gyrofluid or PIC codes). In addition to serving as an early workhorse for experimental teams, GS2 was the principal tool used to study the differences in zonal flows between ITG and ETG systems. GENE was extended to the gyrokinetic limit by Jenko when he was a postdoc at UMD, to confirm the surprising complexity of zonal flow physics first studied in detail with GS2. Starting from the GS2 code base, Candy and Waltz extended Eulerian gyrokinetics to the radially non-local limit with GYRO. At the present time, there are several nonlinear, Eulerian, gyrokinetic solvers in use around the world, including GS2, GENE, GYRO, GKV, CGYRO, GYSELA, Gkeyll, and GX. Only GS2, CGYRO, GKV, and GX remain solely focused on and solely optimized for the reactor relevant regime of small rho star.
Trinity was developed mainly by Michael Barnes to enable predictive, multiscale simulations of tokamak plasmas without resorting to overly simplified reduced models. The intellectual framework and software infrastructure of Trinity were developed as part of the CMPD, demonstrating the first transport timescale, fully nonlinear simulations of tokamak reactors with realistic values of rho star. Edmund Highcock and Noah Mandell later extended Trinity to couple to gyrofluid, GPU modules for turbulence and wrapped it in a nonlinear optimization framework to enable tokamak reactor optimization studies.
AstroGK was abstracted from GS2, to reduce the development costs for people interested in using nonlinear gyrokinetic simulations to study heliospheric (solar wind) and accretion flow problems. Unlike GS2, which can be used to study problems set in stellarator, tokamak, dipole, Z-pinch, or slab geometry, AstroGK treats only the unsheared slab model. Nonetheless, it is fully electromagnetic and has been the key software tool for multiple science teams.
GX was released in 2022. It was "born" as a comprehensive, flux-tube turbulence code, ready to be used to study small rho star tokamak and stellarator plasmas. GX also provides modules for Vlasov-Poisson, Kraichnan-Kazantsev, RMHD, KRMHD, Kuramoto-Sivashinsky, and some machine learning tools.