SlideShare una empresa de Scribd logo
Simulaciones Gravitacionales de N-Cuerpos

              Eduardo Jeraldo D.

           Departmento de Ciencias Físicas
           Universidad Nacional Andrés Bello


           16 de Diciembre de 2011
Esquema


1   Introducción
       Marco Teórico.

2   Desarrollo
      Creació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ón
       Marco Teórico.

2   Desarrollo
      Creació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ón
       Marco Teórico.

2   Desarrollo
      Creació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ón
       Marco Teórico.

2   Desarrollo
      Creació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ón
       Marco Teórico.

2   Desarrollo
      Creació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ón
       Marco Teórico.

2   Desarrollo
      Creació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ón
Una simulación de N-cuerpos es una simulación de un sistema
dinámico de las partículas, por lo general bajo la influencia de la
gravedad.




   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?

                                Respuesta
Estas simulaciones se utilizan para estudiar la evolución dinámica de
los cúmulos estelares, los procesos de formación, como el proceso de
formación de filamentos de galaxias y los halos de galaxias de materia
oscura en la cosmología física.




   Eduardo Jeraldo (UNAB)    Simulación de N-Cuerpos        16/11/2011   5 / 22
Desarrollo


                                Contenido


1   Introducción
       Marco Teórico.

2   Desarrollo
      Creació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ón
       Marco Teórico.

2   Desarrollo
      Creació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 se
              encuentran bajo potencial gravitatorio.



                                             mi mj (ri − rj )
                            Fi =         G                 3
                                   i=j           ri − rj




   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, definimos
      una 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:


                                    3                                         3
                                L                                       m
                  G =1                  2
                                            = 6, 693 ∗ 1011                       2
                            M       T                               Kg        s




   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á que
                   valer el tiempo para que G = 1.


                                                1
                                     α3         2            11
                            T =                     ∗ 10− 2 s
                                  6, 693β




   Eduardo Jeraldo (UNAB)          Simulación de N-Cuerpos               16/11/2011   8 / 22
Desarrollo   Implementación del Programa.


                                Contenido


1   Introducción
       Marco Teórico.

2   Desarrollo
      Creació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ón
       Marco Teórico.

2   Desarrollo
      Creació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     0    a12 . . . a1n
           a21 0 . . . a2n  −a12    0  . . . a2n 
                             = .
                                                 
            .            .                      . 
            .
             .            .   .
                          .      .               . 
                                                 .
            an1 an2 . . . 0     −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 de
aceleracion:
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 los
      nú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 la
paralelizació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 los
      nú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 for
