CDTK.Dynamics.SurfaceHoppingFS module
- class CDTK.Dynamics.SurfaceHoppingFS.SurfaceHoppingFS(**opts)[source]
Bases:
object
Control a trajectory surface-hopping evolution
- get_funcDPL(a_x, **opts)[source]
Return the dipole function to be used from a SurfaceHoppingFS object
- get_funcG()[source]
Return the gradient function of current electronic state to be used from a SimulationBox object
- optional arguments:
nstates_g – number of electronic states requiring analytical gradient state_g – the certain designated electronic state(s) requiring analytical gradient
currently for ab initio analytical gradient method
- state_type – specify the type of electronic state that requires analytical gradient
options: current_electronic_state - for SimulationBox object
- get_funcVD(a_x, **opts)[source]
Return the coupling matrix to be used from a SurfaceHoppingFS object
- optional arguments:
state_block - electronic state block for the Hartree-Fock-Koopmans method
- gradient_FS(a_x, **opts)[source]
Return the energy and gradient on the current electronic state
A function for the fewest switching FS surface hopp method
Provided auxillary data for the switch_condition function
- Input arguments:
a_x – positions of the system
- Returns:
e_adiabatic – potential energy g_adiabatic – energy gradient
self.delta_e – energy difference self.delta_g – gradient difference
- optional arguments:
nstates_g – number of electronic states requiring analytical gradient state_g – the certain designated electronic states requiring analytical gradient
currently for ab initio analytical gradient method
- state_type – specify the type of electronic state that requires analytical gradient
- options: current_electronic_state - for SimulationBox object
hopping_electronic_state - for switch_condition function
- gradient_simple(a_x, **opts)[source]
Return the energy and gradient on the current electronic state
A function for the SE integration
Merely compute the energies and gradients without preparing data for switch_condition
- Input arguments:
a_x – positions of the system
- Returns:
e_adiabatic – potential energy g_adiabatic – energy gradient
- linear_interpolate(time, **opts)[source]
Returns interpolated E and V.D
optional arguments: - retEVd: variables to be interpolated
- default: returnAll - interpolated E and V.D
retuenVd - interpolated V.D
- linear_interpolate_Vd(time, **opts)[source]
Continuously interpolate the non-adiabatic coupling Vd after the initializing classical step. adapted to the wavefunction overlap method.
- Inputs:
time: current time of quantum integration
- uses:
self.Vd_intp_TIME: non-adiabatic coupling at t self.Vd_intp_TIMEpDT: non-adiabatic coupling at t+dt self.Vd_TIMEpDT: non-adiabatic coupling at t+dt/2
- Returns:
the interpolated non-adiabatic coupling
- Return type:
Vd_intm
- optional arguments:
- is_init: whether to be the initialization classical step
default - False
- switch_condition(**opts)[source]
Compute initial conditions on the new PES after a hop.
- uses:
self.de_s: energy difference (Vf - Vi) between the two adiabatic states self.dg_s: non-adiabatic coupling gradient.
- Returns: (xnew,vnew,ishop)
xnew: new positions vnew: new velocities ishop: True if switch took place
Implements Eq.(3.44) in Miller and George; JCP 56, 5637 (1972) Implements Eqs.(25,29) in Stine et al. ; JCP 65, 3975 (1976)