Générations et opérations sur les maillages

Générations et opérations sur les maillages

Introduction

En quittant le cadre de la maquette Python indépendante pour intégrer les méthodes multi-échelles Q1 /VFDiam et GD/VFDiam au sein du code de calcul MPCube, on a laissé de côté de facto l’utilisation de maillages quadrangulaires réguliers à l’échelle fine. Compte tenu de leurs propriétés, ces maillages n’avaient pas besoin d’une structure informatique complexe. En effet, une fois un ordre de numérotation des nœuds et des volumes choisi, les connectivités entre éléments (volumes à nœuds et volumes à volumes) sont explicitement connues. Nul besoin donc de générer ou de stocker ces informations. De même, le support des champs de diffusivité et des solutions des problèmes de cellules est connu. Il suffit donc de stocker les seules valeurs des champs pour pouvoir les reconstruire à volonté. Ce n’est plus le cas au sein des simulations MPCube : les maillages y sont quelconques et peuvent contenir plusieurs types de discrétisations (tétraèdres, héxaèdres). MPCube ne s’occupe en aucun cas de la construction de ces maillages, son rôle se concentrant sur la résolution des problèmes de diffusion. Pour chaque domaine de simulation Λ, on doit donc fournir un maillage fin Th(Λ) au logiciel MPCube. Dans tout ce chapitre, on reprend les notations du chapitre §3, notamment les Définitions 3.1, 3.2 et 3.4. Le domaine de travail Ω suit donc un découpage D qui forme le maillage grossier TH(Ω). On appelle macroéléments les éléments cubiques de TH(Ω). À partir d’un macroélément K, on construit la cellule Kˆ associée en ajoutant à K une fraction ρ de ses voisins. La Figure 3.1 présente l’exemple d’un macroélement et de sa cellule. Pour chaque macroélement de TH(Ω), on doit donc discrétiser la cellule Kˆ pour obtenir un maillage Th(Kˆ). Ce chapitre présente l’ensemble des opérations et solutions techniques mises en œuvre afin de construire les maillages de milieu nécessaires à MPCube. La mise en œuvre des méthodes multi-échelles Q1 /VFDiam et GD/VFDiam au sein du code MPCube est l’objet du chapitre précédent §5. On détaille tout d’abord les différents outils et fonctionnalités nécessaires à la bonne génération des maillages. On présente ensuite la plate-forme SALOME [163], l’outil utilisé pour construire et manipuler les maillages dans ces travaux de thèse. Les sections suivantes traitent de la construction automatique des maillages Th(Kˆ) des cellules. La section §6.2 se focalise sur la construction rapide et la discrétisation d’une cellule Kˆ. On décrit à la section §6.3 un cas plus complexe où l’on souhaite que les maillages de cellules voisines coïncident sur les frontières des macroéléments correspondant. Ces maillages coïncidents sont en effet nécessaire à l’utilisation, à l’échelle grossière, des méthodes de Galerkin discontinues, décrites à la section §3.3.2. Enfin, on présente à la section §6.4 un algorithme permettant de construire plusieurs maillages dérivés les uns des autres, ceci afin de modéliser facilement les phénomènes de dégradation d’un matériau cimentaire.

La plate-forme SALOME.

Description des besoins d’une chaîne de calcul multi-échelle

