Hello,
I am trying to verify the correct hourly interpretation of
surface_net_thermal_radiation (STR, ECMWF parameter 177) downloaded from the
CDS reanalysis-era5-land gridded dataset in GRIB format.
I am aware of the ERA5-Land documentation explaining that accumulated variables
are accumulated from the beginning of the 00 UTC forecast to the end of each
forecast step, and that hourly values therefore need to be derived from
consecutive forecast steps:
This is also consistent with the numerical behavior of the STR data I downloaded.
However, I am seeing an apparent contradiction with the GRIB1 metadata in the
actual files delivered by CDS.
I downloaded four small January subsets (2018 and 2020, two locations) and
inspected all 2,976 GRIB messages / 11,904 grid-cell values. Two independent
decoders produced identical numerical values.
For every message I find:
- timeRangeIndicator (TRI) = 4
- time unit = hour
- P2 - P1 = 1
The sequence is:
Validity 00 UTC:
reference = previous day 00 UTC
P1/P2 = 23/24
Validity 01 UTC:
reference = current day 00 UTC
P1/P2 = 0/1
Validity 02 UTC:
reference = current day 00 UTC
P1/P2 = 1/2
…
Validity 23 UTC:
reference = current day 00 UTC
P1/P2 = 22/23
Taken literally, these P1/P2 values appear to describe individual one-hour
intervals.
That seems inconsistent with the documented ERA5-Land accumulation semantics,
where step 2 should contain the accumulation from forecast start (00 UTC)
through step 2 rather than only the 01–02 UTC interval.
The numerical values strongly resemble cumulative values.
For example, one grid cell contains:
01 UTC (P1/P2 0/1):
-103372.375 J/m²
02 UTC (P1/P2 1/2):
-176881.5 J/m²
23 UTC (P1/P2 22/23):
-4872664 J/m²
00 UTC next day (P1/P2 23/24):
-4999550 J/m²
If the 02 UTC value is cumulative from the 00 UTC forecast start, the energy
for the 01–02 UTC hour would be:
-176881.5 - (-103372.375)
= -73509.125 J/m²
and therefore:
-73509.125 / 3600
= -20.42 W/m²
My questions are:
-
For
surface_net_thermal_radiationfrom the CDS
reanalysis-era5-landgridded GRIB product, are the packed STR values
cumulative from the 00 UTC forecast start? -
If so, is the correct hourly conversion:
step 1:
hourly_energy = STR(step1)steps 2–24:
hourly_energy = STR(stepN) - STR(stepN-1)hourly_mean_flux:
hourly_energy / 3600 -
If this is correct, why do the GRIB1 messages encode P1/P2 as
0/1, 1/2, 2/3, …, 23/24 rather than 0/1, 0/2, 0/3, …, 0/24? -
Should P1/P2 therefore not be interpreted as the actual accumulation
interval represented by the packed value for this product, or is this
a metadata issue? -
Can you also confirm the midnight handling?
My understanding is:
validity 00 UTC = step 24 of the previous forecast cycle
so the final hourly interval is:
step24 - step23while:
validity 01 UTC = step 1 of the new forecast cycle
so step1 is used directly and must NOT be differenced against the
previous validity-00 value.
I also noticed a recent discussion of incorrect/missing metadata in some
ERA5-Land GRIB files, although I am not assuming it is the same issue:
I have preserved the four original GRIB files and can provide a sample file,
the exact CDS request, or the complete metadata dump for all 2,976 messages
if useful.
Thank you.