clerq
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.
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:
- Inhomogeneous broadening due to spontaneous decay,
- Doppler broadening in thermal systems,
- Collision dephasing,
- Sub-level structure.
Modules are also available for:
- Generating hyperfine structure for alkali atoms with the correct channels and angular momentum factors for coupling and decay,
- Spectral analysis,
- Plotting and animating solutions,
- Automatic differentiation for pulse design and parameter fitting.
Some phenomena that can be demonstrated:
- Linear absorption and dispersion,
- Fast light and slow light,
- Electromagnetically Induced Transparency (EIT),
- Storage and retrieval of light pulses,
- Self-Induced Transparency (SIT) and optical solitons,
- Matched pulses and simultons,
- Hyperfine pumping.
See the Examples for details.
Source code
clerq is open source. The code, issue tracker and releases are on GitHub: github.com/tpogden/clerq.
