Nemo restart

De POLR
Révision datée du 16 mars 2020 à 16:39 par Caveenj (discussion | contributions) (Page créée avec « # 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... »)
(diff) ← Version précédente | Voir la version actuelle (diff) | Version suivante → (diff)
Sauter à la navigation Sauter à la recherche
  1. Système de (re)démarrage automatique du modèle **NEMO**
    1. 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 fonctionalité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émmarage
- 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_)

    1. Description des fichiers et scripts du projet **nemo_restart**
      1. 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