Dynamical mean-field theory on a Bethe lattice
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
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