Particle Pusher

EPOCH’s particle pusher is based on the one from the PSC by Hartmut Ruhl, and is a Birdsall and Landon type PIC scheme using Villasenor and Buneman current weighting. It is contained in the file particles.F90. The operation of the particle pusher is fairly simple, but there are a few elements which need some clarification.

  • The update to the particle momenta etc. does not explicitly include the particle weight function. This means that the pseudoparticle momenta etc. are the momentum for a single real particle of the collection of real particles represented by that pseudoparticle, NOT the momentum of the whole collection of real particles.
  • gamma - The variable gamma which appears in various places is the relativistic $\gamma$ which is needed to convert the particle momentum into the particle velocity using the relation $\vec{p} = \gamma m \vec{v}$. Here, $\vec{p}$ is the particle momentum, $\vec{v}$ is the particle velocity and $m$ is the particle rest mass. If EPOCH was not relativistic then this would simply be $1$. Since EPOCH is relativistic, gamma is defined as $\left(\vec{p}.\vec{p}/m c^2 + 1\right)^{1/2}$.
  • cell_x1=cell_x1+1 - There are lines like this after all the sections of the routine where the cell a particle is in is calculated. This is because, for a cell centred variable, the domain runs (1:nx,1:ny,1:nz) rather than (0:nx-1,0:ny-1,0:nz-1).

The most complicated parts of the particle pusher are interpolating the grid electric and magnetic fields over the macro-particle shape, and the current density solver.

Previous
Next