Stuff
This commit is contained in:
parent
95432102ea
commit
5ed7cedfae
1
.gitignore
vendored
1
.gitignore
vendored
@ -47,3 +47,4 @@ src/*
|
|||||||
!src/*.hpp
|
!src/*.hpp
|
||||||
!src/*.py
|
!src/*.py
|
||||||
!src/Doxyfile
|
!src/Doxyfile
|
||||||
|
!src/scripts
|
||||||
|
|||||||
2
Doxyfile
2
Doxyfile
@ -2174,7 +2174,7 @@ RTF_EXTENSIONS_FILE =
|
|||||||
# classes and files.
|
# classes and files.
|
||||||
# The default value is: NO.
|
# The default value is: NO.
|
||||||
|
|
||||||
GENERATE_MAN = YES
|
GENERATE_MAN = NO
|
||||||
|
|
||||||
# The MAN_OUTPUT tag is used to specify where the man pages will be put. If a
|
# The MAN_OUTPUT tag is used to specify where the man pages will be put. If a
|
||||||
# relative path is entered the value of OUTPUT_DIRECTORY will be put in front of
|
# relative path is entered the value of OUTPUT_DIRECTORY will be put in front of
|
||||||
|
|||||||
@ -22,6 +22,11 @@
|
|||||||
#pragma omp declare reduction(+ : vec_3d : omp_out += omp_in) \
|
#pragma omp declare reduction(+ : vec_3d : omp_out += omp_in) \
|
||||||
initializer(omp_priv = omp_orig)
|
initializer(omp_priv = omp_orig)
|
||||||
|
|
||||||
|
typedef struct simulation {
|
||||||
|
sim_arr r_vecs;
|
||||||
|
sim_arr v_vecs;
|
||||||
|
} simulation_t;
|
||||||
|
|
||||||
/** @brief A class that simulates a Penning trap.
|
/** @brief A class that simulates a Penning trap.
|
||||||
*
|
*
|
||||||
* This class simulates a Penning trap. It can take in a number of particles
|
* This class simulates a Penning trap. It can take in a number of particles
|
||||||
@ -188,7 +193,7 @@ public:
|
|||||||
* @param method The method to use when moving forward a timestep
|
* @param method The method to use when moving forward a timestep
|
||||||
* @param particle_interaction Turn particle interactions on/off
|
* @param particle_interaction Turn particle interactions on/off
|
||||||
* */
|
* */
|
||||||
sim_arr simulate(double time, unsigned int steps,
|
simulation_t simulate(double time, unsigned int steps,
|
||||||
std::string method = "rk4",
|
std::string method = "rk4",
|
||||||
bool particle_interaction = true);
|
bool particle_interaction = true);
|
||||||
|
|
||||||
|
|||||||
BIN
latex/images/particles_left.pdf
Normal file
BIN
latex/images/particles_left.pdf
Normal file
Binary file not shown.
BIN
latex/images/single_particle.pdf
Normal file
BIN
latex/images/single_particle.pdf
Normal file
Binary file not shown.
@ -1,111 +0,0 @@
|
|||||||
.TH "Particle" 3 "Sat Oct 14 2023" "Penning Trap Simulation" \" -*- nroff -*-
|
|
||||||
.ad l
|
|
||||||
.nh
|
|
||||||
.SH NAME
|
|
||||||
Particle \- A class that holds attributes of a particle\&.
|
|
||||||
|
|
||||||
.SH SYNOPSIS
|
|
||||||
.br
|
|
||||||
.PP
|
|
||||||
.PP
|
|
||||||
\fC#include <Particle\&.hpp>\fP
|
|
||||||
.SS "Public Member Functions"
|
|
||||||
|
|
||||||
.in +1c
|
|
||||||
.ti -1c
|
|
||||||
.RI "\fBParticle\fP (double \fBq\fP, double \fBm\fP, \fBvec_3d\fP \fBr_vec\fP, \fBvec_3d\fP \fBv_vec\fP)"
|
|
||||||
.br
|
|
||||||
.RI "Initialize the particle\&. "
|
|
||||||
.in -1c
|
|
||||||
.SS "Private Attributes"
|
|
||||||
|
|
||||||
.in +1c
|
|
||||||
.ti -1c
|
|
||||||
.RI "double \fBq\fP"
|
|
||||||
.br
|
|
||||||
.RI "Charge\&. "
|
|
||||||
.ti -1c
|
|
||||||
.RI "double \fBm\fP"
|
|
||||||
.br
|
|
||||||
.RI "Mass\&. "
|
|
||||||
.ti -1c
|
|
||||||
.RI "\fBvec_3d\fP \fBr_vec\fP"
|
|
||||||
.br
|
|
||||||
.RI "position "
|
|
||||||
.ti -1c
|
|
||||||
.RI "\fBvec_3d\fP \fBv_vec\fP"
|
|
||||||
.br
|
|
||||||
.RI "velocity "
|
|
||||||
.in -1c
|
|
||||||
.SS "Friends"
|
|
||||||
|
|
||||||
.in +1c
|
|
||||||
.ti -1c
|
|
||||||
.RI "class \fBPenningTrap\fP"
|
|
||||||
.br
|
|
||||||
.RI "Make private attributes available for \fBPenningTrap\fP\&. "
|
|
||||||
.in -1c
|
|
||||||
.SH "Detailed Description"
|
|
||||||
.PP
|
|
||||||
A class that holds attributes of a particle\&.
|
|
||||||
.PP
|
|
||||||
Definition at line \fB21\fP of file \fBParticle\&.hpp\fP\&.
|
|
||||||
.SH "Constructor & Destructor Documentation"
|
|
||||||
.PP
|
|
||||||
.SS "Particle::Particle (double q, double m, \fBvec_3d\fP r_vec, \fBvec_3d\fP v_vec)"
|
|
||||||
|
|
||||||
.PP
|
|
||||||
Initialize the particle\&. Initialize the particle with a charge, mass, position and velocity\&.
|
|
||||||
.PP
|
|
||||||
\fBParameters\fP
|
|
||||||
.RS 4
|
|
||||||
\fIq\fP The charge of the particle
|
|
||||||
.br
|
|
||||||
\fIm\fP The mass of the particle
|
|
||||||
.br
|
|
||||||
\fIr_vec\fP The initial position of the particle
|
|
||||||
.br
|
|
||||||
\fIv_vec\fP The initial velocity of the particle
|
|
||||||
.RE
|
|
||||||
.PP
|
|
||||||
|
|
||||||
.PP
|
|
||||||
Definition at line \fB15\fP of file \fBParticle\&.cpp\fP\&.
|
|
||||||
.SH "Friends And Related Function Documentation"
|
|
||||||
.PP
|
|
||||||
.SS "friend class \fBPenningTrap\fP\fC [friend]\fP"
|
|
||||||
|
|
||||||
.PP
|
|
||||||
Make private attributes available for \fBPenningTrap\fP\&.
|
|
||||||
.PP
|
|
||||||
Definition at line \fB43\fP of file \fBParticle\&.hpp\fP\&.
|
|
||||||
.SH "Member Data Documentation"
|
|
||||||
.PP
|
|
||||||
.SS "double Particle::m\fC [private]\fP"
|
|
||||||
|
|
||||||
.PP
|
|
||||||
Mass\&.
|
|
||||||
.PP
|
|
||||||
Definition at line \fB24\fP of file \fBParticle\&.hpp\fP\&.
|
|
||||||
.SS "double Particle::q\fC [private]\fP"
|
|
||||||
|
|
||||||
.PP
|
|
||||||
Charge\&.
|
|
||||||
.PP
|
|
||||||
Definition at line \fB23\fP of file \fBParticle\&.hpp\fP\&.
|
|
||||||
.SS "\fBvec_3d\fP Particle::r_vec\fC [private]\fP"
|
|
||||||
|
|
||||||
.PP
|
|
||||||
position
|
|
||||||
.PP
|
|
||||||
Definition at line \fB25\fP of file \fBParticle\&.hpp\fP\&.
|
|
||||||
.SS "\fBvec_3d\fP Particle::v_vec\fC [private]\fP"
|
|
||||||
|
|
||||||
.PP
|
|
||||||
velocity
|
|
||||||
.PP
|
|
||||||
Definition at line \fB26\fP of file \fBParticle\&.hpp\fP\&.
|
|
||||||
|
|
||||||
.SH "Author"
|
|
||||||
.PP
|
|
||||||
Generated automatically by Doxygen for Penning Trap Simulation from the source code\&.
|
|
||||||
@ -1,42 +0,0 @@
|
|||||||
.TH "src/Particle.cpp" 3 "Sat Oct 14 2023" "Penning Trap Simulation" \" -*- nroff -*-
|
|
||||||
.ad l
|
|
||||||
.nh
|
|
||||||
.SH NAME
|
|
||||||
src/Particle.cpp \- The implementation of the \fBParticle\fP class\&.
|
|
||||||
|
|
||||||
.SH SYNOPSIS
|
|
||||||
.br
|
|
||||||
.PP
|
|
||||||
\fC#include 'Particle\&.hpp'\fP
|
|
||||||
.br
|
|
||||||
|
|
||||||
.SH "Detailed Description"
|
|
||||||
.PP
|
|
||||||
The implementation of the \fBParticle\fP class\&.
|
|
||||||
|
|
||||||
|
|
||||||
.PP
|
|
||||||
\fBAuthor\fP
|
|
||||||
.RS 4
|
|
||||||
Cory Alexander Balaton (coryab)
|
|
||||||
.PP
|
|
||||||
Janita Ovidie Sandtrøen Willumsen (janitaws)
|
|
||||||
.RE
|
|
||||||
.PP
|
|
||||||
\fBVersion\fP
|
|
||||||
.RS 4
|
|
||||||
0\&.1
|
|
||||||
.RE
|
|
||||||
.PP
|
|
||||||
.PP
|
|
||||||
\fBBug\fP
|
|
||||||
.RS 4
|
|
||||||
No known bugs
|
|
||||||
.RE
|
|
||||||
.PP
|
|
||||||
|
|
||||||
.PP
|
|
||||||
Definition in file \fBParticle\&.cpp\fP\&.
|
|
||||||
.SH "Author"
|
|
||||||
.PP
|
|
||||||
Generated automatically by Doxygen for Penning Trap Simulation from the source code\&.
|
|
||||||
@ -1,52 +0,0 @@
|
|||||||
.TH "include/Particle.hpp" 3 "Sat Oct 14 2023" "Penning Trap Simulation" \" -*- nroff -*-
|
|
||||||
.ad l
|
|
||||||
.nh
|
|
||||||
.SH NAME
|
|
||||||
include/Particle.hpp \- A class that holds the properties of a particle\&.
|
|
||||||
|
|
||||||
.SH SYNOPSIS
|
|
||||||
.br
|
|
||||||
.PP
|
|
||||||
\fC#include <armadillo>\fP
|
|
||||||
.br
|
|
||||||
\fC#include 'typedefs\&.hpp'\fP
|
|
||||||
.br
|
|
||||||
|
|
||||||
.SS "Classes"
|
|
||||||
|
|
||||||
.in +1c
|
|
||||||
.ti -1c
|
|
||||||
.RI "class \fBParticle\fP"
|
|
||||||
.br
|
|
||||||
.RI "A class that holds attributes of a particle\&. "
|
|
||||||
.in -1c
|
|
||||||
.SH "Detailed Description"
|
|
||||||
.PP
|
|
||||||
A class that holds the properties of a particle\&.
|
|
||||||
|
|
||||||
|
|
||||||
.PP
|
|
||||||
\fBAuthor\fP
|
|
||||||
.RS 4
|
|
||||||
Cory Alexander Balaton (coryab)
|
|
||||||
.PP
|
|
||||||
Janita Ovidie Sandtrøen Willumsen (janitaws)
|
|
||||||
.RE
|
|
||||||
.PP
|
|
||||||
\fBVersion\fP
|
|
||||||
.RS 4
|
|
||||||
0\&.1
|
|
||||||
.RE
|
|
||||||
.PP
|
|
||||||
.PP
|
|
||||||
\fBBug\fP
|
|
||||||
.RS 4
|
|
||||||
No known bugs
|
|
||||||
.RE
|
|
||||||
.PP
|
|
||||||
|
|
||||||
.PP
|
|
||||||
Definition in file \fBParticle\&.hpp\fP\&.
|
|
||||||
.SH "Author"
|
|
||||||
.PP
|
|
||||||
Generated automatically by Doxygen for Penning Trap Simulation from the source code\&.
|
|
||||||
@ -1,494 +0,0 @@
|
|||||||
.TH "PenningTrap" 3 "Sat Oct 14 2023" "Penning Trap Simulation" \" -*- nroff -*-
|
|
||||||
.ad l
|
|
||||||
.nh
|
|
||||||
.SH NAME
|
|
||||||
PenningTrap \- A class that simulates a Penning trap\&.
|
|
||||||
|
|
||||||
.SH SYNOPSIS
|
|
||||||
.br
|
|
||||||
.PP
|
|
||||||
.PP
|
|
||||||
\fC#include <PenningTrap\&.hpp>\fP
|
|
||||||
.SS "Public Member Functions"
|
|
||||||
|
|
||||||
.in +1c
|
|
||||||
.ti -1c
|
|
||||||
.RI "\fBPenningTrap\fP (double \fBB_0\fP=\fBT\fP, std::function< double(double)> \fBV_0\fP=[](double \fBt\fP) { return 25\&. *\fBV\fP/1000\&.;}, double \fBd\fP=500\&., double \fBt\fP=0\&.)"
|
|
||||||
.br
|
|
||||||
.RI "Constructor for the \fBPenningTrap\fP class\&. "
|
|
||||||
.ti -1c
|
|
||||||
.RI "\fBPenningTrap\fP (unsigned int i, double \fBB_0\fP=\fBT\fP, std::function< double(double)> \fBV_0\fP=[](double \fBt\fP) { return 25\&. *\fBV\fP/1000\&.;}, double \fBd\fP=500\&., double \fBt\fP=0\&.)"
|
|
||||||
.br
|
|
||||||
.RI "Constructor for the \fBPenningTrap\fP class\&. "
|
|
||||||
.ti -1c
|
|
||||||
.RI "\fBPenningTrap\fP (std::vector< \fBParticle\fP > \fBparticles\fP, double \fBB_0\fP=\fBT\fP, std::function< double(double)> \fBV_0\fP=[](double \fBt\fP) { return 25\&. *\fBV\fP/1000\&.;}, double \fBd\fP=500\&., double \fBt\fP=0\&.)"
|
|
||||||
.br
|
|
||||||
.RI "Constructor for the \fBPenningTrap\fP class\&. "
|
|
||||||
.ti -1c
|
|
||||||
.RI "void \fBadd_particle\fP (\fBParticle\fP particle)"
|
|
||||||
.br
|
|
||||||
.RI "Add a particle to the system\&. "
|
|
||||||
.ti -1c
|
|
||||||
.RI "\fBvec_3d\fP \fBexternal_E_field\fP (\fBvec_3d\fP r)"
|
|
||||||
.br
|
|
||||||
.RI "Calculate E at point r\&. "
|
|
||||||
.ti -1c
|
|
||||||
.RI "\fBvec_3d\fP \fBexternal_B_field\fP (\fBvec_3d\fP r)"
|
|
||||||
.br
|
|
||||||
.RI "Calculate B at point r\&. "
|
|
||||||
.ti -1c
|
|
||||||
.RI "\fBvec_3d\fP \fBforce_on_particle\fP (unsigned int i, unsigned int j)"
|
|
||||||
.br
|
|
||||||
.RI "Calculate the force between 2 particles\&. "
|
|
||||||
.ti -1c
|
|
||||||
.RI "\fBvec_3d\fP \fBtotal_force_external\fP (unsigned int i)"
|
|
||||||
.br
|
|
||||||
.RI "Calculate the total external force on a particle\&. "
|
|
||||||
.ti -1c
|
|
||||||
.RI "\fBvec_3d\fP \fBtotal_force_particles\fP (unsigned int i)"
|
|
||||||
.br
|
|
||||||
.RI "Calculate the total force on a particle p_i from other particles\&. "
|
|
||||||
.ti -1c
|
|
||||||
.RI "\fBvec_3d\fP \fBtotal_force\fP (unsigned int i)"
|
|
||||||
.br
|
|
||||||
.RI "calculate the total force on a particle p_i\&. "
|
|
||||||
.ti -1c
|
|
||||||
.RI "void \fBevolve_RK4\fP (double dt, bool particle_interaction=true)"
|
|
||||||
.br
|
|
||||||
.RI "Go forward one timestep using the RK4 method\&. "
|
|
||||||
.ti -1c
|
|
||||||
.RI "void \fBevolve_forward_euler\fP (double dt, bool particle_interaction=true)"
|
|
||||||
.br
|
|
||||||
.RI "Go forward one timestep using the forward Euler method\&. "
|
|
||||||
.ti -1c
|
|
||||||
.RI "\fBsim_arr\fP \fBsimulate\fP (double time, unsigned int steps, std::string method='rk4', bool particle_interaction=true)"
|
|
||||||
.br
|
|
||||||
.RI "Simulate the particle system inside the Penning trap over a certain amount of time\&. "
|
|
||||||
.ti -1c
|
|
||||||
.RI "void \fBwrite_simulation_to_dir\fP (std::string path, double time, unsigned int steps, std::string method='rk4', bool particle_interaction=true)"
|
|
||||||
.br
|
|
||||||
.RI "Simulate and write the displacement of all particles to files\&. "
|
|
||||||
.ti -1c
|
|
||||||
.RI "double \fBfraction_of_particles_left\fP (double time, unsigned int steps, std::string method='rk4', bool particle_interaction=true)"
|
|
||||||
.br
|
|
||||||
.RI "Simulate and calculate what fraction of particles are still left inside the Penning trap after the simulation\&. "
|
|
||||||
.in -1c
|
|
||||||
.SS "Private Member Functions"
|
|
||||||
|
|
||||||
.in +1c
|
|
||||||
.ti -1c
|
|
||||||
.RI "\fBvec_3d\fP \fBv_func\fP (unsigned int i, unsigned int j, double dt)"
|
|
||||||
.br
|
|
||||||
.RI "Helper for evolve_RK4 when calculating $k_{v,i,j}$ values\&. "
|
|
||||||
.ti -1c
|
|
||||||
.RI "\fBvec_3d\fP \fBr_func\fP (unsigned int i, unsigned int j, double dt)"
|
|
||||||
.br
|
|
||||||
.RI "Helper for evolve_RK4 when calculating $k_{r,i,j}$ values\&. "
|
|
||||||
.in -1c
|
|
||||||
.SS "Private Attributes"
|
|
||||||
|
|
||||||
.in +1c
|
|
||||||
.ti -1c
|
|
||||||
.RI "double \fBB_0\fP"
|
|
||||||
.br
|
|
||||||
.RI "Magnetic field strength\&. "
|
|
||||||
.ti -1c
|
|
||||||
.RI "std::function< double(double)> \fBV_0\fP"
|
|
||||||
.br
|
|
||||||
.RI "Applied potential\&. "
|
|
||||||
.ti -1c
|
|
||||||
.RI "double \fBd\fP"
|
|
||||||
.br
|
|
||||||
.RI "Characteristic dimension\&. "
|
|
||||||
.ti -1c
|
|
||||||
.RI "double \fBt\fP"
|
|
||||||
.br
|
|
||||||
.RI "Current time\&. "
|
|
||||||
.ti -1c
|
|
||||||
.RI "std::vector< \fBParticle\fP > \fBparticles\fP"
|
|
||||||
.br
|
|
||||||
.RI "The particles in the Penning trap\&. "
|
|
||||||
.ti -1c
|
|
||||||
.RI "\fBsim_arr\fP \fBk_v\fP"
|
|
||||||
.br
|
|
||||||
.ti -1c
|
|
||||||
.RI "\fBsim_arr\fP \fBk_r\fP"
|
|
||||||
.br
|
|
||||||
.in -1c
|
|
||||||
.SH "Detailed Description"
|
|
||||||
.PP
|
|
||||||
A class that simulates a Penning trap\&.
|
|
||||||
|
|
||||||
This class simulates a Penning trap\&. It can take in a number of particles and simulate how they would behave inside a Penning trap\&.
|
|
||||||
.PP
|
|
||||||
Definition at line \fB30\fP of file \fBPenningTrap\&.hpp\fP\&.
|
|
||||||
.SH "Constructor & Destructor Documentation"
|
|
||||||
.PP
|
|
||||||
.SS "PenningTrap::PenningTrap (double B_0 = \fC\fBT\fP\fP, std::function< double(double)> V_0 = \fC[](double \fBt\fP) { return 25\&. * \fBV\fP / 1000\&.; }\fP, double d = \fC500\&.\fP, double t = \fC0\&.\fP)"
|
|
||||||
|
|
||||||
.PP
|
|
||||||
Constructor for the \fBPenningTrap\fP class\&.
|
|
||||||
.PP
|
|
||||||
\fBParameters\fP
|
|
||||||
.RS 4
|
|
||||||
\fIB_0\fP The magnetic field strength
|
|
||||||
.br
|
|
||||||
\fIV_0\fP The time dependent applied potential
|
|
||||||
.br
|
|
||||||
\fId\fP The characteristic dimension
|
|
||||||
.br
|
|
||||||
\fIt\fP The starting time
|
|
||||||
.RE
|
|
||||||
.PP
|
|
||||||
|
|
||||||
.PP
|
|
||||||
Definition at line \fB18\fP of file \fBPenningTrap\&.cpp\fP\&.
|
|
||||||
.SS "PenningTrap::PenningTrap (unsigned int i, double B_0 = \fC\fBT\fP\fP, std::function< double(double)> V_0 = \fC[](double \fBt\fP) { return 25\&. * \fBV\fP / 1000\&.; }\fP, double d = \fC500\&.\fP, double t = \fC0\&.\fP)"
|
|
||||||
|
|
||||||
.PP
|
|
||||||
Constructor for the \fBPenningTrap\fP class\&.
|
|
||||||
.PP
|
|
||||||
\fBParameters\fP
|
|
||||||
.RS 4
|
|
||||||
\fIi\fP The number of particles to generate
|
|
||||||
.br
|
|
||||||
\fIB_0\fP The magnetic field strength
|
|
||||||
.br
|
|
||||||
\fIV_0\fP The time dependent applied potential
|
|
||||||
.br
|
|
||||||
\fId\fP The characteristic dimension
|
|
||||||
.br
|
|
||||||
\fIt\fP The starting time
|
|
||||||
.RE
|
|
||||||
.PP
|
|
||||||
|
|
||||||
.PP
|
|
||||||
Definition at line \fB27\fP of file \fBPenningTrap\&.cpp\fP\&.
|
|
||||||
.SS "PenningTrap::PenningTrap (std::vector< \fBParticle\fP > particles, double B_0 = \fC\fBT\fP\fP, std::function< double(double)> V_0 = \fC[](double \fBt\fP) { return 25\&. * \fBV\fP / 1000\&.; }\fP, double d = \fC500\&.\fP, double t = \fC0\&.\fP)"
|
|
||||||
|
|
||||||
.PP
|
|
||||||
Constructor for the \fBPenningTrap\fP class\&.
|
|
||||||
.PP
|
|
||||||
\fBParameters\fP
|
|
||||||
.RS 4
|
|
||||||
\fIparticles\fP The starting particles
|
|
||||||
.br
|
|
||||||
\fIB_0\fP The magnetic field strength
|
|
||||||
.br
|
|
||||||
\fIV_0\fP The time dependent applied potential
|
|
||||||
.br
|
|
||||||
\fId\fP The characteristic dimension
|
|
||||||
.br
|
|
||||||
\fIt\fP The starting time
|
|
||||||
.RE
|
|
||||||
.PP
|
|
||||||
|
|
||||||
.PP
|
|
||||||
Definition at line \fB39\fP of file \fBPenningTrap\&.cpp\fP\&.
|
|
||||||
.SH "Member Function Documentation"
|
|
||||||
.PP
|
|
||||||
.SS "void PenningTrap::add_particle (\fBParticle\fP particle)"
|
|
||||||
|
|
||||||
.PP
|
|
||||||
Add a particle to the system\&.
|
|
||||||
.PP
|
|
||||||
\fBParameters\fP
|
|
||||||
.RS 4
|
|
||||||
\fIparticle\fP The particle to add to the Penning trap
|
|
||||||
.RE
|
|
||||||
.PP
|
|
||||||
|
|
||||||
.PP
|
|
||||||
Definition at line \fB82\fP of file \fBPenningTrap\&.cpp\fP\&.
|
|
||||||
.SS "void PenningTrap::evolve_forward_euler (double dt, bool particle_interaction = \fCtrue\fP)"
|
|
||||||
|
|
||||||
.PP
|
|
||||||
Go forward one timestep using the forward Euler method\&.
|
|
||||||
.PP
|
|
||||||
\fBParameters\fP
|
|
||||||
.RS 4
|
|
||||||
\fIdt\fP The step length
|
|
||||||
.br
|
|
||||||
\fIparticle_interaction\fP Turn particle interactions on/off
|
|
||||||
.RE
|
|
||||||
.PP
|
|
||||||
|
|
||||||
.PP
|
|
||||||
Definition at line \fB186\fP of file \fBPenningTrap\&.cpp\fP\&.
|
|
||||||
.SS "void PenningTrap::evolve_RK4 (double dt, bool particle_interaction = \fCtrue\fP)"
|
|
||||||
|
|
||||||
.PP
|
|
||||||
Go forward one timestep using the RK4 method\&.
|
|
||||||
.PP
|
|
||||||
\fBParameters\fP
|
|
||||||
.RS 4
|
|
||||||
\fIdt\fP The step length
|
|
||||||
.br
|
|
||||||
\fIparticle_interaction\fP Turn particle interactions on/off
|
|
||||||
.RE
|
|
||||||
.PP
|
|
||||||
|
|
||||||
.PP
|
|
||||||
Definition at line \fB151\fP of file \fBPenningTrap\&.cpp\fP\&.
|
|
||||||
.SS "\fBvec_3d\fP PenningTrap::external_B_field (\fBvec_3d\fP r)"
|
|
||||||
|
|
||||||
.PP
|
|
||||||
Calculate B at point r\&.
|
|
||||||
.PP
|
|
||||||
\fBParameters\fP
|
|
||||||
.RS 4
|
|
||||||
\fIr\fP The position where we want to calculate the B field
|
|
||||||
.RE
|
|
||||||
.PP
|
|
||||||
\fBReturns\fP
|
|
||||||
.RS 4
|
|
||||||
vec_3d
|
|
||||||
.RE
|
|
||||||
.PP
|
|
||||||
|
|
||||||
.PP
|
|
||||||
Definition at line \fB95\fP of file \fBPenningTrap\&.cpp\fP\&.
|
|
||||||
.SS "\fBvec_3d\fP PenningTrap::external_E_field (\fBvec_3d\fP r)"
|
|
||||||
|
|
||||||
.PP
|
|
||||||
Calculate E at point r\&.
|
|
||||||
.PP
|
|
||||||
\fBParameters\fP
|
|
||||||
.RS 4
|
|
||||||
\fIr\fP The position where we want to calculate the E field
|
|
||||||
.RE
|
|
||||||
.PP
|
|
||||||
\fBReturns\fP
|
|
||||||
.RS 4
|
|
||||||
vec_3d
|
|
||||||
.RE
|
|
||||||
.PP
|
|
||||||
|
|
||||||
.PP
|
|
||||||
Definition at line \fB87\fP of file \fBPenningTrap\&.cpp\fP\&.
|
|
||||||
.SS "\fBvec_3d\fP PenningTrap::force_on_particle (unsigned int i, unsigned int j)"
|
|
||||||
|
|
||||||
.PP
|
|
||||||
Calculate the force between 2 particles\&. Calculate the force exhibited on particle p_i from particle p_j\&.
|
|
||||||
.PP
|
|
||||||
\fBParameters\fP
|
|
||||||
.RS 4
|
|
||||||
\fIi\fP The index of particle p_i
|
|
||||||
.br
|
|
||||||
\fIj\fP The index of particle p_j
|
|
||||||
.RE
|
|
||||||
.PP
|
|
||||||
\fBReturns\fP
|
|
||||||
.RS 4
|
|
||||||
vec_3d
|
|
||||||
.RE
|
|
||||||
.PP
|
|
||||||
|
|
||||||
.PP
|
|
||||||
Definition at line \fB100\fP of file \fBPenningTrap\&.cpp\fP\&.
|
|
||||||
.SS "double PenningTrap::fraction_of_particles_left (double time, unsigned int steps, std::string method = \fC'rk4'\fP, bool particle_interaction = \fCtrue\fP)"
|
|
||||||
|
|
||||||
.PP
|
|
||||||
Simulate and calculate what fraction of particles are still left inside the Penning trap after the simulation\&.
|
|
||||||
.PP
|
|
||||||
\fBParameters\fP
|
|
||||||
.RS 4
|
|
||||||
\fItime\fP The time to simulate in microseconds
|
|
||||||
.br
|
|
||||||
\fIsteps\fP The amount of steps for the whole simulation
|
|
||||||
.br
|
|
||||||
\fImethod\fP The method to use when moving forward a timestep
|
|
||||||
.br
|
|
||||||
\fIparticle_interaction\fP Turn particle interactions on/off
|
|
||||||
.RE
|
|
||||||
.PP
|
|
||||||
\fBReturns\fP
|
|
||||||
.RS 4
|
|
||||||
double
|
|
||||||
.RE
|
|
||||||
.PP
|
|
||||||
|
|
||||||
.PP
|
|
||||||
Definition at line \fB266\fP of file \fBPenningTrap\&.cpp\fP\&.
|
|
||||||
.SS "\fBvec_3d\fP PenningTrap::r_func (unsigned int i, unsigned int j, double dt)\fC [private]\fP"
|
|
||||||
|
|
||||||
.PP
|
|
||||||
Helper for evolve_RK4 when calculating $k_{r,i,j}$ values\&. Something
|
|
||||||
.PP
|
|
||||||
\fBParameters\fP
|
|
||||||
.RS 4
|
|
||||||
\fIi\fP Index i for $k_{r,i,j}$
|
|
||||||
.br
|
|
||||||
\fIj\fP Index j for $k_{r,i,j}$
|
|
||||||
.br
|
|
||||||
\fIdt\fP the step length (delta time)
|
|
||||||
.RE
|
|
||||||
.PP
|
|
||||||
\fBReturns\fP
|
|
||||||
.RS 4
|
|
||||||
vec_3d
|
|
||||||
.RE
|
|
||||||
.PP
|
|
||||||
|
|
||||||
.PP
|
|
||||||
Definition at line \fB64\fP of file \fBPenningTrap\&.cpp\fP\&.
|
|
||||||
.SS "\fBsim_arr\fP PenningTrap::simulate (double time, unsigned int steps, std::string method = \fC'rk4'\fP, bool particle_interaction = \fCtrue\fP)"
|
|
||||||
|
|
||||||
.PP
|
|
||||||
Simulate the particle system inside the Penning trap over a certain amount of time\&.
|
|
||||||
.PP
|
|
||||||
\fBParameters\fP
|
|
||||||
.RS 4
|
|
||||||
\fItime\fP The time to simulate in microseconds
|
|
||||||
.br
|
|
||||||
\fIsteps\fP The amount of steps for the whole simulation
|
|
||||||
.br
|
|
||||||
\fImethod\fP The method to use when moving forward a timestep
|
|
||||||
.br
|
|
||||||
\fIparticle_interaction\fP Turn particle interactions on/off
|
|
||||||
.RE
|
|
||||||
.PP
|
|
||||||
|
|
||||||
.PP
|
|
||||||
Definition at line \fB211\fP of file \fBPenningTrap\&.cpp\fP\&.
|
|
||||||
.SS "\fBvec_3d\fP PenningTrap::total_force (unsigned int i)"
|
|
||||||
|
|
||||||
.PP
|
|
||||||
calculate the total force on a particle p_i\&.
|
|
||||||
.PP
|
|
||||||
\fBParameters\fP
|
|
||||||
.RS 4
|
|
||||||
\fIi\fP The index of particle p_i
|
|
||||||
.RE
|
|
||||||
.PP
|
|
||||||
\fBReturns\fP
|
|
||||||
.RS 4
|
|
||||||
vec_3d
|
|
||||||
.RE
|
|
||||||
.PP
|
|
||||||
|
|
||||||
.PP
|
|
||||||
Definition at line \fB146\fP of file \fBPenningTrap\&.cpp\fP\&.
|
|
||||||
.SS "\fBvec_3d\fP PenningTrap::total_force_external (unsigned int i)"
|
|
||||||
|
|
||||||
.PP
|
|
||||||
Calculate the total external force on a particle\&. Calculate the total amount of force that E and B exhibits on particle p_i\&.
|
|
||||||
.PP
|
|
||||||
\fBParameters\fP
|
|
||||||
.RS 4
|
|
||||||
\fIi\fP The index of particle p_i
|
|
||||||
.RE
|
|
||||||
.PP
|
|
||||||
\fBReturns\fP
|
|
||||||
.RS 4
|
|
||||||
vec_3d
|
|
||||||
.RE
|
|
||||||
.PP
|
|
||||||
|
|
||||||
.PP
|
|
||||||
Definition at line \fB114\fP of file \fBPenningTrap\&.cpp\fP\&.
|
|
||||||
.SS "\fBvec_3d\fP PenningTrap::total_force_particles (unsigned int i)"
|
|
||||||
|
|
||||||
.PP
|
|
||||||
Calculate the total force on a particle p_i from other particles\&.
|
|
||||||
.PP
|
|
||||||
\fBParameters\fP
|
|
||||||
.RS 4
|
|
||||||
\fIi\fP The index of particle p_i
|
|
||||||
.RE
|
|
||||||
.PP
|
|
||||||
\fBReturns\fP
|
|
||||||
.RS 4
|
|
||||||
vec_3d
|
|
||||||
.RE
|
|
||||||
.PP
|
|
||||||
|
|
||||||
.PP
|
|
||||||
Definition at line \fB129\fP of file \fBPenningTrap\&.cpp\fP\&.
|
|
||||||
.SS "\fBvec_3d\fP PenningTrap::v_func (unsigned int i, unsigned int j, double dt)\fC [private]\fP"
|
|
||||||
|
|
||||||
.PP
|
|
||||||
Helper for evolve_RK4 when calculating $k_{v,i,j}$ values\&. Something
|
|
||||||
.PP
|
|
||||||
\fBParameters\fP
|
|
||||||
.RS 4
|
|
||||||
\fIi\fP Index i for $k_{v,i,j}$
|
|
||||||
.br
|
|
||||||
\fIj\fP Index j for $k_{v,i,j}$
|
|
||||||
.br
|
|
||||||
\fIdt\fP the step length (delta time)
|
|
||||||
.RE
|
|
||||||
.PP
|
|
||||||
\fBReturns\fP
|
|
||||||
.RS 4
|
|
||||||
vec_3d
|
|
||||||
.RE
|
|
||||||
.PP
|
|
||||||
|
|
||||||
.PP
|
|
||||||
Definition at line \fB46\fP of file \fBPenningTrap\&.cpp\fP\&.
|
|
||||||
.SS "void PenningTrap::write_simulation_to_dir (std::string path, double time, unsigned int steps, std::string method = \fC'rk4'\fP, bool particle_interaction = \fCtrue\fP)"
|
|
||||||
|
|
||||||
.PP
|
|
||||||
Simulate and write the displacement of all particles to files\&.
|
|
||||||
.PP
|
|
||||||
\fBParameters\fP
|
|
||||||
.RS 4
|
|
||||||
\fIpath\fP The directory to save the data
|
|
||||||
.br
|
|
||||||
\fItime\fP The time to simulate in microseconds
|
|
||||||
.br
|
|
||||||
\fIsteps\fP The amount of steps for the whole simulation
|
|
||||||
.br
|
|
||||||
\fImethod\fP The method to use when moving forward a timestep
|
|
||||||
.br
|
|
||||||
\fIparticle_interaction\fP Turn particle interactions on/off
|
|
||||||
.RE
|
|
||||||
.PP
|
|
||||||
|
|
||||||
.PP
|
|
||||||
Definition at line \fB240\fP of file \fBPenningTrap\&.cpp\fP\&.
|
|
||||||
.SH "Member Data Documentation"
|
|
||||||
.PP
|
|
||||||
.SS "double PenningTrap::B_0\fC [private]\fP"
|
|
||||||
|
|
||||||
.PP
|
|
||||||
Magnetic field strength\&.
|
|
||||||
.PP
|
|
||||||
Definition at line \fB32\fP of file \fBPenningTrap\&.hpp\fP\&.
|
|
||||||
.SS "double PenningTrap::d\fC [private]\fP"
|
|
||||||
|
|
||||||
.PP
|
|
||||||
Characteristic dimension\&.
|
|
||||||
.PP
|
|
||||||
Definition at line \fB34\fP of file \fBPenningTrap\&.hpp\fP\&.
|
|
||||||
.SS "\fBsim_arr\fP PenningTrap::k_r\fC [private]\fP"
|
|
||||||
A 2D vector containing all $k_{i,j}$ where $j$ is the index of a particle
|
|
||||||
.PP
|
|
||||||
Definition at line \fB39\fP of file \fBPenningTrap\&.hpp\fP\&.
|
|
||||||
.SS "\fBsim_arr\fP PenningTrap::k_v\fC [private]\fP"
|
|
||||||
A 2D vector containing all $k_{i,j}$ where $j$ is the index of a particle
|
|
||||||
.PP
|
|
||||||
Definition at line \fB37\fP of file \fBPenningTrap\&.hpp\fP\&.
|
|
||||||
.SS "std::vector<\fBParticle\fP> PenningTrap::particles\fC [private]\fP"
|
|
||||||
|
|
||||||
.PP
|
|
||||||
The particles in the Penning trap\&.
|
|
||||||
.PP
|
|
||||||
Definition at line \fB36\fP of file \fBPenningTrap\&.hpp\fP\&.
|
|
||||||
.SS "double PenningTrap::t\fC [private]\fP"
|
|
||||||
|
|
||||||
.PP
|
|
||||||
Current time\&.
|
|
||||||
.PP
|
|
||||||
Definition at line \fB35\fP of file \fBPenningTrap\&.hpp\fP\&.
|
|
||||||
.SS "std::function<double(double)> PenningTrap::V_0\fC [private]\fP"
|
|
||||||
|
|
||||||
.PP
|
|
||||||
Applied potential\&.
|
|
||||||
.PP
|
|
||||||
Definition at line \fB33\fP of file \fBPenningTrap\&.hpp\fP\&.
|
|
||||||
|
|
||||||
.SH "Author"
|
|
||||||
.PP
|
|
||||||
Generated automatically by Doxygen for Penning Trap Simulation from the source code\&.
|
|
||||||
@ -1,48 +0,0 @@
|
|||||||
.TH "src/PenningTrap.cpp" 3 "Sat Oct 14 2023" "Penning Trap Simulation" \" -*- nroff -*-
|
|
||||||
.ad l
|
|
||||||
.nh
|
|
||||||
.SH NAME
|
|
||||||
src/PenningTrap.cpp \- The implementation of the \fBPenningTrap\fP class\&.
|
|
||||||
|
|
||||||
.SH SYNOPSIS
|
|
||||||
.br
|
|
||||||
.PP
|
|
||||||
\fC#include 'PenningTrap\&.hpp'\fP
|
|
||||||
.br
|
|
||||||
\fC#include 'constants\&.hpp'\fP
|
|
||||||
.br
|
|
||||||
\fC#include 'typedefs\&.hpp'\fP
|
|
||||||
.br
|
|
||||||
\fC#include 'utils\&.hpp'\fP
|
|
||||||
.br
|
|
||||||
|
|
||||||
.SH "Detailed Description"
|
|
||||||
.PP
|
|
||||||
The implementation of the \fBPenningTrap\fP class\&.
|
|
||||||
|
|
||||||
|
|
||||||
.PP
|
|
||||||
\fBAuthor\fP
|
|
||||||
.RS 4
|
|
||||||
Cory Alexander Balaton (coryab)
|
|
||||||
.PP
|
|
||||||
Janita Ovidie Sandtrøen Willumsen (janitaws)
|
|
||||||
.RE
|
|
||||||
.PP
|
|
||||||
\fBVersion\fP
|
|
||||||
.RS 4
|
|
||||||
0\&.1
|
|
||||||
.RE
|
|
||||||
.PP
|
|
||||||
.PP
|
|
||||||
\fBBug\fP
|
|
||||||
.RS 4
|
|
||||||
No known bugs
|
|
||||||
.RE
|
|
||||||
.PP
|
|
||||||
|
|
||||||
.PP
|
|
||||||
Definition in file \fBPenningTrap\&.cpp\fP\&.
|
|
||||||
.SH "Author"
|
|
||||||
.PP
|
|
||||||
Generated automatically by Doxygen for Penning Trap Simulation from the source code\&.
|
|
||||||
@ -1,58 +0,0 @@
|
|||||||
.TH "include/PenningTrap.hpp" 3 "Sat Oct 14 2023" "Penning Trap Simulation" \" -*- nroff -*-
|
|
||||||
.ad l
|
|
||||||
.nh
|
|
||||||
.SH NAME
|
|
||||||
include/PenningTrap.hpp \- A class for simulating a Penning trap\&.
|
|
||||||
|
|
||||||
.SH SYNOPSIS
|
|
||||||
.br
|
|
||||||
.PP
|
|
||||||
\fC#include <armadillo>\fP
|
|
||||||
.br
|
|
||||||
\fC#include <omp\&.h>\fP
|
|
||||||
.br
|
|
||||||
\fC#include 'Particle\&.hpp'\fP
|
|
||||||
.br
|
|
||||||
\fC#include 'constants\&.hpp'\fP
|
|
||||||
.br
|
|
||||||
\fC#include 'typedefs\&.hpp'\fP
|
|
||||||
.br
|
|
||||||
|
|
||||||
.SS "Classes"
|
|
||||||
|
|
||||||
.in +1c
|
|
||||||
.ti -1c
|
|
||||||
.RI "class \fBPenningTrap\fP"
|
|
||||||
.br
|
|
||||||
.RI "A class that simulates a Penning trap\&. "
|
|
||||||
.in -1c
|
|
||||||
.SH "Detailed Description"
|
|
||||||
.PP
|
|
||||||
A class for simulating a Penning trap\&.
|
|
||||||
|
|
||||||
|
|
||||||
.PP
|
|
||||||
\fBAuthor\fP
|
|
||||||
.RS 4
|
|
||||||
Cory Alexander Balaton (coryab)
|
|
||||||
.PP
|
|
||||||
Janita Ovidie Sandtrøen Willumsen (janitaws)
|
|
||||||
.RE
|
|
||||||
.PP
|
|
||||||
\fBVersion\fP
|
|
||||||
.RS 4
|
|
||||||
0\&.1
|
|
||||||
.RE
|
|
||||||
.PP
|
|
||||||
.PP
|
|
||||||
\fBBug\fP
|
|
||||||
.RS 4
|
|
||||||
No known bugs
|
|
||||||
.RE
|
|
||||||
.PP
|
|
||||||
|
|
||||||
.PP
|
|
||||||
Definition in file \fBPenningTrap\&.hpp\fP\&.
|
|
||||||
.SH "Author"
|
|
||||||
.PP
|
|
||||||
Generated automatically by Doxygen for Penning Trap Simulation from the source code\&.
|
|
||||||
@ -1,56 +0,0 @@
|
|||||||
.TH "PenningTrapTest" 3 "Sat Oct 14 2023" "Penning Trap Simulation" \" -*- nroff -*-
|
|
||||||
.ad l
|
|
||||||
.nh
|
|
||||||
.SH NAME
|
|
||||||
PenningTrapTest
|
|
||||||
.SH SYNOPSIS
|
|
||||||
.br
|
|
||||||
.PP
|
|
||||||
.SS "Static Public Member Functions"
|
|
||||||
|
|
||||||
.in +1c
|
|
||||||
.ti -1c
|
|
||||||
.RI "static void \fBtest_external_E_field\fP ()"
|
|
||||||
.br
|
|
||||||
.ti -1c
|
|
||||||
.RI "static void \fBtest_external_B_field\fP ()"
|
|
||||||
.br
|
|
||||||
.ti -1c
|
|
||||||
.RI "static void \fBtest_force_on_particle\fP ()"
|
|
||||||
.br
|
|
||||||
.ti -1c
|
|
||||||
.RI "static void \fBtest_total_force_external\fP ()"
|
|
||||||
.br
|
|
||||||
.ti -1c
|
|
||||||
.RI "static void \fBtest_total_force_particles\fP ()"
|
|
||||||
.br
|
|
||||||
.in -1c
|
|
||||||
.SH "Detailed Description"
|
|
||||||
.PP
|
|
||||||
Definition at line \fB20\fP of file \fBtest_suite\&.cpp\fP\&.
|
|
||||||
.SH "Member Function Documentation"
|
|
||||||
.PP
|
|
||||||
.SS "static void PenningTrapTest::test_external_B_field ()\fC [inline]\fP, \fC [static]\fP"
|
|
||||||
|
|
||||||
.PP
|
|
||||||
Definition at line \fB59\fP of file \fBtest_suite\&.cpp\fP\&.
|
|
||||||
.SS "static void PenningTrapTest::test_external_E_field ()\fC [inline]\fP, \fC [static]\fP"
|
|
||||||
|
|
||||||
.PP
|
|
||||||
Definition at line \fB22\fP of file \fBtest_suite\&.cpp\fP\&.
|
|
||||||
.SS "static void PenningTrapTest::test_force_on_particle ()\fC [inline]\fP, \fC [static]\fP"
|
|
||||||
|
|
||||||
.PP
|
|
||||||
Definition at line \fB70\fP of file \fBtest_suite\&.cpp\fP\&.
|
|
||||||
.SS "static void PenningTrapTest::test_total_force_external ()\fC [inline]\fP, \fC [static]\fP"
|
|
||||||
|
|
||||||
.PP
|
|
||||||
Definition at line \fB95\fP of file \fBtest_suite\&.cpp\fP\&.
|
|
||||||
.SS "static void PenningTrapTest::test_total_force_particles ()\fC [inline]\fP, \fC [static]\fP"
|
|
||||||
|
|
||||||
.PP
|
|
||||||
Definition at line \fB108\fP of file \fBtest_suite\&.cpp\fP\&.
|
|
||||||
|
|
||||||
.SH "Author"
|
|
||||||
.PP
|
|
||||||
Generated automatically by Doxygen for Penning Trap Simulation from the source code\&.
|
|
||||||
@ -1,29 +0,0 @@
|
|||||||
.TH "bug" 3 "Sat Oct 14 2023" "Penning Trap Simulation" \" -*- nroff -*-
|
|
||||||
.ad l
|
|
||||||
.nh
|
|
||||||
.SH NAME
|
|
||||||
bug \- Bug List
|
|
||||||
.PP
|
|
||||||
|
|
||||||
.IP "\fBFile \fBconstants\&.hpp\fP \fP" 1c
|
|
||||||
No known bugs
|
|
||||||
.IP "\fBFile \fBmain\&.cpp\fP \fP" 1c
|
|
||||||
No known bugs
|
|
||||||
.IP "\fBFile \fBParticle\&.cpp\fP \fP" 1c
|
|
||||||
No known bugs
|
|
||||||
.IP "\fBFile \fBParticle\&.hpp\fP \fP" 1c
|
|
||||||
No known bugs
|
|
||||||
.IP "\fBFile \fBPenningTrap\&.cpp\fP \fP" 1c
|
|
||||||
No known bugs
|
|
||||||
.IP "\fBFile \fBPenningTrap\&.hpp\fP \fP" 1c
|
|
||||||
No known bugs
|
|
||||||
.IP "\fBFile \fBtest_suite\&.cpp\fP \fP" 1c
|
|
||||||
No known bugs
|
|
||||||
.IP "\fBFile \fBtypedefs\&.hpp\fP \fP" 1c
|
|
||||||
No known bugs
|
|
||||||
.IP "\fBFile \fButils\&.cpp\fP \fP" 1c
|
|
||||||
No known bugs
|
|
||||||
.IP "\fBFile \fButils\&.hpp\fP \fP" 1c
|
|
||||||
No known bugs
|
|
||||||
.PP
|
|
||||||
|
|
||||||
@ -1,75 +0,0 @@
|
|||||||
.TH "include/constants.hpp" 3 "Sat Oct 14 2023" "Penning Trap Simulation" \" -*- nroff -*-
|
|
||||||
.ad l
|
|
||||||
.nh
|
|
||||||
.SH NAME
|
|
||||||
include/constants.hpp \- Library of constants\&.
|
|
||||||
|
|
||||||
.SH SYNOPSIS
|
|
||||||
.br
|
|
||||||
.PP
|
|
||||||
.SS "Macros"
|
|
||||||
|
|
||||||
.in +1c
|
|
||||||
.ti -1c
|
|
||||||
.RI "#define \fBK_E\fP 138935\&.333"
|
|
||||||
.br
|
|
||||||
.RI "Coulomb constant\&. unit: $\frac{u(\mu m)^3}{(\mu s)^2 e^2}$\&. "
|
|
||||||
.ti -1c
|
|
||||||
.RI "#define \fBT\fP 96\&.4852558"
|
|
||||||
.br
|
|
||||||
.RI "1 Tesla\&. unit: $ \frac{u}{(\mu s) e} $ "
|
|
||||||
.ti -1c
|
|
||||||
.RI "#define \fBV\fP 96485255\&.8"
|
|
||||||
.br
|
|
||||||
.RI "1 Volt\&. unit: $ \frac{u (\mu m)^2}{(\mu s)^2 e} $ "
|
|
||||||
.in -1c
|
|
||||||
.SH "Detailed Description"
|
|
||||||
.PP
|
|
||||||
Library of constants\&.
|
|
||||||
|
|
||||||
|
|
||||||
.PP
|
|
||||||
\fBAuthor\fP
|
|
||||||
.RS 4
|
|
||||||
Cory Alexander Balaton (coryab)
|
|
||||||
.PP
|
|
||||||
Janita Ovidie Sandtrøen Willumsen (janitaws)
|
|
||||||
.RE
|
|
||||||
.PP
|
|
||||||
\fBVersion\fP
|
|
||||||
.RS 4
|
|
||||||
0\&.1
|
|
||||||
.RE
|
|
||||||
.PP
|
|
||||||
.PP
|
|
||||||
\fBBug\fP
|
|
||||||
.RS 4
|
|
||||||
No known bugs
|
|
||||||
.RE
|
|
||||||
.PP
|
|
||||||
|
|
||||||
.PP
|
|
||||||
Definition in file \fBconstants\&.hpp\fP\&.
|
|
||||||
.SH "Macro Definition Documentation"
|
|
||||||
.PP
|
|
||||||
.SS "#define K_E 138935\&.333"
|
|
||||||
|
|
||||||
.PP
|
|
||||||
Coulomb constant\&. unit: $\frac{u(\mu m)^3}{(\mu s)^2 e^2}$\&.
|
|
||||||
.PP
|
|
||||||
Definition at line \fB15\fP of file \fBconstants\&.hpp\fP\&.
|
|
||||||
.SS "#define T 96\&.4852558"
|
|
||||||
|
|
||||||
.PP
|
|
||||||
1 Tesla\&. unit: $ \frac{u}{(\mu s) e} $
|
|
||||||
.PP
|
|
||||||
Definition at line \fB17\fP of file \fBconstants\&.hpp\fP\&.
|
|
||||||
.SS "#define V 96485255\&.8"
|
|
||||||
|
|
||||||
.PP
|
|
||||||
1 Volt\&. unit: $ \frac{u (\mu m)^2}{(\mu s)^2 e} $
|
|
||||||
.PP
|
|
||||||
Definition at line \fB19\fP of file \fBconstants\&.hpp\fP\&.
|
|
||||||
.SH "Author"
|
|
||||||
.PP
|
|
||||||
Generated automatically by Doxygen for Penning Trap Simulation from the source code\&.
|
|
||||||
@ -1,148 +0,0 @@
|
|||||||
.TH "src/main.cpp" 3 "Sat Oct 14 2023" "Penning Trap Simulation" \" -*- nroff -*-
|
|
||||||
.ad l
|
|
||||||
.nh
|
|
||||||
.SH NAME
|
|
||||||
src/main.cpp \- The main program for this project\&.
|
|
||||||
|
|
||||||
.SH SYNOPSIS
|
|
||||||
.br
|
|
||||||
.PP
|
|
||||||
\fC#include <cmath>\fP
|
|
||||||
.br
|
|
||||||
\fC#include <fstream>\fP
|
|
||||||
.br
|
|
||||||
\fC#include <omp\&.h>\fP
|
|
||||||
.br
|
|
||||||
\fC#include <string>\fP
|
|
||||||
.br
|
|
||||||
\fC#include <sys/stat\&.h>\fP
|
|
||||||
.br
|
|
||||||
\fC#include <vector>\fP
|
|
||||||
.br
|
|
||||||
\fC#include 'PenningTrap\&.hpp'\fP
|
|
||||||
.br
|
|
||||||
\fC#include 'utils\&.hpp'\fP
|
|
||||||
.br
|
|
||||||
|
|
||||||
.SS "Macros"
|
|
||||||
|
|
||||||
.in +1c
|
|
||||||
.ti -1c
|
|
||||||
.RI "#define \fBPARTICLES\fP 100"
|
|
||||||
.br
|
|
||||||
.ti -1c
|
|
||||||
.RI "#define \fBN\fP 10000"
|
|
||||||
.br
|
|
||||||
.ti -1c
|
|
||||||
.RI "#define \fBCHARGE\fP 1\&."
|
|
||||||
.br
|
|
||||||
.ti -1c
|
|
||||||
.RI "#define \fBMASS\fP 40\&."
|
|
||||||
.br
|
|
||||||
.in -1c
|
|
||||||
.SS "Functions"
|
|
||||||
|
|
||||||
.in +1c
|
|
||||||
.ti -1c
|
|
||||||
.RI "void \fBsimulate_single_particle\fP ()"
|
|
||||||
.br
|
|
||||||
.ti -1c
|
|
||||||
.RI "void \fBsimulate_two_particles\fP ()"
|
|
||||||
.br
|
|
||||||
.ti -1c
|
|
||||||
.RI "void \fBsimulate_single_particle_with_different_steps\fP ()"
|
|
||||||
.br
|
|
||||||
.ti -1c
|
|
||||||
.RI "void \fBsimulate_100_particles\fP ()"
|
|
||||||
.br
|
|
||||||
.ti -1c
|
|
||||||
.RI "void \fBsimulate_100_particles_with_time_potential\fP ()"
|
|
||||||
.br
|
|
||||||
.ti -1c
|
|
||||||
.RI "int \fBmain\fP ()"
|
|
||||||
.br
|
|
||||||
.in -1c
|
|
||||||
.SS "Variables"
|
|
||||||
|
|
||||||
.in +1c
|
|
||||||
.ti -1c
|
|
||||||
.RI "\fBParticle\fP \fBp1\fP (CHARGE, MASS, \fBvec_3d\fP{20\&., 0\&., 20\&.}, \fBvec_3d\fP{0\&., 25\&., 0\&.})"
|
|
||||||
.br
|
|
||||||
.ti -1c
|
|
||||||
.RI "\fBParticle\fP \fBp2\fP (CHARGE, MASS, \fBvec_3d\fP{25\&., 25\&., 0\&.}, \fBvec_3d\fP{0\&., 40\&., 5\&.})"
|
|
||||||
.br
|
|
||||||
.in -1c
|
|
||||||
.SH "Detailed Description"
|
|
||||||
.PP
|
|
||||||
The main program for this project\&.
|
|
||||||
|
|
||||||
|
|
||||||
.PP
|
|
||||||
\fBAuthor\fP
|
|
||||||
.RS 4
|
|
||||||
Cory Alexander Balaton (coryab)
|
|
||||||
.PP
|
|
||||||
Janita Ovidie Sandtrøen Willumsen (janitaws)
|
|
||||||
.RE
|
|
||||||
.PP
|
|
||||||
\fBVersion\fP
|
|
||||||
.RS 4
|
|
||||||
0\&.1
|
|
||||||
.RE
|
|
||||||
.PP
|
|
||||||
.PP
|
|
||||||
\fBBug\fP
|
|
||||||
.RS 4
|
|
||||||
No known bugs
|
|
||||||
.RE
|
|
||||||
.PP
|
|
||||||
|
|
||||||
.PP
|
|
||||||
Definition in file \fBmain\&.cpp\fP\&.
|
|
||||||
.SH "Macro Definition Documentation"
|
|
||||||
.PP
|
|
||||||
.SS "#define CHARGE 1\&."
|
|
||||||
|
|
||||||
.PP
|
|
||||||
Definition at line \fB25\fP of file \fBmain\&.cpp\fP\&.
|
|
||||||
.SS "#define MASS 40\&."
|
|
||||||
|
|
||||||
.PP
|
|
||||||
Definition at line \fB26\fP of file \fBmain\&.cpp\fP\&.
|
|
||||||
.SS "#define N 10000"
|
|
||||||
|
|
||||||
.PP
|
|
||||||
Definition at line \fB24\fP of file \fBmain\&.cpp\fP\&.
|
|
||||||
.SS "#define PARTICLES 100"
|
|
||||||
|
|
||||||
.PP
|
|
||||||
Definition at line \fB23\fP of file \fBmain\&.cpp\fP\&.
|
|
||||||
.SH "Function Documentation"
|
|
||||||
.PP
|
|
||||||
.SS "int main ()"
|
|
||||||
|
|
||||||
.PP
|
|
||||||
Definition at line \fB124\fP of file \fBmain\&.cpp\fP\&.
|
|
||||||
.SS "void simulate_100_particles ()"
|
|
||||||
|
|
||||||
.PP
|
|
||||||
Definition at line \fB77\fP of file \fBmain\&.cpp\fP\&.
|
|
||||||
.SS "void simulate_100_particles_with_time_potential ()"
|
|
||||||
|
|
||||||
.PP
|
|
||||||
Definition at line \fB91\fP of file \fBmain\&.cpp\fP\&.
|
|
||||||
.SS "void simulate_single_particle ()"
|
|
||||||
|
|
||||||
.PP
|
|
||||||
Definition at line \fB31\fP of file \fBmain\&.cpp\fP\&.
|
|
||||||
.SS "void simulate_single_particle_with_different_steps ()"
|
|
||||||
|
|
||||||
.PP
|
|
||||||
Definition at line \fB55\fP of file \fBmain\&.cpp\fP\&.
|
|
||||||
.SS "void simulate_two_particles ()"
|
|
||||||
|
|
||||||
.PP
|
|
||||||
Definition at line \fB42\fP of file \fBmain\&.cpp\fP\&.
|
|
||||||
.SH "Author"
|
|
||||||
.PP
|
|
||||||
Generated automatically by Doxygen for Penning Trap Simulation from the source code\&.
|
|
||||||
@ -1,70 +0,0 @@
|
|||||||
.TH "src/test_suite.cpp" 3 "Sat Oct 14 2023" "Penning Trap Simulation" \" -*- nroff -*-
|
|
||||||
.ad l
|
|
||||||
.nh
|
|
||||||
.SH NAME
|
|
||||||
src/test_suite.cpp \- The test suite for the project\&.
|
|
||||||
|
|
||||||
.SH SYNOPSIS
|
|
||||||
.br
|
|
||||||
.PP
|
|
||||||
\fC#include 'PenningTrap\&.hpp'\fP
|
|
||||||
.br
|
|
||||||
\fC#include 'utils\&.hpp'\fP
|
|
||||||
.br
|
|
||||||
\fC#include <iomanip>\fP
|
|
||||||
.br
|
|
||||||
\fC#include <sstream>\fP
|
|
||||||
.br
|
|
||||||
\fC#include <string>\fP
|
|
||||||
.br
|
|
||||||
|
|
||||||
.SS "Classes"
|
|
||||||
|
|
||||||
.in +1c
|
|
||||||
.ti -1c
|
|
||||||
.RI "class \fBPenningTrapTest\fP"
|
|
||||||
.br
|
|
||||||
.in -1c
|
|
||||||
.SS "Functions"
|
|
||||||
|
|
||||||
.in +1c
|
|
||||||
.ti -1c
|
|
||||||
.RI "int \fBmain\fP ()"
|
|
||||||
.br
|
|
||||||
.in -1c
|
|
||||||
.SH "Detailed Description"
|
|
||||||
.PP
|
|
||||||
The test suite for the project\&.
|
|
||||||
|
|
||||||
|
|
||||||
.PP
|
|
||||||
\fBAuthor\fP
|
|
||||||
.RS 4
|
|
||||||
Cory Alexander Balaton (coryab)
|
|
||||||
.PP
|
|
||||||
Janita Ovidie Sandtrøen Willumsen (janitaws)
|
|
||||||
.RE
|
|
||||||
.PP
|
|
||||||
\fBVersion\fP
|
|
||||||
.RS 4
|
|
||||||
0\&.1
|
|
||||||
.RE
|
|
||||||
.PP
|
|
||||||
.PP
|
|
||||||
\fBBug\fP
|
|
||||||
.RS 4
|
|
||||||
No known bugs
|
|
||||||
.RE
|
|
||||||
.PP
|
|
||||||
|
|
||||||
.PP
|
|
||||||
Definition in file \fBtest_suite\&.cpp\fP\&.
|
|
||||||
.SH "Function Documentation"
|
|
||||||
.PP
|
|
||||||
.SS "int main ()"
|
|
||||||
|
|
||||||
.PP
|
|
||||||
Definition at line \fB135\fP of file \fBtest_suite\&.cpp\fP\&.
|
|
||||||
.SH "Author"
|
|
||||||
.PP
|
|
||||||
Generated automatically by Doxygen for Penning Trap Simulation from the source code\&.
|
|
||||||
@ -1,14 +0,0 @@
|
|||||||
.TH "todo" 3 "Sat Oct 14 2023" "Penning Trap Simulation" \" -*- nroff -*-
|
|
||||||
.ad l
|
|
||||||
.nh
|
|
||||||
.SH NAME
|
|
||||||
todo \- Todo List
|
|
||||||
.PP
|
|
||||||
|
|
||||||
.IP "\fBFile \fBPenningTrap\&.cpp\fP \fP" 1c
|
|
||||||
Implement evolve_RK4
|
|
||||||
.PP
|
|
||||||
.PP
|
|
||||||
Implement evolve_forward_euler
|
|
||||||
.PP
|
|
||||||
|
|
||||||
@ -1,92 +0,0 @@
|
|||||||
.TH "include/typedefs.hpp" 3 "Sat Oct 14 2023" "Penning Trap Simulation" \" -*- nroff -*-
|
|
||||||
.ad l
|
|
||||||
.nh
|
|
||||||
.SH NAME
|
|
||||||
include/typedefs.hpp \- Useful typedefs for cleaner code\&.
|
|
||||||
|
|
||||||
.SH SYNOPSIS
|
|
||||||
.br
|
|
||||||
.PP
|
|
||||||
\fC#include <vector>\fP
|
|
||||||
.br
|
|
||||||
\fC#include <armadillo>\fP
|
|
||||||
.br
|
|
||||||
|
|
||||||
.SS "Typedefs"
|
|
||||||
|
|
||||||
.in +1c
|
|
||||||
.ti -1c
|
|
||||||
.RI "typedef std::vector< arma::vec::fixed< 3 > > \fBsim_cols\fP"
|
|
||||||
.br
|
|
||||||
.RI "Typedef for the column of the result vector from simulating particles\&. "
|
|
||||||
.ti -1c
|
|
||||||
.RI "typedef std::vector< arma::vec::fixed< 3 > > \fBsim_rows\fP"
|
|
||||||
.br
|
|
||||||
.RI "Typedef for the row of the result vector from simulating particles\&. "
|
|
||||||
.ti -1c
|
|
||||||
.RI "typedef std::vector< \fBsim_cols\fP > \fBsim_arr\fP"
|
|
||||||
.br
|
|
||||||
.RI "Typedef for the result of the simulate method\&. "
|
|
||||||
.ti -1c
|
|
||||||
.RI "typedef arma::vec::fixed< 3 > \fBvec_3d\fP"
|
|
||||||
.br
|
|
||||||
.RI "Typedef for a fixed 3d arma vector\&. "
|
|
||||||
.in -1c
|
|
||||||
.SH "Detailed Description"
|
|
||||||
.PP
|
|
||||||
Useful typedefs for cleaner code\&.
|
|
||||||
|
|
||||||
|
|
||||||
.PP
|
|
||||||
\fBAuthor\fP
|
|
||||||
.RS 4
|
|
||||||
Cory Alexander Balaton (coryab)
|
|
||||||
.PP
|
|
||||||
Janita Ovidie Sandtrøen Willumsen (janitaws)
|
|
||||||
.RE
|
|
||||||
.PP
|
|
||||||
\fBVersion\fP
|
|
||||||
.RS 4
|
|
||||||
1\&.0
|
|
||||||
.RE
|
|
||||||
.PP
|
|
||||||
.PP
|
|
||||||
These typedefs make the code more readable and easy to follow along\&.
|
|
||||||
.PP
|
|
||||||
\fBBug\fP
|
|
||||||
.RS 4
|
|
||||||
No known bugs
|
|
||||||
.RE
|
|
||||||
.PP
|
|
||||||
|
|
||||||
.PP
|
|
||||||
Definition in file \fBtypedefs\&.hpp\fP\&.
|
|
||||||
.SH "Typedef Documentation"
|
|
||||||
.PP
|
|
||||||
.SS "typedef std::vector<\fBsim_cols\fP> \fBsim_arr\fP"
|
|
||||||
|
|
||||||
.PP
|
|
||||||
Typedef for the result of the simulate method\&.
|
|
||||||
.PP
|
|
||||||
Definition at line \fB32\fP of file \fBtypedefs\&.hpp\fP\&.
|
|
||||||
.SS "typedef std::vector<arma::vec::fixed<3> > \fBsim_cols\fP"
|
|
||||||
|
|
||||||
.PP
|
|
||||||
Typedef for the column of the result vector from simulating particles\&.
|
|
||||||
.PP
|
|
||||||
Definition at line \fB24\fP of file \fBtypedefs\&.hpp\fP\&.
|
|
||||||
.SS "typedef std::vector<arma::vec::fixed<3> > \fBsim_rows\fP"
|
|
||||||
|
|
||||||
.PP
|
|
||||||
Typedef for the row of the result vector from simulating particles\&.
|
|
||||||
.PP
|
|
||||||
Definition at line \fB28\fP of file \fBtypedefs\&.hpp\fP\&.
|
|
||||||
.SS "typedef arma::vec::fixed<3> \fBvec_3d\fP"
|
|
||||||
|
|
||||||
.PP
|
|
||||||
Typedef for a fixed 3d arma vector\&.
|
|
||||||
.PP
|
|
||||||
Definition at line \fB36\fP of file \fBtypedefs\&.hpp\fP\&.
|
|
||||||
.SH "Author"
|
|
||||||
.PP
|
|
||||||
Generated automatically by Doxygen for Penning Trap Simulation from the source code\&.
|
|
||||||
@ -1,179 +0,0 @@
|
|||||||
.TH "src/utils.cpp" 3 "Sat Oct 14 2023" "Penning Trap Simulation" \" -*- nroff -*-
|
|
||||||
.ad l
|
|
||||||
.nh
|
|
||||||
.SH NAME
|
|
||||||
src/utils.cpp \- Implementation of the utils\&.
|
|
||||||
|
|
||||||
.SH SYNOPSIS
|
|
||||||
.br
|
|
||||||
.PP
|
|
||||||
\fC#include <sys/stat\&.h>\fP
|
|
||||||
.br
|
|
||||||
\fC#include 'utils\&.hpp'\fP
|
|
||||||
.br
|
|
||||||
|
|
||||||
.SS "Functions"
|
|
||||||
|
|
||||||
.in +1c
|
|
||||||
.ti -1c
|
|
||||||
.RI "std::string \fBscientific_format\fP (double d, int width, int prec)"
|
|
||||||
.br
|
|
||||||
.RI "Turns a double into a string written in scientific format\&. "
|
|
||||||
.ti -1c
|
|
||||||
.RI "std::string \fBscientific_format\fP (const std::vector< double > &v, int width, int prec)"
|
|
||||||
.br
|
|
||||||
.RI "Turns a vector of doubles into a string written in scientific format\&. "
|
|
||||||
.ti -1c
|
|
||||||
.RI "void \fBm_assert\fP (bool expr, std::string expr_str, std::string f, std::string file, int line, std::string msg)"
|
|
||||||
.br
|
|
||||||
.RI "Test an expression, confirm that test is ok, or abort execution\&. "
|
|
||||||
.ti -1c
|
|
||||||
.RI "bool \fBarma_vector_close_to\fP (arma::vec &a, arma::vec &b, double tol)"
|
|
||||||
.br
|
|
||||||
.RI "Test if two armadillo vectors are close to each other\&. "
|
|
||||||
.ti -1c
|
|
||||||
.RI "bool \fBmkpath\fP (std::string path, int mode)"
|
|
||||||
.br
|
|
||||||
.RI "Make path given\&. "
|
|
||||||
.in -1c
|
|
||||||
.SH "Detailed Description"
|
|
||||||
.PP
|
|
||||||
Implementation of the utils\&.
|
|
||||||
|
|
||||||
|
|
||||||
.PP
|
|
||||||
\fBAuthor\fP
|
|
||||||
.RS 4
|
|
||||||
Cory Alexander Balaton (coryab)
|
|
||||||
.PP
|
|
||||||
Janita Ovidie Sandtrøen Willumsen (janitaws)
|
|
||||||
.RE
|
|
||||||
.PP
|
|
||||||
\fBVersion\fP
|
|
||||||
.RS 4
|
|
||||||
1\&.0
|
|
||||||
.RE
|
|
||||||
.PP
|
|
||||||
.PP
|
|
||||||
\fBBug\fP
|
|
||||||
.RS 4
|
|
||||||
No known bugs
|
|
||||||
.RE
|
|
||||||
.PP
|
|
||||||
|
|
||||||
.PP
|
|
||||||
Definition in file \fButils\&.cpp\fP\&.
|
|
||||||
.SH "Function Documentation"
|
|
||||||
.PP
|
|
||||||
.SS "bool arma_vector_close_to (arma::vec & a, arma::vec & b, double tol = \fC1e\-8\fP)"
|
|
||||||
|
|
||||||
.PP
|
|
||||||
Test if two armadillo vectors are close to each other\&. This function takes in 2 vectors and checks if they are approximately equal to each other given a tolerance\&.
|
|
||||||
.PP
|
|
||||||
\fBParameters\fP
|
|
||||||
.RS 4
|
|
||||||
\fIa\fP Vector a
|
|
||||||
.br
|
|
||||||
\fIb\fP Vector b
|
|
||||||
.br
|
|
||||||
\fItol\fP The tolerance
|
|
||||||
.RE
|
|
||||||
.PP
|
|
||||||
\fBReturns\fP
|
|
||||||
.RS 4
|
|
||||||
bool
|
|
||||||
.RE
|
|
||||||
.PP
|
|
||||||
|
|
||||||
.PP
|
|
||||||
Definition at line \fB62\fP of file \fButils\&.cpp\fP\&.
|
|
||||||
.SS "void m_assert (bool expr, std::string expr_str, std::string func, std::string file, int line, std::string msg)"
|
|
||||||
|
|
||||||
.PP
|
|
||||||
Test an expression, confirm that test is ok, or abort execution\&. This function takes in an expression and prints an OK message if it's true, or it prints a fail message and aborts execution if it fails\&.
|
|
||||||
.PP
|
|
||||||
\fBParameters\fP
|
|
||||||
.RS 4
|
|
||||||
\fIexpr\fP The expression to be evaluated
|
|
||||||
.br
|
|
||||||
\fIexpr_str\fP The stringified version of the expression
|
|
||||||
.br
|
|
||||||
\fIfunc\fP The function name of the caller
|
|
||||||
.br
|
|
||||||
\fIfile\fP The file of the caller
|
|
||||||
.br
|
|
||||||
\fIline\fP The line number where this function is called from
|
|
||||||
.br
|
|
||||||
\fImsg\fP The message to be displayed
|
|
||||||
.RE
|
|
||||||
.PP
|
|
||||||
|
|
||||||
.PP
|
|
||||||
Definition at line \fB43\fP of file \fButils\&.cpp\fP\&.
|
|
||||||
.SS "bool mkpath (std::string path, int mode = \fC0777\fP)"
|
|
||||||
|
|
||||||
.PP
|
|
||||||
Make path given\&. This tries to be the equivalent to 'mkdir -p' and creates a new directory whenever it needs to\&.
|
|
||||||
.PP
|
|
||||||
\fBParameters\fP
|
|
||||||
.RS 4
|
|
||||||
\fIpath\fP The path to be created
|
|
||||||
.br
|
|
||||||
\fImode\fP The mode/permissions for all the new directories
|
|
||||||
.RE
|
|
||||||
.PP
|
|
||||||
\fBReturns\fP
|
|
||||||
.RS 4
|
|
||||||
bool
|
|
||||||
.RE
|
|
||||||
.PP
|
|
||||||
|
|
||||||
.PP
|
|
||||||
Definition at line \fB76\fP of file \fButils\&.cpp\fP\&.
|
|
||||||
.SS "std::string scientific_format (const std::vector< double > & v, int width = \fC20\fP, int prec = \fC10\fP)"
|
|
||||||
|
|
||||||
.PP
|
|
||||||
Turns a vector of doubles into a string written in scientific format\&. The code is stolen from https://github.com/anderkve/FYS3150\&.
|
|
||||||
.PP
|
|
||||||
\fBParameters\fP
|
|
||||||
.RS 4
|
|
||||||
\fIv\fP The vector to stringify
|
|
||||||
.br
|
|
||||||
\fIwidth\fP The reserved width of the string
|
|
||||||
.br
|
|
||||||
\fIprec\fP The precision of the stringified number
|
|
||||||
.RE
|
|
||||||
.PP
|
|
||||||
\fBReturns\fP
|
|
||||||
.RS 4
|
|
||||||
std::string
|
|
||||||
.RE
|
|
||||||
.PP
|
|
||||||
|
|
||||||
.PP
|
|
||||||
Definition at line \fB24\fP of file \fButils\&.cpp\fP\&.
|
|
||||||
.SS "std::string scientific_format (double d, int width = \fC20\fP, int prec = \fC10\fP)"
|
|
||||||
|
|
||||||
.PP
|
|
||||||
Turns a double into a string written in scientific format\&. The code is stolen from https://github.com/anderkve/FYS3150\&.
|
|
||||||
.PP
|
|
||||||
\fBParameters\fP
|
|
||||||
.RS 4
|
|
||||||
\fId\fP The number to stringify
|
|
||||||
.br
|
|
||||||
\fIwidth\fP The reserved width of the string
|
|
||||||
.br
|
|
||||||
\fIprec\fP The precision of the stringified number
|
|
||||||
.RE
|
|
||||||
.PP
|
|
||||||
\fBReturns\fP
|
|
||||||
.RS 4
|
|
||||||
std::string
|
|
||||||
.RE
|
|
||||||
.PP
|
|
||||||
|
|
||||||
.PP
|
|
||||||
Definition at line \fB17\fP of file \fButils\&.cpp\fP\&.
|
|
||||||
.SH "Author"
|
|
||||||
.PP
|
|
||||||
Generated automatically by Doxygen for Penning Trap Simulation from the source code\&.
|
|
||||||
@ -1,228 +0,0 @@
|
|||||||
.TH "include/utils.hpp" 3 "Sat Oct 14 2023" "Penning Trap Simulation" \" -*- nroff -*-
|
|
||||||
.ad l
|
|
||||||
.nh
|
|
||||||
.SH NAME
|
|
||||||
include/utils.hpp \- Function prototypes and macros that are useful\&.
|
|
||||||
|
|
||||||
.SH SYNOPSIS
|
|
||||||
.br
|
|
||||||
.PP
|
|
||||||
\fC#include <armadillo>\fP
|
|
||||||
.br
|
|
||||||
\fC#include <iomanip>\fP
|
|
||||||
.br
|
|
||||||
\fC#include <sstream>\fP
|
|
||||||
.br
|
|
||||||
\fC#include <string>\fP
|
|
||||||
.br
|
|
||||||
\fC#include <vector>\fP
|
|
||||||
.br
|
|
||||||
|
|
||||||
.SS "Macros"
|
|
||||||
|
|
||||||
.in +1c
|
|
||||||
.ti -1c
|
|
||||||
.RI "#define \fBDEBUG\fP(msg)"
|
|
||||||
.br
|
|
||||||
.RI "Writes a debug message\&. "
|
|
||||||
.ti -1c
|
|
||||||
.RI "#define \fBASSERT\fP(expr, msg)"
|
|
||||||
.br
|
|
||||||
.RI "A prettier assertion function\&. "
|
|
||||||
.ti -1c
|
|
||||||
.RI "#define \fB__METHOD_NAME__\fP methodName(__PRETTY_FUNCTION__)"
|
|
||||||
.br
|
|
||||||
.RI "Get the name of the current method/function\&. "
|
|
||||||
.in -1c
|
|
||||||
.SS "Functions"
|
|
||||||
|
|
||||||
.in +1c
|
|
||||||
.ti -1c
|
|
||||||
.RI "std::string \fBscientific_format\fP (double d, int width=20, int prec=10)"
|
|
||||||
.br
|
|
||||||
.RI "Turns a double into a string written in scientific format\&. "
|
|
||||||
.ti -1c
|
|
||||||
.RI "std::string \fBscientific_format\fP (const std::vector< double > &v, int width=20, int prec=10)"
|
|
||||||
.br
|
|
||||||
.RI "Turns a vector of doubles into a string written in scientific format\&. "
|
|
||||||
.ti -1c
|
|
||||||
.RI "void \fBm_assert\fP (bool expr, std::string expr_str, std::string func, std::string file, int line, std::string msg)"
|
|
||||||
.br
|
|
||||||
.RI "Test an expression, confirm that test is ok, or abort execution\&. "
|
|
||||||
.ti -1c
|
|
||||||
.RI "bool \fBarma_vector_close_to\fP (arma::vec &a, arma::vec &b, double tol=1e\-8)"
|
|
||||||
.br
|
|
||||||
.RI "Test if two armadillo vectors are close to each other\&. "
|
|
||||||
.ti -1c
|
|
||||||
.RI "bool \fBmkpath\fP (std::string path, int mode=0777)"
|
|
||||||
.br
|
|
||||||
.RI "Make path given\&. "
|
|
||||||
.in -1c
|
|
||||||
.SH "Detailed Description"
|
|
||||||
.PP
|
|
||||||
Function prototypes and macros that are useful\&.
|
|
||||||
|
|
||||||
|
|
||||||
.PP
|
|
||||||
\fBAuthor\fP
|
|
||||||
.RS 4
|
|
||||||
Cory Alexander Balaton (coryab)
|
|
||||||
.PP
|
|
||||||
Janita Ovidie Sandtrøen Willumsen (janitaws)
|
|
||||||
.RE
|
|
||||||
.PP
|
|
||||||
\fBVersion\fP
|
|
||||||
.RS 4
|
|
||||||
1\&.0
|
|
||||||
.RE
|
|
||||||
.PP
|
|
||||||
.PP
|
|
||||||
These utility function are mainly for convenience and aren't directly related to the project\&.
|
|
||||||
.PP
|
|
||||||
\fBBug\fP
|
|
||||||
.RS 4
|
|
||||||
No known bugs
|
|
||||||
.RE
|
|
||||||
.PP
|
|
||||||
|
|
||||||
.PP
|
|
||||||
Definition in file \fButils\&.hpp\fP\&.
|
|
||||||
.SH "Macro Definition Documentation"
|
|
||||||
.PP
|
|
||||||
.SS "#define __METHOD_NAME__ methodName(__PRETTY_FUNCTION__)"
|
|
||||||
|
|
||||||
.PP
|
|
||||||
Get the name of the current method/function\&.
|
|
||||||
.PP
|
|
||||||
Definition at line \fB51\fP of file \fButils\&.hpp\fP\&.
|
|
||||||
.SS "#define ASSERT(expr, msg)"
|
|
||||||
\fBValue:\fP.PP
|
|
||||||
.nf
|
|
||||||
m_assert(expr, #expr, __METHOD_NAME__, __FILE__, \\
|
|
||||||
__LINE__, msg)
|
|
||||||
.fi
|
|
||||||
|
|
||||||
.PP
|
|
||||||
A prettier assertion function\&. This macro calls the m_assert function which is a more informative assertion function than the regular assert function from cassert\&.
|
|
||||||
.PP
|
|
||||||
Definition at line \fB45\fP of file \fButils\&.hpp\fP\&.
|
|
||||||
.SS "#define DEBUG(msg)"
|
|
||||||
|
|
||||||
.PP
|
|
||||||
Writes a debug message\&. This macro writes a debug message that includes the filename, line number, and a custom message\&. The function is wrapped in an ifdef that checks if DBG is defined, so one can choose to display the debug messages by adding the -DDBG flag when compiling\&.
|
|
||||||
.PP
|
|
||||||
Definition at line \fB36\fP of file \fButils\&.hpp\fP\&.
|
|
||||||
.SH "Function Documentation"
|
|
||||||
.PP
|
|
||||||
.SS "bool arma_vector_close_to (arma::vec & a, arma::vec & b, double tol = \fC1e\-8\fP)"
|
|
||||||
|
|
||||||
.PP
|
|
||||||
Test if two armadillo vectors are close to each other\&. This function takes in 2 vectors and checks if they are approximately equal to each other given a tolerance\&.
|
|
||||||
.PP
|
|
||||||
\fBParameters\fP
|
|
||||||
.RS 4
|
|
||||||
\fIa\fP Vector a
|
|
||||||
.br
|
|
||||||
\fIb\fP Vector b
|
|
||||||
.br
|
|
||||||
\fItol\fP The tolerance
|
|
||||||
.RE
|
|
||||||
.PP
|
|
||||||
\fBReturns\fP
|
|
||||||
.RS 4
|
|
||||||
bool
|
|
||||||
.RE
|
|
||||||
.PP
|
|
||||||
|
|
||||||
.PP
|
|
||||||
Definition at line \fB62\fP of file \fButils\&.cpp\fP\&.
|
|
||||||
.SS "void m_assert (bool expr, std::string expr_str, std::string func, std::string file, int line, std::string msg)"
|
|
||||||
|
|
||||||
.PP
|
|
||||||
Test an expression, confirm that test is ok, or abort execution\&. This function takes in an expression and prints an OK message if it's true, or it prints a fail message and aborts execution if it fails\&.
|
|
||||||
.PP
|
|
||||||
\fBParameters\fP
|
|
||||||
.RS 4
|
|
||||||
\fIexpr\fP The expression to be evaluated
|
|
||||||
.br
|
|
||||||
\fIexpr_str\fP The stringified version of the expression
|
|
||||||
.br
|
|
||||||
\fIfunc\fP The function name of the caller
|
|
||||||
.br
|
|
||||||
\fIfile\fP The file of the caller
|
|
||||||
.br
|
|
||||||
\fIline\fP The line number where this function is called from
|
|
||||||
.br
|
|
||||||
\fImsg\fP The message to be displayed
|
|
||||||
.RE
|
|
||||||
.PP
|
|
||||||
|
|
||||||
.PP
|
|
||||||
Definition at line \fB43\fP of file \fButils\&.cpp\fP\&.
|
|
||||||
.SS "bool mkpath (std::string path, int mode = \fC0777\fP)"
|
|
||||||
|
|
||||||
.PP
|
|
||||||
Make path given\&. This tries to be the equivalent to 'mkdir -p' and creates a new directory whenever it needs to\&.
|
|
||||||
.PP
|
|
||||||
\fBParameters\fP
|
|
||||||
.RS 4
|
|
||||||
\fIpath\fP The path to be created
|
|
||||||
.br
|
|
||||||
\fImode\fP The mode/permissions for all the new directories
|
|
||||||
.RE
|
|
||||||
.PP
|
|
||||||
\fBReturns\fP
|
|
||||||
.RS 4
|
|
||||||
bool
|
|
||||||
.RE
|
|
||||||
.PP
|
|
||||||
|
|
||||||
.PP
|
|
||||||
Definition at line \fB76\fP of file \fButils\&.cpp\fP\&.
|
|
||||||
.SS "std::string scientific_format (const std::vector< double > & v, int width = \fC20\fP, int prec = \fC10\fP)"
|
|
||||||
|
|
||||||
.PP
|
|
||||||
Turns a vector of doubles into a string written in scientific format\&. The code is stolen from https://github.com/anderkve/FYS3150\&.
|
|
||||||
.PP
|
|
||||||
\fBParameters\fP
|
|
||||||
.RS 4
|
|
||||||
\fIv\fP The vector to stringify
|
|
||||||
.br
|
|
||||||
\fIwidth\fP The reserved width of the string
|
|
||||||
.br
|
|
||||||
\fIprec\fP The precision of the stringified number
|
|
||||||
.RE
|
|
||||||
.PP
|
|
||||||
\fBReturns\fP
|
|
||||||
.RS 4
|
|
||||||
std::string
|
|
||||||
.RE
|
|
||||||
.PP
|
|
||||||
|
|
||||||
.PP
|
|
||||||
Definition at line \fB24\fP of file \fButils\&.cpp\fP\&.
|
|
||||||
.SS "std::string scientific_format (double d, int width = \fC20\fP, int prec = \fC10\fP)"
|
|
||||||
|
|
||||||
.PP
|
|
||||||
Turns a double into a string written in scientific format\&. The code is stolen from https://github.com/anderkve/FYS3150\&.
|
|
||||||
.PP
|
|
||||||
\fBParameters\fP
|
|
||||||
.RS 4
|
|
||||||
\fId\fP The number to stringify
|
|
||||||
.br
|
|
||||||
\fIwidth\fP The reserved width of the string
|
|
||||||
.br
|
|
||||||
\fIprec\fP The precision of the stringified number
|
|
||||||
.RE
|
|
||||||
.PP
|
|
||||||
\fBReturns\fP
|
|
||||||
.RS 4
|
|
||||||
std::string
|
|
||||||
.RE
|
|
||||||
.PP
|
|
||||||
|
|
||||||
.PP
|
|
||||||
Definition at line \fB17\fP of file \fButils\&.cpp\fP\&.
|
|
||||||
.SH "Author"
|
|
||||||
.PP
|
|
||||||
Generated automatically by Doxygen for Penning Trap Simulation from the source code\&.
|
|
||||||
@ -53,8 +53,8 @@ vec_3d PenningTrap::v_func(unsigned int i, unsigned int j, double dt)
|
|||||||
case 2:
|
case 2:
|
||||||
return dt * this->k_v[2][j];
|
return dt * this->k_v[2][j];
|
||||||
case 3:
|
case 3:
|
||||||
return (dt / 6.) * (this->k_v[0][j].eval() + this->k_v[1][j].eval() +
|
return (dt / 6.) * (this->k_v[0][j] + this->k_v[1][j] +
|
||||||
this->k_v[2][j].eval() + this->k_v[3][j].eval());
|
this->k_v[2][j] + this->k_v[3][j]);
|
||||||
default:
|
default:
|
||||||
std::cout << "Not valid!" << std::endl;
|
std::cout << "Not valid!" << std::endl;
|
||||||
abort();
|
abort();
|
||||||
@ -71,8 +71,8 @@ vec_3d PenningTrap::r_func(unsigned int i, unsigned int j, double dt)
|
|||||||
case 2:
|
case 2:
|
||||||
return dt * this->k_r[2][j];
|
return dt * this->k_r[2][j];
|
||||||
case 3:
|
case 3:
|
||||||
return (dt / 6.) * (this->k_r[0][j].eval() + this->k_r[1][j].eval() +
|
return (dt / 6.) * (this->k_r[0][j] + this->k_r[1][j] +
|
||||||
this->k_r[2][j].eval() + this->k_r[3][j].eval());
|
this->k_r[2][j] + this->k_r[3][j]);
|
||||||
default:
|
default:
|
||||||
std::cout << "Not valid!" << std::endl;
|
std::cout << "Not valid!" << std::endl;
|
||||||
abort();
|
abort();
|
||||||
@ -212,12 +212,16 @@ void PenningTrap::evolve_forward_euler(double dt, bool particle_interaction)
|
|||||||
this->t += dt;
|
this->t += dt;
|
||||||
}
|
}
|
||||||
|
|
||||||
sim_arr PenningTrap::simulate(double time, unsigned int steps,
|
simulation_t PenningTrap::simulate(double time, unsigned int steps,
|
||||||
std::string method, bool particle_interaction)
|
std::string method,
|
||||||
|
bool particle_interaction)
|
||||||
{
|
{
|
||||||
double dt = time / (double)steps;
|
double dt = time / (double)steps;
|
||||||
|
|
||||||
sim_arr res(this->particles.size(), sim_cols(steps));
|
unsigned int size = this->particles.size();
|
||||||
|
// sim_arr res(this->particles.size(), sim_cols(steps));
|
||||||
|
simulation_t res{sim_arr(size, sim_cols(steps)),
|
||||||
|
sim_arr(size, sim_cols(steps))};
|
||||||
|
|
||||||
void (PenningTrap::*func)(double, bool);
|
void (PenningTrap::*func)(double, bool);
|
||||||
if (method == "rk4") {
|
if (method == "rk4") {
|
||||||
@ -232,8 +236,9 @@ sim_arr PenningTrap::simulate(double time, unsigned int steps,
|
|||||||
}
|
}
|
||||||
|
|
||||||
for (size_t j = 0; j < steps; j++) {
|
for (size_t j = 0; j < steps; j++) {
|
||||||
for (size_t i = 0; i < this->particles.size(); i++) {
|
for (size_t i = 0; i < size; i++) {
|
||||||
res[i][j] = this->particles[i].r_vec;
|
res.r_vecs[i][j] = this->particles[i].r_vec;
|
||||||
|
res.v_vecs[i][j] = this->particles[i].v_vec;
|
||||||
}
|
}
|
||||||
(this->*func)(dt, particle_interaction);
|
(this->*func)(dt, particle_interaction);
|
||||||
}
|
}
|
||||||
@ -242,7 +247,8 @@ sim_arr PenningTrap::simulate(double time, unsigned int steps,
|
|||||||
}
|
}
|
||||||
|
|
||||||
void PenningTrap::write_simulation_to_dir(std::string path, double time,
|
void PenningTrap::write_simulation_to_dir(std::string path, double time,
|
||||||
unsigned int steps, std::string method,
|
unsigned int steps,
|
||||||
|
std::string method,
|
||||||
bool particle_interaction)
|
bool particle_interaction)
|
||||||
{
|
{
|
||||||
if (path.back() != '/') {
|
if (path.back() != '/') {
|
||||||
@ -253,23 +259,34 @@ void PenningTrap::write_simulation_to_dir(std::string path, double time,
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
sim_arr res = this->simulate(time, steps, method, particle_interaction);
|
simulation_t res =
|
||||||
|
this->simulate(time, steps, method, particle_interaction);
|
||||||
|
|
||||||
std::ofstream ofile;
|
std::ofstream ofile;
|
||||||
|
|
||||||
#pragma omp parallel for private(ofile)
|
#pragma omp parallel for private(ofile)
|
||||||
for (size_t i = 0; i < this->particles.size(); i++) {
|
for (size_t i = 0; i < this->particles.size(); i++) {
|
||||||
ofile.open(path + "particle_" + std::to_string(i) + ".txt");
|
ofile.open(path + "particle_" + std::to_string(i) + "_r.txt");
|
||||||
for (vec_3d &vec : res[i]) {
|
for (vec_3d &vec : res.r_vecs[i]) {
|
||||||
ofile << vec(0) << "," << vec(1) << "," << vec(2) << "\n";
|
ofile << vec(0) << "," << vec(1) << "," << vec(2) << "\n";
|
||||||
}
|
}
|
||||||
ofile.close();
|
ofile.close();
|
||||||
|
ofile.open(path + "particle_" + std::to_string(i) + "_v.txt");
|
||||||
|
for (vec_3d &vec : res.v_vecs[i]) {
|
||||||
|
ofile << scientific_format(vec(0), 10, 8) << ","
|
||||||
|
<< scientific_format(vec(1), 8, 10) << ","
|
||||||
|
<< scientific_format(vec(2), 8, 10) << "\n";
|
||||||
|
}
|
||||||
|
ofile.close();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
double PenningTrap::fraction_of_particles_left(double time, unsigned int steps, std::string method, bool particle_interaction)
|
double PenningTrap::fraction_of_particles_left(double time, unsigned int steps,
|
||||||
|
std::string method,
|
||||||
|
bool particle_interaction)
|
||||||
{
|
{
|
||||||
sim_arr res = this->simulate(time, steps, method, particle_interaction);
|
simulation_t res =
|
||||||
|
this->simulate(time, steps, method, particle_interaction);
|
||||||
|
|
||||||
int particles_left = 0;
|
int particles_left = 0;
|
||||||
|
|
||||||
@ -281,4 +298,3 @@ double PenningTrap::fraction_of_particles_left(double time, unsigned int steps,
|
|||||||
|
|
||||||
return (double)particles_left / (double)this->particles.size();
|
return (double)particles_left / (double)this->particles.size();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
55
src/main.cpp
55
src/main.cpp
@ -12,6 +12,7 @@
|
|||||||
|
|
||||||
#include <cmath>
|
#include <cmath>
|
||||||
#include <fstream>
|
#include <fstream>
|
||||||
|
#include <functional>
|
||||||
#include <omp.h>
|
#include <omp.h>
|
||||||
#include <string>
|
#include <string>
|
||||||
#include <sys/stat.h>
|
#include <sys/stat.h>
|
||||||
@ -21,7 +22,7 @@
|
|||||||
#include "utils.hpp"
|
#include "utils.hpp"
|
||||||
|
|
||||||
#define PARTICLES 100
|
#define PARTICLES 100
|
||||||
#define N 10000
|
#define N 40000
|
||||||
#define CHARGE 1.
|
#define CHARGE 1.
|
||||||
#define MASS 40. // unit: amu
|
#define MASS 40. // unit: amu
|
||||||
|
|
||||||
@ -36,7 +37,7 @@ void simulate_single_particle()
|
|||||||
double time = 50.; // microseconds
|
double time = 50.; // microseconds
|
||||||
|
|
||||||
DEBUG("Write to dir");
|
DEBUG("Write to dir");
|
||||||
trap.write_simulation_to_dir("output/simulate_single_particle", time, N);
|
trap.write_simulation_to_dir("output/simulate_single_particle", time, N, "rk4", false);
|
||||||
}
|
}
|
||||||
|
|
||||||
void simulate_two_particles()
|
void simulate_two_particles()
|
||||||
@ -78,8 +79,7 @@ void simulate_100_particles()
|
|||||||
{
|
{
|
||||||
PenningTrap trap((unsigned)100, T,
|
PenningTrap trap((unsigned)100, T,
|
||||||
[](double t) {
|
[](double t) {
|
||||||
return 25. * V / 1000. *
|
return 25. * V / 1000. * (1. + .4 * std::cos(1.5 * t));
|
||||||
(1. + .4 * std::cos(1.5 * t));
|
|
||||||
},
|
},
|
||||||
500., 0);
|
500., 0);
|
||||||
|
|
||||||
@ -97,50 +97,61 @@ void simulate_100_particles_with_time_potential()
|
|||||||
double freq_increment = .02;
|
double freq_increment = .02;
|
||||||
size_t freq_iterations = (size_t)((freq_end - freq_start) / freq_increment);
|
size_t freq_iterations = (size_t)((freq_end - freq_start) / freq_increment);
|
||||||
|
|
||||||
|
double res[4][freq_iterations];
|
||||||
|
|
||||||
std::string path = "output/time_dependent_potential/";
|
std::string path = "output/time_dependent_potential/";
|
||||||
mkpath(path);
|
mkpath(path);
|
||||||
|
|
||||||
std::ofstream ofile;
|
std::ofstream ofile;
|
||||||
|
|
||||||
for (double f : amplitudes) {
|
double freq = freq_start;
|
||||||
ofile.open(path + "f_" + std::to_string(f) + ".txt");
|
|
||||||
#pragma omp parallel for ordered schedule(static, 1)
|
|
||||||
for (size_t i=0; i<freq_iterations; i++) {
|
for (size_t i=0; i<freq_iterations; i++) {
|
||||||
double freq = freq_start + i*freq_increment;
|
res[0][i] = freq;
|
||||||
|
freq += freq_increment;
|
||||||
|
}
|
||||||
|
|
||||||
|
#pragma omp parallel for collapse(2) num_threads(4)
|
||||||
|
for (size_t i = 0; i < 3; i++) {
|
||||||
|
for (size_t j = 0; j < freq_iterations; j++) {
|
||||||
PenningTrap trap((unsigned)100, T,
|
PenningTrap trap((unsigned)100, T,
|
||||||
[f, freq](double t) {
|
std::bind([](double f, double r, double t) {
|
||||||
return (25. * V / 1000.) *
|
return (25. * V / 1000.) *
|
||||||
(1. + f * std::cos(freq * t));
|
(1. +
|
||||||
},
|
f * std::cos(r * t));
|
||||||
|
}, amplitudes[i], res[0][j], std::placeholders::_1),
|
||||||
500., 0.);
|
500., 0.);
|
||||||
double res = trap.fraction_of_particles_left(500., 40000, "rk4", true);
|
res[i + 1][j] =
|
||||||
#pragma omp ordered
|
trap.fraction_of_particles_left(500., 40000, "rk4", false);
|
||||||
ofile << freq << "," << res << "\n";
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
ofile.open(path + "res.txt");
|
||||||
|
for (size_t i=0; i<freq_iterations; i++) {
|
||||||
|
ofile << res[0][i] << ","
|
||||||
|
<< res[1][i] << ","
|
||||||
|
<< res[2][i] << ","
|
||||||
|
<< res[3][i] << "\n";
|
||||||
}
|
}
|
||||||
ofile.close();
|
ofile.close();
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
int main()
|
int main()
|
||||||
{
|
{
|
||||||
|
double start = omp_get_wtime();
|
||||||
|
|
||||||
simulate_single_particle();
|
simulate_single_particle();
|
||||||
|
|
||||||
simulate_two_particles();
|
simulate_two_particles();
|
||||||
|
|
||||||
simulate_single_particle_with_different_steps();
|
//simulate_single_particle_with_different_steps();
|
||||||
|
|
||||||
double start = omp_get_wtime();
|
//simulate_100_particles();
|
||||||
|
|
||||||
for (int i=0; i<5; i++) {
|
|
||||||
simulate_100_particles();
|
|
||||||
}
|
|
||||||
|
|
||||||
//simulate_100_particles_with_time_potential();
|
//simulate_100_particles_with_time_potential();
|
||||||
|
|
||||||
double end = omp_get_wtime();
|
double end = omp_get_wtime();
|
||||||
|
|
||||||
std::cout << "Average time: " << (end - start) / 5. << " seconds" << std::endl;
|
std::cout << "Time: " << (end - start) << " seconds" << std::endl;
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|||||||
@ -1,33 +0,0 @@
|
|||||||
import matplotlib.pyplot as plt
|
|
||||||
|
|
||||||
def main():
|
|
||||||
files = [
|
|
||||||
"output/time_dependent_potential/f_0.100000.txt",
|
|
||||||
"output/time_dependent_potential/f_0.400000.txt",
|
|
||||||
"output/time_dependent_potential/f_0.700000.txt",
|
|
||||||
]
|
|
||||||
vals = [
|
|
||||||
.1,
|
|
||||||
.4,
|
|
||||||
.7
|
|
||||||
]
|
|
||||||
for i in range(3):
|
|
||||||
with open(files[i]) as f:
|
|
||||||
lines = f.readlines()
|
|
||||||
x = []
|
|
||||||
y = []
|
|
||||||
for line in lines:
|
|
||||||
a,b = line.strip().split(",")
|
|
||||||
x.append(float(a))
|
|
||||||
y.append(float(b))
|
|
||||||
plt.plot(x,y,label=f"amplitude: {vals[i]}")
|
|
||||||
|
|
||||||
plt.xlabel(r"$\omega_V$")
|
|
||||||
plt.ylabel(r"Fraction of particles left")
|
|
||||||
plt.title(r"The fraction of particles left in the Penning trap "
|
|
||||||
"after 500 microseconds for different amplitudes and frequencies")
|
|
||||||
plt.legend()
|
|
||||||
plt.show()
|
|
||||||
|
|
||||||
if __name__ == "__main__":
|
|
||||||
main()
|
|
||||||
30
src/scripts/plot_particles_left.py
Normal file
30
src/scripts/plot_particles_left.py
Normal file
@ -0,0 +1,30 @@
|
|||||||
|
import matplotlib.pyplot as plt
|
||||||
|
|
||||||
|
def main():
|
||||||
|
with open("output/time_dependent_potential/res.txt") as f:
|
||||||
|
lines = f.readlines()
|
||||||
|
x = []
|
||||||
|
y1 = []
|
||||||
|
y2 = []
|
||||||
|
y3 = []
|
||||||
|
for line in lines:
|
||||||
|
l = line.strip().split(",")
|
||||||
|
x.append(float(l[0]))
|
||||||
|
y1.append(float(l[1]))
|
||||||
|
y2.append(float(l[2]))
|
||||||
|
y3.append(float(l[3]))
|
||||||
|
|
||||||
|
plt.plot(x,y1,label=f"amplitude: 0.1")
|
||||||
|
plt.plot(x,y2,label=f"amplitude: 0.4")
|
||||||
|
plt.plot(x,y3,label=f"amplitude: 0.7")
|
||||||
|
|
||||||
|
plt.xlabel(r"$\omega_V$ (MHz)")
|
||||||
|
plt.ylabel(r"Fraction of particles left")
|
||||||
|
plt.title(r"The fraction of particles left in the Penning trap "
|
||||||
|
"after 500 microseconds for different amplitudes and frequencies")
|
||||||
|
plt.legend()
|
||||||
|
# plt.show()
|
||||||
|
plt.savefig("../latex/images/particles_left.pdf")
|
||||||
|
|
||||||
|
if __name__ == "__main__":
|
||||||
|
main()
|
||||||
29
src/scripts/plot_single_particle.py
Normal file
29
src/scripts/plot_single_particle.py
Normal file
@ -0,0 +1,29 @@
|
|||||||
|
import matplotlib.pyplot as plt
|
||||||
|
import numpy as np
|
||||||
|
|
||||||
|
def z(t):
|
||||||
|
V_0 = 25.*9.64852558 * 10**4
|
||||||
|
m = 40.
|
||||||
|
d = 500.
|
||||||
|
w_z = np.sqrt((2.*V_0)/(m*d*d))
|
||||||
|
return 20.*np.cos(w_z*t)
|
||||||
|
|
||||||
|
def main():
|
||||||
|
filename = "output/simulate_single_particle/particle_0_r.txt"
|
||||||
|
r = t = []
|
||||||
|
with open(filename) as f:
|
||||||
|
lines = f.readlines()
|
||||||
|
t = np.linspace(0, 50, len(lines))
|
||||||
|
r = np.array([list(map(float, line.strip().split(","))) for line in lines])
|
||||||
|
|
||||||
|
plt.plot(t, r[:, 2], label="approximation")
|
||||||
|
plt.plot(t, z(t), label="analytical")
|
||||||
|
plt.xlabel(r"time $(\mu s)$")
|
||||||
|
plt.ylabel(r"z $(\mu m)$")
|
||||||
|
plt.title(r"Movement of a single particle in the x direction")
|
||||||
|
plt.legend()
|
||||||
|
plt.savefig("../latex/images/single_particle.pdf")
|
||||||
|
|
||||||
|
|
||||||
|
if __name__ == "__main__":
|
||||||
|
main()
|
||||||
Loading…
Reference in New Issue
Block a user