for(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ón
       Marco Teórico.

2   Desarrollo
      Creació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 dos
nú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ón
       Marco Teórico.

2   Desarrollo
      Creació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 del
 compilador y la version de este mismo.
• Se debe explorar bien cual es el integrador mas optimo, y que
  entrege los resultados mas reales.
• Algunos calculos de la libreria matematica se demoran mas que
  otros.
      • 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 del
 compilador y la version de este mismo.
• Se debe explorar bien cual es el integrador mas optimo, y que
  entrege los resultados mas reales.
• Algunos calculos de la libreria matematica se demoran mas que
  otros.
      • 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 del
 compilador y la version de este mismo.
• Se debe explorar bien cual es el integrador mas optimo, y que
  entrege los resultados mas reales.
• Algunos calculos de la libreria matematica se demoran mas que
  otros.
      • 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 del
 compilador y la version de este mismo.
• Se debe explorar bien cual es el integrador mas optimo, y que
  entrege los resultados mas reales.
• Algunos calculos de la libreria matematica se demoran mas que
  otros.
      • 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 del
 compilador y la version de este mismo.
• Se debe explorar bien cual es el integrador mas optimo, y que
  entrege los resultados mas reales.
• Algunos calculos de la libreria matematica se demoran mas que
  otros.
      • 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

Más contenido relacionado

PDF
FAKTOR-FAKTOR YANG BERHUBUNGAN DENGANKEJADIAN RESPIRATORYDISTRESS OF NEWBORN(...
PPT
Como leer un articulo cfico
PPT
Presentacion aulas virtuales y correo institucional
PDF
MANAJEMEN DAN PENDOKUMENTASIAN ASUHAN KEBIDANAN PADA BAYI NY. “D” DENGAN ASFI...
PDF
Cajamarca junio 13 carreteras
PPTX
The Golden Slipper
PDF
Core Fijo - Diplomatura en Telecomunicaciones Multimedia - Unidad 4.3
DOCX
c. Merumuskan diagnosa/masalah potensial pada Bayi Ny “N” dengan BBLR di Ruan...
FAKTOR-FAKTOR YANG BERHUBUNGAN DENGANKEJADIAN RESPIRATORYDISTRESS OF NEWBORN(...
Como leer un articulo cfico
Presentacion aulas virtuales y correo institucional
MANAJEMEN DAN PENDOKUMENTASIAN ASUHAN KEBIDANAN PADA BAYI NY. “D” DENGAN ASFI...
Cajamarca junio 13 carreteras
The Golden Slipper
Core Fijo - Diplomatura en Telecomunicaciones Multimedia - Unidad 4.3
c. Merumuskan diagnosa/masalah potensial pada Bayi Ny “N” dengan BBLR di Ruan...

Similar a Simulaciones Gravitacionales de N cuerpos (6)

PDF
DEFINICIÓN, DESCRIPCIÓN Y ESTUDIO DE LOS SIMULADORES DESARROLLADOS EN SOFTWAR...
PPTX
Ponencia udem 2012
PDF
Paralela3
PDF
simulacioncomputarizada.pdf
PDF
F4002 - L01 - Introducción a las simulaciones computacionales
PPTX
La Simulación
DEFINICIÓN, DESCRIPCIÓN Y ESTUDIO DE LOS SIMULADORES DESARROLLADOS EN SOFTWAR...
Ponencia udem 2012
Paralela3
simulacioncomputarizada.pdf
F4002 - L01 - Introducción a las simulaciones computacionales
La Simulación
Publicidad

Simulaciones Gravitacionales de N cuerpos

  • 1. Simulaciones Gravitacionales de N-Cuerpos Eduardo Jeraldo D. Departmento de Ciencias Físicas Universidad Nacional Andrés Bello 16 de Diciembre de 2011
  • 2. Esquema 1 Introducción Marco Teórico. 2 Desarrollo Creació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
  • 3. Esquema 1 Introducción Marco Teórico. 2 Desarrollo Creació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
  • 4. Esquema 1 Introducción Marco Teórico. 2 Desarrollo Creació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
  • 5. Esquema 1 Introducción Marco Teórico. 2 Desarrollo Creació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
  • 6. Introducción Contenido 1 Introducción Marco Teórico. 2 Desarrollo Creació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
  • 7. Introducción Marco Teórico. Contenido 1 Introducción Marco Teórico. 2 Desarrollo Creació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
  • 8. 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
  • 9. Introducción Marco Teórico. Marco Teórico • ¿Que es una simulación de N-Cuerpos? Definición Una simulación de N-cuerpos es una simulación de un sistema dinámico de las partículas, por lo general bajo la influencia de la gravedad. Eduardo Jeraldo (UNAB) Simulación de N-Cuerpos 16/11/2011 5 / 22
  • 10. 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
  • 11. Introducción Marco Teórico. Marco Teórico • ¿Para que sirve resolver este problema? Respuesta Estas simulaciones se utilizan para estudiar la evolución dinámica de los cúmulos estelares, los procesos de formación, como el proceso de formación de filamentos de galaxias y los halos de galaxias de materia oscura en la cosmología física. Eduardo Jeraldo (UNAB) Simulación de N-Cuerpos 16/11/2011 5 / 22
  • 12. Desarrollo Contenido 1 Introducción Marco Teórico. 2 Desarrollo Creació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
  • 13. Desarrollo Creación del Programa. Contenido 1 Introducción Marco Teórico. 2 Desarrollo Creació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
  • 14. 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
  • 15. 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
  • 16. 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 se encuentran bajo potencial gravitatorio. mi mj (ri − rj ) Fi = G 3 i=j ri − rj Eduardo Jeraldo (UNAB) Simulación de N-Cuerpos 16/11/2011 8 / 22
  • 17. 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, definimos una 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
  • 18. 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: 3 3 L m G =1 2 = 6, 693 ∗ 1011 2 M T Kg s Eduardo Jeraldo (UNAB) Simulación de N-Cuerpos 16/11/2011 8 / 22
  • 19. 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á que valer el tiempo para que G = 1. 1 α3 2 11 T = ∗ 10− 2 s 6, 693β Eduardo Jeraldo (UNAB) Simulación de N-Cuerpos 16/11/2011 8 / 22
  • 20. Desarrollo Implementación del Programa. Contenido 1 Introducción Marco Teórico. 2 Desarrollo Creació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
  • 21. 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
  • 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
  • 23. 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
  • 24. Desarrollo Optimización del Programa. Contenido 1 Introducción Marco Teórico. 2 Desarrollo Creació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
  • 25. 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
  • 26. 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
  • 27. 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 0 a12 . . . a1n a21 0 . . . a2n  −a12 0 . . . a2n  = .      . . .   . . .   . . . .  . an1 an2 . . . 0 −a1n −a2n . . . 0 Eduardo Jeraldo (UNAB) Simulación de N-Cuerpos 16/11/2011 13 / 22
  • 28. Desarrollo Optimización del Programa. Optimización del Cálculo. La programación para el cálculo de la parte superior de la matriz de aceleracion: 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
  • 29. 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 los núcleos del computador en que se ejecuta el programa. Eduardo Jeraldo (UNAB) Simulación de N-Cuerpos 16/11/2011 15 / 22
  • 30. Desarrollo Optimización del Programa. Optimización del Cálculo. Agregamos la linea que comienza con #pragma para realizar la paralelizació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
  • 31. 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 los núcleos del computador en que se ejecuta el programa. Eduardo Jeraldo (UNAB) Simulación de N-Cuerpos 16/11/2011 17 / 22
  • 32. Otra paralelización es posible usando la siguiente rutina: #pragma omp parallel for for(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; }}}
  • 33. Tiempos de Ejecución Contenido 1 Introducción Marco Teórico. 2 Desarrollo Creació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
  • 34. Tiempos de Ejecución Tiempos de Ejecución Estos son los tiempos de ejecución para una maquina con dos nú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
  • 35. Conclución Contenido 1 Introducción Marco Teórico. 2 Desarrollo Creació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
  • 36. Conclución Conclusión • El tiempo del programa, usando Open MP, depende del compilador y la version de este mismo. • Se debe explorar bien cual es el integrador mas optimo, y que entrege los resultados mas reales. • Algunos calculos de la libreria matematica se demoran mas que otros. • 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
  • 37. Conclución Conclusión • El tiempo del programa, usando Open MP, depende del compilador y la version de este mismo. • Se debe explorar bien cual es el integrador mas optimo, y que entrege los resultados mas reales. • Algunos calculos de la libreria matematica se demoran mas que otros. • 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
  • 38. Conclución Conclusión • El tiempo del programa, usando Open MP, depende del compilador y la version de este mismo. • Se debe explorar bien cual es el integrador mas optimo, y que entrege los resultados mas reales. • Algunos calculos de la libreria matematica se demoran mas que otros. • 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
  • 39. Conclución Conclusión • El tiempo del programa, usando Open MP, depende del compilador y la version de este mismo. • Se debe explorar bien cual es el integrador mas optimo, y que entrege los resultados mas reales. • Algunos calculos de la libreria matematica se demoran mas que otros. • 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
  • 40. Conclución Conclusión • El tiempo del programa, usando Open MP, depende del compilador y la version de este mismo. • Se debe explorar bien cual es el integrador mas optimo, y que entrege los resultados mas reales. • Algunos calculos de la libreria matematica se demoran mas que otros. • 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