Interior Solar Distribution Calculation

Hello All,

I’ve been trying to run an ep sim on a multizone residential model. However, after running the sim the error report I get detects a lot of severe errors stating:

** Severe ** Problem in interior solar distribution calculation (CHKBKS)

** ~~~ ** Solar Distribution = FullInteriorExterior will not work in Zone=ZONE_12

** ~~~ ** because vertex 2 of back surface=ZONE_12_SRF_3_SRFP_3 is in front of receiving surface=ZONE_12_SRF_2

** ~~~ ** (Dot Product indicator=17.7603)

** ~~~ ** Check surface geometry; if OK, use Solar Distribution = FullExterior instead.

I attached my file, thoughts and help are much appreciated! (508 KB)


This error is not actually that severe in terms of the consequences for energy use. Your overall energy use values that you get out of the simulation should still be pretty accurate. However, if you are looking at surface temperatures or sub-zone results, these values will likely not be accurate.

The error results from the fact that you have zone geometry that is concave (or L-shaped to put it more simply) and this means that Energy Plus’s simplified algorithm for ray tracing sun rays from the windows into the zone is not working so well (since some of the rays intersect more than one wall of your zone).

You will notice that, if you run the simulation without interior reflections using the Energy Simulation Par component, that the error goes away. Running the model this way will just use a view factor calculation from the window to the other surfaces of the zone in order to distribute the incoming solar energy to the zone’s surfaces (rather than a sunray tracing operation that will usually put more solar energy into the floor slab).

So, to solve the problem, you can either not look at surface results, run the simulation without interior reflections, or break up your L-shaped zone into two zones with an air wall between them.

I hope that helps.


PS. If we are ever unable to answer E+ questions like this, a good site to post E+related questions is this awesome one that Peter Ellis (the founder of the OpenStudio plugin for Sketchup) put together:

PSS. I got an email about another post that you made about multiZone adjacencies that seems to have gotten lost in the Grasshopper Website system. If you post again, I will write you a response.


I took your 3rd option suggestion and broke the zones up to eliminate the “L’s” which seems to work fine. Although I am a bit worried about the results after simulation. Certain zones seemed to have a lot more total energy gain then they should have. My zone_10 also seemed to have a lot more total solar gain then it should have as well. It’s a zone that has a large glass facade facing south but it’s heavily shaded and not nearly as exposed as the other zones with large glass south facing facades. I’m worried it has something to do with how I applied the air wall. It’s odd because the surface results I’m reading seem really accurate, its the zone results that I’m not confident in. If you have some time to verify I’m not going crazy and that I set up the air wall correctly I’d really appreciate it.


PS: I’ll make sure to direct my E+ questions to Peter Ellis’ site henceforth, thanks! (550 KB)


I took a look at your file. You had so many solve adjacency components in there that I had a hard time figuring out where the air wall is supposed to be. Keep in mind that, every time you use a solve adjacencies component, it will overwrite the previous adjacencies (and constructions of those adjacencies like air walls) unless you set the “remCurrentAdjc” input to “True.” I assumed that these were the zones that you wanted connected with air walls:

I set up the model to correctly simulate the zones in this fashion. There were a number of other errors that I fixed:

  1. You did not intersect the building masses before you turned them into zones. This means that heat flow acorss the interior surfaces will not be modeled correctly. See this video (…)

  2. You did not set up your shade/context geometry correctly. You must use a conext shading component (…). Also, I would highly recommend simplyifying your shade geometry. The shade calculations that E+ uses by default are not that detailed so the little gaps between your louvres are not goung to show up.

On another note, I noticed that these zones are supposed to have different programs but you have assigned them all the same zoneProgram for energy simulation. You might want to at least consider distinguishing your apartment and corridor zones. I know that it is really long but I would really recommend going through this whole series before trying to set up such a complex model:… (514 KB)

Chris thank you so much, and apologies for my novice attempts and messy files. Still getting used to how everything works. I do have one more question though.

In your videos you discuss the glazing by ratio component. For whatever reason, the breakUpDist_ plug isn’t an option for me for that component as it is in your tutorial. Not sure why, I’ve tried updating the file and userobjects but it still doesn’t show up. When I set “breakUpWindow_” to true the component goes red and tells me the breakUpDistance_ isn’t defined. Which I thought was odd because the default is set to true. So the only way I can run the component is if I have the breakUpWindow_ set to false. Any idea why this is?

Again, endless amounts of thanks and appreciation. What’s the best way to go about donating and supporting the progress and continuation of Honeybee and Ladybug?



Hi Aaron,

Ah. This one is my fault. I used the “Update Honeybee” component to automatically bring all of the components in your GH file up to the most recent version (the version that is on our github) but this update method comes with a caveat. If a more recent component has a different number of inputs/outputs or the names of these inputs/outputs are different, the component will fail. This is because the python code inside the component is up to date but the component, as a whole, is not.

I attached a GH file with the correct glazing ratio component, which I updated manually. To get the glazing component that I used in the video, you need to sync with the version of the components on the github.

In order to do this, the process is a bit convoluted these days since Github has stopped allowing automatic downloads but here are the steps for the best way if you don’t plan on updating frequently:

  1. Download a copy of our most recent code to your computer by going here ( and clicking on ‘download ZIP.’

  2. Unzip the file and you should see one folder called userObjects. All of the files in here will be most up-to-date LB userObjects

  3. Delete your old Ladybug+Honeybee userObjects by going to File > Special Folders > User Objects Folder in the GH program window and deleting all of the LB+HB components there.

  4. Drag the new Ladybug userObjects from the unzipped location onto your GH canvass.

Your components are now up-to-date.

Be wary that, if you stay up-to-date with the github, the overall version of the components might not always be as stable as that which we release at the official download link but you will get access to all of the new features that we are building in. This includes things like the breakUpDist_ on the glazing component.

Glad to be of help! Right now, the best way that you can help and support LB+HB is just by spreading the word to your colleagues. The larger the community, the more that we can help each other. Also, testing out the tools and reporting issues is a huge help to us and allows us to find bugs that we would never be able to find on our own. In a few more months, we will be putting together a Wiki and this will include a lot of places for awesome users like yourself to contribute with example files from your projects, videos, and even scientific discussions / research papers that you have found relevant to the project. Lastly, I think we will have a LB+HB T-shirt drive at some point since there seems to be a good demand for this.

Stay awesome,

-Chris (514 KB)