I have a small office model using ZoneHVAC:IdealLoadsAirSystem with ThermostatSetpoint:DualSetpoint. The cooling and heating setpoint schedules are defined with identical timing:
Schedule:Compact, HTGSETP_SCH, Temperature, Through: 12/31, For: Weekdays, Until: 06:00, 0, Until: 22:00, 21, Until: 24:00, 0, ...
Schedule:Compact, CLGSETP_SCH, Temperature, Through: 10/31, For: Weekdays, Until: 06:00, 40, Until: 22:00, 24, Until: 24:00, 40, ...
Both schedules use the same Until: 06:00 and Until: 22:00 boundaries. However, when I check the hourly output (DistrictHeating and DistrictCooling), I consistently see the following pattern across the entire simulation year:
Heating load: starts at the 07:00 row, ends at the 22:00 row
Cooling load: starts at the 06:00 row, ends at the 21:00 row
In other words, the cooling load appears to start and end exactly one hour earlier than the heating load, even though both setpoint schedules have identical time boundaries.
I verified this across all weekdays in the heating season (Jan-Apr, Nov-Dec) and cooling season (May-Oct):
- Heating: 90 days start at hour 7, 86 days end at hour 22
- Cooling: 20 days start at hour 6 (peak summer), most others start at hour 7 or later due to mild outdoor conditions
My questions are:
- Why does the cooling load consistently appear one hour earlier than the heating load despite identical schedule boundaries?
- Is this expected behavior in EnergyPlus, or does it indicate a modeling issue?
EnergyPlus version: 24.1.0



