Ionut Danaila, Frédéric Hecht, Olivier Pironneau

        Simulation numérique en C++

(Dunod, 2003)

Préface

    Comment se préparer à la lecture de l'ouvrage ?

(1)  Introduction à la simulation numérique

(1.1) Simulation numérique : définition

 

(1.2) Un exemple 1D : l'équation stationnaire de la chaleur

(1.2.1) Mise en équation
(1.2.2) Analyse mathématique
(1.2.3) Discrétisation du problème
(1.2.4) Algorithme de résolution
(1.2.6) Compilation, exécution du programme et visualisation des   résultats
(1.2.7) Commentaires et exercices

 

(1.3) Analyse numérique de l'équation instationnaire de la chaleur

(1.3.1) Equation adimensionnalisée
(1.3.2) Discrétisation explicite en temps
(1.3.3) Solution numérique de l'équation instationnaire

 

(1.4) Compléments (1)

(1.4.1) Consistance, stabilité et convergence d'un schéma aux différences finies
(1.4.2) Stabilité au sens de Von Neumann

 

(1.5) Compléments (2)

(1.5.1) L'équation de convection
(1.5.2) L'équation des ondes
(1.5.3) Nature mathématique des EDP

 

(2) Pour commencer à programmer en C++

(2.1) Notions de base

(2.1.1) Fonctions et passage d'arguments aux fonctions
(2.1.2) Pointeurs et tableaux
(2.1.3) Synthèse des déclarations C++
(2.1.4) Structures de contrôle
(2.1.5) Exercices

 

(2.2) Classes et objets

(2.2.1) Définition des classes
(2.2.2) Un premier exemple : la classe vide
(2.2.3) Création d'objets

 

(2.3) Programmation générique (templates)

(2.3.1) Fonctions templates
(2.3.2) Classes templates

 

(2.4) Héritage et polymorphisme

(2.4.1) Classes dérivées
(2.4.2) Fonctions virtuelles
(2.4.3) Conversion de pointeurs
(2.4.4) Protection des membres et classes amies

 

(2.5) Astuces de programmation

(2.5.1) Quelques règles àrespecter
(2.5.2) Utilisation du débogueur gdb
(2.5.3) Vérificateur d'allocation
(2.5.4) Utilisation d'un fichier Makefile
(2.5.5) Passage de paramètres sous Unix

 

(3) Algorithmes et techniques avancées

(3.1) Modélisation des vecteurs, matrices, tenseurs

(3.1.1) Version simple
(3.1.2) Les classes RNM
(3.1.3) Utilisation des classes RNM
(3.1.4) Application : la méthode du gradient conjugué

 

(3.2) Chaînes et listes chaînées

(3.2.1) Construction de l'image réciproque d'une fonction
(3.2.2) Stockage Morse d'une matrice creuse

 

(3.3) Un algorithme de tri : heapsort

(2.3.1) Fonctions templates
(2.3.2) Classes templates

 

(4) La méthode des éléments finis P1

(4.1) L'équation de la chaleur en 2D

(4.1.1) Limite de validité du modèle 1D
(4.1.2) équation 2D et ses conditions aux limites
(4.1.3) Modèle mathématique

 

(4.2) Résolution numérique

(4.2.1) Discrétisation en temps
(4.2.2) Formulation variationnelle
(4.2.3) Discrétisation en espace par éléments finis P1
(4.2.4) Formulation variationnelle discrète

 

(4.3) Algorithme de résolution

(4.3.1) Calcul des intégrales élémentaires
(4.3.2) Résolution par gradient conjugué

 

(4.4) Construction du maillage - le logiciel FreeFem++

(4.4.1) Utilisation de FreeFem++
(4.4.2) Fichier triangulation

 

(4.5) Les classes de base pour les éléments finis

