Articulo de referencia

simulación de N cuerpos

Una simulación de N cuerpos de la formación cosmológica de un cúmulo de galaxias en un universo en expansión. En física y astronomía , una simulación de N cuerpos es una simulac...

Una simulación de N cuerpos de la formación cosmológica de un cúmulo de galaxias en un universo en expansión.

En física y astronomía , una simulación de N cuerpos es una simulación de un sistema dinámico de partículas, generalmente bajo la influencia de fuerzas físicas, como la gravedad (véase el problema de N cuerpos para otras aplicaciones). Las simulaciones de N cuerpos son herramientas ampliamente utilizadas en astrofísica , desde la investigación de la dinámica de sistemas de pocos cuerpos como el sistema Tierra - Luna - Sol hasta la comprensión de la evolución de la estructura a gran escala del universo . [ 1 ] En cosmología física , las simulaciones de N cuerpos se utilizan para estudiar procesos de formación de estructuras no lineales como filamentos galácticos y halos galácticos a partir de la influencia de la materia oscura . Las simulaciones directas de N cuerpos se utilizan para estudiar la evolución dinámica de cúmulos estelares .

Naturaleza de las partículas

Las "partículas" tratadas por la simulación pueden o no corresponder a objetos físicos de naturaleza particulada. Por ejemplo, una simulación de N cuerpos de un cúmulo estelar podría tener una partícula por estrella, de modo que cada partícula tenga algún significado físico. Por otro lado, una simulación de una nube de gas no puede permitirse tener una partícula por cada átomo o molécula de gas, ya que esto requeriría del orden deSe necesitan 10²³ partículas por cada mol de material (véase la constante de Avogadro ), por lo que una sola «partícula» representaría una cantidad mucho mayor de gas (a menudo implementada mediante hidrodinámica de partículas suavizadas ). Esta cantidad no tiene por qué tener significado físico, sino que debe elegirse como un compromiso entre la precisión y los requisitos informáticos manejables.

simulación de materia oscura

La materia oscura desempeña un papel importante en la formación de galaxias. La evolución temporal de la densidad f (en el espacio de fases) de partículas de materia oscura se puede describir mediante la ecuación de Boltzmann sin colisiones.

dFdt=Ft+vFFvΦ{\displaystyle {\frac {df}{dt}}={\frac {\partial f}{\partial t}}+\mathbf {v} \cdot \nabla f-{\frac {\partial f}{\partial \mathbf {v} }}\cdot \nabla \Phi }

En la ecuación,v{\displaystyle \mathbf {v} }es la velocidad, y Φ es el potencial gravitatorio dado por la ecuación de Poisson . Estas dos ecuaciones acopladas se resuelven en un universo de fondo en expansión, que se rige por las ecuaciones de Friedmann , después de determinar las condiciones iniciales de las partículas de materia oscura. El método convencional empleado para inicializar las posiciones y velocidades de las partículas de materia oscura implica mover partículas dentro de una red cartesiana uniforme o una configuración de partículas tipo vidrio. [ 2 ] Esto se hace utilizando una aproximación de teoría lineal o una teoría de perturbación de bajo orden . [ 3 ]

Simulaciones gravitacionales directas de N cuerpos

Simulación de N cuerpos de 400 objetos con parámetros cercanos a los de los planetas del Sistema Solar .

En las simulaciones gravitacionales directas de N cuerpos, las ecuaciones de movimiento de un sistema de N partículas bajo la influencia de sus fuerzas gravitacionales mutuas se integran numéricamente sin aproximaciones simplificadoras. Estos cálculos se utilizan en situaciones donde las interacciones entre objetos individuales, como estrellas o planetas, son importantes para la evolución del sistema.

