Changing the type of a surface manually



Hello all!

I am writing my master thesis on innovative building performance simulation software and how useful they are in architectural design. As I am trying many different geometrical configurations, I have a problem regarding a single surface that is marked as “ceiling” by Honeybee’s Adjacency module , while it should be an outdoor “roof”. Is there anyway I could change its type manually or tweak the settings of Adjacency module so it gets it right?

Thanks in advance!


P.S. GH file is attached.


Hi Ehsan

You need to decompose your brep using the Grasshopper debrep component and then set the surface type for each surface using the Honeybee srfType_ component.

You can then join it all back together again using the Honeybee_createHBZones component.


Hi Ehsan,

Anton’s suggestion should solve your issue. The issue happens because Honeybee fails to figure out the adjacencies correctly. Do you really need the geometry to be this complex? EnergyPlus will probably take a good amount of time to run the analysis for this geometry.


Honeybee can handle complex geometries but EnergyPlus is not designed to handle a lot of faces. Watch this video for an example of complex geometry. Should be good to see the output of your work.



I have a question regarding manually solving adjacencies too.

I have modeled a tall building and have only selected two levels (second to top and 1st floor) so the geometry does not directly sit on top of each other/touch.

The assignment of materials is correct however the floors and ceilings/roofs are “external/outdoor” elements. Which is understandable if I get rid of the rest of the levels. I have used the solve adjacency component.

However if I want to keep the geometry where it is, is there a way I can manually make the ceiling of lets say zone x be surface matched with the floor of zone x so I can understand how the heat transfer between zones? I would like to do this as in a tall building most floor are essentially the same. I also do not want to just make the surfaces adiabatic because I want to understand the heat transfer.

Many thanks,


Hi @SandiSirikhanchai,

Honeybee doesn’t explicitly support changing the adjacent surfaces from the interface. However you can use Python and overwrite the boundary condition and the adjacent surface. I believe it should work fine.

A question to ask before making these changes is do you really have temperature difference between the zones? Specially if they are both conditioned and the form doesn’t change then most likely the temperature in both zones are pretty similar which means there won’t be any heat transfer regardless of the materials. If that’s the case then Adiabatic surfaces are just fine.

Finally, speaking of modeling high-rise towers in EnergyPlus you can use the Multiplier option but be aware of the possible large error which you can see in the first table on this page.


Hi Mostapha,

Thank you for your response.

Many thanks,