ECC-437: min/max for purely undefined bitmap fields

This commit is contained in:
Shahram Najm 2017-03-14 11:26:48 +00:00
parent 84385844c9
commit 30eaf85a76
2 changed files with 84 additions and 53 deletions

View File

@ -385,6 +385,11 @@ static void check_range(grib_handle* h,const parameter* p,double min,double max)
if(!valueflg) if(!valueflg)
return; return;
double missing = dget(h,"missingValue");
/* See ECC-437 */
if(!(get(h,"bitMapIndicator") == 0 && min == missing && max == missing)){
if(min < p->min1 || min > p->min2) if(min < p->min1 || min > p->min2)
{ {
printf("warning: %s, field %d [%s]: %s minimum value %g is not in [%g,%g]\n",file,field,param, printf("warning: %s, field %d [%s]: %s minimum value %g is not in [%g,%g]\n",file,field,param,
@ -403,6 +408,8 @@ static void check_range(grib_handle* h,const parameter* p,double min,double max)
printf(" => [%g,%g]\n",max < p->max1 ? max : p->max1, max > p->max2 ? max : p->max2); printf(" => [%g,%g]\n",max < p->max1 ? max : p->max1, max > p->max2 ? max : p->max2);
warning++; warning++;
} }
}
} }
static void point_in_time(grib_handle* h,const parameter* p,double min,double max) static void point_in_time(grib_handle* h,const parameter* p,double min,double max)

View File

@ -1409,7 +1409,7 @@ warning: s2s.z_tigge_c_kwbc_20150817000000_ncep_prod_pf_pl_0000_015_0500_w.grib2
{NULL, }, {NULL, },
}, },
{&point_in_time, &predefined_level}, {&point_in_time, &predefined_level, &has_bitmap},
}, },
/* /*
s2s_devel, ecmf, 20141229, 00UTC, test, enfh, real: s2s.2014122900.test.768.10.pf.19941229.sl.168.grib2, field 21 [surface_pressure_sfc]: surface_pressure_sfc maximum value 102851 is not in [102900,110000] s2s_devel, ecmf, 20141229, 00UTC, test, enfh, real: s2s.2014122900.test.768.10.pf.19941229.sl.168.grib2, field 21 [surface_pressure_sfc]: surface_pressure_sfc maximum value 102851 is not in [102900,110000]
@ -1505,7 +1505,7 @@ uerra, eswi-an: an.sp.sfc.grib2, field 1 [surface_pressure_sfc]: surface_pressur
{"typeOfFirstFixedSurface", GRIB_TYPE_LONG, 1}, {"typeOfFirstFixedSurface", GRIB_TYPE_LONG, 1},
{NULL, }, {NULL, },
}, },
{&from_start, &predefined_level}, {&from_start, &predefined_level, &has_bitmap},
}, },
{ {
@ -1526,7 +1526,7 @@ uerra, eswi-an: an.sp.sfc.grib2, field 1 [surface_pressure_sfc]: surface_pressur
{"typeOfFirstFixedSurface", GRIB_TYPE_LONG, 1}, {"typeOfFirstFixedSurface", GRIB_TYPE_LONG, 1},
{NULL, }, {NULL, },
}, },
{&point_in_time, &predefined_level}, {&point_in_time, &predefined_level, &has_bitmap},
}, },
{ {
@ -1547,15 +1547,15 @@ uerra, eswi-an: an.sp.sfc.grib2, field 1 [surface_pressure_sfc]: surface_pressur
{"typeOfFirstFixedSurface", GRIB_TYPE_LONG, 1}, {"typeOfFirstFixedSurface", GRIB_TYPE_LONG, 1},
{NULL, }, {NULL, },
}, },
{&point_in_time, &predefined_level}, {&point_in_time, &predefined_level, &has_bitmap},
}, },
{ {
"sea_surface_temperature_sfc.glob", "sea_surface_temperature_sfc.glob",
-1.5e+6, 200,
1.5e+6, 290,
-1.5e+6, 260,
1.5e+6, 320,
{ {
{"model", GRIB_TYPE_STRING, 0, "glob"}, {"model", GRIB_TYPE_STRING, 0, "glob"},
@ -1568,7 +1568,7 @@ uerra, eswi-an: an.sp.sfc.grib2, field 1 [surface_pressure_sfc]: surface_pressur
{"typeOfFirstFixedSurface", GRIB_TYPE_LONG, 1}, {"typeOfFirstFixedSurface", GRIB_TYPE_LONG, 1},
{NULL, }, {NULL, },
}, },
{&point_in_time, &predefined_level}, {&point_in_time, &predefined_level, &has_bitmap},
}, },
{ {
@ -1771,8 +1771,7 @@ warning: s2s.z_s2s_c_babj_20150817000000_glob_prod_cf_1440_000.sl.grib2, field 1
{"scaledValueOfSecondFixedSurface", GRIB_TYPE_LONG, 2}, {"scaledValueOfSecondFixedSurface", GRIB_TYPE_LONG, 2},
{NULL, }, {NULL, },
}, },
/* {&daily_average, &given_thickness, &has_bitmap}, todo bitmap?? */ {&daily_average, &given_thickness, &has_bitmap},
{&daily_average, &given_thickness},
}, },
/* /*
@ -1807,8 +1806,7 @@ s2s/rums warning: s2s.z_s2s_c_rhmc_20150819000000_glob_prod_1464_001.sl.grib2, f
{"scaledValueOfSecondFixedSurface", GRIB_TYPE_LONG, 10}, {"scaledValueOfSecondFixedSurface", GRIB_TYPE_LONG, 10},
{NULL, }, {NULL, },
}, },
/* {&daily_average, &given_thickness, &has_bitmap}, todo bitmap?? */ {&daily_average, &given_thickness, &has_bitmap},
{&daily_average, &given_thickness},
}, },
/* /*
s2s_devel/ecmf/enfh/rea: warning: s2s.2015011200.test.768.10.cf.20100112.sl.24.grib2, field 25 [soil_temperature_top_20_cm_sfc.glob]: soil_temperature_top_20_cm_sfc.glob minimum value 199.519 is not in [200,230] s2s_devel/ecmf/enfh/rea: warning: s2s.2015011200.test.768.10.cf.20100112.sl.24.grib2, field 25 [soil_temperature_top_20_cm_sfc.glob]: soil_temperature_top_20_cm_sfc.glob minimum value 199.519 is not in [200,230]
@ -1840,7 +1838,7 @@ s2s_prod/ammc/enfo:warning: s2s.st20_20151004_4.grib2, field 61 [soil_temperatur
{"scaledValueOfSecondFixedSurface", GRIB_TYPE_LONG, 2}, {"scaledValueOfSecondFixedSurface", GRIB_TYPE_LONG, 2},
{NULL, }, {NULL, },
}, },
{&daily_average, &given_thickness}, {&daily_average, &given_thickness, &has_bitmap},
}, },
/* /*
@ -1874,7 +1872,7 @@ s2s_prod/ammc/enfo:warning: s2s.st20_20151004_4.grib2, field 61 [soil_temperatur
{"scaledValueOfSecondFixedSurface", GRIB_TYPE_LONG, 2}, {"scaledValueOfSecondFixedSurface", GRIB_TYPE_LONG, 2},
{NULL, }, {NULL, },
}, },
{&daily_average, &given_thickness}, {&daily_average, &given_thickness, &has_bitmap},
}, },
@ -1907,7 +1905,7 @@ s2s_prod/ammc/enfo:warning: s2s.st20_20151004_4.grib2, field 61 [soil_temperatur
{"scaledValueOfSecondFixedSurface", GRIB_TYPE_LONG, 10}, {"scaledValueOfSecondFixedSurface", GRIB_TYPE_LONG, 10},
{NULL, }, {NULL, },
}, },
{&daily_average, &given_thickness}, {&daily_average, &given_thickness, &has_bitmap},
}, },
/* /*
@ -1942,7 +1940,7 @@ s2s_prod/ammc/enfo:warning: s2s.st20_20151004_4.grib2, field 61 [soil_temperatur
{"scaledValueOfSecondFixedSurface", GRIB_TYPE_LONG, 10}, {"scaledValueOfSecondFixedSurface", GRIB_TYPE_LONG, 10},
{NULL, }, {NULL, },
}, },
{&daily_average, &given_thickness}, {&daily_average, &given_thickness, &has_bitmap},
}, },
/* /*
S2S/CAWCR: snow_depth_water_equivalent_sfc.glob maximum value 9066.25 is not in [10000,15000] S2S/CAWCR: snow_depth_water_equivalent_sfc.glob maximum value 9066.25 is not in [10000,15000]
@ -2131,7 +2129,7 @@ s2s/ammc/enfo:s2s.tcc_20151004_9.grib2, field 21 [total_cloud_cover_sfc.glob]: t
{"typeOfFirstFixedSurface", GRIB_TYPE_LONG, 1}, {"typeOfFirstFixedSurface", GRIB_TYPE_LONG, 1},
{NULL, }, {NULL, },
}, },
{&daily_average, &predefined_level}, {&daily_average, &predefined_level, &has_bitmap},
}, },
{ {
@ -2160,10 +2158,10 @@ s2s/ammc/enfo:s2s.tcc_20151004_9.grib2, field 21 [total_cloud_cover_sfc.glob]: t
{ {
"sea_surface_temperature_sfc.glob.s2", "sea_surface_temperature_sfc.glob.s2",
-1.5e+6, 200,
1.5e+6, 290,
-1.5e+6, 260,
1.5e+6, 320,
{ {
{"model", GRIB_TYPE_STRING, 0, "glob"}, {"model", GRIB_TYPE_STRING, 0, "glob"},
{"class", GRIB_TYPE_STRING, 0, "s2"}, {"class", GRIB_TYPE_STRING, 0, "s2"},
@ -2179,7 +2177,7 @@ s2s/ammc/enfo:s2s.tcc_20151004_9.grib2, field 21 [total_cloud_cover_sfc.glob]: t
{"typeOfFirstFixedSurface", GRIB_TYPE_LONG, 1}, {"typeOfFirstFixedSurface", GRIB_TYPE_LONG, 1},
{NULL, }, {NULL, },
}, },
{&daily_average, &predefined_level}, {&daily_average, &predefined_level, &has_bitmap},
}, },
{ {
@ -2202,7 +2200,7 @@ s2s/ammc/enfo:s2s.tcc_20151004_9.grib2, field 21 [total_cloud_cover_sfc.glob]: t
{"typeOfFirstFixedSurface", GRIB_TYPE_LONG, 1}, {"typeOfFirstFixedSurface", GRIB_TYPE_LONG, 1},
{NULL, }, {NULL, },
}, },
{&daily_average, &predefined_level}, {&daily_average, &predefined_level, &has_bitmap},
}, },
/* UERRA */ /* UERRA */
@ -2398,6 +2396,27 @@ uerra/egrr (something like ad hoc 1 grid-point issue (similarly grid-point storm
}, },
{&point_in_time, &given_level}, /* check model levels?? */ {&point_in_time, &given_level}, /* check model levels?? */
}, },
/*
uerra/egrr warning: oper.2010-03-13.ml.grib2, field 16 [cloud_cover_ml]: cloud_cover_ml minimum value -0.906414 is not in [0,1e-10]
{
"cloud_cover_ml.uerra.egrr",
-10,
1e-10,
0,
100.00001,
{
{"class", GRIB_TYPE_STRING, 0, "ur"},
{"centre", GRIB_TYPE_STRING, 1, "egrr"},
{"discipline", GRIB_TYPE_LONG, 0},
{"parameterCategory", GRIB_TYPE_LONG, 6},
{"parameterNumber", GRIB_TYPE_LONG, 22},
{"typeOfFirstFixedSurface", GRIB_TYPE_LONG, 105},
{"scaleFactorOfFirstFixedSurface", GRIB_TYPE_LONG, 0},
{NULL, },
},
{&point_in_time, &given_level},
},
*/
/* pressure level */ /* pressure level */
@ -2508,12 +2527,17 @@ uerra:edzw-an warning: /tmp/marm/uerra/cosmo/sample2/grib2/fc.200812021200+27.pl
}, },
{&point_in_time, &given_level}, /* check model levels?? */ {&point_in_time, &given_level}, /* check model levels?? */
}, },
/*
uerra/eggr warning: oper.2010-03-13.pl.grib2, field 69 [relative_humidity_pl]: relative_humidity_pl maximum value 169 is not in [0,160]
*/
{ {
"relative_humidity_pl", "relative_humidity_pl",
0, 0,
30, 30,
0, 0,
160, 180,
{ {
{"paramId", GRIB_TYPE_LONG, 157}, {"paramId", GRIB_TYPE_LONG, 157},
{"discipline", GRIB_TYPE_LONG, 0}, {"discipline", GRIB_TYPE_LONG, 0},
@ -2595,7 +2619,7 @@ uerra:edzw-an warning: /tmp/marm/uerra/cosmo/sample2/grib2/fc.200812021200+27.pl
{ {
"relative_humidity_hl", "relative_humidity_hl",
0, 0,
20, 40,
1, 1,
160, 160,
{ {
@ -2688,7 +2712,7 @@ uerra:edzw-an warning: /tmp/marm/uerra/cosmo/sample2/grib2/fc.200812021200+27.pl
0, 0,
25, 25,
90, 90,
130, 160,
{ {
{"paramId", GRIB_TYPE_LONG, 260242}, {"paramId", GRIB_TYPE_LONG, 260242},
{"discipline", GRIB_TYPE_LONG, 0}, {"discipline", GRIB_TYPE_LONG, 0},
@ -2718,7 +2742,7 @@ uerra:edzw-an warning: /tmp/marm/uerra/cosmo/sample2/grib2/fc.200812021200+27.pl
{"typeOfStatisticalProcessing", GRIB_TYPE_LONG, 1}, {"typeOfStatisticalProcessing", GRIB_TYPE_LONG, 1},
{NULL, }, {NULL, },
}, },
{&from_start, &predefined_level}, {&from_start, &predefined_level, &has_bitmap},
}, },
/* /*
@ -2738,7 +2762,7 @@ uerra:edzw-an warning: /tmp/marm/uerra/cosmo/sample2/grib2/fc.200812021200+27.pl
{"typeOfFirstFixedSurface", GRIB_TYPE_LONG, 1}, {"typeOfFirstFixedSurface", GRIB_TYPE_LONG, 1},
{NULL, }, {NULL, },
}, },
{&point_in_time, &predefined_level}, {&point_in_time, &predefined_level, &has_bitmap},
}, },
/* /*
uerra, egrr: The albedo is 0 at night because it is dependent on solar radiation uerra, egrr: The albedo is 0 at night because it is dependent on solar radiation
@ -2759,7 +2783,7 @@ uerra:edzw-an warning: /tmp/marm/uerra/cosmo/sample2/grib2/fc.200812021200+27.pl
{"typeOfFirstFixedSurface", GRIB_TYPE_LONG, 1}, {"typeOfFirstFixedSurface", GRIB_TYPE_LONG, 1},
{NULL, }, {NULL, },
}, },
{&point_in_time, &predefined_level}, {&point_in_time, &predefined_level, &has_bitmap},
}, },
{ {
"time_integrated_surface_clear-sky_solar_radiation_downwards", "time_integrated_surface_clear-sky_solar_radiation_downwards",
@ -3264,10 +3288,10 @@ uerra, eswi-enfo:total_cloud_cover_sfc maximum value 96.4844 is not in [100,100]
{ {
"volumetric_field_capacity", "volumetric_field_capacity",
-1e-6, -1e+8,
1e-6, 1e+8,
-1e-6, -1e+8,
1e-6, 1e+8,
{ {
{"paramId", GRIB_TYPE_LONG, 260211}, {"paramId", GRIB_TYPE_LONG, 260211},
{"discipline", GRIB_TYPE_LONG, 2}, {"discipline", GRIB_TYPE_LONG, 2},
@ -3280,10 +3304,10 @@ uerra, eswi-enfo:total_cloud_cover_sfc maximum value 96.4844 is not in [100,100]
{ {
"volumetric_wilting_point", "volumetric_wilting_point",
-1e-6, -1e+8,
1e-6, 1e+8,
-1e-6, -1e+8,
1e-6, 1e+8,
{ {
{"paramId", GRIB_TYPE_LONG, 260200}, {"paramId", GRIB_TYPE_LONG, 260200},
{"discipline", GRIB_TYPE_LONG, 2}, {"discipline", GRIB_TYPE_LONG, 2},