Dear all,
while I am trying to solve some problems that I faced in use of a new pair potential, I realised that one point was not clear to me, concerning pbc and the calculation of distances.
The pbc() method is called when neighbor list are re-calculated and that’s fine. By looping on the elements of this list the pair interactions are calculated, but what about the distances?
I guess there might be some flags that indicate whether or not - and if so, how many times - the pbc have been applied on an atom. Depending on these flags ( the difference, maybe) the distance are calculated directly from the x[type][axis] array or by adding/subtracting the corresponding box length. I checked with the src file of some pair potentials already implemented but I can see how this mechanism would work, given that for the calculation of distances it seems that only the the arrays x[type][axis] are used. In other words, why would this calculate the correct distance for two atoms within the cut-off distance if they are interacting through the boundaries?
for (ii = 0; ii < inum; ii++) {
i = ilist[ii];
qtmp = q[i];
xtmp = x[i][0];
ytmp = x[i][1];
ztmp = x[i][2];
itype = type[i];
itag = tag[i];
jlist = firstneigh[i];
jnum = numneigh[i];
for (jj = 0; jj < jnum; jj++) {
j = jlist[jj];
//factor_lj = special_lj[sbmask(j)];
//factor_coul = special_coul[sbmask(j)];
j &= NEIGHMASK;
delx = xtmp - x[j][0];
dely = ytmp - x[j][1];
delz = ztmp - x[j][2];
rsq = delx*delx + dely*dely + delz*delz;
dr = sqrt(rsq);
Can anyone give me a clue where to find the answer in the code? Tnx
Giovanni Doni
PhD Student
Physics Department
King’s College London
Strand
London WC2R 2LS
(Tel: +44 (0)7710641129)
Email: giovanni.doni@…4386…