Introduction Verdandi Travaux Journées IJD Kévin Charpentier - Equipe-Projet CLIME Juin 2012 Kévin Charpentier - Equipe-Projet CLIME 1/23 Introduction Verdandi Travaux 1 Introduction CLIME Assimilation de données Exemple de résultat 2 Verdandi 3 Travaux Kévin Charpentier - Equipe-Projet CLIME CLIME Assimilation de données Exemple de résultat 2/23 Introduction Verdandi Travaux CLIME Assimilation de données Exemple de résultat EPI CLIME Couplage de la donnée environnementale et des modèles de simulation pour une intégration logicielle Axes de recherche : Assimilation de données Assimilation d’images Chaı̂nes logicielles pour les applications environnementales : Polyphemus (système de simulation de la qualité de l’air), Verdandi (bibliothèque d’assimilation de données) Kévin Charpentier - Equipe-Projet CLIME 3/23 Introduction Verdandi Travaux CLIME Assimilation de données Exemple de résultat Principe de l’assimilation de données Améliorer un modèle de prévision, en faisant un compromis entre les résultats du modèle d’analyse, et des sources d’observations. Domaines d’applications principaux : météorologie, océanographie. Exemple simple d’un algorithme d’assimilation séquentielle : Pour chaque temps th , on dispose d’observations oh . xha est le vecteur d’analyse, résultat de la méthode d’assimilation A, et xhf le vecteur d’état. Mh est le modèle numérique. xha = A(xhf , oh ) f xh+1 = Mh (xha ) Kévin Charpentier - Equipe-Projet CLIME 4/23 Introduction Verdandi Travaux CLIME Assimilation de données Exemple de résultat Concentration en NO2 sur Clermont-Ferrand (10/07/2008) Modèle de prévision sans assimilation. Kévin Charpentier - Equipe-Projet CLIME Modèle de prévision avec assimilation. 5/23 Introduction Verdandi Travaux Présentation générale de Verdandi Structure de la bibliothèque 1 Introduction 2 Verdandi Présentation générale de Verdandi Structure de la bibliothèque 3 Travaux Kévin Charpentier - Equipe-Projet CLIME 6/23 Introduction Verdandi Travaux Présentation générale de Verdandi Structure de la bibliothèque Présentation générale de Verdandi Co-développée avec l’EPI MACS Licence : GNU LGPL Langages : C++, Python (interface générée par SWIG) Plates-formes disponibles : Linux, MacOS, Windows Objectif de la bibliothèque : fournir des méthodes d’assimilation de données adaptées aux modèles numériques de grande dimension (météorologie, océanographie, cœur numérique, ...). Kévin Charpentier - Equipe-Projet CLIME 7/23 Introduction Verdandi Travaux Présentation générale de Verdandi Structure de la bibliothèque Conception Généricité des méthodes d’assimilation. xha = A(xhf , oh ) f xh+1 = Mh (xha ) Les méthodes A sont génériques et indépendantes du modèle de prévision, et peuvent donc être regroupées dans une même bibliothèque. Différentes méthodes : interpolation optimale, filtres de Kalman, 4D-Var... Kévin Charpentier - Equipe-Projet CLIME 8/23 Introduction Verdandi Travaux Présentation générale de Verdandi Structure de la bibliothèque Intérêts Donner accès à un grand nombre de méthodes d’assmiliation et d’outils utiles au développement une fois le modèle interfacé. Fournir un cadre structuré afin de pérénniser les développements, et ainsi améliorer la diffusion des travaux. Utilisateurs visés : Spécialistes du domaine. Débutants voulant se former à l’assimilation de données. Kévin Charpentier - Equipe-Projet CLIME 9/23 Introduction Verdandi Travaux Présentation générale de Verdandi Structure de la bibliothèque Conception Méthode Langage : C++ Trois objets principaux Un modèle Modèle Un gestionnaire d’observations Une méthode d’assimilation qui pilote les deux autres Kévin Charpentier - Equipe-Projet CLIME Obs. 10/23 Introduction Verdandi Travaux Présentation générale de Verdandi Structure de la bibliothèque Interfacer son modèle Stocke le vecteur d’état Fournit la dynamique Définit la variance de l’erreur sur la condition initiale et la variance de l’erreur modèle Interface C++ GetState(x) où x est le vecteur d’état Forward() ou ApplyOperator(x) pour appliquer le modèle HasFinished() pour interroger le modèle sur la condition de fin de simulation ... Kévin Charpentier - Equipe-Projet CLIME 11/23 Introduction Verdandi Travaux Contexte Principaux travaux réalisés cette année Présentation de quelques travaux Développements futurs 1 Introduction 2 Verdandi 3 Travaux Contexte Principaux travaux réalisés cette année Présentation de quelques travaux Développements futurs Kévin Charpentier - Equipe-Projet CLIME 12/23 Introduction Verdandi Travaux Contexte Principaux travaux réalisés cette année Présentation de quelques travaux Développements futurs Contexte : cadre de développement Corps de la bibliothèque en C++ Interface Python Fichiers de configuration Lua Compilation via SCons Documentation générée par Doxygen Gestion de versions par Git Kévin Charpentier - Equipe-Projet CLIME 13/23 Introduction Verdandi Travaux Contexte Principaux travaux réalisés cette année Présentation de quelques travaux Développements futurs Contexte : travailler sur Verdandi Ajout de nouvelles méthodes/outils dans Verdandi Ajustements dans l’interface en vue d’améliorer les performances Assurance de garder la compatibilité sous Windows Mettre à jour et compléter la documentation en ligne Répondre aux demandes utilisateurs Kévin Charpentier - Equipe-Projet CLIME 14/23 Introduction Verdandi Travaux Contexte Principaux travaux réalisés cette année Présentation de quelques travaux Développements futurs Verdandi 1.1 (sortie le 25/10/2011) Ajout d’une nouvelle méthode d’assimilation : filtre de Kalman ensemble Rendre l’interface SWIG compatible sous Windows Verdandi 1.2 (sortie le 10/04/2012) Ajout d’une interface C++/Python permettant à l’utilisateur d’écrire un modèle en Python, ainsi que ses observations Compatibilité MPI sur deux méthodes : EnKF et BLUE Passage par référence de la variable d’état (modification de certaines fonctions de l’interface modèle) Ajout de la bilbliothèque TR1 dans la liste des générateurs de nombres aléatoires compatibles Kévin Charpentier - Equipe-Projet CLIME 15/23 Introduction Verdandi Travaux Contexte Principaux travaux réalisés cette année Présentation de quelques travaux Développements futurs Verdandi 1.3 (sortie prochaine) Modification en profondeur de l’interface : passage par référence de tous les objets côté modèle et observations afin d’éviter les recopies sur des structures (matrices, vecteurs) de taille potentiellement importantes Principaux travaux en cours Création d’un module de test permettant de vérifier qu’un modèle est correctement interfacé Rendre toutes les méthodes compatibles avec des modèles parallèles (MPI) Rendre compatible la sortie de fichiers au format HDF5 Kévin Charpentier - Equipe-Projet CLIME 16/23 Introduction Verdandi Travaux Contexte Principaux travaux réalisés cette année Présentation de quelques travaux Développements futurs Python Présence d’une interface haut niveau générée automatiquement par SWIG. Nouveau : donner à l’utilisateur la possibilité d’écrire son modèle numérique et ses observations entièrement en Python. Une nouvelle classe générique fait l’interface entre les fonctions C++ demandées par Verdandi, et un module Python écrit par l’utilisateur. Ainsi, l’utilisateur peut potentiellement utiliser Verdandi entièrement en Python. Kévin Charpentier - Equipe-Projet CLIME 17/23 Introduction Verdandi Travaux Contexte Principaux travaux réalisés cette année Présentation de quelques travaux Développements futurs Python Etape 1 : écrire son modèle en Python def GetState(self) def Forward(self) ... Etape 2 : écrire ses observations en Python def GetObservation(self) ... Kévin Charpentier - Equipe-Projet CLIME 18/23 Introduction Verdandi Travaux Contexte Principaux travaux réalisés cette année Présentation de quelques travaux Développements futurs Python Etape 3 : piloter la méthode avec l’interface SWIG In [1]: In [2]: In [3]: In [4]: 1.0 1.0 In [5]: In [6]: In [7]: 1.1 1.3 import verdandi method = verdandi.AssimilationMethod() method.Initialize("conf.lua") method.GetModel().GetState().Print() method.Analyze() method.Forward() method.GetModel().GetState().Print() Kévin Charpentier - Equipe-Projet CLIME 19/23 Introduction Verdandi Travaux Contexte Principaux travaux réalisés cette année Présentation de quelques travaux Développements futurs Filtre de Kalman ensemble Principe : utiliser un ensemble de simulations pour représenter la densité de probabilité de l’état estimé. Pour chaque temps th , l’état est approximé par la moyenne des états de l’ensemble : N X f ,{i} 1 f xh = N xh i=1 - si au temps th , des observations oh sont disponibles, N X f ,{i} f ,{i} 1 Phf = N−1 (xh − xhf )(xh − xhf )T i=1 et pour chaque membre de l’ensemble, a,{i} f ,{i} f ,{i} xh = xh + Kh (oh − Hh (xh )) f ,{i} a,{i} xh+1 = Mh (xh ) Kévin Charpentier - Equipe-Projet CLIME 20/23 Introduction Verdandi Travaux Contexte Principaux travaux réalisés cette année Présentation de quelques travaux Développements futurs Gestionnaires de perturbation Il est nécessaire de pouvoir générer des nombres aléatoires pour certaines méthodes d’assimilations (EnKF, Monte Carlo). Bibliothèque précédemment interfacée : Newran. Nouveau : interfaces à TR1 et TRNG. Permet de donner à l’utilisateur plus de flexibilité dans la façon de perturber ses paramètres de modèle. Kévin Charpentier - Equipe-Projet CLIME 21/23 Introduction Verdandi Travaux Contexte Principaux travaux réalisés cette année Présentation de quelques travaux Développements futurs Développement de l’aspect parallèle de Verdandi Travaux effectués : ajout de la compatibilité avec MPI dans deux méthodes d’assimilation (BLUE et filtre de Kalman ensemble). Priorités : Etendre la compatibilité MPI aux autres méthodes d’assimilation Donner la possibilité à l’utilisateur d’utiliser des méthodes (parallèles ou non) sur un modèle déjà parallélisé Kévin Charpentier - Equipe-Projet CLIME 22/23 Introduction Verdandi Travaux Contexte Principaux travaux réalisés cette année Présentation de quelques travaux Développements futurs Quelques développements futurs Développer l’aspect parallèle de Verdandi, à la fois dans les méthodes et les modèles Implémenter d’autres méthodes d’assimilation et intégration des algorithmes spécifiques à l’assimilation d’images Maintenir un support utilisateur bien présent Kévin Charpentier - Equipe-Projet CLIME 23/23