Can Honeybee compute Treated Floor Areas (TFA)?

Several building standards (incl. Passive House and Building Code of Australia) require the Treated Floor Areas (TFA) of rooms as an input. TFA is the floor area excluding the finished exterior/interior walls.

Assuming that the boundaries of my HB zones represent the outer boundary of external walls and the center lines of interior walls, and considering that Honeybee knows the thicknesses of all constructions, is there a way to automate the calculation of TFAs per room?

From the Building Code of Australia:

1 Like

From what I understand, @edpmay will likely know a bit more explicitly, but in the EnergyPlus I/O:


From What I understand: Where as we with the PHPP doing Passive House stuff; use the external surface for the ‘brep’ of a building.

WIth E+ using ‘0 thickness walls’ recommending centerline placement for interior; there’s a probability that there is going to be a bit of a disconnect from value of your TFA in the PHPP and an E+ model.

I’m probably not the best person to give a really good answer on this but Ed’s made some really cool tools for LBTools ==> PHPP9 so you can get your dynamic detailed E+ model and your PHPP model from the one mode:
So you lets say: drop your building’s floor plan dwg’s in Rhino; use the external line for exterior surfaces; internal wall centerlines for E+ then with LBT2PH can do your TFA actual off the inner room wall srfc lines; then have both!

with them I know you can create your HB rooms, then apply the TFA surface and params for pushing into the PHPP with the correct (for PHPP) TFA and Vv

hope there’s somthing in all that that helps!


Thanks @TrevorFedyna,

Yes I’ve checked out @edpmay’s tool and it’s great, since it gives you different options to define TFA, the most accurate one of which is to draw the boundaries directly.

I was just hoping to have an automated way that is more accurate than just assuming a fraction.

I have in the past been able to parse Honeybee zones in Python, iterate through their surfaces and access those surfaces’ properties. I’m sure one can also access constructions and therefore wall thicknesses, which would allow the automated creation of offsets to estimate quite accurately what the TFA is.

I just haven’t had the time to do so yet, but could imagine that @edpmay is planning to develop something like this anyway? :sweat_smile:


Hi @MaxMarschall

Thats a great question. Right now, when we have to use TFA, we end up drawing all the spaces/floors and assigning TFA ‘weighting’ factors to each floor plate. It’s laborious and silly for sure. Several folks have inquired about more ‘automatic’ solutions for this though (as well as more procedural tools/solutions for PHPP spaces in general), and so it’s certainly on our list for inclusion in future versions.

At the moment though, drawings those floors is the best option I’d say.

Thanks Ed for the clarification. Looking forward to that feature in future releases!

Thanks for everyone’s answers here. We have an open issue to add support for this using the EnergyPlus contructions:

It should not be much work to implement given that almost every LBT Honeybee Construction object has a thickness property like you see here:

We just need a method on that loops through the Room faces, grabs all of the walls, and subtracts the thickness * horizontal face length for all of the exterior walls (and 1/2 that for the interior walls). So, if someone sends a PR for this, I would gladly review and merge. Otherwise, I will get to it eventually.


Just bumping this one back up to the top :sweat_smile:

Would be a really useful feature! I’m actually surprised that not more people have asked for it.

1 Like

This was quick enough to add to the core libraries:

I have to say that I’m also surprised by how different the floor area is when you account for the wall thickness. So I can see your point, @MaxMarschall .

I will add a component to the LBT Grasshopper plugin that exposes this method soon. In the meantime, you can access it using this method in the honeybee-energy library:'Meters')

You might just have to replace 'Meters' with the units system of your Rhino model.


@edpmay :smiley: ooo big excite!

1 Like

The component has been added:

It’s called “HB Geometry Properties” and it will give you a few pieces of useful geometry attributes about your Rooms and Models:

Just note that the floor area calculation with EP constructions assumes that all NoMass materials have zero thickness and many of the insulation layers in the default honeybee standards library are represented with these NoMass materials. So the floor area may actually be smaller unless you have modeled the insulation layers with detailed opaque materials.


Thats indeed a very useful component @chris. Thank you !

Hi @chris,
Most of the attributes the new component shows can already be exposed with the ColorRoomAttr and LabelRooms components.
Is it possible to add the one missing attribute, floor_ep_constr, to those? It will be useful as well to have it there.


1 Like

Hey @AbrahamYezioro ,

I was originally trying to implement it like that but I realized that there’s no reliable way to do it given that the geometry can be in a few different units systems (meters, millimeters, feet) but the construction thickness is always in meters. So, unless I know the units of the Rhino model, I can’t accurately compute this value. So this is why I had to add a function to compute it (instead of adding a property) and why there’s a whole new component for it instead of using the existing ones.

If you just need a “Color Room” visualization with these floor areas, you can use the “LB Create Legend” to build one pretty easily:


Thanks for the explanation @chris ,
Makes sense completely. I was just wondering.

1 Like