Quantum Electrodynamics (QED)

Quantum synchrotron

Note

Section empty!

Breit-Wheeler

Note

Section empty!

Schwinger process

If the code is compiled with QED and the user activates the Schwinger process in the input file, electron-positron pairs can be created in vacuum in the function MultiParticleContainer::doQEDSchwinger:

void MultiParticleContainer::doQEDSchwinger()

If Schwinger process is activated, this function is called at every timestep in Evolve and is used to create Schwinger electron-positron pairs. Within this function we loop over all cells to calculate the number of created physical pairs. If this number is higher than 0, we create a single particle per species in this cell, with a weight corresponding to the number of physical particles.

MultiParticleContainer::doQEDSchwinger in turn calls the function filterCreateTransformFromFAB:

Filter Create Transform Function

filterCreateTransformFromFAB proceeds in three steps. In the filter phase, we loop on every cell and calculate the number of physical pairs created within the time step dt as a function of the electromagnetic field at the given cell position. This probabilistic calculation is done via a wrapper that calls the PICSAR library. In the create phase, the particles are created at the desired positions, currently at the cell nodes. In the transform phase, we assign a weight to the particles depending on the number of physical pairs created. At most one macroparticle is created per cell per timestep per species, with a weight corresponding to the total number of physical pairs created.

So far the Schwinger module requires using warpx.grid_type = collocated or algo.field_gathering = momentum-conserving (so that the auxiliary fields are calculated on the nodes) and is not compatible with either mesh refinement, RZ coordinates or single precision.