[ncl-talk] reading in ERA-20C grib file with data on model/hybrid levels

Dennis Shea shea at ucar.edu
Tue Mar 12 13:53:14 MDT 2019


Yes. NCL does *not* recognize the hybrid coefficients. *IMHO: It is a bug.*

*wgrib2* does 'see' the 92 interface coefficients.

*%>* *wgrib2* *-hybrid* e20c_an_temp_r360x180_ml_199410.grib | less

The following are the (*hyai, hybi*) values:

1:0:*Hybrid levels=92 *1=( 0.000000, 2.000040) 2=( 3.980832, 7.387186)
3=(12.908319,21.413612) 4=(33.952858,51.746601) 5=(76.167656,108.715561)
6=(150.986023,204.637451) 7=(271.356506,352.824493)
8=(450.685791,566.519226) 9=(701.813354,857.945801)
10=(1036.166504,1237.585449) 11=(1463.163940,1713.709595)
12=(1989.874390,2292.155518) 13=(2620.898438,2976.302246)
14=(3358.425781,3767.196045) 15=(4202.416504,4663.776367)
16=(5150.859863,5663.156250) 17=(6199.839355,6759.727051)
18=(7341.469727,7942.926270) 19=(8564.624023,9208.305664)
20=(9873.560547,10558.881836) 21=(11262.484375,11982.662109)
22=(12713.897461,13453.225586) 23=(14192.009766,14922.685547)
24=(15638.053711,16329.560547) 25=(16990.623047,17613.281250)
26=(18191.029297,18716.968750) 27=(19184.544922,19587.513672)
28=(19919.796875,20175.394531) 29=(20348.916016,20434.158203)
30=(20426.218750,20319.011719) 31=(20107.031250,19785.357422)
32=(19348.775391,18798.822266) 33=(18141.296875,17385.595703)
34=(16544.585938,15633.566406) 35=(14665.645508,13653.219727)
36=(12608.383789,11543.166992) 37=(10471.310547,9405.222656)
38=(8356.252930,7335.164551) 39=(6353.920898,5422.802734)
40=(4550.215820,3743.464355) 41=(3010.146973,2356.202637)
42=(1784.854614,1297.656128) 43=(895.193542,576.314148)
44=(336.772369,162.043427) 45=(54.208336, 6.575628) 46=( 0.003160,
0.000000) 47=( 0.000000, 0.000000) 48=( 0.000000, 0.000000) 49=( 0.000000,
0.000000) 50=( 0.000000, 0.000000) 51=( 0.000000, 0.000000) 52=( 0.000000,
0.000000) 53=( 0.000000, 0.000000) 54=( 0.000000, 0.000000) 55=( 0.000000,
0.000000) 56=( 0.000000, 0.000000) 57=( 0.000000, 0.000000) 58=( 0.000000,
0.000000) 59=( 0.000000, 0.000000) 60=( 0.000000, 0.000000) 61=( 0.000000,
0.000000) 62=( 0.000000, 0.000000) 63=( 0.000000, 0.000000) 64=( 0.000000,
0.000014) 65=( 0.000055, 0.000131) 66=( 0.000279, 0.000548) 67=( 0.001000,
0.001701) 68=( 0.002765, 0.004267) 69=( 0.006322, 0.009035) 70=( 0.012508,
0.016860) 71=( 0.022189, 0.028610) 72=( 0.036227, 0.045146) 73=( 0.055474,
0.067316) 74=( 0.080777, 0.095964) 75=( 0.112979, 0.131935) 76=( 0.152934,
0.176091) 77=( 0.201520, 0.229315) 78=( 0.259554, 0.291993) 79=( 0.326329,
0.362203) 80=( 0.399205, 0.436906) 81=( 0.475016, 0.513280) 82=( 0.551458,
0.589317) 83=( 0.626559, 0.662934) 84=( 0.698224, 0.732224) 85=( 0.764679,
0.795385) 86=( 0.824185, 0.850950) 87=( 0.875518, 0.897767) 88=( 0.917651,
0.935157) 89=( 0.950274, 0.963007) 90=( 0.973466, 0.982238) 91=( 0.989153,
0.994204) 92=( 0.997630, 1.000000)

