Nemo restart

De POLR
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.


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](env_polr.sh.md) .

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.

      1. 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](namelist_cfg_polr.md) .


    • 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.


      1. 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](ice_in_polr.md) .


    • 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.
      1. 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](prep_nemo_run.sh.md) .


    • 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.


      1. 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](lance_nemo_run.sh.md) .


    • 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.
      1. 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.

      1. 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 numero 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.


    1. Schéma de la séquence de traitement

![alt text](diagramme_flux.png "Diagramme de flux")


    1. 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_.

      1. 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. ? 1

remplacement de env_polr.sh

          • Fichier namelist_cfg_polr existe *****

Voulez-vous le remplacer? 1) Oui 2) Non

  1. ? 2

on conserve

          • Fichier ice_in_polr existe *****

Voulez-vous le remplacer? 1) Oui 2) Non

  1. ? 2

on conserve

          • Fichier lance_job.pbs existe *****

Voulez-vous le remplacer? 1) Oui 2) Non

  1. ? 2

on conserve

          • Fichier prep_nemo_run.sh existe *****

Voulez-vous le remplacer? 1) Oui 2) Non

  1. ? 2

on conserve

          • Fichier lance_nemo_run.sh existe *****

Voulez-vous le remplacer? 1) Oui 2) Non

  1. ? 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](namelist_cfg_polr.md), [ice_in_polr](ice_in_polr.md) et [env_polr.sh](env_polr.sh.md) selon ses besoins et d'ajuster le script de soumission **lance_job.pbs**.


Ensuite,il suffit de faire un appel à [prep_nemo_run.sh](prep_nemo_run.sh.md) pour lancer la simulation.




Auteur : James Caveen

Date : décembre 2019

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