This is an old revision of the document!


CalculateSelfEnergy

ResponseFunction.CalculateSelfEnergy($G_0$,$G$) calculates \begin{equation} \Sigma = G_0^{-1} - G^{-1} \end{equation}

Input

  • $G_0$ : ResponseFunction object
  • $G$ : ResponseFunction object

Output

  • $\Sigma$ : ResponseFunction object

Example

### ###

Input

CalculateSelfEnergy.Quanty
Verbosity(0)
-- Hubbard dimer model
NF=4
NB=0
 
IndexADn={0}
IndexAUp={1}
IndexBDn={2}
IndexBUp={3}
 
-- The Hamiltonian is given by a hopping from site A to B that conserves spin
-- A Coulomb repulsion if the two electrons are on the same site
-- A chemical potential that gives an onsite energy of -U/2
 
OppNAdn = NewOperator("Number", NF, 0, 0)
OppNAup = NewOperator("Number", NF, 1, 1)
OppNBdn = NewOperator("Number", NF, 2, 2)
OppNBup = NewOperator("Number", NF, 3, 3)
 
OppNA = OppNAup + OppNAdn
OppNB = OppNBup + OppNBdn
 
Oppt = NewOperator("Number", NF, {0,1,2,3}, {2,3,0,1}, {1,1,1,1})
OppU = OppNAup * OppNAdn + OppNBup * OppNBdn
 
-- PES and IPES are electron annihilation and creation operators
 
TPes  = NewOperator("An", NF, 0)
TIPes = NewOperator("Cr", NF, 0)
 
-- the total number of states is 6.
 
Npsi=6;
StartRestrictions = {NF, NB, {"1111",2,2}};
U = 1
H0 = Oppt - U/2 * (OppNA + OppNB) -- Define mean-field Hamiltonian
H1= U * OppU -- Define interaction Hamiltonian
 
psiList = Eigensystem(H0,StartRestrictions, Npsi)
 
G0PESIPES_Spectra, G0PESIPES_ResponseFunction = CreateSpectra(H0, {TPes, TIPes}, psiList[1], {{"Emin",-1}, {"Emax",9}, {"NE",1000}, {"Gamma",0.25}})
G0 = G0PESIPES_ResponseFunction[2]  + ResponseFunction.InvertEnergy(G0PESIPES_ResponseFunction[1])
 
Eigensystem(H0+H1, psiList[1]) -- Use H0 groundstate as Ansatz for Full Hamiltonian groundstate calculation
--For memory efficiency, this way of calling Eigensystem overwrites Ansatz wavefunction with a new one.  
 
GPESIPES_Spectra, GPESIPES_ResponseFunction = CreateSpectra(H0+H1, {TPes, TIPes}, psiList[1], {{"Emin",-1}, {"Emax",9}, {"NE",1000}, {"Gamma",0.25}})
G = GPESIPES_ResponseFunction[2]  + ResponseFunction.InvertEnergy(GPESIPES_ResponseFunction[1])
 
Sigma = ResponseFunction.CalculateSelfEnergy(G0,G)
 
print(ResponseFunction.ToTable(Sigma))

Result

{ { 0.5 , 6.9374060711003e-16 , 3.0413812651491 } , 
  { 0.085601012694643 , 0.16439898730536 } ,
  name = Self energy ,
  mu = 0 ,
  type = ListOfPoles }
 

Table of contents

Print/export