Las primeras simulaciones gravitacionales directas de N cuerpos fueron realizadas por Erik Holmberg en el Observatorio de Lund en 1941, determinando las fuerzas entre estrellas en galaxias que se encuentran a través de la equivalencia matemática entre la propagación de la luz y la interacción gravitacional: colocando bombillas en las posiciones de las estrellas y midiendo los flujos de luz direccionales en las posiciones de las estrellas mediante una fotocélula, las ecuaciones de movimiento pueden integrarse conO(norte){\displaystyle O(N)}esfuerzo. [ 4 ] Las primeras simulaciones puramente computacionales fueron realizadas por Sebastian von Hoerner en el Astronomisches Rechen-Institut en Heidelberg , Alemania. Sverre Aarseth en la Universidad de Cambridge (Reino Unido ) dedicó toda su vida científica al desarrollo de una serie de códigos N -cuerpos altamente eficientes para aplicaciones astrofísicas que utilizan pasos de tiempo adaptativos (jerárquicos), un esquema de vecindad de Ahmad-Cohen y regularización de encuentros cercanos. La regularización es un truco matemático para eliminar la singularidad en la ley de gravitación newtoniana para dos partículas que se aproximan entre sí a una distancia arbitrariamente cercana. Los códigos de Sverre Aarseth se utilizan para estudiar la dinámica de cúmulos estelares, sistemas planetarios y núcleos galácticos.

Simulaciones de relatividad general

Muchas simulaciones son lo suficientemente grandes como para que los efectos de la relatividad general en el establecimiento de una cosmología de Friedmann-Lemaitre-Robertson-Walker sean significativos. Esto se incorpora en la simulación como una medida de distancia en evolución (o factor de escala ) en un sistema de coordenadas comóviles , lo que provoca que las partículas se ralenticen en dichas coordenadas (así como debido al desplazamiento al rojo de su energía física). Sin embargo, las contribuciones de la relatividad general y la velocidad finita de la gravedad pueden ignorarse, ya que las escalas de tiempo dinámicas típicas son largas en comparación con el tiempo de propagación de la luz en la simulación, y la curvatura del espacio-tiempo inducida por las partículas y sus velocidades son pequeñas. Las condiciones de contorno de estas simulaciones cosmológicas suelen ser periódicas (o toroidales), de modo que un borde del volumen de simulación coincide con el borde opuesto.

Optimizaciones de cálculos

Las simulaciones de N cuerpos son sencillas en principio, ya que solo implican la integración de las 6N ecuaciones diferenciales ordinarias que definen el movimiento de las partículas en la gravedad newtoniana . En la práctica, el número N de partículas involucradas suele ser muy grande (las simulaciones típicas incluyen muchos millones; la simulación Millennium incluyó diez mil millones) y el número de interacciones partícula-partícula que deben calcularse aumenta en el orden de N² , por lo que la integración directa de las ecuaciones diferenciales puede resultar prohibitivamente costosa desde el punto de vista computacional. Por lo tanto, se suelen utilizar diversas técnicas de refinamiento.

La integración numérica se suele realizar con pasos de tiempo pequeños mediante un método como la integración por saltos . Sin embargo, toda integración numérica conlleva errores. Los pasos más pequeños generan errores menores, pero el proceso es más lento. La integración por saltos tiene una precisión aproximada de segundo orden con respecto al paso de tiempo; otros integradores, como los métodos de Runge-Kutta, pueden alcanzar una precisión de cuarto orden o incluso superior.

Una de las mejoras más sencillas consiste en que cada partícula lleva consigo su propia variable de paso de tiempo, de modo que las partículas con tiempos dinámicos muy diferentes no tengan que evolucionar todas hacia adelante al ritmo de aquella con el tiempo más corto.

Existen dos métodos de aproximación básicos para reducir el tiempo de cálculo de este tipo de simulaciones. Estos métodos pueden reducir la complejidad computacional a O(N log N) o incluso mejor, aunque a costa de la precisión.

Métodos de árbol

