Scheduled Downtime
On Friday 21 April 2023 @ 5pm MT, this website will be down for maintenance and expected to return online the morning of 24 April 2023 at the latest

Vtable for 2021 GEFS data

This post was from a previous version of the WRF&MPAS-A Support Forum. New replies have been disabled and if you have follow up questions related to this post, then please start a new thread from the forum home page.

simaberson

New member
I have been trying to run WRF with 2021 GEFS data, but am having difficulty getting through ungrib. When I run ungrib on the attached files (note that I added .dat to the file names because they would not be attached otherwise) with Vtable.GFSENS, I get

###############################################################################

Inventory for date = 2021-08-10 06:00:00

PRES TT UU VV RH HGT PSFC PMSL SM000010 SM010040 SM040100 SM100200 SM010200 ST000010 ST010040 ST040100 ST100200 ST010200 SEAICE LANDSEA SOILHGT SKINTEMP SNOW
-------------------------------------------------------------------------------
2001.0 O O O O O O O O X X X O O X X X O X X O X O
975.0 X X X X X
950.0 X X X X X
900.0 X X X X X
800.0 X X X X X
750.0 X X X X X
650.0 X X X X X
600.0 X X X X X
550.0 X X X X X
450.0 X X X X X
etc.

So, it is getting the surface, but nothing above. Take, for example, temperature (TT). I used g2print.exe to look at the file, and, for temperature, got:

