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:
image

1 Like

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


image

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!

http://www.passivehousetools.com/

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!
-trevor

2 Likes

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:

2 Likes

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.
best,
@edpmay

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:

https://www.ladybug.tools/honeybee-energy/docs/honeybee_energy.construction.opaque.html#honeybee_energy.construction.opaque.OpaqueConstruction.thickness

We just need a method on room.energy.properties 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.

4 Likes

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:

room.properties.energy.floor_area_with_constructions('Meters')

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

3 Likes

@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.

8 Likes

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.

Thanks,
-A.

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:

2 Likes

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

1 Like