Public Documentation

Documentation for CarrierCapture.jl's public interface.

Contents

Index

Public Interface

CarrierCaptureModule

Main module for CarrierCapture.jl – A set of codes to compute carrier capture and recombination rates in semiconducting compounds.

Two structs are exported from this module for public use:

source
Missing docstring.

Missing docstring for potential. Check Documenter's build log for details.

CarrierCapture.fit_pot!Function
fit_pot!(pot::Potential)

Fit a function pot.func_type to pot.QE_data on the domain pot.Q.

parameters

  • pot: Potential
    • pot.func_type: the fitting function; {"spline" (preferred), "bspline", "harmonic", "polyfunc", "morse_poly", "morse"}.
    • pot.params: the hyperparameters.

Hyperparameters params

  • spline (preferred)

    Spline interpolation. See more detail in Dierckx.jl.

    • order: spline order (between 1 and 5; default 2).
    • smoothness: the amount of smoothness is determined by the condition that sum((w[i]*(y[i]-spline(x[i])))**2) <= s
    • weight: the weight applied to each QE_data point (length m 1-d array).
  • harmonic

    Harmonic function whose minimum is at [pot.Q0, pot.E0].

    • hw: the energy quanta of the harmonic oscillator.
  • polyfunc

    Polynomial function; y = E₀ + Σ coeffs[i].* (x .- Q₀) .^(i-1).

    • poly_order: the maximum order of polynomials.
    • p0: the initial parameters for the fitting function.

Example

  • Spline fit
nev = 60
name = "DX-+h"

Q1 = [30.66721918 29.860133 29.05306268 28.24612992 27.43911044 26.63197583 25.82507425 25.01797262 24.21096115 23.40387798 22.59690043 21.78991117 20.98281579 20.17570172 19.36884219 18.56169249 17.75463179 16.94772679 16.14061031 15.33347439 14.52663309 13.71945696 12.91240658 12.10544441 11.29841968 10.4913338 9.684370388 8.877289725 8.070184138]
E1 = [8.0902 7.5970 7.0749 6.5242 5.9461 5.3451 4.7300 4.1147 3.5182 2.9637 2.4769 2.0819 1.7972 1.6315 1.5800 1.6237 1.7301 1.8586 1.9687 2.0283 2.0190 2.0673 1.9910 2.0528 1.9730 2.0857 2.4550 3.1653 4.3448]

pot = Potential(); pot.name = name
pot.nev = nev
pot.Q0 = Q1[findmin(E1)[2]]; pot.E0 = 1.69834
pot.QE_data = DataFrame(Q = Q1[:], E = E1[:])
pot.QE_data.E .+= - minimum(pot.QE_data.E) + pot.E0
pot.Q = Q

pot.func_type = "spline"
# spline fitting parameters
params = Dict()
params["order"] = 4
params["smoothness"] = 0.001
params["weight"] = [1 1 1 1 1 0.5 0.4 0.4 0.5 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1]
fit_pot!(pot)
  • Harmonic
nev = 40
name = "SnIII+h"

pot = Potential(); pot.name = name
pot.Q0 = 1.90291674728; pot.E0 = 0.585005
pot.nev = nev
pot.func_type = "harmonic"
params = Dict()
params["hw"] = 0.0281812646475
fit_pot!(pot)
source
CarrierCapture.solve_pot!Function
solve_pot!(pot::Potential)

Solve 1D Shrödinger equation for Potential. pot.ϵ and pot.χ store the eigenvalues and eigenvectors, respectively.

source
CarrierCapture.find_crossingFunction
find_crossing(pot_1::Potential, pot_2::Potential)

Find the crossing point between two potential energy surfaces pot1 and pot2. Qx, Ex = find_crossing(pot1, pot2).

source
CarrierCapture.conf_coordType

Stores two Potentials with e-ph coupling constant W to calculate the capture coefficient capt_coeff(temperature).

Fields

  • name – the name of a configuration coordinate.
  • V1 and V2 – the initial and final Potentials.
  • W – the e-ph coupling matrix element.
  • g – the degeneracy.
  • temperature – the temperature range where capt_coeff is calculated.
  • capt_coeff – the capture coefficient.

Constructor

conf_coord(pot_i::Potential, pot_f::Potential)
source
CarrierCapture.calc_overlap!Function
calc_overlap!(cc::conf_coord; cut_off = 0.25, σ = 0.025, Q₀)

Calculate phonon overlap between phonon wave functions 'Potential.χ'. If energy difference is larger then the cutoff (eV) abs(cc.V1.ϵ[i] - cc.V2.ϵ[j]) > cut_off, the overlap will not be calculated. Delta functions are replaced by Gaussian functions with widths σ. Q₀ should be consistent with the middle datapoint used to calculate the e-ph coupling matrix element W.

source
CarrierCapture.calc_capt_coeff!Function
calc_capt_coeff!(cc::conf_coord, V::Float64, temperature)

Calculate the capture coefficient cc.capt_coeff as a function of temperature which is a UnitRange. V is a volume where the electron-phonon coupling matrix element cc.W is calculated. The lowest thermal occupation number of the eigenstate must be lower than occ_cut_off = 1E-5.

@assert occ_high < occ_cut_off "occ(ϵ_max, T_max): $occ_high should be less than 1.0e-5"
source