This is an old revision of the document!


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}}.
  • NAtoms: number of atoms in TB.Atoms
  • Hopping: A list of local and non-local hoppings among spin-orbitals. Each element has the format {spinOrb1, spinOrb1, {a,b,c}, $\{\{t_{\downarrow, \downarrow},t_{\downarrow, \uparrow}\},\{t_{\uparrow, \downarrow}, t_{\uparrow, \uparrow}\}\}$}, where here {a,b,c} is the distance between the two atoms and $\{\{t_{\downarrow, \downarrow},t_{\downarrow, \uparrow}\},\{t_{\uparrow, \downarrow}, t_{\uparrow, \uparrow}\}\}$ defines the hopping matrix elements (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
  • Hk: …

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

  • 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