HRRR Archive#

Archived forecasts from NOAA’s High Resolution Rapid Refresh (HRRR) are available via AWS.

Currently, data from the following grib typeOfLevel filters are available:

  • isobaricInhPa see available pressure levels below

  • surface, where variables with stepType of accum or avg are prefixed in ufs2arco with those labels (e.g., instead of tp for total precipitation, look for accum_tp).

  • heightAboveGround, where we append the height to any variables that do not have the height in their name (e.g., u at level=80 gets renamed to u80)

Note that there are some variables are available during some years but not others. For now, only variables that are available during the entirety of 2015-2024 are available.

Available Pressure Levels#

Warning

Not all variables are available at all of these levels. Eventually, we hope to document what’s available for each variable, but until then, go for trial and error (unavailable levels will be filled with NaNs), or refer to the original data source links above.

Available Pressure Levels (hPa)#

50

75

100

125

150

175

200

225

250

275

300

325

350

375

400

425

450

475

500

525

550

575

600

625

650

675

700

725

750

775

800

825

850

875

900

925

950

975

1000

Available Variables#

Note

There are some variables are available during some years but not others. For now, only variables that are available during the entirety of 2015-2024 are available.

Variables from HRRR available in ufs2arco#

Variable

Long Name

accum_sdwe

Water equivalent of accumulated snow depth (deprecated) accumulated over forecast

accum_tp

Total Precipitation accumulated over forecast

blh

Boundary layer height

cape

Convective available potential energy

cfrzr

Categorical freezing rain

cicep

Categorical ice pellets

cin

Convective inhibition

cpofp

Percent frozen precipitation

crain

Categorical rain

csnow

Categorical snow

d2m

2 metre dewpoint temperature

gh

Geopotential height

gust

Wind speed (gust)

lsm

Land-sea mask

max_10si

Time-maximum 10 metre wind speed

mslma

MSLP (MAPS System Reduction)

orog

Orography

prate

Precipitation rate

prmsl

Pressure reduced to MSL

q

Specific humidity

refc

Maximum/Composite radar reflectivity

refd1000

1000 metre Derived radar reflectivity

refd4000

4000 metre Derived radar reflectivity

sde

Snow depth

sdswrf

Surface downward short-wave radiation flux

sdwe

Water equivalent of accumulated snow depth (deprecated)

sh2

2 metre specific humidity

siconc

Sea ice area fraction

snowc

Snow cover

sp

Surface pressure

t

Temperature

t2m

2 metre temperature

tcc

Total Cloud Cover

t_surface

Temperature at surface

u

U component of wind

u10

10 metre U wind component

u80

80 metre U component of wind

v

V component of wind

v10

10 metre V wind component

v80

80 metre V component of wind

veril

Vertically-integrated liquid

vgtyp

Vegetation Type

vis

Visibility

w

Vertical velocity

Temporally Accumulated Variables#

Variables that are accumulated over a specific period have been prepended with "accum_". To be specific, reading these fields with xarray + cfgrib might look something like this:

import xarray as xr
ds = xr.open_dataset(
    "mygribfile.grib2",
    engine="cfgrib",
    decode_timedelta=True,
    filter_by_keys={
        "typeOfLevel": "surface",
        "stepType": "accum",
    },
)

All variable names with this stepType are prepended with "accum_" within ufs2arco (see e.g., "accum_tp" in the table above).

For these variables, an additional option can be provided to read different accumulation periods. For example, if we were reading data from forecast hour 6, we could modify the filter_by_keys option above to read surface variables accumulated from the forecast initialization to hour 6 by providing the stepRange option:

filter_by_keys={
    "typeOfLevel": "surface",
    "stepType": "accum",
    "stepRange": "0-6"
}

or, for example when reading HRRR data we could read the accumulation over the previous hour as so,

filter_by_keys={
    "typeOfLevel": "surface",
    "stepType": "accum",
    "stepRange": "5-6"
}

The default behavior for xarray+cfgrib (which ufs2arco uses internally) appears to grab the accumulation over the full forecast period. However, to provide a different accumulation period for the stepRange argument, add the accum_hrs to the yaml recipe. For example with accumulated total precipitation,

accum_hrs:
  accum_tp: 1

This would grab the total precipitation averaged over the most recent forecast hour. So, at forecast hour 6, this is the same as providing {"stepRange":"5-6"} when reading a single grib file.