3
0
mirror of https://github.com/triqs/dft_tools synced 2024-11-01 19:53:45 +01:00
dft_tools/doc/reference/python/lattice/tightbinding_and_example.rst

75 lines
2.9 KiB
ReStructuredText

The BravaisLattice and TightBinding classes: definitions and example
====================================================================
The following example is aimed at demonstrating the use of **TRIQS
Lattice tools**.
BravaisLattice
--------------
A ``BravaisLattice`` is constructed as
``BravaisLattice(units, orbital_positions )`` where
- ``units`` is the list the coordinates (given as triplets) of the
basis vectors :math:`\lbrace \mathbf{e}_i \rbrace _{i=1\dots d}`
(:math:`d` is the dimension)
- ``orbital_positions`` is a dictionary of the atoms forming the basis
of the Bravais Lattice: the key is the name of the atom/orbital, the
value is the triplet of its coordinates.
TightBinding
------------
A tight-binding lattice is defined by the relation:
.. math:: \mathbf{t}_k = \sum_{\mathbf{R}\in \mathrm{BL}} e^{i \mathbf{k}\cdot \mathbf{R}} \mathbf{t}_\mathbf{R}
where :math:`\mathbf{t}_i` is the matrix of the hoppings from a
reference unit cell (:math:`\mathbf{R}=O`\ ) to a unit cell indexed by
:math:`\mathbf{R}`\ . :math:`(\mathbf{t}_\mathbf{R})_{n,m}` is the
tight-binding integral between atom :math:`n` of site :math:`O` and atom
:math:`m` of site :math:`\mathbf{R}`\ , ie
.. math:: (\mathbf{t}_\mathbf{R})_{n,m} \equiv \int d^3\mathbf{r} \phi_n(\mathbf{r})^{*} V(\mathbf{r}) \phi_m(\mathbf{r}-\mathbf{R})
where :math:`\phi_n(\mathbf{r}-\mathbf{R})` is the Wannier orbital of
atom :math:`n` centered at site :math:`\mathbf{R}`\ . The corresponding
class in **Lattice Tools** is the ``TightBinding`` class. Its instances
are constructed as follows:
``TightBinding ( bravais_lattice, hopping_dictionary)`` where
- ``bravais_lattice`` is an instance of ``BravaisLattice``
- ``hopping_dictionary`` is a dictionary of the hoppings
:math:`\mathbf{t}_\mathbf{R}`\ , where the keys correspond to the
coordinates of :math:`\mathbf{R}` in the unitary basis
:math:`\lbrace \mathbf{e}_i \rbrace _{i=1\dots d}`\ , and the values
to the corresponding matrix: :math:`(\mathbf{t}_\mathbf{R})_{n,m}`
energies_on_bz_path
-------------------
The function ``energies_on_bz_path (TB, start, end, n_pts)`` returns a
:math:`n_{at} \times n_{pts}` matrix :math:`E` such that
``E[n,k]``:math:`= \epsilon_n(\mathbf{k})`
where ``k`` indexes the ``n_pts`` :math:`\mathbf{k}`\ -points of the
line joining ``start`` and ``end``, and :math:`\epsilon_n(k)` is the
:math:`n`\ th eigenvector of :math:`t_\mathbf{k}`\ .
Example
-------
The following example illustrates the usage of the above tools for the
case of a two-dimensional, square lattice with various unit cells. We
successively construct three Bravais lattices ``BL_1``, ``BL_2`` and
``BL_4`` with, respectively, 1, 2 and 4 atoms per unit cell, as well as
three tight-binding models with hopping dictionaries ``hop_1``,
``hop_2`` and ``hop_4``
.. plot:: reference/python/lattice/ex2.py
:include-source:
:scale: 70