Penning Trap Simulation
Simulate particle behavior inside a Penning Trap
Loading...
Searching...
No Matches
PenningTrap.hpp
Go to the documentation of this file.
1
12
#ifndef __PENNING_TRAP__
13
#define __PENNING_TRAP__
14
15
#include <armadillo>
16
#include <omp.h>
17
18
#include "
Particle.hpp
"
19
#include "
constants.hpp
"
20
21
#pragma omp declare reduction( + : arma::vec : omp_out += omp_in ) \
22
initializer( omp_priv = omp_orig )
23
29
class
PenningTrap
{
30
private
:
31
double
B_0
;
32
double
V_0
;
33
double
d
;
34
std::vector<Particle>
particles
;
35
36
public
:
39
PenningTrap
(
double
B_0
=
T
,
double
V_0
= 25.*
V
/1000.,
double
d
= 500.);
40
43
void
add_particle
(
Particle
particle);
44
47
arma::vec
external_E_field
(arma::vec r);
48
51
arma::vec
external_B_field
(arma::vec r);
52
58
arma::vec
force_on_particle
(
int
i,
int
j);
59
65
arma::vec
total_force_external
(
int
i);
66
69
arma::vec
total_force_particles
(
int
i);
70
73
arma::vec
total_force
(
int
i);
74
77
void
evolve_RK4
(
double
dt);
78
81
void
evolve_forward_euler
(
double
dt);
82
83
arma::vec get_particle(
int
i);
84
85
double
get_d();
86
};
87
88
#endif
Particle.hpp
A class that holds the properties of a particle.
Particle
A class that holds attributes of a particle.
Definition:
Particle.hpp:19
PenningTrap
A class that simulates a Penning trap.
Definition:
PenningTrap.hpp:29
PenningTrap::particles
std::vector< Particle > particles
The particles in the Penning trap.
Definition:
PenningTrap.hpp:34
PenningTrap::total_force_external
arma::vec total_force_external(int i)
Calculate the total external force on a particle.
Definition:
PenningTrap.cpp:65
PenningTrap::B_0
double B_0
Magnetic field strength.
Definition:
PenningTrap.hpp:31
PenningTrap::total_force_particles
arma::vec total_force_particles(int i)
Calculate the total force on a particle from other particles.
Definition:
PenningTrap.cpp:80
PenningTrap::external_B_field
arma::vec external_B_field(arma::vec r)
Calculate B at point r.
Definition:
PenningTrap.cpp:43
PenningTrap::force_on_particle
arma::vec force_on_particle(int i, int j)
Calculate the force between 2 particles.
Definition:
PenningTrap.cpp:50
PenningTrap::evolve_forward_euler
void evolve_forward_euler(double dt)
Go forward one timestep using the forward Euler method.
Definition:
PenningTrap.cpp:167
PenningTrap::d
double d
Characteristic dimension.
Definition:
PenningTrap.hpp:33
PenningTrap::add_particle
void add_particle(Particle particle)
Add a particle to the system.
Definition:
PenningTrap.cpp:27
PenningTrap::V_0
double V_0
Applied potential.
Definition:
PenningTrap.hpp:32
PenningTrap::total_force
arma::vec total_force(int i)
calculate the total force on a particle.
Definition:
PenningTrap.cpp:99
PenningTrap::external_E_field
arma::vec external_E_field(arma::vec r)
Calculate E at point r.
Definition:
PenningTrap.cpp:32
PenningTrap::evolve_RK4
void evolve_RK4(double dt)
Go forward one timestep using the RK4 method.
Definition:
PenningTrap.cpp:104
constants.hpp
Library of constants.
T
#define T
1 Tesla. unit:
Definition:
constants.hpp:17
V
#define V
1 Volt. unit:
Definition:
constants.hpp:19
include
PenningTrap.hpp
Generated by
1.9.6