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:
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
orlist
) – 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.