QuTiP 5.1.0
Features
- It adds odd parity support to HEOM's fermionic solver (#2261, by Gerardo Jose Suarez)
- Create
SMESolver.run_from_experiment, which allows to run stochastic evolution from know noise or measurements. (#2318) - Add types hints. (#2327, [#2473])
- Weighted trajectories in trajectory solvers (enables improved sampling for nm_mcsolve) (#2369, by Paul Menczel)
- Updated
qutip.core.metrics.dnormto have an efficient speedup when finding the difference of two unitaries. We use a result on page 18 of D. Aharonov, A. Kitaev, and N. Nisan, (1998). (#2416, by owenagnel) - Allow mixed initial conditions for mcsolve and nm_mcsolve. (#2437, by Paul Menczel)
- Add support for
jitandgradin qutip.core.metrics (#2461, by Rochisha Agarwal) - Allow merging results from stochastic solvers. (#2474)
- Support measurement statistics for
jaxandjaxdiadtypes (#2493, by Rochisha Agarwal) - Enable mcsolve with jax.grad using numpy_backend (#2499, by Rochisha Agarwal)
- Add propagator method to steadystate (#2508)
- Introduces the qutip.core.environment module, which contains classes that characterize bosonic and fermionic thermal environments. (#2534, by Gerardo Jose Suarez)
- Implements a
einsumfunction for Qobj dimensions (Evaluates the Einstein summation convention on the operands.) (#2545, by Franco Mayo) - Wave function calculations have been sped up with a Cython implementation. It optimizes the update method of the HarmonicOscillatorWaveFunction class in distribution.py. (#2553, by Matheus Gomes Cordeiro)
- Speed up
kraus_to_superby adding asparseoption. (#2569, by Sola85)
Bug Fixes
- Fix a dimension problem for the argument color of Bloch.add_states Clean-up of the code in Bloch.add_state Add Bloch.add_arc and Bloch.add_line in the guide on Bloch class (#2445, by PositroniumJS)
- Fix HTMLProgressBar display (#2475)
- Make expm, cosm, sinm work with jax. (#2484, by Rochisha Agarwal)
- Fix stochastic solver step method (#2491)
clipgives deprecation warning, that might be a problem in the future. Hence switch towhere(#2507, by Rochisha Agarwal)- Fix brmesolve detection of contant vs time-dependent system. (#2530)
propagatornow accepts list formatc_opslikemesolvedoes. (#2532)- Fix compatibility issue with matplotlib>=3.9 in matrix_histogram (#2544, by Andreas Maeder)
- Resolve incompatibility of TwoModeQuadratureCorrelation class (#2548, by quantum-menace)
- Fix sparse eigen solver issue with many degenerate eigen values. (#2586)
- Fix getting tensor permutation for uneven super operators. (#2561)
Documentation
- Improve guide-settings page. (#2403)
- Tidy up formatting of type aliases in the api documentation (#2436, by Paul Menczel)
- Update documentation
- Update contributors
- Improve apidoc readability (#2523)
- Fix error in simdiag docstring (#2585, by Sola85)
Miscellaneous
- Add auto_real_casting options. (#2329)
- Add dispatcher for sqrtm (#2453, by Rochisha Agarwal)
- Make
e_ops,argsandoptionskeyword only. Solver were inconsistent withe_opsusually followingc_opsbut sometime preceding it. Setting it as keyword only remove the need to memorize the signature of each solver. (#2489) - Introduces a new
NumpyBackendclass that enables dynamic selection of the numpy_backend used inqutip. The class facilitates switching between different numpy implementations (numpyandjax.numpymainly ) based on the configuration specified insettings.core. (#2490, by Rochisha Agarwal) - Improve mkl lookup function. (#2497)
- Deterministic trajectories are not counted in
ntraj. (#2502) - Allow tests to be executed multiple times in one Python session (#2538, by Zhang Maiyun)
- Improve performance of qutip.Qobj by using static numpy version check (#2557, by Pieter Eendebak)
- Fix towncrier check (#2542)