Description du contenu des fichiers

du modèle ROM en format NetCdf

Convention "COARDS,CF-1.0,ROM-1.1"




(Version 1.1)















James Caveen

Frédéric Maps

Simon Senneville

Institut des sciences de la mer de Rimouski

9 février 2009

Table des matières

Introduction 1

Exigences 1

Contraintes 1

Contenu des fichiers NetCdf 2

Dimensions 2

Axes 3

Axes se retrouvant dans chaque fichier 3

Variables 5

Variables scalaires 6

Variables unidimensionnelles 9

Variables bidimensionnelles 10

Méta-données 11

Contenu d'un fichier parrun 12

Information concernant les paramètres du modèle 12

Informations contrôlant la sortie des variables 13

Exemple de fichier parrun 16

Indices du modèle versus NetCdf 18

Références 19



Introduction

Ce document présente la structure des fichiers NetCdf qui sont utilisés par le modèle ROM (Regional Oceanic Model) version hors-ligne de l'Institut des sciences de la mer de Rimouski. Le format décrit ici est utilisé aussi bien pour les fichiers d'entrée utilisés lors d'une simulation que pour les fichiers de sortie produits par cette simulation. Le format retenu permet de conserver de gros ensembles de données en utilisant relativement peu d'espace disque et produit des fichiers qui peuvent être utilisés par plusieurs outils de post-traitement graphique et statistique.



Exigences

Les fichiers doivent être auto-documentés et auto-suffisants (le plus possible):


Contraintes





Cependant, chaque fichier ne devra contenir qu'une seule variable.





Contenu des fichiers NetCdf



Dimensions

Nom

Description

Commentaires

KROM

Nombre de points en K

Dimension fixe correspondant à la longueur de l'axe K du modèle

IROM

Nombre de points en I

Dimension fixe correspondant à la longueur de l'axe I du modèle

ZROM

Nombre de couches du modèle

Dimension fixe correspondant à la longueur de l'axe J du modèle

ZROMEDGES

Nombre de niveaux délimitant les couches

Dimension fixe

JROM + 1

TROM

Nombre de pas de temps

Dimension variable

NVALID2D

Nombre points valides (mouillés) des champs 2D

Dimension fixe

NVALID3D

Nombre de points valides (mouillés) des champs 3D

Dimension fixe

SCALAR

Dimension utilisée pour les variables scalaires (SCALAR=1)

Dimension fixe utilisée pour définir un axe sur lequel on emmagasine des variables de type scalaire: deltaK, deltat, STARTDATESEC, STARTDATEMIN, etc


Axes

Dans un fichier NetCDF, un axe est défini en utilisant la syntaxe suivante: nom_axe(dim_axe) et le nom de l'axe (nom_axe) est identique au nom de la dimension (dim_axe) le définissant:

e.g.,

float KROM(KROM);

float TROM(TROM);



En NetCdf, un axe est donc une variable standard qui contient des coordonnées (coordinate variable).

Axes se retrouvant dans chaque fichier

Nom

Dimensions

Type

Description

Commentaires

KROM

KROM

Régulier

Axe contenant les indices des points en K (valeurs de 1 à KROM)

La dimension K des champs Netcdf est équivalente à des longitudes sur une projection lat-lon.

Croissant de gauche à droite. Cet axe correspond à l'axe k du modèle.

IROM

IROM

Régulier

Axes contenant les indices des points en I (valeurs de IROM à 1)

La dimension I des champs Netcdf est équivalente à des latitudes sur une projection lat-lon, croissant du haut vers le bas. Cet axe correspond à l'axe I du modèle. Ferret retourne automatiquement cet axe pour en faire un axe croissant vers le haut.

ZROM

ZROM

Irrégulier

Axe indiquant le niveau central de chacune des couches

En mètres, croissant vers le bas. Cet axe correspond à l'axe J du modèle.

ZROMEDGES

ZROMEDGES

Irrégulier

Axe indiquant le niveau supérieur et inférieur de chacune des couches

En mètres, croissant vers le bas

NVALID2D

NVALID2D

Régulier

Axe indicé de 1 à NVALID2D utilisé pour les variables 2D compressées.


NVALID3D

NVALID3D

Régulier

Axe indicé de 1 à NVALID3D utilisé pour les variables 3D compressées.


TROM

