Getting started
GfTool’s main content
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 important 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.
Calculates a rational polynomial as interpolation of the data points.
Note: the module is out-dated, so it’s not well documented at a bit awkward to use. Consider using
polepade
instead.
polepade
Analytic continuation via a pole-based variant of the Padé algorithm.
Based on explicit calculation of the pole in a least-squares sense.
Allows including uncertainties as weights.
siam
Basic Green’s functions for the non-interacting Single Impurity Anderson model.
Installation
The package is available on PyPI:
$ pip install gftool
For conda users, GfTool is also available on conda-forge
$ conda install -c conda-forge 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
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)