WAVEWATCH

De POLR
Sauter à la navigation Sauter à la recherche

Introduction

WAVEWATCH 3 est un modèle développé par la NOAA/NCEP qui simule la formation et la dispersion de vagues et de la houle dans des eaux océaniques et côtières. Il se base sur la résolution des équations du spectre des vagues. Le modèle se caractérise par une importante modularité et la possibilité de paralléliser le calcul. La version 4.18 intègre une atténuation du spectre par la glace ainsi que la possibilité d'utiliser des grilles non structurées.

Guides d'utilisation

Tutoriels et outils

L'IFREMER Brest, qui donne une formation sur le modèle plusieurs fois par an, donne accès à un site ftp où sont réunis le code de la version 4.18, des cours théoriques sur les vagues et le modèle, des tutoriels d'installation et d'utilisations avec de nombreux exemples. On y trouve aussi des outils et des scripts Matlab/Octave pour l'analyses des sorties.

Problèmes potentiels rencontrés à l'installation

Lors de l'installation du modèle, veuillez bien suivre les indications données par le guide d'utilisation, rubrique 5.3 "compiling and linking" (page 118). Trois fichiers nécessitent des modifications de la part de l'utilisateur : comp / link / switch (à modifier dans le répertoire /work) . L'utilisateur doit définir le compilateur à utiliser ainsi que les options qui en dépendent.

Fichiers comp et link

Attention, il existe plusieurs versions de ces fichiers. Avant de modifier ces fichiers, dans le répertoire /work, modifiez les liens symboliques de comp et link par :

ln -s ../bin/comp.Intel comp

ln -s ../bin/link.Intel link

À partir de maintenant, toujours dans /work, vous pouvez modifier le type de compilateur utilisé (ifort, gfortran...) et les options liées dans comp et link.

  • Modifications du ficher comp (exemple avec ifort), ajoutez :
# Intel compiler on Linux ----------------------------------------------------
# 2.b.1 Build options and determine compiler name
#       Note that all but GrADS output is forced to big endian data

  opt="-c -O3 -assume byterecl -module  $path_m"
# opt="-c -list -O3 -unroll -tpp7 -Zp8 -module $path_m"
# opt="-c -g CB -list -O3 -module $path_m"  

  if [ "$name" != 'gx_outp' ] && [ "$name" != 'gx_outf' ]
  then
    opt="$opt -convert big_endian"
  fi  
 
  if [ "$mpi_mod" = 'yes' ]
  then
    comp=mpif90
  else
   comp=ifort
  fi  
  • Modifications du ficher link (exemple avec ifort), ajoutez :
# Intel compiler ------------------------------------------------------------
# 3.a Build options and determine compiler name
#     No GRIB libraries for this one

  opt="-O3 -Zp8 -tpp7 -o $prog"

  if [ "$mpi_mod" = 'yes' ]
  then
    comp=mpif90
  else
    comp=ifort
  fi

Une fois cette opération effectuée, il est important d'aller dans le répertoire /bin et de créer un lien symbolique de comp et de link au sein même du répertoire. Nous avons bien modifié les fichiers comp.Intel et link.Intel à partir de /work, mais lors de la compilation, le compilateur va se servir des fichiers comp et link originaux présent dans le répertoire /bin.

  • Dans /bin, renommez comp et link :
mv comp comp.original

mv link link.original

et créez un lien symbolique vers les fichiers comp.Intel et link.Intel du même répertoire

ln -s comp.Intel comp

ln -s link.Intel link

Fichier switch

Le fichier switch correspond à la liste de modules qui seront activés lors de la compilation du modèle. Il est important de vérifier quels sont les modules actifs, de les modifier au besoin (en particulier pour la réalisation des tests) et de recompiler le modèle si le fichier a été modifié.

La suite de la procédure de compilation est clairement expliquée dans le guide d'utilisateur. Plusieurs étapes sont nécessaires pour vérifier l'installation et le bon fonctionnement du modèle.

