CDTK.Dynamics.SurfaceHoppingLZ2 module

class CDTK.Dynamics.SurfaceHoppingLZ2.SurfaceHoppingLZController(**opts)[source]

Bases: object

Controller for Landau-Zener surface-hopping

is_gap_min_down()[source]
is_gap_min_up()[source]
update(v, m, dt, pot_cur, pot_down=-999999999999999.0, pot_up=999999999999999.0)[source]

Update state of controller and decide if a hopp takes place

v – array with velocity of each coordinate m – array with mass for each coordinate dt – time-step between updates pot_cur – Current PES pot_down– Lower PES w.r.t. populated PES pot_up – Upper PES w.r.t. populated PES

Returns [hopp,v]

hopp – -1,0,1 (hopp down, no hopping, hopp up) v – new velocities (old ones if hopp=0)

update_potentials(pots)[source]
CDTK.Dynamics.SurfaceHoppingLZ2.gap_parameters(pot1, pot2, dt)[source]

Determine gap and gap second time derivative

pot1 – latest four potential values on surface 1 pot2 – latest four potential values on surface 2 dt – time-step

CDTK.Dynamics.SurfaceHoppingLZ2.hopping_probability(egap, egapdt2)[source]

Return the Landau-Zener surface hopping probability (0,1)

egap – energy gap between PES (absolute value) egapdt2 – second derivative of egap w.r.t. time

CDTK.Dynamics.SurfaceHoppingLZ2.is_hopp(plz)[source]

Return True if hopping event has to occur, False otherwise

CDTK.Dynamics.SurfaceHoppingLZ2.is_hopp_energy(ivel, ipes, fpes, m)[source]

Return True if enough kinetic energy is available for a hopping event, else False

ivel – array with initial velocities ipes – initial PES fpes – final PES m – array with mass of each coordinate

CDTK.Dynamics.SurfaceHoppingLZ2.velocity_correction(ivel, ipes, fpes, m)[source]

Return new velocities after hopping

ivel – array with initial velocities ipes – initial PES fpes – final PES m – array with mass of each coordinate

Simple velocity rescaling. Other conditions such as angular momentum conservation may be included afterwards.