Mise en œuvre dans le cas 3D : simulations MPCube

Mise en œuvre dans le cas 3D :simulations MPCube

La chaîne de calcul multi-échelle SALOME-MPCube

 On peut espérer disposer de deux types de parallélisme au sein de la chaîne de calcul multi-échelle SALOME-MPCube. Il y a tout d’abord le parallélisme intrinsèque aux méthodes multi-échelles, dit extra-cellulaire. La grande majorité du travail à effectuer sur les cellules du domaine, par exemple leurs discrétisations et la résolution des problèmes locaux, peut en effet s’effectuer indépendamment d’une cellule à l’autre. On peut donc traiter plusieurs cellules de front. Il est également possible d’utiliser un second type de parallélisme, dit intracellulaire. Il s’agit de profiter des fonctionnalités de SALOME et MPCube qui permettent d’assigner plusieurs processeurs à une unique tâche. MPCube dispose en effet de solveurs parallèles, qui permettent de répartir l’effort de calculs de gros et très gros problèmes sur plusieurs cœurs de calculs. De même, SALOME peut faire appel à des mailleurs parallèles. La Figure 5.1 présente un organigramme simplifié de la chaîne de calcul SALOME-MPCube. Sont également représentés les degrés de parallélisme, théoriques et implémentés, disponibles pour chaque module de l’organigramme. Il est à noter que les étapes les plus coûteuses ont été parallélisées : résolution des problèmes locaux, construction des fonctions de bases et calcul des matrices associées. Comme on le détaille un peu plus bas, la génération des maillages est partiellement parallélisée dans la mesure où on construit chaque maillage de cellule indépendamment des autres. Pour des raisons techniques, cette construction s’effectue cependant séquentiellement, c’est-à-dire une cellule après l’autre. 

Génération des maillages

 La première étape de la chaîne de calcul SALOME-MPCube consiste à discrétiser l’ensemble des cellules du découpage multi-échelle. Plus précisement, il s’agit, partant d’une description de la géométrie du domaine, d’obtenir un jeu de maillages exploitables par le code de calcul MPCube. Cette tâche est dévolue à la plate-forme SALOME et le chapitre §6 décrit les fonctionnalités spécifiquement développées dans ce but. 

Génération des maillages. SALOME 

Préparation des calculs. Python et MPCube Problèmes locaux. MPCube Calcul des matrices locales. MPCube Mise en forme des résultats. MPCube Problème grossier. MPCube Construction solution fine. SALOME Génération des maillages. SALOME Préparation des calculs. Python et MPCube Problèmes locaux. MPCube Calcul des matrices locales. MPCube Mise en forme des résultats. MPCube Problème grossier. MPCube Construction solution fine. SALOME FIGURE 5.1 – Organigramme de la chaîne de calcul SALOME-MPCube. Les modules sont colorés en fonction du degré de parallélisme implémenté (à gauche) et théoriquement atteignable (à droite) : parallélismes intra et extra-cellulaire (en bleu), parallélisme extra- cellulaire seul (en rouge) et tâche séquentielle (en jaune). 108 CHAPITRE 5. SIMULATIONS MPCUBE. Du point de vue du parallélisme, la génération de maillages dispose d’un parallélisme extra-cellulaire presque total. En effet, une fois les informations géométriques attribuées aux cellules, c’est-à-dire une fois les inclusions réparties (cf. Alg. 6.7 L.1), les travaux de construction géométrique et de discrétisation sont indépendants d’une cellule à l’autre. Dans le cas de la construction de maillages coïncidents pour la méthode GD/VFDiam, décrite à la section §6.3, il faut cependant tenir compte de la construction du maillage de référence (cf. Alg. 6.9 L.2), une tâche qui ne peut se faire que séquentiellement. L’implémentation de ce module a été réalisée de manière à profiter de ce parallélisme. Ainsi, la fonction discrétisant une cellule ne requiert que la liste des inclusions correspondantes en entrée, et est appelée une fois par cellule. L’implémentation est donc indépendante d’une cellule à l’autre. Malgré cela, en pratique la discrétisation des cellules se fait séquentiellement. En effet, travailler de front sur plusieurs cellules demande de manipuler plusieurs instances de SALOME, ce qui est techniquement complexe car de nombreuses ressources sont partagées. Par le biais du module YACS, il est théoriquement possible de lancer une seule instance de SALOME qui piloterait les constructions paralléles. Cependant, cette option n’a pas été mise en place, le temps manquant pour maîtriser ce module. La génération des maillages dispose d’un parallélisme intra-cellulaire. En effet, si la construction géométrique de la cellule ne peut que se faire séquentiellement, il n’en est pas de même de la discrétisation du domaine. SALOME dispose en effet d’un mailleur parallèle GHS3D PARALLEL [103] pouvant tirer partie de la disponibilité de plusieurs processeurs. L’utilité de cette option reste cependant confinée à la création de très gros maillages, dépassant la dizaine de millions de volumes. Au contraire, le principe premier des méthodes multi-échelles est de travailler sur une série de problèmes de tailles raisonnables. Cette forme de parallélisme n’a donc pas été mise en œuvre.

Préparation des calculs

