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

Separating Direct and Indirect Measurement of Two Body Green Function #5

Closed
wants to merge 9 commits into from

Conversation

xrq-phys
Copy link
Collaborator

@xrq-phys xrq-phys commented Jul 30, 2019

Misawa-sensei, Ido-san and other collaborators of this repository,

Greetings.
Previously I complained to Misawa-sensei that mVMC's measurement of Lanczos 2-body Green's function is inconsistent with that without 1-step Lanczos. This is caused by that mVMC uses direct calculation in doing normal Green's function while indirect calculation in computing Green's function with Lanczos:
Direct Calculation Formula
Indirect Calculation Formula

While indirect calculation is much faster than the direct one, it only works in a few cases. (e.g. non-exchange terms in spin systems and "SpinGC" with sufficient number of samples) This is because in indirect calculation, samples with <x|psi>=0 might have non-zero contribution to the measured Green's function. Hence, the routine needed in most cases is direct calculation.

In fact, there is a keyword called "TwoBodyGEx" intended for indirect calculation of normal (non-Lanczos) Green's functions. I think it might be a good idea to make the interface consistent.

In this pull request routines related to "TwoBodyGEx" keyword is debugged to work properly. After specifying NLanczosMode=1, the program will use direct method to calculate "TwoBodyG" for both normal and Lanczos Green's functions and indirect method to calculate "TwoBodyGEx" for normal and Lanczos Green's functions.

The pull request is benchmarked agains some previous results to ensure it doesn't create new bugs. For a possibility of indirect Green's function calculation of Itinerant Fermion systems, maybe I can refer to Charlebois who is apparently more experienced.

Best,
RuQing

@k-yoshimi
Copy link
Collaborator

@tmisawa or @k-ido
Please check this PR.

@k-ido k-ido requested a review from tmisawa January 14, 2020 08:32
@xrq-phys
Copy link
Collaborator Author

xrq-phys commented Jan 14, 2020

こんにちは
一応 0256c2d との衝突を見直しました。

まずは indirect measurement するとき、式後半の



に書き換えなければいかない。この辺は 0256c2d を参照して直しました。

ですが、もともと TwoBodyGEx の入力形式がわからない(マニュアルでもかいてなかったら当然)。今使っているのは TwoBodyG と同じく i s j s k t l t(i, j, k, l は空間配置、そして s と t はスピン). もし古い 0.2.0 の形式を参照しても i j s k l t になります。どっちも master ブランチの iOneBody1 iOneBody2 i j s k l t ではありません。それとも master で i j s k l t はプログラムに使われていない。

@xrq-phys
Copy link
Collaborator Author

git merge master によってブランチは汚くなってきた。
こっちを閉じて #10 にもう一度お願いします。

@xrq-phys xrq-phys closed this Jan 14, 2020
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.

3 participants