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-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)... [M_Fermion] 0%| | ETA: 0:21:13 ( 0.55 s/it) [M_Fermion] 100%|█████████████████████████| Time: 0:00:01 ( 0.76 ms/it) Constructing matrix...[DONE] Preparing block matrices for HEOM Liouvillian superoperator (using 4 threads)... [M_Fermion] 0%| | ETA: 0:02:07 (54.47 ms/it) [M_Fermion] 100%|█████████████████████████| Time: 0:00:00 (72.24 μs/it) 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)
[DensityOfStates] 10%|█▊ | ETA: 0:00:10 ( 0.52 s/it) [DensityOfStates] 14%|██▊ | ETA: 0:00:09 ( 0.47 s/it) [DensityOfStates] 19%|███▋ | ETA: 0:00:08 ( 0.46 s/it) [DensityOfStates] 24%|████▌ | ETA: 0:00:07 ( 0.47 s/it) [DensityOfStates] 29%|█████▍ | ETA: 0:00:08 ( 0.52 s/it) [DensityOfStates] 33%|██████▍ | ETA: 0:00:07 ( 0.52 s/it) [DensityOfStates] 38%|███████▎ | ETA: 0:00:07 ( 0.53 s/it) [DensityOfStates] 43%|████████▏ | ETA: 0:00:06 ( 0.53 s/it) [DensityOfStates] 48%|█████████ | ETA: 0:00:06 ( 0.57 s/it) [DensityOfStates] 52%|██████████ | ETA: 0:00:06 ( 0.58 s/it) [DensityOfStates] 57%|██████████▉ | ETA: 0:00:05 ( 0.58 s/it) [DensityOfStates] 62%|███████████▊ | ETA: 0:00:05 ( 0.58 s/it) [DensityOfStates] 67%|████████████▋ | ETA: 0:00:04 ( 0.60 s/it) [DensityOfStates] 71%|█████████████▋ | ETA: 0:00:04 ( 0.59 s/it) [DensityOfStates] 76%|██████████████▌ | ETA: 0:00:03 ( 0.58 s/it) [DensityOfStates] 81%|███████████████▍ | ETA: 0:00:02 ( 0.58 s/it) [DensityOfStates] 86%|████████████████▎ | ETA: 0:00:02 ( 0.57 s/it) [DensityOfStates] 90%|█████████████████▎ | ETA: 0:00:01 ( 0.57 s/it) [DensityOfStates] 95%|██████████████████▏| ETA: 0:00:01 ( 0.57 s/it) [DensityOfStates] 100%|███████████████████| Time: 0:00:11 ( 0.56 s/it)
21-element Vector{Float64}:
0.024341620652868896
0.04465552042382183
0.09077144051563171
0.19298880556746045
0.2935153689446986
0.23367107985908286
0.15864674406914223
0.12379877950510308
0.11772111509216472
0.14524303704728267
⋮
0.11772111509217123
0.1237987795051095
0.15864674406915033
0.23367107985909363
0.29351536894471303
0.19298880556746967
0.09077144051563617
0.044655520423830634
0.024341620652870252
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.12.1 HierarchicalEOM Ver. 2.9.0 QuantumToolbox Ver. 0.38.1 SciMLOperators Ver. 1.9.0 LinearSolve Ver. 3.28.0 OrdinaryDiffEqCore Ver. 1.36.0 System information: ==================================== OS : Linux (x86_64-linux-gnu) CPU : 4 × AMD EPYC 7763 64-Core Processor Memory : 15.621 GB WORD_SIZE: 64 LIBM : libopenlibm LLVM : libLLVM-18.1.7 (ORCJIT, znver3) BLAS : libopenblas64_.so (ilp64) Threads : 4 (on 4 virtual cores) +----------------------------------------------------+ | Please cite HierarchicalEOM.jl in your publication | +----------------------------------------------------+ For your convenience, a bibtex reference can be easily generated using `HierarchicalEOM.cite()`.