Thank you Emanuel,
I have another question. In the constructor of HybridizationRun in impurity.C, for the case of Bethe lattice, you define f_time as
f_itime(i, f) = -t * t * green_itime(N - i, f); //this is the self consistency loop, for Bethe lattice!
Later you initialize the F function using f_itime:
F[j][i] = f_itime(i, j);
As we know the relation between the hybridization function and the Green's function for Bethe lattice: F_s(iwn) = t^2 * G_s(iwn).
Even if you use the inverse Fourier transform of the relation, you still get F_s(tau) = t^2 * G_s(tau), not F_s(tau) = - t^2 * G_s(beta - tau).
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)? Is my explanation for that formula correct?
Regards, Kuang-Shing Chen
On Tue, Dec 13, 2011 at 6:30 AM, Emanuel Gull emanuel.gull@gmail.comwrote:
Hi Kuang-Shing Chen,
yes, that function is only there for debug purposes. We start the simulation from expansion order zero, where we know the matrix, and then add and remove operators for a few steps (thermalize) be for we start measuring our observables.
So only the 'add' and 'remove' functions are needed for the incremental updates, but not the recompute function. You'll see that the functions insert_remove_antisegment and insert_remove_segment get 'M' passed to it.
Best, Emanuel
On Dec 13, 2011, at 7:46 AM, Kuangshing Chen wrote:
Hi,
I look through the source code of hybridization in
alps/applications/dmft/qmc and have a question:
The template function construct_matrix in update.h is defined but NEVER
used in the code.
I use grep to search for that: grep construct_matrix * -R
The result is only the definition in update.h. Now the question is: How
is the matrix M (inverse of hybridization function) constructed? M is only initialized in the constructor of HybridizationRun but it is never assigned to any value after that. How is the code working without defining M?
Thank you,
Kuang-Shing Chen