HaeffnerLab / IonSim.jl

a simple tool for simulating trapped ion systems
https://ionsim.org
MIT License
70 stars 17 forks source link
julia quantum quantum-information quantum-mechanics quantum-optics quantumoptics trapped-ions

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.)

  3. 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

$ sudo cp -r julia-1.3.1 /opt/

(replacing julia-1.3.1 with the appropriate version)

Development

If you want to run IonSim locally:

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.