Skip to content

Advanced research feature: Latent degradation model (including blower-off delay)#2182

Open
shorowit wants to merge 19 commits intomasterfrom
blower_off_delay
Open

Advanced research feature: Latent degradation model (including blower-off delay)#2182
shorowit wants to merge 19 commits intomasterfrom
blower_off_delay

Conversation

@shorowit
Copy link
Copy Markdown
Contributor

@shorowit shorowit commented Mar 24, 2026

Pull Request Description

Adds EMS program for blower off delay/latent degradation model, as described in Understanding the Dehumidification Performance of Air-Conditioning Equipment at Part-Load Conditions.

TODO:

  • Continuous fan mode?
  • Test multiple HVAC systems
  • Test multiple dwelling units
  • Test unit multiplier
  • Test subhourly timesteps
  • Verify results (magnitude?)
  • Skip EMS program if blower off delay == 0? No
  • Exclude non-central systems (e.g., room ACs; MSHPs?)
  • Add "latent degradation" to HPXML input?
  • Suggest only using the model when modeling humidity control (dehumidifier)?
  • Replace NLR publication with FSEC publication for reference
  • Better document code @jonwinkler

Checklist

Not all may apply:

  • Schematron validator (EPvalidator.sch) has been updated
  • Sample files have been added/updated (openstudio tasks.rb update_hpxmls)
  • Tests have been added/updated (e.g., HPXMLtoOpenStudio/tests/test*.rb and/or workflow/tests/test*.rb)
  • Documentation has been updated
  • Changelog has been updated
  • openstudio tasks.rb update_measures has been run
  • No unexpected changes to simulation results of sample files

@shorowit shorowit self-assigned this Mar 24, 2026
@shorowit shorowit added the enhancement New feature or request label Mar 24, 2026
@shorowit shorowit moved this from Triage to In progress in OpenStudio-HPXML Mar 24, 2026
Copy link
Copy Markdown
Collaborator

@bpark1327 bpark1327 left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@shorowit I went through Jon’s code and the EMS program and spotted a few differences, so I wanted to document them.
Jon's code: energyplus.py

Comment thread HPXMLtoOpenStudio/resources/hvac.rb Outdated
Comment thread HPXMLtoOpenStudio/resources/hvac.rb Outdated
Comment thread HPXMLtoOpenStudio/resources/hvac.rb Outdated
Comment thread HPXMLtoOpenStudio/resources/hvac.rb Outdated
shorowit and others added 3 commits March 26, 2026 16:31
…HPXML into blower_off_delay

# Conflicts:
#	BuildResidentialHPXML/measure.xml
#	HPXMLtoOpenStudio/measure.xml
@jonwinkler
Copy link
Copy Markdown
Collaborator

The implementation (and the original implementation) has lot of equations/assumptions but very few comments. Would it be helpful for me to consult the original reference and add comments to the code so we have a better understanding for where these calculations/assumptions originate from?

Comment thread docs/source/workflow_inputs.rst Outdated
Comment thread docs/source/workflow_inputs.rst Outdated
@shorowit shorowit marked this pull request as ready for review April 3, 2026 21:21
jonwinkler and others added 3 commits April 7, 2026 15:05
…HPXML into blower_off_delay

# Conflicts:
#	BuildResidentialHPXML/measure.xml
#	HPXMLtoOpenStudio/measure.xml
Copy link
Copy Markdown
Contributor Author

@shorowit shorowit left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Some walk-thru comments.

Comment on lines +10 to +12
"Latent Degradation Model w/ Blower-Off Delay, 0 sec" 0
"Latent Degradation Model w/ Blower-Off Delay, 45 sec" 45
"Latent Degradation Model w/ Blower-Off Delay, 90 sec" 90
Copy link
Copy Markdown
Contributor Author

@shorowit shorowit Apr 13, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Added three "advanced feature" options for the BuildResidentialHPXML measure.

