Site du cours Résolution des EDP par la méthode des éléments finis

du Master II, Mathématiques et applications : 

mise à jour le 5 décembre 2007



les notes de cours au 07/11/2007   NotesdeCoursNM406.pdf

les sources des programmes: Index of /~hecht/ftp/NM406/ftp



  

le site du logiciel  FreeFem++

Pour installer les outils de devellopement de type Unix sur

windows : Instalation de cygwin sur Windows


Pour les debutants en programmation vous pouvez teste vos

programme avec le site:


Cours de C pour débutants, par Mathias Hiron

Le langage C : cours et exercices (Arnauld Michelizza)

Tutoriel sur langage C (William WAISSE, NeoFutur)

Bien programmer en langage C (Emmanuel Delahaye)

Un site dédié au langage C
TUTORIELS C++


Pour bien comprendre la gestion mémoire


La gestion de la mémoire en langage C





Déroulement du Cours:


Vendredi 05 octobre

   

   Présentation du Cours,

   Formulation variationnelle

   Prise en compte des conditions aux limites de type Dirichlet 

   Introduction des maillages triangulaire conforme

   Construction des coordonné barycentriqe  

   Calcul du gradient de coordonné barycentrique

   Soit le chapitre 6.1, 6.2 


Vendredi 11 octobre

   De l'equation à la matrice et au second membre.

  

  Algorithme de Construction du systme linéaire. 

  Algorithme de resolution de systeme lineaire 

   Le Gradient Conjugue, GMRES,  d'autre méthode de résolution.

  D'autre probleme modéle, Stokes, ....

  D'autre élément fini, P2, P1nc, ...

  Probleme de réprésantation des résultats. 


Vendredi 18 octobre (R. Kuate)

    Introduction du C++


   les classes , la surcharge des operateurs,

   Chapitre 4 , 4.1, 4.2 , 4.3, 4.4 et 5.1 



Vendredi 26 octobre (F. Hecht)

 

 Les classes tableaux RNM.hpp ...

 Des classes pour les elements finis 2d et 3d P1.


  https://www.ljll.math.umpc.fr/hecht/ftp/NM406/ftp/

L'archive tar compresse des exemples : EF.tar.gz  (version apres-midi 26 octobre sans les gros maillage)


   Pour télécharger et installer les sources 265Ko et grosmaillage 6Mo


   curl -O https://www.ljll.math.umpc.fr/hecht/ftp/NM406/ftp/EF.tar.gz

   curl -O https://www.ljll.math.umpc.fr/hecht/ftp/NM406/ftp/EF-grosmaillage.tar.gz

   tar zxvf EF.tar.gz 

   tar zxvf EF-grosmaillage.tar.gz 

   cd EF/libMesh

   make install clean

   cd ../EF23

   make EF2d    EF2dMat EF3d


Exercice: A faire écrire un EF3dMat.cpp et a tester a partir de  EF2dMat.cpp

en comparants le passage de EF2d.cpp à EF3d.cpp.


Vendredi 2 novembre  (Pont)

Pas de cours.


Vendredi 9 Novembre  (F. Coquel)


   Les templates, la stl,  

   les fichiers d'exemples d'utilisation de a stl sont dans l'archive stl.tar.gz

   pour les téléchargés et les decompressés:

    

  curl -O https://www.ljll.math.umpc.fr/hecht/ftp/cpp/stl.tar.gz

  tar xvfz stl.tar.gz

  cd stl


   les passages des classes en Templates afin eviter les doublons , les copiés

   collés etc..


Vendredi 15 Novembre  (F. Hecht)


 Des classes pour les elements finis 2d et 3d P1, suite 

 Algorithme pour la construction des structure de matrice creuse




Vendredi 22 Novembre  (F. Hecht)


 Unification des  classes pour les elements finis 2d et 3d 

 P1 avec des templates   nouvelle version unifies des classes 


 EF23n.tgz

 Comment modeliser une formulation variationnelle.

 Algorithme pour la construction des structure de matrice creuse

   Chapitre 7.81


les sujets des projets LesProjetsNM406.pdf


Vendredi 29 Novembre  (F. Hecht)


Les classe unifiées dans EF23n.tgz  (version du 5 decembre petit correction )


 Avec la constructions des element adjacents,

 et la construcxtions de la numerotations des noeuds pour un probleme elements finis


dans le repertoire EF (père de EF23) faire: 


  curl -O https://www.ljll.math.umpc.fr/hecht/ftp/NM406/ftp/EF23n.tgz

    tar zxvf EF23n.tgz 

    cd EF23n

  make


Remarque, le méthode pour avoir le numerote les elements  l'adjacent / par une face d=3 (ou arete d=2) est:


 Mesh Th ..

 // soit  k un element et i une la face/ arete  de k

 // alors : 

 int ii,kk=Th.ElementAdj(k,ii=i);

// attention en sortie   (k,i)  et (kk,ii) corresponde à la même face. pair<int *,int> BuildNodeNubering(int);



la numerotation des noeuds est faite via la  méthode 

// int cas;

pair<int *,int> pn=Th.BuildNodeNubering(cas);

/*

pn.second = nombre de noeud:

pn.first =  pointeur sur le tableau de la numerotation de noeud / element

numero de node j  del'element k  = pn.first[k*nbnK+j] 

ou nbnK est le nb de noeuds  dans un element

*/ 

// ou les valeurs de bits de cas sont utilisés pour

pour connaitre si il y a pour pas des noeuds sur un item (sommet : bit 0, arete: bit 1, face:bit 2, tetra: bit 3)


// exemple : cas = 2+4;  // il y a des noeuds sur les aretes et les faces.