CDTK.Dynamics.SurfaceHoppingLZ2 module
- class CDTK.Dynamics.SurfaceHoppingLZ2.SurfaceHoppingLZController(**opts)[source]
Bases:
object
Controller for Landau-Zener surface-hopping
- 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)
- 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.