How to Initialize WRF with HRRR Boundary Conditions

About the HRRR

The High Resolution Rapid Refresh model, or HRRR, is a WRF based forecast modeling system nested in the Rapid Refresh model with a resolution of 3 km and output every hour. More info and current forecasts can be found on the HRRR homepage and NWS documentation. The MesoWest group at the University of Utah archives raw HRRR model output beginning with July 2016 for various research purposes. To learn more about the HRRR archive and access past HRRR data, push the red button:

HRRR Archive at the University of Utah

If you are trying to initialize your WRF simulation with HRRR model output, keep reading. As far as we know, this work was the first time HRRR analyses were used to initalize WRF boundary conditions. The sequence of tabs above describes how "even you can initialize WRF simulations with HRRR boundary conditions" (said in your favorite infomercial voice).

Advantages of using HRRR include its hourly 3 km resolution state of the atmosphere (as opposed to using NAM's 6-hourly, 12 km resolution) and its advanced data assimilation. We expect better initialization of WRF using the HRRR will improve simulations of thermally driven flows, including slope flows and lake breezes, in the Salt Lake Valley.

It would be to your benefit to review ESRL's static fields (namelists, Vtable, METGRID.TBL,, etc.) for the different versions of the HRRR and RAP models below.

HRRR Static RAP Static

External Links:

Download HRRR data for WRF Boundary Conditions

Step 1: Get HRRR analyses.

You must get the full pressure field (prs) file. You can get the current HRRR data from NOMADS.

Note: The sfc files are a subset of the prs files, so you only need to retrieve the prs files.

Unfortunately, historical HRRR data isn't archived by NCEP. At the University of Utah we have an archive beginning July 15, 2016.

Please refer to the FAQ page for more information and for a link to download from the HRRR archive.

HRRR Archive FAQ

Raw HRRR data is in GRIB2 format. You will use WRF's WPS to prepare the HRRR analyses for WRF with the ungrib function.

There are several ways you can read and view GRIB2 files. You can print out the variable contents of the grib2 file by typing:

wgrib2 -v filename.grib2

You can plot the grib2 data in Python using the pygrib module or xarray with cfgrib. Demo PyGrib on GitHub.

You can also view the data with ncview if you convert the GRIB2 to NetCDF using wgrib2.

wgrib2 filename.grib2 -netcdf


The Vtable in WPS tells ungrib how to index and extract data from the grib2 file. I created a Vtable for the HRRR prs data you can copy and link in WPS. (Note, I made a minor edit based on some user feedback without testing it myself. If you have trouble, try using a previous commit by clicking the "History" button on GitHub).


I created this custom Vtable following the instructions in the WRF User Guide. I used the WPS utility util/g2print.exe [name-of-grib2-file] > out.txt to print out the contents and create the custom Vtable based on the output. This version is different than ESRL's' version because the prs files in the HRRR archive are on pressure levels (GRIB2 level 100) and not hybrid levels (GRIB2 level 105). Also, some variables like Ice Number Concentration are not available in the HRRR prs file. On that note, if you are using the nat files from NOMADS, then you would need to modify this VTable accordingly with the correct GRIB2 Level code (i.e., use 105 instead of 100). That's probably as clear as mud.

At any rate, my Vtable worked, but if you find errors or additions please forward those to me 😄.

For more info on GRIB2 categories and codes, refer to the following resources:

UNGRIB Requires JASPER Library

Raw HRRR files are in GRIB2 format. In order to ungrib these files WPS requires the JASPER library. When you configure WPS it should say "Found Jasper environment variables for GRIB2 support...". Then configure WPS with a "grib2 friendly" option. In WRFv3.7 I use option 7. Linux x86_64, PGI compiler (dmpar)

If you are on the University of Utah's CHPC computers, set these environments:

setenv JASPERLIB /uufs/
setenv JASPERINC /uufs/

If you don't have JASPER, see Chapter 3 of the WRF User Guide for instructions to install JASPER.

Trying to UNGRIB with HRRR-Alaska?

There is an update to the rd_grib2.F file (WPS/ungrib/src/rd_grib2.F) that will allow you to ungrib the experimental Alaska HRRR data. You should be able to use the regular HRRR without this, but it doesn't hurt to give it a try. The reason this is necessary for Alaska HRRR grib files is that Alaska HRRR data is on a polar stereograph projection, and processing for that type of projection is included in the updated script.



The METGRID Table tells METGRID how to interpolate the meteorological fields from the UNGRIBed files on the WRF friendly grid. You may or may not need to use this custom METGRIB table (some users have said they didn't need it, but I needed it years ago).


If you find errors or have any suggestions please share 😄


Above shows the HRRR terrain height with water area colored blue. Domain 1 (d01) has a grid spacing of 3km, same as the HRRR. Domain 2 (d02) has a grid spacing of 1km.



This is my namelist.input file used to run real.exe and wrf.exe


Comparing HRRR 3km with WRF 1km

My master's thesis used the described method to initialize WRF with the HRRR to study a lake breeze event. While that project didn't explore the benefits of using HRRR as boundary conditions instead of the NAM or GFS, here is one example of differences between the HRRR and the 1 km WRF simulation.

Below compares the winds for the Salt Lake Valley subset from the HRRR analysis and the WRF model at 1 km initialized by the HRRR analysis. Notice the difference in the outline of the Great Salt Lake (blue) between HRRR and WRF. This was a custom modification described in my thesis. The observations from the TDWR is also shown. The lake breeze in the HRRR never progressed, probably due to ineffective data assimilation. The WRF simulated lake breeze was strong an early probably because of the lack of strong southerly winds. This is described in my these. Good thing my method didn't fix everything or we'd all be out of a job.

This work was first used in Blaylock et al. 2017