54
Université de Rennes 1 Mise en place et paramétrage physique d’un modèle océanique global pour la simulation des vagues Auteur : Cédric Jourdain Tuteur académique : Eric Darrigrand Tuteurs en entreprise : François Batifoulier Youen Kervella 8 septembre 2015

Mise en place et paramétrage physique d’un modèle ... · externes (Noveo) et les outils de créations et de visualisation de statistiques et de rapports sont écrits en Python

  • Upload
    others

  • View
    1

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Mise en place et paramétrage physique d’un modèle ... · externes (Noveo) et les outils de créations et de visualisation de statistiques et de rapports sont écrits en Python

Université de Rennes 1

Mise en place et paramétrage physique

d’un modèle océanique global pour la

simulation des vagues

Auteur :Cédric Jourdain

Tuteur académique :Eric Darrigrand

Tuteurs en entreprise : François

Batifoulier

Youen Kervella

8 septembre 2015

Page 2: Mise en place et paramétrage physique d’un modèle ... · externes (Noveo) et les outils de créations et de visualisation de statistiques et de rapports sont écrits en Python

Remerciements

Je remercie dans un premier temps, toute l’équipe pédagogique de l’université de Rennes 1et les intervenants professionnels responsables du Master mention modélisation spécialité calculscientifique et applications pour avoir assuré la partie théorique de ma formation.

J’adresse mes remerciements à mon professeur, M. Éric Darrigrand de l’université de Rennes1 qui m’a aidé dans ma recherche de stage ainsi que dans ma recherche bibliographique.

Je tiens à remercier vivement mon maitre de stage, M. François Batifoulier, pour son accueil,le temps qu’il m’a consacré, le partage de son expertise et pour les conditions optimales qu’il asu instaurer à Open Ocean.

Je remercie également M. Youen Kervella pour son aide technique ainsi que M. Renaud La-borbe et M. Jérôme Cuny pour m’avoir accueilli dans leur entreprise.

Et enfin je remercie les autres stagiaires qui ont partagé mon bureau pendant ces six mois etqui ont su me supporter, me conseiller, m’aider et m’accompagner tout au long de cette aventureBrestoise.

1

Page 3: Mise en place et paramétrage physique d’un modèle ... · externes (Noveo) et les outils de créations et de visualisation de statistiques et de rapports sont écrits en Python

Table des matières

Glossaire 4

Introduction 5

1 Open Ocean 61.1 L’entreprise . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61.2 Le personnel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61.3 Les services . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7

1.3.1 Metocean Analytics . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7

2 WaveWatch III 92.1 Principe . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 92.2 Fonctionnement . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 112.3 Conception du programme . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 112.4 Chaine de traitement . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 122.5 Fichier d’entrée du préprocesseur de grille . . . . . . . . . . . . . . . . . . . . . . 14

2.5.1 Discrétisation spectrale . . . . . . . . . . . . . . . . . . . . . . . . . . . . 142.5.2 Discrétisation temporelle . . . . . . . . . . . . . . . . . . . . . . . . . . . 142.5.3 Paramètres réglables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 152.5.4 Génération automatique de grille . . . . . . . . . . . . . . . . . . . . . . . 15

3 Mise en place d’un modèle global 173.1 Problématique . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 173.2 Présentation du modèle . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 183.3 Stabilisation du modèle de vagues global . . . . . . . . . . . . . . . . . . . . . . . 19

3.3.1 Influence de la discrétisation spectrale . . . . . . . . . . . . . . . . . . . . 193.3.2 Influence des paramètres physiques (namelists/switchs) . . . . . . . . . . 22

3.4 Validation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 233.4.1 Données de bouées in-situ . . . . . . . . . . . . . . . . . . . . . . . . . . . 233.4.2 Cartes de Validation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24

4 Intégration de la glace 264.1 Documentation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 264.2 Recherche de données de glace . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27

4.2.1 HadISST . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 274.2.2 MyOcean . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 274.2.3 ECMWF . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28

4.3 Implementation des données de glace . . . . . . . . . . . . . . . . . . . . . . . . 284.4 Tests et validation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 294.5 Conclusion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32

5 Intégration des icebergs 355.1 Principe . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 355.2 Recherche de données d’icebergs . . . . . . . . . . . . . . . . . . . . . . . . . . . 36

5.2.1 Projet Altiberg . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 365.2.2 Formatage des données . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37

5.3 Implémentation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 375.4 Tests et validations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38

2

Page 4: Mise en place et paramétrage physique d’un modèle ... · externes (Noveo) et les outils de créations et de visualisation de statistiques et de rapports sont écrits en Python

TABLE DES MATIÈRES 3

6 Conclusion et perspectives 41

A Scores 42

B Fichier d’entrée du préprocesseur de grille (Grid input ww3_grid.inp) 44

C Méthode python write_to_ww3 46

D make_input_ww3.sh 48

E formatage des données d’icebergs 50

Page 5: Mise en place et paramétrage physique d’un modèle ... · externes (Noveo) et les outils de créations et de visualisation de statistiques et de rapports sont écrits en Python

Glossaire

Altimètre : Un altimètre est un instrument de mesure permettant de déterminer la distanceverticale entre un point et une surface de référence. L’altitude est mesurée par rapportau niveau de la mer, la hauteur par rapport au niveau du sol local et le niveau de volpar rapport à une surface isobare théorique. Selon la fréquence qu’il émet, il est possibled’extrapoler un grand nombre de données.

Backtesting : Le backtesting (hindcast en anglais) ou test rétro-actif de validité consiste à testerla pertinence d’une modélisation ou d’une stratégie en s’appuyant sur un large ensemble dedonnées historiques réelles. Dans le domaine de la modélisation du climat, le backtestingjoue un rôle particulièrement important en raison de l’ampleur et de la durée des événementsclimatiques. L’utilisant des données historiques pour tester de nouvelles idées et théoriespermet d’être évaluer leurs performances théoriques dans un délai raisonnable.

CSV : Comma-separated values est un format informatique ouvert représentant des donnéestabulaires sous forme de valeurs séparées par des virgules.

ECMWF Centre européen pour les prévisions météorologiques à moyen termeHs : Hauteur de vagues significatives ; elle est définit comme la moyenne des hauteurs (mesuré

entre crête et creux) du tiers des plus fortes vagues.hyper-threading : ou HT, est l’implémentation par l’entreprise Intel du Simultaneous Multi

Threading (SMT) à deux voies dans ses microprocesseurs. Les avantages de l’hyper-threadingsont les suivants :

— amélioration du support de code multi-threadé ;— gestion de plusieurs threads en même temps ;— meilleur temps de réaction, meilleur temps de réponse ;— dans le cas d’un serveur informatique, augmentation du nombre d’utilisateurs possible.

Ifremer : L’Institut Français de Recherche pour l’Exploitation de la Mer.NetCDF : Ce format de données est « auto-documenté » c’est-à-dire qu’il existe un en-tête

qui décrit la disposition des données dans le reste du fichier, et en particulier des tableauxde données. Cet en-tête contient aussi une liste arbitraire de métadonnées se présentantsous la forme d’attribut de type nom/valeur. Les tableaux de données sont linéaires et sontstockés de manière simple de façon à permettre un accès efficace à un sous-ensemble d’untableau.

NCEP : Le National Centers for Environmental Prediction (NCEP) est un regroupement decentres nationaux spécialisés de prévisions météorologiques aux États-Unis.

NCO : NetCDF Operators, une suite logicielle pour la manipulation de fichiers NetCDF.NOAA : Le National Oceanic and Atmospheric Administration, est un organisme fédéral axé

sur l’état des océans et l’atmosphère.OSTIA : Acronym de "The Operational Sea surface Temperature and Ice Analysis".QGIS : Logiciel SIG (système d’information géographique) libre multiplate-forme publié sous

licence GPL. Via la bibliothèque GDAL3, il gère les formats d’image matricielles (raster)et vectorielles, ainsi que les bases de données

Shoaling : Phénomène par lequel les vagues de surfaces, se propageant dans des eaux moinsprofondes, subissent un changement dans leurs hauteurs.

SST : Température de la mer en surface (en anglais : Sea Suface Température)XML : de l’anglais "eXtended Markup Languge" soit "langage à balise extensible" en français,

c’est un langage de description, on l’utilise car il est à la fois compréhensible par un humainet un programme.

4

Page 6: Mise en place et paramétrage physique d’un modèle ... · externes (Noveo) et les outils de créations et de visualisation de statistiques et de rapports sont écrits en Python

Introduction

La modélisation numérique des états de mer est un domaine qui se développe depuis main-tenant une cinquantaine d’années, cela a commencé avec les travaux de l’équipe du centre demétéorologie de Casablanca au Maroc qui a mis au point une méthode spectrale permettant decaractériser les états de mer (Gelci et coll. 1957). Aujourd’hui, après de nombreuses années derecherche et de développement différents modèles numériques de vagues existent : WaveWatchIII, Sawn, Tomawac etc.

La modélisation de ces états de mer a trouvé des applications dans des domaines très variéestels que le dimensionnement d’ouvrage côtier, la sécurité de la navigation, l’étude de la stabilitédes plages ou encore les loisirs nautiques. L’entreprise Open Océan exploite cette dernière appli-cation en utilisant notamment le logiciel WaveWatch III qui leur permet de simuler les vaguespour tout type de projet en mer.

Alors que Open Océan focalisait son activité en Europe occidentale, elle désire aujourd’huiétendre son activité dans le monde entier. Mon stage aura donc pour objectif la mise en place etl’optimisation de la configuration d’un modèle global de vagues avec le logiciel WAVEWATCHIII en s’appuyant sur un modèle existant couvrant le nord de l’océan Atlantique. La secondepartie de mon stage sera l’amélioration de cette configuration globale en intégrant la glace et lesicebergs dans le modèle numérique.

5

Il serait utile que tu développes le contenu des 2 parties en annonçant dans le dernier paragraphe, les différentes sections. L’introduction a aussi pour vocation d’annoncer la structure du document.
Page 7: Mise en place et paramétrage physique d’un modèle ... · externes (Noveo) et les outils de créations et de visualisation de statistiques et de rapports sont écrits en Python

Partie 1

Open Ocean

1.1 L’entreprise

Open Ocean est une société basée en France avec son siège sociale à Paris et son centre derecherche et développement à Brest [1]. Open Ocean, dont l’histoire débute en 2009, est unesociété spécialisée dans la modélisation numérique des océans (vagues, courants, sédiments) pourtout type de construction en mer : éolien offshore, énergies marines renouvelables ou encore pourl’industrie des hydrocarbures.

1.2 Le personnel

L’équipe d’Open Océan est composé actuellement de cinq membres permanents :— Renaud Laborbe : Co-fondateur et CEO d’Open Ocean

Titulaire d’une maitrise de mécanique des fluides et d’un DEA d’Océanographie Météoro-logie et Environnement.

— Jérôme Cuny : Co-fondateur et directeur commercialJérôme Cuny est docteur en océanographie physique, diplômé de l’Université de Washingtonà Seattle aux Etats-Unis.

— Youen Kervella : Responsable R&DDocteur en hydrodynamique et en dynamique sédimentaire, il a rejoint l’entreprise en 2011,après une thèse et un post-doctorat à l’Ifremer.

— François Batifoulier : Responsable de projetsTitulaire d’une thèse en hydrodynamique, François Batifoulier a rejoint l’équipe d’OpenOcean en Novembre 2011 au sein du département R&D de Brest.

— Raphael Dubois : Ingénieur de projetDiplômé de l’école polytechnique en mécanique physique pour l’environnement et titulairedu M2 OACOS de l’Université Paris IV Pierre et Marie Curie, il a rejoint l’équipe d’OpenOcean à Paris.

J’ai effectué mon stage au sein du departement recherche et développement à Brest aux cotésde trois autres stagiaires : Antoine Mallegol, Yves Moisan tous deux étudiant à l’ENIB et VictorMartin des arts et métiers.

6

Page 8: Mise en place et paramétrage physique d’un modèle ... · externes (Noveo) et les outils de créations et de visualisation de statistiques et de rapports sont écrits en Python

1.3. LES SERVICES 7

Figure 1.1 – Le département R&D d’Open Ocean. De bas en haut et de gauche à droite :Y. Kervalla, C. Jourdain, R. Laborbe, V. Martin, F. Batifoulier et Y. Moisan. (crédits : OuestFrance)

1.3 Les services

Rassemblant ingénieurs, spécialistes de la modélisation numérique et océanographes haute-ment qualifiés, Open Ocean réalise des études de faisabilité et d’impact environnemental lors desphases de planification, de développement ou de production de projets de parcs d’énergies (sé-lection du site en fonction du potentiel énergétique, quantification de l’impact environnemental,estimation du productible).

Pour réaliser leurs études, les chercheurs d’Open Ocean s’appuient sur de nombreux outilsde simulation numérique (MARS3D, WaveWatch III, OpenTelemac, Gerris...) et sur des outilsdéveloppés en interne. Open Ocean propose ainsi différents services :

• Analyse de données permettant le choix d’un site idéal,• Étude de potentiel énergétique,• Estimation du taux de charge (pour le dimensionnement des structures maritimes),• Étude d’impacts environnementaux• Recherche et développement pour des projets d’énergie offshore.

1.3.1 Metocean AnalyticsLe Metocean Analytics est un outil web permettant d’effectuer des études métocéans en ligne

et à la demande. Cette offre innovante est la première du genre et permet d’obtenir des infor-mations océanographiques et météorologiques en seulement quelques heures là où une étudesclassique prendrait plusieurs mois.

Le Metocean Analytics propose 3 fonctionnalités principales :— un catalogue de données océaniques et atmosphériques issues de simulations ou directement

de mesures.— un outil d’analyse et de visualisation de données.— Un outil d’édition automatique de rapport d’études.Les clients peuvent ensuite visualiser et télécharger les calculs statistiques effectués et le rap-

port d’étude généré dans différents formats. L’application web a été réalisée par des prestatairesexternes (Noveo) et les outils de créations et de visualisation de statistiques et de rapports sontécrits en Python par OpenOcean.

Page 9: Mise en place et paramétrage physique d’un modèle ... · externes (Noveo) et les outils de créations et de visualisation de statistiques et de rapports sont écrits en Python

1.3. LES SERVICES 8

Figure 1.2 – Capture d’écran du Metocean Analytics

Sur la figure 1.2 un exemple de statistique que l’on peut obtenir en un clic est montré ; c’estun rose de distribution des courant en un point donné

Page 10: Mise en place et paramétrage physique d’un modèle ... · externes (Noveo) et les outils de créations et de visualisation de statistiques et de rapports sont écrits en Python

Partie 2

WaveWatch III

WaveWatch III est un modèle de vagues troisième génération développé au NOAA/NCEP(National Oceanic and Atmospheric Administration / National Centers for Environmental Pre-diction) [2]. Ce modèle est basé sur ces versions précédentes WaveWatch I développé à l’universitéde Technologie de Deflt et WaveWatch II développé à la NASA Goddard Space Flight Center.Cette troisième version du logiciel WaveWatch a subi de nombreuses améliorations par rapport àces anciennes versions ; notamment sur les équations régissant le modèle, la structure du modèle,les approches numériques et physiques.

Le modèle de vagues résout l’équation d’équilibre de densité d’action de la phase spectralealéatoire pour le spectre de direction du nombre d’onde. En effet, grâce à ce spectre il est possiblede réaliser une modélisation de l’état de mer étant donné que ce spectre contient implicitementou explicitement des données relatives aux vagues, au courant marin, au vent etc. La suppositionimplicite de cette équation d’équilibre est que les propriétés du milieu (la profondeur de l’eau etle courant) aussi bien que le champ de vague varient sur des échelles de temps et d’espace quisont beaucoup plus grandes que les échelles de variation d’une unique vague.

2.1 Principe

La modélisation de l’état de la mer est fondée sur la notion de spectre [3]. Ce spectre estune décomposition de l’énergie des vagues selon les périodes et directions des vagues et ce entout point de la surface océanique. Chaque composante de ce spectre d’énergie est un train devagues régulières, la somme de plusieurs trains de vagues allant dans différentes directions ✓ avecdifférentes fréquences f décrit pleinement l’état de la mer.

