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:responsefunction:functions:totightbinding [2024/12/23 18:00] Maurits W. Haverkortdocumentation:language_reference:objects:responsefunction:functions:totightbinding [2025/11/20 04:20] (current) – external edit 127.0.0.1
Line 1: Line 1:
 {{indexmenu_n>999}} {{indexmenu_n>999}}
-====== ToTightbinding ======+====== ToTightBinding ======
  
 ### ###
-ResponseFunction.ToTightbinding(G) transforms a response function object to a tight binding object that, when solved, has the response function $G$ as its one particle Green's function.+ResponseFunction.ToTightBinding(G) transforms a response function object to a tight binding object that, when solved, has the response function $G$ as its one particle Green's function.
 ### ###
  
Line 13: Line 13:
  
 ### ###
-In the figure above (from [[https://doi.org/10.1103/PhysRevB.90.085102|PRB 90, 085102]]) we show the different tight binding layouts corresponding to the different response function representations. Panel (a) for tridiagonal, panel (b) for Anderson and panel (c) for natural impurity. The square sites refer to the impurity, the circular to the bath sites. Each site can represent a number of spin-orbitals depending on the BlockSize of the response function. The lines represent hopping matrix elements. The red colour for the different sites refers to the approximate filling of the sites. The tridiagonal representation is nice as each site only interacts with one other site, however it does mean that all sites are partially filled. The Anderson representation is nice as the bath sites do not interact and the bath sites with low (high) energy are larger filled (empty). The natural impurity orbital representation has one bath site that is partially filled, all others are either completely empty or completely filled. Note that chaining between representation is given by a unitary transformation, which can by done by the function [[documentation:language_reference:objects:responsefunction:functions:changetype|ResponseFunction.ChangeType()]].+In the figure above (from [[https://doi.org/10.1103/PhysRevB.90.085102|PRB 90, 085102]]) we show the different tight binding layouts corresponding to the different response function representations. Panel (a) for Anderson, panel (b) for tridiagonal and panel %%(c)%% for natural impurity. The square sites refer to the impurity, the circular to the bath sites. Each site can represent a number of spin-orbitals depending on the BlockSize of the response function. The lines represent hopping matrix elements. The red colour for the different sites refers to the approximate filling of the sites. The tridiagonal representation is nice as each site only interacts with one other site, however it does mean that all sites are partially filled. The Anderson representation is nice as the bath sites do not interact and the bath sites with low (high) energy are larger filled (empty). The natural impurity orbital representation has one bath site that is partially filled, all others are either completely empty or completely filled. Note that chaining between representation is given by a unitary transformation, which can by done by the function [[documentation:language_reference:objects:responsefunction:functions:changetype|ResponseFunction.ChangeType()]].
 ### ###
  
Line 151: Line 151:
 ====== Anderson representation ====== ====== Anderson representation ======
  
-The Green's function in Anderson representation is given as $$ G(\omega,\Gamma) = A_0 + B_0^* \frac{1}{\omega + \mathrm{i}\Gamma/2 - A_1 - \sum_{i=2}^{n} B_{i-1}^{\phantom{\dagger}} \frac{1}{\omega + \mathrm{i}\Gamma/2 - A_{i} } B_{i-1}^{\dagger} } B_0^T $$. This can be represented by a single site that can hop to $n-1$ bath sites. The onsite energy of the site where the particle is created is $A_{1}$. The bath sites have onsite energy $A_{2}$ to $A_{n}$. The hopping between the impurity site and the bath sites is given by $B_{i}$. If $A_i$ is a matrix then this matrix defines the local //crystal fields//. The hopping between site $1$ and $i$ is given by $B_{I-1}$. If $B_i$ is a matrix then the matrix elements define the orbital dependent hopping between sites.+The Green's function in Anderson representation is given as $$ G(\omega,\Gamma) = A_0 + B_0^* \frac{1}{\omega + \mathrm{i}\Gamma/2 - A_1 - \sum_{i=2}^{n} B_{i-1}^{\phantom{\dagger}} \frac{1}{\omega + \mathrm{i}\Gamma/2 - A_{i} } B_{i-1}^{\dagger} } B_0^T $$. This can be represented by a single site that can hop to $n-1$ bath sites. The onsite energy of the site where the particle is created is $A_{1}$. The bath sites have onsite energy $A_{2}$ to $A_{n}$. The hopping between the impurity site and the bath sites is given by $B_{i}$. If $A_i$ is a matrix then this matrix defines the local //crystal fields//. The hopping between the impurity site and the bath site with onsite energy $A_i$ is given by $B_{i-1}$. If $B_i$ is a matrix then the matrix elements define the orbital dependent hopping between sites.
  
 ===== Example ===== ===== Example =====
Line 161: Line 161:
 ==== Input ==== ==== Input ====
 <code Quanty Example.Quanty> <code Quanty Example.Quanty>
 +-- Define a tight binding Hamiltonian for an infinite 1 dimensional chain 
 +HTB = NewTightBinding() 
 +HTB.Name = "1D tight binding" 
 +HTB.Cell = {{1,0,0}, 
 +            {0,1,0}, 
 +            {0,0,1}} 
 +HTB.Atoms = { {"A", {0,0,0},       {{"s", {"0"}}} } } 
 +HTB.Hopping = { {"A.s","A.s",{ 0, 0, 1},{{1}} } , 
 +                {"A.s","A.s",{ 0, 0,-1},{{1}} } } 
 +-- create an operator representing a 10 site supercell with periodic boundary conditions 
 +HCl = CreateClusterHamiltonian(HTB, {"periodic",{{1,0,0},{0,1,0},{0,0,10}}}) 
 +-- calculate the vacuum one-particle Green's function for site 0 
 +vacStr="" 
 +for i=1,HCl.NF do 
 +  vacStr=vacStr.."0" 
 +end 
 +psivac = NewWavefunction(HCl.NF,0,{{vacStr,1}}) 
 +a0Cr = NewOperator(HCl.NF,0,{{ 0,1}}) 
 +S, G = CreateSpectra(HCl,a0Cr,psivac,{{"Tensor",true}}) 
 +-- change the one-particle Green's function to different types 
 +GAnd = ResponseFunction.ChangeType(G,"And"
 +GAnd.Chop(1E-12,{{"deflate",true}}) 
 +GAnd.name = "G in Anderson representation" 
 +print("The one particle Green's function is") 
 +print(GAnd) 
 +-- change the Green's function to a tight binding model 
 +HTB2 = Chop( ResponseFunction.ToTightBinding(GAnd) ) 
 +print("A tight binding Hamiltonian with the same one particle Green's function is given as") 
 +print(HTB2)
 </code> </code>
  
 ==== Result ==== ==== Result ====
 <file Quanty_Output> <file Quanty_Output>
 +The one particle Green's function is
 +{ { { { 0 } } , 
 +  { { 0 } } , 
 +  { { -1.9021130325903 } } , 
 +  { { -1.1755705045849 } } , 
 +  { { 0 } } , 
 +  { { 1.1755705045849 } } , 
 +  { { 1.9021130325903 } } } , 
 +  { { { 1 } } , 
 +  { { 0.27639320225002 } } , 
 +  { { -0.72360679774998 } } , 
 +  { { -0.89442719099992 } } , 
 +  { { -0.72360679774998 } } , 
 +  { { 0.27639320225002 } } } ,
 +  name = G in Anderson representation ,
 +  mu = 0 ,
 +  type = And }
 +A tight binding Hamiltonian with the same one particle Green's function is given as
  
 +Settings of a tight binding model: G in Anderson representation
 +
 +printout of Crystal Structure
 +Units: NoPi (g.r=1)  Angstrom Absolute atom positions
 +Unit cell parameters:
 +a:             INF       0.0000000       0.0000000
 +b:       0.0000000             INF       0.0000000
 +c:       0.0000000       0.0000000             INF
 +Reciprocal latice:
 +a:       0.0000000       0.0000000       0.0000000
 +b:       0.0000000       0.0000000       0.0000000
 +c:       0.0000000       0.0000000       0.0000000
 +Number of atoms 6
 +#   0 | 0 ( 0 ) at position {       0.0000000 ,       0.0000000 ,       0.0000000 }
 +      | x shell with 1 orbitals { 0 }
 +#   1 | 1 ( 0 ) at position {       0.0000000 ,       0.0000000 ,       0.0000000 }
 +      | x shell with 1 orbitals { 0 }
 +#   2 | 2 ( 0 ) at position {       0.0000000 ,       0.0000000 ,       0.0000000 }
 +      | x shell with 1 orbitals { 0 }
 +#   3 | 3 ( 0 ) at position {       0.0000000 ,       0.0000000 ,       0.0000000 }
 +      | x shell with 1 orbitals { 0 }
 +#   4 | 4 ( 0 ) at position {       0.0000000 ,       0.0000000 ,       0.0000000 }
 +      | x shell with 1 orbitals { 0 }
 +#   5 | 5 ( 0 ) at position {       0.0000000 ,       0.0000000 ,       0.0000000 }
 +      | x shell with 1 orbitals { 0 }
 +Containing a total number of 6 orbitals
 +Hopping definitions ( 9 )
 +Hopping from 1 : 1 - x to 1 : 1 - x 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.90211303E+00 
 +
 +Hopping from 2 : 2 - x to 2 : 2 - x 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.17557050E+00 
 +
 +Hopping from 4 : 4 - x to 4 : 4 - x 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.17557050E+00 
 +
 +Hopping from 5 : 5 - x to 5 : 5 - x 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.90211303E+00 
 +
 +Hopping from 0 : 0 - x to 1 : 1 - x 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]  2.76393202E-01 
 +
 +Hopping from 0 : 0 - x to 2 : 2 - x 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] -7.23606798E-01 
 +
 +Hopping from 0 : 0 - x to 3 : 3 - x 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] -8.94427191E-01 
 +
 +Hopping from 0 : 0 - x to 4 : 4 - x 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] -7.23606798E-01 
 +
 +Hopping from 0 : 0 - x to 5 : 5 - x 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]  2.76393202E-01 
 </file> </file>
  
Print/export