Go to file
2023-10-24 22:43:56 +02:00
docs Update docs 2023-10-24 21:49:13 +02:00
doxygen-awesome Add Doxygen related stuff 2023-09-28 16:07:29 +02:00
images Some stuff 2023-10-24 14:18:26 +02:00
include Make some changes 2023-10-23 21:43:09 +02:00
latex Final edition of the report 2023-10-24 22:42:13 +02:00
src Add docs for Python 2023-10-24 21:49:26 +02:00
.clang-format Comment options 2023-10-23 12:43:48 +02:00
.gitignore Update gitignore 2023-10-24 21:03:34 +02:00
compile_flags.txt Add flags for clang/neovim 2023-09-28 15:21:28 +02:00
Doxyfile Add docs for Python 2023-10-24 21:49:26 +02:00
README.md Add batch system 2023-10-24 21:24:27 +02:00
requirements.txt Add Python requirements 2023-10-19 18:36:56 +02:00

Penning trap simulation

Repo

Documentation

Requirements

Operating systems

  • Linux
    • Has been tested on Fedora 38
    • Will most likely work on other Linux distributions
  • MacOS
    • Might work, but hasn't been tested
  • Windows
    • Will most likely not work

Tools

Libraries

Compiling

Compiling is as easy as running this command while being inside the src directory:

    make

Running programs

C++ binaries

To run main or test_suite, just run this command while being inside src:

    ./<program-name>

Python scripts

Install libraries

Before running the scripts, make sure that all libraries are installed. Using pip, you can install all requirements like this:

    pip install -r requirements.txt

This recursively install all the packages that are listed in requirements.txt.

Running scripts

For the Python scripts, run them from the src directory like this:

    python scripts/<script-name>

If you have any problems running the scripts, you might have to run this instead:

    python3 scripts/<script-name>

Batch system

For the frequency_narrow_sweeps_long program, the is a script called job.script that comes along with it. This is to be able to run it on a batch system using Slurm if you have access to one. This is the recommended way to use this program as it takes approximately 90 minutes to complete when using 16 cores.

If you happen to have such a system available to you, then you should clone this repo on that system, then compile it by running:

    make frequency_narrow_sweeps_long

You might have to load the Armadillo library before compiling.

After compiling, you can schedule it by running:

    sbatch job.script

Performance

This section aims to give an idea to the time it takes for the program to run so that you know a bit what to expect if you decide to run it for yourself.

CPU

The times mentioned here are times achieved on a computer with these specifications:

  • CPU model
    • Intel i7-9850H
  • Threads
    • 12
  • Clock speed
    • 4.6GHz

Times

All times mentioned use the evolve_RK4 method.

Running a simulation with 100 particles without particle interactions over 40000 steps takes around 1.8 seconds. With particle interactions, it takes around 4.8 seconds.

potential_resonance_wide_sweep takes around 56 seconds to complete.

potential_resonance_narrow_sweep takes around 172 seconds to complete.

potential_resonance_narrow_sweep_interaction takes around 936 seconds to complete.

Credits

The Doxygen theme used here is doxygen-awesome-css.