| ID |
noaa-rrfs-ens-forecast-virtual
|
| Spatial domain | Continental United States |
| Spatial resolution | 3 km |
| Time domain | Forecasts initialized 2026-09-10 00:00:00 UTC to Present |
| Time resolution | Forecasts initialized every 6 hours |
| Forecast domain | Forecast lead time 0-60 hours ahead |
| Forecast resolution | Hourly |
STAC (browse) · validation report
The Rapid Refresh Forecast System ensemble (RRFS ENS) is a National Oceanic and Atmospheric Administration (NOAA) National Centers for Environmental Prediction (NCEP) convection-allowing ensemble with a 3 km grid. Five members run with different initial conditions, lateral boundary conditions and model physics from the deterministic RRFS forecast, to better cover the range of forecast possibilities. REFS combines these members with the deterministic RRFS and HRRR into ensemble products.
NOAA RRFS ENS is pre-operational, so expect changes to the model data and to the structure of this dataset.
This dataset is an archive of past and present RRFS ensemble forecasts, optimized for spatial (map) access patterns. Forecasts are identified by an initialization time (init_time) denoting the start time of the model run, and step forward hourly along the lead_time dimension out to 60 hours. Each forecast has six members along the ensemble_member dimension: member 0 is the deterministic RRFS forecast and members 1 to 5 are perturbed.
This dataset uses the native RRFS Lambert Conformal Conic projection, with spatial indexing along the x and y dimensions. The example notebook shows how to use the embedded spatial reference to select geographic areas of interest.
Variables on pressure levels live in the pressure_level group.
Note: dynamical-catalog>=1.0.1 and gribberish>=1.8.4 (or zarr>=3.2 icechunk>=2.0 gribberish>=1.8.4) are required.
| RRFS and REFS forecasts, virtual (Github) | |
| RRFS and REFS forecasts, virtual (Colab) |
import dynamical_catalog # dynamical-catalog>=1.0.1
ds = dynamical_catalog.open("noaa-rrfs-ens-forecast-virtual", chunks=None)
ds["temperature_2m"].sel(init_time="2026-09-16T12", lead_time="24h", ensemble_member=0)
# Variables with a vertical dimension live in the pressure_level group
ds_pressure = dynamical_catalog.open("noaa-rrfs-ens-forecast-virtual", group="pressure_level", chunks=None)
ds_pressure["temperature"].sel(init_time="2026-09-16T12", lead_time="24h", pressure_level=500).mean("ensemble_member")
import dynamical_catalog # dynamical-catalog>=1.0.1
ds = dynamical_catalog.open("noaa-rrfs-ens-forecast-virtual", chunks=None)
ds["temperature_2m"].sel(init_time="2026-09-16T12", lead_time="24h", ensemble_member=0)
# Variables with a vertical dimension live in the pressure_level group
ds_pressure = dynamical_catalog.open("noaa-rrfs-ens-forecast-virtual", group="pressure_level", chunks=None)
ds_pressure["temperature"].sel(init_time="2026-09-16T12", lead_time="24h", pressure_level=500).mean("ensemble_member")
import icechunk
import pystac
import xarray as xr
catalog = pystac.Catalog.from_file("https://stac.dynamical.org/catalog.json")
collection = catalog.get_child("noaa-rrfs-ens-forecast-virtual")
asset = collection.assets["icechunk-https"]
authorize = icechunk.containers_credentials({"s3://noaa-rrfs-ops-pds/": icechunk.s3_anonymous_credentials()})
repo = icechunk.Repository.open(
icechunk.http_storage(asset.href),
authorize_virtual_chunk_access=authorize,
)
session = repo.readonly_session("main")
ds = xr.open_zarr(session.store, chunks=None)
ds["temperature_2m"].sel(init_time="2026-09-16T12", lead_time="24h", ensemble_member=0)
# Variables with a vertical dimension live in the pressure_level group
ds_pressure = xr.open_zarr(session.store, group="pressure_level", chunks=None)
ds_pressure["temperature"].sel(init_time="2026-09-16T12", lead_time="24h", pressure_level=500).mean("ensemble_member")
import icechunk
import pystac
import xarray as xr
catalog = pystac.Catalog.from_file("https://stac.dynamical.org/catalog.json")
collection = catalog.get_child("noaa-rrfs-ens-forecast-virtual")
asset = collection.assets["icechunk-https"]
authorize = icechunk.containers_credentials({"s3://noaa-rrfs-ops-pds/": icechunk.s3_anonymous_credentials()})
repo = icechunk.Repository.open(
icechunk.http_storage(asset.href),
authorize_virtual_chunk_access=authorize,
)
session = repo.readonly_session("main")
ds = xr.open_zarr(session.store, chunks=None)
ds["temperature_2m"].sel(init_time="2026-09-16T12", lead_time="24h", ensemble_member=0)
# Variables with a vertical dimension live in the pressure_level group
ds_pressure = xr.open_zarr(session.store, group="pressure_level", chunks=None)
ds_pressure["temperature"].sel(init_time="2026-09-16T12", lead_time="24h", pressure_level=500).mean("ensemble_member")
| min | max | units | |
|---|---|---|---|
| ensemble_member | 0 | 5 | 1 |
| init_time | 2026-09-10T00:00:00Z | Present | seconds since 1970-01-01 |
| lead_time | 0 | 216000 | seconds |
| x | -2697520.143 | 2696479.857 | m |
| y | -1587306.153 | 1586693.847 | m |
| pressure_level | 250 | 1000 | hPa |
Access a variable by its name (the bold identifier, e.g. ds["categorical_freezing_rain_surface"]).
Dimensions: init_time × ensemble_member × lead_time × y × x
| variable | units |
|---|---|
categorical_freezing_rain_surface
Categorical freezing rain (cfrzr)0=no; 1=yes
|
1 |
categorical_ice_pellets_surface
Categorical ice pellets (cicep)0=no; 1=yes
|
1 |
categorical_rain_surface
Categorical rain (crain)0=no; 1=yes
|
1 |
categorical_snow_surface
Categorical snow (csnow)0=no; 1=yes
|
1 |
cloud_ceiling_height
Ceiling (ceil)Height above mean sea level, not above ground. NaN where no cloud ceiling was detected.
|
m |
composite_reflectivity
Maximum/Composite radar reflectivity (refc)No echo is stored as -20 dBZ in the deterministic run and some ensemble members, and as 0 dBZ in other members. A value of 0 dBZ can also be valid reflectivity.
|
dBZ |
convective_available_potential_energy_surface
Convective available potential energy (cape)
|
J kg-1 |
convective_inhibition_surface
Convective inhibition (cin)Negative where there is inhibition and at or near zero where there is none.
|
J kg-1 |
dew_point_temperature_2m
2 metre dewpoint temperature (2d)
|
degree_Celsius |
downward_short_wave_radiation_flux_surface
Surface downward short-wave radiation flux (sdswrf)Averaged over the preceding hour.
|
W m-2 |
echo_top
Echo top (retop)NaN where no radar echo was detected.
|
m |
freezing_rain_run_total_surface
Freezing Rain (frzr)Accumulated from the forecast initialization time to this step.
|
kg m-2 |
freezing_rain_surface
Freezing Rain (frzr)Accumulated over the preceding hour.
|
kg m-2 |
geopotential_height_surface
Geopotential height (gh)
|
m |
high_cloud_cover
High cloud cover (hcc)
|
percent |
instantaneous_downward_short_wave_radiation_flux_surface
Surface downward short-wave radiation flux (sdswrf)
|
W m-2 |
instantaneous_total_cloud_cover_atmosphere
Total cloud cover (tcc)
|
percent |
low_cloud_cover
Low cloud cover (lcc)
|
percent |
maximum_downward_vertical_velocity_100_1000mb
Maximum downward vertical velocity (maxdvv)In the 100-1000 hPa isobaric layer. Maximum value over the preceding hour.
|
m s-1 |
maximum_lightning_atmosphere
Lightning (ltng)Maximum value over the preceding hour.
|
1 |
maximum_relative_humidity_2m
Time-maximum 2 metre relative humidity (max_2r)Maximum value over the preceding hour.
|
percent |
maximum_updraft_helicity_3000_0m
Updraft Helicity (uphl)Maximum value over the preceding hour.
|
m2 s-2 |
maximum_updraft_helicity_5000_2000m
Updraft Helicity (uphl)Maximum value over the preceding hour.
|
m2 s-2 |
maximum_upward_vertical_velocity_100_1000mb
Maximum upward vertical velocity (maxuvv)In the 100-1000 hPa isobaric layer. Maximum value over the preceding hour.
|
m s-1 |
maximum_wind_speed_10m
Time-maximum 10 metre wind speed (max_10si)Maximum value over the preceding hour.
|
m s-1 |
medium_cloud_cover
Medium cloud cover (mcc)
|
percent |
minimum_relative_humidity_2m
Time-minimum 2 metre relative humidity (min_2r)Minimum value over the preceding hour.
|
percent |
minimum_updraft_helicity_3000_0m
Minimum updraft helicity (mnuphl)Minimum value over the preceding hour.
|
m2 s-2 |
minimum_updraft_helicity_5000_2000m
Minimum updraft helicity (mnuphl)Minimum value over the preceding hour.
|
m2 s-2 |
percent_frozen_precipitation_surface
Percent frozen precipitation (cpofp)NaN where precipitation is absent or too light to diagnose a frozen fraction.
|
percent |
precipitable_water_atmosphere
Precipitable water (pwat)
|
kg m-2 |
pressure_reduced_to_mean_sea_level
Pressure reduced to MSL (prmsl)
|
Pa |
pressure_surface
Surface pressure (sp)
|
Pa |
relative_humidity_2m
2 metre relative humidity (2r)
|
percent |
storm_relative_helicity_1000_0m
Storm relative helicity (hlcy)
|
m2 s-2 |
storm_relative_helicity_3000_0m
Storm relative helicity (hlcy)
|
m2 s-2 |
temperature_2m
2 metre temperature (2t)
|
degree_Celsius |
total_cloud_cover_atmosphere
Total cloud cover (tcc)Averaged over the preceding hour.
|
percent |
total_cloud_cover_boundary_layer
Boundary layer cloud cover (tcc)
|
percent |
total_precipitation_run_total_surface
Total precipitation (tp)Accumulated from the forecast initialization time to this step.
|
kg m-2 |
total_precipitation_surface
Total precipitation (tp)Accumulated over the preceding hour.
|
kg m-2 |
total_snowfall_run_total_surface
Total snowfall (asnow)Accumulated from the forecast initialization time to this step.
|
m |
vertical_u_component_shear_0_6000m
Vertical u-component shear (vucsh)Velocity along the model grid's x dimension, not eastward velocity.
|
m s-1 |
vertical_v_component_shear_0_6000m
Vertical v-component shear (vvcsh)Velocity along the model grid's y dimension, not northward velocity.
|
m s-1 |
visibility_surface
Visibility (vis)
|
m |
wind_gust_surface
Wind speed (gust) (gust)
|
m s-1 |
wind_u_10m
10 metre U wind component (10u)Velocity along the model grid's x dimension, not eastward velocity.
|
m s-1 |
wind_u_160m
U component of wind (u)Velocity along the model grid's x dimension, not eastward velocity.
|
m s-1 |
wind_u_320m
U component of wind (u)Velocity along the model grid's x dimension, not eastward velocity.
|
m s-1 |
wind_u_80m
80 metre U wind component (80u)Velocity along the model grid's x dimension, not eastward velocity.
|
m s-1 |
wind_v_10m
10 metre V wind component (10v)Velocity along the model grid's y dimension, not northward velocity.
|
m s-1 |
wind_v_160m
V component of wind (v)Velocity along the model grid's y dimension, not northward velocity.
|
m s-1 |
wind_v_320m
V component of wind (v)Velocity along the model grid's y dimension, not northward velocity.
|
m s-1 |
wind_v_80m
80 metre V wind component (80v)Velocity along the model grid's y dimension, not northward velocity.
|
m s-1 |
These variables live in the pressure_level Zarr group (e.g. pass group="pressure_level" to dynamical_catalog.open() or xr.open_zarr()).
Dimensions: init_time × ensemble_member × lead_time × y × x × pressure_level
| variable | units |
|---|---|
absolute_vorticity
Absolute vorticity (absv)
|
s-1 |
dew_point_temperature
Dew point temperature (dpt)
|
degree_Celsius |
geopotential_height
Geopotential height (gh)
|
m |
relative_humidity
Relative humidity (r)
|
percent |
specific_humidity
Specific humidity (q)
|
1 |
temperature
Temperature (t)
|
degree_Celsius |
wind_u
U component of wind (u)Velocity along the model grid's x dimension, not eastward velocity.
|
m s-1 |
wind_v
V component of wind (v)Velocity along the model grid's y dimension, not northward velocity.
|
m s-1 |
Dataset licensed under CC BY 4.0.
NOAA NWS NCEP RRFS ensemble data processed by dynamical.org from NOAA Open Data Dissemination archives.
Or NOAA RRFS ENS from dynamical.org.
The source grib files this archive is constructed from are provided by NOAA Open Data Dissemination (NODD) and accessed from the AWS Open Data Registry.
Storage for this dataset is generously provided by AWS Open Data.
This dataset is stored in Zarr format, which splits each variable into a grid of chunks — the smallest unit read from storage. When possible, aligning your reads with this dataset's chunk grid can significantly improve data access speed.
The element count and coordinate span of this dataset:
| dimension | chunk |
|---|---|
| init_time | 1 (6 hours) |
| ensemble_member | 1 |
| lead_time | 1 (1 hour) |
| y | 1059 (3177 km) |
| x | 1799 (5397 km) |
| uncompressed | 14.5 MiB |
Review the validation report for variable availability, missing data, known quirks, fill values, value distributions, and sample plots.