Projet: Evolution d'une galaxie

De Wiki du LAMA (UMR 5127)
Aller à la navigation Aller à la recherche

On veut simuler l'évolution d'une galaxie, en particulier sa structure, au cours du temps. Il s'agit en fait d'un problème à N corps, N étant grand (quelques centaines pour commencer). Les notions de C++ vues en cours seront (ré)introduites et utilisées au fur et à mesure. On a d'abord scindé le problème en parties, chacune étant traitée par un binôme.

Structure générale du code et définition des classes de base

Les classes de base à considérer sont :

  • la classe "UEtoile" définissant une étoile. Pour le moment, on y inclut la masse, la position et la vitesse de l'étoile. Un premier squelette de classe peut être trouvé ici : [UEtoile.h] et [UEtoile.C]. Utilisez-le.
  • la classe "UGalaxie" qui reste à écrire, représentant un ensemble d'étoiles, pas forcément une galaxie (amas globulaire, etc...)

Un moteur "EDOMoteur", dont nous ne sommes pas encore persuadé qu'il doit s'écrire sous forme de classe (c'est probable). Ce moteur prendrait les objets d'une galaxie un à un et les fera évoluer dans le temps. Une méthode de Runge-Kutta simple sera implémentée au début, que l'on fera évoluer vers une méthode avec pas de temps adaptatif.

Remarques :

  • On adoptera une convention de noms pour les classes et variables membres des classes, ainsi que pour les méthodes :
    • tous les noms de classe commenceront par un U majuscule suivi d'une majuscule
      • Exemple : UEtoile, UGalaxie, UEDOMoteur
    • tous les noms de variable membres d'une classe commenceront par un "m" minuscule suivi d'une majuscule
      • Exemple : mX, mMasse
    • tous les noms de méthode de classe commenceront par une majuscule suivie de minuscules, sauf pour marque le début d'un mot.
      • Exemple : Trace() ou TraceUnCarre()
    • on verra au fil du temps pour les variables internes aux méthodes

Moteur de résolution d'équations différentielles

Méthodes