Catalog > ECMWF IFS ENS > ECMWF IFS ENS forecast, 46 day, 1.5 degree
updating

ECMWF IFS ENS forecast, 46 day, 1.5 degree

time-optimized
Spatial domain Global
Spatial resolution 1.5 degrees (~165km)
Time domain Forecasts initialized 2023-06-28 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)

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.

Related Datasets

Examples

import dynamical_catalog  # dynamical-catalog>=0.8.0

ds = dynamical_catalog.open("ecmwf-ifs-ens-forecast-46-day-1-5-degree", chunks=None)
ds["average_temperature_2m"].sel(init_time="2026-08-01T00", latitude=0, longitude=0).max()
ECMWF IFS ENS forecast, 46 day, 1.5 degree · Maximum ensemble temperature
import dynamical_catalog  # dynamical-catalog>=0.8.0

ds_pressure = dynamical_catalog.open("ecmwf-ifs-ens-forecast-46-day-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")
ECMWF IFS ENS forecast, 46 day, 1.5 degree · Ensemble spread of the large scale flow

Dimensions

min max units
ensemble_member 0 100 1
init_time 2023-06-28T00: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

Variables

Access a variable by its name (the bold identifier, e.g. ds["average_dew_point_temperature_2m"]).

Dimensions: init_time × lead_time × ensemble_member × latitude × longitude

variable units
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
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. 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
Pressure Level (6 variables)

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

Don't see what you're looking for? Let us know at feedback@dynamical.org.

Details

License

Dataset licensed under CC BY 4.0 and ECMWF Terms of Use.

Attribution and citation

ECMWF IFS ENS sub-seasonal-range forecast data processed by dynamical.org from the ECMWF Data Store.

Or ECMWF IFS ENS from dynamical.org.

DOI

Source

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. ECDS serves retrieval jobs rather than addressable files, so the grib archive — not ECDS — is what this dataset is reformatted from.

ECMWF's licence holds sub-seasonal-range forecasts back for 48 hours, and ECDS publishes an initialization about 52 hours after its 00 UTC reference time. This is therefore not a real-time dataset: the most recent initialization available is about two days old.

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.

Data availability

This dataset is under construction and is published to the staging catalog only.

The init_time axis declares 1153 daily initializations from 2023-06-28, but only the most recent 30 — 2026-07-25T00 through 2026-08-23T00 UTC — hold data. Every earlier initialization reads as NaN, and operational updates are currently paused, so the archive does not yet extend to the present. The collection's temporal extent and its time_domain summary describe the declared axis rather than this window; treat the dates above as authoritative.

Backfilling the declared history requires re-creating the store, so both the covered window and the axis itself will change before this dataset is promoted to production.

Variables

Because the forecast step is 24 hourly, most surface variables are daily means or daily mean rates rather than instantaneous values — that is what the average_ prefix denotes. Surface and single-level variables are at the dataset root. Temperature, specific humidity, both wind components, vertical velocity and geopotential height are carried on 10 pressure levels (1000, 925, 850, 700, 500, 300, 200, 100, 50 and 10 hPa) in the pressure_level group.

The 0 hour lead time carries no surface data. A 24 hour statistic needs a preceding day, so 27 of the 29 root variables are entirely NaN at lead_time=0; only pressure_reduced_to_mean_sea_level and pressure_surface, which are instantaneous, have values there. Every variable in the pressure_level group is instantaneous and is present at the 0 hour lead time. Selecting lead_time=slice("24h", None) is the safe default for surface fields.

Several variables are masked to the domain they describe, and read as NaN outside it: sea_surface_temperature and sea_ice_area_fraction over land; the soil moisture, soil temperature and runoff fields over ocean; and snow_albedo_surface and snow_density_surface wherever there is no snow. In the pressure_level group, specific_humidity is not provided above 200 hPa and is NaN on the 100, 50 and 10 hPa levels.

Two absences are worth knowing about before you plan around this dataset. precipitation_convective_surface is the only precipitation rate carried — there is no total precipitation — and wind is available only on pressure levels, as wind_u and wind_v, with no 10 metre winds. At the surface, eastward_turbulent_surface_stress and northward_turbulent_surface_stress are what describe the momentum flux here.

Neither absence is a limit of the sub-seasonal forecast itself. ECMWF publishes total precipitation and the 10 metre winds for it, but on a 6 hourly step rather than the 24 hourly step of this dataset, and the grib archive this dataset is built from does not currently retrieve them.

Ensemble members

Each forecast contains 101 ensemble members: a control member (0) and 100 perturbed members (1-100). The control forecast is produced with the best available data and unperturbed models. The other 100 members are each produced with slight perturbations of initial conditions and of the models. Taken together, the ensemble of 101 forecasts shows the range of possible outcomes and the likelihood of their occurrence. A 101 member ensemble is larger than the 51 members of ECMWF's medium-range forecast, which matters at sub-seasonal lead times where the useful signal is in the distribution rather than in any single trace.

Model updates

IFS is updated regularly. Find details of recent and upcoming changes to the forecasting system on the ECMWF website.

Storage

Storage for this dataset is generously provided by Source Cooperative, a Radiant Earth initiative. Icechunk storage generously provided by AWS Open Data.

Chunks & shards

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

Validation report

Review the validation report to understand variable availability, missing data, known quirks, fill values, and approximate spatial, temporal, and value distributions.

Compression

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.

OMGIMERG, Zarr-Python 3.3.0, analyzing forecast rollouts cont., NVIDIA Earth-2