En los métodos de árbol , como una simulación de Barnes-Hut , se suele usar un octree para dividir el volumen en celdas cúbicas y solo las interacciones entre partículas de celdas cercanas necesitan ser tratadas individualmente; las partículas en celdas distantes pueden tratarse colectivamente como una sola partícula grande centrada en el centro de masa de la celda distante (o como una expansión multipolar de bajo orden ). Esto puede reducir drásticamente la cantidad de interacciones de pares de partículas que deben calcularse. Para evitar que la simulación se sature al calcular interacciones partícula-partícula, las celdas deben refinarse a celdas más pequeñas en las partes más densas de la simulación que contienen muchas partículas por celda. Para simulaciones donde las partículas no están distribuidas uniformemente, los métodos de descomposición de pares bien separados de Callahan y Kosaraju producen un tiempo óptimo O( n  log n ) por iteración con dimensión fija. 

Método de malla de partículas

Otra posibilidad es el método de malla de partículas, en el que el espacio se discretiza en una malla y, para calcular el potencial gravitatorio , se supone que las partículas se dividen entre los vértices circundantes de 2x2 de la malla. La energía potencial Φ se puede obtener mediante la ecuación de Poisson.

2Φ=4πGRAMOρ,{\displaystyle \nabla ^{2}\Phi =4\pi G{\rho },\,}

donde G es la constante de Newton yρ{\displaystyle \rho }es la densidad (número de partículas en los puntos de la malla). La transformada rápida de Fourier puede resolver esto de manera eficiente pasando al dominio de la frecuencia donde la ecuación de Poisson tiene la forma simple

Φ^=4πGRAMOρ^k2,{\displaystyle {\sombrero {\Phi }}=-4\pi G{\frac {\sombrero {\rho }}{k^{2}}},}

dóndek{\displaystyle {\vec {k}}}es el número de onda comóvil y los sombreros denotan transformadas de Fourier. Dado quegramo=Φ{\displaystyle {\vec {g}}=-{\vec {\nabla }}\Phi }, ahora se puede encontrar el campo gravitatorio multiplicando porik{\displaystyle -i{\vec {k}}}y calculando la transformada inversa de Fourier (o calculando la transformada inversa y luego utilizando algún otro método). Dado que este método está limitado por el tamaño de la malla, en la práctica se utiliza una malla más pequeña u otra técnica (como la combinación con un árbol o un algoritmo simple de partículas-partículas) para calcular las fuerzas a pequeña escala. A veces se utiliza una malla adaptativa, en la que las celdas de la malla son mucho más pequeñas en las regiones más densas de la simulación.

Optimizaciones para casos especiales

Se utilizan varios algoritmos diferentes de perturbación gravitacional para obtener estimaciones bastante precisas de la trayectoria de los objetos en el Sistema Solar .

A menudo se opta por colocar un satélite en una órbita fija . La trayectoria de un satélite que orbita cerca de la Tierra se puede modelar con precisión partiendo de una órbita elíptica de dos cuerpos alrededor del centro de la Tierra, añadiendo pequeñas correcciones debidas al achatamiento terrestre , la atracción gravitatoria del Sol y la Luna, la resistencia atmosférica, etc. Es posible encontrar una órbita fija sin calcular la trayectoria real del satélite.

La trayectoria de un planeta pequeño, un cometa o una nave espacial de largo alcance a menudo se puede modelar con precisión partiendo de la órbita elíptica de dos cuerpos alrededor del Sol y añadiendo pequeñas correcciones debidas a la atracción gravitatoria de los planetas más grandes en sus órbitas conocidas.

Algunas características de las trayectorias a largo plazo de un sistema de partículas pueden calcularse directamente. No es necesario calcular la trayectoria real de ninguna partícula en particular como paso intermedio. Dichas características incluyen la estabilidad de Lyapunov , el tiempo de Lyapunov , diversas mediciones de la teoría ergódica , etc.

Sistemas de dos partículas