TROM

Régulier

Axe contenant le nombre de secondes écoulées depuis le T0 de la simulation pour chaque pas de temps pour lequel on fait une sortie.

Il faudra revoir le code du modèle pour que les champs de conditions initiales (T= T0) soient sortis dès le début de la simulation

SCALAR

SCALAR

Régulier

(SCALAR=1)

Axe sur lequel on stocke les variables de type scalaire




Variables

Les variables contenues dans un fichier NetCdf sont des vecteurs ou des champs définis en utilisant un type de représentation approprié (float, double, int, byte). Les dimensions du champ sont indiquées dans le fichier et le dernier indice de chaque champ est celui qui varie le plus rapidement. Toutes les dimensions sont fixes dès la création d'une variable sauf pour la première dimension - le temps - qui peut varier selon le nombre de pas de temps conservés.



Exemples:



float TEMP(TROM, NVALID3D) ;

TEMP:fill_value = 9.96921e+36f ;

TEMP:missing_value = 9.96921e+36f ;

TEMP:long_name = "TEMPERATURE" ;

TEMP:units = "celcius" ;



float SALT(TROM, JROM,IROM,KROM) ;

SALT:fill_value = 9.96921e+36f ;

SALT:missing_value = 9.96921e+36f ;

SALT:long_name = "SALINITY" ;

SALT:units = "psu" ;



Variables scalaires

Nom

Dimensions

Type

Description

Commentaires

STARTDATESEC

SCALAR

Int

Champ secondes de la date de départ de la simulation

La date de départ est représentée par un tableau de 6 valeurs dans l'ordre:

ss mm hh jj MM aa

STARTDATEMIN

SCALAR

Int

Champ minutes de la date de départ de la simulation

La date de départ est représentée par un tableau de 6 valeurs dans l'ordre:

ss mm hh jj MM aa

STARTDATEHOUR

SCALAR

Int

Champ heures de la date de départ de la simulation

La date de départ est représentée par un tableau de 6 valeurs dans l'ordre:

ss mm hh jj MM aa

STARTDATEDAY

SCALAR

Int

Champ jour de la date de départ de la simulation

La date de départ est représentée par un tableau de 6 valeurs dans l'ordre:

ss mm hh jj MM aa

STARTDATEMONTH

SCALAR

Int

Champ mois de la date de départ de la simulation

La date de départ est représentée par un tableau de 6 valeurs dans l'ordre:

ss mm hh jj MM aa

STARTDATEYEAR

SCALAR

Int

Champ année de la date de départ de la simulation

La date de départ est représentée par un tableau de 6 valeurs dans l'ordre:

ss mm hh jj MM aa

DELTAT

SCALAR

Int

Longueur du pas de temps en secondes


DELTAKI

SCALAR

Int

Résolution horizontale de la grille en mètres


KRANGELOW

SCALAR

Int

Limite inférieure en K (K du modèle) pour le domaine de sortie


KRANGEHI

SCALAR

Int

Limite supérieure en K (K du modèle) pour le domaine de sortie


IRANGELOW

SCALAR

Int

Limite inférieure en I (I du modèle) pour le domaine de sortie


IRANGEHI

SCALAR

Int

Limite supérieure en I (I du modèle) pour le domaine de sortie


NLEVELS

SCALAR

Int

Nombre de couches sorties à partir de la surface




Variables unidimensionnelles

Nom

Dimensions

Type

Description

Commentaires

INDEXVALID2D

NVALID2D

Int

Variable contenant les indices « composites » des points valides des champs 2D.

La variable INDEXVALID2D peut être utilisée directement par Matlab pour reconstruire une grille 2D alors que Ferret doit utiliser la fonction nc_rar pour reconstruire la grille.

INDEXVALID3D

NVALID3D

Int

Variable contenant les indices « composites »des points valides des champs 3D.

La variable INDEXVALID3D peut être utilisée directement par Matlab pour reconstruire une grille 3D alors que Ferret doit utiliser la fonction nc_rar pour recréer la grille.

TOTALDEPTH

NVALID2D

Float

Profondeur totale au repos pour chaque colonne (mètres)


NLAYER

NVALID2D

Int

Nombre de couches pour chaque colonne


KSTEP

TROM

Int

Numéro ou valeur des pas de temps sauvegardés


