Skip to main content

A package for the propagation of quantum-mechanical wave functions.

Project description

Description

Wavepacket is a Python package to define and simulate small quantum systems. Or, more technically, it allows you to numerically solve Schrödinger and Liouville-von-Neumann equations for distinguishable particles.

The full documentation can be found under https://wavepacket.readthedocs.io.

There are many different quantum systems and consequently approaches to solve them. Here we focus on a particular niche:

  • Wavepacket solves the differential equations directly. This simplifies the maths, but limits the system size to few degrees of freedom. If you want to deal with larger systems, look out for MCTDH.

  • Wavepacket uses the DVR approximation heavily. This allows you to directly define your potentials as functions of real-space coordinates instead of setting up opaque operator matrices. The latter approach is simpler an more concise if you are only interested in harmonic oscillators or qubits, though.

  • Wavepacket is a Python-only package relying chiefly on numpy. This is slower than natively implemented code, but you gain great tooling support, for example matplotlib, Jupyter notebooks or integrated documentation.

  • Most of the code can handle both wave functions and density operators. This allows you to convert a closed system into an open system with minimal fuss.

For example use cases, we have been using various precursors of this package for simulating small molecular systems and for teaching. Besides examples shipped with this package, see https://sourceforge.net/p/wavepacket/wiki/Demos.Main for more applications.

The project is currently a first iteration to flesh out everything. Once 0.1 is released, I plan to quickly translate the existing C++ code from a precursor project and reach a stable state. More can be found on the project homepage https://github.com/ulflor/wavepacket

Support

If you lack a feature that you would like to have, open an issue at our issue tracker. Depending on the complexity of the feature, this will lead to an immediate, rapid, or prioritized implementation.

Contribution

I currently lack a formal procedure for new contributors, but you are very welcome to contribute to the project. If you do not know what to do, feel free to contact one of the developers; there is enough work for multiple developers, it is just not documented yet.

History

The original version of Wavepacket was written in Matlab and is still maintained under https://sourceforge.net/p/wavepacket/matlab. It is stable, battle-tested and works.

However, Matlab is pretty expensive, so not all interested users had access to it. Also, the project’s architecture did not support some advanced use cases without digging deep into the code. Finally, C++11 had just come out and looked cool, so I started a reimplementation in C++ around 2013, adding Python bindings as an afterthought. The C++ project will be superseded by this Python package, but can be found under https://sourceforge.net/p/wavepacket/cpp.

This worked really well. However, deploying C++ code is difficult. In particular, there was no cheap route towards building a “good” Python package, or towards easily building a Windows version. Also, the underlying tensor library was slowly getting fewer and fewer commits over the years, so I am currently moving to a Python-only package. The Python version is slower by a factor of two to three compared to C++-backed code. This is, however, often cancelled by a parallelization of the tensor operations, and the tooling is better by orders of magnitude.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

wavepacket-0.2.0.tar.gz (59.1 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

wavepacket-0.2.0-py3-none-any.whl (45.5 kB view details)

Uploaded Python 3

File details

Details for the file wavepacket-0.2.0.tar.gz.

File metadata

  • Download URL: wavepacket-0.2.0.tar.gz
  • Upload date:
  • Size: 59.1 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.12.10

File hashes

Hashes for wavepacket-0.2.0.tar.gz
Algorithm Hash digest
SHA256 dad833c927bdb2e018599308bc33e264e98fcf0e2817d73adb1ca42565673cb2
MD5 9dcddec3a7b20d66c7827bab49cfd17c
BLAKE2b-256 6f8a6d0a232322ae2dc6c38ca20b1e6e52501e3de6d9887ef167d4b9c948a4ab

See more details on using hashes here.

File details

Details for the file wavepacket-0.2.0-py3-none-any.whl.

File metadata

  • Download URL: wavepacket-0.2.0-py3-none-any.whl
  • Upload date:
  • Size: 45.5 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.12.10

File hashes

Hashes for wavepacket-0.2.0-py3-none-any.whl
Algorithm Hash digest
SHA256 9b783597fb7a87f6158f92616da3770410015fa972f6a38ab5a6743f3d557091
MD5 b108928a4f294bcd5e3b4ed1747337c0
BLAKE2b-256 4876e0aaa209dc467d23ebcc21e2cf0eb8c42d844618b94dada5e94567a86ad8

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page