Version: dev

ERA5_pl

ERA5 regridding model — the coupler half of the era5 loader+regridding-model split (RFC pure-io-data-loaders §6/§7; bead esm-3nc.1). Exposes ERA5 ECMWF Reanalysis 5th Generation pressure-level fields on the simulation's target grid for coupling into EarthSciML systems.

.esm schema
1.0.0
Source
components/earthsci_data/era5.esm

Description

ERA5 regridding model — the coupler half of the era5 loader+regridding-model split (RFC pure-io-data-loaders §6/§7; bead esm-3nc.1). Exposes ERA5 ECMWF Reanalysis 5th Generation pressure-level fields on the simulation’s target grid for coupling into EarthSciML systems.

Structure (RFC pure-io-data-loaders §6):

  1. It declares the pure-I/O source inline: at 0.7.0 the loader was the separate file components/earthsci_data/era5_loader.esm, mounted as the subsystem pl; at esm 1.0.0 it is the ERA5_pl entry in this file’s own data_sources and the standalone file is gone (a data source is not a component, so it neither needs nor may be a subsystem). Loader fields are referenced as ERA5.pl. (e.g. ERA5.pl.u).
  2. Reprojection & regridding are NOT model concerns at esm 0.8.0. ERA5’s native grid is geographic (longlat/WGS84); the identity longlat reprojection and the per-variable regridding onto a consuming grid (conservative for centered scalars T/q/r/z/w/…, B-spline for the horizontal winds u/v) are expressed at the COUPLING EDGE as coupling expressions (esm-spec §8.6/§10.5) by importing the earthscidiscretizations reprojection/ and regridding/ template libraries — see the wildlandfire.esm assembler. This model no longer carries a regrid block.

Top-level derived quantities computed on the target grid: pressure P (from the 37-entry pressure-level lookup table), and the lat/lon coordinate metrics δxδlon and δyδlat (emitted only for lat/lon coordinate domains).

MeanWind coupling (from EarthSciData.jl@830435a coupling.jl): MeanWind.v_lon ~ ERA5.pl.u, MeanWind.v_lat ~ ERA5.pl.v, MeanWind.v_lev ~ ERA5.pl.w.

Migration esm 0.7.0 -> 0.8.0 (this file): v0.8.0 is a clean break that REMOVED Model.regrid/RegridSpec (esm-spec §8.6). Accordingly the former model regrid block (per-variable conservative/bspline methods) has been REMOVED and the regridding is now performed at the coupling edge via imported template libraries. The loader fields are consumed directly as ERA5.pl..

Migrated from EarthSciData.jl@830435a065f27e99f10bba91107ca1730322cc6b:src/era5.jl:385 (ERA5 constructor, esm-te2e); split into pure loader + regridding model by esm-3nc.1.

Reference

Hersbach, H. et al. (2020). The ERA5 global reanalysis. Quarterly Journal of the Royal Meteorological Society, 146(730), 1999–2049.

Data source

Kindgrid
URL templatehttps://data.earthsci.dev/era5/era5_pl_{date:%Y}_{date:%m}.nc
Coverage1940-01-01T00:00:00Z → 2025-12-31T23:59:59Z
File periodP1M
Sample frequencyPT1H
Records per file744

Raw .esm

