Available propagator classdef's for objects of class wave and their settable properties are given in the following tables. Note that you can find the complete list in the corresponding package folder.
tmp.wave.cheby_real | Expansion of the real time evolution operator in Chebychev polynomials | default |
---|---|---|
order | The order at which the polynomial expansion is truncated. Setting this to zero results in an automatic determination of the number of polynomials needed to reach the required accuracy, see below | 0 |
precision | Optional: If order is set to zero, this gives the requested precision per main time step. Otherwise, it is ignored | eps |
The Chebychev propagator described in this article only works if the Hamiltonian is time-independent (i.e., no electric control fields). Furthermore, it often requires some manual truncation and adjustment of the spectral range for optimal performance. If these conditions are fulfilled, it can be a superior propagation scheme allowing for looong time steps. Note that in the Chebychev expansion, WavePacket always propagates the wave function from one main time step to the next, Nevertheless, the time sub-stepping scheme is used for the wavefunction's autocorrelation function. This behavior is controlled though the property time.steps.s_number.
tmp.wave.cheby_imag | Expansion of the imaginary time evolution operator in Chebychev polynomials | default |
---|---|---|
order | Gives the order at which the polynomial expansion is truncated. Setting this to zero results in an automatic determination of the number of polynomials needed to reach the required accuracy, see below | 0 |
precision | Optional: If order is set to zero, this gives the requested precision per main time step. Otherwise, it is ignored | eps |
threshold | Optional: If set, a propagation is terminated if the energy change between two successive time steps falls below this number | sqrt(eps) |
Similar to cheby_real above, but here we expand in (negative) imaginary time, as described in this article. The wave function is expected to converge after sufficiently long time to the ground state of the system for which one may set a threshold.
Interestingly, the relaxation technique (i.e. propagation in imaginary time) can also be used to obtain (a not too large number of) excited states, see also here. The first cheby_real simulation relaxes toward the ground state and saves it in the first cell of state.bound which is achieved by qm_cleanup. Then the second cheby_real simulation uses that state to project out its contributions, thus (hopefully) relaxing toward the first excited state which is saved in the second cell of state.bound ... etc ... Note that for this cascade to work, the user must not run qm_setup in between two successive simulations (because that would clear the cell vector state.bound).
tmp.wave.diff_2 | Symmetrized differencing for the time evolution (second order) |
---|---|
tmp.wave.diff_4 | Symmetrized differencing for the time evolution (fourth order) |
---|---|
tmp.wave.trotter | Lie-Trotter splitting of time evolution operator (first order) |
---|---|
tmp.wave.strang | Strang-Marchuk splitting of time evolution operator (second order) |
---|---|
Note that class "strang" is a subclass inheriting from class "trotter".
The second order Strang-Marchuk splitting is recommended as a good general-purpose propagator, also for quantum systems controlled by external electric fields. Hence, it is the default in wavefunction propagation using the MATLAB/Octave version of WavePacket.
Wiki: Reference.Classes.wave
Wiki: Reference.Programs.qm_cleanup
Wiki: Reference.Variables.time.propa
Wiki: Users.Truncation.Main