#include <particledatabase.hpp>
Inheritance diagram for ParticleDataBasePP< PP >:
Public Member Functions | |
~ParticleDataBasePP () | |
Destructor. | |
virtual size_t | size (void) const |
Returns particle count. | |
virtual Particle< PP > & | particle (uint32_t i) |
Returns a reference to particle i. | |
virtual const Particle< PP > & | particle (uint32_t i) const |
Returns a const reference to particle i. | |
virtual size_t | traj_size (uint32_t i) const |
Returns number of trajectory points for particle i. | |
virtual void | trajectory_point (double &t, Vec3D &loc, Vec3D &vel, uint32_t i, uint32_t j) const |
Gets the particle i trajectory point j into vel, loc and t. | |
virtual void | trajectories_at_plane (TrajectoryDiagnosticData &tdata, coordinate_axis_e axis, double val, const std::vector< trajectory_diagnostic_e > &diagnostics) const |
Gets trajectory diagnostic diagnostics at plane axis = val in trajectory diagnostic data object tdata. | |
virtual void | clear (void) |
Clears the particle database of all particles. | |
virtual void | clear_trajectories (void) |
Clears the particle trajectory database. | |
virtual void | reserve (size_t size) |
Reserve memory for size particles. | |
void | add_particle (double IQ, double q, double m, const PP &x) |
Add one particle. | |
void | add_particle (const Particle< PP > &pp) |
Add one particle. | |
virtual void | iterate_trajectories (ScalarField &scharge, const Efield &efield, const VectorField &bfield, const Geometry &g) |
Iterate particles through the geometry. | |
virtual void | step_particles (const Efield &efield, const Geometry &g, double dt) |
Step particles forward by time step dt. | |
virtual void | debug_print (void) const |
Prints internal data to std::cout. | |
Protected Member Functions | |
ParticleDataBasePP () | |
Constructor. | |
Protected Attributes | |
std::vector< Particle< PP > > | _particles |
Vector of type PP particles. |
Particle database holds the definitions of particles, particle iteration parameters and possibly the trajectories of particles if the particle iterator has saved them. Particle database also provides a variety of convenience functions for defining particle beams.
Specialized derived classes ParticleDataBase2D, ParticleDataBaseCyl and ParticleDataBase3D exist for use with different dimensionalities. The templated ParticleDataBasePP class provides all the common functions.
ParticleDataBasePP< PP >::ParticleDataBasePP | ( | ) | [inline, protected] |
Constructor.
ParticleDataBasePP< PP >::~ParticleDataBasePP | ( | ) | [inline] |
Destructor.
void ParticleDataBasePP< PP >::add_particle | ( | const Particle< PP > & | pp | ) | [inline] |
Add one particle.
Adds one particle to database.
void ParticleDataBasePP< PP >::add_particle | ( | double | IQ, | |
double | q, | |||
double | m, | |||
const PP & | x | |||
) | [inline] |
Add one particle.
Adds one particle to particle database. Particle properties are: IQ is the current (A) in time-independent or charge (C) in time-dependent simulations carried by the particle cloud that the simulated particle represents, q is the charge state of the microscopic particle (in multiples of e), m is the mass of the microscopic particle (u) and x contains the time, position (m) and velocity (m/s) of the particle.
virtual void ParticleDataBasePP< PP >::clear | ( | void | ) | [inline, virtual] |
virtual void ParticleDataBasePP< PP >::clear_trajectories | ( | void | ) | [inline, virtual] |
Clears the particle trajectory database.
The particle definitions are conserved, but existing trajectories are cleared.
Implements ParticleDataBase.
virtual void ParticleDataBasePP< PP >::debug_print | ( | void | ) | const [inline, virtual] |
virtual void ParticleDataBasePP< PP >::iterate_trajectories | ( | ScalarField & | scharge, | |
const Efield & | efield, | |||
const VectorField & | bfield, | |||
const Geometry & | g | |||
) | [inline, virtual] |
Iterate particles through the geometry.
The particles defined in particle database pdb are iterated through electric field efield and magnetic field bfield in geometry g. Space charge density field scharge is set from the particle trajectories.
virtual const Particle<PP>& ParticleDataBasePP< PP >::particle | ( | uint32_t | i | ) | const [inline, virtual] |
virtual Particle<PP>& ParticleDataBasePP< PP >::particle | ( | uint32_t | i | ) | [inline, virtual] |
virtual void ParticleDataBasePP< PP >::reserve | ( | size_t | size | ) | [inline, virtual] |
virtual size_t ParticleDataBasePP< PP >::size | ( | void | ) | const [inline, virtual] |
virtual void ParticleDataBasePP< PP >::step_particles | ( | const Efield & | efield, | |
const Geometry & | g, | |||
double | dt | |||
) | [inline, virtual] |
Step particles forward by time step dt.
The particles defined in particle database pdb are stepped forward one time step in electric field efield and geometry g.
virtual size_t ParticleDataBasePP< PP >::traj_size | ( | uint32_t | i | ) | const [inline, virtual] |
virtual void ParticleDataBasePP< PP >::trajectories_at_plane | ( | TrajectoryDiagnosticData & | tdata, | |
coordinate_axis_e | axis, | |||
double | val, | |||
const std::vector< trajectory_diagnostic_e > & | diagnostics | |||
) | const [inline, virtual] |
Gets trajectory diagnostic diagnostics at plane axis = val in trajectory diagnostic data object tdata.
Implements ParticleDataBase.
virtual void ParticleDataBasePP< PP >::trajectory_point | ( | double & | t, | |
Vec3D & | loc, | |||
Vec3D & | vel, | |||
uint32_t | i, | |||
uint32_t | j | |||
) | const [inline, virtual] |
std::vector<Particle<PP> > ParticleDataBasePP< PP >::_particles [protected] |
Vector of type PP particles.