Hi Hella,
In your third example you tried to use the attribute "missing" to denote
the missing value. You really need to call this either "missing_value"
or "_FillValue" and Ferret will pick this up (along with other software
that recognises CF standard files).
Adding the missing value attribute with nco may or may not be a quick
task. If there isn't sufficient space in the definition part of the file
nco may have to make a temporary copy of each file. Still, in the long
term it will probably be worth it to have CF compliant files.
Russ
On Mon, 2013-06-10 at 23:13 +0200, Hella Riede wrote:
Dear ferret list,
there is a problem reading our climate model netcdf files with the new
ferret double precision version. I boiled it down to a set of small
files in the attachment.
'-1E+34' is not recognized as 'missing value' (see 'ex_float'). To save
space, all variables except dimensional variables in our climate model
output are defined as "float" = "single precision".
When a netcdf file is read into double-precision ferret, the entry
'-1E+34' in a float (single precision) variable is not recognized as
'missing value' anymore, but has a numerical value of
-9.999999790214768E+33 (prec=16). The bad values are thus not masked,
which is inconvenient for plotting or analysis.
yes? list press
VARIABLE : pressure (Pa)
FILENAME : ex_float.nc
SUBSET : 3 points (TIME)
01-JAN-2000 00:20:00 / 1: 1.000E+04
01-JAN-2000 00:40:00 / 2: -1.000E+34
01-JAN-2000 01:00:00 / 3: 1.000E+05
The workaround 'set var/bad=-9.999999790214768E+33
<variable>' is inconvenient as well.
Interestingly, when listing the bad value of the variable, the bad-value
masking seems to work:
yes? list `press,ret=bad`
!-> list -1.E+34
VARIABLE : constant
....
In 'ex_double' (attachment), I exchanged 'float' to 'double' by hand for
all variables. The value '-1E+34' is then recognized correctly:
yes? list press
VARIABLE : pressure (Pa)
FILENAME : ex_traj2.nc
SUBSET : 3 points (TIME)
01-JAN-2000 00:20:00 / 1: 10000.
01-JAN-2000 00:40:00 / 2: ....
01-JAN-2000 01:00:00 / 3: 100020.
The explicit definition of a missing value in the netCDF file does not
solve the issue (attachment: ex_float_missing).
Please help us with backwards compatibility as we cannot go into several
terabyte of climate data output to change "float" to "double" in the
variable definitions.
Thanks a lot in advance,
Hella