From: Ulf L. <ul...@wa...> - 2021-08-08 11:58:01
|
Hello everyone, I just released the next version 0.3.3 of the C++/Python version of Wavepacket. This package has actually been ready for over a month, but I tried another time to create a Windows package. This turned out to be another slightly less unsuccessful attempt than the previous ones, so the next release will feature an easy-to-setup Virtual machine instead to make this project accessible to Windows users. This version features two major improvements towards the goal of being more usable: 1. The Python interface got a plotting observer. There is now an Observer (written in Python and used in the C++ code) that utilizes Python's matplotlib to plot the wavefunction on the screen. This is currently not that impressive because it works only for one-dimensional wave functions . However, with the technological barriers now overcome, you can expect more plotting options for the Python interface in the future. See the DoubleWell Python demo for an example. 2. The operator hierarchy has been rectified a little. This may give a minor speed boost in certain situations, because real-valued and complex-valued operators are now disentangled and because real algebra is faster than complex algebra. The main gain for me, however, is that it should be easier to reason about most operators in code, which is a prerequisite for things like better optimization of operators, or the split-operator scheme Besides these two major improvements there have been a couple of smaller usability or special-usage improvements. The most noticable: * Removed the OdeRelax propagator, since it should be always slower than the Chebychev relaxation; the latter can also propagate in negative imaginary time now. * Diagonalization always returns explicitly real-valued results. * You no longer need to construct a projection operator to project() onto a coupled channel; you can now simply give the index of the coupled channel. * Most Python functions no longer need casting between Numpy arrays and the C++ tensors. * ProjectionND can take a state as input to project onto, not a tensor + grid (which defines a State) Regards, Ulf |