Aunque en las simulaciones típicas existen millones o miles de millones de partículas, estas suelen corresponder a una partícula real con una masa muy grande, típicamente 10⁹ masas solares . Esto puede generar problemas con las interacciones de corto alcance entre las partículas, como la formación de sistemas binarios de dos partículas . Dado que las partículas representan grandes cantidades de materia oscura o grupos de estrellas, estos sistemas binarios no son físicamente plausibles. Para evitarlo, se utiliza una ley de fuerza newtoniana suavizada , que no diverge como el inverso del cuadrado del radio a distancias cortas. La mayoría de las simulaciones implementan esto de forma natural al ejecutarlas en celdas de tamaño finito. Es importante implementar el procedimiento de discretización de tal manera que las partículas siempre ejerzan una fuerza nula sobre sí mismas.

Reblandecimiento

El suavizado es un truco numérico utilizado en las técnicas de N cuerpos para evitar divergencias numéricas cuando una partícula se acerca demasiado a otra (y la fuerza tiende al infinito). Esto se obtiene modificando el potencial gravitatorio regularizado de cada partícula como

Φ=1r2+ϵ2,{\displaystyle \Phi =-{\frac {1}{\sqrt {r^{2}+\epsilon ^{2}}}},}

(en lugar de 1/r) dondeϵ{\displaystyle \epsilon }es el parámetro de suavizado. El valor del parámetro de suavizado debe establecerse lo suficientemente pequeño para que las simulaciones sean realistas.

Resultados de simulaciones de N cuerpos

Las simulaciones de N cuerpos proporcionan hallazgos sobre la distribución a gran escala de la materia oscura y la estructura de los halos de materia oscura. Según las simulaciones de materia oscura fría, la distribución general de la materia oscura a gran escala no es completamente uniforme. En cambio, muestra una estructura que se asemeja a una red, compuesta por vacíos, paredes, filamentos y halos. Además, las simulaciones muestran que la relación entre la concentración de halos y factores como la masa, el espectro de fluctuación inicial y los parámetros cosmológicos está vinculada al tiempo real de formación de los halos. [ 5 ] En particular, los halos con menor masa tienden a formarse antes y, como resultado, tienen concentraciones más altas debido a la mayor densidad del Universo en el momento de su formación. Se ha encontrado que las formas de los halos se desvían de ser perfectamente esféricas. Típicamente, se encuentran halos alargados y se vuelven cada vez más prolados hacia sus centros. Sin embargo, las interacciones entre la materia oscura y los bariones afectarían la estructura interna de los halos de materia oscura. Se necesitan simulaciones que modelen tanto la materia oscura como los bariones para estudiar las estructuras a pequeña escala.

Incorporación de bariones, leptones y fotones en simulaciones

Muchas simulaciones solo consideran la materia oscura fría y, por lo tanto, solo incluyen la fuerza gravitatoria. Incorporar bariones , leptones y fotones a las simulaciones aumenta drásticamente su complejidad y, a menudo, requiere simplificaciones radicales de la física subyacente. Sin embargo, este es un campo de suma importancia y muchas simulaciones modernas intentan comprender los procesos que ocurren durante la formación de galaxias , los cuales podrían explicar el sesgo en la distribución de galaxias .

Complejidad computacional

Reif y Tate [ 6 ] demuestran que si el problema de alcanzabilidad de n cuerpos se define de la siguiente manera: dados n cuerpos que satisfacen una ley de potencial electrostático fija, determinar si un cuerpo alcanza una bola de destino en un límite de tiempo dado donde requerimos una precisión de poly( n ) bits y el tiempo objetivo es poly( n ) está en PSPACE .

Por otro lado, si la pregunta es si el cuerpo finalmente alcanza la bola de destino, el problema es PSPACE-difícil. Estos límites se basan en límites de complejidad similares obtenidos para el trazado de rayos .

Simulaciones de ejemplo

Código estándar común