Figure 2.1 – Spectre de densité d’énergie F (k, ✓). Sur ce diagramme, la direction des zonescolorées indique la direction d’où vient la houle, tandis que la distance au centre représentela fréquence f = 1/T . Le niveau de couleur donne la densité d’énergie normalisée. Source del’image : [5]

9

Page 11: Mise en place et paramétrage physique d’un modèle ... · externes (Noveo) et les outils de créations et de visualisation de statistiques et de rapports sont écrits en Python

2.1. PRINCIPE 10

Bien que le spectre de densité d’énergie F (k, ✓) décrit relativement bien les vagues de surfacedes océans [6], le spectre de densité d’action N(k, ✓) = F (k, ✓)/�, est plus approprié pour lesmodèles de vagues numériques. En effet, la densité d’action est conservée lors de la propagationen présence d’un courant local, alors que la densité d’énergie F (k, ✓) ne l’est pas [7].

Afin de suivre l’évolution de l’énergie des vagues, le modèle numérique WaveWatch III calcull’évolution de la densité d’action N(k, ✓,x, t) d’un endroit de l’océan à un autre en résolvantl’équation de conservation du spectre de densité d’actiondes ondes [8][9](pour amélio-rer la lisibilité, le spectre sera désormais noté simplement N)

@N

@t

+rxy

· [(Cg

+ U)N ] + @

@k

@k

@t

N + @

@✓

@✓

@t

N = S

, (2.1)

où rxy

est l’opérateur de divergence spatiale restreint à la surface océanique, Cg

= @�/@k estla vitesse de groupe, U est la vitesse d’advection (fonction du courant), � la fréquence intrin-sèque et S représente le terme source pour la formation et la dissipation des vagues. Le premierterme de la partie gauche de l’équation 2.1 est la partie cinématique l’équation, le second partiede l’équation est le terme de propagation de l’énergie dans un espace en deux dimensions. Letroisième terme représente le changement de fréquence radian en raison des variations de pro-fondeur et du courant et enfin le quatrième terme représentent les effets de réfraction induit parle courant de profondeur. La partie droite de l’équation contient le terme source/puits noté S,il représente tous les processus physiques qui génèrent, dissipent, ou redistribuent l’énergie desvagues. L’équation 2.1 régit l’évolution du spectre d’action pour des vagues se propageant dansun milieu non-homogène et non-permanent, la densité spectrale d’action de l’état de mer estconservé aux termes sources et puits près (S).

L’équation de conservation du spectre de densité d’action (2.1) est écrite pour chaque com-posante spectrale (généralement 24 directions x 32 fréquences) et toutes ces équations qui enrésultent sont couplées par les termes physiques du modèle [10]

— "Braquage des vagues" : l’énergie provenant d’une direction est décalée à une énergie pro-venant d’une autre direction (interaction vague-vague)

— "Échange d’énergie" : les différents trains de vagues échangent en permanence de l’énergieentre eux et avec des courants (interaction vague-vague)

— dissipation/décroissance : la dissipation d’une composante d’une vague est une fonctioncomplexe de l’énergie de toutes les composantes

— génération/croissance : la quantité d’énergie généré par le vent à un train d’ondes peutégalement dépendre des autres trains d’ondes

L’équation de conservation du spectre de densité d’action des ondes (2.1) est l’équation debase du modèle de vagues. Cependant, une version modifiée de cette équation est utilisée dans lemodèle. Lorsque l’on résout l’équation (2.1) directement, une réduction de la résolution spectralese produit à l’approche des côtes, i.e dans les eaux peu profondes [6]. Pour pallier cette perte derésolution il est nécessaire de résoudre l’équation en utilisant une grille avec un nombre d’ondevariable. Cette grille va incorporer les changements cinématiques du nombre d’onde provenantdu phénomène de "wave shoaling". À l’approche des côtes la profondeur diminue ce qui a poureffet de réduire la vitesse des vagues et donc d’augmenter l’amplitude des vagues et ainsi demodifier la longueur d’onde, la fréquence quant à elle reste constante. On désignera cette grilled’onde variable par . En intégrant cette grille au modèle, l’équation de conservation du spectrede densité d’action des ondes (2.1) devient :

@

@t

N

cg+ @

@x

xN

cg+ @

@y

yN

cg+ @

@

N

cg+ @

@✓

✓N

cg= 0, (2.2)

où @k

@

= cg

�1 @�

@d

(@d@t

+ U ·rx

d)� k · @U@s

, (2.3)

L’équation (2.2) est résolue en utilisant une méthode à pas fractionnaire, méthode très utiliséepour la modélisation des vagues. La résolution est basée sur une méthode de splitting qui permet

Page 12: Mise en place et paramétrage physique d’un modèle ... · externes (Noveo) et les outils de créations et de visualisation de statistiques et de rapports sont écrits en Python

2.2. FONCTIONNEMENT 11

de diviser la résolution de l’équation en plusieurs étapes. Ces étapes résolvent des sous-systèmestable tandis que le système général reste instable. De ce fait, dans le modèle de vagues Wave-Watch III, le système (2.2) est remplacé par quatre sous-systèmes correspondant chacun à unedes étapes décrites dans le paragraphe suivant, chacune de ces étapes nécessitent un pas de tempsspécifique.

La première étape prend en compte les variations temporelles de la profondeur, ainsi queles changements correspondant dans la grille au nombre d’onde variable. Pour cette étape onprendra un pas de temps dit "global" �t

g

, pour lequel l’ensemble de la solution est propagéedans le temps et ou les intervalles d’entrée du vent et des courants sont interpolés. Les autresétapes fractionnelles prennent en compte la propagation spatiale, la propagation intra-spectraleet les termes sources.

2.2 Fonctionnement

La figure ci-dessous résume le fonctionnement du programme WaveWatch III

WaveWatch IIIModèle

Propagation

i. isotrope

ii. réfraction

iii. dispersion

Physique du modèle

i. croissance (input du vent)

ii. décroissance (déferlement)

iii.interaction vague-vague

Champs spectral des

vagues en tout point

Autres sorties

i. Spectre local

ii. Paramètre moyen : Hs,

longueur d'onde moyenne,

période moyenne

Vents, courant,

niveau d’eau,

température de

l'eau, glaces,

icebergs...

bathymétrie &

trait de côte

(Mask)

Figure 2.2 – Fonctionnement du Programme WaveWatch III

Le programme prend en compte des données bathymétriques, de vents, de courant, de glaceetc. les incorpore au modèle et résout l’équation de conservation du spectre de densité d’action(2.1) puis génèrent des sorties de spectre mais aussi des sorties de paramètres physiques tellesque la hauteur significative de vagues Hs = 4

pE qui est le paramètre le plus répandu pour

caractériser l’état de la mer.

Le coût d’un modèle de vagues peut être beaucoup plus élevé que celui d’un modèle decirculation océanique avec la même résolution horizontale et verticale. En effet, les modèles devagues utilisent généralement plus de variables/données. La précision d’un modèle de vaguesdépend essentiellement de l’exactitude des champs de forçage (vents, les courants, la glace demer, la bathymétrie, la rugosité du fond ...), l’exactitude des paramétrages qui représentent laproduction, les processus d’échange et de dissipation et la qualité des méthodes numériquesutilisées pour résoudre l’équation de conservation du spectre de densité d’action (2.1).

2.3 Conception du programme

WaveWatch III est un modèle de vagues faisant appel à des routines. Ces routines sont appeléesoit par un programme shell ou bien tout autre programme qui nécessite des données en relationavec les vagues (données de vents, courants, marée, glace etc) mises à jour dynamiquement. Lesprogrammes auxiliaires incluent un préprocesseur de grille, un programme pour produire des

Page 13: Mise en place et paramétrage physique d’un modèle ... · externes (Noveo) et les outils de créations et de visualisation de statistiques et de rapports sont écrits en Python

2.4. CHAINE DE TRAITEMENT 12

conditions initiales artificielles, un programme shell générique (et un préprocesseur de fichierd’entrée correspondant) et des post-processeurs de production de fichier de sortie. La figureci-dessous présente l’architecture générale de WaveWatch III.

Figure 2.3 – Architecture du Programme WaveWatch III

Le programme principal de modèle de vagues est W3WAVE (wave model). Le préprocesseurde grille écrit un fichier de définition du modèle mod_def.ww3 grâce aux informations sur lesfonds marins, sur les obstructions et les valeurs des paramètres définissant les approches phy-siques et numériques. L’ensemble de ces informations sont définies dans un fichier d’entrée dupréprocesseur de grille (ww3_grid.inp.model cf. annexe B). Le modèle de vagues nécessite desconditions initiales, consistant en un fichier de redémarrage restart.ww3 , écrit par le modèle devagues lui-même, ou par le programme générant les conditions initiales. Le modèle de vaguespeut éventuellement lire des conditions aux limites à partir du fichier nest.ww3 et génère lesconditions aux limites pour les runs consécutifs dans nestn.ww3. Le modèle stocke des donnéesbrutes dans les fichiers de sorties out grd.ww3 , out pnt.ww3, track o.ww3 et partition.ww3 (pa-ramètres moyen des vagues (grillés), spectres localisé, spectres le long des pistes, et des donnéesd’ondes partitionnées, respectivement). Enfin, divers post-processeurs de sortie sont disponibles(post-traitement binaire des champs brut grillés, production de point et traçage des fichiers desortie ; NetCDF et GRIB conditionnement des données sur les vagues).

2.4 Chaine de traitement

OpenOcean utilise WaveWatch III pour effectuer des tests rétro-actif de validité ("backtes-ting" ou encore "hindcast") dans le but de réaliser des statistiques sur les sorties résultats. Afinde réaliser un test rétro-actif WaveWatch III passe par différentes étapes. La figure ci-dessousrésume la chaîne de traitement WaveWatch III de OpenOcean.

Page 14: Mise en place et paramétrage physique d’un modèle ... · externes (Noveo) et les outils de créations et de visualisation de statistiques et de rapports sont écrits en Python

2.4. CHAINE DE TRAITEMENT 13

Condition initial :

make_init_ww3.sh

Preprocesseur de grille

make_grids_ww3.sh

Fichier d'entrée

make_input_ww3.sh

Lancement des calculs

make_run_ww3.sh

Créations des fichiers de sorties

make_output_ww3.sh

Formatage des sorties spectrales et 2D

make_format_ww3.sh

Champs de forçage : files.nc

Glace et icebergNiveau d'eauVentsCourant

Organisation des lancements des routines

launch_hindcast_ww3.sh

Chaîne de traitement WaveWatch III de Open Ocean

Définition des paramètres du run de backtesting- date de simulation- chemin des fichiers d'entrées et de sorties

setup_ww3.sh

Champs de forçage files.nc

Paramètres spectral

Paramètres standard moyen des vagues (Hs, Tm01, Dir...)

Formatage des fichiers d'entréesbuild_wind_ww3.shbuild_ice_ww3.sh

Vérification des dates de simulation et constructiondes listes contenant les modèles utilisés

build_time_and_list.sh

Bathymétrie ww3_grid.inp.model

Trait de côtes : - continent : .mask - petites îles : .obs

paramètres réglables :Approche physique et numérique, constantes...

Pre

-pro

ces

sin

gP

roc

es

sin

gP

os

t-pro

ce

ss

ing

Fichiers de redémarrage

restart.ww3

Figure 2.4 – Chaîne de traitement du programme WaveWatch III au sein de OpenOcean

La première étape consiste à définir la simulation que l’on veut réaliser dans le script shellsetup_ww3.sh, ce dernier va contenir :

• les dates de simulation,• le modèle utilisé (global ou localisé sur une zone plus petite e.g la zone Atlantique nord),• l’organisation des entrées du modèle : les champs de forçages, leurs sources et leurs cali-

brages,• le type de parallélisation,• les parties de code qui doivent être exécutées (préprocesseur de grille, condition initiale,

entrées, calculs, création des fichiers de sorties),• les chemins absolus de la configuration, des codes sources, des fichiers de redémarrage, des

fichiers de forçages etc.,• les options de sorties des résultats (pas de temps, les champs de sorties).

Pour exécuter Wavewatch III on fait appel à un setup (setup_ww3.sh) ainsi qu’à un scriptshell qui organise le lancement des sous-routines (le launch_hindcast_ww3.sh), ce dernier vaprendre le build_time_and_list.sh en source, c’est-à-dire qu’il va lire et exécuter les commandescontenues dans ce fichier avec l’environnement du shell en cours.

Page 15: Mise en place et paramétrage physique d’un modèle ... · externes (Noveo) et les outils de créations et de visualisation de statistiques et de rapports sont écrits en Python

2.5. FICHIER D’ENTRÉE DU PRÉPROCESSEUR DE GRILLE 14

Figure 2.5 – Lancement du programme WaveWatch III en local

Sur la figure 2.5 on a exécuté WaveWatch III en local, mais en pratique, étant donnée levolume de données à traiter, il est impératif d’exécuter le programme sur une une grappe deserveurs (cluster).

L’étape suivante est le "pre-processing". Il s’agit du formatage des données nécessaires àl’exécution du modèle de vagues. Dans un premier temps, le préprocesseur de grille (dans lemake_grids_ww3.sh) va généré une grille de calcul qui incorpore la bathymétrie ainsi que lesparamètres physiques à l’aide du fichier d’entrée du pré-processeur de grille (ww3_grid.inp.modcf. annexe B) définit dans la section suivante. WaveWatch III va ensuite créer des conditionsinitiales à l’aide du make_init_ww3.sh qui permettront au programme de redémarrer les calculssans avoir une période de calibrage. Et enfin WaveWatch III va intégrer les champs de forçageau modèle de vagues via le script make_input_ww3.sh qui va formater les données transmises.

Le "Processing" est l’étape d’exécution du modèle de vagues, c’est à ce niveau qu’il va lancerles calculs nécessaires à la résolution des équations (2.2). Cette étape d’exécution de modèle sefait via le script make_run_ww3.sh.

La dernière étape est le "Post-processing", elle va permettre la création des fichiers de sortieset leurs formatages (dans notre cas on formate ces données au format NetCDF4).

2.5 Fichier d’entrée du préprocesseur de grille

C’est dans ce fichier que l’on définit la discrétisation spectrale, la discrétisation temporelle,que l’on active ou désactive les entrées de ’namelist’ qui permettent la lecture des paramètresajustables pour les termes sources, les schémas de propagation et les valeurs numériques. C’estaussi dans ce fichier que l’on définit le système de coordonnées utilisée, la bathymétrie, lesconditions limites de la zone traitée (vents, courant) et les obstructions et le mask. Une exempledétaillé de ce fichier est donné en annexe B.

2.5.1 Discrétisation spectralePour que cette discrétisation spectrale soit efficiente il est nécessaire de fournir au préproces-

seur de grille différents paramètres :1. le facteur d’incrémentation de la fréquence,2. la première fréquence [Hz],3. le nombre de fréquences (wavenumbers) et le nombre de directions,4. le décalage relatif de la première direction en terme d’incrément directionnel [-0.5,0.5] (cette

valeur est fixée à 0 par défaut).

2.5.2 Discrétisation temporelleQuatre pas de temps sont définis dans le fichier d’entrée du préprocesseur de grille : un pas de

temps de global, un pas de temps spatial, un pas de temps pour les directions (de propagation) etun pas de temps pour le terme source (tous en secondes). Ces pas de temps servent à la résolution

efficace
Page 16: Mise en place et paramétrage physique d’un modèle ... · externes (Noveo) et les outils de créations et de visualisation de statistiques et de rapports sont écrits en Python

2.5. FICHIER D’ENTRÉE DU PRÉPROCESSEUR DE GRILLE 15

du modèle (équation (2.2)) par étapes fractionnelle cf. 2.1.

le pas temps spatial �txy

est le premier des pas de temps qui doit être défini ; il doit satisfairela condition de Courant-Friedrichs-Levy (CFL) : la vitesse des vagues les plus rapides dans lemodèle doit être inférieur ou égale à l’espacement de la grille (la taille de la maille) divisé parle pas de temps. Par conséquent, chaque grille va posséder son propre �t

xy

qui sera déterminéepar la résolution de la grille, la latitude maximal de la grille et par la première fréquence.

