Self-healing overlap estimator
Proposed changes
Implements the self-healing overlap estimator as detailed in https://doi.org/10.1103/PhysRevLett.104.193001.
Clarification needed on how to access certain data values for multideterminant wavefunctions.
Apart from two data access issues, the code is functional and verified correct in VMC with and without Jastrow.
What type(s) of changes does this code introduce?
- New feature
Does this introduce a breaking change?
- No
What systems has this change been tested on?
Laptop
Questions:
-
How to access the size of the multideterminant wavefunction (number of dets) at estimator initialization time?
-
How to access the current value of the first determinant in the MD expansion (access to all others is secured already)?
@ye-luo @anbenali do you know how to do this? Comments from others welcome also.
How to access the size of the multideterminant wavefunction (number of dets) at estimator initialization time?
What is the number of dets? Confused. It can be 2 (up/down). Or you mean the number of linear expansion terms?
How to access the current value of the first determinant in the MD expansion (access to all others is secured already)?
Did you mean the coefficient of the reference determinant pair? c0 x detup0 x detdown0 + c1 x detup1 x detdown1 + c2 x detup2 x detdown2. Did you mean c0?
I mean the number of terms in the linear expansion (including the first).
The MD is a sum of determinants: Psi(R) = sum_n c_n*Phi_n(R). What I need is either the value Phi_0(R) or the ratio Phi_0(R)/Psi(R).
I've already obtained the values Phi_n(R)/Psi(R) as d/dc_n log(Psi) using the parameter derivative code. However, as written in QMCPACK, this excludes the first term (n=0).
Code is functional now. Ready for review steps toward merging.
Unit tests? Add valid input section to EstimatorManagerInputTest.cpp Valid and invalid input test. Verification Accumulation method produces expected results from known arguments.
I agree with Peter here. Some discussion of the testing plan is needed. Ideally there would be set of unit tests to avoid the headaches of a trickier set of deterministic tests. Ideally a unit test would be added here to get some coverage. Further improvements could be broken into subsequent PRs, but the plan should be stated.
A discussion on testing is warranted.
Unlike other estimators, this one can be tested for correctness with a statistical test based on any system since the mean of the estimator in VMC is just the inputted coefficient values. A potential wrinkle is that the statistical distribution the coefficients obey has not been characterized, so perhaps this is not the first test to make.
Due to time constraints (my code development time budget is measured in hours per quarter) I prefer adding deterministic tests over unit tests.
For interest, here is a VMC test of the estimator performed on the LiH MSD system already packaged in qmcpack/tests:
Inputted coefficients are shown in blue. In this case, the original number of determinants (1487) is reduced to 185 by a magnitude cutoff while the estimator is performing a measurement across the full basis.
I will add in-code documentation. Documentation in the manual will be provided once the first paper is submitted.
Closing in favor of fresh PR