triqs.sumk.sumk_discrete.SumkDiscrete

class triqs.sumk.sumk_discrete.SumkDiscrete(dim, gf_struct, orthogonal_basis=True)[source]

Bases: object

Base class for a discrete momentum sum of a lattice Green’s function.

Holds a discretized k-grid (points, weights, hoppings) and computes

\[G(i\omega_n) = \sum_k w_k \bigl[ (i\omega_n + \mu)\,\mathbf{1} - \epsilon_k - \Sigma(k, i\omega_n) \bigr]^{-1}\]

for a triqs.gfs.BlockGf whose blocks have the same matrix size as \(\epsilon_k\). The grid itself is not populated by this class: the arrays are allocated by resize_arrays() and must be filled in by a subclass (typically SumkDiscreteFromLattice).

Parameters:
dimint

Spatial dimension of the underlying Brillouin zone (1, 2 or 3).

gf_structlist

Block structure of the Green’s function: a list of block labels accepted by the G and Sigma arguments of __call__().

orthogonal_basisbool, optional

Whether the orbital basis is orthonormal. Default True. Non- orthogonal bases are not currently exercised by the implementation.

Attributes

GFBlocIndices

Block structure (list of block labels) accepted by __call__() for its G and Sigma arguments.

dim

(int) Spatial dimension of the Brillouin zone.

orthogonal_basis

(bool) Whether the orbital basis is orthonormal.

hopping

(numpy.ndarray) Complex array of shape (nk, n_orbitals, n_orbitals) holding \(\epsilon_k = t(k)\) at each grid point. Allocated by resize_arrays().

bz_points

(numpy.ndarray) Float array of shape (nk, dim) with the k-vectors in the reduced Brillouin zone (components in \((-1/2,\,1/2)\)).

bz_weights

(numpy.ndarray) Float array of shape (nk,) with the integration weights of each k-point. Initialised to a uniform \(1/n_k\).

Methods

__call__(Sigma[, mu, field, epsilon_hat, ...])

Compute the momentum-summed local Green's function.

n_kpts()

Number of k-points on the stored grid.

resize_arrays(nk)

(Re)allocate the k-grid arrays for nk points.

Notes

The k-loop in __call__() is parallelised with MPI via triqs.utility.mpi.slice_array() and the partial results are summed with triqs.utility.mpi.all_reduce(). For typical use, prefer SumkDiscreteFromLattice, which constructs the grid directly from a triqs.lattice.tight_binding.TBLattice.