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