The single-impurity Anderson model
The investigation of the Kondo effect in single-impurity Anderson model is crucial as it serves both as a valuable testing ground for the theories of the Kondo effect and has the potential to lead to a better understanding of this intrinsic many-body phenomena.
using HierarchicalEOM
import PlotsHamiltonian
We consider a single-level electronic system [which can be populated by a spin-up ($\uparrow$) or spin-down ($\downarrow$) electron] coupled to a fermionic reservoir ($\textrm{f}$). The total Hamiltonian is given by $H_{\textrm{T}}=H_\textrm{s}+H_\textrm{f}+H_\textrm{sf}$, where each terms takes the form
\[\begin{aligned} H_{\textrm{s}} &= \epsilon \left(d^\dagger_\uparrow d_\uparrow + d^\dagger_\downarrow d_\downarrow \right) + U\left(d^\dagger_\uparrow d_\uparrow d^\dagger_\downarrow d_\downarrow\right),\\ H_{\textrm{f}} &=\sum_{\sigma=\uparrow,\downarrow}\sum_{k}\epsilon_{\sigma,k}c_{\sigma,k}^{\dagger}c_{\sigma,k},\\ H_{\textrm{sf}} &=\sum_{\sigma=\uparrow,\downarrow}\sum_{k}g_{k}c_{\sigma,k}^{\dagger}d_{\sigma} + g_{k}^*d_{\sigma}^{\dagger}c_{\sigma,k}. \end{aligned}\]
Here, $d_\uparrow$ $(d_\downarrow)$ annihilates a spin-up (spin-down) electron in the system, $\epsilon$ is the energy of the electron, and $U$ is the Coulomb repulsion energy for double occupation. Furthermore, $c_{\sigma,k}$ $(c_{\sigma,k}^{\dagger})$ annihilates (creates) an electron in the state $k$ (with energy $\epsilon_{\sigma,k}$) of the reservoir.
Now, we can construct the system Hamiltonian
ϵ = -5
U = 10
σm = [0 1; 0 0] ## σ-
σz = [1 0; 0 -1] ## σz
II = [1 0; 0 1] ## identity matrix
# construct the annihilation operator for both spin-up and spin-down
# (utilize Jordan–Wigner transformation)
d_up = kron(σm, II)
d_dn = kron(-1 * σz, σm)
Hsys = ϵ * (d_up' * d_up + d_dn' * d_dn) + U * (d_up' * d_up * d_dn' * d_dn)4×4 Matrix{Int64}:
0 0 0 0
0 -5 0 0
0 0 -5 0
0 0 0 0Construct bath objects
We assume the fermionic reservoir to have a Lorentzian-shaped spectral density, and we utilize the Padé decomposition. Furthermore, the spectral densities depend on the following physical parameters:
- the coupling strength $\Gamma$ between system and reservoirs
- the band-width $W$
- the product of the Boltzmann constant $k$ and the absolute temperature $T$ : $kT$
- the chemical potential $\mu$
- the total number of exponentials for the reservoir $2(N + 1)$
Γ = 2
μ = 0
W = 10
kT = 0.5
N = 5
bath_up = Fermion_Lorentz_Pade(d_up, Γ, μ, W, kT, N)
bath_dn = Fermion_Lorentz_Pade(d_dn, Γ, μ, W, kT, N)
bath_list = [bath_up, bath_dn]2-element Vector{FermionBath}:
FermionBath object with (system) dim = 4 and 12 exponential-expansion terms
FermionBath object with (system) dim = 4 and 12 exponential-expansion terms
Construct HEOMLS matrix
(see also HEOMLS Matrix for Fermionic Baths)
tier = 3
M_even = M_Fermion(Hsys, tier, bath_list)
M_odd = M_Fermion(Hsys, tier, bath_list, ODD)Fermion type HEOMLS matrix acting on odd-parity ADOs
system dim = 4
number of ADOs N = 2325
data =
37200×37200 SparseArrays.SparseMatrixCSC{ComplexF64, Int64} with 249928 stored entries:
⎡⣿⣿⡿⣷⢳⢹⡘⡆⢳⠀⢧⠀⢳⠀⢹⡀⠀⢧⠀⠈⢧⠀⠀⢳⠀⠀⠘⣆⠀⠀⠘⡆⠀⠀⠀⢧⠀⠀⠀⠀⎤
⎢⢿⣯⡿⣯⡏⡇⡇⢻⠈⡇⠸⡄⠘⡆⠀⣇⠀⠸⡄⠀⠸⡄⠀⠈⡇⠀⠀⢸⠀⠀⠀⢹⠀⠀⠀⠸⡄⠀⠀⠀⎥
⎢⣝⣒⠯⠭⠿⣧⣽⠸⡄⢳⠀⣇⠀⢧⠀⢸⠀⠀⣇⠀⠀⡇⠀⠀⢳⠀⠀⠈⡇⠀⠀⠘⡆⠀⠀⠀⣇⠀⠀⠀⎥
⎢⠲⠬⣭⣉⣓⡛⢻⣶⡇⢸⡀⢸⠀⢸⠀⠘⡆⠀⢸⠀⠀⢹⠀⠀⢸⠀⠀⠀⢧⠀⠀⠀⣇⠀⠀⠀⢸⠀⠀⠀⎥
⎢⠙⠒⠦⠤⢤⣉⣉⣉⣿⣿⡅⠘⡆⠘⡆⠀⡇⠀⠘⡆⠀⢸⡀⠀⠈⡇⠀⠀⢸⠀⠀⠀⢸⠀⠀⠀⠘⡆⠀⠀⎥
⎢⠉⠓⠒⠦⠤⢤⣀⣈⣁⠉⣿⣿⡆⠀⡇⠀⢹⠀⠀⡇⠀⠀⡇⠀⠀⣇⠀⠀⠘⡆⠀⠀⠸⡄⠀⠀⠀⡇⠀⠀⎥
⎢⠙⠒⠲⠤⠤⣄⣀⣀⣈⠉⠈⠉⣿⣿⡇⠀⢸⡀⠀⢳⠀⠀⢧⠀⠀⢸⠀⠀⠀⡇⠀⠀⠀⡇⠀⠀⠀⢹⠀⠀⎥
⎢⠓⠲⠤⢤⣀⣀⣀⠀⠈⠉⠉⠉⠉⠉⣿⣿⣿⡁⠀⢸⠀⠀⢸⠀⠀⠸⡄⠀⠀⢳⠀⠀⠀⢧⠀⠀⠀⢸⠀⠀⎥
⎢⠤⣄⣀⡀⠀⠀⠈⠉⠉⠉⠓⠒⠒⠲⠟⠻⠿⣧⣤⣼⠀⠀⠸⡄⠀⠀⡇⠀⠀⢸⠀⠀⠀⢸⠀⠀⠀⠸⡄⠀⎥
⎢⡀⠀⠀⠉⠉⠙⠒⠒⠲⠤⠤⠤⢤⣀⣀⣀⣀⣿⣿⣿⣀⣀⣀⡇⠀⠀⡇⠀⠀⠸⡄⠀⠀⢸⡀⠀⠀⠀⡇⠀⎥
⎢⠉⠓⠒⠦⠤⠤⣄⣀⣀⣀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢸⣿⣿⣿⡇⠀⠀⢹⠀⠀⠀⡇⠀⠀⠀⡇⠀⠀⠀⢧⠀⎥
⎢⢤⣀⡀⠀⠀⠀⠀⠀⠀⠈⠉⠉⠉⠓⠒⠒⠒⠦⠤⠼⠿⠿⠿⣧⣤⣤⣼⠀⠀⠀⣇⠀⠀⠀⣇⠀⠀⠀⢸⠀⎥
⎢⠀⠀⠉⠉⠙⠒⠒⠒⠦⠤⠤⢤⣀⣀⣀⡀⠀⠀⠀⠀⠀⠀⠀⣿⣿⣿⣿⠀⠀⠀⢸⠀⠀⠀⢹⠀⠀⠀⢸⠀⎥
⎢⠲⢤⣀⣀⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠉⠉⠉⠉⠉⠓⠒⠒⠛⠛⠛⢻⣶⣶⣶⣮⠀⠀⠀⢸⠀⠀⠀⠘⡆⎥
⎢⠀⠀⠀⠀⠉⠉⠉⠓⠒⠒⠲⠤⠤⠤⢤⣀⣀⣀⣀⡀⠀⠀⠀⠀⠀⠀⢸⣿⣿⣿⣿⠀⠀⠀⢸⡀⠀⠀⠀⡇⎥
⎢⠲⠤⣄⣀⣀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠉⠉⠉⠉⠙⠒⠒⠊⠛⠛⠛⢻⣶⣶⣶⣶⠁⠀⠀⠀⢧⎥
⎢⠀⠀⠀⠀⠈⠉⠉⠙⠒⠒⠒⠦⠤⠤⠤⣄⣀⣀⣀⣀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢸⣿⣿⣿⣿⡀⠀⠀⠀⢸⎥
⎢⠤⣄⣀⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠈⠉⠉⠉⠙⠓⠒⠒⠒⠒⠲⠜⠛⠛⠻⠿⣧⣤⣤⣤⣜⎥
⎢⠀⠀⠀⠉⠉⠙⠒⠒⠲⠤⠤⠤⣄⣀⣀⣀⣀⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣿⣿⣿⣿⣿⎥
⎣⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠉⠉⠉⠉⠓⠒⠒⠒⠒⠲⠤⠤⠤⠤⣄⣀⣀⣀⢿⣿⣿⣿⣿⎦Solve stationary state of ADOs
(see also Stationary State)
ados_s = SteadyState(M_even)2325 Auxiliary Density Operators with even-parity and (system) dim = 4
Calculate density of states (DOS)
(see also Spectrum)
ωlist = -10:1:10
dos = DensityOfStates(M_odd, ados_s, d_up, ωlist)
Plots.plot(ωlist, dos)This page was generated using Literate.jl.