Vous êtes sur la page 1sur 54

Université de Rennes 1

Mise en place et paramétrage physique


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

Tuteur académique :
Eric Darrigrand
Auteur :
Cédric Jourdain Tuteurs en entreprise : François
Batifoulier
Youen Kervella

8 septembre 2015
Remerciements

Je remercie dans un premier temps, toute l’équipe pédagogique de l’université de Rennes 1


et les intervenants professionnels responsables du Master mention modélisation spécialité calcul
scientifique 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 Rennes


1 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 a
su 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 et
qui ont su me supporter, me conseiller, m’aider et m’accompagner tout au long de cette aventure
Brestoise.

1
Table des matières

Glossaire 4

Introduction 5

1 Open Ocean 6
1.1 L’entreprise . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
1.2 Le personnel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
1.3 Les services . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
1.3.1 Metocean Analytics . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7

2 WaveWatch III 9
2.1 Principe . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
2.2 Fonctionnement . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
2.3 Conception du programme . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
2.4 Chaine de traitement . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
2.5 Fichier d’entrée du préprocesseur de grille . . . . . . . . . . . . . . . . . . . . . . 14
2.5.1 Discrétisation spectrale . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
2.5.2 Discrétisation temporelle . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
2.5.3 Paramètres réglables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
2.5.4 Génération automatique de grille . . . . . . . . . . . . . . . . . . . . . . . 15

3 Mise en place d’un modèle global 17


3.1 Problématique . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
3.2 Présentation du modèle . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18
3.3 Stabilisation du modèle de vagues global . . . . . . . . . . . . . . . . . . . . . . . 19
3.3.1 Influence de la discrétisation spectrale . . . . . . . . . . . . . . . . . . . . 19
3.3.2 Influence des paramètres physiques (namelists/switchs) . . . . . . . . . . 22
3.4 Validation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23
3.4.1 Données de bouées in-situ . . . . . . . . . . . . . . . . . . . . . . . . . . . 23
3.4.2 Cartes de Validation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24

4 Intégration de la glace 26
4.1 Documentation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26
4.2 Recherche de données de glace . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27
4.2.1 HadISST . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27
4.2.2 MyOcean . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27
4.2.3 ECMWF . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28
4.3 Implementation des données de glace . . . . . . . . . . . . . . . . . . . . . . . . 28
4.4 Tests et validation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29
4.5 Conclusion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32

5 Intégration des icebergs 35


5.1 Principe . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35
5.2 Recherche de données d’icebergs . . . . . . . . . . . . . . . . . . . . . . . . . . . 36
5.2.1 Projet Altiberg . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36
5.2.2 Formatage des données . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37
5.3 Implémentation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37
5.4 Tests et validations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38

2
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


Glossaire

Altimètre : Un altimètre est un instrument de mesure permettant de déterminer la distance


verticale entre un point et une surface de référence. L’altitude est mesurée par rapport
au niveau de la mer, la hauteur par rapport au niveau du sol local et le niveau de vol
par rapport à une surface isobare théorique. Selon la fréquence qu’il émet, il est possible
d’extrapoler un grand nombre de données.
Backtesting : Le backtesting (hindcast en anglais) ou test rétro-actif de validité consiste à tester
la pertinence d’une modélisation ou d’une stratégie en s’appuyant sur un large ensemble de
données historiques réelles. Dans le domaine de la modélisation du climat, le backtesting
joue un rôle particulièrement important en raison de l’ampleur et de la durée des événements
climatiques. L’utilisant des données historiques pour tester de nouvelles idées et théories
permet 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ées
tabulaires sous forme de valeurs séparées par des virgules.
ECMWF Centre européen pour les prévisions météorologiques à moyen terme
Hs : 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-threading
sont 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 tableaux
de données. Cet en-tête contient aussi une liste arbitraire de métadonnées se présentant
sous la forme d’attribut de type nom/valeur. Les tableaux de données sont linéaires et sont
stockés de manière simple de façon à permettre un accès efficace à un sous-ensemble d’un
tableau.
NCEP : Le National Centers for Environmental Prediction (NCEP) est un regroupement de
centres 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 moins
profondes, 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 humain
et un programme.

4
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 de
météorologie de Casablanca au Maroc qui a mis au point une méthode spectrale permettant de
caractériser les états de mer (Gelci et coll. 1957). Aujourd’hui, après de nombreuses années de
recherche et de développement différents modèles numériques de vagues existent : WaveWatch
III, Sawn, Tomawac etc.

La modélisation de ces états de mer a trouvé des applications dans des domaines très variées
tels 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 vagues
pour 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 et
l’optimisation de la configuration d’un modèle global de vagues avec le logiciel WAVEWATCH
III en s’appuyant sur un modèle existant couvrant le nord de l’océan Atlantique. La seconde
partie de mon stage sera l’amélioration de cette configuration globale en intégrant la glace et les
icebergs dans le modèle numérique.

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.

5
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 de
recherche et développement à Brest [1]. Open Ocean, dont l’histoire débute en 2009, est une
société spécialisée dans la modélisation numérique des océans (vagues, courants, sédiments) pour
tout type de construction en mer : éolien offshore, énergies marines renouvelables ou encore pour
l’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 commercial
Jérôme Cuny est docteur en océanographie physique, diplômé de l’Université de Washington
à Seattle aux Etats-Unis.
— Youen Kervella : Responsable R&D
Docteur 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 projets
Titulaire d’une thèse en hydrodynamique, François Batifoulier a rejoint l’équipe d’Open
Ocean en Novembre 2011 au sein du département R&D de Brest.
— Raphael Dubois : Ingénieur de projet
Diplômé de l’école polytechnique en mécanique physique pour l’environnement et titulaire
du M2 OACOS de l’Université Paris IV Pierre et Marie Curie, il a rejoint l’équipe d’Open
Ocean à Paris.
J’ai effectué mon stage au sein du departement recherche et développement à Brest aux cotés
de trois autres stagiaires : Antoine Mallegol, Yves Moisan tous deux étudiant à l’ENIB et Victor
Martin des arts et métiers.

6
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 : Ouest
France)

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 des
phases 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 outils
de simulation numérique (MARS3D, WaveWatch III, OpenTelemac, Gerris...) et sur des outils
dé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 Analytics


Le 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 études
classique 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 prestataires
externes (Noveo) et les outils de créations et de visualisation de statistiques et de rapports sont
écrits en Python par OpenOcean.
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’est
un rose de distribution des courant en un point donné
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 spectrale


aléatoire pour le spectre de direction du nombre d’onde. En effet, grâce à ce spectre il est possible
de réaliser une modélisation de l’état de mer étant donné que ce spectre contient implicitement
ou explicitement des données relatives aux vagues, au courant marin, au vent etc. La supposition
implicite de cette équation d’équilibre est que les propriétés du milieu (la profondeur de l’eau et
le courant) aussi bien que le champ de vague varient sur des échelles de temps et d’espace qui
sont 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 est
une décomposition de l’énergie des vagues selon les périodes et directions des vagues et ce en
tout point de la surface océanique. Chaque composante de ce spectre d’énergie est un train de
vagues régulières, la somme de plusieurs trains de vagues allant dans différentes directions ✓ avec
diffé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 zones
colorées indique la direction d’où vient la houle, tandis que la distance au centre représente
la fréquence f = 1/T . Le niveau de couleur donne la densité d’énergie normalisée. Source de
l’image : [5]