Maillages

 La vocation première de ces travaux de thèse est de concevoir et d’implémenter des méthodes multi-échelles dédiées aux matériaux cimentaires. Toute implémentation de ces méthodes est donc tenue de pouvoir mailler différentes modélisations de ces matériaux. Comme on l’a décrit à la section §3.6, on représente ici les matériaux cimentaires par une distribution complexe d’objets géométriques, que l’on nomme inclusions dans un milieu homogène, la matrice. À la section §4.3.2, on a présenté deux méthodes pour représenter ces matériaux dans le cadre de travail de la maquette Python : un milieu plan, des inclusions sphériques et des maillages quadrangulaires réguliers. On travaille ici dans un cadre plus général qui apporte des nouvelles contraintes, le milieu est de dimension 2 ou 3 ; les inclusions ont des formes quelconques ; mais aussi de nouvelles libertés : les maillages fins ne sont pas réguliers. La première méthode de modélisation, par dichotomie, n’est pas plus efficace dans ce contexte élargi. En effet, la forme de la discrétisation ne règle pas le problème majeur de cette méthode puisqu’il n’y aura toujours qu’un très faible nombre de volumes strictement à l’intérieur des petites inclusions. Le milieu sera donc autant déformé que dans le cadre 2D régulier. La seconde méthode, par moyenne pour  rait théoriquement être utilisée ici. Elle demanderait cependant un important travail sur les intersections entre les géométries des inclusions, de forme quelconque, et des éléments du maillage (quadrangles ou tétraèdres). Sa mise en application semble donc difficilement réalisable. On a donc décidé de changer de philosophie et de travailler sur une approche de type Conception Assistée par Ordinateur (ou CAO), couramment utilisée pour travailler sur des géométries complexes aussi bien dans le milieu de la recherche (Code_Aster [77], Cast3M [76], etc.) que dans le monde industriel (Abaqus FEA [6], Nastran [146]). Il s’agit de construire une représentation géométrique du milieu, puis d’en calculer un maillage adapté. Tout élément du maillage, face ou volume, appartient alors à un unique objet physique : la matrice, une inclusion, un bord du domaine. La disposition générale des mailles respecte les frontières entre les objets, aux erreurs de discrétisation près. 

Automatisation

 La méthode multi-échelle suppose de découper le domaine de travail en cellules. Pour un domaine donné, ce n’est donc pas un maillage qu’il faut générer, mais autant de maillages que de cellules, qui sont généralement très nombreuses. On rappelle, pour l’exemple, qu’une simple division d’un domaine 3D en dix parties selon chaque direction de l’espace conduit à la création d’un millier de cellules, pour un maillage grossier de seulement 113 degrés de liberté. Il devient donc vital de pouvoir automatiser la création des maillages, sous peine de ne pouvoir appliquer les méthodes multi-échelles qu’à de très petits découpages.

Parallélisme

 Au sein d’un milieu, les cellules sont physiquement liées les unes aux autres par les frontières des macroéléments sous-jacents. Le reste de la cellule est indépendant de ses voisins et il en est de même pour les maillages associés. Une fois discrétisées les frontières des macroéléments, mailler les cellules peut donc être effectué en parallèle, tout un jeu de maillages de cellules étant réalisé en même temps. Pour profiter de cette possibilité, il est donc important que les outils utilisés soit capable de travailler dans un cadre parallèle. 

Post-traitement

Une fois les maillages générés, d’autres problèmes restent à résoudre. En effet, la majeure partie des traitements qui s’avéraient triviaux sur des maillages réguliers deviennent plus complexes à mettre en œuvre dans un cadre quelconque. C’est le cas notamment du recollement des maillages qui va demander une renumérotation complète des maillages à fusionner. De même l’accès aux solutions et aux erreurs ne se fait plus automatiquement : une coupe de la solution demandera ainsi de couper géométriquement le maillage par le plan de coupe, puis de projeter les valeurs de la solution sur ce plan. Sans être rédhibitoires, ces problèmes demandent l’utilisation d’outils particuliers qu’il faudra donc mettre en place. 

Présentation de la plate-forme SALOME

On a choisi de générer les maillages par le biais de la plate-forme SALOME [163], développée par le consortium Open CASCADE en collaboration avec le CEA et EDF. Il s’agit d’un logiciel libre, distribué sous licence publique générale limitée GNU (ou GNU LGPL [109]), qui fournit une plate-forme générique pour les travaux en amont et en aval des simulations numériques. En amont, SALOME peut être utilisée en tant que logiciel de CAO afin de construire des géométries complexes, ou encore modifier des géométries importées d’autres logiciels. Ces géométries peuvent ensuite être discrétisées en utilisant des mailleurs libres (NETGEN ) ou commerciaux (GHS3D , GHS3D parallel, BLSURF, Hexotic ). En aval des simulations, SALOME permet de réaliser de nombreuses opérations sur les maillages (fusion, découpage), et sur les champs solutions (visualisations, coupes). SALOME a été développée dans l’optique d’être pilotable via des commandes Python [155]. La version graphique de l’interface utilisateur (GUI Graphic User Interface) ne permet d’ailleurs pas d’accéder à toutes les fonctionnalités, et il faut donc utiliser l’interface texte utilisateur Python (TUI Text User Interface) pour profiter pleinement de certains outils. Il est à noter que la plate-forme SALOME contient le module YACS. Il s’agit d’un module d’interfaçage permettant de piloter des programmes externes à SALOME, ou dépendant d’autres modules. En particulier, il permet de paralléliser la construction des maillages de cellules. Cette fonctionnalité n’a cependant pas été utilisée dans le cadre de ces travaux de thèse, faute de temps pour la maitriser.

