[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: syntax of surface variables



Greetings Ian,

Panoply uses netCDF-Java, and depending on the version, it may or may not be able to fully understand the GRIB file. The TDS you are hitting is using a snapshot build of version 5.0, which I know Panoply isn't using yet (very, very few people are yet as it's unreleased, and probably unwise), which is why the TDS will serve it up but Panoply isn't dealing with it. Are you using the latest release of Panoply?

The output from ncl_filedump tells me that the variable "VAR0-3-198_FROM_59-0--1_msl" is the one you want. The only identifiable information actually encoded in the GRIB file are those integer values, and a separate hand maintained table file has to be used make them human readable. If those integers show up in a variable name on the TDS, that means the table we are using is incomplete. We use what we can get from NCEP, but it's not always up-to-date or complete (as is the case here).

Good luck!

Sean


On Fri, Nov 17, 2017 at 4:22 PM, Ian Wittmeyer <address@hidden> wrote:
Hi Sean,

Thanks for all this good info. It helps.

I see variable names like MSLMA_P0_L101_GLC0 and HGT_P0_L1_GLC0 when using NCL to dump the header from the full surface grib2 file that i downloaded (HRRR_CONUS_3km_surface_201711161200.grib2). those are standard variable names that I am used to since i grab a lot of model grib files from NCEP (RAP, NAM, and GFS).

btw, i was unable to open the above grib2 file using a grib viewing app on my Mac (Panoply). i got an error (There was an error opening the dataset: Geopotential_height_null) must be unique within Group)

here’s an example chunk from the grib2 file header when using ncl_filedump utility:


      float MSLMA_P0_L101_GLC0 ( forecast_time0, ygrid_0, xgrid_0 )
         center :       NOAA Forecast Systems Lab, Boulder CO
         production_status :    Research products
         long_name :    MSLP (MAPS system reduction)
         units :        Pa
         _FillValue :   1e+20
         coordinates :  gridlat_0 gridlon_0
         grid_type :    Lambert Conformal can be secant or tangent, conical or bipolar
         parameter_discipline_and_category :    Meteorological products, Mass
         parameter_template_discipline_category_number :        ( 0, 0, 3, 198 )
         level_type :   Mean sea level (Pa)
         level :         0
         initial_time : 11/16/2017 (12:00)


I’ll take a look at the mslp and precip fields I download after using the variables you describe below, and hopefully that will get me going! It looks like you’ve pointed me to just what I want.

Cheers,

Ian



