ParticleTracker¶
-
class
plasmapy.simulation.
ParticleTracker
(plasma, particle_type='p', n_particles=1, scaling=1, dt=<Quantity inf s>, nt=inf, integrator='explicit_boris')¶ Bases:
object
Object representing a species of particles: ions, electrons, or simply a group of particles with a particular initial velocity distribution.
- Parameters
plasma (
Plasma
) – plasma from which fields can be pulledtype (str) – particle type. See
plasmapy.particles.atomic
for suitable arguments. The default is a proton.n_particles (int) – number of macroparticles. The default is a single particle.
scaling (float) – number of particles represented by each macroparticle. The default is 1, which means a 1:1 correspondence between particles and macroparticles.
dt (
astropy.units.Quantity
) – length of timestepnt (int) – number of timesteps
-
x
¶
-
v
¶ Current position and velocity, respectively. Shape (n, 3).
-
position_history
¶
-
velocity_history
¶ History of position and velocity. Shape (nt, n, 3).
-
q
¶
-
m
¶ Charge and mass of particle.
-
eff_q
¶
-
eff_m
¶ Total charge and mass of macroparticle.
Examples
See Particle Stepper Notebook.
Attributes Summary
Calculates the kinetic energy history for each particle.
Methods Summary
boris_push
([init])Implements the Boris algorithm for moving particles and updating their velocities.
plot_time_trajectories
([plot])Draws position history versus time.
Draws trajectory history.
run
()Runs a simulation instance.
Test conservation of kinetic energy.
Attributes Documentation
-
integrators
= {'explicit_boris': <function boris_push>}¶
-
kinetic_energy_history
¶ Calculates the kinetic energy history for each particle.
- Returns
Array of kinetic energies, shape (nt, n).
- Return type
Methods Documentation
-
boris_push
(init=False)¶ Implements the Boris algorithm for moving particles and updating their velocities.
- Parameters
init (bool (optional)) – If
True
, does not change the particle positions and sets dt to -dt/2.
Notes
The Boris algorithm is the standard energy conserving algorithm for particle movement in plasma physics. See 1 for more details.
Conceptually, the algorithm has three phases:
Add half the impulse from electric field.
Rotate the particle velocity about the direction of the magnetic field.
Add the second half of the impulse from the electric field.
This ends up causing the magnetic field action to be properly “centered” in time, and the algorithm conserves energy.
References
- 1
C. K. Birdsall, A. B. Langdon, “Plasma Physics via Computer Simulation”, 2004, p. 58-63
-
plot_time_trajectories
(plot='xyz')¶ Draws position history versus time.
- Parameters
plot (str (optional)) – Enable plotting of position component x, y, z for each of these letters included in
plot
.
-
plot_trajectories
()¶ Draws trajectory history.
-
run
()¶ Runs a simulation instance.
-
test_kinetic_energy
()¶ Test conservation of kinetic energy.