GFS Archive#

Archived forecasts from NOAA’s Global Forecast System (GFS) are available via NCAR’s Research Data Archive (specifically from the primary variable set and the secondary variable set.

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)

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)#

1

2

3

5

7

10

15

20

30

40

50

70

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 GFS available in ufs2arco#

Variable

Long Name

Forecast Only

SUNSD

Sunshine Duration

False

accum_acpcp

Convective precipitation (water) accumulated over forecast

True

accum_tp

Total Precipitation accumulated over forecast

True

accum_watr

Water runoff accumulated over forecast

True

aptmp2

2 metre Apparent temperature

False

avg_al

Time-mean forecast albedo

True

avg_cduvb

Time-mean Clear sky UV-B downward solar flux

True

avg_cfrzr

Time-mean Categorical freezing rain

True

avg_cicep

Time-mean Categorical ice pellets

True

avg_cpr

Time-mean Convective precipitation rate

True

avg_crain

Time-mean Categorical rain

True

avg_csnow

Time-mean Categorical snow

True

avg_duvb

Time-mean UV-B downward solar flux

True

avg_gflux

Time-mean Ground heat flux

True

avg_iegwss

Time-mean Instantaneous eastward gravity wave surface stress

True

avg_ingwss

Time-mean Instantaneous northward gravity wave surface stress

True

avg_ishf

Time-mean surface sensible heat flux

True

avg_prate

Time-mean Precipitation rate

True

avg_sdlwrf

Time-mean Surface downward long-wave radiation flux

True

avg_sdswrf

Time-mean Surface downward short-wave radiation flux

True

avg_slhtf

Time-mean surface latent heat flux

True

avg_sulwrf

Time-mean Surface upward long-wave radiation flux

True

avg_suswrf

Time-mean Surface upward short-wave radiation flux

True

avg_utaua

Time-mean U-component of atmospheric surface momentum flux

True

avg_vtaua

Time-mean V-component of atmospheric surface momentum flux

True

cape

Convective available potential energy

False

cin

Convective inhibition

False

cnwat

Plant canopy surface water

False

cpofp

Percent frozen precipitation

False

d2m

2 metre dewpoint temperature

False

fldcp

Field Capacity

False

gh

Geopotential height

False

gust

Wind speed (gust)

False

hindex

Haines Index

False

lftx

Surface lifted index

False

lftx4

Best (4-layer) lifted index

False

lsm

Land-sea mask

False

mslet

MSLP (Eta model reduction)

False

orog

Orography

False

pres80

80 metre Pressure

False

prmsl

Pressure reduced to MSL

False

q

Specific humidity

False

q80

80 metre Specific humidity

False

r2

2 metre relative humidity

False

sde

Snow depth

False

sdwe

Water equivalent of accumulated snow depth (deprecated)

False

sh2

2 metre specific humidity

False

siconc

Sea ice area fraction

False

sithick

Sea ice thickness

False

sp

Surface pressure

False

t

Temperature

False

t100

100 metre Temperature

False

t2m

2 metre temperature

False

t80

80 metre Temperature

False

t_surface

Temperature at surface

False

tmax2

2 metre Maximum temperature

True

tmin2

2 metre Minimum temperature

True

u

U component of wind

False

u10

10 metre U wind component

False

u100

100 metre U wind component

False

u80

80 metre U component of wind

False

v

V component of wind

False

v10

10 metre V wind component

False

v100

100 metre V wind component

False

v80

80 metre V component of wind

False

w

Vertical velocity

False

wilt

Wilting Point

False

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.