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.