Nc rar
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 = ;
Utilisation
- NC_RAR(A,B,C)
- Reconstruire des Axes Reduits - Reduced Axes Reconstruction
où
- 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
-bash-3.2$ more ferret.jnl
! NOAA/PMEL TMAP ! FERRET v6.2 ! Linux(g77) 2.4.21-32 - 05/19/09 ! 10-Dec-12 10:23
use "/mnt/eaudevie_sas_intrants/hudson/netcdf/atmosphere_ndp/hb/2001/02/fatm_hb_200102_TT.nc" show data shade/l=1 TT plot/l=1 TT let a = x[gx=krom]*0 + y[gy=irom]*0 + t[gt=trom]*0 let b = nc_rar(a,TT, INDEXVALID2D) shade/l=1 b go land shade/l=1 b,lon,lat shade/l=1 b,longitudes,latitudes go land show axis/all shade/l=224 b,longitudes,latitudes go land calcel data /all cancel data /all use "/mnt/eaudevie_sas_intrants/hudson/netcdf/atmosphere_ndp/hb/2001/02/fatm_hb_200102_PR.nc" let b = nc_rar(a,PR, INDEXVALID2D) let a = x[gx=krom]*0 + y[gy=irom]*0 + t[gt=trom]*0 let b = nc_rar(a,PR, INDEXVALID2D) shade/l=224 b,longitudes,latitudes go land shade/l=220 b,longitudes,latitudes shade/l=210 b,longitudes,latitudes shade/l=180 b,longitudes,latitudes shade/l=181 b,longitudes,latitudes shade/l=182 b,longitudes,latitudes shade/l=183 b,longitudes,latitudes shade/l=184 b,longitudes,latitudes quit