Remarque 6.1 Dans le cadre de cette thèse, deux versions de SALOME ont été utilisées : la version 4.1.3 sous Mandriva 2006, puis la version 5.1.4 sous Mandriva 2008. Le développement, la correction et l’amélioration de SALOME étant très actifs, il se peut que certaines des solutions décrites dans la suite de ce chapitre ne soient plus correctes, ou soient inutilement complexes. Elles méritent néanmoins d’être présentées, car leur valeur pédagogique reste intacte. En effet, il s’agit de solutions originales à des problèmes survenant régulièrement en CAO : automatisation (§6.2), optimisation de routines (§6.2.3), gestion de cas critiques (§6.2.4), etc. Elles font en outre appel à de très nombreuses routines natives de SALOME, et représentent donc une source précieuse d’informations pour toute personne désirant utiliser intensivement SALOME. À charge au lecteur motivé d’adapter les solutions présentées à la dernière version du logiciel, en s’appuyant par exemple sur leurs codes sources, reproduits à l’Annexe §B. 

Composants utilisés en amont des simulations numériques

 On présente maintenant les principes généraux qui régissent le fonctionnement de SALOME en amont des simulation numériques, c’est-à-dire l’ensemble des opérations qui permettent de passer d’une information sur le milieu (géométrie, diffusivité) à un maillage exploitable par le solveur MPCube. Ce travail s’appuie sur deux modules, les modules GEOM et MESH, qui gèrent respectivement la géométrie du milieu et les maillages. Chacun va permettre de créer une représentation du domaine, respectivement une géométrie et un maillage, qui seront intrinsèquement liés. La première étape de tout travail est de créer la représentation géométrique du milieu. SALOME permet de créer facilement toutes sortes d’objets, soit grâce à l’interface graphique (GUI), soit via des commandes Python. Cette dernière solution étant d’ailleurs la seule utilisable si on souhaite travailler sur des formes complexes ou automatiser certaines tâches, elle est à privilégier autant que possible. L’objectif de cette étape est d’obtenir, au fil des manipulations, un unique objet représentant le domaine, dans lequel chaque zone caractéristique (frontières, faces de bords, différentes zones de diffusivités) est représentée par un groupe géométrique. Du point de vue CAO, chaque groupe peut contenir un ou plusieurs objets, mais il ne représente qu’une seule réalité physique. Une fois cet objet créé, on peut le discrétiser via le module MESH qui construit un objet maillage lié à l’objet géométrique. Il suffit ensuite de choisir et lancer les algorithmes mailleurs (NETGEN, etc.) pour obtenir un maillage. À partir des groupes géométriques, on peut alors former des groupes d’éléments : groupes de volumes pour les solides, groupes de faces pour les bords. Ceux-ci sont indispensables à tout travail de simulation sur le maillage, puisqu’ils servent notamment à marquer les éléments du maillages concernés par les conditions aux limites. Il est important de noter que l’objet géométrique est indispensable au bon fonctionnement de l’objet maillage. Si on s’avisait de supprimer la géométrie associée, toute opération au-delà de l’affichage et du stockage du maillage courant deviendrait impossible. Notamment, on ne pourrait ni recalculer le maillage, ni former des groupes ni supprimer des éléments du maillage autrement qu’à la main. Sur ce dernier point, on pourra se reporter à la section §6.4 pour avoir plus de détails. Par expérience personnelle, l’étape de création géométrique est de loin la plus importante des deux. En effet, même si créer le maillage fait intervenir des algorithmes complexes, gourmands en mémoire et en temps, leur mise en œuvre est aisée au sein de la plate-forme SALOME. La création géométrique, elle, demande une réflexion beaucoup plus importante, notamment pour la création des groupes géométriques si utiles pour la division du maillage en familles.

Cours gratuitTélécharger le document complet

Télécharger aussi :

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *