Nemo restart

De POLR
Révision datée du 17 mars 2020 à 16:33 par Caveenj (discussion | contributions) (→‎Contexte)
(diff) ← Version précédente | Voir la version actuelle (diff) | Version suivante → (diff)
Sauter à la navigation Sauter à la recherche

Système de (re)démarrage automatique du modèle NEMO

Contexte

Le projet nemo_restart est composé d'un ensemble de scripts qui permet de mettre en place la configuration nécessaire au lancement du modèle NEMO. L'exécution du modèle peut se faire aussi bien à partir d'un état au repos (pas de temps 0) qu'à partir d'un état conservé dans des fichiers de redémarrage (restart). nemo_restart fournit donc un environnement permettant de tourner une longue simulation en la fractionnant (i.e., par itération)


NOTE : Ici, le mot itération signifie une intégration du modèle sur un sous-ensemble de pas de temps lorsqu'une simulation complète est fragmentée avec des fichiers de restart.


Avant d'utiliser nemo_restart, il faut initialiser l'environnement dans son répertoire de travail en faisant un appel au script init_nemo_restart.sh .


L'environnement d'exécution est initialisé par le script prep_nemo_run.sh qui, une fois l'environnement mis en place, fait un appel au script lance_nemo_run.sh qui, à son tour, fait un appel à _qsub_ lance_job.pbs.


Tout le processus de (re)démarrage est contrôlé par trois fichiers : env_polr.sh, restart.db et time.step. Ce sont ces trois fichiers qui sont consultés par les scripts prep_nemo_run.sh et lance_nemo_run.sh lors de la préparation de l'environnement et pour la soumission de la tâche résultante. Un gabarit pour le fichier env_polr.sh est fourni par le système nemo_restart.

En plus de ces trois fichiers, nemo_restart fournit des gabarits qui doivent être édités par l'utilisateur. Pour le modèle NEMO, ce fichier se nomme namelist_cfg_polr et pour le modèle de glace CICE4, il se nomme ice_in_polr. C'est à partir de ces deux gabarits que le script lance_nemo_run.sh crée les fichiers de namelists ice_in et namelist_cfg utilisés lors de la simulation.


Les paramètres complémentaires contrôlant le comportement du modèle sont fournis dans les fichiers de contrôle habituels (e.g. iodef.xml, field_def.xml, etc.).

