I try to implement your solver in my dmft loop and try to compare the result from ALPS. It seems that something still stucks in the code. I have a question for the ALPS DMFT loop:
G0_init --> Solver --> G --> SC --> G0 --> ... (SC means self-consistency loop)
Since G0_init is obtained in the constructor of HybridizationRun, after the Solver you get G. Then inside the SC, you obtain G0 using
G0_{s}(iwn) = 1/(iwn + mu - t^2G_{-s}(iwn)) (defined in SemicircleHilbertTransformer::operator()).
The question is: Before going to the Solver, you construct F(tau) = -t^2 * G(beta - tau) in the very of beginning. In the next iteration, where is the relation between the new G0(tau) and the new F(tau)? (At least I do not see this relation except in the constructor of HybridizationRun)
Also, do you still start with the same time segment configuration as the one in the previous iteration?
Kuang-Shing Chen On Tue, Dec 13, 2011 at 9:58 AM, Emanuel Gull gull@itp.phys.ethz.ch wrote:
Oh no sorry I assumed you wanted to do the DMFT for a Hubbard model on a lattice different from the Bethe lattice. If you want to do the DMFT for the Hubbard model on a Bethe lattice then you're all set: just take the parameter file of Tutorial 2 and change MU and U.
what 'does not work'? Can you be more specific?
Emanuel
On Dec 13, 2011, at 10:54 AM, Kuangshing Chen wrote:
Thank you Dr. Gull,
Do you mean that the semi-circle DOS for the Hubbard Model does not work? (Acturally I tried, and it doesn't work) Should I prepare my own DOSFILE, or the code itself will generate one? (At least the class FSDOSHilbertTransformer only read in a DOSFILE)
Kuang-Shing Chen
On Tue, Dec 13, 2011 at 9:34 AM, Emanuel Gull emanuel.gull@gmail.comwrote:
Hi Kuang-Shing Chen,
first you need to change to the Hubbard model density of states (for 1d, 2d, 3d, …). You can do that, for example, by using the loop for the general density of states and specifying a DOS file that has the DOS for your lattice. The parameter name is "DOSFILE" (see class FSDOSHilbertTransformer).
To adjust the filling: there is a parameter 'MU' corresponding to the chemical potential. If you change mu you change the filling. The ALPS code does not have a self-consistency for constant particle number (but that's a small thing that we could add if you really need it).
Emanuel
On Dec 13, 2011, at 4:21 PM, Kuangshing Chen wrote:
Thank you Emanuel,
Now I understand the code deeper. If I want to calculate the DMFT Hubbard Model, how do I change to filling?
Regards, Kuang-Shing Chen
On Tue, Dec 13, 2011 at 8:43 AM, Emanuel Gull emanuel.gull@gmail.comwrote:
Hi Kuang-Shing Chen,
It sounds that you impose the particle-hole symmetry in G_s (the
argument of it is beta -tau) and the minus sign is just the convention for G_s and there is another minus sign in the multiple_G in the function get_result() to cancel it. Is the particle-hole symmetry only true for the initial condition (no interaction)?
this is a special case for the self-consistency condition and, as you mention, it is only valid for Bethe lattice. We have only implemented it in the paramagnetic phase. You can find the implementation of it in F_selfconsistency_loop in the file selfconsistency.C
F is not the hybridization function, but something like it up to a minus sign, see Rev. Lett. 97, 076405 (2006) for its exact definition.
It's probably best if you start by running some of the tutorials for the hybridization expansion code. Tutorial 02 runs DMFT on a Bethe lattice with the hybridization expansion code in the antiferromagnetic case, I think this is exactly what you want.
Best, Emanuel
-- Kuang-Shing Chen
-- Kuang-Shing Chen