Holstein¶
-
libra_py.models.Holstein.
Holstein2
(q, params, full_id)[source]¶ n-state model
H_nn = E_n + 0.5*k*(x-x_n)^2
H_n,n+1 = H_n+1,n = V, H_n,m = 0, otherwise
- Parameters
q (MATRIX(1,1)) – coordinates of the particle, ndof = 1
params (dictionary) –
model parameters
params[“E_n”] ( list of doubles ): [ default: [0.0, 0.001, 0.001, 0.001], units: Ha]
params[“x_n”] ( list of doubles ): [ default: [0.0, 1.0, 1.0, 1.0], units: Bohr]
params[“k_n”] ( list of doubles ): [ default: [0.001, 0.001, 0.001, 0.001], units: Ha/Bohr^2]
params[“V”] ( double ): [ default: 0.001, units: Ha]
- Returns
obj, with the members:
obj.ham_dia ( CMATRIX(4,4) ): diabatic Hamiltonian
obj.ovlp_dia ( CMATRIX(4,4) ): overlap of the basis (diabatic) states [ identity ]
- obj.d1ham_dia ( list of 1 CMATRIX(4,4) objects ):
derivatives of the diabatic Hamiltonian w.r.t. the nuclear coordinate
obj.dc1_dia ( list of 1 CMATRIX(4,4) objects ): derivative coupling in the diabatic basis [ zero ]
- Return type
PyObject
-
libra_py.models.Holstein.
Holstein3
(q, params, full_id)[source]¶ n-state model
H_nn = E_n + 0.5*k*(x-x_n)^2
H_n,n+m = H_n+m,n = V_m
- Parameters
q (MATRIX(1,1)) – coordinates of the particle, ndof = 1
params (dictionary) –
model parameters
params[“E_n”] ( list of doubles ): [ default: [0.0, 0.001, 0.001, 0.001], units: Ha]
params[“x_n”] ( list of doubles ): [ default: [0.0, 1.0, 1.0, 1.0], units: Bohr]
params[“k_n”] ( list of doubles ): [ default: [0.001, 0.001, 0.001, 0.001], units: Ha/Bohr^2]
params[“V_n”] ( list of doubles ): The coupling between state i and j, where i and j are n+1 states away from each other. ie H_0,1 = V_0; H_0,2 = V_1
[ default: [0.001, 0.0001, 0] units: Ha]
- Returns
obj, with the members:
obj.ham_dia ( CMATRIX(4,4) ): diabatic Hamiltonian
obj.ovlp_dia ( CMATRIX(4,4) ): overlap of the basis (diabatic) states [ identity ]
- obj.d1ham_dia ( list of 1 CMATRIX(4,4) objects ):
derivatives of the diabatic Hamiltonian w.r.t. the nuclear coordinate
obj.dc1_dia ( list of 1 CMATRIX(4,4) objects ): derivative coupling in the diabatic basis [ zero ]
- Return type
PyObject
Example
“H_nn”:[0.0, 0.002, 0.002, 0.002] “V_n”:[0.001, 0.0001, 0] Ham: 0.0 0.001 0.0001 0
- 0.002 0.001 0.0001
- 0.002 0.001
0.002
-
libra_py.models.Holstein.
Holstein4
(q, params, full_id)[source]¶ n-state model
H_nn = E_n + 0.5*k*(x-x_n)^2 H_n,m = V_n,m,
- Parameters
q (MATRIX(1,1)) – coordinates of the particle, ndof = 1
params (dictionary) –
model parameters
params[“E_n”] ( list of doubles ): [ default: [0.0, 0.001, 0.001, 0.001], units: Ha]
params[“x_n”] ( list of doubles ): [ default: [0.0, 1.0, 1.0, 1.0], units: Bohr]
params[“k_n”] ( list of doubles ): [ default: [0.001, 0.001, 0.001, 0.001], units: Ha/Bohr^2]
params[“V”] ( list of lists of double ): [ default: [[0.001]*4]*4, units: Ha]
- Returns
obj, with the members:
obj.ham_dia ( CMATRIX(4,4) ): diabatic Hamiltonian
obj.ovlp_dia ( CMATRIX(4,4) ): overlap of the basis (diabatic) states [ identity ]
- obj.d1ham_dia ( list of 1 CMATRIX(4,4) objects ):
derivatives of the diabatic Hamiltonian w.r.t. the nuclear coordinate
obj.dc1_dia ( list of 1 CMATRIX(4,4) objects ): derivative coupling in the diabatic basis [ zero ]
- Return type
PyObject
-
libra_py.models.Holstein.
Holstein5
(q, params, full_id)[source]¶ n-state model
H_nn = E_n + 0.5*k*(x-x_n)^2 H_n,m = V_n,m * exp(- alp_n,m * (x-x_nm)^2 )
- Parameters
q (MATRIX(1,1)) – coordinates of the particle, ndof = 1
params (dictionary) –
model parameters
params[“E_n”] ( list of doubles ): [ default: [0.0, 0.001, 0.001, 0.001], units: Ha]
params[“x_n”] ( list of doubles ): [ default: [0.0, 1.0, 1.0, 1.0], units: Bohr]
params[“k_n”] ( list of doubles ): [ default: [0.001, 0.001, 0.001, 0.001], units: Ha/Bohr^2]
params[“V”] ( list of lists of double ): [ default: [[0.001]*4]*4, units: Ha]
params[“alpha”] ( list of lists of double ): [ default: [[0.0]*4]*4, units: 1/Bohr^2]
params[“x_nm”] ( list of lists of double ): [ default: [[0.0]*4]*4, units: Bohr]
- Returns
obj, with the members:
obj.ham_dia ( CMATRIX(4,4) ): diabatic Hamiltonian
obj.ovlp_dia ( CMATRIX(4,4) ): overlap of the basis (diabatic) states [ identity ]
- obj.d1ham_dia ( list of 1 CMATRIX(4,4) objects ):
derivatives of the diabatic Hamiltonian w.r.t. the nuclear coordinate
obj.dc1_dia ( list of 1 CMATRIX(4,4) objects ): derivative coupling in the diabatic basis [ zero ]
- Return type
PyObject
-
libra_py.models.Holstein.
Holstein_uncoupled
(q, params)[source]¶ Implementation of a generic Holstein Hamiltonian.
- Parameters
q (MATRIX(ndof, 1)) – coordinates of the classical particles, ndof is an arbitrary number of degrees of freedom (e.g. 3N, where N is the number of particles)
params (dictionary) –
the parameters of the Hamiltonian, should contain:
params[“k_harmonic”] ( double ) [ units: Ha/Bohr^2 ]
params[“el-phon_coupling”] ( double ) [ units: Ha/Bohr ]
params[“site_coupling”] ( double ): electronic coupling between nearby sites [ units: Ha ]
params[“is_periodic”] ( Boolean ): whether the first and last sites are connected
- Returns
obj, with the members:
obj.ham_dia ( CMATRIX(ndof,ndof) ): diabatic Hamiltonian
obj.ovlp_dia ( CMATRIX(ndof,ndof) ): overlap of the basis (diabatic) states [ identity ]
- obj.d1ham_dia ( list of ndof CMATRIX(ndof,ndof) objects ):
derivatives of the diabatic Hamiltonian w.r.t. the nuclear coordinate
obj.dc1_dia ( list of 2 CMATRIX(ndof,ndof) objects ): derivative coupling in the diabatic basis [ zero ]
- Return type
PyObject
-
libra_py.models.Holstein.
get_Holstein_set1
()[source]¶ Parameters from: Qiu, J.; Bai, X.; Wang, L. Crossing Classified and Corrected Fewest Switches Surface Hopping. J. Phys. Chem. Lett. 2018, 9, 4319-4325.
- Parameters
None –
- Returns
params, will contain the parameters:
params[“k_harmonic”] ( double ) [ units: Ha/Bohr^2 ]
params[“el-phon_coupling”] ( double ) [ units: Ha/Bohr ]
params[“mass”] ( double ): mass of the particles [ units: a.u. of mass ]
params[“site_coupling”] ( double ): electronic coupling between nearby sites [ units: Ha ]
params[“is_periodic”] ( Boolean ): whether the first and last sites are connected
- Return type
dictionary