4 0 0 0 105 1 0 1 TMP 2021-08-10_06:00:00 00 PDT4.1
10 0 0 0 105 2 0 1 TMP 2021-08-10_06:00:00 00 PDT4.1
16 0 0 0 105 3 0 1 TMP 2021-08-10_06:00:00 00 PDT4.1
22 0 0 0 105 4 0 1 TMP 2021-08-10_06:00:00 00 PDT4.1
32 0 0 0 100 100 0 1 TMP 2021-08-10_06:00:00 00 PDT4.1
39 0 0 0 100 200 0 1 TMP 2021-08-10_06:00:00 00 PDT4.1
46 0 0 0 100 300 0 1 TMP 2021-08-10_06:00:00 00 PDT4.1
53 0 0 0 100 500 0 1 TMP 2021-08-10_06:00:00 00 PDT4.1
60 0 0 0 100 700 0 1 TMP 2021-08-10_06:00:00 00 PDT4.1
72 0 0 0 100 2000 0 1 TMP 2021-08-10_06:00:00 00 PDT4.1
82 0 0 0 100 3000 0 1 TMP 2021-08-10_06:00:00 00 PDT4.1
97 0 0 0 100 7000 0 1 TMP 2021-08-10_06:00:00 00 PDT4.1
113 0 0 0 100 15000 0 1 TMP 2021-08-10_06:00:00 00 PDT4.1
132 0 0 0 100 30000 0 1 TMP 2021-08-10_06:00:00 00 PDT4.1
142 0 0 0 100 35000 0 1 TMP 2021-08-10_06:00:00 00 PDT4.1
152 0 0 0 100 40000 0 1 TMP 2021-08-10_06:00:00 00 PDT4.1
162 0 0 0 100 45000 0 1 TMP 2021-08-10_06:00:00 00 PDT4.1
178 0 0 0 100 55000 0 1 TMP 2021-08-10_06:00:00 00 PDT4.1
187 0 0 0 100 60000 0 1 TMP 2021-08-10_06:00:00 00 PDT4.1
198 0 0 0 100 65000 0 1 TMP 2021-08-10_06:00:00 00 PDT4.1
213 0 0 0 100 75000 0 1 TMP 2021-08-10_06:00:00 00 PDT4.1
222 0 0 0 100 80000 0 1 TMP 2021-08-10_06:00:00 00 PDT4.1
236 0 0 0 100 90000 0 1 TMP 2021-08-10_06:00:00 00 PDT4.1
249 0 0 0 100 95000 0 1 TMP 2021-08-10_06:00:00 00 PDT4.1
259 0 0 0 100 97500 0 1 TMP 2021-08-10_06:00:00 00 PDT4.1
272 0 0 0 1 0 0 1 TMP 2021-08-10_06:00:00 00 PDT4.1
288 0 0 21 103 2 0 1 APTMP 2021-08-10_06:00:00 00 PDT4.1
303 0 4 4 8 0 0 1 BRTMP 2021-08-10_06:00:00 00 PDT4.1
310 0 0 0 7 0 0 1 TMP 2021-08-10_06:00:00 00 PDT4.1
319 0 0 0 6 0 0 1 TMP 2021-08-10_06:00:00 00 PDT4.1
320 0 0 0 103 80 0 1 TMP 2021-08-10_06:00:00 00 PDT4.1
325 0 0 0 103 100 0 1 TMP 2021-08-10_06:00:00 00 PDT4.1
328 0 0 0 102 305 0 1 TMP 2021-08-10_06:00:00 00 PDT4.1
331 0 0 0 102 457 0 1 TMP 2021-08-10_06:00:00 00 PDT4.1
334 0 0 0 102 610 0 1 TMP 2021-08-10_06:00:00 00 PDT4.1
337 0 0 0 102 914 0 1 TMP 2021-08-10_06:00:00 00 PDT4.1
340 0 0 0 102 1829 0 1 TMP 2021-08-10_06:00:00 00 PDT4.1
343 0 0 0 102 2743 0 1 TMP 2021-08-10_06:00:00 00 PDT4.1
346 0 0 0 102 3658 0 1 TMP 2021-08-10_06:00:00 00 PDT4.1
349 0 0 0 102 4572 0 1 TMP 2021-08-10_06:00:00 00 PDT4.1
356 0 0 0 108 3000 0 1 TMP 2021-08-10_06:00:00 00 PDT4.1
364 0 0 0 108 6000 3000 1 TMP 2021-08-10_06:00:00 00 PDT4.1
369 0 0 0 108 9000 6000 1 TMP 2021-08-10_06:00:00 00 PDT4.1
374 0 0 0 108 12000 9000 1 TMP 2021-08-10_06:00:00 00 PDT4.1
379 0 0 0 108 15000 12000 1 TMP 2021-08-10_06:00:00 00 PDT4.1
384 0 0 0 108 18000 15000 1 TMP 2021-08-10_06:00:00 00 PDT4.1
395 0 0 0 104 0 0 1 TMP 2021-08-10_06:00:00 00 PDT4.1
409 0 0 0 107 320 0 1 TMP 2021-08-10_06:00:00 00 PDT4.1
415 0 0 0 107 450 0 1 TMP 2021-08-10_06:00:00 00 PDT4.1
419 0 0 0 107 550 0 1 TMP 2021-08-10_06:00:00 00 PDT4.1
423 0 0 0 107 650 0 1 TMP 2021-08-10_06:00:00 00 PDT4.1
427 0 0 0 109 0 0 1 TMP 2021-08-10_06:00:00 00 PDT4.1
433 0 0 0 109 0 0 1 TMP 2021-08-10_06:00:00 00 PDT4.1
439 0 0 0 109 0 0 1 TMP 2021-08-10_06:00:00 00 PDT4.1
445 0 0 0 109 0 0 1 TMP 2021-08-10_06:00:00 00 PDT4.1
451 0 0 0 109 0 0 1 TMP 2021-08-10_06:00:00 00 PDT4.1
457 0 0 0 109 0 0 1 TMP 2021-08-10_06:00:00 00 PDT4.1
463 0 0 0 109 0 0 1 TMP 2021-08-10_06:00:00 00 PDT4.1
469 0 0 0 109 0 0 1 TMP 2021-08-10_06:00:00 00 PDT4.1

So, there are many levels of temperature TMP, but ungrib isn't dealing with them.

The lines in my Vtable are:

11 | 100 | * | | TT | K | Temperature | 0 | 0 | 0 | 100 | 1 |
11 | 105 | 2 | | TT | K | Temperature at 2 m | 0 | 0 | 0 | 103 | 1 |

I did look over the documentation at https://www2.mmm.ucar.edu/wrf/users/docs/user_guide_v4/v4.0/users_guide_chap3.html#_Creating_and_Editing_1, but there wasn't anything in there that seemed to help. One thing I see is that my Vtable has the 100 level type before the 105, whereas the file has the opposite, but there is nothing in the documentation about order. I did switch the order in the Vtable, but got the same results.

I do see the

|GRIB2|GRIB2|GRIB2|GRIB2|GB2|
|Discp|Catgy|Param|Level|PDT|

section. There doesn't seem to be a description of these fields in that documentation, though they are mentioned. However, GB2 PDT isn't even mentioned in that documentation.

Am I missing something important? Am I doing something wrong?
 

