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