Informatique Scientifique en C++

support de cours/TD (2010-2011)

F. Hecht, I. Danaila


Semaine 8

Cours

mardi 22/02/2011 (ID) : Les classes pour la méthode des éléments finis. FreeFem++. 
  • Retour sur les classes pour la méthode des éléments finis :  constructeur  de la classe Mesh2.
  • Exemple d'utilisation du gradient conjugué pour le problème du laplacien.
  • Le logiciel FreeFem++ et son utilisation pour la résolution  numériques des EDP  (www.freefem.org)
 
  
vendredi 25/02/2011 (ID)
  • Syntaxe FreeFem++ pour la résolution des EDP (formulation avec "problem" et avec construction des matrices) voir script_laplacien_2d.edp.
  • Visualisation avec Gnuplot
    • visualisation de la solution avec "splot" (voir l'exercice plus bas),
    • calcul des lignes de niveau (voir guplot-iso.hpp).
  • Communication entre les programmes C++ et les scripts FreeFem++.


TD ::

  • Eléments finis et Gradient conjugué.  Utilisation de FreeFem++.
  • Début du travail pour le projet 2 (énoncé sous forme pdf)

               L'exercice de la semaine 7 à analyser absolument ! 


Exercice  1 : solution d'un laplacien sur un carré
 

  1. Téléchargez l'archive semaine_07.tar.gz
     
  2. Désarchiver dans votre dossier local (tar  zxvf  semaine_07.tar.gz)
  3. Générer le maillage d'un carré en utilisant  FreeFem++ avec le script carre.edp.

  4. Compiler et exécuter le programme EF2d-2011.cpp 

    g++ EF2d-2011.cpp Mesh2d.cpp -I./RNM-v3 -o lap2d

    ./lap2d carre.msh

     

  5.  la solution est écrite dans le fichier plot ; pour la visualisation, utiliser sous Gnuplot

    splot "plot" w l

    splot "plot" using 1:2:4 w l

    splot "plot" u 1:2:3 t "solution numerique" w l, "plot" u 1:2:4 t "solution exacte" w l

     

  6. Quelques explications :: ce programme résout par éléments finis l'EDP 2D
    • le domaine de calcul est un carré : le maillage est contenu dans le fichier carre.msh
    • les fonctions f et g sont données (f= -6, g= x^2 + 2 y^2 dans ce cas)
    • on va noter les matrices qui interviennent dans la méthode des éléments finis par
    • le système linéaire final s'écrit (la fonction f est considérée P1 pour calculer le second membre)

      K*U=M*F

    • le système linéaire est résolu par  la méthode du gradient conjugué

      Il faut retenir que pour la résolution d'un système AX=F, la méthode du gradient conjugué utilise que des produits A*vecteur.
      D'où l'idée de définir seulement la fonction qui calcule ce produit matrice*vecteur, sans avoir à stocker la matrice A du système.
       



               L'Utilisation de FreeFem++ pour résoudre le problème du laplacien ! 


Exercice  2 : solution d'un laplacien sur un carré
 

  1. Téléchargez le programme (script) FreeFem++  script_laplacien_2d.edp
     
  2. Analyser  et exécuter le script (bien entendu, il faut avoir installé FreeFem++ sur votre machine)

    FreeFem++ script_laplacien_2d.edp

     

  3.  Utiliser ce modèle pour programmer le schéma explicite pour l'équation des ondes 2D (voir l'énoncé du projet 2).