clerq

Build Status Documentation PyPI DOI

Note

MaxwellBloch is now clerq. See what changed and how to update.

clerq solves the propagation of classical electromagnetic fields through media of open quantum systems, using Maxwell’s equations coupled to the Lindblad master equation. It is used for near-resonant light in thermal atomic vapours, with two-, three- and many-level atoms, spontaneous decay, dephasing and Doppler broadening.

clerq is also differentiable. With the optional jax extra, clerq.autodiff computes exact gradients of the propagated field, and any loss built from it, with respect to pulse parameters and other inputs, so you can design pulses by gradient descent. See Pulse design with autodiff, the recipes and the benchmarks.

Figure 1: Two optical solitons, launched at different times, lock together into a simulton. Where the pulses meet in the medium the collision reshapes them into a single shape-preserving pair that crosses the rest of the medium without absorption. Press play, or drag the slider.

clerq is used for theoretical research, for modelling experiments and for undergraduate and graduate teaching. It can model two, three or many-level systems with physical effects including:

Modules are also available for:

Some phenomena that can be demonstrated:

See the Examples for details.

Source code

clerq is open source. The code, issue tracker and releases are on GitHub: github.com/tpogden/clerq.