Projet : quelques précisions (utiles ?)

Projet : quelques précisions (utiles ?)

by Jean-Cédric Chappelier -
Number of replies: 1

(re)bonjour à toutes et à tous

suite à plusieurs questions ce matin, voici quelques clarifications au sujet du projet (j'ai légèrement modifié les exercices correspondants pour inclure les remarques ci-dessous ; mais vous avez ici un résumé) :

  • dans P5 (montagnes) : https://progmaph.epfl.ch/projet/projet04.html#P5
    la formulation mathématique des montagnes était donnée en (x,y,z), alors que tout le reste, y compris les figures, sont exprimées en indices de cubes, (i,j,k) ; j'ai donc clarifié ce point en donnant les 2 formules (et en reprécisant derrière les notations : les valeurs données sont en i,j,k) ;

  • dans P6 (conditions aux bord) : https://progmaph.epfl.ch/projet/projet05.html#P6
    les conditions (3) (4) en bas la page 4 du complément mathématique prévalent aux bords extérieurs de la boîte sur les conditions en haut de la page 5 ;
    autrement dit : la nullité du potentiel sous la montagne ne s'applique pas au bords i=0 ou i=Nx-1 ou j=0 ou j=Ny-1 de la boîte, mais  sur ces bords ce sont les conditions (3) et (4) qui s'appliquent.

  • dans P6 (laplaciens) : le calcul du laplacien en tout point est fait ici en utilisant uniquement le membre de gauche (tel quel) de la formule (5) du complément mathématique, sur les potentiels tels qu'initialisés comme décrit dans P6 ; ce N'est PAS le but de P6 que de résoudre l'équation de Laplace (et donc de trouver les bons potentiels) ; ce sera l'objet de P7 ;
    en clair, l'utilisation de l'équation (6) du complément mathématique, ce n'est pas pour P6, mais pour P7 ;
    (j'en profite pour signaler que la somme des carrés des laplaciens fournis dans P6 pour v_infini=20 m/s est 9.35212e+06, qui sera notre point de départ de P7)
In reply to Jean-Cédric Chappelier

Re: Projet : quelques précisions (utiles ?)

by Jean-Cédric Chappelier -

Bonjour !

encore quelques remarques complémentaires suite aux questions de jeudi passé :

  1. les valeurs de tests fournies ne sont bien sûr pas pour être toutes lues et comparées à l’œil ! Utilisez les de 2 façons :
    1. comparez en « à l’œil » quelques unes, bien choisies, en particulier les toutes premières valeurs ;
    2. utilisez ensuite des outils pour comparer globalement le résultat de votre programme avec le fichier fourni ; plus de détails ci-dessous ;

  2. pour la résolution de l'équation de Laplace (P7), il y a en fait plusieurs méthodes en général pour ce genre de problèmes (dépendances de 2 grandeurs ; ici potentiels vecteurs et laplaciens) :

  • soit calculer tous les laplaciens à partir d'une « image »/« photographie » (état mémorisé) de tous les potentiels vecteurs ; puis, seulement ensuite, remise à jour de tous les potentiels grâce aux nouvelles valeurs des potentiels ;

  • ou alors calculer en chaque position la nouvelle valeur du laplacien, puis la nouvelle valeur du potentiel ;
    cette seconde famille de calcul a elle-même plusieurs variantes : dans quel ordre choisir les points de l'espace qui sont remis à jour : toujours dans un même ordre donné ? (p.ex. boucles en i, puis j, puis k) ou avec un tirage au hasard d'une nouvelle position à chaque fois (cette dernière famille de techniques s'appellent « simulations Monte-Carlo »)

Les valeurs de tests que nous donnons en P7 ont été produite par la première technique ci-dessus (« photo » : mise à jour de tous les laplaciens, puis de tous les potentiels). Si vous avez de grosses différences avec les valeurs fournies, c'est peut être que vous avez programmé une autre méthode.
Pour comparer automatiquement la sortie de votre programme avec les fichiers fournis, procédez comme suit :
  1. Tout d'abord, affichez les valeurs dans le même ordre et au même format ;
    nous avons en particulier augmenté la précision d'affichage (rappel du 1er semestre) :
    cout << setprecision(14);
  2. Lorsque vous faites tourner votre programme (dans un terminal), récupérez sa sortie en la redirigeant à l'aide du signe '>'  (strictement supérieur). Par exemple :
    ./exerciceP6 > ma_sortie.txt
  3. Comparer votre résultat (ma_sortie.txt ci-dessus) avec le fichier de résultats fourni ; p.ex. en utilisant `diff -w` :
    diff -w ma_sortie.txt testPotentiel2.dat
La comparaison ci-dessus (diff) s'effectuant caractère par caractère, elle est peut être trop sensible aux petites variations de calcul (problème de précision de représentation des double). Je vous ai donc écrit un petit programme pour faire cette comparaison, ligne à ligne, à une précision donnée. Je vous laisse regarder le programme ci-joint (c'est du C++ ! ;-) ).

Enfin, bien sûr, vous pouvez aussi faire une comparaison globale en dessinant (avec gnuplot ou avec votre propre graphisme) les résultats obtenus qui devraient globalement ressembler aux figures fournies. Cela ne garanti pas un calcul exact en tout point, mais donne déjà une bonne idée : si les images ressemblent, les erreurs commises (s'il y a en a) de devraient pas être trop grosses.