# Dynamical mean-field theory on a Bethe lattice

Note

Requires TRIQS and the application cthyb

In the case of Bethe lattice the dynamical mean-field theory (DMFT) self-consistency condition takes a particularly simple form

$G^{-1}_{0,\sigma} (i \omega_n) = i \omega_n + \mu - t^2 G_{\sigma} (i \omega_n).$

Hence, from a strictly technical point of view, in this case the DMFT cycle can be implemented by modifying the previous single-impurity example to the case of a bath with semi-circular density of states and adding a python loop to update $$G_0$$ as function of $$G$$.

Here is a complete program doing this plain-vanilla DMFT on a half-filled one-band Bethe lattice:

from triqs.gf import *
from triqs.operators import *
from h5 import *
import triqs.utility.mpi as mpi
from triqs_cthyb import Solver

# Parameters of the model
U = 2.5
t = 0.5
mu = U/2.0
beta = 100.0
n_loops = 10

# Construct the impurity solver
S = Solver(beta = beta, gf_struct = [('up',1), ('down',1)] )

# This is a first guess for G
S.G_iw << SemiCircular(2*t)

# DMFT loop with self-consistency
for i in range(n_loops):

print "\n\nIteration = %i / %i" % (i+1, n_loops)

# Symmetrize the Green's function imposing paramagnetism and use self-consistency
g = 0.5 * ( S.G_iw['up'] + S.G_iw['down'] )
for name, g0 in S.G0_iw:
g0 << inverse( iOmega_n + mu - t**2 * g )

# Solve the impurity problem
S.solve(h_int = U * n('up',0) * n('down',0),   # Local Hamiltonian
n_cycles  = 100000,                        # Number of QMC cycles
length_cycle = 200,                        # Length of one cycle
n_warmup_cycles = 5000                     # Warmup cycles
)

# Save iteration in archive
with HDFArchive("single_site_bethe.h5", 'a') as A:
A['G-%i'%i] = S.G_iw
A['Sigma-%i'%i] = S.Sigma_iw