Raw .esm JSON (this component)
{
  "kind": "grid",
  "source": {
    "url_template": "https://data.earthsci.dev/era5/era5_pl_{date:%Y}_{date:%m}.nc"
  },
  "temporal": {
    "start": "1940-01-01T00:00:00Z",
    "end": "2025-12-31T23:59:59Z",
    "file_period": "P1M",
    "frequency": "PT1H",
    "records_per_file": 744,
    "time_variable": "valid_time",
    "records_per_sample": 2
  },
  "reference": {
    "citation": "Hersbach, H. et al. (2020). The ERA5 global reanalysis. Quarterly Journal of the Royal Meteorological Society, 146(730), 1999–2049.",
    "url": "https://www.ecmwf.int/en/forecasts/dataset/ecmwf-reanalysis-v5",
    "doi": "10.1002/qj.3803"
  },
  "metadata": {
    "tags": [
      "era5",
      "ecmwf",
      "meteorology",
      "reanalysis",
      "global",
      "pressure-level",
      "hourly",
      "0.25deg"
    ],
    "earthscidata_source": "src/era5.jl::ERA5FileSet (pressure-level variables)",
    "native_resolution_deg": {
      "longitude": 0.25,
      "latitude": 0.25
    },
    "native_extent": {
      "longitude": [
        -180.0,
        180.0
      ],
      "latitude": [
        -90.0,
        90.0
      ],
      "pressure_level_hpa": [
        1.0,
        1000.0
      ]
    },
    "native_staggering": "All variables are cell-centered (longitude/latitude/pressure_level all 'center') — ERA5 is stored on a regular non-staggered grid. The model regrids the horizontal wind components u, v with B-spline interpolation and all centered scalars (including the vertical-velocity field w) conservatively (RFC §5.2); see era5.esm `regrid`.",
    "pressure_levels_hpa": [
      1000,
      975,
      950,
      925,
      900,
      875,
      850,
      825,
      800,
      775,
      750,
      700,
      650,
      600,
      550,
      500,
      450,
      400,
      350,
      300,
      250,
      225,
      200,
      175,
      150,
      125,
      100,
      70,
      50,
      30,
      20,
      10,
      7,
      5,
      3,
      2,
      1
    ],
    "netcdf_dimensions": [
      "longitude",
      "latitude",
      "pressure_level",
      "valid_time"
    ],
    "file_naming": "era5_pl_{YYYY}_{MM:02d}.nc (monthly, one file per calendar month, all 16 pressure-level variables plus pressure_level dimension)",
    "level_indexing_note": "This loader's pressure_level dimension uses hPa values (1–1000 hPa) matching the NetCDF 'pressure_level' dimension. The regridding model's lev parameter uses 1-based integer indexing (1=1000 hPa, 37=1 hPa) matching the upstream ERA5FileSet convention; the runtime converts lev → hPa using the pressure_levels_hpa table before querying this loader.",
    "access_note": "ERA5 data is available from the Copernicus Climate Data Store (CDS) at https://cds.climate.copernicus.eu/. The url_template above uses a placeholder earthsci.dev mirror; in production, set EARTHSCIDATADIR to a local cache directory populated via the CDS API or the EarthSciData.jl ERA5FileSet download utilities.",
    "cds": {
      "dataset": "reanalysis-era5-pressure-levels",
      "format": "netcdf",
      "pressure_levels": [
        1000
      ],
      "description": "Opt-in CDS request descriptor (gap G7). When the loader seam is routed through the EarthSciIO provider adapter (earthsci_ast.data_loaders.esio_provider.esio_provider_factory), this block makes the loader resolve to the real Copernicus CDS API instead of the placeholder earthsci.dev mirror: the adapter builds a per-month `cds://reanalysis-era5-pressure-levels?<request>` URL (earthsciio.era5.era5_cds_url) whose `area` is the simulation domain's WGS84 bounding box, whose `variable` list maps this loader's NetCDF short names (t, u, v, r, …) to the CDS long names, and whose `pressure_level` set is `pressure_levels` below (default: all 37 ERA5 levels). EarthSciIO's registered `cds` transport then submits/polls/downloads the NetCDF asset, authenticating with the PRIVATE-TOKEN from ~/.cdsapirc or $CDSAPI_KEY. The submit→poll→download handshake cannot be expressed as the default ESS opener/fetcher's single HTTP GET, which is why the CDS path lives in the esio adapter rather than the default provider.",
      "pressure_levels_note": "The `pressure_levels` key (a list of hPa integers) trims the CDS request to the levels actually needed; omit it to request the full 37-level set (a large download that exceeds the CDS per-request cost limit when combined with a full month × 24 h × 16 variables). It is set to [1000] here because the consuming wildfire model reduces ERA5 to the ground surface (camp_fire's ground_surface interface, lev=min = 1000 hPa), so only the near-surface level is needed; raise it to the full set for a model that uses the vertical column."
    },
    "temporal_note": "ERA5 monthly files are released with a ~2-month lag. The temporal.end above is approximate; update as new months are released. ERA5 Back Extension covers 1940–1978 with slightly reduced quality; the main ERA5 record begins January 1979.",
    "merged_from": "components/earthsci_data/era5_loader.esm",
    "merge_note": "Merged from the standalone pure-I/O file components/earthsci_data/era5_loader.esm, which is deleted by the same commit. The 0.x `X.esm` + `X_loader.esm` split existed only because a loader was a COMPONENT and a {\"ref\"} target had to contain exactly one component. At esm 1.0.0 a data source is NOT a component, not a coupling endpoint and not a scoped-name path root, and `data_sources` no longer counts toward a file's top-level system count — so one file may hold a model AND the data_sources that model consumes and still be mountable by {\"ref\"}. This registry entry is byte-identical to the one the deleted file declared (it was already mirrored here so this document would validate), and the deleted file's own top-level metadata — name, description, tags, created, authors, references — is preserved verbatim in `merged_file_metadata` so no provenance, citation or migration note is lost.",
    "merged_file_metadata": {
      "name": "ERA5_pl_loader",
      "description": "Pure-I/O data loader for ERA5 ECMWF Reanalysis 5th Generation pressure-level fields. Provides hourly pressure-level atmospheric variables (wind, temperature, humidity, geopotential, cloud, ozone, and derived fields) on the native 0.25°×0.25° global longitude/latitude grid, 1940–present, sourced from monthly NetCDF files.\n\nThis is the loader half of the era5 loader+regridding-model split (RFC pure-io-data-loaders §4.1/§7; bead esm-3nc.1). It is PURE I/O: it declares its source (url_template), the file variables it reads (with units), and its temporal cadence. It performs NO reprojection and NO regridding — those are per-variable concerns of the regridding model (components/earthsci_data/era5.esm), which references this file as a subsystem via {\"ref\": \"./era5_loader.esm\"}.\n\nBecause a `temporal` block is present, this loader seeds DISCRETE cadence for its variables (ess-v9a.5): the runtime refreshes the file buffers hourly. (A consumer that needs a single time slice as a static field — e.g. the wildlandfire.esm surface-met coupling — binds one resolved hour as a CONST provider.)\n\nMigration esm 0.7.0 -> 0.8.0 (this file): v0.8.0 is a clean break that REMOVED the DataLoader `grid`/`mesh` descriptor (esm-spec §8.4; esm-schema.json DataLoader is now additionalProperties:false over {kind, source, temporal, determinism, variables, reference, metadata} with no `grid` key). Accordingly the former GDD `grid` block (family/crs/dimensions/extents + the n_pressure_level parameter) has been REMOVED. Grid geometry is now ordinary data: the native 0.25°×0.25° lon/lat lattice and the 37 pressure levels are documented in metadata below and materialized downstream by `aggregate` FAQs / coupling expressions (esm-spec §8.6). Reprojection (longlat identity) and conservative/bspline regridding onto a consuming grid are performed at the coupling edge via the reprojection/ and regridding/ template libraries in earthscidiscretizations, NOT here.\n\nMigrated from EarthSciData.jl@830435a065f27e99f10bba91107ca1730322cc6b:src/era5.jl:385 (ERA5FileSet, pressure-level variables). Split out of the pre-migration components/earthsci_data/era5.esm (esm-te2e); grid block removed in the 0.7.0 -> 0.8.0 migration.",
      "tags": [
        "earthsci_data",
        "meteorology",
        "reanalysis",
        "era5",
        "ecmwf",
        "pressure_levels",
        "global",
        "data_loader",
        "pure-io",
        "longlat"
      ],
      "created": "2026-06-25T00:00:00Z",
      "authors": [
        "ECMWF",
        "EarthSciModels migration (esm-3nc.1)"
      ],
      "references": [
        {
          "citation": "Hersbach, H., Bell, B., Berrisford, P., Hirahara, S., Horanyi, A., Munoz-Sabater, J., Nicolas, J., Peubey, C., Radu, R., Schepers, D., Simmons, A., Soci, C., Abdalla, S., Abellan, X., Balsamo, G., Bechtold, P., Biavati, G., Bidlot, J., Bonavita, M., De Chiara, G., Dahlgren, P., Dee, D., Diamantakis, M., Dragani, R., Flemming, J., Forbes, R., Fuentes, M., Geer, A., Haimberger, L., Healy, S., Hogan, R. J., Holm, E., Janiskova, M., Keeley, S., Laloyaux, P., Lopez, P., Lupu, C., Radnoti, G., de Rosnay, P., Rozum, I., Vamborg, F., Villaume, S., and Thepaut, J.-N. (2020). The ERA5 global reanalysis. Quarterly Journal of the Royal Meteorological Society, 146(730), 1999–2049.",
          "url": "https://www.ecmwf.int/en/forecasts/dataset/ecmwf-reanalysis-v5",
          "doi": "10.1002/qj.3803"
        },
        {
          "citation": "Source: EarthSciData.jl@830435a065f27e99f10bba91107ca1730322cc6b:src/era5.jl:385 (ERA5 constructor). ERA5FileSet, ERA5_PRESSURE_LEVELS_HPA."
        }
      ]
    }
  }
}