Welcome to GfTool’s documentation!¶
Release: | 0.9.1 |
---|---|
Date: | 2021-06-01 |
This reference manual details functions, modules, and objects included in GfTools, describing what they are and what they do.
README¶
GfTools¶
master | ||
develop |
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)