Comment thread docs/source/workflow_inputs.rst Outdated
Comment on lines +47 to +48
``LatentDegradationModel/Enabled`` boolean No false Whether to use the latent degradation model [#]_
``LatentDegradationModel/HVACBlowerOffDelay`` double sec >= 0 No See [#]_ HVAC blower-off delay when using the latent degradation model
Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

New inputs.

name: Constants::ObjectTypeWholeHouseFan,
end_use: Constants::ObjectTypeWholeHouseFan,
space: conditioned_space, # no heat gain, so assign the equipment to an arbitrary space
design_level: nil, # will be EMS-actuated
Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Just some unrelated cleanup throughout to avoid having to pass a bunch of nil values to Model.add_electric_equipment and Model.add_other_equipment.

name: Constants::ObjectTypeBatteryLossesAdjustment,
end_use: Constants::ObjectTypeBatteryLossesAdjustment,
space: space,
design_level: 0.01,
Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This object is EMS-actuated, so it's confusing to specify a design level (that won't be used).

Comment on lines -11 to +13
RatedCFMPerTon = 400.0 # cfm/ton of rated capacity, RESNET HERS Addendum 82
RatedCFMPerTonDX = 400.0 # cfm/ton of rated capacity, airflow rate assumed during rating test for AC/HP systems, RESNET HERS Addendum 82
ActualCFMPerTonDX = 360.0 # cfm/ton of rated capacity, default actual airflow rate for AC/HP systems, RESNET
ActualCFMPerTonHeat = 240.0 # cfm/ton of rated capacity, default actual airflow rate for furnaces, RESNET
Copy link
Copy Markdown
Contributor Author

@shorowit shorowit Apr 13, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Clarifying that the rated cfm/ton value is for DX systems, and moved our actual cfm/ton values from hvac_sizing.rb to here so we can see everything together.

Comment thread HPXMLtoOpenStudio/resources/hvac.rb Outdated
)
end

# Adds an EMS program to model latent degradation. The model includes latent degradation during
Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The new EMS program.

Constants::ObjectTypeDSEHeatingHeatPumpBackupFanPump => EUT::HeatingHeatPumpBackupFanPump,
Constants::ObjectTypeDSECooling => EUT::Cooling,
Constants::ObjectTypeDSECoolingFanPump => EUT::CoolingFanPump,
Constants::ObjectTypeBlowerOffDelayFanPower => EUT::CoolingFanPump,
Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Assign the extra blower fan power to the Cooling Fans/Pumps end use.

Though it makes me wonder about heating. It appears that the EMS program only models extra blower fan power related to cooling. @jonwinkler, why is that?

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@shorowit, This model is for only for cooling. I think heat pumps use a similar strategy in heating mode, but this model does not account for that.

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks, I figured that was going to be your answer. That's fine since our blower-off delay input is within the latent degradation model (SimulationControl/AdvancedResearchFeatures/LatentDegradationModel/HVACBlowerOffDelay), but I should probably clarify this point so a user is not surprised.

Comment on lines -37 to +42
base-bldgtype-mf-unit-shared-boiler-chiller-fan-coil-ducted.xml,1334.72,144.0,1037.22,0.0,1181.22,144.0,9.5,153.5,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
base-bldgtype-mf-unit-shared-boiler-chiller-fan-coil.xml,1315.2,144.0,1018.8,0.0,1162.8,144.0,8.4,152.4,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
base-bldgtype-mf-unit-shared-boiler-chiller-fan-coil-ducted.xml,1334.82,144.0,1037.26,0.0,1181.26,144.0,9.56,153.56,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
base-bldgtype-mf-unit-shared-boiler-chiller-fan-coil.xml,1315.21,144.0,1018.82,0.0,1162.82,144.0,8.39,152.39,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I made a small change to the airflow rate assumptions for fan coils (in hvac.rb), so these results are changing very slightly.

Comment on lines +432 to +435
"sample_files/base-appliances-dehumidifier-mechvent.xml": {
"parent_hpxml": "sample_files/base-appliances-dehumidifier.xml",
"location_epw_path": "USA_TX_Houston-Bush.Intercontinental.AP.722430_TMY3.epw",
"ventilation_mechanical": "Supply Only"
Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Added a new sample file that is in Houston (more humid than Dallas) and has supply-only mechanical ventilation, so it shows a higher dehumidification load that we can test the latent degradation model on top of.

@shorowit shorowit requested a review from jonwinkler April 13, 2026 15:17
@shorowit shorowit requested a review from bpark1327 April 13, 2026 15:17
Copy link
Copy Markdown
Collaborator

@bpark1327 bpark1327 left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Looks good to me! One small thing before merging. Was sub-hourly timestep testing completed? EMS programs can be sensitive to timestep size, so just wanted to make sure that was covered.

@shorowit shorowit changed the title Advanced research feature: Blower off delay/latent degradation model Advanced research feature: Latent degradation model (including blower-off delay) Apr 17, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

enhancement New feature or request

Projects

Status: In progress

Development

Successfully merging this pull request may close these issues.

3 participants