Menu

Reference.Classes.sht

Burkhard Schmidt

WavePacket main classes "mssh" and "fssh" and "sssh": Surface hopping trajectories

Mixed (or hybrid) quantum classical dynamics represents a generalization of the classical trajectory-based transport to the case of coupled channel simulations. Hence, the generic surface hopping class, as well as the three subclasses detailed below, inherit from superclass "traj".
Here we introduce numerical techniques to solve the quantum classical Liouville equation by means of several surface hopping trajectory (SHT) techniques. There trajectories are propagated classically along (diabatic or adiabatic) potential energy surfaces. In addition, at|near (avoided or genuine) intersections of those surfaces, the trajectories may statistically "hop" between them.

For the source codes of the "generic" (super)class definition, see here. Note that this class contains two settable properties which are of importance in practical simulations

properties description default
rescale Toggle momentum rescaling upon surface hopping diabatic representation: 'false'
adiabatic representation: 'true'
sca_nac Scaling along non-adiabatic coupling vector 'false', i.e. along "old" momenta

In addition to the methods that are required for each and every of the WavePacket main classes, the generic classdef for surface hopping contains also the following public methods:

method explanation
after_hop Update class properties according to the new level n
disp_hop Display details of surface hopping (not working ?!?)
eval_ham Evaluate Hamiltonian matrices attached to each of the trajectories
get_quantities Get quantities needed to check momentum rescaling and to perform ho
mom_rescaling Rescaling momenta of classical particles to enforce energy conservation
mom_rescaling_vec Rescaling momenta of classical particles along given directions
traj_hop Scaffold of the surface hopping algorithms

The main difference between the various SHT approaches has to do with the (quantum or semi-classical) recipe for calculating the probabilities for the hopping events, as well as the times when or how often to do these probabilities are evaluated. In the following, we give a short overview of the variants currently implemented in WavePacket:

MSSH = multiple switches surface hopping (historic original)

Probabilities for hopping between states are simply taken from the density in the target state itself. In principle, this algorithm will produce the correct populations for a large enough ensemble of trajectories. In practice, however, there will be many hopping events at all times, even when the trajectories are outside the transition regions which tends to make this algorithm unstable. It is included in WavePacket mainly for reasons of historical completeness.

For the source codes of the "mssh" class definition, see here. Note that there are two functions "tdse_dia" and "tdse_adi" for solutions of the Schroedinger equations (in diabatic or adiabatic representation) attached to each of the trajectories.

FSSH = fewest switches surface hopping (J. C. Tully, 1990)

Probabilities for hopping between states is based on the rate of change of the density of the target state. Indeed, it can be shown to minimize the number of state switches, subject to maintaining the correct statistical distribution of the populations at all times. Typically, hopping occurs only in the vicinity of transition regions given by (near) intersections of potential energy surfaces.

For the source codes of the "fssh" class definition, see here. Note that the "fssh" class inherits - among others - from its superclass "mssh" the two functions "tdse_dia" and "tdse_adi", see above.

SSSH = single switch surface hopping (Landau-Zener probabilities)

Probabilities for hopping between states are only evaluated once for every passage of a transition region, typically a (genuine or avoided) intersection of adiabatic potential energy (hyper-)surfaces. Assuming a locally linear double cone topology of the surfaces in these regions, the transition probabilities in SSSH algorithms can be obtained semi-classically by the Landau-Zener (LZ) formula.

For the source codes of the "sssh" class definition, see here. Note that there are four different choices of obtaining the hopping probabilities. They can be selected through the (integer) value of the sssh-class property

state.lz_variant

For details of the four algorithms see here for a general explanation or there for our Matlab/Octave implementation.


Related

Wiki: Reference.Classes.Main
Wiki: Reference.Classes.traj
Wiki: Reference.Programs.qm_setup
Wiki: Reference.Variables.plots
Wiki: Reference.Variables.state
Wiki: Reference.Variables.time.propa.traj
Wiki: Users.Basics.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.