Différences entre versions de « Nemo restart »

De POLR
Sauter à la navigation Sauter à la recherche
(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... »)
 
Ligne 1 : Ligne 1 :
  
# Système de (re)démarrage automatique du modèle **NEMO**
+
== Système de (re)démarrage automatique du modèle '''NEMO'''  ==
  
## Contexte
+
=== Contexte ===
  
Le projet **nemo_restart** est composé d'un ensemble de scripts qui
+
Le projet '''nemo_restart''' est composé d'un ensemble de scripts qui
 
permet de mettre en place la configuration nécessaire au lancement du
 
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 à
+
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
 
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**
+
conservé dans des fichiers de redémarrage (restart). '''nemo_restart'''
 
fournit donc un environnement permettant de tourner une longue
 
fournit donc un environnement permettant de tourner une longue
 
simulation en la fractionnant (i.e., par itération)
 
simulation en la fractionnant (i.e., par itération)
  
  
**NOTE : ** Ici, le mot _itération_
+
'''NOTE :'''  Ici, le mot ''itération'' signifie une intégration du modèle sur un sous-ensemble de pas de
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''.
temps lorsqu'une simulation complète est fragmentée avec des fichiers
 
de _restart_.
 
  
  
 
L'environnement d'exécution est initialisé par le script
 
L'environnement d'exécution est initialisé par le script
**prep_nemo_run.sh** qui, une fois l'environnement mis en place, fait
+
'''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
+
un appel au script '''lance_nemo_run.sh''' qui, à son tour, fait un
appel à _qsub_ **lance_job.pbs**.
+
appel à _qsub_ '''lance_job.pbs'''.
  
  
 
Tout le processus de (re)démarrage est contrôlé par trois fichiers :
 
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
+
'''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
+
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
+
'''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
 
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**.
+
'''env_polr.sh''' est fourni par le système '''nemo_restart'''.
  
En plus de ces trois fichiers, **nemo_restart** fournit des gabarits
+
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
+
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
+
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
+
''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
+
gabarits que le script '''lance_nemo_run.sh''' crée les fichiers de ''namelists'' '''ice_in''' et '''namelist_cfg''' utilisés  lors de la
_namelists_ **ice_in** et **namelist_cfg** utilisés  lors de la
 
 
simulation.
 
simulation.
 
   
 
   
Ligne 46 : Ligne 43 :
  
 
Bref, en ce qui concerne l'exécution proprement dite du modèle,
 
Bref, en ce qui concerne l'exécution proprement dite du modèle,
**nemo_restart** ne sert qu'à créer les fichiers de _namelist_
+
'''nemo_restart''' ne sert qu'à créer les fichiers de ''namelist''
appropriés (namelist_cfg et ice_in). Le reste des fonctionalités des
+
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
+
scripts de '''nemo_restart''' ne se préoccupent que de la sauvegarde des
fichiers _restart_ et de la mise en place de l'environnement
+
fichiers ''restart'' et de la mise en place de l'environnement
 
pour la prochaine exécution (itération) du modèle, soit :
 
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é)
+
* 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
+
* ménage de fichiers avant la prochaine itération
- sauvegarde des fichiers de redémmarage
+
* sauvegarde des fichiers de redémarrage
- création de liens vers ces fichiers de redémarrage pour la prochaine itération
+
* 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_)
+
* 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**
+
 +
=== Description des fichiers et scripts du projet '''nemo_restart''' ===
 +
  
### env_polr.sh
+
==== env_polr.sh ====
  
Ce fichier _bash_ contient toutes les variables d'environnement qui sont
+
Ce fichier ''bash'' contient toutes les variables d'environnement qui sont
nécessaires aux scripts **prep_nemo_run.sh** et
+
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.
+
'''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) .
 
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.   
+
'''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
 
### namelist_cfg_polr

Version du 16 mars 2020 à 16:49

== 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