> On Nov 17, 2017, at 4:04 PM, Sean Arms <address@hidden> wrote:
>
> Hi Ian,
>
> I made a typeo in my previous email - I meant Pressure_reduced_to_MSL_msl, not MSLP. I'm curious, where are you getting the variable names like "MSLMA_P0_L101_GLC0"? Are those coming from NCL? We construct a similar string and put it in a variable attribute called Grib_Variable_Id. For GRIB2, the structure of that string is
>
> VAR_%d-%d-%d[_error][_L%d][_layer][_I%s_S%d][_D%d][_Prob_%s]
>
> where:
>
> VAR_%d-%d-%d = discipline-category-paramNo
> L%d = level type code
> I%s = time interval name (eg "12_hour" or "mixed")
> S%d = statistical type code if applicable
> D%d = derived type code if applicable
> Prob_%s = probability name if applicable
>
> The only variable I see with Level 101 has a variable name of "VAR0-3-198_FROM_59-0--1_msl", which means we do not have it defined in a GRIB table, like we do for variable names that are human readable. We'll need to update our copy of the grib2 tables from NCEP to fix that, but for now, that's probably the variable you are looking for.
>
> By the way, here is how we come up with a variable name:
>
> %paramName[_error][_%level][_layer][_%interval][_%statName][_%ensDerivedType][_probability_%probName]
>
> %paramName = parameter name from GRIB-2 table 4.2 (cleaned up); if unknown, use
>                VAR_%d-%d-%d_FROM%d-%d = VAR_discipline-category-paramNo_FROM_center-subcenter
> %level = short form of level name from GRIB-2 table 4.5, if defined.
> _layer = added if its a vertical layer (literal)
> %timeInterval = time interval name (eg "12_hour" or "mixed")
> %statName = name of statistical type if applicable, from GRIB-2 table 4.10
> %ensDerivedType = name of ensemble derived type if applicable, from GRIB-2 table 4.7
> %probName = name of probability type if applicable
>
> For the 3km HRRR, you will want the mixed interval accumulation variable, as it contains the various different intervals of accumulations. If you look at the metadata for the precip variable, you will see that the time variable it is associated with is called time4. The variable time4 has an attribute called "bounds", whose value is time4_bounds. The variable time4_bounds contains the information about the beginning and end of the interval over which the interval occurs. Although a bit confusing, here are the values of time4 and time4_bounds in plain text:
>
> http://thredds-jumbo.unidata.ucar.edu/thredds/dodsC/grib/HRRR/CONUS_3km/surface/TwoD.ascii?time4[0:1:64][0:1:94],time4_bounds[0:1:64][0:1:94][0:1:1]
>
> For example, the dimensions of Time4_bounds are of length reftime, time4, 2. Here are the first 4 values, for the first reftime (i.e. the first four forecast hours of the first model run in the collection):
>
> Time4_bounds[65][95][2]
> [0][0], 0.0, 1.0
> [0][1], 0.0, 2.0
> [0][2], 1.0, 2.0
> [0][3], 0.0, 3.0
>
> The first entry indicates a 1 hour interval, the second a 2 hour, the third a 1 hour interval, and the fourth a 3 hour interval. There is a lot of duplication here, but that's how the grids are sent out.
>
> The issue here is that GRIB messages are individual 2D slices of data valid at a single time. netCDF-Java, and thus the TDS, tries to look at all the grids holistically and assemble them into time varying n-dimensional variables. The interval variables can be tricky. We could assemble them into individual 1_hour, 2_hour, 3_hour, ..., 48_hour, etc. interval grids, but then the collection could have possibly hundreds of variable associated with a single field. Then, when we aggregate over multiple runs, that could lead to even bigger numbers of variables to describe a single field. No fun.
>
> Cheers,
>
> Sean
>
>
> On Fri, Nov 17, 2017 at 3:17 PM, Ian Wittmeyer <address@hidden> wrote:
> Hi Sean,
>
> I’ve reviewed the variable list for the CONUS_3km HRRR from here:
>
> http://thredds-jumbo.unidata.ucar.edu/thredds/metadata/grib/HRRR/CONUS_3km/surface/TwoD?metadata=variableMap
>
> i don’t see MSLP in the list, only surface pressure. Is MSLP available for this version of the HRRR?
>
> Also, do I want  "Total_precipitation_surface_Mixed_intervals_Accumulation (kg.m-2)”? It looks like that is the only accumulated precip variable available.
>
> A full grib2 surface file includes MSLMA_P0_L101_GLC0 (MSLP) and APCP_P8_L1_GLC0_acc1h through APCP_P8_L1_GLC0_acc48h, so those the fields I would like….
>
> Ian
>
>
> > On Nov 17, 2017, at 2:39 PM, Sean Arms <address@hidden> wrote:
> >
> > Greetings Ian,
> >
> > When using NCSS, you need to make sure all of the variables in your request have the same verticals coordinate system. Try making two requests - one for u and v, and a second for mslp and precip.
> >
> > Cheers,
> >
> > Sean
> >
> > On Fri, Nov 17, 2017 at 2:11 PM Ian Wittmeyer <address@hidden> wrote:
> > Hi Sean,
> >
> > I am trying to subset the HRRR CONUS_3km surface files because we just want a few variables (U-component of wind, V-component of wind, MSLP, 1-hour accumulated precip).
> >
> > “Pressure_reduced_to_MSL_msl" and “Total_precipitation_surface_1_Hour_Accumulation" don’t work for me.
> >
> > I am able to subset and download U and V, but not MSLP or precip.
> >
> > I am using the following URL for the variable names I want:
> >
> > http://thredds-jetstream.unidata.ucar.edu/thredds/ncss/grib/NCEP/HRRR/CONUS_2p5km/TwoD/dataset.html
> >
> > I like to use NCL and have dumped the file header with ncl_filedump using a complete HRRR CONUS_3km surface file to look at the variable names and I still am not able to guess what I am supposed to use for MSLP and precip. Any ideas?
> >
> > thanks,
> >
> > Ian
> >
> >
> >
>
>