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

Add XML selection of LR Handler #2190

Merged
merged 6 commits into from
Jan 8, 2020
Merged

Conversation

rcclay
Copy link
Contributor

@rcclay rcclay commented Jan 7, 2020

First cut of this. This PR adds the XML tag "LR_handler" to the lattice description and to the wave function specification when parsing ion sets and lattices from an ESHDF5 file.

This will break with XML files which follow Juha's declaration of LR handler type in the Chiesa force estimator... but hopefully this is an overall simplification.

Example of a lattice declaration:
<simulationcell> <parameter name="lattice" units="bohr"> 3.77945227 0.00000000 0.00000000 -0.00000000 3.77945227 0.00000000 -0.00000000 -0.00000000 3.77945227 </parameter> <parameter name="bconds"> p p p </parameter> <parameter name="LR_dim_cutoff" > 15 </parameter> <parameter name="LR_handler" > ewald </parameter> </simulationcell>
Supported types for LR_handler are:

  1. "opt_breakup" for current optimized breakup behavior. The code will default to this if the option is not specified.
  2. "ewald" for the Ewald3D handler
  3. "opt_breakup_original" for the original Natoli/Ceperley optimized breakup.

@rcclay rcclay requested review from ye-luo and prckent January 7, 2020 00:31
@prckent
Copy link
Contributor

prckent commented Jan 7, 2020

Some thoughts on names only to begin with:

  1. We should choose names and input parameters carefully to minimize likelihood of future updates.
  2. "LR" is not a very clear abbreviation, so perhaps we should take this opportunity to change it?
  3. I am uncomfortable naming the methods after people since we don't have their blessing and can't be sure how close what we have in the code now is to what they originally intended.
  4. For the record, what is the difference between "esler" and "natoli"? Is there a publication for the former?
  5. How about opt_breakup, opt_breakup_esler, and ewald ?
  6. Note that should [WIP] Anisotropic Ewald code #2182 be successful, I am keen that we delete all of these old implementations.

@rcclay
Copy link
Contributor Author

rcclay commented Jan 7, 2020

@prckent To answer some of your questions:

  1. I can change that to "longrange_handler" or something.
  2. I'm fine changing it to opt_breakup, opt_breakup_natoli, and ewald. I originally named the options after people by pulling the first author off the paper or thesis the method appeared in.
  3. The original Natoli opt breakup scheme "splines" the short-range piece of the potential and optimizes the spline coefficients to minimize the residual error. Ken Esler's method splines the long-range piece instead and optimizes those coefficients. One can cite his thesis or the qmcpack manual, section 26.2.8 :P.
  4. see 3
  5. Simplification is very much warranted. Unless we're doing optimized breakups for other functional forms routinely (long range jastrows and what not), this level of generality is not worth the added code complexity IMHO.

@prckent
Copy link
Contributor

prckent commented Jan 7, 2020

  1. I was wondering if "coulomb_handler" or "coulomb_method" would be better... however I can live with LR_handler for now. If the anisotropic code is proves sufficient all this will be moot.
  2. opt_breakup, opt_breakup_original, and ewald ?

It appears that the CUDA build is broken - you should have an email.

@ye-luo ye-luo merged commit 3ce3c22 into QMCPACK:develop Jan 8, 2020
@rcclay rcclay deleted the ewald_switch branch January 8, 2020 23:06
@rcclay rcclay mentioned this pull request Mar 5, 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