Question on Annual Daylight Recipe(DC Grid Base Daylight Recipe) and Annual Radiation Recipe

Hi @mostapha and @sarith,

I was trying to get my head around for the 2-phase simulation method in HoneyBee+ for the annual daylight recipe and annual radiation recipe. After reading the DC simulation part of Daylighting Simulations with Radiance using Matrix-based Methods and some code in HoneyBee+, I have some understanding and also some questions that would like to get some comment and help if possible.

  1. If I understand it correctly, the Annual Daylight Recipe and DC Grid Base Daylight Recipe are the same in current HoneyBee+. Both of them are 2 phase simulation, am I right?

  2. The Annual Daylight Recipe is following the equation in the Daylighting Simulations with Radiance using Matrix-based Methods, which is
        total daylight = Cdc*S - Cdcd*Sd + Cds*Ssun
    If I could, I would like to translate the equation into daylight language for the following discussion:
        Cdc as total scene, = black scene + reflect scene
        S as total sky, = direct sky + diffuse sky
        thus, Cdc*S = black scene * direct sky + reflect scene * direct sky + black scene * diffuse sky + reflect scene * diffuse sky
        together with other parts of the equation, total daylight = black scene with sun only * sun + reflect scene * direct sky + black scene * diffuse sky + reflect scene * diffuse sky
    The reason for all these calculation, is to replace the black scene * direct sky with black scene with sun only * sun, to improve accuracy. Please correct me if this is wrong.

  3. For the annual radiation recipe, I see the equation is
        total radiation = (black scene + reflect scene) * diffuse sky + black scene with sun only * sun
    My understanding for this part is, different from illuminance, radiation is not reflected by other surfaces, so that the (reflect scene * direct sky) part should not be included.
    Then my question here is, shall we use black scene for the diffuse sky instead of total scene to remove the (reflect scene * diffuse sky) part, as reflection is not contributing to radiation?

I hope I made myself clear and I appreciate your help in advance.


Hi @Bing, Thank you for posting these questions. I reply as much as I remember. This is a great time to discuss this topic since I’m in the process of converting them to Queenbee recipes.

They are! The main reason for having a separate component for annual daylight was because that’s how the users will try to find it. I feel I put a limitation for the annual daylight but I don’t remember right now.

  1. Have you seen this and this? Let me know if you have more questions after reading those links.

  2. It’s up for debate. We did choose to go with the adjusted approach to make the radiation study faster. Also as you said the contribution of reflection in most to radiation studies in most cases is minimal.

Thanks Mostapha for your quick reply.

  1. Thanks for confirming.

  2. I read both of your post and it seems confirming my understanding:

  • splitting scene is possible for daylight calculation. This means we can split total scene with black scene to get the direct scene only, which is my assumption here:
    Cdc = black scene (direct only, ie Cdcd) + reflect scene
  • However, I was not able to abstract a answer from your post here Daylight simulation with Honeybee[ ] vs Honeybee Legacy part 1. I understand calculating analemma is an improvement than DAYSIM calculation of sun position. But I was not able to figure it out why we need to subtract Cdcd*Sd
  • My question is still: can Cdc*S be broken into 4 parts as black scene * direct sky + reflect scene * direct sky + black scene * diffuse sky + reflect scene * diffuse sky?
  1. Understood the radiation study is under debate. In fact I agree on the approach to remove reflection part, because the solar radiation will be absorbed and then re-radiate out via long-wave instead of short-wave. Just suggesting if we can removing reflection, it make sense to remove reflection from diffuse as well, which will be just using black dc matrix instead of dc matrix.

Hi Bing,

on your 2 •• question “However, I was not able to abstract a answer from your…”,
the reason for the subtraction is so that the direct (sun) contribution will not be counted twice. There are direct contributions from a tesselated sky (skydome patches corresponding to sun’s position) as per the daylight coefficients scheme, and then there are direct contributions as per the analemma scheme. Only the latter are accounted for by this calculation method. The best person to explain this would be @sarith i guess.


Thank you Iason for replying! This is my understanding posted in the original post. I’m glad this match with yours.

In more detail, my understanding is that

  • Cdc = Cdc reflect + Cdc direct
  • S = Sdiffuse + Sdirect


  • Cdc*S = Cdc reflect*Sdiffuse + Cdc direct*Sdiffuse + Cdc reflect*Sdirect + Cdc direct*Sdirect

Then, we are replacing the last part with analemma

  • Cdc direct*Sdirect --> Cds*Ssun


  • Cdc*S = Cdc reflect*Sdiffuse + Cdc direct*Sdiffuse + Cdc reflect*Sdirect + Cdc direct*Sdirect - Cdc direct*Sdirect + Cds*Ssun

Hope this make sense as it help me to understand the logic behind. And also would like to check with the experts here.

@IasonBournas You actually explained it pretty well!!

I think the direct and diffuse terminology that we (, as in me and people who documented these methods initially,) use is somewhat confusing when trying to understand this concept. I accept partial blame for not describing this more clearly in the tutorial and elsewhere.

The figure below pretty much describes all that is going on. Initially we trace rays stochastically to the entire sky dome with multiple bounces. Then we trace rays, again stochastically, to just the patches representing the sun and subtract the result of this simulation from the first one. Finally, we trace rays, this time deterministically, to the solar discs and add the result.

In this equation…

CdcS is a multi-bounce simulation that traces rays to all the sky patches. CdcdSd is a single bounce simulation with same geometry (but black material) that traces to only the patches representing the sun. That is the only difference.
As Iason succinctly explained, the idea is to not count the sun contribution twice while ensuring that we get in the correct values.

I hope this was somewhat clear.


PS: The “diffiuse” and “direct” terms in this description partially owe their existence to the use of glow material for sky patches and light material for solar discs. Glow materials need to be sampled through stochastic ray tracing while light materials are handled deterministically.

Thanks Sarith! This align with my understanding.

Also I start to realise, for daylighting people it is unclear why I want to split the single bounce and multi-bounce, and split the direct sun patch and diffuse sun patch (if I could). As you stated, subtracting the direct patch and replace with more accurate sun position is the target and that is exactly what the calculation is doing. (ie we don’t really need to know what is left after the subtraction)

In fact my understanding serve more for the radiation calculation, whether we want to subtract all reflection for solar radiation calculation, which is the discussion with @mostapha. What do you think about replacing total scene with black scene for the diffuse sky patch, to further subtract reflection from other surface for diffuse radiation?

Hi Bing,

Well, you could just the whole scene to black explicitly when defining the geometry and HBSrfs etc. I am not sure if this warrants a change in the code. Conversely, it makes sense to allow the users to specify non-black geometry and ambient parameters as a means to quantify shortwave radiation.


1 Like

Thanks Sarith. Changing geometry and material from user side make sense as it is a method under debate.

Thanks for all the discussion. Cheers.