(4.5.1) La classe (R2) (modélisation de R2
(4.5.2) La classe (Label) (numéros logiques)
(4.5.3) La classe (Vertex) (modélisation des sommets)
(4.5.4) La classe (Triangle) (modélisation des triangles)
(4.5.5) La classe (BoundaryEdge) (modélisation des arêtes frontières)
(4.5.6) La classe (Mesh) (modélisation du maillage)

 

(4.6) Les programmes

(4.6.1) Le script femGC.edp
(4.6.2) Le programme (sfemGC.cpp)

 

(4.7) Les résultats

(4.7.1) Visualisation avec gnuplot
(4.7.2) Calcul des lignes de niveau
(4.7.3) Comparaison avec les résultats 1D

 

(4.8) Compléments (1)

 

(4.8.1) Script (FreeFem++) pour l'ailette 2D

 

(4.9) Compléments (2)

 

(4.9.1) Construction des arêtes d'un maillage
(4.9.2) Construction des triangles contenant un sommet donné
(4.9.3) Calcul explicite de la matrice A du système
(4.9.4) Construction par coloriage de la structure Morse de A

 

 (5) Visualisation 3D

(5.1) Graphiques 3D

(5.1.1) Coordonnées homogènes
(5.1.2) Perspective
(5.1.3) Clipping
(5.1.4) Elimination des faces cachées : algorithme du Z-buffer

 

(5.2) Couleurs

 

(5.3) Réalisme
 

(5.3.1) Dithering
(5.3.2) Aliasing
(5.3.3) Algorithme de Gouraud

 

(5.4) La librairie OpenGL

(5.4.1) Première application : affichage du maillage
(5.4.2) Deuxième application : affichage 3D de la solution

 

(6) Construction d'un maillage bidimensionnel

(6.1) Bases théoriques
 

(6.1.1) Notations
(6.1.2) Introduction
(6.1.3) Maillage de Delaunay-Voronoi
(6.1.4) Forçage de la frontière
(6.1.5) Recherche de sous-domaines
(6.1.6) Génération de points internes

 

(6.2) Algorithme de construction du maillage

 

(6.3) Programme C++

 

 

(7) Une méthode intégrale tridimensionnelle

(7.1) Solution élémentaire du laplacien

 

(7.2) Représentation intégrale des fonctions à laplacien nul

 

(7.3) Implications algorithmiques

(7.3.1) Implémentation de l'étape 1
(7.3.2) Implémentation de l'étape 2
(7.3.3) Implémentation de l'étape 3
(7.3.4) Calcul des intégrales

 

(7.4) Programmation C++

(7.4.1) Lecture de la triangulation

 

(8) Différentiation automatique

(8.1) Le mode direct

 

(8.2) Fonctions de plusieurs variables

 

(8.3) Une bibliothèque de classes pour le mode direct

 

(8.4) Principe de programmation

 

(8.5) Implémentation comme bibliothèque C++

 

(8.6) Dérivée d'ordre supérieur

 

(8.7) DA d'un programme FORTRAN

 

(8.8) Compléments

(8.8.1) DA des fonctions àune variable: la librairie complète

 

(9) De C++ à Java

(9.1) Introduction

 

(9.2) Un premier programme Java

(9.2.1) L'environnement de programmation

(9.3) Javascript

 

(9.4) Interface Utilisateur Java

 

(9.5) Applets

 

(9.6) Une application plus compliquée

 

(9.7) Compléments

(9.7.1) Communications java C/C++

(10) Création d'un langage utilisateur

(10.1) Algèbre de fonctions

(10.1.1) Version de base
(10.1.2) Les fonctions Cinfini

 

(10.2) Grammaire

(10.2.1) Alphabets, langages, grammaires
(10.2.2) Grammaire LL1
(10.2.3) Analyseur grammatical bison/yacc

 

(10.3) Le langage utilisateur

 

(10.4) Un langage utilisateur pour les éléments finis

 

(11) Les Projets

(11.1) Projet 1: ailette de refroidissement avec radiation

 

(11.2) Projet 2: simulation d'un alternateur électrique

 

(11.3) Projet 3: éléments finis en axisymétrique

 

(11.4) Projet 4: le cas tridimensionnel général

 

(11.5) Préparation aux deux projets précédents