-------------------------------------------------------------------------------- DRAFT ---------------------------------------------------------------------------------
to be peer reviewed by: Paul approved by CUS team leader: 2018-05-01 |
This article applies to the ERA5 sub-daily datasets:
This article does not apply to ERA5 monthly data. What streams are available? (Section 'Data organisation').
Before continuing with this article you might want to read:
In the ERA5 data archive two types of data are available, 'analysis' (an) and 'forecast' (fc):
To see which parameters are available as analysis (an) and/or forecasts (fc) see the ERA5 documentation, section 'Parameter listings'
Each parameter is classed as either 'instantaneous', 'accumulated', 'mean rate' or 'min/max', depending on the temporal properties of the parameter:
Each analysis has a validity time, i.e. the time the data values refer to (not the time when the analysis was computed).
All validity times are in hours UTC.
Depending on the selected stream, ERA5 daily analysis data is available hourly (i.e. for the HRES, with validity time 00:00, 01:00, 02:00, ... , 23:00) or 3-hourly (i.e. for the EDA, with validity time 00:00, 03:00, 06:00, ... , 21:00). See also the ERA5 data documentation, 'Temporal resolution' and the ERA5 Catalogue, streams.
The concept of 'step' does not apply to analyses.
Each forecast starts with the atmospheric conditions at a specific 'initialization time'. In ERA5 a new forecast is computed twice a day, with initialization times of 06:00 and 18:00 UTC.
In the ERA5 data archive, for forecasts, 'time' (and date) refers to the initialization time.
Each forecast computes the future atmospheric conditions, and at certain "points", or "steps", during this computation the data is post-processed, and stored in the ERA5 data archive. In ERA5 there is a step every 1 or 3 hours, depending on the selected stream. Note, when downloading data from the CDS, step does not need to be specified because data is selected according to the valid time, assuming steps from 1 to 12 hours.
Steps are referenced in hours from the forecast initialization time. This is regardless of the step interval. For example, for time=06:00, step 3 is always at 09:00 (06:00+3h).
The step interval in ERA5 is:
The interpretation of 'step' also depends on the parameter:
Note that the interval between Step X and Step Y can be 1 hour or 3 hours, depending on the selected stream. At Step 0 all accumulated values and mean rates are zero, because there is no previous data to accumulate from. | Examples:
|
The following table summarizes the different parameter types available in ERA5 from analysis and forecast:
Instantaneous parameters, e.g. 2m temperature | Accumulated parameters, | Mean rate parameters | Minimum/maximum parameters named 'Minimum/Maximum ... since previous post-processing' | |
---|---|---|---|---|
Analysis Calculated from observations and previous forecasts 'time' indicates a specific point in time for which a data analysis is carried out 'time' is hourly, HH:00 'step' does not apply | For example '2 metre temperature'. Values are valid at 'time' | n.a. | n.a. | n.a. |
Forecast Calculated from analysis and the forecast model 'time' indicate a specific point in time at which a forecast starts (initialization time) 'time' can be 06:00 or 18:00 'step' indicates hours after the initialization time. | For example '2 metre temperature'. Values are valid at 'time'+'step' 'step' is in the range 0 to 18 (hours after initialization) | For example 'Total precipitation'. Values represent the accumulation up to 'time'+'step', from the previous 'step' 'step' is in the range 0 to 18 (hours after initialization) At 'step' 0 all data is zero. | For example 'Mean total precipitation rate'. Values represent the average rate up to 'time'+'step', from the previous 'step' 'step' is in the range 0 to 18 (hours after initialization) At 'step' 0 all data is zero. | For example 'Maximum temperature at 2 metres since previous post-processing'. Values represent the Min/Max in the period up to 'time'+'step', starting from the previous 'step' 'step' is in the range 0 to 18 (hours after initialization) At 'step' 0 all data is zero. |
ERA5 data should preferably be downloaded from the C3S Climate Data Store. There you only need to select the desired validity times; the CDS then maps the validity times to the corresponding analysis/forecast and step.
The examples below apply to retrieving ERA5 data from the ECMWF data archive MARS. See How to download ERA5 data via the ECMWF Web API
Step | Your requirement | Select from the ERA5 data catalogue | Set in a WebAPI Python script | |
---|---|---|---|---|
1 | You are interested in HRES data, not in the ensemble | > | Select Deterministic forecast, Atmospheric model | 'stream':'oper' |
2 | You need total precipitation and evaporation. See parameters available in ERA5 and ECMWF parameter definitions You find suitable parameters:
| > | Select Forecast | 'type':'fc' |
3 | Month | > | Select a month, e.g. 2015, January | |
4 | Total precipitation and and evaporation are 2-dimensional fields ('surface field') | > | Select Surface | 'levtype':'sfc' |
5 | Dates | > | Select dates | 'date':' 2015-01-01/to/2015-01-31' |
6 | ERA5 forecasts are initialized at 06:00 and 18:00, and in HRES the interval between forecast steps is one hour. Hence you need forecast steps 1 to 12, from each forecast, in order to cover a 24 hour period. | > | Select time 06:00 and 18:00 Select steps 1 to 12 | 'time':'06:00/18:00' 'step':'1/2/3/4/5/6/7/8/9/10/11/12' |
7 | Specify parameters | > | Select parameters 'Total precipitation' and 'Evaporation' | 'param':'tp/e' (short names) or 'param':'228.128/182.128' (MARS parameter IDs) |
8 | > | Click 'View the MARS request' |
The resulting WebAPI Python script to download data:
#!/usr/bin/env python from ecmwfapi import ECMWFDataServer server = ECMWFDataServer() server.retrieve({ "class": "ea", # do not change "dataset": "era5", # do not change "expver": "1", # do not change "stream": "oper", # do not change "date": "2015-01-01/to/2015-01-31", "param": "228.128/182.128", # parameter IDs (the .128 is necessary for parameters with up to 3 digits) "levtype": "sfc", # tp and e are 2-dimensional fields ('surface field') "type": "fc", # tp and e are accumulated parameters, hence available from forecast (fc), not analysis (an) "time": "06:00/18:00", # There are 2 forecasts per day, starting at 06:00 and 12:00 "step": "1/2/3/4/5/6/7/8/9/10/11/12", # From each forecast we retrieve steps 1(h) to 12(h). "target": "output", # change this to your desired output file name }) |
These specifications give you hourly 'total precipitation' data from 2015-01-01, 06:00 to 2015-02-01, 06:00.
Discard the last 6 hours (2015-02-01, 00:01 to 06:00).
The data does not cover the period 00:00 to 06:00 of the first date. Retrieve these 6 hours from the last forecast of the previous day ('date':'2014-12-31', 'time':'18:00', 'step':'7/8/9/10/11/12')
Merge the two downloaded files
In ERA5 there is no daily data, so you have to download sub-daily data and aggregate to full days yourself.
Step | Your requirement | Select from the ERA5 data catalogue | Set in a WebAPI Python script | |
---|---|---|---|---|
1 | You are interested in HRES data, not in the ensemble | > | Select Deterministic forecast, Atmospheric model | 'stream':'oper' |
2 | You need average, minimum and maximum of 2m temperature. See parameters available in ERA5 and ECMWF parameter definitions You find suitable parameters:
You could retrieve the first parameter from analysis and the other two from forecast, or all three from forecast. You choose the latter. | > | Select Forecast | 'type':'fc' |
3 | Month | > | Select a month, e.g. 2015, January | |
4 | All 2 metre temperatures are by definition 2-dimensional fields ('surface field') | > | Select Surface | 'levtype':'sfc' |
5 | Dates | > | Select dates | 'date':' 2015-01-01/to/2015-01-31' |
6 | ERA5 forecasts are initialized at 06:00 and 18:00, and in HRES the interval between forecast steps is one hour. Hence you need forecast steps 1 to 12, from each forecast, in order to cover a 24 hour period. | > | Select time 06:00 and 18:00 Select steps 1 to 12 | 'time':'06:00/18:00' 'step':'1/2/3/4/5/6/7/8/9/10/11/12' |
7 | Specify parameters | > | Select parameters
| 'param':'2t/mx2t/mn2t' (short names) or 'param':'167/201/202' (param IDs) |
8 | > | Click 'View the MARS request' |
The resulting WebAPI Python script to download data:
#!/usr/bin/env python from ecmwfapi import ECMWFDataServer server = ECMWFDataServer() server.retrieve({ "class": "ea", # do not change "dataset": "era5", # do not change "expver": "1", # do not change "stream": "oper", # do not change "date": "2015-01-01/to/2015-01-31", "param": "167.128/201.128/202.128", # parameter IDs (the .128 is necessary for parameters with up to 3 digits) "levtype": "sfc", # tp and e are 2-dimensional fields ('surface field') "type": "fc", # tp and e are accumulated parameters, hence available from forecast (fc), not analysis (an) "time": "06:00/18:00", # There are 2 forecasts per day, starting at 06:00 and 12:00 "step": "1/2/3/4/5/6/7/8/9/10/11/12", # From each forecast we retrieve steps 1(h) to 12(h). "target": "output", # change this to your desired output file name }) |
These specifications give you hourly data from 2015-01-01, 06:00 to 2015-02-01, 06:00.
Discard the last 6 hours (2015-02-01, 00:01 to 06:00).
The data does not cover the period 00:00 to 06:00 of the first date. Retrieve these 6 hours from the last forecast of the previous day ('date':'2014-12-31', 'time':'18:00', 'step':'7/8/9/10/11/12')Merge the two downloaded files
To find the average 2 metre temperature per day, average the hourly 2t values per date.
To find the daily max/min, find the the max/min of the hourly mx2t/mn2t per date.