Formalisation et automatisation de YAO, générateur de code pour l’assimilation variationnelle de données

La modélisation numérique est de plus en plus utilisée comme complément à l’étude d’un phénomène physique se déroulant dans le temps, dans l’espace à une, deux ou trois dimensions (1D, 2D, 3D) ou bien tout à la fois dans le temps et l’espace. Dans une première étape le modèle numérique permet de choisir et d’adapter les équations permettant de reproduire les lois physiques qui sous-tendent le phénomène. Une fois vérifié le bon comportement de ces lois, il est alors utilisé pour l’étude et la simulation du phénomène lui-même. Cependant, les modèles numériques (modèles directs) ainsi créés restent toujours imparfaits. La paramétrisation des modèles, les discrétisations, les incertitudes sur les conditions initiales et les conditions aux limites introduisent des approximations dont il faudra tenir compte au moment d’étudier le comportement du phénomène ou de prédire ses évolutions. De nouvelles techniques, qui utilisent à la fois la modélisation et la résolution du problème inverse, ont vu le jour, elles se regroupent sous le nom d’assimilation de données (AD). Celles-ci tentent de faire évoluer les paramètres du modèle numérique ou ceux qui le contraignent (conditions initiales, . . . ) en introduisant un nouveau type d’information : les observations. Elles utilisent alors le modèle numérique du phénomène, ou modèle direct, et se servent des observations pour contrôler les modifications nécessaires. Il existe deux grandes familles de techniques pour faire de l’assimilation de données : les méthodes séquentielles et les méthodes variationnelles [Bouttier et Courtier, 1997, Le Dimet et Talagrand, 1986, Louvel, 1999, Sportisse et Quélo, 2004, Talagrand, 1991, Talagrand, 1997], la seconde étant plus adaptée, si l’on veut prendre en compte d’une manière globale les variations du phénomène pendant une période de temps donnée. Toutes sont aujourd’hui de plus en plus utilisées, car elles permettent de faire interagir l’ensemble des informations disponibles (connaissances théoriques sur le phénomène et observations de celui-ci) dans l’espace et dans le temps.

L’efficacité de ces méthodes est visible si l’on considère leurs bonnes performances sur des problèmes réels. On peut faire référence, parmi d’autres, à l’amélioration actuelle obtenue sur les prévisions des modèles météorologiques qui assimilent les observations satellitaires et in situ depuis une vingtaine d’années. La technique choisie par les centres de prévision météorologique est, en général, l’assimilation variationnelle dite 4D-Var, qui permet la prise en compte des observations mesurées en divers points de l’espace et à n’importe quel moment durant le temps d’assimilation. Le principe de l’AD 4D-Var repose sur la minimisation d’une fonction de coût, celle-ci mesure l’adéquation entre les observations et leurs équivalents modèles, elle tient compte des incertitudes liées aux mesures et à des informations a priori sur les paramètres à contrôler. La minimisation de la fonction de coût, par une méthode de gradient, nécessite le calcul du modèle numérique direct, du gradient de la fonction de coût par rapport aux variables à contrôler (modèle adjoint) et parfois l’utilisation d’une version linéarisée du modèle direct (modèle linéaire tangent). L’implémentation informatique de ce calcul nécessite donc d’avoir accès au code du modèle direct, de son adjoint et de son linéaire tangent. Ceux-ci nécessitent un investissement de programmation important, notamment en ce qui concerne le modèle adjoint. D’autre part, des difficultés importantes résident dans leur mise en œuvre, car à cela s’ajoute qu’il faut gérer les observations qui peuvent intervenir en n’importe quel lieu et quel que soit le temps, gérer les différentes fonctions de coût, ainsi que les matrices de variance-covariance d’erreur qui interviennent dans le processus d’assimilation. D’autre part, des développements théoriques ont été apportés aux méthodes AD 4D-Var, il s’agit de la prise en compte : des erreurs liées aux modèles, de l’information relative aux problèmes multi-échelles, du couplage de modèles numériques, des données structurées (images). D’autre part, des scénarios de minimisation complexes ont été proposés : méthode incrémentale, méthode quasi-statique. Tous ces développements introduisent des complexités importantes au niveau des algorithmes 4D-Var et des méthodes de minimisation associées. L’implémentation d’une méthode AD 4D-Var nécessite :
a. d’avoir le code du modèle numérique direct, de son adjoint et souvent de son linéaire tangent.
b. Ayant toutes ces implémentations, il faut alors, en fonction de la méthode choisie, ordonnancer les différents calculs suivant un certain scénario. En plus, dans certains cas plus complexes, il faut gérer le couplage entre modèles.

