This basically ports the Hash Grids functionality from the pe, where it is the default coarse-collision detection method, to mesa-pd. Doing so, some simplifications and changes were made:
- the data structure does no longer support continuous updates. Instead, each time step requires a clear and a rebuild. This is mainly because the otherwise required call_backs for newly added particles ( generation, synchronization) are not compatible with the current design.
- ray casting functionality was removed
- some pointer juggling was removed in favour of std::vector
- no distinction between fixed particles and "regular" particles is made, as this should be decided by the provided selector.
- however, infinite particles are stored separately, in agreement with the available linked cells.
- the threshold to switch between the naive all-against-all check and the hash grids is removed ('gridActivationThreshold')
- the association to a certain cell inside the certain grid is now based on the particle position and the interaction radius (usually the outer sphere). Before, it was done based on the AABB and its minimum vertex position.
Doing so, some typos that have been fixed in the generated files but not in the python templates have been fixed.
A simple test is added, similar to the one for linked cells.