Menu

Reference.Variables.time.propa.wave

Burkhard Schmidt

Propagators for wavefunctions in the Matlab/Octave version of WavePacket

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.


Related

Wiki: Reference.Classes.wave
Wiki: Reference.Programs.qm_cleanup
Wiki: Reference.Variables.time.propa
Wiki: Users.Truncation.Main

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.