Menu

Wavepacket 0.3.5 released

This release took unusually long; I usually strive for about two releases per year. This one was overdue due to some assistance with getting the underlying tensor library to use CMake, and a rather discouraging set of issues that I mostly dropped for an alternative approach. Anyway. What did change?

1. Much better support for open-system dynamics

Wavepacket can propagate a density matrix with some system-bath coupling completely in the DVR. That is pretty neat, but, as it turned out, mostly useless.

When you use a reduced density matrix for open system dynamics, you always set up your Lindblad or Redfield Liouvillian in the energy eigenstate basis. This has two reasons. One is that you generally go for the Caldeira-Leggett model where the bath consists of uncoupled harmonic oscillators at different frequencies, which defines the coupling in an energy eigenstate basis. The other reason is that you normally want to have relaxation to thermal equlibrium as limiting case, which is difficult to express outside of an energy eigenstate basis.

Version 0.3.5 offers functionality where you only need a system Hamiltonian and specify a spectral density and get a Lindblad Liouvillian with a moderate amount of work. See the example MolVibration/OH/3 for a slightly more involved example of that. This scheme, however, does not deal with the Lamb shift, which can be relevant, but is tricky to calculate in any case, so I will probably stop at the current level of assistance.

2. More consistent names

I was not happy with some of the names, sometimes even order of arguments. So there was a first round of API-breaking changes: consistent naming and ordering.

For the complete list of breaking changes, see the NEWS file. Just to highlight a few:

  • "PropagatorPrimitives" are now called "Solvers", so for example ChebychevPrimitive => ChebychevSolver
  • dropped useless prefixes and suffixes. For example, "Interval1D" is now called "Interval", or "PlotObserver" in the Python module "wavepacket.plot" is now called "Observer" (the module name says all about plotting)
  • switched the order of arguments in the constructor of "State": first grid, then the coefficients. That is the order used everywhere else, and I always mistyped that.
3. Build cleanups

I went over the (CMake) build and cleaned it up in a lot of places. There should be fewer test errors, generally more stability, a few less dependencies etc.

The most noticeable change is that I now try to use the installed googletest version before downloading something.

4. Smaller features

As usual, some things cropped up along the way:

  • new functors: Lorentzian and SoftRectangularFunction
  • function to get the lowest N functions from an eigenstate solver, function to orthonormalize a set of states
  • function to construct the adjoint of an operator
  • made Python demos always produce plot output where possible
Posted by Ulf Lorenz 2023-04-10

Log in to post a comment.

Want the latest updates on software, tech news, and AI?
Get latest updates about software, tech news, and AI from SourceForge directly in your inbox once a month.