Tutorial pour les nouveaux utilisateurs de Méso-NH

Méso-NH est un modèle atmosphérique de recherches développé conjointement par le CNRM-GAME et le Laboratoire d'Aérologie de Toulouse. C'est un modèle non hydrostatique et anélastique qui permet de simuler les mouvements atmosphériques allant de la méso-échelle (~1000 km) jusqu'à une fine échelle de l'ordre du mètre.

Démarrer avec Méso-NH, comme pour tout modèle numérique peut paraître chronophage notamment au cours de la compilation et  la configuration de l'environnement du modèle... Il est pourtant nécessaire d'effectuer ces étapes proprement.

Afin de faciliter la tâche aux futurs utilisateurs de Méso-NH, ce document se décline en deux étapes :

           -   Compilation et configuration de Méso-NH sur ClimServ

           -   Une brève présentation de l'élaboration d'une simulation Méso-NH via un cas test réel.

Il est cependant important de souligner que ce tutorial ne remplace en aucun cas les journées de formation proposées par la communauté des développeurs chaque semestre. Pour plus d'informations relatives à Méso-NH, ses mises à jour ainsi que ses nouvelles versions (une nouvelle version est en général disponible tous les 1-2 ans), veuillez consulter le site web du modèle:

http://mesonh.aero.obs-mip.fr/

  

  Compilation / configuration de Méso-NH

Ce tutorial décompose les différentes étapes de compilation et configuration du modèle numérique Méso-NH via le compilateur Intel Fortran (IFORT) sur Climserv .

Au préalable

Sélectionner IFORT comme compilateur MPI (cf ici)

mpi-selector --yes --user --set openmpi-1.4.3-ifort-x86_64
# se déloguer et/ou ouvrir une nouvelle session et vérifier que la procédure a bien été prise en compte :
mpi-selector --query
default:openmpi-1.4.3-pgfgcc-x86_64
level:user

Les commandes suivantes fonctionnent sous SHELL sh ou bash. Si le SHELL par défaut est csh ou tcsh, se placer sous bash :

bash

Afin d'éxecuter Méso-NH en mode MPI, il est nécessaire d'augmenter la limite par défaut du stacksize. Pour ce faire, créer par exemple, un fichier nommé UNLIMITED comprenant l'instance permettant d'augmenter la limite du stacksize. Il est important de ne pas utiliser l'option unlimited mais d'opter pour une large valeur du stacksize comme ci-dessous:

# créer un fichier nommé UNLIMITED dans le répertoire bin sous $HOME:
cd  ~
mkdir bin
vi bin/UNLIMITED

# copier l'instruction suivante dans le fichier UNLIMITED:
#!/bin/bash
ulimit -s 2000000
$*

 # puis créer un lien vers le dossier bin dans votre .profile, pour ce faire:
vi ~/.profile

# et copier dans le fichier l'instruction suivante:
export PATH=~/bin:.:$PATH 

Télécharger le code

  - Pour les utilisateurs de laboratoires non signataires de la licence Méso-NH (i.e. autres que LMD, LATMOS, LSCE), il est nécessaire de remplir et retourner un formulaire de contrat de licence accessible par le lien: http://mesonh.aero.obs-mip.fr/mesonh410/UserInformation afin de pouvoir télécharger le code de Méso-NH (celui-ci est accessible gratuitement). A noter qu'il est prévu que les prochaines versions du code soient distribuées librement sous licence CeCILL-C.

  - Après enregistrement en tant qu'utilisateur Méso-NH, en transmettant le numéro IP de votre poste à Cet e-mail est protégé contre les robots collecteurs de mails, votre navigateur doit accepter le Javascript pour le voir , le code est téléchargeable à partir http://mesonh.aero.obs-mip.fr/mesonh410/Download .

  - Récupérer le fichier compressé sous l'entête désignée par « Install Méso-NH with a tar file » et le transférer sur ClimServ. 

Nous supposons par la suite que le fichier compressé est nommé PACK-MNH-VX-Y-Z.tar.gz et qu'il est placé sous $HOME sur ClimServ.

  - Décompresser le fichier:

cd $HOME
tar -zxvf PACK-MNH-VX-Y-Z.tar.gz 

  - Puis changer les lettres X-Y-Z du dossier généré en rapport avec la version de Méso-NH utilisée, à titre d'exemple la commande suivante renomme le dossier MNH-VX-Y-Z en MNH-V4-10-1, considérant la version V4-10-1 de Méso-NH :

