Big improvements to the gravity code.
- Fix mistakes in the higher-order derivatives used below softening,
- Implement the Dehnen+2014 multipole acceptance criterion (in cartesian coordinates),
- Allow (optionally) to use the tree below softening,
- Allow (optionally) to use the truncated and softened potential in the MAC,
- Fully simplify the first order multipole terms that are 0,
- Simplify the signature of the long-range and short-range gravity truncation functions,
- Do not use the M2P kernel if the multipole is made of one single particle,
- Vectorize the cache construction and write backs to memory,
- Vectorize the M2P kernel,
- Use a leaf-level cell lock rather than the field-by-field atomic operations on the particles,
- Significant update to the gravity theory doc.
Still to do:
Correctly use and document the new truncated MAC,
Re-implement the MAC for the proxies,
Update all the example YAML files,
Clean-up the debugging checks,
Prevent M2L for cells with small number of particles.