[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
RE: M3IOConvention
- Subject: RE: M3IOConvention
- Date: Fri, 13 Jun 2014 23:57:45 +0000
Yes, LAY dimension and VGLVLS attribute are required (by the M3IO spec)
in all M3IO-format files, even for one-layer files such as shown here:
netcdf ACONC {
dimensions:
TSTEP = UNLIMITED ; // (24 currently)
DATE-TIME = 2 ;
LAY = 1 ;
VAR = 5 ;
ROW = 299 ;
COL = 459 ;
variables:
int TFLAG(TSTEP, VAR, DATE-TIME) ;
TFLAG:units = "<YYYYDDD,HHMMSS>" ;
TFLAG:long_name = "TFLAG " ;
TFLAG:var_desc = "Timestep-valid flags: (1) YYYYDDD or (2)
HHMMSS " ;
float NO2(TSTEP, LAY, ROW, COL) ;
NO2:long_name = "NO2 " ;
NO2:units = "ppmV " ;
NO2:var_desc = "Variable NO2
" ;
float NO(TSTEP, LAY, ROW, COL) ;
NO:long_name = "NO " ;
NO:units = "ppmV " ;
NO:var_desc = "Variable NO
" ;
float O3(TSTEP, LAY, ROW, COL) ;
O3:long_name = "O3 " ;
O3:units = "ppmV " ;
O3:var_desc = "Variable O3
" ;
float NO3(TSTEP, LAY, ROW, COL) ;
NO3:long_name = "NO3 " ;
NO3:units = "ppmV " ;
NO3:var_desc = "Variable NO3
" ;
float CO(TSTEP, LAY, ROW, COL) ;
CO:long_name = "CO " ;
CO:units = "ppmV " ;
CO:var_desc = "Variable CO
" ;
// global attributes:
:IOAPI_VERSION = "$Id: @(#) ioapi library version 3.0 $
" ;
:EXEC_ID = "????????????????
" ;
:FTYPE = 1 ;
:CDATE = 2010139 ;
:CTIME = 143719 ;
:WDATE = 2010139 ;
:WTIME = 143719 ;
:SDATE = 2006184 ;
:STIME = 0 ;
:TSTEP = 10000 ;
:NTHIK = 1 ;
:NCOLS = 459 ;
:NROWS = 299 ;
:NLAYS = 1 ;
:NVARS = 5 ;
:GDTYP = 2 ;
:P_ALP = 33. ;
:P_BET = 45. ;
:P_GAM = -97. ;
:XCENT = -97. ;
:YCENT = 40. ;
:XORIG = -2556000. ;
:YORIG = -1728000. ;
:XCELL = 12000. ;
:YCELL = 12000. ;
:VGTYP = 7 ;
:VGTOP = 5000.f ;
:VGLVLS = 1.f, 0.f ;
:GDNAM = "12US1 " ;
:UPNAM = "WR_ACONC " ;
:VAR-LIST = "NO2 NO O3
NO3 CO " ;
:FILEDESC = "Concentration file output
Averaged over the synchronization time steps
Timestamp represents beginning computed date/time
Layer mapping (CGRID to AGRID):
Layer 1 to 1
" ;
:HISTORY = "" ;
}
________________________________________
From: Schmunk, Robert B. (GISS-611.0)[TRINNOVIM, LLC] <address@hidden>
Sent: Friday, June 13, 2014 6:43 PM
To: John Caron
Cc: address@hidden; Plessel, Todd
Subject: M3IOConvention
John,
In working with a Panoply user who recently had trouble with a dataset, I may
have discovered a bug in NJ library’s handling of datasets using the M3IO
Convention. It’s a question of what the convention actually requires and how
NJ’s M3IOConvention class handles a possible exception.
The problem is that when M3IOConvention is constructing coordinate axes, it
throws a NullPointerException in the makeZCoordAxis method at line 180 if the
LAY dimension is not declared and at line 187 if there is no global attribute
named VGLVLS. Absent this dimension or attribute, the file can’t be opened at
all.
I see there are a couple commented lines at 79-80 indicating there’s some
question as to whether to the VGLVLS attribute is required. But with the lack
of exception catching at line 187, it effectively is required.
In any event, it would seem to me that that the makeZCoordAxis method should
verify that LAY and VGLVLS do exist. If their presence is optional, then
makeZCoordAxis should return without further effort constructing the axis. If
they are required, then perhaps a more helpful exception message could be
thrown?
BTWL I’m CC-ing Todd Plessel on this as I see his address in the source code
for M3IOConvention and also see his name in the NJ support archive as answering
related e-mail last year. I would assume he can state whether the LAY dimension
is required of a valid M3IO dataset or simply optional.
rbs
--
Robert B. Schmunk
Webmaster / Senior Systems Programmer
NASA Goddard Institute for Space Studies
2880 Broadway, New York, NY 10025