9
2.1. PRINCIPE 10

Bien que le spectre de densité d’énergie F (k, ✓) décrit relativement bien les vagues de surface
des océans [6], le spectre de densité d’action N (k, ✓) = F (k, ✓)/ , est plus approprié pour les
modèles de vagues numériques. En effet, la densité d’action est conservée lors de la propagation
en 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 calcul
l’évolution de la densité d’action N (k, ✓, x, t) d’un endroit de l’océan à un autre en résolvant
l’é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 est
la 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 premier
terme de la partie gauche de l’équation 2.1 est la partie cinématique l’équation, le second partie
de l’équation est le terme de propagation de l’énergie dans un espace en deux dimensions. Le
troisiè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 par
le 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 des
vagues. L’équation 2.1 régit l’évolution du spectre d’action pour des vagues se propageant dans
un milieu non-homogène et non-permanent, la densité spectrale d’action de l’état de mer est
conservé 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 en
ré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’énergie


entre eux et avec des courants (interaction vague-vague)

— dissipation/décroissance : la dissipation d’une composante d’une vague est une fonction


complexe 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 de
base du modèle de vagues. Cependant, une version modifiée de cette équation est utilisée dans le
modèle. Lorsque l’on résout l’équation (2.1) directement, une réduction de la résolution spectrale
se produit à l’approche des côtes, i.e dans les eaux peu profondes [6]. Pour pallier cette perte de
résolution il est nécessaire de résoudre l’équation en utilisant une grille avec un nombre d’onde
variable. Cette grille va incorporer les changements cinématiques du nombre d’onde provenant
du phénomène de "wave shoaling". À l’approche des côtes la profondeur diminue ce qui a pour
effet de réduire la vitesse des vagues et donc d’augmenter l’amplitude des vagues et ainsi de
modifier la longueur d’onde, la fréquence quant à elle reste constante. On désignera cette grille
d’onde variable par . En intégrant cette grille au modèle, l’équation de conservation du spectre
de densité d’action des ondes (2.1) devient :

@ ẏN ˙
@ N
@t cg + @ ẋN
@x cg + @y cg + @ ̇N
@ cg + @ ✓N
@✓ cg = 0, (2.2)


@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ée
pour la modélisation des vagues. La résolution est basée sur une méthode de splitting qui permet
2.2. FONCTIONNEMENT 11

de diviser la résolution de l’équation en plusieurs étapes. Ces étapes résolvent des sous-système
stable 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 à une
des étapes décrites dans le paragraphe suivant, chacune de ces étapes nécessitent un pas de temps
spécifique.

La première étape prend en compte les variations temporelles de la profondeur, ainsi que
les changements correspondant dans la grille au nombre d’onde variable. Pour cette étape on
prendra un pas de temps dit "global" tg , pour lequel l’ensemble de la solution est propagée
dans 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-spectrale
et les termes sources.

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

bathymétrie &
trait de côte
(Mask)

Vents, courant,
niveau d’eau, Champs spectral des
température de WaveWatch III vagues en tout point
l'eau, glaces, Modèle
icebergs...

Autres sorties
i. Spectre local
Propagation Physique du modèle ii. Paramètre moyen : Hs,
i. isotrope longueur d'onde moyenne,
i. croissance (input du vent)
ii. réfraction période moyenne
ii. décroissance (déferlement)
iii. dispersion
iii.interaction vague-vague

Figure 2.2 – Fonctionnement du Programme WaveWatch III

Le programme prend en compte des données bathymétriques, de vents, de courant, de glace


etc. 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 paussi des sorties de paramètres physiques telles
que la hauteur significative de vagues Hs = 4 E 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 de
circulation océanique avec la même résolution horizontale et verticale. En effet, les modèles de
vagues utilisent généralement plus de variables/données. La précision d’un modèle de vagues
dépend essentiellement de l’exactitude des champs de forçage (vents, les courants, la glace de
mer, la bathymétrie, la rugosité du fond ...), l’exactitude des paramétrages qui représentent la
production, les processus d’échange et de dissipation et la qualité des méthodes numériques
utilisé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ée
soit par un programme shell ou bien tout autre programme qui nécessite des données en relation
avec les vagues (données de vents, courants, marée, glace etc) mises à jour dynamiquement. Les
programmes auxiliaires incluent un préprocesseur de grille, un programme pour produire des
2.4. CHAINE DE TRAITEMENT 12

conditions initiales artificielles, un programme shell générique (et un préprocesseur de fichier


d’entrée correspondant) et des post-processeurs de production de fichier de sortie. La figure
ci-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éprocesseur


de grille écrit un fichier de définition du modèle mod_def.ww3 grâce aux informations sur les
fonds 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 du
préprocesseur de grille (ww3_grid.inp.model cf. annexe B). Le modèle de vagues nécessite des
conditions initiales, consistant en un fichier de redémarrage restart.ww3 , écrit par le modèle de
vagues lui-même, ou par le programme générant les conditions initiales. Le modèle de vagues
peut éventuellement lire des conditions aux limites à partir du fichier nest.ww3 et génère les
conditions aux limites pour les runs consécutifs dans nestn.ww3. Le modèle stocke des données
brutes 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ées
d’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 de
sortie ; 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. Afin
de réaliser un test rétro-actif WaveWatch III passe par différentes étapes. La figure ci-dessous
résume la chaîne de traitement WaveWatch III de OpenOcean.
2.4. CHAINE DE TRAITEMENT 13

Chaîne de traitement WaveWatch III


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

launch_hindcast_ww3.sh setup_ww3.sh

Vérification des dates de simulation et construction


des listes contenant les modèles utilisés

build_time_and_list.sh

Bathymétrie ww3_grid.inp.model
Preprocesseur de grille
Trait de côtes :
- continent : .mask
make_grids_ww3.sh - petites îles : .obs

paramètres réglables :
Pre-processing

Approche physique et numérique, constantes...


Condition initial :
Fichiers de redémarrage
make_init_ww3.sh
restart.ww3

Fichier d'entrée Champs de forçage : files.nc

Glace et iceberg
make_input_ww3.sh Niveau d'eau
Vents
Courant

Formatage des fichiers


d'entrées
build_wind_ww3.sh
build_ice_ww3.sh
Processing

Lancement des calculs

make_run_ww3.sh

Créations des fichiers


de sorties Champs de forçage files.nc
Post-processing

Paramètres spectral
make_output_ww3.sh
Paramètres standard
moyen des vagues
Formatage des sorties (Hs, Tm01, Dir...)
spectrales et 2D

make_format_ww3.sh

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 shell
setup_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 script
shell qui organise le lancement des sous-routines (le launch_hindcast_ww3.sh), ce dernier va
prendre le build_time_and_list.sh en source, c’est-à-dire qu’il va lire et exécuter les commandes
contenues dans ce fichier avec l’environnement du shell en cours.
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 le
volume de données à traiter, il est impératif d’exécuter le programme sur une une grappe de
serveurs (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 le
make_grids_ww3.sh) va généré une grille de calcul qui incorpore la bathymétrie ainsi que les
paramètres physiques à l’aide du fichier d’entrée du pré-processeur de grille (ww3_grid.inp.mod
cf. annexe B) définit dans la section suivante. WaveWatch III va ensuite créer des conditions
initiales à l’aide du make_init_ww3.sh qui permettront au programme de redémarrer les calculs
sans avoir une période de calibrage. Et enfin WaveWatch III va intégrer les champs de forçage
au 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 lancer
les calculs nécessaires à la résolution des équations (2.2). Cette étape d’exécution de modèle se
fait via le script make_run_ww3.sh.

