ParticleDataBase3D Class Reference

Particle database class for three dimensions. More...

#include <particledatabase.hpp>

Inheritance diagram for ParticleDataBase3D:

ParticleDataBasePP< ParticleP3D > ParticleDataBase List of all members.

Public Member Functions

 ParticleDataBase3D ()
 Constructor.
 ~ParticleDataBase3D ()
 Destructor.
void add_cylindrical_beam_with_energy (uint32_t N, double J, double q, double m, double E, double Tp, double Tt, Vec3D c, Vec3D dir1, Vec3D dir2, double r)
 Add a cylindrical beam with energies.
void add_cylindrical_beam_with_velocity (uint32_t N, double J, double q, double m, double v, double dvp, double dvt, Vec3D c, Vec3D dir1, Vec3D dir2, double r)
 Add a cylindrical beam with velocities.
void add_rectangular_beam_with_energy (uint32_t N, double J, double q, double m, double E, double Tp, double Tt, Vec3D c, Vec3D dir1, Vec3D dir2, double size1, double size2)
 Add a rectangular beam with energies.
void add_rectangular_beam_with_velocity (uint32_t N, double J, double q, double m, double v, double dvp, double dvt, Vec3D c, Vec3D dir1, Vec3D dir2, double size1, double size2)
 Add a rectangular beam with velocities.
void add_3d_KV_beam_with_emittance (uint32_t N, double I, double q, double m, double ay, double by, double ey, double az, double bz, double ez, double Ex, double x0, double y0, double z0)
 Add a 3d beam with defined KV emittance.
void add_3d_gaussian_beam_with_emittance (uint32_t N, double I, double q, double m, double ay, double by, double ey, double az, double bz, double ez, double Ex, double x0, double y0, double z0)
 Add a 3d beam with defined gaussian emittance.

Detailed Description

Particle database class for three dimensions.

Particle database holds the definitions of particles and possibly the trajectories of particles it the particle iterator has saved them. ParticleDataBase3D 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

ParticleDataBase3D::ParticleDataBase3D (  )  [inline]

Constructor.

ParticleDataBase3D::~ParticleDataBase3D (  )  [inline]

Destructor.


Member Function Documentation

void ParticleDataBase3D::add_3d_gaussian_beam_with_emittance ( uint32_t  N,
double  I,
double  q,
double  m,
double  ay,
double  by,
double  ey,
double  az,
double  bz,
double  ez,
double  Ex,
double  x0,
double  y0,
double  z0 
)

Add a 3d 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,y0,z0) (center point). The beam propagates to positive x-direction. The beam is made to match Twiss parameters $ \alpha_y $ (a), $ \beta_y $ (b), $ \epsilon_{y,\mathrm{rms}} $ (e) in projectional direction (y,y') and $ \alpha_z $ (a), $ \beta_z $ (b), $ \epsilon_{z,\mathrm{rms}} $ (e) in projectional direction (z,z').

The beam spread in the projectional space is made according to Gaussian distribution.

void ParticleDataBase3D::add_3d_KV_beam_with_emittance ( uint32_t  N,
double  I,
double  q,
double  m,
double  ay,
double  by,
double  ey,
double  az,
double  bz,
double  ez,
double  Ex,
double  x0,
double  y0,
double  z0 
)

Add a 3d beam with defined KV 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,y0,z0) (center point). The beam propagates to positive x-direction. The beam is made to match Twiss parameters $ \alpha_y $ (a), $ \beta_y $ (b), $ \epsilon_{y,\mathrm{rms}} $ (e) in projectional direction (y,y') and $ \alpha_z $ (a), $ \beta_z $ (b), $ \epsilon_{z,\mathrm{rms}} $ (e) in projectional direction (z,z').

The beam spread in the projectional space is made according to KV/hard-edged (Kapchinsky-Vladimirsky) distribution.

void ParticleDataBase3D::add_cylindrical_beam_with_energy ( uint32_t  N,
double  J,
double  q,
double  m,
double  E,
double  Tp,
double  Tt,
Vec3D  c,
Vec3D  dir1,
Vec3D  dir2,
double  r 
)

Add a cylindrical beam with energies.

Adds a beam consisting of N particles. The beam current density is J (A/m^2), charge of beam particles is q (in multiples of e), mass is m (u). The beam starting surface is a disc of radius r centered at c. The normal direction of the disc is dir3 = dir1 x dir2. The first tangent direction is dir1 and the second is dir1 x dir3. If you want beam to go to positive x-direction, dir1 could be (0,1,0) and dir2 (0,0,1) for example. The beam energy E (eV) is defined in the normal direction. Temperatures are defined in normal (parallel) direction and transverse direction as Tp (eV) and Tt (eV), respectively.

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 ParticleDataBase3D::add_cylindrical_beam_with_velocity ( uint32_t  N,
double  J,
double  q,
double  m,
double  v,
double  dvp,
double  dvt,
Vec3D  c,
Vec3D  dir1,
Vec3D  dir2,
double  r 
)

Add a cylindrical beam with velocities.

Adds a beam consisting of N particles. The beam current density is J (A/m^2), charge of beam particles is q (in multiples of e), mass is m (u). The beam starting surface is a disc of radius r centered at c. The normal direction of the disc is dir3 = dir1 x dir2. The first tangent direction is dir1 and the second is dir1 x dir3. The beam velocity v (m/s) is defined in the normal direction. The velocity distribution standard deviation are defined in normal (parallel) direction and transverse directions as dvp (m/s) and dvt (m/s), respectively

The particle velocities of the beam in direction i are sampled from a gaussian distribution with standard deviation dv_i, which is related to beam temperature by 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 ParticleDataBase3D::add_rectangular_beam_with_energy ( uint32_t  N,
double  J,
double  q,
double  m,
double  E,
double  Tp,
double  Tt,
Vec3D  c,
Vec3D  dir1,
Vec3D  dir2,
double  size1,
double  size2 
)

Add a rectangular beam with energies.

Very much like add_cylindrical_beam_with_energy(), but the beam shape is rectangular. The beam size is defined with two variables, sizex and sizey. These sizes are half the range, i.e. the beam ranges in the first direction from center point - size1 to center point + size1.

void ParticleDataBase3D::add_rectangular_beam_with_velocity ( uint32_t  N,
double  J,
double  q,
double  m,
double  v,
double  dvp,
double  dvt,
Vec3D  c,
Vec3D  dir1,
Vec3D  dir2,
double  size1,
double  size2 
)

Add a rectangular beam with velocities.

Very much like add_cylindrical_beam_with_velocity(), but the beam shape is rectangular. The beam size is defined with two variables, sizex and sizey. These sizes are half the range, i.e. the beam ranges in the first direction from center point - size1 to center point + size1.


The documentation for this class was generated from the following file:
Generated on Thu Apr 21 13:39:59 2011 for IBSimu by  doxygen 1.4.7