2.5.3 Paramètres réglablesLes paramètres réglables pour le termes sources, les schémas de propagations et schémas nu-

mériques sont transmis au modèle via des ’switchs’. Ces ’switchs’ sont des chaînes de caractèrequi servent à identifier les options que l’on active dans notre modèle WaveWatch III lors de lacompilation.

Grâce à ces switchs nous définissons le schéma de propagation voulu (PR3 : schéma depropagation d’ordre élevé, UQ : schéma de propagation au 3 ème ordre). Ils définissent aussi lesméthodes utilisées pour le terme source :

a) Phénomène de dissipation,b) Interactions non-linéaires (vague-vague)

ils définissent également les paramètres physiques :1. Frottement sur le fond marin,2. Amortissement due à la présence de glace,3. Phénomène de réflexion,4. Phénomène de déferlement,5. Méthodes d’interpolation pour le vent,6. Méthodes d’interpolation pour le courantEnsuite à l’aide de chaînes de caractère appelée ’listnames’ littéralement ’listes de nom’, on

définit les constantes du terme source a) et b) et des paramètres physiques (1., 2., 3., 4. et 5.).

2.5.4 Génération automatique de grilleLe MetOcean analytics est le produit phare d’OpenOcean, pour le moment il propose des

études en ligne uniquement sur les côtes Européenne. L’objectif des prochaines années est des’ouvrir au monde entier, et donc de proposer des études en ligne à différents endroits du globe.Pour cela, il est nécessaire d’améliorer les outils internes d’OpenOcean, c’est pourquoi nous avonsdéveloppé des routines python servant à construire automatiquement de nouvelles grilles Wave-Watch III dans l’optique de créer de nouvelles zones d’études pour le MetOcean analytics.

J’ai donc créer une méthode python write_to_ww3 (cf. annexe C) qui, à partir de donnéebathymétrique, sauvegarde les données dans des fichiers destinés au préprocesseur de grille deWaveWatch III (ww3_grid) :

1. un fichier avec les profondeurs (en mètre) (model_name.bot),

2. un fichier de masque terre-mer (model_name.mask). Il contient des O si c’est de la terre,des 1 si c’est de l’eau et des 2 si c’est une frontière terre-mer),

3. un fichier d’obstructions (model_name.obs). C’est une sous-grille avec des taux d’obstruc-tion (îles) ; pour chaque point de la grille elle aura deux coefficients : les taux d’obstructionshorizontaux puis verticaux ,

4. un fichier d’entrée du préprocesseur grille formatée (ww3_grid.inp.model_name).

Le fichier d’entrée du préprocesseur grille, en plus de contenir les noms des trois premiersfichiers (.bot, .mask et .obs), va également contenir la discrétisation spectrale, le système decoordonnées, une discrétisation temporelle, les paramètres ajustables pour les termes sources,

Page 17: Mise en place et paramétrage physique d’un modèle ... · externes (Noveo) et les outils de créations et de visualisation de statistiques et de rapports sont écrits en Python

2.5. FICHIER D’ENTRÉE DU PRÉPROCESSEUR DE GRILLE 16

les schémas de propagation et les valeurs numériques. Toutes ces variables dépendent de la zoneétudiée, c’est pourquoi mon programme python inclue uniquement les paramètres indispensablesau fonctionnement de la nouvelle grille WaveWatch III. Les valeur des discrétisations sont fixéesde manière générique idem pour quelques constantes du terme source. Un second paramétragede ces valeurs ainsi que le rajout de quelques paramètres sera nécessaire à l’issue de la créationd’une nouvelle grille WW3.

Processus de création d’une nouvelle zone

Pour créer une nouvelle zone il suffit de charger un fichier bathymétrique mondiale, de dé-couper la zone d’intérêt en transmettant les coordonnées minimales et maximales à la méthode"crop" qui rogne la zone voulu à partir d’une bathymétrie globale. Ensuite, il faut choisir larésolution de la grille en faisant appel soit à la méthode "interpolate" ou soit à la méthode"downgrade" (méthode que j’ai développé et qui baisse la résolution du fichier original) et enfind’utiliser la méthode write_to_ww3 pour créer le fichier d’entrée du préprocesseur de grille etles fichiers bathymétrique (.bot, .obs et .mask).

Page 18: Mise en place et paramétrage physique d’un modèle ... · externes (Noveo) et les outils de créations et de visualisation de statistiques et de rapports sont écrits en Python

Partie 3

Mise en place d’un modèle global

3.1 Problématique

Open Ocean utilise le code de calcul WaveWatch III, initialement développé par Hendrik Tol-man il est aujourd’hui développé par de nombreux centres de recherche notamment par la NOAAet l’Ifremer. Ce logiciel permet de simuler les vagues dans des zones potentiellement intéressantespour les énergies marine renouvelables.

Le modèle de vagues qu’Open Ocean utilisait jusqu’à présent se focalisait essentiellement surl’Europe ; ils ont raffiné leur maillage et paramétré leur modèle uniquement pour la zone couvrantle Nord de l’océan Atlantique. Open Ocean souhaite étendre sont activité dans le monde entieret cela nécessite la mise en place et la paramétrisation d’un modèle global de vagues.

La première partie présente la mise en place de ce modèle global de vague, le but étant d’ob-tenir un modèle global de vagues qui soit stable, au plus proche de la réalité et qui prenne lemoins de temps de calcul. Pour cela une étude sur le fichier d’entrée du préprocesseur de grilleest nécessaire. En effet, c’est dans ce dernier que l’on détermine la discrétisation temporelle,la discrétisation spectrale et enfin la paramétrisation physique des constantes. En s’aidant dumanuel, de ce qu’il y existe sur internet et en s’inspirant des codes de configuration du modèleAtlantique Nord d’Open Ocean ; il a été possible d’implémenter une configuration approximativedu modèle de vagues global (ce modèle est présenté dans la section suivante).

Bien qu’avec cette configuration on obtienne des résultats cohérent, une paramétrisation plusfines du modèle a été nécessaire. En effet, lorsque l’on visualise sommairement les résultats dumodèle semblent correctes. Mais lorsque l’on examine plus attentivement les sorties du logicielWaveWatch III, notamment les hauteurs significatives des vagues (Hs), on observe la présencede fluctuation à certains endroits de l’océan (cf. figure (3.1)).

(a) Modèle global (b) Zoom du modèle global sur la zone Atlantique Nord

Figure 3.1 – Sorties WaveWatch III des hauteurs significatives de vagues

17

Page 19: Mise en place et paramétrage physique d’un modèle ... · externes (Noveo) et les outils de créations et de visualisation de statistiques et de rapports sont écrits en Python

3.2. PRÉSENTATION DU MODÈLE 18

Figure 3.2 – Hauteurs significatives de vagues [m] en fonction du temps [jours depuis le 1erjanvier 1990]. La période temporelle correspond au mois de février 2014.

On remarque sur la figure (3.1) la présence d’une fluctuation des hauteurs significatives desvagues au niveau du golfe de Gascogne. En effet, à cet endroit Hs atteint une valeur improbablede 49 mètres alors que la plus haute vague jamais enregistrée atteint une hauteur de 29.1 mètreset le record mondial de hauteur significative observé par un instrument en mer est de 17,2 m.

Nous allons donc étudier l’origine de ces pics d’erreurs et voir comment corriger la configu-ration. Nous allons nous intéresser en particulier à la discrétisation temporelles, la discrétisationspectrale et enfin la paramétrisation physique des constantes. Ces discrétisations et paramétri-sations s’effectuent dans le fichier d’entrée du préprocesseur de grille.

3.2 Présentation du modèle

L’Ifremer nous a fournis un maillage avec les fichiers bathymétriques (.bot, .obs et .mask) dumodèle global de vague. Ce modèle a pour but de modéliser la dynamique des vagues du mondeentier. Le modèle utilise un maillage structuré avec une résolution horizontale et verticale de 0.5o

ce qui correspond approximativement à des mailles de 60 km de cotés. Le maillage utilisé estcomposé de plus de 6 millions nœuds de calcul et couvre l’ensemble de l’océan "mondial".

Pour faire fonctionner le modèle il est nécessaire de lui fournir un fichier bathymétrique conte-nant l’ensemble des profondeurs des océans. Ces données sont transmises au modèle via le fichierd’entrée du préprocesseur de grille (ww3_grid.inp), c’est un fichier texte avec l’extension ".bot".La figure ci-dessous (3.3) présente la bathymétrie utilisée par notre modèle global.

Figure 3.3 – Carte des profondeurs marines.

Page 20: Mise en place et paramétrage physique d’un modèle ... · externes (Noveo) et les outils de créations et de visualisation de statistiques et de rapports sont écrits en Python

3.3. STABILISATION DU MODÈLE DE VAGUES GLOBAL 19

L’unique forçage effectué pour le moment est le forçage du vent, qui est l’élément moteur dansle processus de génération des vagues. Pour cela on utilise la base de donnée de ECMWF (Centreeuropéen pour les prévisions météorologiques à moyen terme). Ce centre fournit des données devents mis-à-jour quotidiennement avec plusieurs résolutions de données. Nous transmettons lescomposantes spatiales du vent avec une résolution de 0.5o. Cette résolution de donnée a été choisipour le modèle global car c’est la résolution du maillage.

Figure 3.4 – Composantes spatiales du vent provenant de la base de données ECMWF.

Le paramétrage utilisé dans cette configuration pour la génération et la dissipation des vagues[11] est celui développé par l’Ifremer lors du projet de recherche IOWAGA (Integrated OceanWAves for Geophysical and other Applications). Le paramétrage des termes de dissipation sur lefond (BT4) est lui aussi issu de l’Ifremer. La réflexion des vagues en zone côtière est paramétréeà l’aide d’un coefficient de réflexion (REF1). Le coefficient de réflexion va varier en fonction dela pente de la zone littorale, des reliefs du rivage et des caractéristiques de vagues (hauteur desvagues incidentes, fréquence moyenne) [12]. Les spectres directionnels de densité sont discrétiséssur 24 directions et sur 32 fréquences (comprises entre 0.0373 Hz to 35.2373 Hz) ce qui donne aumodèle 24 ⇤ 32 = 768 équations d’advection couplées à résoudre et donc un problème à plusieursmillions d’inconnues.

Dans la section suivante, nous allons partir de cette paramétrisation, la tester, analyser lesrésultats, puis la modifier pour l’adapter à nos données.

3.3 Stabilisation du modèle de vagues global

Comme on a pu l’expliquer dans le chapitre prècedent, la paramétrisation de WaveWatchIII s’effectue principalement dans le fichier d’entrée du pré-processeur de grille. On y trouvenotamment la discrétisations spectrales et temporelles ainsi que les paramètres physiques, nousallons étudier leurs influences dans le but d’obtenir une modèle de vagues non-seulement stablemais aussi le plus efficace possible.

3.3.1 Influence de la discrétisation spectraleDans cette section nous allons étudier l’influence de la discrétisation spectrale sur les résultats

du modèle de vagues WaveWatch III mais aussi son influence sur les temps de calcul.

Nous allons nous intéresser essentiellement au nombre de fréquences et au nombre de direc-tions en modifiant ces deux paramètres et analysant leurs influences sur le modèle de vagues entermes de temps de calcul et de qualité du modèle (Cf. Annexe A). Si l’on augmente le nombrede fréquence la qualité du modèle s’en retrouvera a priori amélioré, en contre partie le temps decalcul sera augmenté. Le but est donc de trouver la paramétrisation de la discrétisation spectralequi aura le meilleur ratio qualité/temps de calcul.

Voici les différentes discrétisations que nous utiliserons :

Page 21: Mise en place et paramétrage physique d’un modèle ... · externes (Noveo) et les outils de créations et de visualisation de statistiques et de rapports sont écrits en Python

3.3. STABILISATION DU MODÈLE DE VAGUES GLOBAL 20

— Discrétisation ’Global’ : 1.1 0.0373 32 24 0.C’est la discrétisation du modèle de vagues global que j’ai mis en place en m’inspirant d’uneconfiguration WaveWatch III de l’Ifremer. 1.1 correspond au facteur d’incrémentation dela fréquence, 0.0373 à la première fréquence, 32 au nombre de fréquences, 24 au nombrede directions et 0 au décalage relatif).

— Discrétisation ’Atlantique Nord’ : 1.1 0.04118 25 36 0.C’est la discrétisation du modèle de vagues de l’Atlantique nord qu’Open Ocean utilise.

— Discrétisation ’Spéciale’ : 1.1 0.0373 32 36 0.Cette discrétisation ’Spéciale’ a donc 32 nombres d’onde et 36 directions.

Pour effectuer notre étude, nous allons réaliser des tests sur deux modèles de vagues diffé-rents : le modèle global qui comprend la dynamique de tous les océans et le modèle Atlantiquenord qui comprend essentiellement la dynamique des océans bordant l’Europe de l’ouest. Lemodèle Atlantique Nord étant stable cela va nous permettre de mettre évidence l’impact de cesdiscrétisations spectrales. On a donc six modèles à tester (deux modèles et trois discrétisations) :

1. Modèle global (32 f 24 dir),2. Modèle global avec la discrétisation spectrale du modèle Atlantique Nord (25 f 36 dir),3. Modèle global avec la discrétisation spectrale ’spéciale’ (32 f 36 dir)4. Modèle Atlantique Nord avec la paramétrisation du modèle global. C’est-à-dire qu’on a

pris les même pas de temps, la même discrétisation spectrale (32 f 24 dir) et en définissantles constantes des termes source de la même façon que le modèle global,

5. Modèle Atlantique Nord avec la paramétrisation du modèle global et la discrétisation spec-trale du modèle Atlantique Nord (25 f 36 dir),

6. Modèle Atlantique Nord avec la paramétrisation du modèle global et la discrétisation spec-trale ’spéciale’ (32 f 36 dir).

Pour comparer ces différentes discrétisations nous allons exécuter le programme WaveWatch IIIsur une période de un mois (avril 2012) en utilisant huit processeurs en hyper-threading (HT). Lavalidation du modèle s’effectuera en utilisant la hauteur de vagues significatives habituellementnoté ’H

s

’ cette quantité statistique est largement utilisée en océanographie pour caractériserl’état de la mer. Elle est définie comme la moyenne des hauteurs (mesuré entre crête et creux)du tiers des plus fortes vagues. Cette définition vient historiquement de l’estimation de hauteurdes vagues par l’observation visuelle, la hauteur significative étant proche de celle estimée parun observateur. Nous comparons donc ces valeurs de H

s

données par le modèle WaveWatch IIIavec celles enregistrées par les bouées in situ.

Pour comparer les données du modèle avec les données de bouées in situ, j’ai utilisé uneroutine (Projet.py) développée en interne chez Openocean permettant de calculer les statistiquesbias, corr, std, rmse, crmse, nrmse, scatter_index et nse définies dans l’annexe A. Cette rou-tine prend en argument des fichiers XML qui décrivent les statistiques voulues, la variable àcomparer (Hs dans notre cas), le modèle à comparer, la bouée à comparer et enfin la période àcomparer. À la fin de l’exécution elle produit un graphique contenant l’ensemble des statistiquescrée. La figure 3.5 est un exemple de statistiques réalisées avec cette routine, sur cette dernièrenous avons comparé le modèle de vagues global (1.) avec la bouées no 62163 située à l’ouest dela Bretagne (latitude 47.550N longitude 8.470W) sur la période du mois d’avril 2012.

Nous avons ré-effectué cette manœuvre de comparaison modèle-bouée pour les six modèlesdécrient précèdement, puis nous avons résumé les statistiques ainsi que les temps d’exécutiondans le tableau ci-dessous :

Page 22: Mise en place et paramétrage physique d’un modèle ... · externes (Noveo) et les outils de créations et de visualisation de statistiques et de rapports sont écrits en Python

3.3. STABILISATION DU MODÈLE DE VAGUES GLOBAL 21

Figure 3.5 – Comparaison des hauteurs significatives de vagues données par le modèle de vaguesglobal WaveWatch III avec celles données par la bouée 62163 située à l’ouest de la Bretagne(47.550N 8.470W).

Modèle : Global Atlantique Nord1 2 3 4 5 6

