diff --git a/BuildResidentialHPXML/README.md b/BuildResidentialHPXML/README.md
index 3e1c6a0d1c..e3385784f5 100644
--- a/BuildResidentialHPXML/README.md
+++ b/BuildResidentialHPXML/README.md
@@ -1726,7 +1726,7 @@ Select an advanced research feature to use in the model, if desired.
- **Required:** ``false``
-- **Choices:**
- `None`
- `Temperature Capacitance Multiplier, 1`
- `Temperature Capacitance Multiplier, 4`
- `Temperature Capacitance Multiplier, 10`
- `Temperature Capacitance Multiplier, 15`
- `On/Off Thermostat Deadband, 1F`
- `On/Off Thermostat Deadband, 2F`
- `On/Off Thermostat Deadband, 3F`
- `Heat Pump Backup Staging, 5 kW`
- `Heat Pump Backup Staging, 10 kW`
- `Experimental Ground-to-Air Heat Pump Model`
- `HVAC Allow Increased Fixed Capacities`
+- **Choices:**
- `None`
- `Temperature Capacitance Multiplier, 1`
- `Temperature Capacitance Multiplier, 4`
- `Temperature Capacitance Multiplier, 10`
- `Temperature Capacitance Multiplier, 15`
- `On/Off Thermostat Deadband, 1F`
- `On/Off Thermostat Deadband, 2F`
- `On/Off Thermostat Deadband, 3F`
- `Latent Degradation Model w/ Blower-Off Delay, 0 sec`
- `Latent Degradation Model w/ Blower-Off Delay, 45 sec`
- `Latent Degradation Model w/ Blower-Off Delay, 90 sec`
- `Heat Pump Backup Staging, 5 kW`
- `Heat Pump Backup Staging, 10 kW`
- `Experimental Ground-to-Air Heat Pump Model`
- `HVAC Allow Increased Fixed Capacities`
- **Default:** `None`
@@ -1741,7 +1741,7 @@ Select a second advanced research feature to use in the model, if desired.
- **Required:** ``false``
-- **Choices:**
- `None`
- `Temperature Capacitance Multiplier, 1`
- `Temperature Capacitance Multiplier, 4`
- `Temperature Capacitance Multiplier, 10`
- `Temperature Capacitance Multiplier, 15`
- `On/Off Thermostat Deadband, 1F`
- `On/Off Thermostat Deadband, 2F`
- `On/Off Thermostat Deadband, 3F`
- `Heat Pump Backup Staging, 5 kW`
- `Heat Pump Backup Staging, 10 kW`
- `Experimental Ground-to-Air Heat Pump Model`
- `HVAC Allow Increased Fixed Capacities`
+- **Choices:**
- `None`
- `Temperature Capacitance Multiplier, 1`
- `Temperature Capacitance Multiplier, 4`
- `Temperature Capacitance Multiplier, 10`
- `Temperature Capacitance Multiplier, 15`
- `On/Off Thermostat Deadband, 1F`
- `On/Off Thermostat Deadband, 2F`
- `On/Off Thermostat Deadband, 3F`
- `Latent Degradation Model w/ Blower-Off Delay, 0 sec`
- `Latent Degradation Model w/ Blower-Off Delay, 45 sec`
- `Latent Degradation Model w/ Blower-Off Delay, 90 sec`
- `Heat Pump Backup Staging, 5 kW`
- `Heat Pump Backup Staging, 10 kW`
- `Experimental Ground-to-Air Heat Pump Model`
- `HVAC Allow Increased Fixed Capacities`
- **Default:** `None`
diff --git a/BuildResidentialHPXML/measure.rb b/BuildResidentialHPXML/measure.rb
index f700976a03..53a9ae12a5 100644
--- a/BuildResidentialHPXML/measure.rb
+++ b/BuildResidentialHPXML/measure.rb
@@ -1337,6 +1337,16 @@ def set_header(runner, hpxml, args)
hpxml.header.hvac_onoff_thermostat_deadband = onoff_db
end
+ hvac_bod = args[:advanced_feature_hvac_blower_off_delay]
+ hvac_bod = args[:advanced_feature_2_hvac_blower_off_delay] if hvac_bod.nil?
+ if not hvac_bod.nil?
+ if (not hpxml.header.latent_degradation_model_blower_off_delay.nil?) && (hpxml.header.latent_degradation_model_blower_off_delay != hvac_bod)
+ errors << "Advanced feature 'HVAC Blower-Off Delay' cannot vary across dwelling units."
+ end
+ hpxml.header.latent_degradation_model_blower_off_delay = hvac_bod
+ hpxml.header.latent_degradation_model_enabled = true
+ end
+
hpbak = args[:advanced_feature_heat_pump_backup_capacity_increment]
hpbak = args[:advanced_feature_2_heat_pump_backup_capacity_increment] if hpbak.nil?
if not hpbak.nil?
diff --git a/BuildResidentialHPXML/measure.xml b/BuildResidentialHPXML/measure.xml
index eec47ec0b2..cb7e583e85 100644
--- a/BuildResidentialHPXML/measure.xml
+++ b/BuildResidentialHPXML/measure.xml
@@ -3,8 +3,8 @@
3.1
build_residential_hpxml
a13a8983-2b01-4930-8af2-42030b6e4233
- a388db27-a2f7-4811-8d2e-95ba875a8820
- 2026-04-02T19:43:52Z
+ a5100732-58ee-47a2-8655-cbd3b2e4a4bd
+ 2026-04-13T14:50:45Z
2C38F48B
BuildResidentialHPXML
HPXML Builder
@@ -11081,6 +11081,18 @@
On/Off Thermostat Deadband, 3F
On/Off Thermostat Deadband, 3F
+
+ Latent Degradation Model w/ Blower-Off Delay, 0 sec
+ Latent Degradation Model w/ Blower-Off Delay, 0 sec
+
+
+ Latent Degradation Model w/ Blower-Off Delay, 45 sec
+ Latent Degradation Model w/ Blower-Off Delay, 45 sec
+
+
+ Latent Degradation Model w/ Blower-Off Delay, 90 sec
+ Latent Degradation Model w/ Blower-Off Delay, 90 sec
+
Heat Pump Backup Staging, 5 kW
Heat Pump Backup Staging, 5 kW
@@ -11140,6 +11152,18 @@
On/Off Thermostat Deadband, 3F
On/Off Thermostat Deadband, 3F
+
+ Latent Degradation Model w/ Blower-Off Delay, 0 sec
+ Latent Degradation Model w/ Blower-Off Delay, 0 sec
+
+
+ Latent Degradation Model w/ Blower-Off Delay, 45 sec
+ Latent Degradation Model w/ Blower-Off Delay, 45 sec
+
+
+ Latent Degradation Model w/ Blower-Off Delay, 90 sec
+ Latent Degradation Model w/ Blower-Off Delay, 90 sec
+
Heat Pump Backup Staging, 5 kW
Heat Pump Backup Staging, 5 kW
@@ -11413,7 +11437,7 @@
README.md
md
readme
- 9F136C7C
+ B9841315
README.md.erb
@@ -11430,7 +11454,7 @@
measure.rb
rb
script
- 73832BEA
+ 4F3E18D4
constants.rb
@@ -11448,13 +11472,13 @@
options/advanced_feature.tsv
tsv
resource
- E5849695
+ B3A4A22E
options/advanced_feature_2.tsv
tsv
resource
- E5849695
+ B3A4A22E
options/appliance_clothes_dryer.tsv
diff --git a/BuildResidentialHPXML/resources/options/advanced_feature.tsv b/BuildResidentialHPXML/resources/options/advanced_feature.tsv
index 60520a1711..83e23d221b 100644
--- a/BuildResidentialHPXML/resources/options/advanced_feature.tsv
+++ b/BuildResidentialHPXML/resources/options/advanced_feature.tsv
@@ -1,19 +1,23 @@
-Option Name Temperature Capacitance Multiplier HVAC On-Off Thermostat Deadband Temperature [F] Heat Pump Backup Capacity Increment [Btu/hr] Ground-to-Air Heat Pump Model Type HVAC Allow Increased Fixed Capacities
-None
-"Temperature Capacitance Multiplier, 1" 1
-"Temperature Capacitance Multiplier, 4" 4
-"Temperature Capacitance Multiplier, 10" 10
-"Temperature Capacitance Multiplier, 15" 15
-"On/Off Thermostat Deadband, 1F" 1
-"On/Off Thermostat Deadband, 2F" 2
-"On/Off Thermostat Deadband, 3F" 3
-"Heat Pump Backup Staging, 5 kW" 17060.71
-"Heat Pump Backup Staging, 10 kW" 34121.42
-Experimental Ground-to-Air Heat Pump Model experimental
-HVAC Allow Increased Fixed Capacities TRUE
-
-# Temperature Capacitance Multiplier: Multiplier on air heat capacitance. Affects the transient calculation of indoor air temperatures. Values greater than 1.0 have the effect of smoothing or damping the rate of change in the indoor air temperature from timestep to timestep.
-# HVAC On-Off Thermostat Deadband Temperature: Temperature difference between cut-in and cut-out temperature for HVAC operation. Requires 1-minute timesteps.
-# Heat Pump Backup Capacity Increment: Capacity increment of multi-stage heat pump backup systems.
-# Ground-to-Air Heat Pump Model Type: Ground-to-air heat pump system model type.
-"# HVAC Allow Increased Fixed Capacities: If true, the larger of user-specified fixed capacity and design load will be used (to reduce potential for unmet loads); otherwise user-specified fixed capacity is used."
+Option Name Temperature Capacitance Multiplier HVAC On-Off Thermostat Deadband Temperature [F] HVAC Blower-Off Delay [sec] Heat Pump Backup Capacity Increment [Btu/hr] Ground-to-Air Heat Pump Model Type HVAC Allow Increased Fixed Capacities
+None
+"Temperature Capacitance Multiplier, 1" 1
+"Temperature Capacitance Multiplier, 4" 4
+"Temperature Capacitance Multiplier, 10" 10
+"Temperature Capacitance Multiplier, 15" 15
+"On/Off Thermostat Deadband, 1F" 1
+"On/Off Thermostat Deadband, 2F" 2
+"On/Off Thermostat Deadband, 3F" 3
+"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
+"Heat Pump Backup Staging, 5 kW" 17060.71
+"Heat Pump Backup Staging, 10 kW" 34121.42
+Experimental Ground-to-Air Heat Pump Model experimental
+HVAC Allow Increased Fixed Capacities TRUE
+
+# Temperature Capacitance Multiplier: Multiplier on air heat capacitance. Affects the transient calculation of indoor air temperatures. Values greater than 1.0 have the effect of smoothing or damping the rate of change in the indoor air temperature from timestep to timestep.
+# HVAC On-Off Thermostat Deadband Temperature: Temperature difference between cut-in and cut-out temperature for HVAC operation. Requires 1-minute timesteps.
+# HVAC Blower-Off Delay: Time that the HVAC fan runs after the end of a cooling cycle. This increases the overall efficiency of the cooling system but also introduces humidity back into the home.
+# Heat Pump Backup Capacity Increment: Capacity increment of multi-stage heat pump backup systems.
+# Ground-to-Air Heat Pump Model Type: Ground-to-air heat pump system model type.
+"# HVAC Allow Increased Fixed Capacities: If true, the larger of user-specified fixed capacity and design load will be used (to reduce potential for unmet loads); otherwise user-specified fixed capacity is used."
diff --git a/BuildResidentialHPXML/resources/options/advanced_feature_2.tsv b/BuildResidentialHPXML/resources/options/advanced_feature_2.tsv
index 60520a1711..83e23d221b 100644
--- a/BuildResidentialHPXML/resources/options/advanced_feature_2.tsv
+++ b/BuildResidentialHPXML/resources/options/advanced_feature_2.tsv
@@ -1,19 +1,23 @@
-Option Name Temperature Capacitance Multiplier HVAC On-Off Thermostat Deadband Temperature [F] Heat Pump Backup Capacity Increment [Btu/hr] Ground-to-Air Heat Pump Model Type HVAC Allow Increased Fixed Capacities
-None
-"Temperature Capacitance Multiplier, 1" 1
-"Temperature Capacitance Multiplier, 4" 4
-"Temperature Capacitance Multiplier, 10" 10
-"Temperature Capacitance Multiplier, 15" 15
-"On/Off Thermostat Deadband, 1F" 1
-"On/Off Thermostat Deadband, 2F" 2
-"On/Off Thermostat Deadband, 3F" 3
-"Heat Pump Backup Staging, 5 kW" 17060.71
-"Heat Pump Backup Staging, 10 kW" 34121.42
-Experimental Ground-to-Air Heat Pump Model experimental
-HVAC Allow Increased Fixed Capacities TRUE
-
-# Temperature Capacitance Multiplier: Multiplier on air heat capacitance. Affects the transient calculation of indoor air temperatures. Values greater than 1.0 have the effect of smoothing or damping the rate of change in the indoor air temperature from timestep to timestep.
-# HVAC On-Off Thermostat Deadband Temperature: Temperature difference between cut-in and cut-out temperature for HVAC operation. Requires 1-minute timesteps.
-# Heat Pump Backup Capacity Increment: Capacity increment of multi-stage heat pump backup systems.
-# Ground-to-Air Heat Pump Model Type: Ground-to-air heat pump system model type.
-"# HVAC Allow Increased Fixed Capacities: If true, the larger of user-specified fixed capacity and design load will be used (to reduce potential for unmet loads); otherwise user-specified fixed capacity is used."
+Option Name Temperature Capacitance Multiplier HVAC On-Off Thermostat Deadband Temperature [F] HVAC Blower-Off Delay [sec] Heat Pump Backup Capacity Increment [Btu/hr] Ground-to-Air Heat Pump Model Type HVAC Allow Increased Fixed Capacities
+None
+"Temperature Capacitance Multiplier, 1" 1
+"Temperature Capacitance Multiplier, 4" 4
+"Temperature Capacitance Multiplier, 10" 10
+"Temperature Capacitance Multiplier, 15" 15
+"On/Off Thermostat Deadband, 1F" 1
+"On/Off Thermostat Deadband, 2F" 2
+"On/Off Thermostat Deadband, 3F" 3
+"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
+"Heat Pump Backup Staging, 5 kW" 17060.71
+"Heat Pump Backup Staging, 10 kW" 34121.42
+Experimental Ground-to-Air Heat Pump Model experimental
+HVAC Allow Increased Fixed Capacities TRUE
+
+# Temperature Capacitance Multiplier: Multiplier on air heat capacitance. Affects the transient calculation of indoor air temperatures. Values greater than 1.0 have the effect of smoothing or damping the rate of change in the indoor air temperature from timestep to timestep.
+# HVAC On-Off Thermostat Deadband Temperature: Temperature difference between cut-in and cut-out temperature for HVAC operation. Requires 1-minute timesteps.
+# HVAC Blower-Off Delay: Time that the HVAC fan runs after the end of a cooling cycle. This increases the overall efficiency of the cooling system but also introduces humidity back into the home.
+# Heat Pump Backup Capacity Increment: Capacity increment of multi-stage heat pump backup systems.
+# Ground-to-Air Heat Pump Model Type: Ground-to-air heat pump system model type.
+"# HVAC Allow Increased Fixed Capacities: If true, the larger of user-specified fixed capacity and design load will be used (to reduce potential for unmet loads); otherwise user-specified fixed capacity is used."
diff --git a/Changelog.md b/Changelog.md
index c46e9dbd3a..569a58f365 100644
--- a/Changelog.md
+++ b/Changelog.md
@@ -4,6 +4,7 @@ __New Features__
- HVAC updates:
- Dual-fuel heat pumps with switchover temperatures > 25F are now autosized based on 25F to allow some additional heating capacity buffer.
- Improves handling of duct leakage specified using cfm25/cfm50.
+ - Adds advanced research feature to model latent degradation for cooling systems, including an input to specify an HVAC blower-off delay.
- Allows "other" for `SoilType`; adds variation to dry/wet soil conductivity and diffusivity values for unknown/other/loam soil types.
- Output updates:
- **Breaking change**: Annual peak load outputs for heating and cooling now use units of Btu/h instead of kBtu/h for consistency with other outputs.
diff --git a/HPXMLtoOpenStudio/measure.xml b/HPXMLtoOpenStudio/measure.xml
index 5431067704..ee42824c07 100644
--- a/HPXMLtoOpenStudio/measure.xml
+++ b/HPXMLtoOpenStudio/measure.xml
@@ -3,8 +3,8 @@
3.1
hpxm_lto_openstudio
b1543b30-9465-45ff-ba04-1d1f85e763bc
- 15c39750-5947-45ef-887d-47606442ed57
- 2026-04-02T19:46:00Z
+ 26568fef-9177-41ab-aa98-1b7101851e1f
+ 2026-04-13T16:10:19Z
D8922A73
HPXMLtoOpenStudio
HPXML to OpenStudio Translator
@@ -217,13 +217,13 @@
airflow.rb
rb
resource
- 2F17E22A
+ 08A1E217
battery.rb
rb
resource
- E058674B
+ E49D3A84
calendar.rb
@@ -235,7 +235,7 @@
constants.rb
rb
resource
- 6430B8D3
+ 5EF534B8
constructions.rb
@@ -367,7 +367,7 @@
defaults.rb
rb
resource
- F91B9101
+ 7C57F239
electric_panel.rb
@@ -403,7 +403,7 @@
hpxml.rb
rb
resource
- BF5902DA
+ A8A9DC80
hpxml_schema/HPXML.xsd
@@ -421,7 +421,7 @@
hpxml_schematron/EPvalidator.sch
sch
resource
- 9B5934A8
+ 43C0728B
hpxml_schematron/iso-schematron.xsd
@@ -433,19 +433,19 @@
hvac.rb
rb
resource
- 86BE60D7
+ BE4D1E86
hvac_sizing.rb
rb
resource
- A5C3D289
+ 02820BCC
internal_gains.rb
rb
resource
- D8FFFC3A
+ CD7FA760
lighting.rb
@@ -493,13 +493,13 @@
model.rb
rb
resource
- A41E8C73
+ E80D049D
output.rb
rb
resource
- 7F8E008D
+ 4F98F5CE
psychrometrics.rb
@@ -715,7 +715,7 @@
waterheater.rb
rb
resource
- 096F8A5F
+ 24B2A2DB
weather.rb
@@ -751,7 +751,7 @@
test_defaults.rb
rb
test
- 989C355A
+ 464440F3
test_electric_panel.rb
@@ -781,7 +781,7 @@
test_hvac.rb
rb
test
- 542405D7
+ F9CB3527
test_hvac_sizing.rb
@@ -829,7 +829,7 @@
test_validation.rb
rb
test
- 5146716A
+ 560591E8
test_vehicle.rb
diff --git a/HPXMLtoOpenStudio/resources/airflow.rb b/HPXMLtoOpenStudio/resources/airflow.rb
index aea809e285..a32295431d 100644
--- a/HPXMLtoOpenStudio/resources/airflow.rb
+++ b/HPXMLtoOpenStudio/resources/airflow.rb
@@ -474,7 +474,6 @@ def self.apply_natural_ventilation_and_whole_house_fan(runner, model, spaces, hp
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
frac_radiant: 0,
frac_latent: 0,
frac_lost: 1,
@@ -1321,12 +1320,10 @@ def self.apply_ducts_for_distribution_system_location(model, spaces, hpxml_bldg,
name: object_name,
end_use: end_use,
space: space,
- design_level: nil,
frac_radiant: 0,
frac_latent: frac_lat,
frac_lost: frac_lost,
- schedule: model.alwaysOnDiscreteSchedule,
- fuel_type: nil
+ schedule: model.alwaysOnDiscreteSchedule
)
duct_actuators[var_name] = Model.add_ems_actuator(
@@ -2241,12 +2238,10 @@ def self.initialize_mech_vent(model, spaces, infil_program, sensors)
name: "#{Constants::ObjectTypeMechanicalVentilationHouseFan} sensible load",
end_use: Constants::ObjectTypeMechanicalVentilationHouseFan,
space: conditioned_space,
- design_level: nil,
frac_radiant: 0,
frac_latent: 0,
frac_lost: 0,
- schedule: model.alwaysOnDiscreteSchedule,
- fuel_type: nil
+ schedule: model.alwaysOnDiscreteSchedule
)
fan_sens_load_actuator = Model.add_ems_actuator(
@@ -2260,12 +2255,10 @@ def self.initialize_mech_vent(model, spaces, infil_program, sensors)
name: "#{Constants::ObjectTypeMechanicalVentilationHouseFan} latent load",
end_use: Constants::ObjectTypeMechanicalVentilationHouseFan,
space: conditioned_space,
- design_level: nil,
frac_radiant: 0,
frac_latent: 1,
frac_lost: 0,
- schedule: model.alwaysOnDiscreteSchedule,
- fuel_type: nil
+ schedule: model.alwaysOnDiscreteSchedule
)
fan_lat_load_actuator = Model.add_ems_actuator(
@@ -2555,7 +2548,6 @@ def self.calculate_precond_loads(model, spaces, infil_program, vent_fans, hrv_er
name: "shared mech vent preheating energy #{i}",
end_use: "#{Constants::ObjectTypeMechanicalVentilationPreheating}#{cnt + 1}",
space: conditioned_space,
- design_level: nil,
frac_radiant: 0,
frac_latent: 0,
frac_lost: 1,
@@ -2600,7 +2592,6 @@ def self.calculate_precond_loads(model, spaces, infil_program, vent_fans, hrv_er
name: "shared mech vent precooling energy #{i}",
end_use: "#{Constants::ObjectTypeMechanicalVentilationPrecooling}#{cnt + 1}",
space: conditioned_space,
- design_level: nil,
frac_radiant: 0,
frac_latent: 0,
frac_lost: 1,
diff --git a/HPXMLtoOpenStudio/resources/battery.rb b/HPXMLtoOpenStudio/resources/battery.rb
index bec28511b9..c39a6bf993 100644
--- a/HPXMLtoOpenStudio/resources/battery.rb
+++ b/HPXMLtoOpenStudio/resources/battery.rb
@@ -218,7 +218,6 @@ def self.apply_battery(runner, model, spaces, hpxml, hpxml_bldg, battery, chargi
name: Constants::ObjectTypeBatteryLossesAdjustment,
end_use: Constants::ObjectTypeBatteryLossesAdjustment,
space: space,
- design_level: 0.01,
frac_radiant: 0,
frac_latent: 0,
frac_lost: frac_lost,
diff --git a/HPXMLtoOpenStudio/resources/constants.rb b/HPXMLtoOpenStudio/resources/constants.rb
index e34f755f1c..1a53a3a47b 100644
--- a/HPXMLtoOpenStudio/resources/constants.rb
+++ b/HPXMLtoOpenStudio/resources/constants.rb
@@ -11,6 +11,7 @@ module Constants
ObjectTypeAirSourceHeatPump = 'air source heat pump'
ObjectTypeBattery = 'battery'
ObjectTypeBatteryLossesAdjustment = 'battery losses adjustment'
+ ObjectTypeBlowerOffDelayFanPower = 'bod fan power'
ObjectTypeBoiler = 'boiler'
ObjectTypeCeilingFan = 'ceiling fan'
ObjectTypeCentralAirConditioner = 'central ac'
diff --git a/HPXMLtoOpenStudio/resources/defaults.rb b/HPXMLtoOpenStudio/resources/defaults.rb
index f61654e997..88ab3c9e4c 100644
--- a/HPXMLtoOpenStudio/resources/defaults.rb
+++ b/HPXMLtoOpenStudio/resources/defaults.rb
@@ -240,6 +240,16 @@ def self.apply_header(hpxml_header, hpxml_bldg, weather)
unavailable_period.natvent_availability_isdefaulted = true
end
end
+
+ if hpxml_header.latent_degradation_model_enabled.nil?
+ hpxml_header.latent_degradation_model_enabled = false
+ hpxml_header.latent_degradation_model_enabled_isdefaulted = true
+ end
+
+ if hpxml_header.latent_degradation_model_enabled && hpxml_header.latent_degradation_model_blower_off_delay.nil?
+ hpxml_header.latent_degradation_model_blower_off_delay = 45.0
+ hpxml_header.latent_degradation_model_blower_off_delay_isdefaulted = true
+ end
end
# Assigns default values for omitted optional inputs in the HPXML::BuildingHeader object
@@ -2363,7 +2373,7 @@ def self.apply_hvac(runner, hpxml_bldg, weather, convert_shared_systems, unit_nu
HPXML::HVACTypeFloorFurnace,
HPXML::HVACTypeFireplace].include? heating_system.heating_system_type
- htg_ap.heat_rated_cfm_per_ton = HVAC::RatedCFMPerTon
+ htg_ap.heat_rated_cfm_per_ton = HVAC::RatedCFMPerTonDX
end
hpxml_bldg.heat_pumps.each do |heat_pump|
case heat_pump.heat_pump_type
@@ -7867,7 +7877,7 @@ def self.set_ground_to_air_heat_pump_cops(heat_pump, cop_ratios, mode)
# Fan/pump adjustments calculations
# Fan power to overcome the static pressure adjustment
rated_fan_watts_per_cfm = 0.5 * heat_pump.fan_watts_per_cfm # Calculate rated fan power by assuming the power to overcome the ductwork is approximately 50% of the total fan power (ANSI/RESNET/ICC 301 says 0.2 W/cfm is the fan power associated with ductwork, but we don't know if that was a PSC or BPM fan)
- power_f = rated_fan_watts_per_cfm * HVAC::RatedCFMPerTon / UnitConversions.convert(1.0, 'ton', 'Btu/hr') # W per Btu/hr of capacity
+ power_f = rated_fan_watts_per_cfm * HVAC::RatedCFMPerTonDX / UnitConversions.convert(1.0, 'ton', 'Btu/hr') # W per Btu/hr of capacity
rated_pump_watts_per_ton = 30.0 # ANSI/RESNET/ICC 301, estimated pump power required to overcome the internal resistance of the ground-water heat exchanger under AHRI test conditions for a closed loop system
power_p = rated_pump_watts_per_ton / UnitConversions.convert(1.0, 'ton', 'Btu/hr') # result is in W per Btu/hr of capacity
if mode == :clg
@@ -7924,7 +7934,7 @@ def self.interpolate_seer2(seer2, eer2, seer2_array, seer2_eer2_ratio_array, cop
if cooling_system.is_a?(HPXML::HeatPump) && cooling_system.heat_pump_type == HPXML::HVACTypeHeatPumpGroundToAir
# Based on RESNET HERS Addendum 82
clg_ap.cool_rated_shr_gross = 0.708
- clg_ap.cool_rated_cfm_per_ton = HVAC::RatedCFMPerTon
+ clg_ap.cool_rated_cfm_per_ton = HVAC::RatedCFMPerTonDX
case hpxml_header.ground_to_air_heat_pump_model_type
when HPXML::GroundToAirHeatPumpModelTypeStandard
@@ -8085,7 +8095,7 @@ def self.interpolate_seer2(seer2, eer2, seer2_array, seer2_eer2_ratio_array, cop
clg_ap.cool_capacity_ratios = [clg_ap.qr95min, 1.0, 1.0 / clg_ap.qr95full]
end
- clg_ap.cool_rated_cfm_per_ton = HVAC::RatedCFMPerTon
+ clg_ap.cool_rated_cfm_per_ton = HVAC::RatedCFMPerTonDX
clg_ap.cool_cap_ft_spec = [3.717717741, -0.09918866, 0.000964488, 0.005887776, -0.000012808, -0.000132822]
clg_ap.cool_eir_ft_spec = [-3.400341169, 0.135184783, -0.001037932, -0.007852322, 0.000183438, -0.000142548]
clg_ap.cool_rated_shr_gross = 0.708
@@ -8130,7 +8140,7 @@ def self.interpolate_hspf2(hspf2, qm17full, hspf2_array, qm17full_array, cop47fu
if heating_system.is_a?(HPXML::HeatPump) && heating_system.heat_pump_type == HPXML::HVACTypeHeatPumpGroundToAir
# Based on RESNET HERS Addendum 82
- htg_ap.heat_rated_cfm_per_ton = HVAC::RatedCFMPerTon
+ htg_ap.heat_rated_cfm_per_ton = HVAC::RatedCFMPerTonDX
case hpxml_header.ground_to_air_heat_pump_model_type
when HPXML::GroundToAirHeatPumpModelTypeStandard
@@ -8262,7 +8272,7 @@ def self.interpolate_hspf2(hspf2, qm17full, hspf2_array, qm17full_array, cop47fu
htg_ap.heat_cap_ft_spec = oat_intercept + iat_intercept, iat_slope, 0, oat_slope, 0, 0
htg_ap.heat_eir_ft_spec = [0.718398423, 0.003498178, 0.000142202, -0.005724331, 0.00014085, -0.000215321]
- htg_ap.heat_rated_cfm_per_ton = HVAC::RatedCFMPerTon
+ htg_ap.heat_rated_cfm_per_ton = HVAC::RatedCFMPerTonDX
return
end
@@ -8334,7 +8344,7 @@ def self.interpolate_hspf2(hspf2, qm17full, hspf2_array, qm17full_array, cop47fu
htg_ap.heat_capacity_ratios = [htg_ap.qr47min / htg_ap.qr47full, 1.0, 1.0 / htg_ap.qr47full]
end
- htg_ap.heat_rated_cfm_per_ton = HVAC::RatedCFMPerTon
+ htg_ap.heat_rated_cfm_per_ton = HVAC::RatedCFMPerTonDX
htg_ap.heat_cap_ft_spec = [0.568706266, -0.000747282, -0.0000103432, 0.00945408, 0.000050812, -0.00000677828]
htg_ap.heat_eir_ft_spec = [0.722917608, 0.003520184, 0.000143097, -0.005760341, 0.000141736, -0.000216676]
end
diff --git a/HPXMLtoOpenStudio/resources/hpxml.rb b/HPXMLtoOpenStudio/resources/hpxml.rb
index 1b1634b35c..aec378980b 100644
--- a/HPXMLtoOpenStudio/resources/hpxml.rb
+++ b/HPXMLtoOpenStudio/resources/hpxml.rb
@@ -924,6 +924,8 @@ def initialize(hpxml_element, *args, **kwargs)
:temperature_capacitance_multiplier, # [Double] SoftwareInfo/extension/SimulationControl/AdvancedResearchFeatures/TemperatureCapacitanceMultiplier
:ground_to_air_heat_pump_model_type, # [String] SoftwareInfo/extension/SimulationControl/AdvancedResearchFeatures/GroundToAirHeatPumpModelType (HPXML::GroundToAirHeatPumpModelTypeXXX)
:hvac_onoff_thermostat_deadband, # [Double] SoftwareInfo/extension/SimulationControl/AdvancedResearchFeatures/OnOffThermostatDeadbandTemperature (F)
+ :latent_degradation_model_enabled, # [Boolean] SoftwareInfo/extension/SimulationControl/AdvancedResearchFeatures/LatentDegradationModel/Enabled
+ :latent_degradation_model_blower_off_delay, # [Double] SoftwareInfo/extension/SimulationControl/AdvancedResearchFeatures/LatentDegradationModel/HVACBlowerOffDelay (sec)
:heat_pump_backup_heating_capacity_increment, # [Double] SoftwareInfo/extension/SimulationControl/AdvancedResearchFeatures/HeatPumpBackupCapacityIncrement (Btu/hr)
:service_feeders_load_calculation_types] # [Array] SoftwareInfo/extension/ElectricPanelLoadCalculations/ServiceFeeders/Type
attr_reader(*CLASS_ATTRS)
@@ -988,7 +990,7 @@ def to_doc(hpxml_doc)
XMLHelper.add_element(calculation, 'Version', calculation_version, :string)
end
end
- if (not @timestep.nil?) || (not @sim_begin_month.nil?) || (not @sim_begin_day.nil?) || (not @sim_end_month.nil?) || (not @sim_end_day.nil?) || (not @sim_calendar_year.nil?) || (not @temperature_capacitance_multiplier.nil?) || (not @hvac_onoff_thermostat_deadband.nil?) || (not @heat_pump_backup_heating_capacity_increment.nil?) || (not @ground_to_air_heat_pump_model_type.nil?)
+ if (not @timestep.nil?) || (not @sim_begin_month.nil?) || (not @sim_begin_day.nil?) || (not @sim_end_month.nil?) || (not @sim_end_day.nil?) || (not @sim_calendar_year.nil?) || (not @temperature_capacitance_multiplier.nil?) || (not @hvac_onoff_thermostat_deadband.nil?) || (not @latent_degradation_model_enabled.nil?) || (not @latent_degradation_model_blower_off_delay.nil?) || (not @heat_pump_backup_heating_capacity_increment.nil?) || (not @ground_to_air_heat_pump_model_type.nil?)
extension = XMLHelper.create_elements_as_needed(software_info, ['extension'])
simulation_control = XMLHelper.add_element(extension, 'SimulationControl')
XMLHelper.add_element(simulation_control, 'Timestep', @timestep, :integer, @timestep_isdefaulted) unless @timestep.nil?
@@ -997,10 +999,15 @@ def to_doc(hpxml_doc)
XMLHelper.add_element(simulation_control, 'EndMonth', @sim_end_month, :integer, @sim_end_month_isdefaulted) unless @sim_end_month.nil?
XMLHelper.add_element(simulation_control, 'EndDayOfMonth', @sim_end_day, :integer, @sim_end_day_isdefaulted) unless @sim_end_day.nil?
XMLHelper.add_element(simulation_control, 'CalendarYear', @sim_calendar_year, :integer, @sim_calendar_year_isdefaulted) unless @sim_calendar_year.nil?
- if (not @temperature_capacitance_multiplier.nil?) || (not @hvac_onoff_thermostat_deadband.nil?) || (not @heat_pump_backup_heating_capacity_increment.nil?) || (not @ground_to_air_heat_pump_model_type.nil?)
+ if (not @temperature_capacitance_multiplier.nil?) || (not @hvac_onoff_thermostat_deadband.nil?) || (not @latent_degradation_model_enabled.nil?) || (not @latent_degradation_model_blower_off_delay.nil?) || (not @heat_pump_backup_heating_capacity_increment.nil?) || (not @ground_to_air_heat_pump_model_type.nil?)
advanced_research_features = XMLHelper.create_elements_as_needed(simulation_control, ['AdvancedResearchFeatures'])
XMLHelper.add_element(advanced_research_features, 'TemperatureCapacitanceMultiplier', @temperature_capacitance_multiplier, :float, @temperature_capacitance_multiplier_isdefaulted) unless @temperature_capacitance_multiplier.nil?
XMLHelper.add_element(advanced_research_features, 'OnOffThermostatDeadbandTemperature', @hvac_onoff_thermostat_deadband, :float, @hvac_onoff_thermostat_deadband_isdefaulted) unless @hvac_onoff_thermostat_deadband.nil?
+ if (not @latent_degradation_model_enabled.nil?) || (not @latent_degradation_model_blower_off_delay.nil?)
+ latent_degradation_model = XMLHelper.add_element(advanced_research_features, 'LatentDegradationModel')
+ XMLHelper.add_element(latent_degradation_model, 'Enabled', @latent_degradation_model_enabled, :boolean, @latent_degradation_model_enabled_isdefaulted) unless @latent_degradation_model_enabled.nil?
+ XMLHelper.add_element(latent_degradation_model, 'HVACBlowerOffDelay', @latent_degradation_model_blower_off_delay, :float, @latent_degradation_model_blower_off_delay_isdefaulted) unless @latent_degradation_model_blower_off_delay.nil?
+ end
XMLHelper.add_element(advanced_research_features, 'HeatPumpBackupCapacityIncrement', @heat_pump_backup_heating_capacity_increment, :float, @heat_pump_backup_heating_capacity_increment_isdefaulted) unless @heat_pump_backup_heating_capacity_increment.nil?
XMLHelper.add_element(advanced_research_features, 'GroundToAirHeatPumpModelType', @ground_to_air_heat_pump_model_type, :string, @ground_to_air_heat_pump_model_type_isdefaulted) unless @ground_to_air_heat_pump_model_type.nil?
end
@@ -1044,6 +1051,8 @@ def from_doc(hpxml)
@sim_calendar_year = XMLHelper.get_value(hpxml, 'SoftwareInfo/extension/SimulationControl/CalendarYear', :integer)
@temperature_capacitance_multiplier = XMLHelper.get_value(hpxml, 'SoftwareInfo/extension/SimulationControl/AdvancedResearchFeatures/TemperatureCapacitanceMultiplier', :float)
@hvac_onoff_thermostat_deadband = XMLHelper.get_value(hpxml, 'SoftwareInfo/extension/SimulationControl/AdvancedResearchFeatures/OnOffThermostatDeadbandTemperature', :float)
+ @latent_degradation_model_enabled = XMLHelper.get_value(hpxml, 'SoftwareInfo/extension/SimulationControl/AdvancedResearchFeatures/LatentDegradationModel/Enabled', :boolean)
+ @latent_degradation_model_blower_off_delay = XMLHelper.get_value(hpxml, 'SoftwareInfo/extension/SimulationControl/AdvancedResearchFeatures/LatentDegradationModel/HVACBlowerOffDelay', :float)
@heat_pump_backup_heating_capacity_increment = XMLHelper.get_value(hpxml, 'SoftwareInfo/extension/SimulationControl/AdvancedResearchFeatures/HeatPumpBackupCapacityIncrement', :float)
@ground_to_air_heat_pump_model_type = XMLHelper.get_value(hpxml, 'SoftwareInfo/extension/SimulationControl/AdvancedResearchFeatures/GroundToAirHeatPumpModelType', :string)
@apply_ashrae140_assumptions = XMLHelper.get_value(hpxml, 'SoftwareInfo/extension/ApplyASHRAE140Assumptions', :boolean)
diff --git a/HPXMLtoOpenStudio/resources/hpxml_schematron/EPvalidator.sch b/HPXMLtoOpenStudio/resources/hpxml_schematron/EPvalidator.sch
index 1bff796892..875adaba7f 100644
--- a/HPXMLtoOpenStudio/resources/hpxml_schematron/EPvalidator.sch
+++ b/HPXMLtoOpenStudio/resources/hpxml_schematron/EPvalidator.sch
@@ -70,6 +70,10 @@
DefrostModelType has been deprecated
Expected at most one OnOffThermostatDeadbandTemperature
Expected OnOffThermostatDeadbandTemperature to be greater than 0
+ Expected at most one LatentDegradationModel/Enabled
+ Expected LatentDegradationModel/Enabled to be 'true' or 'false'
+ Expected at most one LatentDegradationModel/HVACBlowerOffDelay
+ Expected LatentDegradationModel/HVACBlowerOffDelay to be greater than or equal to 0
Expected at most one HeatPumpBackupCapacityIncrement
Expected HeatPumpBackupCapacityIncrement to be greater than 0
Expected at most one GroundToAirHeatPumpModelType
diff --git a/HPXMLtoOpenStudio/resources/hvac.rb b/HPXMLtoOpenStudio/resources/hvac.rb
index 99a0ec86f1..5174d293de 100644
--- a/HPXMLtoOpenStudio/resources/hvac.rb
+++ b/HPXMLtoOpenStudio/resources/hvac.rb
@@ -8,7 +8,9 @@ module HVAC
AirSourceCoolRatedOWB = 75.0 # degF, Rated outdoor wetbulb for air-source systems, cooling
AirSourceCoolRatedIDB = 80.0 # degF, Rated indoor drybulb for air-source systems, cooling
AirSourceCoolRatedIWB = 67.0 # degF, Rated indoor wetbulb for air-source systems, cooling
- 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
CrankcaseHeaterTemp = 50.0 # degF, RESNET HERS Addendum 82
MinCapacity = 1.0 # Btuh
MinAirflow = 3.0 # cfm; E+ min airflow is 0.001 m3/s
@@ -482,6 +484,8 @@ def self.apply_air_source_hvac_systems(runner, model, weather, hpxml_bldg, hpxml
add_variable_speed_power_ems_program(runner, model, air_loop_unitary, control_zone, heating_system, cooling_system, htg_supp_coil, clg_coil, htg_coil, schedules_file)
+ add_latent_degradation_ems_program(model, hpxml_header, cooling_system, air_loop_unitary, clg_coil, fan, control_zone.spaces[0], hpxml_bldg.building_construction.number_of_units)
+
if is_heatpump
ems_program = apply_defrost_ems_program(model, htg_coil, control_zone.spaces[0], cooling_system, hpxml_bldg.building_construction.number_of_units)
if cooling_system.pan_heater_watts.to_f > 0
@@ -1182,7 +1186,7 @@ def self.apply_boiler(runner, model, hpxml_bldg, heating_system, hvac_sequential
if heating_system.distribution_system.air_type.to_s == HPXML::AirTypeFanCoil
# Fan
- fan_cfm = RatedCFMPerTon * UnitConversions.convert(heating_system.heating_capacity, 'Btu/hr', 'ton') # CFM
+ fan_cfm = ActualCFMPerTonHeat * UnitConversions.convert(heating_system.heating_capacity, 'Btu/hr', 'ton') # CFM
fan = create_supply_fan(model, obj_name, 0.0, [fan_cfm], heating_system) # fan energy included in above pump via Electric Auxiliary Energy (EAE)
# Heating Coil
@@ -2256,7 +2260,7 @@ def self.add_fan_pump_disaggregation_ems_program(model, fan_or_pump, htg_object,
Model.add_ems_program_calling_manager(
model,
- name: "#{fan_or_pump.name} disaggregate program calling manager",
+ name: "#{fan_or_pump_program.name} calling manager",
calling_point: 'EndOfSystemTimestepBeforeHVACReporting',
ems_programs: [fan_or_pump_program]
)
@@ -2310,14 +2314,11 @@ def self.add_dehumidifier_load_adjustment_ems_program(model, dehumidifier, fract
dehumidifier_load_adj = Model.add_other_equipment(
model,
name: "#{dehumidifier.name} sens htg adj",
- end_use: nil,
space: conditioned_space,
- design_level: 0,
frac_radiant: 0,
frac_latent: 0,
frac_lost: 0,
- schedule: model.alwaysOnDiscreteSchedule,
- fuel_type: nil
+ schedule: model.alwaysOnDiscreteSchedule
)
dehumidifier_load_adj_act = Model.add_ems_actuator(
name: "#{dehumidifier.name} sens htg adj act",
@@ -4265,6 +4266,279 @@ def self.add_backup_staging_ems_program(model, unitary_system, htg_supp_coil, co
)
end
+ # Adds an EMS program to model latent degradation. This model accounts for latent removal during coil start-up,
+ # and moisture re-introduced to the conditioned space during the blower-off delay (forced evaporation) and
+ # during the remaining off cycle time after the blower shuts off (natural evaporation).
+ #
+ # @param model [OpenStudio::Model::Model] OpenStudio Model object
+ # @param hpxml_header [HPXML::Header] HPXML Header object (one per HPXML file)
+ # @param cooling_system [HPXML::CoolingSystem or HPXML::HeatPump] The HPXML cooling system or heat pump of interest
+ # @param air_loop_unitary [OpenStudio::Model::AirLoopHVACUnitarySystem] OpenStudio Air Loop HVAC Unitary System object
+ # @param clg_coil [OpenStudio::Model::CoilCoolingXXX] Cooling coil model object
+ # @param fan [OpenStudio::Model::FanSystemModel] OpenStudio FanSystemModel object
+ # @param conditioned_space [OpenStudio::Model::Space] OpenStudio Space object for conditioned zone
+ # @param unit_multiplier [Integer] Number of similar dwelling units
+ # @return [nil]
+ def self.add_latent_degradation_ems_program(model, hpxml_header, cooling_system, air_loop_unitary, clg_coil, fan, conditioned_space, unit_multiplier)
+ return unless hpxml_header.latent_degradation_model_enabled
+ return if cooling_system.nil?
+
+ # Check that it's a central AC/HP
+ is_ducted = !cooling_system.distribution_system.nil?
+ if cooling_system.is_a? HPXML::CoolingSystem
+ cooling_type = cooling_system.cooling_system_type
+ else
+ cooling_type = cooling_system.heat_pump_type
+ end
+ if not ([HPXML::HVACTypeCentralAirConditioner,
+ HPXML::HVACTypeHeatPumpAirToAir].include?(cooling_type) ||
+ ([HPXML::HVACTypeMiniSplitAirConditioner,
+ HPXML::HVACTypeHeatPumpMiniSplit].include?(cooling_type) && is_ducted))
+ return
+ end
+
+ m3s_to_cfm = UnitConversions.convert(1, 'm^3/s', 'cfm').round(2)
+ w_to_ton = UnitConversions.convert(1, 'W', 'ton').round(4)
+ is_single_stage = (cooling_system.compressor_type == HPXML::HVACCompressorTypeSingleStage)
+ if is_single_stage
+ cool_cap_tons = UnitConversions.convert(clg_coil.ratedTotalCoolingCapacity.get, 'W', 'ton')
+ else
+ cool_cap_tons = UnitConversions.convert(clg_coil.stages[-1].grossRatedTotalCoolingCapacity.get, 'W', 'ton')
+ end
+ blower_off_delay = hpxml_header.latent_degradation_model_blower_off_delay
+
+ # Sensors
+ clg_rtf_sensor = Model.add_ems_sensor(
+ model,
+ name: "#{air_loop_unitary.name} latdeg clg rtf s",
+ output_var_or_meter_name: 'Cooling Coil Runtime Fraction',
+ key_name: clg_coil.name
+ )
+
+ clg_qt_sensor = Model.add_ems_sensor(
+ model,
+ name: "#{air_loop_unitary.name} latdeg clg qt s",
+ output_var_or_meter_name: 'Cooling Coil Total Cooling Rate',
+ key_name: clg_coil.name
+ )
+
+ clg_qs_sensor = Model.add_ems_sensor(
+ model,
+ name: "#{air_loop_unitary.name} latdeg clg qs s",
+ output_var_or_meter_name: 'Cooling Coil Sensible Cooling Rate',
+ key_name: clg_coil.name
+ )
+
+ if not is_single_stage
+ speed_ratio_sensor = Model.add_ems_sensor(
+ model,
+ name: "#{air_loop_unitary.name} latdeg speed ratio s",
+ output_var_or_meter_name: 'Unitary System DX Coil Speed Ratio',
+ key_name: air_loop_unitary.name
+ )
+ end
+
+ fan_q_sensor = Model.add_ems_sensor(
+ model,
+ name: "#{air_loop_unitary.name} latdeg fan q s",
+ output_var_or_meter_name: 'Fan Electricity Rate',
+ key_name: fan.name
+ )
+
+ # No way to retrieve this node name from the model, it's
+ # created automatically during FT
+ clg_coil_inlet_node_name = "#{air_loop_unitary.name} Fan - Cooling Coil Node"
+
+ vfr_sensor = Model.add_ems_sensor(
+ model,
+ name: "#{air_loop_unitary.name} latdeg vfr s",
+ output_var_or_meter_name: 'System Node Standard Density Volume Flow Rate',
+ key_name: clg_coil_inlet_node_name
+ )
+
+ p_atm_sensor = Model.add_ems_sensor(
+ model,
+ name: "#{air_loop_unitary.name} latdeg p atm s",
+ output_var_or_meter_name: 'System Node Pressure',
+ key_name: clg_coil_inlet_node_name
+ )
+
+ return_db_sensor = Model.add_ems_sensor(
+ model,
+ name: "#{air_loop_unitary.name} latdeg return db s",
+ output_var_or_meter_name: 'System Node Temperature',
+ key_name: clg_coil_inlet_node_name
+ )
+
+ return_hr_sensor = Model.add_ems_sensor(
+ model,
+ name: "#{air_loop_unitary.name} latdeg return db s",
+ output_var_or_meter_name: 'System Node Humidity Ratio',
+ key_name: clg_coil_inlet_node_name
+ )
+
+ # OtherEquipment objects to add heat/cool
+ cnt = model.getOtherEquipments.count { |e| e.endUseSubcategory.start_with? Constants::ObjectTypeBlowerOffDelayFanPower } # Ensure unique name for each cooling system
+ fan_power_oe = Model.add_other_equipment(
+ model,
+ name: "#{air_loop_unitary.name} latdeg blower fan power",
+ end_use: "#{Constants::ObjectTypeBlowerOffDelayFanPower}#{cnt + 1}",
+ space: conditioned_space,
+ frac_radiant: 0,
+ frac_latent: 0,
+ frac_lost: 0,
+ schedule: model.alwaysOnDiscreteSchedule,
+ fuel_type: HPXML::FuelTypeElectricity
+ )
+ fan_power_oe.additionalProperties.setFeature('HPXML_ID', cooling_system.id) # Used by reporting measure
+
+ latent_heat_oe = Model.add_other_equipment(
+ model,
+ name: "#{air_loop_unitary.name} latdeg latent heat",
+ space: conditioned_space,
+ frac_radiant: 0,
+ frac_latent: 1,
+ frac_lost: 0,
+ schedule: model.alwaysOnDiscreteSchedule
+ )
+
+ sens_cool_oe = Model.add_other_equipment(
+ model,
+ name: "#{air_loop_unitary.name} latdeg sens cool",
+ space: conditioned_space,
+ frac_radiant: 0,
+ frac_latent: 0,
+ frac_lost: 0,
+ schedule: model.alwaysOnDiscreteSchedule
+ )
+
+ # Actuators
+ fan_power_act = Model.add_ems_actuator(
+ name: "#{fan_power_oe.name} act",
+ model_object: fan_power_oe,
+ comp_type_and_control: EPlus::EMSActuatorOtherEquipmentPower
+ )
+
+ latent_heat_act = Model.add_ems_actuator(
+ name: "#{latent_heat_oe.name} act",
+ model_object: latent_heat_oe,
+ comp_type_and_control: EPlus::EMSActuatorOtherEquipmentPower
+ )
+
+ sens_cool_act = Model.add_ems_actuator(
+ name: "#{sens_cool_oe.name} act",
+ model_object: sens_cool_oe,
+ comp_type_and_control: EPlus::EMSActuatorOtherEquipmentPower
+ )
+
+ # EMS Program based on:
+ # Shirey, Don, Henderson, H., Raustad, R. 2006. "Understanding the Dehumidification Performance of Air-Conditioning
+ # Equipment at Part Load Conditions". DOE/NETL Project No. DE-FC26-01NT41253.
+ # Table and equation numbers below refer to the Shirey et al. report. See Chapter 5.
+ latdeg_program = Model.add_ems_program(
+ model,
+ name: "#{air_loop_unitary.name} blower off delay program"
+ )
+ latdeg_program.addLine("Set RTF = #{clg_rtf_sensor.name}")
+ if not speed_ratio_sensor.nil?
+ # Set RTF to 1 for two-stage or variable speed equipment if the speed ratio > 0
+ latdeg_program.addLine("If #{speed_ratio_sensor.name} > 0")
+ latdeg_program.addLine(' Set RTF = 1')
+ latdeg_program.addLine('EndIf')
+ end
+ latdeg_program.addLine("Set Qt = #{clg_qt_sensor.name}") # Timestep total cooling capacity
+ latdeg_program.addLine("Set Qs = #{clg_qs_sensor.name}") # Timestep sensible cooling capacity
+ latdeg_program.addLine('Set Ql = Qt - Qs') # Timestep latent cooling capacity
+ latdeg_program.addLine("Set Qfan = #{fan_q_sensor.name}")
+ latdeg_program.addLine('IF (RTF == 0) || (RTF == 1) || (Ql == 0)') # No latent degradation if coil is off, runs for the entire timestep, or is dry
+ latdeg_program.addLine(" Set #{latent_heat_act.name}=0")
+ latdeg_program.addLine(" Set #{sens_cool_act.name}=0")
+ latdeg_program.addLine(" Set #{fan_power_act.name}=0")
+ latdeg_program.addLine(' Return')
+ latdeg_program.addLine('EndIf')
+ latdeg_program.addLine("Set scfm = #{vfr_sensor.name} * #{m3s_to_cfm} / RTF") # Full load standard volumetric flow rate
+ latdeg_program.addLine("Set Patm = #{p_atm_sensor.name}")
+ latdeg_program.addLine("Set ReturnDB = #{return_db_sensor.name}")
+ latdeg_program.addLine("Set ReturnHumRat = #{return_hr_sensor.name}")
+ latdeg_program.addLine('Set MinEXP = -15') # Constant to avoid exponential terms from approaching 0
+ latdeg_program.addLine('Set tau = 60') # Time constant of latent capacity at start-up. See Table 5-1. Typically 30-90 seconds.
+ latdeg_program.addLine('Set K1Per1000ft2 = 8') # Empirical constant. See Table 5-4.
+ latdeg_program.addLine('Set K2 = 0.03') # Empirical constant. See Table 5-4.
+ latdeg_program.addLine("Set BlowerOffDelay = #{blower_off_delay}")
+ latdeg_program.addLine('Set OffCycleFlowFraction = 0.001')
+ latdeg_program.addLine('Set MaxCyclesPerHour = 3') # Maximum number of cycles per hour. See Table 5-1.
+ latdeg_program.addLine('Set AfacePerTon = 1.57')
+ latdeg_program.addLine('Set EvapFPI = 14') # Assumed evaporator fins per inch (FPI)
+ latdeg_program.addLine('Set EvapDepth = 3') # Asseumed evaporator coil depth, inches
+ latdeg_program.addLine('Set ReturnWB = (@TwbFnTdbWPb ReturnDB ReturnHumRat Patm)')
+ latdeg_program.addLine("Set QratedTons = #{cool_cap_tons}")
+ latdeg_program.addLine('If scfm == 0')
+ latdeg_program.addLine(" Set scfm = QratedTons * #{RatedCFMPerTonDX}")
+ latdeg_program.addLine('EndIf')
+ latdeg_program.addLine('Set Aface = AfacePerTon * QratedTons') # Assumed coil face area
+ latdeg_program.addLine('Set Ao = 2 * Aface * EvapFPI * EvapDepth') # Total fin area, square feet. See Table 5-4.
+ latdeg_program.addLine('Set Ql = Qt - Qs') # Timestep latent cooling capacity (repeated equation from above)
+ latdeg_program.addLine('Set SHR = Qs / Qt') # Timestep SHR
+ latdeg_program.addLine('Set WBDepression = (ReturnDB - ReturnWB) * 1.8') # Return air wetbulb depression, deg F
+ latdeg_program.addLine('Set K1 = K1Per1000ft2 * Ao / 1000')
+ latdeg_program.addLine("Set scfmPerTon = scfm / (Qt * #{w_to_ton} / RTF)") # Operating cfm/ton. (`scfm` is full load.)
+ latdeg_program.addLine("Set Mo = K1 * Ao / 1000 * (1 + 0.2 * (#{RatedCFMPerTonDX} - scfmPerTon) / 300)") # Lin. reg. to vary coil moisture holding capacity (Mo) w/ airflow. Combination of equation in Table 5-4 w/ Fig. 5-49.
+ latdeg_program.addLine('Set scfmOffCycle = scfm * OffCycleFlowFraction + 0.0000001') # Assumed natural convection airflow rate when the blower is off
+ latdeg_program.addLine('Set NTUo = K2 * Ao / (scfmOffCycle^0.2)') # Eq 5-12 used when the blower is cycled off
+ latdeg_program.addLine('Set NTU1o = K2 * Ao / (scfm^0.2)') # Eq 5-12 used during the blower off delay
+ latdeg_program.addLine('Set twet = 3600 * Mo * 1060 / (@Max Ql 0.1)') # Nominal time (seconds) after cooling startup when moisture starts to drain. See Table 5-4.
+ latdeg_program.addLine('Set tp = Mo * 1060 / 1.08 / scfmOffCycle / WBDepression * 3600') # Defined on pg 5-23 for when the fan is off. See Table 5-4.
+ latdeg_program.addLine('Set t1p = Mo * 1060 / 1.08 / scfm / WBDepression * 3600') # Defined on pg 5-23 for during the blower off delay. See Table 5-4.
+ latdeg_program.addLine('Set Cycles = 4 * MaxCyclesPerHour * RTF * (1 - RTF)') # Number of cycles per hour
+ latdeg_program.addLine('Set toff = (@Min (3600 / 4 / MaxCyclesPerHour / RTF) BlowerOffDelay)') # Duration of an off cycle (seconds)
+ latdeg_program.addLine('Set ton = 3600 / 4 / MaxCyclesPerHour / (1 - RTF)') # Duration of a cooling cycle (seconds)
+ latdeg_program.addLine('Set t11off = ton / RTF - ton - BlowerOffDelay') # Duration of off cycle when the coil and blower are both off
+ latdeg_program.addLine('Set fs = 1')
+ latdeg_program.addLine('Set Deltafs = 1')
+ latdeg_program.addLine('Set f1s = 1')
+ latdeg_program.addLine('While (@abs Deltafs) > 0.00001') # Successive substitution loop for the blower off delay (forced evaporation) and latent degradation (natural evaporation)
+ latdeg_program.addLine(' Set f1scalcint1 = (@EXP ((-NTU1o) * BlowerOffDelay / t1p))') # Intermediate term for Eq 5-22
+ latdeg_program.addLine(' Set f1scalcint2 = (@EXP (NTU1o * fs))') # Intermediate term for Eq 5-22
+ latdeg_program.addLine(' Set f1sCalc = 1 / NTU1o * (@LN (f1scalcint1 * (f1scalcint2 - 1) + 1))') # Fraction of moisture on the coil after blower off delay. See Eq 5-22 and 5-31.
+ latdeg_program.addLine(' Set f1s = (@Min f1sCalc 1)') # Limit f_s to be <= 1.0 See pg. 5-23.
+ latdeg_program.addLine(' Set fiint1 = (@EXP (@Max ((-NTUo) * t11off / tp) MinEXP))') # Eq 5-22, first exponential term
+ latdeg_program.addLine(' Set fiint2 = (@EXP (NTUo * f1s))') # Eq 5-22, second exponential term
+ latdeg_program.addLine(' Set fi = 1 / NTUo * (@LN (fiint1 * (fiint2 - 1) + 1))') # Fraction of moisture on the coil after the off cycle. See Eq 5-22 and 5-31.
+ latdeg_program.addLine(' Set fscalcint = (@EXP (@Max ((-ton) / tau) MinEXP))') # Intermediate term for Eq 5-23
+ latdeg_program.addLine(' Set fsCalc = fi + 1 / twet * (ton + tau * (fsCalcint - 1))') # Fraction of moisture on coil at end of on cycle to coil moisture holding capacity (Mo). See Eq 5-23.
+ latdeg_program.addLine(' Set fsCalc = (@Min fsCalc 1)') # Limit f_s to be <= 1.0 See pg. 5-23.
+ latdeg_program.addLine(' Set Deltafs = fs - fsCalc') # Residual
+ latdeg_program.addLine(' Set fs = fsCalc') # Successive substitution to find f_s. Use f_i to find t_o.
+ latdeg_program.addLine('EndWhile')
+ latdeg_program.addLine('Set to = ton') # `to` is the time after coil startup when moisture begins to drain from the unit (s).
+ latdeg_program.addLine('Set Deltato = 10')
+ latdeg_program.addLine('While (@abs Deltato) > 0.01')
+ latdeg_program.addLine(' Set toCalcint = (@EXP (@Max ((-to) / tau) MinEXP))') # Intermediate term for Eq 5-25
+ latdeg_program.addLine(' Set toCalc = (1 - fi) * twet - tau * (toCalcint - 1)') # Eq 5-25
+ latdeg_program.addLine(' Set toCalc = (@Min toCalc ton)') # `to` must be less than the on cycle (`ton`)
+ latdeg_program.addLine(' Set Deltato = to - toCalc')
+ latdeg_program.addLine(' Set to = toCalc')
+ latdeg_program.addLine('EndWhile')
+ latdeg_program.addLine('Set LHRssint = (@EXP (@Max ((-ton) / tau) MinEXP))') # Intermediate term for next line.
+ latdeg_program.addLine('Set LHRss = ton + tau * (LHRssint - 1)') # LHR at steady state. See denominator of Eq. 5-9.
+ latdeg_program.addLine('Set LHRint = (@EXP (@Max ((-to) / tau) MinEXP))') # Intermediate term for next line.
+ latdeg_program.addLine('Set LHR= (@Abs (ton - to + tau * (LHRssint - LHRint)))') # LHR at part load. See numerator of Eq. 5-9.
+ latdeg_program.addLine('Set SHRnew = 1 - (1 - SHR) * LHR / LHRss') # Adjust the E+ SHR (steady state) using LHR/LHRss ratio.
+ latdeg_program.addLine('Set Qsnew = Qt * SHRnew') # New sensible capacity
+ latdeg_program.addLine('Set Qlnew = Qt - Qsnew') # New latent capacity
+ latdeg_program.addLine("Set #{latent_heat_act.name} = ((Ql - Qlnew) * RTF / 3.4121) / #{unit_multiplier}")
+ latdeg_program.addLine("Set #{sens_cool_act.name} = ((Qs - Qsnew) * RTF / 3.4121) / #{unit_multiplier}")
+ latdeg_program.addLine("Set #{fan_power_act.name} = (#{blower_off_delay} / ton * Qfan) / #{unit_multiplier}") # Additional fan power during blower off delay
+
+ # EMS Program Calling Manager
+ Model.add_ems_program_calling_manager(
+ model,
+ name: "#{latdeg_program.name} calling manager",
+ calling_point: 'EndOfSystemTimestepAfterHVACReporting',
+ ems_programs: [latdeg_program]
+ )
+ end
+
# Returns the EnergyPlus sequential load fractions for every day of the year.
#
# @param load_frac [Double] Fraction of heating or cooling load served by this HVAC system
@@ -4724,7 +4998,6 @@ def self.apply_pan_heater_ems_program(model, ems_program, htg_coil, conditioned_
name: "#{htg_coil.name} pan heater energy",
end_use: "#{Constants::ObjectTypePanHeater}#{cnt + 1}",
space: conditioned_space,
- design_level: 0,
frac_radiant: 0,
frac_latent: 0,
frac_lost: 1,
@@ -4785,14 +5058,11 @@ def self.apply_defrost_ems_program(model, htg_coil, conditioned_space, heat_pump
defrost_heat_load_oe = Model.add_other_equipment(
model,
name: "#{htg_coil.name} defrost heat load",
- end_use: nil,
space: conditioned_space,
- design_level: 0,
frac_radiant: 0,
frac_latent: 0,
frac_lost: 0,
- schedule: model.alwaysOnDiscreteSchedule,
- fuel_type: nil
+ schedule: model.alwaysOnDiscreteSchedule
)
defrost_heat_load_oe.additionalProperties.setFeature('ObjectType', Constants::ObjectTypeHPDefrostHeatLoad) # Used by reporting measure
defrost_heat_load_oe_act = Model.add_ems_actuator(
@@ -4807,7 +5077,6 @@ def self.apply_defrost_ems_program(model, htg_coil, conditioned_space, heat_pump
name: "#{htg_coil.name} defrost supp heat energy",
end_use: "#{Constants::ObjectTypeHPDefrostSupplHeat}#{cnt + 1}",
space: conditioned_space,
- design_level: 0,
frac_radiant: 0,
frac_latent: 0,
frac_lost: 1.0,
@@ -4969,7 +5238,6 @@ def self.key_name(key)
name: "#{sys_id} dse #{key_name(key)} adjustment",
end_use: "#{end_use}#{cnt}",
space: model.getSpaces[0],
- design_level: 0.01,
frac_radiant: 0,
frac_latent: 0,
frac_lost: 1,
@@ -5030,7 +5298,7 @@ def self.key_name(key)
end
dse_program.addLine('EndIf')
- # EMS Program Calling Point
+ # EMS Program Calling Manager
Model.add_ems_program_calling_manager(
model,
name: "#{dse_program.name} calling manager",
diff --git a/HPXMLtoOpenStudio/resources/hvac_sizing.rb b/HPXMLtoOpenStudio/resources/hvac_sizing.rb
index 727204e2c1..63beaba654 100644
--- a/HPXMLtoOpenStudio/resources/hvac_sizing.rb
+++ b/HPXMLtoOpenStudio/resources/hvac_sizing.rb
@@ -3829,14 +3829,14 @@ def self.calc_airflow_rate(mode, hvac_system, capacity, hpxml_bldg)
case hvac_type
when HPXML::HVACTypeFurnace,
HPXML::HVACTypeBoiler # boiler needed here in case of ducted fan coil
- cfm_per_ton = 240.0
+ cfm_per_ton = HVAC::ActualCFMPerTonHeat
when HPXML::HVACTypeCentralAirConditioner,
HPXML::HVACTypeMiniSplitAirConditioner,
HPXML::HVACTypeHeatPumpAirToAir,
HPXML::HVACTypeHeatPumpMiniSplit,
HPXML::HVACTypeHeatPumpGroundToAir,
HPXML::HVACTypeHeatPumpWaterLoopToAir
- cfm_per_ton = 360.0
+ cfm_per_ton = HVAC::ActualCFMPerTonDX
else
begin
if mode == :htg
diff --git a/HPXMLtoOpenStudio/resources/internal_gains.rb b/HPXMLtoOpenStudio/resources/internal_gains.rb
index 954ca45d8b..c8a1abdaa1 100644
--- a/HPXMLtoOpenStudio/resources/internal_gains.rb
+++ b/HPXMLtoOpenStudio/resources/internal_gains.rb
@@ -121,8 +121,7 @@ def self.apply_general_water_use(runner, model, hpxml_bldg, hpxml_header, spaces
frac_radiant: 0.6,
frac_latent: 0,
frac_lost: 0,
- schedule: water_schedule,
- fuel_type: nil
+ schedule: water_schedule
)
Model.add_other_equipment(
@@ -134,8 +133,7 @@ def self.apply_general_water_use(runner, model, hpxml_bldg, hpxml_header, spaces
frac_radiant: 0,
frac_latent: 1,
frac_lost: 0,
- schedule: water_schedule,
- fuel_type: nil
+ schedule: water_schedule
)
end
end
diff --git a/HPXMLtoOpenStudio/resources/model.rb b/HPXMLtoOpenStudio/resources/model.rb
index 48566b19eb..fa327e0494 100644
--- a/HPXMLtoOpenStudio/resources/model.rb
+++ b/HPXMLtoOpenStudio/resources/model.rb
@@ -175,14 +175,18 @@ def self.add_water_use_equipment(model, name:, end_use:, peak_flow_rate:, flow_r
# @param frac_lost [Double] Fraction of energy consumption that is not heat to the zone (for example, vented to the atmosphere)
# @param schedule [OpenStudio::Model::Schedule] Schedule fraction (or multiplier) that applies to the design level
# @return [OpenStudio::Model::ElectricEquipment] The model object
- def self.add_electric_equipment(model, name:, end_use:, space:, design_level:, frac_radiant:, frac_latent:, frac_lost:, schedule:)
+ def self.add_electric_equipment(model, name:, end_use:, space:, design_level: nil, frac_radiant:, frac_latent:, frac_lost:, schedule:)
ee_def = OpenStudio::Model::ElectricEquipmentDefinition.new(model)
ee = OpenStudio::Model::ElectricEquipment.new(ee_def)
ee.setName(name)
ee.setEndUseSubcategory(end_use) unless end_use.nil?
ee.setSpace(space)
ee_def.setName(name)
- ee_def.setDesignLevel(design_level) unless design_level.nil? # EMS-actuated if nil
+ if design_level.nil? # EMS-actuated if nil
+ ee_def.setDesignLevel(0)
+ else
+ ee_def.setDesignLevel(design_level)
+ end
ee_def.setFractionRadiant(frac_radiant)
ee_def.setFractionLatent(frac_latent)
ee_def.setFractionLost(frac_lost)
@@ -197,16 +201,16 @@ def self.add_electric_equipment(model, name:, end_use:, space:, design_level:, f
#
# @param model [OpenStudio::Model::Model] OpenStudio Model object
# @param name [String] Name for the OpenStudio object
- # @param end_use [String] Name of the end use subcategory for output processing
+ # @param end_use [String] Name of the end use subcategory for output processing, or nil
# @param space [OpenStudio::Model::Space] The space the object is added to
- # @param design_level [Double] Maximum energy input (W)
+ # @param design_level [Double] Maximum energy input (W), or nil if EMS-actuated
# @param frac_radiant [Double] Fraction of energy consumption that is long-wave radiant heat to the zone
# @param frac_latent [Double] Fraction of energy consumption that is latent heat to the zone
# @param frac_lost [Double] Fraction of energy consumption that is not heat to the zone (for example, vented to the atmosphere)
# @param schedule [OpenStudio::Model::Schedule] Schedule fraction (or multiplier) that applies to the design level
- # @param fuel_type [String] Fuel type if the equipment consumes fuel (HPXML::FuelTypeXXX)
+ # @param fuel_type [String] Fuel type if the equipment consumes fuel (HPXML::FuelTypeXXX), or nil if adding load only (no energy consumption)
# @return [OpenStudio::Model::OtherEquipment] The model object
- def self.add_other_equipment(model, name:, end_use:, space:, design_level:, frac_radiant:, frac_latent:, frac_lost:, schedule:, fuel_type:)
+ def self.add_other_equipment(model, name:, end_use: nil, space:, design_level: nil, frac_radiant:, frac_latent:, frac_lost:, schedule:, fuel_type: nil)
oe_def = OpenStudio::Model::OtherEquipmentDefinition.new(model)
oe = OpenStudio::Model::OtherEquipment.new(oe_def)
oe.setName(name)
@@ -214,7 +218,11 @@ def self.add_other_equipment(model, name:, end_use:, space:, design_level:, frac
oe.setFuelType(EPlus.fuel_type(fuel_type)) unless fuel_type.nil?
oe.setSpace(space)
oe_def.setName(name)
- oe_def.setDesignLevel(design_level) unless design_level.nil? # EMS-actuated if nil
+ if design_level.nil? # EMS-actuated if nil
+ oe_def.setDesignLevel(0)
+ else
+ oe_def.setDesignLevel(design_level)
+ end
oe_def.setFractionRadiant(frac_radiant)
oe_def.setFractionLatent(frac_latent)
oe_def.setFractionLost(frac_lost)
@@ -1195,7 +1203,7 @@ def self.create_adjacent_surfaces_for_whole_mf_building(merged_model_objects, hp
# @param unit_number [Integer] index number corresponding to an HPXML Building object
# @return [String] the new OpenStudio object name with unique unit prefix
def self.make_unit_variable_name(obj_name, unit_number)
- if obj_name.to_s.include?(':Zone:')
+ if obj_name.to_s.include? ':Zone:'
obj_name = obj_name.split(':')
prefix = obj_name[0..-2].join(':')
zone_name = make_unit_variable_name(obj_name[-1], unit_number)
@@ -1203,9 +1211,18 @@ def self.make_unit_variable_name(obj_name, unit_number)
return new_name
end
+ # Need to fix cooling coil inlet node name (for blower off delay/latent degradation model)
+ clg_coil_node_str = ' Fan - Cooling Coil Node'
+ if obj_name.to_s.include? clg_coil_node_str
+ clg_coil_name = obj_name.split(clg_coil_node_str)[0]
+ clg_coil_name = make_unit_variable_name(clg_coil_name, unit_number)
+ new_name = "#{clg_coil_name}#{clg_coil_node_str}"
+ return new_name
+ end
+
new_name = ems_friendly_name("unit#{unit_number + 1}_#{obj_name}")
- # Need to fix HWPH outlet node name
+ # Need to fix HWPH outlet node name (for ducting)
if new_name.include?('_Outlet') && new_name.include?(ems_friendly_name(Constants::ObjectTypeWaterHeater))
new_name.gsub!('_Outlet', ' Outlet')
end
diff --git a/HPXMLtoOpenStudio/resources/output.rb b/HPXMLtoOpenStudio/resources/output.rb
index f79913da87..518fc95d24 100644
--- a/HPXMLtoOpenStudio/resources/output.rb
+++ b/HPXMLtoOpenStudio/resources/output.rb
@@ -1869,6 +1869,7 @@ def self.get_object_outputs_by_key(model, object, class_type)
Constants::ObjectTypeDSEHeatingHeatPumpBackupFanPump => EUT::HeatingHeatPumpBackupFanPump,
Constants::ObjectTypeDSECooling => EUT::Cooling,
Constants::ObjectTypeDSECoolingFanPump => EUT::CoolingFanPump,
+ Constants::ObjectTypeBlowerOffDelayFanPower => EUT::CoolingFanPump,
Constants::ObjectTypeBatteryLossesAdjustment => EUT::Battery }.each do |obj_name, eut|
next unless subcategory.start_with? obj_name
fail "Unexpected error: multiple matches for #{eut}." unless end_use.nil?
diff --git a/HPXMLtoOpenStudio/resources/waterheater.rb b/HPXMLtoOpenStudio/resources/waterheater.rb
index 54f0425e73..0fd7fe89da 100644
--- a/HPXMLtoOpenStudio/resources/waterheater.rb
+++ b/HPXMLtoOpenStudio/resources/waterheater.rb
@@ -1233,14 +1233,11 @@ def self.apply_hpwh_zone_heat_gain_program(model, obj_name, loc_space, loc_duct_
hpwh_sens = Model.add_other_equipment(
model,
name: "#{obj_name} sens",
- end_use: nil,
space: loc_space,
- design_level: 0,
frac_radiant: 0,
frac_latent: 0,
frac_lost: 0,
- schedule: model.alwaysOnDiscreteSchedule,
- fuel_type: nil
+ schedule: model.alwaysOnDiscreteSchedule
)
sens_act_actuator = Model.add_ems_actuator(
name: "#{hpwh_sens.name} act",
@@ -1251,14 +1248,11 @@ def self.apply_hpwh_zone_heat_gain_program(model, obj_name, loc_space, loc_duct_
hpwh_lat = Model.add_other_equipment(
model,
name: "#{obj_name} lat",
- end_use: nil,
space: loc_space,
- design_level: 0,
frac_radiant: 0,
frac_latent: 1,
frac_lost: 0,
- schedule: model.alwaysOnDiscreteSchedule,
- fuel_type: nil
+ schedule: model.alwaysOnDiscreteSchedule
)
lat_act_actuator = Model.add_ems_actuator(
name: "#{hpwh_lat.name} act",
@@ -1724,7 +1718,6 @@ def self.key_name(key)
name: "#{Constants::ObjectTypeWaterHeaterAdjustment}#{cnt + 1}",
end_use: "#{Constants::ObjectTypeWaterHeaterAdjustment}#{cnt + 1}",
space: model.getSpaces[0],
- design_level: 0.01,
frac_radiant: 0,
frac_latent: 0,
frac_lost: 1,
diff --git a/HPXMLtoOpenStudio/tests/test_defaults.rb b/HPXMLtoOpenStudio/tests/test_defaults.rb
index b993752f7b..dd59276759 100644
--- a/HPXMLtoOpenStudio/tests/test_defaults.rb
+++ b/HPXMLtoOpenStudio/tests/test_defaults.rb
@@ -40,9 +40,11 @@ def test_header
hpxml.header.sim_calendar_year = 2009
hpxml.header.temperature_capacitance_multiplier = 1.5
hpxml.header.unavailable_periods.add(column_name: 'Power Outage', begin_month: 1, begin_day: 1, begin_hour: 3, end_month: 12, end_day: 31, end_hour: 4, natvent_availability: HPXML::ScheduleUnavailable)
+ hpxml.header.latent_degradation_model_enabled = true
+ hpxml.header.latent_degradation_model_blower_off_delay = 22
XMLHelper.write_file(hpxml.to_doc, @tmp_hpxml_path)
default_hpxml, _default_hpxml_bldg = _test_measure()
- _test_default_header_values(default_hpxml, 30, 2, 2, 11, 11, 2009, 1.5, 3, 4, HPXML::ScheduleUnavailable)
+ _test_default_header_values(default_hpxml, 30, 2, 2, 11, 11, 2009, 1.5, 3, 4, HPXML::ScheduleUnavailable, true, 22)
# Test defaults - calendar year override by AMY year
hpxml, _hpxml_bldg = _create_hpxml('base-location-AMY-2012.xml')
@@ -53,9 +55,10 @@ def test_header
hpxml.header.sim_end_day = nil
hpxml.header.temperature_capacitance_multiplier = nil
hpxml.header.sim_calendar_year = 2020
+ hpxml.header.latent_degradation_model_enabled = nil
XMLHelper.write_file(hpxml.to_doc, @tmp_hpxml_path)
default_hpxml, _default_hpxml_bldg = _test_measure()
- _test_default_header_values(default_hpxml, 60, 1, 1, 12, 31, 2012, 7.0, nil, nil, nil)
+ _test_default_header_values(default_hpxml, 60, 1, 1, 12, 31, 2012, 7.0, nil, nil, nil, false, nil)
# Test defaults - southern hemisphere
hpxml, _hpxml_bldg = _create_hpxml('base-location-capetown-zaf.xml')
@@ -66,9 +69,11 @@ def test_header
hpxml.header.sim_end_day = nil
hpxml.header.sim_calendar_year = nil
hpxml.header.temperature_capacitance_multiplier = nil
+ hpxml.header.latent_degradation_model_enabled = true
+ hpxml.header.latent_degradation_model_blower_off_delay = nil
XMLHelper.write_file(hpxml.to_doc, @tmp_hpxml_path)
default_hpxml, _default_hpxml_bldg = _test_measure()
- _test_default_header_values(default_hpxml, 60, 1, 1, 12, 31, 2007, 7.0, nil, nil, nil)
+ _test_default_header_values(default_hpxml, 60, 1, 1, 12, 31, 2007, 7.0, nil, nil, nil, true, 45)
end
def test_weather_station
@@ -5207,8 +5212,9 @@ def _test_measure()
return hpxml, hpxml.buildings[0]
end
- def _test_default_header_values(hpxml, tstep, sim_begin_month, sim_begin_day, sim_end_month, sim_end_day, sim_calendar_year, temperature_capacitance_multiplier,
- unavailable_period_begin_hour, unavailable_period_end_hour, unavailable_period_natvent_availability)
+ def _test_default_header_values(hpxml, tstep, sim_begin_month, sim_begin_day, sim_end_month, sim_end_day, sim_calendar_year,
+ temperature_capacitance_multiplier, unavailable_period_begin_hour, unavailable_period_end_hour,
+ unavailable_period_natvent_availability, latent_degradation_model_enabled, latent_degradation_model_blower_off_delay)
assert_equal(tstep, hpxml.header.timestep)
assert_equal(sim_begin_month, hpxml.header.sim_begin_month)
assert_equal(sim_begin_day, hpxml.header.sim_begin_day)
@@ -5223,6 +5229,12 @@ def _test_default_header_values(hpxml, tstep, sim_begin_month, sim_begin_day, si
assert_equal(unavailable_period_end_hour, hpxml.header.unavailable_periods[-1].end_hour)
assert_equal(unavailable_period_natvent_availability, hpxml.header.unavailable_periods[-1].natvent_availability)
end
+ assert_equal(latent_degradation_model_enabled, hpxml.header.latent_degradation_model_enabled)
+ if latent_degradation_model_blower_off_delay.nil?
+ assert_nil(hpxml.header.latent_degradation_model_blower_off_delay)
+ else
+ assert_equal(latent_degradation_model_blower_off_delay, hpxml.header.latent_degradation_model_blower_off_delay)
+ end
end
def _test_default_emissions_values(scenario, elec_schedule_number_of_header_rows, elec_schedule_column_number,
diff --git a/HPXMLtoOpenStudio/tests/test_hvac.rb b/HPXMLtoOpenStudio/tests/test_hvac.rb
index 1e8ef3b7c7..0ce6e2a9df 100644
--- a/HPXMLtoOpenStudio/tests/test_hvac.rb
+++ b/HPXMLtoOpenStudio/tests/test_hvac.rb
@@ -1902,8 +1902,8 @@ def test_install_quality_air_to_air_heat_pump
program_values = _check_install_quality_multispeed_ratio(heat_pump, model, heat_pump)
end
- cool_rated_airflow_ratio = cool_design_airflow_cfm * (1 + airflow_defect) / (HVAC::RatedCFMPerTon * UnitConversions.convert(cool_capacity, 'Btu/hr', 'ton'))
- heat_rated_airflow_ratio = heat_design_airflow_cfm * (1 + airflow_defect) / (HVAC::RatedCFMPerTon * UnitConversions.convert(heat_capacity, 'Btu/hr', 'ton'))
+ cool_rated_airflow_ratio = cool_design_airflow_cfm * (1 + airflow_defect) / (HVAC::RatedCFMPerTonDX * UnitConversions.convert(cool_capacity, 'Btu/hr', 'ton'))
+ heat_rated_airflow_ratio = heat_design_airflow_cfm * (1 + airflow_defect) / (HVAC::RatedCFMPerTonDX * UnitConversions.convert(heat_capacity, 'Btu/hr', 'ton'))
for i in 0.._get_num_speeds(heat_pump.compressor_type) - 1
assert_in_epsilon(cool_rated_airflow_ratio, program_values['FF_AF_clg'][i], 0.01)
assert_in_epsilon(heat_rated_airflow_ratio, program_values['FF_AF_htg'][i], 0.01)
@@ -1946,7 +1946,7 @@ def test_install_quality_furnace_central_air_conditioner
program_values = _check_install_quality_multispeed_ratio(cooling_system, model)
end
- cool_rated_airflow_ratio = cool_design_airflow_cfm * (1 + airflow_defect) / (HVAC::RatedCFMPerTon * UnitConversions.convert(cool_capacity, 'Btu/hr', 'ton'))
+ cool_rated_airflow_ratio = cool_design_airflow_cfm * (1 + airflow_defect) / (HVAC::RatedCFMPerTonDX * UnitConversions.convert(cool_capacity, 'Btu/hr', 'ton'))
for i in 0.._get_num_speeds(cooling_system.compressor_type) - 1
assert_in_epsilon(cool_rated_airflow_ratio, program_values['FF_AF_clg'][i], 0.01)
end
@@ -1997,8 +1997,8 @@ def test_install_quality_ground_to_air_heat_pump
program_values = get_ems_values(model.getEnergyManagementSystemPrograms, "#{unitary_system.name} install quality program")
assert_in_epsilon(program_values['F_CH'].sum, charge_defect, 0.01)
- cool_rated_airflow_ratio = cool_design_airflow_cfm * (1 + airflow_defect) / (HVAC::RatedCFMPerTon * UnitConversions.convert(cool_capacity, 'Btu/hr', 'ton'))
- heat_rated_airflow_ratio = heat_design_airflow_cfm * (1 + airflow_defect) / (HVAC::RatedCFMPerTon * UnitConversions.convert(heat_capacity, 'Btu/hr', 'ton'))
+ cool_rated_airflow_ratio = cool_design_airflow_cfm * (1 + airflow_defect) / (HVAC::RatedCFMPerTonDX * UnitConversions.convert(cool_capacity, 'Btu/hr', 'ton'))
+ heat_rated_airflow_ratio = heat_design_airflow_cfm * (1 + airflow_defect) / (HVAC::RatedCFMPerTonDX * UnitConversions.convert(heat_capacity, 'Btu/hr', 'ton'))
assert_in_epsilon(cool_rated_airflow_ratio, program_values['FF_AF_clg'][0], 0.01)
assert_in_epsilon(heat_rated_airflow_ratio, program_values['FF_AF_htg'][0], 0.01)
@@ -2055,7 +2055,7 @@ def test_install_quality_mini_split_air_conditioner
# Check installation quality EMS
program_values = _check_install_quality_multispeed_ratio(cooling_system, model)
- cool_rated_airflow_ratio = cool_design_airflow_cfm * (1 + airflow_defect) / (HVAC::RatedCFMPerTon * UnitConversions.convert(cool_capacity, 'Btu/hr', 'ton'))
+ cool_rated_airflow_ratio = cool_design_airflow_cfm * (1 + airflow_defect) / (HVAC::RatedCFMPerTonDX * UnitConversions.convert(cool_capacity, 'Btu/hr', 'ton'))
for i in 0.._get_num_speeds(cooling_system.compressor_type) - 1
assert_in_epsilon(cool_rated_airflow_ratio, program_values['FF_AF_clg'][i], 0.01)
end
@@ -2077,8 +2077,8 @@ def test_install_quality_mini_split_heat_pump_ducted
# Check installation quality EMS
program_values = _check_install_quality_multispeed_ratio(heat_pump, model, heat_pump)
- cool_rated_airflow_ratio = cool_design_airflow_cfm * (1 + airflow_defect) / (HVAC::RatedCFMPerTon * UnitConversions.convert(cool_capacity, 'Btu/hr', 'ton'))
- heat_rated_airflow_ratio = heat_design_airflow_cfm * (1 + airflow_defect) / (HVAC::RatedCFMPerTon * UnitConversions.convert(heat_capacity, 'Btu/hr', 'ton'))
+ cool_rated_airflow_ratio = cool_design_airflow_cfm * (1 + airflow_defect) / (HVAC::RatedCFMPerTonDX * UnitConversions.convert(cool_capacity, 'Btu/hr', 'ton'))
+ heat_rated_airflow_ratio = heat_design_airflow_cfm * (1 + airflow_defect) / (HVAC::RatedCFMPerTonDX * UnitConversions.convert(heat_capacity, 'Btu/hr', 'ton'))
for i in 0.._get_num_speeds(heat_pump.compressor_type) - 1
assert_in_epsilon(cool_rated_airflow_ratio, program_values['FF_AF_clg'][i], 0.01)
assert_in_epsilon(heat_rated_airflow_ratio, program_values['FF_AF_htg'][i], 0.01)
diff --git a/HPXMLtoOpenStudio/tests/test_validation.rb b/HPXMLtoOpenStudio/tests/test_validation.rb
index 8162170f40..f955037dd0 100644
--- a/HPXMLtoOpenStudio/tests/test_validation.rb
+++ b/HPXMLtoOpenStudio/tests/test_validation.rb
@@ -148,6 +148,7 @@ def test_schema_schematron_error_messages
'hvac-location-heat-pump' => ['A location is specified as "basement - unconditioned" but no surfaces were found adjacent to this space type.'],
'hvac-msac-not-var-speed' => ["Expected CompressorType to be 'variable speed'"],
'hvac-mshp-not-var-speed' => ["Expected CompressorType to be 'variable speed'"],
+ 'hvac-research-features-latdeg-blower-off-delay-value' => ['Expected LatentDegradationModel/HVACBlowerOffDelay to be greater than or equal to 0'],
'hvac-research-features-timestep-ten-mins' => ['Expected Timestep to be 1 if OnOffThermostatDeadbandTemperature is specified',
'Expected Timestep to be 1 if HeatPumpBackupCapacityIncrement is specified'],
'hvac-research-features-timestep-missing' => ['Expected Timestep to be 1 if OnOffThermostatDeadbandTemperature is specified',
@@ -550,6 +551,9 @@ def test_schema_schematron_error_messages
hpxml_bldg.cooling_systems[0].primary_system = true
hpxml_bldg.heat_pumps[-1].primary_heating_system = false
hpxml_bldg.heat_pumps[-1].primary_cooling_system = false
+ when 'hvac-research-features-latdeg-blower-off-delay-value'
+ hpxml, _hpxml_bldg = _create_hpxml('base.xml')
+ hpxml.header.latent_degradation_model_blower_off_delay = -1
when 'hvac-research-features-timestep-ten-mins'
hpxml, _hpxml_bldg = _create_hpxml('base-hvac-air-to-air-heat-pump-1-speed-research-features.xml')
hpxml.header.timestep = 10
diff --git a/docs/source/workflow_inputs.rst b/docs/source/workflow_inputs.rst
index a01068eed1..b16b100ab5 100644
--- a/docs/source/workflow_inputs.rst
+++ b/docs/source/workflow_inputs.rst
@@ -39,14 +39,16 @@ To enable advanced research features, additional information is entered in ``/HP
These features may require shorter timesteps, allow more sophisticated simulation control, and/or impact simulation runtime.
- ====================================== ======== ======= ================ ======== ======== ========================================================
- Element Type Units Constraints Required Default Notes
- ====================================== ======== ======= ================ ======== ======== ========================================================
- ``TemperatureCapacitanceMultiplier`` double > 0 No 7.0 [#]_ Multiplier on air heat capacitance [#]_
- ``OnOffThermostatDeadbandTemperature`` double F > 0 [#]_ No Temperature difference between cut-in and cut-out temperature for HVAC operation [#]_
- ``HeatPumpBackupCapacityIncrement`` double Btu/hr > 0 [#]_ No Capacity increment of multi-stage heat pump backup systems [#]_
- ``GroundToAirHeatPumpModelType`` string See [#]_ No standard Ground-to-air heat pump system model type [#]_
- ====================================== ======== ======= ================ ======== ======== ========================================================
+ ============================================= ======== ======= ================ ======== ======== ========================================================
+ Element Type Units Constraints Required Default Notes
+ ============================================= ======== ======= ================ ======== ======== ========================================================
+ ``TemperatureCapacitanceMultiplier`` double > 0 No 7.0 [#]_ Multiplier on air heat capacitance [#]_
+ ``OnOffThermostatDeadbandTemperature`` double F > 0 [#]_ No Temperature difference between cut-in and cut-out temperature for HVAC operation [#]_
+ ``LatentDegradationModel/Enabled`` boolean No false Whether to use the latent degradation model for cooling systems [#]_
+ ``LatentDegradationModel/HVACBlowerOffDelay`` double sec >= 0 No See [#]_ HVAC blower-off delay when using the latent degradation model
+ ``HeatPumpBackupCapacityIncrement`` double Btu/hr > 0 [#]_ No Capacity increment of multi-stage heat pump backup systems [#]_
+ ``GroundToAirHeatPumpModelType`` string See [#]_ No standard Ground-to-air heat pump system model type [#]_
+ ============================================= ======== ======= ================ ======== ======== ========================================================
.. [#] The default value of 7 is an average value found in the literature when calibrating timeseries EnergyPlus indoor temperatures to field data.
.. [#] TemperatureCapacitanceMultiplier affects the transient calculation of indoor air temperatures.
@@ -62,6 +64,11 @@ These features may require shorter timesteps, allow more sophisticated simulatio
When this feature is enabled, the model will also explicitly model cycling, such that it will take several minutes for the HVAC to reach full capacity for single and two speed AC/ASHP systems, and time-based realistic staging (stay at low speed for 5 minutes before transitioning to the higher stage, and stay at high speed until cut-out deadband temperature is reached) for two speed AC/ASHP systems.
This feature should only be used if detailed power profiles and loads are required.
Common use cases for this feature are when modeling advanced controls, such as a Home Energy Management System, or if performing co-simulation with a grid model.
+ .. [#] The latent degradation model for cooling systems is suggested when running simulations where latent load or dehumidifier energy use is of interest.
+ This model accounts for latent removal during coil start-up, and moisture re-introduced to the conditioned space during the blower-off delay (forced evaporation) and during the remaining off cycle time after the blower shuts off (natural evaporation).
+ It currently applies to central air conditioners and central air source heat pumps only.
+ See `Understanding the Dehumidification Performance of Air-Conditioning Equipment at Part-Load Conditions _` for more information.
+ .. [#] When the latent degradation model is enabled, the HVAC blower-off delay defaults to 45 seconds.
.. [#] HeatPumpBackupCapacityIncrement is currently only allowed with a 1 minute timestep.
.. [#] HeatPumpBackupCapacityIncrement allows modeling multi-stage electric heat pump backup with time-based staging.
If not provided, the heat pump backup is modeled with a single stage.
diff --git a/tasks.rb b/tasks.rb
index 71b473be1b..12fe557d25 100644
--- a/tasks.rb
+++ b/tasks.rb
@@ -517,6 +517,7 @@ def apply_hpxml_modification_sample_files(hpxml_path, hpxml)
iecc_zone = {
'USA_HI_Honolulu.Intl.AP.911820_TMY3.epw' => '1A',
'USA_FL_Miami.Intl.AP.722020_TMY3.epw' => '1A',
+ 'USA_TX_Houston-Bush.Intercontinental.AP.722430_TMY3.epw' => '2A',
'USA_AZ_Phoenix-Sky.Harbor.Intl.AP.722780_TMY3.epw' => '2B',
'USA_TX_Dallas-Fort.Worth.Intl.AP.722590_TMY3.epw' => '3A',
'USA_MD_Baltimore-Washington.Intl.AP.724060_TMY3.epw' => '4A',
diff --git a/workflow/hpxml_inputs.json b/workflow/hpxml_inputs.json
index 4dbcdb5804..8944d998ee 100644
--- a/workflow/hpxml_inputs.json
+++ b/workflow/hpxml_inputs.json
@@ -429,6 +429,29 @@
"parent_hpxml": "sample_files/base-appliances-dehumidifier.xml",
"appliance_dehumidifier": "Detailed Example: Whole-Home, 60 pints/day, EF 2.3"
},
+ "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"
+ },
+ "sample_files/base-appliances-dehumidifier-mechvent-latent-degradation-model-0s.xml": {
+ "parent_hpxml": "sample_files/base-appliances-dehumidifier-mechvent.xml",
+ "advanced_feature_2": "Latent Degradation Model w/ Blower-Off Delay, 0 sec"
+ },
+ "sample_files/base-appliances-dehumidifier-mechvent-latent-degradation-model-45s.xml": {
+ "parent_hpxml": "sample_files/base-appliances-dehumidifier-mechvent.xml",
+ "advanced_feature_2": "Latent Degradation Model w/ Blower-Off Delay, 45 sec"
+ },
+ "sample_files/base-appliances-dehumidifier-mechvent-latent-degradation-model-ashp.xml": {
+ "parent_hpxml": "sample_files/base-appliances-dehumidifier-mechvent.xml",
+ "advanced_feature_2": "Latent Degradation Model w/ Blower-Off Delay, 45 sec",
+ "hvac_heating_system": "None",
+ "hvac_cooling_system": "None",
+ "hvac_heat_pump": "Central HP, SEER2 21.0, HSPF2 9.2",
+ "hvac_heat_pump_capacity": "2.0 tons",
+ "hvac_heat_pump_heating_load_served": "100%",
+ "hvac_heat_pump_cooling_load_served": "100%"
+ },
"sample_files/base-appliances-dehumidifier-multiple.xml": {
"parent_hpxml": "sample_files/base-appliances-dehumidifier.xml"
},
diff --git a/workflow/sample_files/base-appliances-dehumidifier-mechvent-latent-degradation-model-0s.xml b/workflow/sample_files/base-appliances-dehumidifier-mechvent-latent-degradation-model-0s.xml
new file mode 100644
index 0000000000..ca518663ed
--- /dev/null
+++ b/workflow/sample_files/base-appliances-dehumidifier-mechvent-latent-degradation-model-0s.xml
@@ -0,0 +1,488 @@
+
+
+
+ HPXML
+ tasks.rb
+ 2000-01-01T00:00:00-07:00
+ create
+
+
+
+
+
+
+ true
+ 0.0
+
+
+
+
+
+ Default
+
+
+
+
+
+
+
+
+
+ TX
+
+
+
+ proposed workscope
+
+
+
+
+ stand-alone
+ no units above or below
+ 180
+
+ electricity
+ natural gas
+
+
+
+ single-family detached
+ 1.0
+ 1.0
+ 8.0
+ 3
+ 2
+ 1350.0
+ 10800.0
+
+
+
+
+ 2006
+ 2A
+
+
+
+ USA_TX_Houston-Bush.Intercontinental.AP.722430_TMY3
+
+ USA_TX_Houston-Bush.Intercontinental.AP.722430_TMY3.epw
+
+
+
+
+
+
+
+ 50.0
+
+ ACH
+ 3.0
+
+
+
+
+
+
+
+
+ false
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ attic - unvented
+ 1509.3
+ asphalt or fiberglass shingles
+ light
+ 6.0
+
+
+ 2.3
+
+
+
+
+
+
+ outside
+ conditioned space
+
+
+
+ 1200.0
+ wood siding
+ medium
+
+
+ 22.7
+
+
+
+
+ outside
+ attic - unvented
+ gable
+
+
+
+ 225.0
+ wood siding
+ medium
+
+
+ 4.0
+
+
+
+
+
+
+ attic - unvented
+ conditioned space
+ ceiling
+
+
+
+ 1350.0
+
+
+ 39.6
+
+
+
+
+
+
+ conditioned space
+ 1350.0
+ 150.0
+
+
+
+ 0.0
+ 0.0
+
+
+
+
+
+ 5.0
+ true
+
+
+
+ 1.0
+ 2.5
+
+
+
+
+
+
+ 108.0
+ 0
+ 0.35
+ 0.44
+
+
+ light curtains
+
+ 0.67
+
+
+
+
+ 72.0
+ 90
+ 0.35
+ 0.44
+
+
+ light curtains
+
+ 0.67
+
+
+
+
+ 108.0
+ 180
+ 0.35
+ 0.44
+
+
+ light curtains
+
+ 0.67
+
+
+
+
+ 72.0
+ 270
+ 0.35
+ 0.44
+
+
+ light curtains
+
+ 0.67
+
+
+
+
+
+
+
+ 40.0
+ 180
+ 4.4
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ natural gas
+ 25000.0
+
+ AFUE
+ 0.92
+
+ 1.0
+
+
+
+
+ central air conditioner
+ electricity
+ 24000.0
+ single stage
+ 1.0
+
+ SEER2
+ 13.4
+
+
+
+
+
+ 68.0
+ 78.0
+
+
+
+
+
+ regular velocity
+
+ supply
+
+ CFM25
+ 40.5
+ to outside
+
+
+
+ return
+
+ CFM25
+ 13.5
+ to outside
+
+
+
+
+ supply
+ 4.0
+ under slab
+ 1.0
+
+
+
+ return
+ 4.0
+ under slab
+ 1.0
+
+
+
+ 1350.0
+
+
+
+
+
+
+ supply only
+ true
+
+
+
+
+
+
+ electricity
+ storage water heater
+ conditioned space
+ 1.0
+ 0.94
+
+
+
+
+
+
+
+ 0.0
+
+
+
+
+ shower head
+ false
+
+
+
+ faucet
+ false
+
+
+
+
+
+
+ 1.21
+ 380.0
+ 0.12
+ 1.09
+ 27.0
+ 6.0
+ 3.2
+
+
+
+ electricity
+ conventional
+ 3.73
+
+
+
+ 307.0
+ 12
+ 0.12
+ 1.09
+ 22.32
+ 4.0
+
+
+
+ 650.0
+
+
+
+ portable
+ conditioned space
+ 40.0
+ 1.4
+ 0.5
+ 1.0
+
+
+
+ electricity
+ false
+
+
+
+ false
+
+
+
+
+
+ interior
+ 0.4
+
+
+
+
+
+
+ interior
+ 0.1
+
+
+
+
+
+
+ interior
+ 0.25
+
+
+
+
+
+
+ exterior
+ 0.4
+
+
+
+
+
+
+ exterior
+ 0.1
+
+
+
+
+
+
+ exterior
+ 0.25
+
+
+
+
+
+
+
+
+ TV other
+
+
+
+ other
+
+
+
+
+
\ No newline at end of file
diff --git a/workflow/sample_files/base-appliances-dehumidifier-mechvent-latent-degradation-model-45s.xml b/workflow/sample_files/base-appliances-dehumidifier-mechvent-latent-degradation-model-45s.xml
new file mode 100644
index 0000000000..4ab5388757
--- /dev/null
+++ b/workflow/sample_files/base-appliances-dehumidifier-mechvent-latent-degradation-model-45s.xml
@@ -0,0 +1,488 @@
+
+
+
+ HPXML
+ tasks.rb
+ 2000-01-01T00:00:00-07:00
+ create
+
+
+
+
+
+
+ true
+ 45.0
+
+
+
+
+
+ Default
+
+
+
+
+
+
+
+
+
+ TX
+
+
+
+ proposed workscope
+
+
+
+
+ stand-alone
+ no units above or below
+ 180
+
+ electricity
+ natural gas
+
+
+
+ single-family detached
+ 1.0
+ 1.0
+ 8.0
+ 3
+ 2
+ 1350.0
+ 10800.0
+
+
+
+
+ 2006
+ 2A
+
+
+
+ USA_TX_Houston-Bush.Intercontinental.AP.722430_TMY3
+
+ USA_TX_Houston-Bush.Intercontinental.AP.722430_TMY3.epw
+
+
+
+
+
+
+
+ 50.0
+
+ ACH
+ 3.0
+
+
+
+
+
+
+
+
+ false
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ attic - unvented
+ 1509.3
+ asphalt or fiberglass shingles
+ light
+ 6.0
+
+
+ 2.3
+
+
+
+
+
+
+ outside
+ conditioned space
+
+
+
+ 1200.0
+ wood siding
+ medium
+
+
+ 22.7
+
+
+
+
+ outside
+ attic - unvented
+ gable
+
+
+
+ 225.0
+ wood siding
+ medium
+
+
+ 4.0
+
+
+
+
+
+
+ attic - unvented
+ conditioned space
+ ceiling
+
+
+
+ 1350.0
+
+
+ 39.6
+
+
+
+
+
+
+ conditioned space
+ 1350.0
+ 150.0
+
+
+
+ 0.0
+ 0.0
+
+
+
+
+
+ 5.0
+ true
+
+
+
+ 1.0
+ 2.5
+
+
+
+
+
+
+ 108.0
+ 0
+ 0.35
+ 0.44
+
+
+ light curtains
+
+ 0.67
+
+
+
+
+ 72.0
+ 90
+ 0.35
+ 0.44
+
+
+ light curtains
+
+ 0.67
+
+
+
+
+ 108.0
+ 180
+ 0.35
+ 0.44
+
+
+ light curtains
+
+ 0.67
+
+
+
+
+ 72.0
+ 270
+ 0.35
+ 0.44
+
+
+ light curtains
+
+ 0.67
+
+
+
+
+
+
+
+ 40.0
+ 180
+ 4.4
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ natural gas
+ 25000.0
+
+ AFUE
+ 0.92
+
+ 1.0
+
+
+
+
+ central air conditioner
+ electricity
+ 24000.0
+ single stage
+ 1.0
+
+ SEER2
+ 13.4
+
+
+
+
+
+ 68.0
+ 78.0
+
+
+
+
+
+ regular velocity
+
+ supply
+
+ CFM25
+ 40.5
+ to outside
+
+
+
+ return
+
+ CFM25
+ 13.5
+ to outside
+
+
+
+
+ supply
+ 4.0
+ under slab
+ 1.0
+
+
+
+ return
+ 4.0
+ under slab
+ 1.0
+
+
+
+ 1350.0
+
+
+
+
+
+
+ supply only
+ true
+
+
+
+
+
+
+ electricity
+ storage water heater
+ conditioned space
+ 1.0
+ 0.94
+
+
+
+
+
+
+
+ 0.0
+
+
+
+
+ shower head
+ false
+
+
+
+ faucet
+ false
+
+
+
+
+
+
+ 1.21
+ 380.0
+ 0.12
+ 1.09
+ 27.0
+ 6.0
+ 3.2
+
+
+
+ electricity
+ conventional
+ 3.73
+
+
+
+ 307.0
+ 12
+ 0.12
+ 1.09
+ 22.32
+ 4.0
+
+
+
+ 650.0
+
+
+
+ portable
+ conditioned space
+ 40.0
+ 1.4
+ 0.5
+ 1.0
+
+
+
+ electricity
+ false
+
+
+
+ false
+
+
+
+
+
+ interior
+ 0.4
+
+
+
+
+
+
+ interior
+ 0.1
+
+
+
+
+
+
+ interior
+ 0.25
+
+
+
+
+
+
+ exterior
+ 0.4
+
+
+
+
+
+
+ exterior
+ 0.1
+
+
+
+
+
+
+ exterior
+ 0.25
+
+
+
+
+
+
+
+
+ TV other
+
+
+
+ other
+
+
+
+
+
\ No newline at end of file
diff --git a/workflow/sample_files/base-appliances-dehumidifier-mechvent-latent-degradation-model-ashp.xml b/workflow/sample_files/base-appliances-dehumidifier-mechvent-latent-degradation-model-ashp.xml
new file mode 100644
index 0000000000..c3e1872116
--- /dev/null
+++ b/workflow/sample_files/base-appliances-dehumidifier-mechvent-latent-degradation-model-ashp.xml
@@ -0,0 +1,480 @@
+
+
+
+ HPXML
+ tasks.rb
+ 2000-01-01T00:00:00-07:00
+ create
+
+
+
+
+
+
+ true
+ 45.0
+
+
+
+
+
+ Default
+
+
+
+
+
+
+
+
+
+ TX
+
+
+
+ proposed workscope
+
+
+
+
+ stand-alone
+ no units above or below
+ 180
+
+ electricity
+ natural gas
+
+
+
+ single-family detached
+ 1.0
+ 1.0
+ 8.0
+ 3
+ 2
+ 1350.0
+ 10800.0
+
+
+
+
+ 2006
+ 2A
+
+
+
+ USA_TX_Houston-Bush.Intercontinental.AP.722430_TMY3
+
+ USA_TX_Houston-Bush.Intercontinental.AP.722430_TMY3.epw
+
+
+
+
+
+
+
+ 50.0
+
+ ACH
+ 3.0
+
+
+
+
+
+
+
+
+ false
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ attic - unvented
+ 1509.3
+ asphalt or fiberglass shingles
+ light
+ 6.0
+
+
+ 2.3
+
+
+
+
+
+
+ outside
+ conditioned space
+
+
+
+ 1200.0
+ wood siding
+ medium
+
+
+ 22.7
+
+
+
+
+ outside
+ attic - unvented
+ gable
+
+
+
+ 225.0
+ wood siding
+ medium
+
+
+ 4.0
+
+
+
+
+
+
+ attic - unvented
+ conditioned space
+ ceiling
+
+
+
+ 1350.0
+
+
+ 39.6
+
+
+
+
+
+
+ conditioned space
+ 1350.0
+ 150.0
+
+
+
+ 0.0
+ 0.0
+
+
+
+
+
+ 5.0
+ true
+
+
+
+ 1.0
+ 2.5
+
+
+
+
+
+
+ 108.0
+ 0
+ 0.35
+ 0.44
+
+
+ light curtains
+
+ 0.67
+
+
+
+
+ 72.0
+ 90
+ 0.35
+ 0.44
+
+
+ light curtains
+
+ 0.67
+
+
+
+
+ 108.0
+ 180
+ 0.35
+ 0.44
+
+
+ light curtains
+
+ 0.67
+
+
+
+
+ 72.0
+ 270
+ 0.35
+ 0.44
+
+
+ light curtains
+
+ 0.67
+
+
+
+
+
+
+
+ 40.0
+ 180
+ 4.4
+
+
+
+
+
+
+
+
+
+
+
+
+
+ air-to-air
+ electricity
+ 24000.0
+ 24000.0
+ variable speed
+ 1.0
+ 1.0
+
+ SEER2
+ 21.0
+
+
+ HSPF2
+ 9.2
+
+
+
+
+
+ 68.0
+ 78.0
+
+
+
+
+
+ regular velocity
+
+ supply
+
+ CFM25
+ 40.5
+ to outside
+
+
+
+ return
+
+ CFM25
+ 13.5
+ to outside
+
+
+
+
+ supply
+ 4.0
+ under slab
+ 1.0
+
+
+
+ return
+ 4.0
+ under slab
+ 1.0
+
+
+
+ 1350.0
+
+
+
+
+
+
+ supply only
+ true
+
+
+
+
+
+
+ electricity
+ storage water heater
+ conditioned space
+ 1.0
+ 0.94
+
+
+
+
+
+
+
+ 0.0
+
+
+
+
+ shower head
+ false
+
+
+
+ faucet
+ false
+
+
+
+
+
+
+ 1.21
+ 380.0
+ 0.12
+ 1.09
+ 27.0
+ 6.0
+ 3.2
+
+
+
+ electricity
+ conventional
+ 3.73
+
+
+
+ 307.0
+ 12
+ 0.12
+ 1.09
+ 22.32
+ 4.0
+
+
+
+ 650.0
+
+
+
+ portable
+ conditioned space
+ 40.0
+ 1.4
+ 0.5
+ 1.0
+
+
+
+ electricity
+ false
+
+
+
+ false
+
+
+
+
+
+ interior
+ 0.4
+
+
+
+
+
+
+ interior
+ 0.1
+
+
+
+
+
+
+ interior
+ 0.25
+
+
+
+
+
+
+ exterior
+ 0.4
+
+
+
+
+
+
+ exterior
+ 0.1
+
+
+
+
+
+
+ exterior
+ 0.25
+
+
+
+
+
+
+
+
+ TV other
+
+
+
+ other
+
+
+
+
+
\ No newline at end of file
diff --git a/workflow/sample_files/base-appliances-dehumidifier-mechvent.xml b/workflow/sample_files/base-appliances-dehumidifier-mechvent.xml
new file mode 100644
index 0000000000..885bf8ae05
--- /dev/null
+++ b/workflow/sample_files/base-appliances-dehumidifier-mechvent.xml
@@ -0,0 +1,480 @@
+
+
+
+ HPXML
+ tasks.rb
+ 2000-01-01T00:00:00-07:00
+ create
+
+
+
+
+
+ Default
+
+
+
+
+
+
+
+
+
+ TX
+
+
+
+ proposed workscope
+
+
+
+
+ stand-alone
+ no units above or below
+ 180
+
+ electricity
+ natural gas
+
+
+
+ single-family detached
+ 1.0
+ 1.0
+ 8.0
+ 3
+ 2
+ 1350.0
+ 10800.0
+
+
+
+
+ 2006
+ 2A
+
+
+
+ USA_TX_Houston-Bush.Intercontinental.AP.722430_TMY3
+
+ USA_TX_Houston-Bush.Intercontinental.AP.722430_TMY3.epw
+
+
+
+
+
+
+
+ 50.0
+
+ ACH
+ 3.0
+
+
+
+
+
+
+
+
+ false
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ attic - unvented
+ 1509.3
+ asphalt or fiberglass shingles
+ light
+ 6.0
+
+
+ 2.3
+
+
+
+
+
+
+ outside
+ conditioned space
+
+
+
+ 1200.0
+ wood siding
+ medium
+
+
+ 22.7
+
+
+
+
+ outside
+ attic - unvented
+ gable
+
+
+
+ 225.0
+ wood siding
+ medium
+
+
+ 4.0
+
+
+
+
+
+
+ attic - unvented
+ conditioned space
+ ceiling
+
+
+
+ 1350.0
+
+
+ 39.6
+
+
+
+
+
+
+ conditioned space
+ 1350.0
+ 150.0
+
+
+
+ 0.0
+ 0.0
+
+
+
+
+
+ 5.0
+ true
+
+
+
+ 1.0
+ 2.5
+
+
+
+
+
+
+ 108.0
+ 0
+ 0.35
+ 0.44
+
+
+ light curtains
+
+ 0.67
+
+
+
+
+ 72.0
+ 90
+ 0.35
+ 0.44
+
+
+ light curtains
+
+ 0.67
+
+
+
+
+ 108.0
+ 180
+ 0.35
+ 0.44
+
+
+ light curtains
+
+ 0.67
+
+
+
+
+ 72.0
+ 270
+ 0.35
+ 0.44
+
+
+ light curtains
+
+ 0.67
+
+
+
+
+
+
+
+ 40.0
+ 180
+ 4.4
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ natural gas
+ 25000.0
+
+ AFUE
+ 0.92
+
+ 1.0
+
+
+
+
+ central air conditioner
+ electricity
+ 24000.0
+ single stage
+ 1.0
+
+ SEER2
+ 13.4
+
+
+
+
+
+ 68.0
+ 78.0
+
+
+
+
+
+ regular velocity
+
+ supply
+
+ CFM25
+ 40.5
+ to outside
+
+
+
+ return
+
+ CFM25
+ 13.5
+ to outside
+
+
+
+
+ supply
+ 4.0
+ under slab
+ 1.0
+
+
+
+ return
+ 4.0
+ under slab
+ 1.0
+
+
+
+ 1350.0
+
+
+
+
+
+
+ supply only
+ true
+
+
+
+
+
+
+ electricity
+ storage water heater
+ conditioned space
+ 1.0
+ 0.94
+
+
+
+
+
+
+
+ 0.0
+
+
+
+
+ shower head
+ false
+
+
+
+ faucet
+ false
+
+
+
+
+
+
+ 1.21
+ 380.0
+ 0.12
+ 1.09
+ 27.0
+ 6.0
+ 3.2
+
+
+
+ electricity
+ conventional
+ 3.73
+
+
+
+ 307.0
+ 12
+ 0.12
+ 1.09
+ 22.32
+ 4.0
+
+
+
+ 650.0
+
+
+
+ portable
+ conditioned space
+ 40.0
+ 1.4
+ 0.5
+ 1.0
+
+
+
+ electricity
+ false
+
+
+
+ false
+
+
+
+
+
+ interior
+ 0.4
+
+
+
+
+
+
+ interior
+ 0.1
+
+
+
+
+
+
+ interior
+ 0.25
+
+
+
+
+
+
+ exterior
+ 0.4
+
+
+
+
+
+
+ exterior
+ 0.1
+
+
+
+
+
+
+ exterior
+ 0.25
+
+
+
+
+
+
+
+
+ TV other
+
+
+
+ other
+
+
+
+
+
\ No newline at end of file
diff --git a/workflow/tests/base_results/results_simulations_bills.csv b/workflow/tests/base_results/results_simulations_bills.csv
index 3147c089a2..8aa07e7b73 100644
--- a/workflow/tests/base_results/results_simulations_bills.csv
+++ b/workflow/tests/base_results/results_simulations_bills.csv
@@ -2,6 +2,10 @@ HPXML,Utility Bills: Default: Total (USD),Utility Bills: Default: Electricity: F
base-appliances-coal.xml,1955.05,144.0,1343.88,0.0,1487.88,144.0,309.32,453.32,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,13.85,13.85,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
base-appliances-dehumidifier-ef-portable.xml,1649.79,144.0,1336.13,0.0,1480.13,144.0,25.66,169.66,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-appliances-dehumidifier-ef-whole-home.xml,1648.2,144.0,1334.11,0.0,1478.11,144.0,26.09,170.09,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-appliances-dehumidifier-mechvent-latent-degradation-model-0s.xml,1758.04,144.0,1449.81,0.0,1593.81,144.0,20.23,164.23,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-appliances-dehumidifier-mechvent-latent-degradation-model-45s.xml,1780.5,144.0,1472.27,0.0,1616.27,144.0,20.23,164.23,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-appliances-dehumidifier-mechvent-latent-degradation-model-ashp.xml,1440.25,144.0,1296.25,0.0,1440.25,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,0.0,0.0,0.0,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
+base-appliances-dehumidifier-mechvent.xml,1757.39,144.0,1449.16,0.0,1593.16,144.0,20.23,164.23,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-appliances-dehumidifier-multiple.xml,1647.94,144.0,1333.19,0.0,1477.19,144.0,26.75,170.75,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-appliances-dehumidifier.xml,1651.03,144.0,1337.3,0.0,1481.3,144.0,25.73,169.73,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-appliances-freezer-temperature-dependent-schedule.xml,2087.6,144.0,1491.89,0.0,1635.89,144.0,307.71,451.71,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,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
@@ -34,16 +38,16 @@ base-bldgtype-mf-unit-infil-leakiness-description.xml,1287.68,144.0,995.25,0.0,1
base-bldgtype-mf-unit-neighbor-shading.xml,1285.47,144.0,988.96,0.0,1132.96,144.0,8.51,152.51,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-residents-1.xml,976.12,144.0,675.01,0.0,819.01,144.0,13.11,157.11,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-baseboard.xml,1301.13,144.0,1004.27,0.0,1148.27,144.0,8.86,152.86,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.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,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
base-bldgtype-mf-unit-shared-boiler-chiller-water-loop-heat-pump.xml,1567.81,144.0,1272.91,0.0,1416.91,144.0,6.9,150.9,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-cooling-tower-water-loop-heat-pump.xml,1323.91,144.0,1029.01,0.0,1173.01,144.0,6.9,150.9,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-only-baseboard-combi-tankless.xml,898.09,144.0,487.39,0.0,631.39,144.0,122.7,266.7,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-only-baseboard.xml,1189.91,144.0,894.09,0.0,1038.09,144.0,7.82,151.82,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-only-fan-coil-ducted.xml,1191.51,144.0,895.13,0.0,1039.13,144.0,8.38,152.38,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-only-fan-coil-eae.xml,1191.34,144.0,895.9,0.0,1039.9,144.0,7.44,151.44,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-only-fan-coil-fireplace-elec.xml,1195.72,144.0,902.12,0.0,1046.12,144.0,5.6,149.6,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-only-fan-coil.xml,1191.43,144.0,896.02,0.0,1040.02,144.0,7.41,151.41,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-only-fan-coil-ducted.xml,1191.6,144.0,895.16,0.0,1039.16,144.0,8.44,152.44,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-only-fan-coil-eae.xml,1191.35,144.0,895.92,0.0,1039.92,144.0,7.43,151.43,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-only-fan-coil-fireplace-elec.xml,1195.73,144.0,902.13,0.0,1046.13,144.0,5.6,149.6,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-only-fan-coil.xml,1191.44,144.0,896.04,0.0,1040.04,144.0,7.4,151.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-only-water-loop-heat-pump.xml,1189.67,144.0,895.58,0.0,1039.58,144.0,6.09,150.09,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-chiller-only-baseboard.xml,1144.99,144.0,1000.99,0.0,1144.99,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,0.0,0.0,0.0,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
base-bldgtype-mf-unit-shared-chiller-only-fan-coil-ducted.xml,1176.54,144.0,1032.54,0.0,1176.54,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,0.0,0.0,0.0,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
diff --git a/workflow/tests/base_results/results_simulations_energy.csv b/workflow/tests/base_results/results_simulations_energy.csv
index 6164884ead..2169bd5962 100644
--- a/workflow/tests/base_results/results_simulations_energy.csv
+++ b/workflow/tests/base_results/results_simulations_energy.csv
@@ -2,6 +2,10 @@ HPXML,Energy Use: Total (MBtu),Energy Use: Net (MBtu),Fuel Use: Electricity: Tot
base-appliances-coal.xml,73.301,73.301,36.596,36.596,31.929,0.0,0.0,0.0,0.0,4.777,0.0,0.994,0.0,0.0,5.321,1.233,10.769,0.0,0.0,4.507,0.0,0.334,0.0,0.0,0.0,0.0,2.076,0.0,0.0,0.284,0.347,0.128,0.105,0.0,2.116,8.384,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,31.929,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,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,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,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,1.707,3.07,0.0,0.0,0.0,0.0,0.0
base-appliances-dehumidifier-ef-portable.xml,35.842,35.842,34.023,34.023,1.819,0.0,0.0,0.0,0.0,0.0,0.0,0.052,0.0,0.0,8.777,1.971,7.862,0.0,0.0,2.646,0.0,0.238,0.0,0.0,0.0,0.0,2.207,0.0,0.366,0.284,0.347,1.436,1.529,0.0,2.116,4.192,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,1.819,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,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,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,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,0.0
base-appliances-dehumidifier-ef-whole-home.xml,35.821,35.821,33.971,33.971,1.85,0.0,0.0,0.0,0.0,0.0,0.0,0.053,0.0,0.0,8.776,1.971,7.862,0.0,0.0,2.646,0.0,0.238,0.0,0.0,0.0,0.0,2.207,0.0,0.314,0.284,0.347,1.436,1.529,0.0,2.116,4.192,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,1.85,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,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,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,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,0.0
+base-appliances-dehumidifier-mechvent-latent-degradation-model-0s.xml,38.352,38.352,36.918,36.918,1.434,0.0,0.0,0.0,0.0,0.0,0.0,0.041,0.0,0.0,10.326,2.352,7.268,0.0,0.0,2.646,0.0,0.238,0.72,0.0,0.0,0.0,2.217,0.0,1.206,0.284,0.347,1.436,1.529,0.0,2.116,4.192,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,1.434,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,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,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,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,0.0
+base-appliances-dehumidifier-mechvent-latent-degradation-model-45s.xml,38.924,38.924,37.49,37.49,1.434,0.0,0.0,0.0,0.0,0.0,0.0,0.041,0.0,0.0,10.331,2.535,7.268,0.0,0.0,2.646,0.0,0.238,0.72,0.0,0.0,0.0,2.217,0.0,1.591,0.284,0.347,1.436,1.529,0.0,2.116,4.192,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,1.434,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,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,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,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,0.0
+base-appliances-dehumidifier-mechvent-latent-degradation-model-ashp.xml,33.007,33.007,33.007,33.007,0.0,0.0,0.0,0.0,0.0,0.0,0.568,0.007,0.0,0.0,7.41,0.89,7.268,0.0,0.0,2.646,0.0,0.238,0.72,0.0,0.0,0.0,2.217,0.0,1.139,0.284,0.347,1.436,1.529,0.0,2.116,4.192,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,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,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,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,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0
+base-appliances-dehumidifier-mechvent.xml,38.335,38.335,36.901,36.901,1.435,0.0,0.0,0.0,0.0,0.0,0.0,0.041,0.0,0.0,10.327,2.352,7.268,0.0,0.0,2.646,0.0,0.238,0.72,0.0,0.0,0.0,2.217,0.0,1.189,0.284,0.347,1.436,1.529,0.0,2.116,4.192,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,1.435,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,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,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,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,0.0
base-appliances-dehumidifier-multiple.xml,35.844,35.844,33.948,33.948,1.896,0.0,0.0,0.0,0.0,0.0,0.0,0.054,0.0,0.0,8.774,1.971,7.862,0.0,0.0,2.646,0.0,0.238,0.0,0.0,0.0,0.0,2.207,0.0,0.293,0.284,0.347,1.436,1.529,0.0,2.116,4.192,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,1.896,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,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,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,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,0.0
base-appliances-dehumidifier.xml,35.877,35.877,34.053,34.053,1.824,0.0,0.0,0.0,0.0,0.0,0.0,0.052,0.0,0.0,8.78,1.972,7.862,0.0,0.0,2.646,0.0,0.238,0.0,0.0,0.0,0.0,2.208,0.0,0.392,0.284,0.347,1.436,1.529,0.0,2.116,4.192,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,1.824,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,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,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,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,0.0
base-appliances-freezer-temperature-dependent-schedule.xml,72.389,72.389,40.627,40.627,31.762,0.0,0.0,0.0,0.0,0.0,0.0,0.989,0.0,0.0,5.34,1.239,10.769,0.0,0.0,4.507,0.0,0.334,0.0,0.0,0.0,0.0,2.076,1.278,0.0,0.284,0.347,1.436,1.529,0.0,2.116,8.384,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,31.762,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,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,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,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,0.0
@@ -34,16 +38,16 @@ base-bldgtype-mf-unit-infil-leakiness-description.xml,27.559,27.559,27.102,27.10
base-bldgtype-mf-unit-neighbor-shading.xml,27.809,27.809,26.931,26.931,0.878,0.0,0.0,0.0,0.0,0.0,0.0,0.024,0.0,0.0,2.215,0.538,11.174,0.0,0.0,2.025,0.0,0.206,0.0,0.0,0.0,0.0,2.185,0.0,0.0,0.291,0.357,1.477,1.529,0.0,2.116,2.795,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.878,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,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,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,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,0.0
base-bldgtype-mf-unit-residents-1.xml,19.735,19.735,18.382,18.382,1.354,0.0,0.0,0.0,0.0,0.0,0.0,0.037,0.0,0.0,1.892,0.439,4.642,0.0,0.0,2.025,0.0,0.206,0.0,0.0,0.0,0.0,2.164,0.0,0.0,0.2,0.221,0.917,1.147,0.0,1.264,3.228,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,1.354,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,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,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,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,0.0
base-bldgtype-mf-unit-shared-boiler-chiller-baseboard.xml,28.263,28.263,27.348,27.348,0.915,0.0,0.0,0.0,0.0,0.0,0.0,0.044,0.0,0.0,2.58,0.57,11.174,0.0,0.0,2.025,0.0,0.206,0.0,0.0,0.0,0.0,2.185,0.0,0.0,0.291,0.357,1.477,1.529,0.0,2.116,2.795,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.915,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,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,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,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,0.0
-base-bldgtype-mf-unit-shared-boiler-chiller-fan-coil-ducted.xml,29.226,29.226,28.245,28.245,0.98,0.0,0.0,0.0,0.0,0.0,0.0,0.076,0.0,0.0,3.359,0.656,11.174,0.0,0.0,2.025,0.0,0.206,0.0,0.0,0.0,0.0,2.185,0.0,0.0,0.291,0.357,1.477,1.529,0.0,2.116,2.795,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.98,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,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,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,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,0.0
-base-bldgtype-mf-unit-shared-boiler-chiller-fan-coil.xml,28.611,28.611,27.744,27.744,0.867,0.0,0.0,0.0,0.0,0.0,0.0,0.104,0.0,0.0,2.916,0.57,11.174,0.0,0.0,2.025,0.0,0.206,0.0,0.0,0.0,0.0,2.185,0.0,0.0,0.291,0.357,1.477,1.529,0.0,2.116,2.795,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.867,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,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,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,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,0.0
+base-bldgtype-mf-unit-shared-boiler-chiller-fan-coil-ducted.xml,29.233,29.233,28.246,28.246,0.987,0.0,0.0,0.0,0.0,0.0,0.0,0.077,0.0,0.0,3.359,0.656,11.174,0.0,0.0,2.025,0.0,0.206,0.0,0.0,0.0,0.0,2.185,0.0,0.0,0.291,0.357,1.477,1.529,0.0,2.116,2.795,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.987,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,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,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,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,0.0
+base-bldgtype-mf-unit-shared-boiler-chiller-fan-coil.xml,28.611,28.611,27.744,27.744,0.866,0.0,0.0,0.0,0.0,0.0,0.0,0.104,0.0,0.0,2.916,0.57,11.174,0.0,0.0,2.025,0.0,0.206,0.0,0.0,0.0,0.0,2.185,0.0,0.0,0.291,0.357,1.477,1.529,0.0,2.116,2.795,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.866,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,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,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,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,0.0
base-bldgtype-mf-unit-shared-boiler-chiller-water-loop-heat-pump.xml,35.376,35.376,34.664,34.664,0.713,0.0,0.0,0.0,0.0,0.0,0.046,0.044,0.0,0.0,9.763,0.656,11.174,0.0,0.0,2.025,0.0,0.206,0.0,0.0,0.0,0.0,2.185,0.0,0.0,0.291,0.357,1.477,1.529,0.0,2.116,2.795,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.713,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,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,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,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,0.0
base-bldgtype-mf-unit-shared-boiler-cooling-tower-water-loop-heat-pump.xml,28.734,28.734,28.022,28.022,0.713,0.0,0.0,0.0,0.0,0.0,0.046,0.044,0.0,0.0,3.121,0.656,11.174,0.0,0.0,2.025,0.0,0.206,0.0,0.0,0.0,0.0,2.185,0.0,0.0,0.291,0.357,1.477,1.529,0.0,2.116,2.795,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.713,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,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,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,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,0.0
base-bldgtype-mf-unit-shared-boiler-only-baseboard-combi-tankless.xml,25.938,25.938,13.273,13.273,12.665,0.0,0.0,0.0,0.0,0.0,0.0,0.047,0.0,0.0,0.0,0.0,0.0,0.0,0.0,2.025,0.0,0.206,0.0,0.0,0.0,0.0,2.431,0.0,0.0,0.291,0.357,1.477,1.529,0.0,2.116,2.795,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.974,0.0,11.691,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,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,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,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-only-baseboard.xml,25.154,25.154,24.348,24.348,0.807,0.0,0.0,0.0,0.0,0.0,0.0,0.038,0.0,0.0,0.0,0.0,11.063,0.0,0.0,2.025,0.0,0.206,0.0,0.0,0.0,0.0,2.452,0.0,0.0,0.291,0.357,1.477,1.529,0.0,2.116,2.795,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.807,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,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,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,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,0.0
-base-bldgtype-mf-unit-shared-boiler-only-fan-coil-ducted.xml,25.241,25.241,24.376,24.376,0.865,0.0,0.0,0.0,0.0,0.0,0.0,0.067,0.0,0.0,0.0,0.0,11.063,0.0,0.0,2.025,0.0,0.206,0.0,0.0,0.0,0.0,2.452,0.0,0.0,0.291,0.357,1.477,1.529,0.0,2.116,2.795,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.865,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,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,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,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,0.0
-base-bldgtype-mf-unit-shared-boiler-only-fan-coil-eae.xml,25.165,25.165,24.397,24.397,0.768,0.0,0.0,0.0,0.0,0.0,0.0,0.088,0.0,0.0,0.0,0.0,11.063,0.0,0.0,2.025,0.0,0.206,0.0,0.0,0.0,0.0,2.452,0.0,0.0,0.291,0.357,1.477,1.529,0.0,2.116,2.795,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.768,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,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,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,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,0.0
-base-bldgtype-mf-unit-shared-boiler-only-fan-coil-fireplace-elec.xml,25.144,25.144,24.566,24.566,0.578,0.0,0.0,0.0,0.0,0.0,0.182,0.075,0.0,0.0,0.0,0.0,11.063,0.0,0.0,2.025,0.0,0.206,0.0,0.0,0.0,0.0,2.452,0.0,0.0,0.291,0.357,1.477,1.529,0.0,2.116,2.795,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.578,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,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,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,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,0.0
-base-bldgtype-mf-unit-shared-boiler-only-fan-coil.xml,25.165,25.165,24.4,24.4,0.765,0.0,0.0,0.0,0.0,0.0,0.0,0.091,0.0,0.0,0.0,0.0,11.063,0.0,0.0,2.025,0.0,0.206,0.0,0.0,0.0,0.0,2.452,0.0,0.0,0.291,0.357,1.477,1.529,0.0,2.116,2.795,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.765,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,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,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,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,0.0
+base-bldgtype-mf-unit-shared-boiler-only-fan-coil-ducted.xml,25.248,25.248,24.377,24.377,0.871,0.0,0.0,0.0,0.0,0.0,0.0,0.068,0.0,0.0,0.0,0.0,11.063,0.0,0.0,2.025,0.0,0.206,0.0,0.0,0.0,0.0,2.452,0.0,0.0,0.291,0.357,1.477,1.529,0.0,2.116,2.795,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.871,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,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,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,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,0.0
+base-bldgtype-mf-unit-shared-boiler-only-fan-coil-eae.xml,25.165,25.165,24.398,24.398,0.767,0.0,0.0,0.0,0.0,0.0,0.0,0.088,0.0,0.0,0.0,0.0,11.063,0.0,0.0,2.025,0.0,0.206,0.0,0.0,0.0,0.0,2.452,0.0,0.0,0.291,0.357,1.477,1.529,0.0,2.116,2.795,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.767,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,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,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,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,0.0
+base-bldgtype-mf-unit-shared-boiler-only-fan-coil-fireplace-elec.xml,25.144,25.144,24.567,24.567,0.578,0.0,0.0,0.0,0.0,0.0,0.182,0.075,0.0,0.0,0.0,0.0,11.063,0.0,0.0,2.025,0.0,0.206,0.0,0.0,0.0,0.0,2.452,0.0,0.0,0.291,0.357,1.477,1.529,0.0,2.116,2.795,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.578,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,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,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,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,0.0
+base-bldgtype-mf-unit-shared-boiler-only-fan-coil.xml,25.165,25.165,24.401,24.401,0.764,0.0,0.0,0.0,0.0,0.0,0.0,0.091,0.0,0.0,0.0,0.0,11.063,0.0,0.0,2.025,0.0,0.206,0.0,0.0,0.0,0.0,2.452,0.0,0.0,0.291,0.357,1.477,1.529,0.0,2.116,2.795,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.764,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,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,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,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,0.0
base-bldgtype-mf-unit-shared-boiler-only-water-loop-heat-pump.xml,25.017,25.017,24.388,24.388,0.629,0.0,0.0,0.0,0.0,0.0,0.04,0.039,0.0,0.0,0.0,0.0,11.063,0.0,0.0,2.025,0.0,0.206,0.0,0.0,0.0,0.0,2.452,0.0,0.0,0.291,0.357,1.477,1.529,0.0,2.116,2.795,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.629,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,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,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,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,0.0
base-bldgtype-mf-unit-shared-chiller-only-baseboard.xml,27.259,27.259,27.259,27.259,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,2.564,0.565,11.191,0.0,0.0,2.025,0.0,0.206,0.0,0.0,0.0,0.0,2.144,0.0,0.0,0.291,0.357,1.477,1.529,0.0,2.116,2.795,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,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,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,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,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-chiller-only-fan-coil-ducted.xml,28.118,28.118,28.118,28.118,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,3.337,0.65,11.191,0.0,0.0,2.025,0.0,0.206,0.0,0.0,0.0,0.0,2.144,0.0,0.0,0.291,0.357,1.477,1.529,0.0,2.116,2.795,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,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,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,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,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0
diff --git a/workflow/tests/base_results/results_simulations_hvac.csv b/workflow/tests/base_results/results_simulations_hvac.csv
index fb0fdf74ad..c9b0718b86 100644
--- a/workflow/tests/base_results/results_simulations_hvac.csv
+++ b/workflow/tests/base_results/results_simulations_hvac.csv
@@ -2,6 +2,10 @@ HPXML,HVAC Design Temperature: Heating (F),HVAC Design Temperature: Cooling (F),
base-appliances-coal.xml,6.8,91.76,35000.0,24000.0,0.0,41543.0,17659.0,7963.0,0.0,575.0,6833.0,0.0,0.0,1738.0,2155.0,4620.0,0.0,0.0,27993.0,13311.0,7750.0,0.0,207.0,507.0,0.0,0.0,0.0,2276.0,622.0,0.0,3320.0,0.0,0.0,265.0,126.0,-661.0,0.0,800.0
base-appliances-dehumidifier-ef-portable.xml,25.88,98.42,25000.0,24000.0,0.0,20332.0,1311.0,5559.0,0.0,401.0,1555.0,0.0,0.0,8256.0,1504.0,1745.0,0.0,0.0,16490.0,506.0,8417.0,0.0,313.0,695.0,0.0,0.0,0.0,2673.0,565.0,0.0,3320.0,0.0,0.0,1228.0,38.0,391.0,0.0,800.0
base-appliances-dehumidifier-ef-whole-home.xml,25.88,98.42,25000.0,24000.0,0.0,20332.0,1311.0,5559.0,0.0,401.0,1555.0,0.0,0.0,8256.0,1504.0,1745.0,0.0,0.0,16490.0,506.0,8417.0,0.0,313.0,695.0,0.0,0.0,0.0,2673.0,565.0,0.0,3320.0,0.0,0.0,1228.0,38.0,391.0,0.0,800.0
+base-appliances-dehumidifier-mechvent-latent-degradation-model-0s.xml,32.9,95.0,25000.0,24000.0,0.0,18470.0,1144.0,4675.0,0.0,337.0,1307.0,0.0,0.0,6942.0,1265.0,0.0,2800.0,0.0,16633.0,503.0,7887.0,0.0,282.0,575.0,0.0,0.0,0.0,2557.0,0.0,1509.0,3320.0,0.0,0.0,2903.0,88.0,0.0,2015.0,800.0
+base-appliances-dehumidifier-mechvent-latent-degradation-model-45s.xml,32.9,95.0,25000.0,24000.0,0.0,18470.0,1144.0,4675.0,0.0,337.0,1307.0,0.0,0.0,6942.0,1265.0,0.0,2800.0,0.0,16633.0,503.0,7887.0,0.0,282.0,575.0,0.0,0.0,0.0,2557.0,0.0,1509.0,3320.0,0.0,0.0,2903.0,88.0,0.0,2015.0,800.0
+base-appliances-dehumidifier-mechvent-latent-degradation-model-ashp.xml,32.9,95.0,24000.0,24000.0,0.0,18213.0,887.0,4675.0,0.0,337.0,1307.0,0.0,0.0,6942.0,1265.0,0.0,2800.0,0.0,16633.0,503.0,7887.0,0.0,282.0,575.0,0.0,0.0,0.0,2557.0,0.0,1509.0,3320.0,0.0,0.0,2903.0,88.0,0.0,2015.0,800.0
+base-appliances-dehumidifier-mechvent.xml,32.9,95.0,25000.0,24000.0,0.0,18470.0,1144.0,4675.0,0.0,337.0,1307.0,0.0,0.0,6942.0,1265.0,0.0,2800.0,0.0,16633.0,503.0,7887.0,0.0,282.0,575.0,0.0,0.0,0.0,2557.0,0.0,1509.0,3320.0,0.0,0.0,2903.0,88.0,0.0,2015.0,800.0
base-appliances-dehumidifier-multiple.xml,25.88,98.42,25000.0,24000.0,0.0,20332.0,1311.0,5559.0,0.0,401.0,1555.0,0.0,0.0,8256.0,1504.0,1745.0,0.0,0.0,16490.0,506.0,8417.0,0.0,313.0,695.0,0.0,0.0,0.0,2673.0,565.0,0.0,3320.0,0.0,0.0,1228.0,38.0,391.0,0.0,800.0
base-appliances-dehumidifier.xml,25.88,98.42,25000.0,24000.0,0.0,20332.0,1311.0,5559.0,0.0,401.0,1555.0,0.0,0.0,8256.0,1504.0,1745.0,0.0,0.0,16490.0,506.0,8417.0,0.0,313.0,695.0,0.0,0.0,0.0,2673.0,565.0,0.0,3320.0,0.0,0.0,1228.0,38.0,391.0,0.0,800.0
base-appliances-freezer-temperature-dependent-schedule.xml,6.8,91.76,35000.0,24000.0,0.0,41543.0,17659.0,7963.0,0.0,575.0,6833.0,0.0,0.0,1738.0,2155.0,4620.0,0.0,0.0,29288.0,13405.0,7750.0,0.0,207.0,507.0,0.0,0.0,0.0,2276.0,622.0,0.0,4520.0,0.0,0.0,256.0,117.0,-661.0,0.0,800.0
diff --git a/workflow/tests/base_results/results_simulations_loads.csv b/workflow/tests/base_results/results_simulations_loads.csv
index 580288427e..becc4380f5 100644
--- a/workflow/tests/base_results/results_simulations_loads.csv
+++ b/workflow/tests/base_results/results_simulations_loads.csv
@@ -2,6 +2,10 @@ HPXML,Load: Heating: Delivered (MBtu),Load: Heating: Heat Pump Backup (MBtu),Loa
base-appliances-coal.xml,30.37,0.0,20.967,9.917,0.848,0.0,0.0,0.0,3.254,3.876,0.882,7.089,0.676,11.544,-12.793,0.0,0.0,0.0,8.336,-0.11,5.495,0.0,0.509,0.0,13.207,-8.992,-2.631,0.0,-0.093,-0.26,-0.025,2.426,0.015,-0.421,12.704,0.0,0.0,0.0,-6.46,-0.106,-0.944,-4.238,-0.086,0.0,8.766,7.785,1.877
base-appliances-dehumidifier-ef-portable.xml,1.727,0.0,33.167,7.067,0.793,0.0,0.0,0.0,1.338,1.306,0.0,0.0,0.308,3.963,-3.581,0.0,0.0,0.0,0.791,-0.336,0.868,0.176,0.2,0.0,0.07,-2.978,-0.551,0.0,0.274,-0.327,0.0,0.0,0.128,2.146,20.365,0.0,0.0,0.0,1.296,-0.331,-0.516,-2.528,-0.115,0.0,0.7,9.975,2.095
base-appliances-dehumidifier-ef-whole-home.xml,1.756,0.0,33.169,7.067,0.793,0.0,0.0,0.0,1.325,1.295,0.0,0.0,0.306,3.934,-3.554,0.0,0.0,0.0,0.779,-0.337,0.862,0.158,0.198,0.0,0.071,-2.924,-0.546,0.0,0.262,-0.338,0.0,0.0,0.125,2.116,20.392,0.0,0.0,0.0,1.285,-0.331,-0.521,-2.546,-0.117,0.0,0.7,10.006,2.099
+base-appliances-dehumidifier-mechvent-latent-degradation-model-0s.xml,1.373,0.0,35.063,6.477,0.789,0.0,0.0,0.0,0.99,0.949,0.0,0.0,0.25,2.886,-3.247,0.0,0.0,0.0,-0.185,-0.449,0.13,0.408,2.89,0.0,0.051,-3.382,-0.493,0.0,0.575,-0.039,0.0,0.0,0.194,3.003,18.27,0.0,0.0,0.0,2.444,-0.469,-0.066,-1.667,-1.568,0.0,0.757,11.137,2.152
+base-appliances-dehumidifier-mechvent-latent-degradation-model-45s.xml,1.374,0.0,34.853,6.477,0.789,0.0,0.0,0.0,0.985,0.946,0.0,0.0,0.252,2.918,-3.237,0.0,0.0,0.0,-0.206,-0.462,0.131,0.447,2.908,0.0,0.05,-3.462,-0.497,0.0,0.57,-0.042,0.0,0.0,0.196,3.033,18.281,0.0,0.0,0.0,2.421,-0.482,-0.066,-1.64,-1.552,0.0,0.751,10.877,2.149
+base-appliances-dehumidifier-mechvent-latent-degradation-model-ashp.xml,1.423,0.0,35.356,6.477,0.789,0.0,0.0,0.0,0.987,0.947,0.0,0.0,0.249,2.886,-3.231,0.0,0.0,0.0,-0.185,-0.451,0.131,0.4,2.886,0.0,0.1,-3.348,-0.492,0.0,0.573,-0.04,0.0,0.0,0.194,3.004,18.287,0.0,0.0,0.0,2.445,-0.47,-0.067,-1.676,-1.572,0.0,1.229,10.969,2.153
+base-appliances-dehumidifier-mechvent.xml,1.374,0.0,35.058,6.477,0.789,0.0,0.0,0.0,0.993,0.951,0.0,0.0,0.249,2.879,-3.26,0.0,0.0,0.0,-0.173,-0.444,0.13,0.408,2.888,0.0,0.05,-3.387,-0.495,0.0,0.579,-0.035,0.0,0.0,0.194,2.997,18.258,0.0,0.0,0.0,2.458,-0.464,-0.066,-1.665,-1.569,0.0,0.757,11.139,2.151
base-appliances-dehumidifier-multiple.xml,1.803,0.0,33.151,7.067,0.793,0.0,0.0,0.0,1.322,1.292,0.0,0.0,0.302,3.911,-3.548,0.0,0.0,0.0,0.77,-0.335,0.858,0.141,0.198,0.0,0.073,-2.842,-0.544,0.0,0.261,-0.339,0.0,0.0,0.122,2.1,20.398,0.0,0.0,0.0,1.282,-0.329,-0.524,-2.564,-0.117,0.0,0.7,10.013,2.102
base-appliances-dehumidifier.xml,1.733,0.0,33.173,7.067,0.793,0.0,0.0,0.0,1.328,1.297,0.0,0.0,0.305,3.929,-3.546,0.0,0.0,0.0,0.783,-0.335,0.861,0.153,0.198,0.0,0.07,-2.983,-0.543,0.0,0.262,-0.339,0.0,0.0,0.124,2.104,20.4,0.0,0.0,0.0,1.28,-0.329,-0.525,-2.56,-0.118,0.0,0.7,10.018,2.102
base-appliances-freezer-temperature-dependent-schedule.xml,30.212,0.0,21.115,9.917,0.848,0.0,0.0,0.0,3.254,3.872,0.881,7.094,0.675,11.53,-12.777,0.0,0.0,0.0,8.333,-0.104,5.487,0.0,0.508,0.0,13.143,-9.088,-2.627,0.0,-0.101,-0.268,-0.027,2.42,0.013,-0.447,12.72,0.0,0.0,0.0,-6.479,-0.1,-0.953,-4.268,-0.086,0.0,8.799,7.983,1.88
@@ -34,13 +38,13 @@ base-bldgtype-mf-unit-infil-leakiness-description.xml,0.431,0.0,9.48,10.368,0.79
base-bldgtype-mf-unit-neighbor-shading.xml,0.829,0.0,8.838,10.368,0.802,0.0,0.0,0.0,-0.004,1.714,0.0,0.0,0.263,2.577,-1.656,0.0,0.0,-0.017,0.0,-0.24,0.804,0.0,0.292,0.0,0.0,-2.428,-0.479,0.0,0.001,-2.064,0.0,0.0,-0.242,-2.731,6.908,0.0,0.0,-0.012,0.0,-0.232,-0.962,-1.535,-0.402,0.0,0.0,8.659,1.546
base-bldgtype-mf-unit-residents-1.xml,1.279,0.0,7.467,3.829,0.811,0.0,0.0,0.0,-0.004,2.008,0.0,0.0,0.31,3.06,-2.073,0.0,0.0,-0.021,0.0,-0.282,0.934,0.0,0.346,0.0,0.0,-2.4,-0.605,0.0,0.0,-1.532,0.0,0.0,-0.173,-2.046,6.49,0.0,0.0,-0.016,0.0,-0.275,-0.767,-1.424,-0.327,0.0,0.0,6.202,1.421
base-bldgtype-mf-unit-shared-boiler-chiller-baseboard.xml,0.827,0.0,8.948,10.368,0.802,0.0,0.0,0.0,-0.003,1.696,0.0,0.0,0.263,2.569,-1.64,0.0,0.0,-0.017,0.0,-0.245,0.801,0.0,0.291,0.0,0.0,-2.414,-0.476,0.0,0.001,-1.97,0.0,0.0,-0.243,-2.742,6.923,0.0,0.0,-0.012,0.0,-0.237,-0.965,-1.533,-0.404,0.0,0.0,8.674,1.549
-base-bldgtype-mf-unit-shared-boiler-chiller-fan-coil-ducted.xml,0.876,0.0,10.341,10.368,0.802,0.0,0.0,0.0,-0.003,1.698,0.0,0.0,0.263,2.572,-1.642,0.0,0.0,-0.017,0.0,-0.246,0.804,0.0,0.291,0.0,0.048,-2.417,-0.476,0.0,0.001,-1.969,0.0,0.0,-0.243,-2.739,6.921,0.0,0.0,-0.012,0.0,-0.238,-0.969,-1.539,-0.403,0.0,1.407,8.671,1.549
+base-bldgtype-mf-unit-shared-boiler-chiller-fan-coil-ducted.xml,0.884,0.0,10.341,10.368,0.802,0.0,0.0,0.0,-0.003,1.698,0.0,0.0,0.263,2.572,-1.642,0.0,0.0,-0.017,0.0,-0.246,0.804,0.0,0.291,0.0,0.055,-2.417,-0.476,0.0,0.001,-1.969,0.0,0.0,-0.243,-2.739,6.921,0.0,0.0,-0.012,0.0,-0.238,-0.969,-1.539,-0.403,0.0,1.407,8.671,1.549
base-bldgtype-mf-unit-shared-boiler-chiller-fan-coil.xml,0.827,0.0,8.948,10.368,0.802,0.0,0.0,0.0,-0.003,1.696,0.0,0.0,0.263,2.569,-1.64,0.0,0.0,-0.017,0.0,-0.245,0.801,0.0,0.291,0.0,0.0,-2.414,-0.476,0.0,0.001,-1.97,0.0,0.0,-0.243,-2.742,6.923,0.0,0.0,-0.012,0.0,-0.237,-0.965,-1.533,-0.404,0.0,0.0,8.674,1.549
base-bldgtype-mf-unit-shared-boiler-chiller-water-loop-heat-pump.xml,0.848,0.0,10.341,10.368,0.802,0.0,0.0,0.0,-0.003,1.697,0.0,0.0,0.263,2.571,-1.642,0.0,0.0,-0.016,0.0,-0.245,0.802,0.0,0.291,0.0,0.021,-2.416,-0.476,0.0,0.001,-1.969,0.0,0.0,-0.243,-2.741,6.921,0.0,0.0,-0.012,0.0,-0.237,-0.97,-1.539,-0.403,0.0,1.407,8.672,1.549
base-bldgtype-mf-unit-shared-boiler-cooling-tower-water-loop-heat-pump.xml,0.848,0.0,10.341,10.368,0.802,0.0,0.0,0.0,-0.003,1.697,0.0,0.0,0.263,2.571,-1.642,0.0,0.0,-0.016,0.0,-0.245,0.802,0.0,0.291,0.0,0.021,-2.416,-0.476,0.0,0.001,-1.969,0.0,0.0,-0.243,-2.741,6.921,0.0,0.0,-0.012,0.0,-0.237,-0.97,-1.539,-0.403,0.0,1.407,8.672,1.549
base-bldgtype-mf-unit-shared-boiler-only-baseboard-combi-tankless.xml,0.884,0.0,0.0,10.445,0.0,0.0,0.0,0.0,-0.002,1.597,0.0,0.0,0.24,2.382,-1.608,0.0,0.0,-0.011,0.0,-0.217,0.745,0.0,0.272,0.0,0.0,-2.076,-0.453,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,0.0,0.0,0.0,0.0,0.0
base-bldgtype-mf-unit-shared-boiler-only-baseboard.xml,0.729,0.0,0.0,10.368,0.691,0.0,0.0,0.0,-0.002,1.448,0.0,0.0,0.218,2.17,-1.415,0.0,0.0,-0.011,0.0,-0.197,0.683,0.0,0.247,0.0,0.0,-2.021,-0.402,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,0.0,0.0,0.0,0.0,0.0
-base-bldgtype-mf-unit-shared-boiler-only-fan-coil-ducted.xml,0.772,0.0,0.0,10.368,0.691,0.0,0.0,0.0,-0.002,1.448,0.0,0.0,0.218,2.171,-1.415,0.0,0.0,-0.011,0.0,-0.198,0.685,0.0,0.247,0.0,0.043,-2.022,-0.402,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,0.0,0.0,0.0,0.0,0.0
+base-bldgtype-mf-unit-shared-boiler-only-fan-coil-ducted.xml,0.779,0.0,0.0,10.368,0.691,0.0,0.0,0.0,-0.002,1.448,0.0,0.0,0.218,2.171,-1.415,0.0,0.0,-0.011,0.0,-0.198,0.685,0.0,0.247,0.0,0.049,-2.022,-0.402,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,0.0,0.0,0.0,0.0,0.0
base-bldgtype-mf-unit-shared-boiler-only-fan-coil-eae.xml,0.729,0.0,0.0,10.368,0.691,0.0,0.0,0.0,-0.002,1.448,0.0,0.0,0.218,2.17,-1.415,0.0,0.0,-0.011,0.0,-0.197,0.683,0.0,0.247,0.0,0.0,-2.021,-0.402,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,0.0,0.0,0.0,0.0,0.0
base-bldgtype-mf-unit-shared-boiler-only-fan-coil-fireplace-elec.xml,0.728,0.0,0.0,10.368,0.691,0.0,0.0,0.0,-0.002,1.448,0.0,0.0,0.218,2.17,-1.415,0.0,0.0,-0.011,0.0,-0.197,0.683,0.0,0.247,0.0,0.0,-2.021,-0.402,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,0.0,0.0,0.0,0.0,0.0
base-bldgtype-mf-unit-shared-boiler-only-fan-coil.xml,0.729,0.0,0.0,10.368,0.691,0.0,0.0,0.0,-0.002,1.448,0.0,0.0,0.218,2.17,-1.415,0.0,0.0,-0.011,0.0,-0.197,0.683,0.0,0.247,0.0,0.0,-2.021,-0.402,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,0.0,0.0,0.0,0.0,0.0
diff --git a/workflow/tests/base_results/results_simulations_misc.csv b/workflow/tests/base_results/results_simulations_misc.csv
index ad6f534372..bcaa7af22c 100644
--- a/workflow/tests/base_results/results_simulations_misc.csv
+++ b/workflow/tests/base_results/results_simulations_misc.csv
@@ -2,6 +2,10 @@ HPXML,Unmet Hours: Heating (hr),Unmet Hours: Cooling (hr),Unmet Hours: EV Drivin
base-appliances-coal.xml,0.0,102.0,0.0,1286.4,890.5,11468.5,3942.3,2229.9,3677.3,3677.3,2229.9,3677.3,3677.3,33233.0,23022.0,0.0
base-appliances-dehumidifier-ef-portable.xml,0.0,0.0,0.0,1286.4,890.5,10049.5,3454.5,1897.2,3083.3,3083.3,1897.2,3083.3,3083.3,10347.0,16646.0,0.0
base-appliances-dehumidifier-ef-whole-home.xml,0.0,0.0,0.0,1286.4,890.5,10049.5,3454.5,1995.7,3083.3,3083.3,1995.7,3083.3,3083.3,10338.0,16646.0,0.0
+base-appliances-dehumidifier-mechvent-latent-degradation-model-0s.xml,0.0,0.0,0.0,1286.4,890.5,9734.7,3346.3,2044.1,3396.8,3396.8,2044.1,3396.8,3396.8,7788.0,17048.0,0.0
+base-appliances-dehumidifier-mechvent-latent-degradation-model-45s.xml,0.0,0.0,0.0,1286.4,890.5,9734.7,3346.3,1992.9,3418.5,3418.5,1992.9,3418.5,3418.5,7789.0,16975.0,0.0
+base-appliances-dehumidifier-mechvent-latent-degradation-model-ashp.xml,0.0,0.0,0.0,1286.4,890.5,9734.7,3346.3,2092.3,3102.7,3102.7,2092.3,3102.7,3102.7,8015.0,17053.0,0.0
+base-appliances-dehumidifier-mechvent.xml,0.0,0.0,0.0,1286.4,890.5,9734.7,3346.3,2086.4,3396.1,3396.1,2086.4,3396.1,3396.1,7788.0,17049.0,0.0
base-appliances-dehumidifier-multiple.xml,0.0,0.0,0.0,1286.4,890.5,10049.5,3454.5,2034.9,3147.5,3147.5,2034.9,3147.5,3147.5,10351.0,16646.0,0.0
base-appliances-dehumidifier.xml,0.0,0.0,0.0,1286.4,890.5,10049.5,3454.5,1987.0,3083.4,3083.4,1987.0,3083.4,3083.4,10322.0,16645.0,0.0
base-appliances-freezer-temperature-dependent-schedule.xml,0.0,97.0,0.0,1286.4,890.5,11468.5,3942.3,2327.6,3830.3,3830.3,2327.6,3830.3,3830.3,33117.0,23014.0,0.0
@@ -34,16 +38,16 @@ base-bldgtype-mf-unit-infil-leakiness-description.xml,0.0,0.0,0.0,1323.0,910.7,1
base-bldgtype-mf-unit-neighbor-shading.xml,0.0,0.0,0.0,1323.0,910.7,12046.2,4107.6,1704.5,2096.0,2096.0,1704.5,2096.0,2096.0,3864.0,8332.0,0.0
base-bldgtype-mf-unit-residents-1.xml,0.0,0.0,0.0,821.3,625.4,3517.0,1830.1,1109.8,1894.9,1894.9,1109.8,1894.9,1894.9,4052.0,7914.0,0.0
base-bldgtype-mf-unit-shared-boiler-chiller-baseboard.xml,0.0,0.0,0.0,1323.0,910.7,12046.2,4107.6,1712.2,2180.6,2180.6,1712.2,2180.6,2180.6,3876.0,8096.0,0.0
-base-bldgtype-mf-unit-shared-boiler-chiller-fan-coil-ducted.xml,0.0,2.0,0.0,1323.0,910.7,12046.2,4107.6,1754.3,2412.5,2412.5,1754.3,2412.5,2412.5,4035.0,9507.0,0.0
-base-bldgtype-mf-unit-shared-boiler-chiller-fan-coil.xml,0.0,0.0,0.0,1323.0,910.7,12046.2,4107.6,1727.0,2263.7,2263.7,1727.0,2263.7,2263.7,3871.0,8096.0,0.0
+base-bldgtype-mf-unit-shared-boiler-chiller-fan-coil-ducted.xml,0.0,2.0,0.0,1323.0,910.7,12046.2,4107.6,1754.3,2412.5,2412.5,1754.3,2412.5,2412.5,4079.0,9507.0,0.0
+base-bldgtype-mf-unit-shared-boiler-chiller-fan-coil.xml,0.0,0.0,0.0,1323.0,910.7,12046.2,4107.6,1727.0,2263.7,2263.7,1727.0,2263.7,2263.7,3870.0,8096.0,0.0
base-bldgtype-mf-unit-shared-boiler-chiller-water-loop-heat-pump.xml,0.0,2.0,0.0,1323.0,910.7,12046.2,4107.6,2278.6,3773.7,3773.7,2278.6,3773.7,3773.7,3965.0,9508.0,0.0
base-bldgtype-mf-unit-shared-boiler-cooling-tower-water-loop-heat-pump.xml,0.0,2.0,0.0,1323.0,910.7,12046.2,4107.6,1737.5,2354.2,2354.2,1737.5,2354.2,2354.2,3965.0,9507.0,0.0
base-bldgtype-mf-unit-shared-boiler-only-baseboard-combi-tankless.xml,0.0,0.0,0.0,1094.7,763.8,9607.3,3275.9,801.0,766.4,801.0,801.0,766.4,801.0,3975.0,0.0,0.0
base-bldgtype-mf-unit-shared-boiler-only-baseboard.xml,0.0,0.0,0.0,1323.0,910.7,12046.3,4107.6,1666.8,1579.9,1666.8,1666.8,1579.9,1666.8,3868.0,0.0,0.0
-base-bldgtype-mf-unit-shared-boiler-only-fan-coil-ducted.xml,0.0,0.0,0.0,1323.0,910.7,12046.3,4107.6,1684.7,1585.1,1684.7,1684.7,1585.1,1684.7,4036.0,0.0,0.0
-base-bldgtype-mf-unit-shared-boiler-only-fan-coil-eae.xml,0.0,0.0,0.0,1323.0,910.7,12046.3,4107.6,1699.8,1579.9,1699.8,1699.8,1579.9,1699.8,3873.0,0.0,0.0
-base-bldgtype-mf-unit-shared-boiler-only-fan-coil-fireplace-elec.xml,0.0,0.0,0.0,1323.0,910.7,12046.3,4107.6,1814.8,1585.1,1814.8,1814.8,1585.1,1814.8,3873.0,0.0,0.0
-base-bldgtype-mf-unit-shared-boiler-only-fan-coil.xml,0.0,0.0,0.0,1323.0,910.7,12046.3,4107.6,1702.1,1579.9,1702.1,1702.1,1579.9,1702.1,3873.0,0.0,0.0
+base-bldgtype-mf-unit-shared-boiler-only-fan-coil-ducted.xml,0.0,0.0,0.0,1323.0,910.7,12046.3,4107.6,1685.2,1585.1,1685.2,1685.2,1585.1,1685.2,4081.0,0.0,0.0
+base-bldgtype-mf-unit-shared-boiler-only-fan-coil-eae.xml,0.0,0.0,0.0,1323.0,910.7,12046.3,4107.6,1700.0,1579.9,1700.0,1700.0,1579.9,1700.0,3872.0,0.0,0.0
+base-bldgtype-mf-unit-shared-boiler-only-fan-coil-fireplace-elec.xml,0.0,0.0,0.0,1323.0,910.7,12046.3,4107.6,1814.9,1585.1,1814.9,1814.9,1585.1,1814.9,3873.0,0.0,0.0
+base-bldgtype-mf-unit-shared-boiler-only-fan-coil.xml,0.0,0.0,0.0,1323.0,910.7,12046.3,4107.6,1702.2,1579.9,1702.2,1702.2,1579.9,1702.2,3872.0,0.0,0.0
base-bldgtype-mf-unit-shared-boiler-only-water-loop-heat-pump.xml,0.0,0.0,0.0,1323.0,910.7,12046.3,4107.6,1690.7,1585.1,1690.7,1690.7,1585.1,1690.7,3966.0,0.0,0.0
base-bldgtype-mf-unit-shared-chiller-only-baseboard.xml,0.0,0.0,0.0,1323.0,910.7,12046.2,4107.6,1712.6,2238.2,2238.2,1712.6,2238.2,2238.2,0.0,8096.0,0.0
base-bldgtype-mf-unit-shared-chiller-only-fan-coil-ducted.xml,0.0,2.0,0.0,1323.0,910.7,12046.2,4107.6,1735.6,2628.2,2628.2,1735.6,2628.2,2628.2,0.0,9507.0,0.0
diff --git a/workflow/tests/base_results/results_simulations_panel.csv b/workflow/tests/base_results/results_simulations_panel.csv
index 2e39cdc268..85d73b805a 100644
--- a/workflow/tests/base_results/results_simulations_panel.csv
+++ b/workflow/tests/base_results/results_simulations_panel.csv
@@ -2,6 +2,10 @@ HPXML,Electric Panel Load: Heating (W),Electric Panel Load: Cooling (W),Electric
base-appliances-coal.xml,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,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,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0
base-appliances-dehumidifier-ef-portable.xml,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,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,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0
base-appliances-dehumidifier-ef-whole-home.xml,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,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,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0
+base-appliances-dehumidifier-mechvent-latent-degradation-model-0s.xml,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,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,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0
+base-appliances-dehumidifier-mechvent-latent-degradation-model-45s.xml,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,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,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0
+base-appliances-dehumidifier-mechvent-latent-degradation-model-ashp.xml,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,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,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0
+base-appliances-dehumidifier-mechvent.xml,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,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,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0
base-appliances-dehumidifier-multiple.xml,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,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,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0
base-appliances-dehumidifier.xml,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,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,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0
base-appliances-freezer-temperature-dependent-schedule.xml,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,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,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0