La implementación más simple de simulaciones de N cuerpos dondenorte3{\textstyle n\geq 3}es una propagación ingenua de cuerpos en órbita; ingenua implica que las únicas fuerzas que actúan sobre los cuerpos en órbita son las fuerzas gravitatorias que ejercen entre sí. En lenguajes de programación orientados a objetos , como C++ , cierto código repetitivo es útil para establecer las estructuras matemáticas fundamentales, así como los contenedores de datos necesarios para la propagación; a saber, vectores de estado y, por lo tanto, vectores , y algún objeto fundamental que contenga estos datos, así como la masa de un cuerpo en órbita. Este método también es aplicable a otros tipos de simulaciones de N cuerpos; una simulación de masas puntuales con cargas utilizaría un método similar, sin embargo, la fuerza se debería a la atracción o repulsión por interacción de campos eléctricos. En cualquier caso, la aceleración de una partícula es el resultado de la suma de los vectores de fuerza, dividida por la masa de la partícula:

a=1metroF{\displaystyle {\vec {a}}={\frac {1}{m}}\sum {\vec {F}}}

Un ejemplo de un método programáticamente estable y escalable para contener datos cinemáticos de una partícula es el uso de matrices de longitud fija, lo que en código optimizado permite una fácil asignación de memoria y predicción de los recursos consumidos; como se puede ver en el siguiente código C++:

struct Vector3{doble e [ 3 ] = { 0 };Vector3 () {}~ Vector3 () {}Vector3 en línea ( doble e0 , doble e1 , doble e2 ){esto -> e [ 0 ] = e0 ;esto -> e [ 1 ] = e1 ;esto -> e [ 2 ] = e2 ;}};struct OrbitalEntity{doble e [ 7 ] = { 0 };OrbitalEntity () {}~ OrbitalEntity () {}inline OrbitalEntity ( double e0 , double e1 , double e2 , double e3 , double e4 , double e5 , double e6 ){esto -> e [ 0 ] = e0 ;esto -> e [ 1 ] = e1 ;esto -> e [ 2 ] = e2 ;esto -> e [ 3 ] = e3 ;esto -> e [ 4 ] = e4 ;esto -> e [ 5 ] = e5 ;esto -> e [ 6 ] = e6 ;}};

Tenga en cuenta que OrbitalEntitycontiene suficiente espacio para un vector de estado, donde:

  • mi0=incógnita{\textstyle e_{0}=x}, la proyección del vector de posición de los objetos en el espacio cartesiano a lo largo de[100]{\displaystyle \left[1\;0\;0\right]}
  • mi1=y{\textstyle e_{1}=y}, la proyección del vector de posición de los objetos en el espacio cartesiano a lo largo de[010]{\displaystyle \left[0\;1\;0\right]}
  • mi2=z{\textstyle e_{2}=z}, la proyección del vector de posición de los objetos en el espacio cartesiano a lo largo de[001]{\displaystyle \left[0\;0\;1\right]}
  • mi3=incógnita˙{\textstyle e_{3}={\dot {x}}}, la proyección del vector de velocidad del objeto en el espacio cartesiano a lo largo de[100]{\displaystyle \left[1\;0\;0\right]}
  • mi4=y˙{\textstyle e_{4}={\dot {y}}}, la proyección del vector de velocidad del objeto en el espacio cartesiano a lo largo de[010]{\displaystyle \left[0\;1\;0\right]}
  • mi5=z˙{\textstyle e_{5}={\dot {z}}}, la proyección del vector de velocidad del objeto en el espacio cartesiano a lo largo de[001]{\displaystyle \left[0\;0\;1\right]}

Además, OrbitalEntitycontiene espacio suficiente para un valor de masa.

Inicialización de los parámetros de simulación

