Prep nemo run

De POLR
Sauter à la navigation Sauter à la recherche

Documentation du script prep_nemo_run.sh

Le script prep_nemo_run.sh sert à préparer l'environnement de la prochaine itération du modèle NEMO.

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.

Utilisation

Avant d'utiliser nemo_restart, il faut initialiser l'environnement dans son répertoire de travail en faisant un appel au script init_nemo_restart.sh .


À partir du pas de temps 0 (zéro)

Premièrement, on édite le fichier env_polr.sh et les gabarits namelist_cfg_polr et ice_in_polr pour y indiquer les paramètres de la simulation. Au besoin, on crée aussi le répertoire qui contiendra les fichiers de restart du modèle de glace (ice_restart_dir).

On fait ensuite un appel à prep_nemo_run.sh pour lancer la moulinette.

prep_nemo_run.sh fera alors les opération suivantes:

  • lire le fichier env_polr.sh pour en extraire les informations nécessaires au calcul des premiers pas de temps à exécuter ;
  • calculer les pas de temps de départ et de fin de l'itération à venir ;
  • créer le fichier restart.db et y inscrire une première ligne (e.g., 1 1 7200, pour les pas de 1 à 7200) ;
  • faire un appel à lance_nemo_run.sh qui préparera les namelists des modèles et fera un appel à qsub lance_job.pbs pour lancer la simulation.

Lorsque cette première itération sera complétée, prep_nemo_run.sh sera rappelé automatiquement (par lance_job.pbs) pour initialiser la prochaine itération du modèle.

Pour les itérations suivantes, prep_nemo_run.sh fera les opération suivantes:

  • vérifier que l'itération précédente s'est bien terminée en comparant le contenu des fichiers time.step du modèle (créé par NEMO) et restart.db ;
  • vérifier la valeur de MAXSUB lue dans env_polr.sh afin de s'assurer qu'on doit démarrer une nouvelle itération, sinon, on arrête ;
  • lire le fichier env_polr.sh pour en extraire les informations nécessaires au calcul des prochains pas de temps à exécuter ;
  • calculer les pas de temps de départ et de fin de l'itération à venir ;
  • ajouter à la fin du fichier restart.db une nouvelle ligne pour les prochains pas de temps (e.g., 2 7201 16128) ;
  • effacer les fichiers mesh_mask_* ;
  • déplacer les fichiers de restart dans le sous-répertoire RST/RST_[NO_DE_PAS_DE_TEMPS] ;
  • créer des liens symboliques restart_xxxxx.nc vers ces fichiers de restart ;
  • refaire un appel à lance_nemo_run.sh qui préparera les namelists des modèles et fera un appel à qsub pour poursuivre la simulation.

La séquence se poursuivra jusqu'à ce que le nombre d'itérations soit égal à MAXSUB .

Relancer une simulation stoppée par MAXSUB

Lorsqu'une simulation a été stoppée parce que le nombre d'itérations a atteint la valeur de MAXSUB, on peut poursuivre la simulation en augmentant la valeur de MAXSUB dans le fichier [env_polr.sh](env_polr.sh.md).

Pour relancer la simulation, on fait ensuite un appel à prep_nemo_run.sh.

Relancer une simulation à partir d'anciens restart (Remonter dans le temps)

Pour relancer une simulation à partir de fichiers restart antérieurs au dernier pas de temps (i.e., dernière itération) il faut faire quelques manipulations de fichiers. Voici les étapes à suivre:

  • effacer toutes les lignes du restart.db qui suivent la ligne contenant le dernier pas de temps complété à partir duquel on veut redémarrer (troisième colonne du fichier) ;
  • editer time.step pour y inscrire le dernier pas de temps complété. Il doit être identique au pas de la dernière colonne de restart.db ;
  • editer le fichier ice.restart_file et y iscrire le bon nom de fichier de redémarrage pour la glace ;
  • editer [env_polr.sh](env_polr.sh.md) et y ajuster MAXSUB ;
  • faire un appel à prep_nemo_run.sh pour redémarrer la moulinette.

Toutes ces manipulations seront automatisées dans une version ultérieure de nemo_restart.

Exemple à partir d'anciens restart

Dans cet exemple, le modèle a déjà fait six itérations mensuelles soit du 7 décembre 2015 au 31 mai 2016. Les fichiers de restart ont été créés à la fin de chaque mois. Nous avons donc six restart pour NEMO et CICE et l'environnement a déjà été initialisé par prep_nemo_run.sh pour lancer une nouvelle itération debutant le 1er juin. On suppose ici que l'arrêt a été provoqué parce que MAXSUB a été atteint.


Contenu du fichier restart.db :


1 1 7200
2 7201 16128
3 16129 24480
4 24481 33408
5 33409 42048
6 42049 50976


Contenu du fichier time.step :


    50976


Contenu du fichier ice.restart_file :


./ice_restart_dir/iced.2016-06-01-00000      


Contenu du répertoire ice_restart_dir :


iced.2016-01-01-00000
iced.2016-02-01-00000
iced.2016-03-01-00000
iced.2016-04-01-00000
iced.2016-05-01-00000
iced.2016-06-01-00000


NOTE: Les fichiers de restart créés par CICE contiennent dans leur nom la date de début de la prochaine itération, alors que le nom des restart de NEMO contient le numéro du dernier pas de temps exécuté.

Pour cet exemple, nous allons relancer la simulation à partir du 1er avril 2016. Il nous faut donc redémarrer à partir du pas de temps 33408 (dernier pas de temps du 31 mars) et avec le restart de glace nommé iced.2016-04-01-00000.

Étapes d'édition à faire :

  • On édite restart.db et on efface les lignes suivant le pas 33408 dans la troisième colonne ;
  • On édite time.step et on y remplace la valeur par 33408 ;
  • On édite ice.restart_file et on y remplace la valeur par ./ice_restart_dir/iced.2016-04-01-00000 ;
  • On édite env_polr.sh et on ajuste la valeur de MAXSUB au nombre d'itération à faire.

Après édition on aura donc :


Contenu du fichier restart.db :


1 1 7200
2 7201 16128
3 16129 24480
4 24481 33408


Contenu du fichier time.step :


    33408


Contenu du fichier ice.restart_file :


./ice_restart_dir/iced.2016-04-01-00000      


Contenu du fichier env_polr.sh


...lignes escamotées
export MAXSUB=13


NOTE: Ici MAXSUB a été mis à 13 car on veut terminer la simulation à la fin décembre 2016.


Il ne reste plus qu'à repartir la moulinette en faisant un appel à prep_nemo_run.sh




Auteur : James Caveen

Date : décembre 2019

Fortement inspiré des scripts RAPPAT.ksh et POST-TREATMENT.ksh du CMC