(32 f 24 dir) (25 f 36 dir) (32 f 36 dir) (32 f 24 dir) (25 f 36 dir) (32 f 36 dir)Duration 10h 38m 6s 12h 16m 13s 16h 13m 29s 1h 41m 35s 1h 56m 54s 2h 36m 51sElapsed time 9h 59m 46s 11h 39m 15h 38m 1h 23m 1h 38m 36s 2h 19m 24sBias -0.12 m -0.12 m -0.12 m -0.09 m -0.11 m -0.1 mCorr 0.97 0.97 0.97 0.97 0.97 0.97std 0.99 0.99 0.99 0.97 0.97 0.97rmse 0.38 m 0.38 m 0.38 m 0.37 m 0.37 m 0.37 mcrmse 0.26 m 0.26 m 0.26 m 0.26 m 0.26 m 0.26 mnrmse 4.45% 4.46% 4.39% 4.31% 4.35% 4.3%scatter_index 0.11 0.11 0.11 0.11 0.11 0.11pbias -3.32% -3.53% -3.31% -2.72% -3.05% -2.87%pstd 10.89% 11.01% 10.83% 10.64% 10.75% 10.61%nse 0.94 0.94 0.94 0.94 0.94 0.94

Figure 3.6 – Tableau résumant les statistiques obtenues en comparant différents modèles etparamétrisations à la bouée 62163 située à l’ouest de la Bretagne (47.550N 8.470W). Les numéros1, 2, 3, 4 , 5 et 6 correspondent aux modèles décrits précédemment

À paramétrisation équivalente, la résolution du modèle global prend environ sept fois plus de

temps de calcul que le celle du modèle de l’Atlantique Nord (9h59m46s1h23m + 11h39m

1h38m36s + 15h38m2h19m

3=

7.226 + 7.089 + 6.748

3= 7.021). En effet, la zone du modèle global est bien plus grande que la

zone du modèle Atlantique Nord, ce qui donne des temps de simulations bien plus grand.

C’est avec la discrétisation ’global’ (1 et 3) que les temps de calcul sont les plus faible etce quel que soit le modèle de vagues utilisé (global ou Atlantique Nord). En effet, avec cettediscrétisation, on ne calcule que pour 32 fréquences et 24 directions (soit 768). La discrétisationde l’Atlantique Nord, quant à elle, prend 25 fréquences et 32 directions et enfin la discrétisation’spéciale’ a 32 fréquences et 36 directions c’est ce qui explique pourquoi cette dernière discréti-sation entraine des temps de calcul plus élevés.

En comparant les statistiques des deux modèles à paramétrisation équivalente (c-à-d en com-parant les statistiques des colonnes 1 et 4, 2 et 5 puis 3 et 6 du tableau de la figure 4.3), notammentles statistiques bias, on remarque que les le modèle de l’Atlantique nord est légèrement plus précis.

En comparant les statistiques des différentes discrétisations à modèle équivalent (i.e en com-parant 1,2 et 3 puis 4,5 et 6) ; on constate sans surprise que c’est la discrétisation ’spéciale’ quidonne les résultats les plus précis. En effet, lorsque l’on augmente le nombre de fréquences et de

Page 23: Mise en place et paramétrage physique d’un modèle ... · externes (Noveo) et les outils de créations et de visualisation de statistiques et de rapports sont écrits en Python

3.3. STABILISATION DU MODÈLE DE VAGUES GLOBAL 22

directions, on augmente la précision des calculs.

Conclusion :

En effectuant le rapport du temps de calcul par la précision des résultats, la discrétisationglobal apparait comme la plus intéressante. En effet, pour la discrétisation ’spéciale’, le gain deprécision est ridiculement petit devant l’augmentation des temps de calcul (en particulier pourle modèle global : 5h30 de temps calcul en plus pour quelques dixièmes de pourcentages gagné).Dans la suite, nous utiliserons donc la discrétisation ’global’ pour nos calculs.

3.3.2 Influence des paramètres physiques (namelists/switchs)Le modèle global de vagues donne des résultats avec parfois des pics d’erreurs très impor-

tants. En effet, à certaines périodes et à certains endroits de l’océan (en particulier près descôtes) les résultats des simulations de WaveWatch III donne des hauteurs de vagues totalementabsurde (vagues de 50 mètres à 4 kilomètres de côtes bretonnes). Après avoir testé différentesparamétrisations, en activant et désactivant des ’switchs’ puis des ’namelists’, une identificationdu paramètre physiques générant ces pics d’erreurs a pu être possible. C’est en fait un coefficientde réflexion du littoral qui est à l’origine des pics d’erreurs. J’ai donc testé différentes valeurspour ce coefficient de réflexion (REFCOAST ) afin de trouver qu’elle serait la valeur donnantles meilleurs résultats, mais il se trouve que ce coefficient entraines des erreurs dans les équationsdu modèle de vagues.

Figure 3.7 – Comparaison du modèle de vagues avec différentes valeurs du coefficient de réflexiondu littoral1- Configuration du modèle global avec REFCOAST=0.1 (Courbe avec les plus grands pics)2- Configuration du modèle global initiale (courbe verte avec des petits pics d’erreurs)3- Configuration du modèle global avec REFCOAST=0.01 4- Configuration du modèle global ensupprimant le paramètre REFCOAST

Sur la figure 3.7 on a représenté plusieurs paramétrisations du modèle global de vagues : ona fixé différentes valeurs pour le coefficient REFCOAST puis on l’a supprimé. Nous observonsqu’en diminuant fortement la valeur du coefficient REFCOAST, il reste des pics correspondantà des erreurs du modèle, c’est en supprimant ce coefficient que le modèle est le plus stable. Mesencadrants n’ont pas souhaité que je modifie les fichiers fortran de WaveWatch III et que jepasse du temps sur ce problème qui n’était pas une priorité pour eux, nous avons donc décidé

Page 24: Mise en place et paramétrage physique d’un modèle ... · externes (Noveo) et les outils de créations et de visualisation de statistiques et de rapports sont écrits en Python

3.4. VALIDATION 23

de supprimer ce coefficient de réflexion du littoral. En effet, le coefficient de réflexion à la côtea une influence uniquement sur les zones côtières et donc avec une résolution de maillage aussifaible (0.5o ⇡ 60km), le phénomène de réflexion du littoral, n’est de toute façon, pas bien prisen compte dans le modèle global de vagues.

3.4 Validation

Pour valider le modèle global, on a comparer les résultats de nos simulations avec des donnéesin situ, il a d’abord été nécessaire de réaliser une recherche de données de bouées dans lesdifférents océans du globe. En effet, Open Ocean a validé son modèle Atlantique nord avec desbouées localisées uniquement dans cette zone d’intérêt.

3.4.1 Données de bouées in-situLa majorité des données de bouées in situ de OpenOcean provenait du site de la ’National

Data Buoys Center’ (NDBC). Ce centre fait partie de la National Oceanic and AtmosphericAdministration’s (NOAA) National Weather Service (NWS). NDBC conçoit, développe, exploiteet entretient un réseau de collecte de données de bouées et des stations côtières.

Je me suis donc intéressé dans un premier temps aux données de bouées présentes sur le sitede la NDBC, j’ai sélectionné les bouées les plus intéressantes i.e celles qui possèdent le plus grandnombre de données (en particulier la hauteur significative des vagues H

s

, la direction des vaguesdir, la vitesse du vent, la direction du vent...) sur des périodes de temps les plus grandes possibles.

Des données de bouées au niveau de l’océan Atlantique sud (en particulier au large des côtesdu Brésil) ont pu être récupéré sur le site de GOOS-BRASIL (via le programme national debouées PNBOIA). De même, des données ont pu être récupéré au large des côtes canadienne àl’aide du site ’Fisheries and Oceans Canada’. L’ensemble des nouvelles bouées sont localisées surla figure ci-dessous 4.6.

Figure 3.8 – Localisation des nouvelles données de bouées : L’étoile indique la position de labouée et le nombre à coté de l’étoile correspond au numéro de bouée.

Afin d’exploiter ces nouvelles données de bouées il a fallu les formater. En effet, les donnéesbrut étaient au format csv (cf. glossaire) inutilisable dans notre chaîne de traitement. J’ai donccrée un algorithme python, en m’aidant des bibliothèques crées en interne chez OpenOcean, quilit le fichier csv et réecrit les données dans un fichier netCDF exploitable et avec lequel il serapossible d’effectuer une comparaison bouée-modèle afin de calculer les scores (statistiques).

Page 25: Mise en place et paramétrage physique d’un modèle ... · externes (Noveo) et les outils de créations et de visualisation de statistiques et de rapports sont écrits en Python

3.4. VALIDATION 24

3.4.2 Cartes de ValidationAfin de quantifier les performances du modèle,les scores ont été calculés (les statistiques bias,

corr, std, Nrmse et scatter_index définies dans le glossaire ) pour plusieurs bouées disséminéesdans les océans du globe. Ces calculs ont été effectués pour deux périodes : janvier 2008 (tableau3.1) et décembre 2014 (tableau 3.2). Les résultats sont résumés sur les deux tableaux ci-dessous :

No de bouée 52200 46035 46184 46005 32012 41041 44139 44137Bias -0.28 m -0.11 m -0.49 m -0.1 m -0.21 m 0.03 m -0.24 m 0.15 mCorr 0.87 0.96 0.97 0.95 0.87 0.89 0.95 0.97std 0.64 0.84 0.97 1.18 1.15 0.9 0.89 0.98nrmse 20.09% 6.99% 9.79% 5.66% 7.88% 12.91% 6.76% 4.49%scatter_index 0.2 0.14 0.11 0.11 0.13 0.12 0.17 0.14nse 0.24 0.9 0.64 0.87 0.67 0.57 0.88 0.94

Table 3.1 – Résumé des statistiques du modèle global en comparaison aux données de bouéespour le mois de janvier 2008.

No de bouée 52200 46035 46184 46005 32012 41041 44139 69150Bias -0.43 m -0.21 m 0.06 m 0.24 m 0.24 m -0.01 m -0.16 m -0.13 mCorr 0.93 0.95 0.96 0.97 0.67 0.92 0.94 0.83std 0.74 0.94 0.9 1.12 1.06 0.87 0.91 0.96nrmse 19.95% 6.37% 6.48% 7.08% 19.32% 7.74% 6.59% 14.05%scatter_index 0.22 0.12 0.09 0.12 0.19 0.09 0.13 0.18nse 0.24 0.87 0.92 0.89 -0.22 0.85 0.84 0.61

Table 3.2 – Résumé des statistiques du modèle global en comparaison aux données de bouéespour le mois de décembre 2014.

En analysant les figures 3.1 et 3.2, on constate que le modèle de vagues global est relativementprécis pour l’Atlantique Nord ainsi que pour le Pacifique Nord. En effet, les statistiques pourcette partie de l’océan sont très bonnes ; l’indice d’efficacité du modèle (NSE) reste relativementélevé (supérieur à 0.7), de même le coefficient de corrélation (corr) est toujours supérieur à 0.87.

Pour la bouée 52200 (situé au milieu de l’océan pacifique nord), le modèle n’est pas trèsprécis ; cela est dû à la proximité de la bouée de l’île de Guam (à moins de 2 kilomètres). Eneffet le modèle global ne tient pas compte de cette île dans ces grilles de calcul car elle est troppetite par rapport à la taille de maille utilisé (0.5o ⇡ 60km) c’est pourquoi il y a une très fortedifférence entre les résultats du modèle et les données in situ.

Les statistiques obtenues pour la bouée 32012 (située à côté du Chili) sont très mauvaises.Une hypothèse expliquant ce manque de précision est que la propagation des vagues n’est pascorrectement modélisé étant donné que l’on ne prend pas en compte les données de glaces etd’iceberg. La présence d’iceberg et de glace de mer dans le modèle a de forte chance d’avoir unimpact sur la dynamique des vagues. En effet, dans cette partie de l’océan la propagation desvagues s’effectue sans obstacles et donc même si la mer de glace et les icebergs sont présents àdes centaines de kilomètres, cela peut avoir un impact sur les hauteurs de vagues enregistréespar cette bouée.

Et enfin, les statistiques obtenues avec les bouées aux large du Brésil ne sont pas très précises.Bien qu’il y est une forte corrélation entre les données et le modèle, le coefficient NSE est bas(inférieur à 0.61). Ces erreurs sont dû à la proximité des bouées aux côtes Brésilienne. En effet,le modèle de global avec une résolution de 0.5o mis en place ne peut représenter précisémentune dynamique côtière. Pour mieux représenter la dynamique local, il faudrait mettre en placeun modèle local avec une résolution plus fine forcé par le modèle global. Le modèle serait plusperformant car les phénomènes de shoaling et réflexion des vagues sur la côtes seraient mieuxpris en compte dans le modèle.

Page 26: Mise en place et paramétrage physique d’un modèle ... · externes (Noveo) et les outils de créations et de visualisation de statistiques et de rapports sont écrits en Python

3.4. VALIDATION 25

Conclusion :Nous avons donc mis en place un modèle global de vagues avec une résolution horizontale et

verticale à 0.5o stable. Pour cela, nous avons dû réaliser des tests avec différentes discrétisationsspectrales, afin d’en sélectionner une, la ’global’ qui permet d’avoir un modèle relativement précisavec des temps de calculs corrects. Pour stabiliser le modèle, nous avons dû tester différentsparamétrages physiques, ce qui nous a permis d’isoler l’origine des pics d’erreurs. Ensuite, lavalidation du modèle s’est effectuée à l’aide de nouvelles données bouées rapatriées puis formatéespour être réutilisées. Selon l’endroit du globe, le modèle de vagues mis en place a des résultatsplus ou moins bon, notamment dans l’hémisphère sud où les statistiques d’efficacité du modèlesont relativement basse. Une hypothèse de cette faible efficacité de modèle est que la glace de meret les icebergs ne sont pas pris en compte dans le modèle de vagues d’Open Ocean et pourtantleur inclusion dans le modèle aurai probablement un impact mélioratif sur le modèle. Nous allonsdonc nous intéresser à l’intégration de la glace et des icebergs dans le modèle dans les prochainschapitres.

Page 27: Mise en place et paramétrage physique d’un modèle ... · externes (Noveo) et les outils de créations et de visualisation de statistiques et de rapports sont écrits en Python

Partie 4

Intégration de la glace

Une des pistes d’amélioration des résultats précédents était l’intégration de la glace dans lemodèle, plus précisément de la glace de mer. La glace de mer est tout simplement la glace qui seforme à partir de l’eau des océans ; elle généralement recouverte par de la neige, mais les deuxne se mélange pas. Il ne faut pas confondre avec la glace continentale qui elle, se forme par accu-mulation de neige sur un continent. Cette neige se transforme en glace et s’écoule par les glaciersvers la mer. On en retrouve des morceaux qui flottent sur la mer qu’on appelle "icebergs". Glacede mer et icebergs sont donc bien deux glaces très différentes de part leur origine. La glace demer se forme d’abord dans les eaux peu profondes, près des côtes ou au-dessus des hauts-fondsou des bancs, et particulièrement dans les baies, les bras de mer et les détroits dans lesquels iln’y a pas de courant, et dans les zones de faibles salinités.

Jusqu’à présent Open Ocean n’intégrait pas la glace dans leur simulation, les objectifs demes recherches sont de comprendre les mécanismes permettant d’intégrer la glace, de trouver desdonnées compatibles à WaveWatch III et enfin de déterminer si cela a un impact mélioratif surla modélisation des vagues.

4.1 Documentation

Le premier objectif de ma documentation a été de déterminer le type de données de glacecompatible avec WaveWatch III, c’est-à-dire quel est le format du fichier d’entrée, quelle estla ou bien les variables à transmettre au modèle de vagues. Le second objectif a été de com-prendre comment implémenter cette intégration de glace dans le modèle, à quel niveau du codecela s’effectue. Le manuel d’utilisation de WaveWatch III [2] a assuré la majeur partie de mabibliographie.

Philosophie :Si l’on souhaite modéliser l’état de mer il est nécessaire d’intégrer au modèle des champs de