Comúnmente, las simulaciones de N cuerpos serán sistemas basados ​​en algún tipo de ecuaciones de movimiento ; de estas, la mayoría dependerán de alguna configuración inicial para "sembrar" la simulación. En sistemas como aquellos que dependen de algún potencial gravitatorio o eléctrico, la fuerza sobre una entidad de simulación es independiente de su velocidad. Por lo tanto, para sembrar las fuerzas de la simulación, solo se necesitan posiciones iniciales, pero esto no permitirá la propagación: se requieren velocidades iniciales. Consideremos un planeta orbitando una estrella: no tiene movimiento, pero está sujeto a la atracción gravitatoria de su estrella anfitriona. A medida que avanza el tiempo y se agregan pasos de tiempo , ganará velocidad de acuerdo con su aceleración. Para un instante dado en el tiempo,tnorte{\displaystyle t_{n}}, la aceleración resultante de un cuerpo debido a sus masas vecinas es independiente de su velocidad; sin embargo, para el paso de tiempotnorte+1{\displaystyle t_{n+1}}, el cambio de posición resultante es significativamente diferente debido a la dependencia inherente de la propagación con respecto a la velocidad. En los mecanismos de propagación básicos, como el método de Euler simpléctico que se utilizará más adelante, la posición de un objeto entnorte+1{\displaystyle t_{n+1}}depende únicamente de su velocidad entnorte{\displaystyle t_{n}}, ya que el cambio de posición se calcula mediante

rtnorte+1=rtnorte+vtnorteΔt{\displaystyle {\vec {r}}_{t_{n+1}}={\vec {r}}_{t_{n}}+{\vec {v}}_{t_{n}}\cdot \Delta t}

Sin aceleración,vtnorte{\textstyle {\vec {v}}_{t_{n}}}es estático, sin embargo, desde la perspectiva de un observador que solo ve la posición, se necesitarán dos pasos de tiempo para ver un cambio en la velocidad.

Se puede realizar una simulación similar a la del sistema solar calculando las distancias promedio de masas puntuales equivalentes a planetas desde una estrella central. Para simplificar el código, se utilizará un enfoque no riguroso basado en semiejes mayores y velocidades medias. Es necesario reservar espacio de memoria para estos cuerpos antes de configurarlos; para permitir la escalabilidad, se puede usar el comando malloc .

OrbitalEntity * orbital_entities = malloc ( sizeof ( OrbitalEntity ) * ( 9 + N_ASTEROIDS ));orbital_entities [ 0 ] = { 0.0 , 0.0 , 0.0 , 0.0 , 0.0 , 0.0 , 1.989e30 }; // una estrella similar al solorbital_entities [ 1 ] = { 57.909e9 , 0.0 , 0.0 , 0.0 , 47.36e3 , 0.0 , 0.33011e24 }; // un planeta similar a Mercurioorbital_entities [ 2 ] = { 108.209e9 , 0.0 , 0.0 , 0.0 , 35.02e3 , 0.0 , 4.8675e24 }; // un planeta similar a Venusorbital_entities [ 3 ] = { 149.596e9 , 0.0 , 0.0 , 0.0 , 29.78e3 , 0.0 , 5.9724e24 }; // un planeta similar a la Tierraorbital_entities [ 4 ] = { 227.923e9 , 0.0 , 0.0 , 0.0 , 24.07e3 , 0.0 , 0.64171e24 }; // un planeta similar a Marteorbital_entities [ 5 ] = { 778.570e9 , 0.0 , 0.0 , 0.0 , 13e3 , 0.0 , 1898.19e24 }; // un planeta similar a Júpiterorbital_entities [ 6 ] = { 1433.529e9 , 0.0 , 0.0 , 0.0 , 9.68e3 , 0.0 , 568.34e24 }; // un planeta similar a Saturnoorbital_entities [ 7 ] = { 2872.463e9 , 0.0 , 0.0 , 0.0 , 6.80e3 , 0.0 , 86.813e24 }; // un planeta similar a Uranoorbital_entities [ 8 ] = { 4495.060e9 , 0.0 , 0.0 , 0.0 , 5.43e3 , 0.0 , 102.413e24 }; // un planeta similar a Neptuno

donde N_ASTEROIDSes una variable que permanecerá en 0 temporalmente, pero permite la inclusión futura de un número significativo de asteroides, a discreción del usuario. Un paso crítico para la configuración de las simulaciones es establecer los rangos de tiempo de la simulación,t0{\displaystyle t_{0}}atfin{\displaystyle t_{\text{fin}}}así como el paso de tiempo incrementaldt{\displaystyle dt}lo que hará avanzar la simulación:

doble t_0 = 0 ;doble t = t_0 ;doble dt = 86400 ;double t_end = 86400 * 365 * 10 ; // aproximadamente una década en segundosdoble BIG_G = 6,67e-11 ; // constante gravitacional

Las posiciones y velocidades establecidas anteriormente se interpretan como correctas parat=t0{\displaystyle t=t_{0}}.

El alcance de una simulación lógicamente sería para el período dondet0t<tfin{\displaystyle t_{0}\leq t<t_{\text{fin}}}.

Propagación

Una simulación completa puede constar de innumerables pasos de tiempo. En el nivel elemental, cada paso de tiempo implica calcular, para cada cuerpo:

  • las fuerzas que actúan sobre el cuerpo;
  • aceleración (a{\displaystyle {\vec {a}}});
  • velocidad (vnorte=vnorte1+anorteΔt{\displaystyle {\vec {v}}_{n}={\vec {v}}_{n-1}+{\vec {a}}_{n}\cdot \Delta t});
  • y posición (rnorte+1=rnorte+vnorteΔt{\displaystyle {\vec {r}}_{n+1}={\vec {r}}_{n}+{\vec {v}}_{n}\cdot \Delta t}).

Lo anterior se puede implementar de forma bastante sencilla con un bucle while que continúa mientrast{\displaystyle t}existe en el rango mencionado:

mientras ( t < t_end ) { para ( size_t m1_idx = 0 ; m1_idx < 9 + N_ASTEROIDS ; m1_idx ++ ) { Vector3 a_g = { 0 , 0 , 0 };para ( tamaño_t m2_idx = 0 ; m2_idx < 9 + N_ASTEROIDS ; m2_idx ++ ) { si ( m2_idx != m1_idx ) { Vector3 r_vector ;r_vector . e [ 0 ] = orbital_entities [ m1_idx ]. e [ 0 ] - orbital_entities [ m2_idx ]. e [ 0 ]; r_vector . e [ 1 ] = orbital_entities [ m1_idx ]. e [ 1 ] - orbital_entities [ m2_idx ]. e [ 1 ]; r_vector . e [ 2 ] = orbital_entities [ m1_idx ]. e [ 2 ] - orbital_entities [ m2_idx ]. e [ 2 ];double r_mag = sqrt ( r_vector . e [ 0 ] * r_vector . e [ 0 ] + r_vector . e [ 1 ] * r_vector . e [ 1 ] + r_vector . e [ 2 ] * r_vector . e [ 2 ]);doble aceleración = -1.0 * BIG_G * ( orbital_entities [ m2_idx ]. e [ 6 ]) / pow ( r_mag , 2.0 );Vector3 r_unit_vector = { r_vector . e [ 0 ] / r_mag , r_vector . e [ 1 ] / r_mag , r_vector . e [ 2 ] / r_mag };a_g . e [ 0 ] += aceleración * r_unit_vector . e [ 0 ]; a_g . e [ 1 ] += aceleración * r_unit_vector . e [ 1 ]; a_g . e [ 2 ] += aceleración * r_unit_vector . e [ 2 ]; } }orbital_entities [ m1_idx ] .e [ 3 ] + = a_g.e [ 0 ] * dt ; orbital_entities [ m1_idx ] .e [ 4 ] + = a_g.e [ 1 ] * dt ; orbital_entities [ m1_idx ] .e [ 5 ] + = a_g.e [ 2 ] * dt ; }for ( size_t entity_idx = 0 ; entity_idx < 9 + N_ASTEROIDS ; entity_idx ++ ) { orbital_entities [ entity_idx ]. e [ 0 ] += orbital_entities [ entity_idx ]. e [ 3 ] * dt ; orbital_entities [ entity_idx ]. e [ 1 ] += orbital_entities [ entity_idx ]. e [ 4 ] * dt ; orbital_entities [ entity_idx ]. e [ 2 ] += orbital_entities [ entity_idx ]. e [ 5 ] * dt ; } t += dt ; }