mv MNH-VX-Y-Z MNH-V4-10-1

Nous nous considérerons par la suite dans la configuration de l’installation de la version V4-10-1 de Méso-NH et nous placerons dans le dossier MNH_Version=$HOME/MNH-V4-10-1. Néanmoins l'installation d'une autre version de Méso-NH s'effectue identiquement. A noter que les instructions de l'installation décrites ci-dessous sont aussi disponibles en anglais dans le fichier A-INSTALL placé dans le dossier MNH_Version.

Configuration de l'environnement Méso-NH

La configuration suivante est basée sur la compilation du code via IFORT en mode MPI.

  -  Positionner les variables par les commandes suivantes:

export ARCH=${ARCH:-LXifort}
export VER_MPI=${VER_MPI:-MPIAUTO}
export OPTLEVEL=${OPTLEVEL:-02}
export MNH_NCWRIT=MNH_NCWRIT

   - Après avoir sauvé les modifications, toujours dans le même dossier, exécuter la configuration :

cd $MNH_Version/src
configure

Cette exécution génère un fichier profile_mesonh-LXifortI4-MNH-V4-10-1-MPIAUTO-02 dans le dossier $MNH_Version/conf. A NOTER : l'extension de ce fichier LXifortI4-MNH-V4-10-1-MPIAUTO-02 résume les différents choix de configuration effectués à l'étape précédente.

  -  Exécuter ce nouveau fichier :

. $MNH_Version/conf/profile_mesonh-LXifortI4-MNH-V4-10-1-MPIAUTO-02

Compilation

   - Après avoir effectué la configuration de l'environnement Méso-NH, lancer la compilation dans le dossier $MNH_Version/src:

cd $MNH_Version/src
make -j 2

!!! Dans ce cas, seuls 2 processeurs sont utilisés pour la compilation, leur nombre peut bien évidemment être augmenté ce qui accélérera la compilation.

  - Enfin il est nécessaire d'installer les nouveaux exécutables dans le répertoire $MNH_Version/exe :

cd $MNH_Version/src
make installmaster

Tester quelques cas exemples de run

Il est souhaitable au préalable de lancer quelques cas tests. Ceux-ci sont disponibles dans $MNH_Version/MY_RUN/KTEST

Pour chaque cas test, se placer dans le dossier correspondant et lancer le script nommé run_nomdutest, exemple:

cd $MNH_Version/MY_RUN/KTEST/001_2Drelief
run_001_2Drelief

Veuillez vérifier au préalable que dans chaque script run contenu dans chaque sous dossier de l'exemple, l'exécution de l'instance se fasse en MPI i.e. :

time ${MPIRUN} nom_de_l'exécutable
# et non :
time ${MONORUN} nom_de_l'exécutable
# auquel cas remplacer ${MONORUN} par ${MPIRUN}

 

Mise en oeuvre d'une simulation Méso-NH 

