Demand-controlled ventilation issue


I am quite new to HB and have an issue to model ventilation that is demand controlled.

In the HBSetSchedule component is written for the ventilation schedule :

"Note that this schedule overrides the typical ventilation that occurs based on the occupancy shcedule and the “ventilationPerPerson.”

So I guessed if we didn’t put a schedule there and specify a minimum airlow/m2 and minimum airflow/occupant, EP would calculate the volume flow rate at each timestep based on the schedule, but it doesn’t seem to work.

Indeed, on the results, I only have a constant airflow that correspond to the maximum of vol/m2 and vol/occ. So I wonder how to use these components to have demand controlled ventilation.

What I really want is have a minimum airflow when the room is not occupied and a bigger one based on the number of occupants when the room is occupied.

I currently have :

outdoorAirRequirement input = 1 (maximum) in SetEPZoneThreshold

ventilation per area = 0.00035

ventilation per occ = 0.01 in set EPZoneLoads

No ventilation schedules input in SetEPZoneSchedules

Hope you can help,

Best regards,


Hi Aurelien,

I would customize the occupancy schedule.

Create a new schedule with the values of the occupancy file with a function that substitute the values=0 (when there is no occupancy) for the amount that you need. You can always calculate this value by inputting a fraction of the ventilation per area or per person, as suits you.

Hope it helps


Edit: keep in mind that the simulation will calculate the ventilation per area/person multiplied by the number of the new schedule (approx to explain it in a simple way, hope Mostapha doesn’t kill me for saying that), so be very careful with the numbers that you put there

customized (19.8 KB)

Hi Julia,

Thank you for your input !

This is approximately the way I am doing it right now but it requires quite a few unit conversions before having the right input and therefore higher risk of making a mistake…

In was therefore wondering if there was a nicer way to do it using the inputs already existing in the different components :slight_smile:

PS : This workflow is quite useful to modify a schedule ! Thanks !


Hi Aurelien,

Unfortunately not that I know/ remember in this moment. Maybe someone else can help you better.

I know the possibilities of mistaking are high. What I do in these cases usually is I check thousands of times with other colleagues and run tests on small boxes to check its fine, and when I’m happy I cluster it, so I don’t change it by accident.

But I’m afraid I cannot help you more, sorry.