Public Member Functions | List of all members
ParticleDataBaseCyl Class Reference

Particle database class for cylindrical systems. More...

#include <particledatabase.hpp>

Inheritance diagram for ParticleDataBaseCyl:
ParticleDataBase

Public Member Functions

 ParticleDataBaseCyl ()
 Constructor.
 ParticleDataBaseCyl (const ParticleDataBaseCyl &pdb)
 Copy constructor.
 ParticleDataBaseCyl (std::istream &s)
 Constructor for loading particle statistics from a file.
 ~ParticleDataBaseCyl ()
 Destructor.
const ParticleDataBaseCyloperator= (const ParticleDataBaseCyl &pdb)
 Assignment.
virtual ParticleCylparticle (uint32_t i)
 Returns a reference to particle i.
virtual const ParticleCylparticle (uint32_t i) const
 Returns a const reference to particle i.
virtual const ParticlePCyltrajectory_point (uint32_t i, uint32_t j) const
 Gets the particle i trajectory point j as particle point.
void add_particle (double IQ, double q, double m, const ParticlePCyl &x)
 Add one particle.
void add_particle (const ParticleCyl &p)
 Add one particle.
void add_2d_beam_with_energy (uint32_t N, double J, double q, double m, double E, double Tp, double Tt, double x1, double y1, double x2, double y2)
 Add a 2d beam with energies.
void add_2d_beam_with_velocity (uint32_t N, double J, double q, double m, double v, double dvp, double dvt, double x1, double y1, double x2, double y2)
 Add a 2d beam with velocities.
void add_2d_full_gaussian_beam (uint32_t N, double I, double q, double m, double Ex, double Tp, double Tt, double x0, double dr)
 Add a 2d beam with gaussian profile and velocity distribution.
void add_2d_gaussian_beam_with_emittance (uint32_t N, double I, double q, double m, double a, double b, double e, double Ex, double x0)
 Add a 2d beam with defined gaussian emittance.
virtual void save (const std::string &filename) const
 Saves data to a new file filename.
virtual void save (std::ostream &s) const
 Saves data to stream.
virtual void debug_print (std::ostream &os) const
 Print debugging information to os.
- Public Member Functions inherited from ParticleDataBase
virtual ~ParticleDataBase ()
 Virtual destructor.
void set_thread_count (uint32_t threadcount)
 Set the number of threads used for calculation.
void set_accuracy (double epsabs, double epsrel)
 Set the accuracy requirement for calculation.
void set_bfield_suppression (const CallbackFunctorD_V *functor)
 Set magnetic field suppression location depedent callback functor.
void set_trajectory_handler_callback (const TrajectoryHandlerCallback *thand_cb)
 Set trajectory handler callback.
void set_trajectory_end_callback (const TrajectoryEndCallback *tend_cb)
 Set trajectory end callback.
void set_polyint (bool polyint)
 Set the interpolation type to polynomial(true) or linear(false).
bool get_polyint (void) const
 Get current interpolation type.
void set_max_steps (uint32_t maxsteps)
 Set maximum number of steps to iterate.
void set_max_time (double maxt)
 Set maximum lifetime of particle in simulation.
void set_save_trajectories (uint32_t div)
 Set trajectory saving.
uint32_t get_save_trajectories (void) const
 Get trajectory saving.
void set_mirror (const bool mirror[6])
 Set particle mirroring on boundaries.
void get_mirror (bool mirror[6]) const
 Get particle mirroring on boundaries.
int get_iteration_number (void) const
 Get the number of iteration rounds done.
double get_rhosum (void) const
 Return sum of defined beam space charge density.
void set_rhosum (double rhosum)
 Set sum of defined beam space charge density.
const ParticleStatisticsget_statistics (void) const
 Get particle iterator statistics.
geom_mode_e geom_mode () const
 Return geometry mode.
size_t size (void) const
 Returns particle count.
double traj_length (uint32_t i) const
 Returns the length of trajectory i.
size_t traj_size (uint32_t i) const
 Returns number of trajectory points for particle i.
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.
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.
void build_trajectory_density_field (ScalarField &tdens) const
 Build trajectory density field.
void clear (void)
 Clears the particle database of all particles.
void clear_trajectories (void)
 Clears the particle trajectory database.
void clear_trajectory (size_t a)
 Clears particle a in the particle trajectory database.
void reserve (size_t size)
 Reserve memory for size particles.
void iterate_trajectories (ScalarField &scharge, const VectorField &efield, const VectorField &bfield, const Geometry &g)
 Iterate particles through the geometry.
void step_particles (ScalarField &scharge, const VectorField &efield, const VectorField &bfield, const Geometry &g, double dt)
 Step particles forward by time step dt.

Additional Inherited Members

- Protected Member Functions inherited from ParticleDataBase
 ParticleDataBase ()
 Constructor.
 ParticleDataBase (const ParticleDataBase &pdb)
 Copy constructor.
const ParticleDataBaseoperator= (const ParticleDataBase &pdb)
 Assignment.
void set_implementation_pointer (class ParticleDataBaseImp *imp)
 Set particle database implementation pointer.

Detailed Description

