LBT 1.6 error in EUI and Load Balance

Dear LBT developers,

I had an energy model which worked fine in LBT 1.5, but after upgrading to 1.6, I get 2 errors:

  1. HB End Use Intensity crashes, with the error ‘global name ordereddict is not defined’.
  2. HB Thermal Load Balance crashes if I connect solar gains to it, with the error ‘none of the data collections could be matched to the input rooms’.

FYI, my versions are as follows:
lbt_gh: 1.6.32
python: 3.7.9
radiance: 5.4a
openstudio: 3.5.1

I simplified my model so it takes less time to replicate the problem. Would be great if you have a chance to look into this. Thanks.

All the best,
Farhang (96.9 KB)

Hey @farhang.tahmasebi ,

This error doesn’t have quite as much to do with the change in LBT version but rather the IronPython that Rhino is using. I think some people might have gotten this issue as a result of Revit’s IronPython interfering with the one that Rhino uses.

Did you install Revit on your machine (or anything else using IronPython)? If not, what version of Rhino are you using and are you on Windows or Mac?

Thanks @chris for getting back to me on this. Here what I can say:

  • I’ve never installed Revit, but I am not sure if anything else uses IronPhyton. But I can say I am literally using no other plugins than those of yours (this time installed via your one-click installer).
  • Rhino 7.27.23032.13002, 2023-02-01
  • This happened on my Mac, but my student with a PC had the same issue with HB Thermal Load Balance component (but as I remember not with HB End Use Intensity).

Please let me know if I can provide any more detail on the problem.

Thanks again,

Hey @farhang.tahmasebi ,

I am really sorry that I should have done a better test when you first reported the issue. You are right that it is a bug that was introduced 2 years ago in this PR. The bug only affects people using Mac, which might explain why we have not seen it until now. It looks like there was just a missing import statement for OrderedDict. I just added this in via this PR:

Long story short, if you update by using the LB Versioner, you should get the fixed component on your end.

The issue that your student experienced with the HB Thermal Load Balance component must have been with a very old version of the LBT plugin since I can’t see any way that the error would have happened with LBT 1.6 and the code used by that component.


Thanks @chris for chasing this.
But I just checked HB Thermal Load Balance from LBT 1.6.51 on a Mac and still connecting solar gain to the balance crashes the component. Anything I can do to help you diagnose the bug on Mac?


Hi @farhang.tahmasebi ,

Ah, sorry that I missed seeing that you were trying to report two separate bugs in a single topic. In the future, it’s likely better to open two separate topics when this happens.

In any event, I opened your original file and I could see that the solar data could not be matched whenever you connected individual Honeybee Rooms to the _rooms_model input of the HB Thermal Load Balance component. It looks like this happened because EnergyPlus introduced a concept of Spaces as distinct from Zones in their last release. You can get around it if you connect the whole Honeybee Model to the _rooms_model input. The fact that it works for the whole Model is probably why we have not noticed the issue until now because it’s usually recommended that you connect the whole Model unless you’re trying to understand the load balance of a particular subset of Rooms.

I have a fix ready for the case that you connect individual Rooms:

But, for now, just connect the Honeybee Model object instead of the Room object and it will work.

Thanks for reporting the issue!

1 Like

Hi y’all, sorry to jump in on a solved issue, but I’m running into the same thing, both before and after updates using the LB Versioner.

I wondered if deploying it via the published fix on GitHub (instead of the LB Versioner) might work for some reason, but I’m not sure what to do with the Source folder once it’s unzipped. I’m sure that’s just ignorance on my end, but any help/guidance you can offer would be greatly appreciated. Thanks for all of your hard work on this fantastic tool.

Hi @Harrison ,

The component with the fix will have a version number of 1.6.1 (or greater).

After running the LB Versioner, you will have to drag/drop a new component with this version onto your canvas since the 1.6.0 component is not updated automatically in your older Grasshopper definition. Or you can use the LB Sync Grasshopper File component to automatically sync all of the components on your Grasshopper canvas with the version installed in your toolbar.

1 Like

Oh man, total facepalm moment on my end! Thanks, Chris – that fixed it right up.