Welcome to GfTool’s documentation!

Release:0.9.0+0.gc25f9df
Date:2021-05-09

This reference manual details functions, modules, and objects included in GfTools, describing what they are and what they do.

README

GfTools

master Build status master Coverage master
develop Build status develop Coverage develop

PyPI release Code quality

Collection of commonly used Green’s functions and utilities. The main purpose of this module is to have a tested and thus reliable basis to do numerics. It happened to me too often, that I just made a mistake copying the Green’s function and was then wondering what was wrong with my algorithm. The main use case of GfTools was DMFT and its real space generalization, in particular using CT-QMC algorithms.

Installation

The package is available on PyPI:

$ pip install gftool

Alternatively, it can be installed via GitHub. You can install it using

$ pip install https://github.com/DerWeh/gftools/archive/VERSION.zip

where VERSION can be a release (e.g. 0.5.1) or a branch (e.g. develop). (As always, it is not advised to install it into your system Python, consider using pipenv, venv, conda, pyenv, or similar tools.) Of course you can also clone or fork the project.

If you clone the project, you can locally build the documentation:

$ pip install -r requirements-doc.txt
$ python setup.py build_sphinx

Documentation

The documentation and API is on ReadTheDocs. The documentation of specific branches can also be accessed: master doc, develop doc. There is also a GitHub page: documentation.

Currently the packages main content is

gftool
  • collection of non-interacting Green’s functions and spectral functions, see also the lattice submodule.
  • utility functions like Matsubara frequencies and Fermi functions.
  • reliable calculation of particle numbers via Matsubara sums
cpa/beb
  • Single site approximation to disorder
  • diagonal disorder only (CPA) and diagonal and off-diagonal (BEB)
  • average local Green’s function and component Green’s functions
fourier
  • Fourier transforms from Matsubara frequencies to imaginary time and back, including the handling of high-frequencies moments (especially import for transforms from Matsubara to imaginary time)
  • Laplace transform from real times to complex frequencies
matrix
  • helper for Green’s functions in matrix form
pade
  • analytic continuation via the Padé algorithm

Note on documentation

We try to follow numpy broadcasting rules. Many functions acting on an axis act like generalized ufuncs. In this case, a function can be called for stacked arguments instead of looping over the specific arguments.

We indicate this by argument shapes containing an ellipse e.g. (…) or (…, N). It must be possible for all ellipses to be broadcasted against each other. A good example is the fourier module.

We calculate the Fourier transforms iw2tau for Green’s functions with different on-site energies without looping:

>>> e_onsite = np.array([-0.5, 0, 0.5])
>>> beta = 10
>>> iws = gt.matsubara_frequencies(range(1024), beta=beta)
>>> gf_iw = gt.bethe_gf_z(iws - e_onsite[..., np.newaxis], half_bandwidth=1.0)
>>> gf_iw.shape
(3, 1024)
>>> from gftool import fourier
>>> gf_tau = fourier.iw2tau(gf_iw, beta=beta, moments=np.ones([1]))
>>> gf_tau.shape
(3, 2049)

The moments are automatically broadcasted. We can also explicitly give the second moments:

>>> moments = np.stack([np.ones([3]), e_onsite], axis=-1)
>>> gf_tau = fourier.iw2tau(gf_iw, beta=beta, moments=moments)
>>> gf_tau.shape
(3, 2049)

Indices and tables