Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revisionPrevious revision
Next revision
Previous revision
documentation:language_reference:objects:tightbinding:properties:start [2024/09/16 18:16] Sina Shokridocumentation:language_reference:objects:tightbinding:properties:start [2024/09/18 18:08] (current) Sina Shokri
Line 7: Line 7:
   * 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.   * 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.   * 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}}. +  * 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//   * NAtoms: number of atoms in //TB.Atoms//
-  * Hopping: A list of local and non-local hoppings among spin-orbitals. Each element has the format {spinOrb1spinOrb1, {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'} $) +  * Hopping: A list of local and non-local hoppings among atomic shells. Each element has the format {Atom1.Shell_iAtom2.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: {“2Pi”“Angstrom”“Absolute”}  +  * Units: {Units[1]Units[2]Units[3](see below) 
-  * NF: number of fermionic modes +  * NF: number of fermionic modes 
-  * Hk: ...+
  
-The //Units// property is a list of three strings with the following contributions+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[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[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")   * Units[3]: Selects "Absolute" or "Relative" for the definition of atom positions. (standard value "Absolute")
  
-Once Tight Binding object is createdall properties can be assigned except //NF//, which is determined by the number of orbitals defined in //Atoms//. See also //[[documentation:language_reference:functions:NewTightBinding|NewTightBinding()]]//.+For creating 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 ===== ===== Example =====
Line 39: Line 38:
             {0,0,1}}             {0,0,1}}
 HTB.Atoms = { {"A", {0,0,0},       {{"p", {"0"}}}}, HTB.Atoms = { {"A", {0,0,0},       {{"p", {"0"}}}},
-              {"B", {sqrt(3),1,0}, {{"p", {"0"}}}}}+                {"B", {sqrt(3),1,0}, {{"p", {"0"}}}}}
 HTB.Hopping = {{"A.p","A.p",        0,   0,0},{{-dAB/2}}}, HTB.Hopping = {{"A.p","A.p",        0,   0,0},{{-dAB/2}}},
-               {"B.p","B.p",        0,   0,0},{{ dAB/2}}}, +                {"B.p","B.p",        0,   0,0},{{ dAB/2}}}, 
-               {"A.p","B.p",        0,   1,0},{{ tnn  }}}, +                {"A.p","B.p",        0,   1,0},{{ tnn  }}}, 
-               {"B.p","A.p",        0,  -1,0},{{ tnn  }}}, +                {"B.p","A.p",        0,  -1,0},{{ tnn  }}}, 
-               {"A.p","B.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  }}}, +                {"B.p","A.p",{-sqrt(3/4), 1/2,0},{{ tnn  }}}, 
-               {"A.p","B.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  }}} +                {"B.p","A.p",{ sqrt(3/4), 1/2,0},{{ tnn  }}} 
-              +                
 +    
 print("HTB.Name:") print("HTB.Name:")
 print(HTB.Name) print(HTB.Name)
 +    
 print("\nHTB.Cell:") print("\nHTB.Cell:")
 print(HTB.Cell) print(HTB.Cell)
 +    
 print("\nHTB.Atoms:") print("\nHTB.Atoms:")
 print(HTB.Atoms) print(HTB.Atoms)
  
 +print("\nHTB.NAtoms:")
 +print(HTB.NAtoms)
 +    
 print("\nHTB.Hopping:") print("\nHTB.Hopping:")
 print(HTB.Hopping) print(HTB.Hopping)
 +    
 print("\nHTB.Units:") print("\nHTB.Units:")
 print(HTB.Units) print(HTB.Units)
 +    
 print("\nHTB.NF:") print("\nHTB.NF:")
 print(HTB.NF) print(HTB.NF)
  
 +print("\nHTB.Hk:")
 +print(HTB.Hk)
 +
 +print("\nHTB.ReciprocalCell:")
 +print(HTB.ReciprocalCell)                              
 +    
 -- create the tight binding Hamiltonian -- create the tight binding Hamiltonian
 HTB = NewTightBinding() HTB = NewTightBinding()
Line 75: Line 83:
             {0,0,1}}             {0,0,1}}
 HTB.Atoms = { {"A", {0,0,0},       {{"p", {"^{dn}","^{up}"}}}}, HTB.Atoms = { {"A", {0,0,0},       {{"p", {"^{dn}","^{up}"}}}},
-              {"B", {sqrt(3),1,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}}}, 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}}}, +                {"B.p","B.p",        0,   0,0},{{-dAB/2, 0}, {0, -dAB/2}}}, 
-               {"A.p","B.p",        0,   1,0},{{ tnn, 0  }, { 0, tnn  }}}, +                {"A.p","B.p",        0,   1,0},{{ tnn, 0  }, { 0, tnn  }}}, 
-               {"B.p","A.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  }}}, +                {"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  }}}, +                {"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  }}}, +                {"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  }}} +                {"B.p","A.p",{ sqrt(3/4), 1/2,0},{{ tnn, 0  }, { 0, tnn  }}} 
-              +                
 +    
 print("HTB.Name:") print("HTB.Name:")
 print(HTB.Name) print(HTB.Name)
 +    
 print("\nHTB.Cell:") print("\nHTB.Cell:")
 print(HTB.Cell) print(HTB.Cell)
 +    
 print("\nHTB.Atoms:") print("\nHTB.Atoms:")
 print(HTB.Atoms) print(HTB.Atoms)
  
 +print("\nHTB.NAtoms:")
 +print(HTB.NAtoms)
 +    
 print("\nHTB.Hopping:") print("\nHTB.Hopping:")
 print(HTB.Hopping) print(HTB.Hopping)
 +    
 print("\nHTB.Units:") print("\nHTB.Units:")
 print(HTB.Units) print(HTB.Units)
 +    
 print("\nHTB.NF:") print("\nHTB.NF:")
 print(HTB.NF) print(HTB.NF)
 +
 +print("\nHTB.Hk:")
 +print(HTB.Hk)
 +
 +print("\nHTB.ReciprocalCell:")
 +print(HTB.ReciprocalCell)
 </code> </code>
  
Line 124: Line 141:
   { { p ,    { { p , 
   { 0 } } } } }   { 0 } } } } }
 +
 +HTB.NAtoms:
 +2
  
 HTB.Hopping: HTB.Hopping:
Line 133: Line 153:
 HTB.NF: HTB.NF:
 2 2
 +
 +HTB.Hk:
 +Hk
 +
 +HTB.ReciprocalCell:
 +{ { 3.6275987284684 , -2.0943951023932 , 0 } , 
 +  { 0 , 4.1887902047864 , 0 } , 
 +  { 0 , 0 , 6.2831853071796 } }
 HTB.Name: HTB.Name:
 dichalcogenide tight binding (with spin) dichalcogenide tight binding (with spin)
Line 150: Line 178:
   { { p ,    { { p , 
   { ^{dn} , ^{up} } } } } }   { ^{dn} , ^{up} } } } } }
 +
 +HTB.NAtoms:
 +2
  
 HTB.Hopping: HTB.Hopping:
Line 159: Line 190:
 HTB.NF: HTB.NF:
 4 4
 +
 +HTB.Hk:
 +Hk
 +
 +HTB.ReciprocalCell:
 +{ { 3.6275987284684 , -2.0943951023932 , 0 } , 
 +  { 0 , 4.1887902047864 , 0 } , 
 +  { 0 , 0 , 6.2831853071796 } }
 </file> </file>
  
Print/export