Is there a reference for how the Ewald parameters are chosen in LAMMPS
based on the precision input? In the code it is given as:
if (!gewaldflag) g_ewald = (1.35 - 0.15*log(precision))/cutoff;
I'm curious where this came from.
Thanks!
Is there a reference for how the Ewald parameters are chosen in LAMMPS
based on the precision input? In the code it is given as:
if (!gewaldflag) g_ewald = (1.35 - 0.15*log(precision))/cutoff;
I'm curious where this came from.
Thanks!
Hi, Stan:
I think that the “original” source of this estimate is Fig. 7 from Deserno and Holm (1998)—the second paper in their pair of JCP papers on Ewald sums.
There, they plot alpha (g_Ewald) versus the log of the error (precision). It might take a bit of back extrapolation to figure out where the exact values for the constants come from, but between that paper and Pollock and Glosli (1996), it should be recoverable.
—AEI
Paul may want to comment further.
Steve
Stan, Ahmed,
I looked for the reference for this and did not find it. It predates the C++ version of LAMMPS by many years. It was in the old fortran version of LAMMPS from the year 2000, and probably goes back farther than that. So I'm pretty sure it predates Deserno and Holm as well. My best guess is that this was an unpublished heuristic from Roy Pollock. It might have made it into the Pollock and Glosli (1996) paper that Ahmed mentioned, but I didn't see it there when I looked briefly.
Dean Wheeler had a different heuristic for this from circa the same time frame (mid 90's). Might be interesting to test and see which one is better.
Typically, we haven't worried much about this because it should have little or no impact on accuracy and relatively small impact on performance. And we haven't worried much about performance on this since any users who really care about performance should probably be using PPPM.
Paul