Distribution functions

Various distributions using different smearing techniques.

get_distribution(method[, smearing, x0])

Create a distribution function, Gaussian, Lorentzian etc.

gaussian(x[, sigma, x0])

Gaussian distribution function

lorentzian(x[, gamma, x0])

Lorentzian distribution function

fermi_dirac(E[, kT, mu])

Fermi-Dirac distribution function

bose_einstein(E[, kT, mu])

Bose-Einstein distribution function

cold(E[, kT, mu])

Cold smearing function, Marzari-Vanderbilt, PRL 82, 16, 1999

step_function(x[, x0])

Step function, also known as \(1 - H(x)\)

heaviside(x[, x0])

Heaviside step function

sisl.physics.distribution.gaussian(x, sigma=0.1, x0=0.0)

Gaussian distribution function

\[G(x,\sigma,x_0) = \frac{1}{\sqrt{2\pi\sigma^2}}\exp\Big[\frac{- (x - x_0)^2}{2\sigma^2}\Big]\]
Parameters
  • x (array_like) – points at which the Gaussian distribution is calculated

  • sigma (float, optional) – spread of the Gaussian

  • x0 (float, optional) – maximum position of the Gaussian

Returns

the Gaussian distribution, same length as x

Return type

numpy.ndarray

sisl.physics.distribution.lorentzian(x, gamma=0.1, x0=0.0)

Lorentzian distribution function

\[L(x,\gamma,x_0) = \frac{1}{\pi}\frac{\gamma}{(x-x_0)^2 + \gamma^2}\]
Parameters
  • x (array_like) – points at which the Lorentzian distribution is calculated

  • gamma (float, optional) – spread of the Lorentzian

  • x0 (float, optional) – maximum position of the Lorentzian

Returns

the Lorentzian distribution, same length as x

Return type

numpy.ndarray

sisl.physics.distribution.fermi_dirac(E, kT=0.1, mu=0.0)

Fermi-Dirac distribution function

\[n_F(E,k_BT,\mu) = \frac{1}{\exp\Big[\frac{E - \mu}{k_BT}\Big] + 1}\]
Parameters
  • E (array_like) – energy evaluation points

  • kT (float, optional) – temperature broadening

  • mu (float, optional) – chemical potential

Returns

the Fermi-Dirac distribution, same length as E

Return type

numpy.ndarray

sisl.physics.distribution.bose_einstein(E, kT=0.1, mu=0.0)

Bose-Einstein distribution function

\[n_B(E,k_BT,\mu) = \frac{1}{\exp\Big[\frac{E - \mu}{k_BT}\Big] - 1}\]
Parameters
  • E (array_like) – energy evaluation points

  • kT (float, optional) – temperature broadening

  • mu (float, optional) – chemical potential

Returns

the Bose-Einstein distribution, same length as E

Return type

numpy.ndarray

sisl.physics.distribution.cold(E, kT=0.1, mu=0.0)

Cold smearing function, Marzari-Vanderbilt, PRL 82, 16, 1999

\[\begin{split}C(E,k_BT,\mu) = \frac12 &+ \mathrm{erf}\Big(-\frac{E-\mu}{k_BT}-\frac1{\sqrt2}\Big) \\ &+ \frac1{\sqrt{2\pi}} \exp\Bigg\{-\Big[\frac{E-\mu}{k_BT}+\frac1{\sqrt2}\Big]^2\Bigg\}\end{split}\]
Parameters
  • E (array_like) – energy evaluation points

  • kT (float, optional) – temperature broadening

  • mu (float, optional) – chemical potential

Returns

the Cold smearing distribution function, same length as E

Return type

numpy.ndarray

sisl.physics.distribution.step_function(x, x0=0.0)

Step function, also known as \(1 - H(x)\)

This function equals one minus the Heaviside step function

\begin{align} S(x,x_0) = \left\{\begin{aligned}1&\quad \text{for }x < x_0 \\ 0.5&\quad \text{for }x = x_0 \\ 0&\quad \text{for }x>x_0 \end{aligned}\right. \end{align}
Parameters
  • x (array_like) – points at which the step distribution is calculated

  • x0 (float, optional) – step position

Returns

the step function distribution, same length as x

Return type

numpy.ndarray

sisl.physics.distribution.heaviside(x, x0=0.0)

Heaviside step function

\begin{align} H(x,x_0) = \left\{\begin{aligned}0&\quad \text{for }x < x_0 \\ 0.5&\quad \text{for }x = x_0 \\ 1&\quad \text{for }x>x_0 \end{aligned}\right. \end{align}
Parameters
  • x (array_like) – points at which the Heaviside step distribution is calculated

  • x0 (float, optional) – step position

Returns

the Heaviside step function distribution, same length as x

Return type

numpy.ndarray