Hi Steffen:
right now I'm working on a LDA+DMFT code and want to use the Hybridization Impurity Solver from the ALPS package.
great! Welcome!
I have two questions regarding the implementation of the Impurity solver and would be very glad if you could provide me with some guidiance:
My first question is, what is the best way to implement the impurity solver in a C++ code? What I've done so far is the following: I'm using the newest ALPS code version 2.1.1-r6176.
The current ALPS version is alps-2.1.1-r6560-src, available as the 'nightly' build on the homepage and via anonymous svn. If you're thinking of developing a code I would strongly recommend working with the svn version.
The old hybridization code with which you were working has been completely rewritten; that rewrite is now part of ALPS instead of the old code. You can find a documentation of it in doc/hybdoc.pdf.
Another problem that I have, but want to adress after I resolved my first question, is that the GF from the Impurity Solver is not decaying like 1/w_n but with some factor ~ 1/1.5w_n. I'm using the Legendre representation of the GF and transform it back for further use in the DMFT cycle. Do you know a possible reason for this? Is this simply caused by too few Sweeps or Legendre coefficients?
Probably not enough Legendre coefficients or too much noise on the coefficients. The error propagation with Legendre coefficients is a bit tricky: the Fourier transform means that Matsubara coefficients are highly correlated. To make sure: simulate twice as long and see if anything changes.
Cheers, Emanuel