Journées IJD

publicité
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
Téléchargement