Why do hourly weather data reported by EnergyPlus not match exactly with data in the epw file?
Posted by Andy Tindale on 03-Nov-16 10:21 AM

A difference is expected. The difference comes from interpolating hourly weather data for subhourly timesteps in EnergyPlus. In an hourly weather file, the temperatures and other state-point readings are the value at the time the reading was taken. For example, in the USA_IL_Chicago-OHare_TMY2.epw file, the outdoor dry bulb value for July 2, hour 1, is 19.4C. This is the temperature at 1:00 am.

If you set Timestep = 1, then EnergyPlus will report 19.4C for 07/02 01:00 and will use that value for the entire one hour timestep.

If Timestep = 4, then 19.4C is used only for the time step which ends at 01:00. The other timesteps use linearly interpolated values between the hourly weather file values. When you report at the "hourly" frequency in EnergyPlus, you see the average temperature over the hour. If you report at the "timestep" frequency, you will see the values from the weather data file appear at the last timestep of each hour.

In summary:
The standard EnergyPlus weather files (epw) contain hourly data.  For state variables such as temperature and humidity, the values in the epw file are the instantaneous measurements at 1:00 am, 2:00 am, and so on.  Because EnergyPlus uses zone time steps of less than one hour, these values are linearly interpolated for each time step.  Weather data values reported from EnergyPlus at the Timestep frequency will match the weather file one timestep per hour on the hour.  Values reported at the Hourly frequency represent the average value over the hour, so they will not match the instantaneous value in the weather file.

The solar radiation values in the weather file are integrated total values for the hour, so the interpolation must be done differently.  The total radiation in [Wh/m2] is used as an average rate for the hour in [W/m2], and this average rate is assumed to be the value at the midpoint of the hour.  Again, linear interpolation is used to determine the value for each timestep.  The reported solar values in the output will match the value in the weather file on the half hour.