Models described by a Hamiltonian matrix

This module contains a class for creating Systems which are described by a Hamiltonian matrix (hm), such as k•p models.

class z2pack.hm.System(hamilton, *, dim=3, pos=None, bands=None, hermitian_tol=1e-06, basis_overlap=None, convention=2, check_periodic=False)[source]

Bases: z2pack.system.EigenstateSystem

This class is used when the system can be explicitly described as a matrix Hamiltonian \(\mathcal{H}(\mathbf{k})\).

Parameters
  • hamilton (collections.abc.Callable) – A function taking the wavevector k (list of length 3) as an input and returning the matrix Hamiltonian.

  • dim (int) – Dimension of the system.

  • pos (list) – Positions of the orbitals w.r.t the reduced unit cell. Per default, all orbitals are put at the origin.

  • bands (int or list) – Specifies either the number of occupied bands (if it is an integer) or which bands should be taken into consideration (if it is a list of indices). If no value is given, half the given bands are considered.

  • hermitian_tol (float) – Maximum absolute value in the difference between the Hamiltonian and its hermitian conjugate. Use hermitian_tol=None to deactivate the test entirely.

  • basis_overlap (collections.abc.Callable) – A function taking the wavevector k (list of length 3) as an input and returning the overlap matrix between the basis vectors w.r.t which the Hamiltonian is defined. If no value is given, the basis is assumed to be orthonormal.

  • convention (int) – The convention used for the Hamiltonian, following the pythtb formalism. Convention 1 means that the eigenvalues of \(\mathcal{H}(\mathbf{k})\) are wave vectors \(\left|\psi_{n\mathbf{k}}\right>\). With convention 2, they are the cell-periodic Bloch functions \(\left|u_{n\mathbf{k}}\right>\).

  • check_periodic (bool) – Evaluate the Hamiltonian at \(\{0, 1\}^d\) as a simple check if it is periodic. Note that this does not work if the Hamiltonian is written such that the eigenstates acquire a phase when being translated by a lattice vector.

get_eig(kpt)[source]

Returns the periodic part of the eigenstates at each of the given k-points. The eigenstates are given as columns in a 2D array.

Parameters

kpt (list) – The list of k-points for which the eigenstates are to be computed.