Bug #390
openchecksums of non-main non-auxiliary variable
0%
Description
I re-ran QC on a dataset I had QC'ed a few months ago, INM's 1pctCO2 experiment, and saw a new error.
Here is a sample error file, qc_error_so_Omon_inmcm4_1pctCO2_r1i1p1_209001-209412.txt:
@QC::checkProjectTableAuxiliary()
Conflict for auxiliary between file and table.
File: /cmip5/data/cmip5/output1/INM/inmcm4/1pctCO2/mon/ocean/Omon/r1i1p1/so/1/so_Omon_inmcm4_1pctCO2_r1i1p1_209001-209412.nc
Project table project_standard_output_12May2010.csv
Variable: eta
checksum: table: 1042463503
ncfile: 3660952389@
When I looked at the project table, I saw that both checksums (1042463503 and 3660952389) belong to an auxiliary variable lev_bnds, allegedly associated with a variable eta. The project table has two entries for eta. Other than the duplicate entry, eta appears in the project table the same way as any other variable which represents a physical quantity.
What is eta? It is not what I would call a "main variable" - there is no directory named eta and no filename 'eta_*.nc'. But, if you look at the definition of QC::addAuxToProjectTable(...) you will see that the term "auxiliary variable" is defined so that eta cannot be classed as an auxiliary variable either - an 'auxiliary variable' cannot be time-dependent, but eta is time-dependent. You find eta in files belonging to other variables.
It seems to me that 'eta' gets treated sometimes as an auxiliary and sometimes as a main variable, confusing the whole process of computing checksums and writing and reading them from the project table.
Here is a sample header for a file involved in this problem:
@bash-3.2$ ncdump -h so_Omon_inmcm4_1pctCO2_r1i1p1_209001-209412.nc
netcdf so_Omon_inmcm4_1pctCO2_r1i1p1_209001-209412 {
dimensions:
time = UNLIMITED ; // (60 currently)
lev = 40 ;
rlat = 340 ;
rlon = 360 ;
bnds = 2 ;
vertices = 4 ;
variables:
double time(time) ;
time:bounds = "time_bnds" ;
time:units = "days since 2090-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:axis = "Z" ;
lev:positive = "up" ;
lev:long_name = "ocean sigma coordinate" ;
lev:standard_name = "ocean_sigma_coordinate" ;
lev:formula = "z(n,k,j,i) = eta(n,j,i) + sigma(k)*(depth(j,i)+eta(n,j,i))" ;
lev:formula_terms = "sigma: lev eta: eta depth: depth" ;
double lev_bnds(lev, bnds) ;
lev_bnds:formula = "z(n,k,j,i) = eta(n,j,i) + sigma(k)*(depth(j,i)+eta(n,j,i))" ;
lev_bnds:standard_name = "ocean_sigma_coordinate" ;
lev_bnds:units = "" ;
lev_bnds:formula_terms = "sigma: lev_bnds eta: eta depth: depth" ;
float eta(time, rlat, rlon) ;
eta:long_name = "Sea Surface Height" ;
eta:units = "m" ;
eta:cell_methods = "time: mean" ;
float depth(rlat, rlon) ;
depth:long_name = "Sea Floor Depth" ;
depth:comment = "Ocean bathymetry." ;
depth:units = "m" ;
double rlat(rlat) ;
rlat:units = "degrees" ;
rlat:axis = "Y" ;
rlat:long_name = "latitude in rotated pole grid" ;
rlat:standard_name = "grid_latitude" ;
double rlon(rlon) ;
rlon:units = "degrees" ;
rlon:axis = "X" ;
rlon:long_name = "longitude in rotated pole grid" ;
rlon:standard_name = "grid_longitude" ;
int rotated_latitude_longitude ;
rotated_latitude_longitude:grid_mapping_name = "rotated_latitude_longitude" ;
rotated_latitude_longitude:grid_north_pole_latitude = 70. ;
rotated_latitude_longitude:grid_north_pole_longitude = 100. ;
rotated_latitude_longitude:north_pole_grid_longitude = -80. ;
float lat(rlat, rlon) ;
lat:standard_name = "latitude" ;
lat:long_name = "latitude coordinate" ;
lat:units = "degrees_north" ;
lat:bounds = "lat_vertices" ;
float lon(rlat, rlon) ;
lon:standard_name = "longitude" ;
lon:long_name = "longitude coordinate" ;
lon:units = "degrees_east" ;
lon:bounds = "lon_vertices" ;
float lat_vertices(rlat, rlon, vertices) ;
lat_vertices:units = "degrees_north" ;
float lon_vertices(rlat, rlon, vertices) ;
lon_vertices:units = "degrees_east" ;
float so(time, lev, rlat, rlon) ;
so:standard_name = "sea_water_salinity" ;
so:long_name = "Sea Water Salinity" ;
so:units = "psu" ;
so:original_name = "so" ;
so:cell_methods = "time: mean (interval: 1 month)" ;
so:cell_measures = "area: areacello volume: volcello" ;
so:history = "2010-06-21T10:09:16Z altered by CMOR: Reordered dimensions, original order: time rlat rlon lev." ;
so:missing_value = 1.e+20f ;
so:_FillValue = 1.e+20f ;
so:associated_files = "baseURL: http://cmip-pcmdi.llnl.gov/CMIP5/dataLocation gridspecFile: gridspec_fx_inmcm4_1pctCO2_r0i0p0.nc areacello: areacello_fx_inmcm4_1pctCO2_r0i0p0.nc volcello: volcello_fx_inmcm4_1pctCO2_r0i0p0.nc" ;
so:grid_mapping = "rotated_latitude_longitude" ;
so:coordinates = "lat lon" ;
// global attributes:
:institution = "INM (Institute for Numerical Mathematics, Moscow, Russia)" ;
:institute_id = "INM" ;
:experiment_id = "1pctCO2" ;
:source = "inmcm4 (2009)" ;
:model_id = "inmcm4" ;
:forcing = "N/A" ;
:parent_experiment_id = "piControl" ;
:branch_time = 87600. ;
:contact = "Evgeny Volodin, volodin@inm.ras.ru,INM RAS, Gubkina 8, Moscow, 119333 Russia,+7-495-9383904" ;
:history = "Output from /data5/volodin/4CO2A 2010-06-21T10:09:17Z CMOR rewrote data to comply with CF standards and CMIP5 requirements." ;
:comment = "no comments" ;
:references = "Volodin, Diansky, Gusev 2010. Climate model INMCM4.0. Izvestia RAS. Atmospheric and oceanic physics, V.46, N4, in print." ;
:initialization_method = 1 ;
:physics_version = 1 ;
:tracking_id = "14381571-9a89-40fe-b04b-2dd039f03d10" ;
:product = "output" ;
:experiment = "1 percent per year CO2" ;
:frequency = "mon" ;
:creation_date = "2010-06-21T10:11:14Z" ;
:Conventions = "CF-1.4" ;
:project_id = "CMIP5" ;
:table_id = "Table Omon (12 May 2010) f2afe576fb73a3a11aaa3cc8f2e62cf3" ;
:title = "inmcm4 model output prepared for CMIP5 1 percent per year CO2" ;
:parent_experiment = "pre-industrial control" ;
:modeling_realm = "ocean" ;
:realization = 1 ;
:cmor_version = "2.0.0" ;
}
@
Updated by Anonymous about 14 years ago
- Status changed from New to Resolved
- Assignee set to Anonymous
see bug-fix report: #2011-07-26
sent via QC-mailing-list.