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:functions:newtightbinding [2024/08/29 17:51] Micheangelo Tagliavinidocumentation:language_reference:functions:newtightbinding [2025/01/21 08:28] (current) Maurits W. Haverkort
Line 2: Line 2:
  
  
-### NewTightBinding() +//NewTightBinding()// initiates a Tight Binding object with the following standard properties:
-`NewTightBinding()` initiates a Tight Binding object with the following standard properties: +
-*Name*: `""` (empty string) +
-*Cell*: `{a,b,c}` with `a`, `b`, `c` as random vectors. +
-*Atoms*: `{}` +
-*Units*: `{"2Pi", "Angstrom", "Absolute"}` +
-*NF*: `0` (number of orbitals defined in Atoms)+
  
-### Units Property +  * Name"" (empty string) 
-The `Units` property has the following options+  * Cell{a,b,c} with ab, c as zero vectors
-- `Units[1]`Sets the scaling for the reciprocal latticee.g.`2Pi` for `"2Pi"` or `1` for `"NoPi"`+  * Atoms: {} 
-- `Units[2]`Defines the unit of measurement as `"Angstrom"``"Bohr"`or `"nanometer"`. +  * Units: {"2Pi", "Angstrom", "Absolute" 
-- `Units[3]`Selects `"Absolute"` or `"Relative"` for the definition of atom positions.+  * Hopping{}
  
-Once Tight Binding object is created, all properties can be assigned except `.NF`which is determined by the number of orbitals defined in `Atoms`.+  * The Name is string one can choose for printing 
 +  * The Cell is the unit cell in real-space ($R$) used for the calculation. The units are defined in units and can be AngstromBohrRadius or nanometer. The Reciprocal cell ($G$) is calculated automatically from the real-space cell and we can define its units such that $R \cdot G = 2 \pi$ or $R \cdot G = 1$. 
 +  * Atoms is a list defining the atom names, positions, shell names per atom and orbital names per shell. Atom positions can be given in absolute positions (same units as the Cell in Cartesian coordinates) or using the Cell parameters, as defined in units. 
 +  * The Hopping contains a table defining the hopping between shells at different atoms and cells.
  
-## Example+//NewTightBinding()// defines an empty tight binding object, its properties can be set by setting the properties of the created object.  
 +For more details see the [[documentation:language_reference:objects:tightbinding:properties:start|properties]] of tight-binding objects, or the example below.
  
-### Input +Besides defining TightBinding objects by hand they can be generated from the output of DFT calculation (see, for example, //[[documentation:language_reference:functions:TightBindingDefFromDresdenFPLO|TightBindingDefFromDresdenFPLO()]]//). 
-```lua + 
--- Create the tight binding Hamiltonian+ 
 +===== Example ===== 
 + 
 + 
 +The following example creates a minimal tight binding object for a Dichalcogenide lattice. The parameters are not set to represent a real material. 
 + 
 +==== Input ==== 
 + 
 +<code Quanty Example.Quanty> 
 +-- set parameters 
 +dAB = 0.2 
 +tnn = 1.1 
 +-- create the tight binding Hamiltonian
 HTB = NewTightBinding() 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("Printing the TB Object")+print("Tight-binding object:")
 print(HTB) print(HTB)
 + 
 +print("create a periodic cluster Hamiltonian with 4 unit-cells along the z-axis:")
 +HCl = CreateClusterHamiltonian(HTB, {"periodic", {{1,0,0},{0,1,0},{0,0,4}}})
 +print(HCl)
 +</code>
 +###
  
-print("Callable Properties:"+==== Output ====
-print("Cell:", HTB.Cell) +
-print("Units:", HTB.Units) +
-print("Atoms:", HTB.Atoms) +
-print("Hopping:", HTB.Hopping) +
-print("NF:", HTB.NF)+
  
-t1 = 1 +<file Quanty_Output> 
-t2 = 2+Tight-binding object:
  
-HTB.Name = "My wishes for dinner"+Settings of a tight binding model: dichalcogenide tight binding
  
-HTB.Units = {"2Pi""Bohr""Relative"}+printout of Crystal Structure 
 +Units: 2Pi (g.r=2Pi) Angstrom Absolute atom positions 
 +Unit cell parameters: 
 +a:       1.7320508       0.0000000       0.0000000 
 +b:       0.8660254       1.5000000       0.0000000 
 +c:       0.0000000       0.0000000       1.0000000 
 +Reciprocal latice: 
 +a:       3.6275987      -2.0943951       0.0000000 
 +b:       0.0000000       4.1887902       0.0000000 
 +c:       0.0000000       0.0000000       6.2831853 
 +Number of atoms 2 
 +#   0 | A ( 0 ) at position {       0.0000000       0.0000000       0.0000000 } 
 +      | p shell with 1 orbitals { 0 } 
 +#   1 | B ( 5 ) at position {       1.7320508 ,       1.0000000 ,       0.0000000 } 
 +      | p shell with 1 orbitals { 0 } 
 +Containing a total number of 2 orbitals 
 +Hopping definitions ( 8 ) 
 +Hopping from 0 : A - p to 0 : A - p with translation vector in unit cells: { 0 , 0 , 0 } ({ 0.00000000E+00  0.00000000E+00  0.00000000E+00 }) 
 +Matrix = 
 +Real Part of Matrix with dimensions [Ni=1][Nj=1] ([Rows][Collums]) 
 +          [           0] 
 +[     0] -1.00000000E-01 
  
-HTB.Cell = { +Hopping from 1 : B - p to 1 : B - p with translation vector in unit cells: , 0 , 0 } ({ 0.00000000E+00  0.00000000E+00  0.00000000E+00 }) 
-    {1, 0, 0}+Matrix = 
-    {0, 1, 0}, +Real Part of Matrix with dimensions [Ni=1][Nj=1] ([Rows][Collums]) 
-    {001+          [           0
-}+[     0]  1.00000000E-01 
  
-HTB.Atoms = { +Hopping from 0 : A - p to 1 : B - p with translation vector in unit cells: -1 , 0 , 0 } ({ 0.00000000E+00  1.00000000E+00  0.00000000E+00 }) 
-    {"pizza", {0, 0, 0}{{"Margherita", {"0"}}}}, +Matrix = 
-    {"pasta", {0, 10}, {{"Pesto", {"0"}}, {"Carbonara", {"0"}}}} +Real Part of Matrix with dimensions [Ni=1][Nj=1] ([Rows][Collums]) 
-}+          [           0
 +[     0]  1.10000000E+00 
  
-HTB.Hopping { +Hopping from 1 : B - p to 0 : A - p with translation vector in unit cells: , 0 , 0 } (0.00000000E+00 -1.00000000E+00  0.00000000E+00 }) 
-    {"pizza.Margherita""pasta.Pesto", {0, 1, 0}{{t1}}}, +Matrix = 
-    {"pasta.Pesto", "pizza.Margherita", {0, -10}, {{t1}}}, +Real Part of Matrix with dimensions [Ni=1][Nj=1] ([Rows][Collums]) 
-    {"pizza.Margherita", "pasta.Carbonara", {0, 10}, {{t2}}}, +          [           0] 
-    {"pasta.Carbonara", "pizza.Margherita", {0, -1, 0}, {{t2}}} +[     0]  1.10000000E+00 
-}+
  
 +Hopping from 0 : A - p to 1 : B - p with translation vector in unit cells: { 0 , -1 , 0 } ({ 8.66025404E-01 -5.00000000E-01  0.00000000E+00 })
 +Matrix =
 +Real Part of Matrix with dimensions [Ni=1][Nj=1] ([Rows][Collums])
 +          [           0]
 +[     0]  1.10000000E+00 
  
-===== Input =====+Hopping from 1 : B - p to 0 : A - p with translation vector in unit cells: { 0 , 1 , 0 } ({-8.66025404E-01  5.00000000E-01  0.00000000E+00 }) 
 +Matrix = 
 +Real Part of Matrix with dimensions [Ni=1][Nj=1] ([Rows][Collums]) 
 +          [           0] 
 +[     0]  1.10000000E+00 
  
-  * bla Integer +Hopping from 0 A - p to 1 B - p with translation vector in unit cells: { -1 , -1 , 0 } ({-8.66025404E-01 -5.00000000E-01  0.00000000E+00 }) 
-  * bla2 : Real+Matrix = 
 +Real Part of Matrix with dimensions [Ni=1][Nj=1] ([Rows][Collums]) 
 +          [           0] 
 +[     0]  1.10000000E+00 
  
-===== Output =====+Hopping from 1 : B - p to 0 : A - p with translation vector in unit cells: { 1 , 1 , 0 } ({ 8.66025404E-01  5.00000000E-01  0.00000000E+00 }) 
 +Matrix = 
 +Real Part of Matrix with dimensions [Ni=1][Nj=1] ([Rows][Collums]) 
 +          [           0] 
 +[     0]  1.10000000E+00 
  
-  * bla : real 
  
-===== Example ===== 
  
-### +create a periodic cluster Hamiltonian with 4 unit-cells along the z-axis:
-description text +
-###+
  
-==== Input ==== +Operator: Operator 
-<code Quanty Example.Quanty> +QComplex                  0 (Real==0 or Complex==1 or Mixed==2) 
--- some example code +MaxLength                 2 (largest number of product of lader operators) 
-</code>+NFermionic modes =          8 (Number of fermionic modes (site, spin, orbital, ...) in the one particle basis) 
 +NBosonic modes            0 (Number of bosonic modes (phonon modes, ...) in the one particle basis)
  
-==== Result ==== +Operator of Length   2 
-<file Quanty_Output> +QComplex               0 (Real==0 or Complex==1) 
-text produced as output+N                     16 (number of operators of length   2) 
 +C  0 A  0 | -1.00000000000000E-01 
 +C  1 A  1 |  1.00000000000000E-01 
 +C  0 A  1 |  3.30000000000000E+00 
 +C  1 A  0 |  3.30000000000000E+00 
 +C  2 A  2 | -1.00000000000000E-01 
 +C  3 A  3 |  1.00000000000000E-01 
 +C  2 A  3 |  3.30000000000000E+00 
 +C  3 A  2 |  3.30000000000000E+00 
 +C  4 A  4 | -1.00000000000000E-01 
 +C  5 A  5 |  1.00000000000000E-01 
 +C  4 A  5 |  3.30000000000000E+00 
 +C  5 A  4 |  3.30000000000000E+00 
 +C  6 A  6 | -1.00000000000000E-01 
 +C  7 A  7 |  1.00000000000000E-01 
 +C  6 A  7 |  3.30000000000000E+00 
 +C  7 A  6 |  3.30000000000000E+00
 </file> </file>
  
Print/export