Here are the definitive answers to your questions about the mysterious factor of two and other subtle differences between the published parameters in REBO and AIREBO from a 2007 email exchange between Steve Stuart and myself: Please also note that Steve S. took Brenner’s second generation code REBO and modified it for AIREBO by adding the dihedral and LJ switching functions. Brenner just didn’t publish right away so the chronology in the literature is not correct. Generally speaking the lammps version of AIREBO with the dihedrals and LJ terms off is almost exactly equivalent to Brenner’s 2002 2nd gen REBO. However do not confuse this with 1st gen rebo (1990) which is very different!
Enjoy:
Dave,
Hey Steve,
How’s it going? Maybe you can answer a quick question for me. I noticed that
the PiRC values in the Airebo paper (Table IX) are half that of the values
in the code and those given in Brenner’s 2002 paper (Table 4). Any reason
for that?
The code accumulates a value that is actually (2 * b_ij) and cuts it
in half later. (Don’t ask me how many headaches this has caused,
just to avoid a few multiplications…) The values in the AIREBO
paper are correct; the values in the AIREBO code are correct, but are
2*pirc rather than pirc, and the values in the Brenner 2002 paper are
wrong.
-Steve
Thanks, Dave
Dave,
So the numbers in Brenner’s paper are the ones that are off by a factor of
2? I notice that the numbers in the code (at least in the version I have)
are exactly the numbers Brenner 2002. The numbers in the Airebo paper differ
from the code by a small amount of round off error. This is all good to
know, as I am currently fitting this stuff for SiSi, SiC, and SiH.
Yes, what you say is right. The history that explains this:
- Don wrote the REBO code. He tabulated (2*pi^rc) rather than pi^rc
to avoid a few *0.5d0 multiplications. - Don wrote the REBO paper that was eventually published in 2002. He
took his pi^rc values from the lookup table, forgetting about the
artificial doubling. - I used Don’s code as the basis of my AIREBO code. Consequently, I
also inherited his (2*pi^rc) trick, and got confused/burned by it too
many times to forget about it. - I wrote the AIREBO paper, but remembered to halve the (2*pi^rc)
values from the lookup table when citing the pi^rc values.
I can’t explain the roundoff error, unless you just mean the
truncation of some of the values in the code to a consistent number
of sig figs for presentation in the paper.
-Steve
Dave,
It’s just truncation error.
If it makes you feel any better about the truncation “error”, there
is a good chance that I tested for the “significance” of the digits
that I left out. I.e., I tweaked the parameter values in various
digits to see how much difference it made to the total energy, and
reported only digits that resulted in energy differences of 1e-6 eV
(or some arbitrary cutoff I decided on at the time, for some
arbitrary system), rather than just reporting all the digits in the
code. I know I did this for many/most parameters. I can’t recall for
sure whether I did so for pi^rc, but it is probable.
There is a method to the madness…
Thanks, I suspect that really would have thrown
me for a loop had I not noticed.
Welcome to the club. I have been around that particular loop so
often I’m dizzy.
-Steve