IBSimu
1.0.4
|
Templated particle database base class for different dimensions. More...
#include <particledatabase.hpp>
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. |
Templated particle database base class for different dimensions.
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 | ( | 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.
void ParticleDataBasePP< PP >::add_particle | ( | const Particle< PP > & | pp | ) | [inline] |
Add one particle.
Adds one particle to database.
virtual void ParticleDataBasePP< PP >::clear | ( | void | ) | [inline, virtual] |
Clears the particle database of all particles.
Implements ParticleDataBase.
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] |
Prints internal data to std::cout.
Implements ParticleDataBase.
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 Particle<PP>& ParticleDataBasePP< PP >::particle | ( | uint32_t | i | ) | [inline, virtual] |
Returns a reference to particle i.
Implements ParticleDataBase.
virtual const Particle<PP>& ParticleDataBasePP< PP >::particle | ( | uint32_t | i | ) | const [inline, virtual] |
Returns a const reference to particle i.
Implements ParticleDataBase.
virtual void ParticleDataBasePP< PP >::reserve | ( | size_t | size | ) | [inline, virtual] |
Reserve memory for size particles.
Implements ParticleDataBase.
virtual size_t ParticleDataBasePP< PP >::size | ( | void | ) | const [inline, virtual] |
Returns particle count.
Implements ParticleDataBase.
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] |
Returns number of trajectory points for particle i.
Implements ParticleDataBase.
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] |
Gets the particle i trajectory point j into vel, loc and t.
Implements ParticleDataBase.
std::vector<Particle<PP> > ParticleDataBasePP< PP >::_particles [protected] |
Vector of type PP particles.