La dernière étape est le "Post-processing", elle va permettre la création des fichiers de sorties
et 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ètres
ajustables pour les termes sources, les schémas de propagation et les valeurs numériques. C’est
aussi dans ce fichier que l’on définit le système de coordonnées utilisée, la bathymétrie, les
conditions limites de la zone traitée (vents, courant) et les obstructions et le mask. Une exemple
détaillé de ce fichier est donné en annexe B.

2.5.1 Discrétisation spectrale


efficace
Pour 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 temporelle


Quatre 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) et
un pas de temps pour le terme source (tous en secondes). Ces pas de temps servent à la résolution
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 satisfaire
la condition de Courant-Friedrichs-Levy (CFL) : la vitesse des vagues les plus rapides dans le
modèle doit être inférieur ou égale à l’espacement de la grille (la taille de la maille) divisé par
le pas de temps. Par conséquent, chaque grille va posséder son propre txy qui sera déterminée
par 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églables


Les 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ère
qui servent à identifier les options que l’on active dans notre modèle WaveWatch III lors de la
compilation.

Grâce à ces switchs nous définissons le schéma de propagation voulu (PR3 : schéma de
propagation d’ordre élevé, UQ : schéma de propagation au 3 ème ordre). Ils définissent aussi les
mé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 courant
Ensuite à 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 grille


Le 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 de
s’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 avons
dé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ée
bathymétrique, sauvegarde les données dans des fichiers destinés au préprocesseur de grille de
WaveWatch 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’obstructions
horizontaux 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 premiers
fichiers (.bot, .mask et .obs), va également contenir la discrétisation spectrale, le système de
coordonnées, une discrétisation temporelle, les paramètres ajustables pour les termes sources,
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 indispensables
au fonctionnement de la nouvelle grille WaveWatch III. Les valeur des discrétisations sont fixées
de manière générique idem pour quelques constantes du terme source. Un second paramétrage
de ces valeurs ainsi que le rajout de quelques paramètres sera nécessaire à l’issue de la création
d’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 la
ré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 enfin
d’utiliser la méthode write_to_ww3 pour créer le fichier d’entrée du préprocesseur de grille et
les fichiers bathymétrique (.bot, .obs et .mask).
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 NOAA
et l’Ifremer. Ce logiciel permet de simuler les vagues dans des zones potentiellement intéressantes
pour les énergies marine renouvelables.

Le modèle de vagues qu’Open Ocean utilisait jusqu’à présent se focalisait essentiellement sur
l’Europe ; ils ont raffiné leur maillage et paramétré leur modèle uniquement pour la zone couvrant
le Nord de l’océan Atlantique. Open Ocean souhaite étendre sont activité dans le monde entier
et 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 le
moins de temps de calcul. Pour cela une étude sur le fichier d’entrée du préprocesseur de grille
est 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 du
manuel, de ce qu’il y existe sur internet et en s’inspirant des codes de configuration du modèle
Atlantique Nord d’Open Ocean ; il a été possible d’implémenter une configuration approximative
du 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 plus
fines du modèle a été nécessaire. En effet, lorsque l’on visualise sommairement les résultats du
modèle semblent correctes. Mais lorsque l’on examine plus attentivement les sorties du logiciel
WaveWatch III, notamment les hauteurs significatives des vagues (Hs), on observe la présence
de 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
3.2. PRÉSENTATION DU MODÈLE 18

Figure 3.2 – Hauteurs significatives de vagues [m] en fonction du temps [jours depuis le 1er
janvier 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 des
vagues au niveau du golfe de Gascogne. En effet, à cet endroit Hs atteint une valeur improbable
de 49 mètres alors que la plus haute vague jamais enregistrée atteint une hauteur de 29.1 mètres
et 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étisation
spectrale 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) du
modèle global de vague. Ce modèle a pour but de modéliser la dynamique des vagues du monde
entier. 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é est
composé 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 fichier
d’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.


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 dans
le processus de génération des vagues. Pour cela on utilise la base de donnée de ECMWF (Centre
européen pour les prévisions météorologiques à moyen terme). Ce centre fournit des données de
vents mis-à-jour quotidiennement avec plusieurs résolutions de données. Nous transmettons les
composantes spatiales du vent avec une résolution de 0.5o . Cette résolution de donnée a été choisi
pour 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 Ocean
WAves for Geophysical and other Applications). Le paramétrage des termes de dissipation sur le
fond (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 de
la pente de la zone littorale, des reliefs du rivage et des caractéristiques de vagues (hauteur des
vagues incidentes, fréquence moyenne) [12]. Les spectres directionnels de densité sont discrétisés
sur 24 directions et sur 32 fréquences (comprises entre 0.0373 Hz to 35.2373 Hz) ce qui donne au
modèle 24 ⇤ 32 = 768 équations d’advection couplées à résoudre et donc un problème à plusieurs
millions d’inconnues.

Dans la section suivante, nous allons partir de cette paramétrisation, la tester, analyser les
ré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 WaveWatch
III s’effectue principalement dans le fichier d’entrée du pré-processeur de grille. On y trouve
notamment la discrétisations spectrales et temporelles ainsi que les paramètres physiques, nous
allons étudier leurs influences dans le but d’obtenir une modèle de vagues non-seulement stable
mais aussi le plus efficace possible.

3.3.1 Influence de la discrétisation spectrale


Dans 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 en
termes de temps de calcul et de qualité du modèle (Cf. Annexe A). Si l’on augmente le nombre
de fréquence la qualité du modèle s’en retrouvera a priori amélioré, en contre partie le temps de
calcul sera augmenté. Le but est donc de trouver la paramétrisation de la discrétisation spectrale
qui aura le meilleur ratio qualité/temps de calcul.

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


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’une
configuration WaveWatch III de l’Ifremer. 1.1 correspond au facteur d’incrémentation de
la fréquence, 0.0373 à la première fréquence, 32 au nombre de fréquences, 24 au nombre
de 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 Atlantique
nord qui comprend essentiellement la dynamique des océans bordant l’Europe de l’ouest. Le
modèle Atlantique Nord étant stable cela va nous permettre de mettre évidence l’impact de ces
discré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éfinissant
les 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 III
sur une période de un mois (avril 2012) en utilisant huit processeurs en hyper-threading (HT). La
validation du modèle s’effectuera en utilisant la hauteur de vagues significatives habituellement
noté ’Hs ’ cette quantité statistique est largement utilisée en océanographie pour caractériser
l’é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 hauteur
des vagues par l’observation visuelle, la hauteur significative étant proche de celle estimée par
un observateur. Nous comparons donc ces valeurs de Hs données par le modèle WaveWatch III
avec 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é une
routine (Projet.py) développée en interne chez Openocean permettant de calculer les statistiques
bias, 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 statistiques
crée. La figure 3.5 est un exemple de statistiques réalisées avec cette routine, sur cette dernière
nous avons comparé le modèle de vagues global (1.) avec la bouées no 62163 située à l’ouest de
la 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èles
décrient précèdement, puis nous avons résumé les statistiques ainsi que les temps d’exécution
dans le tableau ci-dessous :
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 vagues
global 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 Nord


1 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 51s
Elapsed time 9h 59m 46s 11h 39m 15h 38m 1h 23m 1h 38m 36s 2h 19m 24s
Bias -0.12 m -0.12 m -0.12 m -0.09 m -0.11 m -0.1 m
Corr 0.97 0.97 0.97 0.97 0.97 0.97
std 0.99 0.99 0.99 0.97 0.97 0.97
rmse 0.38 m 0.38 m 0.38 m 0.37 m 0.37 m 0.37 m
crmse 0.26 m 0.26 m 0.26 m 0.26 m 0.26 m 0.26 m
nrmse 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.11
pbias -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 et
paramétrisations à la bouée 62163 située à l’ouest de la Bretagne (47.550N 8.470W). Les numéros
1, 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
9h59m46s 11h39m
+ 1h38m36s + 15h38m
temps de calcul que le celle du modèle de l’Atlantique Nord ( 1h23m 2h19m
=
3
7.226 + 7.089 + 6.748
= 7.021). En effet, la zone du modèle global est bien plus grande que la
3
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 et
ce quel que soit le modèle de vagues utilisé (global ou Atlantique Nord). En effet, avec cette
discrétisation, on ne calcule que pour 32 fréquences et 24 directions (soit 768). La discrétisation
de 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), notamment
les 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’ qui
donne les résultats les plus précis. En effet, lorsque l’on augmente le nombre de fréquences et de
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étisation
global apparait comme la plus intéressante. En effet, pour la discrétisation ’spéciale’, le gain de
précision est ridiculement petit devant l’augmentation des temps de calcul (en particulier pour
le 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 des
côtes) les résultats des simulations de WaveWatch III donne des hauteurs de vagues totalement
absurde (vagues de 50 mètres à 4 kilomètres de côtes bretonnes). Après avoir testé différentes
paramétrisations, en activant et désactivant des ’switchs’ puis des ’namelists’, une identification
du paramètre physiques générant ces pics d’erreurs a pu être possible. C’est en fait un coefficient
de réflexion du littoral qui est à l’origine des pics d’erreurs. J’ai donc testé différentes valeurs
pour ce coefficient de réflexion (REF COAST ) afin de trouver qu’elle serait la valeur donnant
les meilleurs résultats, mais il se trouve que ce coefficient entraines des erreurs dans les équations
du modèle de vagues.

