electronic_structure#

Electronic structure, density of states, carrier concentrations

Functions

f0

Fermi-Dirac distribution function.

get_carrier_concentrations

Get carrier concentrations by integrating density of states or using effective masses.

get_dos_from_effective_mass

Calculate the effective density of states (N_c or N_v) for a non-degenerate semiconductor.

get_dos_object_from_json

Get Dos object from json file or string.

maxwell_boltzmann

Maxwell-Boltzmann distribution function.

solve_intrinsic_fermi_level

Find Fermi level by solving the charge neutrality condition.

f0(E, fermi, T)[source]#

Fermi-Dirac distribution function.

Parameters:
  • E (float) – Energy in eV.

  • fermi (float) – Fermi level in eV.

  • T (float) – Temperature in kelvin.

Returns:

occupation – Fermi-Dirac occupation probability at energy E.

Return type:

float

get_carrier_concentrations(dos, fermi_level, temperature, band_gap=None)[source]#

Get carrier concentrations by integrating density of states or using effective masses.

Code from pymatgen.electronic_structure.dos.FermiDos.get_doping The function has been modified to return the absolute values of hole and electron concentrations.

Calculate carrier concentrations at a given Fermi level and temperature. A simple Left Riemann sum is used for integrating the density of states over energy & equilibrium Fermi-Dirac distribution.

Parameters:
  • dos (dict or Dos) –

    Density of states to integrate. Can be provided as density of states D(E) or using effective masses.

    Format for effective masses is a dict with the following keys:

    • ”m_eff_h” : holes effective mass in units of m_e (electron mass)

    • ”m_eff_e” : electrons effective mass in units of m_h

    • band_gap : needs to be provided in arguments

    Format for explicit DOS (dictionary) with the following keys:

    • ’energies’ : list or np.array with energy values

    • ’densities’ : list or np.array with total density values

    • ’structure’ : pymatgen Structure of the material, needed for DOS volume and charge normalization

    Alternatively, a pymatgen Dos object (Dos, CompleteDos, or FermiDos).

  • fermi_level (float) – The Fermi level relative to the VBM in eV.

  • temperature (float) – The temperature in Kelvin.

  • band_gap (float) – The band gap in eV. If None is determined from the DOS.

  • Returns

  • --------

    hfloat

    Absolute value of hole concentration in 1/cm^3.

    nfloat

    Absolute value of electron concentration in 1/cm^3.

get_dos_from_effective_mass(m_eff, T)[source]#

Calculate the effective density of states (N_c or N_v) for a non-degenerate semiconductor.

Parameters:
  • m_eff (float) – Effective mass (in units of kg)

  • T (float) – Temperature (in Kelvin)

Returns:

N – Density of states (in cm^-3).

Return type:

float

get_dos_object_from_json(path_or_string)[source]#

Get Dos object from json file or string.

maxwell_boltzmann(E, T, clip=True)[source]#

Maxwell-Boltzmann distribution function. Can be clipped to prevent divergence

Parameters:
  • E (float) – Energy in eV.

  • fermi (float) – Fermi level in eV.

  • T (float) – Temperature in kelvin.

  • clip (bool) – Clip exponential factor to 700 to avoid divergence, returns 1e304.

Returns:

occupation – Maxwell-Boltzmann occupation probability at energy E.

Return type:

float

solve_intrinsic_fermi_level(dos, temperature, band_gap, xtol=1e-05)[source]#

Find Fermi level by solving the charge neutrality condition.

Parameters:
  • dos (dict or Dos) –

    Density of states to integrate. Can be provided as density of states D(E) or using effective masses.

    Format for effective masses is a dict with the following keys:

    • ”m_eff_h” : holes effective mass in units of m_e (electron mass)

    • ”m_eff_e” : electrons effective mass in units of m_h

    • band_gap : needs to be provided in arguments

    Format for explicit DOS (dictionary) with the following keys:

    • ’energies’ : list or np.array with energy values

    • ’densities’ : list or np.array with total density values

    • ’structure’ : pymatgen Structure of the material, needed for DOS volume and charge normalization

    Alternatively, a pymatgen Dos object (Dos, CompleteDos, or FermiDos).

  • temperature (float) – The temperature in Kelvin.

  • band_gap (float) – The band gap in eV. If None is determined from the DOS.

  • xtol (float) – Tolerance for bisect method (scipy).

Returns:

fermi_level – Fermi level dictated by charge neutrality.

Return type:

float