1 / 13

LABORATOIRE D'OCEANOGRAPHIE ET DU CLIMAT : EXPERIMENTATION ET APPROCHES NUMERIQUES

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. YAO : Une méthodologie logiciel pour l’implémentation de modèles numériques

bayle
Download Presentation

LABORATOIRE D'OCEANOGRAPHIE ET DU CLIMAT : EXPERIMENTATION ET APPROCHES NUMERIQUES

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. 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 YAO : Une méthodologie logiciel pour l’implémentation de modèles numériques (schéma direct, adjoint et assimilation variationnelle) Sylvie THIRIA, Fouad BADRAN, Charles SORROR

  2. UTILISATION DU GRAPHE MODULAIRE • Pour le calcul du Modèle Direct • Paramètres Initialisation t-1 t … Coût kF2j F1(i-2) y1 y2 x1 x2 x3 U kF4j y1 y2 x1 x2 x3 x1 x2 x3 kF1j • y1 • y2 F3 y1 x1 x2 x3 F1(i+2) kj

  3. Graphe modulaire ADJOINT UTILISATION DU GRAPHE MODULAIRE : Pour le calcul de l’Adjoint Paramètres Initialisation t-1 t … Coût à ajuster kF2j S F1(i-2) a1 b1 y1 b2 y2 b3 S x1 x2 x3 a1 fonction objective S U kF4j a2 S b1=Sajfj/x1 j y1 b2=Sajfj/x2 j y2 b3=Sajfj/x3 j x1 x2 x3 a1 b1y°1 b2y°2 b3y°3 x1 x2 x3 S a1 kF1j U = U –eua1 (a1 =J/U) • y1 • y2 S a2 a1 S F3 S b1 b2y1 b3 x1 x2 x3 a2 S a1 S F1(i+2) kj a1 aj=bkbk = ajfj/xkbk=J/xk j successeurs

  4. Graphe modulaire TANGENT UTILISATION DU GRAPHE MODULAIRE : Pour le calcul du Tangent Linéaire Paramètres Initialisation t-1 t … Coût à ajuster kF2j F1(i-2) a1 b1 y1 b2 y2 b3 x1 x2 x3 a1 fonction objective U kF4j a2 • a1=Sbkf1/xk • k y1 • a2=Sbkf2/xk • k y2 x1 b1 x2 b2 x3 b3 a1 b1y°1 b2y°2 b3y°3 x1 x2 x3 a1 kF1j • y1 • y2 a : petite perturbation a2 a1 F3 b1 b2y1 b3 x1 x2 x3 a2 a1 F1(i+2) kj a1 bk=ajaj = bkfj/xk k prédécesseur

  5. D D C C B B A A J(Xo) = (Xo - Xb)T B-1(Xo - Xb) + Si (H(Mi(Xo)) - Y°i)TR-1 (H(Mi(Xo)) - Y°i) temps 0 1 2 … n SCHEMA d’UN MODELE I N I T F O R W A R D X X X X  B A C K W A R D BACKWARD H1 BACKWARD H2 FORWARD H1 FORWARD H2 FORWARD R Point d’observation X : Points d’intervention

  6. J(Xo) = (Xo - Xb)T B-1 (Xo - Xb) + Si (H(Mi(Xo)) - Y°i)T R-1 (H(Mi(Xo)) - Y°i) SCHEMA 2 TRAJECTOIRES I N I T F O R W A R D   B A C K W A R D BACKWARD H1 BACKWARD H2 FORWARD H2 FORWARD H1 Un schéma multi spatio temporel FORWARD R F O R W A R D   B A C K W A R D BACKWARD H3 FORWARD H3

  7. ORGANISATION d’UNE APPLICATION YAO ORGANISATION d’UNE APPLICATION YAO Intervention de l’utilisateurPartie automatique description du modèle générateur code standard de Yao - fonctions - Interpréteur - … sources générés sources des modules flot d’instructions (std. ou spécif) Exécutable de l’application résultats

  8. Modèle 2D Shallow Water(Modèle d’écoulement linéaire d’un fluide non visqueux en eau peu profonde) Modèle 2D Shallow Water (maille i,j) | 1 | u 3 | 2 | 1 | 1 | v 3 | 2 | 1 | 1 | h 3 | 2 | 1 n xt (=n) | 1 | v* (Vdyn) 4| 5 |6 |2 |1 |3|7 | 1 | u* 4 | 2| 1|3| 5|6|7 | 1 | h* 2|4|1|3|5 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 g : coefficient de dissipation linéaire t : temps x*t+1 v*i+1,j+1 u*i-1,j-1 n-1 u*i-1 v*i+1 h x0 u*j-1 v v*j+1 u h*j-1 v* u* h* h*i+1 x*1 x*0 discrétisation spatiale (grille C d’Arakawa) et temporelle (leap frog): Filtre d’Asselin pour l’élimination des oscillations temporelles propre aux schémas du type leap-frog : ut = u*t + a(ut-1 – 2u*t + u*t+1) vt = v*t + a(vt-1 – 2v*t + v*t+1) ht = h*t + a(ht-1 – 2h*t + h*t+1)

  9. Fichier de description il contient la description des caractéristiques du modèle qui s’effectue à l’aide de ‘directives’ : defval SZX 100 defvalSZY 100 hat_name shald #option O_GRADTEST traj Toce M 1 400 space Soce M SZX SZY Toce modulHfasspaceSoceinput 3output1tempo cout target modul Ufas spaceSoce input 3 output 1 tempo modul Vfas space Soce input 3 output 1 tempo modul Hdyn spaceSoce input 5 output 1 tempo modul Udyn space Soce input 7 output1 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 d’une trajectoire pour laquelle on doit indiquerla 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 Donne la dimension et la taille d‘un espace ainsi que sa trajectoire associée 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. …

  10. Fichier de description (suite) 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 modinspaceSoce orderYA1 YA2 Vdyn Hdyn Udyn Vfas Hfas Ufas forder forder order spaceintrajToce Soce forder insert_fct[arg] xgauss 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’ 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é. Pour chaque trajectoire, on doit indiquer l’ordre de calcul des espaces Grâce à cette directive, Yao peut être enrichi par de nouvelles commandes spécifiques à l’application

  11. : Ce sont les unités de programmation des fonctions du modèle.  C’est cette fonction qui sera appelée en passe avant lors du parcourt du graphe (schéma direct) Les Modules /********** 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; } Les entrées du module sont passées en paramètre selon l’ordre indiqué par la directive ctin. Yao prévoit un ensemble de macros pour faciliter la programmation.Ici, YS1 référence la 1ère sortie du module 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.

  12. 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

  13. Quelques Aspects de l’approche YAO Cadre de développement : lisibilité compréhension maintenance 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é

More Related