Tenant compte des complexités de ces méthodes et de l’investissement important qu’ils demandent au niveau de leur implémentation informatique, plusieurs projets ont vu le jour. L’objectif de ces projets est de fournir des outils logiciels permettant d’assister un utilisateur dans sa tâche de programmation. Historiquement, les outils logiciels d’aide qui ont été proposés visent à répondre d’une manière spécifique à l’une ou l’autre de ces deux tâches. Concernant le point (a), on trouve les logiciels de génération automatique du code adjoint à partir du code du modèle direct. Ces logiciels répondent à un besoin actuel qui consiste à exploiter de très gros codes existants dont on est sûr du bon fonctionnement. Le code adjoint généré de cette manière contient des instructions qui ne sont pas nécessaires et doit être “nettoyé” avant son utilisation, sous peine de payer un surcoût de calcul important. Cette opération doit d’autre part être recommencée si l’on fait évoluer le code direct et si l’on désire faire évoluer également son adjoint. Les logiciels qui mettent en œuvre cette approche sont connus sous le nom de dérivateurs automatiques ou adjointiseurs [Griewank et Walther, 2008]. On trouve dans cette famille les logiciels TAPENADE, TAF, OpenAD, etc. [Hascoët et Pascual, 2004, Giering et Kaminski, 1998, Naumann et al., 2006]. Concernant le point (b), on trouve les logiciels PALM et OASIS, qui sont développés au Centre Européen de Recherche et de Formation Avancée en Calcul Scientifique (CERFACS à Toulouse) [Fouilloux et Piacentini, 1999, Redler et al., 2010]. Ces logiciels supposent que l’utilisateur dispose de programmes qui calculent le modèle numérique direct, son adjoint et si nécessaire son linéaire tangent. A partir de ces programmes de calculs, ces logiciels permettent d’implémenter et d’exécuter divers schémas d’assimilation de données en couplant leurs différentes composantes algorithmiques d’une façon modulaire. D’autre part, une bibliothèque de programme, intitulée VERDANDI, est développée à l’INRIA pour aider à la réalisation de programme en assimilation de données par des non spécialistes, elle concerne actuellement les méthodes d’assimilations séquentielles et ne contient pas, dans sa version actuelle, d’aide dédiée à l’assimilation 4D-Var.

Le logiciel YAO 

Dans ce chapitre, nous faisons une présentation générale de YAO. Nous présentons en détail le graphe modulaire, qui est la structure sous-jacente de YAO. Nous présentons ensuite les directives YAO, qui permettent la création de ce graphe et sa traversée. Avoir une maîtrise complète de ces aspects est essentiel pour comprendre le reste de ce manuscrit. L’objectif de cette thèse est de traiter l’automatisation de tâches telles que :
– le contrôle de la cohérence et
– la génération automatique de certaines spécifications de l’utilisateur, ainsi que
– la parallélisation automatique du code généré par YAO.
C’est à partir des directives YAO relatives au graphe modulaire et à son parcours que l’analyse de la génération automatique prend forme.

Concept de graphe modulaire

On définit les termes suivants :
– Module : un module F est une entité de calcul, il reçoit un vecteur en entrée et calcule un vecteur en sortie. Le graphe modulaire, qui est présenté ci-dessous, est formé de plusieurs modules, un module reçoit ses entrées d’autres modules ou du contexte extérieur au graphe et transmet ses données en sortie à d’autres modules ou au contexte extérieur.
– Connexion de base : on schématise les transmissions de données entre modules par des connexions qui seront appelées par la suite les connexions de base. Une connexion de base qui lie la ieme  sortie d’un module Fs (F source) à la j ieme  entrée d’un module Fd (F destination) indique que la i eme  valeur calculée par Fs sera transmise à la j ieme  entrée de Fd. Les transmissions de données vers l’extérieur du graphe seront représentées par des connexions de base partant de sorties de certains modules et se terminant à des points particuliers que nous appelons output data points. De même la transmission de données du contexte extérieur vers les entrées de certains modules se fait par l’intermédiaire de connexions de base qui débutent en des points qui seront dits input data points.
– Graphe modulaire : un graphe modulaire est un ensemble de modules interconnectés. Les modules représentent les sommets du graphe et un arc (orienté) du module Fs vers le module Fd signifie que Fs transmet une partie de ses sorties à Fd .

