Question-and-Answer Resource for the Building Energy Modeling Community
Get started with the Help page
Ask Your Question

Revision history [back]

click to hide/show revision 1
initial version

There are two basic paths here in EnergyPlus:

  1. Use the simple ZoneVentilation objects to apply ventilation to your zone when it's hot (by far the simplest option)
  2. Use the AirflowNetwork to try to better account for interzonal airflow etc.

As Denis notes, there are a lot of uncertainties in ventilation modelling regardless of what you do, and to be honest one of the first things you'll need to accept is that whatever you do your modelled ventilation will be "wrong", whether due to the inaccuracies in the calculations or the uncertainty in occupant behaviour. The only thing you can do is try to manage this with sensitivity analysis, and factor this into your analysis.

Both of these work on the setpoint system, and will apply ventilation/open the windows when the temperature rises above your setpoint. I'm not sure why you're finding that the windows are only opening in winter - possibly if you're running the humidity control EMS example then with your weather file it's only hitting the humidity setpoints in winter?

Anyway, if you are wanting to use the AirflowNetwork then looking at the use of the EMS is advisable, because the AFN's basic window controls are terrible.

In brief, the window opening control logic of the AFN is deeply flawed and is prone to both overcooling and runaway overheating. This is because EnergyPlus has no good way of determining how much ventilation is needed, and how much the windows should be opened, other than toggling them open and closed each timestep. Rooms with significant ventilation potential – such as spaces with sliding doors and cross-ventilation – can readily achieve very high air changes (e.g. >70ACH) in windy conditions. If this happens when the air outside is relatively cold, this can cause the zone temperature to plummet rapidly and fall below the heating setpoint (more likely to occur when the setpoint is relatively high such as 20°C). At which point, the heating is turned on, the temperature rises again, and as the conditions that caused the overheating in the first place still exist the ventilation setpoint is reached and the windows open again, causing the model to bounce between heating and ventilating. EnergyPlus attempts to control window opening by allowing opening area to scale based off the difference between indoor and outdoor temperature, reducing window opening area when the outdoor temperature is significantly lower than the indoor.

The main tool EnergyPlus uses to try to scale window openings is the window opening factor. The stated intent of this parameter is to try to prevent excessive temperature swings by reducing the window opening area if the difference between the indoor and outdoor temperatures is large. The problem is that ΔTin-out doesn’t actually make any sense as a window control parameter, and this becomes obvious when you think about it and realise that you can increase ΔT by increasing the indoor temperature. In other words, the worse it’s overheating, the less E+ wants to open the windows – which can potentially lead to an issue where if the ventilation isn’t strong enough to keep the temperatures down, then the rising temperatures will cause to model to reduce the ventilation causing runaway overheating. The issue is that just comparing the indoor and outdoor temperatures says nothing about how hot it is inside, or how cold it is outside. If Tin = 30°C and Tout = 20°C then this is very different to Tin = 24°C and Tout = 14°C. ΔT = 10°C could indicate that it’s really hot inside and we need to open all the windows wide to get rid of the heat, or it could indicate that it’s cold outside and we won’t need to open the windows much to get effective cooling going, or anything in between. The amount you need to open the windows to get decent ventilation going will also vary significantly between zones depending on factors such as the number of openings present, and this system provides no way of accounting for this other than manual tuning, which is clearly impractical if you’re making multiple models.

Some modellers set the ventilation settings so that the “windows” will not open if the outdoor temperatures are below, say, 10°C. The problem with this is that it a) does not necessarily reflect actual behaviour, and b) ignores the risks of winter overheating. Studies of window opening behaviour indicate that people may open windows even at very low outdoor temperatures – even sub-zero (Bauer et al., 2021). Assuming that for example, people would suffer 30°C temperatures inside and not open the windows to fix that just because it’s cold outside seems questionable . Winter overheating is also not just a theoretical concern – a study of low energy houses in Scotland for instance found significant winter overheating (Morgan et al., 2017).

Thus, we need custom window opening controls using the EMS. The system I use currently works as follows:

  • Scale the window opening fraction between an upper and lower temperature bound (e.g. 22-24 degrees) ala. UK Part 0. In theory, this allows the window opening size to essentially dynamically adapt to the conditions to try to keep the temperature between these bounds, rather than throwing everything wide open as soon as you go over the ventilation setpoint.
  • However, a simple linear window scaling function may still be too aggressive and produce overcooling. The simplest solution I've found is to instead use a curved function with a power of 3.
  • Has the internal doors open whenever either of their adjacent zones is ventilating.
  • As a final catch to deal with the few remaining minor heating/ventilation clashes, I have another program that disables the heating for a couple of timesteps after the windows are opened.

Technically you can simplify this if you're just wanting to look at summer overheating, and don't care about managing overcooling, but if you're doing a full annual simulation this is probably what's needed to be safe. If you are interested in this, I wrote up my working on implementing EMS AFN controls a while back here: EMS_ventilation.pdf.

See also https://unmethours.com/question/97667/how-set-infiltration-rate-ach-in-afn-model/#97951 for setting simple infiltration rates in AFN models.