NREL / OCHRE

A Python-based building energy modeling (BEM) tool designed to model flexible loads in residential buildings
https://www.nrel.gov/grid/ochre.html
BSD 3-Clause "New" or "Revised" License
31 stars 1 forks source link

Interesting results #127

Open curiotrope opened 3 weeks ago

curiotrope commented 3 weeks ago

Hi! I'm not sure this is an error, but I wanted to run it by you anyway. I'm running some models of a home heated by heat pump at different backup strip heat cutout temperatures, and the results I got are not what I was expecting.

Background: Basically, I took the same model and ran it through OCHRE using a cutout temperature of 40degF, 32degF, and then 25degF. The backup strip heat does indeed come on when the outdoor temperature hits those cutout temperatures, as expected. What was odd, however, was the indoor temperature. As the outdoor temperature dropped below about 20degF, the HVAC system had trouble meeting the 68degF indoor setpoint, and the indoor temperature started to drop. To be fair, the model obviously has some unmet load, as I was getting a similar result by running the model in beOPT.

What I thought was weird is that the 40deg cutout run had a harder time meeting the indoor setpoint than the 25deg cutout run. Why would the indoor temperature drop more for a model where the backup heat cuts on earlier and longer? Does this mean that the backup heat is undersized, or that the heat pump meets the HVAC load more easily? What do you think? I'd love to discuss!

I'm attaching the graph of the outputs. The other files I have are either too big or the wrong file type to attach. If you email me, I can try to send more. StripHeatGraphs

. Here is the OCHRE code I used:

import os import datetime as dt from ochre import Dwelling from ochre.utils import default_input_path # for using sample files

Modeling home that meets 2018 IECC, 40degF cutout temperature

house = Dwelling( start_time=dt.datetime(2023, 1, 1, 0, 0), time_res=dt.timedelta(minutes=1), duration=dt.timedelta(days=31), hpxml_file =os.path.join(r'C:\Users\cstone\OneDrive - Advanced Energy Corporation\Desktop\Projects\Flexible_Demand\OCHRE\DR_Standards_Comparison_2018NC_Ctrl.xml'), schedule_input_file=os.path.join(r'C:\Users\cstone\OneDrive - Advanced Energy Corporation\Desktop\Projects\Flexible_Demand\OCHRE\schedules.csv'),
weather_file=os.path.join(r'C:\Users\cstone\OneDrive - Advanced Energy Corporation\Desktop\Projects\Flexible_Demand\OCHRE\USA_NC_Raleigh-Durham.Intl.AP.723060_TMY3.epw'), verbosity=9, Equipment={ 'HVAC Heating': { 'use_ideal_capacity': True, 'show_eir_shr': True, 'Supplemental Heater Cut-in Temperature (C)': 4.44, }, }, )

df, metrics, hourly = house.simulate()

Modeling home that meets 2018 IECC, 32degF cutout temperature

house = Dwelling( start_time=dt.datetime(2023, 1, 1, 0, 0), time_res=dt.timedelta(minutes=1), duration=dt.timedelta(days=31), hpxml_file =os.path.join(r'C:\Users\cstone\OneDrive - Advanced Energy Corporation\Desktop\Projects\Flexible_Demand\OCHRE\DR_Standards_Comparison_2018NC_Ctrl.xml'), schedule_input_file=os.path.join(r'C:\Users\cstone\OneDrive - Advanced Energy Corporation\Desktop\Projects\Flexible_Demand\OCHRE\schedules.csv'),
weather_file=os.path.join(r'C:\Users\cstone\OneDrive - Advanced Energy Corporation\Desktop\Projects\Flexible_Demand\OCHRE\USA_NC_Raleigh-Durham.Intl.AP.723060_TMY3.epw'), verbosity=9, Equipment={ 'HVAC Heating': { 'use_ideal_capacity': True, 'show_eir_shr': True, 'Supplemental Heater Cut-in Temperature (C)': 0, }, }, )

df, metrics, hourly = house.simulate()

Modeling home that meets 2018 IECC, 40degF cutout temperature

house = Dwelling( start_time=dt.datetime(2023, 1, 1, 0, 0), time_res=dt.timedelta(minutes=1), duration=dt.timedelta(days=31), hpxml_file =os.path.join(r'C:\Users\cstone\OneDrive - Advanced Energy Corporation\Desktop\Projects\Flexible_Demand\OCHRE\DR_Standards_Comparison_2018NC_Ctrl.xml'), schedule_input_file=os.path.join(r'C:\Users\cstone\OneDrive - Advanced Energy Corporation\Desktop\Projects\Flexible_Demand\OCHRE\schedules.csv'),
weather_file=os.path.join(r'C:\Users\cstone\OneDrive - Advanced Energy Corporation\Desktop\Projects\Flexible_Demand\OCHRE\USA_NC_Raleigh-Durham.Intl.AP.723060_TMY3.epw'), verbosity=9, Equipment={ 'HVAC Heating': { 'use_ideal_capacity': True, 'show_eir_shr': True, 'Supplemental Heater Cut-in Temperature (C)': -3.89, }, }, )

df, metrics, hourly = house.simulate()

jmaguire1 commented 2 weeks ago

Hi @curiotrope!

That's pretty interesting, and not what I was expecting! Could you either attach the input files (xml, schedule, and weather, and if you have a BEopt project that'd be helpful too) or email them to me at Jeff.Maguire@nrel.gov?

Definitely want to take a closer look into what exactly is happening here!

mnblonsky commented 2 weeks ago

I would assume this means that the HP capacity is larger than the ER capacity somewhere in the 25-40F range. I believe we output both of those values if verbosity >= 6. The ER capacity is constant and equal to the power consumption. The HP capacity varies with temperature, and should drop below the ER capacity at some point.