Le graphe modulaire est un graphe sans circuit, il existe donc au moins un sommet d’entrée (sans prédécesseurs) et au moins un sommet de sortie (sans successeurs), on distingue donc trois types de modules :
– Les modules d’entrée (sans prédécesseurs) reçoivent leurs données uniquement du contexte extérieur du graphe et transmettent leur sorties à d’autres modules ou au contexte extérieur.
– Les modules de sortie (sans successeurs) transmettent leurs sorties uniquement au contexte extérieur du graphe et reçoivent des données d’autres modules ou du contexte extérieur.
– Les modules internes reçoivent nécessairement des entrées des modules prédécesseurs et éventuellement du contexte extérieur et transmettent les résultats aux modules successeurs et éventuellement au contexte extérieur.

Globalement, un graphe modulaire reçoit une partie de ses données sur les entrées de ses modules d’entrée, il propage le calcul dans ce graphe en récupérant éventuellement d’autres données du contexte extérieur. L’ensemble des données qui seront transmises au contexte extérieur constitue un vecteur y, ce vecteur correspond aux résultats à restituer au contexte extérieur du graphe modulaire. Ainsi, un graphe modulaire peut être considéré lui-même comme un module F. La représentation par graphe modulaire s’applique donc à différents niveaux d’intégration, ce qui permet de former des modèles de plus en plus complexes.

Le rapport de stage ou le pfe est un document d’analyse, de synthèse et d’évaluation de votre apprentissage, c’est pour cela rapport-gratuit.com propose le téléchargement des modèles complet de projet de fin d’étude, rapport de stage, mémoire, pfe, thèse, pour connaître la méthodologie à avoir et savoir comment construire les parties d’un projet de fin d’étude.

Table des matières

1 Introduction
2 Principes théoriques de l’assimilation variationnelle
2.1 Introduction et notations
2.2 Calcul de l’adjoint
2.3 Méthode incrémentale
2.4 Quelques extensions
2.4.1 Transformation du vecteur d’état
2.4.2 Prise en compte du bruit du modèle, méthode duale
2.5 Conclusion
3 Le logiciel YAO
3.1 Concept de graphe modulaire
3.2 Tangent linéaire et adjoint de la fonction globale Γ
3.2.1 Modèle tangent linéaire d’un graphe modulaire
3.2.2 Modèle adjoint d’un graphe modulaire
3.3 Représentation d’une application par graphe modulaire
3.4 Mise au point d’expériences de simulation et/ou d’assimilation
3.5 Présentation de YAO
3.5.1 Le fichier description
3.5.2 Le fichier instructions
3.5.3 Les fichiers module
3.5.4 Le fichier chapeau
3.5.5 Applications et quelques considérations techniques
3.6 Présentation de quelques directives de description
3.6.1 Directive trajectory
3.6.2 Directive space
3.6.3 Directive module
3.6.4 Directive ctin
3.6.5 Directive order
3.7 Exemple numérique : le Shallow-water
3.8 Implémentation des méthodes incrémentales et duales dans YAO
3.9 Conclusion
4 Cohérence dans l’ordre de calcul
4.1 Introduction
4.2 Règles de vérification : cas des références relatives
4.3 Algorithme de cohérence
4.4 Références absolues
4.5 Résultats et conclusion
5 Génération automatique des directives order
5.1 Graphe de Dépendance Réduit (GDR)
5.2 Analyse structurelle du GDR
5.3 Anomalies dans la définition des ctin
5.4 Méthode de génération des directives order
5.4.1 Présentation de la méthode
5.4.2 Procédures de génération
5.5 Fusion de boucles
5.5.1 Fusion par mise en niveaux
5.6 Références absolues dans la génération automatique
6 Conclusion

Rapport PFE, mémoire et thèse PDFTélécharger le rapport complet

Télécharger aussi :

Laisser un commentaire

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