Bref, en ce qui concerne l'exécution proprement dite du modèle, nemo_restart ne sert qu'à créer les fichiers de namelist appropriés (namelist_cfg et ice_in). Le reste des fonctionnalités des scripts de nemo_restart ne se préoccupent que de la sauvegarde des fichiers restart et de la mise en place de l'environnement pour la prochaine exécution (itération) du modèle, soit :

  • vérification de la validité de la dernière itération (le modèle n'a pas planté)
  • ménage de fichiers avant la prochaine itération
  • sauvegarde des fichiers de redémarrage
  • création de liens vers ces fichiers de redémarrage pour la prochaine itération
  • calcul des pas de temps de la prochaine itération (mise à jour du fichier restart.db)

Description des fichiers et scripts du projet nemo_restart

env_polr.sh

Ce fichier bash contient toutes les variables d'environnement qui sont nécessaires aux scripts prep_nemo_run.sh et lance_nemo_run.sh. Il doit être édité par l'utilisateur avant de lancer le modèle.

Pour une description complète, consultez le document env_polr.sh .

Note : Ce fichier doit absolument avoir pour nom env_polr.sh et doit résider dans le répertoire d'exécution du modèle.

namelist_cfg_polr

Ce fichier est le gabarit qui est utilisé par lance_nemo_run.sh pour créer le fichier namelist_cfg du modèle NEMO. Ce fichier doit être édité par l'utilisateur.

Pour une description complète, voir le document namelist_cfg_polr .


Note : Ce fichier doit absolument avoir pour nom namelist_cfg_polr et doit résider dans le répertoire d'exécution du modèle.

ice_in_polr

Ce fichier est le gabarit qui est utilisé par lance_nemo_run.sh pour créer le fichier ice_in du modèle CICE4. Ce fichier doit être édité par l'utilisateur.

Pour une description complète, voir le document ice_in_polr .


Note : Ce fichier doit absolument avoir pour nom_ice_in_polr et doit résider dans le répertoire d'exécution du modèle.

prep_nemo_run.sh

Ce script bash sert à initialiser l'environnement nécessaire au lancement du modèle, que ce soit pour une première itération (départ au repos) ou à partir de fichiers de redémarrage.

Pour une description complète, voir le document prep_nemo_run.sh .


Note : Ce fichier doit absolument avoir pour nom prep_nemo_run.sh et doit résider dans le répertoire d'exécution du modèle car il sera appelé par le script lance_job.pbs après l'exécution du modèle.

lance_nemo_run.sh

Ce script bash sert à créer les fichiers namelists des modèles NEMO et CICE4 et à soumettre une tâche pour l'exécution de NEMO.


Pour une description complète, voir le document lance_nemo_run.sh .


Note : Ce fichier doit absolument avoir pour nom lance_nemo_run.sh et doit résider dans le répertoire d'exécution du modèle car il sera appelé par le script prep_nemo_run.sh afin de lancer une nouvelle itération de l'exécution du modèle.

restart.db

Ce fichier sert à contrôler la séquence des restarts. Il contient la liste des pas de temps complétés lors des itérations précédentes ainsi que les pas de temps de la prochaine itération à faire (ou en cours). restart.db est un fichier en format texte qui est créé et mis à jour le script prep_nemo_run.sh ; il est créé lors de la première itération (pas de restart) et mis à jour à chaque nouvelle itération.

Le fichier restart.db a le format suivant :

  Numéro_itération Pas_de_départ Pas_final


Par exemple, pour une simulation sur 10 jours, avec restart quotidien et 288 pas de temps par jour, lors de sa création restart.db aura le contenu suivant:

  1 1 288 

et après cinq restarts :

  1 1 288
  2 289 576
  3 577 864
  4 865 1152
  5 1153 1440

Habituellement, ce fichier n'a pas à être modifié par l'utilisateur.

time.step

Ce fichier est créé et mis à jour par le modèle NEMO en cours d'exécution. Il contient une seule valeur, soit le numéro du dernier pas de temps complété. Avant de préparer une nouvelle itération du modèle, prep_nemo_run.sh s'assure que la dernière itération s'est bien terminée en comparant le contenu des fichiers restart.db et time.step.

Ce fichier doit être présent et ne doit pas être modifié (ou effacé). Sinon, tout le mécanisme de restart va être interrompu.


Schéma de la séquence de traitement

Diagramme flux.png


Utilisation de nemo_restart

Pour mettre en place l'environnement nemo_restart dans le répertoire d'une simulation, on doit faire un appel au script init_nemo_restart.sh. Ce script créera des copies de tous les fichiers (gabarits et scripts) du système dans le répertoire courant. Il est ainsi possible de modifier les gabarits et scripts à sa guise et de les conserver avec son expérience (e.g., git add à coffre)

Avant d'écraser un fichier déjà existant dans le répertoire courant, init_nemo_restart.sh demande une confirmation de la part de l'utilisateur. On peut donc toujours faire un appel à init_nemo_restart.sh pour récupérer ou remplacer un des fichiers du système.

De plus, init_nemo_restart.sh créera le répertoire ice_restart_dir pour les fichiers de redémarrage du modèle de glace CICE.

Exemples d'utilisation

Pour initialiser un nouvel environnement :


module load nemo_restart
init_nemo_restart
installation de env_polr.sh
installation de namelist_cfg_polr
installation de ice_in_polr
installation de lance_job.pbs
installation de prep_nemo_run.sh
installation de lance_nemo_run.sh
creation de  ./ice_restart_dir/
*****************************************
Le repertoire du modele de glace est  ./ice_restart_dir/
  
Si vous modifiez la valeur de restart_dir
dans le gabarit ice_in_polr
vous devrez creer le repertoire manuellement.
*****************************************


Pour récupérer ou mettre à jour uniquement le fichier env_polr.sh :


 module load nemo_restart
 init_nemo_restart

 ***** Fichier env_polr.sh existe *****
 Voulez-vous le remplacer?
 1) Oui
 2) Non
 #? 1
 remplacement de env_polr.sh
 ***** Fichier namelist_cfg_polr existe *****
 Voulez-vous le remplacer?
 1) Oui
 2) Non
 #? 2
 on conserve
 ***** Fichier ice_in_polr  existe *****
 Voulez-vous le remplacer?
 1) Oui
 2) Non
 #? 2
 on conserve
 ***** Fichier lance_job.pbs  existe *****
 Voulez-vous le remplacer?
 1) Oui
 2) Non
 #? 2
 on conserve
 ***** Fichier prep_nemo_run.sh  existe *****
 Voulez-vous le remplacer?
 1) Oui
 2) Non
 #? 2
 on conserve
 ***** Fichier lance_nemo_run.sh  existe *****
 Voulez-vous le remplacer?
 1) Oui
 2) Non
 #? 2
 on conserve
 *****************************************
 Le repertoire du modele de glace est  ./ice_restart_dir/
  
 Si vous modifiez la valeur de restart_dir
 dans le gabarit ice_in_polr
 vous devrez creer le repertoire manuellement.
 *****************************************
 



Une fois l'environnemet en place, il suffit d'éditer les gabarits namelist_cfg_polr, ice_in_polr et env_polr.sh selon ses besoins et d'ajuster le script de soumission lance_job.pbs.


Ensuite,il suffit de faire un appel à prep_nemo_run.sh pour lancer la simulation.




Auteur : James Caveen

Date : décembre 2019

Fortement inspiré des scripts RAPPAT.ksh et POST-TREATMENT.ksh du CMC