Différences entre versions de « Nc rar »

De POLR
Sauter à la navigation Sauter à la recherche
Ligne 122 : Ligne 122 :
 
go land
 
go land
 
quit
 
quit
 +
</pre>
 +
 +
== Exemple ==
 +
Dans cet exemple on fait les opérations suivantes:
 +
* Ouvrir le fichier ;
 +
* Définir la grille cible (grille 2D) ;
 +
* Tracer la variable TT telle qu'elle est conservée dans le fichier ;
 +
* Définir une variable b qui est le résultat de la décompression du champ TT ;
 +
* Tracer la variable b ;
 +
* Tracer la variable b en conjonctions avec les champs LONGITUDES et LATITUDES afin de la géoréférencer.
 +
 +
 +
<pre>
 +
-bash-3.2$ ferret
 +
NOAA/PMEL TMAP
 +
FERRET v6.2 
 +
Linux(g77) 2.4.21-32 - 05/19/09
 +
27-Feb-13 14:12   
 +
 +
yes? use fatm_gsl_200201_TT.nc
 +
yes? show data
 +
    currently SET data sets:
 +
    1> ./fatm_gsl_200201_TT.nc  (default)
 +
name    title                            I        J        K        L
 +
STARTDATESEC
 +
                                          1:1      ...      ...      ...
 +
STARTDATEMIN
 +
                                          1:1      ...      ...      ...
 +
STARTDATEHOUR
 +
                                          1:1      ...      ...      ...
 +
STARTDATEDAY
 +
                                          1:1      ...      ...      ...
 +
STARTDATEMONTH
 +
                                          1:1      ...      ...      ...
 +
STARTDATEYEAR
 +
                                          1:1      ...      ...      ...
 +
DELTAT                                    1:1      ...      ...      ...
 +
DELTAKI                                  1:1      ...      ...      ...
 +
KRANGELOW
 +
                                          1:1      ...      ...      ...
 +
KRANGEHI                                  1:1      ...      ...      ...
 +
IRANGELOW
 +
                                          1:1      ...      ...      ...
 +
IRANGEHI                                  1:1      ...      ...      ...
 +
NLEVELS                                  1:1      ...      ...      ...
 +
KSTEP                                    ...      ...      ...      1:248
 +
XP                                        1:150    ...      ...      ...
 +
YP                                        1:236    ...      ...      ...
 +
LATITUDES
 +
          Latitudes                        1:236    1:150    ...      ...
 +
LONGITUDES
 +
          Longitudes                      1:236    1:150    ...      ...
 +
JCATMOS  ATMOSPHERIC MASK                1:236    1:150    ...      ...
 +
INDEXVALID2D
 +
          INDEXVALID2D                    1:10206  ...      ...      ...
 +
TT      TEMPERATURE                      1:10206  ...      ...      1:248
 +
 +
yes? let  a = x[gx=krom]*0 + y[gy=irom]*0 + t[gt=trom]*0
 +
yes? plot TT[l=1]
 +
yes? let b = nc_rar(a,TT,INDEXVALID2D)
 +
yes? shade b[l=1]
 +
yes? shade b[l=1],longitudes,latitudes
 +
yes? quit
 +
 
</pre>
 
</pre>

Version du 27 février 2013 à 14:26

Introduction

Les solutions du modèle ROM sont conservées dans des fichiers NetCDF selon un format développé ici au LASSO. La [documentation de ce format] est disponible en ligne. Selon ce format, seuls les points mouillés sont conservés dans le fichier. Ceux-ci sont compressés sur un axe unidimensionnel. Pour reconstruire un champ 2D ou 3D à partir de ce vecteur, il faut faire appel à la fonction nc_rar disponible à partir du programme Ferret.

nc_rar lit un champ compressé et redistribue les données de ce champ sur une grille cible. La description de la grille cible (2D ou 3D) est toujours présente dans les fichiers Netcdf du modèle ROM.

Un champ est soit compressé selon l'axe INDEXVALID2D ou INDEXVALID3D. Si le champ est selon l'axe INDEXVALID2D il aura alors pour dimensions (TROM,NVALID2D) alors que si le champ est selon l'axe INDEXVALID3D, il aura pour dimensions (TROM,NVALID3D).

