This was the computational engine behind my master thesis, supervised by doc. Tomáš Mančal. I needed to simulate how excitation energy moves through aggregates of molecules — the kind of process that happens in photosynthetic complexes — and the existing tools didn’t fit the way I wanted to work. So I wrote my own, in Julia, and published it as a package.
It is registered in Julia’s general registry, so anyone can install it:
(v1.6) pkg> add OpenQuantumSystemsWhat it does
The library models systems with a finite basis and builds Hamiltonians for aggregates of molecules, where the bath degrees of freedom are modelled as linear harmonic oscillators with shifted potentials for excited local electronic states. From there it traces over the bath using Franck-Condon factors to get a reduced density matrix.
The core is a set of dynamics solvers behind a single solve() entry point:
- Exact dynamics via the propagator
- The Schrödinger equation
- The Liouville-von Neumann equation
- The Quantum Master Equation — ansatz, iterative, and Redfield variants
On top of the solvers it handles the things you actually need when doing this for real: preparing an initial density matrix from a laser-excited pulse, evaluating the bath part of the reduced density matrix through various ansatzes, iterative correction of that bath part, the memory kernel as a superoperator, and rate constants extracted from both the dynamics and the kernel.
It also validates its own output — checking the trace and positivity of results — and can score and compare reduced density matrices over time. There are convenience constructors for the common cases: dimer, trimer, linear chain.
Why it mattered
Writing the solver myself, rather than treating one as a black box, is the reason I actually understand open quantum systems. Every Redfield approximation and every Franck-Condon factor had to be correct in code before any thesis result could be trusted. It was inspired by quantarhei and QuantumOptics.jl, and it has a documented API and CI with coverage tracking.
The abstract thinking I sharpened building this — taking a messy physical process and reducing it to the simplest correct numerical formulation — is the sharpest tool I kept from physics.