Nemo restart
- 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 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_)
- 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.
- 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.
- 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.
- 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.
- 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.
- 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 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.
- Schéma de la séquence de traitement
![alt text](diagramme_flux.png "Diagramme de flux")
- 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](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