Attachments

  • pgrbfg_2021081006_fhr00_mem029.dat
    94.8 MB · Views: 24
  • pgrbfg_2021081006_fhr06_mem029.dat
    99.2 MB · Views: 17
  • pgrbfg_2021081006_fhr12_mem029.dat
    98.4 MB · Views: 20
Code:
---------------------------------------------------------------------------------------
 rec 		Prod   Cat     Param     Lvl       Lvl      Lvl       Prod      Name            Time                Fcst
 num 	Disc              num        code    one     two     Templ                                                 hour
---------------------------------------------------------------------------------------
  10             0        0        0           105        2         0          1          TMP      2021-08-10_06:00:00   00  PDT4.1

The above is just a small part of the print-out from g2print. The Vtable is set up so that any GRIB1 data codes are on the left, and GRIB2 codes are on the right. Since this is G2, we want the codes to be correct on the right (including values for "Prod Disc. Cat, Param num, Lvl code"). So a TT line in the Vtable should read:
Code:
11 | 105 | 2 | | TT | K | Temperature at 2 m | 0 | 0 | 0 | 105 | 1 |

However, as you can see in your g2print output, you have many different codes in the "Lvl code" column, depending on the height in the atmosphere. I'm not sure why that is. One thing you could try is to add several additional lines in the Vtable so that you have all the codes included. For e.g.,

Code:
GRIB1| Level| From |  To  | metgrid  | metgrid | metgrid                                 |GRIB2|GRIB2|GRIB2|GRIB2|GB2|
Param| Type |Level1|Level2| Name     | Units   | Description                             |Discp|Catgy|Param|Level|PDT|
-----+------+------+------+----------+---------+-----------------------------------------+---------------------------+
  11 | 100  |   *  |      | TT       | K       | Temperature                             |  0  |  0  |  0  | 100 | 1 |
  11 | 100  |   *  |      | TT       | K       | Temperature                             |  0  |  0  |  0  | 102 | 1 |
  11 | 100  |   *  |      | TT       | K       | Temperature                             |  0  |  0  |  0  | 103 | 1 |
  11 | 100  |   *  |      | TT       | K       | Temperature                             |  0  |  0  |  0  | 104 | 1 |
...etc. to make sure ungrib picks up all the temperature data. Give that a try and let us know how it goes. And you're right, that order does not matter.
 
Thanks for the response. I'm not entirely sure I understand the answer, though.

In the example I presented, I need the surface temperature, and the temperature at multiple levels above it. In the Vtable I am trying, I have, for temperature

11 | 100 | * | | TT | K | Temperature | 0 | 0 | 0 | 100 | 1 |
11 | 105 | 2 | | TT | K | Temperature at 2 m | 0 | 0 | 0 | 103 | 2 |

The temperature fields on pressure levels are

32 0 0 0 100 100 0 1 TMP 2021-08-10_06:00:00 00 PDT4.1
39 0 0 0 100 200 0 1 TMP 2021-08-10_06:00:00 00 PDT4.1
46 0 0 0 100 300 0 1 TMP 2021-08-10_06:00:00 00 PDT4.1
53 0 0 0 100 500 0 1 TMP 2021-08-10_06:00:00 00 PDT4.1
60 0 0 0 100 700 0 1 TMP 2021-08-10_06:00:00 00 PDT4.1
72 0 0 0 100 2000 0 1 TMP 2021-08-10_06:00:00 00 PDT4.1
82 0 0 0 100 3000 0 1 TMP 2021-08-10_06:00:00 00 PDT4.1
97 0 0 0 100 7000 0 1 TMP 2021-08-10_06:00:00 00 PDT4.1
113 0 0 0 100 15000 0 1 TMP 2021-08-10_06:00:00 00 PDT4.1
132 0 0 0 100 30000 0 1 TMP 2021-08-10_06:00:00 00 PDT4.1
142 0 0 0 100 35000 0 1 TMP 2021-08-10_06:00:00 00 PDT4.1
152 0 0 0 100 40000 0 1 TMP 2021-08-10_06:00:00 00 PDT4.1
162 0 0 0 100 45000 0 1 TMP 2021-08-10_06:00:00 00 PDT4.1
178 0 0 0 100 55000 0 1 TMP 2021-08-10_06:00:00 00 PDT4.1
187 0 0 0 100 60000 0 1 TMP 2021-08-10_06:00:00 00 PDT4.1
198 0 0 0 100 65000 0 1 TMP 2021-08-10_06:00:00 00 PDT4.1
213 0 0 0 100 75000 0 1 TMP 2021-08-10_06:00:00 00 PDT4.1
222 0 0 0 100 80000 0 1 TMP 2021-08-10_06:00:00 00 PDT4.1
236 0 0 0 100 90000 0 1 TMP 2021-08-10_06:00:00 00 PDT4.1
249 0 0 0 100 95000 0 1 TMP 2021-08-10_06:00:00 00 PDT4.1
259 0 0 0 100 97500 0 1 TMP 2021-08-10_06:00:00 00 PDT4.1