XP

IROM

Float

Distance selon la direction I à partir de l'origine de la grille du modèle (coin supérieur gauche)


YP

KROM

Float

Distance selon la direction K à partir de l'origine de la grille du modèle (coin supérieur gauche)


INDEXJ

JROM

Int

Numéro de la couche




Variables bidimensionnelles

Nom

Dimensions

Type

Description

Commentaires

LATITUDE

IROM,KROM

Float

Latitudes des points de grille


LONGITUDE

IROM,KROM

Float

Longitudes des points de grille


JC

IROM,KROM

Byte

Masque des propriétés des points de grille du modèle océanique

Voir le fichier oceans/kotief.F du modèle

JCATMOS

IROM,KROM

Byte

Masque des propriétés des points de grilles des forçages atmosphériques


LDEP

IROM,KROM

Int

Épaisseur de la dernière couche pour chaque colonne


Data

TROM,NVALID2D



TROM,NVALID3D

Selon les besoins spécifique de la variable à conserver: Float, Int, Byte, Double

Champ 2D ou 3D représentant les valeurs d'une variable sur la grille pour un ensemble de pas de temps


Méta-données



Certaines informations concernant la simulation seront conservées dans chacun des fichiers de sortie. La majorité des information nécessaires est contenu dans le fichier parrun de la simulation. Il suffira donc de récupérer le contenu du parrun et de l'ajouter au fichier NetCdf de sortie lors de sa création. Un fichier parrun est composé d'un regroupement de deux types de listes nommées (namelist fortran): une première liste nommée contenant les informations concernant les paramètres du modèle (parrun_nml) et une seconde liste nommée servant à contrôler la sortie des variables (nc_out_dir). On utilise un namelist nc_out_dir par variable à sortir. Un exemple de fichier parrun est inclus dans ce document.



La méta-donnée décrivant la version de la convention utilisée lors de la création des fichiers NetCDF ne provient pas du fichier parrun. Cette information est fournie par la bibliothèque de construction rom_nc_lib.



Attribut

Exemple

Description

CONVENTION

"COARDS,CF-1.0,ROM-1.1"

La version de la convention utilisée est fournie par la bibliothèque rom_nc_lib. Cette méta-donnée est incluse automatiquement lors de la création d'un fichier.

Afin d'être facilement accessibles lors des calculs, certaines des informations contenues dans le parrun sont aussi incluses dans la section données des fichiers; par exemple, tous les éléments de la date de départ de la simulation sont disponibles via les variables STARTDATESEC, STARTDATEMIN, etc.



Contenu d'un fichier parrun

Information concernant les paramètres du modèle

Attribut

Exemple de Méta-données

Description

RNC_STARTDATE

0 0 0 9 11 1998

Date de départ T0

RNC_STARTSTEP

1

Numéro du pas de temps de départ contenu dans le fichier.

RNC_ENDSTEP

120096

Numéro du pas de temps de fin contenu dans le fichier

RNC_DELTAT

300

Longueur du pas de temps en secondes

RNC_DELTAKI

5000

Résolution K,I de la grille en mètres

RNC_AUTHOR

'Frederic Maps'

Auteur de la simulation

RNC_INPUTDIR

'/sunismer_1/projects/clim_gulf/Atmos5/Input5'

Répertoire où conservées les fichiers d'entrée

RNC_OUTDIR

/sunismer_1/projects/clim_gulf/out

Répertoire pour les sorties des fichiers de type ASCII.

Répertoire de sortie par défaut pour les fichiers de type NetCDF lorsque le paramètre var_archive n'a pas été spécifié dans une section contrôlant la sortie des variables.

RNC_FILE_COMMENT

'Fichier netcdf nouveau format'

Commentaire global concernant le contenu des fichiers NetCDF

RNC_SOURCE

'Copepod model v1.1 with ROM v5.3'

Commentaire global indiquant certaines informations concernant la version du code source ayant servi à produire les fichiers NetCDF

RNC_TITLE

'Simulation de population de copepodes'

Commentaire global contenant le titre qu'on veut donner à la simulation ayant produit les fichiers NetCDF

RNC_INSTITUTION

'ISMER-LASSO'

Commentaire global indiquant le nom de l'Institution ayant produit les fichiers NetCDF




Informations contrôlant la sortie des variables