Figure 3.7 – Comparaison du modèle de vagues avec différentes valeurs du coefficient de réflexion
du littoral
1- 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 en
supprimant le paramètre REFCOAST

Sur la figure 3.7 on a représenté plusieurs paramétrisations du modèle global de vagues : on


a fixé différentes valeurs pour le coefficient REF COAST puis on l’a supprimé. Nous observons
qu’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. Mes
encadrants n’ont pas souhaité que je modifie les fichiers fortran de WaveWatch III et que je
passe du temps sur ce problème qui n’était pas une priorité pour eux, nous avons donc décidé
3.4. VALIDATION 23

de supprimer ce coefficient de réflexion du littoral. En effet, le coefficient de réflexion à la côte


a une influence uniquement sur les zones côtières et donc avec une résolution de maillage aussi
faible (0.5o ⇡ 60km), le phénomène de réflexion du littoral, n’est de toute façon, pas bien pris
en 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ées
in situ, il a d’abord été nécessaire de réaliser une recherche de données de bouées dans les
différents océans du globe. En effet, Open Ocean a validé son modèle Atlantique nord avec des
bouées localisées uniquement dans cette zone d’intérêt.

3.4.1 Données de bouées in-situ


La 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 Atmospheric
Administration’s (NOAA) National Weather Service (NWS). NDBC conçoit, développe, exploite
et 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 site
de la NDBC, j’ai sélectionné les bouées les plus intéressantes i.e celles qui possèdent le plus grand
nombre de données (en particulier la hauteur significative des vagues Hs , la direction des vagues
dir, 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ôtes
du Brésil) ont pu être récupéré sur le site de GOOS-BRASIL (via le programme national de
boué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 sur
la figure ci-dessous 4.6.

Figure 3.8 – Localisation des nouvelles données de bouées : L’étoile indique la position de la
boué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ées
brut étaient au format csv (cf. glossaire) inutilisable dans notre chaîne de traitement. J’ai donc
crée un algorithme python, en m’aidant des bibliothèques crées en interne chez OpenOcean, qui
lit le fichier csv et réecrit les données dans un fichier netCDF exploitable et avec lequel il sera
possible d’effectuer une comparaison bouée-modèle afin de calculer les scores (statistiques).
3.4. VALIDATION 24

3.4.2 Cartes de Validation


Afin de quantifier les performances du modèle,les scores ont été calculés (les statistiques bias,
corr, std, N rmse et scatter_index définies dans le glossaire ) pour plusieurs bouées disséminées
dans les océans du globe. Ces calculs ont été effectués pour deux périodes : janvier 2008 (tableau
3.1) et décembre 2014 (tableau 3.2). Les résultats sont résumés sur les deux tableaux ci-dessous :

N o de bouée 52200 46035 46184 46005 32012 41041 44139 44137


Bias -0.28 m -0.11 m -0.49 m -0.1 m -0.21 m 0.03 m -0.24 m 0.15 m
Corr 0.87 0.96 0.97 0.95 0.87 0.89 0.95 0.97
std 0.64 0.84 0.97 1.18 1.15 0.9 0.89 0.98
nrmse 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.14
nse 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ées
pour le mois de janvier 2008.

N o de bouée 52200 46035 46184 46005 32012 41041 44139 69150


Bias -0.43 m -0.21 m 0.06 m 0.24 m 0.24 m -0.01 m -0.16 m -0.13 m
Corr 0.93 0.95 0.96 0.97 0.67 0.92 0.94 0.83
std 0.74 0.94 0.9 1.12 1.06 0.87 0.91 0.96
nrmse 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.18
nse 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ées
pour 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 relativement
précis pour l’Atlantique Nord ainsi que pour le Pacifique Nord. En effet, les statistiques pour
cette partie de l’océan sont très bonnes ; l’indice d’efficacité du modèle (N SE) 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ès
précis ; cela est dû à la proximité de la bouée de l’île de Guam (à moins de 2 kilomètres). En
effet le modèle global ne tient pas compte de cette île dans ces grilles de calcul car elle est trop
petite par rapport à la taille de maille utilisé (0.5o ⇡ 60km) c’est pourquoi il y a une très forte
diffé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 pas
correctement modélisé étant donné que l’on ne prend pas en compte les données de glaces et
d’iceberg. La présence d’iceberg et de glace de mer dans le modèle a de forte chance d’avoir un
impact sur la dynamique des vagues. En effet, dans cette partie de l’océan la propagation des
vagues 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ées
par 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 N SE 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ément
une dynamique côtière. Pour mieux représenter la dynamique local, il faudrait mettre en place
un modèle local avec une résolution plus fine forcé par le modèle global. Le modèle serait plus
performant car les phénomènes de shoaling et réflexion des vagues sur la côtes seraient mieux
pris en compte dans le modèle.
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étisations
spectrales, afin d’en sélectionner une, la ’global’ qui permet d’avoir un modèle relativement précis
avec des temps de calculs corrects. Pour stabiliser le modèle, nous avons dû tester différents
paramétrages physiques, ce qui nous a permis d’isoler l’origine des pics d’erreurs. Ensuite, la
validation du modèle s’est effectuée à l’aide de nouvelles données bouées rapatriées puis formatées
pour être réutilisées. Selon l’endroit du globe, le modèle de vagues mis en place a des résultats
plus ou moins bon, notamment dans l’hémisphère sud où les statistiques d’efficacité du modèle
sont relativement basse. Une hypothèse de cette faible efficacité de modèle est que la glace de mer
et les icebergs ne sont pas pris en compte dans le modèle de vagues d’Open Ocean et pourtant
leur inclusion dans le modèle aurai probablement un impact mélioratif sur le modèle. Nous allons
donc nous intéresser à l’intégration de la glace et des icebergs dans le modèle dans les prochains
chapitres.
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 le
modèle, plus précisément de la glace de mer. La glace de mer est tout simplement la glace qui se
forme à partir de l’eau des océans ; elle généralement recouverte par de la neige, mais les deux
ne 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 glaciers
vers la mer. On en retrouve des morceaux qui flottent sur la mer qu’on appelle "icebergs". Glace
de mer et icebergs sont donc bien deux glaces très différentes de part leur origine. La glace de
mer se forme d’abord dans les eaux peu profondes, près des côtes ou au-dessus des hauts-fonds
ou des bancs, et particulièrement dans les baies, les bras de mer et les détroits dans lesquels il
n’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 de
mes recherches sont de comprendre les mécanismes permettant d’intégrer la glace, de trouver des
données compatibles à WaveWatch III et enfin de déterminer si cela a un impact mélioratif sur
la modélisation des vagues.

4.1 Documentation
Le premier objectif de ma documentation a été de déterminer le type de données de glace
compatible avec WaveWatch III, c’est-à-dire quel est le format du fichier d’entrée, quelle est
la 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 code
cela s’effectue. Le manuel d’utilisation de WaveWatch III [2] a assuré la majeur partie de ma
bibliographie.

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 la
taille moyenne des grains de sédiments. Actuellement Open Ocean intègre uniquement la vitesse
moyenne du vent (WND) comme champ de forçage, on a pu constater que les modèles obtenaient
déjà des résultats relativement correct avec cette unique champ de forçage. En effet, le vent est
le 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 dans
l’optique d’améliorer la précision du modèle de vagues global, mais aussi la précision des modèles
locaux (la zone Atlantique nord e.g). Le manuel d’utilisation de WaveWatch III ([2] p.152) nous
indique que l’intégration de la glace (et d’ailleurs de l’ensemble des champs de forçage) peut
s’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ée
netCDF. Le netCDF est un format de choix pour les entrées/sorties de nombreux systèmes

26
4.2. RECHERCHE DE DONNÉES DE GLACE 27

d’information géographique et pour les échanges de données scientifiques, c’est pourquoi Open
Ocean a décidé d’utiliser ce format et donc d’implémenter ses champs de forçage en utilisant ce
type 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érents
formats (ASCII text, shapefiles, PNG, binaire etc.). Nous recherchons des fichiers au format
netCDF 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 Sea
Surface Temperature data set) fournit la
plus longue base de données de glace avec
un maillage régulier. Des données de glace
sont disponibles en Antarctique, mais aussi
en Arctique avec une résolution horizontale
et verticale de 1 degré. HadISST combine
des données historique provenant de cartes
de glace issues d’observations lors de navi-
gation, d’expéditions et autre activités, de
données satellitaire (issues principalement
de la NASA) et de l’analyse opérationnelle Figure 4.1 – Concentration de glace pro-
de glace de la NCEP. venant de la base de donnée HadISST (1o ).

