Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Enforce the fundamental Green function properties for G0_iw and G_iw #118

Merged
merged 14 commits into from
Feb 3, 2020

Conversation

Wentzell
Copy link
Member

We now enforce the fundamental Green function property G[iw](i,j) = G[-iw](j,i)*
for both the solver-input S.G0_iw as well as the solver output S.G_iw.
If the input violates the relation a warning will be issued and the input will
be automatically symmetrized. The output will always be symmetrized and the
symmetry violation G[iw](i,j) - G[-iw](j,i) is stored in S.hermiticity_violation_G_iw

This change was discussed with @parcollet @mzingl

@mzingl
Copy link
Member

mzingl commented Aug 29, 2019

I checked the changes and it looks fine to me.
Nils, thanks for adding this!

@HugoStrand
Copy link
Member

Dear all,

This is fine, in principle. But, it changes behavior of the solver and it will hide ergodicity problems in the sampling from the user. Especially since there is no warning if the sampled Gf breaks hermiticity (too much).

I would vote for a more conservative approach and replace the automatic symmetrization of the sampled Gf with a small tutorial on how to symmetrize the result by hand.

Cheers, Hugo

@mzingl
Copy link
Member

mzingl commented Aug 30, 2019

I like that now both, the 'corrected' G_iw and the raw G_iw_raw are available to the user.
What about writing a warning if the G_iw_raw violates (too much) the hermiticity?
This warning should say that G_iw is symmetrized and that the raw data is available as G_iw_raw.

…,i)* for G0_iw and G_iw

We now enforce the fundamental Green function property `G[iw](i,j) = G[-iw](j,i)*`
for both the solver-input S.G0_iw as well as the solver output S.G_iw.
If the input violates the relation a warning will be issued and the input will
be automatically symmetrized. The output will always be symmetrized and the
symmetry violation `G[iw](i,j) -  G[-iw](j,i)` is stored in S.hermiticity_violation_G_iw
@Wentzell Wentzell removed the request for review from HugoStrand January 28, 2020 23:18
@Wentzell
Copy link
Member Author

@the-hampel Please review the latest changes and update the documentation as discussed.

@the-hampel
Copy link
Member

I added some parts in the documentation in the solve function of the solver. I hope this sits at the right spot now. Please check, otherwise I will iterate on it. The other changes look good! For me atm the test py_slater fails because assert is_gf_hermitian(self.G_iw) is triggered ( line 143 in solve function. I am not quite sure if this is a problem with my test but. Do the tests work all for you?

@Wentzell Wentzell merged commit 3d8427a into TRIQS:unstable Feb 3, 2020
@Wentzell Wentzell deleted the PR_GF_SYM branch February 3, 2020 21:04
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

4 participants