SlideShare una empresa de Scribd logo
1 de 40
Descargar para leer sin conexión
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

Destacado

2024 State of Marketing Report – by Hubspot
2024 State of Marketing Report – by Hubspot2024 State of Marketing Report – by Hubspot
2024 State of Marketing Report – by HubspotMarius Sescu
 
Everything You Need To Know About ChatGPT
Everything You Need To Know About ChatGPTEverything You Need To Know About ChatGPT
Everything You Need To Know About ChatGPTExpeed Software
 
Product Design Trends in 2024 | Teenage Engineerings
Product Design Trends in 2024 | Teenage EngineeringsProduct Design Trends in 2024 | Teenage Engineerings
Product Design Trends in 2024 | Teenage EngineeringsPixeldarts
 
How Race, Age and Gender Shape Attitudes Towards Mental Health
How Race, Age and Gender Shape Attitudes Towards Mental HealthHow Race, Age and Gender Shape Attitudes Towards Mental Health
How Race, Age and Gender Shape Attitudes Towards Mental HealthThinkNow
 
AI Trends in Creative Operations 2024 by Artwork Flow.pdf
AI Trends in Creative Operations 2024 by Artwork Flow.pdfAI Trends in Creative Operations 2024 by Artwork Flow.pdf
AI Trends in Creative Operations 2024 by Artwork Flow.pdfmarketingartwork
 
PEPSICO Presentation to CAGNY Conference Feb 2024
PEPSICO Presentation to CAGNY Conference Feb 2024PEPSICO Presentation to CAGNY Conference Feb 2024
PEPSICO Presentation to CAGNY Conference Feb 2024Neil Kimberley
 
Content Methodology: A Best Practices Report (Webinar)
Content Methodology: A Best Practices Report (Webinar)Content Methodology: A Best Practices Report (Webinar)
Content Methodology: A Best Practices Report (Webinar)contently
 
How to Prepare For a Successful Job Search for 2024
How to Prepare For a Successful Job Search for 2024How to Prepare For a Successful Job Search for 2024
How to Prepare For a Successful Job Search for 2024Albert Qian
 
Social Media Marketing Trends 2024 // The Global Indie Insights
Social Media Marketing Trends 2024 // The Global Indie InsightsSocial Media Marketing Trends 2024 // The Global Indie Insights
Social Media Marketing Trends 2024 // The Global Indie InsightsKurio // The Social Media Age(ncy)
 
Trends In Paid Search: Navigating The Digital Landscape In 2024
Trends In Paid Search: Navigating The Digital Landscape In 2024Trends In Paid Search: Navigating The Digital Landscape In 2024
Trends In Paid Search: Navigating The Digital Landscape In 2024Search Engine Journal
 
5 Public speaking tips from TED - Visualized summary
5 Public speaking tips from TED - Visualized summary5 Public speaking tips from TED - Visualized summary
5 Public speaking tips from TED - Visualized summarySpeakerHub
 
ChatGPT and the Future of Work - Clark Boyd
ChatGPT and the Future of Work - Clark Boyd ChatGPT and the Future of Work - Clark Boyd
ChatGPT and the Future of Work - Clark Boyd Clark Boyd
 
Getting into the tech field. what next
Getting into the tech field. what next Getting into the tech field. what next
Getting into the tech field. what next Tessa Mero
 
Google's Just Not That Into You: Understanding Core Updates & Search Intent
Google's Just Not That Into You: Understanding Core Updates & Search IntentGoogle's Just Not That Into You: Understanding Core Updates & Search Intent
Google's Just Not That Into You: Understanding Core Updates & Search IntentLily Ray
 
Time Management & Productivity - Best Practices
Time Management & Productivity -  Best PracticesTime Management & Productivity -  Best Practices
Time Management & Productivity - Best PracticesVit Horky
 
The six step guide to practical project management
The six step guide to practical project managementThe six step guide to practical project management
The six step guide to practical project managementMindGenius
 
Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...
Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...
Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...RachelPearson36
 

Destacado (20)

2024 State of Marketing Report – by Hubspot
2024 State of Marketing Report – by Hubspot2024 State of Marketing Report – by Hubspot
2024 State of Marketing Report – by Hubspot
 
Everything You Need To Know About ChatGPT
Everything You Need To Know About ChatGPTEverything You Need To Know About ChatGPT
Everything You Need To Know About ChatGPT
 
Product Design Trends in 2024 | Teenage Engineerings
Product Design Trends in 2024 | Teenage EngineeringsProduct Design Trends in 2024 | Teenage Engineerings
Product Design Trends in 2024 | Teenage Engineerings
 
How Race, Age and Gender Shape Attitudes Towards Mental Health
How Race, Age and Gender Shape Attitudes Towards Mental HealthHow Race, Age and Gender Shape Attitudes Towards Mental Health
How Race, Age and Gender Shape Attitudes Towards Mental Health
 
AI Trends in Creative Operations 2024 by Artwork Flow.pdf
AI Trends in Creative Operations 2024 by Artwork Flow.pdfAI Trends in Creative Operations 2024 by Artwork Flow.pdf
AI Trends in Creative Operations 2024 by Artwork Flow.pdf
 
Skeleton Culture Code
Skeleton Culture CodeSkeleton Culture Code
Skeleton Culture Code
 
PEPSICO Presentation to CAGNY Conference Feb 2024
PEPSICO Presentation to CAGNY Conference Feb 2024PEPSICO Presentation to CAGNY Conference Feb 2024
PEPSICO Presentation to CAGNY Conference Feb 2024
 
Content Methodology: A Best Practices Report (Webinar)
Content Methodology: A Best Practices Report (Webinar)Content Methodology: A Best Practices Report (Webinar)
Content Methodology: A Best Practices Report (Webinar)
 
How to Prepare For a Successful Job Search for 2024
How to Prepare For a Successful Job Search for 2024How to Prepare For a Successful Job Search for 2024
How to Prepare For a Successful Job Search for 2024
 
Social Media Marketing Trends 2024 // The Global Indie Insights
Social Media Marketing Trends 2024 // The Global Indie InsightsSocial Media Marketing Trends 2024 // The Global Indie Insights
Social Media Marketing Trends 2024 // The Global Indie Insights
 
Trends In Paid Search: Navigating The Digital Landscape In 2024
Trends In Paid Search: Navigating The Digital Landscape In 2024Trends In Paid Search: Navigating The Digital Landscape In 2024
Trends In Paid Search: Navigating The Digital Landscape In 2024
 
5 Public speaking tips from TED - Visualized summary
5 Public speaking tips from TED - Visualized summary5 Public speaking tips from TED - Visualized summary
5 Public speaking tips from TED - Visualized summary
 
ChatGPT and the Future of Work - Clark Boyd
ChatGPT and the Future of Work - Clark Boyd ChatGPT and the Future of Work - Clark Boyd
ChatGPT and the Future of Work - Clark Boyd
 
Getting into the tech field. what next
Getting into the tech field. what next Getting into the tech field. what next
Getting into the tech field. what next
 
Google's Just Not That Into You: Understanding Core Updates & Search Intent
Google's Just Not That Into You: Understanding Core Updates & Search IntentGoogle's Just Not That Into You: Understanding Core Updates & Search Intent
Google's Just Not That Into You: Understanding Core Updates & Search Intent
 
How to have difficult conversations
How to have difficult conversations How to have difficult conversations
How to have difficult conversations
 
Introduction to Data Science
Introduction to Data ScienceIntroduction to Data Science
Introduction to Data Science
 
Time Management & Productivity - Best Practices
Time Management & Productivity -  Best PracticesTime Management & Productivity -  Best Practices
Time Management & Productivity - Best Practices
 
The six step guide to practical project management
The six step guide to practical project managementThe six step guide to practical project management
The six step guide to practical project management
 
Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...
Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...
Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...
 

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