Boîte à outils LMDZ
Outils développés dans le cadre de la contribution de l'IPSL à l'IPCC
ts2IPCC.F90
Un filtre permettant de ré-écrire des fichiers contenant la série temporelle d'une variable à la norme demandée par l'IPCC/PCMDI. Utilise la bibliothèque CMOR
Mode d'emploi :
- récupérer les sources sur le dépôt svn par un
svn checkout http://svn.lmd.jussieu.fr/LMDZ/BOL/IPCC_AR4
(l'archive SVN) - se placer dans PCC_AR4 et compiler ts2IPCC.F90
- bien remplir le fichier de configuration config.def
- lancer ./ts2IPCC
- le fichier ré-écrit à la mode CMOR se trouve dans le répertoire fils spécifié dans le fichier de configuration
Classement en régime de temps
geo2reg.F90
L'outil permet de classer les données issues du modèle en régime de temps: c'est-à-dire qu'il classe les données dans des boîtes selon la valeur d'un des champs du modèle (par défaut la vitesse verticale à 500 hPa) en conservant la coordonnée verticale et la coordonnée temps. Pour l'instant ne traite que les fichiers histmth.
Mode d'emploi:
- récupérer les sources sur le dépôt SVN par un
svn checkout http://svn.lmd.jussieu.fr/LMDZ/BOL/IClass_Reg
(l'archive SVN) - se placer dans /Class_Reg et compiler geo2reg
- modifier le fichier de configuration config.def, en indiquant la localisation de l'executable, la liste des variables à traiter, les noms des fichiers histoire à traiter
- lancer le script geo2reg.script
- si tout s'est bien passé, on récupère un fichier result.nc contenant les variables classées.
Fabriquer des champs de guidage
Voir la page suivante sur LMDZPedia 'Création des fichiers de guidage et adaptation de l'exécution'
Différences entre les résultats de deux simulations
max_diff_nc
compare deux fichiers NetCDF. Il apparie chaque variable d'un fichier avec la variable de même nom (ou, au choix, de même numéro) dans l'autre fichier. Pour chaque paire de variables ainsi choisie il calcule le maximum de la différence absolue et le maximum de la différence relative.
Le script selective_diff.py compare deux répertoires. Dans chaque répertoire, il sélectionne les fichiers de texte ou NetCDF. Parmi ces fichiers, il apparie ceux de même nom dans les deux répertoires. Pour chaque paire de fichiers ainsi choisie il présente une synthèse des différences. Pour des fichiers textes, il donne les différences détaillées seulement si elles sont suffisamment peu nombreuses. Pour les fichiers NetCDF, il indique si la différence se trouve dans les en-têtes ou dans la partie données. Il détaille éventuellement les différences dans les en-têtes et, pour la partie données, indique dans quelles variables sont les différences. Facultativement, selective_diff.sh
peut créer un fichier NetCDF de différences ou appeler max_diff_nc
.
Installation des sources de LMDZ 1D
Si vous voulez utiliser LMDZ en configuration à une dimension, téléchargez LMDZ (par exemple avec svn checkout
), téléchargez ici la dernière version du modèle 1D (dont le nom a la forme suivante 1Dyyyymmdd.tar.gz). Placez-vous dans le répertoire de LMDZ, puis décompactez le 1D et executez le script run.sh qui fait tourner plusieurs cas tests. Cela donne les commandes suivantes, en remplacant yyyymmdd par la date choisie:
wget http://www.lmd.jussieu.fr/~lmdz/DistribG95/1Dyyyymmdd.tar.gz
tar xvzf 1Dyyyymmdd.tar.gz
cd 1D
run.sh
acroread all.pdf (le fichier all.pdf contient pour 6 différents cas le tracé de la nébulosité et des précipitations).
Vous pouvez ensuite dans run.sh, modifier listecas qui est la liste des cas sur lesquels vous souhaitez travailler ainsi que listedef qui contient les différents packages physiques.
Dans 1D/DOC vous trouverez deux fichiers pdf. L'un montre la localisation géographique des cas disponibles et l'autre explique l'organisation de l'arborescence du modèle: où est le code, où sont les définitions des différents cas et où sont les résultats.
Différences entre deux ensembles de fichiers .def
Le script diffdef.sh
compare deux ensembles de fichiers .def
de façon plus intelligente que la simple commande diff :
- il ignore les différences dues aux espaces, à la casse, aux commentaires ;
- il considère comme identiques les valeurs y ou true d'une part, n ou false d'autre part, données à une variable logique ;
- il considère comme identiques des variables réelles formatées différemment, par exemple
0.005
et5e-3
; - il compare les lignes correspondant aux variables de même nom, quelles que soient leurs positions dans les fichiers, quels que soient les fichiers
.def
dans lesquels elles apparaissent.
Installation
Le script diffdef.sh
est distribué avec LMDZ, dans le sous-répertoire tools. Pour l'exécuter, vous avez besoin des interpréteurs Bash et Python, et des versions GNU des utilitaires cut, sort et uniq.
Si vous voulez déplacer le script diffdef.sh
, vous devez déplacer au même endroit le fichier compare_real.py
. (diffdef.sh
appelle le script compare_real.py
.)
Utilisation
Placez chaque ensemble de fichiers .def
dans un répertoire. Les deux répertoires doivent être différents. Le script lit dans chaque répertoire tous les fichiers dont le suffixe est .def
, autres que traceur.def
. Lancez le script diffdef.sh
depuis n'importe où, en donnant en arguments les chemins des deux répertoires :
diffdef.sh directory_1 directory_2
Le script vérifie d'abord que, dans chacun des deux ensembles, aucune variable n'apparaît plusieurs fois. Le script s'arrête et affiche un message d'erreur si une variable est répétée dans un ensemble.
Le script crée quatre fichiers :
- Un fichier
common_lines
dans le répertoire courant. Ce fichier contient les lignes "variable = valeur" communes aux deux ensembles (même nom de variable, même valeur). - Un fichier
uniq_var
dans chacun des deux répertoires arguments. Ce fichier contient les lignes "variable = valeur" pour des variables qui n'apparaissent que dans ce répertoire. - Un fichier
uniq_val
dans le répertoire courant. Ce fichier contient les lignes "variable = valeur1 valeur2" pour des variables apparaissant dans les deux ensembles, mais avec des valeurs différentes.
Visualisation des fichiers limit.nc et startphy.nc (ou restartphy.nc)
Trois possibilités :
- Exécutez le script
phys_grid.py
dans Upgraded fiesta.
- Utilisation du script Ferret polymark :
Sous ferret :
yes? use limit
yes? plot SST[d=1,l=1]
yes? go polymark polygon longitude latitude SST[d=1,l=1] circle .6
Interpolation to pressure levels
Cf. Ml2pl.
Création d'un fichier ECDYN
Le fichier ECDYN.nc
contient des champs atmosphériques et éventuellement la température du sol à une date donnée. Ce fichier est nécessaire en entrée du programme ce0l, qui crée l'état initial pour une simulation. Cf. formation à LMDZ. Le script create_ECDYN.sh
crée le fichier ECDYN.nc
pour le début d'un mois quelconque, pour une année quelconque, à partir des champs ERA interim stockés à l'IDRIS ou sur spirit. Vous devez appartenir au groupe Unix subipsl à l'IDRIS, ou au groupe Unix ecmwf sur spirit, pour pouvoir accéder aux fichiers ERA interim.
Installation
Téléchargez Upgraded fiesta. Le dépôt contient contient deux fichiers exécutables : create_ECDYN.sh
et lnsp_to_SP.py
. Le script create_ECDYN.sh
appelle le script lnsp_to_SP.py
. Les deux scripts doivent être installés dans le même répertoire.
Utilisation
Choisissez l'année et le mois qui vous intéressent dans le script create_ECDYN.sh
: variables year et month, au début du script. Exécutez le script create_ECDYN.sh
à l'IDRIS ou sur spirit.
A ce0l driver for CURIE and ADA
job_ce0l_interannual.bash
This driver for ce0l to build interannual boundary conditions files (limit.nc), intial states and ozone forcing files.
If you are working without modipsl, this tool helps producing boundary conditions files (limit.nc), initial states (start.nc, startphy.nc, first year only) and ozone forcing files (climoz_LMDZ.nc). It generates as much jobs as years in the needed period.
Usage:
You need first to copy the script in your main LMDZ folder (containing the libf/ source folder)
The script is parameterised by several keywords ; all of them have default values, but you are very likely to need to change some to match your needs (ESPECIALLY GENCI_ID), so you need to edit the script before running it.
After setup stage, launch it:
./job_ce0l_interannual.bash
A folder named jobs-ce0l-<res>-<cal>/ is created and it contains one job per year.
Don't submit the jobs too early, because the script checks presence of each required file before adding commands to the jobs, which is quite slow because mfget/tar commands are.
Don't launch the script for periods longer than 200 years, because you might exceed the process number limit of your shell. Instead, launch it several times with distinct years intervals successively. As soon as jobs construction is finished (you can check using ps command), go to the folder and submit the jobs to the queue ; for example:
cd jobs-ce0l-144x142x79-365d for j in `ls`; do llsubmit $j; done # ON ADA for j in `ls`; do ccc_msub $k; done # ON CURIE
You should end up with files (limit_YYYY.nc, climos_LMDZ_YYYY.nc, start.nc, startphy.nc) stored in the OUTDIR you've defined.
Main parameters
- TYPE: type of Sea Ice Concentration (SIC) and Sea Surface Temperature (SST) files you are using:
- AMIP: use Atmospheric Model Intercomparison Project files.
- CPL: use outputs from IPSL coupled model.
- HIST: use LMDZ outputs.
- Yb, Ye: begin-end years
- res: resolution NlonxNlatxNlev
- cal: calendar (earth_360d, earth_365d, earth_366d, gregorian or julian)
- DEFDIR: the folder containing the configuration files (*.def files)
- ok_etat0: flag to get also the dynamical and physical initial state files start.nc and startphy.nc (y/n).
- ok_limit: flag to get the boundary conditions files limit_YYYY.nc (YYYY is a 4 digits year).
- GENCI_ID: your DARI project ID (gen???? for GENCI projects ; REPLACE THE QUESTION MARKS BY YOUR NUMBER FOR CURIE)
- OUTDIR: path for results storage.
- OZODIR: path containing the ozone fields.
- ozo: name of your ozone files (${Y} for year).
- read_climoz: type of ozone used and produced.
- 0: no ozone produced
- 1: mean day & night ozone produced ("tro3" variable read from input files)
- 2: same as 1 + day ozone produced ("tro3_daylight" variable also read from input files)
- keys: keys list to be modified in configuration files (syntax: <def_file>:<key>=<value> ; def_file without extension).
Some comments
- Some more parameters unlisted below might be changed in the main script, but this is not likely to happen very often. Please refer to the script itself for information on them.
- The main differences between the various types of SST/SIC files (TYPE keyword) is the definition of the fractions (sea ice/land ice/land/sea).
- The script manages names changes in particular for DEFSLIST and CLIMSLIST) ; you just have to use pairs of names: <original_name>:<standard_name>, the first as in your archive, the second as needed by ce0l.
- Paths to AMIP (SST, SIC) and other files (Albedo.nc, ECDYN.nc, ECPHY.nc, landiceref.nc, Relief.nc, Rugos.nc) needed by ce0l are stored are known by the script for TGCC/CURIE and ADA/IDRIS. For other TYPE values, you will be asked to enter SSTDIR by hand.
Diurnal cycle
Starting from an LMDZ high frequency history file, you can create a NetCDF file containing the diurnal cycle with the script diurnal_cycle.py. Note that if you want the diurnal cycle for a given month of a series of year, you should first average the history files for this month of your series of years, using for example the NCO operator nces, then apply diurnal_cyle.py to the result of nces. If you want the diurnal cyle as a function of solar time, apply the script solar_time.py to the result of diurnal_cycle.py.