Hi Tony. Yes, I think you are correct. Another way to code it would be something like this:
// remove d*N - d(d+1)/2 dof for each rigid body if more than 2 atoms in igroup
// remove an additional dof for each diatomic rigid body in igroup for 3D simulations
int n = 0;
for (int ibody = 0; ibody < nbody; ibody++) {
if (nall[ibody] > 1) n += domain->dimension*nall[ibody] - domain->dimension*(domain->dimension + 1)/2;
if ((nall[ibody] == 2) and (domain->dimension == 3)) n++;
}