Single-impurity Anderson model
Introduction
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. For further detailed discussions of this model (under different parameters) using HierarchicalEOM.jl
, we recommend to read the article (Huang et al. 2023).
Hamiltonian
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 need to build the system Hamiltonian and initial state with the package QuantumToolbox.jl
to construct the operators.
ϵ = -5
U = 10
σm = sigmam() # σ-
σz = sigmaz() # σz
II = qeye(2) # identity matrix
# construct the annihilation operator for both spin-up and spin-down
# (utilize Jordan–Wigner transformation)
d_up = tensor(σm, II)
d_dn = tensor(-1 * σz, σm)
Hsys = ϵ * (d_up' * d_up + d_dn' * d_dn) + U * (d_up' * d_up * d_dn' * d_dn)
Quantum Object: type=Operator dims=[2, 2] size=(4, 4) ishermitian=true
4×4 SparseArrays.SparseMatrixCSC{ComplexF64, Int64} with 2 stored entries:
⋅ ⋅ ⋅ ⋅
⋅ -5.0+0.0im ⋅ ⋅
⋅ ⋅ -5.0+0.0im ⋅
⋅ ⋅ ⋅ ⋅
Construct 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}:
HierarchicalEOM.FermionBath object with 12 terms.
HierarchicalEOM.FermionBath object with 12 terms.
Construct HEOMLS matrix
Preparing block matrices for HEOM Liouvillian superoperator (using 4 threads)...
Progress: [ ] 0.0% --- Elapsed Time: 0h 00m 01s (ETA: 0h 38m 44s)Progress: [==============================] 100.0% --- Elapsed Time: 0h 00m 01s (ETA: 0h 00m 00s)
Constructing matrix...[DONE]
Preparing block matrices for HEOM Liouvillian superoperator (using 4 threads)...
Progress: [==============================] 100.0% --- Elapsed Time: 0h 00m 00s (ETA: 0h 00m 00s)
Constructing matrix...[DONE]
Fermion type HEOMLS matrix acting on odd-parity ADOs
system dims = [2, 2]
number of ADOs N = 2325
data =
MatrixOperator(37200 × 37200)
Solve stationary state of ADOs
Calculate density of states (DOS)
Calculating density of states in frequency domain...
Progress: [========== ] 33.3% --- Elapsed Time: 0h 00m 01s (ETA: 0h 00m 02s)Progress: [===================== ] 71.4% --- Elapsed Time: 0h 00m 02s (ETA: 0h 00m 00s)Progress: [==============================] 100.0% --- Elapsed Time: 0h 00m 02s (ETA: 0h 00m 00s)
[DONE]
21-element Vector{Float64}:
0.02434162065287433
0.04465552042386106
0.09077144051563167
0.19298880556747883
0.29351536894468416
0.2336710798590972
0.15864674406912216
0.12379877950505998
0.11772111509217288
0.1452430370473492
⋮
0.11772111509218791
0.12379877950509523
0.1586467440691224
0.23367107985903765
0.2935153689446749
0.1929888055674517
0.09077144051560802
0.0446555204238425
0.024341620652870988
plot the results
Version Information
__ / \ __ __ __ \__/ __ | | | | / \ / \ | | | | ______ ______ \__/_ _\__/ | |___| |/ __ \ / __ \ / ' \/ \ | ___ | |__) | / \ | _ _ | | | | | ____/| ( ) | / \ / \ | | | | | |____ | \__/ | | | | | | |__| |__|\______) \______/|__| |_| |_| Julia framework for Hierarchical Equations of Motion ≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡ Copyright © QuTiP team 2023 and later. Lead developer : Yi-Te Huang Other developers: Simon Cross, Neill Lambert, Po-Chen Kuo and Shen-Liang Yang Package information: ==================================== Julia Ver. 1.11.5 HierarchicalEOM Ver. 2.5.3 QuantumToolbox Ver. 0.30.1 SciMLOperators Ver. 0.3.14 LinearSolve Ver. 3.10.0 OrdinaryDiffEqCore Ver. 1.23.0 System information: ==================================== OS : Linux (x86_64-linux-gnu) CPU : 4 × AMD EPYC 7763 64-Core Processor Memory : 15.615 GB WORD_SIZE: 64 LIBM : libopenlibm LLVM : libLLVM-16.0.6 (ORCJIT, znver3) BLAS : libopenblas64_.so (ilp64) Threads : 4 (on 4 virtual cores)