Installation sur la grappe de calcul MINGAN

Ce paragraphe propose un exemple d'installation de WAVEWATCH3 à partir d'une archive de la version du modèle utilisée à l'ISMER.

1. Décompression de l'archive tar.gz

Une fois connecté(e) sur MINGAN :

cd

tar -xzvf WW3_Mingan.tar.gz

Cette commande crée un répertoire WW3 dans votre home, contenant :

> WW3
    > cases
    > guide
    > manual
    > model
    > regtests

La suite de l'installation se déroule dans model, mais il faut avant mettre à jour le fichier bash_profile pour que tout se déroule sans problème.

2. Mise-à-jour de bash_profile

Éditer le fichier bash_profile :

vi ~/.bash_profile

pour qu'il devienne :

# bash_profile

# Get the aliases and functions
if [ -f ~/.bashrc ]; then
        . ~/.bashrc
fi

# User specific environment and startup programs
export WWATCH3_NETCDF=NC4
export NETCDF_CONFIG=/usr/bin/nc-config

module load dot

PATH=$PATH:$HOME/bin:.

export PATH

Cette étape permet de définir l'environnement NetCDF dont WAVEWATCH a besoin, ainsi que de charger le module dot, qui permet de lancer une commande depuis le répertoire courant (sans taper ./ avant). Ces modifications deviennent effectives grâce à la commande :

source ~/.bash_profile

ou en relançant le terminal.

3. Mise en place de l'environnement WAVEWATCH3

Aller dans le répertoire bin de model :

cd WW3/model/bin

Pour la première utilisation, la fonction w3_setup permet de créer le fichier .wwatch3.env dans votre home :

w3_setup .. -c gfortran -s test_mingan

Cette commande indique le chemin du répertoire source de WAVEWATCH3 (.. pour répertoire supérieur), les fichiers comp et link à utiliser (comp.gfortran et link.gfortran) et le fichier switch (switch_test_mingan). Comme le fichier .wwatch3.env n'existe pas encore, il demande la nouvelle configuration à utiliser :

Setting up WAVEWATCH III
 
   Setup file /home/<username>/.wwatch3.env not found
 
   Creating new set-up :
 
      Printer for listings [printer] : 
      FORTRAN compiler for aux. [f77] : gfortran
      C compiler for aux. [cc] : gcc
      Scratch space [/tmp/<username>] : /home/<username>/WW3/model/tmp
      Save source code files (*.f)  [no] : yes
      Save listing files  [no] : yes

<username> fait référence à votre identifiant sur MINGAN.
Vous pouvez vous assurer que les variables d'environnement WAVEWATCH3 ont bien été créées en faisant la commande :

vi ~/.wwatch3.env

Le fichier doit ressembler à :

#
# Environment variables for wavewatch III
# ---------------------------------------
#

WWATCH3_LPR      printer
WWATCH3_F77      gfortran
WWATCH3_CC       gcc
WWATCH3_DIR      /home/<username>/WW3/model
WWATCH3_TMP      /home/<username>/WW3/model/tmp
WWATCH3_SOURCE   yes
WWATCH3_LIST     yes
4. Compilation du modèle

À ce stade, tout devrait être bien configuré, il ne reste plus qu'à compiler ! Pour ceci, se placer dans /model/bin, et faire la commande :

w3_make

qui compile toutes les sous-routines de WAVEWATCH3 et génère les exécutables correspondant dans /model/exe. Pour vérifier que la compilation s'est déroulée correctement, aller voir dans le répertoire /model/exe :

ls ../exe

qui devrait contenir :

exec_type  gx_outf  gx_outp  ww3_bounc  ww3_bound  ww3_gint  ww3_grib  ww3_grid  ww3_gspl  ww3_multi  ww3_ounf  ww3_ounp  ww3_outf  ww3_outp  ww3_prep
ww3_prnc  ww3_sbs1  ww3_shel  ww3_strt  ww3_trck