Centrándonos en los cuatro planetas rocosos interiores de la simulación, las trayectorias resultantes de la propagación anterior se muestran a continuación:

Véase también

Referencias

  1. Trenti, Michele; Choza, Piet (2008). "Simulaciones de N cuerpos (gravitacionales)" . Scholarpedia . 3 (5): 3930. Código Bib : 2008SchpJ...3.3930T . doi : 10.4249/scholarpedia.3930 .
  2. CMBaugh; E.Gaztañaga; G. Efstathiou (1995). "Una comparación de la evolución de los campos de densidad en la teoría de perturbaciones y simulaciones numéricas - II. Análisis de recuentos en celdas" . Monthly Notices of the Royal Astronomical Society . arXiv : astro-ph/9408057 . doi : 10.1093/mnras/274.4.1049 . eISSN 1365-2966 . 
  3. Jenkins, Adrian (21 de abril de 2010). "Condiciones iniciales de la teoría de perturbación lagrangiana de segundo orden para resimulaciones" . Monthly Notices of the Royal Astronomical Society . 403 (4): 1859– 1872. arXiv : 0910.0258 . Bibcode : 2010MNRAS.403.1859J . doi : 10.1111/j.1365-2966.2010.16259.x . eISSN 1365-2966 . ISSN 0035-8711 .  
  4. Holmberg, Erik (1941). "Sobre las tendencias de agrupamiento entre las nebulosas. II. Un estudio de encuentros entre modelos de laboratorio de sistemas estelares mediante un nuevo procedimiento de integración" . The Astrophysical Journal . 94 (3): 385– 395. Bibcode : 1941ApJ....94..385H . doi : 10.1086/144344 .
  5. Navarro, Julio F.; Frenk, Carlos S.; White, Simon DM (diciembre de 1997). "Un perfil de densidad universal a partir de agrupamiento jerárquico". The Astrophysical Journal . 490 (2): 493– 508. arXiv : astro-ph/9611107 . Bibcode : 1997ApJ...490..493N . doi : 10.1086/304888 . eISSN 1538-4357 . ISSN 0004-637X .  
  6. John H. Reif; Stephen R. Tate (1993). "La complejidad de la simulación de N cuerpos". Autómatas, lenguajes y programación . Notas de clase en ciencias de la computación. págs. 162–176 . CiteSeerX 10.1.1.38.6242 .  

Lecturas adicionales

  • von Hoerner, Sebastián (1960). "Die numerische Integration des n-Körper-Problemes für Sternhaufen. I". Zeitschrift für Astrophysik (en alemán). 50 : 184. Código Bib : 1960ZA.....50..184V .
  • von Hoerner, Sebastián (1963). "Die numerische Integration des n -Körper-Problemes für Sternhaufen. II". Zeitschrift für Astrophysik (en alemán). 57 : 47. Código Bib : 1963ZA.....57...47V .
  • Aarseth, Sverre J. (2003). Simulaciones gravitacionales de N cuerpos: herramientas y algoritmos . Cambridge University Press . ISBN 978-0-521-12153-8.
  • Bertschinger, Edmund (1998). "Simulaciones de la formación de estructuras en el universo". Annual Review of Astronomy and Astrophysics . 36 (1): 599– 654. Bibcode : 1998ARA & A..36..599B . doi : 10.1146/annurev.astro.36.1.599 .
  • Binney, James; Tremaine, Scott (1987). Dinámica galáctica . Princeton University Press . ISBN 978-0-691-08445-9.
  • Callahan, Paul B.; Kosaraju, Sambasiva Rao (1992). "Una descomposición de conjuntos de puntos multidimensionales con aplicaciones a k vecinos más cercanos y campos potenciales de n cuerpos (versión preliminar)". STOC '92: Proc. ACM Symp. Theory of Computing . ACM..
Obtenido de " https://en.wikipedia.org/w/index.php?title=N-body_simulation&oldid=1347839173 "