4.2.2 MyOcean
MyOcean 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 et
la prédiction des Océans, en support aux activités telles que : la Sécurité maritime, la pollution
par Hydrocarbure, changement climatique, la surveillance des glaces etc. En fait, ce programme
vise à regrouper différentes base de données de plusieurs centres de recherche puis à normaliser
et 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 la
glace de mer. Cette analyse a été développée
au Met Office et couvre une période de 1985
à aujourd’hui. Mise à jour quotidiennement,
la couverture global au 1/20o nouvelle, de
haute résolution globale ( 6 km) de SST et
de concentration de glace sont générés qua-
siment en temps réel. L’analyse a été conçue
pour répondre aux besoins d’applications
nécessitant des échelles spatio-temporelles à
haute résolution, notamment pour des pré-
visions météorologiques globales ou encore Figure 4.2 – The OSTIA global foundation
pour des modèles océaniques. Sea Surface Temperature - au 1/20 de degré
4.3. IMPLEMENTATION DES DONNÉES DE GLACE 28

4.2.3 ECMWF

Le Centre européen pour les prévisions


météorologiques à moyen terme (CEPMMT
- ECMWF en anglais) est une organisation
intergouvernementale soutenue par 34
États. ECMWF est à la fois un institut de
recherche et un centre de service disponible
24/7, il produit et diffuse des prévisions
météorologiques numériques à ses états
membres.

Ce centre possède donc un énorme base


