PHARE

Contributing to PHARE

The solver is written in C++20, the interface in Python, and parallelism uses MPI. Contributions go through GitHub issues and pull requests, as described in CONTRIBUTING.md.

Contribution process

  1. Issue

    Every change, bug fix or feature, starts as an issue that states its motivation, using the bug report or feature request template.

  2. Pull request

    A pull request references its issue and changes the code for a single reason. Pull requests above about 500 lines or 10 files should be split.

  3. Tests

    Unit or functional tests accompany the change; if they cannot, the pull request explains why.

  4. Review and continuous integration

    A maintainer reviews the change and the CI builds and tests it (see below).

Issues labelled "good first issue"

on GitHub

List updated 2026-10-05.

Code organisation

pyphare/Python package: simulation input, running, post-processing.
src/python3/pybind11 bindings, one module per compiled configuration (dimension, interpolation order, number of split particles; MHD variants).
src/simulator/Assembles the components of one configuration.
src/diagnostic/, hdf5/, restarts/Output and checkpoints.
src/amr/Interface to SAMRAI: patch data, refinement and coarsening, level communication, solvers, time integration.
src/core/Physics and numerics without SAMRAI dependency: grid layout, fields, particles, pusher, Faraday, Ampère, Ohm, MHD numerics.

Lower layers do not include upper ones; src/core never includes SAMRAI. Most of the code is header-only C++ templated on dimension and interpolation order.

Continuous integration

  • GitHub Actions: build and test suite on Ubuntu; CodeQL static analysis.
  • TeamCity (LPP): every pull request is built with gcc and with clang (AddressSanitizer), with SAMRAI pre-installed or built as a subproject, and runs about 1,500 tests. Scheduled jobs on master add performance and coverage runs.
  • Activity reports: issues, pull requests, reviews and CI results, week by week: activity reports.

Internships, PhD and postdoctoral positions

Enquiries about working on PHARE: phare@lpp.polytechnique.fr.