NEGF

class hubbard.NEGF(Hdev, elec_SE, elec_idx, CC=None, V=0, **kwargs)[source]

Bases: object

This class creates the open quantum system object for a N-terminal device

For the Non-equilibrium case \(V\neq 0\) the current implementation only can deal with a 2-terminal device

Parameters
  • Hdev (HubbardHamiltonian) – hubbard.HubbardHamiltonian object of the device

  • elec_SE (list of sisl.SelfEnergy or tuple of (HubbardHamiltonian, str)) – list of (already converged) hubbard.HubbardHamiltonian objects for the electrodes plus the semi-infinite direction for the respective electrode. Alternatively one may directly pass sisl.SelfEnergy instances

  • elec_idx (array_like) – list of atomic positions that each electrode occupies in the device geometry

  • CC (str, optional) – name of the file containing the energy contour in the complex plane to integrate the density matrix

  • V (float, optional) – applied bias between the two electrodes

Examples

>>> NEGF(Hdev, [sisl.SelfEnergy(), (H, '+A')])

See also

sisl.physics.RecursiveSI

sisl routines to create semi-infinite object (obtain self-energy, etc.)

Notes

This class has to be generalized to non-orthogonal basis

Methods

DOS(H, E[, spin, eta])

Obtains the density of states (DOS) from the Green's function of the device

Delta(HC, Ef, ik[, spin])

Finds the non-equilibrium integrals to correct the left and right equilibrium integrals

PDOS(H, E[, spin, eta])

Obtains the projected density of states (PDOS) onto the atomic sites from the Green's function of the device

__init__(Hdev, elec_SE, elec_idx[, CC, V])

Initialize NEGF class

calc_n_open(H, q[, qtol])

Method to compute the spin densities from the non-equilibrium Green's function

DOS(H, E, spin=[0, 1], eta=0.01)[source]

Obtains the density of states (DOS) from the Green’s function of the device

\[\mathrm{DOS}_\sigma = -\frac{1}{\pi}\Im\lbrace\mathrm{Tr}[G^{\sigma}]\rbrace\]
Parameters
  • H (HubbardHamiltonian) – hubbard.HubbardHamiltonian object of the system

  • E (array_like) – energy grid to obtan the DOS

  • spin (int, array_like, optional) – spin index. If spin=[0,1] (default) it sums the DOS corresponding to both spin indices

  • eta (float, optional) – smearing parameter (complex term in the Green’s function)

Returns

DOS

Return type

numpy.ndarray

Delta(HC, Ef, ik, spin=0)[source]

Finds the non-equilibrium integrals to correct the left and right equilibrium integrals

Parameters
  • HC (numpy.ndarray) – Hamiltonian of the central region in its matrix form

  • Ef (float) – Potential of the device

  • ik (int) – k-point index

  • spin (int) – spin index (0=up, 1=dn)

Returns

  • Delta

  • weight

PDOS(H, E, spin=(0, 1), eta=0.01)[source]

Obtains the projected density of states (PDOS) onto the atomic sites from the Green’s function of the device

\[\mathrm{PDOS}_{i\sigma} = -\frac{1}{\pi} \Im\lbrace G^{\sigma}_{ii}\rbrace\]

Where \(i\) represents the atomic site position

Parameters
  • H (HubbardHamiltonian) – hubbard.HubbardHamiltonian object of the system

  • E (array_like) – energy grid to obtan the PDOS

  • spin (int, array_like, optional) – spin index. If spin=[0,1] (default) it sums the PDOS corresponding to both spin indices

  • eta (float, optional) – smearing parameter (complex term in the Green’s function)

Returns

PDOS

Return type

numpy.ndarray

calc_n_open(H, q, qtol=1e-05)[source]

Method to compute the spin densities from the non-equilibrium Green’s function

Parameters
  • H (HubbardHamiltonian) – hubbard.HubbardHamiltonian of the object that is being iterated

  • q (float) – charge associated to the up and down spin-components

  • qtol (float, optional) – tolerance to which the charge is going to be converged in the internal loop that finds the potential of the device (i.e. that makes the device neutrally charged)

Returns

  • ni (numpy.ndarray) – spin densities

  • Etot (float) – total energy