LABORATOIRE D'OCEANOGRAPHIE ET DU CLIMAT : EXPERIMENTATION ET APPROCHES NUMERIQUES UNITE MIXTE DE RECHERCHE 7159 CNRS / IRD / UNIVERSITE PIERRE & MARIE CURIE / MNHN INSTITUT PIERRE-SIMON LAPLACE Sylvie THIRIA, Fouad BADRAN, Charles SORROR YAO : Une méthodologie logiciel pour limplémentation de modèles numériques (schéma direct, adjoint et assimilation variationnelle)
k j x1x2x3x1x2x3 y 1 y 2 y 1 y 2 y 1 x1x2x3x1x2x3 k F2 j F3 y 1 y 2 U x1x2x3x1x2x3 F1(i-2) F1(i+2) x1x2x3x1x2x3 Pour le calcul du Modèle Direct Paramètres Initialisation t-1 t … Coût k F4 j k F1 j UTILISATION DU GRAPHE MODULAIRE
k j x1x2x3x1x2x3 1 y 1 y 2 j f j / x 1 j y 1 j f j / x 2 j y 2 j f j / x 3 j y 1 x1x2x3x1x2x3 fonction objective y° 1 y° 2 y° 3 k F2 j F3 y 1 y 2 U x1x2x3x1x2x3 F1(i-2) F1(i+2) 1 x1x2x3x1x2x3 Pour le calcul de lAdjoint Paramètres Initialisation t-1 t … Coût à ajuster U = U – u 1 ( 1 = J/ U) j = k k = j f j / x k k = J/ x k successeurs j k F4 j k F1 j UTILISATION DU GRAPHE MODULAIRE : Graphe modulaire ADJOINT
k j x1x2x3x1x2x3 1 y 1 y 2 k f 1 / x k k y 1 k f 2 / x k k y 2 y 1 x 1 x 2 x 3 y° 1 y° 2 y° 3 k F2 j F3 y 1 y 2 U x1x2x3x1x2x3 F1(i-2) F1(i+2) 1 x1x2x3x1x2x3 Pour le calcul du Tangent Linéaire Paramètres Initialisation t-1 t … Coût à ajuster k = j j = k f j / x k prédécesseur k k F4 j k F1 j UTILISATION DU GRAPHE MODULAIRE : fonction objective : petite perturbation Graphe modulaire TANGENT
BACKWARD H1 FORWARD H1 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(M i (Xo)) - Y° i ) T R -1 (H(M i (Xo)) - Y° i ) temps … n SCHEMA dUN MODELE FORWARD R BACKWARD H2 FORWARD H2 D B C A D B C A Point dobservation X X X X X : Points dintervention
B A C K W A R D F O R W A R D FORWARD H1 BACKWARD H1 I N I T FORWARD R B A C K W A R D F O R W A R D FORWARD H3 BACKWARD H3 BACKWARD H2 FORWARD H2 J(Xo) = (Xo - Xb) T B -1 (Xo - Xb) + i (H(M i (Xo)) - Y° i ) T R -1 (H(M i (Xo)) - Y° i ) SCHEMA 2 TRAJECTOIRES Unschémamultispatiotemporel
ORGANISATION dUNE APPLICATION YAO sources des modules code standard de Yao - fonctions - Interpréteur - … flot dinstructions (std. ou spécif) Exécutable de lapplication résultats description du modèle générateur sources générés ORGANISATION dUNE APPLICATION YAO Intervention de lutilisateur Partie automatique
Modèle 2D Shallow Water Modèle 2D Shallow Water ( Modèle découlement linéaire dun fluide non visqueux en eau peu profonde ) | 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+1 h* h* j-1 u* i - 1,j - 1 u* j-1 u* i-1 n n- 1 | 1 | h 3 | 2 | 1 x t (=n) x* t+1 x 0 x* 1 x* 0 (maille i,j) | 1 | u 3 | 2 | 1 u t = u * t + (u t-1 – 2u * t + u * t+1 ) v t = v * t + (v t-1 – 2v * t + v * t+1 ) h t = h * t + (h t-1 – 2h * t + h * t+1 ) | 1 | v 3 | 2 | 1 Filtre dAsselin pour lélimination des oscillations temporelles propre aux schémas du type leap-frog : Modèle 2D Shallow Water discrétisation spatiale (grille C dArakawa) et temporelle (leap frog): u et v : composantes vitesse horizontale h : hauteur de la surface de la mer par rapport à son niveau moyen H f : force de Coriolis g : gravité réduite : coefficient de dissipation linéaire t : temps
Fichier de description il contient la description des caractéristiques du modèle qui seffectue à laide de directives : defval SZX 100 defval SZY 100 hat_name shald #option O_GRADTEST traj Toce M 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 tempo modul Vfas space Soce input 3 output 1 tempo modul Hdyn space Soce input 5 output 1 tempo modul Udyn space Soce input 7 output 1 tempo modul 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 dune 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 dinitialisation), et le nombre de pas de temps dévolution du modèle La directive modul permet de déclarer un module et den indiquer les attributs à laide de mots clés : space : rattachement dun module à son espace. input et output pour définir les nombres dentré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 dun espace ainsi que sa trajectoire associée
ctin Udyn 1 from Ufas 1 i j t-1 ctin Udyn 2..3 from Hdyn 1 i%+1 j t-1 ctin Udyn 4..7 from Vdyn 1 i%+1 j%+1 t-1 ctin Hdyn 1 from Hfas 1 i j t-1 ctin Hdyn 2..3 from Udyn 1 i%-1 j t-1 ctin Hdyn 4..5 from Vdyn 1 i j%+1 t-1 ctin Hfas 1 from Hfas 1 i j t-1 ctin Hfas 2..3 from Hdyn 1 i j t%-1 … order modinspace Soce order YA1 YA2 Vdyn Hdyn Udyn Vfas Hfas Ufas forder order spaceintraj Toce Soce forder insert_fct [arg] xgauss Indique à la fois lordre de parcourt dun espace et lordre dexécution des modules. Les axes dénotés par YAi sont fixés dans lordre où ils sont mentionnés. YBi permet de les parcourir à lenvers. En chaque maille parcourue, les fonctions des modules seront instanciées dans lordre indiqué. Grâce à cette directive, Yao peut être enrichi par de nouvelles commandes spécifiques à lapplication Pour chaque trajectoire, on doit indiquer lordre de calcul des espaces ctin sert à établir les connections du graphe. Elle permet donc dalimenter les entrées dun 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 (cest 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; } Cest 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 lordre indiqué par la directive ctin. Les Modules
Fichier dinstructions Le Fichier dinstructions 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 dassimilation Sauvegarder les résultats n.b.: i) Une application peut aussi être exécutée en mode interactif …....ii) Lutilisateur peut créer ses propres instructions
Cadre de développement : lisibilité compréhension maintenance Quelques Aspects de lapproche 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 dassimilation interfaçage des minimiseurs m1qn3 et m2qn1 (INRIA) fonctions de validation fonction de coût (ébauche, opérateurs dobs et de cov) … Gains : rapidité maniabilité