Tully¶
-
libra_py.models.Tully.
Tully1
(q, params)[source]¶ The implementation that calls the C++ implementation of Tully model I = Simple Avoided Crossing (SAC):
- H_00 = A*(1.0-exp(-B*x)) x>0,
= A*(exp(B*x)-1.0 ) x<0
H_11 = -H_00 H_01 = C*exp(-D*x^2)
- Parameters
q (MATRIX(1,1)) – coordinates of the particle, ndof = 1
params (dictionary) –
model parameters
params[“A”] ( double ): [ default: 0.010, units: Ha]
params[“B”] ( double ): [ default: 1.600, units: Bohr^-1]
params[“C”] ( double ): [ default: 0.005, units: Ha]
params[“D”] ( double ): [ default: 1.000, units: Bohr^-2]
- Returns
obj, with the members:
obj.ham_dia ( CMATRIX(2,2) ): diabatic Hamiltonian
obj.ovlp_dia ( CMATRIX(2,2) ): overlap of the basis (diabatic) states [ identity ]
- obj.d1ham_dia ( list of 1 CMATRIX(2,2) objects ):
derivatives of the diabatic Hamiltonian w.r.t. the nuclear coordinate
obj.dc1_dia ( list of 1 CMATRIX(2,2) objects ): derivative coupling in the diabatic basis [ zero ]
- Return type
PyObject
-
libra_py.models.Tully.
Tully1_py
(q, params)[source]¶ Pure Python implementation of the Tully model I = Simple Avoided Crossing (SAC):
- H_00 = A*(1.0-exp(-B*x)) x>0,
= A*(exp(B*x)-1.0 ) x<0
H_11 = -H_00 H_01 = C*exp(-D*x^2)
- Parameters
q (MATRIX(1,1)) – coordinates of the particle, ndof = 1
params (dictionary) –
model parameters
params[“A”] ( double ): [ default: 0.010, units: Ha]
params[“B”] ( double ): [ default: 1.600, units: Bohr^-1]
params[“C”] ( double ): [ default: 0.005, units: Ha]
params[“D”] ( double ): [ default: 1.000, units: Bohr^-2]
- Returns
obj, with the members:
obj.ham_dia ( CMATRIX(2,2) ): diabatic Hamiltonian
obj.ovlp_dia ( CMATRIX(2,2) ): overlap of the basis (diabatic) states [ identity ]
- obj.d1ham_dia ( list of 1 CMATRIX(2,2) objects ):
derivatives of the diabatic Hamiltonian w.r.t. the nuclear coordinate
obj.dc1_dia ( list of 1 CMATRIX(2,2) objects ): derivative coupling in the diabatic basis [ zero ]
- Return type
PyObject
-
libra_py.models.Tully.
Tully2
(q, params)[source]¶ The implementation that calls the C++ implementation of Tully model II = Double Avoided Crossing (DAC):
H_00 = 0.0 H_11 = E - A*exp(-B*x^2) H_01 = C*exp(-D*x^2)
- Parameters
q (MATRIX(1,1)) – coordinates of the particle, ndof = 1
params (dictionary) –
model parameters
params[“A”] ( double ): [ default: 0.100, units: Ha]
params[“B”] ( double ): [ default: 0.028, units: Bohr^-2]
params[“C”] ( double ): [ default: 0.015, units: Ha]
params[“D”] ( double ): [ default: 0.060, units: Bohr^-2]
params[“E”] ( double ): [ default: 0.050, units: Ha]
- Returns
obj, with the members:
obj.ham_dia ( CMATRIX(2,2) ): diabatic Hamiltonian
obj.ovlp_dia ( CMATRIX(2,2) ): overlap of the basis (diabatic) states [ identity ]
- obj.d1ham_dia ( list of 1 CMATRIX(2,2) objects ):
derivatives of the diabatic Hamiltonian w.r.t. the nuclear coordinate
obj.dc1_dia ( list of 1 CMATRIX(2,2) objects ): derivative coupling in the diabatic basis [ zero ]
- Return type
PyObject
-
libra_py.models.Tully.
Tully3
(q, params)[source]¶ The implementation that calls the C++ implementation of Tully model III = Extended Coupling With Reflection (ECWR):
H_00 = A H_11 = -H_00 H_01 = B*exp(C*x); x <= 0
B*(2.0 - exp(-C*x)); x > 0
- Parameters
q (MATRIX(1,1)) – coordinates of the particle, ndof = 1
params (dictionary) –
model parameters
params[“A”] ( double ): [ default: 0.0006, units: Ha ]
params[“B”] ( double ): [ default: 0.1000, units: Ha ]
params[“C”] ( double ): [ default: 0.9000, units: Bohr^-1 ]
- Returns
obj, with the members:
obj.ham_dia ( CMATRIX(2,2) ): diabatic Hamiltonian
obj.ovlp_dia ( CMATRIX(2,2) ): overlap of the basis (diabatic) states [ identity ]
- obj.d1ham_dia ( list of 1 CMATRIX(2,2) objects ):
derivatives of the diabatic Hamiltonian w.r.t. the nuclear coordinate
obj.dc1_dia ( list of 1 CMATRIX(2,2) objects ): derivative coupling in the diabatic basis [ zero ]
- Return type
PyObject
-
libra_py.models.Tully.
chain_potential
(q, params, full_id)[source]¶ A 1D linear chain potential.
This is the Hamiltonian to mimic the one used by Tully and Parandekar to study thermal equilibrium in quantum-classical systems
Although the indended interpretation is that the first DOFs is quantum, this potential is totally generic, so all DOFs could be treated as quantum
- Parameters
q (MATRIX(ndof,1)) – coordinates of the nuclear DOFs
params (dictionary) –
model parameters
params[“A”] ( double ): [ units: None ]
params[“a”] ( double ): [ units: bohr-1 ]
params[“V0] ( double ): [ units: Ha ]
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(n,n) ): diabatic Hamiltonian
obj.ovlp_dia ( CMATRIX(n,n) ): overlap of the basis (diabatic) states [ identity ]
- obj.d1ham_dia ( list of 1 CMATRIX(n, n) objects ):
derivatives of the diabatic Hamiltonian w.r.t. the nuclear coordinate
obj.dc1_dia ( list of 1 CMATRIX(n, n) objects ): derivative coupling in the diabatic basis [ zero ]
- Return type
PyObject