Ventilation rate does not affect the heating energy needs?


I was running an energy simulation with HB and I realized that if I vary the ventilation rate (per person or per floor area) the heating energy needs stayed the same, which does not make sense.

My first guess was that it had to do with the ventilation schedule, but I did not find a ventilation schedule in Honeybee. Does anyone know what can be wrong. I attach the script.

Also I wanted to know if it was possible to include the effect of a heat recovery system in the calculation.

Thanks in advance!


141107 WTC HB.3dm (96.4 KB)
141107 WTC (424 KB)


I have looked through your file and I have not been able to replicate your issue. I ran your zone with the higher ventilation that you manually input and the lower original defaults and I got very different heating load intensities. As expected, the higher ventilation zone has a heating load intensity that is almost double the default. Furthermore, to be sure that the model was being run correctly, I checked the air mass flow rate of air in the mechanical system into the zone that that was also doubled between the low ventilation and high ventilation case.

I attached the GH file that I used to get these results and let me know if you are not able to get the same.

Also, to clarify, the ventilation schedule of the zone will follow the occupancy schedule. When the zone is unoccupied, the ventilation will be governed by the ventilationPerArea_ value and, when the zone has people within it, it will be governed by the ventilationPerPerson_ value.

For your heat recovery question, with the Write_IDF component that you are using here, the mechanical system is always ideal air load, which means that it is not modeling the efficiency of any pumps, fans, coils or any of the things associated with HVAC. The values of heating/cooling energy that you get out of this operation are just the amount of heat that has to be added to or removed from the air of the zone in order to meet the thermostat setpoint (or setback). Accordingly, adding in a heat recovery system here would not be correct since we haven’t modeled the rest of the system.

However, if you use the Export To OpenStudio component instead of the Write IDF component, you can include a fully detailed HVAC system in your model. The last public LB+HB release allowed to you fully model a VAV system or PTHP system in this way. If you use the most recent components on the github, you can use any of the systems in the OpenStudioHVACSystemsList component. I believe that, within the last week, Chien Si (the HB developer who has been bringing in a lot of the systems capabilities) just added in the ability to include a heat recovery system. Mostapha and Chien Si have more knowledge on this than I do but, if they don’t respond here soon, I will post what I find out.

-Chris (777 KB)

Hi Crhis,

The problem has disappeared in the file that you send but for some reason I still have it in my original file. I could not find the source of the error but I guess I can just use your file. Thanks again!


As for the Heat Recovery I thought that a possible workaround to get the heating energy need would be to reduce the ventilation rate accordingly to the efficiency of my HR system. For instance, if I have a HR efficiency of 75%, reduce my airflow rate to a forth of its actual value. This way my heating energy result will take into account the effect of HR, right?


Hi Chris,

I keep having the same problem even using your file. The supply mass flow and the heating demand change when I connect the High ventilation and the low ventilation components that you did, but if I change the numbers in the ventilation per person or ventilation per area boxes it doesnt vary the supply mass flow or the heating demand.


I think that the problem is that even though the simulation is relaunched the EP result file is not replaced when I change the ventilation flow for some reason, so the read EP file component always reads the same file.


I am pretty sure that I know what is happening. If you run EnergyPlus while you have the csv result file open in another program (in excel, for example), EnergyPlus is unable to overwrite the original csv file and so it dumps all results into an eplusout.csv file that is makes next to the open one. Unfortunately, the write IDF component isn’t smart enough to recognize when this happens right now and so it just spits out the file address of the old file.

To fix the problem, go to the folder with the csv result file in it, delete everything in that folder, and re-run the Write IDF component. This time, the file loaded into Grasshopper should have the correct results in it.

As for the heat recovery, the percentage of ventilation seems like an ok means to get an initial estimate of potential heat recovery savings. The savings that you will get this way will probably be a bit on the optimistic side and you really should model out the full system at some point. Also, 75% seems like a really high efficiency and I imagine that you might need a big Delta T between inside and outside air to get such good heat transfer. This might not always be the case for your building throughout the year.



I tried your suggestion of removing the folder that it created under C/Ladybug every time I run a simulation and it still does not work. Furthermore, I can see how the result files are updated for every simulation. The weird thing is every other parameter I change (infiltration, walls composition, occupancy, schedules…) works fine and does have an impact in the results. It is only the ventilation (both per occupant and per area) that doesn’t work.

I have reinstalled the latest version of Ladybug and Honeybee and still nothing. I tried at a colleague’s computer and we still experience the exact same problem. On the other hand it does work well in your computer. I cannot think of any more possible causes.


Thank you for testing this out so diligently. It’s because of devoted users like yourself that we are able to find bugs that we would never find ourselves.

I was able to replicate your error and I’m sorry that this did not happen sooner. The error was actually happening for a couple of reasons reasons:

First, there was a very clear bug in that, while the mechanical ventilation flow rate was being written into the IDF, the HVAC system object in the IDF was not referencing this flow rate. So the HVAC system just resorted to the default flow rate in every case. I have since fixed this error in the WriteIDF component on the gitHub and in the attached version of your GH file.

Second, there was a mistake that I had made when I first put the videos together and wrote the description for the “Set EnergyPlus Zone Loads” component. This is that the units for ventilation input to the component should be cubic meters per second per person (m3/s-person). Not liters per second per person (l/s-person) as I had initially stated. I noticed that, with the numbers you were inputting and the fact that you were using the old component with the old description, you were thinking that the ventilation was in l/s. So, for your project, you should divide your current numbers by 1000. I have put in the components with the right description and the right numbers into your file.

Again, thank you so much for finding this bug and for being patient with us while we fixed it. This was definitely a pretty big one in terms of skewed results that people could have gotten. Let us know if you find anything else that smells like a bug. I haven’t gotten the chance to ask Chien Si the status of his heat recovery into OpenStudio Systems but it seems like you could set one up for the Ideal Air HVAC system with the E+ IDFEditor.

Stay awesome,

-Chris (520 KB)


Thank you so much, it works now! I am glad I could be of help.

About the units you state in the description of the input for the ventilationperarea that normal values range from 0.02 to 0.5 m3/s.m2 That is 20-500 l/s.m2!

I think that what you meant is 0.02 to 0.5 l/s.m2. In Sweden the standard for offices is 0.35 l/s.m2.



Good catch, Alejando.

My description still had a bunch of mistakes in it. I have just uploaded a version to the github with the following descriptions:

ventilationPerArea_: The desired minimum rate of ventilation through the mechanical system into the zone per square meter of floor. Values here should be in m3/s-m2 (Cubic meters per second per square meter of floor). Often, this total value over the zone should be much lower than the ventilation per person (below). Typical values can range from 0.0002 m3/s-m2 for lightly-occupied houses to 0.0025 m3/s-m2 for spaces like laboratories and cleanrooms where dust contamination is a major concern.

ventilationPerPerson_: The desired minimum rate of ventilation through the mechanical system into the zone per person in the zone. Values here should be in m3/s-person (Liters per second per person in the zone). In effect, an input here will mimic demand controlled ventilation, where the ventilation through the mechanical system will change depending upon the occupancy. Most standards suggest that you should have at least 0.001 m3/s for each person in the zone but this may be increased sometimes to avoid odors or exposure to indoor pollutants.


1 Like