Différences entre versions de « Nemo restart »

De POLR
Sauter à la navigation Sauter à la recherche
Ligne 70 : Ligne 70 :
 
'''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 ====
  
Ce fichier est le gabarit qui est utilisé par **lance_nemo_run.sh**
+
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
+
pour créer le fichier ''namelist_cfg'' du modèle ''NEMO''. Ce fichier
 
doit être édité par l'utilisateur.
 
doit être édité par l'utilisateur.
  
Ligne 79 : Ligne 79 :
  
  
**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.   
+
'''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
+
==== 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.
+
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) .
 
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.  
+
'''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
+
==== prep_nemo_run.sh ====
  
Ce script _bash_ sert à initialiser l'environnement nécessaire au
+
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
 
lancement du modèle, que ce soit pour une première itération (départ
 
au repos) ou à partir de fichiers de redémarrage.
 
au repos) ou à partir de fichiers de redémarrage.
Ligne 100 : Ligne 100 :
  
  
**Note :** Ce fichier doit absolument avoir pour nom
+
'''Note :''' Ce fichier doit absolument avoir pour nom
   _prep_nemo_run.sh_ et doit résider dans le répertoire d'exécution du
+
   ''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
+
   modèle car il sera appelé par le script '''lance_job.pbs''' après
 
   l'exécution du modèle.
 
   l'exécution du modèle.
  
  
  
### lance_nemo_run.sh
+
==== lance_nemo_run.sh ====
  
Ce script _bash_ sert à créer les fichiers _namelists_ des modèles
+
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'' et ''CICE4'' et à soumettre une tâche pour l'exécution de
**NEMO**.
+
''NEMO''.
  
  
Ligne 118 : Ligne 118 :
  
  
**Note :** Ce fichier doit absolument avoir pour nom
+
'''Note :''' Ce fichier doit absolument avoir pour nom
  _lance_nemo_run.sh_ et doit résider dans le répertoire d'exécution
+
''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**
+
   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.
 
   afin de lancer une nouvelle itération de l'exécution du modèle.
  
### restart.db
+
==== restart.db ====
  
 
Ce fichier sert à contrôler la séquence des restarts. Il contient la
 
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
 
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
 
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
+
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
+
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
 
première itération (pas de restart) et mis à jour à chaque nouvelle
 
itération.
 
itération.
  
Le fichier **restart.db** a le format suivant :
+
Le fichier '''restart.db''' a le format suivant :
 +
 
 +
  Numéro_itération Pas_de_départ Pas_final
  
```
 
Numéro_itération Pas_de_départ Pas_final
 
```
 
  
 
Par exemple, pour une simulation sur 10 jours, avec restart quotidien
 
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
+
et 288 pas de temps par jour, lors de sa création '''restart.db''' aura
 
le contenu suivant:
 
le contenu suivant:
  
```
+
  1 1 288  
1 1 288  
 
```
 
  
 
et après cinq restarts :
 
et après cinq restarts :
  
```
+
  1 1 288
1 1 288
+
  2 289 576
2 289 576
+
  3 577 864
3 577 864
+
  4 865 1152
4 865 1152
+
  5 1153 1440
5 1153 1440
 
```
 
  
 
Habituellement, ce fichier n'a pas à être modifié par l'utilisateur.
 
Habituellement, ce fichier n'a pas à être modifié par l'utilisateur.
  
### time.step
+
==== time.step ====
  
Ce fichier est créé et mis à jour par le modèle **NEMO** en cours
+
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
+
d'exécution. Il contient une seule valeur, soit le numéro du dernier
 
pas de temps complété. Avant de préparer une nouvelle itération du
 
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
+
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
+
bien terminée en comparant le contenu des fichiers '''restart.db''' et
**time.step**.
+
'''time.step'''.
  
 
Ce fichier doit être présent et ne doit pas être modifié (ou
 
Ce fichier doit être présent et ne doit pas être modifié (ou

Version du 16 mars 2020 à 16:59

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 numéro 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