lbteint module¶
This module, lbteint.py contains the integral solvers
for the linearized Boltzmann Transport equations.
Contains the routines to perform the Boltzmann transport integrals.
-
lbteint.analytic_k_space_energy(kx, ky, kz, effmass, e_shift)¶ Returns the parabolic energy dispersion.
- Parameters
- transportobject
A Transport() object
- kxfloat
The
in cartesian coordinates.- kyfloat
The
in cartesian coordinates.- kzfloat
The
in cartesian coordinates.- effmassndarray
- Dimension: (3)
The effective mass along
,
and
, respectively.
- Returns
- float
The energy value in eV.
Warning
This routine only accepts the diagonal elements of the effective mass tensor
-
lbteint.analytic_k_space_integrand(kz, ky, kx, eta, beta, effmass, e0, i, l, m)¶ Returns the integrand for the anlytic reciprocal space integration of the transport tensor.
- Parameters
- kzfloat
The
in cartesian coordinates.- kyfloat
The
in cartesian coordinates.- kxfloat
The
in cartesian coordinates.- etafloat
The reduced chemical potential.
- betafloat
The
factor,
in eV.- effmassfloat
The effective mass in units of the free electron mass.
- e0float
The energy shift, e.g.
,
where
is the energy shift in eV.- iint
The order of the transport tensor.
- l{0,1,2}
The first index of the transport tensor.
- m{0,1,2}
The second index of the transport tensor.
- Returns
- float
The integrand value.
-
lbteint.analytic_k_space_velocity(kx, ky, kz, effmass, i)¶ Returns the parabolic velocity dispersion.
- Parameters
- kxfloat
The
in cartesian coordinates.- kyfloat
The
in cartesian coordinates.- kzfloat
The
in cartesian coordinates.- effmassndarray
- Dimension: (3)
The effective mass along
,
and
, respectively. - i{0,1,2}
The direction to evaluate the velocity (0 is along
etc.).
- Returns
- float
The velocity in eVAA.
Warning
This routine only accepts the diagonal elements of the effective mass tensor. The
factor is not
returned and need to be introduced
externally.
-
lbteint.concatenate_integrand(energies, velocities, scatter, spin_fact, chempot, beta, order)¶ Concatenates the integrand in the Boltzmann transport integral.
-
lbteint.concatenate_integrand_band(energies, velocities, tau, spin_fact, chempot, beta, order)¶ Concatenates the integrand in the Boltzmann transport integral and sums the bands.
-
lbteint.fermiintclosed(order, eta, spin_fact)¶ Returns the value of the closed expressions for the Fermi integrals.
-
lbteint.integrandpar(eps, transport, w0, eta, beta, energy_trans, effmass, i)¶ Returns the integrand used in the analytic energy integration of the transport coefficients in
integrate_e()- Parameters
- epsfloat
The reduced carrier energy.
- transportobject
A Transport() object.
- w0ndarray
- Dimension: (12)
Contains the scattering rate prefactor for the different scattering mechanisms in units of inverse fs.
- etafloat
The reduced chemical potential.
- betafloat
The
factor in eV.- energy_transndarray
- Dimension: (12)
Contains the energy transitions (that is added to the energy in
, typically,
, where
is the size of the energy transition. Set it to zero
for the non-relevant scattering mechanisms. - effmassfloat
The effective mass in units of the electron mass.
- iint
The order of the transport integral to be evaluated.
- Returns
- float
The integrand value.
Notes
The total scattering is calculated based on the well known scattering models for parabolic energy dispersions
,
where
is the scattering factor.
-
lbteint.integrandpardos(eps, transport, w0, eta, beta, energy_trans, effmass, i)¶ The integrand for the density of states integral over energy.
- Parameters
- epsfloat
The reduced carrier energy
- transportobject
A Transport() object
- w0ndarray
- Dimension: (12)
Contains the scattering rate prefactor for the different scattering mechanisms in units of inverse fs. Not used in this routine, but it needs the dummy from the call argument.
- etafloat
The reduced chemical potential
- betafloat
The
factor in eV. Not
used in this routine, but it needs the dummy from the
call argument.- energy_transndarray
- Dimension: (12)
Contains the energy transitions (that is added to the energy in
, typically,
, where
is the size of the energy transition. Set it to zero
for the non-relevant scattering mechanisms. Not
used in this routine, but it needs the dummy from the
call argument. - effmassfloat
The effective mass in units of the electron mass. Not used in this routine, but it needs the dummy from the call argument.
- iint
The order of the transport integral to be evaluated. Not used in this routine, but it needs the dummy from the call argument.
- Returns
- float
The integrand value for the density of states.
Notes
Calculates the density of states integrand
-
lbteint.integrandpart2(eps, transport, w0, eta, beta, energy_trans, effmass, i)¶ Returns the integrand used in the analytic energy integration of the transport distribution function with a quadratic
term- Parameters
- epsfloat
The reduced carrier energy.
- transportobject
A Transport() object.
- w0ndarray
- Dimension: (12)
Contains the scattering rate prefactor for the different scattering mechanisms in units of inverse fs.
- etafloat
The reduced chemical potential.
- betafloat
The
factor in eV.- energy_transndarray
- Dimension: (12)
Contains the energy transitions (that is added to the energy in
,
typically,
,
where
is the size of the
energy transition. Set it to zero for the
non-relevant scattering mechanisms. - effmassfloat
The effective mass in units of the electron mass.
- iint
The order of the transport integral to be evaluated.
- Returns
- float
The integrand value.
Notes
The total scattering is calculated based on the well known scattering models for parabolic energy dispersions
,
where
is the scattering factor.
Difference from integrandpar(): here tau^2 is used in the integrand (for the calculation of the Hall factor).
-
lbteint.scipy_e_integrals(transport, integrand, e_min, e_max, w0, eta, beta, energy_trans, effmass, order, spin_fact, method='quad')¶ Calculates the one dimensional energy integrals.
Uses the SciPy function
scipy.integrate.quad().- Parameters
- transportobject
A Transport() object
- integrand{“normal”,”hall”,”dos”}
Selects the type of integrand to be used. “normal” selects
integrandpar(). “hall” selectsintegrandpart2(), “dos” selectsintegrandpardos().- e_minfloat
The lower integration limit in eV.
- e_maxfloat
The higher integration limit in eV.
- w0ndarray
- Dimension: (12)
Contains the scattering rate prefactor (inverse of relaxation time) for the different scattering mechanisms in units of inverse fs.
- etafloat
The reduced chemical potential.
- betafloat
The
factor,
in eV.- effmassndarray
- Dimension: (3)
The effective mass along the three reciprocal unit vectors in units of the free electron mass.
- e0float
The energy shift, e.g.
,
where
is the energy shift in eV.- iint
The order of the transport tensor.
- l{0,1,2}
The first index of the transport tensor.
- m{0,1,2}
The second index of the transport tensor.
- spin_factint
The spin degeneracy factor. 1 for non-spin degeneracy, 2 for spin degeneracy.
- method{“quad”}, optional
The SciPy three dimensional integration method using
scipy.integrate.quad().
- Returns
- float
The resulting integral over energy.
-
lbteint.scipy_k_integrals(eta, beta, effmass, e0, i, l, m, method='tplquad')¶ Calculates the three dimensional wave vector integrals.
Uses the SciPy function
scipy.integrate.tplquad().- Parameters
- etafloat
The reduced chemical potential
- betafloat
The
factor,
in
eV.- effmassndarray
- Dimension: (3)
The effective mass along the three reciprocal unit vectors in units of the free electron mass.
- e0float
The energy shift, e.g.
, where
is the energy shift in eV.- iint
The order of the transport tensor.
- l{0,1,2}
The first index of the transport tensor
- m{0,1,2}
The second index of the transport tensor
- method{“tplquad”}, optional
The SciPy three dimensional integration method using
scipy.integrate.tplquad().
- Returns
- float
The resulting integral over the wave vectors.
See also
-
lbteint.scipy_k_integrals_discrete(tr, integrand_type, energies, velocities, scatter, chempot, beta, order, spin_fact, method='trapz')¶ Calculates the three dimensional integrals over the k-points for discrete data.
Uses SciPy integration functions for discrete data.
- Parameters
- trobject
A Transport() object
- energies: ndarray
Contains the band energies in eV for each k-point.
- velocities: ndarray
Contains the derivative if energies without the \hbar factors for each k-point.
- scatter:
Contains the relaxation time at each k-point.
- chempotfloat
The chemical potential in eV
- betafloat
The
factor,
in eV.- spin_factint
The spin factor, 1 for non-spin degeneracy and 2 for spin degeneracy.
- method{“trapz”, “simps”, “romb”}, optional
The SciPy three dimensional integration method for the
scipy.integrate.trapz(),scipy.integrate.simps()and thescipy.integrate.romb()functions, respectively. Defaults to “trapz”.
- Returns
- integralfloat
The resulting integral over the wave vectors.
-
lbteint.scipy_k_integrals_discrete2(tr, energies, velocities, scatter, chempot, beta, spin_fact, order, method='trapz')¶ Calculates the three dimensional integrals over the k-points for discrete data.
Uses integration functions for discrete data.
- Parameters
- trobject
A Transport() object
- chempotfloat
The chemical potential in eV
- betafloat
The
factor,
in eV.- spin_factint
The spin factor, 1 for non-spin degeneracy and 2 for spin degeneracy.
- kx, ky, kzfloat, float, float
The spacing in inverse AA between the points along each direction.
- orderfloat
The order of the energy minus chemical potential term in the denominator.
- method{“trapz”, “simps”, “romb”}, optional
The SciPy three dimensional integration method for the
scipy.integrate.trapz(),scipy.integrate.simps()and thescipy.integrate.romb()functions, respectively. Defaults to “trapz”.