Vous êtes sur la page 1sur 3

Langage C++ Projet : Eléments finis

PROJET C++
(2ème année Math)
Présentation
Ce projet consiste à vous faire réaliser un logiciel en C++ capable de représenter graphiquement
tous les résultats possibles provenant d'un code de calcul éléments finis, voire différences finies et
volumes finis.

Ce logiciel devra comporter les fonctionnalités suivantes :


 représentation graphique 2D de maillage Eléments finis, supportant tous types d'éléments ;
 représentation graphique des isovaleurs relatives aux valeurs des degrés de liberté en chacun
des nœuds de chaque élément ;
 zoom, translation et rotation à la souris.

Petit élément fini illustré : Exemple de la plaque carrée


Pour pourvoir faire des calculs sur une plaque carrée, la première chose à faire est de discrétiser la
plaque en facettes triangulaires ou carrées. Chacune de ces facettes s'appelle un élément fini.

Le principe du calcul éléments finis consiste à calculer certaines valeurs aux sommets et/ou aux
milieux des cotés (nœuds) de ces facettes et d'interpoler ensuite ces valeurs dans tout le domaine
représenté par la plaque. Pour cela tout dépend du choix géométrique des facettes et du nombres de
nœuds que l'on choisit. Il faut donc être capable d'interpoler les valeurs dans chaque élément.

Discrétisons le problème et travaillons sur un élément triangulaire à 3 nœuds. Voici sa


représentation géométrique dans un repère :

y
u3 3

1 2
x
u1 u2
Jean-Luc Damoiseaux / I.S.I.T.V. 1
Langage C++ Projet : Eléments finis

Le résultat du calcul éléments finis donne les valeurs de l'inconnue u(x,y) aux points 1, 2 et 3.
Le but est donc d'interpoler les valeurs de u(x,y) à l'intérieur de l'élément triangulaire et de faire
correspondre cette valeur avec une couleur préalablement définie.

Plusieurs méthodes d'interpolation sont à notre disposition :

Méthode par les fonctions de forme


Le principe est d'écrire la valeur comme une combinaison linéaire des valeurs ui

u(x,y) = ∑i=1 à 3 Ni (x,y).ui

avec

Ni(xj,yj)=δij

Ni(x,y) = ai + bix + ciy

et
(xi,yi) coordonnées du point i.

Méthode similaire :
Le principe est un peu le même que celui de la méthode par les fonctions
de formes. On écrit :

u(x,y) = α + β x + δ y

u(xi,yi) = ui pour i = 1..3

Affichage des isocouleurs.


Supposons que l'on ait une grille de couleurs correspondante à certaines valeurs de u. Pour pouvoir
tracer plusieurs couleurs dans un seul triangle, on peut procéder de la façon suivante :
 calcul de la valeur de u au barycentre de l'élément ub;
 coloration de l'élément avec la couleur correspondante à ub;
 création des sous éléments barycentriques qui deviennent alors des éléments ;
 recommencer à l'étape 1 avec ces nouveaux éléments jusqu'à un nombre d'itérations
préalablement défini.

Jean-Luc Damoiseaux / I.S.I.T.V. 2


Langage C++ Projet : Eléments finis

Architecture logicielle.
La hiérarchie de classes que vous devrez mettre en place est la suivante :

Nœud Elément Maillage Fenetre Filtre

L2 ……………………………..Q12 Fenetre_Iso
où :
 La classe Noeud définit le type nœud.
 La classe Element est une classe virtuelle pure à partir de laquelle est dérivée tous les
types d'éléments possibles ; un élément est codé sous la forme d'une liste de noeuds.
 La classe Maillage définit la notion de maillage ; un maillage est une liste d'Element.
 La classe Filtre lit des fichiers de données et construit le maillage correspondant
 La classe Fenetre et sa dérivée Fenetre_Iso permettent de visualiser l'ensemble.

Enfin, il vous est donné des fichiers d'exemples en .TIT et .DAT, sachant que les fichiers .TIT
contiennent les positions et les valeurs de tous les noeuds, ainsi que la définition des éléments et du
maillage, tandis que les fichier .DAT contiennent les valeurs nécessaires au tracer des iso-couleurs.

Bon courage...

Jean-Luc Damoiseaux / I.S.I.T.V. 3

Vous aimerez peut-être aussi