Skip to content

Roadmap

Eric Giguère edited this page Mar 18, 2020 · 5 revisions

QuTiP Roadmap

Version 4.5


Eric's todo

  • Encapsulation of data matrix
  • Encapsulation of cython code and make it optional
  • Add other solvers: sparse (AHS), splitted L, photocurrentme as mcsolver...
  • Qsystem (heavy solver class)
  • Benchmark suite (Easy)
  • Hides jit cython files (Easy)
  • tensor(QobjEvo) (Easy) (#1183)
  • layered test: (test Qobj before testing solvers which use them, etc.) (Easy)
  • symbolic operator object: a = destroy; b=a+a.dag(); b(5)-> Qobj (maybe)

Nathans's todo

  • Receive feedback from lead developers on QuTiP new paper
  • Receive feedback on QuTiP-based book (with jupyter-book)
  • Have updates on nonlinear functions in qutip.piqs module merged and documented
  • Integrate circuits with other platforms, i.e. Qiskit and Cirq
  • Help merge Boxi Li's notebooks and code on qutip.qip.noise (GSoC 2019 project)
  • Help mentor Tarun on GPU-based project on HEOM method
  • Help Tarun prioritize outstanding issues resolutions
  • VR project visualization
  • Help @fminga write translational invariance library and include as qutip.tiqs

Issues:

  • bug in floquet
  • bad docs for propargator t
  • wrong doc in mesolve, c_ops as function.

Sutdent project (GSoC + anybody interested)

  • gpu support
  • mpi support
  • Lattices evolution
  • int64/ other matrix support
  • Adaptative Hilbert Space

Qutip development ideas: Stuff to do when someones as free time

  • diagonalized mcsolve
  • "br" correlation
  • symbolic qobj
  • dummy omp
  • solver in Cython
  • blas wrapper and other cython utilities.

Version 4.0 (At least by March APS meeting 2017)


  • Cleanup mcsolve time-dependent RHS function (Paul). [DONE]

  • Integrate spline functions into solvers (Paul). [DONE]

  • Batch mode for unitary propagator (Paul).

  • Parallel correlation functions (Paul).

  • Finish parallel spmv & find good usage heuristic. Currently nnz >~ 1e4 looks promising (Paul).

  • Full time-dependent brsolver, func and str based (Paul).

  • Safety check for correct operator dims in all dynamics solvers (Paul). [DONE]

  • Simplify some nonlinear Hamiltonian calculations via connected-components & sub-graphs (Paul).

Version 3.1 (January 2015)


  • Look into the possibly of Fokker-Planck type of evolution solvers for pseudo-probability distributions.

  • A unified solver API: Instead of res = mesolve(...) could be res = Solver(method='me', ...) or something similar. (Difficulty: Easy, Status: not-started)

  • parfor: Pythons multiprocessing (qutip.parfor), IPython.parallel (qutip.ipynbtools.parfor), PICloud version, should all have a common API.

  • Support for dense matrix representation in Qobj. Tracked by issue #26 https://github.com/qutip/qutip/issues/26 (Difficulty: Medium, Status: not-started)

Quantum models

  • A submodule (qutip.models) with a collection of problem-specific classes for commonly used quantum systems: For example, Jaynes-Cummings model (qutip.models.jc), charge qubit (qutip.models.charge_qubit), etc.
  • The qutip module qutip.three_level_atom should be moved to qutip.models.three_level_atom.
  • A module should implement a class that extends a common class for each models, QuantumSystemModel, and implement a shared set of methods. For example, model.hamiltonian, model.system_operators, model.energy_level_diagram, etc.
  • These models could be used instead of repeating a lot of code in demos and examples.

(Difficulty: Medium/Extensive, Status: in-preparation)

Version 3.0 (Summer 2014)


  • Support for stochastic master equations - Done.

  • Integrated picloud functionality - Done.

  • Expanded functionality for quantum computation / information calculations - Done.

  • Hilbert spaces do not need to include the ground state when possible - Done.

  • Extended support for distribution functions (qutip.distributions), with a base class that encapsulates the basic properties of spatial (and perhaps temporal) distribution functions - Done.

Unified API for utilities

Utilities such as ProgressBar and parfor (should perhaps be called ParallelMap instead?) should use unified API for different implementations. Solvers and other time-consuming functions should use these utilities so that they can be swapped out depending on the use case.

  • ProgressBar: TextProgressBar, HTMLProgressBar (for IPython notebooks) - Done.

(Difficulty: Medium, Status: Done)

Stochastic quantum evolution

Support for stochastic master and Schrödinger equations. A family of solvers for the many different solvers for PDP and SDE problems for wave functions and density matrices

  • State vector evolution
    • PDP: ssepdpsolve
    • SDE: ssesolve
  • Density matrix evolution
    • PDP: smepdpsolve
    • SDE: smesolve

(Difficulty: Hard/Extensive, Status: Done)

Possible API changes

  • Change time-dependent function callback from hamiltonian(t, args) to hamiltonian(t, psi, args) to allow for nonlinear Schrodinger/Master equations and mean-field problems. (Difficulty: Easy, Status: Done)

  • Replace Ode with Solver in many parts of the API. Classes like Odeoptions, Odedata, etc would be more accurately called SolverOptions, SolverData, since they contains lot of information that is not related to an "ODE" solver (and some of the qutip solvers do not even use ODEs). (Difficulty: Easy, Status: Done)

Possible deletions

  • The text-based demos function is out-dated and probably not used much. The demos feature makes more sense in the QT based GUI, and to reduce double maintenance and possible inconsistency I think it would be a good idea to drop the text-based demo function alltogether. (Difficulty: Easy, Status: Done)

  • Possibly remove QT based GUI from qutip. This affect about(), demos() and the progressbar. Perhaps we could leave about() and demos() in the code for next release, but with a deprecation warning. Qt progressbar needs to be removed or reworked (see Unified API for utilities above). Done