Aller au contenu. | Aller à la navigation

Outils personnels
Se connecter
Sections
Vous êtes ici : Accueil Utilisateurs Outils Utilisation de LMDZ

Utilisation de LMDZ

Les outils de la boîte à outils développés par le BOL

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 l'archive cvs par un
    cvs -d :pserver:lmdzbrowse@cvs.lmd.jussieu.fr:/home/cvsroot checkout BOL/IPCC
    (l'archive CVS)
  • se placer dans BOL/IPCC 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 l'archive cvs par un
    cvs -d :pserver:lmdzbrowse@cvs.lmd.jussieu.fr:/home/cvsroot checkout BOL/Class_Reg
    (l'archive CVS)
  • se placer dans BOL/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

ncep2gcm.x

Un script qui permet de fabriquer les champs de guidage.

Mode d'emploi


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.sh 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 et 5e-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

Vous avez besoin des interpréteurs Bash et Python, et des versions GNU des utilitaires cut, sort et uniq. Téléchargez l'une des deux archives :

Diffdef.tar (si vous avez la version 2.7 de Python ou une version plus récente)

Diffdef_2_6.tar (si vous avez une version plus ancienne de Python)

Extrayez son contenu. L'archive contient deux fichiers exécutables : diffdef.sh et compare_real.py. Le script diffdef.sh appelle le script compare_real.py. Les deux scripts doivent être installés dans le même répertoire.

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 avec Ferret

    Deux possibilités : utilisation du script Ferret polymark ou utilisation de la fonction reshape de Ferret.

    Pour la méthode avec polymark :

    startphy.nc
    (On suppose que startphy.nc contient la var SST)

    Sous ferret :
    yes? plot SST[d=1,l=@ave]
    yes? plot SST[d=1,l=1]
    yes? go polymark polygon longitude latitude SST[d=1,l=1] circle .6
    yes? go polymark polygon longitude latitude SST[d=1,l=1] circle .6

    limit.nc
    On rajoute d'abord longitude,latitude dans limit.nc
    ncks -v longitude,latitude startphy.nc lonlat.nc
    ncks -A lonlat.nc limit.nc
    Sous ferret :
    yes? plot SST[d=1,l=@ave]
    yes? plot SST[d=1,l=1]
    yes? go polymark polygon longitude latitude SST[d=1,l=1] circle .6
    yes? go polymark polygon longitude latitude SST[d=1,l=1] circle .6


Interpolation to pressure levels

The script ml2pl.sh interpolates history files of LMDZ (files named hist....nc) from model levels to pressure levels. Interpolation is linear in logarithm of pressure. If you want to use this program on the computers Adapp at IDRIS, or Curie at TGCC, or Ciclad at IPSL, the program is already installed at the following paths.

On Adapp:

/workgpfs/rech/lmd/rlmd542/bin/ml2pl.sh

On Curie:

/ccc/work/cont003/igcmg/igcmg/bin/ml2pl.sh

On Ciclad:

/data/guez/bin/ml2pl.sh

Installation

Ml2pl is written in Fortran 95 and Bash. So you need a Fortran 95 compiler and Bash on your machine. Moreover, you need to have the NetCDF library installed, with its Fortran interface. The Fortran interface to the NetCDF library must be installed using the same Fortran compiler than the one you are going to use for Ml2pl.

  1. Download the archive with source files. Extract its content:
    gunzip Ml2pl_with_lib.tar.gz
    tar -xf Ml2pl_with_lib.tar
    and change directory:
    cd Ml2pl_with_lib
  2. Decide which Fortran 95 compiler you want to use. Remember that you need the NetCDF library installed with the chosen compiler. If you have version 4 of the NetCDF library installed then the program nf-config should have been installed with the library. (You can also try the command nc-config instead.) This program will tell you the compiler you need to use with your NetCDF library. Just type:
    nf-config --fc
    You indicate your choice of Fortran compiler by setting the environment variable FC. Here is an example of setting the variable FC in Bash:
    export FC=the-output-of-nf-config--fc
  3. If the NetCDF library installed with the chosen compiler is not in standard locations, you should set the variables NETCDF_INC_DIR and LDLIBS. The directory $NETCDF_INC_DIR should contain the compiled NetCDF module interfaces (usually netcdf.mod and typesizes.mod). Note that the program does not need netcdf.inc. If you have the command nf-config, type:
    nf-config --includedir
    to find out the value of NETCDF_INC_DIR. For example:
    export NETCDF_INC_DIR=the-output-of-nf-config--includedir
    LDLIBS should give the path to the compiled NetCDF libraries and the name of those libraries, in the form required by your compiler. If you have the command nf-config, type:
    nf-config --flibs
    and paste the result of the command, between quotes, into LDLIBS. For example:
    export LDLIBS="the-output-of-nf-config--flibs"
    Here are a few tips to help you define LDLIBS if you do not have the command nf-config nor the command nc-config. Usually, the path to a library should be given in a -L option and the name of a library should be given in a -l option. So for example the adequate definition could be:
    export LDLIBS="-L/usr/lib -lnetcdf"
    which means that libnetcdf.a is to be found in /user/lib. Depending on your NetCDF installation, the Fortran 90 interface of NetCDF may be included in libnetcdf.a or may be in a separate library (usually libnetcdff.a, with two 'f's). If you have a separate library for the Fortran 90 interface, you have to include the path to it and its name in the variable LDLIBS. For example:
    export LDLIBS="-L/user/lib -L/user/lib/NetCDF_gfortran -lnetcdff -lnetcdf"
    Note that the order of options -l is usually important: the library for the Fortran 90 interface should be referenced first. (The order of options -L usually does not matter.)
  4. Optionally, you may choose additional compiler options by setting the variable FFLAGS. For example:
    export FFLAGS=-O3
  5. The parts of makefiles in the directory Compiler_options contain the compiler options for free source form and for reference to NETCDF_INC_DIR. There is one file for each of the following compilers : g95, gfortran, ifort, pgfortran, sxf90, xlf95. If you do not see the compiler you want in this list, you will have to create a similar file for your compiler.
  6. The makefiles are written for GNU make. The command invoking GNU make is usually make or gmake. So, for example, type:
    make
    After compilation, the executable binary file ml2pl should be created in the directory Ml2pl_with_lib. There is also a Bash script ml2pl.sh in the directory Ml2pl_with_lib/Ml2pl.
  7. Decide where you want to keep the executable binary file ml2pl and move it there. (Or you can just leave it where it is, if you want.) We advise not to put it into a directory appearing in your environment variable PATH. This would not be convenient because you will not run ml2pl directly. Instead, you will invoke the script ml2pl.sh.
  8. In the script ml2pl.sh, locate the line:
    executable=...
    Replace the ellipsis by the absolute path to the executable binary file ml2pl. For example:
    executable=~/Ml2pl_with_lib/ml2pl
  9. It may be convenient to move the script ml2pl.sh to somewhere in your PATH.

ml2pl and ml2pl.sh are the only files you will need. So you can trash everything else if you want. (Be careful that if you type make clean in the top directory and ml2pl is still there then it will be deleted.)

Usage

Running the command with argument -h will produce a help message:

$ ml2pl.sh -h
usage: ml2pl.sh [OPTION]... input-file output-file [pressure-file]

Interpolates NetCDF variables from model levels to pressure
levels. The interpolation is linear in logarithm of pressure. The
input variables depend on longitude, latitude, vertical level and
time. There is no constraint on the dimensions.

Options:
   -h                       : this help message
   -p variable              : name of 4-dimensional variable in the input file
                              or the pressure file containing the
                              pressure field at model levels
   -v variable[,variable...]: names of variables you want to interpolate, 
                              and possibly extrapolate if target pressure 
                              level is below surface
   -w variable[,variable...]: names of variables you want to interpolate, 
                              or set to 0 if target pressure level is below
                              surface
   -m variable[,variable...]: names of variables you want to interpolate, 
                              or set to missing if target pressure level is 
                              below surface

input-file, output-file and pressure-file are NetCDF files.

You must list the variables you want to interpolate, each variable
listed after either -v, -w or -m. There must be at least one variable
listed, following either -v, -w or -m.

The pressure field at model levels can be specified in input-file or
pressure-file either through hybrid coefficients and surface pressure
or directly from 4-dimensional pressure. In both cases, pressure must
be given in Pa and decrease when the index of model level
increases. This is checked quickly in the program. If option -p is not
used then the program will look for \"ap\", \"bp\" (hybrid
coefficients) and \"ps\" (surface pressure) in the input file or the
pressure file.

The target pressure levels should be in a text file called
\"press_levels.txt\" in the current directory at run-time. The first
line of the file is skipped, assuming it is a title line. Pressure
levels should be in hPa, in descending order, one value per
line. There is no constraint on these values nor on the number of
values.

Ci-joint un exemple de fichier press_levels.txt.

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 Ciclad. Vous devez appartenir au groupe Unix subipsl à l'IDRIS, ou au groupe Unix ecmwf sur Ciclad, pour pouvoir accéder aux fichiers ERA interim.

Installation

Téléchargez l'archive :

create_ECDYN.tar

Extrayez son contenu. L'archive 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. Doonez à la variable IDRIS la valeur y si vous êtes à l'IDRIS. Exécutez le script create_ECDYN.sh sur la machine Adapp à l'IDRIS ou sur Ciclad.


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.
    This is the sole optional argument of the script.
  • 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.
Attachements
Ajouter un commentaire

You can add a comment by filling out the form below. Plain text formatting. Comments are moderated.

Enter the word