62 Stars
Updated Last
1 Year Ago
Started In
February 2020

test status codecov License: MIT

A simple tool, built on top of QuantumOptics.jl, for simulating the dynamics of a configuration of trapped ions interacting with laser light.

IonSim.jl primarily performs two jobs:

  1. Keeps track of the physical parameters necessary for describing the system.
  2. Using these parameters, constructs a function that quickly computes the system's Hamiltonian as a function of time.

The functional form of the Hamiltonian can then be used as input to any of the solvers implemented in QuantumOptics.timeevolution. For more information see:

If you have an idea for how to improve IonSim, need some help getting things working or have any other IonSim-related questions feel free to open a GitHub issue.

How to use

  1. Install Julia (instructions here).
  2. Open up a Terminal session and fire up the Julia REPL with
$ julia

(If using Windows it's easier to start a REPL with the julia executable available after installation.)

  1. Now run
julia> using Pkg
julia> Pkg.add("IonSim")
julia> Pkg.add("IJulia")

The last line adds Jupyter compatibility, so you'll have the option to start a Julia kernel from Jupyter notebook. This is the suggested way to interact with IonSim.

Updating IonSim

IonSim.jl is a work in progress. You can update your local code to the most recent version with the following:

julia> using Pkg
julia> Pkg.update("IonSim")

Extra Linux notes

  • Extract the downloaded file
  • copy to /opt with:
$ sudo cp -r julia-1.3.1 /opt/

(replacing julia-1.3.1 with the appropriate version)

  • then create a symbolic link in /usr/local/bin with
$ sudo ln -s /opt/julia-1.3.1/bin/julia /usr/local/bin/julia


If you want to run IonSim locally:

  • Open up the Julia REPL
$ julia
  • Open the package manager by pressing ]
  • Run the following:
pkg> dev IonSim

This will clone a version of this repo in ~/.julia/dev/IonSim/. Then when you make changes to that repo, it will be immediately reflected when using Julia.

You can run tests with

pkg> test IonSim

Don't forget to format the code! ./scripts/format.sh

To go back to the version in the registry, use

pkg> free IonSim

In order to update the IonSim.jl version that lives in the Julia general registry, change the version number in the Project.toml file, commit the changes and then add a comment to the commit that reads:

@JuliaRegistrator register

If you have any questions, please make a GitHub issue.