Statement of Need#
The Rational#
Downscaled mesh of (433) Eros to 10% of its original vertices and faces.
The complex gravitational fields of irregular bodies, such as asteroids and comets, are often modeled using polyhedral gravity models since alternative approaches like mascon models or spherical harmonics struggle with these bodies’ irregular geometry. The spherical harmonics approach struggles with convergence close to the surface [1], whereas mascon models require a computationally expensive amount of mascons (point masses of which the target body comprises) to model fine-granular surface geometry [2].
In contrast, polyhedral gravity models provide an analytic solution for the computation of the gravitational potential, acceleration (and second derivative) given a mesh of the body [3] [4] with the only assumption of homogeneous density. The computation of the gravitational potential and acceleration is a computationally expensive task, especially for large meshes, which can however benefit from parallelization either over computed target points for which we seek potential and acceleration or over the mesh. Thus, a high-performance implementation of a polyhedral gravity model is desirable.
While some research code for these models exists, they are not focused on usability and are limited to FORTRAN and proprietary software like MATLAB. There is a lack of well-documented, actively maintained open-source implementations, particularly in modern programming languages, and with a focus on scalability and performance.
This circumstance and the fact that polyhedral models are often used in studying gravitational fields, e.g., for Eros [5], or as a reference for creating new neural models [6] make an easy-to-install implementation necessary.
The presented software has already seen application in several research works. It has been used to optimize trajectories around the highly irregular comet 67P/Churyumov-Gerasimenko with the goal of maximizing the gravity signal [7] using pygmo [8]. In the context of that work, the presented implementation was extended to enable caching and even serialization to persistent memory on the C++ side. A change that enables researchers to, e.g., efficiently propagate an orbit since the computation points can be given apiece and do not need to be all known from the beginning.
Further, it has been used to study the effectiveness of so-called neural density fields [9], where it served as ground truth to (pre-)train neural networks representing the density distribution of an arbitrarily shaped body [10].
Thus, this model is highly versatile overall due to its easy-to-use API. It can be used in a wide range of applications, especially due to the availability on major platforms like Windows, macOS, and Linux for ARM64 and x86_64. We hope it will enable further research in the field, especially related to recent machine-learning techniques, which typically rely on Python implementations.