| 49 | ==== Description du job CMORizeIt.job ==== |
| 50 | * initialisation de différentes variables |
| 51 | * déclaration du path de libIGCM |
| 52 | * source fichier IPSL-DRSrc dans lequel pour chaque type de table sont déclarées les variables ipsl_freq_path, cmor_frequency et ipsl_freq_file |
| 53 | |
| 54 | * ipsl_freq_path = [TS_MO, TS_DA, TS_HF, TS_YR] --> noms des répertoires dans lesquels sont stockés les différents Time Series créées avec libIGCM |
| 55 | * cmor_frequency = [yr, mon, day, da, 6hr, 3hr, subhr, fx] --> fréquences standard définies par cmor |
| 56 | * ipsl_freq_file = [1M, 1Y, 1D] --> nomenclature libIGCM lors de la création des fichiers de sorties (ex: abrupt4xCO22_18500101_19491231_1M_iwcon.nc) |
| 57 | |
| 58 | * création des répertoires de RUN (je ne sais pas vers quoi pointe RUN_DIR_PATH, donc je l'ai remplacé par $SCRATCHDIR/CMORizeIt pour avoir la main dessus) |
| 59 | * copie dans le répertoire de RUN du config.def, de la table.def et de la grille (les grilles ORCA sont nécessaires lorsque l'on tourne avec NEMO) |
| 60 | * mise à jour du config.def à partir des variables déclarée plus haut (avec la commande CMOR_sed). Utile lorsque l'on veut utiliser le même config.def pour plusieurs tables. |
| 61 | * Repère la liste des variables déclarée dans la colonne IPSL |
| 62 | {{{ |
| 63 | liste_var=$( cat table.def | grep -v \# | grep -v ^" "| awk -F\| '{print $1}' ) |
| 64 | }}} |
| 65 | * Boucle sur les différentes variables : |
| 66 | * pour chacune d'entre elles on va trouver le nom cmor de cette variable avec la commande |
| 67 | {{{ |
| 68 | cmor_var=$( cat table.def | grep -v \# | grep ^"${var} " | awk -F\| '{print $4}' ) |
| 69 | }}} |
| 70 | * et son modèle avec la commande |
| 71 | {{{ |
| 72 | cmor_realm=$( cat table.def | grep -v \# | grep ^"${var} " | awk -F\| '{print $6}' | awk "-F " '{print $1}' ) |
| 73 | }}} |
| 74 | * établie la correspondance entre les modèles cmor et les composantes libIGCM |
| 75 | {{{ |
| 76 | ex : |
| 77 | [ ${cmor_realm} = atmos ] && ipsl_comp=ATM |
| 78 | }}} |
| 79 | * définition du cmor_path qui est la nomenclature sous laquelle seront stockés les fichiers finaux. |
| 80 | * définition du ipsl_path qui pointe vers le répertoire Analyse/ contenant les TS à cmoriser. |
| 81 | * Boucle sur ipsl_freq_path (rappel les différents type de TS) et pour chacun on teste le cmor_frequency. |
| 82 | * Si cmor_frequency = fx on va analyser le fichier LMDZ96x95x39.nc (qui contient les variables aire et phis), sinon on va chercher la TS correspondant à la variable. |
| 83 | * On appelle ce fichier (LMDZ96x95x39 ou TS) candidat. Si il y a plusieurs variables définies dans la table, candidat est alors une liste de fichiers TS. |
| 84 | * Si cmor_frequency n'est pas fx on analyse le nom du candidat pour connaître la date de début et la date de fin de la période (yearBeg, monthBeg, yearEnd, monthEnd) |
| 85 | * on définit cmor_file qui sera le nom du fichier final à la norme Cmor (contient le nom du modèle, la fréquence, le nom du répertoire parent, la date de début et la date de fin de la période étudiée) |
| 86 | * candidat devient data.nc qui sera le fichier d'entrée de ts2ipcc |
| 87 | * Si la variable à cmoriser est en 3D il faut récupérer la TS de psol qui sera renommée pression.nc et utilisée également par ts2ipcc |
| 88 | |
| 89 | * pour finir on lance ts2ipcc |
| 90 | {{{ |
| 91 | if [ ${cmor_frequency} = "fx" ]; then |
| 92 | ./ts2ipcc data.nc ${var} > ${POST_DIR}/${OutFile} 2>&1 |
| 93 | elif [ ${cmor_frequency} = "yr" ]; then |
| 94 | cdo -settime,12:00 -setday,2 -setmon,7 -settunits,seconds data.nc data2.nc |
| 95 | ncrename -d time,time_counter -v time,time_counter data2.nc |
| 96 | mv data2.nc data.nc |
| 97 | CMOR_sed config.def force_timebnds true |
| 98 | ./ts2ipcc data.nc > ${POST_DIR}/${OutFile} 2>&1 |
| 99 | else |
| 100 | ./ts2ipcc data.nc > ${POST_DIR}/${OutFile} 2>&1 |
| 101 | fi |
| 102 | }}} |