Properties

Tight Binding objects have the following standard properties:

  • Name: a string
  • Cell: {a,b,c} defining the unit cell of the system. a, b and c are vectors of length 3 and define the uni-cell vectors.
  • ReciprocalCell: {a,b,c} the reciprocal cell, satisfying the condition $\vec{r}\cdot\vec{g}=2\pi$, where $\vec{r}$ are the unit-cell vectors and $\vec{g}$ are the reciprocal-cell vectors.
  • Atoms: a list of atoms, their positions within the unit cell and their atomic shells (spin-orbitals). Each element has the format {Atom.Name, Atom.Position, {Atom.Shells}}. The Atom.Shells can be a list of atomic shell with arbitrary number of orbitals, including or not including spin. For example: {“H”, {0,0,0}, { {“s”, {“^{dn}”, “^{up}”}, {“p”, {“_y^{dn}”, “_y^{up}”, “_z^{dn}”, “_z^{up}”, “_x^{dn}”, “_x^{up}”} } } } } .
  • NAtoms: number of atoms in TB.Atoms
  • Hopping: A list of local and non-local hoppings among atomic shells. Each element has the format {Atom1.Shell_i, Atom2.Shell_j, {a,b,c}, T}, where here {a,b,c} is the distance between the two atoms and T is an array defines the hopping matrix elements among the spin-orbitals of Atom1.Shell_i and Atom1.Shell_j . (in second-quantization language: $ \Sigma t_{\sigma, \sigma'} a^{\dagger}_{\sigma} a_{\sigma'} $)
  • Units: {Units[1], Units[2], Units[3]} (see below)
  • NF: number of fermionic modes

The Units property is a list of three strings with the following components:

  • Units[1]: Sets the scaling for the reciprocal lattice, e.g., $\vec{r}\cdot\vec{g}=2\pi$ for “2Pi” or $\vec{r}\cdot\vec{g}=1$ for “NoPi”. (standard value “2Pi”)
  • Units[2]: Defines the unit of measurement as “Angstrom”, “Bohr”, or “nanometer”. (standard value “Angstrom”)
  • Units[3]: Selects “Absolute” or “Relative” for the definition of atom positions. (standard value “Absolute”)

For creating a tight-binding object, one needs to define at least the properties TB.Cell, TB.Atoms and TB.Hopping. The rest of the properties will be either automatically calculated or will be set with standard values (TB.Name and TB.Units). See also NewTightBinding().

Example

Two simple examples (with and without spin):

Input

Example.Quanty
-- set parameters
dAB = 0.2
tnn = 1.1
-- create the tight binding Hamiltonian
HTB = NewTightBinding()
HTB.Name = "dichalcogenide tight binding"
HTB.Cell = {{sqrt(3),0,0},
            {sqrt(3/4),3/2,0},
            {0,0,1}}
HTB.Atoms = { {"A", {0,0,0},       {{"p", {"0"}}}},
                {"B", {sqrt(3),1,0}, {{"p", {"0"}}}}}
HTB.Hopping = {{"A.p","A.p",{         0,   0,0},{{-dAB/2}}},
                {"B.p","B.p",{         0,   0,0},{{ dAB/2}}},
                {"A.p","B.p",{         0,   1,0},{{ tnn  }}},
                {"B.p","A.p",{         0,  -1,0},{{ tnn  }}},
                {"A.p","B.p",{ sqrt(3/4),-1/2,0},{{ tnn  }}},
                {"B.p","A.p",{-sqrt(3/4), 1/2,0},{{ tnn  }}},
                {"A.p","B.p",{-sqrt(3/4),-1/2,0},{{ tnn  }}},
                {"B.p","A.p",{ sqrt(3/4), 1/2,0},{{ tnn  }}}
                }
 
print("HTB.Name:")
print(HTB.Name)
 
print("\nHTB.Cell:")
print(HTB.Cell)
 
print("\nHTB.Atoms:")
print(HTB.Atoms)
 
print("\nHTB.NAtoms:")
print(HTB.NAtoms)
 
print("\nHTB.Hopping:")
print(HTB.Hopping)
 
print("\nHTB.Units:")
print(HTB.Units)
 
print("\nHTB.NF:")
print(HTB.NF)
 
print("\nHTB.Hk:")
print(HTB.Hk)
 
