Merci à Jean-Marie Epitalon pour le développement
du script tcl-tk de modification de la table de conversion et pour la rédaction
de ladite table (avec David Salas). Merci à Laurent Terray pour
sa participation à la rédaction du cahier des charges.
Merci aux beta testeurs Virginie Lorant et Christophe Cassou.
L'utilitaire SAFO (Sorties d'Arpege au Format des Océanographes)
a pour fonction de convertir et cumuler les sorties du modèle d'atmosphère
Arpege Climat (format Grib-Arpege) au format Netcdf. Ce format. standard
au Cerfacs, l'est aussi dans de nombreux autres laboratoires; il a été
utilisé, entre autres, pour l'échange des résultats
des derniers scénarios IPCC.
SAFO remplace le précédent script de conversion ARPEXTRACT,
interface du logiciel de visualisation Vairmer [1].
Au Cerfacs, le mieux est de se servir de CVS pour créer sur son compte une arborescence complète. Dans ce répertoire, l'utilisateur pourra modifier le code source selon ses besoins mais aussi se tenir facilement à jour des éventuelles corrections de bug.
Dans cette optique, l'utilisateur doit suivre la procédure suivante:
1. se placer dans le répertoire qui contiendra l'arborescence SAFO.
2. lancer la commande :
cvs -d /home/maisonna/ROOTCVS2
checkout SAFO
Pour une utilisation hors du Cerfacs, nous contacter.
Pour pouvoir lancer les commandes SAFO depuis n'importe quel répertoire,
ajoutez le chemin du répertoire SAFO dans votre variable PATH.
Par exemple, dans votre fichier .kshrc:
export PATH=$PATH:/home/[utilisateur]/SAFO
ou .cshrc:
set path = (
$path /home/[utilisateur]/SAFO )
Se placer dans le répertoire SAFO et lancer la commande:
./safo
Trois librairies doivent se créer dans le répertoire "SAFO/Lib",
ainsi que trois exécutables dans le répertoire "SAFO/Bin".
Dans la version actuelle, les OS supportés sont:
Pour une utilisation sur d'autres machines que celles du Cerfacs, de l'IDRIS et que le VPP 5000 de Météo-France, s'assurer, au début du script "SAFO/safo", de la validité des variables décrivant les commandes de compilation, ainsi que de l'emplacement de la librairie Netcdf.
Les sorties d'Arpege se présentent sous la forme de fichiers binaires.
Ces fichiers sont généralement regroupés dans des
fichiers "tar". Ils doivent être extraits du fichier "tar" avant toute
opération de conversion.
Ces fichiers peuvent être de 3 types:
PL: champs instantanés (sur 1 pas de temps) à tous
les niveaux du modèles, en général 4 échéances
par jour.
SU: champs cumulés, en général sur une journée.
CO: champs cumulés destinés au couplage avec d'autres
modèles.
Ces fichiers contiennent tous les champs de sorties du modèle (par
type) pour une échéance temporelle donnée.
SAFO est également capable de convertir les champs en points de
grille (mais pas les champs spectraux) des fichiers de redémarrage
du modèle (restart).
Les fichiers de sorties de modèles différents du modèle
Arpege Climat version 4 et ultérieures, ne sont pas traités
par SAFO. Des modifications relativement légères du code doivent
cependant permettre au programmeur de convertir toutes sorties sur des
grilles géographiques de modèles apparentés (MOCAGE,
Aladin, MesoNH ...).
Les fichiers en sortie du convertisseur sont sur la grille du modèle
(pas d'interpolation possible sur une grille régulière). Les
dimensions des variables sont donc celles des champs en entrée. Dans
la présente version, les grilles reconnues par le convertisseur sont:
SAFO donne la possibilité à l'utilisateur de définir très facilement de nouvelles grilles (voir paragraphe "Mon modèle travaille sur une nouvelle grille").
Les fichiers en sortie contiennent tous plusieurs variables:
Des renseignements propres à la grille sont contenus dans les
"attributs globaux" du fichier tels que troncature, facteur d'étirement,
coordonnées des pôles, nombres de niveaux du modèle,
type de grille ...
L'opération de conversion se fait en deux temps: conversion
de format, à l'aide de la commande "safo", puis recombinaison
des fichiers pour passer du format "un fichier par échéance
temporelle" au format "un fichier par champ pour toute la durée de
l'expérience", à l'aide de la commande "cleis".
Ces deux commandes se présentent sous la forme de commandes "Unix"
et sont en fait des scripts écrits en "korn shell". On leur spécifie
des arguments (obligatoires ou optionnels).
safo [-f "noms_des_fichiers_Arpege"] [-hV] [-v champ_ipcc] [-t frequence]
[-c calendrier]
L'option "-f", suivie d'un espace puis du ou des nom(s) de
fichier Arpege à convertir, est obligatoire (sauf dans le
cas ou l'option -V est activée). Pour convertir plusieurs fichiers,
on peut utiliser les caractères joker d'Unix (*,?,[], etc ...):
l'expression devra alors être entourée par des guillemets.
L'option "-v", suivie d'un espace puis du nom du champ ipcc tel
que défini dans le fichier "Grids/ipcc_arpege_conversion_table.txt"
(voir annexe 1) permet de ne convertir qu'un champ parmi tous ceux contenus
dans le ou les fichiers Arpege d'entrée. Si cet argument est omis,
tous les champs du ou des fichiers d'entrée sont convertis, à
moins que les champs en sortie aient été spécifiés
dans un fichier "safo_schedule.txt" (voir paragraphe "Conversion en série")
L'option "-t", suivie d'un espace puis de l'identifiant de la fréquence,
fixe la fréquence de sortie pour tous les champs qui sont convertis.
Par défaut, les champs sont convertis à la fréquence
de sortie du modèle (quadri quotidienne pour les champs "PL", quotidienne
pour les autres). Les fréquences de sorties traitées par la
présente version sont :
Identifiant |
Fréquence |
6h |
quadri-quotidienne |
1d |
quotidienne |
1m |
mensuelle |
1vm |
mensuelle avec les seules sorties a 0h |
1lm |
mensuelle avec les seules sorties a 6h |
1sm |
mensuelle avec les seules sorties a 12h |
1cm |
mensuelle avec les seules sorties a 18h |
L'option "-c", suivie d'un espace puis de l'identifiant du calendrier,
donne le choix entre le calendrier standard (grégorien, identifiant:
1, calendrier par défaut) et le calendrier factice ayant des mois
de 30 jours (identifiant: 2).
L'option "-h", doit être spécifiée lorsque l'on
souhaite seulement savoir quels champs sont contenus dans le fichier au format
Arpege. C'est un peu l'équivalent de la commande "ncdump -h" pour
les fichiers au format Netcdf. Les noms des champs Arpege apparaissent alors à
l'écran, précédés de divers renseignements sur
le type de la grille. Ne pas oublier de préciser le nom du fichier
(option -f) dont on souhaite ainsi connaître le contenu. Cette opération
n'est permise que sur un seul fichier à la fois.
L'option "-V", permet de savoir de quelle version de l'utilitaire
on dispose.
cleis [-f "nom_des_fichiers_safo"] [-V] [-c calendrier] [-e acronyme_de_l_experience]
L'option "-f", suivie d'un espace puis du nom des fichiers
netcdf en sortie de la commande précédente ("safo") est
obligatoire (sauf dans le cas ou l'option -V est activée). Les échéances
temporelles des fichiers ainsi désignés (toujours entre guillemets)
seront assemblées les unes à la suite des autres le long
de l'axe temporel.
Pour l'option "-c", voir la commande "safo".
L'option "-e", suivie d'un espace puis de l'acronyme de l'expérience
permet de spécifier cette caractéristique dans le nom du
fichier en sortie ainsi que dans l'attribut global "experiment". La nomenclature
des fichiers SAFO est la suivante:
[champ_ipcc]_[identifiant_frequence]_[date_premiere_echeance]_[date_derniere_echeance]_[flag_3D]_[acronyme_experience].nc
Les dates sont sous la forme YYYYMM ou YYYYMMDD.
L'option "-V", permet de savoir de quelle version de l'utilitaire
on dispose.
Les scripts "safo" et "cleis" ont été écrits de façon à
ce que les utilisateurs puissent facilement configurer leur conversion.
On y procède à de nombreuses vérifications que
l'utilisateur expérimenté saura contourner.
Pour cela, il lui suffira de lancer directement les exécutables
Fortran "Bin/safo_convert.exe" pour la conversion et "Bin/safo_concat.exe"
pour la concaténation.
En plus des fichiers de sortie d'Arpege, l'exécutable "Bin/safo_convert.exe"
a besoin de 2 autres fichiers d'entrée, les deux au format ASCII.
L'exécutable "Bin/safo_concat.exe" n'a besoin, dans le fichier safo_file_list.txt,
que de la liste des fichiers issus de la conversion précédente.
Pour vous aider, un exemple de script de conversion de champs issus d'un
fichier "POST " vous est donné en annexe 2.
Fujitsu VPP5000 |
NEC SX-5 |
Pentium4
/ 2.8 Ghz (32 bits) |
Opteron / 1.8
Ghz (64 bits) |
SGI O2000 |
|
Temps écoulé
pour la conversion d'un mois de données (30 champs à la fréquence mensuelle, 5 à la fréquence quotidienne) |
17 min |
27 min |
5 min |
4 min |
6 min |
Annexe 1
Champ ARPEGE |
IPCC |
Mult. |
VAIRMER |
Formule |
Unité |
Description (nom standard) |
prc | SUTCOPSU | prcli prcsn+ | kg/m2/s | Convective precipitation flux | ||
pr | SUTOPRSU | prsn prli+ | kg/m2/s | Precipitation flux | ||
SOMMFLU.RAY.SOLA | nsft | 1. | SUSCYFTP | W/m2 | Net shortwave flux at TOA | |
SURFFLU.RAY.SOLA | nsfs | 1. | SUSCYFSU | W/m2 | Net incoming shortwave flux at surface | |
SOMMFLU.RAY.THER | rlut | 1. | SULCYFTP | W/m2 | TOA outgoing longwave flux (OLR) | |
SURFFLU.RAY.THER | nlfs | 1. | SULCYFSU | W/m2 | Net incoming longwave flux at surface | |
SURFRAYT DIR SUR | dsfs | 1. | SUDIRSSU | W/m2 | Direct shortwave flux at surface | |
TOPRAYT DIR SOM | rsdt | 1. | SUDIRSTP | W/m2 | TOA incoming shortwave flux | |
SURFRAYT DIFF DE | rsds | 1. | SUDODSSU | W/m2 | Surface downwelling shortwave flux in air | |
SURFRAYT THER DE | rlds | 1. | SUDODLSU | W/m2 | Surface downwelling longwave flux in air | |
SRAYT SOL CL | nsct | 1. | SUSCLFTP | W/m2 | Net shortwave flux at TOA assuming clear sky | |
SRAYT SOL CL | scs | 1. | SUSCLFSU | W/m2 | Shortwave flux at surface assuming clear sky | |
SRAYT THER CL | rlutcs | 1. | SULCLFTP | W/m2 | TOA outgoing longwave flux assuming clear sky | |
SRAYT THER CL | lcs | 1. | SULCLFSU | W/m2 | Longwave flux at surface assuming clear sky | |
SURFFONTE NEIGE | snm | 86400. | SUSNOMSU | kg/m2/s | Surface snow melt flux where land | |
SURFRUISSELLEMEN | mrros | 86400. | SUSURUSU | kg/m2/s | Surface runoff flux | |
PROFRUISSELLEMEN | mrrod | 86400. | SUDERUSU | kg/m2/s | Deep runoff flux | |
ATMONEBUL.TOTALE | clt | 100. | SUTOCLVI | % | Cloud area fraction | |
SURFPRESSION SOL | ps | 0.01 | SUPRESSU | Pa | Surface air pressure | |
SURFRESERV NEIGE | snwd | 1. | SUSNRESU | kg/m2 | Surface snow amount where land | |
ATMOHUMI TOTALE | ctwc | 1. | SUTOHUVI | kg/m2 | Atmosphere cloud total water content | |
ATMOHUMI LIQUIDE | clwc | 1000. | SULIHUVI | kg/m2 | Atmosphere cloud liquid water content | |
ATMOHUMI SOLIDE | clivi | 1000. | SUSOHUVI | kg/m2 | Atmosphere cloud ice content | |
SURFCHAL LATENTE | hfls | 1. | SULATHSU | W/m2 | Surface upward latent heat flux | |
SURFFLU.CHA.SENS | hfss | 1. | SUSENHSU | W/m2 | Surface upward sensible heat flux | |
SURFTENS.TURB.ZO | tautum | 1. | Pa | Eastward turbulent stress on model | ||
tautu | SUZOTSSU | tautum tautvm# | Pa | Surface downward eastward turbulent stress | ||
SURFTENS.TURB.ME | tautvm | 1. | Pa | Northward turbulent stress on model | ||
tautv | SUMETSSU | tautum tautvm_ | Pa | Surface downward northward turbulent stress | ||
rlus | rlds nlfs- | W/m2 | Surface upwelling longwave flux in air | |||
rsus | rsds nsfs- | W/m2 | Surface upwelling shortwave flux in air | |||
rsut | rsdt nsft- | W/m2 | TOA outgoing shortwave flux | |||
rsdscs | rsds scs*nsfs/ | W/m2 | Surface downwelling shortwave flux in air assuming clear sky | |||
rsuscs | rsds nsfs-scs*nsfs/ | W/m2 | Surface upwelling shortwave flux in air assuming clear sky | |||
rldscs | rlus lcs+ | W/m2 | Surface downwelling longwave flux in air assuming clear sky | |||
rsutcs | rsdt nsct- | W/m2 | TOA outgoing shortwave flux assuming clear sky | |||
clwvi | clivi clwc+ | kg/m2 | Atmosphere cloud condensed water content | |||
prw | ctwc clwc-clivi- | kg/m2 | Atmosphere water vapor content | |||
CLSTEMP.MAXI | tasmax | 86400. | COMAXTEM | K | Max air temperature | |
CLSTEMP.MINI | tasmin | 86400. | COMINTEM | K | Min Air temperature | |
SURFHAUTEUR NEIG | snd | 1. | COSNOHEI | m | Surface snow thickness | |
SURFTEMPERATURE | ts | 1. | PLSUTESU | K | Surface temperature | |
CLSTEMPERATURE | tas | 1. | SITEMPCL | K | Air temperature at 2m | |
CLSHUMI.SPECIFIQ | huss | 1000. | SISPHUCL | 1 | Specific humidity at 2m | |
CLSVENT.ZONAL | uasm | 1. | m/s | Eastward wind at 2m on grid model | ||
uas | SIZOWICL | uasm vasm# | m/s | Eastward wind at 2m | ||
CLSVENT.MERIDIEN | vasm | 1. | m/s | Northward wind at 2m on grid model | ||
vas | SIMEWICL | uasm vasm_ | m/s | Northward wind at 2m | ||
GEOPOTENTI | zg | 0.10197 | PLGEO | m | Geopotential height | |
TEMPERATUR | ta | 1. | PLTEM | K | Air temperature | |
HUMI.SPECI | hus | 1000. | PLSPU | 1 | Specific Humidity | |
VITESSE_VE | wap | 1000. | PLVEV | Pa/s | Lagragian tendency of air pressure | |
HUMI_RELAT | hur | 1000. | PLREU | % | Relative humidity | |
SCALAIRE.0 | tro | 1000000. | PLSC1 | ppbv | Mole fraction of O3 in air | |
VENT_ZONAL | uam | 1. | m/s | Eastward wind on model grid | ||
ua | PLZOW | uam vam# | m/s | Eastward wind | ||
VENT_MERID | vam | 1. | m/s | Northward wind on model grid | ||
va | PLMEW | uam vam_ | m/s | Northward wind | ||
MSLPRESSURE | psl | 0.01 | PLMEASLP | Pa | Air pressure at sea level | |
SURFCONTENU EAU | mrsos | 1. | SUWACOSU | kg/m2 | Moisture content of soil surface layer | |
PROFRESERVOIR | mrso | 1. | CORESERV | kg/m2 | Soil moisture content | |
UNDEFINED | prw | kg/m2 | Atmosphere water vapor content | |||
UNDEFINED | snc | % | Surface snow area fraction where land | |||
UNDEFINED | rtmt | W/m2 | Net downward radiative flux at TOA model | |||
UNDEFINED | rsntp | W/m2 | Net downward shortwave flux in air at 200 hPa | |||
UNDEFINED | rlntp | W/m2 | Net downward longwave flux in air at 200 hPa | |||
UNDEFINED | rsntpcs | W/m2 | Net downward shortwave flux in air clear sky | |||
UNDEFINED | rlntpcs | W/m2 | Net downward longwave flux in air clear sky | |||
UNDEFINED | sftlf | % | Land area fraction | |||
UNDEFINED | sftgif | % | Land ice area fraction | |||
UNDEFINED | mrsofc | kg/m2 | Soil moisture content at field capacity | |||
UNDEFINED | cl | % | Cloud area fraction in atmosphere layer | |||
SURFAEROS.SULFAT | trsul | 1. | ug/m3 | Mass concentration of sulfate aerosol in air | ||
UNDEFINED | trsult | mg/m3 | Atmosphere content of sulfate aerosol | |||
SURFSTRESS U | tauum | 1. | Pa | Surface downward eastward stress on model grid | ||
tauu | COZOTAUX | tauum tauvm# | Pa | Surface downward eastward stress | ||
SURFSTRESS V | tauvm | 1. | Pa | Surface downward northward stress on model grid | ||
tauv | COMETAUY | tauum tauvm_ | Pa | Surface downward northward stress | ||
SURFFLUX CHALEUR | nshf | 1. | CONSFTOT | W/m2 | Non solar heat flux at surface | |
SURFRAYT.SOLAIRE | shf | 1. | COSHFTOT | W/m2 | Solar heat flux at surface | |
SURFFLUX HUMI | wds | 86400. | COWATFLU | kg/m2/s | Net incoming water flux at surface | |
SURFRUISSEL. | mrro | 86400. | CORUNOFF | kg/m2/s | Runoff flux | |
SURFFLU.CHA.LATL | hflsl | 1. | COLAHFOW | W/m2 | Latent heat flux over water | |
SURFFLU.CHA.LATN | hflsn | 1. | COLAHFOS | W/m2 | Latent heat flux over snow | |
SURFPLUIE TOTALE | prli | 86400. | COTOLIPR | kg/m2/s | Liquid precipitation flux | |
SURFNEIGE TOTALE | prsn | 86400. | COTOSOPR | kg/m2/s | Snowfall flux | |
SURFTSTS | albedo | 1. | COALBSUR | 1 | Surface albedo | |
SURFTSFL | dqdt | 1. | CODFLXDT | W/m2/K | Derivative of NSHF with respect to SST | |
ATMOUQ | hzt | 1. | COUQATMO | kg/m | Humidity zonal transport | |
ATMOVQ | hmt | 1. | COVQATMO | kg/m | Humidity meridional transport | |
SURFCRF.RAY.SOL | csfs | 1. | J/m2 | Cloud solar forcing at surface | ||
SOMMCRF.RAY.SOL | csft | 1. | J/m2 | Cloud solar forcing at TOA | ||
SURFCRF.RAY.THER | ctfs | 1. | J/m2 | Cloud thermic forcing at surface | ||
SOMMCRF.RAY.THER | ctft | 1. | J/m2 | Cloud thermic forcing at TOA | ||
SURFRESERV.NEIGE | snw | 1. | PLSNOWSU | kg/m2 | Surface snow amount where land | |
PROFTEMPERATURE | stemp | 1. | PLDETESU | K | Soil temperature | |
PROFRESERV.EAU | mrlso | 1. | PLWATPRO | kg/m2 | Soil water content | |
PROFRESERV.GLACE | mrfso | 1. | PLICEPRO | kg/m2 | Soil frozen water content | |
CLSHUMI.RELATIVE | hurs | 100. | SIREHUCL | % | Relative humidity at 2m | |
LLGEOPOTENTIEL | zgll | 0.10197 | PLGEOPLL | m | Geopotential height at top level | |
LLTEMPERATURE | tall | 1. | PLTEMPLL | K | Air temperature at top level | |
LLHUMI.SPECIFI | husll | 1000. | PLSPUMLL | 1 | Specific Humidity at top level | |
LLVITESSE_VE | wapll | 1000. | PLVEVELL | Pa/s | Lagragian tendency of air pressure at top level | |
LLHUMI_RELAT | hurll | 100. | PLREHULL | % | Relative humidity at top level | |
LLSCALAIRE.0 | troll | 1000000. | PLOZONLL | ppbv | Mole fraction of O3 in air at top level | |
LLVENT_ZONAL | uallm | 1. | m/s | Eastward wind at top level on model grid | ||
uall | PLZOWILL | uallm vallm# | m/s | Eastward wind at top level | ||
LLVENT_MERIDIE | vallm | 1. | m/s | Northward wind at top level on model grid | ||
vall | PLMEWILL | uallm vallm_ | m/s | Northward wind at top level | ||
SURFTENS.DMOG.ZO | ugm | 1. | Pa | Gravity wave eastward stress on model grid | ||
ug | SUZOOSSU | ugm vgm# | Pa | Gravity wave induced surface eastward stress | ||
SURFTENS.DMOG.ME | vgm | 1. | Pa | Gravity wave northward stress on model grid | ||
vg | SUMEOSSU | ugm vgm_ | Pa | Gravity wave induced surface northward stress | ||
SURFCFU.Q.TURBUL | twf | -86400. | SUTFSHSU | kg/m2 | Turbulent water flux | |
SURFCFU.CT.TURBU | tef | 1. | SUTUFESU | W/m2 | Turbulent enthalpy flux | |
SURFPREC.EAU.CON | prcli | 86400. | SUCOLPSU | kg/m2/s | Convective liquid precipitation flux | |
SURFPREC.NEI.CON | prcsn | 86400. | SUCOSPSU | kg/m2/s | Convective solid precipitation flux | |
SURFPREC.EAU.GEC | prsli | 86400. | SULSLPSU | kg/m2 | Large scale liquid precipitation | |
SURFPREC.NEI.GEC | prssn | 86400. | SULSSPSU | kg/m2 | Large scale solid precipitation | |
SURFCHAL. DS SOL | rhf | 1. | SUGRHFSU | W/m2 | Heat flux in soil | |
SURFEAU DANS SOL | swf | 86400. | SUGRWASU | kg/m2 | Water flux in soil | |
SURFEVAPOTRANSPI | et | -86400. | SUEVTRSU | kg/m2 | Evapotranspiration | |
SURFTRANSPIRATIO | trans | -86400. | SUTRANSU | kg/m2 | Transpiration | |
SURFRUISS. INTER | rin | 86400. | SUINRUSU | kg/m2 | Ruissellement d interception | |
PROFFLUX DE GEL | flgelp | 86400. | SUDEFSPR | kg/m2 | Flux de gel en profondeur | |
SURFFLUX DE GEL | flgels | 86400. | SUDEFSSU | kg/m2 | Flux de gel en surface | |
SURFDISSIP SURF | dises | 1. | SUDSPFSU | W/m2 | Enthalpy dissipation at surface | |
TOPMESO ENTH | diset | 1. | SUMEFETP | W/m2 | Enthalpy dissipation at TOA | |
ATMOOZONE TOTALE | oz | 47000. | SUTOOZVI | ppbv | Atmosphere content of ozone |
Annexe 2
Références
[1] E. Guilyardi, A. Piacentini and S. Valcke, 1997: The Vairmer Experiment Manager, TR/CMGC/97/25, CERFACS.