| Name | Modified | Size | Downloads / Week | 
|---|---|---|---|
| Parent folder | |||
| README.md | 2019-08-05 | 3.4 kB | |
| WavePacket-6.1.0.zip | 2019-08-01 | 1.6 MB | |
| Totals: 2 Items | 1.6 MB | 0 | |
This version (Git hash value 9c8534e0...) further extends the object-oriented concepts introduced with version 6.0.x along the following lines:
- Now the function 'qm_propa' propagates not only objects of class 'wave' (wavefunctions represented on grids) and class 'traj' (densities sampled by bundles of classical trajectories) but also objects of class 'ket' (quantum state vectors in energy representation) and class 'rho' (quantum density matrices in energy representation) which has made the function 'qm_control' obsolete. Note that 'rho' is a subclass of 'ket'.
 - Now there are also (2D and 3D) bar graph visualizations available for propagations of objects of class 'ket' or class 'rho', respectively.
 - Now also the functions for model order reduction ('qm_matrix', 'qm_balance', 'qm_truncate', 'qm_H2model') work with objects of class 'ket' and/or class 'rho' .
 - Now also the function for optimal control ('qm_optimal') works with objects of class 'ket' and/or class 'rho'. (A generalized version that also works with objects of class 'wave' would be desirable but is certainly not easy to realize.)
 - Now the three versions of surface hopping trajectories ('mssh', 'fssh', 'sssh') are implemented as main classes. They inherit from superclass 'traj' and partly also from each other.
 - Now there is also a SSSH version available that used gradient descent (GD) to exactly determine the loci of the minimal energy gap condition.
 
Note that the large number of (partly fundamental) changes of the strucure have also lead to some changes in how to call the WavePacket functions. Mainly they have to do with making 'state' a global variable, in line with most of other variables used in WavePacket. In the following example
qm_setup('wave'); qm_init; qm_propa('strang')
an object 'state' of class 'wave' (i.e. a wavefunction represented on a grid) is created and then propagated using a second order Strang-Marchuk splitting scheme for numeric propagation. Other options are, e.g., 'diff_2' for second order differencing and 'cheby_real' or 'cheby_imag' for Chebychev polynomial based propagations in real or imaginary time, respectively.
Alternatively, simulations based on (surface hopping) trajectories can be invoked by
qm_setup('fssh'); qm_init; qm_propa('v_verlet')
where fssh stands for John Tully's fewest switches surface hopping. Other options are, e.g. 'sssh' for single switch surface hopping or 'traj' for purely classical propagations without surface hopping. In between hopping events, the trajectories are propagated by the velocity Verlet scheme. Other options are, e.g., 's_verlet' for Stoermer Verlet or 'leap_frog' for the leap frog algorithms.
With the advent of the above calling scheme, specifications of numeric propagators as well as of surface hopping schemes in 'qm_init.m' have become obsolete and should be deleted from existing 'qm_init.m' files.
Finally, a few words about default values of the input arguments:
- When calling qm_setup without providing an argument, the default value 'wave' will be used.
 - When calling qm_propa without providing an argument, the default value 'strang' will be used in propagations of wavefunctions.
 - When calling qm_propa without providing an argument, the default value 'v_verlet' will be used in propagations of (surface hopping) trajectories.