Implementación eficiente del campo gravitacional

8

Hice una pregunta similar en physics.stackexchange , siendo ignorante sobre este sitio web.

Básicamente estoy buscando una manera eficiente de implementar campos gravitacionales.

Tengo un gran espacio 2D, con miles de objetos en él. Luego necesito simular cómo estos objetos se ven afectados por la gravedad del otro.

Pensé que sería posible clasificar los objetos en colecciones y comparar cada objeto fuera de esa colección con esa colección, y no todos los objetos individuales dentro de ella. Pronto me di cuenta de que esto simplemente no era posible. El campo gravitacional de varios objetos no puede representarse como un campo uniforme, calculado con una sola masa y distancia.

Cada objeto dentro de la simulación puede considerarse una esfera. Estoy bien con las aproximaciones, siempre que parezca razonablemente realista.

Jeroen
fuente

Respuestas:

5

O(norte2)O(norte)

Otro algoritmo para la simulación de N-body es Barnes-Hut, que es más fácil de implementar y probablemente también tiene implementaciones de biblioteca disponibles. Se considera menos eficiente (en el sentido asintótico) que FMM.

Si su dominio es periódico, ¿tal vez podría hacer algo como la suma de partículas de Ewald? (Sé menos sobre este enfoque).

Geoff Oxberry
fuente
Ya leí un poco al respecto y parece agrupar elementos. Como todos mis elementos estarán bastante cerca uno del otro, y las masas que se están tratando son bastante pequeñas, ¿será esto exacto?
Jeroen
1
No tengo ninguna experiencia usándolo; Solo he asistido a algunas conferencias sobre el método. Se supone que FMM es robusto, y la idea general es que el orden de la suma se trunca una vez que ha alcanzado la precisión suficiente (se pueden derivar límites de error para la suma, por lo que se usan para la prueba de precisión). Además, no se supone que la precisión dependa de la distribución de la fuente. Se supone que FMM es más eficiente que la malla de partículas Ewald cuando las fuentes están muy juntas.
Geoff Oxberry
44
Si bien cada masa individual tiene un campo monopolo asociado, una suma de masas no tiene un campo monopolo puro. El punto de FMM es que esta suma de campos puede ser representada eficientemente por un campo multipolo (orden relativamente bajo) ya que los modos más altos del campo decaen rápidamente con la distancia.
Wolfgang Bangerth
Si solo usara el campo con el propósito de calcular la aceleración, ¿tal limitación abriría un nuevo alcance de posibles formas de hacerlo?
Jeroen