Cumulative Sky Matrix

Hey everyone,

I’m trying to calculate different shading factors using different types of geometry and the components “LB Sky Matrix” and “LB Incident Radiation”. I wanna make it so the user can choose to get monthly values (A list of 12 shading factors) and hourly values (a list of 8760). Maybe daily as well. My problem is that when I input a list of hoys, for 0…8759 (So every hour of a year), into the sky matrix and the into incident radiation the results are cumulative. So I get one total value for the whole year and not one value for every single hour. I can fix this by grafting my list and creating the skymatrix for every single hour 8760 times, but it takes too much time. I’m really hoping there is an easy fix since I need the hourly values for precise analysis further on. I hope I made myself clear - otherwise please just ask. I can’t link my file since I’m new here - I hope it makes sense. :slight_smile:

Thank you in advance!

PS: I tried uploading the files to this post - I hope that is okay:

Magnus R.

You should use a solution where you post-process the intersection matrix. Check out the LB Real-Time Incident Radiation component.


Okay, thank you - I have tried that component, but I’m unsure how to process the intersection matrix. For each point I get 290 values with high_density off and 1154 with it on. Both are not nearly the 8760 values I’m looking for. Still when I input this in the real time incident component it just gives me the same number as the incident component. I’m not very familiar with the component so maybe it is an easy fix - thanks anyways.

Can you maybe explain a bit more about what you mean with post process because the only figure I seem to be able to extract in details are different patches of the sky. Not every hour as I’m hoping to do :slight_smile:

Hi Magnus,

The Sky Dome component is useful to visualise your sky matrix and understand the process behind how the Incident Radiation calc is being carried out.

Your incident radiation result is the result of a sky matrix being combined with an intersection matrix (which has values for whether each result mesh face can see each patch of sky)

I hope I’m right in saying that if you create a new cumulative sky matrix component and plug in a Calculate HOY component into it, then use that new sky matrix output to plug into the Real Time component you could then use sliders to change the hour of year in real time.

You’d need to plug the result from Real Time into an LB heatmap component to visualise the results.

Hope that help,

Hey Charlie,

Is it something like this you mean?

That is what I have tried - the only issue is that it is time consuming to create a new sky every hour, but maybe I misunderstood what you meant.
I was hoping that I could create only one sky matrix from a list [0,1,2…8759] and then extract every a value from every hour that way.


Hi Magnus,

At my laptop now and this is what I mean.

GH script: (51.1 KB)

This does create a new sky matrix for every hour, but as it is only for a single hour it’s very quick, 146ms.


You can vary your input hour here:

Alternatively I think Honeybee annual irradiance would get you the hourly results you’re after in a format that allows for even faster access

Something like this

Okay, yeah I actually thought about trying Honeybee as well. I’m not too familiar with the plugin so I hope it’s okay that this is probably a very rookie question. But how do I assign a grid to my HB Model? (78.9 KB)

Thank you so much for your help so far!


Hi Magnus,

Personally I would produce the sensor grid using LB generate grid rather than SrfPt. They’ll need to be offset from your geometry - that’s done on the normal of input geometry so make sure it’s facing the way you intend. It will also provide you the mesh for visualisation.

To assign the grid to the model use HB assign grids and views :slight_smile:
Something like this.


Just spotted that sending HOY to analysis period won’t work. It’s probably something more like this you’re looking for, but you’ll need to check the list structures to see what makes sense, might need to use flip matrix or something similar.

Thank you! I do get a ton of error messages in the annual irradiance though, but it does run so that’s a start. I don’t know if they are common mistakes or something done wrong with the geometry. Also I’m a bit in doubt if the grid should be done with the window geometry or the base surface when I want to calculate the irradiance hitting the surfaces.

The errors I get:

  1. Solution exception:The recipe failed to run with the following summary:

Scheduled 18 tasks of which:

  • 4 ran successfully:
    • 1 CopySunUpHours(…)
    • 1 CreateSkyDome(…)
    • 1 GenerateSunpath(…)
    • 1 ParseSunUpHours(…)
  • 3 failed:
    • 1 CreateDirectSky(…)
    • 1 CreateRadFolder(…)
    • 1 CreateTotalSky(…)
  • 11 were left pending, among these:
    • 11 had failed dependencies:
      • 1 AnnualIrradianceRaytracing(…)
      • 1 CalculateMetrics(…)
      • 1 CopyGridInfo(…)
      • 1 CopyRedistInfo(…)
      • 1 CreateOctree(…)

This progress looks :frowning: because there were failed tasks

Use the report_out attribute of recipe settings to see a full report. (81.1 KB)

I also got an error using your script. I didn’t manage to fully debug it - one thing to watch out for with radiance things though is special characters and whitespaces i.e " ".

Instead I put together an example script that does work for me for you to try. (49.8 KB)

Note offsetting your grid from the surface is very important, I always set this to a small number when doing incident surface tests.

Good luck!

Okay, wow that is cool - this is exactly what I’ve been looking for! Thanks!

1 Like

Thanks for solving the issue, @charlie.brooker .

I just wanted to clarify that we’ve tried to weed out any issues related to white spaces " " in the LBT plugin. So, if you find any cases that fail because of this, let us know since it’s a bug and we will make sure that Radiance can still run with the white space in the file path.

It looks like the original failure in this case didn’t have anything to do with white spaces but rather @MagnusRathenborg tried to run the annual-irradiance recipe for a nighttime hour, which is always going to be 0 and so the recipe will just fail. But just let us know if you think we’re wrong and there’s a bug to fix here.

1 Like