IBSimu  1.0.4
Public Member Functions | Protected Member Functions | Protected Attributes
ParticleDataBasePP< PP > Class Template Reference

Templated particle database base class for different dimensions. More...

#include <particledatabase.hpp>

Inheritance diagram for ParticleDataBasePP< PP >:
ParticleDataBase

List of all members.

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.

Detailed Description

template<class PP>
class ParticleDataBasePP< PP >

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.


Constructor & Destructor Documentation

template<class PP>
ParticleDataBasePP< PP >::ParticleDataBasePP ( ) [inline, protected]

Constructor.

template<class PP>
ParticleDataBasePP< PP >::~ParticleDataBasePP ( ) [inline]

Destructor.


Member Function Documentation

template<class PP>
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.

template<class PP>
void ParticleDataBasePP< PP >::add_particle ( const Particle< PP > &  pp) [inline]

Add one particle.

Adds one particle to database.

template<class PP>
virtual void ParticleDataBasePP< PP >::clear ( void  ) [inline, virtual]

Clears the particle database of all particles.

Implements ParticleDataBase.

template<class PP>
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.

template<class PP>
virtual void ParticleDataBasePP< PP >::debug_print ( void  ) const [inline, virtual]

Prints internal data to std::cout.

Implements ParticleDataBase.

template<class PP>
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.

template<class PP>
virtual Particle<PP>& ParticleDataBasePP< PP >::particle ( uint32_t  i) [inline, virtual]

Returns a reference to particle i.

Implements ParticleDataBase.

template<class PP>
virtual const Particle<PP>& ParticleDataBasePP< PP >::particle ( uint32_t  i) const [inline, virtual]

Returns a const reference to particle i.

Implements ParticleDataBase.

template<class PP>
virtual void ParticleDataBasePP< PP >::reserve ( size_t  size) [inline, virtual]

Reserve memory for size particles.

Implements ParticleDataBase.

template<class PP>
virtual size_t ParticleDataBasePP< PP >::size ( void  ) const [inline, virtual]

Returns particle count.

Implements ParticleDataBase.

template<class PP>
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.

template<class PP>
virtual size_t ParticleDataBasePP< PP >::traj_size ( uint32_t  i) const [inline, virtual]

Returns number of trajectory points for particle i.

Implements ParticleDataBase.

template<class PP>
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.

template<class PP>
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.


Member Data Documentation

template<class PP>
std::vector<Particle<PP> > ParticleDataBasePP< PP >::_particles [protected]

Vector of type PP particles.


The documentation for this class was generated from the following file: