Project

General

Profile

Bug #390

checksums of non-main non-auxiliary variable

Added by Jeffrey Painter about 8 years ago. Updated about 8 years ago.

Status:
Resolved
Priority:
Normal
Category:
QC_data_checker
Start date:
07/23/2011
Due date:
% Done:

0%

Estimated time:

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" ;
}
@

History

#1 Updated by Heinz-Dieter Hollweg about 8 years ago

  • Status changed from New to Resolved
  • Assignee set to Heinz-Dieter Hollweg

see bug-fix report: #2011-07-26
sent via QC-mailing-list.

Also available in: Atom PDF