Skip to content

Add XML selection of LR Handler#2190

Merged
ye-luo merged 6 commits into
QMCPACK:developfrom
rcclay:ewald_switch
Jan 8, 2020
Merged

Add XML selection of LR Handler#2190
ye-luo merged 6 commits into
QMCPACK:developfrom
rcclay:ewald_switch

Conversation

@rcclay

@rcclay rcclay commented Jan 7, 2020

Copy link
Copy Markdown
Contributor

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 prckent and ye-luo January 7, 2020 00:31
@prckent

prckent commented Jan 7, 2020

Copy link
Copy Markdown
Contributor

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

rcclay commented Jan 7, 2020

Copy link
Copy Markdown
Contributor Author

@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

prckent commented Jan 7, 2020

Copy link
Copy Markdown
Contributor
  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