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
-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.