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:
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.
Install Julia (instructions here).
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.)
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.
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")
/opt
with:$ sudo cp -r julia-1.3.1 /opt/
(replacing julia-1.3.1
with the appropriate version)
/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:
$ julia
]
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.