| Spatial domain | Global |
| Spatial resolution | 1.5 degrees (~165km) |
| Time domain | Forecasts initialized 2026-01-01 00:00:00 UTC to Present |
| Time resolution | Forecasts initialized every 24 hours |
| Forecast domain | Forecast lead time 0-1104 hours (0-46 days) ahead |
| Forecast resolution | Forecast step 24 hourly |
STAC (browse) · validation report
The Integrated Forecasting System (IFS) is a global forecast model developed by ECMWF. ENS is an ensemble configuration of IFS, containing 51 ensemble members. IFS consists of a numerical model of the Earth system, which includes an atmospheric model at its heart, coupled with models of other Earth system components such as the ocean. The data assimilation system combines the latest weather observations with a recent forecast to obtain the best possible estimate of the current state of the Earth system.
This dataset is an archive of ECMWF IFS ENS sub-seasonal-range forecasts. Forecasts are identified by an initialization time (init_time) denoting the start time of the model run, as well as by the ensemble_member. Each forecast steps forward along the lead_time dimension from 0 to 1104 hours (0 to 46 days) at a 24 hourly step, and carries 101 ensemble members on a global 1.5 degree grid. This dataset contains the 00 UTC initialization times only.
Because the step is 24 hourly, most surface variables are daily means or rates rather than instantaneous values — hence the average_ prefixes. Surface and single-level variables are at the dataset root; the six variables carried on pressure levels are in the pressure_level group.
Note: ECMWF's licence holds sub-seasonal-range forecasts back for 48 hours, so this is not a real-time dataset — each initialization becomes available about two days after its init_time.
| ECMWF IFS ENS 46 day, daily and 6 hourly (Github) | |
| ECMWF IFS ENS 46 day, daily and 6 hourly (Colab) |
import dynamical_catalog # dynamical-catalog>=0.8.0
ds = dynamical_catalog.open("ecmwf-ifs-ens-forecast-46-day-daily-1-5-degree", chunks=None)
ds["average_temperature_2m"].sel(init_time="2026-08-01T00", latitude=0, longitude=0).max()
# Variables with a vertical dimension live in the pressure_level group
ds_pressure = dynamical_catalog.open("ecmwf-ifs-ens-forecast-46-day-daily-1-5-degree", group="pressure_level", chunks=None)
ds_pressure["geopotential_height"].sel(init_time="2026-08-01T00", lead_time="10d", pressure_level=500).std("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("ecmwf-ifs-ens-forecast-46-day-daily-1-5-degree")
asset = collection.assets["icechunk-https"]
repo = icechunk.Repository.open(icechunk.http_storage(asset.href))
session = repo.readonly_session("main")
ds = xr.open_zarr(session.store, chunks=None)
ds["average_temperature_2m"].sel(init_time="2026-08-01T00", latitude=0, longitude=0).max()
# 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["geopotential_height"].sel(init_time="2026-08-01T00", lead_time="10d", pressure_level=500).std("ensemble_member")
| min | max | units | |
|---|---|---|---|
| ensemble_member | 0 | 100 | 1 |
| init_time | 2026-01-01T00:00:00Z | Present | seconds since 1970-01-01 |
| latitude | -90 | 90 | degree_north |
| lead_time | 0 | 3974400 | seconds |
| longitude | -180 | 178.5 | degree_east |
| pressure_level | 10 | 1000 | hPa |
Access a variable by its name (the bold identifier, e.g. ds["average_convective_available_potential_energy_surface"]).
Dimensions: init_time × lead_time × ensemble_member × latitude × longitude
| variable | units |
|---|---|
average_convective_available_potential_energy_surface
Convective available potential energy (cape)Mean convective available potential energy over the previous 24 hours. At each time ECMWF takes the largest CAPE among air parcels lifted from model levels below 350 hPa.
|
J kg-1 |
average_dew_point_temperature_2m
Mean 2 metre dewpoint temperature in the last 24 hours (mn2d24)Mean 2 metre dewpoint temperature over the previous 24 hours.
|
degree_Celsius |
average_temperature_2m
Mean temperature at 2 metres in the last 24 hours (mean2t24)Mean temperature at 2 metres over the previous 24 hours.
|
degree_Celsius |
downward_latent_heat_flux_surface
Time-mean surface latent heat flux (mslhfl)Average surface downward latent heat flux over the previous 24 hours.
|
W m-2 |
downward_long_wave_radiation_flux_surface
Surface downward long-wave radiation flux (sdlwrf)Average surface downward long-wave radiation flux over the previous 24 hours.
|
W m-2 |
downward_sensible_heat_flux_surface
Time-mean surface sensible heat flux (msshfl)Average surface downward sensible heat flux over the previous 24 hours.
|
W m-2 |
downward_short_wave_radiation_flux_surface
Surface downward short-wave radiation flux (sdswrf)Average surface downward short-wave radiation flux over the previous 24 hours.
|
W m-2 |
eastward_turbulent_surface_stress
Time-mean eastward turbulent surface stress (avg_iews)Average eastward turbulent surface stress over the previous 24 hours.
|
Pa |
maximum_temperature_2m
Maximum temperature (tmax)Maximum temperature at 2 metres over the previous 24 hours.
|
degree_Celsius |
minimum_temperature_2m
Minimum temperature (tmin)Minimum temperature at 2 metres over the previous 24 hours.
|
degree_Celsius |
net_long_wave_radiation_flux_surface
Surface net long-wave radiation flux (snlwrf)Average surface net long-wave radiation flux over the previous 24 hours.
|
W m-2 |
net_long_wave_radiation_flux_top_of_atmosphere
Top net long-wave radiation flux (tnlwrf)Average top net long-wave radiation flux over the previous 24 hours.
|
W m-2 |
net_short_wave_radiation_flux_surface
Surface net short-wave radiation flux (snswrf)Average surface net short-wave radiation flux over the previous 24 hours.
|
W m-2 |
northward_turbulent_surface_stress
Time-mean northward turbulent surface stress (avg_inss)Average northward turbulent surface stress over the previous 24 hours.
|
Pa |
precipitation_convective_surface
Convective precipitation rate (cpr)Average convective precipitation rate over the previous 24 hours. Units equivalent to mm/s. Can slightly exceed precipitation_surface, as can rates derived by differencing the ECMWF source accumulations.
|
kg m-2 s-1 |
precipitation_surface
Precipitation rate (prate)Average precipitation rate over the previous 24 hours. Units equivalent to mm/s.
|
kg m-2 s-1 |
pressure_reduced_to_mean_sea_level
Pressure reduced to MSL (prmsl)
|
Pa |
pressure_surface
Surface pressure (sp)
|
Pa |
runoff_surface
Surface runoff rate (surfror)Average surface runoff rate over the previous 24 hours. Units equivalent to mm/s. Land points only; sea points are missing.
|
kg m-2 s-1 |
runoff_water_equivalent_surface
Runoff rate water equivalent (surface plus subsurface) (rorwe)Average runoff water equivalent rate (surface plus subsurface) over the previous 24 hours. Units equivalent to mm/s. Land points only; sea points are missing.
|
kg m-2 s-1 |
sea_ice_area_fraction
Sea ice area fraction (ci)Mean sea ice area fraction over the previous 24 hours. Sea points only; land points are missing.
|
1 |
sea_surface_temperature
Sea surface temperature (sst)Mean sea surface temperature over the previous 24 hours. Sea points only; land points are missing.
|
degree_Celsius |
skin_temperature_surface
Skin temperature (skt)Mean skin temperature over the previous 24 hours.
|
degree_Celsius |
snow_albedo_surface
Snow albedo (asn)Mean snow albedo over the previous 24 hours. Missing where the surface carries no snowpack, including snow-free land.
|
percent |
snow_density_surface
Snow density (rsn)Mean snow density over the previous 24 hours. Missing where the surface carries no snowpack, including snow-free land.
|
kg m-3 |
snow_water_equivalent_surface
Snow depth water equivalent (sd)Mean snow depth water equivalent over the previous 24 hours.
|
m |
snowfall_water_equivalent_rate_surface
Total snowfall rate water equivalent (tsrwe)Average snowfall water equivalent rate over the previous 24 hours. Units equivalent to mm/s.
|
kg m-2 s-1 |
soil_moisture_0_100cm
Soil moisture top 100 cm (sm100)Mean soil moisture 0-100 cm over the previous 24 hours. Land points only; sea points are missing.
|
kg m-3 |
soil_moisture_0_20cm
Soil moisture top 20 cm (sm20)Mean soil moisture 0-20 cm over the previous 24 hours. Land points only; sea points are missing.
|
kg m-3 |
soil_temperature_0_100cm
Soil temperature top 100 cm (st100)Mean soil temperature 0-100 cm over the previous 24 hours. Land points only; sea points are missing.
|
degree_Celsius |
soil_temperature_0_20cm
Soil temperature top 20 cm (st20)Mean soil temperature 0-20 cm over the previous 24 hours. Land points only; sea points are missing.
|
degree_Celsius |
total_cloud_cover_atmosphere
Total cloud cover (tcc)Mean total cloud cover over the previous 24 hours.
|
percent |
total_column_water_atmosphere
Total column water (tcw)Mean total column water over the previous 24 hours.
|
kg m-2 |
wind_u_10m
10 metre U wind component (10u)
|
m s-1 |
wind_v_10m
10 metre V wind component (10v)
|
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 × lead_time × ensemble_member × pressure_level × latitude × longitude
| variable | units |
|---|---|
geopotential_height
Geopotential height (gh)
|
m |
specific_humidity
Specific humidity (q)The source provides no 10, 50 or 100 hPa levels for this variable; those levels are always NaN.
|
1 |
temperature
Temperature (t)
|
degree_Celsius |
vertical_velocity
Vertical velocity (w)
|
Pa s-1 |
wind_u
U component of wind (u)
|
m s-1 |
wind_v
V component of wind (v)
|
m s-1 |
Dataset licensed under CC BY 4.0 and ECMWF Terms of Use.
ECMWF IFS ENS sub-seasonal-range forecast data processed by dynamical.org from the ECMWF Data Store.
Or ECMWF IFS ENS from dynamical.org.
This archive is built from the ECMWF sub-seasonal-range (S2S) forecast, retrieved from the ECMWF Data Store (ECDS) into the dynamical.org ECMWF IFS grib archive on Source Cooperative.
ECMWF does not provide user support for the free & open datasets. Users should refer to the public User Forum for any questions related to the source material.
IFS is updated regularly. Find details of recent and upcoming changes to the forecasting system on the ECMWF website.
Storage for this dataset is generously provided by Source Cooperative, a Radiant Earth initiative. Icechunk storage 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. Chunks are grouped into larger shards (the objects actually written to storage), which keeps the object count manageable for long-archive datasets. 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 | shard |
|---|---|---|
| init_time | 1 (1 day) | 1 (1 day) |
| lead_time | 47 (47 days) | 47 (47 days) |
| ensemble_member | 101 | 101 |
| latitude | 25 (37.5°) | 125 (181.5°) |
| longitude | 24 (36°) | 240 (360°) |
| uncompressed | 10.9 MiB | 543.3 MiB |
Review the validation report for variable availability, missing data, known quirks, fill values, value distributions, and sample plots.
The data values in this dataset have been rounded in their binary floating point representation to improve compression. See Klöwer et al. 2021 for more information on this approach. The exact number of rounded bits can be found in our reformatting code.