Rectangular grid for analysis nbsearch
Previously, the grid-based analysis neighborhood search used triclinic
grid cells covering the triclinic unit cell. This made PBC handling
easy, but all other math is more complicated, and the volume where pairs
are searched is sub-optimal for triclinic boxes. Now, the grid is
composed of rectangular cells that cover the rectangular unit cell.
The most significant change to support this is that most computation for
what cells to loop over is now done in fractional cell coordinates to
support for non-integral shift of the cell grid at the edges of
triclinic boxes. The fixed list of cell neighbors is replaced with
on-the-fly computation, since the non-integral shifts mean that the list
of neighbors is not always the same. This approach also allows the list
of cells in the loop to easily depend on the test position. Any cells
that are completely outside the cutoff from the current test position
are skipped completely, improving the efficiency also for rectangular
boxes.
Currently, the list of cells looped over is still a rectangular
box, but with rectangular cells, the math to exclude corners should be
straightforward to add in subsequent changes.
Change-Id: I8bd4fa67e26e282cd5bd82dee5edfaf651e59a19