Keep getting negative illuminance value and strange UDI output in Honeybee

Hello everyone! I have encountered a big problem in Honeybee. When I tried to run an annual daylighting simulation, I kept getting negative illuminance in some sensors for certain moment. For UDI metric, If I set the lower threshold to be 0, the upper threshold to be 3000, I would get a positive value for UDI(<0 lux), which is totally strange. Any good suggestions? Thanks a lot !!!

One of my friend thinks that the way I create the room might cause the problem. Because I use the honeybee room rather than honeybee face. In my opinion, if I want to run thermal analysis at the same time in the future, it’s better to follow the same creating method.

The relevant rhino file and gh file are attached below. Please help me with it!

Hi @threegreen,

The enhanced two phase method Honeybee Radiance uses for annual daylight simulations can result in some negative values due to the nature of the calculation. Higher accuracy simulation settings typically reduce the extent of negative values.

Some details here

【Another problem】

Hello Charlie! @charlie.brooker This really helps a lot. When I set a better radiance parameter, the negative illuminance just disappeared! However, the strange UDI output remains. As you can see from the image I posted at the beginning of the topic, I defined the lower threshold of UDI to be 0 lux. In the output(UDI_low),you can still see readings of UDI(<0 lux). This problem remains when I have already set a better radiance parameter, which is really confusing.

Hi @threegreen, I’m not sure if -lt is < or <=, if it’s the later then any 0 values would count towards UDI low - @mikkel do you have any thoughts?

Hi Charlie! I examined the annual illuminance values and found out that UDI_low counts the 0 values. Thanks a lot!

@charlie.brooker By the way, is there any way that I can see the definition scripts of UDI_low in the honeybee?

Double clicking any component will show you the python code being used to generate the outputs.

You can also access that through the Primers by clicking source code on this page

After that it gets a bit more complicated to follow as HB uses a cli command to process the daylight results

If I’ve read the code correctly, line 205 here is where the udi lower calc is defined.

@charlie.brooker Hi Charlie!I have read the scripts. It shows that UDI_low consists of two part. One part is < min_t, not ≤。 Another is sun_down_hours. Why there is a sun_down_hours?

And also, from the scripts, I do not understand how the sun_down_hours is caculated. When is the time for sun down?

This deep into the code your reading of it is as good as mine, Mikkel was the last person who edited it - I’ve tagged in him this chat so I expect he might come to it next week to clarify.

Hi @threegreen and @charlie.brooker,

The UDI_low issue is because all the occupied sun down hours are added even if the threshold is 0. If you update your core libraries with LB Versioner you should be able to get the fix.

The sun down hours are all the hours of the simulation period where the sun is down. The illuminance is not calculated for these hours; only the sun up hours are saved. The occupied sun down hours are all the sun down hours within your occupancy schedule. These hours (illuminance = 0) will always be below the minimum threshold, which is why the number of occupied sun down hours are added to the calculation of UDI_low.

1 Like

Hi @mikkel,
This really helps a lot! I have one more question. Can UDI_low consist of only one part, which is < min_t ? I think if occupancy schedule is input first, it seems that the UDI_low only has to calculate the part lower than the threshold.