forçages (cf. 2.2) tel que la profondeur moyenne (DPT), la vitesse moyenne du courant (CUR),la vitesse moyenne du vent (WND), la différence de température air-mer (AST), le niveau d’eau(WLV), la concentration de glace (ICE), l’atténuation des vagues due aux icebergs (IBG) et enfin lataille moyenne des grains de sédiments. Actuellement Open Ocean intègre uniquement la vitessemoyenne du vent (WND) comme champ de forçage, on a pu constater que les modèles obtenaientdéjà des résultats relativement correct avec cette unique champ de forçage. En effet, le vent estle mécanisme principal pour la génération des vagues.

L’objectif est de rajouter la concentration de glace (ICE) dans les champs de forçage dansl’optique d’améliorer la précision du modèle de vagues global, mais aussi la précision des modèleslocaux (la zone Atlantique nord e.g). Le manuel d’utilisation de WaveWatch III ([2] p.152) nousindique que l’intégration de la glace (et d’ailleurs de l’ensemble des champs de forçage) peuts’effectuer de deux façons (similaires) : l’une avec le préprocesseur de fichier d’entrée (w3prep)et la seconde avec le préprocesseur de fichier d’entrée netCDF (w3prnc).

Open Ocean intègre leurs données vents (WND) avec le préprocesseur de fichier d’entréenetCDF. Le netCDF est un format de choix pour les entrées/sorties de nombreux systèmes

26

Page 28: Mise en place et paramétrage physique d’un modèle ... · externes (Noveo) et les outils de créations et de visualisation de statistiques et de rapports sont écrits en Python

4.2. RECHERCHE DE DONNÉES DE GLACE 27

d’information géographique et pour les échanges de données scientifiques, c’est pourquoi OpenOcean a décidé d’utiliser ce format et donc d’implémenter ses champs de forçage en utilisant cetype de fichier.

4.2 Recherche de données de glace

De nombreux centres d’observation proposent des données de glace de différentes sortes(concentration de glace, épaisseur de glace, vitesse de déplacement de la glace...) avec différentsformats (ASCII text, shapefiles, PNG, binaire etc.). Nous recherchons des fichiers au formatnetCDF contenant des concentrations de glace ce qui affine considérablement nos recherches.Voici les différentes bases de données sélectionnées HadISST, ECMWF et OSTIA nous les décri-vons plus en détails dans les sous-sections suivantes.

4.2.1 HadISST

Couvrant une période de 1871 à aujour-d’hui avec un pas de temps mensuel, Ha-dISST (Met Office Hadley Sea Ice and SeaSurface Temperature data set) fournit laplus longue base de données de glace avecun maillage régulier. Des données de glacesont disponibles en Antarctique, mais aussien Arctique avec une résolution horizontaleet verticale de 1 degré. HadISST combinedes données historique provenant de cartesde glace issues d’observations lors de navi-gation, d’expéditions et autre activités, dedonnées satellitaire (issues principalementde la NASA) et de l’analyse opérationnellede glace de la NCEP.

Figure 4.1 – Concentration de glace pro-venant de la base de donnée HadISST (1o).

4.2.2 MyOceanMyOcean est un projet subventionné par la commission européenne, dont l’objectif est la

définition et la mise en place d’une capacité européenne intégrée pour la surveillance, l’analyse etla prédiction des Océans, en support aux activités telles que : la Sécurité maritime, la pollutionpar Hydrocarbure, changement climatique, la surveillance des glaces etc. En fait, ce programmevise à regrouper différentes base de données de plusieurs centres de recherche puis à normaliseret supprimer les duplications de bases données. Il possède donc une base de données relatives àla glace et ce au format netCDF . La figure 4.2 est un exemple de fichier compatible.

OSTIA est une analyse global, opération-nelle, de haute résolution, incluant la tem-pérature de la mer en surface (SST ) et de laglace de mer. Cette analyse a été développéeau Met Office et couvre une période de 1985à aujourd’hui. Mise à jour quotidiennement,la couverture global au 1/20o nouvelle, dehaute résolution globale ( 6 km) de SST etde concentration de glace sont générés qua-siment en temps réel. L’analyse a été conçuepour répondre aux besoins d’applicationsnécessitant des échelles spatio-temporelles àhaute résolution, notamment pour des pré-visions météorologiques globales ou encorepour des modèles océaniques.

Figure 4.2 – The OSTIA global foundationSea Surface Temperature - au 1/20 de degré

Page 29: Mise en place et paramétrage physique d’un modèle ... · externes (Noveo) et les outils de créations et de visualisation de statistiques et de rapports sont écrits en Python

4.3. IMPLEMENTATION DES DONNÉES DE GLACE 28

4.2.3 ECMWF

Le Centre européen pour les prévisionsmétéorologiques à moyen terme (CEPMMT- ECMWF en anglais) est une organisationintergouvernementale soutenue par 34États. ECMWF est à la fois un institut derecherche et un centre de service disponible24/7, il produit et diffuse des prévisionsmétéorologiques numériques à ses étatsmembres.

Ce centre possède donc un énorme basede données météorologiques et notammentune base de données atmosphériques globalde 1979 à aujourd’hui : Era-interim. Avec,entre autres, des données de vent, de cou-rant, de glace avec en particulier ce qui nousintéresse : une base de données de concen-tration de glace au niveau mondial et auformat netCDF.

Figure 4.3 – Visualisation des concen-tration de glace provenant de era-interim(ECMWF).

Actuellement OpenOcean utilise les données ECMWF au demi degré pour le forçage du vent,c’est pourquoi la base de données ECMWF pour la glace de mer est une base de données dechoix pour avoir une homogénéité dans nos bases de données.

4.3 Implementation des données de glace

L’intégration de la glace de mer dans Wavewatch III nécessite d’utiliser un programme auxi-liaire : le préprocesseur (w3_prnc). Ce programme va effectuer la phase préliminaire de la tra-duction (compilation), c’est-à-dire qu’il va lire un fichier d’entrée pré-formaté puis construire unfichier mod_def qui va traduire les données au programme WaveWatch III pour qu’il puisse lescomprendre et les intégrer au modèle physique. Nous cherchons à intégrer la couverture de glace ;nous nous sommes donc intéressés à des données de type concentration de glace. Dans WavewatchIII la couverture de glace est considérée comme la ’terre’, excepté que cette couverture de glacevarie temporellement. On suppose alors que l’énergie des vagues est nulle et que les conditionsaux limites au bord de la glace de mer (mer-glace) sont identiques aux conditions limites dela côte. Les points de la grille ne sont pas pris en compte dans le calcul si la concentration deglace est supérieure à une valeur seuil définit dans le fichier d’entrée du préprocesseur de grille(ww3_grid.inp). Si la concentration de glace est inférieure à la valeur seuil, le point de maillagecorrespondant est réactivé.

L’implémentation de la glace dans la chaine de traitement WaveWatch III de OpenOceans’effectue à plusieurs niveaux du code. Voici les différents codes sources modifiés :

1. ww3_setup.sh2. build_time_and_list.sh,3. make_input_ww3.sh,4. build_ice_ww3.sh5. make_run_ww3.sh.Dans un premier temps on indique au modèle via le setup que l’on veut intégrer la glace

au modèle (ice=’yes’). Si l’utilisateur veut intégrer la glace avec des fichiers autres que la basede donnée ECMWF crée au préalable il l’indique dans le setup en mettant le mot clef ’file’(ice_sources=’file’) et en indiquant le chemin absolu du fichier sinon on met le mot clef ’ECMWF’(ice_sources=’ECMWF’) ou encore le mot clef ’HadISST’, la base de données de ’OSTIA’ n’apas été implémenté dans nos codes WaveWatch III. Et enfin on précise le nom de la variable deconcentration de glace dans le fichier netCDF (name_ice_var_infile=’ci’).

Page 30: Mise en place et paramétrage physique d’un modèle ... · externes (Noveo) et les outils de créations et de visualisation de statistiques et de rapports sont écrits en Python

4.4. TESTS ET VALIDATION 29

Ensuite, dans le build_time_and_list.sh on implémente un compteur qui va compter lenombre de modèle de glace maillé que l’on intègre au modèle. En effet, il est possible d’exécu-ter WaveWatch III en multi-grille, c’est-à-dire avec plusieurs maillages. Par exemple, on peutfaire tourner un modèle global (la "grille mère") avec une résolution de 0.5o avec un deuxièmemodèle local (e.g un modèle Atlantique nord qui sera la "grille fille") avec une résolution plusfine (0.125o). Le build_time_and_list.sh va donc compter deux modèles pour le vent et seracontraint d’incorporer deux modèles pour la glace (les deux pouvant être les mêmes).

Après, dans le make_input_ww3.sh on construit la définition du fichier d’entrée (ww3_prnc_ice.inp)que l’on veut intégrer au modèle puis on le transmet au préprocesseur (ww3_prnc). Une par-tie de l’implémentation de la glace dans le make_input_ww3.sh est donnée en annexe D. Lemake_input_ww3.sh fait appel au script shell build_ice_ww3.sh qui va formater le fichier deglace en découpant ou concaténant plusieurs fichiers de glace afin d’avoir les données glaces cor-respondant aux dates de la simulation voulus.

Et enfin, le make_run_ww3.sh va construire le fichier d’entrée pilote du modèle multi-grilleet grâce à ce dernier il va pouvoir lancer les calculs (la majorité des calculs servent à la résolutionde l’équation (2.2))

4.4 Tests et validation

Dans cette section nous allons tester les différentes bases de données de glaces afin de déter-miner si l’intégration de la mer de glace a un impact mélioratif sur la modélisation des vaguesen les comparant au données de bouées in-situ.

Dans un premier temps on effectue des simulations WaveWatch III avec les différentes basesde données décrites précèdement afin de déterminer quel jeu de données est le plus performant.Voici trois sorties Wavewatch III de concentration de glace provenant de trois sources : HadISST,ECMWF et OSTIA :

(a) HadISST à 1o

Figure 4.4 – Sorties Wavewatch III des concentrations de glace.

Page 31: Mise en place et paramétrage physique d’un modèle ... · externes (Noveo) et les outils de créations et de visualisation de statistiques et de rapports sont écrits en Python

4.4. TESTS ET VALIDATION 30

(b) ECMWF à 0.75o

(c) OSTIA 0.05o

Figure 4.5 – Sorties Wavewatch III des concentrations de glace.

Sur les figures 4.4 (a) et 4.5 (b) on observe que les concentrations de glace sont discontinues,les données de glace n’ont pas été pris en compte sur tous les points de maillage. La résolutiondes grilles WaveWatch III est de 0.5 degrés tandis que les résolutions des fichiers d’entrée deglace sont de 1 degré pour HadISST et 0.75 degrés pour ECMWF. Une routine du programmeinterpole la grille de plus faible résolution sur celle que le programme utilise pour faire ces calculs(à 0.5o) mais dans ce cas précis une parties des nœuds des mailles du fichier d’entrée et de lagrille de calcul sont superposés, c’est ce qui est à l’origine du dis-fonctionnement dans l’interpo-lation. Pour pallier ce problème d’interpolation avec la base de données de ECMWF, nous avonschoisi une base de données de glace avec une résolution plus fine. En effet, la base de donnéede ECMWF propose leur données à différentes résolutions : 0.125o, 0.25o, 0.5o, 0.75o, 1o, 1.5o.La base de données HadiSST n’étant pas adapté au maillage que l’on utilise pour notre modèleglobal, nous l’excluons donc de notre étude.

Pour sélectionner la base de données la plus adéquate nous allons comparer les résultatsWaveWatch III aux données de bouées in-situ sur une période de un mois (avril 2012). La bouée

Page 32: Mise en place et paramétrage physique d’un modèle ... · externes (Noveo) et les outils de créations et de visualisation de statistiques et de rapports sont écrits en Python

4.4. TESTS ET VALIDATION 31

46035 (cf. figure 4.6) provenant du side de la NDBC a été utilisé pour ces comparaisons. Cettebouée est située au niveau du détroit de Béring, au point de coordonnées 57.026 N 177.738 W,lieu où la mer et la mer de glace se rencontrent. C’est donc un endroit où la mer de glace auraun impact significatif sur les hauteurs significatives des vagues (Hs).

Statistiques : sans glace ECMWF OSTIABias 0.17 m 0.07 m 0.09 mCorr 0.96 0.97 0.97std 0.93 0.95 0.95rmse 0.32 m 0.26 m 0.27 mcrmse 0.21 m 0.19 m 0.19 mnrmse 6.85% 5.49% 5.64%scatter_index 0.17 0.14 0.14pbias 9.37% 4.03% 4.83%pstd 17.46% 14% 14.36%nse 0.89 0.93 0.93

Table 4.1 – Tableau des statistiques obtenus en comparant sur la période du mois d’avril 2012,le modèle de vagues avec les données de la bouée in-situ no 46035 (lat. 57.026 N lon. 177.738 W).

On constate une nette amélioration pour les modèles qui intègrent la glace dans leurs équa-tions. Les statistiques du tableau 4.1 notamment les statistiques NSE (efficacité du modèle),Bias (sur/sous évaluation du modèle) et la NRMSE (cf. annexe A), montrent que les deuxmodèles intégrants la glace ont de meilleurs résultats que le modèle sans glace. Afin de validercette observation d’autres statistiques ont été réalisées sur une douzaine de bouées disséminésdans les océans. La figure ci-dessous indique la position des bouées et la tableau 3.2 résume lesstatistiques obtenues en comparant les résultats au données de bouées in situ.

Figure 4.6 – Localisation des nouvelles données de bouées : L’étoile indique la position de labouée et le nombre à coté de l’étoile correspond au numéro de bouée.

Page 33: Mise en place et paramétrage physique d’un modèle ... · externes (Noveo) et les outils de créations et de visualisation de statistiques et de rapports sont écrits en Python

4.5. CONCLUSION 32

a) Modèle n’intégrant pas les de données de glace :Bouée No 46035 46184 46005 51000 32012 69153 41041 41001 44139 62163Bias 0.17 m 0.0 m 0.05 m 0.07 m 0.06 m -0.42 m 0.01 m 0.06 m 0.21 m -0.12 mCorr 0.96 0.95 0.96 0.87 0.46 0.81 0.92 0.95 0.95 0.97std x 1.01 0.88 0.71 0.83 0.64 0.93 0.96 1.04 0.99nrmse 6.85% 6.57% 8.15% 11.13% 16.85% 18.84% 9.03% 6.7% 8.26% 4.45%scatter_index 0.17 0.12 0.12 0.11 0.15 0.32 0.09 0.12 0.16 0.11nse 0.89 0.91 0.9 0.7 0.05 0.42 0.85 0.89 0.83 0.94

b)Modèle intégrant les données de glace de ECMWF :Bouée No 46035 46184 46005 51000 32012 69153 41041 41001 44139 62163Bias 0.07 m 0.0 m 0.05 m 0.07 m 0.1 m -0.43 m 0.01 m 0.06 m 0.21 m -0.12 mCorr 0.97 0.95 0.95 0.87 0.43 0.81 0.92 0.95 0.95 0.97std 0.95 1.01 0.88 0.71 0.7 0.64 0.93 0.96 1.04 0.99nrmse 5.48% 6.54% 8.14% 11.11% 17.19% 18.95% 8.96% 6.7% 8.25% 4.45%scatter_index 0.14 0.12 0.12 0.11 0.12 0.32 0.09 0.15 0.17 0.11nse 0.93 0.91 0.9 0.7 0.02 0.41 0.85 0.89 0.83 0.94c)Modèle Intégrant les données de glace de OSTIA :Bouée No 46035 46184 46005 51000 32012 69153 41041 41001 44139 62163Bias 0.09 m 0.0 m 0.05 m 0.07 m 0.1 m -0.43 m 0.01 m 0.06 m 0.2 m -0.12 mCorr 0.97 0.95 0.95 0.86 0.43 0.81 0.92 0.95 0.95 0.97std 0.95 1.01 0.88 0.71 0.73 0.64 0.92 0.96 1.02 0.99nrmse 5.64% 6.56% 8.14% 11.11% 17.19% 18.93% 8.96% 6.69% 8.08% 4.45%scatter_index 0.14 0.12 0.12 0.11 0.15 0.32 0.09 0.15 0.16 0.11nse 0.93 0.91 0.9 0.7 0.02 0.41 0.85 0.89 0.84 0.94