The mid-layer coefficients (91) are calculated as the mid-points and are
calculated.
====
Still, something seems odd. My local CDO version

*%> cdo -V*
*Climate Data Operators version 1.7.2 *(http://mpimet.mpg.de/cdo)

*%>cdo* -f nc copy e20c_an_temp_r360x180_ml_199410.grib
e20c_temp_199410.nc


*cdo copy: Open failed on >e20c_an_temp_r360x180_ml_199410.grib<Unsupported
file type*
====
CDO Versions *1.9.3 *and* 1.9.4* *do recognize* the hybrid coefficients
*.  *

====
The issue with GRIB is that it is a moving target.

D


On Tue, Mar 12, 2019 at 7:29 AM De Vries Andries <
andries.devries at env.ethz.ch> wrote:

> Hi Dennis,
>
> Thank you very much. The newer version of NCL helps indeed, hadn't thought
> of that simple solution. However, still I miss a few coordinate variables
> that I can read in the netcdf file, but not in the original grib file; the
> hyam and hybm variabels. Please, see the print statement of the netcdf file
> below. Any idea why and what can help?
>
> Cheers,
> Andries
>
> Variable: b2
> Type: file
> filename:       e20c_an_temp_r360x180_ml_199410
> path:   ../ERA20C-MOD/NC/e20c_an_temp_r360x180_ml_199410.nc
>    file global attributes:
>       CDI : Climate Data Interface version 1.9.5 (http://mpimet.mpg.de/cdi
> )
>       Conventions : CF-1.6
>       history : Thu Feb 14 11:02:46 2019: cdo -f nc copy
> /atmosdyn/devriesa/DATA/ERA20C/e20c_an_temp_r360x180_ml_199410.grib
> /atmosdyn/devriesa/DATA/ERA20C-MOD/NC/e20c_an_temp_r360x180_ml_199410.nc
>       institution : European Centre for Medium-Range Weather Forecasts
>       CDO : Climate Data Operators version 1.9.5 (http://mpimet.mpg.de/cdo
> )
>    dimensions:
>       time = 124  // unlimited
>       lon = 360
>       lat = 181
>       lev = 91
>       nhyi = 92
>       nhym = 91
>    variables:
>       double time ( time )
>          standard_name :        time
>          units :        hours since 1994-10-1 00:00:00
>          calendar :     proleptic_gregorian
>          axis : T
>
>       double lon ( lon )
>          standard_name :        longitude
>          long_name :    longitude
>          units :        degrees_east
>          axis : X
>
>       double lat ( lat )
>          standard_name :        latitude
>          long_name :    latitude
>          units :        degrees_north
>          axis : Y
>
>       double lev ( lev )
>          standard_name :        hybrid_sigma_pressure
>          long_name :    hybrid level at layer midpoints
>          formula :      hyam hybm (mlev=hyam+hybm*aps)
>          formula_terms :        ap: hyam b: hybm ps: aps
>          units :        level
>          positive :     down
>
>       double hyai ( nhyi )
>          long_name :    hybrid A coefficient at layer interfaces
>          units :        Pa
>
>       double hybi ( nhyi )
>          long_name :    hybrid B coefficient at layer interfaces
>          units :        1
>
>       double hyam ( nhym )
>          long_name :    hybrid A coefficient at layer midpoints
>          units :        Pa
>
>       double hybm ( nhym )
>          long_name :    hybrid B coefficient at layer midpoints
>          units :        1
>
>       float t ( time, lev, lat, lon )
>          standard_name :        air_temperature
>          long_name :    Temperature
>          units :        K
>          param :        0.0.0
>
> ________________________________________
> From: Dennis Shea [shea at ucar.edu]
> Sent: 12 March 2019 13:09
> To: De Vries  Andries
> Cc: ncl-talk at ucar.edu
> Subject: Re: [ncl-talk] reading in ERA-20C grib file with data on
> model/hybrid levels
>
> I am using NCL 6.5.0. I have no problem reading the grib file.
>
> %> ncl
>
>  NCAR Command Language Version 6.5.0
>
> ncl 0> f = addfile("e20c_an_temp_r360x180_ml_199410.grib","r")
> ncl 1> print(f)
> ncl 2> t = f->TMP_P0_L105_GLL0
> printVarSummary(t)
> ncl 3> printVarSummary(t)
>
> Variable: t
> Type: float
> Total Size: 2941061760 bytes
>             735265440 values
> Number of Dimensions: 4
> Dimensions and sizes:    [initial_time0_hours | 124] x [lv_HYBL0 | 91] x
> [lat_0 | 181] x [lon_0 | 360]
> Coordinates:
>             initial_time0_hours: [1707120..1707858]
>             lv_HYBL0: [ 1..91]
>             lat_0: [90..-90]
>             lon_0: [ 0..359]
> Number Of Attributes: 11
>   center :    European Center for Medium-Range Weather Forecasts
>   production_status :    Operational products
>   long_name :    Temperature
>   units :    K
>   _FillValue :    1e+20
>   grid_type :    Latitude/longitude
>   parameter_discipline_and_category :    Meteorological products,
> Temperature
>   parameter_template_discipline_category_number :    ( 0, 0, 0, 0 )
>   level_type :    Hybrid level
>   forecast_time :    0
>   forecast_time_units :    hours
>
> ncl 4> printMinMax(t,0)
> (0)     Temperature (K) : min=170.211   max=313.993
>
> On Tue, Mar 12, 2019 at 5:30 AM De Vries Andries <
> andries.devries at env.ethz.ch<mailto:andries.devries at env.ethz.ch>> wrote:
> Dear NCL Team & Users,
>
> I have an issue with reading in ERA-20C grib files from ECMWF that contain
> data on model levels. No matter if it is data on a regular (1x1 degree
> grid) or a gaussian grid (N80), I can not read the variables within the
> file, see for example the first print statements below.
>
> When I convert the grib file to netcdf format, using the tool cdo {cdo -f
> nc copy {infile} {outfile}}, there is no problem; I can read in the netcdf
> file and variables without any problem, see the second print statement
> below. Ideally, however, I would like to use NCL to read in the grib files
> without converting them first to netcdf format. Any idea how to achieve
> this?
>
> Two side comments (1) I can read in ERA-20C grib files with data on
> pressure levels, surface, or isentropic levels without any problem problem;
> there is no need to convert them to netcdf format, and (2) Also, I can read
> in ERA-Interim grib files with data on model levels without any problems
> that are downloaded in the same manner & format as the ERA-20C data.
>
> @NCL TEAM; I copied an example ERA-20C file in grib and netcdf format with
> temperature on model levels for the year 199410 to ftp.cgd.ucar.edu<
> http://ftp.cgd.ucar.edu>
>
> Kind regards,
> Andries
>
>
> -----------------------------------------------------------------------------------------------------------------------------------------------------------------
> READING IN ERA-20C GRIB FILE WITH DATA ON MODEL LEVELS; CANNOT READ
> VARIABLES
>
> -----------------------------------------------------------------------------------------------------------------------------------------------------------------
>
> Copyright (C) 1995-2015 - All Rights Reserved
>  University Corporation for Atmospheric Research
>  NCAR Command Language Version 6.3.0
>  The use of this software is governed by a License Agreement.
>  See http://www.ncl.ucar.edu/ for more details.
> ncl 0> a=addfile("e20c_an_temp_r360x180_ml_199410.grib","r")
>
> ncl 1> print(a)
>
> print(a)
>
> Variable: a
> Type: file
> filename:       (null)
> path:   e20c_an_temp_r360x180_ml_199410.grib
>    file global attributes:
>    dimensions:
>    variables:
>
>
> -----------------------------------------------------------------------------------------------------------------------------------------------------------------
> READING IN ERA-20C NETCDF FILE WITH DATA ON MODEL LEVELS; READS VARIABLES
>
> -----------------------------------------------------------------------------------------------------------------------------------------------------------------
>
>  Copyright (C) 1995-2015 - All Rights Reserved
>  University Corporation for Atmospheric Research
>  NCAR Command Language Version 6.3.0
>  The use of this software is governed by a License Agreement.
>  See http://www.ncl.ucar.edu/ for more details.
>
> ncl 0> a=addfile("e20c_an_temp_r360x180_ml_199410.nc<
> http://e20c_an_temp_r360x180_ml_199410.nc>","r")
>
> ncl 1> print(a)
>
> Variable: a
> Type: file
> filename:       e20c_an_temp_r360x180_ml_199410
> path:   e20c_an_temp_r360x180_ml_199410.nc<
> http://e20c_an_temp_r360x180_ml_199410.nc>
>    file global attributes:
>       CDI : Climate Data Interface version 1.9.5 (http://mpimet.mpg.de/cdi
> )
>       Conventions : CF-1.6
>       history : Thu Feb 14 11:02:46 2019: cdo -f nc copy
> /atmosdyn/devriesa/DATA/ERA20C/e20c_an_temp_r360x180_ml_199410.grib
> /atmosdyn/devriesa/DATA/ERA20C-MOD/NC/e20c_an_temp_r360x180_ml_199410.nc<
> http://e20c_an_temp_r360x180_ml_199410.nc>
>       institution : European Centre for Medium-Range Weather Forecasts
>       CDO : Climate Data Operators version 1.9.5 (http://mpimet.mpg.de/cdo
> )
>    dimensions:
>       time = 124  // unlimited
>       lon = 360
>       lat = 181
>       lev = 91
>       nhyi = 92
>       nhym = 91
>    variables:
>       double time ( time )
>          standard_name :        time
>          units :        hours since 1994-10-1 00:00:00
>          calendar :     proleptic_gregorian
>          axis : T
>
>       double lon ( lon )
>          standard_name :        longitude
>          long_name :    longitude
>          units :        degrees_east
>          axis : X
>
>       double lat ( lat )
>          standard_name :        latitude
>          long_name :    latitude
>          units :        degrees_north
>          axis : Y
>
>       double lev ( lev )
>          standard_name :        hybrid_sigma_pressure
>          long_name :    hybrid level at layer midpoints
>          formula :      hyam hybm (mlev=hyam+hybm*aps)
>          formula_terms :        ap: hyam b: hybm ps: aps
>          units :        level
>          positive :     down
>
>       double hyai ( nhyi )
>          long_name :    hybrid A coefficient at layer interfaces
>          units :        Pa
>
>       double hybi ( nhyi )
>          long_name :    hybrid B coefficient at layer interfaces
>          units :        1
>
>       double hyam ( nhym )
>          long_name :    hybrid A coefficient at layer midpoints
>          units :        Pa
>
>       double hybm ( nhym )
>          long_name :    hybrid B coefficient at layer midpoints
>          units :        1
>
>       float t ( time, lev, lat, lon )
>          standard_name :        air_temperature
>          long_name :    Temperature
>          units :        K
>          param :        0.0.0
> _______________________________________________
> ncl-talk mailing list
> ncl-talk at ucar.edu<mailto:ncl-talk at ucar.edu>
> List instructions, subscriber options, unsubscribe:
> http://mailman.ucar.edu/mailman/listinfo/ncl-talk
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mailman.ucar.edu/pipermail/ncl-talk/attachments/20190312/9e2e2c83/attachment.html>


More information about the ncl-talk mailing list