A question about AIREBO potential

Hi all,
I’m reading the code of pair_airebo.cpp recently and I can not understand the following codes:
"// compute LJ forces and energy
sigwid = 0.84;
sigcut = 3.0;
sigmin = sigcut - sigwid;

rljmin = sigma[itype][jtype];
rljmax = sigcut * rljmin;
rljmin = sigmin * rljmin;

if (rij > rljmax) {
slw = 0.0;
dslw = 0.0;
} else if (rij > rljmin) {
drij = rij - rljmin;
swidth = rljmax - rljmin;
tee = drij / swidth;
tee2 = tee*tee;
slw = 1.0 - tee2 * (3.0 - 2.0 * tee);
dslw = -6.0 * tee * (1.0 - tee) / swidth;
} else {
slw = 1.0;
dslw = 0.0;
}
"
I know slw is the switching function to turn off the LJ potential in AIREBO potential. What I don’t understand is that this switching function is used again in the following part:
"// VLJ now becomes vdw * slw, derivaties, etc.
VLJ = vdw * slw;
dVLJ = dvdw * slw + vdw * dslw;

Str = Sp2(rij,rcLJmin[itype][jtype],rcLJmax[itype][jtype],dStr);
VA = StrcijVLJ;
if (Str > 0.0) {
scale = rcmin[itype][jtype] / rij;
delscale[0] = scale * delij[0];
delscale[1] = scale * delij[1];
delscale[2] = scale * delij[2];
Stb = bondorderLJ(i,j,delscale,rcmin[itype][jtype],VA,
delij,rij,f,vflag_atom);
} else Stb = 0.0;

fpair = -(dStr * (StbcijVLJ - cijVLJ) +
dVLJ * (Str
Stbcij + cij - Strcij)) / rij;"

In the above codes, Sp2 is the same function as slw. It seems that the codes use this switching function twice, what’s the reason?
The only difference between two functions is the range. slw is from (3-0.84)sigma~3sigam, while the range for Sp2 is from rcLJmin to rcLJmax. Where do the values 0.84 and 3 come from? I didn’t find any information from the paper of Stuart.
Does anyone know the reason? Thank you very much!

Best,
Huang

These are two different cutoffs. The first cutoff, slw, is considerably longer at 2.16sigma to 3.0sigma, and this is the LJ cutoff that determines if there should be LJ interactions at all. Beyond the outer cutoff there are no LJ and within the inner cutoff (2.16*sigma) LJ is fully on.

The second cutoff, Str, is the distance-based switching function that turns LJ off at short range so that LJ doesn’t interfere with REBO. The inner/outer cutoffs are rcLJmin and rcLJmax that are ~3.0 angstroms. Another bond-order based switching function, Stb, also comes in to play to determine how LJ turns off for short range interactions.

For convenience, the authors chose the same form (Sp2) for both cutoffs, but they affect LJ interactions at difference distances and in different ways.

Ray

These are two different cutoffs. The first cutoff, slw, is considerably longer at 2.16sigma to 3.0sigma, and this is the LJ cutoff that determines if there should be LJ interactions at all. Beyond the outer cutoff there are no LJ and within the inner cutoff (2.16*sigma) LJ is fully on.

The second cutoff, Str, is the distance-based switching function that turns LJ off at short range so that LJ doesn’t interfere with REBO. The inner/outer cutoffs are rcLJmin and rcLJmax that are ~3.0 angstroms. Another bond-order based switching function, Stb, also comes in to play to determine how LJ turns off for short range interactions.

For convenience, the authors chose the same form (Sp2) for both cutoffs, but they affect LJ interactions at difference distances and in different ways.

Ray