(un bloc par variable)

Attribut

Exemple de Méta-donnée

Description

var_name

'SAL1'

Nom de la pseudo-variable à sortir

long_var_name

'Salinity'

Nom long de la pseudo-variable

rom_var_name

'SALT'

Nom de la variable telle que connue du modèle (TAG de sortie)

i_limit_lo

20

Indice de départ en i pour la sous-région sur laquelle on désire la pseudo-variable

i_limit_hi

130

Indice de fin en i pour la sous-région sur laquelle on désire la pseudo-variable

k_limit_lo

20

Indice de départ en k pour la sous-région sur laquelle on désire la pseudo-variable

k_limit_hi

130

Indice de fin en k pour la sous-région sur laquelle on désire la pseudo-variable

nlayers

35

Nombre de couches sur lequelles on veut sortie la pseudo-variable

output_period

300

Intervalle auquel les sorties de la pseudo-variable seront effectuées (en pas de temps)

start_step

0

Pas de temps à partir duquel on débute les sorties pour la pseudo-variable

var_units

'PSU'

Unités de la pseudo-variable

var_comment

'Un commentaire concernant la salinite sortie en tant que pseudo-variable SAL1'

Un commentaire quelconque se rapportant à la pseudo -variable

var_archive

'/home/caveenj/rom_5_3/output/ROM_NC'

Nom du répertoire dans lequel le fichier NetCdf de la pseudo-variable sera créé et valeur du préfixe à appliquer au nom du fichier. Dans l'exemple, ('/home/caveenj/rom_5_3/output/ROM_NC' et la variable 'SAL1') un fichier nommé ROM_NC_SAL1.nc ser créé dans le répertoire '/home/caveenj/rom_5_3/output'





Exemple de fichier parrun



&parrun_nml

RNC_STARTDATE= '0 0 0 16 7 2002'

RNC_STARTSTEP= 1

RNC_ENDSTEP= 288

RNC_DELTAT= 300

RNC_DELTAKI= 5000

RNC_INPUTDIR ='/sunismer_2/projects/stle400/input'

rnc_author = "James Caveen"

rnc_file_comment = "Un fichier netcdf nouveau format"

rnc_source = 'rom v2.2.2 GSL5km'

rnc_title ='Simulation de polulation de copepodes'

rnc_institution ='ISMER-LASSO'

rnc_outdir = './out/SIMUL2'

/

&nc_out_dir

var_name='PAR1',

long_var_name='parametre 1',

i_limit_lo = 20,

i_limit_hi = 130,

k_limit_lo = 30,

k_limit_hi = 177,

output_frequency = 15,

nlayers = 73,

start_step = 0,

var_archive = '/home/caveenj/projets/rom_nc_lib/out/ROM_NC',

var_units='PSU',

var_comment='Variable bidon numero 1'

/

&nc_out_dir

var_name='PAR2',

long_var_name='parametre 2',

rom_var_name ='PAR1'

var_units='degres C',

var_comment='Variable bidon numero 2',

i_limit_lo = 1,

i_limit_hi = 150,

k_limit_lo = 1,

k_limit_hi = 236,

output_frequency = 10,

nlayers = 35,

start_step = 10,

var_archive='/home/caveenj/projets/rom_nc_lib/out/ROM_NC',

scale_factor = 1.2,

offset = 10.0

/

&nc_out_dir

var_name='ICEC',

long_var_name='Ice concentration',

i_limit_lo = 20,

i_limit_hi = 130,

k_limit_lo = 30,

k_limit_hi = 177,

output_frequency = 20,

start_step = 0,

var_units='PSU',

var_comment='Variable bidon numero 1'

/





Indices du modèle versus NetCdf







Références



Documentation du format NetCDF:

http://www.unidata.ucar.edu/software/netcdf/

NetCdf Best practices: http://www.unidata.ucar.edu/software/netcdf/docs/BestPractices.html#Conventions

Documentation de la norme CF-1.0:

http://www.cfconventions.org/



Site officiel de Ferret:

http://ferret.wrc.noaa.gov/Ferret/



Interfaces NetCdf pour Matlab:

http://www.unidata.ucar.edu/software/netcdf/software.html#MATLAB



Liste d'applications utilisant le format NetCdf:

http://www.unidata.ucar.edu/software/netcdf/software.html