particledatabase.hpp
Go to the documentation of this file.
179 /* ******************************************************************************************* *
181 * ******************************************************************************************* */
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...
Definition: particledatabase.cpp:252
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.
Definition: particledatabase.cpp:406
virtual void save(const std::string &filename) const =0
Saves data to a new file filename.
virtual ~TrajectorySurfaceCollisionCallback()
Virtual destructor.
Definition: particledatabase.hpp:91
virtual const ParticlePCyl & trajectory_point(uint32_t i, uint32_t j) const
Gets the particle i trajectory point j as particle point.
Definition: particledatabase.cpp:525
const ParticleDataBase2D & operator=(const ParticleDataBase2D &pdb)
Assignment.
Definition: particledatabase.cpp:358
virtual const ParticleP3D & trajectory_point(uint32_t i, uint32_t j) const
Gets the particle i trajectory point j as particle point.
Definition: particledatabase.cpp:687
void get_mirror(bool mirror[6]) const
Get particle mirroring on boundaries.
Definition: particledatabase.cpp:192
Trajectory diagnostics.
Scalar fields.
~NPlasmaBfieldSuppression()
Destructor.
Definition: particledatabase.hpp:167
virtual void debug_print(std::ostream &os) const =0
Print debugging information to os.
scharge_deposition_e get_scharge_deposition(void) const
Get space charge deposition type.
Definition: particledatabase.cpp:150
void add_3d_waterbag_beam_with_emittance(uint32_t N, double I, double q, double m, double E0, double a1, double b1, double e1, double a2, double b2, double e2, Vec3D c, Vec3D dir1, Vec3D dir2)
Add a 3d beam with defined waterbag emittance.
Definition: particledatabase.cpp:763
geom_mode_e geom_mode() const
Return geometry mode.
Definition: particledatabase.cpp:222
virtual ~ParticleDataBase()
Virtual destructor.
Definition: particledatabase.cpp:61
ParticleDataBase2D(const Geometry &geom)
Constructor.
Definition: particledatabase.cpp:323
void set_thread_count(uint32_t threadcount)
Set the number of threads used for calculation.
Definition: particledatabase.hpp:238
virtual void debug_print(std::ostream &os) const
Print debugging information to os.
Definition: particledatabase.cpp:619
void add_cylindrical_beam_with_total_energy(uint32_t N, double J, double q, double m, double Etot, const ScalarField &epot, double Tp, double Tt, Vec3D c, Vec3D dir1, Vec3D dir2, double r)
Add a cylindrical beam with energies.
Definition: particledatabase.cpp:721
void add_particle(double IQ, double q, double m, const ParticlePCyl &x)
Add one particle.
Definition: particledatabase.cpp:547
void step_particles(MeshScalarField &scharge, const VectorField &efield, const VectorField &bfield, double dt)
Step particles forward by time step dt.
Definition: particledatabase.cpp:310
Magnetic field plasma suppression for negative ion extraction.
Definition: particledatabase.hpp:153
const ParticleDataBaseCyl & operator=(const ParticleDataBaseCyl &pdb)
Assignment.
Definition: particledatabase.cpp:503
virtual const ParticlePBase & trajectory_point(uint32_t i, uint32_t j) const =0
Gets the particle i trajectory point j as particle point.
Particle and particle point objects
void set_save_all_points(bool save_points)
Set trajectory saving.
Definition: particledatabase.cpp:168
void add_2d_beam_with_total_energy(uint32_t N, double J, double q, double m, double Etot, const ScalarField &epot, double Tp, double Tt, double x1, double y1, double x2, double y2)
Add a 2d beam with total energy.
Definition: particledatabase.cpp:567
void add_particle(double IQ, double q, double m, const ParticleP3D &x)
Add one particle.
Definition: particledatabase.cpp:701
void trajectories_at_free_plane(TrajectoryDiagnosticData &tdata, const Vec3D &c, const Vec3D &o, const Vec3D &p, const std::vector< trajectory_diagnostic_e > &diagnostics) const
Get trajectory diagnostic on a plane.
Definition: particledatabase.cpp:783
void trajectories_at_plane(std::vector< ParticleCyl > &tdata, coordinate_axis_e axis, double val) const
Gets trajectory data at plane axis = val as particles in vector tdata.
Definition: particledatabase.cpp:531
void set_max_steps(uint32_t maxsteps)
Set maximum number of steps to iterate.
Definition: particledatabase.cpp:156
const ParticleDataBase3D & operator=(const ParticleDataBase3D &pdb)
Assignment.
Definition: particledatabase.cpp:665
void export_path_manager_data(const std::string &filename, double ref_E, double ref_q, double ref_m, const Vec3D &c, const Vec3D &o, const Vec3D &p) const
Export particle data as Path Manager data.
Definition: particledatabase.cpp:791
double get_rhosum(void) const
Return sum of defined beam space charge density.
Definition: particledatabase.cpp:204
Base types.
~ParticleDataBase3D()
Destructor.
Definition: particledatabase.cpp:659
void build_trajectory_density_field(MeshScalarField &tdens) const
Build trajectory density field.
Definition: particledatabase.cpp:297
const ParticleDataBase & operator=(const ParticleDataBase &pdb)
Assignment.
Definition: particledatabase.cpp:66
void add_3d_KV_beam_with_emittance(uint32_t N, double I, double q, double m, double E0, double a1, double b1, double e1, double a2, double b2, double e2, Vec3D c, Vec3D dir1, Vec3D dir2)
Add a 3d beam with defined KV emittance.
Definition: particledatabase.cpp:753
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.
Definition: particledatabase.cpp:576
void set_trajectory_surface_collision_callback(TrajectorySurfaceCollisionCallback *tsur_cb)
Set trajectory surface collision callback.
Definition: particledatabase.cpp:102
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, double y0)
Add a 2d beam with defined gaussian emittance.
Definition: particledatabase.cpp:430
Particle database class for three dimensions.
Definition: particledatabase.hpp:994
virtual void save(const std::string &filename) const
Saves data to a new file filename.
Definition: particledatabase.cpp:438
void clear_trajectory(size_t a)
Clears particle a in the particle trajectory database.
Definition: particledatabase.cpp:273
virtual void debug_print(std::ostream &os) const
Print debugging information to os.
Definition: particledatabase.cpp:818
void add_2d_KV_beam_with_emittance(uint32_t N, double I, double q, double m, double a, double b, double e, double Ex, double x0, double y0)
Add a 2d beam with defined KV emittance.
Definition: particledatabase.cpp:422
void set_surface_collision(bool surface_collision)
Set surface collision model to be used.
Definition: particledatabase.cpp:114
double traj_length(uint32_t i) const
Returns the length of trajectory i.
Definition: particledatabase.cpp:234
void set_rhosum(double rhosum)
Set sum of defined beam space charge density.
Definition: particledatabase.cpp:210
virtual void debug_print(std::ostream &os) const
Print debugging information to os.
Definition: particledatabase.cpp:457
Magnetic field plasma suppression for positive ion extraction.
Definition: particledatabase.hpp:118
void set_relativistic(bool enable)
Set relativistic particle iteration.
Definition: particledatabase.cpp:108
Definition: callback.hpp:61
void reserve(size_t size)
Reserve memory for size particles.
Definition: particledatabase.cpp:291
void set_scharge_deposition(scharge_deposition_e type)
Set space charge deposition type.
Definition: particledatabase.cpp:144
Class for trajectory diagnostic data.
Definition: trajectorydiagnostics.hpp:127
void set_polyint(bool polyint)
Set the interpolation type to polynomial(true) or linear(false).
Definition: particledatabase.cpp:120
void add_3d_gaussian_beam_with_emittance(uint32_t N, double I, double q, double m, double E0, double a1, double b1, double e1, double a2, double b2, double e2, Vec3D c, Vec3D dir1, Vec3D dir2)
Add a 3d beam with defined gaussian emittance.
Definition: particledatabase.cpp:773
void set_implementation_pointer(class ParticleDataBaseImp *imp)
Set particle database implementation pointer.
Definition: particledatabase.cpp:72
void set_trajectory_end_callback(TrajectoryEndCallback *tend_cb)
Set trajectory end callback.
Definition: particledatabase.cpp:96
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.
Definition: particledatabase.cpp:737
virtual ~TrajectoryEndCallback()
Virtual destructor.
Definition: particledatabase.hpp:76
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.
Definition: particledatabase.cpp:729
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.
Definition: particledatabase.cpp:592
void iterate_trajectories(MeshScalarField &scharge, const VectorField &efield, const VectorField &bfield)
Iterate particles through the geometry.
Definition: particledatabase.cpp:303
ParticleDataBase3D(const Geometry &geom)
Constructor.
Definition: particledatabase.cpp:630
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.
Definition: particledatabase.cpp:713
Definition: particledatabaseimp.hpp:56
int get_iteration_number(void) const
Get the number of iteration rounds done.
Definition: particledatabase.cpp:198
size_t size(void) const
Returns particle count.
Definition: particledatabase.cpp:228
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.
Definition: particledatabase.cpp:584
void clear_trajectories(void)
Clears the particle trajectory database.
Definition: particledatabase.cpp:267
ParticleDataBaseCyl(const Geometry &geom)
Constructor.
Definition: particledatabase.cpp:468
virtual double operator()(const Vec3D &x) const
Suppression function.
Definition: particledatabase.hpp:136
PPlasmaBfieldSuppression(const MeshScalarField &epot, double phi)
Constructor setting electric potential field and potential limit.
Definition: particledatabase.hpp:127
virtual ~TrajectoryHandlerCallback()
Virtual destructor.
Definition: particledatabase.hpp:63
void set_accuracy(double epsabs, double epsrel)
Set the accuracy requirement for calculation.
Definition: particledatabase.cpp:78
void set_max_time(double maxt)
Set maximum lifetime of particle in simulation.
Definition: particledatabase.cpp:162
void set_trajectory_interpolation(trajectory_interpolation_e intrp)
Set trajectory interpolation type.
Definition: particledatabase.cpp:132
void export_path_manager_data(const std::string &filename, double ref_E, double ref_q, double ref_m, double val, uint32_t Np) const
Export particle data as Path Manager data.
Definition: particledatabase.cpp:539
void reset_trajectory(size_t a)
Clears the particle trajectory and set the particle to initial coordinates.
Definition: particledatabase.cpp:285
NPlasmaBfieldSuppression(const MeshScalarField &epot, double phi)
Constructor setting electric potential field and potential limit.
Definition: particledatabase.hpp:162
virtual void operator()(ParticleBase *particle, class ParticleDataBase *pdb)=0
Operator called when particle calculation ends.
void reset_trajectories(void)
Clears the particle trajectory database and set particles to initial coordinates. ...
Definition: particledatabase.cpp:279
void trajectories_at_plane(std::vector< Particle2D > &tdata, coordinate_axis_e axis, double val) const
Gets trajectory data at plane axis = val as particles in vector tdata.
Definition: particledatabase.cpp:386
Physical constants.
uint32_t get_save_trajectories(void) const
Get trajectory saving.
Definition: particledatabase.cpp:180
void clear(void)
Clears the particle database of all particles.
Definition: particledatabase.cpp:261
Particle database class for cylindrical systems.
Definition: particledatabase.hpp:760
virtual ParticleCyl & particle(uint32_t i)
Returns a reference to particle i.
Definition: particledatabase.cpp:513
trajectory_interpolation_e get_trajectory_interpolation(void) const
Get trajectory interpolation type.
Definition: particledatabase.cpp:138
void trajectories_at_plane(std::vector< Particle3D > &tdata, coordinate_axis_e axis, double val) const
Gets trajectory data at plane axis = val as particles in vector tdata.
Definition: particledatabase.cpp:693
virtual double operator()(const Vec3D &x) const
Suppression function.
Definition: particledatabase.hpp:171
virtual const ParticleP2D & trajectory_point(uint32_t i, uint32_t j) const
Gets the particle i trajectory point j as particle point.
Definition: particledatabase.cpp:380
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.
Definition: particledatabase.cpp:414
virtual ParticleBase & particle(uint32_t i)=0
Returns a reference to particle i.
void set_bfield_suppression(const CallbackFunctorD_V *functor)
Set magnetic field suppression location depedent callback functor.
Definition: particledatabase.cpp:84
virtual Particle3D & particle(uint32_t i)
Returns a reference to particle i.
Definition: particledatabase.cpp:675
~ParticleDataBase2D()
Destructor.
Definition: particledatabase.cpp:352
virtual void save(const std::string &filename) const
Saves data to a new file filename.
Definition: particledatabase.cpp:600
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.
Definition: particledatabase.cpp:745
~ParticleDataBaseCyl()
Destructor.
Definition: particledatabase.cpp:497
~PPlasmaBfieldSuppression()
Destructor.
Definition: particledatabase.hpp:132
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.
Definition: particledatabase.cpp:559
const ParticleStatistics & get_statistics(void) const
Get particle iterator statistics.
Definition: particledatabase.cpp:216
void set_save_trajectories(uint32_t div)
Set trajectory saving.
Definition: particledatabase.cpp:174
void set_mirror(const bool mirror[6])
Set particle mirroring on boundaries.
Definition: particledatabase.cpp:186
Trajectory surface collision callback.
Definition: particledatabase.hpp:86
Particle statistics
bool get_polyint(void) const
Get current interpolation type.
Definition: particledatabase.cpp:126
size_t traj_size(uint32_t i) const
Returns number of trajectory points for particle i.
Definition: particledatabase.cpp:240
void set_trajectory_handler_callback(TrajectoryHandlerCallback *thand_cb)
Set trajectory handler callback.
Definition: particledatabase.cpp:90
trajectory_interpolation_e
Trajectory interpolation type.
Definition: types.hpp:153
virtual void operator()(ParticleBase *particle, ParticlePBase *x, uint32_t tri, double s, double t)=0
Operator called when particle collides with surface.
void add_particle(double IQ, double q, double m, const ParticleP2D &x)
Add one particle.
Definition: particledatabase.cpp:394
virtual Particle2D & particle(uint32_t i)
Returns a reference to particle i.
Definition: particledatabase.cpp:368
virtual void save(const std::string &filename) const
Saves data to a new file filename.
Definition: particledatabase.cpp:799
Vector field base.
ParticleDataBase()
Constructor.
Definition: particledatabase.cpp:49