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
295 stars 138 forks source link

Jastrow radial-cutoff default values in Nexus #5188

Open aannabe opened 4 days ago

aannabe commented 4 days ago

This issue is to discuss some possible improvements for Jastrow radial-cutoff default values. Particularly, in Nexus, J12 defaults to the largest radial cutoff allowed by the supercell in periodic boundary conditions. However, J3's radial cutoff is limited at 5.0 Bohr by default, presumably due to possible difficulties in optimizing extended Jastrows. However, this cutoff seems a bit aggressively small. Using the monolayer CrI3, spinor trial wavefunctions, and J12_rcut = 12.93483855, the total energies and variances are below. They all start from the same J12 and go for about 8 iterations using OneShiftOnly. The lowest energy data was chosen for each one.

j3_rcuts

Note that the default J3_rcut = 5 in this case is too far away from the optimal value. Values for J3_rcut => 10.0 all seem comparable.

For open boundary conditions, Nexus seems to default to J1_rcut_open = 5.0 and J2_rcut_open = 10.0. I haven't explored these values. However, I noticed the below study did this using qmcpack, obtaining optimal values close to 10.0 Bohr, similar to the J3_rcut data above.

From https://pubs.acs.org/doi/10.1021/acs.jctc.1c00467 :

image

From the limited data above, it suggests the default Jastrow cutoffs J1_rcut_open = 5.0 and J3_rcut = 5.0 could be bumped to about 10.0 Bohr.

Data for the first Figure: J3_rcuts.zip

camelto2 commented 4 days ago

The default I have tended to use the wiger-seitz radius, which can be obtained from the structure class. Maybe using something like this which is physically motivated

aannabe commented 4 days ago

Agreed. J1, J2, and J3 all defaulting to the WS-radius is the most intuitive default for PBC.

prckent commented 4 days ago

@kayahans What have you found successful in your 2D runs?

kayahans commented 4 days ago

@prckent I optimized jastrows using the bilayers. Here are my results for AFM bilayer CrI3, for 2x2x1 tiling with J2 and J3 jastrows.
opt_pbe_u_1.0_2x2x1_3000_ccecparep/opt series 19 -1935.513503 +/- 0.014367 32.889841 +/- 0.528421 0.0170 optJ3_pbe_u_1.0_2x2x1_3000_ccecparep/optJ3 series 7 -1935.994760 +/- 0.013629 30.785014 +/- 0.265862 0.0159

Looking at Gani's results, he has a variance/energy ratio of a value slightly larger than 15/-967.6=0.0155 and then his best variance ~15-15.5 is about half of my value considering it is monolayer vs bilayer. I have used a J3 cutoff of 4.0 Bohr. I didn't test the J3 convergence as detailed as Gani. His highest variance J3 calculation has the variance energy ratio of 20/967=0.021 which is worse than the J2 optimization I had. I am using equal cutoffs (WS) for J1 and J2, that could explain the difference if Gani is using smaller cutoff for J1. I guess there is no right answer here, I have always thought of J1 and J2 complement each other so I use the same cutoff for both.

I would consider checking how well your 1-body parameters converged in the previous J2-only calculation. The rpa based initial values (available in nexus) for the 2-body jastrow parameters seemed to be pretty good as the starting point. My J2 optimization calculations mainly improved the 1-body parameters (they start from zero). If you in case start from all zeros (for J1 and J2) or have a small cutoff for J1, then the 1-body parameters may be stuck in some configuration and then the 3-body parameters may try to compensate for them in the J3 optimization calculation.

Going from 2x2x1 supercell to larger supercells(3x3x1 and 4x4x1), I had difficulty optimizing 1-body parameters even when initial J1 values are selected to be all zeros and J2 initial values are from rpa. That is why I would guess that 1-body parameters may be the issue. For my case, the reason for the difficulty could be due to the large cutoff I choose. Then I tried reusing the 1-body parameters from 2x2x1 to run J2 optimization calculations for larger supercells. I set the J1 cutoff equal to WS radius, but copy-pasted the J1 parameters from the smaller supercell. In a way this stretches the shape of Jastrow, but at the end it was much easier to get reasonable variance energy ratios on par with 0.0159 value I got in 2x2x1.