I believe some of the Global Forecast System (GFS) parameters are point values while others are average values over an interval. For example, the parameter DSWRF (Downward Short-Wave Radiation Flux) is labeled as a "0-3 hour ave". Does this mean that for forecast hour 3 from the GFS, the DSWRF value is the average for the interval of hour 3 to hour 6? Is anything not labeled as an average a point value? Is there documentation that answers these questions (I can't find any)? I ask because the documentation for solarforecastarbiter-core claims that "Cloud cover from GFS is an interval average with ending label" (line 88). If this were true for my DSWRF example above, the forecast for hour 3 would be the average for the interval of hour 0 to hour 3 rather than from hour 3 to hour 6.

Thank you for your help!


1 Answer 1


These GFS parameters are stored as a running average, reset every 6 hours. This is a bit unusual and requires some special handling to get back to hourly forecasts.

The value you have, time-tagged 03:00 (3h) and labeled as "0-3 hour ave" in GRIB is indeed the average of the forecasts from 0-3 hours ahead, time-tagged interval ending. Or could be understood as the average of what one would typically like to have as three one-hour averages labelled 01:00 (0-1 hour ahead average), 02:00 (1-2 hour ahead average) and 03:00 (2-3 hour ahead average), time-tagged interval ending.

This is as follows for each the different time steps found in GFS data:

  • 01:00 (labeled as "0-1 hour ave"): the forecast for 01:00 (tagged interval ending, 1 hour average).
  • 02:00 (labeled as "0-2 hour ave"): the average of the 01:00 and 02:00 forecasts (interval ending 1 hour averages).
  • 03:00 (labeled as "0-3 hour ave"): the average of the 01:00, 02:00, 03:00 forecasts.
  • 04:00 (labeled as "0-4 hour ave"): the average of the 01:00, 02:00, 03:00, 04:00 forecasts.
  • 05:00 (labeled as "0-5 hour ave"): the average of the 01:00, 02:00, 03:00, 04:00, 05:00 forecasts.
  • 06:00 (labeled as "0-6 hour ave"): the average of the 01:00, 02:00, 03:00, 04:00, 05:00, 06:00 forecasts.
  • 07:00 (labeled as "6-7 hour ave"): the 07:00 forecast. The averaging has been reset after 6h.
  • 08:00 (labeled as "6-8 hour ave"): the average of the 07:00 and 08:00 forecasts.
  • and so on.

To get back to hourly forecasts (or 3-hourly for 3-hourly datasets), you either need to do the math yourself or you can use the wgrib2 option -ncep_norm. See https://www.cpc.ncep.noaa.gov/products/wesley/wgrib2/ncep_norm.html .

To convert back yourself, you need to use the previous average and substract it with proper weighting. Here is short instructions by Shrinivas Moorthi from this thread http://gradsusr.org/pipermail/gradsusr/2016-November/040397.html :

Let us denote the data from 6 hourly output as C1, C2, C3, C4, C5, C6.

To get hourly mean, then
for hour 1, the mean is C1,
for hour 2, the mean is 2C2-C1
for hour 3, the mean is 3C3-2C2
for hour 4, the mean is 4C4-3C2
for hour 5, the mean is 5C5-4C4
and for hour 6, it is 6C6-5C5

This pattern repeats every six ours.

There also is an NCEP/NOAA paper on the model data, where this is explained somewhere deep down, but I couldn't find it right now. The two links above however give a bit of explanation/guidance as well.

And always a good idea to compare your results to the output of a tool doing the conversion automatically.

  • $\begingroup$ Thank you for your thorough and very helpful answer! I really appreciate your help! $\endgroup$
    – Jordan
    Commented Dec 16, 2022 at 20:50
  • $\begingroup$ Thanks for your comment, Jordan, pleasure. I have come across this a few times over the last years with colleagues asking/being confused... When I searched for this once more now, I still didn't find good documentation, but found your question, so I thought I'd write this down properly once for everyone. $\endgroup$
    – FelixD
    Commented Dec 19, 2022 at 11:05

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.