Skip to content

Draft: Lagrangian MC particle pusher

George N. Wong requested to merge feature/lagrangian_mc into master

This merge request implements the Lagrangian "Monte Carlo" particle pusher described in Genel+ 2013 (MNRAS.435.1426G).

Changes:

  • Implementation of ParticlesPusher::lagrangian_mc
  • Addition of new ParticleType::lagrangian_mc

As originally opened, this MR should not be approved until design decisions regarding (at least) the following are addressed:

  • IPX, ... vs. IVX, ...
  • Should restrictions be introduced/enforced for which pushers can be used with which particle types?
  • Should the captures for the lambda in the pusher go outside of a switch statement or within an if block?
  • What are best practices regarding creation of the Kokkos::Random_XorShift64_Pool?
  • Is the default behavior for finding flx1(k,j,i) correct when not three_d?
  • What are best practices for auto &flx3_ when not three_d?
  • Are the right fluxes being used? Are the scalings with dx# and dt correct?
  • Closely related to the above: what is the right way to handle the time ordering of the update and the time integrator?
  • This code has not been tested.
  • The particles may or may not be broken in AMR.

Merge request reports