Hi All,
I have run a file through the CF-checker version 3.1.0 at
http://pumatest.nerc.ac.uk/cgi-bin/cf-checker.pl and it returns some
errors & warnings (see below). As I understand it, the error (4.3.3)
is raised because the checker has not yet been updated to be fully
able to handle CF-1.7 (in particular it says: "*Note:*This version
currently does not include the new cell boundary cross checks detailed
in CF section 7.1 which will follow in due course."). I hope someone
will tell me if my understanding is incorrect about this.
The 3rd warning below indicates that "Data for variable lev lies
outside cell boundaries", but my ncdump of the file suggests that all
"lev" values lie between the corresponding "lev_bnd" values. (See 2nd
dump below.). Could someone please tell me if there is an explanation
for this warning other than it is incorrect?
thanks and best regards,
Karl
------------------------------------------
*Output of CF-Checker follows...*
*----------------------------------------------------------------------------*
/home/ros/software/cf-checker/lib/python2.7/site-packages/cfchecker-3.1.0-py2.7.egg/cfchecker/cfchecks.py:1768:
FutureWarning: Conversion of the second argument of issubdtype from `int` to
`np.signedinteger` is deprecated. In future, it will be treated as `np.int64 ==
np.dtype(int).type`.
elif numpy.issubdtype(attrType, numpy.int) or numpy.issubdtype(attrType,
numpy.float):
/home/ros/software/cf-checker/lib/python2.7/site-packages/cfchecker-3.1.0-py2.7.egg/cfchecker/cfchecks.py:1768:
FutureWarning: Conversion of the second argument of issubdtype from `float` to
`np.floating` is deprecated. In future, it will be treated as `np.float64 ==
np.dtype(float).type`.
elif numpy.issubdtype(attrType, numpy.int) or numpy.issubdtype(attrType,
numpy.float):
CHECKING NetCDF FILE: /tmp/9066.nc
=====================
Using CF Checker Version 3.1.0
Checking against CF Version CF-1.7
Using Standard Name Table Version 65 (2019-04-09T13:32:32Z)
Using Area Type Table Version 9 (07 August 2018)
Using Standardized Region Name Table Version 4 (18 December 2018)
WARN: (7.1): Boundary var lev_bnds should not have attribute units
WARN: (7.1): Boundary var lev_bnds should not have attribute standard_name
WARN: (7.1): Data for variable lev lies outside cell boundaries
------------------
Checking variable: time
------------------
------------------
Checking variable: time_bnds
------------------
------------------
Checking variable: lev
------------------
------------------
Checking variable: lev_bnds
------------------
INFO: attribute formula_terms is being used in a non-standard way
ERROR: (4.3.3): formula_terms attribute only allowed on coordinate variables
------------------
Checking variable: p0
------------------
------------------
Checking variable: a
------------------
INFO: (3.1): No units attribute set. Please consider adding a units attribute
for completeness.
------------------
Checking variable: b
------------------
INFO: (3.1): No units attribute set. Please consider adding a units attribute
for completeness.
------------------
Checking variable: ps
------------------
------------------
Checking variable: a_bnds
------------------
INFO: (3.1): No units attribute set. Please consider adding a units attribute
for completeness.
------------------
Checking variable: b_bnds
------------------
INFO: (3.1): No units attribute set. Please consider adding a units attribute
for completeness.
------------------
Checking variable: lat
------------------
------------------
Checking variable: lat_bnds
------------------
------------------
Checking variable: lon
------------------
------------------
Checking variable: lon_bnds
------------------
------------------
Checking variable: cl
------------------
INFO: attribute history is being used in a non-standard way
ERRORS detected: 1
WARNINGS given: 3
INFORMATION messages: 6
------------------------------------------
*ncdump of file ............*
--------------------------------------------
netcdf cl_Amon_INM-CM5-0_historical_r1i1p1f1_gr1_203001-203002 {
dimensions:
time = UNLIMITED ; // (2 currently)
lev = 5 ;
lat = 3 ;
lon = 4 ;
bnds = 2 ;
variables:
double time(time) ;
time:bounds = "time_bnds" ;
time:units = "days since 2030-1-1" ;
time:calendar = "365_day" ;
time:axis = "T" ;
time:long_name = "time" ;
time:standard_name = "time" ;
double time_bnds(time, bnds) ;
double lev(lev) ;
lev:bounds = "lev_bnds" ;
lev:units = "1" ;
lev:axis = "Z" ;
lev:positive = "down" ;
lev:long_name = "hybrid sigma pressure coordinate" ;
lev:standard_name =
"atmosphere_hybrid_sigma_pressure_coordinate" ;
lev:formula = "p = a*p0 + b*ps" ;
lev:formula_terms = "p0: p0 a: a b: b ps: ps" ;
double lev_bnds(lev, bnds) ;
lev_bnds:formula = "p = a*p0 + b*ps" ;
lev_bnds:standard_name =
"atmosphere_hybrid_sigma_pressure_coordinate" ;
lev_bnds:units = "1" ;
lev_bnds:formula_terms = "p0: p0 a: a_bnds b: b_bnds ps: ps" ;
double p0 ;
p0:long_name = "vertical coordinate formula term: reference
pressure" ;
p0:units = "Pa" ;
double a(lev) ;
a:long_name = "vertical coordinate formula term: a(k)" ;
double b(lev) ;
b:long_name = "vertical coordinate formula term: b(k)" ;
float ps(time, lat, lon) ;
ps:long_name = "Surface Air Pressure" ;
ps:units = "Pa" ;
double a_bnds(lev, bnds) ;
a_bnds:long_name = "vertical coordinate formula term:
a(k+1/2)" ;
double b_bnds(lev, bnds) ;
b_bnds:long_name = "vertical coordinate formula term:
b(k+1/2)" ;
double lat(lat) ;
lat:bounds = "lat_bnds" ;
lat:units = "degrees_north" ;
lat:axis = "Y" ;
lat:long_name = "latitude" ;
lat:standard_name = "latitude" ;
double lat_bnds(lat, bnds) ;
double lon(lon) ;
lon:bounds = "lon_bnds" ;
lon:units = "degrees_east" ;
lon:axis = "X" ;
lon:long_name = "Longitude" ;
lon:standard_name = "longitude" ;
double lon_bnds(lon, bnds) ;
float cl(time, lev, lat, lon) ;
cl:standard_name = "cloud_area_fraction_in_atmosphere_layer" ;
cl:long_name = "Cloud Area Fraction" ;
cl:comment = "Percentage cloud cover, including both large-scale
and convective cloud." ;
cl:units = "%" ;
cl:original_name = "CLOUD" ;
cl:cell_methods = "area: time: mean (interval: 20 minutes)" ;
cl:cell_measures = "area: areacella" ;
cl:history = "2019-04-12T14:28:43Z altered by CMOR: replaced
missing value flag (1e+28) with standard missing value (1e+20). 2019-04-12T14:28:43Z
altered by CMOR: Inverted axis: lev. 2019-04-12T14:28:43Z altered by CMOR: Inverted axis:
lat." ;
cl:missing_value = 1.e+20f ;
cl:_FillValue = 1.e+20f ;
// global attributes:
:Conventions = "CF-1.7 CMIP-6.2" ;
:activity_id = "CMIP" ;
:branch_method = "standard" ;
:branch_time_in_child = 0. ;
:branch_time_in_parent = 90885. ;
:contact = "Evgeny Volodin (volodi...@gmail.com)" ;
:creation_date = "2019-04-12T14:28:43Z" ;
:data_specs_version = "01.00.27" ;
:experiment = "all-forcing simulation of the recent past" ;
:experiment_id = "historical" ;
:external_variables = "areacella" ;
:forcing_index = 1 ;
:frequency = "mon" ;
:further_info_url
="https://furtherinfo.es-doc.org/CMIP6.INM.INM-CM5-0.historical.none.r1i1p1f1"
;
:grid = "gs2x1.5" ;
:grid_label = "gr1" ;
:history = "2019-04-12T14:28:43Z ;rewrote data to be consistent
with CMIP for variable cl found in table Amon." ;
:initialization_index = 1 ;
:institution = "Institute for Numerical Mathematics, Russian
Academy of Science, Moscow 119991, Russia" ;
:institution_id = "INM" ;
:mip_era = "CMIP6" ;
:nominal_resolution = "100 km" ;
:parent_activity_id = "CMIP" ;
:parent_experiment_id = "piControl" ;
:parent_mip_era = "CMIP6" ;
:parent_source_id = "INM-CM5-0" ;
:parent_time_units = "days since 1850-01-01" ;
:parent_variant_label = "r1i1p1f1" ;
:physics_index = 1 ;
:product = "model-output" ;
:realization_index = 1 ;
:realm = "atmos" ;
:references = "Clim. Dyn., 2017, 3715-3734)\'" ;
:run_variant = "standard" ;
:source = "INM-CM5-0 (2016): \n",
"aerosol: INM-AER1\n",
"atmos: INM-AM5-0 (2x1.5; 180 x 120 longitude/latitude; 73
levels; top level sigma = 0.0002)\n",
"atmosChem: none\n",
"land: INM-LND1\n",
"landIce: none\n",
"ocean: INM-OM5 (North Pole shifted to 60N, 90E. 0.5x0.25;
720 x 720 longitude/latitude; 40 levels; vertical sigma coordinate)\n",
"ocnBgchem: none\n",
"seaIce: INM-ICE1" ;
:source_id = "INM-CM5-0" ;
:source_type = "AOGCM AER" ;
:sub_experiment = "none" ;
:sub_experiment_id = "none" ;
:table_id = "Amon" ;
:table_info = "Creation Date:(30 July 2018)
MD5:fa9bc503f57fb067bf398cab2c4ba77e" ;
:title = "INM-CM5-0 output prepared for CMIP6" ;
:tracking_id =
"hdl:21.14100/8645a6fa-b7f3-4ece-ad8e-4541cee008ea" ;
:variable_id = "cl" ;
:variant_label = "r1i1p1f1" ;
:license = "CMIP6 model data produced by Lawrence Livermore PCMDI
is licensed under a Creative Commons Attribution ShareAlike 4.0 International License
(https://creativecommons.org/licenses). Consulthttps://pcmdi.llnl.gov/CMIP6/TermsOfUse
for terms of use governing CMIP6 output, including citation requirements and proper
acknowledgment. Further information about this data, including some limitations, can be
found via the further_info_url (recorded as a global attribute in this file) and
athttps:///pcmdi.llnl.gov/. The data producers and data providers make no warranty,
either express or implied, including, but not limited to, warranties of merchantability
and fitness for a particular purpose. All liabilities arising from the supply of the
information (including any liability arising in negligence) are excluded to the fullest
extent permitted by law." ;
:cmor_version = "3.3.2" ;
data:
time = 15, 45 ;
time_bnds =
0, 30,
30, 60 ;
lev = 0.899999976158142, 0.699999988079071, 0.550000011920929,
0.300000011920929, 0.100000001490116 ;
lev_bnds =
1, 0.800000011920929,
0.800000011920929, 0.620000004768372,
0.620000004768372, 0.419999986886978,
0.419999986886978, 0.200000002980232,
0.200000002980232, 0 ;
p0 = 100000 ;
a = 0.100000001490116, 0.219999998807907, 0.300000011920929,
0.200000002980232, 0.100000001490116 ;
b = 0.800000011920929, 0.5, 0.200000002980232, 0.100000001490116, 0 ;
ps =
94100, 94500, 94900, 95300,
95700, 96100, 96500, 96900,
97300, 97700, 98100, 98500,
94200, 94600, 95000, 95400,
95800, 96200, 96600, 97000,
97400, 97800, 98200, 98600 ;
a_bnds =
0, 0.159999996423721,
0.159999996423721, 0.25,
0.25, 0.25,
0.25, 0.150000005960464,
0.150000005960464, 0 ;
b_bnds =
1, 0.649999976158142,
0.649999976158142, 0.349999994039536,
0.349999994039536, 0.150000005960464,
0.150000005960464, 0.0500000007450581,
0.0500000007450581, 0 ;
lat = 10, 20, 30 ;
lat_bnds =
5, 15,
15, 25,
25, 35 ;
lon = 0, 90, 180, 270 ;
lon_bnds =
-45, 45,
45, 135,
135, 225,
225, 315 ;
cl =
25.78, 25.86, 25.94, 26.02,
25.46, 25.54, 25.62, 25.7,
25.14, 25.22, 25.3, 25.38,
24.5, 24.58, 24.66, 24.74,
24.18, 24.26, 24.34, 24.42,
23.86, 23.94, 24.02, 24.1,
23.22, 23.3, 23.38, 23.46,
22.9, 22.98, 23.06, 23.14,
22.58, 22.66, 22.74, 22.82,
21.94, 22.02, 22.1, 22.18,
21.62, 21.7, 21.78, 21.86,
21.3, 21.38, 21.46, 21.54,
20.66, 20.74, 20.82, 20.9,
20.34, 20.42, 20.5, 20.58,
20.02, 20.1, 20.18, 20.26,
25.8, 25.88, 25.96, 26.04,
25.48, 25.56, 25.64, 25.72,
25.16, 25.24, 25.32, 25.4,
24.52, 24.6, 24.68, 24.76,
24.2, 24.28, 24.36, 24.44,
23.88, 23.96, 24.04, 24.12,
23.24, 23.32, 23.4, 23.48,
22.92, 23, 23.08, 23.16,
22.6, 22.68, 22.76, 22.84,
21.96, 22.04, 22.12, 22.2,
21.64, 21.72, 21.8, 21.88,
21.32, 21.4, 21.48, 21.56,
20.68, 20.76, 20.84, 20.92,
20.36, 20.44, 20.52, 20.6,
20.04, 20.12, 20.2, 20.28 ;
}