5. Définir les dossiers sources dans le fichier d'environnement

Les scripts, les exécutables et les fichiers switch nécessaires à la compilation du code WW3 sont enregistrés dans le répertoire WW3/bin, alors que les exécutables sont enregistrés dans le répertoire WW3/exe. Afin de pouvoir compiler et exécuter le code de n'importe quel dossier de travail (p.ex. WW3/work), il importe d'ajouter le chemin d'accès de ces deux répertoires dans le fichier ~/.bash_profile. Pour ce faire, taper la commande:

vi ~/.bash_profile

ajouter sous la ligne PATH=$PATH:$HOME/bin:. les lignes

PATH=$PATH:$HOME/WW3/model/bin:.
PATH=$PATH:$HOME/WW3/model/exe:.

Après avoir édité le fichier, exécuter la commande :

source ~./bash_profile

afin de mettre à jour les chemins d'accès. Il est possible de vérifier la mise à jour à l'aide, par exemple, de la commande :

which ww3_grid

qui devrait donner le bon chemin d'accès.


Cas test

Un ensemble de cas test sont disponibles dans le répertoire WW3/regtests, lesquels peuvent être exécutés afin de vérifier le bon fonctionnement des différentes composantes du modèle. Le script regtests/bin/run_test permet d'automatiser l’exécution de ces tests en appelant les différentes routines ww3_grid, ww3_strt, ww3_shel, etc. et en gérant la création des liens symboliques. Ces liens s'avèrent nécessaires pour la lecture des fichiers d'entrée, c.-à-d. les fichiers de type WW3/regtests/test/input/*.inp, utilisés par les routines du modèle lorsque l'exécution est lancée depuis un répertoire de travail, p.ex. WW3/regtests/test/work.

Comme l'arborescence du dossier WW3/ est quelque peu différente de celle requise par le script run_test, ce dernier doit être modifié pour permettre son exécution. Dans WW3/regtests/bin, taper la commande

vi run_test

afin de modifier les lignes 219 à 221,

path_e="$path_s/model/exe"
path_a="$path_s/model/aux"
path_b="$path_s/model/bin"

ainsi que la ligne 310,

args="-t $path_s/model/tmp $path_s/model"

Une fois le script édité, il est dès lors possible de lancer son exécution en spécifiant le chemin d'accès du fichier d'environnement wwatch3.env. Par exemple, pour lancer le test ww3_tp2.1 depuis le répertoire WW3/regtests/,

./bin/run_test -a ~/.wwatch3.env -w work $HOME/WW3 ww3_tp2.1

Ce faisant, l'ensemble des fichiers de sortie générés par les exécutables seront sauvegardés dans le répertoire WW3/regtests/ww3_tp2.1/work/ (p.ex. les fichiers *.out). La commande

run_test -h

permet de détailler les différentes options disponibles pour modifier l'exécution. Par exemple, pour rouler le même test mais en mode parallèle (MPI), la ligne de commande a utilisé sera plutôt

./bin/run_test -a ~/.wwatch3.env -s PR3_UQ_MPI -p mpirun -n 3 -w work_mpi $HOME/WW3 ww3_tp2.1

avec les options -s PR3_UQ_MPI et -p mpirun -n 3 qui permettent respectivement de spécifier le bon fichier switch (avec DIST MPI dans l'énumération des switchs en lieu et place de SHRD) et le mode d'exécution.


Pour un premier pas avec le modèle, le guide d'apprentissage disponible à l'adresse http://polar.ncep.noaa.gov/waves/workshop/pdfs/WW3-workshop-exercises-day2-curvilinear.pdf est conseillé. Une foule de documents sont également disponibles via le site http://polar.ncep.noaa.gov/waves/workshop/pdfs/.


Réaliser une simulation