About Me

I am a theoretical and computational plasma physicist, working at the Central Laser Facility at the STFC Rutherford Appleton Laboratory. My main work is based around the investigation of plasmas and laser-plasma interactions using theoretical models and numerical simulations. I develop numerical methods as well as robust and scalable simulation codes for high-performance computing environments.

Main interests

Computational plasma physics

One of my main research focuses is on computational plasma physics, especially kinetic simulations and laser plasma interactions. One of the main computational tools are Particle-in-Cell (PIC) codes that follow the trajectories of millions or even billions of simulation particles in self-consistently calculated electromagnetic fields. One such code that I helped develop is EPOCH, an open source PIC code that is used by many groups around the world for simulating problems in plasma and astrophysics.

Some topics I have investigated in this field are

  • non-linear wave interactions and harmonic generation
  • fast electron transport in high-intensity laser-plasma interactions
  • low-temperature plasma-wall interactions and cathod sheaths

Numerical Methods

Simulation codes rely on the application of numerical methods that approximate the underlying physical equations. A big part of my research is concerned with investigating, improving and implementing these methods. In one of my recent projects, I compared a number of integration schemes for relativistic charged particle motion in electromagnetic fields. 

Other topics in this field I am interested in are

  • non-linear Maxwell solvers
  • semi-Lagrangian Vlasov codes
  • hybrid simulation schemes 

Scientific software architecture

Large scale simulation codes should be modular, flexible, and scalable in order to maximise their impact. I enjoy applying my professional industry experience in software development to scientific code development. One outcome of this is my Schnek library which aids the rapid development of simulation codes for high-performance computing architectures.

Some other interests include 

  • simulation libraries in C++ and Python,
  • code modularisation,
  • maintainable research code bases,
  • testing and verification,
  • reliable agentic coding practices.

High-performance computing and GPU portability

Modern codes need to run on classic CPU based clusters as well as newer GPU and mixed architecture computers. Ensuring performance portability means that the same code runs at optimal performance across the different architectures. I am currently working at making my Schnek library portable using the Kokkos library as a base. This will allow simulation code developers to focus on the numerical aspects without having to be specialists in high-performance computing. 

Further topics in this field include 

  • parallelisation strategies for MPI,
  • asynchronous data transfer, 
  • HDF5 data export.

Current research focus 

My current research focuses on methods for relativistic Particle-in-Cell (PIC) simulations. Most recently, I published a paper on the comparison of relativistic particle integration schemes. These so-called particle pushers are a core element of PIC codes. Understanding their accuracy and failure modes is crucial for interpreting the results of large scale simulations of relativistic plasmas in laser-plasma interactions, astrophysics and other contexts.

One important finding was that an important class of explicit, volume preserving schemes could be extended to arbitrary order accuracy. This could provide more efficient alternatives to subcycling methods currently used.

The paper is available here, and I have also made the code containing the implementations and test cases from the paper available in this Github repository. 

Open Source Software Projects 

As part of my work I manage a range of open source projects.

Schnek is a general library helping the rapid development of high-performance simulation codes on regular grids. It promotes modular development and separates parallelisation strategies from grid storage and I/O. At the moment, I am extending the functionality of the library to support performance portability across CPU and GPU architectures using Kokkos and CUDA.

particle-integrators is the companion code for my publications on relativistic particle pushers. It contains all the integration schemes and the test cases required to reproduce the data in the paper. 

MPulse is a non-linear Maxwell solver. The code is currently being ported to make full use of the Schnek library and its performance-portability features. 

OPar is a demo project for the Schnek library. At the moment, it is a minimalist PIC code but there are some plans to expand it once the upcoming version of Schnek is stable. 

If you feel you want to contribute to any of these codes, feel free to contact me.