EPW radiation mesh interpolation


I am trying to create an animation that would show the radiations on a building. I succeded to do so but I can only get 24 frames per day as the EPW has data for each hour only.
Therefore, I am trying to create an interpolation of the data to “fill” the gaps and get more frames but I can’t find a solution for now.
Do you have any ideas ?

Thanks in advance !


I think it would help to define the goal of the interpolation here more explicitly to guide possible solutions. For example, is the goal to calculate values while reducing the assumptions you make as much as possible, or calculate values that try to match “actual” subhourly values as much as possible? The former prioritizes robustness but would have high uncertainty (distance between actual and interpolated value is high), and the latter is the opposite.

Also, you say “mesh interpolation” but it seems like it’s more accurate to say the goal is timeseries interpolation, right? The mesh interpolation will take care of itself once a new EPW file is created with interpolated timeseries data. The title makes it sound like a 2D problem, when it’s actually a 1D problem.

One approach to timeseries interpolation would be to use the method EnergyPlus uses to interpolate solar radiation during sub-hourly timesteps. The Engineering reference section on solar interpolation[1] references a paper for an example of their interpolation model[2], but I can’t locate a free copy of it online. This DesignBuilder post[3] seems to suggest it’s a simple linear interpolation, which is pretty common for timeseries interpolation, although if it’s that simple I don’t understand why they don’t just say that in the Engineering Reference… This would not be hard to confirm.

At any rate, linear interpolation is a simple, way to solve this problem while maintaining the frequency distribution of your original values. I think polynomial interpolation is another possible candidate, its smoothness would likely be closer to actual values on average, but because you are building in more of an assumption about the behaviour of data, it is less robust and will change the frequency distribution of your values.

cc @josephyang, who knows a lot more about creating synthetic data from weather files than me, and might have some different insights.

[1] Climate, Sky and Solar Calculation - EnergyPlus Documentation
[2] Energyplus Experimental Data Validation Work: Development and Validation of the Unvented Trombe Wall Model and Other Heat Balance Components
[3] Why do hourly weather data reported by EnergyPlus not match exactly with data in the epw file? - Powered by Kayako Help Desk Software

Given the resolution of the EPW data in one hour, interpolating to higher frequency is really just a way of smoothing so what @SaeranVasanthakumar is correct. One caveat with polynomial interpolation is that you’d probably get negative values around sunrise/sunset.

Not too familiar with the format that you might be working with but if you have the animation generated in mp4, try ffmpeg tool to see if it makes it a bit smoother.

1 Like

If you use the latest development version of the LBT plugin, I added the ability to run radiation studies at sub-hourly timesteps like so:

The “LB Convert To Timestep” components are just doing linear interpolation between the hourly values of the EPW. So there’s nothing fancy going on but I guess it can make your animation a little smoother.

hourly solar direct and diffuse radiation.gh (51.3 KB)

I am trying to get hourly/sub hourly sun direct/diffuse radiation on a surface for every single hour. I can get what I want with LB Directional Solar Irradiance, but it seems that it is not possible to get data for each hour with LB Incident Radiation. As I need to account for obstructions that block the sun, I was wondering if there is any way to get hourly/sub hourly data for direct/diffuse solar radiation. I am doing an experimental research on building integrated photovoltaics, and I need the simulated data for comparison.

Thanks in advance

Hi Sara,

Check out this discussion, I think it might help with what you’re trying to achieve:


1 Like

Thank you Charlie for getting back to me. I took a look at the discussion, but could not wrap my head around how they got hourly data for a year. Basically, I want to have what I got from “LB Directional Solar Irradiance”, from “LB Incident Radiation” to be able to account for solar obstructions in my module. I am now getting only 8 kWh/m2 total result which are the accumulated data for each sensor. But I do want 8760 result for each hour showing how much incident radiation I get in each hour of the year.
I would be happy if you could take a look at my file and let me know what do you think.
hourly solar direct and diffuse radiation 4 June.gh (78.1 KB)

Hi Sara,

I’ll try and take a look at your script tomorrow when I’m back at my laptop.

For now, the LB incident radiation component won’t give you hourly results. That’s due to the sky matrix input producing a cumulative sky for the time period input.

My recommendation for getting hourly results would be to use the HB annual incident radiation component, where you can then read the hourly results from the results file.

However, if you really want to use the LB component one idea would be to use Mostaphas suggestion from the other thread with the LB real-time incident radiation. You can then use one LB incident radiation component to get the int mtx input into real time.

Then you could create a sky mtx for each hour using the LB SkyMatrix component and grafting the HOY input so that it creates a sky mtx for each hour of the year. That might throw errors due to you trying to create sky mtxs for night hours so this idea might be a non starter.

Hope that helps for now.


You might be able to get around any SkyMatrix problems with night hours by using the LB sunpath component to just give you HOYs where the sun is up, and then feed those into SkyMatrix

Hey Sara,

I’ve had a look at your script and adjusted it to do what you’re aiming for.
hourly solar direct and diffuse radiation 4 June CB Edit.gh (141.4 KB)

However, I still think my recommendation from the other thread to use HB annual irradiance is a better solution to what you’re trying to achieve than using LB incident radiation. I set up a comparison using HB in the same script and it runs much faster, and the benefit will increase if geometry complexity and analysis points are increased.

@chris I spotted that the direct results out of HB annual irradiance are hourly, whereas the total values match the input timestep. Is this intentional? I’m not on the latest development release so this may have already been looked at.


1 Like

Thanks for letting me know about this, @charlie.brooker . It definitely seems odd and I’ll have a look shortly.

Yep, this was a minor bug. I just pushed a fix for it:

After you run the LB Versioner, you should see that the direct results are always at the same timestep as the total results:

1 Like