Simulaciones Gravitacionales de N-Cuerpos
Eduardo Jeraldo D.
Departmento de Ciencias FísicasUniversidad Nacional Andrés Bello
16 de Diciembre de 2011
Esquema
1 IntroducciónMarco Teórico.
2 DesarrolloCreación del Programa.Implementación del Programa.Optimización del Programa.
3 Tiempos de Ejecución
4 Conclución
Eduardo Jeraldo (UNAB) Simulación de N-Cuerpos 16/11/2011 2 / 22
Esquema
1 IntroducciónMarco Teórico.
2 DesarrolloCreación del Programa.Implementación del Programa.Optimización del Programa.
3 Tiempos de Ejecución
4 Conclución
Eduardo Jeraldo (UNAB) Simulación de N-Cuerpos 16/11/2011 2 / 22
Esquema
1 IntroducciónMarco Teórico.
2 DesarrolloCreación del Programa.Implementación del Programa.Optimización del Programa.
3 Tiempos de Ejecución
4 Conclución
Eduardo Jeraldo (UNAB) Simulación de N-Cuerpos 16/11/2011 2 / 22
Esquema
1 IntroducciónMarco Teórico.
2 DesarrolloCreación del Programa.Implementación del Programa.Optimización del Programa.
3 Tiempos de Ejecución
4 Conclución
Eduardo Jeraldo (UNAB) Simulación de N-Cuerpos 16/11/2011 2 / 22
Introducción
Contenido
1 IntroducciónMarco Teórico.
2 DesarrolloCreación del Programa.Implementación del Programa.Optimización del Programa.
3 Tiempos de Ejecución
4 Conclución
Eduardo Jeraldo (UNAB) Simulación de N-Cuerpos 16/11/2011 3 / 22
Introducción Marco Teórico.
Contenido
1 IntroducciónMarco Teórico.
2 DesarrolloCreación del Programa.Implementación del Programa.Optimización del Programa.
3 Tiempos de Ejecución
4 Conclución
Eduardo Jeraldo (UNAB) Simulación de N-Cuerpos 16/11/2011 4 / 22
Introducción Marco Teórico.
Marco Teórico
• ¿Que es una simulación de N-Cuerpos?
Eduardo Jeraldo (UNAB) Simulación de N-Cuerpos 16/11/2011 5 / 22
Introducción Marco Teórico.
Marco Teórico
• ¿Que es una simulación de N-Cuerpos?
DefiniciónUna simulación de N-cuerpos es una simulación de un sistemadinámico de las partículas, por lo general bajo la influencia de lagravedad.
Eduardo Jeraldo (UNAB) Simulación de N-Cuerpos 16/11/2011 5 / 22
Introducción Marco Teórico.
Marco Teórico
• ¿Para que sirve resolver este problema?
Eduardo Jeraldo (UNAB) Simulación de N-Cuerpos 16/11/2011 5 / 22
Introducción Marco Teórico.
Marco Teórico
• ¿Para que sirve resolver este problema?
RespuestaEstas simulaciones se utilizan para estudiar la evolución dinámica delos cúmulos estelares, los procesos de formación, como el proceso deformación de filamentos de galaxias y los halos de galaxias de materiaoscura en la cosmología física.
Eduardo Jeraldo (UNAB) Simulación de N-Cuerpos 16/11/2011 5 / 22
Desarrollo
Contenido
1 IntroducciónMarco Teórico.
2 DesarrolloCreación del Programa.Implementación del Programa.Optimización del Programa.
3 Tiempos de Ejecución
4 Conclución
Eduardo Jeraldo (UNAB) Simulación de N-Cuerpos 16/11/2011 6 / 22
Desarrollo Creación del Programa.
Contenido
1 IntroducciónMarco Teórico.
2 DesarrolloCreación del Programa.Implementación del Programa.Optimización del Programa.
3 Tiempos de Ejecución
4 Conclución
Eduardo Jeraldo (UNAB) Simulación de N-Cuerpos 16/11/2011 7 / 22
Desarrollo Creación del Programa.
Creación del Programa
Para realizar la simulación necesitamos:• Resolver la ecuación:
• Leyes de Newton.• Constantes Unitarias.
Eduardo Jeraldo (UNAB) Simulación de N-Cuerpos 16/11/2011 8 / 22
Desarrollo Creación del Programa.
Creación del Programa
Para realizar la simulación necesitamos:• Resolver la ecuación:
• Leyes de Newton.
La ecuación que debemos resolver es la ecuación de Newton.
F = ma
Eduardo Jeraldo (UNAB) Simulación de N-Cuerpos 16/11/2011 8 / 22
Desarrollo Creación del Programa.
Creación del Programa
Para realizar la simulación necesitamos:• Resolver la ecuación:
• Leyes de Newton.
Además la fuerza F es la fuerza de interacción entre cuerpos que seencuentran bajo potencial gravitatorio.
Fi =∑i 6=j
Gmimj(ri − rj)∣∣ri − rj
∣∣3
Eduardo Jeraldo (UNAB) Simulación de N-Cuerpos 16/11/2011 8 / 22
Desarrollo Creación del Programa.
Creación del Programa
Para realizar la simulación necesitamos:• Resolver la ecuación:
• Constantes Unitarias.
Para no tratar con tantos números, al momento del cálculo, definimosuna manera de que G sea igual a 1. Para esto usamos:
[L]
= α[m][
M]
= β[Kg]
Eduardo Jeraldo (UNAB) Simulación de N-Cuerpos 16/11/2011 8 / 22
Desarrollo Creación del Programa.
Creación del Programa
Para realizar la simulación necesitamos:• Resolver la ecuación:
• Constantes Unitarias.
Las siguientes ecuaciones las usamos para la siguiente relación:
[G]= 1
[L]3[
M] [
T]2 = 6,693 ∗ 1011
[m]3[
Kg] [
s]2
Eduardo Jeraldo (UNAB) Simulación de N-Cuerpos 16/11/2011 8 / 22
Desarrollo Creación del Programa.
Creación del Programa
Para realizar la simulación necesitamos:• Resolver la ecuación:
• Constantes Unitarias.
Para dejar esto bien implementado, despejamos cuanto tendrá quevaler el tiempo para que G = 1.
[T]=
(α3
6,693β
) 12
∗ 10−112[s]
Eduardo Jeraldo (UNAB) Simulación de N-Cuerpos 16/11/2011 8 / 22
Desarrollo Implementación del Programa.
Contenido
1 IntroducciónMarco Teórico.
2 DesarrolloCreación del Programa.Implementación del Programa.Optimización del Programa.
3 Tiempos de Ejecución
4 Conclución
Eduardo Jeraldo (UNAB) Simulación de N-Cuerpos 16/11/2011 9 / 22
Desarrollo Implementación del Programa.
Implementaciación del Programa.
• Programa realizado en C.• Usar un integrador de dos pasos.
Eduardo Jeraldo (UNAB) Simulación de N-Cuerpos 16/11/2011 10 / 22
Desarrollo Implementación del Programa.
Implementaciación del Programa.
• Programa realizado en C.• Usar un integrador de dos pasos.
Eduardo Jeraldo (UNAB) Simulación de N-Cuerpos 16/11/2011 10 / 22
Desarrollo Implementación del Programa.
Implementaciación del Programa.
La parte principal del programa es:
for(j=0;j<N;j++){aa[0][j] = aa[1][j] = aa[2][j] = r = 0.0;for(k=0;k<N;k++){if(k!=j){rx = s[0][j]-s[0][k];ry = s[1][j]-s[1][k];rz = s[2][j]-s[2][k];r1 = 1/(rx*rx + ry*ry + rz*rz);r = sqrt(r1*r1*r1);aa[0][j] -= G*m[k]*rx*r;aa[1][j] -= G*m[k]*ry*r;aa[2][j] -= G*m[k]*rz*r;
}}
}
Eduardo Jeraldo (UNAB) Simulación de N-Cuerpos 16/11/2011 11 / 22
Desarrollo Optimización del Programa.
Contenido
1 IntroducciónMarco Teórico.
2 DesarrolloCreación del Programa.Implementación del Programa.Optimización del Programa.
3 Tiempos de Ejecución
4 Conclución
Eduardo Jeraldo (UNAB) Simulación de N-Cuerpos 16/11/2011 12 / 22
Desarrollo Optimización del Programa.
Optimización del Cálculo.
Para que la rutina de cálculo sea óptima debemos:• Optimizar el cálculo:
• Cálculo Directo.• Cálculo de parte de las aceleraciones.• Cálculo usando Open MP.
Eduardo Jeraldo (UNAB) Simulación de N-Cuerpos 16/11/2011 13 / 22
Desarrollo Optimización del Programa.
Optimización del Cálculo.
Para que la rutina de cálculo sea óptima debemos:• Optimizar el cálculo:
• Cálculo Directo.
La primera rutina realiza un cálculo de manera directa.
Eduardo Jeraldo (UNAB) Simulación de N-Cuerpos 16/11/2011 13 / 22
Desarrollo Optimización del Programa.
Optimización del Cálculo.
Para que la rutina de cálculo sea óptima debemos:• Optimizar el cálculo:
• Cálculo de parte de las aceleraciones.
Solo calculamos una parte de la aceleraciones.Gracias a que las aceleraciones representan una matriz de la forma:
0 a12 . . . a1n
a21 0 . . . a2n...
...an1 an2 . . . 0
=
0 a12 . . . a1n
−a12 0 . . . a2n...
...−a1n −a2n . . . 0
Eduardo Jeraldo (UNAB) Simulación de N-Cuerpos 16/11/2011 13 / 22
Desarrollo Optimización del Programa.
Optimización del Cálculo.La programación para el cálculo de la parte superior de la matriz deaceleracion:for(j=0;j<N;j++){r = 0.0;for(k=j;k<N;k++) {ax = ay = az = 0.0;if(k!=j){rx = x[0][j]-x[0][k]; ry = x[1][j]-x[1][k];rz = x[2][j]-x[2][k]; r1 = 1 /(rx*rx + ry*ry + rz*rz);r = sqrt(r1*r1*r1);ax = -G*m[k]*rx*r; ay = -G*m[k]*ry*r; az = -G*m[k]*rz*r;
}aa[0][j] += ax; aa[0][k] -= ax;aa[1][j] += ay; aa[1][k] -= ay;aa[2][j] += az; aa[2][k] -= az;
}}
Eduardo Jeraldo (UNAB) Simulación de N-Cuerpos 16/11/2011 14 / 22
Desarrollo Optimización del Programa.
Optimización del Cálculo.
Para que la rutina de cálculo sea optima debemos:• Optimizar el cálculo:
• Cálculo usando Open MP.
Open MP nos permite realizar el calcular de manera paralela en losnúcleos del computador en que se ejecuta el programa.
Eduardo Jeraldo (UNAB) Simulación de N-Cuerpos 16/11/2011 15 / 22
Desarrollo Optimización del Programa.
Optimización del Cálculo.Agregamos la linea que comienza con #pragma para realizar laparalelización#pragma omp parallel for private(x,y,z,ax,ay,az,k,
rx,ry,rz,r1,r2,r)for(j=0;j<N;j++){x = s[0][j]; y = s[1][j]; z = s[2][j];ax = ay =az = 0.0;for(k=0;k<N;k++){if(k!=j){rx = x-s[0][k]; ry = y-s[1][k]; rz = z-s[2][k];r1 = rx*rx + ry*ry + rz*rz; r2 = r1*r1*r1;r = 1/sqrt(r2);ax -= G*m[k]*rx*r; ay -= G*m[k]*ry*r; az -= G*m[k]*rz*r;
}}aa[0][j] = ax; aa[1][j] = ay; aa[2][j] = az;
}
Eduardo Jeraldo (UNAB) Simulación de N-Cuerpos 16/11/2011 16 / 22
Desarrollo Optimización del Programa.
Optimización del Cálculo.
Para que la rutina de cálculo sea optima debemos:• Optimizar el cálculo:
• Cálculo usando Open MP.
Open MP nos permite realizar el calcular de manera paralela en losnúcleos del computador en que se ejecuta el programa.
Eduardo Jeraldo (UNAB) Simulación de N-Cuerpos 16/11/2011 17 / 22
Otra paralelización es posible usando la siguiente rutina:#pragma omp parallel forfor(j=0;j<3*n;j++) aa[0][j] = aa[1][j] = aa[2][j] = 0.0;#pragma omp parallel for reduction(+:bb) private(gmj,x,y,z
,ax,ay,az,k,rx,ry,rz,r,r1,r2,f)for(j=1;j<(n/2);j++){gmj = G*mj; x = s[0][j]; y = s[1][j]; z = s[2][j];ax = ay =az = 0.0; for(k=(j+1);k<n;k++){rx = x-s[0][k]; ry = y-s[1][k]; rz = z-s[2][k];r1 = rx*rx + ry*ry + rz*rz;r2 = r1*r1*r1; r = 1/sqrt(r2);f = G*mj*r; ax += f*rx; ay += f*ry; az += f*rz; f = gmj*r;aa[0][k] -= f*rx; aa[1][k] -= f*ry; aa[2][k] -= f*rz;} aa[0][j] += ax; aa[1][j] += ay; aa[2][j] += az;
m = n - j; if(m!=j){gmj = G*mj; ax = ay =az = 0.0;for(k=m+j;k<n;k++){rx = x-s[0][k]; ry = y-s[1][k]; rz = z-s[2][k];r1 = rx*rx + ry*ry + rz*rz;r2 = r1*r1*r1; r = 1/sqrt(r2);f = G*mj*r; ax += f*rx; ay += f*ry; az += f*rz;f = gmj*r; aa[0][k] -= f*rx; aa[1][k] -= f*ry; aa[2][k] -= f*rz;
} aa[1][m] += ax; aa[1][m] += ay; aa[2][m] += az;}}}
Tiempos de Ejecución
Contenido
1 IntroducciónMarco Teórico.
2 DesarrolloCreación del Programa.Implementación del Programa.Optimización del Programa.
3 Tiempos de Ejecución
4 Conclución
Eduardo Jeraldo (UNAB) Simulación de N-Cuerpos 16/11/2011 19 / 22
Tiempos de Ejecución
Tiempos de Ejecución
Estos son los tiempos de ejecución para una maquina con dosnúcleos:
Figura: Tiempos de ejecución para mil, diez mil y cien mil cuerpos
Eduardo Jeraldo (UNAB) Simulación de N-Cuerpos 16/11/2011 20 / 22
Conclución
Contenido
1 IntroducciónMarco Teórico.
2 DesarrolloCreación del Programa.Implementación del Programa.Optimización del Programa.
3 Tiempos de Ejecución
4 Conclución
Eduardo Jeraldo (UNAB) Simulación de N-Cuerpos 16/11/2011 21 / 22
Conclución
Conclusión
• El tiempo del programa, usando Open MP, depende delcompilador y la version de este mismo.
• Se debe explorar bien cual es el integrador mas optimo, y queentrege los resultados mas reales.
• Algunos calculos de la libreria matematica se demoran mas queotros.
• El uso de pow(a,b) demora mas que multiplicar a veces a.• Es mas facil multiplicar que dividir.
Eduardo Jeraldo (UNAB) Simulación de N-Cuerpos 16/11/2011 22 / 22
Conclución
Conclusión
• El tiempo del programa, usando Open MP, depende delcompilador y la version de este mismo.
• Se debe explorar bien cual es el integrador mas optimo, y queentrege los resultados mas reales.
• Algunos calculos de la libreria matematica se demoran mas queotros.
• El uso de pow(a,b) demora mas que multiplicar a veces a.• Es mas facil multiplicar que dividir.
Eduardo Jeraldo (UNAB) Simulación de N-Cuerpos 16/11/2011 22 / 22
Conclución
Conclusión
• El tiempo del programa, usando Open MP, depende delcompilador y la version de este mismo.
• Se debe explorar bien cual es el integrador mas optimo, y queentrege los resultados mas reales.
• Algunos calculos de la libreria matematica se demoran mas queotros.
• El uso de pow(a,b) demora mas que multiplicar a veces a.• Es mas facil multiplicar que dividir.
Eduardo Jeraldo (UNAB) Simulación de N-Cuerpos 16/11/2011 22 / 22
Conclución
Conclusión
• El tiempo del programa, usando Open MP, depende delcompilador y la version de este mismo.
• Se debe explorar bien cual es el integrador mas optimo, y queentrege los resultados mas reales.
• Algunos calculos de la libreria matematica se demoran mas queotros.
• El uso de pow(a,b) demora mas que multiplicar a veces a.• Es mas facil multiplicar que dividir.
Eduardo Jeraldo (UNAB) Simulación de N-Cuerpos 16/11/2011 22 / 22
Conclución
Conclusión
• El tiempo del programa, usando Open MP, depende delcompilador y la version de este mismo.
• Se debe explorar bien cual es el integrador mas optimo, y queentrege los resultados mas reales.
• Algunos calculos de la libreria matematica se demoran mas queotros.
• El uso de pow(a,b) demora mas que multiplicar a veces a.• Es mas facil multiplicar que dividir.
Eduardo Jeraldo (UNAB) Simulación de N-Cuerpos 16/11/2011 22 / 22