{{indexmenu_n>999}}
====== 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 //[[documentation:language_reference:functions:NewTightBinding|NewTightBinding()]]//.
===== Example =====
###
Two simple examples (with and without spin):
###
==== Input ====
-- 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 =====
{{indexmenu>.#1|msort}}