OpenQuantumSystems.jl
OpenQuantumSystems.jl is a numerical framework written in Julia for simulating open quantum systems, with a focus on quantum biology and molecular aggregates in a finite basis. It is inspired by quantarhei and QuantumOptics.jl.
Features
- Aggregate construction — Build Hamiltonians for aggregates of molecules with vibrational modes modelled as displaced harmonic oscillators.
- Multiple solvers — Liouville-von Neumann, exact QME, Redfield, ansatz-based QME, iterative QME, and a unified
solve()entry point. - Förster theory — Absorption/emission spectra, spectral overlap, and Förster excitation energy transfer rates.
- Modified Redfield theory — Exciton basis transformation, lineshape functions, and population transfer rates beyond the weak-coupling limit.
- Dipole couplings — Compute electronic couplings from molecular positions and transition dipole vectors.
- Bath tracing — Trace over bath degrees of freedom using Franck-Condon factors.
- Initial states — Thermal states and ultrafast laser excitation.
- Post-processing — Picture conversion, validation, scoring, and comparison tools.
- Convenience constructors —
setup_dimer,setup_trimer,setup_linear_chainfor quick prototyping.
Installation
pkg> add OpenQuantumSystemsor
using Pkg; Pkg.add("OpenQuantumSystems")Quick Start
using OpenQuantumSystems
# Set up a dimer with one vibrational mode per molecule
agg = setup_dimer(E1=12500.0, E2=12700.0, J=100.0)
# Initial thermal state with laser excitation
W0 = thermal_state_composite(300.0, [0.0, 0.5, 0.5], agg)
# Time grid
tspan = get_tspan(0.0, 0.5, 500)
# Solve with QME ansatz
result = solve(W0, tspan, agg; method=:qme_ansatz)See the Hamiltonian & Bath Model for the underlying theory, the Solver Selection Guide for choosing the right solver, and the Dimer examples tutorial for worked examples.