particledatabase.hpp
Go to the documentation of this file.
179 /* ******************************************************************************************* *
181 * ******************************************************************************************* */
Definition: callback.hpp:61
Magnetic field plasma suppression for negative ion extraction.
Definition: particledatabase.hpp:153
virtual double operator()(const Vec3D &x) const
Suppression function.
Definition: particledatabase.hpp:171
~NPlasmaBfieldSuppression()
Destructor.
Definition: particledatabase.hpp:167
NPlasmaBfieldSuppression(const MeshScalarField &epot, double phi)
Constructor setting electric potential field and potential limit.
Definition: particledatabase.hpp:162
Magnetic field plasma suppression for positive ion extraction.
Definition: particledatabase.hpp:118
virtual double operator()(const Vec3D &x) const
Suppression function.
Definition: particledatabase.hpp:136
~PPlasmaBfieldSuppression()
Destructor.
Definition: particledatabase.hpp:132
PPlasmaBfieldSuppression(const MeshScalarField &epot, double phi)
Constructor setting electric potential field and potential limit.
Definition: particledatabase.hpp:127
ParticleDataBase2D(const Geometry &geom)
Constructor.
Definition: particledatabase.cpp:323
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 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
const ParticleDataBase2D & operator=(const ParticleDataBase2D &pdb)
Assignment.
Definition: particledatabase.cpp:358
virtual const ParticlePBase & trajectory_point(uint32_t i, uint32_t j) const=0
Gets the particle i trajectory point j as particle point.
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
~ParticleDataBase2D()
Destructor.
Definition: particledatabase.cpp:352
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
virtual void debug_print(std::ostream &os) const
Print debugging information to os.
Definition: particledatabase.cpp:457
void add_particle(double IQ, double q, double m, const ParticleP2D &x)
Add one particle.
Definition: particledatabase.cpp:394
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
virtual void save(const std::string &filename) const
Saves data to a new file filename.
Definition: particledatabase.cpp:438
virtual Particle2D & particle(uint32_t i)
Returns a reference to particle i.
Definition: particledatabase.cpp:368
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
ParticleDataBase3D(const Geometry &geom)
Constructor.
Definition: particledatabase.cpp:630
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
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 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
virtual const ParticlePBase & trajectory_point(uint32_t i, uint32_t j) const=0
Gets the particle i trajectory point j as particle point.
virtual void save(const std::string &filename) const
Saves data to a new file filename.
Definition: particledatabase.cpp:799
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
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
const ParticleDataBase3D & operator=(const ParticleDataBase3D &pdb)
Assignment.
Definition: particledatabase.cpp:665
void add_particle(double IQ, double q, double m, const ParticleP3D &x)
Add one particle.
Definition: particledatabase.cpp:701
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
virtual Particle3D & particle(uint32_t i)
Returns a reference to particle i.
Definition: particledatabase.cpp:675
~ParticleDataBase3D()
Destructor.
Definition: particledatabase.cpp:659
virtual void debug_print(std::ostream &os) const
Print debugging information to os.
Definition: particledatabase.cpp:818
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 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_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_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
Particle database class for cylindrical systems.
Definition: particledatabase.hpp:760
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
ParticleDataBaseCyl(const Geometry &geom)
Constructor.
Definition: particledatabase.cpp:468
virtual void save(const std::string &filename) const
Saves data to a new file filename.
Definition: particledatabase.cpp:600
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
virtual const ParticlePBase & trajectory_point(uint32_t i, uint32_t j) const=0
Gets the particle i trajectory point j as particle point.
virtual void debug_print(std::ostream &os) const
Print debugging information to os.
Definition: particledatabase.cpp:619
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 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
~ParticleDataBaseCyl()
Destructor.
Definition: particledatabase.cpp:497
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 add_particle(double IQ, double q, double m, const ParticlePCyl &x)
Add one particle.
Definition: particledatabase.cpp:547
virtual ParticleCyl & particle(uint32_t i)
Returns a reference to particle i.
Definition: particledatabase.cpp:513
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
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
const ParticleDataBaseCyl & operator=(const ParticleDataBaseCyl &pdb)
Assignment.
Definition: particledatabase.cpp:503
Definition: particledatabaseimp.hpp:57
geom_mode_e geom_mode() const
Return geometry mode.
Definition: particledatabase.cpp:222
void reset_trajectories(void)
Clears the particle trajectory database and set particles to initial coordinates.
Definition: particledatabase.cpp:279
scharge_deposition_e get_scharge_deposition(void) const
Get space charge deposition type.
Definition: particledatabase.cpp:150
double traj_length(uint32_t i) const
Returns the length of trajectory i.
Definition: particledatabase.cpp:234
void set_trajectory_surface_collision_callback(TrajectorySurfaceCollisionCallback *tsur_cb)
Set trajectory surface collision callback.
Definition: particledatabase.cpp:102
void set_trajectory_interpolation(trajectory_interpolation_e intrp)
Set trajectory interpolation type.
Definition: particledatabase.cpp:132
double get_rhosum(void) const
Return sum of defined beam space charge density.
Definition: particledatabase.cpp:204
virtual const ParticlePBase & trajectory_point(uint32_t i, uint32_t j) const =0
Gets the particle i trajectory point j as particle point.
size_t size(void) const
Returns particle count.
Definition: particledatabase.cpp:228
void set_save_trajectories(uint32_t div)
Set trajectory saving.
Definition: particledatabase.cpp:174
void set_max_steps(uint32_t maxsteps)
Set maximum number of steps to iterate.
Definition: particledatabase.cpp:156
virtual void debug_print(std::ostream &os) const =0
Print debugging information to os.
int get_iteration_number(void) const
Get the number of iteration rounds done.
Definition: particledatabase.cpp:198
void set_trajectory_end_callback(TrajectoryEndCallback *tend_cb)
Set trajectory end callback.
Definition: particledatabase.cpp:96
uint32_t get_save_trajectories(void) const
Get trajectory saving.
Definition: particledatabase.cpp:180
void set_implementation_pointer(class ParticleDataBaseImp *imp)
Set particle database implementation pointer.
Definition: particledatabase.cpp:72
void set_scharge_deposition(scharge_deposition_e type)
Set space charge deposition type.
Definition: particledatabase.cpp:144
void set_relativistic(bool enable)
Set relativistic particle iteration.
Definition: particledatabase.cpp:108
void set_max_time(double maxt)
Set maximum lifetime of particle in simulation.
Definition: particledatabase.cpp:162
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 set_rhosum(double rhosum)
Set sum of defined beam space charge density.
Definition: particledatabase.cpp:210
void get_mirror(bool mirror[6]) const
Get particle mirroring on boundaries.
Definition: particledatabase.cpp:192
size_t traj_size(uint32_t i) const
Returns number of trajectory points for particle i.
Definition: particledatabase.cpp:240
void step_particles(MeshScalarField &scharge, const VectorField &efield, const VectorField &bfield, double dt)
Step particles forward by time step dt.
Definition: particledatabase.cpp:310
virtual ParticleBase & particle(uint32_t i)=0
Returns a reference to particle i.
bool get_polyint(void) const
Get current interpolation type.
Definition: particledatabase.cpp:126
void set_save_all_points(bool save_points)
Set trajectory saving.
Definition: particledatabase.cpp:168
void set_thread_count(uint32_t threadcount)
Set the number of threads used for calculation.
Definition: particledatabase.hpp:238
void set_polyint(bool polyint)
Set the interpolation type to polynomial(true) or linear(false).
Definition: particledatabase.cpp:120
void set_mirror(const bool mirror[6])
Set particle mirroring on boundaries.
Definition: particledatabase.cpp:186
virtual ~ParticleDataBase()
Virtual destructor.
Definition: particledatabase.cpp:61
virtual const ParticleBase & particle(uint32_t i) const =0
Returns a const reference to particle i.
void build_trajectory_density_field(MeshScalarField &tdens) const
Build trajectory density field.
Definition: particledatabase.cpp:297
void set_accuracy(double epsabs, double epsrel)
Set the accuracy requirement for calculation.
Definition: particledatabase.cpp:78
void reserve(size_t size)
Reserve memory for size particles.
Definition: particledatabase.cpp:291
void reset_trajectory(size_t a)
Clears the particle trajectory and set the particle to initial coordinates.
Definition: particledatabase.cpp:285
void clear_trajectory(size_t a)
Clears particle a in the particle trajectory database.
Definition: particledatabase.cpp:273
void iterate_trajectories(MeshScalarField &scharge, const VectorField &efield, const VectorField &bfield)
Iterate particles through the geometry.
Definition: particledatabase.cpp:303
const ParticleStatistics & get_statistics(void) const
Get particle iterator statistics.
Definition: particledatabase.cpp:216
trajectory_interpolation_e get_trajectory_interpolation(void) const
Get trajectory interpolation type.
Definition: particledatabase.cpp:138
const ParticleDataBase & operator=(const ParticleDataBase &pdb)
Assignment.
Definition: particledatabase.cpp:66
void set_trajectory_handler_callback(TrajectoryHandlerCallback *thand_cb)
Set trajectory handler callback.
Definition: particledatabase.cpp:90
void clear(void)
Clears the particle database of all particles.
Definition: particledatabase.cpp:261
virtual void save(const std::string &filename) const =0
Saves data to a new file filename.
void set_bfield_suppression(const CallbackFunctorD_V *functor)
Set magnetic field suppression location depedent callback functor.
Definition: particledatabase.cpp:84
void set_surface_collision(bool surface_collision)
Set surface collision model to be used.
Definition: particledatabase.cpp:114
void clear_trajectories(void)
Clears the particle trajectory database.
Definition: particledatabase.cpp:267
Class for trajectory diagnostic data.
Definition: trajectorydiagnostics.hpp:129
virtual ~TrajectoryEndCallback()
Virtual destructor.
Definition: particledatabase.hpp:76
virtual void operator()(ParticleBase *particle, class ParticleDataBase *pdb)=0
Operator called when particle calculation ends.
virtual ~TrajectoryHandlerCallback()
Virtual destructor.
Definition: particledatabase.hpp:63
Trajectory surface collision callback.
Definition: particledatabase.hpp:86
virtual void operator()(ParticleBase *particle, ParticlePBase *x, uint32_t tri, double s, double t)=0
Operator called when particle collides with surface.
virtual ~TrajectorySurfaceCollisionCallback()
Virtual destructor.
Definition: particledatabase.hpp:91
Physical constants.
Particle and particle point objects
Particle statistics
Scalar fields.
Trajectory diagnostics.
Base types.
trajectory_interpolation_e
Trajectory interpolation type.
Definition: types.hpp:153
Vector field base.