Technical foundations of the package¶
Pybandstructure is suited to calculate physical quantities of periodic models. Any periodic model is
characterized by a basis of primitive translation vectors 1
and
, whose integer linear
combinations
(1)¶
span a Bravais lattice. Accordingly, it is important to consider also
the reciprocal lattice in the dual (or reciprocal) space. Indeed, the
propagation wavevector of a general plane wave
has reciprocal length dimension, and
can be conveniently represented in the reciprocal space. The reciprocal
lattice is spanned by integer linear combinations
of
the vectors
and
, which are
obtained from the primitive translation vectors through the relation
.
The Brillouin Zone (BZ) is the region of the reciprocal space with the
property that any point included in the BZ is closer to a chosen lattice
point (say ) than to any other. The energy
eigenvalues of a translational invariant model are labeled by the
crystal wave vector
, which is inside the Brillouin zone.
To numerically compute the electronic states of a periodic model, one
needs the matrix elements of its Hamiltonian for an orthonormal basis
which is explicitly dependent on the crystal wave vector
. Two basis explicitly depending on
are
commonly considered: Bloch sums and plane waves. Concrete examples of
the usage of Bloch sums and plane waves are going to be presented when
discussing the numerical calculation of the energy spectrum of TBG for,
respectively, the tight-binding and continuum model. For the moment let
just assume to have an orthonormal basis
(2)¶
and to know the system’s Hamiltonian matrix elements on
this basis
The matrix whose elements are is Hermitian by
construction, and the spectral theorem assure it has
real
eigenvalues. Let us now call these eigenvalues
and
the corresponding eigenvectors, with
indexing the different eigenvalues. The quantities
and
are routinely
obtained numerically thanks to standard diagonalization algorithms based on the “divide and conquer”
approach, with a computational cost of the order of
floating-point operations. The Bloch eigenstate at crystal momentum
and (band) index
is given simply by
By knowing the matrix elements of a generic operator on
the basis Eq. [eq:NUM_basis],
the matrix elements of the same operator on the Bloch eigenstates are readily obtained
which is just a vector-matrix-vector product. These remarks, albeit being rather trivial linear algebra facts, allow to actually compute the matrix elements appearing in the electrical conductivity Eq. [eq:local_cond_crystal], and density-density response function Eqs. [eqs:density_density_matrix_elements].
- 1
For the sake of simplicity we explicitly work with two-dimensional systems in this Section. Pybandstructure, however, can handle models of any spatial dimension.