On peut vérifer les dimensions d'un champ en utilisant ncdump à partir de la ligne de commandes:

 ncdump -h fatm_gsl_200201_TT.nc 
 netcdf fatm_gsl_200201_TT {
 dimensions:
	KROM = 236 ;
	IROM = 150 ;
	SCALAR = 1 ;
	TROM = 248 ;
	NVALID2D = 10206 ;
 variables:
	float KROM(KROM) ;
		KROM:long_name = "KROM" ;
		KROM:point_spacing = "even" ;
	float IROM(IROM) ;
		IROM:long_name = "IROM" ;
		IROM:point_spacing = "even" ;
	int SCALAR(SCALAR) ;
		SCALAR:long_name = "SCALAR VARIABLES AXIS" ;
	int STARTDATESEC(SCALAR) ;
	int STARTDATEMIN(SCALAR) ;
	int STARTDATEHOUR(SCALAR) ;
	int STARTDATEDAY(SCALAR) ;
	int STARTDATEMONTH(SCALAR) ;
	int STARTDATEYEAR(SCALAR) ;
	int DELTAT(SCALAR) ;
	int DELTAKI(SCALAR) ;
	int KRANGELOW(SCALAR) ;
	int KRANGEHI(SCALAR) ;
	int IRANGELOW(SCALAR) ;
	int IRANGEHI(SCALAR) ;
	int NLEVELS(SCALAR) ;
	double TROM(TROM) ;
		TROM:long_name = "TROM" ;
		TROM:units = "SECONDS since 2002-01-01 00:00:00" ;
		TROM:time_origin = " 1-JAN-2002" ;
	int KSTEP(TROM) ;
	float XP(IROM) ;
	float YP(KROM) ;
	float LATITUDES(IROM, KROM) ;
		LATITUDES:units = "degrees north" ;
		LATITUDES:long_name = "Latitudes" ;
	float LONGITUDES(IROM, KROM) ;
		LONGITUDES:units = "degrees east" ;
		LONGITUDES:long_name = "Longitudes" ;
	short JCATMOS(IROM, KROM) ;
		JCATMOS:long_name = "ATMOSPHERIC MASK" ;
	int NVALID2D(NVALID2D) ;
		NVALID2D:long_name = "NVALID2D" ;
		NVALID2D:point_spacing = "even" ;
		NVALID2D:compress = "KROM IROM" ;
	int INDEXVALID2D(NVALID2D) ;
		INDEXVALID2D:long_name = "INDEXVALID2D" ;
	float TT(TROM, NVALID2D) ;
		TT:fill_value = 9.96921e+36f ;
		TT:missing_value = 9.96921e+36f ;
		TT:long_name = "TEMPERATURE" ;
		TT:units = "Degres K" ;
		TT:comment =  ;
 

On voit dans cet exemple que le champ TT est un champ 2D. On remarque aussi que le fichier contient les variables permettant de connaître les dimensions de la grille cible, soit KROM et IROM. Dans le cas d'un champ 3D, la dimension ZROM s'ajoute aux deux précédentes. De plus, le fichier contient les champs LATITUDES et LONGITUDES qui permettent de géoréférencer le champ décompressé. Tous les fichiers de sortie du modèle ROM sont construit selon cette structure.


Utilisation

NC_RAR(A,B,C)
Reconstruire des Axes Reduits - Reduced Axes Reconstruction

A
Champ decrivant la grille de sortie - Field describing output grid
B
Champ a reconstruire - Field to rebuild
C
Champ des indices pts mouilles - Wet point indices field


Note:On peut voir la séquence d'appel de nc_rar depuis Ferret en entrant la commande

show functions


Exemple d'utilisation avec le champd 3D TT (température):

-bash-3.2$ ferret
 
 ! NOAA/PMEL TMAP
 ! FERRET v6.2  
 ! Linux(g77) 2.4.21-32 - 05/19/09
 ! 10-Dec-12 10:23     

use fatm_hb_200102_TT.nc
!
!Définition de la grille cible à partir des dimensions KROM, IROM, ZROM et TROM
!définies dans le fichier d'entrée

let  a = x[gx=krom]*0 + y[gy=irom]*0 + z[gz=zrom]*0 + t[gt=trom]*0
!
!Appel à nc_rar pour décompresser le champ TT
!
let b = nc_rar(a,TT, INDEXVALID3D)
!
!On trace le champ TT au pas de temps 1
!
shade/l=1 b
!
!On retrace le champ en le géoréférencant
!
shade/l=1 b,longitudes,latitudes
!
!on ajoute un trait de côte
!
go land
quit

Exemple

Dans cet exemple on fait les opérations suivantes:

  • Ouvrir le fichier ;
  • Définir la grille cible (grille 2D) ;
  • Tracer la variable TT telle qu'elle est conservée dans le fichier ;
  • Définir une variable b qui est le résultat de la décompression du champ TT ;
  • Tracer la variable b ;
  • Tracer la variable b en conjonctions avec les champs LONGITUDES et LATITUDES afin de la géoréférencer.


-bash-3.2$ ferret
 	NOAA/PMEL TMAP
 	FERRET v6.2  
 	Linux(g77) 2.4.21-32 - 05/19/09
 	27-Feb-13 14:12     

yes? use fatm_gsl_200201_TT.nc 
yes? show data
     currently SET data sets:
    1> ./fatm_gsl_200201_TT.nc  (default)
 name     title                             I         J         K         L
 STARTDATESEC
                                           1:1       ...       ...       ...
 STARTDATEMIN
                                           1:1       ...       ...       ...
 STARTDATEHOUR
                                           1:1       ...       ...       ...
 STARTDATEDAY
                                           1:1       ...       ...       ...
 STARTDATEMONTH
                                           1:1       ...       ...       ...
 STARTDATEYEAR
                                           1:1       ...       ...       ...
 DELTAT                                    1:1       ...       ...       ...
 DELTAKI                                   1:1       ...       ...       ...
 KRANGELOW
                                           1:1       ...       ...       ...
 KRANGEHI                                  1:1       ...       ...       ...
 IRANGELOW
                                           1:1       ...       ...       ...
 IRANGEHI                                  1:1       ...       ...       ...
 NLEVELS                                   1:1       ...       ...       ...
 KSTEP                                     ...       ...       ...       1:248
 XP                                        1:150     ...       ...       ...
 YP                                        1:236     ...       ...       ...
 LATITUDES
          Latitudes                        1:236     1:150     ...       ...
 LONGITUDES
          Longitudes                       1:236     1:150     ...       ...
 JCATMOS  ATMOSPHERIC MASK                 1:236     1:150     ...       ...
 INDEXVALID2D
          INDEXVALID2D                     1:10206   ...       ...       ...
 TT       TEMPERATURE                      1:10206   ...       ...       1:248
 
yes? let  a = x[gx=krom]*0 + y[gy=irom]*0 + t[gt=trom]*0
yes? plot TT[l=1]
yes? let b = nc_rar(a,TT,INDEXVALID2D)
yes? shade b[l=1]
yes? shade b[l=1],longitudes,latitudes
yes? quit