Un documentation très complète sur la modélisation Méso-NH est accessible via les différents liens :

  -  Tutorial (http://mesonh.aero.obs-mip.fr/mesonh410/MesonhTutorial?action=AttachFile&do=get&target=doc_francais.pdf)

  -  Guides et documentation scientifiques (http://mesonh.aero.obs-mip.fr/mesonh410/BooksAndGuides)


Nous proposons ici de rappeler brièvement les différentes étapes à mettre en oeuvre afin d'élaborer une simulation Méso-NH. Pour ce faire un exemple de simulation de cas réel est disponible sur le serveur intéractif camelot dans le répertoire /homedata/instmeso . Ce cas test reprend la simulation de l'état troposphérique du 15 Novembre 2008 de 6:00 à 18:00UTC au nord de la latitude 50°N dans une fenêtre géographique centrée sur la Mer de Norvège.


Dans chaque répertoire, un fichier README reprend les paramètres principaux de chacune des étapes nécessaires. Ils ne sont pas tous détaillés, néanmoins chaque option ou paramétrisation est reprise clairement dans le guide pour utilisateur.

Exécution du cas test

Les scripts suivants sont exécutés en mode batch sur le cluster (voir article ici ).

Lors de l'exécution, le nombre de noeuds (spécifié par nodes dans l'instance ci-dessous) et de processeurs par noeud (spécifié dans ppn) requis sont indiqués au début de chaque job via l'instruction PBS:

#PBS -l "nodes=2:ppn=2"

Dans cet exemple, la commande mpirun lancera 4 instances de Méso-NH en parallèle.
De même, le temps alloué pour chaque job est déclaré via la commande:

#PBS -q day

Ici le temps maximum alloué au job est de 24 heures, pour plus de détails voir le présent article .
Chaque script est soumis au cluster de calcul à partir du dossier où il est écrit par la commande qsub:

qsub nom_du_script.job
 

Les étapes nécessaires à l'élaboration d'une simulation Méso-NH 

 

  - L'étape « PRE_PGD »
Elle correspond à la préparation des fichiers physiographiques et à la définition de la grille horizontale de calcul (discrétisation et longueur du domaine selon les deux axes). La réalisation de cette étape est contenue dans le dossier :001_PRPGD.

Exécuter le calcul par le du fichier prpgd.job :

qsub prpgd.job

Ce job va générer une namelist  nommée PRE_PGD1.nam , il est important de signaler que cette dénomination doit être maintenue car PRE_PGD1.nam est directement pointé par l'exécutable.

 

  - L'étape « PREP_REAL_CASE »
 Etape au cours de laquelle les fichiers de couplage sont préparés et la grille verticale du domain de calcul définie. La réalisation de cette étape est contenue dans le dossier :002_PREAL.

Exécuter le calcul par le biais du job preal.job :

qsub preal.job

De la même manière que pour l'étape  PRE_PGD, le nom de la namelist générée PRE_REAL1.nam ne doit pas être changé.

 

   - L'étape « MODEL»
Cette étape est accessible dans le dossier :003_MODEL. Faire tourner mmodel.job en utilisant la commande :

qsub mmodel.job

Cette procédure permet la création d'une namelist EXSEG1.nam dont le nom ne doit pas être changé identiquement aux autres étapes. La simulation de cette exemple est segmentée en deux parties de chacune 21600s. Les fichiers de sortie sont  nommés PLW01.1.SEG01.001.des, PLW01.1.SEG01.001.lfi, PLW01.1.SEG01.002.des et PLW01.1.SEG01.002.lfi pour le premier segment – identiquement en changeant SEG01 par SEG02 pour le deuxième segment.
Le nom des fichiers de sortie est construit comme suit :
AAAAA.n.BBBBB.mmm
où AAAAA et BBBBB doivent être composés de 5 caractères, ils sont spécifiés dans NAM_CONF sous CEXP et CSEG. n représente le nombre de modèles imbriqués et mmm le numéro de la sortie pour chaque segment. (cf le présent lien ).

 

  - L'étape « DIAGNOSTIQUE»
La méthode qui est proposée dans le dossier 004_DIAG permet en exécutant diag.job :

  • Le calcul de variables diagnostiques à partir des résultats du run précédent.
  • de convertir les fichiers synchrones issus des simulations en fichiers diachroniques via l'outil conv2dia (pour les définitions de fichiers synchrones et diachroniques consulter cette documentation)
  • d'extraire les champs sur une zone délimitée, de les interpoler et de les écrire dans un format choisi via un outil nommé extractdia.

 

   - Visualisation des résultats
Dans cet exemple, nous avons choisi de visualiser les résultats en utilisant NCL. Exécuter plotPLW_Analyses_final.pl contenu dans le dossier 005_POST_TREATMENT. Différents exemples de cartes sont présentés.

 

Exécution d'une instance en mode intéractif

Avant toute exécution d'une des étapes définies précédemment, exécuter le fichier  profile_mesonh-LXifortI4-MNH-V4-10-1-MPIAUTO-02 contenu dans le répertoire $MNH_Version/src:

cd $MNH_Version/conf
.  profile_mesonh-LXifortI4-MNH-V4-10-1-MPIAUTO-02

et se placer dans le dossier contenant l'instance à lancer.

# L'exécution de l'étape PRE_PGD se fait par le biais de la commande:
$SRC_MESONH/src/dir_obj${XYZ}/MASTER/PREP_PGD
# Pour l'étape PREP_REAL_CASE:
${MPIRUN} $SRC_MESONH/src/dir_obj${XYZ}/MASTER/PREP_REAL_CASE
# Et pour l'étape MODEL:
${MPIRUN} $SRC_MESONH/src/dir_obj${XYZ}/MASTER/MESONH


Dernière mise à jour : ( 03-03-2014 )