TB.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'} $)
Two simple examples (with and without spin):
-- 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)
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 } }