QMCPACK / qmcpack

Main repository for QMCPACK, an open-source production level many-body ab initio Quantum Monte Carlo code for computing the electronic structure of atoms, molecules, and solids with full performance portable GPU support
http://www.qmcpack.org
Other
300 stars 139 forks source link

Integrated energy density is not equal to the total energy #5224

Open aannabe opened 1 week ago

aannabe commented 1 week ago

Describe the bug I might be doing something wrong, but I can't get the integrated energy density to be equal to the total energy. Specifically, I am comparing the VMC total energy from the scalar.dat file against the integrated energy density from the stat.h5 file. The integration is carried out as np.sum(self.total) * domain_volumes / np.sum(self.weights) in the attached get_edens.py script.

VMC total: -84.891(5) Ha Integrated Total Energy: -355.2907763843961

To Reproduce An example is attached. vmc_J123.zip

Expected behavior VMC total energy and the integrated edens should be equal.

System: NERSC

jtkrogel commented 4 days ago

@aannabe Please can you post files from an equivalent legacy run?

jtkrogel commented 4 days ago

@aannabe Here is an absolute correctness check you can make:

  1. Setup a VMC run with a single walker, a number of blocks, and 1 step per block
  2. Lightly edit qmcpack/src/Estimators/EnergyDensityEstimator.cpp as follows:
    • Go to the ::evaluate function (line 232)
    • Write a pair of loops that sum the per-particle quantities Ts, Vd, and Vs into a scalar (say, at line 291).
    • Print the scalar using app_log()<<"summed particle energy: "<<scalar<<std::endl;
  3. Recompile QMCPACK and run VMC. The printed summed energies should match those written to scalar.dat, otherwise there is a bug. These should similarly match the summed energies from the EnergyDensityEstimator in stat.h5.
aannabe commented 4 days ago

Thank you for taking a look and the suggested checks to make. I ran a similar input with the legacy code (attached below). Somehow I seem to be getting all zeros written to the stat.h5 file.

For the sake of time, we have decided to drop the EnergyDensity from our current work, but I will try to test the above once I get the time.

vmc_J123_legacy.zip

jtkrogel commented 3 days ago

@PDoakORNL can you post the legacy inputs you are using to compare your batched implementation against?