Cet article présente la conception d'un mailleur en triangles 2D en Java, dans le cadre du développement du logiciel PFEM2D (solveur éléments finis 2D).

- Titre : Tutoriel sur la définition d'un mailleur triangle 2D en Java

- Auteur : Jean-Michel BORLOT

- Parution : 8 juin 2013

- Mise à jour : 8 juin 2013

- Public visé :

- Licence : Les sources présentés sur cette page sont libres de droits, et vous pouvez les utiliser à votre convenance. Par contre cette page de présentation de ces sources constitue une oeuvre intellectuelle protégée par les droits d'auteurs. Copyright © 2013 JM BORLOT. Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu'à 3 ans de prison et jusqu'à 300 000 € de dommages et intérêts. Cette page est déposée à la SACD.

Sommaire

- I. Introduction

- II. Précédents articles

- III. Présentation de l'algorithme général

- IV. Un peu de vocabulaire

- V. Maillage de la frontière du domaine

- VI. Triangulation de Delaunay du domaine

- Optimisation de la forme des éléments triangles

- VIII. Optimisation du positionnement des nœuds

- IX. Conclusion

- X. Remerciements

I - Introduction

Cet article présente la conception du mailleur en triangles du logiciel PFEM2D (solveur éléments finis 2D). Ce mailleur utilise un algorithme de triangulation de Delaunay classique, auquel s'ajoute quelques fonctionnalités telles que l'optimisation de positionnement de nœud, les inversions de diagonales, etc.

Ce mailleur va nous permettre de discrétiser en éléments triangulaires un domaine 2D fermé par une frontière définie à partir d'éléments 1D tels que segments et arcs de cercle. Le maillage de la frontière ne sera abordé que de manière très succincte, car il ne présente pas de difficulté particulière.

II - Précédents articles

Ce tutoriel s'intègre dans une série d'articles basé sur le développement d'un logiciel de modélisation éléments finis 2D nommé PFEM2D.

Le précédent article, PFEM2D - Panneau graphique personnalisé en Java2D, a permis de mettre en place un environnement graphique que nous allons utiliser pour l'interface du programme PFEM2D. La définition du domaine 2D sera basé sur les éléments graphiques utilisés au sein de cet environnement.

Nous allons donc préparer cet article en téléchargeant le code source de l'article précédent à cette adresse. Ce code source sert de base pour cet article.

III - Présentation de l'algorithme général

L'algorithme général du mailleur triangle est le suivant :

1. maillage de la frontière du domaine (segments et arcs de cercle)

2. maillage de l'intérieur du domaine (triangulation de Delaunay)

3. optimisation du positionnement des nœuds du domaine (hors frontière) et optimisation de la forme des éléments triangles

IV - Un peu de vocabulaire

Avant d'aller plus loin dans les explications, nous allons donner les définitions des termes utilisés dans le cadre de la modélisation par éléments finis :

- domaine : ici, il s'agit d'une zone fermée de l'espace 2D. Cette zone est délimitée par sa frontière, qui est l'ensemble jointif de courbes (segment, arc de cercle, cercle), ou l'ensemble d'ensemble jointif de courbes (domaine percé par exemple), sans intersection ;

- nœud : point de l'espace 2D, défini par un identifiant, et par ses coordonnées x et y ;

- élément : ici, il ne s'agira que de segment et de triangle. C'est l'entité de discrétisation de l'espace, c'est-à-dire que nous allons discrétiser la frontière du domaine en une suite de segments, et découper la surface du domaine en un ensemble de triangles, qui formeront un pavage de l'espace délimité par le domaine ;

- maillage : ensemble des éléments définissant le pavage du domaine ;

V - Maillage de la frontière du domaine

Le maillage de la frontière ne pose pas de difficulté technique. Tous les objets géométriques sont discrétisés en une série de segments. Ces segments approximent au mieux (suivant les paramètres de maillage que l'on a définis) la géométrie de l'objet support.

La discrétisation d'un segment de droite se fait de manière exacte en divisant ce segment par autant d'éléments que souhaité. La discrétisation d'un arc de cercle par contre fait apparaître une approximation de la courbure. Plus le nombre d'éléments sera élevé, meilleure sera l'approximation de la courbure. Attention toutefois à ne pas tomber dans l'excès, le calcul ne nécessite pas obligatoirement une approximation parfaite !

Pour le maillage de la frontière, le programme parcourt tous les objets définissant le modèle (disponible dans l'objet PFEM2DModel courant), et les maille individuellement. On notera que les points sont automatiquement maillés en nœuds, et qu'un point commun entre deux objets géométriques est maillé en un unique nœud commun aux deux maillages des objets. Ainsi, le maillage de la frontière conserve la connectivité des objets.

VI - Triangulation de Delaunay du domaine

Optimisation de la forme des éléments triangles

VIII - Optimisation du positionnement des nœuds

IX - Conclusion

Ce tutoriel

Les sources de cet article sont disponibles en suivant ce lien : src_PlegatFem2D_GUIPanel.zip ( miroir).

Les icônes utilisées dans l'application exemple sont incluses dans les sources. Elles peuvent également être téléchargées sur le site www.fatcow.com (sous licence CC).

X - Remerciements

Merci à XXX et YYY pour leurs commentaires, à ZZZ pour sa relecture orthographique, ainsi qu'à djibril pour son aide sur le KitOOoDVP.

Tutoriel sur la définition d'un mailleur triangle 2D en Java

Auteur

Jean-Michel BORLOT