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