de données météorologiques et notamment
une base de données atmosphériques global
de 1979 à aujourd’hui : Era-interim. Avec,
entre autres, des données de vent, de cou-
rant, de glace avec en particulier ce qui nous
intéresse : une base de données de concen- Figure 4.3 – Visualisation des concen-
tration de glace au niveau mondial et au tration de glace provenant de era-interim
format netCDF. (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 de
choix 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 un
fichier mod_def qui va traduire les données au programme WaveWatch III pour qu’il puisse les
comprendre 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 Wavewatch
III la couverture de glace est considérée comme la ’terre’, excepté que cette couverture de glace
varie temporellement. On suppose alors que l’énergie des vagues est nulle et que les conditions
aux limites au bord de la glace de mer (mer-glace) sont identiques aux conditions limites de
la côte. Les points de la grille ne sont pas pris en compte dans le calcul si la concentration de
glace 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 maillage
correspondant est réactivé.

L’implémentation de la glace dans la chaine de traitement WaveWatch III de OpenOcean


s’effectue à plusieurs niveaux du code. Voici les différents codes sources modifiés :
1. ww3_setup.sh
2. build_time_and_list.sh,
3. make_input_ww3.sh,
4. build_ice_ww3.sh
5. 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 base
de 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’a
pas été implémenté dans nos codes WaveWatch III. Et enfin on précise le nom de la variable de
concentration de glace dans le fichier netCDF (name_ice_var_infile=’ci’).
4.4. TESTS ET VALIDATION 29

Ensuite, dans le build_time_and_list.sh on implémente un compteur qui va compter le


nombre 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 peut
faire tourner un modèle global (la "grille mère") avec une résolution de 0.5o avec un deuxième
modèle local (e.g un modèle Atlantique nord qui sera la "grille fille") avec une résolution plus
fine (0.125o ). Le build_time_and_list.sh va donc compter deux modèles pour le vent et sera
contraint 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. Le
make_input_ww3.sh fait appel au script shell build_ice_ww3.sh qui va formater le fichier de
glace 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-grille


et grâce à ce dernier il va pouvoir lancer les calculs (la majorité des calculs servent à la résolution
de 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 vagues
en les comparant au données de bouées in-situ.

Dans un premier temps on effectue des simulations WaveWatch III avec les différentes bases
de 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.


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ésolution
des grilles WaveWatch III est de 0.5 degrés tandis que les résolutions des fichiers d’entrée de
glace sont de 1 degré pour HadISST et 0.75 degrés pour ECMWF. Une routine du programme
interpole 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 la
grille 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 avons
choisi une base de données de glace avec une résolution plus fine. En effet, la base de donnée
de 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èle
global, nous l’excluons donc de notre étude.

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

46035 (cf. figure 4.6) provenant du side de la NDBC a été utilisé pour ces comparaisons. Cette
boué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 aura
un impact significatif sur les hauteurs significatives des vagues (Hs).

Statistiques : sans glace ECMWF OSTIA


Bias 0.17 m 0.07 m 0.09 m
Corr 0.96 0.97 0.97
std 0.93 0.95 0.95
rmse 0.32 m 0.26 m 0.27 m
crmse 0.21 m 0.19 m 0.19 m
nrmse 6.85% 5.49% 5.64%
scatter_index 0.17 0.14 0.14
pbias 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 N SE (efficacité du modèle),
Bias (sur/sous évaluation du modèle) et la N RM SE (cf. annexe A), montrent que les deux
modèles intégrants la glace ont de meilleurs résultats que le modèle sans glace. Afin de valider
cette observation d’autres statistiques ont été réalisées sur une douzaine de bouées disséminés
dans les océans. La figure ci-dessous indique la position des bouées et la tableau 3.2 résume les
statistiques 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 la
bouée et le nombre à coté de l’étoile correspond au numéro de bouée.
4.5. CONCLUSION 32

a) Modèle n’intégrant pas les de données de glace :


Bouée N o 46035 46184 46005 51000 32012 69153 41041 41001 44139 62163
Bias 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 m
Corr 0.96 0.95 0.96 0.87 0.46 0.81 0.92 0.95 0.95 0.97
std x 1.01 0.88 0.71 0.83 0.64 0.93 0.96 1.04 0.99
nrmse 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.11
nse 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 N o 46035 46184 46005 51000 32012 69153 41041 41001 44139 62163
Bias 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 m
Corr 0.97 0.95 0.95 0.87 0.43 0.81 0.92 0.95 0.95 0.97
std 0.95 1.01 0.88 0.71 0.7 0.64 0.93 0.96 1.04 0.99
nrmse 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.11
nse 0.93 0.91 0.9 0.7 0.02 0.41 0.85 0.89 0.83 0.94
c)Modèle Intégrant les données de glace de OSTIA :
Bouée N o 46035 46184 46005 51000 32012 69153 41041 41001 44139 62163
Bias 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 m
Corr 0.97 0.95 0.95 0.86 0.43 0.81 0.92 0.95 0.95 0.97
std 0.95 1.01 0.88 0.71 0.73 0.64 0.92 0.96 1.02 0.99
nrmse 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.11
nse 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ées
in-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égration
de la glace améliore l’efficacité du modèle de vagues. De plus, quel que soit la base de données de
glace ECMWF ou OSTIA les améliorations d’efficacité du modèle sont équivalentes. Après avoir
ré-effectué ces manœuvres de validations sur d’autres périodes temporelles, nous avons encore
obtenue 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, nous
avons effectué des simulations sur une période de deux mois (janvier-février 2014) avec un modèle
de vagues global sans glace, puis en intégrant la glace de ECMWF au 0.5o et enfin avec la glace
issue de la base de données de OSTIA.

modèle global (01-02 / 2014) : Temps de calcul


Sans intégration de glace 21h 14m 49s
Intégration de la glace de ECMWF (0.5o ) 19h 12m 47s
Inté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 de
temps que celle de ECMWF. La taille de la base de donnée en est la cause. On constate que le
temps de calcul, lorsque l’on intègre la glace de ECMWF dans le modèle, est inférieur au temps
de calcul sans glace dans le modèle. Les zones où la couverture de glace est présente ne sont pas
prises en compte dans les calculs de WaveWatch III (cf. 4.3 §2). En effet, dépassé une valeur seuil
de concentration de glace (fixé à 0.25), les points du maillage ne sont pas pris en compte dans le
calcul.

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

vent au sein de la chaine de traitement de WaveWatch III d’Open Ocean se fait actuellement
avec des données ECMWF à 0.5o . De plus, les temps de calculs pour cette base de données sont
relativement 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 avec
des temps de calcul allongés. En effet, lorsque WaveWatch III intègre la glace au modèle, il doit
la mettre à jour la glace pour chaque jour de la simulation ce qui prend plus ou moins de temps
selon le volume de données à traiter.

On a pu le constater à travers les statistiques du tableau 4.1, les statistiques des cartes 4.2
et avec le tableau 4.3 des temps de calcul que l’intégration de la glace dans le modèle améliore
l’efficacité du modèle. Pour bien comprendre l’impact que l’intégration de la glace a sur le modèle
nous avons réalisé des cartes de différences de hauteurs significatives des vagues (Hs) entre le
modè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 moyennes
des 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
(Hs ) 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, aux
endroits où il y a une couverture de glace la propagation des vagues se stoppe, ce qui crée de
grandes différences avec le modèle sans glace. Ces différences de hauteurs significatives de vagues
peuvent atteindre jusqu’à 3 mètres pour la période hivernal et jusqu’à 8 mètres pour la période
estival, les différences maximales se situent aux endroits où il n’y avait initialement pas de mer
de glace dans le modèle. Pour les vagues se propageant près de la mer de glace on obtient des
différences maximales de l’ordre de quelques dizaines de centimètres. Et enfin, loin des pôles ces
différences sont de l’ordre du centimètre.
4.5. CONCLUSION 34

Figure 4.8 – Différences maximales des hauteurs significatives de vagues (Hs ) sur la période de
juillet-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 de
juillet-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’est
pas stoppé par les continents.
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 mer
et ils ont également un fort impact sur la dynamiques des vagues [13]. Après avoir constaté que
la distribution spatiale des icebergs est fortement corrélée aux erreurs de modèle de vagues (en
particulier dans l’océan indien). Une première paramétrisation du blocage des vagues par les
icebergs a été mise en place et a enlevé les plus grandes erreurs dans leur modèle WaveWatch
III.

5.1 Principe
Les icebergs sont considérés comme une sous-grille d’obstacle en mouvement, en suivant le
traitement (fixe) des sous-grilles d’île et le traitement (mobile) de la glace par Tolman [14]. Les
effets 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’ils
absorbent entièrement le flux d’énergie des vagues qu’ils interceptent. On définit la proportion r
du 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 la


