Tight Binding objects have the following standard properties:
The Units property is a list of three strings with the following components:
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().
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 } }