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.EigenstateSystemThis 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(listof 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 (
intorlist) – 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=Noneto deactivate the test entirely.basis_overlap (collections.abc.Callable) – A function taking the wavevector
k(listof 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.