Table of Contents
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.
Depending on the representation used for the response function (Tridiagonal, Anderson, or Natural impurity orbitals) one finds a different layout of the tight binding Hamiltonian that it represents. Transformations between the different layouts are given by unitary basis transformations. In all cases the dimension of the sites, i.e. the number of quantum degrees of freedom per site such as spin-orbitals, is given by the BlockSize of the response function. The tridiagonal representation of the response function maps to a tight binding model of a one dimensional chain. The Anderson representation of the response function maps to a single impurity interacting with many bath sites that do not interact with each other. The natural impurity representation maps to an impurity that interacts with a single bath site (the extended bath site). The impurity and extended bath then interact both with two separate chains of bath states, one related to the valence bath and one to the conduction bath.
In the figure above (from 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 © 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 ResponseFunction.ChangeType().
For all representations the table $A$ refers to the onsite energies of the sites and the table $B$ to the hopping between sites. $A_0$ and $B_0$ can not be represented in a tight binding Hamiltonian. The one particle Green's function obtained from a tight binding Hamiltonian has $A_0=0$ and $B_0=1$. Below we show the relation between $G$ and the tight binding Hamiltonian in more detail for the 3 different cases, as well as an example.
Tri-diagonal representation
The Green's function in tri-diagonal representation is given as $$ G(\omega,\Gamma) = A_0 + B_0^* \frac{1}{\omega + \mathrm{i}\Gamma/2 - A_1 - B_{1}^{\phantom{\dagger}} \frac{1}{\omega + \mathrm{i}\Gamma/2 - A_2 - B_{2}^{\phantom{\dagger}} \frac{1}{\omega + \mathrm{i}\Gamma/2 - A_2 - B_{3}^{\phantom{\dagger}} \frac{...}{\omega + \mathrm{i}\Gamma/2 - A_{n-1} - B_{n-1}^{\phantom{\dagger}} \frac{1}{\omega + \mathrm{i}\Gamma/2 - A_n } B_{n-1}^{\dagger}} B_{3}^{\dagger} } B_{2}^{\dagger} } B_{1}^{\dagger} } B_0^T $$. This can be represented by a one dimensional chain tight binding Hamiltonian whereby the chain has site $i=1$ to $i=n$. The onsite energies of the sites are given by $A_i$. If $A_i$ is a matrix then this matrix defines the local crystal fields. The hopping between site $i$ and $i+1$ is given by $B_i$. If $B_i$ is a matrix then the matrix elements define the orbital dependent hopping between sites.
Example
We here create a one dimensional tight binding model with a single $s$-orbital. We then create a super-cell with periodic boundary conditions and transform this into an operator. We solve the one particle vacuum Green's function for this system and finally change the one particle Green's function back into a tight binding Hamiltonian. The new Tight binding Hamiltonian is given by a unitary transformation of the old tight binding Hamiltonian with the same local Green's function. i.e. site $0$ is unchanged in the unitary transformation.
Input
- 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 GTri = ResponseFunction.ChangeType(G,"Tri") GTri.Chop(1E-12,{{"deflate",true}}) GTri.name = "G in Tridiagonal representation" print("The one particle Green's function is") print(GTri) -- change the Green's function to a tight binding model HTB2 = Chop( ResponseFunction.ToTightBinding(GTri) ) print("A tight binding Hamiltonian with the same one particle Green's function is given as") print(HTB2)
Result
The one particle Green's function is { { { { 0 } } , { { 0 } } , { { 0 } } , { { 0 } } , { { 0 } } , { { 0 } } , { { 0 } } } , { { { 1 } } , { { 1.4142135623731 } } , { { 1 } } , { { 1 } } , { { 1 } } , { { 1.4142135623731 } } } , type = Tri , name = G in Tridiagonal representation , BlockSize = { 1 , 1 , 1 , 1 , 1 , 1 , 1 } , mu = 0 } A tight binding Hamiltonian with the same one particle Green's function is given as Settings of a tight binding model: G in Tridiagonal 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 ( 5 ) 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] 1.41421356E+00 Hopping from 1 : 1 - 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.00000000E+00 Hopping from 2 : 2 - 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] 1.00000000E+00 Hopping from 3 : 3 - 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.00000000E+00 Hopping from 4 : 4 - 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.41421356E+00
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 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
We here create a one dimensional tight binding model with a single $s$-orbital. We then create a super-cell with periodic boundary conditions and transform this into an operator. We solve the one particle vacuum Green's function for this system and finally change the one particle Green's function back into a tight binding Hamiltonian. The new Tight binding Hamiltonian is given by a unitary transformation of the old tight binding Hamiltonian with the same local Green's function. i.e. site $0$ is unchanged in the unitary transformation.
Input
- 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)
Result
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