print("\nHTB.ReciprocalCell:")
print(HTB.ReciprocalCell)                              
 
-- create the tight binding Hamiltonian
HTB = NewTightBinding()
HTB.Name = "dichalcogenide tight binding (with spin)"
HTB.Cell = {{sqrt(3),0,0},
            {sqrt(3/4),3/2,0},
            {0,0,1}}
HTB.Atoms = { {"A", {0,0,0},       {{"p", {"^{dn}","^{up}"}}}},
                {"B", {sqrt(3),1,0}, {{"p", {"^{dn}","^{up}"}}}}}
HTB.Hopping = {{"A.p","A.p",{         0,   0,0},{{-dAB/2, 0}, {0, -dAB/2}}},
                {"B.p","B.p",{         0,   0,0},{{-dAB/2, 0}, {0, -dAB/2}}},
                {"A.p","B.p",{         0,   1,0},{{ tnn, 0  }, { 0, tnn  }}},
                {"B.p","A.p",{         0,  -1,0},{{ tnn, 0  }, { 0, tnn  }}},
                {"A.p","B.p",{ sqrt(3/4),-1/2,0},{{ tnn, 0  }, { 0, tnn  }}},
                {"B.p","A.p",{-sqrt(3/4), 1/2,0},{{ tnn, 0  }, { 0, tnn  }}},
                {"A.p","B.p",{-sqrt(3/4),-1/2,0},{{ tnn, 0  }, { 0, tnn  }}},
                {"B.p","A.p",{ sqrt(3/4), 1/2,0},{{ tnn, 0  }, { 0, tnn  }}}
                }
 
print("HTB.Name:")
print(HTB.Name)
 
print("\nHTB.Cell:")
print(HTB.Cell)
 
print("\nHTB.Atoms:")
print(HTB.Atoms)
 
print("\nHTB.NAtoms:")
print(HTB.NAtoms)
 
print("\nHTB.Hopping:")
print(HTB.Hopping)
 
print("\nHTB.Units:")
print(HTB.Units)
 
print("\nHTB.NF:")
print(HTB.NF)
 
print("\nHTB.Hk:")
print(HTB.Hk)
 
print("\nHTB.ReciprocalCell:")
print(HTB.ReciprocalCell)

Result

HTB.Name:
dichalcogenide tight binding
 
HTB.Cell:
{ { 1.7320508075689 , 0 , 0 } , 
  { 0.86602540378444 , 1.5 , 0 } , 
  { 0 , 0 , 1 } }
 
HTB.Atoms:
{ { A , 
  { 0 , 0 , 0 } , 
  { { p , 
  { 0 } } } } , 
  { B , 
  { 1.7320508075689 , 1 , 0 } , 
  { { p , 
  { 0 } } } } }
 
HTB.NAtoms:
2
 
HTB.Hopping:
Hopping
 
HTB.Units:
{ 2Pi , Angstrom , Absolute }
 
HTB.NF:
2
 
HTB.Hk:
Hk
 
HTB.ReciprocalCell:
{ { 3.6275987284684 , -2.0943951023932 , 0 } , 
  { 0 , 4.1887902047864 , 0 } , 
  { 0 , 0 , 6.2831853071796 } }
HTB.Name:
dichalcogenide tight binding (with spin)
 
HTB.Cell:
{ { 1.7320508075689 , 0 , 0 } , 
  { 0.86602540378444 , 1.5 , 0 } , 
  { 0 , 0 , 1 } }
 
HTB.Atoms:
{ { A , 
  { 0 , 0 , 0 } , 
  { { p , 
  { ^{dn} , ^{up} } } } } , 
  { B , 
  { 1.7320508075689 , 1 , 0 } , 
  { { p , 
  { ^{dn} , ^{up} } } } } }
 
HTB.NAtoms:
2
 
HTB.Hopping:
Hopping
 
HTB.Units:
{ 2Pi , Angstrom , Absolute }
 
HTB.NF:
4
 
HTB.Hk:
Hk
 
HTB.ReciprocalCell:
{ { 3.6275987284684 , -2.0943951023932 , 0 } , 
  { 0 , 4.1887902047864 , 0 } , 
  { 0 , 0 , 6.2831853071796 } }

Table of contents

Print/export