Comment boucher des trous dans le workflow CMIP6?
Nous vous recommandons la procédure suivante:
On prend pour exemple la simulation CM61-LR-2xCO2-01
- Repérer les trous dans les séries.
Il est nécessaire de bien repérer et noter les variables et les années concernées par ces trous. On utilise pour cela les outils de vérification mis à disposition par G. Levavasseur qu'on trouvera dans la checklist ici:
https://forge.ipsl.jussieu.fr/igcmg/wiki/IPSLCM6/IPSL-CM6A-LR#V%C3%A9rificationsencoursdesimulation
en particulier l'outil nctime -overlap.
Le résultat de nctime -overlap sur la simulation prise en exemple donne pour les séries temporelles de la variable clhcalipso:
Shortest path found WITH overlaps: clhcalipso_CFmon_IPSL-CM6A-LR_abrupt-2xCO2_r1i1p1f1_gr_185001-199912.nc [ clhcalipso_CFmon_IPSL-CM6A-LR_abrupt-2xCO2_r1i1p1f1_gr_195901-199912.nc <-- to remove ] [ clhcalipso_CFmon_IPSL-CM6A-LR_abrupt-2xCO2_r1i1p1f1_gr_191301-199912.nc <-- to remove ] [ clhcalipso_CFmon_IPSL-CM6A-LR_abrupt-2xCO2_r1i1p1f1_gr_193801-199912.nc <-- to remove ]
Le problème étant que XIOS recrée un fichier avec une nouvelle date de départ quand il lui manque un pas de temps, on en déduit de la liste ci-dessus que les années 1912, 1937 et 1958 manquent dans la série temporelle. On peut s'en assurer en utilisant l'outil cdo tinfo sur ces 4 fichiers pour vérifier les dates effectivement contenues dans ces fichiers.
- Relancer la simulation pour reboucher les trous:
Il s'agit maintenant de relancer une simulation parallèle à la simulation originale sur les années manquantes pour boucher les trous des séries temporelles. On prend comme exemple ici l'année à refaire 1958 et on appellera ici CM61-LR-2xCO2-01-REDO-1958, la nouvelle simulation
- on copie le répertoire original
cp -R CM61-LR-2xCO2-01 CM61-LR-2xCO2-01-REDO-1958
- on fait du ménage dans le répertoire CM61-LR-2xCO2-01-REDO-1958
(rm -rf Debug Script* run.card Job*)
- on édite le config.card de la simulation CM61-LR-2xCO2-01-REDO-1958 pour
- renommer la simulation
JobName=CM61-LR-2xCO2-01-REDO-1958
- positionner DateBegin et DateEnd aux bonnes valeurs
DateBegin=1958-01-01 DateEnd=1958-12-31
pour rejouer l'année 1958 - positionner les bonnes valeurs pour les restarts:
#D- Last day of the experience used as restart for this component if Restart=y RestartDate=1957-12-31 #D- Define restart simulation name for all components RestartJobName=CM61-LR-2xCO2-01 #D- Path Server Group Login RestartPath=/ccc/store/cont003/gencmip6/p86fair/IGCM_OUT/IPSLCM6/PROD/abrupt-2xCO2
- renommer la simulation
Attention, si vous n'avez gardé que certaines années de vos restarts, il faudra rejouer plus d'années (vous rapprocher de L. Fairhead ou M.-A. Foujols)
- on s'assure qu'on a bien
Reproducibility_after_restart= y
dans COMP/opa9.card - enfin pour que les nouveaux fichiers aient la bonne année de référence et s'accordent avec le calendrier de la simulation originale , il faut mettre le paramètre LMDZ raz_date à 0 dans le fichier run.def. Pour cela, on commente les lignes suivantes dans DRIVER/lmdz.driver
# if [ ${CumulPeriod} -eq 1 ] ; then # IGCM_comp_modifyDefFile blocker run.def raz_date 1 # else IGCM_comp_modifyDefFile blocker run.def raz_date 0 # fi
- on lance un ../../../libIGCM/ins_job
- on soumet le Job
- une fois l'exécution finie proprement, il faut
- vérifier que la simulation rejouée n'a pas dévié par rapport à la simulation originale: on comparera les solver.stat de l'océan des deux simulations pour l'année en question (ou les fichiers restart pour le modèle forcé)
- renommer les fichiers nouvellement créés et qu'on veut garder pour le bouchage de trou. On se déplace donc dans le répertoire où le workflow CMIP stocke ses fichiers (a priori $GENCMIP6_CCCWORKDIR/IGCM_OUT/.../PROD/..../CM61-LR-2xCO2-01-REDO/CMIP6/ATM), et on constate l'existence d'un fichier
clhcalipso_CFmon_IPSL-CM6A-LR_abrupt-2xCO2_r1i1p1f1_gr_195801-199912.nc
Si on lance cdo tinfo sur ce fichier, on vérifiera que le fichier couvre les dates
Start date : 1958-01-16 12:00:00 End date : 1958-12-16 12:00:00
et on le renomme donc enclhcalipso_CFmon_IPSL-CM6A-LR_abrupt-2xCO2_r1i1p1f1_gr_195801-195812.nc
- une fois le renommage des différents fichiers concernés (un fichier par variable à boucher), on peut relancer une nouvelle année en repartant de l'étape "faire le ménage dans le répertoire" (Marie-Alice et Laurent ont chacun développé des scripts qui permettent d'automatiser cete procédure si un grand nombre d'années sont à refaire, leur demander si besoin)
- Rebouchage effectif des trous des séries temporelles originelles
Une fois toutes les années manquantes rejouées et les fichiers renommées, il faut maintenant déplacer ces nouveaux fichiers dans l'arborescence CMIP6 de la simulation originale, en renommant d'abord les fichiers déjà existants. Pour la variable clhcalipso, la commande cdo tinfo utilisée au 1) nous indique par exemple que le fichierclhcalipso_CFmon_IPSL-CM6A-LR_abrupt-2xCO2_r1i1p1f1_gr_193801-199912.nc
se trouvant ici
$GENCMIP6_CCCWORKDIR/IGCM_OUT/.../PROD/..../CM61-LR-2xCO2-01/CMIP6/ATM
ne couvre que les dates 1938-01-16 à 1957-12-16. On le renommera donc en
clhcalipso_CFmon_IPSL-CM6A-LR_abrupt-2xCO2_r1i1p1f1_gr_193801-195712.nc.
Une fois le renommage de tous les fichiers concernés effectués, on peut recopier les fichiers 'annuels' créés au 2) dans le répertoire original, par exemple
cd $GENCMIP6_CCCWORKDIR/IGCM_OUT/.../PROD/..../CM61-LR-2xCO2-01-REDO/CMIP6/ATM/ cp clhcalipso_CFmon_IPSL-CM6A-LR_abrupt-2xCO2_r1i1p1f1_gr_195801-195812.nc ../../../CM61-LR-2xCO2-01/CMIP6/ATM/