Table 4.2 – Résumé des statistiques de comparaison entre les modèles de vagues et les donnéesin-situ pour le mois de avril 2012.

En comparant les tableaux a), b) et c) du tableau 4.2 nous validons le fait que l’intégrationde la glace améliore l’efficacité du modèle de vagues. De plus, quel que soit la base de données deglace ECMWF ou OSTIA les améliorations d’efficacité du modèle sont équivalentes. Après avoirré-effectué ces manœuvres de validations sur d’autres périodes temporelles, nous avons encoreobtenue des résultats similaires pour les deux bases de données de glace.

Pour mettre en avant la différence de temps de calcul selon la base de données utilisée, nousavons effectué des simulations sur une période de deux mois (janvier-février 2014) avec un modèlede vagues global sans glace, puis en intégrant la glace de ECMWF au 0.5o et enfin avec la glaceissue de la base de données de OSTIA.

modèle global (01-02 / 2014) : Temps de calculSans intégration de glace 21h 14m 49sIntégration de la glace de ECMWF (0.5o) 19h 12m 47sIntégration de la glace de OSTIA (1/20o) 21h 24m 11s

Table 4.3 – Tableau des temps de calcul pour des modèle de glace avec et sans glace.

L’intégration des données de glace de la base de données OSTIA prend effectivement plus detemps que celle de ECMWF. La taille de la base de donnée en est la cause. On constate que letemps de calcul, lorsque l’on intègre la glace de ECMWF dans le modèle, est inférieur au tempsde calcul sans glace dans le modèle. Les zones où la couverture de glace est présente ne sont pasprises en compte dans les calculs de WaveWatch III (cf. 4.3 §2). En effet, dépassé une valeur seuilde concentration de glace (fixé à 0.25), les points du maillage ne sont pas pris en compte dans lecalcul.

4.5 Conclusion

Dans la suite nous utiliserons donc la base de donnée de ECMWF avec une résolution de0.5o. La raison est que notre maillage global est lui-aussi au demi-degré et que le forçage du

Page 34: Mise en place et paramétrage physique d’un modèle ... · externes (Noveo) et les outils de créations et de visualisation de statistiques et de rapports sont écrits en Python

4.5. CONCLUSION 33

vent au sein de la chaine de traitement de WaveWatch III d’Open Ocean se fait actuellementavec des données ECMWF à 0.5o. De plus, les temps de calculs pour cette base de données sontrelativement court. En ce qui concerne la base de données de OSTIA, avec un résolution de 0.05o

elle prendrait énormément de volume de stockage pour une faible amélioration du modèle et avecdes temps de calcul allongés. En effet, lorsque WaveWatch III intègre la glace au modèle, il doitla mettre à jour la glace pour chaque jour de la simulation ce qui prend plus ou moins de tempsselon le volume de données à traiter.

On a pu le constater à travers les statistiques du tableau 4.1, les statistiques des cartes 4.2et avec le tableau 4.3 des temps de calcul que l’intégration de la glace dans le modèle améliorel’efficacité du modèle. Pour bien comprendre l’impact que l’intégration de la glace a sur le modèlenous avons réalisé des cartes de différences de hauteurs significatives des vagues (Hs) entre lemodèle global sans intégration de glace et un modèle global avec de la glace. Nous avons traitéles résultats netCDF de WaveWatch III avec python en réalisant les maximums et les moyennesdes hauteurs significatives de vagues que nous avons redirigé vers des fichiers netCDF puis àl’aide du logiciel QGIS on a crée les cartes ci-dessous.

(a)

(b)

Figure 4.7 – Différences maximales (a) et moyennes (b) des hauteurs significatives de vagues(H

s

) pour la période janvier-février 2014. Les contours correspondent aux valeurs de la légende.

Sur la figures 4.7 on observe des différences principalement près des pôles. En effet, auxendroits où il y a une couverture de glace la propagation des vagues se stoppe, ce qui crée degrandes différences avec le modèle sans glace. Ces différences de hauteurs significatives de vaguespeuvent atteindre jusqu’à 3 mètres pour la période hivernal et jusqu’à 8 mètres pour la périodeestival, les différences maximales se situent aux endroits où il n’y avait initialement pas de merde glace dans le modèle. Pour les vagues se propageant près de la mer de glace on obtient desdifférences maximales de l’ordre de quelques dizaines de centimètres. Et enfin, loin des pôles cesdifférences sont de l’ordre du centimètre.

Page 35: Mise en place et paramétrage physique d’un modèle ... · externes (Noveo) et les outils de créations et de visualisation de statistiques et de rapports sont écrits en Python

4.5. CONCLUSION 34

Figure 4.8 – Différences maximales des hauteurs significatives de vagues (Hs

) sur la période dejuillet-août 2014. Les contours correspondent aux valeurs de la légende.

Figure 4.9 – Différences moyennes des hauteurs significatives de vagues (Hs

) sur la période dejuillet-août 2014. Les contours correspondent aux valeurs de la légende.

L’intégration de la glace a donc un réel impact sur le modèle de vague, de plus il améliorél’efficacité du modèle principalement dans l’hémisphère sud où la propagation des vagues n’estpas stoppé par les continents.

Page 36: Mise en place et paramétrage physique d’un modèle ... · externes (Noveo) et les outils de créations et de visualisation de statistiques et de rapports sont écrits en Python

Partie 5

Intégration des icebergs

Des études réalisées notamment par l’Ifremer et en particulier par Fabrice Ardhuin ont dé-montrées que les icebergs sont liés à de grandes anomalies de température de surface de la meret ils ont également un fort impact sur la dynamiques des vagues [13]. Après avoir constaté quela distribution spatiale des icebergs est fortement corrélée aux erreurs de modèle de vagues (enparticulier dans l’océan indien). Une première paramétrisation du blocage des vagues par lesicebergs a été mise en place et a enlevé les plus grandes erreurs dans leur modèle WaveWatchIII.

5.1 Principe

Les icebergs sont considérés comme une sous-grille d’obstacle en mouvement, en suivant letraitement (fixe) des sous-grilles d’île et le traitement (mobile) de la glace par Tolman [14]. Leseffets de diffraction sont négligés bien qu’ils aient probablement un rôle important dans la pra-tique, en particulier pour les petits icebergs. Pour les icebergs de forme carré on considère qu’ilsabsorbent entièrement le flux d’énergie des vagues qu’ils interceptent. On définit la proportion rdu flux d’énergie des vagues entrantes bloquées par les icebergs sur une unité de distance de pro-pagation (ici 1 km) et la longueur des icebergs dans la direction perpendiculaire à la propagation,par unité de distance de propagation. Pour un iceberg rectangulaire en position perpendiculaireà la direction de propagation, la superficie de l’iceberg est la longueur multiplié par la largeur.Pour calculé la proportion r nous utiliserons des données d’altimètres ; ces données ont été créeà l’issue du ’Projet Altiberg" (nous définissons ce projet et ses données dans la sous-section 5.2.1).

Pour de faibles densités d’iceberg ou pour de faibles distances de propagation, on néglige laprobabilité que deux icebergs peuvent être alignés dans la direction de propagation des vagues,et r est donné par le rapport

r(i, j, t) = C(i,j,t)W (i,j,t) (5.1)

de la fraction de la superficie de la mer couverte par les icebergs,

C(i, j, t) = P (i, j, t)A(i,j,t)ASW

(5.2)

et de la largeur effective de l’iceberg dans la direction de propagation des vagues

W = P (i, j, t)P

k C0(k)A0(k)Pk C0(k)

