CIBSE TM59 - Grasshopper Workflow

Hello everyone,

I am looking to put together a workflow in Grasshopper/PO/Ladybug/Honeybee for CIBSE TM59 and TM52 calculations. I’ll start with TM59, as this is simpler than TM52. The criteria are (reinterpreted somewhat):

1. % of occupied hours, between May and September, that each room exceeds DT>0.5deg, where DT = Operative Temp – (Neutral Temp + Neutral_Offset) should not exceed 3%.**

So for this, I need to sum all of the hours of the year that a room exceeds DT=0.5, then divide by the total occupied hours.

2. For bedrooms only, the operative temperature shall not exceed 26degC for the hours between 10pm and 7am (i.e, sleeping hours) for more than 1% of annual hours- which is 32 hours.

First I need to be able to check whether the room is a bedroom or not. I have created Programs that refer to bedrooms so these could be used for this check. The operative temp would then need to be checked for each hour between 10pm and 7am, and a tally made of those hours exceeding 26degC.

3. Circulation areas/corridors- this is an additional test, largely designed for apartment blocks. The operative temperature should not exceed 28degC for more than 3% of annual hours (total).

This requires a check on whether a room is a circulation space or not. Again- could use the room template to denote this.

Finally, I want to be able to visualise the above in terms of the numerical result, but also a pass/fail.

I attach my Grasshopper workflow so far. Could the above be achieved with existing components?


TM59 (93.1 KB)

Hey @chriss ,

I just wanted to apologize for the late response. It has been a busy week with the LBT 1.5 release but I plan to get back to you with some Grasshopper samples. I’ll get you these by next Monday at the latest.

No problem Chris, thanks for the update. Appreciate you’re busy!

Hey @chriss ,

Here is a sample Grasshopper file that does all 3 of your criteria for you:

TM59 (101.0 KB)

All that you need to do is get your relevant simulation from Pollination using the “Check Job Status” component and then set your other criteria like the names of the bedroom/circulation programs or the threshold of occupancy fraction at which point an hour is considered occupied.

On the right side of the script, you will see the unacceptable percentage of time for each relevant room along with a boolean noting whether the room passed:

Hope that helps and let me know if you have any questions.


Wow. Thanks so much Chris, this looks amazing. Looking forward to working through it! Will let you know how I get on.

1 Like