Source code for pythtb.models.graphene

import numpy as np
from pythtb import TBModel, Lattice


[docs] def graphene(delta: float, t: float) -> TBModel: r"""Graphene tight-binding model. .. versionadded:: 2.0.0 This function creates a graphene tight-binding model with the specified hopping parameters and on-site energy. The model is defined on a 2D honeycomb lattice with two sublattices. The lattice vectors are given by, .. math:: \mathbf{a}_1 = a(1, 0), \quad \mathbf{a}_2 = a\left(\frac{1}{2}, \frac{\sqrt{3}}{2}\right), and the orbital positions are given by, .. math:: \mathbf{\tau}_1 = \frac{1}{3} \mathbf{a}_1 + \frac{1}{3} \mathbf{a}_2, \quad \mathbf{\tau}_2 = \frac{2}{3} \mathbf{a}_1 + \frac{2}{3} \mathbf{a}_2 The second-quantized Hamiltonian can be written as: .. math:: H = \Delta \sum_i n_i + t \sum_{\langle i,j \rangle} (c_i^\dagger c_j + \text{h.c.}) Parameters ---------- delta : float On-site energy difference between the two orbitals. t : float Hopping parameter between nearest neighbor orbitals. Returns ------- TBModel An instance of the model. """ lat_vecs = [[1, 0], [1 / 2, np.sqrt(3) / 2]] orb_vecs = [[1 / 3, 1 / 3], [2 / 3, 2 / 3]] lat = Lattice(lat_vecs, orb_vecs, periodic_dirs=[0, 1]) my_model = TBModel(lattice=lat, spinful=False) my_model.set_onsite([-delta, delta]) my_model.set_hop(t, 0, 1, [0, 0]) my_model.set_hop(t, 1, 0, [1, 0]) my_model.set_hop(t, 1, 0, [0, 1]) return my_model