SLHQuantumSystems.jl

SLHQuantumSystems.jl is a Julia package for creating and composing open quantum systems using the SLH framework.

Quick Start

Get started by running one of the examples!

julia> include("examples/cascadedcavities.jl")SLH("sys", SLHQuantumSystems.Subspace[OpticalMode("A_"), OpticalMode("B_")], Dict{Symbol, Symbolics.Num}(:B_Δ => B_Δ, :A_κ => A_κ, :A_Δ => A_Δ, :A_L => A_L, :B_κ => B_κ, :B_L => B_L), Dict{Symbol, SecondQuantizedAlgebra.QSym}(:A_a => A_a′, :B_a => B_a′), ["B_in"], ["A_out"], [1.0;;], SecondQuantizedAlgebra.QAdd[(A_κ*(A_a)+B_κ*(B_a))], (B_Δ*(B_a′*B_a)+-0.5A_κ*B_κ*im*(A_a′*B_a)+A_Δ*(A_a′*A_a)+0.5A_κ*B_κ*im*(A_a*B_a′)))

Overview of SLH systems

The SLH framework represents each open quantum systems with three components:

  • S: Scattering matrix describing direct input-output coupling of external (bath) modes
  • L: Coupling vector describing the interaction of the internal modes with the external modes
  • H: System Hamiltonian describing internal dynamics

Scope of this package

SLHQuantumSystems.jl allows users to create large quantum systems by composing smaller, named systems into a single SLH 'block' with a hiearchy of named inputs, outputs, sytem operators, and parameters. This pakage depends on SecondQuantizedAlgebra.jl to provide quantum operators, their commutation relations and algebraic manipulation. We also use Symbolics.jl to provide symbols for the system parameters, which are real or complex constants.

Component Library

The SLH framework enables you to create complicated quantum systems by combining simple, reusable components

  • Pre-built quantum components including:
    • Basic cavities
    • Squeezing cavities
    • Radiation pressure cavities
    • Jaynes-Cummings QED cavity

Dependencies

References

[1]
J. Combes, J. Kerckhoff and M. Sarovar. The SLH framework for modeling quantum input-output networks. Advances in Physics: X 2, 784–888 (2017), arXiv:1611.00375 [quant-ph].