Skip to content

Implementation of the Kernel Polynomial Method (KPM) for spectral calculations

License

Notifications You must be signed in to change notification settings

fernandopenaranda/ChebyshevExpansions

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

20 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

ChebyExpansions.jl

DOI

Authors: Fernando Peñaranda, Pablo San-Jose.

Introduction

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.

Practical considerations

  1. The energy resolution is controlled by the ratio , where is the bandwidth of and the expansion order. The complexity for sparse matrices goes like
  2. The error in the stochastic trace estimation , being the number of random kets considered.
  3. For sparse matrices (the usual scenario), the preferred type of h and A matrices should be AbstractSparseMatrix (although it is not required).

Observables

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]...

Exported functions

randomkets, momentaKPM, densityKPM, dosKPM, averageKPM

  1. randomkets generates a collection of random kets for stochastic trace estimation
  2. momentaKPM computes the Kernel Polynomial Method (KPM) momenta corresponding to the spectral densities or thermal average calculations
  3. densityKPM computes the spectral density of some operator A::AbstractMatrix given a hamiltonian matrix h::AbstractMatrix using momentaKPM
  4. dosKPM computes the density of states of h::AbstractMatrix. Note that
  5. averageKPM() Thermal average KPM calculation of A given h. Finite temperature kBT != 0is not yet implemented.

Gallery

Density of states of a graphene flake

System size: D = dim(h) = 1e6 Resource consumption: 28.73 k allocations: 702.757 MiB

References

[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.

About

Implementation of the Kernel Polynomial Method (KPM) for spectral calculations

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages