T.P. Parallélisme

Gravitation universelle

  1. Simulation d'interactions gravitationnelles
  2. On souhaite simuler l'action mutuelle des forces gravitationnelles agissant sur un ensemble de masses ponctuelles situées dans un plan infini.

    Chaque masse ponctuelle M possède :

    À chaque pas de temps, on doit calculer l'influence sur chacune des masses des forces gravitationnelles induites par toutes les autres, et modifier la vitesse et la position des masses en conséquence.

    Pour cela, à chaque pas de temps t, pour chaque masse Mi :

    1. on calcule la somme des forces gravitationnelles exercée sur Mi par chacune des autres masses Mj :
      Ft(Mi,Mj) = G (mi * mj / dt(Mi,Mj)2) u
      Ft = sommeMj¬Mi(Ft(Mi,Mj)) ,
      u est le vecteur unité sous-tendant la demi-droite [Mi,Mj) ;
    2. on en déduit, par le principe fondamental de la dynamique, l'accélération appliquée à cette particule :
      at = Ft / m ;
    3. en appliquant cette accélération at pendant le pas de temps dt, on obtient la vitesse de la masse Mi au temps t+dt :
      vt+dt = vt + atdt ;
    4. en appliquant la vitesse vt pendant le pas de temps dt, on obtient la position de la masse Mi au temps t+dt :
      pt+dt = pt + vtdt + atdt2 / 2 .

    À mesure que les masses se rapprocheront les unes des autres, les forces appliquées seront de plus en plus grandes, et donneront lieu à des déplacements de plus en plus rapides. De fait, on ne peut conserver un pas de temps constant sur l'ensemble des itérations. Il faudra donc, à chaque pas de temps, définir la durée de celui-ci.

  3. Travail à réaliser
    1. En supposant que l'ensemble des coordonnées des masses du système ne peut tenir dans la mémoire d'un seul processus, réalisez le programme MPI correspondant.

      Mettez en place un mécanisme de recouvrement calcul-communication, à base de communication non-bloquantes persistantes, permettant le calcul entre les masses possédées localement et celles reçues des autres processeurs. Utilisez pour cela deux tampons interchangeables et une topologie d'anneau logique.

      Afin de prendre en compte finement les interactions locales, la durée du pas de temps sera prise de telle façon qu'un sommet ne se rapproche pas de plus de 10 pour cent de la position courante du plus proche de ses voisins. La valeur du pas de temps à choisir est donc décidée collectivement lors de chaque itération.

    2. Prévoyez un dispositif de sortie permettant d'obtenir à chaque pas de temps les positions des masses, pour visualisation ultérieure des trajectoires (sous Gnuplot par exemple).

  4. Pour en savoir plus