Authors: Fernando Peñaranda, Pablo San-Jose.
In this package, we implement the Kernel Polynomial Method (KPM) [1] in Julia, an efficient technique to compute spectral and correlation functions using order-N Chebyshev expansions of said quantities.
Diagonalization in KPM is replaced by matrix multiplications and, thus, the resource consumption for a given precision drops to for sparse or for dense matrices, being the matrix dimension.
In this regard, this technique is well suited for large matrix calculations where exact diagonalization becomes too expensive, e.g. when computing the density of states of a large multiorbital system.
In addition, KPM offers some advantages in terms of stability and resource consumption with respect to other recursive methods such as Lanczos-based techniques, see [1] for a comprehensive review.
- The energy resolution is controlled by the ratio , where is the bandwidth of and the expansion order. The complexity for sparse matrices goes like
- The error in the stochastic trace estimation , being the number of random kets considered.
- For sparse matrices (the usual scenario), the preferred type of
h
andA
matrices should beAbstractSparseMatrix
(although it is not required).
Currently, given a hamiltonian matrix, and a generic operator the following methods are implemented:
- Momenta computation corresponding to traces over the product of Chebyshev polynomials of and : .
- Calculation of spectral densities of an operator .
- Calculation of thermal averages, i.e. .
Although, not currently implemented, KPM momenta from momentaKPM
can be used as the basis for a Chebyshev expansion of many interesting functions and observables such as correlation (Green's) functions, optical conductivities[1], equilibrium supercurrents[2]...
randomkets, momentaKPM, densityKPM, dosKPM, averageKPM
randomkets
generates a collection of random kets for stochastic trace estimationmomentaKPM
computes the Kernel Polynomial Method (KPM) momenta corresponding to the spectral densities or thermal average calculationsdensityKPM
computes the spectral density of some operatorA::AbstractMatrix
given a hamiltonian matrixh::AbstractMatrix
usingmomentaKPM
dosKPM
computes the density of states ofh::AbstractMatrix
. Note thataverageKPM()
Thermal average KPM calculation ofA
givenh
. Finite temperaturekBT != 0
is not yet implemented.
System size: D = dim(h) = 1e6 Resource consumption: 28.73 k allocations: 702.757 MiB
[1] A. Weiße, G. Wellein, A. Alvermann, and H. Fehske, The kernel polynomial method, Reviews of Modern Physics 78, 275 (2006).
[2] M. Irfan, S. R.Kuppuswamy, D. Varjas, P. M. Perez-Piskunow, R. Skolasinski, M. Wimmer, & A. R. Akhmerov, (2019). Hybrid kernel polynomial method, arXiv: arXiv:1909.09649v2.