so the GRIB2 level on that line should be 100, which it is. (The remainder of the TMP lines are for temperature on hybrid levels, height levels above the mean sea level, height levels above the ground, at the top of the atmosphere, at the tropopause, on sigma levels, on isentropic surfaces, and on PV surfaces, none of which I need.)

The surface temperature field is

272 0 0 0 1 0 0 1 TMP 2021-08-10_06:00:00 00 PDT4.1

so the GRIB2 level on that line should be 1, correct? I tried that and got no change for temperature. Similar changes for U, V, and RH produced no differences.

This is all predicated on my underestanding the grid I get from ungrib, that 0 means no data, and X means data. Is this correct?

Also, is there any information on what GB2 PDT or how it is set? I could find no information on it.
 
The problem is that the data are missing from the grib file.
I only checked your 00-h grib file, but it is missing the 2m TMP, 300 and 400 mb U and V and the entire 1000 mb level.

The default Vtable will decode the GEFS output just fine. In the ungrib printout, X means present. O or blank means missing.

The PDT column is the Product Definition Template. In your case, 1 is the correct setting. Some ensemble files contain time averaged fields, accumulated fields or ensemble averaged fields and can be decoded using a different PDT.
 
@simaberson,
I apologize. It wasn't clear to me in your original message that you were only interested in the 3D temps for Grib2 level 100. So yes, you're correct. The Vtable should have the two different temps (2m and 3D) set to:

11 | 100 | * | | TT | K | Temperature | 0 | 0 | 0 | 100 | 1 |
11 | 105 | 2 | | TT | K | Temperature at 2 m | 0 | 0 | 0 | 1 | 1 |

I also looked more closely at the ungrib log print-out you provided in the original message, and it looks like you actually are getting values for temps for all the 3D levels, but not surface, and this should just be because you needed to chance the Grib2 level to 1 for 2m temps. If I space out the columns in your output, and remove all columns after HGT, you see:

Code:
PRES         TT       UU       VV       RH       HGT 
-------------------------------------------------------------------------------
2001.0        O         O          O         O           O 
975.0         X         X          X         X           X
950.0         X         X          X         X           X 
900.0         X         X          X         X           X
800.0         X         X          X         X           X
750.0         X         X          X         X           X
650.0         X         X          X         X           X
600.0         X         X          X         X           X
550.0         X         X          X         X           X
450.0         X         X          X         X           X
etc.

and as you see, for all pressure levels, but the surface (code 2001.0), you get a value ("X"). If you modify the Vtable as I indicate above, you should then get an X under TT for surface (or 2m T).
 
@kwerner

Sorry, but both of your posts on this thread contain incorrect information. The data ARE missing from the grib file. Ungrib automatically vertically interpolates missing pressure-level data and so puts an 'X' in the printout. If debug_level is set high enough it will print out a message saying that it's vertically interpolating missing data.

Also, ungrib can only decode one type of vertical level in any given grib2 file - either hybrid (or sigma) (105) or pressure (100) levels. Requesting both types in a Vtable will produce unknown and unreliable results. As for the AGL level code (103) ungrib will only decode data at 2m and 10m and assign those values to the surface (P = 2001).

In the Vtable, column 11 is the Grib2 Level Code. For a pressure-level file the options are 100 or 103 (106 is for soil levels and a separate situation; code 1 is the ground surface). Column 3 is the requested level and is used for both Grib1 and Grib2 decoding and has units of hPa, meters, cm, or level number as appropriate.
11 | 105 | 2 | | TT | K | Temperature at 2 m | 0 | 0 | 0 | 1 | 1 |
The above line will not work since it is trying to decode the Skin Temperature at the 2m level (which doesn't exist). Also, putting an asterisk in column 3 will not pick up temperature at all levels. That only works for the 3-d fields (100 and 105).

Since the 2m TMP is missing from the grib file it will have to be obtained from another member. I see that the 80m temperature is in the grib file so it might be possible to modify the source code to assign that to 2m. I don't recommend it though.
 
Top