LABORATOIRE D'OCEANOGRAPHIE ET DU CLIMAT : EXPERIMENTATION ET APPROCHES NUMERIQUES UNITE MIXTE DE...
-
Upload
everard-soler -
Category
Documents
-
view
106 -
download
1
Transcript of LABORATOIRE D'OCEANOGRAPHIE ET DU CLIMAT : EXPERIMENTATION ET APPROCHES NUMERIQUES UNITE MIXTE DE...
LABORATOIRE D'OCEANOGRAPHIE ET DU CLIMAT :EXPERIMENTATION ET APPROCHES NUMERIQUES
UNITE MIXTE DE RECHERCHE 7159CNRS / IRD / UNIVERSITE PIERRE & MARIE CURIE / MNHN
INSTITUT PIERRE-SIMON LAPLACE
Sylvie THIRIA, Fouad BADRAN, Charles SORROR
YAO : Une méthodologie logiciel pour YAO : Une méthodologie logiciel pour l’implémentation de modèles numériquesl’implémentation de modèles numériques
(schéma direct, adjoint et assimilation variationnelle)
k j
x1
x2
x3
y1
y2
y1
y2
y1
x1
x2
x3
k F2 j
F3 y1
y2
U
x1
x2
x3
F1(i-2)
F1(i+2)
x1
x2
x3
Pour le calcul du Modèle DirectParamètres Initialisation t-1 t … Coût
k F4 j
k F1 j
UTILISATION DU GRAPHE MODULAIRE
k j
2
1
1
2
1
1
1
2
x1
x2
x3
1
y1
y2
jfj/x1
j y1
jfj/x2
j
y2
jfj/x3
j
y1
x1
x2
x3
fonction objective
y°1
y°2
y°3
k F2 j
F3 y1
y2
U
x1
x2
x3
F1(i-2)
F1(i+2)
1
x1
x2
x3
Pour le calcul de l’AdjointParamètres Initialisation t-1 t … Coûtà ajuster
U = U –u1
(1 =J/U)
j=k k = jfj/xk k=J/xksuccesseurs j
k F4 j
k F1 j
UTILISATION DU GRAPHE MODULAIRE :Graphe modulaire ADJOINT
k j
2
1
1
2
1
1
1
2
x1
x2
x3
1
y1
y2
kf1
/xk
k y1
kf2
/xk
k
y2
y1
x1
x2
x3
y°1
y°2
y°3
k F2 j
F3 y1
y2
U
x1
x2
x3
F1(i-2)
F1(i+2)
1
x1
x2
x3
Pour le calcul du Tangent Linéaire Paramètres Initialisation t-1 t … Coûtà ajuster
k=j j = kfj/xk prédécesseur k
k F4 j
k F1 j
UTILISATION DU GRAPHE MODULAIRE :
fonction objective
: petite perturbation
Graphe modulaire TANGENT
BA
CK
WA
RD
H1
FO
RW
AR
D H
1
F O R W A R D
B A C K W A R D
I N I T
J(Xo) = (Xo - Xb)T B-1 (Xo - Xb) + i (H(Mi(Xo)) - Y°i)T R-1 (H(Mi(Xo)) - Y°i)
temps 0 1 2 … n
SCHEMA d’UN MODELEF
OR
WA
RD
R
BA
CK
WA
RD
H2
FO
RW
AR
D H
2
D
BC
A
D
BC
A
Point d’observation
X XXX
X : Points d’intervention
B A C K W A R D
F O R W A R D
FO
RW
AR
D H
1
BA
CK
WA
RD
H1
I N I T
FO
RW
AR
D R
B A C K W A R D
F O R W A R D
FO
RW
AR
D H
3
BA
CK
WA
RD
H3
BA
CK
WA
RD
H2 F
OR
WA
RD
H2
J(Xo) = (Xo - Xb)T B-1 (Xo - Xb) + i (H(Mi(Xo)) - Y°i)T R-1 (H(Mi(Xo)) - Y°i)SCHEMA 2 TRAJECTOIRES
UnUn
schémaschéma
multimulti
spatio spatio
temporeltemporel
ORGANISATION d’UNE APPLICATION YAOORGANISATION d’UNE APPLICATION YAO
sources des modules
code standard de Yao
- fonctions - Interpréteur - …
flot d’instructions (std. ou spécif) Exécutable de l’application
résultats
description du modèle
générateur
sources générés
ORGANISATION d’UNE APPLICATION YAOORGANISATION d’UNE APPLICATION YAO
Intervention de l’utilisateur Partie automatique
Modèle Modèle 2D2D Shallow Water Shallow Water (Modèle d’écoulement linéaire d’un fluide non visqueux en eau peu profonde)
uvfx
hg
t
u..'.
vufy
hg
t
v..'.
y
v
x
uH
t
h.
2111*
11*
11*
1*
1*
11*
2* .
4
'2 tijtjitjitijtijtijtjiijttij uvvvv
fhh
x
gtuu
21*
11*
11*
111*
11*
1*
2* .
4
'2 tjiijttijtjitjitijijttijijt vuuuu
fhh
y
gtvv
y
vv
x
uuHthh
tjitjitjitji
tjitji1
*11
*11
*1
*
2* 2
| 1 | h* 2|4|1|3|5
| 1 | v* (Vdyn)4| 5 |6 |2 |1 |3|7
| 1 | u* 4 | 2| 1|3| 5|6|7
v u
h
u*v*
v*i+1,j+1
v*i+1
v*j+1
h*i+1h*h*j-1
u*i-1,j-1
u*j-1
u*i-1
n
n-1
| 1 | h3 | 2 | 1xt (=n)
x*t+1
x0
x*1x*0
(maille i,j) | 1 | u3 | 2 | 1
ut = u*t + (ut-1 – 2u*
t + u*t+1)
vt = v*t + (vt-1 – 2v*
t + v*t+1)
ht = h*t + (ht-1 – 2h*
t + h*t+1)
| 1 | v3 | 2 | 1
Filtre d’Asselin pour l’élimination des oscillations temporelles propre aux schémas du type leap-frog :
Modèle 2D Shallow WaterModèle 2D Shallow Water
discrétisation spatiale (grille C d’Arakawa) et temporelle (leap frog):
u et v : composantes vitesse horizontaleh : hauteur de la surface de la mer par rapport à son niveau moyen Hf : force de Coriolisg’ : gravité réduite : coefficient de dissipation linéairet : temps
Fichier de description il contient la description des caractéristiques du modèle qui s’effectue à l’aide de ‘directives’ :
defval SZX 100defval SZY 100
hat_name shald
#option O_GRADTEST
traj Toce M 1 400
space Soce M SZX SZY Toce
modul Hfas space Soce input 3 output 1 tempo cout target
modul Ufas space Soce input 3 output 1 tempomodul Vfas space Soce input 3 output 1 tempomodul Hdyn space Soce input 5 output 1 tempomodul Udyn space Soce input 7 output 1 tempomodul Vdyn space Soce input 7 output 1 tempo
Permet de définir des valeurs réutilisables par la suite
Nom du (ou des) sources ‘chapeaux’ à inclure qui contiennent les données et fonctions globales
Les options permettent de limiter la production de code aux éléments nécessaires
Déclaration d’une trajectoire pour laquelle on doit indiquer la borne inf du temps pour lequel une variable est nécessaire au calcul du module courant (ce qui correspond à la phase d’initialisation), et le nombre de pas de temps d’évolution du modèle
La directive modul permet de déclarer un module et d’en indiquer les attributs à l’aide de ‘ mots clés ’ : space : rattachement d’un module à son espace. input et output pour définir les nombres d’entrées et de sorties des modules. tempo sert à mémoriser les états calculés sur tous les pas de temps nécessaires aux calculs des dérivées et au référencement dans le passé. target si les états du modules doivent être controlés. cout lorsque le module participe à la fonction objective.
…
Donne la dimension et la taille d‘un espace ainsi que sa trajectoire associée
ctin Udyn 1 from Ufas 1 i j t-1ctin Udyn 2..3 from Hdyn 1 i%+1 j t-1ctin Udyn 4..7 from Vdyn 1 i%+1 j%+1 t-1
ctin Hdyn 1 from Hfas 1 i j t-1ctin Hdyn 2..3 from Udyn 1 i%-1 j t-1ctin Hdyn 4..5 from Vdyn 1 i j%+1 t-1
ctin Hfas 1 from Hfas 1 i j t-1ctin Hfas 2..3 from Hdyn 1 i j t%-1…
order modinspace Soce order YA1 YA2 Vdyn Hdyn Udyn Vfas Hfas Ufas forderforder
order spaceintraj Toce Soceforder
insert_fct [arg] xgauss
Indique à la fois l’ordre de parcourt d’un espace et l’ordre d’exécution des modules. Les axes dénotés par YAi sont fixés dans l’ordre où ils sont mentionnés. YBi permet de les parcourir à l’envers. En chaque maille parcourue, les fonctions des modules seront instanciées dans l’ordre indiqué.
Grâce à cette directive, Yao peut être enrichi par de nouvelles commandes spécifiques à l’application
Pour chaque trajectoire, on doit indiquer l’ordre de calcul des espaces
ctin sert à établir les connections du graphe. Elle permet donc d’alimenter les entrées d’un module pour un point (ijt) courant avec les sorties des modules précédemment calculés sur un point de coordonnée quelconque.Par exemple, la 1ère déclaration signifie que au point ij courant, la 1ère entrée du module Vdyn proviendra du module Vfas de même point mais au temps précédent (t-1).La syntaxe élaborée permet de limiter le nombre de déclaration en définissant des intervalles (c’est le rôle du ‘%’ ou du ‘#’) dont il sera fait le produit cartésien.Il existe aussi la directive ctinm qui permet de faire un produit ‘médiant’
Fichier de description (suite)
: Ce sont les unités de programmation des fonctions du modèle.
/********** module classe Udyn.h ************/
//methode forward -----------------------------forward (YREAL xX, YREAL hA, YREAL hB, YREAL ySO, YREAL yNO, YREAL ySE, YREAL yNE ){ YS1 = xX + (2*YDeltaTemps) * ( (-grav / YDeltaYA1) * (hB - hA) + (f_cor / 4) * (ySO + yNO + ySE + yNE)
- (dissip * xX) );}
// methode backward -----------------------backward (YREAL xX, YREAL hA, YREAL hB, YREAL ySO, YREAL yNO, YREAL ySE, YREAL yNE ){ YJ1I1 = 1 - (2*YDeltaTemps) * dissip; YJ1I2 = grav * ((2*YDeltaTemps) / YDeltaYA1); YJ1I3 = - grav * ((2*YDeltaTemps) / YDeltaYA1); YJ1I4 = ((2*YDeltaTemps) / 4) * f_cor; YJ1I5 = ((2*YDeltaTemps) / 4) * f_cor; YJ1I6 = ((2*YDeltaTemps) / 4) * f_cor; YJ1I7 = ((2*YDeltaTemps) / 4) * f_cor;}
C’est cette fonction qui sera appelée en passe avant lors du parcourt du graphe (schéma direct)
Par contre, pour le problème inverse, Yao utilisera la fonction backward qui code le linéaire tangent (dérivée).Les entrées sont également passées en paramètre.
Ces macros servent à coder le jacobien:YJiIn correspond à la dérivée de la ième sortie par rapport nième entrée.
Yao prévoit un ensemble de macros pour faciliter la programmation.Ici, YS1 référence la 1ère sortie du module
Les entrées du module sont passées en paramètre selon l’ordre indiqué par la directive ctin.
Les Modules
Fichier d’instructions
Le Fichier d’instructions
Initialisation du modèle
Lancement des tests de validité
Effectuer le chargement des observations (ou préparer une expérience jumelle)
Introduire des termes d’ébauche
Préparer et Déclancher une expérience d’assimilation
Sauvegarder les résultats
n.b.: i) Une application peut aussi être exécutée en mode interactif …....ii) L’utilisateur peut créer ses propres instructions
Cadre de développement : lisibilité compréhension maintenance
Quelques Aspects de l’approche YAO
Génération : Yao fait une partie du travail et en particulier la propagation automatique des gradients locaux de la fonction de coût au travers du graphe de modules.
Logistique : Fonctions génériques pré-programmées : run de simulation et d’assimilation
interfaçage des minimiseurs m1qn3 et m2qn1 (INRIA) fonctions de validation fonction de coût (ébauche, opérateurs d’obs et de cov) …
Gains :
rapidité maniabilité