Title: Architecture de Polyphemus
1Architecture de Polyphemus
- Vue densemble.
- Comment trouver ses repères?
- Comment envisager des adaptations mineures?
- A propos des outils de développement.
- A venir.
2Vue densemble
- Lorganisation de la future version 1.4
- reflète les 3 étapes suivantes
- preprocessing,
- processing,
- post-processing.
- reflète la modularité.
3/AtmoData
/Talos
/SeldonData
/atmopy
/common
/driver
/models
/modules
/wgrib /eqsam /isorropia /isorropia_aec /ne
wran
/include
/preprocessing /ic /bc /bio /dep emissi
ons /ground /meteo
/processing /assimilation /castor /decay
/gaussian /global /local /nesting /plume-i
n-grid /racm /radm /siream /siream-aec
/postprocessing /ensemble /optics /waterplume
/config (/config) /raw data
/data /results
4Repère structuration
- Preprocessing intérêt à générer des données
intermédiaires communes à plusieurs scenarii ou
traitements particuliers (calcul densemble...).
5Un sous-répertoire par type de traitement. A un
fichier .cpp correspond un programme exécutable
(partout dans Polyphemus). Ex Dans meteo, on
compilera meteo.cpp pour obtenir meteo qui
exploite des données ECMWF. Si on a des données
MM5, on utilisera MM5-meteo obtenu à partir de
MM5-meteo.cpp.
/preprocessing /ic /bc /bio /dep emissi
ons /ground /meteo
6Repère structuration
- Preprocessing intérêt à générer des données
intermédiaires communes à plusieurs scenarii ou
traitements particuliers (calcul densemble...). - Processing programme qui traitera le modèle
considéré (gaussien, eulérien, ...) avec une
méthode donnée.
7Idem que preprocessing mais uniquement des .cpp
avec les fichiers de configuration exemples
/preprocessing /ic /bc /bio /dep /emiss
ions /ground /meteo
/processing /assimilation /castor /decay /
gaussian /global /local /nesting /plume-in
-grid /racm /radm /siream /siream-aec
8Repère structuration
- Preprocessing intérêt à générer des données
intermédiaires communes à plusieurs scenarii ou
traitements particuliers (calcul densemble...). - Processing programme qui traitera le modèle
considéré (gaussien, eulérien, ...) avec une
méthode donnée. - Post-processing en python pour profiter, soit de
linteractivité (ipython), soit de
lautomatisation (écriture de scripts).
9/preprocessing /ic /bc /bio /dep /emiss
ions /ground /meteo
/processing /assimilation /castor /decay /
gaussian /global /local /nesting /plume-in
-grid /racm /radm /siream /siream-aec
/postprocessing /ensemble /optics /waterplume
10Repère structuration
- Dans le répertoire /include
- Ce qui est voué à être partagé (librairies,
fonctions, etc...) - Ce qui est externe (newran, wgrib, isorropia...)
11 /wgrib /eqsam /isorropia /isorropia_aec /ne
wran
/AtmoData
/Talos
/SeldonData
/atmopy
/common
/driver
/models
/modules
/include
/preprocessing /ic /bc /bio /dep /emis
sions /ground /meteo
/processing /assimilation /castor /decay /
gaussian /global /local /nesting /plume-in
-grid /racm /radm /siream /siream-aec
/postprocessing /ensemble /optics /waterplume
12Repère architecture du processing
- 3 niveaux
- Le driver (ex résolution simple ou calcul
densemble ou assimilation de données etc...) est
lancé par sa méthode Run ( Driver.Run() ). - Opère sur
- le(s) model(s) (ex équation de chimie
transport) est intégré à chaque pas de temps par
sa méthode Forward ( Model.Forward() ). - Qui est composé si nécessaire
- des modules (ex les termes pris en compte
dans léquation de chimie transport advection,
diffusion, chimie, etc) également intégés par
Forward ( Module.Forward() )
13Repère Illustration par polair3d.cpp
Driver
Model
Modules
14/AtmoData
/Talos
/SeldonData
/atmopy
/common
/driver /assimilation /common /local /uncertai
nty
/models .cxx, .hxx
/modules /aerosol /chemistry /common /transpor
t
/wgrib /eqsam /isorropia /isorropia_aec /newran
/include
/preprocessing /ic /bc /bio /dep /emissions
/ground /meteo
/processing /assimilation /castor /decay /
gaussian /global /local /nesting /plume-in
-grid /racm /radm /siream /siream-aec
/postprocessing /ensemble /optics /waterplume
15Repère schématiquement
- Dans le .cpp
- On inclut les fichiers sources contenant les
modules, le modèle, la méthode de sauvegarde et
le pilote. - On déclare Modèle(module1, module2, ...).
- On declare Pilote(modèle, méthode de sauvegarde).
16Clés changer la chimie de RACM en RADM
17Clés changer la chimie de RACM en RADM?
18Clés passer à un modèle gaussien?
include "AtmoData.hxx" include
"PlumeDriver.cxx" include "GaussianPlume.cxx" in
clude "BaseOutputSaver.cxx" ... int main(int
argc, char argv) typedef double real
typedef GaussianPlumeltrealgt ClassModel
PlumeDriverltreal, ClassModel, BaseOutputSaverltreal
, ClassModelgt gt Driver(argv1)
Driver.Run() ...
Pas de modules pour le gaussien, tout est
implémenté dans le modèle.
Cette fois, le driver est spécifique car des
instructions propres au gaussien y sont (lecture
de la météo dans un fichier .dat spécial).
19Clés une sauvegarde spécifique?
- Dans /include/driver/common se trouvent les
outils disponibles qui touchent au driver,
notamment les procédures de sauvegarde, dans le
sous-répertoire output_saver. - Partir dun .cxx qui est le plus proche de ce que
lon veut et en faire une copie pour
modification. - Déclarer la classe obtenue au niveau de
BaseOutputSaverinit() et dans le fichier de
configuration.
20Contribuer
- Pour quun développement puisse devenir une
contribution Polyphemus, il faut assurer - 1/ la cohérence avec larchitecture existante,
- 2/ le respect des conventions de codage,
- 3/ un intérêt potentiel suffisant pour dautres
que soi, - 4/ et si le développement est conséquent, un test
associé.
21Outils de développement
- Pour compiler, utiliser de préférence SCons qui
est plus portable et maintenable que make! (une
version locale de scons est incluse dans la
distribution) - Valgrind peut être utile pour les fuites de
mémoire et lanalyse du temps de calcul. - Kdiff3 offre une interface conviviale pour
analyser les différences entre deux fichiers
texte. - Utiliser les trackers de bugs et de requêtes sur
le site du projet Polyphemus dans Gforge (onglet
Suivi ) et les listes de diffusion. - Pour des développeurs plus aguerris et réguliers,
lensemble du projet est accessible et modifiable
sur le dépôt svn de la Gforge Inria.
22Dans les semaines et les mois à venir...
- Interface graphique pour lancer et exploiter des
calculs en local ou sur un serveur distant via un
navigateur web. Dans un premier temps, limité à
des configurations très précises (TP ParisTech). - Ajout dun modèle lagrangien de diffusion de
particules. - Passage au format netcdf.