Une fois les maillages obtenus, la chaîne de calcul SALOME-MPCube prépare les fichiers nécessaires aux simulations MPCube. Le code de calcul MPCube, tout comme le code Trio-U sur lequel il est basé, fonctionne grâce à des jeux de données, nommés fichiers data. Ces fichiers définissent les caractéristiques des simulations à résoudre : termes sources, conditions aux limites, schéma Volumes Finis utilisé, solveurs, etc. Pour chaque cellule du domaine, un dossier de travail est construit, et un script Python génère ensuite automatiquement le fichier data correspondant aux problèmes de cellules et au calcul des matrices locales. Un exemple commenté de jeu de données est disponible à l’annexe §B.2.1. L’appel à la commande MAKE_PAR.DATA achève la préparation de la simulation. Cette commande native de Trio-U construit les fichiers nécessaires à la réso- 5.1. LA CHAÎNE DE CALCUL MULTI-ÉCHELLE SALOME-MPCUBE. 109 lution parallèle du problème. En particulier, elle répartit le domaine de travail, ici le maillage d’une cellule, sur un nombre donné de processeurs et adapte les fichiers data en conséquences. La Figure 5.2 présente un état du dossier de travail consacré à la cellule (0,0,0), une fois terminée la préparation de la simulation. Le domaine cellule3D_0_0_0, qui contient trois zones de diffusivités (le fond et deux types d’inclusions), a été préparé pour une résolution parallèle sur 2 processeurs. La préparation des fichiers de simulation est une tâche indépendante d’une cellule à l’autre. On dispose donc théoriquement d’un parallélisme extra-cellulaire. En l’état actuel des choses, celui-ci n’a pas été implémentée, et les cellules sont préparées les unes après les autres. La commande MAKE_PAR.DATA est séquentielle, son rôle étant justement de préparer un futur travail parallèle. Il n’y a donc pas de parallélisme intra-cellulaire possible pour cette étape de la chaîne de calcul. 

Résolution des problèmes de cellules

 La résolution des problèmes de cellules s’effectue par la méthode des Volumes Finis VFDiam, via le code de calcul MPCube. En effet, une fois les fichiers data correctement préparés, les problèmes de cellules deviennent des problèmes de diffusion classiques. Il n’est donc pas nécessaire d’implémenter de nouvelles fonctionnalités au code MPCube. On dispose donc d’un code de calcul parallèle performant, dont l’implémentation a été qualifiée dans de précédents travaux [61]. D’un point de vue technique, on choisit d’utiliser le solveur BICGSTAB et le préconditionneur multi-grille BOOMERAMG   par le biais de la librairie PETSC . Ces solveurs se sont révélés adaptés à la résolution de problèmes de diffusions au sein des matériaux cimentaires . Sur une cellule donnée, on résout les problèmes de cellules les uns après les autres, c’est-à-dire que l’on détermine Ψ1 Kˆ , puis Ψ2 Kˆ , et ainsi de suite. On profite alors du parallélisme intra-cellulaire du code de calcul MPCube en faisant appel à des solveurs parallèles pour résoudre les problèmes de cellule. En assignant plusieurs processeurs à cette tâche, on s’assure ainsi que chaque problème est résolu efficacement. Les problèmes de cellules étant indépendants d’une cellule à l’autre, on dispose ici d’un parallélisme extra-cellulaire total. Afin de l’exploiter, on fait appel à la fonction Trio-U native Execute_parallel. Cette fonction permet d’exécuter plusieurs instances de Trio-U, et donc de MPCube, en parallèle, tout en précisant le nombre de processeurs à allouer à chaque instance. Ainsi la Figure 5.3 présente un jeu de données permettant de lancer la résolution des problèmes sur trois cellules différentes, chaque cellule se voyant attribuer deux processeurs. Il est possible d’assigner un nombre différent de cœurs de calculs aux différentes instances, ce qui peut être utile si l’une des cellules a une discrétisation plus fine par exemple. – En exécutant MPCube avec ce jeu de données, on lance trois nouvelles instances de MPCube qui traiteront les problèmes d’une cellule chacune. On a alloué deux cœurs de calcul à chaque instance. 

Construction de la base locale et calcul des matrices locales

 Comme décrit à la section §3.3.1, les solutions (Ψl Kˆ )1≤l≤n des problèmes de cellules ne forment pas une base de l’espace VH des solutions du problème grossier (3.2). On construit donc, sur chaque cellule, la base locale de Galerkin (Φl K )1≤l≤n par combinaison linéaire des (Ψl Kˆ )1≤l≤n (3.25). C’est à partir de ces bases locales que l’on construit une base de Galerkin lors de la résolution du problème grossier. Une fois les fonctions (Φl K )1≤l≤n obtenues, on calcule les matrices locales de masse, de raideur, de saut, etc. Lors de la résolution du problème grossier, ces matrices sont assemblées, l’assemblage dépendant du schéma choisi pour résoudre le problème grossier : méthode des Éléments Finis (cf. §3.3.1) ou méthode de Galerkin discontinue (cf. §3.3.2). Le calcul des fonctions (Φl K )1≤l≤n et des matrices locales associées est réalisé par le biais de MPCube. La Figure 5.4 présente la liste des instructions MPCube utilisées pour effectuer ce travail. Ces commandes doivent être exécutées à la suite de 5.1. LA CHAÎNE DE CALCUL MULTI-ÉCHELLE SALOME-MPCUBE. 111 la résolution des problèmes de cellules, qui sont notés probleme0 à probleme7 à la Figure 5.4. Il ne s’agit pas d’une fonctionnalité native du code de calcul, mais de développements réalisés au cours de ces travaux de thèse. On a développé une série d’objets qui couvre toutes les opérations informatiques nécessaires à l’assemblage du problème grossier. Cela comprend la restriction au macroélément K des fonctions définies sur la cellule Kˆ, l’interpolation des solutions pour obtenir des valeurs sur les faces et sommets du maillage fin Th(Kˆ), etc. Ces développements sont présentés en détail à la section §5.2.2. 

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 *