nonrad.nonrad module

Core module for nonrad.

This module provides the main implementation to evaluate the nonradiative capture coefficient from first-principles.

nonrad.nonrad.analytic_overlap_NM(DQ: float, w1: float, w2: float, n1: int, n2: int) float[source]

Compute the overlap between two displaced harmonic oscillators.

This function computes the overlap integral between two harmonic oscillators with frequencies w1, w2 that are displaced by DQ for the quantum numbers n1, n2. The integral is computed using an analytic formula for the overlap of two displaced harmonic oscillators. The method comes from B.P. Zapol, Chem. Phys. Lett. 93, 549 (1982).

Parameters:
  • DQ (float) – displacement between harmonic oscillators in amu^{1/2} Angstrom

  • w1 (float) – frequencies of the harmonic oscillators in eV

  • w2 (float) – frequencies of the harmonic oscillators in eV

  • n1 (integer) – quantum number of the overlap integral to calculate

  • n2 (integer) – quantum number of the overlap integral to calculate

Returns:

overlap of the two harmonic oscillator wavefunctions

Return type:

np.longdouble

nonrad.nonrad.fact(n: int) float[source]

Compute the factorial of n.

nonrad.nonrad.fast_overlap_NM(dQ: float, w1: float, w2: float, n1: int, n2: int) float[source]

Compute the overlap between two displaced harmonic oscillators.

This function computes the overlap integral between two harmonic oscillators with frequencies w1, w2 that are displaced by dQ for the quantum numbers n1, n2. The integral is computed using Hermite-Gauss quadrature; this method requires an order of magnitude less grid points than the trapezoid method.

Parameters:
  • dQ (float) – displacement between harmonic oscillators in amu^{1/2} Angstrom

  • w1 (float) – frequencies of the harmonic oscillators in eV

  • w2 (float) – frequencies of the harmonic oscillators in eV

  • n1 (integer) – quantum number of the overlap integral to calculate

  • n2 (integer) – quantum number of the overlap integral to calculate

Returns:

overlap of the two harmonic oscillator wavefunctions

Return type:

np.longdouble

nonrad.nonrad.get_C(dQ: float, dE: float, wi: float, wf: float, Wif: float, volume: float, g: int = 1, T: float | ndarray = 300.0, sigma: str | float = 'pchip', occ_tol: float = 1e-05, overlap_method: str = 'HermiteGauss') float | ndarray[source]

Compute the nonradiative capture coefficient.

This function computes the nonradiative capture coefficient following the methodology of A. Alkauskas et al., Phys. Rev. B 90, 075202 (2014). The resulting capture coefficient is unscaled [See Eq. (22) of the above reference]. Our code assumes harmonic potential energy surfaces.

Parameters:
  • dQ (float) – displacement between harmonic oscillators in amu^{1/2} Angstrom

  • dE (float) – energy offset between the two harmonic oscillators

  • wi (float) – frequencies of the harmonic oscillators in eV

  • wf (float) – frequencies of the harmonic oscillators in eV

  • Wif (float) – electron-phonon coupling matrix element in eV amu^{-1/2} Angstrom^{-1}

  • volume (float) – volume of the supercell in Å^3

  • g (int) – degeneracy factor of the final state

  • T (float, np.array(dtype=float)) – temperature or a np.array of temperatures in K

  • sigma ('pchip', 'cubic', or float) – smearing parameter in eV for replacement of the delta functions with gaussians. A value of ‘pchip’ or ‘cubic’ corresponds to interpolation instead of gaussian smearing, utilizing PCHIP or cubic spline interpolaton. PCHIP is preferred to cubic spline as cubic spline can result in negative values when small rates are found. The default is ‘pchip’ and is recommended for improved accuracy.

  • occ_tol (float) – criteria to determine the maximum quantum number for overlaps based on the Bose weights

  • overlap_method (str) – method for evaluating the overlaps (only the first letter is checked) allowed values => [‘Analytic’, ‘Integral’, ‘HermiteGauss’]

Returns:

resulting capture coefficient (unscaled) in cm^3 s^{-1}

Return type:

float, np.array(dtype=float)

nonrad.nonrad.herm(x: float, n: int) float[source]

Recursive definition of hermite polynomial.

nonrad.nonrad.overlap_NM(DQ: float, w1: float, w2: float, n1: int, n2: int) float[source]

Compute the overlap between two displaced harmonic oscillators.

This function computes the overlap integral between two harmonic oscillators with frequencies w1, w2 that are displaced by DQ for the quantum numbers n1, n2. The integral is computed using the trapezoid method and the analytic form for the wavefunctions.

Parameters:
  • DQ (float) – displacement between harmonic oscillators in amu^{1/2} Angstrom

  • w1 (float) – frequencies of the harmonic oscillators in eV

  • w2 (float) – frequencies of the harmonic oscillators in eV

  • n1 (integer) – quantum number of the overlap integral to calculate

  • n2 (integer) – quantum number of the overlap integral to calculate

Returns:

overlap of the two harmonic oscillator wavefunctions

Return type:

np.longdouble