probabilité que deux icebergs peuvent être alignés dans la direction de propagation des vagues,
et r est donné par le rapport
C(i,j,t)
r(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


P
C0 (k)A0 (k)
W = P (i, j, t) P k p (5.3)
k C0 (k) (A0 (k)

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

35
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és
dans 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 significatives
des vagues. L’image du haut montre l’erreur quadratique normalisée par rapport à des mesures
d’altimétries de Hs . La seconde image montre la même erreur pour un modèle qui inclut les
icebergs. La dernière image montre les différences maximums, en mètre, pour l’année 2008, entre
les hauteurs de vagues modélisés sans (Hs1 ) 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 le
fait que le manuel indiquait explicitement le type de variable à transmettre a WaveWatch (des
concentrations de glace). Tandis que pour l’intégration des icebergs le manuel indique seulement
de lui transmettre un coefficient d’amortissement induit par les icebergs dénoté par IBG. En
analysant les équations (5.1), (5.2) et (5.3) on constate qu’en dehors de la distribution spatiale
des icebergs, deux variables sont nécessaires pour calculer ce coefficients d’amortissement : la
superficie des icebergs (A) et la probabilité de présence d’un iceberg (P ).

5.2.1 Projet Altiberg


Les 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écemment
par Tournadre [15], en effet dans ses travaux il a démontré que les petits icebergs peuvent être
dé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 sur
une base mensuelle.

L’objectif principal du projet Altiberg financé par le CNES est la création d’une base de
donnée d’iceberg couvrant la période de 1991 à aujourd’hui en utilisant les archives de forme
d’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
5.3. IMPLÉMENTATION 37

contiennent la localisation des icebergs, la probabilité de leur présence, la superficie moyenne des
icebergs 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, aucune
base de données d’icebergs globale existe à ce jour. Nous allons donc intégrer les icebergs dans
le modèle uniquement pour cette partie du globe.

5.2.2 Formatage des données


Nous 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. Un
formatage 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 de
l’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 superficie
de la mer couverte par les icebergs et de la largeur effective de l’iceberg dans la direction de
propagation, c’est-à-dire r (cf. 5.1). Le coefficient ’IBG’ correspond à un pourcentage de surface
d’iceberg qui induit un amortissement des vagues. Il faut donc multiplier la superficie de l’iceberg
A(i, j, t) par la probabilité de présence de l’iceberg P (i, j, t) le tout multiplié par un facteur de
normalisation 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’utiliser
le programme auxiliaire (ww3_prnc). Ce programme va lire les données d’un fichier d’entrée
5.4. TESTS ET VALIDATIONS 38

pré-formaté (un netCDF avec des concentrations de glace et des coefficients d’atténuation des
vagues 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éthode
n’a pas abouti car le programme WaveWatch III intègre la glace de mer et les icebergs en même
temps. Ce qui allège et facilite grandement l’implémentation des codes d’intégration de données
d’iceberg.

L’implémentation des icebergs dans le modèle de vagues s’est effectué sur le même modèle
que 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 les
icebergs dans le modèle, dans le script build_time_and_list.sh on ajoute un nouveau test pour
le compteur de grille de glace (et d’iceberg) du modèle. On crée la routine build_iceberg_ww3.sh
qui est appelé dans le script make_input_ww3.sh va effectuer un formatage en découpant ou
concaténant les données de glace et d’iceberg à l’aide de commande NCO afin d’avoir des données
correspondant aux dates de runs.

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

Listing 5.1 – bash version


1 cat > ww3_prnc_ice . inp . $mod << EOF
2 $ WAVEWATCH III Field preprocessor input file
3 $ -------------------------------------------
4 ’ISI ’ ’LL ’ T T
5 longitude latitude
6 $Var_ice $Var_iceberg
7 ’ 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 transmet
des concentration de glace qui incluent aussi des données d’icebergs (les coefficients ’IBG’). Le
terme ’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ès
difficiles 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. Pour
cela, nous comparons les hauteurs significatives des vagues (Hs) entre les trois modèles : modèle
sans glace, modèle avec glace et modèle avec glace et iceberg.
5.4. TESTS ET VALIDATIONS 39

Figure 5.3 – Différences maximales des hauteurs significatives de vagues (Hs ) entre le modèle
sans 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 au
modèle de vagues. En effet, on observe des différences de Hs dans les zones ou il y a de la mer
de glace et des "tâches" de différences de Hs qui sont dû à l’amortissement des vagues par les
icebergs. Pour confirmé cela, nous comparons les résultats du modèle intégrant la glace avec celui
intégrant glace et iceberg.

Figure 5.4 – Différences maximales des hauteurs significatives de vagues (Hs ) entre le modèle
intégrant uniquement la glace et le modèle intégrant la glace et les icebergs pour la période
janvier 2014.

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

Figure 5.5 – Différences moyennes des hauteurs significatives de vagues (Hs ) entre le modèle
intégrant uniquement la glace et le modèle intégrant la glace et les icebergs pour la période
janvier 2014.
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 et
de leurs fichiers bathymétriques (.bot, .obs et .mask). Alors que ce modèle global présentait des
pics d’erreurs dans les résultats de hauteurs significatives, une paramétrisation des paramètres
physiques à 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 demi
degré, car ce coefficient agit lorsqu’on s’approche des côtes. Avec une résolution de maillage aussi
faible, le phénomène de réflexion à la côte n’est pas très bien pris en compte dans les calculs. Le
modèle a été validé à l’aide de données de bouées in situ, elles ont été récupérées puis formatées
au format netCDF pour simplifier leurs utilisations.

Une amélioration du modèle global a été réalisé en incorporant, dans un premier temps, des
donné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 coefficient
et la concentration de glace a permis l’intégration de la glace de mer, mais aussi des icebergs
dans 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’unique
moyen de comparer les résultats est de comparer des hauteurs significatives moyennées sur une
année.

Ce stage de fin d’étude au sein d’Open Ocean m’a permis de découvrir et de travailler dans
le 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 comprendre
la 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, en
simulation 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 programmes
plus 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 par
les 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 pour
l’océanographie physique, les énergies marines renouvelables et la simulation numérique. J’espère
avoir l’opportunité de poursuivre dans cette voie en orientant mes recherches d’emploi.

41
Annexe A

Scores

Les "scores" sont des indicateurs de performance d’un modèle, ils permettent à la fois de quantifier
les 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’exprime
ainsi :
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 la
tendance des valeurs simulées à être supérieures ou inférieures aux mesures. C’est pourquoi le
biais 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 coefficient
de corrélation ainsi :
N
X
(mn m̄) · (rn r̄)
n=1
Corr (m, r ) = v v (A.2)
u N u N
uX uX
t (mn 2 t
m̄) · (rn r̄) 2

n=1 n=1

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


s
PN
CRMSE (m, r ) = N1 [(mn m̄) (rn r̄)]2 (A.3)
n=1

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

L’écart-type (std) : L’écart type ("standard deviation") représente la dispersion des données, on la
calcule ainsi : s
PN
= N1 (rn r̄)2 (A.4)
n=1

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

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



(A.5)

NSE (efficacité du modèle) : Ou "Nash-Sutcliff Efficiency" est une grandeur sans dimension qui
dé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 vue
plus restrictif on considère que si :
— N SE > 0.65 le modèle est excellent

— 0.5 < N SE < 0.65 le modèle est très bon

42
43

— 0.2 < N SE < 0.5 le modèle est bon

— 0 < N SE < 0.2 le modèle est mauvais.

On définit le N SE par :
N
P
(rn m n )2
NSE (m, r ) = 1 n=1
P N (A.6)
(rn r̄)2
n=1

RMSE (Root Mean Square Error) : La variable RMSE qui est en fait l’erreur quadratique est un
moyen précis de mesure de l’amplitude des écarts entre les valeurs prédites par le modèle et les
valeurs observées. Le modèle est d’autant plus performant que les erreurs termes à termes sont
faibles. (Plus RMSE est proche de 0 plus le modèle est performant). On calcule cette moyenne de
la façon suivante : s
P
N
RMSE (m, r ) = 1
N
[mn r n ]2 (A.7)
n=1

NRMSE (Normalized Root Mean Square Error) : Erreur quadratique moyenne normalisée.
s
P
N
NRMSE (m, r ) = 100 ⇤ 1
N
[mn rn ]2 /nval (A.8)
n=1

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


Annexe B

Fichier d’entrée du préprocesseur de


grille (Grid input ww3_grid.inp)

Voici le le fichier que l’on transmet au préprocesseur de grille de WaveWatch III (compilateur). La
paramé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
45

&SIN4 BETAMAX = 1.45 /


$
END OF NAMELISTS
$
$ Grids caracterisation ---------------------------------------------- $
$
RECT T SMPL
720 317
30.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 $
$ -------------------------------------------------------------------- $
Annexe C

Méthode python write_to_ww3

Méthode python qui, à partir de donnée bathymétrique, sauvegarde les données dans des fichiers
destiné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 version


1 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 files
5 model_name ( str ) - - name of output ww3 files (. bot , . mask , . obs )
6 xres , yres -- Resolution of the x and y axis wanted for the grid
7 xmin , ymin , xmax , ymax -- define the new zone
8 """
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 - xmin
17 else :
18 L_lon = abs ( xmin ) + xmax
19
20 if ymin >0 :
21 L_lat = ymax - ymin
22 else :
23 L_lat = abs ( ymin ) + ymax
24 xres =1/ round ( l2 / L_lon )
25 yres =1/ round ( l1 / L_lat )
26
27 # Write files for WWIII :
28 if os . path . exists ( file_path_out + ’/ ’+ model_name ):
29 i =0
30 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 +=1
36 os . makedirs ( file_path_out + ’/ ’+ model_name )
37 else :
38 os . makedirs ( file_path_out + ’/ ’+ model_name )
39
40 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
47

44
45 with open ( file_bot , ’w ’) as swriter_bot :
46 for i in range ( l1 ):
47 line =[ ’% 12.06 f ’ %( row ) for row in h0 [i ,:]]
48 swriter_bot . write ( ’ ’. join ( line )+ ’\ n ’)
49
50 h01 = np . fabs ( h0 )
51 h0_obs = h01 *0
52 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 )
60
61 h0_mask = h0 *0+1
62 h0_mask [0 ,:] = 2
63 h0_mask [ -1 ,:] = 2
64 h0_mask [: ,0] = 2
65 h0_mask [: , -1] = 2
66 h0_mask [ h0 ==999.] = 0
67
68 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 )
72
73 # Generation du preprocesseur de grille pour des fichiers d ’ entre
74 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 )
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 compilation
en elle-même (ligne 59).

Listing D.1 – bash version


1 # ice
2 if [[ " $PRNC " != ’no ’ ]] && [[ " $ice " != ’no ’ ]]; then
3 echo ’+ - - - - - - - - - - - - - - - - - - - - - - - - - - -+ ’
4 echo ’| Input ice data in netcdf | ’
5 echo ’+ - - - - - - - - - - - - - - - - - - - - - - - - - - -+ ’
6
7 # step 0: we begin by looping on models
8 j =0
9 for mod in $mods_run
10 do
11 gridice = ‘ expr $ { grid_ice [ $j ]} ‘
12 sourceice = ‘ expr $ { listicesources [ $j ]} ‘
13 gn = ‘ expr $j + 1 ‘
14 (( j ++))
15
16 # step 1: building ice from netCDF file
17 # >>> from a single file
18 if [[ $sourceice == ’ file ’ ]]; then
19 if [[ -L ice . nc ]]; then
20 unlink ice . nc # remove existing linked file
21 fi
22 ln -s $ { ice_file } ice . nc # link new file
23 Var_ice = $name_ice_var_infile
24
25 # >>> from an ice dataset
26 elif [[ $sourceice == ’ ECMWF ’ ]]; then
27 echo ’ building ice file for ’ $mod
28 build_ice_ww3 . sh $sourceice $mod
29 Var_ice = $name_ice_var_infile
30
31 elif [[ $sourceice == ’no ’ ]]; then
32 echo $mod ’ is run without ice ’
33 else
34 echo ’ bad choice for ice source ’ $sourceice
35 exit
36 fi
37
38 cat > ww3_prnc_ice . inp . $mod << EOF
39 $ WAVEWATCH III Field preprocessor input file
40 $ -------------------------------------------
41 ’ICE ’ ’LL ’ T T
42 longitude latitude
43 $Var_ice
44 ’ ice . nc ’

48
49

45 $
46 $ End of input file
47 EOF
48
49 if [[ $sourceice != ’no ’ ]]; then
50 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 . inp
53 ln -s mod_def . $mod mod_def . ww3
54
55 if [[ $sourceice != ’ file ’ ]]; then
56 echo ’ lien vers le ice . nc ’
57 ln -s $path_w / ice . nc . $mod ice . nc
58 fi
59 echo " Screen ouput routed to $path_o / ww3_prnc_ice . $mod . out "
60 $path_e / ww3_prnc > $path_o / ww3_prnc_ice . $mod . out
61 mv ice . ww3 ice . $gridice ’ _g ’ $gn
62 cp ice . $gridice ’ _g ’ $gn $path_bin / ’ ice . ’ $gridice ’ _g ’ $gn ’_ ’ $tstarto - $tend
63 rm -f ww3_prnc_ice . inp . $mod ww3_prnc . inp mod_def . ww3 *
64 unlink ice . nc
65 fi
66 done
67
68 elif [[ " $ice " == ’no ’ ]]
69 echo ’+ - - - - - - - -+ ’
70 echo ’| NO ICE | ’
71 echo ’+ - - - - - - - -+ ’
72 fi
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 netCDF4
import sys
import os
import numpy as np
import stats.utils.compass_variable as cv
import Write
from datetime import datetime, timedelta

# Variables initialization
sat = 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 variables


ice_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 months
for m in range(1,13):
im_min=time_h[m-1].month # wanted month
im_max=time_h[-1].month # last month
ice_area[:,:,30]=0 # removes spurious values at 40 S.

50
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 variables


ci=nc1.variables[’ci’][:] # ice concentration variable
time1=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 day
id_max=date1[-1].day # last day
lat1=nc1.variables[’latitude’][:]
lon1=nc1.variables[’longitude’][:]

# Build iceberg data (the whole construction of ibg is in the loop for more clarity)
# -> Define regular grid
nx=720
ny=361
nlo=181
nla=51
# -> Defines histogram of iceberg sizes
XX=np.linspace(0.1,4,40);
# -> fit function to observed histogram
YY=800.*np.exp(3.*(-XX+0.5))+300.*np.exp((-XX+0.5));
# -> Normalization to get total area
TA=(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 unvailable


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

# -> build ibg variable


ibg=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 files
dir_out=’/mnt/nfs/home/cedricjo/WORK/ice_iceberg_database/’+sat
if not os.path.isdir(dir_out):
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 variables
time=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)

#=======================================================================
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”, Ocean
Modelling 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 altimeter
waveform analysis". J. Geophys. Res. 113 (7), C08040.
[16] cersat.ifremer.fr

53

Vous aimerez peut-être aussi