p(A0(k)

(5.3)

où k est l’indice de la taille de l’iceberg, C0(k) est le nombre d’icebergs dans la zone A0(k),P(i,j,t) est la probabilité de présence d’un iceberg, A(i,j,t) la superficie moyenne des icebergs etA

SW

la zone du champ de vision de l’altimètre. Nous prenons C0(k) constant en espace et entemps, c’est-à-dire indépendant de i, j et t de ce fait W est une constante qui dépend uniquementde la taille de l’histogramme d’iceberg. À la condition que les icebergs surviennent en un groupequi s’aligne préférentiellement dans une direction particulière relative à la direction dominantedes vagues, la décroissance de la vague est exponentielle, avec un taux spatial r qui a les unitésdu km�1. Dans le modèle de vagues, le flux d’énergie en chaque point de la grille est réduit par

35

Page 37: Mise en place et paramétrage physique d’un modèle ... · externes (Noveo) et les outils de créations et de visualisation de statistiques et de rapports sont écrits en Python

5.2. RECHERCHE DE DONNÉES D’ICEBERGS 36

exp(r�), où � est l’espacement de la grille en kilomètre.

La figure 5.1 tirée de l’article de M. Ardhuin [13] illustre l’impact de petits icebergs (situésdans l’hémisphère sud) sur la dynamique des vagues dans le modèle de vagues.

Figure 5.1 – Impact des icebergs dans les erreurs du modèle pour les hauteurs significativesdes vagues. L’image du haut montre l’erreur quadratique normalisée par rapport à des mesuresd’altimétries de H

s

. La seconde image montre la même erreur pour un modèle qui inclut lesicebergs. La dernière image montre les différences maximums, en mètre, pour l’année 2008, entreles hauteurs de vagues modélisés sans (H

s1) et avec (Hs2) icebergs (Ardhuin [13]).

5.2 Recherche de données d’icebergs

Dans le cas de l’intégration de la glace de mer, la recherche de données a été facilitée par lefait que le manuel indiquait explicitement le type de variable à transmettre a WaveWatch (desconcentrations de glace). Tandis que pour l’intégration des icebergs le manuel indique seulementde lui transmettre un coefficient d’amortissement induit par les icebergs dénoté par IBG. Enanalysant les équations (5.1), (5.2) et (5.3) on constate qu’en dehors de la distribution spatialedes icebergs, deux variables sont nécessaires pour calculer ce coefficients d’amortissement : lasuperficie des icebergs (A) et la probabilité de présence d’un iceberg (P ).

5.2.1 Projet AltibergLes gros icebergs (> 6 km) sont suivis et contrôlés régulièrement en utilisant les données

de diffusiomètres, tandis que pour les petits icebergs (< 2-3 km) qui sont plus difficiles à dé-tecter avec des diffusiomètres ont pu être détectés grâce à une méthode développer récemmentpar Tournadre [15], en effet dans ses travaux il a démontré que les petits icebergs peuvent êtredétectés en utilisant des données d’altimètres envoyant des formes d’ondes de 20 Hz. Le procédépermet également d’estimer la superficie de l’iceberg et la distribution du volume de glace surune base mensuelle.

L’objectif principal du projet Altiberg financé par le CNES est la création d’une base dedonnée d’iceberg couvrant la période de 1991 à aujourd’hui en utilisant les archives de formed’onde de l’ensemble des missions d’altimètries passé et présente existantes. Grâce à ce projet,des données mises à disposition sur le site du CERSAT [16] ont pu être récupérés. Ces données

Page 38: Mise en place et paramétrage physique d’un modèle ... · externes (Noveo) et les outils de créations et de visualisation de statistiques et de rapports sont écrits en Python

5.3. IMPLÉMENTATION 37

contiennent la localisation des icebergs, la probabilité de leur présence, la superficie moyenne desicebergs et le volume de glace. La figure 5.2 illustre les données citées précédemment

(a) Superficie moyenne (b) Probabilité de présence

(c) Volume de glace

Figure 5.2 – Visualisation des données d’iceberg provenant du projet Altiberg.

On constate que les données ne sont pas globales, elles ne concernent qu’une partie du globe :celle du bas de l’hémisphère sud entre les latitudes -40 S et -90 S. Malheureusement, aucunebase de données d’icebergs globale existe à ce jour. Nous allons donc intégrer les icebergs dansle modèle uniquement pour cette partie du globe.

5.2.2 Formatage des donnéesNous avons à présent des données sur les icebergs, cependant WaveWatch III n’intègre pas

directement ces données bruts (superficie, probabilité, localisation et volume) au modèle. Unformatage des données est nécessaire, notamment le calcul du coefficient ’IBG’ doit être effectué.

Grâce à l’aide de mon tuteur François Batifoulier, des interactions avec un ingénieur del’Ifremer (Mickael Accenci), des articles de M. Fabrice Ardhuin [13], [3] un calcul du coefficient’IBG’ a pu être établi. Le coefficient ’IBG’ est définit par le rapport de la fraction de la superficiede la mer couverte par les icebergs et de la largeur effective de l’iceberg dans la direction depropagation, c’est-à-dire r (cf. 5.1). Le coefficient ’IBG’ correspond à un pourcentage de surfaced’iceberg qui induit un amortissement des vagues. Il faut donc multiplier la superficie de l’icebergA(i, j, t) par la probabilité de présence de l’iceberg P (i, j, t) le tout multiplié par un facteur denormalisation relatif à la largeur effective de l’iceberg dans la direction de propagation des vagues(W 5.3). Le script python qui a permis le formatage de ces données est fourni en annexe E.

5.3 Implémentation

De façon similaire à l’intégration de la glace dans WaveWatch III, il est nécessaire d’utiliserle programme auxiliaire (ww3_prnc). Ce programme va lire les données d’un fichier d’entrée

Page 39: Mise en place et paramétrage physique d’un modèle ... · externes (Noveo) et les outils de créations et de visualisation de statistiques et de rapports sont écrits en Python

5.4. TESTS ET VALIDATIONS 38

pré-formaté (un netCDF avec des concentrations de glace et des coefficients d’atténuation desvagues par les icebergs) et les intègre au modèle de vagues grâce au fichier de définition du modèle(mod_def).

Une première approche pour intégrer les données d’iceberg au programme WaveWatch III aété d’implémenter les codes d’intégration d’icebergs indépendamment de l’intégration des don-nées de glace. C’est-à-dire d’intégrer la glace de mer puis intégrer les icebergs. Cette méthoden’a pas abouti car le programme WaveWatch III intègre la glace de mer et les icebergs en mêmetemps. Ce qui allège et facilite grandement l’implémentation des codes d’intégration de donnéesd’iceberg.

L’implémentation des icebergs dans le modèle de vagues s’est effectué sur le même modèleque pour l’intégration de la mer de glace, on a donc dû modifier les même codes sources :build_time_and_list.sh, make_input_ww3.sh et make_run_ww3.sh.

Encore une fois, c’est dans le setup que l’on indiquera si l’on veut insérer de la glace incluant lesicebergs dans le modèle, dans le script build_time_and_list.sh on ajoute un nouveau test pourle compteur de grille de glace (et d’iceberg) du modèle. On crée la routine build_iceberg_ww3.shqui est appelé dans le script make_input_ww3.sh va effectuer un formatage en découpant ouconcaténant les données de glace et d’iceberg à l’aide de commande NCO afin d’avoir des donnéescorrespondant aux dates de runs.

La différence majeur entre l’implémentation de la glace de mer et celle des icebergs se situedans le make_input_ww3.sh. En effet, c’est dans ce dernier que l’on fait appel au programmeauxiliaire (ww3_prnc) et que l’on construit au préalable son fichier d’entrée ou on lui transmetles variables à utiliser (longitude, latitude, concentration de glace et coefficient de réduction desvagues par les icebergs).

Listing 5.1 – bash version1 cat > ww3_prnc_ice.inp.$mod << EOF2 $ WAVEWATCH III Field preprocessor input file3 $ -------------------------------------------4 ’ISI ’ ’LL’ T T5 longitude latitude6 $Var_ice $Var_iceberg7 ’ice_and_iceberg.nc ’8 $9 $ End of input file

10 EOF

Le terme ’ISI’ caractérise le type de champs qu’on transmet et il signifie qu’on lui transmetdes concentration de glace qui incluent aussi des données d’icebergs (les coefficients ’IBG’). Leterme ’LL’ quant à lui signifie que les données sont maillés sur une grille rectiligne.

5.4 Tests et validations

Très peu de bouées sont présentes dans l’hémisphère sud de la planète, ce qui rend trèsdifficiles la validation du modèle global dans cette partie du monde. Avant de valider le modèle,nous allons visualiser l’impact de l’intégration des icebergs dans le modèle global de vagues. Pourcela, nous comparons les hauteurs significatives des vagues (Hs) entre les trois modèles : modèlesans glace, modèle avec glace et modèle avec glace et iceberg.

Page 40: Mise en place et paramétrage physique d’un modèle ... · externes (Noveo) et les outils de créations et de visualisation de statistiques et de rapports sont écrits en Python

5.4. TESTS ET VALIDATIONS 39

Figure 5.3 – Différences maximales des hauteurs significatives de vagues (Hs

) entre le modèlesans glace et le modèle intégrant la glace et les icebergs pour la période janvier 2014.

Sur la figure 5.3 on constate que les données de glace et d’iceberg sont bien intégrées aumodèle de vagues. En effet, on observe des différences de Hs dans les zones ou il y a de la merde glace et des "tâches" de différences de Hs qui sont dû à l’amortissement des vagues par lesicebergs. Pour confirmé cela, nous comparons les résultats du modèle intégrant la glace avec celuiintégrant glace et iceberg.

Figure 5.4 – Différences maximales des hauteurs significatives de vagues (Hs

) entre le modèleintégrant uniquement la glace et le modèle intégrant la glace et les icebergs pour la périodejanvier 2014.

La figure 5.4 confirme l’impact des icebergs dans le modèle global. La figure suivante

Page 41: Mise en place et paramétrage physique d’un modèle ... · externes (Noveo) et les outils de créations et de visualisation de statistiques et de rapports sont écrits en Python

5.4. TESTS ET VALIDATIONS 40

Figure 5.5 – Différences moyennes des hauteurs significatives de vagues (Hs

) entre le modèleintégrant uniquement la glace et le modèle intégrant la glace et les icebergs pour la périodejanvier 2014.

Page 42: Mise en place et paramétrage physique d’un modèle ... · externes (Noveo) et les outils de créations et de visualisation de statistiques et de rapports sont écrits en Python

Partie 6

Conclusion et perspectives

La mise en place du modèle de vagues global a pu être réalisé en partie grâce à la contri-bution des chercheurs de l’Ifremer et en particulier grâce au partage de leur maillage global etde leurs fichiers bathymétriques (.bot, .obs et .mask). Alors que ce modèle global présentait despics d’erreurs dans les résultats de hauteurs significatives, une paramétrisation des paramètresphysiques à permit de stabiliser le modèle. Le coefficient de réflexion à la côte a été suppriméde la configuration, en effet cela n’a pas de réel impact sur le modèle de vagues global au demidegré, car ce coefficient agit lorsqu’on s’approche des côtes. Avec une résolution de maillage aussifaible, le phénomène de réflexion à la côte n’est pas très bien pris en compte dans les calculs. Lemodèle a été validé à l’aide de données de bouées in situ, elles ont été récupérées puis formatéesau format netCDF pour simplifier leurs utilisations.

Une amélioration du modèle global a été réalisé en incorporant, dans un premier temps, desdonnées de glace dans le modèle. Pour permettre leur intégration, ces données ont dû être traitépuis formatées au format netCDF. Une amélioration de la qualité du modèle en a découlé, princi-palement dans les zones proches des pôles, i.e les endroits où la mer de glace est présente. Ensuite,toujours dans l’optique d’améliorer le modèle, l’intégration des icebergs dans WaveWatch III aété réalisé. Les coefficients d’amortissement des vagues induit par les icebergs ont dû être calculésà partir de données d’altimétrie. La construction d’une base de données contenant ce coefficientet la concentration de glace a permis l’intégration de la glace de mer, mais aussi des icebergsdans le modèle. Cependant, la validation du modèle intégrant les icebergs doit être approfondit,en effet le manque de données in situ a rendu difficile cette validation et pour l’instant l’uniquemoyen de comparer les résultats est de comparer des hauteurs significatives moyennées sur uneannée.

Ce stage de fin d’étude au sein d’Open Ocean m’a permis de découvrir et de travailler dansle domaine de l’océanographie mais aussi dans le domaine des énergies marines renouvelables.L’expertise de mes encadrants docteurs en hydrodynamique m’a permis de mieux comprendrela physique liée à la modélisation des vagues. J’ai pu mettre en pratique mes compétences ac-quises au cours de ma formation et en développer de nouvelles, notamment en script Shell, ensimulation numérique et en programmation orienté objet avec le langage python. De plus, en éla-borant des algorithmes de traitements de données, j’ai progressivement rendu mes programmesplus efficaces en adoptant de meilleurs méthodes de travail. Ce stage chez Open Ocean m’a éga-lement permis de découvrir le monde des start-up et le travail en équipe au sein d’une PME.Cela demande une bonne communication entre salariés, facilité par la bonne ambiance et parles réunions hebdomadaire dans lesquelles on a pu suivre la progression des projets de l’entreprise.

D’un point de vue personnel, il m’a permis de dévoiler et de confirmer mes intérêts pourl’océanographie physique, les énergies marines renouvelables et la simulation numérique. J’espèreavoir l’opportunité de poursuivre dans cette voie en orientant mes recherches d’emploi.

41

Page 43: Mise en place et paramétrage physique d’un modèle ... · externes (Noveo) et les outils de créations et de visualisation de statistiques et de rapports sont écrits en Python

Annexe A

Scores

Les "scores" sont des indicateurs de performance d’un modèle, ils permettent à la fois de quantifierles performances d’un modèle, mais aussi de comparer différents modèles entres eux.

Bias : Avec m le vecteur de données modélisées, et r le vecteur de données réelles, le biais s’exprimeainsi :

Bias(m, r) = m� r (A.1)Il s’agit donc simplement, de l’écart entre les moyennes des deux jeux de données. Sa valeur ren-seigne sur la sur/sous évaluation du modèle par rapport aux données observées, c’est-à-dire latendance des valeurs simulées à être supérieures ou inférieures aux mesures. C’est pourquoi lebiais est optimal à 0.

Coefficient de corrélation (Corr) : Il exprime le degré d’ajustement entre les mesures et le modèle.Plus la valeur absolue de ce coefficient est proche de 1 plus ils sont corrélés. On définit le coefficientde corrélation ainsi :

Corr(m, r) =

NX

n=1

(mn � m) · (rn � r)

vuutNX

n=1

(mn � m)2 ·

vuutNX

n=1

(rn � r)2(A.2)

CRMSE : La "Centered Root Mean Squared Error" est défini par :

CRMSE(m, r) =

s1N

NPn=1

[(mn � m)� (rn � r)]2 (A.3)

La CRMSE est une RMSE à laquelle on enlève l’erreur liée au biais. Tout comme la RMSE, elleest optimale à 0.

L’écart-type (std) : L’écart type ("standard deviation") représente la dispersion des données, on lacalcule ainsi :

� =

s1N

NPn=1

(rn � r)2 (A.4)

Indice de dispersion : Ou "Scatter Index" (en anglais) définit un coefficient de dispersion des valeurspar rapport aux données mesurées. On utilise le calcul de RMSE que l’on pondère avec la valeurmoyenne des données mesurées afin d’établir une relation entre l’amplitude et la valeur moyenne.

SI (m, r) = RMSE(m,r)r

(A.5)

NSE (efficacité du modèle) : Ou "Nash-Sutcliff Efficiency" est une grandeur sans dimension quidétermine la proportion d’erreur du modèle par rapport à la variabilité des données observées.NSE doit appartenir à [0 ;1] pour que le niveau de performance soit acceptable. D’un point de vueplus restrictif on considère que si :

— NSE > 0.65 le modèle est excellent

— 0.5 < NSE < 0.65 le modèle est très bon

42

Page 44: Mise en place et paramétrage physique d’un modèle ... · externes (Noveo) et les outils de créations et de visualisation de statistiques et de rapports sont écrits en Python

43

— 0.2 < NSE < 0.5 le modèle est bon

— 0 < NSE < 0.2 le modèle est mauvais.

On définit le NSE par :

NSE(m, r) = 1�NP

n=1(rn�mn)2

NPn=1

(rn�r)2(A.6)

RMSE (Root Mean Square Error) : La variable RMSE qui est en fait l’erreur quadratique est unmoyen précis de mesure de l’amplitude des écarts entre les valeurs prédites par le modèle et lesvaleurs observées. Le modèle est d’autant plus performant que les erreurs termes à termes sontfaibles. (Plus RMSE est proche de 0 plus le modèle est performant). On calcule cette moyenne dela façon suivante :

RMSE(m, r) =

s1N

NPn=1

[mn � rn]2 (A.7)

NRMSE (Normalized Root Mean Square Error) : Erreur quadratique moyenne normalisée.

NRMSE(m, r) = 100 ⇤

s1N

NPn=1

[mn � rn]2/nval (A.8)

Avec nval le nombre de valeur observée. Le résultat est en pourcentage

Page 45: Mise en place et paramétrage physique d’un modèle ... · externes (Noveo) et les outils de créations et de visualisation de statistiques et de rapports sont écrits en Python

Annexe B

Fichier d’entrée du préprocesseur degrille (Grid input ww3_grid.inp)

Voici le le fichier que l’on transmet au préprocesseur de grille de WaveWatch III (compilateur). Laparamétrisation qui s’y trouve est celle du modèle de vague

$ -------------------------------------------------------------------- $$ WAVEWATCH III Grid preprocessor input file $$ -------------------------------------------------------------------- $$ Grid name (C*30, in quotes)$

’Global 0.5 deg wave grid ’$$ Set spectral variables --------------------------------------------- $$$ - Facteur d’incrémentation de la fréquence,$ - première fréquence (HZ),$ - le nombre de fréquences (wavenumber) et la direction,$ - compensation relative de la première direction en terme d’incrément$ directionnel [-0.5, 0.5].$

1.1 0.0373 32 24 0.$$ Set model flags ---------------------------------------------------- $$$ - FLDRY : Dry run ( Entré/Sortie uniquement, aucun calcul).$ - FLCX, FLCY : Active les composantes X et Y de propagation.$ - FLCTH, FLCK : Active les changements de direction et du nombre d’onde.$ - FLSOU : Active les termes sources.$

F T T T T T$$ Set time steps ----------------------------------------------------- $$$ - Pas de temps global maximum (secondes),$ - Pas de temps CFL maximal pour x-y et k-theta (secondes),$ - pas de temps minimum du terme source (secondes).$

2400. 480. 300. 10.$$ Start of namelist input section ----------------------------------- $$$ Les paramètres réglables pour les termes souces, les schémas de propa-$ gations et pour les valeurs numériques$&MISC CICE0 = 0.25, CICEN = 0.75, LICE = 40000, FLAGTR = 4 /&REF1 REFFREQ=0, REFSLOPE=0.0,REFCOAST=0.05, REFSUBGRID = 0.05, REFICEBERG=0.4 /&SBT4 BOTROUGHMIN = 0.0400 /

44

Page 46: Mise en place et paramétrage physique d’un modèle ... · externes (Noveo) et les outils de créations et de visualisation de statistiques et de rapports sont écrits en Python

45

&SIN4 BETAMAX = 1.45 /$END OF NAMELISTS$$ Grids caracterisation ---------------------------------------------- $$RECT T SMPL720 31730.00 30.00 60.00-180.0000 -78.0000 1.00-0.10 2.50 21 0.001000 1 1 ’(....)’ NAME ’glob30m.bot’

22 0.010000 1 1 ’(....)’ NAME ’glob30m.obst’23 1 1 ’(....)’ NAME ’glob30m.mask’

$0. 0. 0. 0. 0

$ -------------------------------------------------------------------- $$ End of input file $$ -------------------------------------------------------------------- $

Page 47: Mise en place et paramétrage physique d’un modèle ... · externes (Noveo) et les outils de créations et de visualisation de statistiques et de rapports sont écrits en Python

Annexe C

Méthode python write_to_ww3

Méthode python qui, à partir de donnée bathymétrique, sauvegarde les données dans des fichiersdestinés au préprocesseur de grille de WaveWatch III (ww3_grid). Cette méthode fait partie de la classe’Bathymetry’, développée en interne, elle permet de gérer, modifier et formater des données bathymé-triques de différents formats (Shapefile, ASCII et netCDF).

Listing C.1 – python version1 def write_to_ww3(self , file_path_out , model_name ):2 """ Write the data to ww3 files (.bot , .obs , .mask and ww3_grid.inp.model)3 Arguments:4 file_path_out -- path of output files5 model_name (str)-- name of output ww3 files (.bot , .mask , .obs)6 xres , yres -- Resolution of the x and y axis wanted for the grid7 xmin , ymin , xmax , ymax -- define the new zone8 """9 lon_var , lat_var = self.get_axis ()

10 lon , lat = np.meshgrid(lon_var [:], lat_var [:])11 h0 = self.data [:]#.ravel ()12 h0[h0 >=0.] = 999.13 l1 ,l2 = np.shape(self.data [:])14 xmin , ymin , xmax , ymax = self.get_extent ()15 if xmin >0 :16 L_lon = xmax -xmin17 else:18 L_lon = abs(xmin) + xmax1920 if ymin >0 :21 L_lat = ymax -ymin22 else:23 L_lat = abs(ymin) + ymax24 xres =1/ round(l2/L_lon)25 yres =1/ round(l1/L_lat)2627 # Write files for WWIII:28 if os.path.exists(file_path_out+’/’+model_name ):29 i=030 while os.path.exists(file_path_out+’/’+model_name) is True:31 if i==0:32 model_name = model_name+’_’+str(i)33 else:34 model_name = model_name [:-2]+’_’+str(i)35 i +=136 os.makedirs(file_path_out+’/’+model_name)37 else:38 os.makedirs(file_path_out+’/’+model_name)3940 file_bot = file_path_out+’/’+model_name+’/’+model_name+’.bot’41 file_obs = file_path_out+’/’+model_name+’/’+model_name+’.obs’42 file_mask = file_path_out+’/’+model_name+’/’+model_name+’.mask’43 file_data = file_path_out+’/’+model_name+’/ww3_grid.inp.’+model_name

46

Page 48: Mise en place et paramétrage physique d’un modèle ... · externes (Noveo) et les outils de créations et de visualisation de statistiques et de rapports sont écrits en Python

47

4445 with open(file_bot , ’w’) as swriter_bot:46 for i in range(l1):47 line=[ ’% 12.06f’%(row) for row in h0[i,:]]48 swriter_bot.write(’ ’.join(line)+ ’\n’)4950 h01 = np.fabs(h0)51 h0_obs = h01*052 swriter_obs = csv.writer(open(file_obs ,’w’),delimiter=’ ’)53 for i in range(l1):54 line=[ ’%d’%(h0) for h0 in h0_obs[i,:]]55 swriter_obs.writerow(line)56 swriter_obs.writerow(’’)57 for i in range(l1):58 line=[ ’%d’%(h0) for h0 in h0_obs[i,:]]59 swriter_obs.writerow(line)6061 h0_mask = h0*0+162 h0_mask [0,:] = 263 h0_mask [-1,:] = 264 h0_mask [:,0] = 265 h0_mask [:,-1] = 266 h0_mask[h0 ==999.] = 06768 swriter_mask = csv.writer(open(file_mask ,’w’),delimiter=’ ’)69 for i in range(l1):70 line=[ ’%d’%(h0) for h0 in h0_mask[i,:]]71 swriter_mask.writerow(line)7273 # Generation du preprocesseur de grille pour des fichiers d’entre74 with open(file_data , ’w’) as swriter_grid:75 swriter_grid.write(’$ -------------------------------------- $\n’)76 swriter_grid.write(’$ WWIII Grid preprocessor input file $\n’)77 swriter_grid.write(’$ -------------------------------------- $\n’)78 swriter_grid.write(’$\n’)79 swriter_grid.write(’ \’GRID NAME ’+str(xres)+’ degree grid \’\n’)80 swriter_grid.write(’$\n’)81 swriter_grid.write(’$ 1.1 0.04118 25 24 0.\n’)82 swriter_grid.write(’ 1.1 0.04118 25 36 0.\n’)83 swriter_grid.write(’$ 1.1 0.0373 32 36 0.\n’)84 swriter_grid.write(’$\n’)85 swriter_grid.write(’ F T T T F T\n’)86 swriter_grid.write(’$\n’)87 swriter_grid.write(’ 1800. 800. 1800. 30. \n’)88 swriter_grid.write(’$ 2400. 480. 300. 10. \n’)89 swriter_grid.write(’$\n’)90 swriter_grid.write(’ &SBT1 GAMMA = -0.067 /\n’)91 swriter_grid.write(’ &MISC CICE0 = 0.33, CICEN = 0.67, FLAGTR = 0 /\n’)92 swriter_grid.write(’$ REFSUBGRID= 0.05 /\n’)93 swriter_grid.write(’END OF NAMELISTS\n’)94 swriter_grid.write(’$\n’)95 swriter_grid.write(’$\n’)96 swriter_grid.write(’ \’RECT\’ T \’NONE\’\n’)97 swriter_grid.write(’$ \’CURV\’ T \’NONE\’\n’)98 swriter_grid.write(’ ’+str(l2)+’ ’+str(l1)+’\n’)99 swriter_grid.write(’ ’+str(xres)+’ ’+str(yres)+’ 1.\n’)

100 swriter_grid.write(’ ’+str(xmin)+’ ’+str(ymin)+’ 1.\n’)101 swriter_grid.write(’ -0.1 2.50 20 1. 1 1 \’(’+str(l2)+’F13.6)\’ \102 \’NAME\’ \’’+model_name+’.bot\’\n’)103 swriter_grid.write(’$ 21 1. 1 1 \ ’(....)\ ’ \’NAME\’ \

\’’+model_name+’.obs\’\n’)104 swriter_grid.write(’ 21 1 1 \ ’(....)\ ’ \’NAME\’ \

\’’+model_name+’.mask\’\n’)105 swriter_grid.write(’$\n’)106 print(file_data)

Page 49: Mise en place et paramétrage physique d’un modèle ... · externes (Noveo) et les outils de créations et de visualisation de statistiques et de rapports sont écrits en Python

Annexe D

make_input_ww3.sh

Voici une partie du code du make_input_ww3.sh, elle représente d’abord la phase précédent la com-pilation, c-à-d l’écriture du fichier d’entrée du préprocesseur (lignes 38 à 47) puis la phase de compilationen elle-même (ligne 59).

Listing D.1 – bash version1 # ice2 if [[ "$PRNC" != ’no’ ]] && [[ "$ice" != ’no’ ]]; then3 echo ’+---------------------------+’4 echo ’| Input ice data in netcdf |’5 echo ’+---------------------------+’67 # step 0: we begin by looping on models8 j=09 for mod in $mods_run

10 do11 gridice=‘expr ${grid_ice[$j]}‘12 sourceice=‘expr ${listicesources[$j]}‘13 gn=‘expr $j + 1‘14 ((j++))1516 # step 1: building ice from netCDF file17 # >>> from a single file18 if [[ $sourceice == ’file ’ ]]; then19 if [[ -L ice.nc ]]; then20 unlink ice.nc # remove existing linked file21 fi22 ln -s ${ice_file} ice.nc # link new file23 Var_ice=$name_ice_var_infile2425 # >>> from an ice dataset26 elif [[ $sourceice == ’ECMWF ’ ]]; then27 echo ’building ice file for ’ $mod28 build_ice_ww3.sh $sourceice $mod29 Var_ice=$name_ice_var_infile3031 elif [[ $sourceice == ’no ’ ]]; then32 echo $mod ’is run without ice ’33 else34 echo ’bad choice for ice source ’ $sourceice35 exit36 fi3738 cat > ww3_prnc_ice.inp.$mod << EOF39 $ WAVEWATCH III Field preprocessor input file40 $ -------------------------------------------41 ’ICE ’ ’LL ’ T T42 longitude latitude43 $Var_ice44 ’ice.nc’

48

Page 50: Mise en place et paramétrage physique d’un modèle ... · externes (Noveo) et les outils de créations et de visualisation de statistiques et de rapports sont écrits en Python

49

45 $46 $ End of input file47 EOF4849 if [[ $sourceice != ’no’ ]]; then50 echo ’preparation des ww3_prnc for ice with source ’$ice_sources ’ \51 and for ’$mod ’ model ’52 cp ww3_prnc_ice.inp.$mod ww3_prnc.inp53 ln -s mod_def.$mod mod_def.ww35455 if [[ $sourceice != ’file ’ ]]; then56 echo ’lien vers le ice.nc ’57 ln -s $path_w/ice.nc.$mod ice.nc58 fi59 echo " Screen ouput routed to $path_o/ww3_prnc_ice.$mod.out"60 $path_e/ww3_prnc > $path_o/ww3_prnc_ice.$mod.out61 mv ice.ww3 ice.$gridice ’_g’$gn62 cp ice.$gridice ’_g’$gn $path_bin/’ice.’$gridice ’_g ’$gn ’_’$tstarto -$tend63 rm -f ww3_prnc_ice.inp.$mod ww3_prnc.inp mod_def.ww3*64 unlink ice.nc65 fi66 done6768 elif [[ "$ice" == ’no’ ]]69 echo ’+--------+’70 echo ’| NO ICE |’71 echo ’+--------+’72 fi

Page 51: Mise en place et paramétrage physique d’un modèle ... · externes (Noveo) et les outils de créations et de visualisation de statistiques et de rapports sont écrits en Python

Annexe E

formatage des données d’icebergs

Le script ci-dessous a été utilisé pour créer et formater une base de donnés de glace et d’icebergs.

#!/usr/bin/python# -*- coding: utf-8 -*-1#========================================================================================# M.Accensi - J.Tournadre - Altiberg project 2012/2013# Adapted in python for netCDF input by Cedric Jourdain#========================================================================================# This function create an netCDF file for WW3 use## It convert iceberg surface in km**2 on a latlon grid to a purcentage of iceberg surface## USAGE : python3 make_iceberg_nc_global.py sat date# date must have the shape YYYY and it have to be an integer# sat could be topex, envisat, ers1, ers2, jason1, jason1b, jason2, cryosat#========================================================================================import netCDF4import sysimport osimport numpy as npimport stats.utils.compass_variable as cvimport Writefrom datetime import datetime, timedelta

# Variables initializationsat = sys.argv[1]date= sys.argv[2]src_dir_ice=’/mnt/nfs/home/cedricjo/ecmwf_ice_copy/’src_dir_iceberg=’/mnt/nfs/home/cedricjo/altiberg/v1/data/’+sat+’/grid/geographic/’lat=np.arange(-90, 90.5, 0.5)lon=np.arange(-180,180,0.5)

# Loop on years for date in range(1991,2015):# Loading the iceberg file (yearly)iceberg_file=src_dir_iceberg+’prod_latlon_’+sat+’_’+str(date)+’.nc’nc=netCDF4.Dataset(iceberg_file)

# Loading iceberg variablesice_area=nc.variables[’ice_area’][:]probability=nc.variables[’probability’][:]ice_volume=nc.variables[’ice_volume’][:]time=nc.variables[’time’][:]time_h=netCDF4.num2date(nc.variables[’time’][:],nc.variables[’time’].units)

# Loop on monthsfor m in range(1,13):

im_min=time_h[m-1].month # wanted monthim_max=time_h[-1].month # last monthice_area[:,:,30]=0 # removes spurious values at 40 S.

50

Page 52: Mise en place et paramétrage physique d’un modèle ... · externes (Noveo) et les outils de créations et de visualisation de statistiques et de rapports sont écrits en Python

51

# Loading the ice file (monthly)if m<10:

ice_file=src_dir_ice+str(date)+’/sea-ice_cover_analysis_ECMWF_ERA-INTERIM_’\+str(date)+’0’+str(m)+’_180W-180E.nc’

else:ice_file=src_dir_ice+str(date)+’/sea-ice_cover_analysis_ECMWF_ERA-INTERIM_’\

+str(date)+’’+str(m)+’_180W-180E.nc’nc1=netCDF4.Dataset(ice_file)

# Loading ice variablesci=nc1.variables[’ci’][:] # ice concentration variabletime1=nc1.variables[’time’][:] # time in "hours since 1900-01-01 00:00:0.0"date1=netCDF4.num2date(nc1.variables[’time’][:],nc1.variables[’time’].units)new_time=netCDF4.date2num(date1,"days since 1990-01-01T00:00:00Z")id_min=date1[0].day # first dayid_max=date1[-1].day # last daylat1=nc1.variables[’latitude’][:]lon1=nc1.variables[’longitude’][:]

# Build iceberg data (the whole construction of ibg is in the loop for more clarity)# -> Define regular gridnx=720ny=361nlo=181nla=51# -> Defines histogram of iceberg sizesXX=np.linspace(0.1,4,40);# -> fit function to observed histogramYY=800.*np.exp(3.*(-XX+0.5))+300.*np.exp((-XX+0.5));# -> Normalization to get total areaTA=(YY*XX).sum(axis=0); #TA=sum(YY.*XX);# -> Normalized size distribution (number per unit area)yy=YY/TA# -> Normalization factor for lengths per unit area: decay rate 1/10 km)fac=((yy*np.sqrt(XX)).sum(axis=0))*10. #fac=sum(yy.*sqrt(XX))*10.;

# -> if last data unvailableif len(probability[:,1,1])<im_max:

im_max=len(probability[:,1,1])

# -> build ibg variableibg=np.zeros((id_max,nx,ny),float)S=np.zeros((nx,ny),float)for i in range(0,720,1):

for j in range(0,102,1):S[i,j]= np.array(ice_area[m-1,(i+1)//4,j//2]*probability[m-1,(i+1)//4,j//2])*fac

for i in range(id_min-1,id_max,1):ibg[i]=S

ibg[np.isnan(ibg)]=0

# Permute ibg longitude variable from [0;360] to [-180:180]mid = np.shape(lon)[0]//2 # mid=size(lon,1)/2;ibg1=ibg[:,0:mid,:] #ibg1=ibg(1:1:mid,:,:);ibg2=ibg[:,mid:,:] #ibg2=ibg(mid+1:1:end,:,:);ibg3=np.concatenate((ibg2,ibg1),axis=1) #ibg=cat(1,ibg2,ibg1);

# Permute ice concentration latitude variable from [90;-90] to [-90:90]ci1=np.zeros(np.shape(ci))for i in range(len(ci[0,:,0])-1,0,-1):

ci1[:,360-i,:]=ci[:,i,:]

# Open filesdir_out=’/mnt/nfs/home/cedricjo/WORK/ice_iceberg_database/’+satif not os.path.isdir(dir_out):

Page 53: Mise en place et paramétrage physique d’un modèle ... · externes (Noveo) et les outils de créations et de visualisation de statistiques et de rapports sont écrits en Python

52

os.mkdir(dir_out)dir_out=dir_out+’/’+str(date)if not os.path.isdir(dir_out):

os.mkdir(dir_out)

if m<10:netcdf_out=dir_out+’/sea-ice_ECMWF_ERA-INTERIM_iceberg_altiberg_’+sat+’_’+str(date)+’0’\

+str(m)+’_180W-180E.nc’else:

netcdf_out=dir_out+’/sea-ice_ECMWF_ERA-INTERIM_iceberg_altiberg_’+sat+’_’+str(date)\+str(m)+’_180W-180E.nc’

# Writes file to disk for use in the wave model with lon, lat, time, ibg and ci variablestime=time.astype(np.int)compassV = cv.CompassVariable(varname=’time’, vardims=(’time’,), vararray=np.array(new_time))compassV.add_attribute(’units’,’days since 1990-01-01T00:00:00Z’)compassV.add_attribute(’long_name’,’julian day (UT)’)compassV.add_attribute(’standard_name’,’time’)compassV.add_attribute(’conventions’,’Relative julian days’)compassV.add_attribute(’axis’,’T’)Write.write_variable_to_netcdf(compassV,netcdf_out,verbose=False)

compassV = cv.CompassVariable(varname=’longitude’, vardims=(’longitude’,), vararray=np.array(lon))compassV.add_attribute(’long_name’,’longitude’)compassV.add_attribute(’valid_min’,lon[0])compassV.add_attribute(’valid_max’,lon[-1])compassV.add_attribute(’units’,’degree_east’)compassV.add_attribute(’axis’,’X’)Write.write_variable_to_netcdf(compassV,netcdf_out,flagappend=True,verbose=False)

compassV = cv.CompassVariable(varname=’latitude’, vardims=(’latitude’,), vararray=np.array(lat))compassV.add_attribute(’long_name’,’latitude’)compassV.add_attribute(’units’,’degree_north’)compassV.add_attribute(’valid_min’,lat[0])compassV.add_attribute(’valid_max’,lat[-1])compassV.add_attribute(’axis’,’Y’)Write.write_variable_to_netcdf(compassV,netcdf_out,flagappend=True,verbose=False)

compassV = cv.CompassVariable(varname=’ibg’, vardims=(’time’,’longitude’,’latitude’),\vararray=np.array(ibg3))

compassV.change_dimensions((’time’,’latitude’,’longitude’))compassV.add_attribute(’long_name’,’iceberg induced damping’)compassV.add_attribute(’sensor’,sat)compassV.add_attribute(’units’,’m-1e10**4’)compassV.add_attribute(’valid_min’,0)compassV.add_attribute(’valid_max’,100)compassV.add_attribute(’_FillValue’,’-32767’)compassV.add_attribute(’content’,’TYX’)compassV.add_attribute(’associates’,’time latitude longitude’)Write.write_variable_to_netcdf(compassV,netcdf_out,flagappend=True,verbose=False)

compassV = cv.CompassVariable(varname=’ci’, vardims=(’time’,’latitude’,’longitude’),\vararray=np.array(ci1))

compassV.add_attribute(’long_name’,’Sea-ice cover’)compassV.add_attribute(’standard_name’,’Sea-ice concentration’)compassV.add_attribute(’valid_min’,0)compassV.add_attribute(’valid_max’,1)compassV.add_attribute(’content’,’TYX’)compassV.add_attribute(’_FillValue’,’-32767’)compassV.add_attribute(’associates’,’time latitude longitude’)Write.write_variable_to_netcdf(compassV,netcdf_out,flagappend=True,verbose=False)

#=======================================================================

Page 54: Mise en place et paramétrage physique d’un modèle ... · externes (Noveo) et les outils de créations et de visualisation de statistiques et de rapports sont écrits en Python

Bibliographie

[1] http ://www.openocean.fr/[2] Hendrik L. Tolman, "User manual and system documentation of WAVEWATCH III version 4.18",

march 2014[3] Fabrice Ardhuin, Rudy Magne et Jean-François Filipot, "Observation et modélisation numérique des

états de mer ou vers une description réaliste de la surface de marine incluant les déferlements"[4] Leo H. Holthuijsen, "Waves in Oceanic and Coastal Waters" Cambridge Univ. Press, 2007, p50-55[5] http ://www.previmer.org/[6] Hendrik L. Tolman and Nico Booij "Modeling wind wave using wavenumber-direction spectra and a

variable wavenumber grid", The Global Atmosphere and Ocean system, Vol. 6, pp.295-309, 1998[7] Whitham, G. B., 1965 : A general approach to linear and non-linear dispersive waves using a La-

grangian. J. Fluid Mech., 22, 273–283.[8] Mei, C. C., 1983 : The applied dynamics of ocean surface waves. Wiley, New York, 740 pp.[9] Komen, G. J., S. Hasselmann and K. Hasselmann, 1984 : On the existence of a fully developed

wind-sea spectrum. J. Phys. Oceanogr., 14, 1,271–1,285.[10] http ://wwz.ifremer.fr/[11] Ardhuin F., B. Chapron and F. Collard (2009a). " Observation of swell dissipation across oceans."

Geophys. Res. Lett.. 36 :L06607.[12] Ardhuin F., A. Roland (2012). "Coastal reflection, directional spread, and seismoacoustic noises

sources." J. Geophys. Res.117 :16.[13] Ardhuin F., Jean Tournadre, Pierre Queffeulou, Fanny Girard-Ardhuin, Fabrice Collard, “Obser-

vation and parameterization of small icebergs : Drifting breakwaters in the southern ocean”, OceanModelling 39 (2011) p405–410, 10 May 2011

[14] Tolman, H.L., 2003. "Treatment of unresolved islands and ice in wind wave models." Ocean Modell.5, 219–231.

[15] Tournadre, J., Whitmer, K., Girard-Ardhuin, F., 2008. "Iceberg detection in open water by altimeterwaveform analysis". J. Geophys. Res. 113 (7), C08040.

[16] cersat.ifremer.fr

53