Menu

Reference.Programs.qm_propa

Burkhard Schmidt

qm_propa: Wavepacket or trajectory propagations

  • When called for an object of class wave (wavefunctions ψ(R,t)), this function numerically solves (one or several coupled) time-dependent Schrödinger equation(s) for quantum dynamics (within semiclassical dipole approximation) using partial differential equation techniques to solve a TDSE.
    i ∂t ψ(R,t) = H(R,−i ∇R,t) ψ(R,t)
  • When called for an object of class traj (trajectories R(t), P(t)), this function can be used to solve a CLE using a bundle of trajectories and solving Hamilton's equations for them
    t R(t) = +∇P H(R,P,t)
    t P(t) = −∇R H(R,P,t)
  • When called for an object of class mssh or class fssh or class sssh this function can be used to solve a QCLE by means of (various flavors of) surface hopping trajectory techniques.
  • When called for an object of class ket (state vector in eigen/energy representation), this function can be used to solve a TDSE
  • When called for an object of class rho (density matrix in eigen/energy representation), this function can be used to solve a LvNE

for the following Hamiltonian operator of a quantum system, optionally driven by external fields (or its Wigner-Weyl transform with mapping −i ∇R → P)

symbol explanation coupled states
H = T + V − iW − F·μ − ½F²·α Hamilton operator matrix
T = T(R,−i ∇R) Kinetic energy scalar
V = V(R) Potential energy matrix
W = W(R) Negative imaginary potential, used for absorbing boundary conditions scalar
F = F(t) Electrical field along x,y scalar, time-dep.
μ = μ(R) Dipole moment along x,y vector
α = α(R) Polarizability along xx,yy matrix

where atomic units are used throughout, , i. e. ħ=me=e=1.

Source code

The MATLAB function qm_propa.m can be found here

Note that qm_propa.m works with objects of all of the main classes currently available in WavePacket, see the following table:

class name description
wave wavefunctions, represented on grids
ket state vecors, in eigen/energy representation
rho density matrices, in eigen/energy representation
traj classical densities, represented by swarms of trajectories
mssh multiple switches surface hopping trajectories
fssh fewest switches surface hopping trajectories
sssh single switch surface hopping trajectories

Input parameter

The following input parameters are required when calling the function qm_propa.m

parameter description
string1 A text string specifying the numerical method to be employed
param1 An additional parameter (optional)
param2 An additional parameter (optional)
  • For propagations of objects of class wave, the choice of numerical solvers can be found here. When string1 is not specified by the user, the default is to use a "Strang-Marchuk splitting" scheme for propagation of wavefunctions
  • For propagations of objects of class traj or class mssh or class fssh or class sssh , the choice of numerical solvers can be found here. When string1 is not specified by the user, the default is to use a "leap frog" integrator for the propagation of (surface hopping or conventional) trajectories.
  • For propagations of objects of class ket or class rho, the choice of numerical solvers can be found here. When string1 is not specified by the user, the default is to use Matlab's built-in ode45 function which implements the Dormand-Prince method allowing for adaptive stepsize, based on error estimates.

File I/O

  • Depending on the choice of the constituents of the underlying Hamiltonian, some operators, such as potential energy, dipole moment, or the initial wavefunctions are either taken from model functions or they are read from (formatted!) data files. In the latter case, the respective tabulated values are then interpolated, see our detailed description.

  • The time-dependent wavefunctions ψ(t) or trajectories R(t), P(t) (along with additional parameters) can (optionally!) be saved in unformatted Matlab data files. These files can be arbitrarily named by the user, see also our detailed description.
    The saved wavefunctions or trajectory bundles or ket/rho can be loaded into e.g. qm_movie, where they are used to generate animated graphics. This is important if no visualization is done "on the fly" in qm_propa.

Algorithms

Numerical solution of the TDSE is intimately related to the various DVR/FBR representations listed in the following

  • MATLAB class for Fast Fourier Transform scheme can be found here

  • MATLAB class for Gauss-Hermite scheme can be found here

  • MATLAB class for Gauss-Legendre scheme can be found here

For an overview of methods to solve the TDSE, see also the corresponding page of the WavePacket central Wiki.

Numerical solution of the QCLE is intimately related to the various surface hopping trajectory techniques listed in the following

  • MATLAB class for multiple switches surface hopping can be found here

  • MATLAB class for fewest switches surface hopping can be found here

  • MATLAB class for single switch surface hopping can be found here

For an overview of methods to solve the QCLE, see also the corresponding page of the WavePacket central Wiki.

Variables

Note that function qm_init has to be run previously in order to initialize all variables in use. Of particular interest are the following structures:


Related

Wiki: Download.Installation.Main
Wiki: FAQ.Main
Wiki: Reference.Classes.Main
Wiki: Reference.Classes.traj
Wiki: Reference.Classes.wave
Wiki: Reference.Files.Main
Wiki: Reference.Programs.Main
Wiki: Reference.Programs.qm_H2model
Wiki: Reference.Programs.qm_abncd
Wiki: Reference.Programs.qm_bound
Wiki: Reference.Programs.qm_init
Wiki: Reference.Programs.qm_matrix
Wiki: Reference.Programs.qm_movie
Wiki: Reference.Programs.qm_truncate
Wiki: Reference.Variables.control
Wiki: Reference.Variables.expect
Wiki: Reference.Variables.hamilt
Wiki: Reference.Variables.info
Wiki: Reference.Variables.plots
Wiki: Reference.Variables.space
Wiki: Reference.Variables.state
Wiki: Reference.Variables.time.propa.ode
Wiki: Reference.Variables.time.steps
Wiki: Reference.Variables.time
Wiki: Users.Basics.Main
Wiki: Users.Graphics.Movies
Wiki: Users.Graphics.Plots
Wiki: Users.Interpolation.Main
Wiki: Users.Matlab.Main
Wiki: Users.Saving.Main
Wiki: Users.Temporal.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.