PHARE: Parallel Hybrid particle-in-cell code with Adaptive mesh REfinement

Hybrid PIC codes are interesting multi-scale tools…

Hybrid Particle-In-Cell codes solve kinetic ion dynamics and model the electrons as a fluid to get the electric field with the generalized Ohm’s law rather. It is an interesting formalism to solve plasma processes in collisionless systems since it can evolve much bigger systems than fully kinetic codes and for longer times, at the price of neglecting electron kinetic scales.

3D hybrid PIC simulations of magnetic reconnection

… but cannot yet fill the gap between sub-ion and global scales

However hybrid codes are still much more computationally demanding than fluid codes. First because they demand to solve particle dynamics, but above all because the Hall term brings dispersive waves such as the whistlers, which are a very severe contraint on the time step. As a result, solving processes such as magnetic reconnection, which demand sub-ion scale dissipative terms to be resolved, in a large scale or global context, is still not possible.

High resolution should only exist where needed

One key aspect of the problem is to realize that one does often not need to have a strong spatial resolution everywhere in the simulated system. For instance, considering the coupling of the solar wind to the magnetophere, one would think that the resolution should be progressively increased around the dayside interaction region, then around the shock and magnetopause boundaries, and then in the fine structures developed by plasma processes occuring there.

To answer problems like the on just described, on needs an Hybrid PIC code that can self-consistently adapt its mesh size to the underlying dynamics it is solving. This is precisely what the project PHARE aims at.

The magnetosphere where the gray area could be a high mesh resolution region

From Galileo’s to the Hubble telescope

PHARE starts its development at a pivotal time, where codes are transitioning from the old school one-file code written (in fortran 77), debugged and used by the same physicist on his/her own machine, to codes targeting tens or hundreds of thousands of cores for millions of CPU hours. This new generation of codes cannot be developped by one scientist alone. They aim at serving broad communities. These codes are complex, tens of thousands of lines of codes for which many users, among which students, have no clue how they work. They however still need to manipulate them to adapt them to their own problem in a flexible, user-friendly way. Above all, they need to trust the code produces validated results.

The second ambition behind the project PHARE is thus also to develop a code that would be open source, very user friendly and flexible enough to serve a broad community among the plasma- and astro-physicists.

More technical details

The code is open source and versioned with git. It is regularly pushed on a GitHub repository. It is developed with a combinaison of modern C++ and python. Most of the code is covered by unit tests, thousands of which are automatically ran and validated after each commit and pull request.