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
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.