Particle database class for cylindrical systems.

Particle database holds the definitions of particles and possibly the trajectories of particles it the particle iterator has saved them. ParticleDataBaseCyl provides a variety of convenience functions for defining particle beams.

Particles are always stored in the database in the order they are defined. When reading back the simulation results, the order can be used to identify the particles.

Constructor & Destructor Documentation

ParticleDataBaseCyl::ParticleDataBaseCyl ( )

Constructor.

ParticleDataBaseCyl::ParticleDataBaseCyl ( const ParticleDataBaseCyl pdb)

Copy constructor.

ParticleDataBaseCyl::ParticleDataBaseCyl ( std::istream &  s)

Constructor for loading particle statistics from a file.

ParticleDataBaseCyl::~ParticleDataBaseCyl ( )

Destructor.

Member Function Documentation

void ParticleDataBaseCyl::add_2d_beam_with_energy ( uint32_t  N,
double  J,
double  q,
double  m,
double  E,
double  Tp,
double  Tt,
double  x1,
double  y1,
double  x2,
double  y2 
)

Add a 2d beam with energies.

Adds a beam consisting of N particles. The beam current density is J (A/m^2), charge of beam particle is q (in multiples of e), mass is m (u). The beam is defined on a line from (x1, y1) to (x2, y2). The beam propagates into a direction 90 degrees clockwise from the direction of vector pointing from (x1, y1) to (x2, y2) with a mean energy E (eV). The beam has parallel temperature Tp (eV) and transverse temperature Tt (eV).

The particle speeds of the beam in direction i are sampled from a gaussian distribution with standard deviation dv_i = sqrt(T_i*e/m), where T_i is the beam temperature in direction (eV), e is electron charge (C) and m is the mass of the ion (kg).

Space charge J/v is added to the rhosum variable.

void ParticleDataBaseCyl::add_2d_beam_with_velocity ( uint32_t  N,
double  J,
double  q,
double  m,
double  v,
double  dvp,
double  dvt,
double  x1,
double  y1,
double  x2,
double  y2 
)

Add a 2d beam with velocities.

Adds a beam consisting of N particles. The beam current density is J (A/m^2), charge of beam particle is q (in multiples of e), mass is m (u). The beam is defined on a line from (x1, y1) to (x2, y2). The beam propagates into a direction 90 degrees clockwise from the direction of vector pointing from (x1, y1) to (x2, y2) with a mean velocity v (m/s). The beam has parallel gaussian velocity distribution with standard deviation dvp (m/s) and transverse gaussian velocity distribution with standard deviation dvt (m/s).

Space charge J/v is added to the rhosum variable.

void ParticleDataBaseCyl::add_2d_full_gaussian_beam ( uint32_t  N,
double  I,
double  q,
double  m,
double  Ex,
double  Tp,
double  Tt,
double  x0,
double  dr 
)

Add a 2d beam with gaussian profile and velocity distribution.

void ParticleDataBaseCyl::add_2d_gaussian_beam_with_emittance ( uint32_t  N,
double  I,
double  q,
double  m,
double  a,
double  b,
double  e,
double  Ex,
double  x0 
)

Add a 2d beam with defined gaussian emittance.

Adds a beam consisting of N particles and a total current of I (A). The particles are defined to have equal currents, charge q (in multiples of e) and mass m (u). The starting energy of the beam is Ex (eV) and the starting location x0 (center point). The beam propagates to positive x-direction. The beam is made to match Twiss parameters $ \alpha $ (a), $ \beta $ (b), $ \epsilon $ (e) in projectional directions (y,y') and (z,z').

The even beam current distribution is different from other beam definitions for cylindrical coordinates. This might change soon.

Todo:
Redo particle distribution definition from emittance for cylindrical symmetry systems.
void ParticleDataBaseCyl::add_particle ( double  IQ,
double  q,
double  m,
const ParticlePCyl x 
)

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 ParticleDataBaseCyl::add_particle ( const ParticleCyl p)

Add one particle.

Adds one particle to database.

virtual void ParticleDataBaseCyl::debug_print ( std::ostream &  os) const
virtual

Print debugging information to os.

Implements ParticleDataBase.

const ParticleDataBaseCyl& ParticleDataBaseCyl::operator= ( const ParticleDataBaseCyl pdb)

Assignment.

virtual ParticleCyl& ParticleDataBaseCyl::particle ( uint32_t  i)
virtual

Returns a reference to particle i.

Implements ParticleDataBase.

virtual const ParticleCyl& ParticleDataBaseCyl::particle ( uint32_t  i) const
virtual

Returns a const reference to particle i.

Implements ParticleDataBase.

virtual void ParticleDataBaseCyl::save ( const std::string &  filename) const
virtual

Saves data to a new file filename.

Implements ParticleDataBase.

virtual void ParticleDataBaseCyl::save ( std::ostream &  s) const
virtual

Saves data to stream.

Implements ParticleDataBase.

virtual const ParticlePCyl& ParticleDataBaseCyl::trajectory_point ( uint32_t  i,
uint32_t  j 
) const
virtual

Gets the particle i trajectory point j as particle point.

Implements ParticleDataBase.


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