Fix bug in atom sorting with triclinic boxes

This commit is contained in:
Stan Gerald Moore
2023-04-27 10:27:38 -06:00
parent 4aee151b0e
commit a4d56b56ab

View File

@ -2271,6 +2271,10 @@ void Atom::sort()
for (i = 0; i < nbins; i++) binhead[i] = -1;
// for triclinic, atoms must be in box coords (not lamda) to match bbox
if (domain->triclinic) domain->lamda2x(nlocal);
for (i = nlocal-1; i >= 0; i--) {
ix = static_cast<int> ((x[i][0]-bboxlo[0])*bininvx);
iy = static_cast<int> ((x[i][1]-bboxlo[1])*bininvy);
@ -2286,6 +2290,10 @@ void Atom::sort()
binhead[ibin] = i;
}
// convert back to lamda coords
if (domain->triclinic) domain->x2lamda(nlocal);
// permute = desired permutation of atoms
// permute[I] = J means Ith new atom will be Jth old atom