Classes#
For now, there is the LinearChain class including both the model and NEGF solver routines. This will be in future separated into a generic System class, with child classes of different specific systems (like LinearChain).
- class fuNEGF.models.LinearChain(N=100, eps_0=0, t=1, a=1, H_impurity=None, make_H_periodic=False, plot_dispersion=True)#
Bases:
object
Linear chain tight-binding model with NEGF solver. Include arbitrary on-site potential impurities.
- G_R_fun(k, E, Sigma_0=None)#
The retarded Green’s function for a given k and energy E.
- Parameters:
k (float) – the Bloch wave vector.
E (float) – Energy in eV.
Sigma_0 (N-by-N numpy array, optional) – The internal self-energy. Defaults to None.
- Returns:
the retarded Green’s function in matrix form.
- Return type:
N-by-N numpy array
- Greens_functions_solver(k, E, D0_phase, D0_phase_momentum, N_sc=70)#
- Self-consistent iterative NEGF solver in case where the phase and momentum relaxation
are defined in terms of the Green’s functions themselves (see Datta’s Lessons from Nanoelectronics B).
- Parameters:
k (float) – the Bloch wave vector.
E (float) – Energy in eV.
D0_phase (float) – The phase relaxation parameter.
D0_phase_momentum (float) – The phase+momentum relaxation parameter.
N_sc (int, optional) – Number of self-consistent iteration steps: typically a value around 50 should be enough. Defaults to 70.
- Returns:
- the self-consistently solved Green’s functions (retarded, advanced, electron occupation), the internal self-energy Sigma_0,
and the in-scattering self-energy Sigma_in_0.
- Return type:
N-by-N numpy arrays
- add_H_impurity(H_impurity, plot_dispersion=False)#
Add an impurity Hamiltonian.
- Parameters:
H_impurity (N-by-N numpy array) – The impurity Hamiltonian (typically an Anderson disorder).
plot_dispersion (bool, optional) – Plot the numerical and analytical dispersion. Defaults to False.
- compare_dispersion_analytic_vs_numerical()#
Plots a comparison of the analytical and numerical dispersion.
- construct_H(make_H_periodic=False, print_H_matrix=False)#
Construct the linear chain tight-binding Hamiltonian.
- Parameters:
make_H_periodic (bool, optional) – If True, the Hamiltonian will be made periodic by adding t hopping to the [N-1, 0] and [0, N-1] sites. Defaults to False.
print_H_matrix (bool, optional) – If True, prints the Hamiltonian matrix. Defaults to False.
- plot_occupation(D0_phase, D0_phase_momentum, N_sc=70, E_to_plot=0, show=True, ax=None)#
- Plot the occupation f(j) of the sites j in the chain, which in the case f1=1, f2=0 corresponds to the
electrochemical potential mu(j) = qV f(j), where a potential V is imagined to be applied across the device and q is the electron charge.
- Parameters:
D0_phase (float) – The phase relaxation parameter.
D0_phase_momentum (float) – The phase+momentum relaxation parameter.
N_sc (int, optional) – Number of self-consistent iteration steps: typically a value around 50 should be enough. Defaults to 70. N_sc=1 effectively turns off the phase/momentum relaxation.
E_to_plot (int, optional) – The energy at which to plot the occupation. Defaults to 0.
show (bool, optional) – If True, the plot will be shown. Defaults to True.
ax (_type_, optional) – If provided, the figure will be plotted to ax. Defaults to None.
- plot_onsite_energy(ax=None)#
Plot the on-site energy as horizontal lines.
- Parameters:
ax (matplotlib.pyplot axis object, optional) – If provided, the figure will be plotted to ax. Defaults to None.
- plot_transmission(ax=None)#
Plots the transmission function T(E) given by T = Tr[Gamma_1 G_R Gamma_2 G_A].
- Parameters:
ax (matplotlib.pyplot axis object, optional) – If provided, the figure will be plotted to ax. Defaults to None.