Derivative Couplings

Compute the nonadiabatic coupling using different methods.

The available methods are:

  • 3-point numerical differentiation <https://doi.org/10.1063/1.4738960>

  • levine <dx.doi.org/10.1021/jz5009449>

Phase correction is also available.

Index

calculate_couplings_3points(dt, mtx_sji_t0, ...)

Calculate the non-adiabatic interaction matrix using 3 geometries.

calculate_couplings_levine(dt, w_jk, w_kj)

Compute coupling using the Levine approximation.

compute_overlaps_for_coupling(config, ...)

Compute the Overlap matrices used to compute the couplings.

correct_phases(overlaps, mtx_phases)

Correct the phases for all the overlaps.

API

nanoqm.integrals.nonAdiabaticCoupling.calculate_couplings_3points(dt: float, mtx_sji_t0: ndarray, mtx_sij_t0: ndarray, mtx_sji_t1: ndarray, mtx_sij_t1: ndarray) ndarray[source]

Calculate the non-adiabatic interaction matrix using 3 geometries.

see: https://aip.scitation.org/doi/10.1063/1.467455 the contracted Gaussian functions for the atoms and molecular orbitals coefficients are read from a HDF5 File.

Parameters:
  • dt – Integration step (atomic units)

  • mtx_sji_t0 – Sji Overlap matrix at time t0

  • mtx_sij_t0 – SiJ Overlap matrix at time t0

  • mtx_sji_t1 – Sji Overlap matrix at time t1

  • mtx_sij_t1 – SiJ Overlap matrix at time t1

Returns:

Coupling matrix

Return type:

np.ndarray

nanoqm.integrals.nonAdiabaticCoupling.calculate_couplings_levine(dt: float, w_jk: ndarray, w_kj: ndarray) ndarray[source]

Compute coupling using the Levine approximation.

Compute the non-adiabatic coupling according to: Evaluation of the Time-Derivative Coupling for Accurate Electronic State Transition Probabilities from Numerical Simulations. Garrett A. Meek and Benjamin G. Levine. dx.doi.org/10.1021/jz5009449 | J. Phys. Chem. Lett. 2014, 5, 2351−2356

Notes

In numpy sinc is defined as sin(pi * x) / (pi * x)

Parameters:
  • dt – Integration step (atomic units)

  • w_jk – Overlap matrix

  • mtx_sij_t0 – Overlap matrix

Returns:

Coupling matrix

Return type:

np.ndarray

nanoqm.integrals.nonAdiabaticCoupling.compute_overlaps_for_coupling(config: _data.GeneralOptions, pair_molecules: tuple[MolXYZ, MolXYZ], coefficients: tuple[Matrix, Matrix]) Matrix[source]

Compute the Overlap matrices used to compute the couplings.

Parameters:
  • config – Configuration of the current task

  • pair_molecule – Molecule to compute the overlap

  • coefficients – Molecular orbital coefficients for each molecule

Returns:

containing the overlaps at different times

Return type:

Matrix

nanoqm.integrals.nonAdiabaticCoupling.correct_phases(overlaps: ndarray, mtx_phases: ndarray) ndarray[source]

Correct the phases for all the overlaps.