From 719024e3e35e4da389c887711ebf61b5a55b9ff1 Mon Sep 17 00:00:00 2001 From: Joe Robertson Date: Wed, 23 Oct 2024 13:50:24 -0700 Subject: [PATCH 01/33] Change several arguments from required to optional, and start to clean up hpxml_inputs.json. --- BuildResidentialHPXML/README.md | 216 ++++++++--------- BuildResidentialHPXML/measure.rb | 216 ++++++++--------- BuildResidentialHPXML/measure.xml | 380 +++++++++++++++++++++--------- workflow/hpxml_inputs.json | 158 ++----------- 4 files changed, 505 insertions(+), 465 deletions(-) diff --git a/BuildResidentialHPXML/README.md b/BuildResidentialHPXML/README.md index c322c00d0e..792a3a330f 100644 --- a/BuildResidentialHPXML/README.md +++ b/BuildResidentialHPXML/README.md @@ -613,7 +613,7 @@ The width of the garage. Enter zero for no garage. Only applies to single-family - **Units:** ``ft`` -- **Required:** ``true`` +- **Required:** ``false``
@@ -626,7 +626,7 @@ The depth of the garage. Only applies to single-family detached units. - **Units:** ``ft`` -- **Required:** ``true`` +- **Required:** ``false``
@@ -639,7 +639,7 @@ The fraction of the garage that is protruding from the conditioned space. Only a - **Units:** ``Frac`` -- **Required:** ``true`` +- **Required:** ``false``
@@ -650,7 +650,7 @@ The position of the garage. Only applies to single-family detached units. - **Name:** ``geometry_garage_position`` - **Type:** ``Choice`` -- **Required:** ``true`` +- **Required:** ``false`` - **Choices:** `Right`, `Left` @@ -678,7 +678,7 @@ The height of the foundation (e.g., 3ft for crawlspace, 8ft for basement). Only - **Units:** ``ft`` -- **Required:** ``true`` +- **Required:** ``false``
@@ -691,7 +691,7 @@ The depth above grade of the foundation wall. Only applies to basements/crawlspa - **Units:** ``ft`` -- **Required:** ``true`` +- **Required:** ``false``
@@ -728,7 +728,7 @@ The roof type of the building. Ignored if the building has a flat roof. - **Name:** ``geometry_roof_type`` - **Type:** ``Choice`` -- **Required:** ``true`` +- **Required:** ``false`` - **Choices:** `gable`, `hip` @@ -741,7 +741,7 @@ The roof pitch of the attic. Ignored if the building has a flat roof. - **Name:** ``geometry_roof_pitch`` - **Type:** ``Choice`` -- **Required:** ``true`` +- **Required:** ``false`` - **Choices:** `1:12`, `2:12`, `3:12`, `4:12`, `5:12`, `6:12`, `7:12`, `8:12`, `9:12`, `10:12`, `11:12`, `12:12` @@ -756,7 +756,7 @@ The eaves depth of the roof. - **Units:** ``ft`` -- **Required:** ``true`` +- **Required:** ``false``
@@ -769,7 +769,7 @@ The distance between the unit and the neighboring building to the front (not inc - **Units:** ``ft`` -- **Required:** ``true`` +- **Required:** ``false``
@@ -782,7 +782,7 @@ The distance between the unit and the neighboring building to the back (not incl - **Units:** ``ft`` -- **Required:** ``true`` +- **Required:** ``false``
@@ -795,7 +795,7 @@ The distance between the unit and the neighboring building to the left (not incl - **Units:** ``ft`` -- **Required:** ``true`` +- **Required:** ``false``
@@ -808,7 +808,7 @@ The distance between the unit and the neighboring building to the right (not inc - **Units:** ``ft`` -- **Required:** ``true`` +- **Required:** ``false``
@@ -873,7 +873,7 @@ Assembly R-value for the floor over the foundation. Ignored if the building has - **Units:** ``h-ft^2-R/Btu`` -- **Required:** ``true`` +- **Required:** ``false``
@@ -886,7 +886,7 @@ Assembly R-value for the floor over the garage. Ignored unless the building has - **Units:** ``h-ft^2-R/Btu`` -- **Required:** ``true`` +- **Required:** ``false``
@@ -938,7 +938,7 @@ Nominal R-value for the foundation wall insulation. Only applies to basements/cr - **Units:** ``h-ft^2-R/Btu`` -- **Required:** ``true`` +- **Required:** ``false``
@@ -1016,7 +1016,7 @@ Nominal R-value of the vertical slab perimeter insulation. Applies to slab-on-gr - **Units:** ``h-ft^2-R/Btu`` -- **Required:** ``true`` +- **Required:** ``false``
@@ -1029,7 +1029,7 @@ Depth from grade to bottom of vertical slab perimeter insulation. Applies to sla - **Units:** ``ft`` -- **Required:** ``true`` +- **Required:** ``false``
@@ -1081,7 +1081,7 @@ Nominal R-value of the horizontal under slab insulation. Applies to slab-on-grad - **Units:** ``h-ft^2-R/Btu`` -- **Required:** ``true`` +- **Required:** ``false``
@@ -1094,7 +1094,7 @@ Width from slab edge inward of horizontal under-slab insulation. Enter 999 to sp - **Units:** ``ft`` -- **Required:** ``true`` +- **Required:** ``false``
@@ -1380,7 +1380,7 @@ Ratio of window height to width. - **Units:** ``Frac`` -- **Required:** ``true`` +- **Required:** ``false``
@@ -1419,7 +1419,7 @@ Full-assembly NFRC U-factor. - **Units:** ``Btu/hr-ft^2-R`` -- **Required:** ``true`` +- **Required:** ``false``
@@ -1430,7 +1430,7 @@ Full-assembly NFRC solar heat gain coefficient. - **Name:** ``window_shgc`` - **Type:** ``Double`` -- **Required:** ``true`` +- **Required:** ``false``
@@ -1571,7 +1571,7 @@ The overhangs distance to the top of window for the front facade. - **Units:** ``ft`` -- **Required:** ``true`` +- **Required:** ``false``
@@ -1584,7 +1584,7 @@ The overhangs distance to the bottom of window for the front facade. - **Units:** ``ft`` -- **Required:** ``true`` +- **Required:** ``false``
@@ -1610,7 +1610,7 @@ The overhangs distance to the top of window for the back facade. - **Units:** ``ft`` -- **Required:** ``true`` +- **Required:** ``false``
@@ -1623,7 +1623,7 @@ The overhangs distance to the bottom of window for the back facade. - **Units:** ``ft`` -- **Required:** ``true`` +- **Required:** ``false``
@@ -1649,7 +1649,7 @@ The overhangs distance to the top of window for the left facade. - **Units:** ``ft`` -- **Required:** ``true`` +- **Required:** ``false``
@@ -1662,7 +1662,7 @@ The overhangs distance to the bottom of window for the left facade. - **Units:** ``ft`` -- **Required:** ``true`` +- **Required:** ``false``
@@ -1688,7 +1688,7 @@ The overhangs distance to the top of window for the right facade. - **Units:** ``ft`` -- **Required:** ``true`` +- **Required:** ``false``
@@ -1701,7 +1701,7 @@ The overhangs distance to the bottom of window for the right facade. - **Units:** ``ft`` -- **Required:** ``true`` +- **Required:** ``false``
@@ -1766,7 +1766,7 @@ Full-assembly NFRC U-factor. - **Units:** ``Btu/hr-ft^2-R`` -- **Required:** ``true`` +- **Required:** ``false``
@@ -1777,7 +1777,7 @@ Full-assembly NFRC solar heat gain coefficient. - **Name:** ``skylight_shgc`` - **Type:** ``Double`` -- **Required:** ``true`` +- **Required:** ``false``
@@ -1816,7 +1816,7 @@ R-value of the opaque door(s). - **Units:** ``h-ft^2-R/Btu`` -- **Required:** ``true`` +- **Required:** ``false``
@@ -1914,7 +1914,7 @@ The fuel type of the heating system. Ignored for ElectricResistance. - **Name:** ``heating_system_fuel`` - **Type:** ``Choice`` -- **Required:** ``true`` +- **Required:** ``false`` - **Choices:** `electricity`, `natural gas`, `fuel oil`, `propane`, `wood`, `wood pellets`, `coal` @@ -1929,7 +1929,7 @@ The rated heating efficiency value of the heating system. - **Units:** ``Frac`` -- **Required:** ``true`` +- **Required:** ``false``
@@ -1979,7 +1979,7 @@ The heating load served by the heating system. - **Units:** ``Frac`` -- **Required:** ``true`` +- **Required:** ``false``
@@ -2029,7 +2029,7 @@ The efficiency type of the cooling system. System types central air conditioner - **Name:** ``cooling_system_cooling_efficiency_type`` - **Type:** ``Choice`` -- **Required:** ``true`` +- **Required:** ``false`` - **Choices:** `SEER`, `SEER2`, `EER`, `CEER` @@ -2042,7 +2042,7 @@ The rated efficiency value of the cooling system. Ignored for evaporative cooler - **Name:** ``cooling_system_cooling_efficiency`` - **Type:** ``Double`` -- **Required:** ``true`` +- **Required:** ``false``
@@ -2118,7 +2118,7 @@ The cooling load served by the cooling system. - **Units:** ``Frac`` -- **Required:** ``true`` +- **Required:** ``false``
@@ -2244,7 +2244,7 @@ The heating efficiency type of heat pump. System types air-to-air and mini-split - **Name:** ``heat_pump_heating_efficiency_type`` - **Type:** ``Choice`` -- **Required:** ``true`` +- **Required:** ``false`` - **Choices:** `HSPF`, `HSPF2`, `COP` @@ -2257,7 +2257,7 @@ The rated heating efficiency value of the heat pump. - **Name:** ``heat_pump_heating_efficiency`` - **Type:** ``Double`` -- **Required:** ``true`` +- **Required:** ``false``
@@ -2268,7 +2268,7 @@ The cooling efficiency type of heat pump. System types air-to-air and mini-split - **Name:** ``heat_pump_cooling_efficiency_type`` - **Type:** ``Choice`` -- **Required:** ``true`` +- **Required:** ``false`` - **Choices:** `SEER`, `SEER2`, `EER`, `CEER` @@ -2281,7 +2281,7 @@ The rated cooling efficiency value of the heat pump. - **Name:** ``heat_pump_cooling_efficiency`` - **Type:** ``Double`` -- **Required:** ``true`` +- **Required:** ``false``
@@ -2420,7 +2420,7 @@ The heating load served by the heat pump. - **Units:** ``Frac`` -- **Required:** ``true`` +- **Required:** ``false``
@@ -2433,7 +2433,7 @@ The cooling load served by the heat pump. - **Units:** ``Frac`` -- **Required:** ``true`` +- **Required:** ``false``
@@ -2457,7 +2457,7 @@ The backup type of the heat pump. If 'integrated', represents e.g. built-in elec - **Name:** ``heat_pump_backup_type`` - **Type:** ``Choice`` -- **Required:** ``true`` +- **Required:** ``false`` - **Choices:** `none`, `integrated`, `separate` @@ -2494,7 +2494,7 @@ The backup fuel type of the heat pump. Only applies if Backup Type is 'integrate - **Name:** ``heat_pump_backup_fuel`` - **Type:** ``Choice`` -- **Required:** ``true`` +- **Required:** ``false`` - **Choices:** `electricity`, `natural gas`, `fuel oil`, `propane` @@ -2507,7 +2507,7 @@ The backup rated efficiency value of the heat pump. Percent for electricity fuel - **Name:** ``heat_pump_backup_heating_efficiency`` - **Type:** ``Double`` -- **Required:** ``true`` +- **Required:** ``false``
@@ -2886,7 +2886,7 @@ The fuel type of the second heating system. Ignored for ElectricResistance. - **Name:** ``heating_system_2_fuel`` - **Type:** ``Choice`` -- **Required:** ``true`` +- **Required:** ``false`` - **Choices:** `electricity`, `natural gas`, `fuel oil`, `propane`, `wood`, `wood pellets`, `coal` @@ -2901,7 +2901,7 @@ The rated heating efficiency value of the second heating system. - **Units:** ``Frac`` -- **Required:** ``true`` +- **Required:** ``false``
@@ -2951,7 +2951,7 @@ The heat load served fraction of the second heating system. Ignored if this heat - **Units:** ``Frac`` -- **Required:** ``true`` +- **Required:** ``false``
@@ -3041,7 +3041,7 @@ The leakage units of the ducts. - **Name:** ``ducts_leakage_units`` - **Type:** ``Choice`` -- **Required:** ``true`` +- **Required:** ``false`` - **Choices:** `CFM25`, `CFM50`, `Percent` @@ -3054,7 +3054,7 @@ The leakage value to outside for the supply ducts. - **Name:** ``ducts_supply_leakage_to_outside_value`` - **Type:** ``Double`` -- **Required:** ``true`` +- **Required:** ``false``
@@ -3080,7 +3080,7 @@ The nominal insulation r-value of the supply ducts excluding air films. Use 0 fo - **Units:** ``h-ft^2-R/Btu`` -- **Required:** ``true`` +- **Required:** ``false``
@@ -3143,7 +3143,7 @@ The leakage value to outside for the return ducts. - **Name:** ``ducts_return_leakage_to_outside_value`` - **Type:** ``Double`` -- **Required:** ``true`` +- **Required:** ``false``
@@ -3169,7 +3169,7 @@ The nominal insulation r-value of the return ducts excluding air films. Use 0 fo - **Units:** ``h-ft^2-R/Btu`` -- **Required:** ``true`` +- **Required:** ``false``
@@ -3284,7 +3284,7 @@ The total recovery efficiency type of the mechanical ventilation. - **Name:** ``mech_vent_recovery_efficiency_type`` - **Type:** ``Choice`` -- **Required:** ``true`` +- **Required:** ``false`` - **Choices:** `Unadjusted`, `Adjusted` @@ -3299,7 +3299,7 @@ The Unadjusted or Adjusted total recovery efficiency of the mechanical ventilati - **Units:** ``Frac`` -- **Required:** ``true`` +- **Required:** ``false``
@@ -3312,7 +3312,7 @@ The Unadjusted or Adjusted sensible recovery efficiency of the mechanical ventil - **Units:** ``Frac`` -- **Required:** ``true`` +- **Required:** ``false``
@@ -3338,7 +3338,7 @@ Number of dwelling units served by the mechanical ventilation system. Must be 1 - **Units:** ``#`` -- **Required:** ``true`` +- **Required:** ``false``
@@ -3455,7 +3455,7 @@ The flow rate of the second mechanical ventilation. - **Units:** ``CFM`` -- **Required:** ``true`` +- **Required:** ``false``
@@ -3468,7 +3468,7 @@ The hours in operation of the second mechanical ventilation. - **Units:** ``hrs/day`` -- **Required:** ``true`` +- **Required:** ``false``
@@ -3479,7 +3479,7 @@ The total recovery efficiency type of the second mechanical ventilation. - **Name:** ``mech_vent_2_recovery_efficiency_type`` - **Type:** ``Choice`` -- **Required:** ``true`` +- **Required:** ``false`` - **Choices:** `Unadjusted`, `Adjusted` @@ -3494,7 +3494,7 @@ The Unadjusted or Adjusted total recovery efficiency of the second mechanical ve - **Units:** ``Frac`` -- **Required:** ``true`` +- **Required:** ``false``
@@ -3507,7 +3507,7 @@ The Unadjusted or Adjusted sensible recovery efficiency of the second mechanical - **Units:** ``Frac`` -- **Required:** ``true`` +- **Required:** ``false``
@@ -3520,7 +3520,7 @@ The fan power of the second mechanical ventilation. - **Units:** ``W`` -- **Required:** ``true`` +- **Required:** ``false``
@@ -3711,7 +3711,7 @@ The fuel type of water heater. Ignored for heat pump water heater. - **Name:** ``water_heater_fuel_type`` - **Type:** ``Choice`` -- **Required:** ``true`` +- **Required:** ``false`` - **Choices:** `electricity`, `natural gas`, `fuel oil`, `propane`, `wood`, `coal` @@ -3750,7 +3750,7 @@ The efficiency type of water heater. Does not apply to space-heating boilers. - **Name:** ``water_heater_efficiency_type`` - **Type:** ``Choice`` -- **Required:** ``true`` +- **Required:** ``false`` - **Choices:** `EnergyFactor`, `UniformEnergyFactor` @@ -3763,7 +3763,7 @@ Rated Energy Factor or Uniform Energy Factor. Does not apply to space-heating bo - **Name:** ``water_heater_efficiency`` - **Type:** ``Double`` -- **Required:** ``true`` +- **Required:** ``false``
@@ -4102,7 +4102,7 @@ The collector area of the solar thermal system. - **Units:** ``ft^2`` -- **Required:** ``true`` +- **Required:** ``false``
@@ -4113,7 +4113,7 @@ The collector loop type of the solar thermal system. - **Name:** ``solar_thermal_collector_loop_type`` - **Type:** ``Choice`` -- **Required:** ``true`` +- **Required:** ``false`` - **Choices:** `liquid direct`, `liquid indirect`, `passive thermosyphon` @@ -4126,7 +4126,7 @@ The collector type of the solar thermal system. - **Name:** ``solar_thermal_collector_type`` - **Type:** ``Choice`` -- **Required:** ``true`` +- **Required:** ``false`` - **Choices:** `evacuated tube`, `single glazing black`, `double glazing black`, `integrated collector storage` @@ -4141,7 +4141,7 @@ The collector azimuth of the solar thermal system. Azimuth is measured clockwise - **Units:** ``degrees`` -- **Required:** ``true`` +- **Required:** ``false``
@@ -4152,7 +4152,7 @@ The collector tilt of the solar thermal system. Can also enter, e.g., RoofPitch, - **Name:** ``solar_thermal_collector_tilt`` - **Type:** ``String`` -- **Required:** ``true`` +- **Required:** ``false``
@@ -4165,7 +4165,7 @@ The collector rated optical efficiency of the solar thermal system. - **Units:** ``Frac`` -- **Required:** ``true`` +- **Required:** ``false``
@@ -4178,7 +4178,7 @@ The collector rated thermal losses of the solar thermal system. - **Units:** ``Btu/hr-ft^2-R`` -- **Required:** ``true`` +- **Required:** ``false``
@@ -4204,7 +4204,7 @@ The solar fraction of the solar thermal system. If provided, overrides all other - **Units:** ``Frac`` -- **Required:** ``true`` +- **Required:** ``false``
@@ -4267,7 +4267,7 @@ Array azimuth of the PV system. Azimuth is measured clockwise from north (e.g., - **Units:** ``degrees`` -- **Required:** ``true`` +- **Required:** ``false``
@@ -4278,7 +4278,7 @@ Array tilt of the PV system. Can also enter, e.g., RoofPitch, RoofPitch+20, Lati - **Name:** ``pv_system_array_tilt`` - **Type:** ``String`` -- **Required:** ``true`` +- **Required:** ``false``
@@ -4291,7 +4291,7 @@ Maximum power output of the PV system. For a shared system, this is the total bu - **Units:** ``W`` -- **Required:** ``true`` +- **Required:** ``false``
@@ -4393,7 +4393,7 @@ Array azimuth of the second PV system. Azimuth is measured clockwise from north - **Units:** ``degrees`` -- **Required:** ``true`` +- **Required:** ``false``
@@ -4404,7 +4404,7 @@ Array tilt of the second PV system. Can also enter, e.g., RoofPitch, RoofPitch+2 - **Name:** ``pv_system_2_array_tilt`` - **Type:** ``String`` -- **Required:** ``true`` +- **Required:** ``false``
@@ -4417,7 +4417,7 @@ Maximum power output of the second PV system. For a shared system, this is the t - **Units:** ``W`` -- **Required:** ``true`` +- **Required:** ``false``
@@ -4528,7 +4528,7 @@ Fraction of all lamps (interior) that are compact fluorescent. Lighting not spec - **Name:** ``lighting_interior_fraction_cfl`` - **Type:** ``Double`` -- **Required:** ``true`` +- **Required:** ``false``
@@ -4539,7 +4539,7 @@ Fraction of all lamps (interior) that are linear fluorescent. Lighting not speci - **Name:** ``lighting_interior_fraction_lfl`` - **Type:** ``Double`` -- **Required:** ``true`` +- **Required:** ``false``
@@ -4550,7 +4550,7 @@ Fraction of all lamps (interior) that are light emitting diodes. Lighting not sp - **Name:** ``lighting_interior_fraction_led`` - **Type:** ``Double`` -- **Required:** ``true`` +- **Required:** ``false``
@@ -4572,7 +4572,7 @@ Fraction of all lamps (exterior) that are compact fluorescent. Lighting not spec - **Name:** ``lighting_exterior_fraction_cfl`` - **Type:** ``Double`` -- **Required:** ``true`` +- **Required:** ``false``
@@ -4583,7 +4583,7 @@ Fraction of all lamps (exterior) that are linear fluorescent. Lighting not speci - **Name:** ``lighting_exterior_fraction_lfl`` - **Type:** ``Double`` -- **Required:** ``true`` +- **Required:** ``false``
@@ -4594,7 +4594,7 @@ Fraction of all lamps (exterior) that are light emitting diodes. Lighting not sp - **Name:** ``lighting_exterior_fraction_led`` - **Type:** ``Double`` -- **Required:** ``true`` +- **Required:** ``false``
@@ -4616,7 +4616,7 @@ Fraction of all lamps (garage) that are compact fluorescent. Lighting not specif - **Name:** ``lighting_garage_fraction_cfl`` - **Type:** ``Double`` -- **Required:** ``true`` +- **Required:** ``false``
@@ -4627,7 +4627,7 @@ Fraction of all lamps (garage) that are linear fluorescent. Lighting not specifi - **Name:** ``lighting_garage_fraction_lfl`` - **Type:** ``Double`` -- **Required:** ``true`` +- **Required:** ``false``
@@ -4638,7 +4638,7 @@ Fraction of all lamps (garage) that are light emitting diodes. Lighting not spec - **Name:** ``lighting_garage_fraction_led`` - **Type:** ``Double`` -- **Required:** ``true`` +- **Required:** ``false``
@@ -4708,7 +4708,7 @@ The efficiency type of dehumidifier. - **Name:** ``dehumidifier_efficiency_type`` - **Type:** ``Choice`` -- **Required:** ``true`` +- **Required:** ``false`` - **Choices:** `EnergyFactor`, `IntegratedEnergyFactor` @@ -4723,7 +4723,7 @@ The efficiency of the dehumidifier. - **Units:** ``liters/kWh`` -- **Required:** ``true`` +- **Required:** ``false``
@@ -4736,7 +4736,7 @@ The capacity (water removal rate) of the dehumidifier. - **Units:** ``pint/day`` -- **Required:** ``true`` +- **Required:** ``false``
@@ -4749,7 +4749,7 @@ The relative humidity setpoint of the dehumidifier. - **Units:** ``Frac`` -- **Required:** ``true`` +- **Required:** ``false``
@@ -4762,7 +4762,7 @@ The dehumidification load served fraction of the dehumidifier. - **Units:** ``Frac`` -- **Required:** ``true`` +- **Required:** ``false``
@@ -4797,7 +4797,7 @@ The efficiency type of the clothes washer. - **Name:** ``clothes_washer_efficiency_type`` - **Type:** ``Choice`` -- **Required:** ``true`` +- **Required:** ``false`` - **Choices:** `ModifiedEnergyFactor`, `IntegratedModifiedEnergyFactor` @@ -4936,7 +4936,7 @@ Type of fuel used by the clothes dryer. - **Name:** ``clothes_dryer_fuel_type`` - **Type:** ``Choice`` -- **Required:** ``true`` +- **Required:** ``false`` - **Choices:** `electricity`, `natural gas`, `fuel oil`, `propane`, `wood`, `coal` @@ -4949,7 +4949,7 @@ The efficiency type of the clothes dryer. - **Name:** ``clothes_dryer_efficiency_type`` - **Type:** ``Choice`` -- **Required:** ``true`` +- **Required:** ``false`` - **Choices:** `EnergyFactor`, `CombinedEnergyFactor` @@ -5023,7 +5023,7 @@ The efficiency type of dishwasher. - **Name:** ``dishwasher_efficiency_type`` - **Type:** ``Choice`` -- **Required:** ``true`` +- **Required:** ``false`` - **Choices:** `RatedAnnualkWh`, `EnergyFactor` @@ -5293,7 +5293,7 @@ Type of fuel used by the cooking range/oven. - **Name:** ``cooking_range_oven_fuel_type`` - **Type:** ``Choice`` -- **Required:** ``true`` +- **Required:** ``false`` - **Choices:** `electricity`, `natural gas`, `fuel oil`, `propane`, `wood`, `coal` @@ -5568,7 +5568,7 @@ The fuel type of the fuel loads grill. - **Name:** ``misc_fuel_loads_grill_fuel_type`` - **Type:** ``Choice`` -- **Required:** ``true`` +- **Required:** ``false`` - **Choices:** `natural gas`, `fuel oil`, `propane`, `wood`, `wood pellets` @@ -5616,7 +5616,7 @@ The fuel type of the fuel loads lighting. - **Name:** ``misc_fuel_loads_lighting_fuel_type`` - **Type:** ``Choice`` -- **Required:** ``true`` +- **Required:** ``false`` - **Choices:** `natural gas`, `fuel oil`, `propane`, `wood`, `wood pellets` @@ -5664,7 +5664,7 @@ The fuel type of the fuel loads fireplace. - **Name:** ``misc_fuel_loads_fireplace_fuel_type`` - **Type:** ``Choice`` -- **Required:** ``true`` +- **Required:** ``false`` - **Choices:** `natural gas`, `fuel oil`, `propane`, `wood`, `wood pellets` @@ -5762,7 +5762,7 @@ The type of pool heater. Use 'none' if there is no pool heater. - **Name:** ``pool_heater_type`` - **Type:** ``Choice`` -- **Required:** ``true`` +- **Required:** ``false`` - **Choices:** `none`, `electric resistance`, `gas fired`, `heat pump` @@ -5847,7 +5847,7 @@ The type of permanent spa heater. Use 'none' if there is no permanent spa heater - **Name:** ``permanent_spa_heater_type`` - **Type:** ``Choice`` -- **Required:** ``true`` +- **Required:** ``false`` - **Choices:** `none`, `electric resistance`, `gas fired`, `heat pump` diff --git a/BuildResidentialHPXML/measure.rb b/BuildResidentialHPXML/measure.rb index b819408084..a3783d6e56 100644 --- a/BuildResidentialHPXML/measure.rb +++ b/BuildResidentialHPXML/measure.rb @@ -365,21 +365,21 @@ def arguments(model) # rubocop:disable Lint/UnusedMethodArgument arg.setDescription("Describes the above-grade height of apartment units on upper floors or homes above ambient or belly-and-wing foundations. It is defined as the height of the lowest conditioned floor above grade and is used to calculate the wind speed for the infiltration model. If not provided, the OS-HPXML default (see HPXML Building Construction) is used.") args << arg - arg = OpenStudio::Measure::OSArgument::makeDoubleArgument('geometry_garage_width', true) + arg = OpenStudio::Measure::OSArgument::makeDoubleArgument('geometry_garage_width', false) arg.setDisplayName('Geometry: Garage Width') arg.setUnits('ft') arg.setDescription("The width of the garage. Enter zero for no garage. Only applies to #{HPXML::ResidentialTypeSFD} units.") arg.setDefaultValue(0.0) args << arg - arg = OpenStudio::Measure::OSArgument::makeDoubleArgument('geometry_garage_depth', true) + arg = OpenStudio::Measure::OSArgument::makeDoubleArgument('geometry_garage_depth', false) arg.setDisplayName('Geometry: Garage Depth') arg.setUnits('ft') arg.setDescription("The depth of the garage. Only applies to #{HPXML::ResidentialTypeSFD} units.") arg.setDefaultValue(20.0) args << arg - arg = OpenStudio::Measure::OSArgument::makeDoubleArgument('geometry_garage_protrusion', true) + arg = OpenStudio::Measure::OSArgument::makeDoubleArgument('geometry_garage_protrusion', false) arg.setDisplayName('Geometry: Garage Protrusion') arg.setUnits('Frac') arg.setDescription("The fraction of the garage that is protruding from the conditioned space. Only applies to #{HPXML::ResidentialTypeSFD} units.") @@ -390,7 +390,7 @@ def arguments(model) # rubocop:disable Lint/UnusedMethodArgument garage_position_choices << Constants::PositionRight garage_position_choices << Constants::PositionLeft - arg = OpenStudio::Measure::OSArgument::makeChoiceArgument('geometry_garage_position', garage_position_choices, true) + arg = OpenStudio::Measure::OSArgument::makeChoiceArgument('geometry_garage_position', garage_position_choices, false) arg.setDisplayName('Geometry: Garage Position') arg.setDescription("The position of the garage. Only applies to #{HPXML::ResidentialTypeSFD} units.") arg.setDefaultValue(Constants::PositionRight) @@ -414,14 +414,14 @@ def arguments(model) # rubocop:disable Lint/UnusedMethodArgument arg.setDefaultValue(HPXML::FoundationTypeSlab) args << arg - arg = OpenStudio::Measure::OSArgument::makeDoubleArgument('geometry_foundation_height', true) + arg = OpenStudio::Measure::OSArgument::makeDoubleArgument('geometry_foundation_height', false) arg.setDisplayName('Geometry: Foundation Height') arg.setUnits('ft') arg.setDescription('The height of the foundation (e.g., 3ft for crawlspace, 8ft for basement). Only applies to basements/crawlspaces.') arg.setDefaultValue(0.0) args << arg - arg = OpenStudio::Measure::OSArgument::makeDoubleArgument('geometry_foundation_height_above_grade', true) + arg = OpenStudio::Measure::OSArgument::makeDoubleArgument('geometry_foundation_height_above_grade', false) arg.setDisplayName('Geometry: Foundation Height Above Grade') arg.setUnits('ft') arg.setDescription('The depth above grade of the foundation wall. Only applies to basements/crawlspaces.') @@ -451,7 +451,7 @@ def arguments(model) # rubocop:disable Lint/UnusedMethodArgument roof_type_choices << Constants::RoofTypeGable roof_type_choices << Constants::RoofTypeHip - arg = OpenStudio::Measure::OSArgument::makeChoiceArgument('geometry_roof_type', roof_type_choices, true) + arg = OpenStudio::Measure::OSArgument::makeChoiceArgument('geometry_roof_type', roof_type_choices, false) arg.setDisplayName('Geometry: Roof Type') arg.setDescription('The roof type of the building. Ignored if the building has a flat roof.') arg.setDefaultValue(Constants::RoofTypeGable) @@ -471,41 +471,41 @@ def arguments(model) # rubocop:disable Lint/UnusedMethodArgument roof_pitch_choices << '11:12' roof_pitch_choices << '12:12' - arg = OpenStudio::Measure::OSArgument::makeChoiceArgument('geometry_roof_pitch', roof_pitch_choices, true) + arg = OpenStudio::Measure::OSArgument::makeChoiceArgument('geometry_roof_pitch', roof_pitch_choices, false) arg.setDisplayName('Geometry: Roof Pitch') arg.setDescription('The roof pitch of the attic. Ignored if the building has a flat roof.') arg.setDefaultValue('6:12') args << arg - arg = OpenStudio::Measure::OSArgument::makeDoubleArgument('geometry_eaves_depth', true) + arg = OpenStudio::Measure::OSArgument::makeDoubleArgument('geometry_eaves_depth', false) arg.setDisplayName('Geometry: Eaves Depth') arg.setUnits('ft') arg.setDescription('The eaves depth of the roof.') arg.setDefaultValue(2.0) args << arg - arg = OpenStudio::Measure::OSArgument::makeDoubleArgument('neighbor_front_distance', true) + arg = OpenStudio::Measure::OSArgument::makeDoubleArgument('neighbor_front_distance', false) arg.setDisplayName('Neighbor: Front Distance') arg.setUnits('ft') arg.setDescription('The distance between the unit and the neighboring building to the front (not including eaves). A value of zero indicates no neighbors. Used for shading.') arg.setDefaultValue(0.0) args << arg - arg = OpenStudio::Measure::OSArgument::makeDoubleArgument('neighbor_back_distance', true) + arg = OpenStudio::Measure::OSArgument::makeDoubleArgument('neighbor_back_distance', false) arg.setDisplayName('Neighbor: Back Distance') arg.setUnits('ft') arg.setDescription('The distance between the unit and the neighboring building to the back (not including eaves). A value of zero indicates no neighbors. Used for shading.') arg.setDefaultValue(0.0) args << arg - arg = OpenStudio::Measure::OSArgument::makeDoubleArgument('neighbor_left_distance', true) + arg = OpenStudio::Measure::OSArgument::makeDoubleArgument('neighbor_left_distance', false) arg.setDisplayName('Neighbor: Left Distance') arg.setUnits('ft') arg.setDescription('The distance between the unit and the neighboring building to the left (not including eaves). A value of zero indicates no neighbors. Used for shading.') arg.setDefaultValue(10.0) args << arg - arg = OpenStudio::Measure::OSArgument::makeDoubleArgument('neighbor_right_distance', true) + arg = OpenStudio::Measure::OSArgument::makeDoubleArgument('neighbor_right_distance', false) arg.setDisplayName('Neighbor: Right Distance') arg.setUnits('ft') arg.setDescription('The distance between the unit and the neighboring building to the right (not including eaves). A value of zero indicates no neighbors. Used for shading.') @@ -536,14 +536,14 @@ def arguments(model) # rubocop:disable Lint/UnusedMethodArgument arg.setDescription("The height of the neighboring building to the right. If not provided, the OS-HPXML default (see HPXML Neighbor Building) is used.") args << arg - arg = OpenStudio::Measure::OSArgument::makeDoubleArgument('floor_over_foundation_assembly_r', true) + arg = OpenStudio::Measure::OSArgument::makeDoubleArgument('floor_over_foundation_assembly_r', false) arg.setDisplayName('Floor: Over Foundation Assembly R-value') arg.setUnits('h-ft^2-R/Btu') arg.setDescription('Assembly R-value for the floor over the foundation. Ignored if the building has a slab-on-grade foundation.') arg.setDefaultValue(28.1) args << arg - arg = OpenStudio::Measure::OSArgument::makeDoubleArgument('floor_over_garage_assembly_r', true) + arg = OpenStudio::Measure::OSArgument::makeDoubleArgument('floor_over_garage_assembly_r', false) arg.setDisplayName('Floor: Over Garage Assembly R-value') arg.setUnits('h-ft^2-R/Btu') arg.setDescription('Assembly R-value for the floor over the garage. Ignored unless the building has a garage under conditioned space.') @@ -583,7 +583,7 @@ def arguments(model) # rubocop:disable Lint/UnusedMethodArgument arg.setDescription("The thickness of the foundation wall. If not provided, the OS-HPXML default (see HPXML Foundation Walls) is used.") args << arg - arg = OpenStudio::Measure::OSArgument::makeDoubleArgument('foundation_wall_insulation_r', true) + arg = OpenStudio::Measure::OSArgument::makeDoubleArgument('foundation_wall_insulation_r', false) arg.setDisplayName('Foundation Wall: Insulation Nominal R-value') arg.setUnits('h-ft^2-R/Btu') arg.setDescription('Nominal R-value for the foundation wall insulation. Only applies to basements/crawlspaces.') @@ -625,14 +625,14 @@ def arguments(model) # rubocop:disable Lint/UnusedMethodArgument arg.setDescription('Assembly R-value for the rim joists. Only applies to basements/crawlspaces. Required if a rim joist height is provided.') args << arg - arg = OpenStudio::Measure::OSArgument::makeDoubleArgument('slab_perimeter_insulation_r', true) + arg = OpenStudio::Measure::OSArgument::makeDoubleArgument('slab_perimeter_insulation_r', false) arg.setDisplayName('Slab: Perimeter Insulation Nominal R-value') arg.setUnits('h-ft^2-R/Btu') arg.setDescription('Nominal R-value of the vertical slab perimeter insulation. Applies to slab-on-grade foundations and basement/crawlspace floors.') arg.setDefaultValue(0) args << arg - arg = OpenStudio::Measure::OSArgument::makeDoubleArgument('slab_perimeter_insulation_depth', true) + arg = OpenStudio::Measure::OSArgument::makeDoubleArgument('slab_perimeter_insulation_depth', false) arg.setDisplayName('Slab: Perimeter Insulation Depth') arg.setUnits('ft') arg.setDescription('Depth from grade to bottom of vertical slab perimeter insulation. Applies to slab-on-grade foundations and basement/crawlspace floors.') @@ -657,14 +657,14 @@ def arguments(model) # rubocop:disable Lint/UnusedMethodArgument arg.setDescription('Depth of the slab exterior horizontal insulation measured from the top surface of the slab exterior horizontal insulation. Applies to slab-on-grade foundations and basement/crawlspace floors.') args << arg - arg = OpenStudio::Measure::OSArgument::makeDoubleArgument('slab_under_insulation_r', true) + arg = OpenStudio::Measure::OSArgument::makeDoubleArgument('slab_under_insulation_r', false) arg.setDisplayName('Slab: Under Slab Insulation Nominal R-value') arg.setUnits('h-ft^2-R/Btu') arg.setDescription('Nominal R-value of the horizontal under slab insulation. Applies to slab-on-grade foundations and basement/crawlspace floors.') arg.setDefaultValue(0) args << arg - arg = OpenStudio::Measure::OSArgument::makeDoubleArgument('slab_under_insulation_width', true) + arg = OpenStudio::Measure::OSArgument::makeDoubleArgument('slab_under_insulation_width', false) arg.setDisplayName('Slab: Under Slab Insulation Width') arg.setUnits('ft') arg.setDescription('Width from slab edge inward of horizontal under-slab insulation. Enter 999 to specify that the under slab insulation spans the entire slab. Applies to slab-on-grade foundations and basement/crawlspace floors.') @@ -857,7 +857,7 @@ def arguments(model) # rubocop:disable Lint/UnusedMethodArgument arg.setDefaultValue(0) args << arg - arg = OpenStudio::Measure::OSArgument::makeDoubleArgument('window_aspect_ratio', true) + arg = OpenStudio::Measure::OSArgument::makeDoubleArgument('window_aspect_ratio', false) arg.setDisplayName('Windows: Aspect Ratio') arg.setUnits('Frac') arg.setDescription('Ratio of window height to width.') @@ -876,14 +876,14 @@ def arguments(model) # rubocop:disable Lint/UnusedMethodArgument arg.setDescription("For operable windows, the number of days/week that windows can be opened by occupants for natural ventilation. If not provided, the OS-HPXML default (see HPXML Windows) is used.") args << arg - arg = OpenStudio::Measure::OSArgument::makeDoubleArgument('window_ufactor', true) + arg = OpenStudio::Measure::OSArgument::makeDoubleArgument('window_ufactor', false) arg.setDisplayName('Windows: U-Factor') arg.setUnits('Btu/hr-ft^2-R') arg.setDescription('Full-assembly NFRC U-factor.') arg.setDefaultValue(0.37) args << arg - arg = OpenStudio::Measure::OSArgument::makeDoubleArgument('window_shgc', true) + arg = OpenStudio::Measure::OSArgument::makeDoubleArgument('window_shgc', false) arg.setDisplayName('Windows: SHGC') arg.setDescription('Full-assembly NFRC solar heat gain coefficient.') arg.setDefaultValue(0.3) @@ -975,14 +975,14 @@ def arguments(model) # rubocop:disable Lint/UnusedMethodArgument arg.setDefaultValue(0) args << arg - arg = OpenStudio::Measure::OSArgument::makeDoubleArgument('overhangs_front_distance_to_top_of_window', true) + arg = OpenStudio::Measure::OSArgument::makeDoubleArgument('overhangs_front_distance_to_top_of_window', false) arg.setDisplayName('Overhangs: Front Distance to Top of Window') arg.setUnits('ft') arg.setDescription('The overhangs distance to the top of window for the front facade.') arg.setDefaultValue(0) args << arg - arg = OpenStudio::Measure::OSArgument::makeDoubleArgument('overhangs_front_distance_to_bottom_of_window', true) + arg = OpenStudio::Measure::OSArgument::makeDoubleArgument('overhangs_front_distance_to_bottom_of_window', false) arg.setDisplayName('Overhangs: Front Distance to Bottom of Window') arg.setUnits('ft') arg.setDescription('The overhangs distance to the bottom of window for the front facade.') @@ -996,14 +996,14 @@ def arguments(model) # rubocop:disable Lint/UnusedMethodArgument arg.setDefaultValue(0) args << arg - arg = OpenStudio::Measure::OSArgument::makeDoubleArgument('overhangs_back_distance_to_top_of_window', true) + arg = OpenStudio::Measure::OSArgument::makeDoubleArgument('overhangs_back_distance_to_top_of_window', false) arg.setDisplayName('Overhangs: Back Distance to Top of Window') arg.setUnits('ft') arg.setDescription('The overhangs distance to the top of window for the back facade.') arg.setDefaultValue(0) args << arg - arg = OpenStudio::Measure::OSArgument::makeDoubleArgument('overhangs_back_distance_to_bottom_of_window', true) + arg = OpenStudio::Measure::OSArgument::makeDoubleArgument('overhangs_back_distance_to_bottom_of_window', false) arg.setDisplayName('Overhangs: Back Distance to Bottom of Window') arg.setUnits('ft') arg.setDescription('The overhangs distance to the bottom of window for the back facade.') @@ -1017,14 +1017,14 @@ def arguments(model) # rubocop:disable Lint/UnusedMethodArgument arg.setDefaultValue(0) args << arg - arg = OpenStudio::Measure::OSArgument::makeDoubleArgument('overhangs_left_distance_to_top_of_window', true) + arg = OpenStudio::Measure::OSArgument::makeDoubleArgument('overhangs_left_distance_to_top_of_window', false) arg.setDisplayName('Overhangs: Left Distance to Top of Window') arg.setUnits('ft') arg.setDescription('The overhangs distance to the top of window for the left facade.') arg.setDefaultValue(0) args << arg - arg = OpenStudio::Measure::OSArgument::makeDoubleArgument('overhangs_left_distance_to_bottom_of_window', true) + arg = OpenStudio::Measure::OSArgument::makeDoubleArgument('overhangs_left_distance_to_bottom_of_window', false) arg.setDisplayName('Overhangs: Left Distance to Bottom of Window') arg.setUnits('ft') arg.setDescription('The overhangs distance to the bottom of window for the left facade.') @@ -1038,14 +1038,14 @@ def arguments(model) # rubocop:disable Lint/UnusedMethodArgument arg.setDefaultValue(0) args << arg - arg = OpenStudio::Measure::OSArgument::makeDoubleArgument('overhangs_right_distance_to_top_of_window', true) + arg = OpenStudio::Measure::OSArgument::makeDoubleArgument('overhangs_right_distance_to_top_of_window', false) arg.setDisplayName('Overhangs: Right Distance to Top of Window') arg.setUnits('ft') arg.setDescription('The overhangs distance to the top of window for the right facade.') arg.setDefaultValue(0) args << arg - arg = OpenStudio::Measure::OSArgument::makeDoubleArgument('overhangs_right_distance_to_bottom_of_window', true) + arg = OpenStudio::Measure::OSArgument::makeDoubleArgument('overhangs_right_distance_to_bottom_of_window', false) arg.setDisplayName('Overhangs: Right Distance to Bottom of Window') arg.setUnits('ft') arg.setDescription('The overhangs distance to the bottom of window for the right facade.') @@ -1080,14 +1080,14 @@ def arguments(model) # rubocop:disable Lint/UnusedMethodArgument arg.setDefaultValue(0) args << arg - arg = OpenStudio::Measure::OSArgument::makeDoubleArgument('skylight_ufactor', true) + arg = OpenStudio::Measure::OSArgument::makeDoubleArgument('skylight_ufactor', false) arg.setDisplayName('Skylights: U-Factor') arg.setUnits('Btu/hr-ft^2-R') arg.setDescription('Full-assembly NFRC U-factor.') arg.setDefaultValue(0.33) args << arg - skylight_shgc = OpenStudio::Measure::OSArgument::makeDoubleArgument('skylight_shgc', true) + skylight_shgc = OpenStudio::Measure::OSArgument::makeDoubleArgument('skylight_shgc', false) skylight_shgc.setDisplayName('Skylights: SHGC') skylight_shgc.setDescription('Full-assembly NFRC solar heat gain coefficient.') skylight_shgc.setDefaultValue(0.45) @@ -1105,7 +1105,7 @@ def arguments(model) # rubocop:disable Lint/UnusedMethodArgument arg.setDefaultValue(20.0) args << arg - arg = OpenStudio::Measure::OSArgument::makeDoubleArgument('door_rvalue', true) + arg = OpenStudio::Measure::OSArgument::makeDoubleArgument('door_rvalue', false) arg.setDisplayName('Doors: R-value') arg.setUnits('h-ft^2-R/Btu') arg.setDescription('R-value of the opaque door(s).') @@ -1209,13 +1209,13 @@ def arguments(model) # rubocop:disable Lint/UnusedMethodArgument arg.setDefaultValue(HPXML::HVACTypeFurnace) args << arg - arg = OpenStudio::Measure::OSArgument::makeChoiceArgument('heating_system_fuel', heating_system_fuel_choices, true) + arg = OpenStudio::Measure::OSArgument::makeChoiceArgument('heating_system_fuel', heating_system_fuel_choices, false) arg.setDisplayName('Heating System: Fuel Type') arg.setDescription("The fuel type of the heating system. Ignored for #{HPXML::HVACTypeElectricResistance}.") arg.setDefaultValue(HPXML::FuelTypeNaturalGas) args << arg - arg = OpenStudio::Measure::OSArgument::makeDoubleArgument('heating_system_heating_efficiency', true) + arg = OpenStudio::Measure::OSArgument::makeDoubleArgument('heating_system_heating_efficiency', false) arg.setDisplayName('Heating System: Rated AFUE or Percent') arg.setUnits('Frac') arg.setDescription('The rated heating efficiency value of the heating system.') @@ -1239,7 +1239,7 @@ def arguments(model) # rubocop:disable Lint/UnusedMethodArgument arg.setUnits('Btu/hr') args << arg - arg = OpenStudio::Measure::OSArgument::makeDoubleArgument('heating_system_fraction_heat_load_served', true) + arg = OpenStudio::Measure::OSArgument::makeDoubleArgument('heating_system_fraction_heat_load_served', false) arg.setDisplayName('Heating System: Fraction Heat Load Served') arg.setDescription('The heating load served by the heating system.') arg.setUnits('Frac') @@ -1264,13 +1264,13 @@ def arguments(model) # rubocop:disable Lint/UnusedMethodArgument arg.setDefaultValue(HPXML::HVACTypeCentralAirConditioner) args << arg - arg = OpenStudio::Measure::OSArgument::makeChoiceArgument('cooling_system_cooling_efficiency_type', cooling_efficiency_type_choices, true) + arg = OpenStudio::Measure::OSArgument::makeChoiceArgument('cooling_system_cooling_efficiency_type', cooling_efficiency_type_choices, false) arg.setDisplayName('Cooling System: Efficiency Type') arg.setDescription("The efficiency type of the cooling system. System types #{HPXML::HVACTypeCentralAirConditioner} and #{HPXML::HVACTypeMiniSplitAirConditioner} use #{HPXML::UnitsSEER} or #{HPXML::UnitsSEER2}. System types #{HPXML::HVACTypeRoomAirConditioner} and #{HPXML::HVACTypePTAC} use #{HPXML::UnitsEER} or #{HPXML::UnitsCEER}. Ignored for system type #{HPXML::HVACTypeEvaporativeCooler}.") arg.setDefaultValue(HPXML::UnitsSEER) args << arg - arg = OpenStudio::Measure::OSArgument::makeDoubleArgument('cooling_system_cooling_efficiency', true) + arg = OpenStudio::Measure::OSArgument::makeDoubleArgument('cooling_system_cooling_efficiency', false) arg.setDisplayName('Cooling System: Efficiency') arg.setDescription("The rated efficiency value of the cooling system. Ignored for #{HPXML::HVACTypeEvaporativeCooler}.") arg.setDefaultValue(13.0) @@ -1304,7 +1304,7 @@ def arguments(model) # rubocop:disable Lint/UnusedMethodArgument arg.setUnits('Btu/hr') args << arg - arg = OpenStudio::Measure::OSArgument::makeDoubleArgument('cooling_system_fraction_cool_load_served', true) + arg = OpenStudio::Measure::OSArgument::makeDoubleArgument('cooling_system_fraction_cool_load_served', false) arg.setDisplayName('Cooling System: Fraction Cool Load Served') arg.setDescription('The cooling load served by the cooling system.') arg.setUnits('Frac') @@ -1397,25 +1397,25 @@ def arguments(model) # rubocop:disable Lint/UnusedMethodArgument arg.setDefaultValue(Constants::None) args << arg - arg = OpenStudio::Measure::OSArgument::makeChoiceArgument('heat_pump_heating_efficiency_type', heat_pump_heating_efficiency_type_choices, true) + arg = OpenStudio::Measure::OSArgument::makeChoiceArgument('heat_pump_heating_efficiency_type', heat_pump_heating_efficiency_type_choices, false) arg.setDisplayName('Heat Pump: Heating Efficiency Type') arg.setDescription("The heating efficiency type of heat pump. System types #{HPXML::HVACTypeHeatPumpAirToAir} and #{HPXML::HVACTypeHeatPumpMiniSplit} use #{HPXML::UnitsHSPF} or #{HPXML::UnitsHSPF2}. System types #{HPXML::HVACTypeHeatPumpGroundToAir}, #{HPXML::HVACTypeHeatPumpPTHP} and #{HPXML::HVACTypeHeatPumpRoom} use #{HPXML::UnitsCOP}.") arg.setDefaultValue(HPXML::UnitsHSPF) args << arg - arg = OpenStudio::Measure::OSArgument::makeDoubleArgument('heat_pump_heating_efficiency', true) + arg = OpenStudio::Measure::OSArgument::makeDoubleArgument('heat_pump_heating_efficiency', false) arg.setDisplayName('Heat Pump: Heating Efficiency') arg.setDescription('The rated heating efficiency value of the heat pump.') arg.setDefaultValue(7.7) args << arg - arg = OpenStudio::Measure::OSArgument::makeChoiceArgument('heat_pump_cooling_efficiency_type', cooling_efficiency_type_choices, true) + arg = OpenStudio::Measure::OSArgument::makeChoiceArgument('heat_pump_cooling_efficiency_type', cooling_efficiency_type_choices, false) arg.setDisplayName('Heat Pump: Cooling Efficiency Type') arg.setDescription("The cooling efficiency type of heat pump. System types #{HPXML::HVACTypeHeatPumpAirToAir} and #{HPXML::HVACTypeHeatPumpMiniSplit} use #{HPXML::UnitsSEER} or #{HPXML::UnitsSEER2}. System types #{HPXML::HVACTypeHeatPumpGroundToAir}, #{HPXML::HVACTypeHeatPumpPTHP} and #{HPXML::HVACTypeHeatPumpRoom} use #{HPXML::UnitsEER}.") arg.setDefaultValue(HPXML::UnitsSEER) args << arg - arg = OpenStudio::Measure::OSArgument::makeDoubleArgument('heat_pump_cooling_efficiency', true) + arg = OpenStudio::Measure::OSArgument::makeDoubleArgument('heat_pump_cooling_efficiency', false) arg.setDisplayName('Heat Pump: Cooling Efficiency') arg.setDescription('The rated cooling efficiency value of the heat pump.') arg.setDefaultValue(13.0) @@ -1478,14 +1478,14 @@ def arguments(model) # rubocop:disable Lint/UnusedMethodArgument arg.setUnits('Btu/hr') args << arg - arg = OpenStudio::Measure::OSArgument::makeDoubleArgument('heat_pump_fraction_heat_load_served', true) + arg = OpenStudio::Measure::OSArgument::makeDoubleArgument('heat_pump_fraction_heat_load_served', false) arg.setDisplayName('Heat Pump: Fraction Heat Load Served') arg.setDescription('The heating load served by the heat pump.') arg.setUnits('Frac') arg.setDefaultValue(1) args << arg - arg = OpenStudio::Measure::OSArgument::makeDoubleArgument('heat_pump_fraction_cool_load_served', true) + arg = OpenStudio::Measure::OSArgument::makeDoubleArgument('heat_pump_fraction_cool_load_served', false) arg.setDisplayName('Heat Pump: Fraction Cool Load Served') arg.setDescription('The cooling load served by the heat pump.') arg.setUnits('Frac') @@ -1498,7 +1498,7 @@ def arguments(model) # rubocop:disable Lint/UnusedMethodArgument arg.setUnits('F') args << arg - arg = OpenStudio::Measure::OSArgument::makeChoiceArgument('heat_pump_backup_type', heat_pump_backup_type_choices, true) + arg = OpenStudio::Measure::OSArgument::makeChoiceArgument('heat_pump_backup_type', heat_pump_backup_type_choices, false) arg.setDisplayName('Heat Pump: Backup Type') arg.setDescription("The backup type of the heat pump. If '#{HPXML::HeatPumpBackupTypeIntegrated}', represents e.g. built-in electric strip heat or dual-fuel integrated furnace. If '#{HPXML::HeatPumpBackupTypeSeparate}', represents e.g. electric baseboard or boiler based on the Heating System 2 specified below. Use '#{Constants::None}' if there is no backup heating.") arg.setDefaultValue(HPXML::HeatPumpBackupTypeIntegrated) @@ -1515,13 +1515,13 @@ def arguments(model) # rubocop:disable Lint/UnusedMethodArgument arg.setUnits('Btu/hr') args << arg - arg = OpenStudio::Measure::OSArgument::makeChoiceArgument('heat_pump_backup_fuel', heat_pump_backup_fuel_choices, true) + arg = OpenStudio::Measure::OSArgument::makeChoiceArgument('heat_pump_backup_fuel', heat_pump_backup_fuel_choices, false) arg.setDisplayName('Heat Pump: Backup Fuel Type') arg.setDescription("The backup fuel type of the heat pump. Only applies if Backup Type is '#{HPXML::HeatPumpBackupTypeIntegrated}'.") arg.setDefaultValue(HPXML::FuelTypeElectricity) args << arg - arg = OpenStudio::Measure::OSArgument::makeDoubleArgument('heat_pump_backup_heating_efficiency', true) + arg = OpenStudio::Measure::OSArgument::makeDoubleArgument('heat_pump_backup_heating_efficiency', false) arg.setDisplayName('Heat Pump: Backup Rated Efficiency') arg.setDescription("The backup rated efficiency value of the heat pump. Percent for electricity fuel type. AFUE otherwise. Only applies if Backup Type is '#{HPXML::HeatPumpBackupTypeIntegrated}'.") arg.setDefaultValue(1) @@ -1737,13 +1737,13 @@ def arguments(model) # rubocop:disable Lint/UnusedMethodArgument arg.setDefaultValue(Constants::None) args << arg - arg = OpenStudio::Measure::OSArgument::makeChoiceArgument('heating_system_2_fuel', heating_system_fuel_choices, true) + arg = OpenStudio::Measure::OSArgument::makeChoiceArgument('heating_system_2_fuel', heating_system_fuel_choices, false) arg.setDisplayName('Heating System 2: Fuel Type') arg.setDescription("The fuel type of the second heating system. Ignored for #{HPXML::HVACTypeElectricResistance}.") arg.setDefaultValue(HPXML::FuelTypeElectricity) args << arg - arg = OpenStudio::Measure::OSArgument::makeDoubleArgument('heating_system_2_heating_efficiency', true) + arg = OpenStudio::Measure::OSArgument::makeDoubleArgument('heating_system_2_heating_efficiency', false) arg.setDisplayName('Heating System 2: Rated AFUE or Percent') arg.setUnits('Frac') arg.setDescription('The rated heating efficiency value of the second heating system.') @@ -1767,7 +1767,7 @@ def arguments(model) # rubocop:disable Lint/UnusedMethodArgument arg.setUnits('Btu/hr') args << arg - arg = OpenStudio::Measure::OSArgument::makeDoubleArgument('heating_system_2_fraction_heat_load_served', true) + arg = OpenStudio::Measure::OSArgument::makeDoubleArgument('heating_system_2_fraction_heat_load_served', false) arg.setDisplayName('Heating System 2: Fraction Heat Load Served') arg.setDescription('The heat load served fraction of the second heating system. Ignored if this heating system serves as a backup system for a heat pump.') arg.setUnits('Frac') @@ -1841,13 +1841,13 @@ def arguments(model) # rubocop:disable Lint/UnusedMethodArgument duct_location_choices << HPXML::LocationOtherNonFreezingSpace duct_location_choices << HPXML::LocationManufacturedHomeBelly - arg = OpenStudio::Measure::OSArgument::makeChoiceArgument('ducts_leakage_units', duct_leakage_units_choices, true) + arg = OpenStudio::Measure::OSArgument::makeChoiceArgument('ducts_leakage_units', duct_leakage_units_choices, false) arg.setDisplayName('Ducts: Leakage Units') arg.setDescription('The leakage units of the ducts.') arg.setDefaultValue(HPXML::UnitsPercent) args << arg - arg = OpenStudio::Measure::OSArgument::makeDoubleArgument('ducts_supply_leakage_to_outside_value', true) + arg = OpenStudio::Measure::OSArgument::makeDoubleArgument('ducts_supply_leakage_to_outside_value', false) arg.setDisplayName('Ducts: Supply Leakage to Outside Value') arg.setDescription('The leakage value to outside for the supply ducts.') arg.setDefaultValue(0.1) @@ -1858,7 +1858,7 @@ def arguments(model) # rubocop:disable Lint/UnusedMethodArgument arg.setDescription("The location of the supply ducts. If not provided, the OS-HPXML default (see Air Distribution) is used.") args << arg - arg = OpenStudio::Measure::OSArgument::makeDoubleArgument('ducts_supply_insulation_r', true) + arg = OpenStudio::Measure::OSArgument::makeDoubleArgument('ducts_supply_insulation_r', false) arg.setDisplayName('Ducts: Supply Insulation R-Value') arg.setDescription('The nominal insulation r-value of the supply ducts excluding air films. Use 0 for uninsulated ducts.') arg.setUnits('h-ft^2-R/Btu') @@ -1894,7 +1894,7 @@ def arguments(model) # rubocop:disable Lint/UnusedMethodArgument arg.setUnits('frac') args << arg - arg = OpenStudio::Measure::OSArgument::makeDoubleArgument('ducts_return_leakage_to_outside_value', true) + arg = OpenStudio::Measure::OSArgument::makeDoubleArgument('ducts_return_leakage_to_outside_value', false) arg.setDisplayName('Ducts: Return Leakage to Outside Value') arg.setDescription('The leakage value to outside for the return ducts.') arg.setDefaultValue(0.1) @@ -1905,7 +1905,7 @@ def arguments(model) # rubocop:disable Lint/UnusedMethodArgument arg.setDescription("The location of the return ducts. If not provided, the OS-HPXML default (see Air Distribution) is used.") args << arg - arg = OpenStudio::Measure::OSArgument::makeDoubleArgument('ducts_return_insulation_r', true) + arg = OpenStudio::Measure::OSArgument::makeDoubleArgument('ducts_return_insulation_r', false) arg.setDisplayName('Ducts: Return Insulation R-Value') arg.setDescription('The nominal insulation r-value of the return ducts excluding air films. Use 0 for uninsulated ducts.') arg.setUnits('h-ft^2-R/Btu') @@ -1972,20 +1972,20 @@ def arguments(model) # rubocop:disable Lint/UnusedMethodArgument arg.setUnits('hrs/day') args << arg - arg = OpenStudio::Measure::OSArgument::makeChoiceArgument('mech_vent_recovery_efficiency_type', mech_vent_recovery_efficiency_type_choices, true) + arg = OpenStudio::Measure::OSArgument::makeChoiceArgument('mech_vent_recovery_efficiency_type', mech_vent_recovery_efficiency_type_choices, false) arg.setDisplayName('Mechanical Ventilation: Total Recovery Efficiency Type') arg.setDescription('The total recovery efficiency type of the mechanical ventilation.') arg.setDefaultValue('Unadjusted') args << arg - arg = OpenStudio::Measure::OSArgument::makeDoubleArgument('mech_vent_total_recovery_efficiency', true) + arg = OpenStudio::Measure::OSArgument::makeDoubleArgument('mech_vent_total_recovery_efficiency', false) arg.setDisplayName('Mechanical Ventilation: Total Recovery Efficiency') arg.setDescription("The Unadjusted or Adjusted total recovery efficiency of the mechanical ventilation. Applies to #{HPXML::MechVentTypeERV}.") arg.setUnits('Frac') arg.setDefaultValue(0.48) args << arg - arg = OpenStudio::Measure::OSArgument::makeDoubleArgument('mech_vent_sensible_recovery_efficiency', true) + arg = OpenStudio::Measure::OSArgument::makeDoubleArgument('mech_vent_sensible_recovery_efficiency', false) arg.setDisplayName('Mechanical Ventilation: Sensible Recovery Efficiency') arg.setDescription("The Unadjusted or Adjusted sensible recovery efficiency of the mechanical ventilation. Applies to #{HPXML::MechVentTypeERV} and #{HPXML::MechVentTypeHRV}.") arg.setUnits('Frac') @@ -1998,7 +1998,7 @@ def arguments(model) # rubocop:disable Lint/UnusedMethodArgument arg.setUnits('W') args << arg - arg = OpenStudio::Measure::OSArgument::makeIntegerArgument('mech_vent_num_units_served', true) + arg = OpenStudio::Measure::OSArgument::makeIntegerArgument('mech_vent_num_units_served', false) arg.setDisplayName('Mechanical Ventilation: Number of Units Served') arg.setDescription("Number of dwelling units served by the mechanical ventilation system. Must be 1 if #{HPXML::ResidentialTypeSFD}. Used to apportion flow rate and fan power to the unit.") arg.setUnits('#') @@ -2062,41 +2062,41 @@ def arguments(model) # rubocop:disable Lint/UnusedMethodArgument arg.setDefaultValue(Constants::None) args << arg - arg = OpenStudio::Measure::OSArgument::makeDoubleArgument('mech_vent_2_flow_rate', true) + arg = OpenStudio::Measure::OSArgument::makeDoubleArgument('mech_vent_2_flow_rate', false) arg.setDisplayName('Mechanical Ventilation 2: Flow Rate') arg.setDescription('The flow rate of the second mechanical ventilation.') arg.setUnits('CFM') arg.setDefaultValue(110) args << arg - arg = OpenStudio::Measure::OSArgument::makeDoubleArgument('mech_vent_2_hours_in_operation', true) + arg = OpenStudio::Measure::OSArgument::makeDoubleArgument('mech_vent_2_hours_in_operation', false) arg.setDisplayName('Mechanical Ventilation 2: Hours In Operation') arg.setDescription('The hours in operation of the second mechanical ventilation.') arg.setUnits('hrs/day') arg.setDefaultValue(24) args << arg - arg = OpenStudio::Measure::OSArgument::makeChoiceArgument('mech_vent_2_recovery_efficiency_type', mech_vent_recovery_efficiency_type_choices, true) + arg = OpenStudio::Measure::OSArgument::makeChoiceArgument('mech_vent_2_recovery_efficiency_type', mech_vent_recovery_efficiency_type_choices, false) arg.setDisplayName('Mechanical Ventilation 2: Total Recovery Efficiency Type') arg.setDescription('The total recovery efficiency type of the second mechanical ventilation.') arg.setDefaultValue('Unadjusted') args << arg - arg = OpenStudio::Measure::OSArgument::makeDoubleArgument('mech_vent_2_total_recovery_efficiency', true) + arg = OpenStudio::Measure::OSArgument::makeDoubleArgument('mech_vent_2_total_recovery_efficiency', false) arg.setDisplayName('Mechanical Ventilation 2: Total Recovery Efficiency') arg.setDescription("The Unadjusted or Adjusted total recovery efficiency of the second mechanical ventilation. Applies to #{HPXML::MechVentTypeERV}.") arg.setUnits('Frac') arg.setDefaultValue(0.48) args << arg - arg = OpenStudio::Measure::OSArgument::makeDoubleArgument('mech_vent_2_sensible_recovery_efficiency', true) + arg = OpenStudio::Measure::OSArgument::makeDoubleArgument('mech_vent_2_sensible_recovery_efficiency', false) arg.setDisplayName('Mechanical Ventilation 2: Sensible Recovery Efficiency') arg.setDescription("The Unadjusted or Adjusted sensible recovery efficiency of the second mechanical ventilation. Applies to #{HPXML::MechVentTypeERV} and #{HPXML::MechVentTypeHRV}.") arg.setUnits('Frac') arg.setDefaultValue(0.72) args << arg - arg = OpenStudio::Measure::OSArgument::makeDoubleArgument('mech_vent_2_fan_power', true) + arg = OpenStudio::Measure::OSArgument::makeDoubleArgument('mech_vent_2_fan_power', false) arg.setDisplayName('Mechanical Ventilation 2: Fan Power') arg.setDescription('The fan power of the second mechanical ventilation.') arg.setUnits('W') @@ -2231,7 +2231,7 @@ def arguments(model) # rubocop:disable Lint/UnusedMethodArgument arg.setDefaultValue(HPXML::WaterHeaterTypeStorage) args << arg - arg = OpenStudio::Measure::OSArgument::makeChoiceArgument('water_heater_fuel_type', water_heater_fuel_choices, true) + arg = OpenStudio::Measure::OSArgument::makeChoiceArgument('water_heater_fuel_type', water_heater_fuel_choices, false) arg.setDisplayName('Water Heater: Fuel Type') arg.setDescription("The fuel type of water heater. Ignored for #{HPXML::WaterHeaterTypeHeatPump}.") arg.setDefaultValue(HPXML::FuelTypeNaturalGas) @@ -2248,13 +2248,13 @@ def arguments(model) # rubocop:disable Lint/UnusedMethodArgument arg.setUnits('gal') args << arg - arg = OpenStudio::Measure::OSArgument::makeChoiceArgument('water_heater_efficiency_type', water_heater_efficiency_type_choices, true) + arg = OpenStudio::Measure::OSArgument::makeChoiceArgument('water_heater_efficiency_type', water_heater_efficiency_type_choices, false) arg.setDisplayName('Water Heater: Efficiency Type') arg.setDescription('The efficiency type of water heater. Does not apply to space-heating boilers.') arg.setDefaultValue('EnergyFactor') args << arg - arg = OpenStudio::Measure::OSArgument::makeDoubleArgument('water_heater_efficiency', true) + arg = OpenStudio::Measure::OSArgument::makeDoubleArgument('water_heater_efficiency', false) arg.setDisplayName('Water Heater: Efficiency') arg.setDescription('Rated Energy Factor or Uniform Energy Factor. Does not apply to space-heating boilers.') arg.setDefaultValue(0.67) @@ -2450,47 +2450,47 @@ def arguments(model) # rubocop:disable Lint/UnusedMethodArgument arg.setDefaultValue(Constants::None) args << arg - arg = OpenStudio::Measure::OSArgument::makeDoubleArgument('solar_thermal_collector_area', true) + arg = OpenStudio::Measure::OSArgument::makeDoubleArgument('solar_thermal_collector_area', false) arg.setDisplayName('Solar Thermal: Collector Area') arg.setUnits('ft^2') arg.setDescription('The collector area of the solar thermal system.') arg.setDefaultValue(40.0) args << arg - arg = OpenStudio::Measure::OSArgument::makeChoiceArgument('solar_thermal_collector_loop_type', solar_thermal_collector_loop_type_choices, true) + arg = OpenStudio::Measure::OSArgument::makeChoiceArgument('solar_thermal_collector_loop_type', solar_thermal_collector_loop_type_choices, false) arg.setDisplayName('Solar Thermal: Collector Loop Type') arg.setDescription('The collector loop type of the solar thermal system.') arg.setDefaultValue(HPXML::SolarThermalLoopTypeDirect) args << arg - arg = OpenStudio::Measure::OSArgument::makeChoiceArgument('solar_thermal_collector_type', solar_thermal_collector_type_choices, true) + arg = OpenStudio::Measure::OSArgument::makeChoiceArgument('solar_thermal_collector_type', solar_thermal_collector_type_choices, false) arg.setDisplayName('Solar Thermal: Collector Type') arg.setDescription('The collector type of the solar thermal system.') arg.setDefaultValue(HPXML::SolarThermalCollectorTypeEvacuatedTube) args << arg - arg = OpenStudio::Measure::OSArgument::makeDoubleArgument('solar_thermal_collector_azimuth', true) + arg = OpenStudio::Measure::OSArgument::makeDoubleArgument('solar_thermal_collector_azimuth', false) arg.setDisplayName('Solar Thermal: Collector Azimuth') arg.setUnits('degrees') arg.setDescription('The collector azimuth of the solar thermal system. Azimuth is measured clockwise from north (e.g., North=0, East=90, South=180, West=270).') arg.setDefaultValue(180) args << arg - arg = OpenStudio::Measure::OSArgument::makeStringArgument('solar_thermal_collector_tilt', true) + arg = OpenStudio::Measure::OSArgument::makeStringArgument('solar_thermal_collector_tilt', false) arg.setDisplayName('Solar Thermal: Collector Tilt') arg.setUnits('degrees') arg.setDescription('The collector tilt of the solar thermal system. Can also enter, e.g., RoofPitch, RoofPitch+20, Latitude, Latitude-15, etc.') arg.setDefaultValue('RoofPitch') args << arg - arg = OpenStudio::Measure::OSArgument::makeDoubleArgument('solar_thermal_collector_rated_optical_efficiency', true) + arg = OpenStudio::Measure::OSArgument::makeDoubleArgument('solar_thermal_collector_rated_optical_efficiency', false) arg.setDisplayName('Solar Thermal: Collector Rated Optical Efficiency') arg.setUnits('Frac') arg.setDescription('The collector rated optical efficiency of the solar thermal system.') arg.setDefaultValue(0.5) args << arg - arg = OpenStudio::Measure::OSArgument::makeDoubleArgument('solar_thermal_collector_rated_thermal_losses', true) + arg = OpenStudio::Measure::OSArgument::makeDoubleArgument('solar_thermal_collector_rated_thermal_losses', false) arg.setDisplayName('Solar Thermal: Collector Rated Thermal Losses') arg.setUnits('Btu/hr-ft^2-R') arg.setDescription('The collector rated thermal losses of the solar thermal system.') @@ -2503,7 +2503,7 @@ def arguments(model) # rubocop:disable Lint/UnusedMethodArgument arg.setDescription("The storage volume of the solar thermal system. If not provided, the OS-HPXML default (see Detailed Inputs) is used.") args << arg - arg = OpenStudio::Measure::OSArgument::makeDoubleArgument('solar_thermal_solar_fraction', true) + arg = OpenStudio::Measure::OSArgument::makeDoubleArgument('solar_thermal_solar_fraction', false) arg.setDisplayName('Solar Thermal: Solar Fraction') arg.setUnits('Frac') arg.setDescription('The solar fraction of the solar thermal system. If provided, overrides all other solar thermal inputs.') @@ -2546,21 +2546,21 @@ def arguments(model) # rubocop:disable Lint/UnusedMethodArgument arg.setDescription("Type of tracking for the PV system. If not provided, the OS-HPXML default (see HPXML Photovoltaics) is used.") args << arg - arg = OpenStudio::Measure::OSArgument::makeDoubleArgument('pv_system_array_azimuth', true) + arg = OpenStudio::Measure::OSArgument::makeDoubleArgument('pv_system_array_azimuth', false) arg.setDisplayName('PV System: Array Azimuth') arg.setUnits('degrees') arg.setDescription('Array azimuth of the PV system. Azimuth is measured clockwise from north (e.g., North=0, East=90, South=180, West=270).') arg.setDefaultValue(180) args << arg - arg = OpenStudio::Measure::OSArgument::makeStringArgument('pv_system_array_tilt', true) + arg = OpenStudio::Measure::OSArgument::makeStringArgument('pv_system_array_tilt', false) arg.setDisplayName('PV System: Array Tilt') arg.setUnits('degrees') arg.setDescription('Array tilt of the PV system. Can also enter, e.g., RoofPitch, RoofPitch+20, Latitude, Latitude-15, etc.') arg.setDefaultValue('RoofPitch') args << arg - arg = OpenStudio::Measure::OSArgument::makeDoubleArgument('pv_system_max_power_output', true) + arg = OpenStudio::Measure::OSArgument::makeDoubleArgument('pv_system_max_power_output', false) arg.setDisplayName('PV System: Maximum Power Output') arg.setUnits('W') arg.setDescription('Maximum power output of the PV system. For a shared system, this is the total building maximum power output.') @@ -2606,21 +2606,21 @@ def arguments(model) # rubocop:disable Lint/UnusedMethodArgument arg.setDescription("Type of tracking for the second PV system. If not provided, the OS-HPXML default (see HPXML Photovoltaics) is used.") args << arg - arg = OpenStudio::Measure::OSArgument::makeDoubleArgument('pv_system_2_array_azimuth', true) + arg = OpenStudio::Measure::OSArgument::makeDoubleArgument('pv_system_2_array_azimuth', false) arg.setDisplayName('PV System 2: Array Azimuth') arg.setUnits('degrees') arg.setDescription('Array azimuth of the second PV system. Azimuth is measured clockwise from north (e.g., North=0, East=90, South=180, West=270).') arg.setDefaultValue(180) args << arg - arg = OpenStudio::Measure::OSArgument::makeStringArgument('pv_system_2_array_tilt', true) + arg = OpenStudio::Measure::OSArgument::makeStringArgument('pv_system_2_array_tilt', false) arg.setDisplayName('PV System 2: Array Tilt') arg.setUnits('degrees') arg.setDescription('Array tilt of the second PV system. Can also enter, e.g., RoofPitch, RoofPitch+20, Latitude, Latitude-15, etc.') arg.setDefaultValue('RoofPitch') args << arg - arg = OpenStudio::Measure::OSArgument::makeDoubleArgument('pv_system_2_max_power_output', true) + arg = OpenStudio::Measure::OSArgument::makeDoubleArgument('pv_system_2_max_power_output', false) arg.setDisplayName('PV System 2: Maximum Power Output') arg.setUnits('W') arg.setDescription('Maximum power output of the second PV system. For a shared system, this is the total building maximum power output.') @@ -2688,19 +2688,19 @@ def arguments(model) # rubocop:disable Lint/UnusedMethodArgument arg.setDefaultValue(true) args << arg - arg = OpenStudio::Measure::OSArgument::makeDoubleArgument('lighting_interior_fraction_cfl', true) + arg = OpenStudio::Measure::OSArgument::makeDoubleArgument('lighting_interior_fraction_cfl', false) arg.setDisplayName('Lighting: Interior Fraction CFL') arg.setDescription('Fraction of all lamps (interior) that are compact fluorescent. Lighting not specified as CFL, LFL, or LED is assumed to be incandescent.') arg.setDefaultValue(0.1) args << arg - arg = OpenStudio::Measure::OSArgument::makeDoubleArgument('lighting_interior_fraction_lfl', true) + arg = OpenStudio::Measure::OSArgument::makeDoubleArgument('lighting_interior_fraction_lfl', false) arg.setDisplayName('Lighting: Interior Fraction LFL') arg.setDescription('Fraction of all lamps (interior) that are linear fluorescent. Lighting not specified as CFL, LFL, or LED is assumed to be incandescent.') arg.setDefaultValue(0.0) args << arg - arg = OpenStudio::Measure::OSArgument::makeDoubleArgument('lighting_interior_fraction_led', true) + arg = OpenStudio::Measure::OSArgument::makeDoubleArgument('lighting_interior_fraction_led', false) arg.setDisplayName('Lighting: Interior Fraction LED') arg.setDescription('Fraction of all lamps (interior) that are light emitting diodes. Lighting not specified as CFL, LFL, or LED is assumed to be incandescent.') arg.setDefaultValue(0.0) @@ -2711,19 +2711,19 @@ def arguments(model) # rubocop:disable Lint/UnusedMethodArgument arg.setDescription("Multiplier on the lighting energy usage (interior) that can reflect, e.g., high/low usage occupants. If not provided, the OS-HPXML default (see HPXML Lighting) is used.") args << arg - arg = OpenStudio::Measure::OSArgument::makeDoubleArgument('lighting_exterior_fraction_cfl', true) + arg = OpenStudio::Measure::OSArgument::makeDoubleArgument('lighting_exterior_fraction_cfl', false) arg.setDisplayName('Lighting: Exterior Fraction CFL') arg.setDescription('Fraction of all lamps (exterior) that are compact fluorescent. Lighting not specified as CFL, LFL, or LED is assumed to be incandescent.') arg.setDefaultValue(0.0) args << arg - arg = OpenStudio::Measure::OSArgument::makeDoubleArgument('lighting_exterior_fraction_lfl', true) + arg = OpenStudio::Measure::OSArgument::makeDoubleArgument('lighting_exterior_fraction_lfl', false) arg.setDisplayName('Lighting: Exterior Fraction LFL') arg.setDescription('Fraction of all lamps (exterior) that are linear fluorescent. Lighting not specified as CFL, LFL, or LED is assumed to be incandescent.') arg.setDefaultValue(0.0) args << arg - arg = OpenStudio::Measure::OSArgument::makeDoubleArgument('lighting_exterior_fraction_led', true) + arg = OpenStudio::Measure::OSArgument::makeDoubleArgument('lighting_exterior_fraction_led', false) arg.setDisplayName('Lighting: Exterior Fraction LED') arg.setDescription('Fraction of all lamps (exterior) that are light emitting diodes. Lighting not specified as CFL, LFL, or LED is assumed to be incandescent.') arg.setDefaultValue(0.0) @@ -2734,19 +2734,19 @@ def arguments(model) # rubocop:disable Lint/UnusedMethodArgument arg.setDescription("Multiplier on the lighting energy usage (exterior) that can reflect, e.g., high/low usage occupants. If not provided, the OS-HPXML default (see HPXML Lighting) is used.") args << arg - arg = OpenStudio::Measure::OSArgument::makeDoubleArgument('lighting_garage_fraction_cfl', true) + arg = OpenStudio::Measure::OSArgument::makeDoubleArgument('lighting_garage_fraction_cfl', false) arg.setDisplayName('Lighting: Garage Fraction CFL') arg.setDescription('Fraction of all lamps (garage) that are compact fluorescent. Lighting not specified as CFL, LFL, or LED is assumed to be incandescent.') arg.setDefaultValue(0.0) args << arg - arg = OpenStudio::Measure::OSArgument::makeDoubleArgument('lighting_garage_fraction_lfl', true) + arg = OpenStudio::Measure::OSArgument::makeDoubleArgument('lighting_garage_fraction_lfl', false) arg.setDisplayName('Lighting: Garage Fraction LFL') arg.setDescription('Fraction of all lamps (garage) that are linear fluorescent. Lighting not specified as CFL, LFL, or LED is assumed to be incandescent.') arg.setDefaultValue(0.0) args << arg - arg = OpenStudio::Measure::OSArgument::makeDoubleArgument('lighting_garage_fraction_led', true) + arg = OpenStudio::Measure::OSArgument::makeDoubleArgument('lighting_garage_fraction_led', false) arg.setDisplayName('Lighting: Garage Fraction LED') arg.setDescription('Fraction of all lamps (garage) that are light emitting diodes. Lighting not specified as CFL, LFL, or LED is assumed to be incandescent.') arg.setDefaultValue(0.0) @@ -2789,34 +2789,34 @@ def arguments(model) # rubocop:disable Lint/UnusedMethodArgument arg.setDefaultValue(Constants::None) args << arg - arg = OpenStudio::Measure::OSArgument::makeChoiceArgument('dehumidifier_efficiency_type', dehumidifier_efficiency_type_choices, true) + arg = OpenStudio::Measure::OSArgument::makeChoiceArgument('dehumidifier_efficiency_type', dehumidifier_efficiency_type_choices, false) arg.setDisplayName('Dehumidifier: Efficiency Type') arg.setDescription('The efficiency type of dehumidifier.') arg.setDefaultValue('IntegratedEnergyFactor') args << arg - arg = OpenStudio::Measure::OSArgument::makeDoubleArgument('dehumidifier_efficiency', true) + arg = OpenStudio::Measure::OSArgument::makeDoubleArgument('dehumidifier_efficiency', false) arg.setDisplayName('Dehumidifier: Efficiency') arg.setUnits('liters/kWh') arg.setDescription('The efficiency of the dehumidifier.') arg.setDefaultValue(1.5) args << arg - arg = OpenStudio::Measure::OSArgument::makeDoubleArgument('dehumidifier_capacity', true) + arg = OpenStudio::Measure::OSArgument::makeDoubleArgument('dehumidifier_capacity', false) arg.setDisplayName('Dehumidifier: Capacity') arg.setDescription('The capacity (water removal rate) of the dehumidifier.') arg.setUnits('pint/day') arg.setDefaultValue(40) args << arg - arg = OpenStudio::Measure::OSArgument::makeDoubleArgument('dehumidifier_rh_setpoint', true) + arg = OpenStudio::Measure::OSArgument::makeDoubleArgument('dehumidifier_rh_setpoint', false) arg.setDisplayName('Dehumidifier: Relative Humidity Setpoint') arg.setDescription('The relative humidity setpoint of the dehumidifier.') arg.setUnits('Frac') arg.setDefaultValue(0.5) args << arg - arg = OpenStudio::Measure::OSArgument::makeDoubleArgument('dehumidifier_fraction_dehumidification_load_served', true) + arg = OpenStudio::Measure::OSArgument::makeDoubleArgument('dehumidifier_fraction_dehumidification_load_served', false) arg.setDisplayName('Dehumidifier: Fraction Dehumidification Load Served') arg.setDescription('The dehumidification load served fraction of the dehumidifier.') arg.setUnits('Frac') @@ -2848,7 +2848,7 @@ def arguments(model) # rubocop:disable Lint/UnusedMethodArgument arg.setDescription("The space type for the clothes washer location. If not provided, the OS-HPXML default (see HPXML Clothes Washer) is used.") args << arg - arg = OpenStudio::Measure::OSArgument::makeChoiceArgument('clothes_washer_efficiency_type', clothes_washer_efficiency_type_choices, true) + arg = OpenStudio::Measure::OSArgument::makeChoiceArgument('clothes_washer_efficiency_type', clothes_washer_efficiency_type_choices, false) arg.setDisplayName('Clothes Washer: Efficiency Type') arg.setDescription('The efficiency type of the clothes washer.') arg.setDefaultValue('IntegratedModifiedEnergyFactor') @@ -2924,13 +2924,13 @@ def arguments(model) # rubocop:disable Lint/UnusedMethodArgument clothes_dryer_efficiency_type_choices << 'EnergyFactor' clothes_dryer_efficiency_type_choices << 'CombinedEnergyFactor' - arg = OpenStudio::Measure::OSArgument::makeChoiceArgument('clothes_dryer_fuel_type', clothes_dryer_fuel_choices, true) + arg = OpenStudio::Measure::OSArgument::makeChoiceArgument('clothes_dryer_fuel_type', clothes_dryer_fuel_choices, false) arg.setDisplayName('Clothes Dryer: Fuel Type') arg.setDescription('Type of fuel used by the clothes dryer.') arg.setDefaultValue(HPXML::FuelTypeNaturalGas) args << arg - arg = OpenStudio::Measure::OSArgument::makeChoiceArgument('clothes_dryer_efficiency_type', clothes_dryer_efficiency_type_choices, true) + arg = OpenStudio::Measure::OSArgument::makeChoiceArgument('clothes_dryer_efficiency_type', clothes_dryer_efficiency_type_choices, false) arg.setDisplayName('Clothes Dryer: Efficiency Type') arg.setDescription('The efficiency type of the clothes dryer.') arg.setDefaultValue('CombinedEnergyFactor') @@ -2968,7 +2968,7 @@ def arguments(model) # rubocop:disable Lint/UnusedMethodArgument dishwasher_efficiency_type_choices << 'RatedAnnualkWh' dishwasher_efficiency_type_choices << 'EnergyFactor' - arg = OpenStudio::Measure::OSArgument::makeChoiceArgument('dishwasher_efficiency_type', dishwasher_efficiency_type_choices, true) + arg = OpenStudio::Measure::OSArgument::makeChoiceArgument('dishwasher_efficiency_type', dishwasher_efficiency_type_choices, false) arg.setDisplayName('Dishwasher: Efficiency Type') arg.setDescription('The efficiency type of dishwasher.') arg.setDefaultValue('RatedAnnualkWh') @@ -3100,7 +3100,7 @@ def arguments(model) # rubocop:disable Lint/UnusedMethodArgument arg.setDescription("The space type for the cooking range/oven location. If not provided, the OS-HPXML default (see HPXML Cooking Range/Oven) is used.") args << arg - arg = OpenStudio::Measure::OSArgument::makeChoiceArgument('cooking_range_oven_fuel_type', cooking_range_oven_fuel_choices, true) + arg = OpenStudio::Measure::OSArgument::makeChoiceArgument('cooking_range_oven_fuel_type', cooking_range_oven_fuel_choices, false) arg.setDisplayName('Cooking Range/Oven: Fuel Type') arg.setDescription('Type of fuel used by the cooking range/oven.') arg.setDefaultValue(HPXML::FuelTypeNaturalGas) @@ -3238,7 +3238,7 @@ def arguments(model) # rubocop:disable Lint/UnusedMethodArgument arg.setDefaultValue(false) args << arg - arg = OpenStudio::Measure::OSArgument::makeChoiceArgument('misc_fuel_loads_grill_fuel_type', misc_fuel_loads_fuel_choices, true) + arg = OpenStudio::Measure::OSArgument::makeChoiceArgument('misc_fuel_loads_grill_fuel_type', misc_fuel_loads_fuel_choices, false) arg.setDisplayName('Misc Fuel Loads: Grill Fuel Type') arg.setDescription('The fuel type of the fuel loads grill.') arg.setDefaultValue(HPXML::FuelTypeNaturalGas) @@ -3261,7 +3261,7 @@ def arguments(model) # rubocop:disable Lint/UnusedMethodArgument arg.setDefaultValue(false) args << arg - arg = OpenStudio::Measure::OSArgument::makeChoiceArgument('misc_fuel_loads_lighting_fuel_type', misc_fuel_loads_fuel_choices, true) + arg = OpenStudio::Measure::OSArgument::makeChoiceArgument('misc_fuel_loads_lighting_fuel_type', misc_fuel_loads_fuel_choices, false) arg.setDisplayName('Misc Fuel Loads: Lighting Fuel Type') arg.setDescription('The fuel type of the fuel loads lighting.') arg.setDefaultValue(HPXML::FuelTypeNaturalGas) @@ -3284,7 +3284,7 @@ def arguments(model) # rubocop:disable Lint/UnusedMethodArgument arg.setDefaultValue(false) args << arg - arg = OpenStudio::Measure::OSArgument::makeChoiceArgument('misc_fuel_loads_fireplace_fuel_type', misc_fuel_loads_fuel_choices, true) + arg = OpenStudio::Measure::OSArgument::makeChoiceArgument('misc_fuel_loads_fireplace_fuel_type', misc_fuel_loads_fuel_choices, false) arg.setDisplayName('Misc Fuel Loads: Fireplace Fuel Type') arg.setDescription('The fuel type of the fuel loads fireplace.') arg.setDefaultValue(HPXML::FuelTypeNaturalGas) @@ -3336,7 +3336,7 @@ def arguments(model) # rubocop:disable Lint/UnusedMethodArgument arg.setDescription("Multiplier on the pool pump energy usage that can reflect, e.g., high/low usage occupants. If not provided, the OS-HPXML default (see Pool Pump) is used.") args << arg - arg = OpenStudio::Measure::OSArgument::makeChoiceArgument('pool_heater_type', heater_type_choices, true) + arg = OpenStudio::Measure::OSArgument::makeChoiceArgument('pool_heater_type', heater_type_choices, false) arg.setDisplayName('Pool: Heater Type') arg.setDescription("The type of pool heater. Use '#{HPXML::TypeNone}' if there is no pool heater.") arg.setDefaultValue(HPXML::TypeNone) @@ -3376,7 +3376,7 @@ def arguments(model) # rubocop:disable Lint/UnusedMethodArgument arg.setDescription("Multiplier on the permanent spa pump energy usage that can reflect, e.g., high/low usage occupants. If not provided, the OS-HPXML default (see Permanent Spa Pump) is used.") args << arg - arg = OpenStudio::Measure::OSArgument::makeChoiceArgument('permanent_spa_heater_type', heater_type_choices, true) + arg = OpenStudio::Measure::OSArgument::makeChoiceArgument('permanent_spa_heater_type', heater_type_choices, false) arg.setDisplayName('Permanent Spa: Heater Type') arg.setDescription("The type of permanent spa heater. Use '#{HPXML::TypeNone}' if there is no permanent spa heater.") arg.setDefaultValue(HPXML::TypeNone) diff --git a/BuildResidentialHPXML/measure.xml b/BuildResidentialHPXML/measure.xml index 7ca4ef9098..f8d515877e 100644 --- a/BuildResidentialHPXML/measure.xml +++ b/BuildResidentialHPXML/measure.xml @@ -3,8 +3,8 @@ 3.1 build_residential_hpxml a13a8983-2b01-4930-8af2-42030b6e4233 - 8dfdc271-772e-46a3-a611-71ca703a96c2 - 2024-10-14T23:23:50Z + bf4b1b23-9728-4393-8b71-85b4dcfdf56a + 2024-10-23T20:49:32Z 2C38F48B BuildResidentialHPXML HPXML Builder @@ -918,7 +918,7 @@ The width of the garage. Enter zero for no garage. Only applies to single-family detached units. Double ft - true + false false 0 @@ -928,7 +928,7 @@ The depth of the garage. Only applies to single-family detached units. Double ft - true + false false 20 @@ -938,7 +938,7 @@ The fraction of the garage that is protruding from the conditioned space. Only applies to single-family detached units. Double Frac - true + false false 0 @@ -947,7 +947,7 @@ Geometry: Garage Position The position of the garage. Only applies to single-family detached units. Choice - true + false false Right @@ -1018,7 +1018,7 @@ The height of the foundation (e.g., 3ft for crawlspace, 8ft for basement). Only applies to basements/crawlspaces. Double ft - true + false false 0 @@ -1028,7 +1028,7 @@ The depth above grade of the foundation wall. Only applies to basements/crawlspaces. Double ft - true + false false 0 @@ -1077,7 +1077,7 @@ Geometry: Roof Type The roof type of the building. Ignored if the building has a flat roof. Choice - true + false false gable @@ -1096,7 +1096,7 @@ Geometry: Roof Pitch The roof pitch of the attic. Ignored if the building has a flat roof. Choice - true + false false 6:12 @@ -1156,7 +1156,7 @@ The eaves depth of the roof. Double ft - true + false false 2 @@ -1166,7 +1166,7 @@ The distance between the unit and the neighboring building to the front (not including eaves). A value of zero indicates no neighbors. Used for shading. Double ft - true + false false 0 @@ -1176,7 +1176,7 @@ The distance between the unit and the neighboring building to the back (not including eaves). A value of zero indicates no neighbors. Used for shading. Double ft - true + false false 0 @@ -1186,7 +1186,7 @@ The distance between the unit and the neighboring building to the left (not including eaves). A value of zero indicates no neighbors. Used for shading. Double ft - true + false false 10 @@ -1196,7 +1196,7 @@ The distance between the unit and the neighboring building to the right (not including eaves). A value of zero indicates no neighbors. Used for shading. Double ft - true + false false 10 @@ -1242,7 +1242,7 @@ Assembly R-value for the floor over the foundation. Ignored if the building has a slab-on-grade foundation. Double h-ft^2-R/Btu - true + false false 28.1 @@ -1252,7 +1252,7 @@ Assembly R-value for the floor over the garage. Ignored unless the building has a garage under conditioned space. Double h-ft^2-R/Btu - true + false false 28.1 @@ -1340,7 +1340,7 @@ Nominal R-value for the foundation wall insulation. Only applies to basements/crawlspaces. Double h-ft^2-R/Btu - true + false false 0 @@ -1406,7 +1406,7 @@ Nominal R-value of the vertical slab perimeter insulation. Applies to slab-on-grade foundations and basement/crawlspace floors. Double h-ft^2-R/Btu - true + false false 0 @@ -1416,7 +1416,7 @@ Depth from grade to bottom of vertical slab perimeter insulation. Applies to slab-on-grade foundations and basement/crawlspace floors. Double ft - true + false false 0 @@ -1453,7 +1453,7 @@ Nominal R-value of the horizontal under slab insulation. Applies to slab-on-grade foundations and basement/crawlspace floors. Double h-ft^2-R/Btu - true + false false 0 @@ -1463,7 +1463,7 @@ Width from slab edge inward of horizontal under-slab insulation. Enter 999 to specify that the under slab insulation spans the entire slab. Applies to slab-on-grade foundations and basement/crawlspace floors. Double ft - true + false false 0 @@ -1873,7 +1873,7 @@ Ratio of window height to width. Double Frac - true + false false 1.333 @@ -1901,7 +1901,7 @@ Full-assembly NFRC U-factor. Double Btu/hr-ft^2-R - true + false false 0.37 @@ -1910,7 +1910,7 @@ Windows: SHGC Full-assembly NFRC solar heat gain coefficient. Double - true + false false 0.3 @@ -2086,7 +2086,7 @@ The overhangs distance to the top of window for the front facade. Double ft - true + false false 0 @@ -2096,7 +2096,7 @@ The overhangs distance to the bottom of window for the front facade. Double ft - true + false false 4 @@ -2116,7 +2116,7 @@ The overhangs distance to the top of window for the back facade. Double ft - true + false false 0 @@ -2126,7 +2126,7 @@ The overhangs distance to the bottom of window for the back facade. Double ft - true + false false 4 @@ -2146,7 +2146,7 @@ The overhangs distance to the top of window for the left facade. Double ft - true + false false 0 @@ -2156,7 +2156,7 @@ The overhangs distance to the bottom of window for the left facade. Double ft - true + false false 4 @@ -2176,7 +2176,7 @@ The overhangs distance to the top of window for the right facade. Double ft - true + false false 0 @@ -2186,7 +2186,7 @@ The overhangs distance to the bottom of window for the right facade. Double ft - true + false false 4 @@ -2236,7 +2236,7 @@ Full-assembly NFRC U-factor. Double Btu/hr-ft^2-R - true + false false 0.33 @@ -2245,7 +2245,7 @@ Skylights: SHGC Full-assembly NFRC solar heat gain coefficient. Double - true + false false 0.45 @@ -2283,7 +2283,7 @@ R-value of the opaque door(s). Double h-ft^2-R/Btu - true + false false 4.4 @@ -2461,7 +2461,7 @@ Heating System: Fuel Type The fuel type of the heating system. Ignored for ElectricResistance. Choice - true + false false natural gas @@ -2501,7 +2501,7 @@ The rated heating efficiency value of the heating system. Double Frac - true + false false 0.78 @@ -2537,7 +2537,7 @@ The heating load served by the heating system. Double Frac - true + false false 1 @@ -2599,7 +2599,7 @@ Cooling System: Efficiency Type The efficiency type of the cooling system. System types central air conditioner and mini-split use SEER or SEER2. System types room air conditioner and packaged terminal air conditioner use EER or CEER. Ignored for system type evaporative cooler. Choice - true + false false SEER @@ -2626,7 +2626,7 @@ Cooling System: Efficiency The rated efficiency value of the cooling system. Ignored for evaporative cooler. Double - true + false false 13 @@ -2693,7 +2693,7 @@ The cooling load served by the cooling system. Double Frac - true + false false 1 @@ -2848,7 +2848,7 @@ Heat Pump: Heating Efficiency Type The heating efficiency type of heat pump. System types air-to-air and mini-split use HSPF or HSPF2. System types ground-to-air, packaged terminal heat pump and room air conditioner with reverse cycle use COP. Choice - true + false false HSPF @@ -2871,7 +2871,7 @@ Heat Pump: Heating Efficiency The rated heating efficiency value of the heat pump. Double - true + false false 7.7 @@ -2880,7 +2880,7 @@ Heat Pump: Cooling Efficiency Type The cooling efficiency type of heat pump. System types air-to-air and mini-split use SEER or SEER2. System types ground-to-air, packaged terminal heat pump and room air conditioner with reverse cycle use EER. Choice - true + false false SEER @@ -2907,7 +2907,7 @@ Heat Pump: Cooling Efficiency The rated cooling efficiency value of the heat pump. Double - true + false false 13 @@ -3018,7 +3018,7 @@ The heating load served by the heat pump. Double Frac - true + false false 1 @@ -3028,7 +3028,7 @@ The cooling load served by the heat pump. Double Frac - true + false false 1 @@ -3046,7 +3046,7 @@ Heat Pump: Backup Type The backup type of the heat pump. If 'integrated', represents e.g. built-in electric strip heat or dual-fuel integrated furnace. If 'separate', represents e.g. electric baseboard or boiler based on the Heating System 2 specified below. Use 'none' if there is no backup heating. Choice - true + false false integrated @@ -3086,7 +3086,7 @@ Heat Pump: Backup Fuel Type The backup fuel type of the heat pump. Only applies if Backup Type is 'integrated'. Choice - true + false false electricity @@ -3113,7 +3113,7 @@ Heat Pump: Backup Rated Efficiency The backup rated efficiency value of the heat pump. Percent for electricity fuel type. AFUE otherwise. Only applies if Backup Type is 'integrated'. Double - true + false false 1 @@ -3537,7 +3537,7 @@ Heating System 2: Fuel Type The fuel type of the second heating system. Ignored for ElectricResistance. Choice - true + false false electricity @@ -3577,7 +3577,7 @@ The rated heating efficiency value of the second heating system. Double Frac - true + false false 1 @@ -3613,7 +3613,7 @@ The heat load served fraction of the second heating system. Ignored if this heating system serves as a backup system for a heat pump. Double Frac - true + false false 0.25 @@ -3683,7 +3683,7 @@ Ducts: Leakage Units The leakage units of the ducts. Choice - true + false false Percent @@ -3706,7 +3706,7 @@ Ducts: Supply Leakage to Outside Value The leakage value to outside for the supply ducts. Double - true + false false 0.1 @@ -3806,7 +3806,7 @@ The nominal insulation r-value of the supply ducts excluding air films. Use 0 for uninsulated ducts. Double h-ft^2-R/Btu - true + false false 0 @@ -3868,7 +3868,7 @@ Ducts: Return Leakage to Outside Value The leakage value to outside for the return ducts. Double - true + false false 0.1 @@ -3968,7 +3968,7 @@ The nominal insulation r-value of the return ducts excluding air films. Use 0 for uninsulated ducts. Double h-ft^2-R/Btu - true + false false 0 @@ -4096,7 +4096,7 @@ Mechanical Ventilation: Total Recovery Efficiency Type The total recovery efficiency type of the mechanical ventilation. Choice - true + false false Unadjusted @@ -4116,7 +4116,7 @@ The Unadjusted or Adjusted total recovery efficiency of the mechanical ventilation. Applies to energy recovery ventilator. Double Frac - true + false false 0.48 @@ -4126,7 +4126,7 @@ The Unadjusted or Adjusted sensible recovery efficiency of the mechanical ventilation. Applies to energy recovery ventilator and heat recovery ventilator. Double Frac - true + false false 0.72 @@ -4145,7 +4145,7 @@ Number of dwelling units served by the mechanical ventilation system. Must be 1 if single-family detached. Used to apportion flow rate and fan power to the unit. Integer # - true + false false 1 @@ -4287,7 +4287,7 @@ The flow rate of the second mechanical ventilation. Double CFM - true + false false 110 @@ -4297,7 +4297,7 @@ The hours in operation of the second mechanical ventilation. Double hrs/day - true + false false 24 @@ -4306,7 +4306,7 @@ Mechanical Ventilation 2: Total Recovery Efficiency Type The total recovery efficiency type of the second mechanical ventilation. Choice - true + false false Unadjusted @@ -4326,7 +4326,7 @@ The Unadjusted or Adjusted total recovery efficiency of the second mechanical ventilation. Applies to energy recovery ventilator. Double Frac - true + false false 0.48 @@ -4336,7 +4336,7 @@ The Unadjusted or Adjusted sensible recovery efficiency of the second mechanical ventilation. Applies to energy recovery ventilator and heat recovery ventilator. Double Frac - true + false false 0.72 @@ -4346,7 +4346,7 @@ The fan power of the second mechanical ventilation. Double W - true + false false 30 @@ -4517,7 +4517,7 @@ Water Heater: Fuel Type The fuel type of water heater. Ignored for heat pump water heater. Choice - true + false false natural gas @@ -4635,7 +4635,7 @@ Water Heater: Efficiency Type The efficiency type of water heater. Does not apply to space-heating boilers. Choice - true + false false EnergyFactor @@ -4654,7 +4654,7 @@ Water Heater: Efficiency Rated Energy Factor or Uniform Energy Factor. Does not apply to space-heating boilers. Double - true + false false 0.67 @@ -5027,7 +5027,7 @@ The collector area of the solar thermal system. Double ft^2 - true + false false 40 @@ -5036,7 +5036,7 @@ Solar Thermal: Collector Loop Type The collector loop type of the solar thermal system. Choice - true + false false liquid direct @@ -5059,7 +5059,7 @@ Solar Thermal: Collector Type The collector type of the solar thermal system. Choice - true + false false evacuated tube @@ -5087,7 +5087,7 @@ The collector azimuth of the solar thermal system. Azimuth is measured clockwise from north (e.g., North=0, East=90, South=180, West=270). Double degrees - true + false false 180 @@ -5097,7 +5097,7 @@ The collector tilt of the solar thermal system. Can also enter, e.g., RoofPitch, RoofPitch+20, Latitude, Latitude-15, etc. String degrees - true + false false RoofPitch @@ -5107,7 +5107,7 @@ The collector rated optical efficiency of the solar thermal system. Double Frac - true + false false 0.5 @@ -5117,7 +5117,7 @@ The collector rated thermal losses of the solar thermal system. Double Btu/hr-ft^2-R - true + false false 0.2799 @@ -5136,7 +5136,7 @@ The solar fraction of the solar thermal system. If provided, overrides all other solar thermal inputs. Double Frac - true + false false 0 @@ -5231,7 +5231,7 @@ Array azimuth of the PV system. Azimuth is measured clockwise from north (e.g., North=0, East=90, South=180, West=270). Double degrees - true + false false 180 @@ -5241,7 +5241,7 @@ Array tilt of the PV system. Can also enter, e.g., RoofPitch, RoofPitch+20, Latitude, Latitude-15, etc. String degrees - true + false false RoofPitch @@ -5251,7 +5251,7 @@ Maximum power output of the PV system. For a shared system, this is the total building maximum power output. Double W - true + false false 4000 @@ -5373,7 +5373,7 @@ Array azimuth of the second PV system. Azimuth is measured clockwise from north (e.g., North=0, East=90, South=180, West=270). Double degrees - true + false false 180 @@ -5383,7 +5383,7 @@ Array tilt of the second PV system. Can also enter, e.g., RoofPitch, RoofPitch+20, Latitude, Latitude-15, etc. String degrees - true + false false RoofPitch @@ -5393,7 +5393,7 @@ Maximum power output of the second PV system. For a shared system, this is the total building maximum power output. Double W - true + false false 4000 @@ -5543,7 +5543,7 @@ Lighting: Interior Fraction CFL Fraction of all lamps (interior) that are compact fluorescent. Lighting not specified as CFL, LFL, or LED is assumed to be incandescent. Double - true + false false 0.1 @@ -5552,7 +5552,7 @@ Lighting: Interior Fraction LFL Fraction of all lamps (interior) that are linear fluorescent. Lighting not specified as CFL, LFL, or LED is assumed to be incandescent. Double - true + false false 0 @@ -5561,7 +5561,7 @@ Lighting: Interior Fraction LED Fraction of all lamps (interior) that are light emitting diodes. Lighting not specified as CFL, LFL, or LED is assumed to be incandescent. Double - true + false false 0 @@ -5578,7 +5578,7 @@ Lighting: Exterior Fraction CFL Fraction of all lamps (exterior) that are compact fluorescent. Lighting not specified as CFL, LFL, or LED is assumed to be incandescent. Double - true + false false 0 @@ -5587,7 +5587,7 @@ Lighting: Exterior Fraction LFL Fraction of all lamps (exterior) that are linear fluorescent. Lighting not specified as CFL, LFL, or LED is assumed to be incandescent. Double - true + false false 0 @@ -5596,7 +5596,7 @@ Lighting: Exterior Fraction LED Fraction of all lamps (exterior) that are light emitting diodes. Lighting not specified as CFL, LFL, or LED is assumed to be incandescent. Double - true + false false 0 @@ -5613,7 +5613,7 @@ Lighting: Garage Fraction CFL Fraction of all lamps (garage) that are compact fluorescent. Lighting not specified as CFL, LFL, or LED is assumed to be incandescent. Double - true + false false 0 @@ -5622,7 +5622,7 @@ Lighting: Garage Fraction LFL Fraction of all lamps (garage) that are linear fluorescent. Lighting not specified as CFL, LFL, or LED is assumed to be incandescent. Double - true + false false 0 @@ -5631,7 +5631,7 @@ Lighting: Garage Fraction LED Fraction of all lamps (garage) that are light emitting diodes. Lighting not specified as CFL, LFL, or LED is assumed to be incandescent. Double - true + false false 0 @@ -5707,7 +5707,7 @@ Dehumidifier: Efficiency Type The efficiency type of dehumidifier. Choice - true + false false IntegratedEnergyFactor @@ -5727,7 +5727,7 @@ The efficiency of the dehumidifier. Double liters/kWh - true + false false 1.5 @@ -5737,7 +5737,7 @@ The capacity (water removal rate) of the dehumidifier. Double pint/day - true + false false 40 @@ -5747,7 +5747,7 @@ The relative humidity setpoint of the dehumidifier. Double Frac - true + false false 0.5 @@ -5757,7 +5757,7 @@ The dehumidification load served fraction of the dehumidifier. Double Frac - true + false false 1 @@ -5827,7 +5827,7 @@ Clothes Washer: Efficiency Type The efficiency type of the clothes washer. Choice - true + false false IntegratedModifiedEnergyFactor @@ -5978,7 +5978,7 @@ Clothes Dryer: Fuel Type Type of fuel used by the clothes dryer. Choice - true + false false natural gas @@ -6013,7 +6013,7 @@ Clothes Dryer: Efficiency Type The efficiency type of the clothes dryer. Choice - true + false false CombinedEnergyFactor @@ -6119,7 +6119,7 @@ Dishwasher: Efficiency Type The efficiency type of dishwasher. Choice - true + false false RatedAnnualkWh @@ -6495,7 +6495,7 @@ Cooking Range/Oven: Fuel Type Type of fuel used by the cooking range/oven. Choice - true + false false natural gas @@ -6791,7 +6791,7 @@ Misc Fuel Loads: Grill Fuel Type The fuel type of the fuel loads grill. Choice - true + false false natural gas @@ -6858,7 +6858,7 @@ Misc Fuel Loads: Lighting Fuel Type The fuel type of the fuel loads lighting. Choice - true + false false natural gas @@ -6925,7 +6925,7 @@ Misc Fuel Loads: Fireplace Fuel Type The fuel type of the fuel loads fireplace. Choice - true + false false natural gas @@ -7027,7 +7027,7 @@ Pool: Heater Type The type of pool heater. Use 'none' if there is no pool heater. Choice - true + false false none @@ -7116,7 +7116,7 @@ Permanent Spa: Heater Type The type of permanent spa heater. Use 'none' if there is no permanent spa heater. Choice - true + false false none @@ -7527,7 +7527,7 @@ README.md md readme - 25110074 + 1E277D6B README.md.erb @@ -7544,7 +7544,7 @@ measure.rb rb script - F2C64E58 + BE2CAD31 constants.rb @@ -7558,6 +7558,162 @@ resource E50F00EB + + extra_files/base-mf.osm + osm + test + B5DB2E7F + + + extra_files/base-mf.xml + xml + test + 6CE1B002 + + + extra_files/base-mf2.osm + osm + test + 4E66D5B2 + + + extra_files/base-mf2.xml + xml + test + 955B82C0 + + + extra_files/base-mf3.osm + osm + test + F4FB5D4C + + + extra_files/base-mf3.xml + xml + test + 92FE1F3B + + + extra_files/base-mf4.osm + osm + test + 93DE54C2 + + + extra_files/base-mf4.xml + xml + test + D05E968D + + + extra_files/base-sfa.osm + osm + test + 232DEB9F + + + extra_files/base-sfa.xml + xml + test + 8E389DA4 + + + extra_files/base-sfa2.osm + osm + test + E474000B + + + extra_files/base-sfa2.xml + xml + test + AC322A11 + + + extra_files/base-sfa3.osm + osm + test + F83E525F + + + extra_files/base-sfa3.xml + xml + test + B76B01B8 + + + extra_files/base-sfd-header-no-duplicates.osm + osm + test + 5E7F3031 + + + extra_files/base-sfd-header-no-duplicates.xml + xml + test + 538C93CD + + + extra_files/base-sfd-header.osm + osm + test + B174CF02 + + + extra_files/base-sfd-header.xml + xml + test + 92DBFD7C + + + extra_files/base-sfd.osm + osm + test + 1948DE03 + + + extra_files/base-sfd.xml + xml + test + DC5F421C + + + extra_files/base-sfd2.osm + osm + test + B67AF0EE + + + extra_files/base-sfd2.xml + xml + test + 74D82743 + + + extra_files/extra-auto-duct-locations.osm + osm + test + F97133FB + + + extra_files/extra-auto-duct-locations.xml + xml + test + 12A20B72 + + + extra_files/extra-auto.osm + osm + test + BCF9B455 + + + extra_files/extra-auto.xml + xml + test + 6B1DE040 + test_build_residential_hpxml.rb rb diff --git a/workflow/hpxml_inputs.json b/workflow/hpxml_inputs.json index 3ed9121fbc..6891b5c9df 100644 --- a/workflow/hpxml_inputs.json +++ b/workflow/hpxml_inputs.json @@ -66,50 +66,22 @@ "window_interior_shading_winter": 1, "window_interior_shading_summer": 1, "overhangs_front_depth": 0, - "overhangs_front_distance_to_top_of_window": 0, - "overhangs_front_distance_to_bottom_of_window": 0, "overhangs_back_depth": 0, - "overhangs_back_distance_to_top_of_window": 0, - "overhangs_back_distance_to_bottom_of_window": 0, "overhangs_left_depth": 0, - "overhangs_left_distance_to_top_of_window": 0, - "overhangs_left_distance_to_bottom_of_window": 0, "overhangs_right_depth": 0, - "overhangs_right_distance_to_top_of_window": 0, - "overhangs_right_distance_to_bottom_of_window": 0, "skylight_area_front": 0, "skylight_area_back": 0, "skylight_area_left": 0, "skylight_area_right": 0, - "skylight_ufactor": 0, - "skylight_shgc": 0, "door_area": 40, "door_rvalue": 3.04, "air_leakage_units": "ACHnatural", "air_leakage_house_pressure": 50, "air_leakage_value": 0.67, "heating_system_type": "none", - "heating_system_fuel": "natural gas", - "heating_system_heating_efficiency": 0, - "heating_system_fraction_heat_load_served": 0, "cooling_system_type": "none", - "cooling_system_cooling_efficiency_type": "SEER", - "cooling_system_cooling_efficiency": 0, - "cooling_system_fraction_cool_load_served": 0, "heat_pump_type": "none", - "heat_pump_heating_efficiency_type": "HSPF", - "heat_pump_heating_efficiency": 0, - "heat_pump_cooling_efficiency_type": "SEER", - "heat_pump_cooling_efficiency": 0, - "heat_pump_fraction_heat_load_served": 0, - "heat_pump_fraction_cool_load_served": 0, - "heat_pump_backup_type": "none", - "heat_pump_backup_fuel": "electricity", - "heat_pump_backup_heating_efficiency": 0, "heating_system_2_type": "none", - "heating_system_2_fuel": "electricity", - "heating_system_2_heating_efficiency": 0, - "heating_system_2_fraction_heat_load_served": 0, "hvac_control_heating_weekday_setpoint": 68, "hvac_control_heating_weekend_setpoint": 68, "hvac_control_cooling_weekday_setpoint": 78, @@ -120,77 +92,30 @@ "ducts_supply_insulation_r": 0, "ducts_return_insulation_r": 0, "mech_vent_fan_type": "none", - "mech_vent_recovery_efficiency_type": "Unadjusted", - "mech_vent_total_recovery_efficiency": 0, - "mech_vent_sensible_recovery_efficiency": 0, - "mech_vent_num_units_served": 0, "mech_vent_2_fan_type": "none", - "mech_vent_2_flow_rate": 0, - "mech_vent_2_hours_in_operation": 0, - "mech_vent_2_recovery_efficiency_type": "Unadjusted", - "mech_vent_2_total_recovery_efficiency": 0, - "mech_vent_2_sensible_recovery_efficiency": 0, - "mech_vent_2_fan_power": 0, "kitchen_fans_quantity": 0, "bathroom_fans_quantity": 0, "whole_house_fan_present": false, "water_heater_type": "none", - "water_heater_fuel_type": "electricity", - "water_heater_efficiency_type": "EnergyFactor", - "water_heater_efficiency": 0, - "water_heater_num_bedrooms_served": 0, "hot_water_distribution_system_type": "Standard", "dwhr_facilities_connected": "none", "water_fixtures_shower_low_flow": false, "water_fixtures_sink_low_flow": false, "water_fixtures_usage_multiplier": null, "solar_thermal_system_type": "none", - "solar_thermal_collector_area": 0, - "solar_thermal_collector_loop_type": "liquid indirect", - "solar_thermal_collector_type": "single glazing black", - "solar_thermal_collector_azimuth": 0, - "solar_thermal_collector_tilt": 0, - "solar_thermal_collector_rated_optical_efficiency": 0, - "solar_thermal_collector_rated_thermal_losses": 0, - "solar_thermal_solar_fraction": 0, "pv_system_present": false, - "pv_system_array_azimuth": 0, - "pv_system_array_tilt": 0, - "pv_system_max_power_output": 0, "pv_system_2_present": false, - "pv_system_2_array_azimuth": 0, - "pv_system_2_array_tilt": 0, - "pv_system_2_max_power_output": 0, "battery_present": false, "lighting_present": false, - "lighting_interior_fraction_cfl": 0, - "lighting_interior_fraction_lfl": 0, - "lighting_interior_fraction_led": 0, - "lighting_exterior_fraction_cfl": 0, - "lighting_exterior_fraction_lfl": 0, - "lighting_exterior_fraction_led": 0, - "lighting_garage_fraction_cfl": 0, - "lighting_garage_fraction_lfl": 0, - "lighting_garage_fraction_led": 0, "holiday_lighting_present": false, "dehumidifier_type": "none", - "dehumidifier_efficiency_type": "EnergyFactor", - "dehumidifier_efficiency": 0, - "dehumidifier_capacity": 0, - "dehumidifier_rh_setpoint": 0, - "dehumidifier_fraction_dehumidification_load_served": 0, "clothes_washer_present": false, - "clothes_washer_efficiency_type": "IntegratedModifiedEnergyFactor", "clothes_dryer_present": false, - "clothes_dryer_fuel_type": "electricity", - "clothes_dryer_efficiency_type": "CombinedEnergyFactor", "dishwasher_present": false, - "dishwasher_efficiency_type": "RatedAnnualkWh", "refrigerator_present": false, "extra_refrigerator_present": false, "freezer_present": false, "cooking_range_oven_present": false, - "cooking_range_oven_fuel_type": "electricity", "ceiling_fan_present": false, "misc_plug_loads_television_present": false, "misc_plug_loads_other_annual_kwh": 7302, @@ -199,15 +124,10 @@ "misc_plug_loads_well_pump_present": false, "misc_plug_loads_vehicle_present": false, "misc_fuel_loads_grill_present": false, - "misc_fuel_loads_grill_fuel_type": "natural gas", "misc_fuel_loads_lighting_present": false, - "misc_fuel_loads_lighting_fuel_type": "natural gas", "misc_fuel_loads_fireplace_present": false, - "misc_fuel_loads_fireplace_fuel_type": "natural gas", "pool_present": false, - "pool_heater_type": "none", "permanent_spa_present": false, - "permanent_spa_heater_type": "none", "combine_like_surfaces": false }, "tests/ASHRAE_Standard_140/L110AC.xml": { @@ -526,9 +446,11 @@ "water_heater_location": "conditioned space", "clothes_washer_present": true, "clothes_dryer_present": true, + "clothes_dryer_fuel_type": "electricity", "dishwasher_present": true, "refrigerator_present": true, "cooking_range_oven_present": true, + "cooking_range_oven_fuel_type": "electricity", "lighting_present": true, "misc_plug_loads_other_annual_kwh": null, "misc_plug_loads_other_frac_sensible": null, @@ -672,23 +594,13 @@ "window_interior_shading_winter": 0.85, "window_interior_shading_summer": 0.7, "overhangs_front_depth": 0, - "overhangs_front_distance_to_top_of_window": 0, - "overhangs_front_distance_to_bottom_of_window": 0, "overhangs_back_depth": 0, - "overhangs_back_distance_to_top_of_window": 0, - "overhangs_back_distance_to_bottom_of_window": 0, "overhangs_left_depth": 0, - "overhangs_left_distance_to_top_of_window": 0, - "overhangs_left_distance_to_bottom_of_window": 0, "overhangs_right_depth": 0, - "overhangs_right_distance_to_top_of_window": 0, - "overhangs_right_distance_to_bottom_of_window": 0, "skylight_area_front": 0, "skylight_area_back": 0, "skylight_area_left": 0, "skylight_area_right": 0, - "skylight_ufactor": 0.33, - "skylight_shgc": 0.45, "door_area": 40, "door_rvalue": 4.4, "air_leakage_units": "ACH", @@ -707,19 +619,7 @@ "cooling_system_cooling_capacity": 24000, "cooling_system_fraction_cool_load_served": 1, "heat_pump_type": "none", - "heat_pump_heating_efficiency_type": "HSPF", - "heat_pump_heating_efficiency": 0, - "heat_pump_cooling_efficiency_type": "SEER", - "heat_pump_cooling_efficiency": 0, - "heat_pump_fraction_heat_load_served": 0, - "heat_pump_fraction_cool_load_served": 0, - "heat_pump_backup_type": "none", - "heat_pump_backup_fuel": "electricity", - "heat_pump_backup_heating_efficiency": 0, "heating_system_2_type": "none", - "heating_system_2_fuel": "electricity", - "heating_system_2_heating_efficiency": 0, - "heating_system_2_fraction_heat_load_served": 0, "hvac_control_heating_weekday_setpoint": 68, "hvac_control_heating_weekend_setpoint": 68, "hvac_control_cooling_weekday_setpoint": 78, @@ -734,17 +634,7 @@ "ducts_return_insulation_r": 0, "ducts_return_surface_area": 50, "mech_vent_fan_type": "none", - "mech_vent_recovery_efficiency_type": "Unadjusted", - "mech_vent_total_recovery_efficiency": 0, - "mech_vent_sensible_recovery_efficiency": 0, - "mech_vent_num_units_served": 0, "mech_vent_2_fan_type": "none", - "mech_vent_2_flow_rate": 0, - "mech_vent_2_hours_in_operation": 0, - "mech_vent_2_recovery_efficiency_type": "Unadjusted", - "mech_vent_2_total_recovery_efficiency": 0, - "mech_vent_2_sensible_recovery_efficiency": 0, - "mech_vent_2_fan_power": 0, "kitchen_fans_quantity": 0, "bathroom_fans_quantity": 0, "whole_house_fan_present": false, @@ -765,22 +655,8 @@ "water_fixtures_shower_low_flow": true, "water_fixtures_sink_low_flow": false, "solar_thermal_system_type": "none", - "solar_thermal_collector_area": 0, - "solar_thermal_collector_loop_type": "liquid indirect", - "solar_thermal_collector_type": "single glazing black", - "solar_thermal_collector_azimuth": 0, - "solar_thermal_collector_tilt": 0, - "solar_thermal_collector_rated_optical_efficiency": 0, - "solar_thermal_collector_rated_thermal_losses": 0, - "solar_thermal_solar_fraction": 0, "pv_system_present": false, - "pv_system_array_azimuth": 0, - "pv_system_array_tilt": 0, - "pv_system_max_power_output": 0, "pv_system_2_present": false, - "pv_system_2_array_azimuth": 0, - "pv_system_2_array_tilt": 0, - "pv_system_2_max_power_output": 0, "battery_present": false, "lighting_present": true, "lighting_interior_fraction_cfl": 0.4, @@ -794,11 +670,6 @@ "lighting_garage_fraction_led": 0.25, "holiday_lighting_present": false, "dehumidifier_type": "none", - "dehumidifier_efficiency_type": "EnergyFactor", - "dehumidifier_efficiency": 0, - "dehumidifier_capacity": 0, - "dehumidifier_rh_setpoint": 0, - "dehumidifier_fraction_dehumidification_load_served": 0, "clothes_washer_present": true, "clothes_washer_location": "conditioned space", "clothes_washer_efficiency_type": "IntegratedModifiedEnergyFactor", @@ -843,15 +714,10 @@ "misc_plug_loads_well_pump_present": false, "misc_plug_loads_vehicle_present": false, "misc_fuel_loads_grill_present": false, - "misc_fuel_loads_grill_fuel_type": "natural gas", "misc_fuel_loads_lighting_present": false, - "misc_fuel_loads_lighting_fuel_type": "natural gas", "misc_fuel_loads_fireplace_present": false, - "misc_fuel_loads_fireplace_fuel_type": "natural gas", "pool_present": false, - "pool_heater_type": "none", "permanent_spa_present": false, - "permanent_spa_heater_type": "none", "utility_bill_scenario_names": "Bills", "combine_like_surfaces": true }, @@ -863,6 +729,7 @@ "sample_files/base-appliances-dehumidifier.xml": { "parent_hpxml": "sample_files/base-location-dallas-tx.xml", "dehumidifier_type": "portable", + "dehumidifier_efficiency_type": "EnergyFactor", "dehumidifier_efficiency": 1.8, "dehumidifier_capacity": 40, "dehumidifier_rh_setpoint": 0.5, @@ -1438,12 +1305,21 @@ "sample_files/base-dhw-solar-fraction.xml": { "parent_hpxml": "sample_files/base.xml", "solar_thermal_system_type": "hot water", + "solar_thermal_collector_area": 0, + "solar_thermal_collector_loop_type": "liquid indirect", + "solar_thermal_collector_type": "single glazing black", + "solar_thermal_collector_azimuth": 0, + "solar_thermal_collector_tilt": 0, + "solar_thermal_collector_rated_optical_efficiency": 0, + "solar_thermal_collector_rated_thermal_losses": 0, "solar_thermal_solar_fraction": 0.65 }, "sample_files/base-dhw-solar-indirect-flat-plate.xml": { "parent_hpxml": "sample_files/base.xml", "solar_thermal_system_type": "hot water", "solar_thermal_collector_area": 40, + "solar_thermal_collector_loop_type": "liquid indirect", + "solar_thermal_collector_type": "single glazing black", "solar_thermal_collector_azimuth": 180, "solar_thermal_collector_tilt": 20, "solar_thermal_collector_rated_optical_efficiency": 0.77, @@ -1522,6 +1398,8 @@ "parent_hpxml": "sample_files/base-dhw-tank-heat-pump.xml", "solar_thermal_system_type": "hot water", "solar_thermal_collector_area": 40, + "solar_thermal_collector_loop_type": "liquid indirect", + "solar_thermal_collector_type": "single glazing black", "solar_thermal_collector_azimuth": 180, "solar_thermal_collector_tilt": 20, "solar_thermal_collector_rated_optical_efficiency": 0.77, @@ -1587,6 +1465,8 @@ "parent_hpxml": "sample_files/base-dhw-tankless-gas.xml", "solar_thermal_system_type": "hot water", "solar_thermal_collector_area": 40, + "solar_thermal_collector_loop_type": "liquid indirect", + "solar_thermal_collector_type": "single glazing black", "solar_thermal_collector_azimuth": 180, "solar_thermal_collector_tilt": 20, "solar_thermal_collector_rated_optical_efficiency": 0.77, @@ -2323,6 +2203,7 @@ "heat_pump_cooling_efficiency": 13, "heat_pump_cooling_compressor_type": "single stage", "heat_pump_cooling_sensible_heat_fraction": 0.73, + "heat_pump_fraction_cool_load_served": 0, "heat_pump_heating_capacity": 36000, "heat_pump_heating_capacity_retention_fraction": 0.6, "heat_pump_heating_capacity_retention_temp": 17.0, @@ -2523,6 +2404,7 @@ "parent_hpxml": "sample_files/base-hvac-furnace-gas-only.xml", "heat_pump_type": "air-to-air", "heat_pump_heating_efficiency": 7.7, + "heat_pump_fraction_heat_load_served": 0, "heat_pump_cooling_efficiency": 13, "heat_pump_cooling_compressor_type": "single stage", "heat_pump_cooling_sensible_heat_fraction": 0.73, @@ -2530,7 +2412,8 @@ "heat_pump_heating_capacity_retention_fraction": 0.6, "heat_pump_heating_capacity_retention_temp": 17.0, "heat_pump_cooling_capacity": 36000, - "heat_pump_fraction_cool_load_served": 1 + "heat_pump_fraction_cool_load_served": 1, + "heat_pump_backup_type": "none" }, "sample_files/base-hvac-furnace-gas-room-ac.xml": { "parent_hpxml": "sample_files/base.xml", @@ -3375,6 +3258,7 @@ "solar_thermal_system_type": "hot water", "solar_thermal_collector_area": 40, "solar_thermal_collector_loop_type": "liquid direct", + "solar_thermal_collector_type": "single glazing black", "solar_thermal_collector_azimuth": 180, "solar_thermal_collector_tilt": 20, "solar_thermal_collector_rated_optical_efficiency": 0.77, From ef2e09febbeb59a5d758a09f1d871caf92a6cc3a Mon Sep 17 00:00:00 2001 From: Joe Robertson Date: Wed, 23 Oct 2024 21:11:44 -0700 Subject: [PATCH 02/33] Remove ignored arguments from build measure test file. --- BuildResidentialHPXML/measure.xml | 162 +----------------- .../tests/test_build_residential_hpxml.rb | 95 ---------- 2 files changed, 3 insertions(+), 254 deletions(-) diff --git a/BuildResidentialHPXML/measure.xml b/BuildResidentialHPXML/measure.xml index f8d515877e..7e17ff932a 100644 --- a/BuildResidentialHPXML/measure.xml +++ b/BuildResidentialHPXML/measure.xml @@ -3,8 +3,8 @@ 3.1 build_residential_hpxml a13a8983-2b01-4930-8af2-42030b6e4233 - bf4b1b23-9728-4393-8b71-85b4dcfdf56a - 2024-10-23T20:49:32Z + 2fe2e8ec-22e6-4420-9e6c-ba3173dffcd8 + 2024-10-24T04:10:44Z 2C38F48B BuildResidentialHPXML HPXML Builder @@ -7558,167 +7558,11 @@ resource E50F00EB - - extra_files/base-mf.osm - osm - test - B5DB2E7F - - - extra_files/base-mf.xml - xml - test - 6CE1B002 - - - extra_files/base-mf2.osm - osm - test - 4E66D5B2 - - - extra_files/base-mf2.xml - xml - test - 955B82C0 - - - extra_files/base-mf3.osm - osm - test - F4FB5D4C - - - extra_files/base-mf3.xml - xml - test - 92FE1F3B - - - extra_files/base-mf4.osm - osm - test - 93DE54C2 - - - extra_files/base-mf4.xml - xml - test - D05E968D - - - extra_files/base-sfa.osm - osm - test - 232DEB9F - - - extra_files/base-sfa.xml - xml - test - 8E389DA4 - - - extra_files/base-sfa2.osm - osm - test - E474000B - - - extra_files/base-sfa2.xml - xml - test - AC322A11 - - - extra_files/base-sfa3.osm - osm - test - F83E525F - - - extra_files/base-sfa3.xml - xml - test - B76B01B8 - - - extra_files/base-sfd-header-no-duplicates.osm - osm - test - 5E7F3031 - - - extra_files/base-sfd-header-no-duplicates.xml - xml - test - 538C93CD - - - extra_files/base-sfd-header.osm - osm - test - B174CF02 - - - extra_files/base-sfd-header.xml - xml - test - 92DBFD7C - - - extra_files/base-sfd.osm - osm - test - 1948DE03 - - - extra_files/base-sfd.xml - xml - test - DC5F421C - - - extra_files/base-sfd2.osm - osm - test - B67AF0EE - - - extra_files/base-sfd2.xml - xml - test - 74D82743 - - - extra_files/extra-auto-duct-locations.osm - osm - test - F97133FB - - - extra_files/extra-auto-duct-locations.xml - xml - test - 12A20B72 - - - extra_files/extra-auto.osm - osm - test - BCF9B455 - - - extra_files/extra-auto.xml - xml - test - 6B1DE040 - test_build_residential_hpxml.rb rb test - 04146810 + 3961036F diff --git a/BuildResidentialHPXML/tests/test_build_residential_hpxml.rb b/BuildResidentialHPXML/tests/test_build_residential_hpxml.rb index 9b79b0e8b8..e98b1106f0 100644 --- a/BuildResidentialHPXML/tests/test_build_residential_hpxml.rb +++ b/BuildResidentialHPXML/tests/test_build_residential_hpxml.rb @@ -400,18 +400,10 @@ def _set_measure_argument_values(hpxml_file, args) args['site_type'] = HPXML::SiteTypeSuburban args['geometry_unit_type'] = HPXML::ResidentialTypeSFD args['geometry_unit_cfa'] = 2700.0 - args['geometry_unit_left_wall_is_adiabatic'] = false - args['geometry_unit_right_wall_is_adiabatic'] = false - args['geometry_unit_front_wall_is_adiabatic'] = false - args['geometry_unit_back_wall_is_adiabatic'] = false args['geometry_unit_num_floors_above_grade'] = 1 args['geometry_average_ceiling_height'] = 8.0 args['geometry_unit_orientation'] = 180.0 args['geometry_unit_aspect_ratio'] = 1.5 - args['geometry_garage_width'] = 0.0 - args['geometry_garage_depth'] = 20.0 - args['geometry_garage_protrusion'] = 0.0 - args['geometry_garage_position'] = Constants::PositionRight args['geometry_foundation_type'] = HPXML::FoundationTypeBasementConditioned args['geometry_foundation_height'] = 8.0 args['geometry_foundation_height_above_grade'] = 1.0 @@ -424,33 +416,17 @@ def _set_measure_argument_values(hpxml_file, args) args['geometry_unit_num_bathrooms'] = 2 args['geometry_unit_num_occupants'] = 3 args['floor_over_foundation_assembly_r'] = 0 - args['floor_over_garage_assembly_r'] = 0 args['floor_type'] = HPXML::FloorTypeWoodFrame args['foundation_wall_thickness'] = 8.0 args['foundation_wall_insulation_r'] = 8.9 args['foundation_wall_insulation_distance_to_top'] = 0.0 args['foundation_wall_insulation_distance_to_bottom'] = 8.0 args['rim_joist_assembly_r'] = 23.0 - args['slab_perimeter_insulation_r'] = 0 - args['slab_perimeter_insulation_depth'] = 0 - args['slab_under_insulation_r'] = 0 - args['slab_under_insulation_width'] = 0 - args['slab_exterior_horizontal_insulation_r'] = 0 - args['slab_exterior_horizontal_insulation_width'] = 0 - args['slab_exterior_horizontal_insulation_depth_below_grade'] = 0 - args['slab_thickness'] = 4.0 - args['slab_carpet_fraction'] = 0.0 - args['slab_carpet_r'] = 0.0 args['ceiling_assembly_r'] = 39.3 args['roof_material_type'] = HPXML::RoofTypeAsphaltShingles args['roof_color'] = HPXML::ColorMedium args['roof_assembly_r'] = 2.3 args['radiant_barrier_attic_location'] = Constants::None - args['radiant_barrier_grade'] = 1 - args['neighbor_front_distance'] = 0 - args['neighbor_back_distance'] = 0 - args['neighbor_left_distance'] = 0 - args['neighbor_right_distance'] = 0 args['wall_type'] = HPXML::WallTypeWoodStud args['wall_siding_type'] = HPXML::SidingTypeWood args['wall_color'] = HPXML::ColorMedium @@ -473,20 +449,10 @@ def _set_measure_argument_values(hpxml_file, args) args['overhangs_back_depth'] = 0 args['overhangs_left_depth'] = 0 args['overhangs_right_depth'] = 0 - args['overhangs_front_distance_to_top_of_window'] = 0 - args['overhangs_back_distance_to_top_of_window'] = 0 - args['overhangs_left_distance_to_top_of_window'] = 0 - args['overhangs_right_distance_to_top_of_window'] = 0 - args['overhangs_front_distance_to_bottom_of_window'] = 0 - args['overhangs_back_distance_to_bottom_of_window'] = 0 - args['overhangs_left_distance_to_bottom_of_window'] = 0 - args['overhangs_right_distance_to_bottom_of_window'] = 0 args['skylight_area_front'] = 0 args['skylight_area_back'] = 0 args['skylight_area_left'] = 0 args['skylight_area_right'] = 0 - args['skylight_ufactor'] = 0.33 - args['skylight_shgc'] = 0.45 args['door_area'] = 40.0 args['door_rvalue'] = 4.4 args['air_leakage_units'] = HPXML::UnitsACH @@ -506,21 +472,6 @@ def _set_measure_argument_values(hpxml_file, args) args['cooling_system_fraction_cool_load_served'] = 1 args['cooling_system_is_ducted'] = false args['heat_pump_type'] = Constants::None - args['heat_pump_heating_efficiency_type'] = HPXML::UnitsHSPF - args['heat_pump_heating_efficiency'] = 7.7 - args['heat_pump_cooling_efficiency_type'] = HPXML::UnitsSEER - args['heat_pump_cooling_efficiency'] = 13.0 - args['heat_pump_cooling_compressor_type'] = HPXML::HVACCompressorTypeSingleStage - args['heat_pump_cooling_sensible_heat_fraction'] = 0.73 - args['heat_pump_heating_capacity'] = 36000.0 - args['heat_pump_cooling_capacity'] = 36000.0 - args['heat_pump_fraction_heat_load_served'] = 1 - args['heat_pump_fraction_cool_load_served'] = 1 - args['heat_pump_backup_type'] = HPXML::HeatPumpBackupTypeIntegrated - args['heat_pump_backup_fuel'] = HPXML::FuelTypeElectricity - args['heat_pump_backup_heating_efficiency'] = 1 - args['heat_pump_backup_heating_capacity'] = 36000.0 - args['geothermal_loop_configuration'] = Constants::None args['hvac_control_heating_weekday_setpoint'] = 68 args['hvac_control_heating_weekend_setpoint'] = 68 args['hvac_control_cooling_weekday_setpoint'] = 78 @@ -536,24 +487,8 @@ def _set_measure_argument_values(hpxml_file, args) args['ducts_return_surface_area'] = 50.0 args['ducts_number_of_return_registers'] = 2 args['heating_system_2_type'] = Constants::None - args['heating_system_2_fuel'] = HPXML::FuelTypeElectricity - args['heating_system_2_heating_efficiency'] = 1.0 - args['heating_system_2_fraction_heat_load_served'] = 0.25 args['mech_vent_fan_type'] = Constants::None - args['mech_vent_flow_rate'] = 110 - args['mech_vent_hours_in_operation'] = 24 - args['mech_vent_recovery_efficiency_type'] = 'Unadjusted' - args['mech_vent_total_recovery_efficiency'] = 0.48 - args['mech_vent_sensible_recovery_efficiency'] = 0.72 - args['mech_vent_fan_power'] = 30 - args['mech_vent_num_units_served'] = 1 args['mech_vent_2_fan_type'] = Constants::None - args['mech_vent_2_flow_rate'] = 110 - args['mech_vent_2_hours_in_operation'] = 24 - args['mech_vent_2_recovery_efficiency_type'] = 'Unadjusted' - args['mech_vent_2_total_recovery_efficiency'] = 0.48 - args['mech_vent_2_sensible_recovery_efficiency'] = 0.72 - args['mech_vent_2_fan_power'] = 30 args['kitchen_fans_quantity'] = 0 args['bathroom_fans_quantity'] = 0 args['whole_house_fan_present'] = false @@ -571,33 +506,13 @@ def _set_measure_argument_values(hpxml_file, args) args['water_heater_num_bedrooms_served'] = 3 args['hot_water_distribution_system_type'] = HPXML::DHWDistTypeStandard args['hot_water_distribution_standard_piping_length'] = 50 - args['hot_water_distribution_recirc_control_type'] = HPXML::DHWRecircControlTypeNone - args['hot_water_distribution_recirc_piping_length'] = 50 - args['hot_water_distribution_recirc_branch_piping_length'] = 50 - args['hot_water_distribution_recirc_pump_power'] = 50 args['hot_water_distribution_pipe_r'] = 0.0 args['dwhr_facilities_connected'] = Constants::None - args['dwhr_equal_flow'] = true - args['dwhr_efficiency'] = 0.55 args['water_fixtures_shower_low_flow'] = true args['water_fixtures_sink_low_flow'] = false args['solar_thermal_system_type'] = Constants::None - args['solar_thermal_collector_area'] = 40.0 - args['solar_thermal_collector_loop_type'] = HPXML::SolarThermalLoopTypeDirect - args['solar_thermal_collector_type'] = HPXML::SolarThermalCollectorTypeEvacuatedTube - args['solar_thermal_collector_azimuth'] = 180 - args['solar_thermal_collector_tilt'] = 20 - args['solar_thermal_collector_rated_optical_efficiency'] = 0.5 - args['solar_thermal_collector_rated_thermal_losses'] = 0.2799 - args['solar_thermal_solar_fraction'] = 0 args['pv_system_present'] = false - args['pv_system_array_azimuth'] = 180 - args['pv_system_array_tilt'] = 20 - args['pv_system_max_power_output'] = 4000 args['pv_system_2_present'] = false - args['pv_system_2_array_azimuth'] = 180 - args['pv_system_2_array_tilt'] = 20 - args['pv_system_2_max_power_output'] = 4000 args['battery_present'] = false args['lighting_present'] = true args['lighting_interior_fraction_cfl'] = 0.4 @@ -611,11 +526,6 @@ def _set_measure_argument_values(hpxml_file, args) args['lighting_garage_fraction_led'] = 0.25 args['holiday_lighting_present'] = false args['dehumidifier_type'] = Constants::None - args['dehumidifier_efficiency_type'] = 'EnergyFactor' - args['dehumidifier_efficiency'] = 1.8 - args['dehumidifier_capacity'] = 40 - args['dehumidifier_rh_setpoint'] = 0.5 - args['dehumidifier_fraction_dehumidification_load_served'] = 1 args['clothes_washer_present'] = true args['clothes_washer_location'] = HPXML::LocationConditionedSpace args['clothes_washer_efficiency_type'] = 'IntegratedModifiedEnergyFactor' @@ -660,15 +570,10 @@ def _set_measure_argument_values(hpxml_file, args) args['misc_plug_loads_well_pump_present'] = false args['misc_plug_loads_vehicle_present'] = false args['misc_fuel_loads_grill_present'] = false - args['misc_fuel_loads_grill_fuel_type'] = HPXML::FuelTypeNaturalGas args['misc_fuel_loads_lighting_present'] = false - args['misc_fuel_loads_lighting_fuel_type'] = HPXML::FuelTypeNaturalGas args['misc_fuel_loads_fireplace_present'] = false - args['misc_fuel_loads_fireplace_fuel_type'] = HPXML::FuelTypeNaturalGas args['pool_present'] = false - args['pool_heater_type'] = HPXML::HeaterTypeElectricResistance args['permanent_spa_present'] = false - args['permanent_spa_heater_type'] = HPXML::HeaterTypeElectricResistance elsif ['base-sfd2.xml'].include? hpxml_file args['existing_hpxml_path'] = File.join(File.dirname(__FILE__), 'extra_files/base-sfd.xml') args['whole_sfa_or_mf_building_sim'] = true From 2cba857ee2129698d719399f0cb40106117e81a4 Mon Sep 17 00:00:00 2001 From: Joe Robertson Date: Wed, 23 Oct 2024 21:12:01 -0700 Subject: [PATCH 03/33] Remove ignored arguments from template osw file. --- ...emplate-build-and-run-hpxml-with-stochastic-occupancy.osw | 5 ----- 1 file changed, 5 deletions(-) diff --git a/workflow/template-build-and-run-hpxml-with-stochastic-occupancy.osw b/workflow/template-build-and-run-hpxml-with-stochastic-occupancy.osw index da3a974b27..dbcaec5d80 100644 --- a/workflow/template-build-and-run-hpxml-with-stochastic-occupancy.osw +++ b/workflow/template-build-and-run-hpxml-with-stochastic-occupancy.osw @@ -27,7 +27,6 @@ "ducts_supply_location": "attic - unvented", "ducts_supply_surface_area": 150.0, "floor_over_foundation_assembly_r": 0, - "floor_over_garage_assembly_r": 0, "foundation_wall_insulation_r": 8.9, "geometry_attic_type": "UnventedAttic", "geometry_average_ceiling_height": 8.0, @@ -35,7 +34,6 @@ "geometry_foundation_height": 8.0, "geometry_foundation_height_above_grade": 1.0, "geometry_foundation_type": "ConditionedBasement", - "geometry_garage_width": 0.0, "geometry_rim_joist_height": 9.25, "geometry_roof_pitch": "6:12", "geometry_roof_type": "gable", @@ -45,9 +43,6 @@ "geometry_unit_num_floors_above_grade": 1, "geometry_unit_orientation": 180.0, "geometry_unit_type": "single-family detached", - "geometry_unit_left_wall_is_adiabatic": false, - "geometry_unit_right_wall_is_adiabatic": false, - "geometry_unit_back_wall_is_adiabatic": false, "heating_system_fuel": "natural gas", "heating_system_heating_capacity": 36000.0, "heating_system_heating_efficiency": 0.92, From 30dcd872f910d954d33eca52f704e415b2b3c5ad Mon Sep 17 00:00:00 2001 From: Scott Horowitz Date: Fri, 25 Oct 2024 11:03:16 -0600 Subject: [PATCH 04/33] More optional arguments. Remove WWR arguments; fold functionality into the other window area arguments. --- BuildResidentialHPXML/README.md | 208 ++++++---------- BuildResidentialHPXML/measure.rb | 194 +++++++-------- BuildResidentialHPXML/measure.xml | 222 +++++++----------- BuildResidentialHPXML/resources/geometry.rb | 24 +- .../tests/test_build_residential_hpxml.rb | 57 +---- Changelog.md | 1 + workflow/hpxml_inputs.json | 108 +-------- ...nd-run-hpxml-with-stochastic-occupancy.osw | 5 - 8 files changed, 282 insertions(+), 537 deletions(-) diff --git a/BuildResidentialHPXML/README.md b/BuildResidentialHPXML/README.md index 792a3a330f..013793d079 100644 --- a/BuildResidentialHPXML/README.md +++ b/BuildResidentialHPXML/README.md @@ -606,7 +606,7 @@ Describes the above-grade height of apartment units on upper floors or homes abo **Geometry: Garage Width** -The width of the garage. Enter zero for no garage. Only applies to single-family detached units. +The width of the garage. Only applies to single-family detached units. If not provided, defaults to zero (no garage). - **Name:** ``geometry_garage_width`` - **Type:** ``Double`` @@ -1146,7 +1146,7 @@ Assembly R-value for the ceiling (attic floor). - **Units:** ``h-ft^2-R/Btu`` -- **Required:** ``true`` +- **Required:** ``false``
@@ -1185,7 +1185,7 @@ Assembly R-value of the roof. - **Units:** ``h-ft^2-R/Btu`` -- **Required:** ``true`` +- **Required:** ``false``
@@ -1267,61 +1267,9 @@ Assembly R-value of the walls.
-**Windows: Front Window-to-Wall Ratio** - -The ratio of window area to wall area for the unit's front facade. Enter 0 if specifying Front Window Area instead. If the front wall is adiabatic, the value will be ignored. - -- **Name:** ``window_front_wwr`` -- **Type:** ``Double`` - -- **Units:** ``Frac`` - -- **Required:** ``true`` - -
- -**Windows: Back Window-to-Wall Ratio** - -The ratio of window area to wall area for the unit's back facade. Enter 0 if specifying Back Window Area instead. If the back wall is adiabatic, the value will be ignored. - -- **Name:** ``window_back_wwr`` -- **Type:** ``Double`` - -- **Units:** ``Frac`` - -- **Required:** ``true`` - -
- -**Windows: Left Window-to-Wall Ratio** - -The ratio of window area to wall area for the unit's left facade (when viewed from the front). Enter 0 if specifying Left Window Area instead. If the left wall is adiabatic, the value will be ignored. - -- **Name:** ``window_left_wwr`` -- **Type:** ``Double`` - -- **Units:** ``Frac`` - -- **Required:** ``true`` - -
- -**Windows: Right Window-to-Wall Ratio** - -The ratio of window area to wall area for the unit's right facade (when viewed from the front). Enter 0 if specifying Right Window Area instead. If the right wall is adiabatic, the value will be ignored. - -- **Name:** ``window_right_wwr`` -- **Type:** ``Double`` - -- **Units:** ``Frac`` - -- **Required:** ``true`` - -
- **Windows: Front Window Area** -The amount of window area on the unit's front facade. Enter 0 if specifying Front Window-to-Wall Ratio instead. If the front wall is adiabatic, the value will be ignored. +The amount of window area on the unit's front facade. A value less than 1 will be treated as a window-to-wall ratio. If the front wall is adiabatic, the value will be ignored. - **Name:** ``window_area_front`` - **Type:** ``Double`` @@ -1334,7 +1282,7 @@ The amount of window area on the unit's front facade. Enter 0 if specifying Fron **Windows: Back Window Area** -The amount of window area on the unit's back facade. Enter 0 if specifying Back Window-to-Wall Ratio instead. If the back wall is adiabatic, the value will be ignored. +The amount of window area on the unit's back facade. A value less than 1 will be treated as a window-to-wall ratio. If the back wall is adiabatic, the value will be ignored. - **Name:** ``window_area_back`` - **Type:** ``Double`` @@ -1347,7 +1295,7 @@ The amount of window area on the unit's back facade. Enter 0 if specifying Back **Windows: Left Window Area** -The amount of window area on the unit's left facade (when viewed from the front). Enter 0 if specifying Left Window-to-Wall Ratio instead. If the left wall is adiabatic, the value will be ignored. +The amount of window area on the unit's left facade (when viewed from the front). A value less than 1 will be treated as a window-to-wall ratio. If the left wall is adiabatic, the value will be ignored. - **Name:** ``window_area_left`` - **Type:** ``Double`` @@ -1360,7 +1308,7 @@ The amount of window area on the unit's left facade (when viewed from the front) **Windows: Right Window Area** -The amount of window area on the unit's right facade (when viewed from the front). Enter 0 if specifying Right Window-to-Wall Ratio instead. If the right wall is adiabatic, the value will be ignored. +The amount of window area on the unit's right facade (when viewed from the front). A value less than 1 will be treated as a window-to-wall ratio. If the right wall is adiabatic, the value will be ignored. - **Name:** ``window_area_right`` - **Type:** ``Double`` @@ -1380,55 +1328,55 @@ Ratio of window height to width. - **Units:** ``Frac`` -- **Required:** ``false`` +- **Required:** ``true``
-**Windows: Fraction Operable** +**Windows: U-Factor** -Fraction of windows that are operable. If not provided, the OS-HPXML default (see HPXML Windows) is used. +Full-assembly NFRC U-factor. -- **Name:** ``window_fraction_operable`` +- **Name:** ``window_ufactor`` - **Type:** ``Double`` -- **Units:** ``Frac`` +- **Units:** ``Btu/hr-ft^2-R`` -- **Required:** ``false`` +- **Required:** ``true``
-**Windows: Natural Ventilation Availability** - -For operable windows, the number of days/week that windows can be opened by occupants for natural ventilation. If not provided, the OS-HPXML default (see HPXML Windows) is used. +**Windows: SHGC** -- **Name:** ``window_natvent_availability`` -- **Type:** ``Integer`` +Full-assembly NFRC solar heat gain coefficient. -- **Units:** ``Days/week`` +- **Name:** ``window_shgc`` +- **Type:** ``Double`` -- **Required:** ``false`` +- **Required:** ``true``
-**Windows: U-Factor** +**Windows: Fraction Operable** -Full-assembly NFRC U-factor. +Fraction of windows that are operable. If not provided, the OS-HPXML default (see HPXML Windows) is used. -- **Name:** ``window_ufactor`` +- **Name:** ``window_fraction_operable`` - **Type:** ``Double`` -- **Units:** ``Btu/hr-ft^2-R`` +- **Units:** ``Frac`` - **Required:** ``false``
-**Windows: SHGC** +**Windows: Natural Ventilation Availability** -Full-assembly NFRC solar heat gain coefficient. +For operable windows, the number of days/week that windows can be opened by occupants for natural ventilation. If not provided, the OS-HPXML default (see HPXML Windows) is used. -- **Name:** ``window_shgc`` -- **Type:** ``Double`` +- **Name:** ``window_natvent_availability`` +- **Type:** ``Integer`` + +- **Units:** ``Days/week`` - **Required:** ``false`` @@ -1558,7 +1506,7 @@ The depth of overhangs for windows for the front facade. - **Units:** ``ft`` -- **Required:** ``true`` +- **Required:** ``false``
@@ -1597,7 +1545,7 @@ The depth of overhangs for windows for the back facade. - **Units:** ``ft`` -- **Required:** ``true`` +- **Required:** ``false``
@@ -1636,7 +1584,7 @@ The depth of overhangs for windows for the left facade. - **Units:** ``ft`` -- **Required:** ``true`` +- **Required:** ``false``
@@ -1675,7 +1623,7 @@ The depth of overhangs for windows for the right facade. - **Units:** ``ft`` -- **Required:** ``true`` +- **Required:** ``false``
@@ -1714,7 +1662,7 @@ The amount of skylight area on the unit's front conditioned roof facade. - **Units:** ``ft^2`` -- **Required:** ``true`` +- **Required:** ``false``
@@ -1727,7 +1675,7 @@ The amount of skylight area on the unit's back conditioned roof facade. - **Units:** ``ft^2`` -- **Required:** ``true`` +- **Required:** ``false``
@@ -1740,7 +1688,7 @@ The amount of skylight area on the unit's left conditioned roof facade (when vie - **Units:** ``ft^2`` -- **Required:** ``true`` +- **Required:** ``false``
@@ -1753,7 +1701,7 @@ The amount of skylight area on the unit's right conditioned roof facade (when vi - **Units:** ``ft^2`` -- **Required:** ``true`` +- **Required:** ``false``
@@ -1816,7 +1764,7 @@ R-value of the opaque door(s). - **Units:** ``h-ft^2-R/Btu`` -- **Required:** ``false`` +- **Required:** ``true``
@@ -2868,12 +2816,12 @@ Pipe diameter of the geothermal loop. Only applies to ground-to-air heat pump ty **Heating System 2: Type** -The type of the second heating system. If a heat pump is specified and the backup type is 'separate', this heating system represents 'separate' backup heating. For ducted heat pumps where the backup heating system is a 'Furnace', the backup would typically be characterized as 'integrated' in that the furnace and heat pump share the same distribution system and blower fan; a 'Furnace' as 'separate' backup to a ducted heat pump is not supported. +The type of the second heating system. If a heat pump is specified and the backup type is 'separate', this heating system represents 'separate' backup heating. For ducted heat pumps where the backup heating system is a 'Furnace', the backup would typically be characterized as 'integrated' in that the furnace and heat pump share the same distribution system and blower fan; a 'Furnace' as 'separate' backup to a ducted heat pump is not supported. If not provided, defaults to none. - **Name:** ``heating_system_2_type`` - **Type:** ``Choice`` -- **Required:** ``true`` +- **Required:** ``false`` - **Choices:** `none`, `Furnace`, `WallFurnace`, `FloorFurnace`, `Boiler`, `ElectricResistance`, `Stove`, `SpaceHeater`, `Fireplace` @@ -3240,12 +3188,12 @@ The fraction of return ducts that are rectangular (as opposed to round); this af **Mechanical Ventilation: Fan Type** -The type of the mechanical ventilation. Use 'none' if there is no mechanical ventilation system. +The type of the mechanical ventilation. Use 'none' if there is no mechanical ventilation system. If not provided, defaults to none. - **Name:** ``mech_vent_fan_type`` - **Type:** ``Choice`` -- **Required:** ``true`` +- **Required:** ``false`` - **Choices:** `none`, `exhaust only`, `supply only`, `energy recovery ventilator`, `heat recovery ventilator`, `balanced`, `central fan integrated supply` @@ -3435,12 +3383,12 @@ Fraction of cooling load introduced by the shared ventilation system that is met **Mechanical Ventilation 2: Fan Type** -The type of the second mechanical ventilation. Use 'none' if there is no second mechanical ventilation system. +The type of the second mechanical ventilation. Use 'none' if there is no second mechanical ventilation system. If not provided, defaults to none. - **Name:** ``mech_vent_2_fan_type`` - **Type:** ``Choice`` -- **Required:** ``true`` +- **Required:** ``false`` - **Choices:** `none`, `exhaust only`, `supply only`, `energy recovery ventilator`, `heat recovery ventilator`, `balanced` @@ -3661,7 +3609,7 @@ Whether there is a whole house fan. - **Name:** ``whole_house_fan_present`` - **Type:** ``Boolean`` -- **Required:** ``true`` +- **Required:** ``false``
@@ -4006,7 +3954,7 @@ Which facilities are connected for the drain water heat recovery. Use 'none' if - **Name:** ``dwhr_facilities_connected`` - **Type:** ``Choice`` -- **Required:** ``true`` +- **Required:** ``false`` - **Choices:** `none`, `one`, `all` @@ -4038,23 +3986,23 @@ The efficiency of the drain water heat recovery. **Hot Water Fixtures: Is Shower Low Flow** -Whether the shower fixture is low flow. +Whether the shower fixture is low flow. If not provided, defaults to false. - **Name:** ``water_fixtures_shower_low_flow`` - **Type:** ``Boolean`` -- **Required:** ``true`` +- **Required:** ``false``
**Hot Water Fixtures: Is Sink Low Flow** -Whether the sink fixture is low flow. +Whether the sink fixture is low flow. If not provided, defaults to false. - **Name:** ``water_fixtures_sink_low_flow`` - **Type:** ``Boolean`` -- **Required:** ``true`` +- **Required:** ``false``
@@ -4087,7 +4035,7 @@ The type of solar thermal system. Use 'none' if there is no solar thermal system - **Name:** ``solar_thermal_system_type`` - **Type:** ``Choice`` -- **Required:** ``true`` +- **Required:** ``false`` - **Choices:** `none`, `hot water` @@ -4210,12 +4158,12 @@ The solar fraction of the solar thermal system. If provided, overrides all other **PV System: Present** -Whether there is a PV system present. +Whether there is a PV system present. If not provided, defaults to false. - **Name:** ``pv_system_present`` - **Type:** ``Boolean`` -- **Required:** ``true`` +- **Required:** ``false``
@@ -4336,12 +4284,12 @@ Number of bedrooms served by PV system. Only needed if single-family attached or **PV System 2: Present** -Whether there is a second PV system present. +Whether there is a second PV system present. If not provided, defaults to false. - **Name:** ``pv_system_2_present`` - **Type:** ``Boolean`` -- **Required:** ``true`` +- **Required:** ``false``
@@ -4423,12 +4371,12 @@ Maximum power output of the second PV system. For a shared system, this is the t **Battery: Present** -Whether there is a lithium ion battery present. +Whether there is a lithium ion battery present. If not provided, defaults to false. - **Name:** ``battery_present`` - **Type:** ``Boolean`` -- **Required:** ``true`` +- **Required:** ``false``
@@ -4655,12 +4603,12 @@ Multiplier on the lighting energy usage (garage) that can reflect, e.g., high/lo **Holiday Lighting: Present** -Whether there is holiday lighting. +Whether there is holiday lighting. If not provided, defaults to false. - **Name:** ``holiday_lighting_present`` - **Type:** ``Boolean`` -- **Required:** ``true`` +- **Required:** ``false``
@@ -4690,12 +4638,12 @@ Enter a date range like 'Nov 25 - Jan 5'. If not provided, the OS-HPXML default **Dehumidifier: Type** -The type of dehumidifier. +The type of dehumidifier. If not provided, defaults to none. - **Name:** ``dehumidifier_type`` - **Type:** ``Choice`` -- **Required:** ``true`` +- **Required:** ``false`` - **Choices:** `none`, `portable`, `whole-home` @@ -5168,12 +5116,12 @@ Multiplier on the refrigerator energy usage that can reflect, e.g., high/low usa **Extra Refrigerator: Present** -Whether there is an extra refrigerator present. +Whether there is an extra refrigerator present. If not provided, defaults to false. - **Name:** ``extra_refrigerator_present`` - **Type:** ``Boolean`` -- **Required:** ``true`` +- **Required:** ``false``
@@ -5216,12 +5164,12 @@ Multiplier on the extra refrigerator energy usage that can reflect, e.g., high/l **Freezer: Present** -Whether there is a freezer present. +Whether there is a freezer present. If not provided, defaults to false. - **Name:** ``freezer_present`` - **Type:** ``Boolean`` -- **Required:** ``true`` +- **Required:** ``false``
@@ -5482,12 +5430,12 @@ Multiplier on the other energy usage that can reflect, e.g., high/low usage occu **Misc Plug Loads: Well Pump Present** -Whether there is a well pump. +Whether there is a well pump. If not provided, defaults to false. - **Name:** ``misc_plug_loads_well_pump_present`` - **Type:** ``Boolean`` -- **Required:** ``true`` +- **Required:** ``false``
@@ -5517,12 +5465,12 @@ Multiplier on the well pump energy usage that can reflect, e.g., high/low usage **Misc Plug Loads: Vehicle Present** -Whether there is an electric vehicle. +Whether there is an electric vehicle. If not provided, defaults to false. - **Name:** ``misc_plug_loads_vehicle_present`` - **Type:** ``Boolean`` -- **Required:** ``true`` +- **Required:** ``false``
@@ -5552,12 +5500,12 @@ Multiplier on the electric vehicle energy usage that can reflect, e.g., high/low **Misc Fuel Loads: Grill Present** -Whether there is a fuel loads grill. +Whether there is a fuel loads grill. If not provided, defaults to false. - **Name:** ``misc_fuel_loads_grill_present`` - **Type:** ``Boolean`` -- **Required:** ``true`` +- **Required:** ``false``
@@ -5600,12 +5548,12 @@ Multiplier on the fuel loads grill energy usage that can reflect, e.g., high/low **Misc Fuel Loads: Lighting Present** -Whether there is fuel loads lighting. +Whether there is fuel loads lighting. If not provided, defaults to false. - **Name:** ``misc_fuel_loads_lighting_present`` - **Type:** ``Boolean`` -- **Required:** ``true`` +- **Required:** ``false``
@@ -5648,12 +5596,12 @@ Multiplier on the fuel loads lighting energy usage that can reflect, e.g., high/ **Misc Fuel Loads: Fireplace Present** -Whether there is fuel loads fireplace. +Whether there is fuel loads fireplace. If not provided, defaults to false. - **Name:** ``misc_fuel_loads_fireplace_present`` - **Type:** ``Boolean`` -- **Required:** ``true`` +- **Required:** ``false``
@@ -5722,12 +5670,12 @@ Multiplier on the fuel loads fireplace energy usage that can reflect, e.g., high **Pool: Present** -Whether there is a pool. +Whether there is a pool. If not provided, defaults to false. - **Name:** ``pool_present`` - **Type:** ``Boolean`` -- **Required:** ``true`` +- **Required:** ``false``
@@ -5807,12 +5755,12 @@ Multiplier on the pool heater energy usage that can reflect, e.g., high/low usag **Permanent Spa: Present** -Whether there is a permanent spa. +Whether there is a permanent spa. If not provided, defaults to false. - **Name:** ``permanent_spa_present`` - **Type:** ``Boolean`` -- **Required:** ``true`` +- **Required:** ``false``
diff --git a/BuildResidentialHPXML/measure.rb b/BuildResidentialHPXML/measure.rb index a3783d6e56..cba60735dd 100644 --- a/BuildResidentialHPXML/measure.rb +++ b/BuildResidentialHPXML/measure.rb @@ -368,7 +368,7 @@ def arguments(model) # rubocop:disable Lint/UnusedMethodArgument arg = OpenStudio::Measure::OSArgument::makeDoubleArgument('geometry_garage_width', false) arg.setDisplayName('Geometry: Garage Width') arg.setUnits('ft') - arg.setDescription("The width of the garage. Enter zero for no garage. Only applies to #{HPXML::ResidentialTypeSFD} units.") + arg.setDescription("The width of the garage. Only applies to #{HPXML::ResidentialTypeSFD} units. If not provided, defaults to zero (no garage).") arg.setDefaultValue(0.0) args << arg @@ -689,7 +689,7 @@ def arguments(model) # rubocop:disable Lint/UnusedMethodArgument arg.setDescription("R-value of the slab carpet. If not provided, the OS-HPXML default (see HPXML Slabs) is used.") args << arg - arg = OpenStudio::Measure::OSArgument::makeDoubleArgument('ceiling_assembly_r', true) + arg = OpenStudio::Measure::OSArgument::makeDoubleArgument('ceiling_assembly_r', false) arg.setDisplayName('Ceiling: Assembly R-value') arg.setUnits('h-ft^2-R/Btu') arg.setDescription('Assembly R-value for the ceiling (attic floor).') @@ -724,7 +724,7 @@ def arguments(model) # rubocop:disable Lint/UnusedMethodArgument arg.setDescription("The color of the roof. If not provided, the OS-HPXML default (see HPXML Roofs) is used.") args << arg - arg = OpenStudio::Measure::OSArgument::makeDoubleArgument('roof_assembly_r', true) + arg = OpenStudio::Measure::OSArgument::makeDoubleArgument('roof_assembly_r', false) arg.setDisplayName('Roof: Assembly R-value') arg.setUnits('h-ft^2-R/Btu') arg.setDescription('Assembly R-value of the roof.') @@ -801,69 +801,54 @@ def arguments(model) # rubocop:disable Lint/UnusedMethodArgument arg.setDefaultValue(11.9) args << arg - arg = OpenStudio::Measure::OSArgument::makeDoubleArgument('window_front_wwr', true) - arg.setDisplayName('Windows: Front Window-to-Wall Ratio') - arg.setUnits('Frac') - arg.setDescription("The ratio of window area to wall area for the unit's front facade. Enter 0 if specifying Front Window Area instead. If the front wall is adiabatic, the value will be ignored.") - arg.setDefaultValue(0.18) - args << arg - - arg = OpenStudio::Measure::OSArgument::makeDoubleArgument('window_back_wwr', true) - arg.setDisplayName('Windows: Back Window-to-Wall Ratio') - arg.setUnits('Frac') - arg.setDescription("The ratio of window area to wall area for the unit's back facade. Enter 0 if specifying Back Window Area instead. If the back wall is adiabatic, the value will be ignored.") - arg.setDefaultValue(0.18) - args << arg - - arg = OpenStudio::Measure::OSArgument::makeDoubleArgument('window_left_wwr', true) - arg.setDisplayName('Windows: Left Window-to-Wall Ratio') - arg.setUnits('Frac') - arg.setDescription("The ratio of window area to wall area for the unit's left facade (when viewed from the front). Enter 0 if specifying Left Window Area instead. If the left wall is adiabatic, the value will be ignored.") - arg.setDefaultValue(0.18) - args << arg - - arg = OpenStudio::Measure::OSArgument::makeDoubleArgument('window_right_wwr', true) - arg.setDisplayName('Windows: Right Window-to-Wall Ratio') - arg.setUnits('Frac') - arg.setDescription("The ratio of window area to wall area for the unit's right facade (when viewed from the front). Enter 0 if specifying Right Window Area instead. If the right wall is adiabatic, the value will be ignored.") - arg.setDefaultValue(0.18) - args << arg - arg = OpenStudio::Measure::OSArgument::makeDoubleArgument('window_area_front', true) arg.setDisplayName('Windows: Front Window Area') arg.setUnits('ft^2') - arg.setDescription("The amount of window area on the unit's front facade. Enter 0 if specifying Front Window-to-Wall Ratio instead. If the front wall is adiabatic, the value will be ignored.") + arg.setDescription("The amount of window area on the unit's front facade. A value less than 1 will be treated as a window-to-wall ratio. If the front wall is adiabatic, the value will be ignored.") arg.setDefaultValue(0) args << arg arg = OpenStudio::Measure::OSArgument::makeDoubleArgument('window_area_back', true) arg.setDisplayName('Windows: Back Window Area') arg.setUnits('ft^2') - arg.setDescription("The amount of window area on the unit's back facade. Enter 0 if specifying Back Window-to-Wall Ratio instead. If the back wall is adiabatic, the value will be ignored.") + arg.setDescription("The amount of window area on the unit's back facade. A value less than 1 will be treated as a window-to-wall ratio. If the back wall is adiabatic, the value will be ignored.") arg.setDefaultValue(0) args << arg arg = OpenStudio::Measure::OSArgument::makeDoubleArgument('window_area_left', true) arg.setDisplayName('Windows: Left Window Area') arg.setUnits('ft^2') - arg.setDescription("The amount of window area on the unit's left facade (when viewed from the front). Enter 0 if specifying Left Window-to-Wall Ratio instead. If the left wall is adiabatic, the value will be ignored.") + arg.setDescription("The amount of window area on the unit's left facade (when viewed from the front). A value less than 1 will be treated as a window-to-wall ratio. If the left wall is adiabatic, the value will be ignored.") arg.setDefaultValue(0) args << arg arg = OpenStudio::Measure::OSArgument::makeDoubleArgument('window_area_right', true) arg.setDisplayName('Windows: Right Window Area') arg.setUnits('ft^2') - arg.setDescription("The amount of window area on the unit's right facade (when viewed from the front). Enter 0 if specifying Right Window-to-Wall Ratio instead. If the right wall is adiabatic, the value will be ignored.") + arg.setDescription("The amount of window area on the unit's right facade (when viewed from the front). A value less than 1 will be treated as a window-to-wall ratio. If the right wall is adiabatic, the value will be ignored.") arg.setDefaultValue(0) args << arg - arg = OpenStudio::Measure::OSArgument::makeDoubleArgument('window_aspect_ratio', false) + arg = OpenStudio::Measure::OSArgument::makeDoubleArgument('window_aspect_ratio', true) arg.setDisplayName('Windows: Aspect Ratio') arg.setUnits('Frac') arg.setDescription('Ratio of window height to width.') arg.setDefaultValue(1.333) args << arg + arg = OpenStudio::Measure::OSArgument::makeDoubleArgument('window_ufactor', true) + arg.setDisplayName('Windows: U-Factor') + arg.setUnits('Btu/hr-ft^2-R') + arg.setDescription('Full-assembly NFRC U-factor.') + arg.setDefaultValue(0.37) + args << arg + + arg = OpenStudio::Measure::OSArgument::makeDoubleArgument('window_shgc', true) + arg.setDisplayName('Windows: SHGC') + arg.setDescription('Full-assembly NFRC solar heat gain coefficient.') + arg.setDefaultValue(0.3) + args << arg + arg = OpenStudio::Measure::OSArgument::makeDoubleArgument('window_fraction_operable', false) arg.setDisplayName('Windows: Fraction Operable') arg.setUnits('Frac') @@ -876,19 +861,6 @@ def arguments(model) # rubocop:disable Lint/UnusedMethodArgument arg.setDescription("For operable windows, the number of days/week that windows can be opened by occupants for natural ventilation. If not provided, the OS-HPXML default (see HPXML Windows) is used.") args << arg - arg = OpenStudio::Measure::OSArgument::makeDoubleArgument('window_ufactor', false) - arg.setDisplayName('Windows: U-Factor') - arg.setUnits('Btu/hr-ft^2-R') - arg.setDescription('Full-assembly NFRC U-factor.') - arg.setDefaultValue(0.37) - args << arg - - arg = OpenStudio::Measure::OSArgument::makeDoubleArgument('window_shgc', false) - arg.setDisplayName('Windows: SHGC') - arg.setDescription('Full-assembly NFRC solar heat gain coefficient.') - arg.setDefaultValue(0.3) - args << arg - window_interior_shading_type_choices = OpenStudio::StringVector.new window_interior_shading_type_choices << HPXML::InteriorShadingTypeLightCurtains window_interior_shading_type_choices << HPXML::InteriorShadingTypeLightShades @@ -968,7 +940,7 @@ def arguments(model) # rubocop:disable Lint/UnusedMethodArgument arg.setDescription('The type of storm, if present. If not provided, assumes there is no storm.') args << arg - arg = OpenStudio::Measure::OSArgument::makeDoubleArgument('overhangs_front_depth', true) + arg = OpenStudio::Measure::OSArgument::makeDoubleArgument('overhangs_front_depth', false) arg.setDisplayName('Overhangs: Front Depth') arg.setUnits('ft') arg.setDescription('The depth of overhangs for windows for the front facade.') @@ -979,17 +951,17 @@ def arguments(model) # rubocop:disable Lint/UnusedMethodArgument arg.setDisplayName('Overhangs: Front Distance to Top of Window') arg.setUnits('ft') arg.setDescription('The overhangs distance to the top of window for the front facade.') - arg.setDefaultValue(0) + arg.setDefaultValue(1) args << arg arg = OpenStudio::Measure::OSArgument::makeDoubleArgument('overhangs_front_distance_to_bottom_of_window', false) arg.setDisplayName('Overhangs: Front Distance to Bottom of Window') arg.setUnits('ft') arg.setDescription('The overhangs distance to the bottom of window for the front facade.') - arg.setDefaultValue(4) + arg.setDefaultValue(5) args << arg - arg = OpenStudio::Measure::OSArgument::makeDoubleArgument('overhangs_back_depth', true) + arg = OpenStudio::Measure::OSArgument::makeDoubleArgument('overhangs_back_depth', false) arg.setDisplayName('Overhangs: Back Depth') arg.setUnits('ft') arg.setDescription('The depth of overhangs for windows for the back facade.') @@ -1000,17 +972,17 @@ def arguments(model) # rubocop:disable Lint/UnusedMethodArgument arg.setDisplayName('Overhangs: Back Distance to Top of Window') arg.setUnits('ft') arg.setDescription('The overhangs distance to the top of window for the back facade.') - arg.setDefaultValue(0) + arg.setDefaultValue(1) args << arg arg = OpenStudio::Measure::OSArgument::makeDoubleArgument('overhangs_back_distance_to_bottom_of_window', false) arg.setDisplayName('Overhangs: Back Distance to Bottom of Window') arg.setUnits('ft') arg.setDescription('The overhangs distance to the bottom of window for the back facade.') - arg.setDefaultValue(4) + arg.setDefaultValue(5) args << arg - arg = OpenStudio::Measure::OSArgument::makeDoubleArgument('overhangs_left_depth', true) + arg = OpenStudio::Measure::OSArgument::makeDoubleArgument('overhangs_left_depth', false) arg.setDisplayName('Overhangs: Left Depth') arg.setUnits('ft') arg.setDescription('The depth of overhangs for windows for the left facade.') @@ -1021,17 +993,17 @@ def arguments(model) # rubocop:disable Lint/UnusedMethodArgument arg.setDisplayName('Overhangs: Left Distance to Top of Window') arg.setUnits('ft') arg.setDescription('The overhangs distance to the top of window for the left facade.') - arg.setDefaultValue(0) + arg.setDefaultValue(1) args << arg arg = OpenStudio::Measure::OSArgument::makeDoubleArgument('overhangs_left_distance_to_bottom_of_window', false) arg.setDisplayName('Overhangs: Left Distance to Bottom of Window') arg.setUnits('ft') arg.setDescription('The overhangs distance to the bottom of window for the left facade.') - arg.setDefaultValue(4) + arg.setDefaultValue(5) args << arg - arg = OpenStudio::Measure::OSArgument::makeDoubleArgument('overhangs_right_depth', true) + arg = OpenStudio::Measure::OSArgument::makeDoubleArgument('overhangs_right_depth', false) arg.setDisplayName('Overhangs: Right Depth') arg.setUnits('ft') arg.setDescription('The depth of overhangs for windows for the right facade.') @@ -1042,38 +1014,38 @@ def arguments(model) # rubocop:disable Lint/UnusedMethodArgument arg.setDisplayName('Overhangs: Right Distance to Top of Window') arg.setUnits('ft') arg.setDescription('The overhangs distance to the top of window for the right facade.') - arg.setDefaultValue(0) + arg.setDefaultValue(1) args << arg arg = OpenStudio::Measure::OSArgument::makeDoubleArgument('overhangs_right_distance_to_bottom_of_window', false) arg.setDisplayName('Overhangs: Right Distance to Bottom of Window') arg.setUnits('ft') arg.setDescription('The overhangs distance to the bottom of window for the right facade.') - arg.setDefaultValue(4) + arg.setDefaultValue(5) args << arg - arg = OpenStudio::Measure::OSArgument::makeDoubleArgument('skylight_area_front', true) + arg = OpenStudio::Measure::OSArgument::makeDoubleArgument('skylight_area_front', false) arg.setDisplayName('Skylights: Front Roof Area') arg.setUnits('ft^2') arg.setDescription("The amount of skylight area on the unit's front conditioned roof facade.") arg.setDefaultValue(0) args << arg - arg = OpenStudio::Measure::OSArgument::makeDoubleArgument('skylight_area_back', true) + arg = OpenStudio::Measure::OSArgument::makeDoubleArgument('skylight_area_back', false) arg.setDisplayName('Skylights: Back Roof Area') arg.setUnits('ft^2') arg.setDescription("The amount of skylight area on the unit's back conditioned roof facade.") arg.setDefaultValue(0) args << arg - arg = OpenStudio::Measure::OSArgument::makeDoubleArgument('skylight_area_left', true) + arg = OpenStudio::Measure::OSArgument::makeDoubleArgument('skylight_area_left', false) arg.setDisplayName('Skylights: Left Roof Area') arg.setUnits('ft^2') arg.setDescription("The amount of skylight area on the unit's left conditioned roof facade (when viewed from the front).") arg.setDefaultValue(0) args << arg - arg = OpenStudio::Measure::OSArgument::makeDoubleArgument('skylight_area_right', true) + arg = OpenStudio::Measure::OSArgument::makeDoubleArgument('skylight_area_right', false) arg.setDisplayName('Skylights: Right Roof Area') arg.setUnits('ft^2') arg.setDescription("The amount of skylight area on the unit's right conditioned roof facade (when viewed from the front).") @@ -1105,7 +1077,7 @@ def arguments(model) # rubocop:disable Lint/UnusedMethodArgument arg.setDefaultValue(20.0) args << arg - arg = OpenStudio::Measure::OSArgument::makeDoubleArgument('door_rvalue', false) + arg = OpenStudio::Measure::OSArgument::makeDoubleArgument('door_rvalue', true) arg.setDisplayName('Doors: R-value') arg.setUnits('h-ft^2-R/Btu') arg.setDescription('R-value of the opaque door(s).') @@ -1731,9 +1703,9 @@ def arguments(model) # rubocop:disable Lint/UnusedMethodArgument heating_system_2_type_choices << HPXML::HVACTypeSpaceHeater heating_system_2_type_choices << HPXML::HVACTypeFireplace - arg = OpenStudio::Measure::OSArgument::makeChoiceArgument('heating_system_2_type', heating_system_2_type_choices, true) + arg = OpenStudio::Measure::OSArgument::makeChoiceArgument('heating_system_2_type', heating_system_2_type_choices, false) arg.setDisplayName('Heating System 2: Type') - arg.setDescription("The type of the second heating system. If a heat pump is specified and the backup type is '#{HPXML::HeatPumpBackupTypeSeparate}', this heating system represents '#{HPXML::HeatPumpBackupTypeSeparate}' backup heating. For ducted heat pumps where the backup heating system is a '#{HPXML::HVACTypeFurnace}', the backup would typically be characterized as '#{HPXML::HeatPumpBackupTypeIntegrated}' in that the furnace and heat pump share the same distribution system and blower fan; a '#{HPXML::HVACTypeFurnace}' as '#{HPXML::HeatPumpBackupTypeSeparate}' backup to a ducted heat pump is not supported.") + arg.setDescription("The type of the second heating system. If a heat pump is specified and the backup type is '#{HPXML::HeatPumpBackupTypeSeparate}', this heating system represents '#{HPXML::HeatPumpBackupTypeSeparate}' backup heating. For ducted heat pumps where the backup heating system is a '#{HPXML::HVACTypeFurnace}', the backup would typically be characterized as '#{HPXML::HeatPumpBackupTypeIntegrated}' in that the furnace and heat pump share the same distribution system and blower fan; a '#{HPXML::HVACTypeFurnace}' as '#{HPXML::HeatPumpBackupTypeSeparate}' backup to a ducted heat pump is not supported. If not provided, defaults to none.") arg.setDefaultValue(Constants::None) args << arg @@ -1954,9 +1926,9 @@ def arguments(model) # rubocop:disable Lint/UnusedMethodArgument mech_vent_recovery_efficiency_type_choices << 'Unadjusted' mech_vent_recovery_efficiency_type_choices << 'Adjusted' - arg = OpenStudio::Measure::OSArgument::makeChoiceArgument('mech_vent_fan_type', mech_vent_fan_type_choices, true) + arg = OpenStudio::Measure::OSArgument::makeChoiceArgument('mech_vent_fan_type', mech_vent_fan_type_choices, false) arg.setDisplayName('Mechanical Ventilation: Fan Type') - arg.setDescription("The type of the mechanical ventilation. Use '#{Constants::None}' if there is no mechanical ventilation system.") + arg.setDescription("The type of the mechanical ventilation. Use '#{Constants::None}' if there is no mechanical ventilation system. If not provided, defaults to none.") arg.setDefaultValue(Constants::None) args << arg @@ -2056,9 +2028,9 @@ def arguments(model) # rubocop:disable Lint/UnusedMethodArgument mech_vent_2_fan_type_choices << HPXML::MechVentTypeHRV mech_vent_2_fan_type_choices << HPXML::MechVentTypeBalanced - arg = OpenStudio::Measure::OSArgument::makeChoiceArgument('mech_vent_2_fan_type', mech_vent_2_fan_type_choices, true) + arg = OpenStudio::Measure::OSArgument::makeChoiceArgument('mech_vent_2_fan_type', mech_vent_2_fan_type_choices, false) arg.setDisplayName('Mechanical Ventilation 2: Fan Type') - arg.setDescription("The type of the second mechanical ventilation. Use '#{Constants::None}' if there is no second mechanical ventilation system.") + arg.setDescription("The type of the second mechanical ventilation. Use '#{Constants::None}' if there is no second mechanical ventilation system. If not provided, defaults to none.") arg.setDefaultValue(Constants::None) args << arg @@ -2163,7 +2135,7 @@ def arguments(model) # rubocop:disable Lint/UnusedMethodArgument arg.setUnits('hr') args << arg - arg = OpenStudio::Measure::OSArgument::makeBoolArgument('whole_house_fan_present', true) + arg = OpenStudio::Measure::OSArgument::makeBoolArgument('whole_house_fan_present', false) arg.setDisplayName('Whole House Fan: Present') arg.setDescription('Whether there is a whole house fan.') arg.setDefaultValue(false) @@ -2388,7 +2360,7 @@ def arguments(model) # rubocop:disable Lint/UnusedMethodArgument dwhr_facilities_connected_choices << HPXML::DWHRFacilitiesConnectedOne dwhr_facilities_connected_choices << HPXML::DWHRFacilitiesConnectedAll - arg = OpenStudio::Measure::OSArgument::makeChoiceArgument('dwhr_facilities_connected', dwhr_facilities_connected_choices, true) + arg = OpenStudio::Measure::OSArgument::makeChoiceArgument('dwhr_facilities_connected', dwhr_facilities_connected_choices, false) arg.setDisplayName('Drain Water Heat Recovery: Facilities Connected') arg.setDescription("Which facilities are connected for the drain water heat recovery. Use '#{Constants::None}' if there is no drain water heat recovery system.") arg.setDefaultValue(Constants::None) @@ -2407,15 +2379,15 @@ def arguments(model) # rubocop:disable Lint/UnusedMethodArgument arg.setDefaultValue(0.55) args << arg - arg = OpenStudio::Measure::OSArgument::makeBoolArgument('water_fixtures_shower_low_flow', true) + arg = OpenStudio::Measure::OSArgument::makeBoolArgument('water_fixtures_shower_low_flow', false) arg.setDisplayName('Hot Water Fixtures: Is Shower Low Flow') - arg.setDescription('Whether the shower fixture is low flow.') + arg.setDescription('Whether the shower fixture is low flow. If not provided, defaults to false.') arg.setDefaultValue(false) args << arg - arg = OpenStudio::Measure::OSArgument::makeBoolArgument('water_fixtures_sink_low_flow', true) + arg = OpenStudio::Measure::OSArgument::makeBoolArgument('water_fixtures_sink_low_flow', false) arg.setDisplayName('Hot Water Fixtures: Is Sink Low Flow') - arg.setDescription('Whether the sink fixture is low flow.') + arg.setDescription('Whether the sink fixture is low flow. If not provided, defaults to false.') arg.setDefaultValue(false) args << arg @@ -2444,7 +2416,7 @@ def arguments(model) # rubocop:disable Lint/UnusedMethodArgument solar_thermal_collector_type_choices << HPXML::SolarThermalCollectorTypeDoubleGlazing solar_thermal_collector_type_choices << HPXML::SolarThermalCollectorTypeICS - arg = OpenStudio::Measure::OSArgument::makeChoiceArgument('solar_thermal_system_type', solar_thermal_system_type_choices, true) + arg = OpenStudio::Measure::OSArgument::makeChoiceArgument('solar_thermal_system_type', solar_thermal_system_type_choices, false) arg.setDisplayName('Solar Thermal: System Type') arg.setDescription("The type of solar thermal system. Use '#{Constants::None}' if there is no solar thermal system.") arg.setDefaultValue(Constants::None) @@ -2525,9 +2497,9 @@ def arguments(model) # rubocop:disable Lint/UnusedMethodArgument pv_system_tracking_choices << HPXML::PVTrackingType1AxisBacktracked pv_system_tracking_choices << HPXML::PVTrackingType2Axis - arg = OpenStudio::Measure::OSArgument::makeBoolArgument('pv_system_present', true) + arg = OpenStudio::Measure::OSArgument::makeBoolArgument('pv_system_present', false) arg.setDisplayName('PV System: Present') - arg.setDescription('Whether there is a PV system present.') + arg.setDescription('Whether there is a PV system present. If not provided, defaults to false.') arg.setDefaultValue(false) args << arg @@ -2585,9 +2557,9 @@ def arguments(model) # rubocop:disable Lint/UnusedMethodArgument arg.setUnits('#') args << arg - arg = OpenStudio::Measure::OSArgument::makeBoolArgument('pv_system_2_present', true) + arg = OpenStudio::Measure::OSArgument::makeBoolArgument('pv_system_2_present', false) arg.setDisplayName('PV System 2: Present') - arg.setDescription('Whether there is a second PV system present.') + arg.setDescription('Whether there is a second PV system present. If not provided, defaults to false.') arg.setDefaultValue(false) args << arg @@ -2641,9 +2613,9 @@ def arguments(model) # rubocop:disable Lint/UnusedMethodArgument battery_location_choices << HPXML::LocationGarage battery_location_choices << HPXML::LocationOutside - arg = OpenStudio::Measure::OSArgument::makeBoolArgument('battery_present', true) + arg = OpenStudio::Measure::OSArgument::makeBoolArgument('battery_present', false) arg.setDisplayName('Battery: Present') - arg.setDescription('Whether there is a lithium ion battery present.') + arg.setDescription('Whether there is a lithium ion battery present. If not provided, defaults to false.') arg.setDefaultValue(false) args << arg @@ -2757,9 +2729,9 @@ def arguments(model) # rubocop:disable Lint/UnusedMethodArgument arg.setDescription("Multiplier on the lighting energy usage (garage) that can reflect, e.g., high/low usage occupants. If not provided, the OS-HPXML default (see HPXML Lighting) is used.") args << arg - arg = OpenStudio::Measure::OSArgument::makeBoolArgument('holiday_lighting_present', true) + arg = OpenStudio::Measure::OSArgument::makeBoolArgument('holiday_lighting_present', false) arg.setDisplayName('Holiday Lighting: Present') - arg.setDescription('Whether there is holiday lighting.') + arg.setDescription('Whether there is holiday lighting. If not provided, defaults to false.') arg.setDefaultValue(false) args << arg @@ -2783,9 +2755,9 @@ def arguments(model) # rubocop:disable Lint/UnusedMethodArgument dehumidifier_efficiency_type_choices << 'EnergyFactor' dehumidifier_efficiency_type_choices << 'IntegratedEnergyFactor' - arg = OpenStudio::Measure::OSArgument::makeChoiceArgument('dehumidifier_type', dehumidifier_type_choices, true) + arg = OpenStudio::Measure::OSArgument::makeChoiceArgument('dehumidifier_type', dehumidifier_type_choices, false) arg.setDisplayName('Dehumidifier: Type') - arg.setDescription('The type of dehumidifier.') + arg.setDescription('The type of dehumidifier. If not provided, defaults to none.') arg.setDefaultValue(Constants::None) args << arg @@ -3037,9 +3009,9 @@ def arguments(model) # rubocop:disable Lint/UnusedMethodArgument arg.setDescription("Multiplier on the refrigerator energy usage that can reflect, e.g., high/low usage occupants. If not provided, the OS-HPXML default (see HPXML Refrigerators) is used.") args << arg - arg = OpenStudio::Measure::OSArgument::makeBoolArgument('extra_refrigerator_present', true) + arg = OpenStudio::Measure::OSArgument::makeBoolArgument('extra_refrigerator_present', false) arg.setDisplayName('Extra Refrigerator: Present') - arg.setDescription('Whether there is an extra refrigerator present.') + arg.setDescription('Whether there is an extra refrigerator present. If not provided, defaults to false.') arg.setDefaultValue(false) args << arg @@ -3059,9 +3031,9 @@ def arguments(model) # rubocop:disable Lint/UnusedMethodArgument arg.setDescription("Multiplier on the extra refrigerator energy usage that can reflect, e.g., high/low usage occupants. If not provided, the OS-HPXML default (see HPXML Refrigerators) is used.") args << arg - arg = OpenStudio::Measure::OSArgument::makeBoolArgument('freezer_present', true) + arg = OpenStudio::Measure::OSArgument::makeBoolArgument('freezer_present', false) arg.setDisplayName('Freezer: Present') - arg.setDescription('Whether there is a freezer present.') + arg.setDescription('Whether there is a freezer present. If not provided, defaults to false.') arg.setDefaultValue(false) args << arg @@ -3191,9 +3163,9 @@ def arguments(model) # rubocop:disable Lint/UnusedMethodArgument arg.setDescription("Multiplier on the other energy usage that can reflect, e.g., high/low usage occupants. If not provided, the OS-HPXML default (see HPXML Plug Loads) is used.") args << arg - arg = OpenStudio::Measure::OSArgument::makeBoolArgument('misc_plug_loads_well_pump_present', true) + arg = OpenStudio::Measure::OSArgument::makeBoolArgument('misc_plug_loads_well_pump_present', false) arg.setDisplayName('Misc Plug Loads: Well Pump Present') - arg.setDescription('Whether there is a well pump.') + arg.setDescription('Whether there is a well pump. If not provided, defaults to false.') arg.setDefaultValue(false) args << arg @@ -3208,9 +3180,9 @@ def arguments(model) # rubocop:disable Lint/UnusedMethodArgument arg.setDescription("Multiplier on the well pump energy usage that can reflect, e.g., high/low usage occupants. If not provided, the OS-HPXML default (see HPXML Plug Loads) is used.") args << arg - arg = OpenStudio::Measure::OSArgument::makeBoolArgument('misc_plug_loads_vehicle_present', true) + arg = OpenStudio::Measure::OSArgument::makeBoolArgument('misc_plug_loads_vehicle_present', false) arg.setDisplayName('Misc Plug Loads: Vehicle Present') - arg.setDescription('Whether there is an electric vehicle.') + arg.setDescription('Whether there is an electric vehicle. If not provided, defaults to false.') arg.setDefaultValue(false) args << arg @@ -3232,9 +3204,9 @@ def arguments(model) # rubocop:disable Lint/UnusedMethodArgument misc_fuel_loads_fuel_choices << HPXML::FuelTypeWoodCord misc_fuel_loads_fuel_choices << HPXML::FuelTypeWoodPellets - arg = OpenStudio::Measure::OSArgument::makeBoolArgument('misc_fuel_loads_grill_present', true) + arg = OpenStudio::Measure::OSArgument::makeBoolArgument('misc_fuel_loads_grill_present', false) arg.setDisplayName('Misc Fuel Loads: Grill Present') - arg.setDescription('Whether there is a fuel loads grill.') + arg.setDescription('Whether there is a fuel loads grill. If not provided, defaults to false.') arg.setDefaultValue(false) args << arg @@ -3255,9 +3227,9 @@ def arguments(model) # rubocop:disable Lint/UnusedMethodArgument arg.setDescription("Multiplier on the fuel loads grill energy usage that can reflect, e.g., high/low usage occupants. If not provided, the OS-HPXML default (see HPXML Fuel Loads) is used.") args << arg - arg = OpenStudio::Measure::OSArgument::makeBoolArgument('misc_fuel_loads_lighting_present', true) + arg = OpenStudio::Measure::OSArgument::makeBoolArgument('misc_fuel_loads_lighting_present', false) arg.setDisplayName('Misc Fuel Loads: Lighting Present') - arg.setDescription('Whether there is fuel loads lighting.') + arg.setDescription('Whether there is fuel loads lighting. If not provided, defaults to false.') arg.setDefaultValue(false) args << arg @@ -3278,9 +3250,9 @@ def arguments(model) # rubocop:disable Lint/UnusedMethodArgument arg.setDescription("Multiplier on the fuel loads lighting energy usage that can reflect, e.g., high/low usage occupants. If not provided, the OS-HPXML default (see HPXML Fuel Loads) is used.") args << arg - arg = OpenStudio::Measure::OSArgument::makeBoolArgument('misc_fuel_loads_fireplace_present', true) + arg = OpenStudio::Measure::OSArgument::makeBoolArgument('misc_fuel_loads_fireplace_present', false) arg.setDisplayName('Misc Fuel Loads: Fireplace Present') - arg.setDescription('Whether there is fuel loads fireplace.') + arg.setDescription('Whether there is fuel loads fireplace. If not provided, defaults to false.') arg.setDefaultValue(false) args << arg @@ -3319,9 +3291,9 @@ def arguments(model) # rubocop:disable Lint/UnusedMethodArgument heater_type_choices << HPXML::HeaterTypeGas heater_type_choices << HPXML::HeaterTypeHeatPump - arg = OpenStudio::Measure::OSArgument::makeBoolArgument('pool_present', true) + arg = OpenStudio::Measure::OSArgument::makeBoolArgument('pool_present', false) arg.setDisplayName('Pool: Present') - arg.setDescription('Whether there is a pool.') + arg.setDescription('Whether there is a pool. If not provided, defaults to false.') arg.setDefaultValue(false) args << arg @@ -3359,9 +3331,9 @@ def arguments(model) # rubocop:disable Lint/UnusedMethodArgument arg.setDescription("Multiplier on the pool heater energy usage that can reflect, e.g., high/low usage occupants. If not provided, the OS-HPXML default (see Pool Heater) is used.") args << arg - arg = OpenStudio::Measure::OSArgument::makeBoolArgument('permanent_spa_present', true) + arg = OpenStudio::Measure::OSArgument::makeBoolArgument('permanent_spa_present', false) arg.setDisplayName('Permanent Spa: Present') - arg.setDescription('Whether there is a permanent spa.') + arg.setDescription('Whether there is a permanent spa. If not provided, defaults to false.') arg.setDefaultValue(false) args << arg @@ -5293,19 +5265,19 @@ def self.set_windows(hpxml_bldg, model, args, sorted_subsurfaces) sub_surface_height = Geometry.get_surface_height(surface: sub_surface) sub_surface_facade = Geometry.get_facade_for_surface(surface: sub_surface) - if (sub_surface_facade == Constants::FacadeFront) && ((args[:overhangs_front_depth] > 0) || args[:overhangs_front_distance_to_top_of_window] > 0) + if (sub_surface_facade == Constants::FacadeFront) && (args[:overhangs_front_depth] > 0) overhangs_depth = args[:overhangs_front_depth] overhangs_distance_to_top_of_window = args[:overhangs_front_distance_to_top_of_window] overhangs_distance_to_bottom_of_window = args[:overhangs_front_distance_to_bottom_of_window] - elsif (sub_surface_facade == Constants::FacadeBack) && ((args[:overhangs_back_depth] > 0) || args[:overhangs_back_distance_to_top_of_window] > 0) + elsif (sub_surface_facade == Constants::FacadeBack) && (args[:overhangs_back_depth] > 0) overhangs_depth = args[:overhangs_back_depth] overhangs_distance_to_top_of_window = args[:overhangs_back_distance_to_top_of_window] overhangs_distance_to_bottom_of_window = args[:overhangs_back_distance_to_bottom_of_window] - elsif (sub_surface_facade == Constants::FacadeLeft) && ((args[:overhangs_left_depth] > 0) || args[:overhangs_left_distance_to_top_of_window] > 0) + elsif (sub_surface_facade == Constants::FacadeLeft) && (args[:overhangs_left_depth] > 0) overhangs_depth = args[:overhangs_left_depth] overhangs_distance_to_top_of_window = args[:overhangs_left_distance_to_top_of_window] overhangs_distance_to_bottom_of_window = args[:overhangs_left_distance_to_bottom_of_window] - elsif (sub_surface_facade == Constants::FacadeRight) && ((args[:overhangs_right_depth] > 0) || args[:overhangs_right_distance_to_top_of_window] > 0) + elsif (sub_surface_facade == Constants::FacadeRight) && (args[:overhangs_right_depth] > 0) overhangs_depth = args[:overhangs_right_depth] overhangs_distance_to_top_of_window = args[:overhangs_right_distance_to_top_of_window] overhangs_distance_to_bottom_of_window = args[:overhangs_right_distance_to_bottom_of_window] diff --git a/BuildResidentialHPXML/measure.xml b/BuildResidentialHPXML/measure.xml index 7e17ff932a..78d4152726 100644 --- a/BuildResidentialHPXML/measure.xml +++ b/BuildResidentialHPXML/measure.xml @@ -3,8 +3,8 @@ 3.1 build_residential_hpxml a13a8983-2b01-4930-8af2-42030b6e4233 - 2fe2e8ec-22e6-4420-9e6c-ba3173dffcd8 - 2024-10-24T04:10:44Z + 35346ed6-77f3-4e97-8ea0-618538dbf4e9 + 2024-10-25T16:59:10Z 2C38F48B BuildResidentialHPXML HPXML Builder @@ -915,7 +915,7 @@ geometry_garage_width Geometry: Garage Width - The width of the garage. Enter zero for no garage. Only applies to single-family detached units. + The width of the garage. Only applies to single-family detached units. If not provided, defaults to zero (no garage). Double ft false @@ -1500,7 +1500,7 @@ Assembly R-value for the ceiling (attic floor). Double h-ft^2-R/Btu - true + false false 31.6 @@ -1586,7 +1586,7 @@ Assembly R-value of the roof. Double h-ft^2-R/Btu - true + false false 2.3 @@ -1787,50 +1787,10 @@ false 11.9 - - window_front_wwr - Windows: Front Window-to-Wall Ratio - The ratio of window area to wall area for the unit's front facade. Enter 0 if specifying Front Window Area instead. If the front wall is adiabatic, the value will be ignored. - Double - Frac - true - false - 0.18 - - - window_back_wwr - Windows: Back Window-to-Wall Ratio - The ratio of window area to wall area for the unit's back facade. Enter 0 if specifying Back Window Area instead. If the back wall is adiabatic, the value will be ignored. - Double - Frac - true - false - 0.18 - - - window_left_wwr - Windows: Left Window-to-Wall Ratio - The ratio of window area to wall area for the unit's left facade (when viewed from the front). Enter 0 if specifying Left Window Area instead. If the left wall is adiabatic, the value will be ignored. - Double - Frac - true - false - 0.18 - - - window_right_wwr - Windows: Right Window-to-Wall Ratio - The ratio of window area to wall area for the unit's right facade (when viewed from the front). Enter 0 if specifying Right Window Area instead. If the right wall is adiabatic, the value will be ignored. - Double - Frac - true - false - 0.18 - window_area_front Windows: Front Window Area - The amount of window area on the unit's front facade. Enter 0 if specifying Front Window-to-Wall Ratio instead. If the front wall is adiabatic, the value will be ignored. + The amount of window area on the unit's front facade. A value less than 1 will be treated as a window-to-wall ratio. If the front wall is adiabatic, the value will be ignored. Double ft^2 true @@ -1840,7 +1800,7 @@ window_area_back Windows: Back Window Area - The amount of window area on the unit's back facade. Enter 0 if specifying Back Window-to-Wall Ratio instead. If the back wall is adiabatic, the value will be ignored. + The amount of window area on the unit's back facade. A value less than 1 will be treated as a window-to-wall ratio. If the back wall is adiabatic, the value will be ignored. Double ft^2 true @@ -1850,7 +1810,7 @@ window_area_left Windows: Left Window Area - The amount of window area on the unit's left facade (when viewed from the front). Enter 0 if specifying Left Window-to-Wall Ratio instead. If the left wall is adiabatic, the value will be ignored. + The amount of window area on the unit's left facade (when viewed from the front). A value less than 1 will be treated as a window-to-wall ratio. If the left wall is adiabatic, the value will be ignored. Double ft^2 true @@ -1860,7 +1820,7 @@ window_area_right Windows: Right Window Area - The amount of window area on the unit's right facade (when viewed from the front). Enter 0 if specifying Right Window-to-Wall Ratio instead. If the right wall is adiabatic, the value will be ignored. + The amount of window area on the unit's right facade (when viewed from the front). A value less than 1 will be treated as a window-to-wall ratio. If the right wall is adiabatic, the value will be ignored. Double ft^2 true @@ -1873,10 +1833,29 @@ Ratio of window height to width. Double Frac - false + true false 1.333 + + window_ufactor + Windows: U-Factor + Full-assembly NFRC U-factor. + Double + Btu/hr-ft^2-R + true + false + 0.37 + + + window_shgc + Windows: SHGC + Full-assembly NFRC solar heat gain coefficient. + Double + true + false + 0.3 + window_fraction_operable Windows: Fraction Operable @@ -1895,25 +1874,6 @@ false false - - window_ufactor - Windows: U-Factor - Full-assembly NFRC U-factor. - Double - Btu/hr-ft^2-R - false - false - 0.37 - - - window_shgc - Windows: SHGC - Full-assembly NFRC solar heat gain coefficient. - Double - false - false - 0.3 - window_interior_shading_type Windows: Interior Shading Type @@ -2076,7 +2036,7 @@ The depth of overhangs for windows for the front facade. Double ft - true + false false 0 @@ -2088,7 +2048,7 @@ ft false false - 0 + 1 overhangs_front_distance_to_bottom_of_window @@ -2098,7 +2058,7 @@ ft false false - 4 + 5 overhangs_back_depth @@ -2106,7 +2066,7 @@ The depth of overhangs for windows for the back facade. Double ft - true + false false 0 @@ -2118,7 +2078,7 @@ ft false false - 0 + 1 overhangs_back_distance_to_bottom_of_window @@ -2128,7 +2088,7 @@ ft false false - 4 + 5 overhangs_left_depth @@ -2136,7 +2096,7 @@ The depth of overhangs for windows for the left facade. Double ft - true + false false 0 @@ -2148,7 +2108,7 @@ ft false false - 0 + 1 overhangs_left_distance_to_bottom_of_window @@ -2158,7 +2118,7 @@ ft false false - 4 + 5 overhangs_right_depth @@ -2166,7 +2126,7 @@ The depth of overhangs for windows for the right facade. Double ft - true + false false 0 @@ -2178,7 +2138,7 @@ ft false false - 0 + 1 overhangs_right_distance_to_bottom_of_window @@ -2188,7 +2148,7 @@ ft false false - 4 + 5 skylight_area_front @@ -2196,7 +2156,7 @@ The amount of skylight area on the unit's front conditioned roof facade. Double ft^2 - true + false false 0 @@ -2206,7 +2166,7 @@ The amount of skylight area on the unit's back conditioned roof facade. Double ft^2 - true + false false 0 @@ -2216,7 +2176,7 @@ The amount of skylight area on the unit's left conditioned roof facade (when viewed from the front). Double ft^2 - true + false false 0 @@ -2226,7 +2186,7 @@ The amount of skylight area on the unit's right conditioned roof facade (when viewed from the front). Double ft^2 - true + false false 0 @@ -2283,7 +2243,7 @@ R-value of the opaque door(s). Double h-ft^2-R/Btu - false + true false 4.4 @@ -3488,9 +3448,9 @@ heating_system_2_type Heating System 2: Type - The type of the second heating system. If a heat pump is specified and the backup type is 'separate', this heating system represents 'separate' backup heating. For ducted heat pumps where the backup heating system is a 'Furnace', the backup would typically be characterized as 'integrated' in that the furnace and heat pump share the same distribution system and blower fan; a 'Furnace' as 'separate' backup to a ducted heat pump is not supported. + The type of the second heating system. If a heat pump is specified and the backup type is 'separate', this heating system represents 'separate' backup heating. For ducted heat pumps where the backup heating system is a 'Furnace', the backup would typically be characterized as 'integrated' in that the furnace and heat pump share the same distribution system and blower fan; a 'Furnace' as 'separate' backup to a ducted heat pump is not supported. If not provided, defaults to none. Choice - true + false false none @@ -4037,9 +3997,9 @@ mech_vent_fan_type Mechanical Ventilation: Fan Type - The type of the mechanical ventilation. Use 'none' if there is no mechanical ventilation system. + The type of the mechanical ventilation. Use 'none' if there is no mechanical ventilation system. If not provided, defaults to none. Choice - true + false false none @@ -4249,9 +4209,9 @@ mech_vent_2_fan_type Mechanical Ventilation 2: Fan Type - The type of the second mechanical ventilation. Use 'none' if there is no second mechanical ventilation system. + The type of the second mechanical ventilation. Use 'none' if there is no second mechanical ventilation system. If not provided, defaults to none. Choice - true + false false none @@ -4445,7 +4405,7 @@ Whole House Fan: Present Whether there is a whole house fan. Boolean - true + false false false @@ -4901,7 +4861,7 @@ Drain Water Heat Recovery: Facilities Connected Which facilities are connected for the drain water heat recovery. Use 'none' if there is no drain water heat recovery system. Choice - true + false false none @@ -4951,9 +4911,9 @@ water_fixtures_shower_low_flow Hot Water Fixtures: Is Shower Low Flow - Whether the shower fixture is low flow. + Whether the shower fixture is low flow. If not provided, defaults to false. Boolean - true + false false false @@ -4970,9 +4930,9 @@ water_fixtures_sink_low_flow Hot Water Fixtures: Is Sink Low Flow - Whether the sink fixture is low flow. + Whether the sink fixture is low flow. If not provided, defaults to false. Boolean - true + false false false @@ -5007,7 +4967,7 @@ Solar Thermal: System Type The type of solar thermal system. Use 'none' if there is no solar thermal system. Choice - true + false false none @@ -5143,9 +5103,9 @@ pv_system_present PV System: Present - Whether there is a PV system present. + Whether there is a PV system present. If not provided, defaults to false. Boolean - true + false false false @@ -5285,9 +5245,9 @@ pv_system_2_present PV System 2: Present - Whether there is a second PV system present. + Whether there is a second PV system present. If not provided, defaults to false. Boolean - true + false false false @@ -5400,9 +5360,9 @@ battery_present Battery: Present - Whether there is a lithium ion battery present. + Whether there is a lithium ion battery present. If not provided, defaults to false. Boolean - true + false false false @@ -5646,9 +5606,9 @@ holiday_lighting_present Holiday Lighting: Present - Whether there is holiday lighting. + Whether there is holiday lighting. If not provided, defaults to false. Boolean - true + false false false @@ -5682,9 +5642,9 @@ dehumidifier_type Dehumidifier: Type - The type of dehumidifier. + The type of dehumidifier. If not provided, defaults to none. Choice - true + false false none @@ -6276,9 +6236,9 @@ extra_refrigerator_present Extra Refrigerator: Present - Whether there is an extra refrigerator present. + Whether there is an extra refrigerator present. If not provided, defaults to false. Boolean - true + false false false @@ -6354,9 +6314,9 @@ freezer_present Freezer: Present - Whether there is a freezer present. + Whether there is a freezer present. If not provided, defaults to false. Boolean - true + false false false @@ -6698,9 +6658,9 @@ misc_plug_loads_well_pump_present Misc Plug Loads: Well Pump Present - Whether there is a well pump. + Whether there is a well pump. If not provided, defaults to false. Boolean - true + false false false @@ -6734,9 +6694,9 @@ misc_plug_loads_vehicle_present Misc Plug Loads: Vehicle Present - Whether there is an electric vehicle. + Whether there is an electric vehicle. If not provided, defaults to false. Boolean - true + false false false @@ -6770,9 +6730,9 @@ misc_fuel_loads_grill_present Misc Fuel Loads: Grill Present - Whether there is a fuel loads grill. + Whether there is a fuel loads grill. If not provided, defaults to false. Boolean - true + false false false @@ -6837,9 +6797,9 @@ misc_fuel_loads_lighting_present Misc Fuel Loads: Lighting Present - Whether there is fuel loads lighting. + Whether there is fuel loads lighting. If not provided, defaults to false. Boolean - true + false false false @@ -6904,9 +6864,9 @@ misc_fuel_loads_fireplace_present Misc Fuel Loads: Fireplace Present - Whether there is fuel loads fireplace. + Whether there is fuel loads fireplace. If not provided, defaults to false. Boolean - true + false false false @@ -6989,9 +6949,9 @@ pool_present Pool: Present - Whether there is a pool. + Whether there is a pool. If not provided, defaults to false. Boolean - true + false false false @@ -7078,9 +7038,9 @@ permanent_spa_present Permanent Spa: Present - Whether there is a permanent spa. + Whether there is a permanent spa. If not provided, defaults to false. Boolean - true + false false false @@ -7527,7 +7487,7 @@ README.md md readme - 1E277D6B + 6F6D0826 README.md.erb @@ -7544,7 +7504,7 @@ measure.rb rb script - BE2CAD31 + 1DAB95DA constants.rb @@ -7556,13 +7516,13 @@ geometry.rb rb resource - E50F00EB + D318C4AF test_build_residential_hpxml.rb rb test - 3961036F + 670D5829 diff --git a/BuildResidentialHPXML/resources/geometry.rb b/BuildResidentialHPXML/resources/geometry.rb index cba189f455..6bb460ee95 100644 --- a/BuildResidentialHPXML/resources/geometry.rb +++ b/BuildResidentialHPXML/resources/geometry.rb @@ -1375,10 +1375,6 @@ def self.create_doors(runner:, # # @param runner [OpenStudio::Measure::OSRunner] Object typically used to display warnings # @param model [OpenStudio::Model::Model] OpenStudio Model object - # @param window_front_wwr [Double] ratio of window to wall area for the unit's front facade (frac) - # @param window_back_wwr [Double] ratio of window to wall area for the unit's back facade (frac) - # @param window_left_wwr [Double] ratio of window to wall area for the unit's left facade (frac) - # @param window_right_wwr [Double] ratio of window to wall area for the unit's right facade (frac) # @param window_area_front [Double] amount of window area on unit's front facade (ft2) # @param window_area_back [Double] amount of window area on unit's back facade (ft2) # @param window_area_left [Double] amount of window area on unit's left facade (ft2) @@ -1391,10 +1387,6 @@ def self.create_doors(runner:, # @return [Boolean] true if successful def self.create_windows_and_skylights(runner:, model:, - window_front_wwr:, - window_back_wwr:, - window_left_wwr:, - window_right_wwr:, window_area_front:, window_area_back:, window_area_left:, @@ -1408,15 +1400,15 @@ def self.create_windows_and_skylights(runner:, facades = [Constants::FacadeBack, Constants::FacadeRight, Constants::FacadeFront, Constants::FacadeLeft] wwrs = {} - wwrs[Constants::FacadeBack] = window_back_wwr - wwrs[Constants::FacadeRight] = window_right_wwr - wwrs[Constants::FacadeFront] = window_front_wwr - wwrs[Constants::FacadeLeft] = window_left_wwr + wwrs[Constants::FacadeBack] = (window_area_back < 1 ? window_area_back : 0.0) + wwrs[Constants::FacadeRight] = (window_area_right < 1 ? window_area_right : 0.0) + wwrs[Constants::FacadeFront] = (window_area_front < 1 ? window_area_front : 0.0) + wwrs[Constants::FacadeLeft] = (window_area_left < 1 ? window_area_left : 0.0) window_areas = {} - window_areas[Constants::FacadeBack] = window_area_back - window_areas[Constants::FacadeRight] = window_area_right - window_areas[Constants::FacadeFront] = window_area_front - window_areas[Constants::FacadeLeft] = window_area_left + window_areas[Constants::FacadeBack] = (window_area_back >= 1 ? window_area_back : 0.0) + window_areas[Constants::FacadeRight] = (window_area_right >= 1 ? window_area_right : 0.0) + window_areas[Constants::FacadeFront] = (window_area_front >= 1 ? window_area_front : 0.0) + window_areas[Constants::FacadeLeft] = (window_area_left >= 1 ? window_area_left : 0.0) skylight_areas = {} skylight_areas[Constants::FacadeBack] = skylight_area_back diff --git a/BuildResidentialHPXML/tests/test_build_residential_hpxml.rb b/BuildResidentialHPXML/tests/test_build_residential_hpxml.rb index e98b1106f0..e3b2d5bd97 100644 --- a/BuildResidentialHPXML/tests/test_build_residential_hpxml.rb +++ b/BuildResidentialHPXML/tests/test_build_residential_hpxml.rb @@ -415,7 +415,6 @@ def _set_measure_argument_values(hpxml_file, args) args['geometry_unit_num_bedrooms'] = 3 args['geometry_unit_num_bathrooms'] = 2 args['geometry_unit_num_occupants'] = 3 - args['floor_over_foundation_assembly_r'] = 0 args['floor_type'] = HPXML::FloorTypeWoodFrame args['foundation_wall_thickness'] = 8.0 args['foundation_wall_insulation_r'] = 8.9 @@ -431,10 +430,6 @@ def _set_measure_argument_values(hpxml_file, args) args['wall_siding_type'] = HPXML::SidingTypeWood args['wall_color'] = HPXML::ColorMedium args['wall_assembly_r'] = 23 - args['window_front_wwr'] = 0 - args['window_back_wwr'] = 0 - args['window_left_wwr'] = 0 - args['window_right_wwr'] = 0 args['window_area_front'] = 108.0 args['window_area_back'] = 108.0 args['window_area_left'] = 72.0 @@ -445,14 +440,6 @@ def _set_measure_argument_values(hpxml_file, args) args['window_shgc'] = 0.45 args['window_interior_shading_winter'] = 0.85 args['window_interior_shading_summer'] = 0.7 - args['overhangs_front_depth'] = 0 - args['overhangs_back_depth'] = 0 - args['overhangs_left_depth'] = 0 - args['overhangs_right_depth'] = 0 - args['skylight_area_front'] = 0 - args['skylight_area_back'] = 0 - args['skylight_area_left'] = 0 - args['skylight_area_right'] = 0 args['door_area'] = 40.0 args['door_rvalue'] = 4.4 args['air_leakage_units'] = HPXML::UnitsACH @@ -487,11 +474,8 @@ def _set_measure_argument_values(hpxml_file, args) args['ducts_return_surface_area'] = 50.0 args['ducts_number_of_return_registers'] = 2 args['heating_system_2_type'] = Constants::None - args['mech_vent_fan_type'] = Constants::None - args['mech_vent_2_fan_type'] = Constants::None args['kitchen_fans_quantity'] = 0 args['bathroom_fans_quantity'] = 0 - args['whole_house_fan_present'] = false args['water_heater_type'] = HPXML::WaterHeaterTypeStorage args['water_heater_fuel_type'] = HPXML::FuelTypeElectricity args['water_heater_location'] = HPXML::LocationConditionedSpace @@ -507,13 +491,8 @@ def _set_measure_argument_values(hpxml_file, args) args['hot_water_distribution_system_type'] = HPXML::DHWDistTypeStandard args['hot_water_distribution_standard_piping_length'] = 50 args['hot_water_distribution_pipe_r'] = 0.0 - args['dwhr_facilities_connected'] = Constants::None args['water_fixtures_shower_low_flow'] = true args['water_fixtures_sink_low_flow'] = false - args['solar_thermal_system_type'] = Constants::None - args['pv_system_present'] = false - args['pv_system_2_present'] = false - args['battery_present'] = false args['lighting_present'] = true args['lighting_interior_fraction_cfl'] = 0.4 args['lighting_interior_fraction_lfl'] = 0.1 @@ -524,8 +503,6 @@ def _set_measure_argument_values(hpxml_file, args) args['lighting_garage_fraction_cfl'] = 0.4 args['lighting_garage_fraction_lfl'] = 0.1 args['lighting_garage_fraction_led'] = 0.25 - args['holiday_lighting_present'] = false - args['dehumidifier_type'] = Constants::None args['clothes_washer_present'] = true args['clothes_washer_location'] = HPXML::LocationConditionedSpace args['clothes_washer_efficiency_type'] = 'IntegratedModifiedEnergyFactor' @@ -554,8 +531,6 @@ def _set_measure_argument_values(hpxml_file, args) args['refrigerator_present'] = true args['refrigerator_location'] = HPXML::LocationConditionedSpace args['refrigerator_rated_annual_kwh'] = 650.0 - args['extra_refrigerator_present'] = false - args['freezer_present'] = false args['cooking_range_oven_present'] = true args['cooking_range_oven_location'] = HPXML::LocationConditionedSpace args['cooking_range_oven_fuel_type'] = HPXML::FuelTypeElectricity @@ -567,13 +542,6 @@ def _set_measure_argument_values(hpxml_file, args) args['misc_plug_loads_other_annual_kwh'] = 2457.0 args['misc_plug_loads_other_frac_sensible'] = 0.855 args['misc_plug_loads_other_frac_latent'] = 0.045 - args['misc_plug_loads_well_pump_present'] = false - args['misc_plug_loads_vehicle_present'] = false - args['misc_fuel_loads_grill_present'] = false - args['misc_fuel_loads_lighting_present'] = false - args['misc_fuel_loads_fireplace_present'] = false - args['pool_present'] = false - args['permanent_spa_present'] = false elsif ['base-sfd2.xml'].include? hpxml_file args['existing_hpxml_path'] = File.join(File.dirname(__FILE__), 'extra_files/base-sfd.xml') args['whole_sfa_or_mf_building_sim'] = true @@ -582,14 +550,10 @@ def _set_measure_argument_values(hpxml_file, args) args['geometry_unit_cfa'] = 1800.0 args['geometry_building_num_units'] = 3 args['geometry_unit_right_wall_is_adiabatic'] = true - args['window_front_wwr'] = 0.18 - args['window_back_wwr'] = 0.18 - args['window_left_wwr'] = 0.18 - args['window_right_wwr'] = 0.18 - args['window_area_front'] = 0 - args['window_area_back'] = 0 - args['window_area_left'] = 0 - args['window_area_right'] = 0 + args['window_area_front'] = 0.18 + args['window_area_back'] = 0.18 + args['window_area_left'] = 0.18 + args['window_area_right'] = 0.18 args['air_leakage_type'] = HPXML::InfiltrationTypeUnitTotal elsif ['base-sfa2.xml'].include? hpxml_file args['existing_hpxml_path'] = File.join(File.dirname(__FILE__), 'extra_files/base-sfa.xml') @@ -605,14 +569,10 @@ def _set_measure_argument_values(hpxml_file, args) args['geometry_foundation_type'] = HPXML::FoundationTypeAboveApartment args['geometry_unit_right_wall_is_adiabatic'] = true args['geometry_building_num_units'] = 6 - args['window_front_wwr'] = 0.18 - args['window_back_wwr'] = 0.18 - args['window_left_wwr'] = 0.18 - args['window_right_wwr'] = 0.18 - args['window_area_front'] = 0 - args['window_area_back'] = 0 - args['window_area_left'] = 0 - args['window_area_right'] = 0 + args['window_area_front'] = 0.18 + args['window_area_back'] = 0.18 + args['window_area_left'] = 0.18 + args['window_area_right'] = 0.18 args['ducts_supply_leakage_to_outside_value'] = 0.0 args['ducts_return_leakage_to_outside_value'] = 0.0 args['ducts_supply_location'] = HPXML::LocationConditionedSpace @@ -1104,7 +1064,6 @@ def _set_measure_argument_values(hpxml_file, args) args['water_heater_type'] = HPXML::WaterHeaterTypeCombiStorage elsif ['error-conditioned-attic-with-one-floor-above-grade.xml'].include? hpxml_file args['geometry_attic_type'] = HPXML::AtticTypeConditioned - args['ceiling_assembly_r'] = 0.0 elsif ['error-sfd-with-shared-system.xml'].include? hpxml_file args['heating_system_type'] = "Shared #{HPXML::HVACTypeBoiler} w/ Baseboard" elsif ['error-rim-joist-height-but-no-assembly-r.xml'].include? hpxml_file diff --git a/Changelog.md b/Changelog.md index 25b127dca0..8d332b5c3d 100644 --- a/Changelog.md +++ b/Changelog.md @@ -36,6 +36,7 @@ __New Features__ - BuildResidentialHPXML measure: - **Breaking change**: Replaced `slab_under_width` and `slab_perimeter_depth` arguments with `slab_under_insulation_width` and `slab_perimeter_insulation_depth` - **Breaking change**: Replaced `schedules_vacancy_periods`, `schedules_power_outage_periods`, and `schedules_power_outage_periods_window_natvent_availability` arguments with `schedules_unavailable_period_types`, `schedules_unavailable_period_dates`, and `schedules_unavailable_period_window_natvent_availabilities`; this improves flexibility for handling more unavailable period types. + - **Breaking change**: Removed `window__wwr` argument; a value less than 1 can be provided to the `window_area_` and will be treated as a window-to-wall ratio. - Utility bill calculations: - Allows OpenEI URDB tariffs that have $/day fixed charges. - Updates `openei_rates.zip` with the latest residential utility rates from the [OpenEI U.S. Utility Rate database](https://apps.openei.org/USURDB/). diff --git a/workflow/hpxml_inputs.json b/workflow/hpxml_inputs.json index 6010937959..5e0ce4803e 100644 --- a/workflow/hpxml_inputs.json +++ b/workflow/hpxml_inputs.json @@ -26,7 +26,6 @@ "neighbor_left_distance": 0, "neighbor_right_distance": 0, "floor_over_foundation_assembly_r": 14.15, - "floor_over_garage_assembly_r": 0, "floor_type": "WoodFrame", "foundation_wall_thickness": 6, "foundation_wall_insulation_r": 0, @@ -51,10 +50,6 @@ "wall_siding_type": "wood siding", "wall_color": "medium", "wall_assembly_r": 11.76, - "window_front_wwr": 0, - "window_back_wwr": 0, - "window_left_wwr": 0, - "window_right_wwr": 0, "window_area_front": 90, "window_area_back": 90, "window_area_left": 45, @@ -65,14 +60,6 @@ "window_shgc": 0.67, "window_interior_shading_winter": 1, "window_interior_shading_summer": 1, - "overhangs_front_depth": 0, - "overhangs_back_depth": 0, - "overhangs_left_depth": 0, - "overhangs_right_depth": 0, - "skylight_area_front": 0, - "skylight_area_back": 0, - "skylight_area_left": 0, - "skylight_area_right": 0, "door_area": 40, "door_rvalue": 3.04, "air_leakage_units": "ACHnatural", @@ -81,7 +68,6 @@ "heating_system_type": "none", "cooling_system_type": "none", "heat_pump_type": "none", - "heating_system_2_type": "none", "hvac_control_heating_weekday_setpoint": 68, "hvac_control_heating_weekend_setpoint": 68, "hvac_control_cooling_weekday_setpoint": 78, @@ -91,43 +77,21 @@ "ducts_return_leakage_to_outside_value": 0, "ducts_supply_insulation_r": 0, "ducts_return_insulation_r": 0, - "mech_vent_fan_type": "none", - "mech_vent_2_fan_type": "none", "kitchen_fans_quantity": 0, "bathroom_fans_quantity": 0, - "whole_house_fan_present": false, "water_heater_type": "none", "hot_water_distribution_system_type": "Standard", - "dwhr_facilities_connected": "none", - "water_fixtures_shower_low_flow": false, - "water_fixtures_sink_low_flow": false, - "water_fixtures_usage_multiplier": null, - "solar_thermal_system_type": "none", - "pv_system_present": false, - "pv_system_2_present": false, - "battery_present": false, "lighting_present": false, - "holiday_lighting_present": false, - "dehumidifier_type": "none", "clothes_washer_present": false, "clothes_dryer_present": false, "dishwasher_present": false, "refrigerator_present": false, - "extra_refrigerator_present": false, - "freezer_present": false, "cooking_range_oven_present": false, "ceiling_fan_present": false, "misc_plug_loads_television_present": false, "misc_plug_loads_other_annual_kwh": 7302, "misc_plug_loads_other_frac_sensible": 0.822, "misc_plug_loads_other_frac_latent": 0.178, - "misc_plug_loads_well_pump_present": false, - "misc_plug_loads_vehicle_present": false, - "misc_fuel_loads_grill_present": false, - "misc_fuel_loads_lighting_present": false, - "misc_fuel_loads_fireplace_present": false, - "pool_present": false, - "permanent_spa_present": false, "combine_like_surfaces": false }, "tests/ASHRAE_Standard_140/L110AC.xml": { @@ -553,8 +517,6 @@ "neighbor_back_distance": 0, "neighbor_left_distance": 0, "neighbor_right_distance": 0, - "floor_over_foundation_assembly_r": 0, - "floor_over_garage_assembly_r": 0, "floor_type": "WoodFrame", "foundation_wall_thickness": 8, "foundation_wall_insulation_r": 8.9, @@ -579,10 +541,6 @@ "wall_siding_type": "wood siding", "wall_color": "medium", "wall_assembly_r": 23, - "window_front_wwr": 0, - "window_back_wwr": 0, - "window_left_wwr": 0, - "window_right_wwr": 0, "window_area_front": 108, "window_area_back": 108, "window_area_left": 72, @@ -593,14 +551,6 @@ "window_shgc": 0.45, "window_interior_shading_winter": 0.85, "window_interior_shading_summer": 0.7, - "overhangs_front_depth": 0, - "overhangs_back_depth": 0, - "overhangs_left_depth": 0, - "overhangs_right_depth": 0, - "skylight_area_front": 0, - "skylight_area_back": 0, - "skylight_area_left": 0, - "skylight_area_right": 0, "door_area": 40, "door_rvalue": 4.4, "air_leakage_units": "ACH", @@ -619,7 +569,6 @@ "cooling_system_cooling_capacity": 24000, "cooling_system_fraction_cool_load_served": 1, "heat_pump_type": "none", - "heating_system_2_type": "none", "hvac_control_heating_weekday_setpoint": 68, "hvac_control_heating_weekend_setpoint": 68, "hvac_control_cooling_weekday_setpoint": 78, @@ -633,11 +582,8 @@ "ducts_return_location": "attic - unvented", "ducts_return_insulation_r": 0, "ducts_return_surface_area": 50, - "mech_vent_fan_type": "none", - "mech_vent_2_fan_type": "none", "kitchen_fans_quantity": 0, "bathroom_fans_quantity": 0, - "whole_house_fan_present": false, "water_heater_type": "storage water heater", "water_heater_fuel_type": "electricity", "water_heater_location": "conditioned space", @@ -651,13 +597,7 @@ "hot_water_distribution_system_type": "Standard", "hot_water_distribution_standard_piping_length": 50, "hot_water_distribution_pipe_r": 0, - "dwhr_facilities_connected": "none", "water_fixtures_shower_low_flow": true, - "water_fixtures_sink_low_flow": false, - "solar_thermal_system_type": "none", - "pv_system_present": false, - "pv_system_2_present": false, - "battery_present": false, "lighting_present": true, "lighting_interior_fraction_cfl": 0.4, "lighting_interior_fraction_lfl": 0.1, @@ -668,8 +608,6 @@ "lighting_garage_fraction_cfl": 0.4, "lighting_garage_fraction_lfl": 0.1, "lighting_garage_fraction_led": 0.25, - "holiday_lighting_present": false, - "dehumidifier_type": "none", "clothes_washer_present": true, "clothes_washer_location": "conditioned space", "clothes_washer_efficiency_type": "IntegratedModifiedEnergyFactor", @@ -698,8 +636,6 @@ "refrigerator_present": true, "refrigerator_location": "conditioned space", "refrigerator_rated_annual_kwh": 650, - "extra_refrigerator_present": false, - "freezer_present": false, "cooking_range_oven_present": true, "cooking_range_oven_location": "conditioned space", "cooking_range_oven_fuel_type": "electricity", @@ -711,13 +647,6 @@ "misc_plug_loads_other_annual_kwh": 2457, "misc_plug_loads_other_frac_sensible": 0.855, "misc_plug_loads_other_frac_latent": 0.045, - "misc_plug_loads_well_pump_present": false, - "misc_plug_loads_vehicle_present": false, - "misc_fuel_loads_grill_present": false, - "misc_fuel_loads_lighting_present": false, - "misc_fuel_loads_fireplace_present": false, - "pool_present": false, - "permanent_spa_present": false, "utility_bill_scenario_names": "Bills", "combine_like_surfaces": true }, @@ -880,14 +809,10 @@ "geometry_unit_cfa": 1800, "geometry_unit_aspect_ratio": 0.6667, "geometry_building_num_units": 3, - "window_front_wwr": 0.18, - "window_back_wwr": 0.18, - "window_left_wwr": 0.18, - "window_right_wwr": 0.18, - "window_area_front": 0, - "window_area_back": 0, - "window_area_left": 0, - "window_area_right": 0, + "window_area_front": 0.18, + "window_area_back": 0.18, + "window_area_left": 0.18, + "window_area_right": 0.18, "air_leakage_type": "unit exterior only", "heating_system_heating_capacity": 24000, "misc_plug_loads_other_annual_kwh": 1638 @@ -925,14 +850,10 @@ "geometry_foundation_type": "AboveApartment", "geometry_attic_type": "BelowApartment", "geometry_unit_height_above_grade": 10, - "window_front_wwr": 0.18, - "window_back_wwr": 0.18, - "window_left_wwr": 0.18, - "window_right_wwr": 0.18, - "window_area_front": 0, - "window_area_back": 0, - "window_area_left": 0, - "window_area_right": 0, + "window_area_front": 0.18, + "window_area_back": 0.18, + "window_area_left": 0.18, + "window_area_right": 0.18, "door_area": 20, "air_leakage_type": "unit exterior only", "heating_system_heating_capacity": 12000, @@ -1608,6 +1529,7 @@ "sample_files/base-enclosure-overhangs.xml": { "parent_hpxml": "sample_files/base.xml", "overhangs_back_depth": 2.5, + "overhangs_back_distance_to_top_of_window": 0, "overhangs_back_distance_to_bottom_of_window": 4, "overhangs_left_depth": 1.5, "overhangs_left_distance_to_top_of_window": 2, @@ -3452,14 +3374,10 @@ "air_leakage_type": "unit exterior only", "air_leakage_units": "ACHnatural", "air_leakage_value": 0.375, - "window_front_wwr": 0.18, - "window_back_wwr": 0.18, - "window_left_wwr": 0.18, - "window_right_wwr": 0.18, - "window_area_front": 0, - "window_area_back": 0, - "window_area_left": 0, - "window_area_right": 0, + "window_area_front": 0.18, + "window_area_back": 0.18, + "window_area_left": 0.18, + "window_area_right": 0.18, "door_area": 20, "cooling_system_type": "room air conditioner", "cooling_system_cooling_efficiency_type": "EER", diff --git a/workflow/template-build-and-run-hpxml-with-stochastic-occupancy.osw b/workflow/template-build-and-run-hpxml-with-stochastic-occupancy.osw index dbcaec5d80..063041627d 100644 --- a/workflow/template-build-and-run-hpxml-with-stochastic-occupancy.osw +++ b/workflow/template-build-and-run-hpxml-with-stochastic-occupancy.osw @@ -26,7 +26,6 @@ "ducts_supply_leakage_to_outside_value": 75.0, "ducts_supply_location": "attic - unvented", "ducts_supply_surface_area": 150.0, - "floor_over_foundation_assembly_r": 0, "foundation_wall_insulation_r": 8.9, "geometry_attic_type": "UnventedAttic", "geometry_average_ceiling_height": 8.0, @@ -66,10 +65,6 @@ "window_area_left": 72.0, "window_area_right": 72.0, "window_aspect_ratio": 1.333, - "window_back_wwr": 0, - "window_front_wwr": 0, - "window_left_wwr": 0, - "window_right_wwr": 0, "window_shgc": 0.45, "window_ufactor": 0.33 }, From ce9220d3df9e8c46cadce1122c47b10702dc688a Mon Sep 17 00:00:00 2001 From: Scott Horowitz Date: Fri, 25 Oct 2024 11:12:51 -0600 Subject: [PATCH 05/33] Update argument descriptions [ci skip] --- BuildResidentialHPXML/measure.xml | 6 +++--- BuildResidentialHPXML/resources/geometry.rb | 8 ++++---- 2 files changed, 7 insertions(+), 7 deletions(-) diff --git a/BuildResidentialHPXML/measure.xml b/BuildResidentialHPXML/measure.xml index 78d4152726..abb3fbcada 100644 --- a/BuildResidentialHPXML/measure.xml +++ b/BuildResidentialHPXML/measure.xml @@ -3,8 +3,8 @@ 3.1 build_residential_hpxml a13a8983-2b01-4930-8af2-42030b6e4233 - 35346ed6-77f3-4e97-8ea0-618538dbf4e9 - 2024-10-25T16:59:10Z + 14bbfdc6-d247-41e4-ae10-9b2e9ddea000 + 2024-10-25T17:12:34Z 2C38F48B BuildResidentialHPXML HPXML Builder @@ -7516,7 +7516,7 @@ geometry.rb rb resource - D318C4AF + AADC5A37 test_build_residential_hpxml.rb diff --git a/BuildResidentialHPXML/resources/geometry.rb b/BuildResidentialHPXML/resources/geometry.rb index 6bb460ee95..6435027a9a 100644 --- a/BuildResidentialHPXML/resources/geometry.rb +++ b/BuildResidentialHPXML/resources/geometry.rb @@ -1375,10 +1375,10 @@ def self.create_doors(runner:, # # @param runner [OpenStudio::Measure::OSRunner] Object typically used to display warnings # @param model [OpenStudio::Model::Model] OpenStudio Model object - # @param window_area_front [Double] amount of window area on unit's front facade (ft2) - # @param window_area_back [Double] amount of window area on unit's back facade (ft2) - # @param window_area_left [Double] amount of window area on unit's left facade (ft2) - # @param window_area_right [Double] amount of window area on unit's right facade (ft2) + # @param window_area_front [Double] amount of window area on unit's front facade or window to wall ratio if less than 1 (ft2 or frac) + # @param window_area_back [Double] amount of window area on unit's back facade or window to wall ratio if less than 1 (ft2 or frac) + # @param window_area_left [Double] amount of window area on unit's left facade or window to wall ratio if less than 1 (ft2 or frac) + # @param window_area_right [Double] amount of window area on unit's right facade or window to wall ratio if less than 1 (ft2 or frac) # @param window_aspect_ratio [Double] ratio of window height to width (frac) # @param skylight_area_front [Double] amount of skylight area on the unit's front conditioned roof facade (ft2) # @param skylight_area_back [Double] amount of skylight area on the unit's back conditioned roof facade (ft2) From ac06a7c433fc3285c1d6dc258e6e8d28e36e7b18 Mon Sep 17 00:00:00 2001 From: Scott Horowitz Date: Fri, 25 Oct 2024 11:44:54 -0600 Subject: [PATCH 06/33] Unrelated minor code cleanup. --- HPXMLtoOpenStudio/measure.xml | 12 ++++---- HPXMLtoOpenStudio/resources/waterheater.rb | 6 ++-- HPXMLtoOpenStudio/tests/test_airflow.rb | 12 ++++---- HPXMLtoOpenStudio/tests/test_enclosure.rb | 4 +-- HPXMLtoOpenStudio/tests/test_validation.rb | 10 ++----- tasks.rb | 32 +++++----------------- 6 files changed, 25 insertions(+), 51 deletions(-) diff --git a/HPXMLtoOpenStudio/measure.xml b/HPXMLtoOpenStudio/measure.xml index b0b0e9790e..e7f90578eb 100644 --- a/HPXMLtoOpenStudio/measure.xml +++ b/HPXMLtoOpenStudio/measure.xml @@ -3,8 +3,8 @@ 3.1 hpxm_lto_openstudio b1543b30-9465-45ff-ba04-1d1f85e763bc - 64c3bdea-b4b3-4254-9b2a-23987ae4e9f3 - 2024-10-25T00:51:54Z + bbec5493-815c-45c1-932d-2c632bc5932e + 2024-10-25T17:44:35Z D8922A73 HPXMLtoOpenStudio HPXML to OpenStudio Translator @@ -627,7 +627,7 @@ waterheater.rb rb resource - 6F8A18EC + 0C981353 weather.rb @@ -651,7 +651,7 @@ test_airflow.rb rb test - 4366CDCD + A2FA7350 test_battery.rb @@ -669,7 +669,7 @@ test_enclosure.rb rb test - 26D6E82F + 91E1B449 test_generator.rb @@ -735,7 +735,7 @@ test_validation.rb rb test - 20E56F9D + B290B947 test_water_heater.rb diff --git a/HPXMLtoOpenStudio/resources/waterheater.rb b/HPXMLtoOpenStudio/resources/waterheater.rb index 003b113a8f..dacbd8fd9e 100644 --- a/HPXMLtoOpenStudio/resources/waterheater.rb +++ b/HPXMLtoOpenStudio/resources/waterheater.rb @@ -429,10 +429,8 @@ def self.get_dist_energy_waste_factor(hot_water_distribution) # @param plantloop_map [Hash] Map of HPXML System ID => OpenStudio PlantLoop objects # @return [nil] def self.apply_combi_system_EMS(model, water_heating_systems, plantloop_map) - water_heating_systems.select { |wh| - [HPXML::WaterHeaterTypeCombiStorage, - HPXML::WaterHeaterTypeCombiTankless].include? wh.water_heater_type - }.each do |water_heating_system| + combi_whs = water_heating_systems.select { |wh| [HPXML::WaterHeaterTypeCombiStorage, HPXML::WaterHeaterTypeCombiTankless].include? wh.water_heater_type } + combi_whs.each do |water_heating_system| combi_sys_id = water_heating_system.id # EMS for modulate source side mass flow rate diff --git a/HPXMLtoOpenStudio/tests/test_airflow.rb b/HPXMLtoOpenStudio/tests/test_airflow.rb index fa253f005b..f5ff1452af 100644 --- a/HPXMLtoOpenStudio/tests/test_airflow.rb +++ b/HPXMLtoOpenStudio/tests/test_airflow.rb @@ -622,8 +622,8 @@ def test_ducts_leakage_percent model, _hpxml, hpxml_bldg = _test_measure(args_hash) # Get HPXML values - supply_leakage = hpxml_bldg.hvac_distributions[0].duct_leakage_measurements.select { |m| m.duct_type == HPXML::DuctTypeSupply }[0] - return_leakage = hpxml_bldg.hvac_distributions[0].duct_leakage_measurements.select { |m| m.duct_type == HPXML::DuctTypeReturn }[0] + supply_leakage = hpxml_bldg.hvac_distributions[0].duct_leakage_measurements.find { |m| m.duct_type == HPXML::DuctTypeSupply } + return_leakage = hpxml_bldg.hvac_distributions[0].duct_leakage_measurements.find { |m| m.duct_type == HPXML::DuctTypeReturn } supply_leakage_frac = supply_leakage.duct_leakage_value return_leakage_frac = return_leakage.duct_leakage_value @@ -712,25 +712,25 @@ def test_infiltration_compartmentalization_area def test_infiltration_assumed_height # Base _hpxml, hpxml_bldg = _create_hpxml('base.xml') - infil_volume = hpxml_bldg.air_infiltration_measurements.select { |m| !m.infiltration_volume.nil? }[0].infiltration_volume + infil_volume = hpxml_bldg.air_infiltration_measurements.find { |m| !m.infiltration_volume.nil? }.infiltration_volume infil_height = hpxml_bldg.inferred_infiltration_height(infil_volume) assert_equal(9.75, infil_height) # Test w/o conditioned basement _hpxml, hpxml_bldg = _create_hpxml('base-foundation-unconditioned-basement.xml') - infil_volume = hpxml_bldg.air_infiltration_measurements.select { |m| !m.infiltration_volume.nil? }[0].infiltration_volume + infil_volume = hpxml_bldg.air_infiltration_measurements.find { |m| !m.infiltration_volume.nil? }.infiltration_volume infil_height = hpxml_bldg.inferred_infiltration_height(infil_volume) assert_equal(8, infil_height) # Test w/ walkout basement _hpxml, hpxml_bldg = _create_hpxml('base-foundation-walkout-basement.xml') - infil_volume = hpxml_bldg.air_infiltration_measurements.select { |m| !m.infiltration_volume.nil? }[0].infiltration_volume + infil_volume = hpxml_bldg.air_infiltration_measurements.find { |m| !m.infiltration_volume.nil? }.infiltration_volume infil_height = hpxml_bldg.inferred_infiltration_height(infil_volume) assert_equal(16, infil_height) # Test 2 story building _hpxml, hpxml_bldg = _create_hpxml('base-enclosure-2stories.xml') - infil_volume = hpxml_bldg.air_infiltration_measurements.select { |m| !m.infiltration_volume.nil? }[0].infiltration_volume + infil_volume = hpxml_bldg.air_infiltration_measurements.find { |m| !m.infiltration_volume.nil? }.infiltration_volume infil_height = hpxml_bldg.inferred_infiltration_height(infil_volume) assert_equal(17.75, infil_height) diff --git a/HPXMLtoOpenStudio/tests/test_enclosure.rb b/HPXMLtoOpenStudio/tests/test_enclosure.rb index 2182e253ed..9cc3c5da28 100644 --- a/HPXMLtoOpenStudio/tests/test_enclosure.rb +++ b/HPXMLtoOpenStudio/tests/test_enclosure.rb @@ -619,7 +619,7 @@ def test_windows sf_winter *= window.exterior_shading_factor_winter unless window.exterior_shading_factor_winter.nil? # Check shading transmittance for sky beam and sky diffuse - os_subsurface = model.getSubSurfaces.select { |ss| ss.name.to_s.start_with? window.id }[0] + os_subsurface = model.getSubSurfaces.find { |ss| ss.name.to_s.start_with? window.id } os_ism = nil model.getSurfacePropertyIncidentSolarMultipliers.each do |ism| next unless os_subsurface == ism.subSurface @@ -683,7 +683,7 @@ def test_skylights sf_winter *= skylight.exterior_shading_factor_winter unless skylight.exterior_shading_factor_winter.nil? # Check shading transmittance for sky beam and sky diffuse - os_subsurface = model.getSubSurfaces.select { |ss| ss.name.to_s.start_with? skylight.id }[0] + os_subsurface = model.getSubSurfaces.find { |ss| ss.name.to_s.start_with? skylight.id } os_ism = nil model.getSurfacePropertyIncidentSolarMultipliers.each do |ism| next unless os_subsurface == ism.subSurface diff --git a/HPXMLtoOpenStudio/tests/test_validation.rb b/HPXMLtoOpenStudio/tests/test_validation.rb index d91daf8e30..fad8254852 100644 --- a/HPXMLtoOpenStudio/tests/test_validation.rb +++ b/HPXMLtoOpenStudio/tests/test_validation.rb @@ -344,18 +344,12 @@ def test_schema_schematron_error_messages hpxml_bldg.building_construction.conditioned_floor_area = 898.8 elsif ['enclosure-garage-missing-exterior-wall'].include? error_case hpxml, hpxml_bldg = _create_hpxml('base-enclosure-garage.xml') - hpxml_bldg.walls.select { |w| - w.interior_adjacent_to == HPXML::LocationGarage && - w.exterior_adjacent_to == HPXML::LocationOutside - }.reverse_each do |wall| + hpxml_bldg.walls.select { |w| w.interior_adjacent_to == HPXML::LocationGarage && w.exterior_adjacent_to == HPXML::LocationOutside }.reverse_each do |wall| wall.delete end elsif ['enclosure-garage-missing-roof-ceiling'].include? error_case hpxml, hpxml_bldg = _create_hpxml('base-enclosure-garage.xml') - hpxml_bldg.floors.select { |w| - w.interior_adjacent_to == HPXML::LocationGarage && - w.exterior_adjacent_to == HPXML::LocationAtticUnvented - }.reverse_each do |floor| + hpxml_bldg.floors.select { |w| w.interior_adjacent_to == HPXML::LocationGarage && w.exterior_adjacent_to == HPXML::LocationAtticUnvented }.reverse_each do |floor| floor.delete end elsif ['enclosure-garage-missing-slab'].include? error_case diff --git a/tasks.rb b/tasks.rb index 370f737f76..db92de7d78 100644 --- a/tasks.rb +++ b/tasks.rb @@ -606,10 +606,7 @@ def apply_hpxml_modification_sample_files(hpxml_path, hpxml) elsif hpxml_file == 'base-bldgtype-mf-unit-adjacent-to-other-housing-unit.xml' adjacent_to = HPXML::LocationOtherHousingUnit end - wall = hpxml_bldg.walls.select { |w| - w.interior_adjacent_to == HPXML::LocationConditionedSpace && - w.exterior_adjacent_to == HPXML::LocationOtherHousingUnit - }[0] + wall = hpxml_bldg.walls.find { |w| w.interior_adjacent_to == HPXML::LocationConditionedSpace && w.exterior_adjacent_to == HPXML::LocationOtherHousingUnit } wall.exterior_adjacent_to = adjacent_to hpxml_bldg.floors[0].exterior_adjacent_to = adjacent_to hpxml_bldg.floors[1].exterior_adjacent_to = adjacent_to @@ -636,10 +633,7 @@ def apply_hpxml_modification_sample_files(hpxml_path, hpxml) hpxml_bldg.cooking_ranges[0].location = adjacent_to elsif ['base-bldgtype-mf-unit-adjacent-to-multiple.xml', 'base-bldgtype-mf-unit-adjacent-to-multiple-hvac-none.xml'].include? hpxml_file - wall = hpxml_bldg.walls.select { |w| - w.interior_adjacent_to == HPXML::LocationConditionedSpace && - w.exterior_adjacent_to == HPXML::LocationOtherHousingUnit - }[0] + wall = hpxml_bldg.walls.find { |w| w.interior_adjacent_to == HPXML::LocationConditionedSpace && w.exterior_adjacent_to == HPXML::LocationOtherHousingUnit } wall.delete hpxml_bldg.walls.add(id: "Wall#{hpxml_bldg.walls.size + 1}", exterior_adjacent_to: HPXML::LocationOtherHeatedSpace, @@ -701,10 +695,7 @@ def apply_hpxml_modification_sample_files(hpxml_path, hpxml) area: 150, insulation_assembly_r_value: 2.1, floor_or_ceiling: HPXML::FloorOrCeilingFloor) - wall = hpxml_bldg.walls.select { |w| - w.interior_adjacent_to == HPXML::LocationConditionedSpace && - w.exterior_adjacent_to == HPXML::LocationOtherMultifamilyBufferSpace - }[0] + wall = hpxml_bldg.walls.find { |w| w.interior_adjacent_to == HPXML::LocationConditionedSpace && w.exterior_adjacent_to == HPXML::LocationOtherMultifamilyBufferSpace } hpxml_bldg.windows.add(id: "Window#{hpxml_bldg.windows.size + 1}", area: 50, azimuth: 270, @@ -712,19 +703,13 @@ def apply_hpxml_modification_sample_files(hpxml_path, hpxml) shgc: 0.45, fraction_operable: 0.67, attached_to_wall_idref: wall.id) - wall = hpxml_bldg.walls.select { |w| - w.interior_adjacent_to == HPXML::LocationConditionedSpace && - w.exterior_adjacent_to == HPXML::LocationOtherHeatedSpace - }[0] + wall = hpxml_bldg.walls.find { |w| w.interior_adjacent_to == HPXML::LocationConditionedSpace && w.exterior_adjacent_to == HPXML::LocationOtherHeatedSpace } hpxml_bldg.doors.add(id: "Door#{hpxml_bldg.doors.size + 1}", attached_to_wall_idref: wall.id, area: 20, azimuth: 0, r_value: 4.4) - wall = hpxml_bldg.walls.select { |w| - w.interior_adjacent_to == HPXML::LocationConditionedSpace && - w.exterior_adjacent_to == HPXML::LocationOtherHousingUnit - }[0] + wall = hpxml_bldg.walls.find { |w| w.interior_adjacent_to == HPXML::LocationConditionedSpace && w.exterior_adjacent_to == HPXML::LocationOtherHousingUnit } hpxml_bldg.doors.add(id: "Door#{hpxml_bldg.doors.size + 1}", attached_to_wall_idref: wall.id, area: 20, @@ -1452,10 +1437,7 @@ def apply_hpxml_modification_sample_files(hpxml_path, hpxml) 'base-enclosure-garage.xml', 'base-zones-spaces.xml', 'base-zones-spaces-multiple.xml'].include? hpxml_file - grg_wall = hpxml_bldg.walls.select { |w| - w.interior_adjacent_to == HPXML::LocationGarage && - w.exterior_adjacent_to == HPXML::LocationOutside - }[0] + grg_wall = hpxml_bldg.walls.find { |w| w.interior_adjacent_to == HPXML::LocationGarage && w.exterior_adjacent_to == HPXML::LocationOutside } hpxml_bldg.doors.add(id: "Door#{hpxml_bldg.doors.size + 1}", attached_to_wall_idref: grg_wall.id, area: 70, @@ -1463,7 +1445,7 @@ def apply_hpxml_modification_sample_files(hpxml_path, hpxml) r_value: 4.4) end if ['base-misc-neighbor-shading-bldgtype-multifamily.xml'].include? hpxml_file - wall = hpxml_bldg.walls.select { |w| w.azimuth == hpxml_bldg.neighbor_buildings[0].azimuth }[0] + wall = hpxml_bldg.walls.find { |w| w.azimuth == hpxml_bldg.neighbor_buildings[0].azimuth } wall.exterior_adjacent_to = HPXML::LocationOtherHeatedSpace end if ['base-foundation-vented-crawlspace-above-grade2.xml'].include? hpxml_file From 5075a608430b4d3ef601f1d1aba29c922c03b602 Mon Sep 17 00:00:00 2001 From: Joe Robertson Date: Wed, 30 Oct 2024 16:23:17 -0700 Subject: [PATCH 07/33] Typo in hvac_perf_data_capacity_type argument. --- BuildResidentialHPXML/measure.rb | 2 +- BuildResidentialHPXML/measure.xml | 8 ++++---- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/BuildResidentialHPXML/measure.rb b/BuildResidentialHPXML/measure.rb index 86c117c8ea..ded8c404ee 100644 --- a/BuildResidentialHPXML/measure.rb +++ b/BuildResidentialHPXML/measure.rb @@ -1551,7 +1551,7 @@ def arguments(model) # rubocop:disable Lint/UnusedMethodArgument arg = OpenStudio::Measure::OSArgument.makeChoiceArgument('hvac_perf_data_capacity_type', perf_data_capacity_type_choices, false) arg.setDisplayName('HVAC Detailed Performance Data: Capacity Type') arg.setDescription('Type of capacity values for detailed performance data if available. Applies only to variable-speed air-source HVAC systems (central air conditioners, mini-split air conditioners, air-to-air heat pumps, and mini-split heat pumps).') - arg.setUnits('Absolute capacities') + arg.setDefaultValue('Absolute capacities') args << arg arg = OpenStudio::Measure::OSArgument.makeStringArgument('hvac_perf_data_heating_outdoor_temperatures', false) diff --git a/BuildResidentialHPXML/measure.xml b/BuildResidentialHPXML/measure.xml index bec2ad806f..803992e934 100644 --- a/BuildResidentialHPXML/measure.xml +++ b/BuildResidentialHPXML/measure.xml @@ -3,8 +3,8 @@ 3.1 build_residential_hpxml a13a8983-2b01-4930-8af2-42030b6e4233 - f040ab16-ed37-4877-9c38-ab67b63850ff - 2024-10-30T17:48:10Z + c547df04-6517-484e-9bc0-ebf7ad6e42c3 + 2024-10-30T23:22:16Z 2C38F48B BuildResidentialHPXML HPXML Builder @@ -3185,9 +3185,9 @@ HVAC Detailed Performance Data: Capacity Type Type of capacity values for detailed performance data if available. Applies only to variable-speed air-source HVAC systems (central air conditioners, mini-split air conditioners, air-to-air heat pumps, and mini-split heat pumps). Choice - Absolute capacities false false + Absolute capacities Absolute capacities @@ -7504,7 +7504,7 @@ measure.rb rb script - A52F1D83 + 13F97DC9 constants.rb From c07ebb2c47f04174d6776a30788731102c2430c1 Mon Sep 17 00:00:00 2001 From: Joe Robertson Date: Thu, 31 Oct 2024 08:36:07 -0700 Subject: [PATCH 08/33] Stub generic makeArgument method. --- BuildResidentialHPXML/measure.rb | 84 +++++++----------------- BuildResidentialHPXML/measure.xml | 6 +- HPXMLtoOpenStudio/measure.xml | 6 +- HPXMLtoOpenStudio/resources/constants.rb | 9 +++ 4 files changed, 40 insertions(+), 65 deletions(-) diff --git a/BuildResidentialHPXML/measure.rb b/BuildResidentialHPXML/measure.rb index ded8c404ee..478ec3b80b 100644 --- a/BuildResidentialHPXML/measure.rb +++ b/BuildResidentialHPXML/measure.rb @@ -40,58 +40,31 @@ def modeler_description def arguments(model) # rubocop:disable Lint/UnusedMethodArgument docs_base_url = "https://openstudio-hpxml.readthedocs.io/en/v#{Version::OS_HPXML_Version}/workflow_inputs.html" - args = OpenStudio::Measure::OSArgumentVector.new - - arg = OpenStudio::Measure::OSArgument.makeStringArgument('hpxml_path', true) - arg.setDisplayName('HPXML File Path') - arg.setDescription('Absolute/relative path of the HPXML file.') - args << arg - - arg = OpenStudio::Measure::OSArgument.makeStringArgument('existing_hpxml_path', false) - arg.setDisplayName('Existing HPXML File Path') - arg.setDescription('Absolute/relative path of the existing HPXML file. If not provided, a new HPXML file with one Building element is created. If provided, a new Building element will be appended to this HPXML file (e.g., to create a multifamily HPXML file describing multiple dwelling units).') - args << arg - - arg = OpenStudio::Measure::OSArgument::makeBoolArgument('whole_sfa_or_mf_building_sim', false) - arg.setDisplayName('Whole SFA/MF Building Simulation?') - arg.setDescription('If the HPXML file represents a single family-attached/multifamily building with multiple dwelling units defined, specifies whether to run the HPXML file as a single whole building model.') - args << arg - - arg = OpenStudio::Measure::OSArgument.makeStringArgument('software_info_program_used', false) - arg.setDisplayName('Software Info: Program Used') - arg.setDescription('The name of the software program used.') - args << arg - - arg = OpenStudio::Measure::OSArgument.makeStringArgument('software_info_program_version', false) - arg.setDisplayName('Software Info: Program Version') - arg.setDescription('The version of the software program used.') - args << arg - - arg = OpenStudio::Measure::OSArgument.makeStringArgument('schedules_filepaths', false) - arg.setDisplayName('Schedules: CSV File Paths') - arg.setDescription('Absolute/relative paths of csv files containing user-specified detailed schedules. If multiple files, use a comma-separated list.') - args << arg - - arg = OpenStudio::Measure::OSArgument.makeStringArgument('schedules_unavailable_period_types', false) - arg.setDisplayName('Schedules: Unavailable Period Types') - arg.setDescription("Specifies the unavailable period types. Possible types are column names defined in unavailable_periods.csv: #{Schedule.unavailable_period_types.join(', ')}. If multiple periods, use a comma-separated list.") - args << arg - - arg = OpenStudio::Measure::OSArgument.makeStringArgument('schedules_unavailable_period_dates', false) - arg.setDisplayName('Schedules: Unavailable Period Dates') - arg.setDescription('Specifies the unavailable period date ranges. Enter a date range like "Dec 15 - Jan 15". Optionally, can enter hour of the day like "Dec 15 2 - Jan 15 20" (start hour can be 0 through 23 and end hour can be 1 through 24). If multiple periods, use a comma-separated list.') - args << arg + def makeArgument(name, type, required, display_name, units, default_value, choices, description) + if choices.nil? + arg = OpenStudio::Measure::OSArgument.send(type, name, required) + else + arg = OpenStudio::Measure::OSArgument.send(type, name, choices, required) + end + arg.setDisplayName(display_name) + arg.setDescription(description) + arg.setUnits(units) if !units.nil? + arg.setDefaultValue(default_value) if !default_value.nil? + return arg + end - arg = OpenStudio::Measure::OSArgument.makeStringArgument('schedules_unavailable_period_window_natvent_availabilities', false) - arg.setDisplayName('Schedules: Unavailable Period Window Natural Ventilation Availabilities') - arg.setDescription("The availability of the natural ventilation schedule during unavailable periods. Valid choices are: #{[HPXML::ScheduleRegular, HPXML::ScheduleAvailable, HPXML::ScheduleUnavailable].join(', ')}. If multiple periods, use a comma-separated list. If not provided, the OS-HPXML default (see HPXML Unavailable Periods) is used.") - args << arg + args = OpenStudio::Measure::OSArgumentVector.new - arg = OpenStudio::Measure::OSArgument::makeIntegerArgument('simulation_control_timestep', false) - arg.setDisplayName('Simulation Control: Timestep') - arg.setUnits('min') - arg.setDescription("Value must be a divisor of 60. If not provided, the OS-HPXML default (see HPXML Simulation Control) is used.") - args << arg + args << makeArgument('hpxml_path', Argument::String, true, 'HPXML File Path', nil, nil, nil, 'Absolute/relative path of the HPXML file.') + args << makeArgument('existing_hpxml_path', Argument::String, false, 'Existing HPXML File Path', nil, nil, nil, 'Absolute/relative path of the existing HPXML file. If not provided, a new HPXML file with one Building element is created. If provided, a new Building element will be appended to this HPXML file (e.g., to create a multifamily HPXML file describing multiple dwelling units).') + args << makeArgument('whole_sfa_or_mf_building_sim', Argument::Boolean, false, 'Whole SFA/MF Building Simulation?', nil, nil, nil, 'If the HPXML file represents a single family-attached/multifamily building with multiple dwelling units defined, specifies whether to run the HPXML file as a single whole building model.') + args << makeArgument('software_info_program_used', Argument::String, false, 'Software Info: Program Used', nil, nil, nil, 'The name of the software program used.') + args << makeArgument('software_info_program_version', Argument::String, false, 'Software Info: Program Version', nil, nil, nil, 'The version of the software program used.') + args << makeArgument('schedules_filepaths', Argument::String, false, 'Schedules: CSV File Paths', nil, nil, nil, 'Absolute/relative paths of csv files containing user-specified detailed schedules. If multiple files, use a comma-separated list.') + args << makeArgument('schedules_unavailable_period_types', Argument::String, false, 'Schedules: Unavailable Period Types', nil, nil, nil, "Specifies the unavailable period types. Possible types are column names defined in unavailable_periods.csv: #{Schedule.unavailable_period_types.join(', ')}. If multiple periods, use a comma-separated list.") + args << makeArgument('schedules_unavailable_period_dates', Argument::String, false, 'Schedules: Unavailable Period Dates', nil, nil, nil, 'Specifies the unavailable period date ranges. Enter a date range like "Dec 15 - Jan 15". Optionally, can enter hour of the day like "Dec 15 2 - Jan 15 20" (start hour can be 0 through 23 and end hour can be 1 through 24). If multiple periods, use a comma-separated list.') + args << makeArgument('schedules_unavailable_period_window_natvent_availabilities', Argument::String, false, 'Schedules: Unavailable Period Window Natural Ventilation Availabilities', nil, nil, nil, "The availability of the natural ventilation schedule during unavailable periods. Valid choices are: #{[HPXML::ScheduleRegular, HPXML::ScheduleAvailable, HPXML::ScheduleUnavailable].join(', ')}. If multiple periods, use a comma-separated list. If not provided, the OS-HPXML default (see HPXML Unavailable Periods) is used.") + args << makeArgument('simulation_control_timestep', Argument::Integer, false, 'Simulation Control: Timestep', 'min', nil, nil, "Value must be a divisor of 60. If not provided, the OS-HPXML default (see HPXML Simulation Control) is used.") arg = OpenStudio::Measure::OSArgument::makeStringArgument('simulation_control_run_period', false) arg.setDisplayName('Simulation Control: Run Period') @@ -122,16 +95,9 @@ def arguments(model) # rubocop:disable Lint/UnusedMethodArgument defrost_model_type_choices = OpenStudio::StringVector.new defrost_model_type_choices << HPXML::AdvancedResearchDefrostModelTypeStandard defrost_model_type_choices << HPXML::AdvancedResearchDefrostModelTypeAdvanced - arg = OpenStudio::Measure::OSArgument::makeChoiceArgument('simulation_control_defrost_model_type', defrost_model_type_choices, false) - arg.setDisplayName('Simulation Control: Defrost Model Type') - arg.setDescription("Research feature to select the type of defrost model. Use #{HPXML::AdvancedResearchDefrostModelTypeStandard} for default E+ defrost setting. Use #{HPXML::AdvancedResearchDefrostModelTypeAdvanced} for an improved model that better accounts for load and energy use during defrost; using #{HPXML::AdvancedResearchDefrostModelTypeAdvanced} may impact simulation runtime. If not provided, the OS-HPXML default (see HPXML Simulation Control) is used.") - args << arg - arg = OpenStudio::Measure::OSArgument::makeDoubleArgument('simulation_control_onoff_thermostat_deadband', false) - arg.setDisplayName('Simulation Control: HVAC On-Off Thermostat Deadband') - arg.setDescription('Research feature to model on-off thermostat deadband and start-up degradation for single or two speed AC/ASHP systems, and realistic time-based staging for two speed AC/ASHP systems. Currently only supported with 1 min timestep.') - arg.setUnits('deg-F') - args << arg + args << makeArgument('simulation_control_defrost_model_type', Argument::Choice, false, 'Simulation Control: Defrost Model Type', nil, nil, defrost_model_type_choices, "Research feature to select the type of defrost model. Use #{HPXML::AdvancedResearchDefrostModelTypeStandard} for default E+ defrost setting. Use #{HPXML::AdvancedResearchDefrostModelTypeAdvanced} for an improved model that better accounts for load and energy use during defrost; using #{HPXML::AdvancedResearchDefrostModelTypeAdvanced} may impact simulation runtime. If not provided, the OS-HPXML default (see HPXML Simulation Control) is used.") + args << makeArgument('simulation_control_onoff_thermostat_deadband', Argument::Double, false, 'Simulation Control: HVAC On-Off Thermostat Deadband', 'deg-F', nil, nil, 'Research feature to model on-off thermostat deadband and start-up degradation for single or two speed AC/ASHP systems, and realistic time-based staging for two speed AC/ASHP systems. Currently only supported with 1 min timestep.') arg = OpenStudio::Measure::OSArgument::makeDoubleArgument('simulation_control_heat_pump_backup_heating_capacity_increment', false) arg.setDisplayName('Simulation Control: Heat Pump Backup Heating Capacity Increment') diff --git a/BuildResidentialHPXML/measure.xml b/BuildResidentialHPXML/measure.xml index 803992e934..3591aee8a1 100644 --- a/BuildResidentialHPXML/measure.xml +++ b/BuildResidentialHPXML/measure.xml @@ -3,8 +3,8 @@ 3.1 build_residential_hpxml a13a8983-2b01-4930-8af2-42030b6e4233 - c547df04-6517-484e-9bc0-ebf7ad6e42c3 - 2024-10-30T23:22:16Z + 07faa47e-1423-4895-bf4a-a63c28380892 + 2024-10-31T15:35:26Z 2C38F48B BuildResidentialHPXML HPXML Builder @@ -7504,7 +7504,7 @@ measure.rb rb script - 13F97DC9 + 3205AB56 constants.rb diff --git a/HPXMLtoOpenStudio/measure.xml b/HPXMLtoOpenStudio/measure.xml index c6d3d7404e..23109e15a3 100644 --- a/HPXMLtoOpenStudio/measure.xml +++ b/HPXMLtoOpenStudio/measure.xml @@ -3,8 +3,8 @@ 3.1 hpxm_lto_openstudio b1543b30-9465-45ff-ba04-1d1f85e763bc - 2aac8715-c3f4-44d4-ad81-030059bc7e7e - 2024-10-30T17:45:14Z + c6148c68-9bd3-464d-98a2-ad891fe4b2d1 + 2024-10-31T15:35:29Z D8922A73 HPXMLtoOpenStudio HPXML to OpenStudio Translator @@ -207,7 +207,7 @@ constants.rb rb resource - 22E067E1 + 84BDFCE4 constructions.rb diff --git a/HPXMLtoOpenStudio/resources/constants.rb b/HPXMLtoOpenStudio/resources/constants.rb index eb1528a7cf..0f251c1d99 100644 --- a/HPXMLtoOpenStudio/resources/constants.rb +++ b/HPXMLtoOpenStudio/resources/constants.rb @@ -142,6 +142,15 @@ module Constants 'WY' => 'Wyoming' } end +# TODO +module Argument + Choice = 'makeChoiceArgument' + String = 'makeStringArgument' + Double = 'makeDoubleArgument' + Integer = 'makeIntegerArgument' + Boolean = 'makeBoolArgument' +end + # Total Energy (Constants for output reporting) module TE Total = 'Total' From 54c542e52b76dbce5627eb4e5c7260dabb3d2d9e Mon Sep 17 00:00:00 2001 From: Joe Robertson Date: Thu, 31 Oct 2024 10:21:15 -0700 Subject: [PATCH 09/33] Use named arguments and reformat, introduce default_href. --- BuildResidentialHPXML/measure.rb | 129 ++++++++++++++++++++++++++---- BuildResidentialHPXML/measure.xml | 6 +- 2 files changed, 117 insertions(+), 18 deletions(-) diff --git a/BuildResidentialHPXML/measure.rb b/BuildResidentialHPXML/measure.rb index 478ec3b80b..cb06320a43 100644 --- a/BuildResidentialHPXML/measure.rb +++ b/BuildResidentialHPXML/measure.rb @@ -40,31 +40,114 @@ def modeler_description def arguments(model) # rubocop:disable Lint/UnusedMethodArgument docs_base_url = "https://openstudio-hpxml.readthedocs.io/en/v#{Version::OS_HPXML_Version}/workflow_inputs.html" - def makeArgument(name, type, required, display_name, units, default_value, choices, description) - if choices.nil? + def makeArgument(name:, + type:, + required:, + display_name:, + description:, + units: nil, + default_value: nil, + choices: [], + default_href: nil) + if choices.empty? arg = OpenStudio::Measure::OSArgument.send(type, name, required) else arg = OpenStudio::Measure::OSArgument.send(type, name, choices, required) end arg.setDisplayName(display_name) - arg.setDescription(description) arg.setUnits(units) if !units.nil? arg.setDefaultValue(default_value) if !default_value.nil? + if !default_href.nil? + description += " If not provided, the OS-HPXML default (see #{default_href}) is used." + end + arg.setDescription(description) return arg end args = OpenStudio::Measure::OSArgumentVector.new - args << makeArgument('hpxml_path', Argument::String, true, 'HPXML File Path', nil, nil, nil, 'Absolute/relative path of the HPXML file.') - args << makeArgument('existing_hpxml_path', Argument::String, false, 'Existing HPXML File Path', nil, nil, nil, 'Absolute/relative path of the existing HPXML file. If not provided, a new HPXML file with one Building element is created. If provided, a new Building element will be appended to this HPXML file (e.g., to create a multifamily HPXML file describing multiple dwelling units).') - args << makeArgument('whole_sfa_or_mf_building_sim', Argument::Boolean, false, 'Whole SFA/MF Building Simulation?', nil, nil, nil, 'If the HPXML file represents a single family-attached/multifamily building with multiple dwelling units defined, specifies whether to run the HPXML file as a single whole building model.') - args << makeArgument('software_info_program_used', Argument::String, false, 'Software Info: Program Used', nil, nil, nil, 'The name of the software program used.') - args << makeArgument('software_info_program_version', Argument::String, false, 'Software Info: Program Version', nil, nil, nil, 'The version of the software program used.') - args << makeArgument('schedules_filepaths', Argument::String, false, 'Schedules: CSV File Paths', nil, nil, nil, 'Absolute/relative paths of csv files containing user-specified detailed schedules. If multiple files, use a comma-separated list.') - args << makeArgument('schedules_unavailable_period_types', Argument::String, false, 'Schedules: Unavailable Period Types', nil, nil, nil, "Specifies the unavailable period types. Possible types are column names defined in unavailable_periods.csv: #{Schedule.unavailable_period_types.join(', ')}. If multiple periods, use a comma-separated list.") - args << makeArgument('schedules_unavailable_period_dates', Argument::String, false, 'Schedules: Unavailable Period Dates', nil, nil, nil, 'Specifies the unavailable period date ranges. Enter a date range like "Dec 15 - Jan 15". Optionally, can enter hour of the day like "Dec 15 2 - Jan 15 20" (start hour can be 0 through 23 and end hour can be 1 through 24). If multiple periods, use a comma-separated list.') - args << makeArgument('schedules_unavailable_period_window_natvent_availabilities', Argument::String, false, 'Schedules: Unavailable Period Window Natural Ventilation Availabilities', nil, nil, nil, "The availability of the natural ventilation schedule during unavailable periods. Valid choices are: #{[HPXML::ScheduleRegular, HPXML::ScheduleAvailable, HPXML::ScheduleUnavailable].join(', ')}. If multiple periods, use a comma-separated list. If not provided, the OS-HPXML default (see HPXML Unavailable Periods) is used.") - args << makeArgument('simulation_control_timestep', Argument::Integer, false, 'Simulation Control: Timestep', 'min', nil, nil, "Value must be a divisor of 60. If not provided, the OS-HPXML default (see HPXML Simulation Control) is used.") + args << makeArgument( + name: 'hpxml_path', + type: Argument::String, + required: true, + display_name: 'HPXML File Path', + description: 'Absolute/relative path of the HPXML file.' + ) + + args << makeArgument( + name: 'existing_hpxml_path', + type: Argument::String, + required: false, + display_name: 'Existing HPXML File Path', + description: 'Absolute/relative path of the existing HPXML file. If not provided, a new HPXML file with one Building element is created. If provided, a new Building element will be appended to this HPXML file (e.g., to create a multifamily HPXML file describing multiple dwelling units).' + ) + + args << makeArgument( + name: 'whole_sfa_or_mf_building_sim', + type: Argument::Boolean, + required: false, + display_name: 'Whole SFA/MF Building Simulation?', + description: 'If the HPXML file represents a single family-attached/multifamily building with multiple dwelling units defined, specifies whether to run the HPXML file as a single whole building model.' + ) + + args << makeArgument( + name: 'software_info_program_used', + type: Argument::String, + required: false, + display_name: 'Software Info: Program Used', + description: 'The name of the software program used.' + ) + + args << makeArgument( + name: 'software_info_program_version', + type: Argument::String, + required: false, + display_name: 'Software Info: Program Version', + description: 'The version of the software program used.' + ) + + args << makeArgument( + name: 'schedules_filepaths', + type: Argument::String, + required: false, + display_name: 'Schedules: CSV File Paths', + description: 'Absolute/relative paths of csv files containing user-specified detailed schedules. If multiple files, use a comma-separated list.' + ) + + args << makeArgument( + name: 'schedules_unavailable_period_types', + type: Argument::String, + required: false, + display_name: 'Schedules: Unavailable Period Types', + description: "Specifies the unavailable period types. Possible types are column names defined in unavailable_periods.csv: #{Schedule.unavailable_period_types.join(', ')}. If multiple periods, use a comma-separated list." + ) + + args << makeArgument( + name: 'schedules_unavailable_period_dates', + type: Argument::String, + required: false, + display_name: 'Schedules: Unavailable Period Dates', + description: 'Specifies the unavailable period date ranges. Enter a date range like "Dec 15 - Jan 15". Optionally, can enter hour of the day like "Dec 15 2 - Jan 15 20" (start hour can be 0 through 23 and end hour can be 1 through 24). If multiple periods, use a comma-separated list.' + ) + + args << makeArgument( + name: 'schedules_unavailable_period_window_natvent_availabilities', + type: Argument::String, + required: false, + display_name: 'Schedules: Unavailable Period Window Natural Ventilation Availabilities', + description: "The availability of the natural ventilation schedule during unavailable periods. Valid choices are: #{[HPXML::ScheduleRegular, HPXML::ScheduleAvailable, HPXML::ScheduleUnavailable].join(', ')}. If multiple periods, use a comma-separated list.", + default_href: "HPXML Unavailable Periods" + ) + + args << makeArgument( + name: 'simulation_control_timestep', + type: Argument::Integer, + required: false, + display_name: 'Simulation Control: Timestep', + description: 'Value must be a divisor of 60.', + units: 'min', + default_href: "HPXML Simulation Control" + ) arg = OpenStudio::Measure::OSArgument::makeStringArgument('simulation_control_run_period', false) arg.setDisplayName('Simulation Control: Run Period') @@ -96,8 +179,24 @@ def makeArgument(name, type, required, display_name, units, default_value, choic defrost_model_type_choices << HPXML::AdvancedResearchDefrostModelTypeStandard defrost_model_type_choices << HPXML::AdvancedResearchDefrostModelTypeAdvanced - args << makeArgument('simulation_control_defrost_model_type', Argument::Choice, false, 'Simulation Control: Defrost Model Type', nil, nil, defrost_model_type_choices, "Research feature to select the type of defrost model. Use #{HPXML::AdvancedResearchDefrostModelTypeStandard} for default E+ defrost setting. Use #{HPXML::AdvancedResearchDefrostModelTypeAdvanced} for an improved model that better accounts for load and energy use during defrost; using #{HPXML::AdvancedResearchDefrostModelTypeAdvanced} may impact simulation runtime. If not provided, the OS-HPXML default (see HPXML Simulation Control) is used.") - args << makeArgument('simulation_control_onoff_thermostat_deadband', Argument::Double, false, 'Simulation Control: HVAC On-Off Thermostat Deadband', 'deg-F', nil, nil, 'Research feature to model on-off thermostat deadband and start-up degradation for single or two speed AC/ASHP systems, and realistic time-based staging for two speed AC/ASHP systems. Currently only supported with 1 min timestep.') + args << makeArgument( + name: 'simulation_control_defrost_model_type', + type: Argument::Choice, + required: false, + display_name: 'Simulation Control: Defrost Model Type', + description: "Research feature to select the type of defrost model. Use #{HPXML::AdvancedResearchDefrostModelTypeStandard} for default E+ defrost setting. Use #{HPXML::AdvancedResearchDefrostModelTypeAdvanced} for an improved model that better accounts for load and energy use during defrost; using #{HPXML::AdvancedResearchDefrostModelTypeAdvanced} may impact simulation runtime.", + choices: defrost_model_type_choices, + default_href: "HPXML Simulation Control" + ) + + args << makeArgument( + name: 'simulation_control_onoff_thermostat_deadband', + type: Argument::Double, + required: false, + display_name: 'Simulation Control: HVAC On-Off Thermostat Deadband', + description: 'Research feature to model on-off thermostat deadband and start-up degradation for single or two speed AC/ASHP systems, and realistic time-based staging for two speed AC/ASHP systems. Currently only supported with 1 min timestep.', + units: 'deg-F' + ) arg = OpenStudio::Measure::OSArgument::makeDoubleArgument('simulation_control_heat_pump_backup_heating_capacity_increment', false) arg.setDisplayName('Simulation Control: Heat Pump Backup Heating Capacity Increment') diff --git a/BuildResidentialHPXML/measure.xml b/BuildResidentialHPXML/measure.xml index 3591aee8a1..75d4159ce7 100644 --- a/BuildResidentialHPXML/measure.xml +++ b/BuildResidentialHPXML/measure.xml @@ -3,8 +3,8 @@ 3.1 build_residential_hpxml a13a8983-2b01-4930-8af2-42030b6e4233 - 07faa47e-1423-4895-bf4a-a63c28380892 - 2024-10-31T15:35:26Z + 52faa88c-34bf-4073-bdcf-f6bba32cdc80 + 2024-10-31T17:20:50Z 2C38F48B BuildResidentialHPXML HPXML Builder @@ -7504,7 +7504,7 @@ measure.rb rb script - 3205AB56 + 4B1D3547 constants.rb From 62e6fc80ccb7ee506a8b9168685f5117ce02ecf8 Mon Sep 17 00:00:00 2001 From: Joe Robertson Date: Thu, 31 Oct 2024 10:37:37 -0700 Subject: [PATCH 10/33] Try logic for adding auto choice for bool and choice arguments with defaults. --- BuildResidentialHPXML/README.md | 20 ++++++---- BuildResidentialHPXML/measure.rb | 49 +++++++++++++++++------- BuildResidentialHPXML/measure.xml | 35 +++++++++++------ HPXMLtoOpenStudio/measure.xml | 6 +-- HPXMLtoOpenStudio/resources/constants.rb | 1 + 5 files changed, 74 insertions(+), 37 deletions(-) diff --git a/BuildResidentialHPXML/README.md b/BuildResidentialHPXML/README.md index 661ec455c6..dd84c429fc 100644 --- a/BuildResidentialHPXML/README.md +++ b/BuildResidentialHPXML/README.md @@ -101,7 +101,7 @@ Specifies the unavailable period date ranges. Enter a date range like "Dec 15 - **Schedules: Unavailable Period Window Natural Ventilation Availabilities** -The availability of the natural ventilation schedule during unavailable periods. Valid choices are: regular schedule, always available, always unavailable. If multiple periods, use a comma-separated list. If not provided, the OS-HPXML default (see HPXML Unavailable Periods) is used. +The availability of the natural ventilation schedule during unavailable periods. Valid choices are: regular schedule, always available, always unavailable. If multiple periods, use a comma-separated list. If auto or not provided, the OS-HPXML default (see HPXML Unavailable Periods) is used. - **Name:** ``schedules_unavailable_period_window_natvent_availabilities`` - **Type:** ``String`` @@ -112,7 +112,7 @@ The availability of the natural ventilation schedule during unavailable periods. **Simulation Control: Timestep** -Value must be a divisor of 60. If not provided, the OS-HPXML default (see HPXML Simulation Control) is used. +Value must be a divisor of 60. If auto or not provided, the OS-HPXML default (see HPXML Simulation Control) is used. - **Name:** ``simulation_control_timestep`` - **Type:** ``Integer`` @@ -149,13 +149,15 @@ This numeric field should contain the calendar year that determines the start da **Simulation Control: Daylight Saving Enabled** -Whether to use daylight saving. If not provided, the OS-HPXML default (see HPXML Building Site) is used. +Whether to use daylight saving. If auto or not provided, the OS-HPXML default (see HPXML Building Site) is used. - **Name:** ``simulation_control_daylight_saving_enabled`` -- **Type:** ``Boolean`` +- **Type:** ``Choice`` - **Required:** ``false`` +- **Choices:** `auto`, `true`, `false` +
**Simulation Control: Daylight Saving Period** @@ -182,14 +184,14 @@ Affects the transient calculation of indoor air temperatures. If not provided, t **Simulation Control: Defrost Model Type** -Research feature to select the type of defrost model. Use standard for default E+ defrost setting. Use advanced for an improved model that better accounts for load and energy use during defrost; using advanced may impact simulation runtime. If not provided, the OS-HPXML default (see HPXML Simulation Control) is used. +Research feature to select the type of defrost model. Use standard for default E+ defrost setting. Use advanced for an improved model that better accounts for load and energy use during defrost; using advanced may impact simulation runtime. If auto or not provided, the OS-HPXML default (see HPXML Simulation Control) is used. - **Name:** ``simulation_control_defrost_model_type`` - **Type:** ``Choice`` - **Required:** ``false`` -- **Choices:** `standard`, `advanced` +- **Choices:** `auto`, `standard`, `advanced`
@@ -1833,13 +1835,15 @@ Type of air leakage if providing a numeric air leakage value. If 'unit total', r **Air Leakage: Has Flue or Chimney in Conditioned Space** -Presence of flue or chimney with combustion air from conditioned space; used for infiltration model. If not provided, the OS-HPXML default (see Flue or Chimney) is used. +Presence of flue or chimney with combustion air from conditioned space; used for infiltration model. If auto or not provided, the OS-HPXML default (see Flue or Chimney) is used. - **Name:** ``air_leakage_has_flue_or_chimney_in_conditioned_space`` -- **Type:** ``Boolean`` +- **Type:** ``Choice`` - **Required:** ``false`` +- **Choices:** `auto`, `true`, `false` +
**Heating System: Type** diff --git a/BuildResidentialHPXML/measure.rb b/BuildResidentialHPXML/measure.rb index cb06320a43..58b04e7efc 100644 --- a/BuildResidentialHPXML/measure.rb +++ b/BuildResidentialHPXML/measure.rb @@ -49,16 +49,27 @@ def makeArgument(name:, default_value: nil, choices: [], default_href: nil) + + fail "Specified #{type} argument with no choices." if type == Argument::Choice && choices.empty? + + if type == Argument::Boolean && !default_href.nil? + choices = ['true', 'false'] + type = Argument::Choice + end + if choices.empty? arg = OpenStudio::Measure::OSArgument.send(type, name, required) else + if !default_href.nil? + choices.unshift(Argument::Auto) + end arg = OpenStudio::Measure::OSArgument.send(type, name, choices, required) end arg.setDisplayName(display_name) arg.setUnits(units) if !units.nil? arg.setDefaultValue(default_value) if !default_value.nil? if !default_href.nil? - description += " If not provided, the OS-HPXML default (see #{default_href}) is used." + description += " If #{Argument::Auto} or not provided, the OS-HPXML default (see #{default_href}) is used." end arg.setDescription(description) return arg @@ -160,10 +171,14 @@ def makeArgument(name:, arg.setDescription("This numeric field should contain the calendar year that determines the start day of week. If you are running simulations using AMY weather files, the value entered for calendar year will not be used; it will be overridden by the actual year found in the AMY weather file. If not provided, the OS-HPXML default (see HPXML Simulation Control) is used.") args << arg - arg = OpenStudio::Measure::OSArgument::makeBoolArgument('simulation_control_daylight_saving_enabled', false) - arg.setDisplayName('Simulation Control: Daylight Saving Enabled') - arg.setDescription("Whether to use daylight saving. If not provided, the OS-HPXML default (see HPXML Building Site) is used.") - args << arg + args << makeArgument( + name: 'simulation_control_daylight_saving_enabled', + type: Argument::Boolean, + required: false, + display_name: 'Simulation Control: Daylight Saving Enabled', + description: 'Whether to use daylight saving.', + default_href: "HPXML Building Site" + ) arg = OpenStudio::Measure::OSArgument::makeStringArgument('simulation_control_daylight_saving_period', false) arg.setDisplayName('Simulation Control: Daylight Saving Period') @@ -340,11 +355,13 @@ def makeArgument(name:, arg.setDefaultValue(HPXML::ResidentialTypeSFD) args << arg - arg = OpenStudio::Measure::OSArgument::makeBoolArgument('geometry_unit_left_wall_is_adiabatic', false) - arg.setDisplayName('Geometry: Unit Left Wall Is Adiabatic') - arg.setDescription('Presence of an adiabatic left wall.') - arg.setDefaultValue(false) - args << arg + args << makeArgument( + name: 'geometry_unit_left_wall_is_adiabatic', + type: Argument::Boolean, + required: false, + display_name: 'Geometry: Unit Left Wall Is Adiabatic', + description: 'Presence of an adiabatic left wall.' + ) arg = OpenStudio::Measure::OSArgument::makeBoolArgument('geometry_unit_right_wall_is_adiabatic', false) arg.setDisplayName('Geometry: Unit Right Wall Is Adiabatic') @@ -1194,10 +1211,14 @@ def makeArgument(name:, arg.setDescription("Type of air leakage if providing a numeric air leakage value. If '#{HPXML::InfiltrationTypeUnitTotal}', represents the total infiltration to the unit as measured by a compartmentalization test, in which case the air leakage value will be adjusted by the ratio of exterior envelope surface area to total envelope surface area. Otherwise, if '#{HPXML::InfiltrationTypeUnitExterior}', represents the infiltration to the unit from outside only as measured by a guarded test. Required when unit type is #{HPXML::ResidentialTypeSFA} or #{HPXML::ResidentialTypeApartment}.") args << arg - arg = OpenStudio::Measure::OSArgument::makeBoolArgument('air_leakage_has_flue_or_chimney_in_conditioned_space', false) - arg.setDisplayName('Air Leakage: Has Flue or Chimney in Conditioned Space') - arg.setDescription("Presence of flue or chimney with combustion air from conditioned space; used for infiltration model. If not provided, the OS-HPXML default (see Flue or Chimney) is used.") - args << arg + args << makeArgument( + name: 'air_leakage_has_flue_or_chimney_in_conditioned_space', + type: Argument::Boolean, + required: false, + display_name: 'Air Leakage: Has Flue or Chimney in Conditioned Space', + description: 'Presence of flue or chimney with combustion air from conditioned space; used for infiltration model.', + default_href: "Flue or Chimney" + ) heating_system_type_choices = OpenStudio::StringVector.new heating_system_type_choices << Constants::None diff --git a/BuildResidentialHPXML/measure.xml b/BuildResidentialHPXML/measure.xml index 75d4159ce7..00a9d5fdd1 100644 --- a/BuildResidentialHPXML/measure.xml +++ b/BuildResidentialHPXML/measure.xml @@ -3,8 +3,8 @@ 3.1 build_residential_hpxml a13a8983-2b01-4930-8af2-42030b6e4233 - 52faa88c-34bf-4073-bdcf-f6bba32cdc80 - 2024-10-31T17:20:50Z + 82eee37a-5270-41a4-9564-ede4f4a64823 + 2024-10-31T17:36:41Z 2C38F48B BuildResidentialHPXML HPXML Builder @@ -88,7 +88,7 @@ schedules_unavailable_period_window_natvent_availabilities Schedules: Unavailable Period Window Natural Ventilation Availabilities - The availability of the natural ventilation schedule during unavailable periods. Valid choices are: regular schedule, always available, always unavailable. If multiple periods, use a comma-separated list. If not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.8.1/workflow_inputs.html#hpxml-unavailable-periods'>HPXML Unavailable Periods</a>) is used. + The availability of the natural ventilation schedule during unavailable periods. Valid choices are: regular schedule, always available, always unavailable. If multiple periods, use a comma-separated list. If auto or not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.8.1/workflow_inputs.html#hpxml-unavailable-periods'>HPXML Unavailable Periods</a>) is used. String false false @@ -96,7 +96,7 @@ simulation_control_timestep Simulation Control: Timestep - Value must be a divisor of 60. If not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.8.1/workflow_inputs.html#hpxml-simulation-control'>HPXML Simulation Control</a>) is used. + Value must be a divisor of 60. If auto or not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.8.1/workflow_inputs.html#hpxml-simulation-control'>HPXML Simulation Control</a>) is used. Integer min false @@ -122,11 +122,15 @@ simulation_control_daylight_saving_enabled Simulation Control: Daylight Saving Enabled - Whether to use daylight saving. If not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.8.1/workflow_inputs.html#hpxml-building-site'>HPXML Building Site</a>) is used. - Boolean + Whether to use daylight saving. If auto or not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.8.1/workflow_inputs.html#hpxml-building-site'>HPXML Building Site</a>) is used. + Choice false false + + auto + auto + true true @@ -156,11 +160,15 @@ simulation_control_defrost_model_type Simulation Control: Defrost Model Type - Research feature to select the type of defrost model. Use standard for default E+ defrost setting. Use advanced for an improved model that better accounts for load and energy use during defrost; using advanced may impact simulation runtime. If not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.8.1/workflow_inputs.html#hpxml-simulation-control'>HPXML Simulation Control</a>) is used. + Research feature to select the type of defrost model. Use standard for default E+ defrost setting. Use advanced for an improved model that better accounts for load and energy use during defrost; using advanced may impact simulation runtime. If auto or not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.8.1/workflow_inputs.html#hpxml-simulation-control'>HPXML Simulation Control</a>) is used. Choice false false + + auto + auto + standard standard @@ -747,7 +755,6 @@ Boolean false false - false true @@ -2346,11 +2353,15 @@ air_leakage_has_flue_or_chimney_in_conditioned_space Air Leakage: Has Flue or Chimney in Conditioned Space - Presence of flue or chimney with combustion air from conditioned space; used for infiltration model. If not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.8.1/workflow_inputs.html#flue-or-chimney'>Flue or Chimney</a>) is used. - Boolean + Presence of flue or chimney with combustion air from conditioned space; used for infiltration model. If auto or not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.8.1/workflow_inputs.html#flue-or-chimney'>Flue or Chimney</a>) is used. + Choice false false + + auto + auto + true true @@ -7487,7 +7498,7 @@ README.md md readme - 83AFC83A + D173B5CB
README.md.erb @@ -7504,7 +7515,7 @@ measure.rb rb script - 4B1D3547 + 8828F84A constants.rb diff --git a/HPXMLtoOpenStudio/measure.xml b/HPXMLtoOpenStudio/measure.xml index 23109e15a3..6b81bec1cc 100644 --- a/HPXMLtoOpenStudio/measure.xml +++ b/HPXMLtoOpenStudio/measure.xml @@ -3,8 +3,8 @@ 3.1 hpxm_lto_openstudio b1543b30-9465-45ff-ba04-1d1f85e763bc - c6148c68-9bd3-464d-98a2-ad891fe4b2d1 - 2024-10-31T15:35:29Z + 7928aeda-2b60-49d1-9ba5-68858d731847 + 2024-10-31T17:27:25Z D8922A73 HPXMLtoOpenStudio HPXML to OpenStudio Translator @@ -207,7 +207,7 @@ constants.rb rb resource - 84BDFCE4 + 35257A4E constructions.rb diff --git a/HPXMLtoOpenStudio/resources/constants.rb b/HPXMLtoOpenStudio/resources/constants.rb index 0f251c1d99..44100840b2 100644 --- a/HPXMLtoOpenStudio/resources/constants.rb +++ b/HPXMLtoOpenStudio/resources/constants.rb @@ -144,6 +144,7 @@ module Constants # TODO module Argument + Auto = 'auto' Choice = 'makeChoiceArgument' String = 'makeStringArgument' Double = 'makeDoubleArgument' From 0b5478d8d70cea3aa73ebeadb59c0960017ef958 Mon Sep 17 00:00:00 2001 From: Joe Robertson Date: Thu, 31 Oct 2024 11:13:27 -0700 Subject: [PATCH 11/33] Handle double and integer arguments to string arguments when OS-HPXML default is used. --- BuildResidentialHPXML/README.md | 10 +++----- BuildResidentialHPXML/measure.rb | 41 +++++++++++++++++++++---------- BuildResidentialHPXML/measure.xml | 15 +++++------ 3 files changed, 39 insertions(+), 27 deletions(-) diff --git a/BuildResidentialHPXML/README.md b/BuildResidentialHPXML/README.md index dd84c429fc..5e77e6f806 100644 --- a/BuildResidentialHPXML/README.md +++ b/BuildResidentialHPXML/README.md @@ -115,9 +115,7 @@ The availability of the natural ventilation schedule during unavailable periods. Value must be a divisor of 60. If auto or not provided, the OS-HPXML default (see HPXML Simulation Control) is used. - **Name:** ``simulation_control_timestep`` -- **Type:** ``Integer`` - -- **Units:** ``min`` +- **Type:** ``String`` - **Required:** ``false`` @@ -336,12 +334,10 @@ Zip code of the home address. Either this or the Weather Station: EnergyPlus Wea **Site: Time Zone UTC Offset** -Time zone UTC offset of the home address. Must be between -12 and 14. If not provided, the OS-HPXML default (see HPXML Site) is used. +Time zone UTC offset of the home address. Must be between -12 and 14. If auto or not provided, the OS-HPXML default (see HPXML Site) is used. - **Name:** ``site_time_zone_utc_offset`` -- **Type:** ``Double`` - -- **Units:** ``hr`` +- **Type:** ``String`` - **Required:** ``false`` diff --git a/BuildResidentialHPXML/measure.rb b/BuildResidentialHPXML/measure.rb index 58b04e7efc..dc1a523b71 100644 --- a/BuildResidentialHPXML/measure.rb +++ b/BuildResidentialHPXML/measure.rb @@ -51,10 +51,15 @@ def makeArgument(name:, default_href: nil) fail "Specified #{type} argument with no choices." if type == Argument::Choice && choices.empty? + fail 'Specified required argument with indication of OS-HPXML default.' if required && !default_href.nil? - if type == Argument::Boolean && !default_href.nil? - choices = ['true', 'false'] - type = Argument::Choice + if !default_href.nil? + if type == Argument::Boolean + choices = ['true', 'false'] + type = Argument::Choice + elsif [Argument::Double, Argument::Integer].include?(type) + type = Argument::String + end end if choices.empty? @@ -304,11 +309,15 @@ def makeArgument(name:, arg.setDescription('Zip code of the home address. Either this or the Weather Station: EnergyPlus Weather (EPW) Filepath input below must be provided.') args << arg - arg = OpenStudio::Measure::OSArgument.makeDoubleArgument('site_time_zone_utc_offset', false) - arg.setDisplayName('Site: Time Zone UTC Offset') - arg.setDescription("Time zone UTC offset of the home address. Must be between -12 and 14. If not provided, the OS-HPXML default (see HPXML Site) is used.") - arg.setUnits('hr') - args << arg + args << makeArgument( + name: 'site_time_zone_utc_offset', + type: Argument::Double, + required: false, + display_name: 'Site: Time Zone UTC Offset', + description: 'Time zone UTC offset of the home address. Must be between -12 and 14.', + units: 'hr', + default_href: "HPXML Site" + ) arg = OpenStudio::Measure::OSArgument.makeDoubleArgument('site_elevation', false) arg.setDisplayName('Site: Elevation') @@ -333,10 +342,13 @@ def makeArgument(name:, arg.setDescription('Path of the EPW file. Either this or the Site: Zip Code input above must be provided.') args << arg - arg = OpenStudio::Measure::OSArgument.makeIntegerArgument('year_built', false) - arg.setDisplayName('Building Construction: Year Built') - arg.setDescription('The year the building was built.') - args << arg + args << makeArgument( + name: 'year_built', + type: Argument::Integer, + required: false, + display_name: 'Building Construction: Year Built', + description: 'The year the building was built.' + ) unit_type_choices = OpenStudio::StringVector.new unit_type_choices << HPXML::ResidentialTypeSFD @@ -360,7 +372,8 @@ def makeArgument(name:, type: Argument::Boolean, required: false, display_name: 'Geometry: Unit Left Wall Is Adiabatic', - description: 'Presence of an adiabatic left wall.' + description: 'Presence of an adiabatic left wall.', + default_value: false ) arg = OpenStudio::Measure::OSArgument::makeBoolArgument('geometry_unit_right_wall_is_adiabatic', false) @@ -3610,6 +3623,8 @@ def run(model, runner, user_arguments) Version.check_openstudio_version() args = runner.getArgumentValues(arguments(model), user_arguments) + # FIXME + args[:simulation_control_timestep] = Integer(args[:simulation_control_timestep]) if !args[:simulation_control_timestep].nil? # Argument error checks warnings, errors = validate_arguments(args) diff --git a/BuildResidentialHPXML/measure.xml b/BuildResidentialHPXML/measure.xml index 00a9d5fdd1..90335b72d1 100644 --- a/BuildResidentialHPXML/measure.xml +++ b/BuildResidentialHPXML/measure.xml @@ -3,8 +3,8 @@ 3.1 build_residential_hpxml a13a8983-2b01-4930-8af2-42030b6e4233 - 82eee37a-5270-41a4-9564-ede4f4a64823 - 2024-10-31T17:36:41Z + 811f2320-9331-4775-94fb-6577a7514edf + 2024-10-31T18:11:56Z 2C38F48B BuildResidentialHPXML HPXML Builder @@ -97,7 +97,7 @@ simulation_control_timestep Simulation Control: Timestep Value must be a divisor of 60. If auto or not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.8.1/workflow_inputs.html#hpxml-simulation-control'>HPXML Simulation Control</a>) is used. - Integer + String min false false @@ -664,8 +664,8 @@ site_time_zone_utc_offset Site: Time Zone UTC Offset - Time zone UTC offset of the home address. Must be between -12 and 14. If not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.8.1/workflow_inputs.html#hpxml-site'>HPXML Site</a>) is used. - Double + Time zone UTC offset of the home address. Must be between -12 and 14. If auto or not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.8.1/workflow_inputs.html#hpxml-site'>HPXML Site</a>) is used. + String hr false false @@ -755,6 +755,7 @@ Boolean false false + false true @@ -7498,7 +7499,7 @@ README.md md readme - D173B5CB + 6CF274BB README.md.erb @@ -7515,7 +7516,7 @@ measure.rb rb script - 8828F84A + 63848016 constants.rb From 5efc333d557481436eea067a779cb63c2e796f36 Mon Sep 17 00:00:00 2001 From: Joe Robertson Date: Thu, 31 Oct 2024 14:00:40 -0700 Subject: [PATCH 12/33] Reorganize a bit. --- BuildResidentialHPXML/measure.rb | 5 +++-- BuildResidentialHPXML/measure.xml | 8 ++++---- BuildResidentialHPXML/resources/constants.rb | 10 ++++++++++ HPXMLtoOpenStudio/measure.xml | 6 +++--- HPXMLtoOpenStudio/resources/constants.rb | 10 ---------- 5 files changed, 20 insertions(+), 19 deletions(-) diff --git a/BuildResidentialHPXML/measure.rb b/BuildResidentialHPXML/measure.rb index dc1a523b71..1a7700b990 100644 --- a/BuildResidentialHPXML/measure.rb +++ b/BuildResidentialHPXML/measure.rb @@ -40,6 +40,7 @@ def modeler_description def arguments(model) # rubocop:disable Lint/UnusedMethodArgument docs_base_url = "https://openstudio-hpxml.readthedocs.io/en/v#{Version::OS_HPXML_Version}/workflow_inputs.html" + # TODO def makeArgument(name:, type:, required:, @@ -66,7 +67,7 @@ def makeArgument(name:, arg = OpenStudio::Measure::OSArgument.send(type, name, required) else if !default_href.nil? - choices.unshift(Argument::Auto) + choices.unshift(Constants::Auto) end arg = OpenStudio::Measure::OSArgument.send(type, name, choices, required) end @@ -74,7 +75,7 @@ def makeArgument(name:, arg.setUnits(units) if !units.nil? arg.setDefaultValue(default_value) if !default_value.nil? if !default_href.nil? - description += " If #{Argument::Auto} or not provided, the OS-HPXML default (see #{default_href}) is used." + description += " If #{Constants::Auto} or not provided, the OS-HPXML default (see #{default_href}) is used." end arg.setDescription(description) return arg diff --git a/BuildResidentialHPXML/measure.xml b/BuildResidentialHPXML/measure.xml index 90335b72d1..ed9d282ee3 100644 --- a/BuildResidentialHPXML/measure.xml +++ b/BuildResidentialHPXML/measure.xml @@ -3,8 +3,8 @@ 3.1 build_residential_hpxml a13a8983-2b01-4930-8af2-42030b6e4233 - 811f2320-9331-4775-94fb-6577a7514edf - 2024-10-31T18:11:56Z + 6294c3de-779a-4b31-b922-a71c4d0607fe + 2024-10-31T20:59:39Z 2C38F48B BuildResidentialHPXML HPXML Builder @@ -7516,13 +7516,13 @@ measure.rb rb script - 63848016 + F116DE62 constants.rb rb resource - 079FF429 + E433BC30 geometry.rb diff --git a/BuildResidentialHPXML/resources/constants.rb b/BuildResidentialHPXML/resources/constants.rb index 639a49592e..7aa6514ae1 100644 --- a/BuildResidentialHPXML/resources/constants.rb +++ b/BuildResidentialHPXML/resources/constants.rb @@ -2,6 +2,7 @@ # Collection of constants. module Constants + Auto = 'auto' BuildingAmerica = 'BuildingAmerica' FacadeFront = 'front' FacadeBack = 'back' @@ -16,3 +17,12 @@ module Constants RoofTypeGable = 'gable' RoofTypeHip = 'hip' end + +# TODO +module Argument + Choice = 'makeChoiceArgument' + String = 'makeStringArgument' + Double = 'makeDoubleArgument' + Integer = 'makeIntegerArgument' + Boolean = 'makeBoolArgument' +end diff --git a/HPXMLtoOpenStudio/measure.xml b/HPXMLtoOpenStudio/measure.xml index ef5b3f9cd0..5454d23873 100644 --- a/HPXMLtoOpenStudio/measure.xml +++ b/HPXMLtoOpenStudio/measure.xml @@ -3,8 +3,8 @@ 3.1 hpxm_lto_openstudio b1543b30-9465-45ff-ba04-1d1f85e763bc - b1c3c063-d7f2-4a1e-8999-7eff6549ffe0 - 2024-10-31T17:39:54Z + 3a3ed007-b2d9-4ee5-b75d-1c9ee4391ced + 2024-10-31T20:59:41Z D8922A73 HPXMLtoOpenStudio HPXML to OpenStudio Translator @@ -207,7 +207,7 @@ constants.rb rb resource - 35257A4E + 22E067E1 constructions.rb diff --git a/HPXMLtoOpenStudio/resources/constants.rb b/HPXMLtoOpenStudio/resources/constants.rb index 44100840b2..eb1528a7cf 100644 --- a/HPXMLtoOpenStudio/resources/constants.rb +++ b/HPXMLtoOpenStudio/resources/constants.rb @@ -142,16 +142,6 @@ module Constants 'WY' => 'Wyoming' } end -# TODO -module Argument - Auto = 'auto' - Choice = 'makeChoiceArgument' - String = 'makeStringArgument' - Double = 'makeDoubleArgument' - Integer = 'makeIntegerArgument' - Boolean = 'makeBoolArgument' -end - # Total Energy (Constants for output reporting) module TE Total = 'Total' From 00129ab007b2612c4cf2bffb653061f44cfec7ee Mon Sep 17 00:00:00 2001 From: Joe Robertson Date: Fri, 1 Nov 2024 10:32:54 -0700 Subject: [PATCH 13/33] Method for converting string arguments back to appropriate data type. --- BuildResidentialHPXML/measure.rb | 109 +++++++++++++------- BuildResidentialHPXML/measure.xml | 12 +-- BuildResidentialHPXML/resources/geometry.rb | 16 +-- 3 files changed, 82 insertions(+), 55 deletions(-) diff --git a/BuildResidentialHPXML/measure.rb b/BuildResidentialHPXML/measure.rb index f70abbd5f2..a9ac1a1a5b 100644 --- a/BuildResidentialHPXML/measure.rb +++ b/BuildResidentialHPXML/measure.rb @@ -47,7 +47,6 @@ def makeArgument(name:, display_name:, description:, units: nil, - default_value: nil, choices: [], default_href: nil) @@ -73,7 +72,6 @@ def makeArgument(name:, end arg.setDisplayName(display_name) arg.setUnits(units) if !units.nil? - arg.setDefaultValue(default_value) if !default_value.nil? if !default_href.nil? description += " If #{Constants::Auto} or not provided, the OS-HPXML default (see #{default_href}) is used." end @@ -373,27 +371,32 @@ def makeArgument(name:, type: Argument::Boolean, required: false, display_name: 'Geometry: Unit Left Wall Is Adiabatic', - description: 'Presence of an adiabatic left wall.', - default_value: false + description: 'Presence of an adiabatic left wall.' ) - arg = OpenStudio::Measure::OSArgument::makeBoolArgument('geometry_unit_right_wall_is_adiabatic', false) - arg.setDisplayName('Geometry: Unit Right Wall Is Adiabatic') - arg.setDescription('Presence of an adiabatic right wall.') - arg.setDefaultValue(false) - args << arg + args << makeArgument( + name: 'geometry_unit_right_wall_is_adiabatic', + type: Argument::Boolean, + required: false, + display_name: 'Geometry: Unit Right Wall Is Adiabatic', + description: 'Presence of an adiabatic right wall.' + ) - arg = OpenStudio::Measure::OSArgument::makeBoolArgument('geometry_unit_front_wall_is_adiabatic', false) - arg.setDisplayName('Geometry: Unit Front Wall Is Adiabatic') - arg.setDescription('Presence of an adiabatic front wall, for example, the unit is adjacent to a conditioned corridor.') - arg.setDefaultValue(false) - args << arg + args << makeArgument( + name: 'geometry_unit_front_wall_is_adiabatic', + type: Argument::Boolean, + required: false, + display_name: 'Geometry: Unit Front Wall Is Adiabatic', + description: 'Presence of an adiabatic front wall, for example, the unit is adjacent to a conditioned corridor.' + ) - arg = OpenStudio::Measure::OSArgument::makeBoolArgument('geometry_unit_back_wall_is_adiabatic', false) - arg.setDisplayName('Geometry: Unit Back Wall Is Adiabatic') - arg.setDescription('Presence of an adiabatic back wall.') - arg.setDefaultValue(false) - args << arg + args << makeArgument( + name: 'geometry_unit_back_wall_is_adiabatic', + type: Argument::Boolean, + required: false, + display_name: 'Geometry: Unit Back Wall Is Adiabatic', + description: 'Presence of an adiabatic back wall.' + ) arg = OpenStudio::Measure::OSArgument::makeIntegerArgument('geometry_unit_num_floors_above_grade', true) arg.setDisplayName('Geometry: Unit Number of Floors Above Grade') @@ -3605,6 +3608,35 @@ def makeArgument(name:, return args end + # TODO + def convertArgumentValues(arguments_model, args) + args.each do |name, value| + arg = arguments_model.find { |a| name == a.name.to_sym } + type = arg.type + + if type == 'Choice'.to_OSArgumentType + choices = arg.choiceValues + if choices.include?(Constants::Auto) + if value.downcase.to_s == 'true' + args[name] = true + elsif value.downcase.to_s == 'false' + args[name] = false + end + end + elsif type == 'String'.to_OSArgumentType + begin + args[name] = Integer(value) + rescue + begin + args[name] = Float(value) + rescue + end + end + end + end + return args + end + # Define what happens when the measure is run. # # @param model [OpenStudio::Model::Model] OpenStudio Model object @@ -3624,8 +3656,7 @@ def run(model, runner, user_arguments) Version.check_openstudio_version() args = runner.getArgumentValues(arguments(model), user_arguments) - # FIXME - args[:simulation_control_timestep] = Integer(args[:simulation_control_timestep]) if !args[:simulation_control_timestep].nil? + args = convertArgumentValues(arguments(model), args) # Argument error checks warnings, errors = validate_arguments(args) @@ -3649,7 +3680,7 @@ def run(model, runner, user_arguments) epw_path = args[:weather_station_epw_filepath] if epw_path.nil? # Get EPW path from zip code - epw_path = Defaults.lookup_weather_data_from_zipcode(args[:site_zip_code])[:station_filename] + epw_path = Defaults.lookup_weather_data_from_zipcode("#{args[:site_zip_code]}")[:station_filename] end # Create EpwFile object @@ -3889,7 +3920,7 @@ def argument_errors(args) HPXML::fossil_fuels.each do |fossil_fuel| underscore_case = OpenStudio::toUnderscoreCase(fossil_fuel) - emissions_scenario_lengths += [args["emissions_#{underscore_case}_values".to_sym].count(',')] unless args["emissions_#{underscore_case}_values".to_sym].nil? + emissions_scenario_lengths += ["#{args["emissions_#{underscore_case}_values".to_sym]}".count(',')] unless args["emissions_#{underscore_case}_values".to_sym].nil? end error = (emissions_scenario_lengths.uniq.size != 1) @@ -3902,8 +3933,8 @@ def argument_errors(args) HPXML::all_fuels.each do |fuel| underscore_case = OpenStudio::toUnderscoreCase(fuel) - bills_scenario_lengths += [args["utility_bill_#{underscore_case}_fixed_charges".to_sym].count(',')] unless args["utility_bill_#{underscore_case}_fixed_charges".to_sym].nil? - bills_scenario_lengths += [args["utility_bill_#{underscore_case}_marginal_rates".to_sym].count(',')] unless args["utility_bill_#{underscore_case}_marginal_rates".to_sym].nil? + bills_scenario_lengths += ["#{args["utility_bill_#{underscore_case}_fixed_charges".to_sym]}".count(',')] unless args["utility_bill_#{underscore_case}_fixed_charges".to_sym].nil? + bills_scenario_lengths += ["#{args["utility_bill_#{underscore_case}_marginal_rates".to_sym]}".count(',')] unless args["utility_bill_#{underscore_case}_marginal_rates".to_sym].nil? end error = (bills_scenario_lengths.uniq.size != 1) @@ -4070,9 +4101,9 @@ def self.create(runner, model, args, epw_path, hpxml_path, existing_hpxml_path) def self.need_weather_based_on_args(args) if (args[:hvac_control_heating_season_period].to_s == Constants::BuildingAmerica) || (args[:hvac_control_cooling_season_period].to_s == Constants::BuildingAmerica) || - (args[:solar_thermal_system_type] != Constants::None && args[:solar_thermal_collector_tilt].start_with?('latitude')) || - (args[:pv_system_present] && args[:pv_system_array_tilt].start_with?('latitude')) || - (args[:pv_system_2_present] && args[:pv_system_2_array_tilt].start_with?('latitude')) || + (args[:solar_thermal_system_type] != Constants::None && "#{args[:solar_thermal_collector_tilt]}".start_with?('latitude')) || + (args[:pv_system_present] && "#{args[:pv_system_array_tilt]}".start_with?('latitude')) || + (args[:pv_system_2_present] && "#{args[:pv_system_2_array_tilt]}".start_with?('latitude')) || (args[:apply_defaults]) return true end @@ -4349,7 +4380,7 @@ def self.set_header(runner, hpxml, args) underscore_case = OpenStudio::toUnderscoreCase(fossil_fuel) if not args["emissions_#{underscore_case}_values".to_sym].nil? - fuel_values[fossil_fuel] = args["emissions_#{underscore_case}_values".to_sym].split(',').map(&:strip) + fuel_values[fossil_fuel] = "#{args["emissions_#{underscore_case}_values".to_sym]}".split(',').map(&:strip) else fuel_values[fossil_fuel] = [nil] * emissions_scenario_names.size end @@ -4451,7 +4482,7 @@ def self.set_header(runner, hpxml, args) underscore_case = OpenStudio::toUnderscoreCase(fuel) if not args["utility_bill_#{underscore_case}_fixed_charges".to_sym].nil? - fixed_charges[fuel] = args["utility_bill_#{underscore_case}_fixed_charges".to_sym].split(',').map(&:strip) + fixed_charges[fuel] = "#{args["utility_bill_#{underscore_case}_fixed_charges".to_sym]}".split(',').map(&:strip) else fixed_charges[fuel] = [nil] * bills_scenario_names.size end @@ -4462,7 +4493,7 @@ def self.set_header(runner, hpxml, args) underscore_case = OpenStudio::toUnderscoreCase(fuel) if not args["utility_bill_#{underscore_case}_marginal_rates".to_sym].nil? - marginal_rates[fuel] = args["utility_bill_#{underscore_case}_marginal_rates".to_sym].split(',').map(&:strip) + marginal_rates[fuel] = "#{args["utility_bill_#{underscore_case}_marginal_rates".to_sym]}".split(',').map(&:strip) else marginal_rates[fuel] = [nil] * bills_scenario_names.size end @@ -4481,13 +4512,13 @@ def self.set_header(runner, hpxml, args) end if not args[:utility_bill_pv_net_metering_annual_excess_sellback_rates].nil? - bills_pv_net_metering_annual_excess_sellback_rates = args[:utility_bill_pv_net_metering_annual_excess_sellback_rates].split(',').map(&:strip) + bills_pv_net_metering_annual_excess_sellback_rates = "#{args[:utility_bill_pv_net_metering_annual_excess_sellback_rates]}".split(',').map(&:strip) else bills_pv_net_metering_annual_excess_sellback_rates = [nil] * bills_scenario_names.size end if not args[:utility_bill_pv_feed_in_tariff_rates].nil? - bills_pv_feed_in_tariff_rates = args[:utility_bill_pv_feed_in_tariff_rates].split(',').map(&:strip) + bills_pv_feed_in_tariff_rates = "#{args[:utility_bill_pv_feed_in_tariff_rates]}".split(',').map(&:strip) else bills_pv_feed_in_tariff_rates = [nil] * bills_scenario_names.size end @@ -4499,7 +4530,7 @@ def self.set_header(runner, hpxml, args) end if not args[:utility_bill_pv_monthly_grid_connection_fees].nil? - bills_pv_monthly_grid_connection_fees = args[:utility_bill_pv_monthly_grid_connection_fees].split(',').map(&:strip) + bills_pv_monthly_grid_connection_fees = "#{args[:utility_bill_pv_monthly_grid_connection_fees]}".split(',').map(&:strip) else bills_pv_monthly_grid_connection_fees = [nil] * bills_scenario_names.size end @@ -6372,7 +6403,7 @@ def self.set_hvac_control(hpxml, hpxml_bldg, args, weather) if hpxml_bldg.total_fraction_heat_load_served > 0 if (not args[:hvac_control_heating_weekday_setpoint].nil?) && (not args[:hvac_control_heating_weekend_setpoint].nil?) - if args[:hvac_control_heating_weekday_setpoint] == args[:hvac_control_heating_weekend_setpoint] && !args[:hvac_control_heating_weekday_setpoint].include?(',') + if args[:hvac_control_heating_weekday_setpoint] == args[:hvac_control_heating_weekend_setpoint] && !"#{args[:hvac_control_heating_weekday_setpoint]}".include?(',') heating_setpoint_temp = Float(args[:hvac_control_heating_weekday_setpoint]) else weekday_heating_setpoints = args[:hvac_control_heating_weekday_setpoint] @@ -6401,7 +6432,7 @@ def self.set_hvac_control(hpxml, hpxml_bldg, args, weather) if hpxml_bldg.total_fraction_cool_load_served > 0 if (not args[:hvac_control_cooling_weekday_setpoint].nil?) && (not args[:hvac_control_cooling_weekend_setpoint].nil?) - if args[:hvac_control_cooling_weekday_setpoint] == args[:hvac_control_cooling_weekend_setpoint] && !args[:hvac_control_cooling_weekday_setpoint].include?(',') + if args[:hvac_control_cooling_weekday_setpoint] == args[:hvac_control_cooling_weekend_setpoint] && !args[:hvac_control_cooling_weekday_setpoint].is_a?(String) cooling_setpoint_temp = Float(args[:hvac_control_cooling_weekday_setpoint]) else weekday_cooling_setpoints = args[:hvac_control_cooling_weekday_setpoint] @@ -6817,7 +6848,7 @@ def self.set_solar_thermal(hpxml_bldg, args, weather) collector_type = args[:solar_thermal_collector_type] collector_azimuth = args[:solar_thermal_collector_azimuth] latitude = Defaults.get_latitude(args[:site_latitude], weather) unless weather.nil? - collector_tilt = Geometry.get_absolute_tilt(tilt_str: args[:solar_thermal_collector_tilt], roof_pitch: args[:geometry_roof_pitch], latitude: latitude) + collector_tilt = Geometry.get_absolute_tilt(tilt_str: "#{args[:solar_thermal_collector_tilt]}", roof_pitch: args[:geometry_roof_pitch], latitude: latitude) collector_rated_optical_efficiency = args[:solar_thermal_collector_rated_optical_efficiency] collector_rated_thermal_losses = args[:solar_thermal_collector_rated_thermal_losses] storage_volume = args[:solar_thermal_storage_volume] @@ -6873,7 +6904,7 @@ def self.set_pv_systems(hpxml_bldg, args, weather) module_type: args[:pv_system_module_type], tracking: args[:pv_system_tracking], array_azimuth: args[:pv_system_array_azimuth], - array_tilt: Geometry.get_absolute_tilt(tilt_str: args[:pv_system_array_tilt], roof_pitch: args[:geometry_roof_pitch], latitude: latitude), + array_tilt: Geometry.get_absolute_tilt(tilt_str: "#{args[:pv_system_array_tilt]}", roof_pitch: args[:geometry_roof_pitch], latitude: latitude), max_power_output: args[:pv_system_max_power_output], system_losses_fraction: args[:pv_system_system_losses_fraction], is_shared_system: is_shared_system, @@ -6885,7 +6916,7 @@ def self.set_pv_systems(hpxml_bldg, args, weather) module_type: args[:pv_system_2_module_type], tracking: args[:pv_system_2_tracking], array_azimuth: args[:pv_system_2_array_azimuth], - array_tilt: Geometry.get_absolute_tilt(tilt_str: args[:pv_system_2_array_tilt], roof_pitch: args[:geometry_roof_pitch], latitude: latitude), + array_tilt: Geometry.get_absolute_tilt(tilt_str: "#{args[:pv_system_2_array_tilt]}", roof_pitch: args[:geometry_roof_pitch], latitude: latitude), max_power_output: args[:pv_system_2_max_power_output], system_losses_fraction: args[:pv_system_system_losses_fraction], is_shared_system: is_shared_system, diff --git a/BuildResidentialHPXML/measure.xml b/BuildResidentialHPXML/measure.xml index 38c012210a..1d8aae8b03 100644 --- a/BuildResidentialHPXML/measure.xml +++ b/BuildResidentialHPXML/measure.xml @@ -3,8 +3,8 @@ 3.1 build_residential_hpxml a13a8983-2b01-4930-8af2-42030b6e4233 - 89086b5a-d521-45ab-9a4a-3aa54d285c14 - 2024-11-01T16:22:34Z + a8a555e1-2d84-4a9c-8ad5-a5bf63f13935 + 2024-11-01T17:29:58Z 2C38F48B BuildResidentialHPXML HPXML Builder @@ -755,7 +755,6 @@ Boolean false false - false true @@ -774,7 +773,6 @@ Boolean false false - false true @@ -793,7 +791,6 @@ Boolean false false - false true @@ -812,7 +809,6 @@ Boolean false false - false true @@ -7516,7 +7512,7 @@ measure.rb rb script - 7692B20D + A83FA136 constants.rb @@ -7528,7 +7524,7 @@ geometry.rb rb resource - AADC5A37 + 6F9D002F test_build_residential_hpxml.rb diff --git a/BuildResidentialHPXML/resources/geometry.rb b/BuildResidentialHPXML/resources/geometry.rb index 6435027a9a..cdc0e1067f 100644 --- a/BuildResidentialHPXML/resources/geometry.rb +++ b/BuildResidentialHPXML/resources/geometry.rb @@ -676,10 +676,10 @@ def self.create_single_family_attached(model:, geometry_attic_type:, geometry_roof_type:, geometry_roof_pitch:, - geometry_unit_left_wall_is_adiabatic:, - geometry_unit_right_wall_is_adiabatic:, - geometry_unit_front_wall_is_adiabatic:, - geometry_unit_back_wall_is_adiabatic:, + geometry_unit_left_wall_is_adiabatic: false, + geometry_unit_right_wall_is_adiabatic: false, + geometry_unit_front_wall_is_adiabatic: false, + geometry_unit_back_wall_is_adiabatic: false, **) cfa = geometry_unit_cfa @@ -976,10 +976,10 @@ def self.create_apartment(model:, geometry_attic_type:, geometry_roof_type:, geometry_roof_pitch:, - geometry_unit_left_wall_is_adiabatic:, - geometry_unit_right_wall_is_adiabatic:, - geometry_unit_front_wall_is_adiabatic:, - geometry_unit_back_wall_is_adiabatic:, + geometry_unit_left_wall_is_adiabatic: false, + geometry_unit_right_wall_is_adiabatic: false, + geometry_unit_front_wall_is_adiabatic: false, + geometry_unit_back_wall_is_adiabatic: false, **) cfa = geometry_unit_cfa From bc1232c336203831ffaa2e612ed3500e4edc3130 Mon Sep 17 00:00:00 2001 From: Joe Robertson Date: Fri, 1 Nov 2024 10:39:05 -0700 Subject: [PATCH 14/33] Handle and test what happens when auto is provided. --- BuildResidentialHPXML/measure.rb | 5 + BuildResidentialHPXML/measure.xml | 6 +- workflow/hpxml_inputs.json | 4 + workflow/sample_files/base-auto.xml | 548 ++++++++++++++++++++++++++++ 4 files changed, 560 insertions(+), 3 deletions(-) create mode 100644 workflow/sample_files/base-auto.xml diff --git a/BuildResidentialHPXML/measure.rb b/BuildResidentialHPXML/measure.rb index a9ac1a1a5b..146786ec3d 100644 --- a/BuildResidentialHPXML/measure.rb +++ b/BuildResidentialHPXML/measure.rb @@ -3611,6 +3611,11 @@ def makeArgument(name:, # TODO def convertArgumentValues(arguments_model, args) args.each do |name, value| + if value == Constants::Auto + args.delete(name) + next + end + arg = arguments_model.find { |a| name == a.name.to_sym } type = arg.type diff --git a/BuildResidentialHPXML/measure.xml b/BuildResidentialHPXML/measure.xml index 1d8aae8b03..4a526fccbe 100644 --- a/BuildResidentialHPXML/measure.xml +++ b/BuildResidentialHPXML/measure.xml @@ -3,8 +3,8 @@ 3.1 build_residential_hpxml a13a8983-2b01-4930-8af2-42030b6e4233 - a8a555e1-2d84-4a9c-8ad5-a5bf63f13935 - 2024-11-01T17:29:58Z + cec297d1-e116-4848-b58a-b8712506cd1c + 2024-11-01T17:38:43Z 2C38F48B BuildResidentialHPXML HPXML Builder @@ -7512,7 +7512,7 @@ measure.rb rb script - A83FA136 + CAF61995 constants.rb diff --git a/workflow/hpxml_inputs.json b/workflow/hpxml_inputs.json index 353b373f45..57d336ce91 100644 --- a/workflow/hpxml_inputs.json +++ b/workflow/hpxml_inputs.json @@ -650,6 +650,10 @@ "utility_bill_scenario_names": "Bills", "combine_like_surfaces": true }, + "sample_files/base-auto.xml": { + "parent_hpxml": "sample_files/base.xml", + "simulation_control_timestep": "auto" + }, "sample_files/base-appliances-coal.xml": { "parent_hpxml": "sample_files/base-appliances-gas.xml", "clothes_dryer_fuel_type": "coal", diff --git a/workflow/sample_files/base-auto.xml b/workflow/sample_files/base-auto.xml new file mode 100644 index 0000000000..d053f6c356 --- /dev/null +++ b/workflow/sample_files/base-auto.xml @@ -0,0 +1,548 @@ + + + + HPXML + tasks.rb + 2000-01-01T00:00:00-07:00 + create + + + + + + Bills + + + + + + + + +
+ CO +
+
+ + proposed workscope + + + + + suburban + stand-alone + no units above or below + 180 + + electricity + natural gas + + + + single-family detached + 2.0 + 1.0 + 8.0 + 3 + 2 + 2700.0 + 21600.0 + + + + + 2006 + 5B + + + + USA_CO_Denver.Intl.AP.725650_TMY3 + + USA_CO_Denver.Intl.AP.725650_TMY3.epw + + + + + + + + 50.0 + + ACH + 3.0 + + 21600.0 + + + + + + + + false + + + false + + + + + + + + + + + true + + + + + + + + + + + attic - unvented + 1509.3 + asphalt or fiberglass shingles + 0.7 + 0.92 + 6.0 + + + 2.3 + + + + + + + outside + basement - conditioned + 115.6 + wood siding + 0.7 + 0.92 + + + 23.0 + + + + + + + outside + conditioned space + + + + 1200.0 + wood siding + 0.7 + 0.92 + + gypsum board + + + + 23.0 + + + + + outside + attic - unvented + gable + + + + 225.0 + wood siding + 0.7 + 0.92 + + + 4.0 + + + + + + + ground + basement - conditioned + 8.0 + 1200.0 + 8.0 + 7.0 + + gypsum board + + + + + continuous - exterior + 8.9 + 0.0 + 8.0 + + + continuous - interior + 0.0 + + + + + + + + attic - unvented + conditioned space + ceiling + + + + 1350.0 + + gypsum board + + + + 39.3 + + + + + + + basement - conditioned + 1350.0 + 4.0 + 150.0 + + + + 0.0 + 0.0 + + + + + + 0.0 + 0.0 + + + + 0.0 + 0.0 + + + + + + + 108.0 + 0 + 0.33 + 0.45 + + + 0.7 + 0.85 + + 0.67 + + + + + 72.0 + 90 + 0.33 + 0.45 + + + 0.7 + 0.85 + + 0.67 + + + + + 108.0 + 180 + 0.33 + 0.45 + + + 0.7 + 0.85 + + 0.67 + + + + + 72.0 + 270 + 0.33 + 0.45 + + + 0.7 + 0.85 + + 0.67 + + + + + + + + 40.0 + 180 + 4.4 + + + + + + + + + + + + + + + + + natural gas + 36000.0 + + AFUE + 0.92 + + 1.0 + + + + + central air conditioner + electricity + 24000.0 + single stage + 1.0 + + SEER + 13.0 + + 0.73 + + + + + 68.0 + 78.0 + + + + + + regular velocity + + supply + + CFM25 + 75.0 + to outside + + + + return + + CFM25 + 25.0 + to outside + + + + + supply + 4.0 + attic - unvented + 150.0 + + + + return + 0.0 + attic - unvented + 50.0 + + + + + + + + + electricity + storage water heater + conditioned space + 40.0 + 1.0 + 18767.0 + 0.95 + 125.0 + + + + + + 50.0 + + + + 0.0 + + + + + shower head + true + + + + faucet + false + + + + + + + conditioned space + 1.21 + 380.0 + 0.12 + 1.09 + 27.0 + 6.0 + 3.2 + + + + conditioned space + electricity + 3.73 + true + 150.0 + + + + conditioned space + 307.0 + 12 + 0.12 + 1.09 + 22.32 + 4.0 + + + + conditioned space + 650.0 + + + + conditioned space + electricity + false + + + + false + + + + + + interior + 0.4 + + + + + + + interior + 0.1 + + + + + + + interior + 0.25 + + + + + + + exterior + 0.4 + + + + + + + exterior + 0.1 + + + + + + + exterior + 0.25 + + + + + + + + + TV other + + kWh/year + 620.0 + + + + + other + + kWh/year + 2457.0 + + + 0.855 + 0.045 + + + + +
+
\ No newline at end of file From 18716e8f18e6170ed6d8659aec85cd1f68d7b8b2 Mon Sep 17 00:00:00 2001 From: Joe Robertson Date: Fri, 1 Nov 2024 12:55:34 -0700 Subject: [PATCH 15/33] Few more spots where a string is expected for argument values that can be comma-separated. --- BuildResidentialHPXML/measure.rb | 28 ++++++++++++++-------------- BuildResidentialHPXML/measure.xml | 6 +++--- 2 files changed, 17 insertions(+), 17 deletions(-) diff --git a/BuildResidentialHPXML/measure.rb b/BuildResidentialHPXML/measure.rb index 146786ec3d..c417848458 100644 --- a/BuildResidentialHPXML/measure.rb +++ b/BuildResidentialHPXML/measure.rb @@ -3868,11 +3868,11 @@ def argument_errors(args) errors << 'Did not specify all required heating detailed performance data arguments.' if error if hvac_perf_data_heating_args_initialized.uniq.size == 1 && hvac_perf_data_heating_args_initialized.uniq[0] - heating_data_points_lengths = [args[:hvac_perf_data_heating_outdoor_temperatures].count(','), - args[:hvac_perf_data_heating_min_speed_capacities].count(','), - args[:hvac_perf_data_heating_max_speed_capacities].count(','), - args[:hvac_perf_data_heating_min_speed_cops].count(','), - args[:hvac_perf_data_heating_max_speed_cops].count(',')] + heating_data_points_lengths = ["#{args[:hvac_perf_data_heating_outdoor_temperatures]}".count(','), + "#{args[:hvac_perf_data_heating_min_speed_capacities]}".count(','), + "#{args[:hvac_perf_data_heating_max_speed_capacities]}".count(','), + "#{args[:hvac_perf_data_heating_min_speed_cops]}".count(','), + "#{args[:hvac_perf_data_heating_max_speed_cops]}".count(',')] error = (heating_data_points_lengths.uniq.size != 1) errors << 'One or more detailed heating performance data arguments does not have enough comma-separated elements specified.' if error @@ -3887,11 +3887,11 @@ def argument_errors(args) errors << 'Did not specify all required cooling detailed performance data arguments.' if error if hvac_perf_data_cooling_args_initialized.uniq.size == 1 && hvac_perf_data_cooling_args_initialized.uniq[0] - cooling_data_points_lengths = [args[:hvac_perf_data_cooling_outdoor_temperatures].count(','), - args[:hvac_perf_data_cooling_min_speed_capacities].count(','), - args[:hvac_perf_data_cooling_max_speed_capacities].count(','), - args[:hvac_perf_data_cooling_min_speed_cops].count(','), - args[:hvac_perf_data_cooling_max_speed_cops].count(',')] + cooling_data_points_lengths = ["#{args[:hvac_perf_data_cooling_outdoor_temperatures]}".count(','), + "#{args[:hvac_perf_data_cooling_min_speed_capacities]}".count(','), + "#{args[:hvac_perf_data_cooling_max_speed_capacities]}".count(','), + "#{args[:hvac_perf_data_cooling_min_speed_cops]}".count(','), + "#{args[:hvac_perf_data_cooling_max_speed_cops]}".count(',')] error = (cooling_data_points_lengths.uniq.size != 1) errors << 'One or more detailed cooling performance data arguments does not have enough comma-separated elements specified.' if error @@ -3917,7 +3917,7 @@ def argument_errors(args) emissions_scenario_lengths = [args[:emissions_scenario_names].count(','), args[:emissions_types].count(','), args[:emissions_electricity_units].count(','), - args[:emissions_electricity_values_or_filepaths].count(',')] + "#{args[:emissions_electricity_values_or_filepaths]}".count(',')] emissions_scenario_lengths += [args[:emissions_electricity_number_of_header_rows].count(',')] unless args[:emissions_electricity_number_of_header_rows].nil? emissions_scenario_lengths += [args[:emissions_electricity_column_numbers].count(',')] unless args[:emissions_electricity_column_numbers].nil? @@ -4296,10 +4296,10 @@ def self.set_header(runner, hpxml, args) hpxml.header.software_program_used = args[:software_info_program_used] end if not args[:software_info_program_version].nil? - if (not hpxml.header.software_program_version.nil?) && (hpxml.header.software_program_version != args[:software_info_program_version]) + if (not hpxml.header.software_program_version.nil?) && (hpxml.header.software_program_version != "#{args[:software_info_program_version]}") errors << "'Software Info: Program Version' cannot vary across dwelling units." end - hpxml.header.software_program_version = args[:software_info_program_version] + hpxml.header.software_program_version = "#{args[:software_info_program_version]}" end if not args[:simulation_control_timestep].nil? @@ -4362,7 +4362,7 @@ def self.set_header(runner, hpxml, args) emissions_scenario_names = args[:emissions_scenario_names].split(',').map(&:strip) emissions_types = args[:emissions_types].split(',').map(&:strip) emissions_electricity_units = args[:emissions_electricity_units].split(',').map(&:strip) - emissions_electricity_values_or_filepaths = args[:emissions_electricity_values_or_filepaths].split(',').map(&:strip) + emissions_electricity_values_or_filepaths = "#{args[:emissions_electricity_values_or_filepaths]}".split(',').map(&:strip) if not args[:emissions_electricity_number_of_header_rows].nil? emissions_electricity_number_of_header_rows = args[:emissions_electricity_number_of_header_rows].split(',').map(&:strip) diff --git a/BuildResidentialHPXML/measure.xml b/BuildResidentialHPXML/measure.xml index 4a526fccbe..dd8065b13d 100644 --- a/BuildResidentialHPXML/measure.xml +++ b/BuildResidentialHPXML/measure.xml @@ -3,8 +3,8 @@ 3.1 build_residential_hpxml a13a8983-2b01-4930-8af2-42030b6e4233 - cec297d1-e116-4848-b58a-b8712506cd1c - 2024-11-01T17:38:43Z + 2f5081a6-f6d3-4967-9f1e-eabe1b90d7c4 + 2024-11-01T19:54:32Z 2C38F48B BuildResidentialHPXML HPXML Builder @@ -7512,7 +7512,7 @@ measure.rb rb script - CAF61995 + D18F7B80
constants.rb From 6a64ad1b3a14518e283ae33f20bcb01141ccb66e Mon Sep 17 00:00:00 2001 From: GitHub Action Date: Fri, 1 Nov 2024 20:50:05 +0000 Subject: [PATCH 16/33] Latest results. --- workflow/tests/base_results/results_simulations_bills.csv | 1 + workflow/tests/base_results/results_simulations_energy.csv | 1 + workflow/tests/base_results/results_simulations_hvac.csv | 1 + workflow/tests/base_results/results_simulations_loads.csv | 1 + workflow/tests/base_results/results_simulations_misc.csv | 1 + 5 files changed, 5 insertions(+) diff --git a/workflow/tests/base_results/results_simulations_bills.csv b/workflow/tests/base_results/results_simulations_bills.csv index 11616ae49e..a99d9f231c 100644 --- a/workflow/tests/base_results/results_simulations_bills.csv +++ b/workflow/tests/base_results/results_simulations_bills.csv @@ -19,6 +19,7 @@ base-atticroof-radiant-barrier-ceiling.xml,1602.07,144.0,1246.53,0.0,1390.53,144 base-atticroof-radiant-barrier.xml,1576.53,144.0,1231.15,0.0,1375.15,144.0,57.38,201.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-atticroof-unvented-insulated-roof.xml,1814.44,144.0,1281.56,0.0,1425.56,144.0,244.88,388.88,0.0,0.0,0.0,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-atticroof-vented.xml,1842.15,144.0,1298.13,0.0,1442.13,144.0,256.02,400.02,0.0,0.0,0.0,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-auto.xml,1840.44,144.0,1303.13,0.0,1447.13,144.0,249.31,393.31,0.0,0.0,0.0,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-battery-scheduled-power-outage.xml,1771.6,144.0,1234.07,0.0,1378.07,144.0,249.53,393.53,0.0,0.0,0.0,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-battery-scheduled.xml,1903.58,144.0,1366.27,0.0,1510.27,144.0,249.31,393.31,0.0,0.0,0.0,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-battery.xml,1840.44,144.0,1303.13,0.0,1447.13,144.0,249.31,393.31,0.0,0.0,0.0,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 5b28b4561b..1b93c3c3f0 100644 --- a/workflow/tests/base_results/results_simulations_energy.csv +++ b/workflow/tests/base_results/results_simulations_energy.csv @@ -19,6 +19,7 @@ base-atticroof-radiant-barrier-ceiling.xml,38.571,38.571,33.491,33.491,5.08,0.0, base-atticroof-radiant-barrier.xml,37.394,37.394,33.078,33.078,4.316,0.0,0.0,0.0,0.0,0.0,0.0,0.029,0.0,0.0,9.645,1.592,6.71,0.0,0.0,2.646,0.0,0.238,0.0,0.0,0.0,0.0,2.186,0.0,0.0,0.319,0.365,1.513,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,4.316,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,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-atticroof-unvented-insulated-roof.xml,58.602,58.602,35.208,35.208,23.394,0.0,0.0,0.0,0.0,0.0,0.0,0.58,0.0,0.0,3.91,0.571,9.014,0.0,0.0,4.507,0.0,0.334,0.0,0.0,0.0,0.0,2.068,0.0,0.0,0.319,0.365,1.513,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,23.394,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,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-atticroof-vented.xml,60.12,60.12,35.663,35.663,24.457,0.0,0.0,0.0,0.0,0.0,0.0,0.607,0.0,0.0,4.121,0.611,9.189,0.0,0.0,4.507,0.0,0.334,0.0,0.0,0.0,0.0,2.07,0.0,0.0,0.319,0.365,1.513,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,24.457,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,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-auto.xml,59.617,59.617,35.801,35.801,23.816,0.0,0.0,0.0,0.0,0.0,0.0,0.591,0.0,0.0,4.398,0.662,9.013,0.0,0.0,4.507,0.0,0.334,0.0,0.0,0.0,0.0,2.072,0.0,0.0,0.319,0.365,1.513,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,23.816,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,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-battery-scheduled-power-outage.xml,57.741,57.741,33.903,33.903,23.837,0.0,0.0,0.0,0.0,0.0,0.0,0.591,0.0,0.0,3.406,0.484,8.4,0.0,0.0,4.2,0.0,0.311,0.0,0.0,0.0,0.0,1.882,0.0,0.0,0.292,0.335,1.386,1.401,0.0,1.94,7.686,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,1.587,23.837,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,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-battery-scheduled.xml,61.352,61.352,37.536,37.536,23.816,0.0,0.0,0.0,0.0,0.0,0.0,0.591,0.0,0.0,4.398,0.662,9.013,0.0,0.0,4.507,0.0,0.334,0.0,0.0,0.0,0.0,2.072,0.0,0.0,0.319,0.365,1.513,1.529,0.0,2.116,8.384,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,1.735,23.816,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,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-battery.xml,59.617,59.617,35.801,35.801,23.816,0.0,0.0,0.0,0.0,0.0,0.0,0.591,0.0,0.0,4.398,0.662,9.013,0.0,0.0,4.507,0.0,0.334,0.0,0.0,0.0,0.0,2.072,0.0,0.0,0.319,0.365,1.513,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,23.816,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,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 c5f32a65e7..81181c0f97 100644 --- a/workflow/tests/base_results/results_simulations_hvac.csv +++ b/workflow/tests/base_results/results_simulations_hvac.csv @@ -19,6 +19,7 @@ base-atticroof-radiant-barrier-ceiling.xml,25.88,98.42,24000.0,24000.0,0.0,25447 base-atticroof-radiant-barrier.xml,25.88,98.42,24000.0,24000.0,0.0,25447.0,1422.0,5241.0,0.0,401.0,1535.0,0.0,0.0,8256.0,6846.0,1745.0,0.0,0.0,21691.0,68.0,7674.0,0.0,313.0,686.0,0.0,0.0,0.0,9065.0,565.0,0.0,3320.0,0.0,0.0,1628.0,438.0,391.0,0.0,800.0 base-atticroof-unvented-insulated-roof.xml,6.8,91.76,36000.0,24000.0,0.0,30459.0,4909.0,7508.0,0.0,575.0,6918.0,0.0,0.0,1738.0,4190.0,4620.0,0.0,0.0,19740.0,1908.0,7037.0,0.0,207.0,448.0,0.0,0.0,0.0,6198.0,622.0,0.0,3320.0,0.0,0.0,139.0,0.0,-661.0,0.0,800.0 base-atticroof-vented.xml,6.8,91.76,36000.0,24000.0,0.0,32239.0,8709.0,7508.0,0.0,575.0,6918.0,0.0,0.0,1738.0,2171.0,4620.0,0.0,0.0,16768.0,3872.0,7037.0,0.0,207.0,448.0,0.0,0.0,0.0,1263.0,622.0,0.0,3320.0,0.0,0.0,139.0,0.0,-661.0,0.0,800.0 +base-auto.xml,6.8,91.76,36000.0,24000.0,0.0,32239.0,8709.0,7508.0,0.0,575.0,6918.0,0.0,0.0,1738.0,2171.0,4620.0,0.0,0.0,20039.0,6112.0,7037.0,0.0,207.0,448.0,0.0,0.0,0.0,2293.0,622.0,0.0,3320.0,0.0,0.0,139.0,0.0,-661.0,0.0,800.0 base-battery-scheduled-power-outage.xml,6.8,91.76,36000.0,24000.0,0.0,32239.0,8709.0,7508.0,0.0,575.0,6918.0,0.0,0.0,1738.0,2171.0,4620.0,0.0,0.0,20039.0,6112.0,7037.0,0.0,207.0,448.0,0.0,0.0,0.0,2293.0,622.0,0.0,3320.0,0.0,0.0,139.0,0.0,-661.0,0.0,800.0 base-battery-scheduled.xml,6.8,91.76,36000.0,24000.0,0.0,32239.0,8709.0,7508.0,0.0,575.0,6918.0,0.0,0.0,1738.0,2171.0,4620.0,0.0,0.0,20039.0,6112.0,7037.0,0.0,207.0,448.0,0.0,0.0,0.0,2293.0,622.0,0.0,3320.0,0.0,0.0,139.0,0.0,-661.0,0.0,800.0 base-battery.xml,6.8,91.76,36000.0,24000.0,0.0,32239.0,8709.0,7508.0,0.0,575.0,6918.0,0.0,0.0,1738.0,2171.0,4620.0,0.0,0.0,20039.0,6112.0,7037.0,0.0,207.0,448.0,0.0,0.0,0.0,2293.0,622.0,0.0,3320.0,0.0,0.0,139.0,0.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 ab4a3f8a4f..3f49a11d34 100644 --- a/workflow/tests/base_results/results_simulations_loads.csv +++ b/workflow/tests/base_results/results_simulations_loads.csv @@ -19,6 +19,7 @@ base-atticroof-radiant-barrier-ceiling.xml,4.703,0.0,33.012,6.556,0.582,0.0,0.0, base-atticroof-radiant-barrier.xml,3.995,0.0,31.822,6.556,0.58,0.0,0.0,0.0,5.494,1.437,0.0,0.0,0.31,3.783,-5.118,0.0,0.0,0.0,0.394,-0.396,0.916,0.0,0.341,0.0,0.12,-2.733,-0.658,0.0,1.817,0.025,0.0,0.0,0.185,2.396,17.048,0.0,0.0,0.0,1.703,-0.388,-0.243,-2.191,-0.097,0.0,0.498,9.344,1.987 base-atticroof-unvented-insulated-roof.xml,22.088,0.0,11.602,9.07,0.616,0.0,0.0,0.0,5.962,3.919,0.55,7.488,0.688,10.883,-13.822,0.0,0.0,0.0,8.209,-0.152,5.312,0.0,0.782,0.0,3.295,-8.646,-2.713,0.0,-1.078,-0.097,-0.001,2.903,0.053,-0.355,10.586,0.0,0.0,0.0,-6.064,-0.144,-0.753,-3.638,-0.1,0.0,1.694,6.933,1.794 base-atticroof-vented.xml,23.106,0.0,12.576,9.07,0.804,0.0,0.0,0.0,4.166,3.889,0.546,7.55,0.685,10.788,-13.646,0.0,0.0,0.0,8.365,-0.121,5.571,0.0,0.772,0.0,5.047,-8.169,-2.681,0.0,-0.274,-0.164,-0.011,2.856,0.041,-0.552,10.762,0.0,0.0,0.0,-6.068,-0.117,-0.8,-3.794,-0.112,0.0,2.317,6.795,1.826 +base-auto.xml,22.503,0.0,13.745,9.07,0.615,0.0,0.0,0.0,3.819,3.882,0.545,7.57,0.682,10.76,-13.571,0.0,0.0,0.0,8.363,-0.116,5.259,0.0,0.77,0.0,5.323,-8.475,-2.662,0.0,0.029,-0.188,-0.014,2.827,0.035,-0.632,10.837,0.0,0.0,0.0,-6.138,-0.112,-0.847,-3.884,-0.117,0.0,3.113,7.106,1.845 base-battery-scheduled-power-outage.xml,22.523,0.0,10.137,8.445,0.582,0.0,0.0,0.0,3.818,3.882,0.545,7.57,0.682,10.754,-13.571,0.0,0.0,0.0,8.353,-0.113,5.216,0.0,0.841,0.0,5.327,-8.473,-2.662,0.0,0.009,-0.253,-0.023,2.661,0.018,-0.837,10.839,0.0,0.0,0.0,-6.39,-0.109,-0.914,-4.426,-0.121,0.0,2.268,5.989,1.538 base-battery-scheduled.xml,22.503,0.0,13.745,9.07,0.615,0.0,0.0,0.0,3.819,3.882,0.545,7.57,0.682,10.76,-13.571,0.0,0.0,0.0,8.363,-0.116,5.259,0.0,0.77,0.0,5.323,-8.475,-2.662,0.0,0.029,-0.188,-0.014,2.827,0.035,-0.632,10.837,0.0,0.0,0.0,-6.138,-0.112,-0.847,-3.884,-0.117,0.0,3.113,7.106,1.845 base-battery.xml,22.503,0.0,13.745,9.07,0.615,0.0,0.0,0.0,3.819,3.882,0.545,7.57,0.682,10.76,-13.571,0.0,0.0,0.0,8.363,-0.116,5.259,0.0,0.77,0.0,5.323,-8.475,-2.662,0.0,0.029,-0.188,-0.014,2.827,0.035,-0.632,10.837,0.0,0.0,0.0,-6.138,-0.112,-0.847,-3.884,-0.117,0.0,3.113,7.106,1.845 diff --git a/workflow/tests/base_results/results_simulations_misc.csv b/workflow/tests/base_results/results_simulations_misc.csv index 4c1a8d5467..42d15221a1 100644 --- a/workflow/tests/base_results/results_simulations_misc.csv +++ b/workflow/tests/base_results/results_simulations_misc.csv @@ -19,6 +19,7 @@ base-atticroof-radiant-barrier-ceiling.xml,0.0,0.0,1354.7,998.0,9789.3,2412.1,17 base-atticroof-radiant-barrier.xml,0.0,0.0,1354.7,998.0,9789.2,2412.1,1747.6,3433.3,3433.3,13.691,19.088,0.0 base-atticroof-unvented-insulated-roof.xml,0.0,0.0,1354.7,998.0,11171.6,2563.5,2069.5,3413.5,3413.5,20.537,14.701,0.0 base-atticroof-vented.xml,0.0,0.0,1354.7,998.0,11171.5,2563.5,2083.8,3399.5,3399.5,23.824,16.752,0.0 +base-auto.xml,0.0,0.0,1354.7,998.0,11171.6,2563.5,2082.5,3612.6,3612.6,23.71,18.744,0.0 base-battery-scheduled-power-outage.xml,0.0,5.0,1241.4,914.9,10291.7,2361.6,2088.5,6814.4,6814.4,23.712,21.153,1.337 base-battery-scheduled.xml,0.0,0.0,1354.7,998.0,11171.6,2563.5,2082.5,3612.6,3612.6,23.71,18.744,1.438 base-battery.xml,0.0,0.0,1354.7,998.0,11171.6,2563.5,2082.5,3612.6,3612.6,23.71,18.744,0.0 From 5ac725251ce3a1756f58a304a78d101b1c6f61e2 Mon Sep 17 00:00:00 2001 From: Joe Robertson Date: Fri, 1 Nov 2024 17:34:00 -0700 Subject: [PATCH 17/33] Progress. --- BuildResidentialHPXML/measure.rb | 6409 +++++++++++++++++------------- 1 file changed, 3593 insertions(+), 2816 deletions(-) diff --git a/BuildResidentialHPXML/measure.rb b/BuildResidentialHPXML/measure.rb index c417848458..acd339b5cc 100644 --- a/BuildResidentialHPXML/measure.rb +++ b/BuildResidentialHPXML/measure.rb @@ -164,17 +164,24 @@ def makeArgument(name:, default_href: "HPXML Simulation Control" ) - arg = OpenStudio::Measure::OSArgument::makeStringArgument('simulation_control_run_period', false) - arg.setDisplayName('Simulation Control: Run Period') - arg.setDescription("Enter a date range like 'Jan 1 - Dec 31'. If not provided, the OS-HPXML default (see HPXML Simulation Control) is used.") - args << arg - - arg = OpenStudio::Measure::OSArgument::makeIntegerArgument('simulation_control_run_period_calendar_year', false) - arg.setDisplayName('Simulation Control: Run Period Calendar Year') - arg.setUnits('year') - arg.setDescription("This numeric field should contain the calendar year that determines the start day of week. If you are running simulations using AMY weather files, the value entered for calendar year will not be used; it will be overridden by the actual year found in the AMY weather file. If not provided, the OS-HPXML default (see HPXML Simulation Control) is used.") - args << arg + args << makeArgument( + name: 'simulation_control_run_period', + type: Argument::String, + required: false, + display_name: 'Simulation Control: Run Period', + description: "Enter a date range like 'Jan 1 - Dec 31'. If not provided, the OS-HPXML default (see HPXML Simulation Control) is used." + ) + args << makeArgument( + name: 'simulation_control_run_period_calendar_year', + type: Argument::Integer, + required: false, + display_name: 'Simulation Control: Run Period Calendar Year', + units: 'year', + description: "This numeric field should contain the calendar year that determines the start day of week. If you are running simulations using AMY weather files, the value entered for calendar year will not be used; it will be overridden by the actual year found in the AMY weather file.", + default_href: "HPXML Simulation Control" + ) + args << makeArgument( name: 'simulation_control_daylight_saving_enabled', type: Argument::Boolean, @@ -184,15 +191,23 @@ def makeArgument(name:, default_href: "HPXML Building Site" ) - arg = OpenStudio::Measure::OSArgument::makeStringArgument('simulation_control_daylight_saving_period', false) - arg.setDisplayName('Simulation Control: Daylight Saving Period') - arg.setDescription("Enter a date range like 'Mar 15 - Dec 15'. If not provided, the OS-HPXML default (see HPXML Building Site) is used.") - args << arg - - arg = OpenStudio::Measure::OSArgument::makeStringArgument('simulation_control_temperature_capacitance_multiplier', false) - arg.setDisplayName('Simulation Control: Temperature Capacitance Multiplier') - arg.setDescription("Affects the transient calculation of indoor air temperatures. If not provided, the OS-HPXML default (see HPXML Simulation Control) is used.") - args << arg + args << makeArgument( + name: 'simulation_control_daylight_saving_period', + type: Argument::String, + required: false, + display_name: 'Simulation Control: Daylight Saving Period', + description: "Enter a date range like 'Mar 15 - Dec 15'.", + default_href: "HPXML Building Site" + ) + + args << makeArgument( + name: 'simulation_control_temperature_capacitance_multiplier', + type: Argument::Double, + required: false, + display_name: 'Simulation Control: Temperature Capacitance Multiplier') + description: "Affects the transient calculation of indoor air temperatures.", + default_href: "HPXML Simulation Control" + ) defrost_model_type_choices = OpenStudio::StringVector.new defrost_model_type_choices << HPXML::AdvancedResearchDefrostModelTypeStandard @@ -217,31 +232,44 @@ def makeArgument(name:, units: 'deg-F' ) - arg = OpenStudio::Measure::OSArgument::makeDoubleArgument('simulation_control_heat_pump_backup_heating_capacity_increment', false) - arg.setDisplayName('Simulation Control: Heat Pump Backup Heating Capacity Increment') - arg.setDescription("Research feature to model capacity increment of multi-stage heat pump backup systems with time-based staging. Only applies to air-source heat pumps where Backup Type is '#{HPXML::HeatPumpBackupTypeIntegrated}' and Backup Fuel Type is '#{HPXML::FuelTypeElectricity}'. Currently only supported with 1 min timestep.") - arg.setUnits('Btu/hr') - args << arg - + args << makeArgument( + type: Argument::Double, + name: 'simulation_control_heat_pump_backup_heating_capacity_increment', + required: false, + display_name: 'Simulation Control: Heat Pump Backup Heating Capacity Increment', + description: "Research feature to model capacity increment of multi-stage heat pump backup systems with time-based staging. Only applies to air-source heat pumps where Backup Type is '#{HPXML::HeatPumpBackupTypeIntegrated}' and Backup Fuel Type is '#{HPXML::FuelTypeElectricity}'. Currently only supported with 1 min timestep.", + units: 'Btu/hr' + ) + site_type_choices = OpenStudio::StringVector.new site_type_choices << HPXML::SiteTypeSuburban site_type_choices << HPXML::SiteTypeUrban site_type_choices << HPXML::SiteTypeRural - arg = OpenStudio::Measure::OSArgument::makeChoiceArgument('site_type', site_type_choices, false) - arg.setDisplayName('Site: Type') - arg.setDescription("The type of site. If not provided, the OS-HPXML default (see HPXML Site) is used.") - args << arg - + args << makeArgument( + type: Argument::Choice, + name: 'site_type', + choices: site_type_choices, + required: false, + display_name: 'Site: Type', + description: "The type of site.", + default_href: "HPXML Site" + ) + site_shielding_of_home_choices = OpenStudio::StringVector.new site_shielding_of_home_choices << HPXML::ShieldingExposed site_shielding_of_home_choices << HPXML::ShieldingNormal site_shielding_of_home_choices << HPXML::ShieldingWellShielded - arg = OpenStudio::Measure::OSArgument::makeChoiceArgument('site_shielding_of_home', site_shielding_of_home_choices, false) - arg.setDisplayName('Site: Shielding of Home') - arg.setDescription("Presence of nearby buildings, trees, obstructions for infiltration model. If not provided, the OS-HPXML default (see HPXML Site) is used.") - args << arg + args << makeArgument( + type: Argument::Choice, + name: 'site_shielding_of_home', + choices: site_shielding_of_home_choices, + required: false, + display_name: 'Site: Shielding of Home', + description: "Presence of nearby buildings, trees, obstructions for infiltration model.", + default_href: "HPXML Site" + ) soil_types = [HPXML::SiteSoilTypeClay, HPXML::SiteSoilTypeGravel, @@ -261,53 +289,79 @@ def makeArgument(name:, end end - arg = OpenStudio::Measure::OSArgument::makeChoiceArgument('site_soil_and_moisture_type', site_soil_and_moisture_type_choices, false) - arg.setDisplayName('Site: Soil and Moisture Type') - arg.setDescription("Type of soil and moisture. This is used to inform ground conductivity and diffusivity. If not provided, the OS-HPXML default (see HPXML Site) is used.") - args << arg - - arg = OpenStudio::Measure::OSArgument.makeDoubleArgument('site_ground_conductivity', false) - arg.setDisplayName('Site: Ground Conductivity') - arg.setDescription('Conductivity of the ground soil. If provided, overrides the previous site and moisture type input.') - arg.setUnits('Btu/hr-ft-F') - args << arg - - arg = OpenStudio::Measure::OSArgument.makeDoubleArgument('site_ground_diffusivity', false) - arg.setDisplayName('Site: Ground Diffusivity') - arg.setDescription('Diffusivity of the ground soil. If provided, overrides the previous site and moisture type input.') - arg.setUnits('ft^2/hr') - args << arg + args << makeArgument( + type: Argument::Choice, + name: 'site_soil_and_moisture_type', + choices: site_soil_and_moisture_type_choices, + required: false, + display_name: 'Site: Soil and Moisture Type', + description: "Type of soil and moisture. This is used to inform ground conductivity and diffusivity.", + default_href: "HPXML Site" + ) + args << makeArgument( + type: Argument::Double, + name: 'site_ground_conductivity', + required: false, + display_name: 'Site: Ground Conductivity', + description: 'Conductivity of the ground soil. If provided, overrides the previous site and moisture type input.', + units: 'Btu/hr-ft-F' + ) + + args << makeArgument( + type: Argument::Double, + name: 'site_ground_diffusivity', + required: false, + display_name: 'Site: Ground Diffusivity', + description: 'Diffusivity of the ground soil. If provided, overrides the previous site and moisture type input.', + units: 'ft^2/hr' + ) + site_iecc_zone_choices = OpenStudio::StringVector.new Constants::IECCZones.each do |iz| site_iecc_zone_choices << iz end - arg = OpenStudio::Measure::OSArgument.makeChoiceArgument('site_iecc_zone', site_iecc_zone_choices, false) - arg.setDisplayName('Site: IECC Zone') - arg.setDescription('IECC zone of the home address.') - args << arg - - arg = OpenStudio::Measure::OSArgument.makeStringArgument('site_city', false) - arg.setDisplayName('Site: City') - arg.setDescription('City/municipality of the home address.') - args << arg - + args << makeArgument( + type: Argument::Choice, + name: 'site_iecc_zone', + choices: site_iecc_zone_choices, + required: false, + display_name: 'Site: IECC Zone', + description: 'IECC zone of the home address.' + ) + + args << makeArgument( + type: Argument::String, + name: 'site_city', + required: false, + display_name: 'Site: City', + description: 'City/municipality of the home address.' + ) + site_state_code_choices = OpenStudio::StringVector.new Constants::StateCodesMap.keys.each do |sc| site_state_code_choices << sc end - arg = OpenStudio::Measure::OSArgument.makeChoiceArgument('site_state_code', site_state_code_choices, false) - arg.setDisplayName('Site: State Code') - arg.setDescription("State code of the home address. If not provided, the OS-HPXML default (see HPXML Site) is used.") - args << arg - - arg = OpenStudio::Measure::OSArgument.makeStringArgument('site_zip_code', false) - arg.setDisplayName('Site: Zip Code') - arg.setDescription('Zip code of the home address. Either this or the Weather Station: EnergyPlus Weather (EPW) Filepath input below must be provided.') - args << arg - + args << makeArgument( + type: Argument::Choice, + name: 'site_state_code', + choices: site_state_code_choices, + required: false, + display_name: 'Site: State Code', + description: "State code of the home address.", + default_href: "HPXML Site" + ) + + args << makeArgument( + type: Argument::String, + name: 'site_zip_code', + required: false, + display_name: 'Site: Zip Code', + description: 'Zip code of the home address. Either this or the Weather Station: EnergyPlus Weather (EPW) Filepath input below must be provided.' + ) + args << makeArgument( name: 'site_time_zone_utc_offset', type: Argument::Double, @@ -318,29 +372,44 @@ def makeArgument(name:, default_href: "HPXML Site" ) - arg = OpenStudio::Measure::OSArgument.makeDoubleArgument('site_elevation', false) - arg.setDisplayName('Site: Elevation') - arg.setDescription("Elevation of the home address. If not provided, the OS-HPXML default (see HPXML Site) is used.") - arg.setUnits('ft') - args << arg - - arg = OpenStudio::Measure::OSArgument.makeDoubleArgument('site_latitude', false) - arg.setDisplayName('Site: Latitude') - arg.setDescription("Latitude of the home address. Must be between -90 and 90. Use negative values for southern hemisphere. If not provided, the OS-HPXML default (see HPXML Site) is used.") - arg.setUnits('deg') - args << arg - - arg = OpenStudio::Measure::OSArgument.makeDoubleArgument('site_longitude', false) - arg.setDisplayName('Site: Longitude') - arg.setDescription("Longitude of the home address. Must be between -180 and 180. Use negative values for the western hemisphere. If not provided, the OS-HPXML default (see HPXML Site) is used.") - arg.setUnits('deg') - args << arg - - arg = OpenStudio::Measure::OSArgument.makeStringArgument('weather_station_epw_filepath', false) - arg.setDisplayName('Weather Station: EnergyPlus Weather (EPW) Filepath') - arg.setDescription('Path of the EPW file. Either this or the Site: Zip Code input above must be provided.') - args << arg - + args << makeArgument( + type: Argument::Double, + name: 'site_elevation', + required: false, + display_name: 'Site: Elevation', + description: "Elevation of the home address.", + units: 'ft', + default_href: "HPXML Site" + ) + + args << makeArgument( + type: Argument::Double, + name: 'site_latitude', + required: false, + display_name: 'Site: Latitude', + description: "Latitude of the home address. Must be between -90 and 90. Use negative values for southern hemisphere.", + units: 'deg', + default_href: "HPXML Site" + ) + + args << makeArgument( + type: Argument::Double, + name: 'site_longitude', + required: false, + display_name: 'Site: Longitude', + description: "Longitude of the home address. Must be between -180 and 180. Use negative values for the western hemisphere.", + units: 'deg', + default_href: "HPXML Site" + ) + + args << makeArgument( + type: Argument::String, + name: 'weather_station_epw_filepath', + required: false, + display_name: 'Weather Station: EnergyPlus Weather (EPW) Filepath', + description: 'Path of the EPW file. Either this or the Site: Zip Code input above must be provided.' + ) + args << makeArgument( name: 'year_built', type: Argument::Integer, @@ -355,17 +424,23 @@ def makeArgument(name:, unit_type_choices << HPXML::ResidentialTypeApartment unit_type_choices << HPXML::ResidentialTypeManufactured - arg = OpenStudio::Measure::OSArgument::makeIntegerArgument('unit_multiplier', false) - arg.setDisplayName('Building Construction: Unit Multiplier') - arg.setDescription('The number of similar dwelling units. EnergyPlus simulation results will be multiplied this value. If not provided, defaults to 1.') - args << arg - - arg = OpenStudio::Measure::OSArgument::makeChoiceArgument('geometry_unit_type', unit_type_choices, true) - arg.setDisplayName('Geometry: Unit Type') - arg.setDescription("The type of dwelling unit. Use #{HPXML::ResidentialTypeSFA} for a dwelling unit with 1 or more stories, attached units to one or both sides, and no units above/below. Use #{HPXML::ResidentialTypeApartment} for a dwelling unit with 1 story, attached units to one, two, or three sides, and units above and/or below.") - arg.setDefaultValue(HPXML::ResidentialTypeSFD) - args << arg - + args << makeArgument( + type: Argument::Integer, + name: 'unit_multiplier', + required: false, + display_name: 'Building Construction: Unit Multiplier', + description: 'The number of similar dwelling units. EnergyPlus simulation results will be multiplied this value. If not provided, defaults to 1.' + ) + + args << makeArgument( + type: Argument::Choice, + name: 'geometry_unit_type', + choices: unit_type_choices, + required: true, + display_name: 'Geometry: Unit Type', + description: "The type of dwelling unit. Use #{HPXML::ResidentialTypeSFA} for a dwelling unit with 1 or more stories, attached units to one or both sides, and no units above/below. Use #{HPXML::ResidentialTypeApartment} for a dwelling unit with 1 story, attached units to one, two, or three sides, and units above and/or below." + ) + args << makeArgument( name: 'geometry_unit_left_wall_is_adiabatic', type: Argument::Boolean, @@ -398,102 +473,137 @@ def makeArgument(name:, description: 'Presence of an adiabatic back wall.' ) - arg = OpenStudio::Measure::OSArgument::makeIntegerArgument('geometry_unit_num_floors_above_grade', true) - arg.setDisplayName('Geometry: Unit Number of Floors Above Grade') - arg.setUnits('#') - arg.setDescription("The number of floors above grade in the unit. Attic type #{HPXML::AtticTypeConditioned} is included. Assumed to be 1 for #{HPXML::ResidentialTypeApartment}s.") - arg.setDefaultValue(2) - args << arg - - arg = OpenStudio::Measure::OSArgument::makeDoubleArgument('geometry_unit_cfa', true) - arg.setDisplayName('Geometry: Unit Conditioned Floor Area') - arg.setUnits('ft^2') - arg.setDescription("The total floor area of the unit's conditioned space (including any conditioned basement floor area).") - arg.setDefaultValue(2000.0) - args << arg - - arg = OpenStudio::Measure::OSArgument::makeDoubleArgument('geometry_unit_aspect_ratio', true) - arg.setDisplayName('Geometry: Unit Aspect Ratio') - arg.setUnits('Frac') - arg.setDescription('The ratio of front/back wall length to left/right wall length for the unit, excluding any protruding garage wall area.') - arg.setDefaultValue(2.0) - args << arg - - arg = OpenStudio::Measure::OSArgument::makeDoubleArgument('geometry_unit_orientation', true) - arg.setDisplayName('Geometry: Unit Orientation') - arg.setUnits('degrees') - arg.setDescription("The unit's orientation is measured clockwise from north (e.g., North=0, East=90, South=180, West=270).") - arg.setDefaultValue(180.0) - args << arg - - arg = OpenStudio::Measure::OSArgument::makeIntegerArgument('geometry_unit_num_bedrooms', true) - arg.setDisplayName('Geometry: Unit Number of Bedrooms') - arg.setUnits('#') - arg.setDescription('The number of bedrooms in the unit.') - arg.setDefaultValue(3) - args << arg - - arg = OpenStudio::Measure::OSArgument::makeIntegerArgument('geometry_unit_num_bathrooms', false) - arg.setDisplayName('Geometry: Unit Number of Bathrooms') - arg.setUnits('#') - arg.setDescription("The number of bathrooms in the unit. If not provided, the OS-HPXML default (see HPXML Building Construction) is used.") - args << arg - - arg = OpenStudio::Measure::OSArgument::makeDoubleArgument('geometry_unit_num_occupants', false) - arg.setDisplayName('Geometry: Unit Number of Occupants') - arg.setUnits('#') - arg.setDescription('The number of occupants in the unit. If not provided, an *asset* calculation is performed assuming standard occupancy, in which various end use defaults (e.g., plug loads, appliances, and hot water usage) are calculated based on Number of Bedrooms and Conditioned Floor Area per ANSI/RESNET/ICC 301-2019. If provided, an *operational* calculation is instead performed in which the end use defaults are adjusted using the relationship between Number of Bedrooms and Number of Occupants from RECS 2015.') - args << arg - - arg = OpenStudio::Measure::OSArgument::makeIntegerArgument('geometry_building_num_units', false) - arg.setDisplayName('Geometry: Building Number of Units') - arg.setUnits('#') - arg.setDescription("The number of units in the building. Required for #{HPXML::ResidentialTypeSFA} and #{HPXML::ResidentialTypeApartment}s.") - args << arg - - arg = OpenStudio::Measure::OSArgument::makeDoubleArgument('geometry_average_ceiling_height', true) - arg.setDisplayName('Geometry: Average Ceiling Height') - arg.setUnits('ft') - arg.setDescription('Average distance from the floor to the ceiling.') - arg.setDefaultValue(8.0) - args << arg - - arg = OpenStudio::Measure::OSArgument::makeDoubleArgument('geometry_unit_height_above_grade', false) - arg.setDisplayName('Geometry: Unit Height Above Grade') - arg.setUnits('ft') - arg.setDescription("Describes the above-grade height of apartment units on upper floors or homes above ambient or belly-and-wing foundations. It is defined as the height of the lowest conditioned floor above grade and is used to calculate the wind speed for the infiltration model. If not provided, the OS-HPXML default (see HPXML Building Construction) is used.") - args << arg - - arg = OpenStudio::Measure::OSArgument::makeDoubleArgument('geometry_garage_width', false) - arg.setDisplayName('Geometry: Garage Width') - arg.setUnits('ft') - arg.setDescription("The width of the garage. Only applies to #{HPXML::ResidentialTypeSFD} units. If not provided, defaults to zero (no garage).") - arg.setDefaultValue(0.0) - args << arg - - arg = OpenStudio::Measure::OSArgument::makeDoubleArgument('geometry_garage_depth', false) - arg.setDisplayName('Geometry: Garage Depth') - arg.setUnits('ft') - arg.setDescription("The depth of the garage. Only applies to #{HPXML::ResidentialTypeSFD} units.") - arg.setDefaultValue(20.0) - args << arg - - arg = OpenStudio::Measure::OSArgument::makeDoubleArgument('geometry_garage_protrusion', false) - arg.setDisplayName('Geometry: Garage Protrusion') - arg.setUnits('Frac') - arg.setDescription("The fraction of the garage that is protruding from the conditioned space. Only applies to #{HPXML::ResidentialTypeSFD} units.") - arg.setDefaultValue(0.0) - args << arg + args << makeArgument( + type: Argument::Integer, + name: 'geometry_unit_num_floors_above_grade', + required: true, + display_name: 'Geometry: Unit Number of Floors Above Grade', + units: '#', + description: "The number of floors above grade in the unit. Attic type #{HPXML::AtticTypeConditioned} is included. Assumed to be 1 for #{HPXML::ResidentialTypeApartment}s." + ) + + args << makeArgument( + type: Argument::Double, + name: 'geometry_unit_cfa', + required: true, + display_name: 'Geometry: Unit Conditioned Floor Area', + units: 'ft^2', + description: "The total floor area of the unit's conditioned space (including any conditioned basement floor area)." + ) + + args << makeArgument( + type: Argument::Double, + name: 'geometry_unit_aspect_ratio', + required: true, + display_name: 'Geometry: Unit Aspect Ratio', + units: 'Frac', + description: 'The ratio of front/back wall length to left/right wall length for the unit, excluding any protruding garage wall area.' + ) + + args << makeArgument( + type: Argument::Double, + name: 'geometry_unit_orientation', + required: true, + display_name: 'Geometry: Unit Orientation', + units: 'degrees', + description: "The unit's orientation is measured clockwise from north (e.g., North=0, East=90, South=180, West=270)." + ) + + args << makeArgument( + type: Argument::Integer, + name: 'geometry_unit_num_bedrooms', + required: true, + display_name: 'Geometry: Unit Number of Bedrooms', + units: '#', + description: 'The number of bedrooms in the unit.' + ) + + args << makeArgument( + type: Argument::Integer, + name: 'geometry_unit_num_bathrooms', + required: false, + display_name: 'Geometry: Unit Number of Bathrooms', + units: '#', + description: "The number of bathrooms in the unit.", + default_href: "HPXML Building Construction" + ) + + args << makeArgument( + type: Argument::Double, + name: 'geometry_unit_num_occupants', + required: false, + display_name: 'Geometry: Unit Number of Occupants', + units: '#', + description: 'The number of occupants in the unit. If not provided, an *asset* calculation is performed assuming standard occupancy, in which various end use defaults (e.g., plug loads, appliances, and hot water usage) are calculated based on Number of Bedrooms and Conditioned Floor Area per ANSI/RESNET/ICC 301-2019. If provided, an *operational* calculation is instead performed in which the end use defaults are adjusted using the relationship between Number of Bedrooms and Number of Occupants from RECS 2015.' + ) + + args << makeArgument( + type: Argument::Integer, + name: 'geometry_building_num_units', + required: false, + display_name: 'Geometry: Building Number of Units', + units: '#', + description: "The number of units in the building. Required for #{HPXML::ResidentialTypeSFA} and #{HPXML::ResidentialTypeApartment}s." + ) + + args << makeArgument( + type: Argument::Double, + name: 'geometry_average_ceiling_height', + required: true, + display_name: 'Geometry: Average Ceiling Height', + units: 'ft', + description: 'Average distance from the floor to the ceiling.' + ) + + args << makeArgument( + type: Argument::Double, + name: 'geometry_unit_height_above_grade', + required: false, + display_name: 'Geometry: Unit Height Above Grade', + units: 'ft', + description: "Describes the above-grade height of apartment units on upper floors or homes above ambient or belly-and-wing foundations. It is defined as the height of the lowest conditioned floor above grade and is used to calculate the wind speed for the infiltration model.", + default_href: "HPXML Building Construction" + ) + + args << makeArgument( + type: Argument::Double, + name: 'geometry_garage_width', + required: false, + display_name: 'Geometry: Garage Width', + units: 'ft', + description: "The width of the garage. Only applies to #{HPXML::ResidentialTypeSFD} units. If not provided, defaults to zero (no garage)." + ) + + args << makeArgument( + type: Argument::Double, + name: 'geometry_garage_depth', + required: false, + display_name: 'Geometry: Garage Depth', + units: 'ft', + description: "The depth of the garage. Only applies to #{HPXML::ResidentialTypeSFD} units." + ) + + args << makeArgument( + type: Argument::Double, + name: 'geometry_garage_protrusion', + required: false, + display_name: 'Geometry: Garage Protrusion', + units: 'Frac', + description: "The fraction of the garage that is protruding from the conditioned space. Only applies to #{HPXML::ResidentialTypeSFD} units." + ) garage_position_choices = OpenStudio::StringVector.new garage_position_choices << Constants::PositionRight garage_position_choices << Constants::PositionLeft - arg = OpenStudio::Measure::OSArgument::makeChoiceArgument('geometry_garage_position', garage_position_choices, false) - arg.setDisplayName('Geometry: Garage Position') - arg.setDescription("The position of the garage. Only applies to #{HPXML::ResidentialTypeSFD} units.") - arg.setDefaultValue(Constants::PositionRight) - args << arg + args << makeArgument( + type: Argument::Choice, + name: 'geometry_garage_position', + choices: garage_position_choices, + required: false, + display_name: 'Geometry: Garage Position', + description: "The position of the garage. Only applies to #{HPXML::ResidentialTypeSFD} units." + ) foundation_type_choices = OpenStudio::StringVector.new foundation_type_choices << HPXML::FoundationTypeSlab @@ -507,32 +617,42 @@ def makeArgument(name:, foundation_type_choices << "#{HPXML::FoundationTypeBellyAndWing}WithSkirt" foundation_type_choices << "#{HPXML::FoundationTypeBellyAndWing}NoSkirt" - arg = OpenStudio::Measure::OSArgument::makeChoiceArgument('geometry_foundation_type', foundation_type_choices, true) - arg.setDisplayName('Geometry: Foundation Type') - arg.setDescription("The foundation type of the building. Foundation types #{HPXML::FoundationTypeBasementConditioned} and #{HPXML::FoundationTypeCrawlspaceConditioned} are not allowed for #{HPXML::ResidentialTypeApartment}s.") - arg.setDefaultValue(HPXML::FoundationTypeSlab) - args << arg - - arg = OpenStudio::Measure::OSArgument::makeDoubleArgument('geometry_foundation_height', false) - arg.setDisplayName('Geometry: Foundation Height') - arg.setUnits('ft') - arg.setDescription('The height of the foundation (e.g., 3ft for crawlspace, 8ft for basement). Only applies to basements/crawlspaces.') - arg.setDefaultValue(0.0) - args << arg - - arg = OpenStudio::Measure::OSArgument::makeDoubleArgument('geometry_foundation_height_above_grade', false) - arg.setDisplayName('Geometry: Foundation Height Above Grade') - arg.setUnits('ft') - arg.setDescription('The depth above grade of the foundation wall. Only applies to basements/crawlspaces.') - arg.setDefaultValue(0.0) - args << arg - - arg = OpenStudio::Measure::OSArgument::makeDoubleArgument('geometry_rim_joist_height', false) - arg.setDisplayName('Geometry: Rim Joist Height') - arg.setUnits('in') - arg.setDescription('The height of the rim joists. Only applies to basements/crawlspaces.') - args << arg - + args << makeArgument( + type: Argument::Choice, + name: 'geometry_foundation_type', + choices: foundation_type_choices, + required: true, + display_name: 'Geometry: Foundation Type', + description: "The foundation type of the building. Foundation types #{HPXML::FoundationTypeBasementConditioned} and #{HPXML::FoundationTypeCrawlspaceConditioned} are not allowed for #{HPXML::ResidentialTypeApartment}s." + ) + + args << makeArgument( + type: Argument::Double, + name: 'geometry_foundation_height', + required: false, + display_name: 'Geometry: Foundation Height', + units: 'ft', + description: 'The height of the foundation (e.g., 3ft for crawlspace, 8ft for basement). Only applies to basements/crawlspaces.' + ) + + args << makeArgument( + type: Argument::Double, + name: 'geometry_foundation_height_above_grade', + required: false, + display_name: 'Geometry: Foundation Height Above Grade', + units: 'ft', + description: 'The depth above grade of the foundation wall. Only applies to basements/crawlspaces.' + ) + + args << makeArgument( + type: Argument::Double, + name: 'geometry_rim_joist_height', + required: false, + display_name: 'Geometry: Rim Joist Height', + units: 'in', + description: 'The height of the rim joists. Only applies to basements/crawlspaces.' + ) + attic_type_choices = OpenStudio::StringVector.new attic_type_choices << HPXML::AtticTypeFlatRoof attic_type_choices << HPXML::AtticTypeVented @@ -540,21 +660,27 @@ def makeArgument(name:, attic_type_choices << HPXML::AtticTypeConditioned attic_type_choices << HPXML::AtticTypeBelowApartment # I.e., adiabatic - arg = OpenStudio::Measure::OSArgument::makeChoiceArgument('geometry_attic_type', attic_type_choices, true) - arg.setDisplayName('Geometry: Attic Type') - arg.setDescription("The attic type of the building. Attic type #{HPXML::AtticTypeConditioned} is not allowed for #{HPXML::ResidentialTypeApartment}s.") - arg.setDefaultValue(HPXML::AtticTypeVented) - args << arg + args << makeArgument( + type: Argument::Choice, + name: 'geometry_attic_type', + choices: attic_type_choices, + required: true, + display_name: 'Geometry: Attic Type', + description: "The attic type of the building. Attic type #{HPXML::AtticTypeConditioned} is not allowed for #{HPXML::ResidentialTypeApartment}s." + ) roof_type_choices = OpenStudio::StringVector.new roof_type_choices << Constants::RoofTypeGable roof_type_choices << Constants::RoofTypeHip - arg = OpenStudio::Measure::OSArgument::makeChoiceArgument('geometry_roof_type', roof_type_choices, false) - arg.setDisplayName('Geometry: Roof Type') - arg.setDescription('The roof type of the building. Ignored if the building has a flat roof.') - arg.setDefaultValue(Constants::RoofTypeGable) - args << arg + args << makeArgument( + type: Argument::Choice, + name: 'geometry_roof_type', + choices: roof_type_choices, + required: false, + display_name: 'Geometry: Roof Type', + description: 'The roof type of the building. Ignored if the building has a flat roof.' + ) roof_pitch_choices = OpenStudio::StringVector.new roof_pitch_choices << '1:12' @@ -570,84 +696,117 @@ def makeArgument(name:, roof_pitch_choices << '11:12' roof_pitch_choices << '12:12' - arg = OpenStudio::Measure::OSArgument::makeChoiceArgument('geometry_roof_pitch', roof_pitch_choices, false) - arg.setDisplayName('Geometry: Roof Pitch') - arg.setDescription('The roof pitch of the attic. Ignored if the building has a flat roof.') - arg.setDefaultValue('6:12') - args << arg - - arg = OpenStudio::Measure::OSArgument::makeDoubleArgument('geometry_eaves_depth', false) - arg.setDisplayName('Geometry: Eaves Depth') - arg.setUnits('ft') - arg.setDescription('The eaves depth of the roof.') - arg.setDefaultValue(2.0) - args << arg - - arg = OpenStudio::Measure::OSArgument::makeDoubleArgument('neighbor_front_distance', false) - arg.setDisplayName('Neighbor: Front Distance') - arg.setUnits('ft') - arg.setDescription('The distance between the unit and the neighboring building to the front (not including eaves). A value of zero indicates no neighbors. Used for shading.') - arg.setDefaultValue(0.0) - args << arg - - arg = OpenStudio::Measure::OSArgument::makeDoubleArgument('neighbor_back_distance', false) - arg.setDisplayName('Neighbor: Back Distance') - arg.setUnits('ft') - arg.setDescription('The distance between the unit and the neighboring building to the back (not including eaves). A value of zero indicates no neighbors. Used for shading.') - arg.setDefaultValue(0.0) - args << arg - - arg = OpenStudio::Measure::OSArgument::makeDoubleArgument('neighbor_left_distance', false) - arg.setDisplayName('Neighbor: Left Distance') - arg.setUnits('ft') - arg.setDescription('The distance between the unit and the neighboring building to the left (not including eaves). A value of zero indicates no neighbors. Used for shading.') - arg.setDefaultValue(10.0) - args << arg - - arg = OpenStudio::Measure::OSArgument::makeDoubleArgument('neighbor_right_distance', false) - arg.setDisplayName('Neighbor: Right Distance') - arg.setUnits('ft') - arg.setDescription('The distance between the unit and the neighboring building to the right (not including eaves). A value of zero indicates no neighbors. Used for shading.') - arg.setDefaultValue(10.0) - args << arg - - arg = OpenStudio::Measure::OSArgument::makeDoubleArgument('neighbor_front_height', false) - arg.setDisplayName('Neighbor: Front Height') - arg.setUnits('ft') - arg.setDescription("The height of the neighboring building to the front. If not provided, the OS-HPXML default (see HPXML Neighbor Building) is used.") - args << arg - - arg = OpenStudio::Measure::OSArgument::makeDoubleArgument('neighbor_back_height', false) - arg.setDisplayName('Neighbor: Back Height') - arg.setUnits('ft') - arg.setDescription("The height of the neighboring building to the back. If not provided, the OS-HPXML default (see HPXML Neighbor Building) is used.") - args << arg - - arg = OpenStudio::Measure::OSArgument::makeDoubleArgument('neighbor_left_height', false) - arg.setDisplayName('Neighbor: Left Height') - arg.setUnits('ft') - arg.setDescription("The height of the neighboring building to the left. If not provided, the OS-HPXML default (see HPXML Neighbor Building) is used.") - args << arg - - arg = OpenStudio::Measure::OSArgument::makeDoubleArgument('neighbor_right_height', false) - arg.setDisplayName('Neighbor: Right Height') - arg.setUnits('ft') - arg.setDescription("The height of the neighboring building to the right. If not provided, the OS-HPXML default (see HPXML Neighbor Building) is used.") - args << arg - - arg = OpenStudio::Measure::OSArgument::makeDoubleArgument('floor_over_foundation_assembly_r', false) - arg.setDisplayName('Floor: Over Foundation Assembly R-value') - arg.setUnits('h-ft^2-R/Btu') - arg.setDescription('Assembly R-value for the floor over the foundation. Ignored if the building has a slab-on-grade foundation.') - arg.setDefaultValue(28.1) - args << arg - - arg = OpenStudio::Measure::OSArgument::makeDoubleArgument('floor_over_garage_assembly_r', false) - arg.setDisplayName('Floor: Over Garage Assembly R-value') - arg.setUnits('h-ft^2-R/Btu') - arg.setDescription('Assembly R-value for the floor over the garage. Ignored unless the building has a garage under conditioned space.') - arg.setDefaultValue(28.1) - args << arg + args << makeArgument( + type: Argument::Choice, + name: 'geometry_roof_pitch', + choices: roof_pitch_choices, + required: false, + display_name: 'Geometry: Roof Pitch', + description: 'The roof pitch of the attic. Ignored if the building has a flat roof.' + ) + + args << makeArgument( + type: Argument::Double, + name: 'geometry_eaves_depth', + required: false, + display_name: 'Geometry: Eaves Depth', + units: 'ft', + description: 'The eaves depth of the roof.' + ) + + args << makeArgument( + type: Argument::Double, + name: 'neighbor_front_distance', + required: false, + display_name: 'Neighbor: Front Distance', + units: 'ft', + description: 'The distance between the unit and the neighboring building to the front (not including eaves). A value of zero indicates no neighbors. Used for shading.' + ) + + args << makeArgument( + type: Argument::Double, + name: 'neighbor_back_distance', + required: false, + display_name: 'Neighbor: Back Distance', + units: 'ft', + description: 'The distance between the unit and the neighboring building to the back (not including eaves). A value of zero indicates no neighbors. Used for shading.' + ) + + args << makeArgument( + type: Argument::Double, + name: 'neighbor_left_distance', + required: false, + display_name: 'Neighbor: Left Distance', + units: 'ft', + description: 'The distance between the unit and the neighboring building to the left (not including eaves). A value of zero indicates no neighbors. Used for shading.' + ) + + args << makeArgument( + type: Argument::Double, + name: 'neighbor_right_distance', + required: false, + display_name: 'Neighbor: Right Distance', + units: 'ft', + description: 'The distance between the unit and the neighboring building to the right (not including eaves). A value of zero indicates no neighbors. Used for shading.' + ) + + args << makeArgument( + type: Argument::Double, + name: 'neighbor_front_height', + required: false, + display_name: 'Neighbor: Front Height', + units: 'ft', + description: "The height of the neighboring building to the front.", + default_href: "HPXML Neighbor Building" + ) + + args << makeArgument( + type: Argument::Double, + name: 'neighbor_back_height', + required: false, + display_name: 'Neighbor: Back Height', + units: 'ft', + description: "The height of the neighboring building to the back.", + default_href: "HPXML Neighbor Building" + ) + + args << makeArgument( + type: Argument::Double, + name: 'neighbor_left_height', + required: false, + display_name: 'Neighbor: Left Height', + units: 'ft', + description: "The height of the neighboring building to the left.", + default_href: "HPXML Neighbor Building" + ) + + args << makeArgument( + type: Argument::Double, + name: 'neighbor_right_height', + required: false, + display_name: 'Neighbor: Right Height', + units: 'ft', + description: "The height of the neighboring building to the right.", + default_href: "HPXML Neighbor Building" + ) + + args << makeArgument( + type: Argument::Double, + name: 'floor_over_foundation_assembly_r', + required: false, + display_name: 'Floor: Over Foundation Assembly R-value', + units: 'h-ft^2-R/Btu', + description: 'Assembly R-value for the floor over the foundation. Ignored if the building has a slab-on-grade foundation.' + ) + + args << makeArgument( + type: Argument::Double, + name: 'floor_over_garage_assembly_r', + required: false, + display_name: 'Floor: Over Garage Assembly R-value', + units: 'h-ft^2-R/Btu', + description: 'Assembly R-value for the floor over the garage. Ignored unless the building has a garage under conditioned space.' + ) floor_type_choices = OpenStudio::StringVector.new floor_type_choices << HPXML::FloorTypeWoodFrame @@ -655,11 +814,14 @@ def makeArgument(name:, floor_type_choices << HPXML::FloorTypeConcrete floor_type_choices << HPXML::FloorTypeSteelFrame - arg = OpenStudio::Measure::OSArgument::makeChoiceArgument('floor_type', floor_type_choices, true) - arg.setDisplayName('Floor: Type') - arg.setDescription('The type of floors.') - arg.setDefaultValue(HPXML::FloorTypeWoodFrame) - args << arg + args << makeArgument( + type: Argument::Choice, + name: 'floor_type', + choices: floor_type_choices, + required: true, + display_name: 'Floor: Type', + description: 'The type of floors.' + ) foundation_wall_type_choices = OpenStudio::StringVector.new foundation_wall_type_choices << HPXML::FoundationWallTypeSolidConcrete @@ -671,146 +833,209 @@ def makeArgument(name:, foundation_wall_type_choices << HPXML::FoundationWallTypeDoubleBrick foundation_wall_type_choices << HPXML::FoundationWallTypeWood - arg = OpenStudio::Measure::OSArgument::makeChoiceArgument('foundation_wall_type', foundation_wall_type_choices, false) - arg.setDisplayName('Foundation Wall: Type') - arg.setDescription("The material type of the foundation wall. If not provided, the OS-HPXML default (see HPXML Foundation Walls) is used.") - args << arg - - arg = OpenStudio::Measure::OSArgument::makeDoubleArgument('foundation_wall_thickness', false) - arg.setDisplayName('Foundation Wall: Thickness') - arg.setUnits('in') - arg.setDescription("The thickness of the foundation wall. If not provided, the OS-HPXML default (see HPXML Foundation Walls) is used.") - args << arg - - arg = OpenStudio::Measure::OSArgument::makeDoubleArgument('foundation_wall_insulation_r', false) - arg.setDisplayName('Foundation Wall: Insulation Nominal R-value') - arg.setUnits('h-ft^2-R/Btu') - arg.setDescription('Nominal R-value for the foundation wall insulation. Only applies to basements/crawlspaces.') - arg.setDefaultValue(0) - args << arg + args << makeArgument( + type: Argument::Choice, + name: 'foundation_wall_type', + choices: foundation_wall_type_choices, + required: false, + display_name: 'Foundation Wall: Type', + description: "The material type of the foundation wall.", + default_href: "HPXML Foundation Walls" + ) + + args << makeArgument( + type: Argument::Double, + name: 'foundation_wall_thickness', + required: false, + display_name: 'Foundation Wall: Thickness') + units: 'in') + description: "The thickness of the foundation wall.", + default_href: "HPXML Foundation Walls" + ) + + args << makeArgument( + type: Argument::Double, + name: 'foundation_wall_insulation_r', + required: false, + display_name: 'Foundation Wall: Insulation Nominal R-value', + units: 'h-ft^2-R/Btu', + description: 'Nominal R-value for the foundation wall insulation. Only applies to basements/crawlspaces.' + ) wall_ins_location_choices = OpenStudio::StringVector.new wall_ins_location_choices << Constants::LocationInterior wall_ins_location_choices << Constants::LocationExterior - arg = OpenStudio::Measure::OSArgument::makeChoiceArgument('foundation_wall_insulation_location', wall_ins_location_choices, false) - arg.setDisplayName('Foundation Wall: Insulation Location') - arg.setUnits('ft') - arg.setDescription('Whether the insulation is on the interior or exterior of the foundation wall. Only applies to basements/crawlspaces.') - arg.setDefaultValue(Constants::LocationExterior) - args << arg - - arg = OpenStudio::Measure::OSArgument::makeDoubleArgument('foundation_wall_insulation_distance_to_top', false) - arg.setDisplayName('Foundation Wall: Insulation Distance To Top') - arg.setUnits('ft') - arg.setDescription("The distance from the top of the foundation wall to the top of the foundation wall insulation. Only applies to basements/crawlspaces. If not provided, the OS-HPXML default (see HPXML Foundation Walls) is used.") - args << arg - - arg = OpenStudio::Measure::OSArgument::makeDoubleArgument('foundation_wall_insulation_distance_to_bottom', false) - arg.setDisplayName('Foundation Wall: Insulation Distance To Bottom') - arg.setUnits('ft') - arg.setDescription("The distance from the top of the foundation wall to the bottom of the foundation wall insulation. Only applies to basements/crawlspaces. If not provided, the OS-HPXML default (see HPXML Foundation Walls) is used.") - args << arg - - arg = OpenStudio::Measure::OSArgument::makeDoubleArgument('foundation_wall_assembly_r', false) - arg.setDisplayName('Foundation Wall: Assembly R-value') - arg.setUnits('h-ft^2-R/Btu') - arg.setDescription('Assembly R-value for the foundation walls. Only applies to basements/crawlspaces. If provided, overrides the previous foundation wall insulation inputs. If not provided, it is ignored.') - args << arg - - arg = OpenStudio::Measure::OSArgument::makeDoubleArgument('rim_joist_assembly_r', false) - arg.setDisplayName('Rim Joist: Assembly R-value') - arg.setUnits('h-ft^2-R/Btu') - arg.setDescription('Assembly R-value for the rim joists. Only applies to basements/crawlspaces. Required if a rim joist height is provided.') - args << arg - - arg = OpenStudio::Measure::OSArgument::makeDoubleArgument('slab_perimeter_insulation_r', false) - arg.setDisplayName('Slab: Perimeter Insulation Nominal R-value') - arg.setUnits('h-ft^2-R/Btu') - arg.setDescription('Nominal R-value of the vertical slab perimeter insulation. Applies to slab-on-grade foundations and basement/crawlspace floors.') - arg.setDefaultValue(0) - args << arg - - arg = OpenStudio::Measure::OSArgument::makeDoubleArgument('slab_perimeter_insulation_depth', false) - arg.setDisplayName('Slab: Perimeter Insulation Depth') - arg.setUnits('ft') - arg.setDescription('Depth from grade to bottom of vertical slab perimeter insulation. Applies to slab-on-grade foundations and basement/crawlspace floors.') - arg.setDefaultValue(0) - args << arg - - arg = OpenStudio::Measure::OSArgument::makeDoubleArgument('slab_exterior_horizontal_insulation_r', false) - arg.setDisplayName('Slab: Exterior Horizontal Insulation Nominal R-value') - arg.setUnits('h-ft^2-R/Btu') - arg.setDescription('Nominal R-value of the slab exterior horizontal insulation. Applies to slab-on-grade foundations and basement/crawlspace floors.') - args << arg - - arg = OpenStudio::Measure::OSArgument::makeDoubleArgument('slab_exterior_horizontal_insulation_width', false) - arg.setDisplayName('Slab: Exterior Horizontal Insulation Width') - arg.setUnits('ft') - arg.setDescription('Width of the slab exterior horizontal insulation measured from the exterior surface of the vertical slab perimeter insulation. Applies to slab-on-grade foundations and basement/crawlspace floors.') - args << arg - - arg = OpenStudio::Measure::OSArgument::makeDoubleArgument('slab_exterior_horizontal_insulation_depth_below_grade', false) - arg.setDisplayName('Slab: Exterior Horizontal Insulation Depth Below Grade') - arg.setUnits('ft') - arg.setDescription('Depth of the slab exterior horizontal insulation measured from the top surface of the slab exterior horizontal insulation. Applies to slab-on-grade foundations and basement/crawlspace floors.') - args << arg - - arg = OpenStudio::Measure::OSArgument::makeDoubleArgument('slab_under_insulation_r', false) - arg.setDisplayName('Slab: Under Slab Insulation Nominal R-value') - arg.setUnits('h-ft^2-R/Btu') - arg.setDescription('Nominal R-value of the horizontal under slab insulation. Applies to slab-on-grade foundations and basement/crawlspace floors.') - arg.setDefaultValue(0) - args << arg - - arg = OpenStudio::Measure::OSArgument::makeDoubleArgument('slab_under_insulation_width', false) - arg.setDisplayName('Slab: Under Slab Insulation Width') - arg.setUnits('ft') - arg.setDescription('Width from slab edge inward of horizontal under-slab insulation. Enter 999 to specify that the under slab insulation spans the entire slab. Applies to slab-on-grade foundations and basement/crawlspace floors.') - arg.setDefaultValue(0) - args << arg - - arg = OpenStudio::Measure::OSArgument::makeDoubleArgument('slab_thickness', false) - arg.setDisplayName('Slab: Thickness') - arg.setUnits('in') - arg.setDescription("The thickness of the slab. Zero can be entered if there is a dirt floor instead of a slab. If not provided, the OS-HPXML default (see HPXML Slabs) is used.") - args << arg - - arg = OpenStudio::Measure::OSArgument::makeDoubleArgument('slab_carpet_fraction', false) - arg.setDisplayName('Slab: Carpet Fraction') - arg.setUnits('Frac') - arg.setDescription("Fraction of the slab floor area that is carpeted. If not provided, the OS-HPXML default (see HPXML Slabs) is used.") - args << arg - - arg = OpenStudio::Measure::OSArgument::makeDoubleArgument('slab_carpet_r', false) - arg.setDisplayName('Slab: Carpet R-value') - arg.setUnits('h-ft^2-R/Btu') - arg.setDescription("R-value of the slab carpet. If not provided, the OS-HPXML default (see HPXML Slabs) is used.") - args << arg - - arg = OpenStudio::Measure::OSArgument::makeDoubleArgument('ceiling_assembly_r', false) - arg.setDisplayName('Ceiling: Assembly R-value') - arg.setUnits('h-ft^2-R/Btu') - arg.setDescription('Assembly R-value for the ceiling (attic floor).') - arg.setDefaultValue(31.6) - args << arg - - roof_material_type_choices = OpenStudio::StringVector.new - roof_material_type_choices << HPXML::RoofTypeAsphaltShingles - roof_material_type_choices << HPXML::RoofTypeConcrete - roof_material_type_choices << HPXML::RoofTypeCool - roof_material_type_choices << HPXML::RoofTypeClayTile - roof_material_type_choices << HPXML::RoofTypeEPS - roof_material_type_choices << HPXML::RoofTypeMetal - roof_material_type_choices << HPXML::RoofTypePlasticRubber - roof_material_type_choices << HPXML::RoofTypeShingles - roof_material_type_choices << HPXML::RoofTypeWoodShingles + args << makeArgument( + type: Argument::Choice, + name: 'foundation_wall_insulation_location', + choices: wall_ins_location_choices, + required: false, + display_name: 'Foundation Wall: Insulation Location', + units: 'ft', + description: 'Whether the insulation is on the interior or exterior of the foundation wall. Only applies to basements/crawlspaces.' + ) + + args << makeArgument( + type: Argument::Double, + name: 'foundation_wall_insulation_distance_to_top', + required: false, + display_name: 'Foundation Wall: Insulation Distance To Top', + units: 'ft', + description: "The distance from the top of the foundation wall to the top of the foundation wall insulation. Only applies to basements/crawlspaces.", + default_href: "HPXML Foundation Walls" + ) + + args << makeArgument( + type: Argument::Double, + name: 'foundation_wall_insulation_distance_to_bottom', + required: false, + display_name: 'Foundation Wall: Insulation Distance To Bottom', + units: 'ft', + description: "The distance from the top of the foundation wall to the bottom of the foundation wall insulation. Only applies to basements/crawlspaces.", + default_href: "HPXML Foundation Walls" + ) + + args << makeArgument( + type: Argument::Double, + name: 'foundation_wall_assembly_r', + required: false, + display_name: 'Foundation Wall: Assembly R-value', + units: 'h-ft^2-R/Btu', + description: 'Assembly R-value for the foundation walls. Only applies to basements/crawlspaces. If provided, overrides the previous foundation wall insulation inputs. If not provided, it is ignored.' + ) + + args << makeArgument( + type: Argument::Double, + name: 'rim_joist_assembly_r', + required: false, + display_name: 'Rim Joist: Assembly R-value', + units: 'h-ft^2-R/Btu', + description: 'Assembly R-value for the rim joists. Only applies to basements/crawlspaces. Required if a rim joist height is provided.' + ) + + args << makeArgument( + type: Argument::Double, + name: 'slab_perimeter_insulation_r', + required: false, + display_name: 'Slab: Perimeter Insulation Nominal R-value', + units: 'h-ft^2-R/Btu', + description: 'Nominal R-value of the vertical slab perimeter insulation. Applies to slab-on-grade foundations and basement/crawlspace floors.' + ) + + args << makeArgument( + type: Argument::Double, + name: 'slab_perimeter_insulation_depth', + required: false, + display_name: 'Slab: Perimeter Insulation Depth', + units: 'ft', + description: 'Depth from grade to bottom of vertical slab perimeter insulation. Applies to slab-on-grade foundations and basement/crawlspace floors.' + ) + + args << makeArgument( + type: Argument::Double, + name: 'slab_exterior_horizontal_insulation_r', + required: false, + display_name: 'Slab: Exterior Horizontal Insulation Nominal R-value', + units: 'h-ft^2-R/Btu', + description: 'Nominal R-value of the slab exterior horizontal insulation. Applies to slab-on-grade foundations and basement/crawlspace floors.' + ) + + args << makeArgument( + type: Argument::Double, + name: 'slab_exterior_horizontal_insulation_width', + required: false, + display_name: 'Slab: Exterior Horizontal Insulation Width', + units: 'ft', + description: 'Width of the slab exterior horizontal insulation measured from the exterior surface of the vertical slab perimeter insulation. Applies to slab-on-grade foundations and basement/crawlspace floors.' + ) + + args << makeArgument( + type: Argument::Double, + name: 'slab_exterior_horizontal_insulation_depth_below_grade', + required: false, + display_name: 'Slab: Exterior Horizontal Insulation Depth Below Grade', + units: 'ft') + description: 'Depth of the slab exterior horizontal insulation measured from the top surface of the slab exterior horizontal insulation. Applies to slab-on-grade foundations and basement/crawlspace floors.') + + args << makeArgument( + type: Argument::Double, + name: 'slab_under_insulation_r' + required: false, + display_name: 'Slab: Under Slab Insulation Nominal R-value') + units: 'h-ft^2-R/Btu', + description: 'Nominal R-value of the horizontal under slab insulation. Applies to slab-on-grade foundations and basement/crawlspace floors.' + ) + + args << makeArgument( + type: Argument::Double, + name: 'slab_under_insulation_width', + required: false, + display_name: 'Slab: Under Slab Insulation Width', + units: 'ft', + description: 'Width from slab edge inward of horizontal under-slab insulation. Enter 999 to specify that the under slab insulation spans the entire slab. Applies to slab-on-grade foundations and basement/crawlspace floors.' + ) + + args << makeArgument( + type: Argument::Double, + name: 'slab_thickness', + required: false, + display_name: 'Slab: Thickness', + units: 'in', + description: "The thickness of the slab. Zero can be entered if there is a dirt floor instead of a slab.", + default_href: "HPXML Slabs" + ) + + args << makeArgument( + type: Argument::Double, + name: 'slab_carpet_fraction', + required: false, + display_name: 'Slab: Carpet Fraction', + units: 'Frac', + description: "Fraction of the slab floor area that is carpeted.", + default_href: "HPXML Slabs" + ) + + args << makeArgument( + type: Argument::Double, + name: 'slab_carpet_r', + required: false, + display_name: 'Slab: Carpet R-value', + units: 'h-ft^2-R/Btu', + description: "R-value of the slab carpet.", + default_href: "HPXML Slabs" + ) + + args << makeArgument( + type: Argument::Double, + name: 'ceiling_assembly_r', + required: false, + display_name: 'Ceiling: Assembly R-value', + units: 'h-ft^2-R/Btu', + description: 'Assembly R-value for the ceiling (attic floor).' + ) - arg = OpenStudio::Measure::OSArgument::makeChoiceArgument('roof_material_type', roof_material_type_choices, false) - arg.setDisplayName('Roof: Material Type') - arg.setDescription("The material type of the roof. If not provided, the OS-HPXML default (see HPXML Roofs) is used.") - args << arg + roof_material_type_choices = OpenStudio::StringVector.new + roof_material_type_choices << HPXML::RoofTypeAsphaltShingles + roof_material_type_choices << HPXML::RoofTypeConcrete + roof_material_type_choices << HPXML::RoofTypeCool + roof_material_type_choices << HPXML::RoofTypeClayTile + roof_material_type_choices << HPXML::RoofTypeEPS + roof_material_type_choices << HPXML::RoofTypeMetal + roof_material_type_choices << HPXML::RoofTypePlasticRubber + roof_material_type_choices << HPXML::RoofTypeShingles + roof_material_type_choices << HPXML::RoofTypeWoodShingles + args << makeArgument( + type: Argument::Choice, + name: 'roof_material_type', + choices: roof_material_type_choices, + required: false, + display_name: 'Roof: Material Type', + description: "The material type of the roof.", + default_href: "HPXML Roofs" + ) + color_choices = OpenStudio::StringVector.new color_choices << HPXML::ColorDark color_choices << HPXML::ColorLight @@ -818,17 +1043,24 @@ def makeArgument(name:, color_choices << HPXML::ColorMediumDark color_choices << HPXML::ColorReflective - arg = OpenStudio::Measure::OSArgument::makeChoiceArgument('roof_color', color_choices, false) - arg.setDisplayName('Roof: Color') - arg.setDescription("The color of the roof. If not provided, the OS-HPXML default (see HPXML Roofs) is used.") - args << arg - - arg = OpenStudio::Measure::OSArgument::makeDoubleArgument('roof_assembly_r', false) - arg.setDisplayName('Roof: Assembly R-value') - arg.setUnits('h-ft^2-R/Btu') - arg.setDescription('Assembly R-value of the roof.') - arg.setDefaultValue(2.3) - args << arg + args << makeArgument( + type: Argument::Choice, + name: 'roof_color', + choices: color_choices, + required: false, + display_name: 'Roof: Color', + description: "The color of the roof.", + default_href: "HPXML Roofs" + ) + + args << makeArgument( + type: Argument::Double, + name: 'roof_assembly_r', + required: false, + display_name: 'Roof: Assembly R-value', + units: 'h-ft^2-R/Btu', + description: 'Assembly R-value of the roof.' + ) radiant_barrier_attic_location_choices = OpenStudio::StringVector.new radiant_barrier_attic_location_choices << Constants::None @@ -836,21 +1068,23 @@ def makeArgument(name:, radiant_barrier_attic_location_choices << HPXML::RadiantBarrierLocationAtticRoofAndGableWalls radiant_barrier_attic_location_choices << HPXML::RadiantBarrierLocationAtticFloor - arg = OpenStudio::Measure::OSArgument::makeChoiceArgument('radiant_barrier_attic_location', radiant_barrier_attic_location_choices, false) - arg.setDisplayName('Attic: Radiant Barrier Location') - arg.setDescription('The location of the radiant barrier in the attic.') - args << arg - + args << makeArgument( + type: Argument::Choice, + name: 'radiant_barrier_attic_location', radiant_barrier_attic_location_choices, false) + display_name: 'Attic: Radiant Barrier Location') + description: 'The location of the radiant barrier in the attic.') + radiant_barrier_grade_choices = OpenStudio::StringVector.new radiant_barrier_grade_choices << '1' radiant_barrier_grade_choices << '2' radiant_barrier_grade_choices << '3' - arg = OpenStudio::Measure::OSArgument::makeChoiceArgument('radiant_barrier_grade', radiant_barrier_grade_choices, false) - arg.setDisplayName('Attic: Radiant Barrier Grade') - arg.setDescription("The grade of the radiant barrier in the attic. If not provided, the OS-HPXML default (see HPXML Roofs) is used.") - args << arg - + args << makeArgument( + type: Argument::Choice, + name: 'radiant_barrier_grade', radiant_barrier_grade_choices, false) + display_name: 'Attic: Radiant Barrier Grade') + description: "The grade of the radiant barrier in the attic. If not provided, the OS-HPXML default (see HPXML Roofs) is used.") + wall_type_choices = OpenStudio::StringVector.new wall_type_choices << HPXML::WallTypeWoodStud wall_type_choices << HPXML::WallTypeCMU @@ -864,11 +1098,11 @@ def makeArgument(name:, wall_type_choices << HPXML::WallTypeStrawBale wall_type_choices << HPXML::WallTypeBrick - arg = OpenStudio::Measure::OSArgument::makeChoiceArgument('wall_type', wall_type_choices, true) - arg.setDisplayName('Wall: Type') - arg.setDescription('The type of walls.') - arg.setDefaultValue(HPXML::WallTypeWoodStud) - args << arg + args << makeArgument( + type: Argument::Choice, + name: 'wall_type', wall_type_choices, true) + display_name: 'Wall: Type') + description: 'The type of walls.') wall_siding_type_choices = OpenStudio::StringVector.new wall_siding_type_choices << HPXML::SidingTypeAluminum @@ -883,83 +1117,89 @@ def makeArgument(name:, wall_siding_type_choices << HPXML::SidingTypeVinyl wall_siding_type_choices << HPXML::SidingTypeWood - arg = OpenStudio::Measure::OSArgument::makeChoiceArgument('wall_siding_type', wall_siding_type_choices, false) - arg.setDisplayName('Wall: Siding Type') - arg.setDescription("The siding type of the walls. Also applies to rim joists. If not provided, the OS-HPXML default (see HPXML Walls) is used.") - args << arg - - arg = OpenStudio::Measure::OSArgument::makeChoiceArgument('wall_color', color_choices, false) - arg.setDisplayName('Wall: Color') - arg.setDescription("The color of the walls. Also applies to rim joists. If not provided, the OS-HPXML default (see HPXML Walls) is used.") - args << arg - - arg = OpenStudio::Measure::OSArgument::makeDoubleArgument('wall_assembly_r', true) - arg.setDisplayName('Wall: Assembly R-value') - arg.setUnits('h-ft^2-R/Btu') - arg.setDescription('Assembly R-value of the walls.') - arg.setDefaultValue(11.9) - args << arg - - arg = OpenStudio::Measure::OSArgument::makeDoubleArgument('window_area_front', true) - arg.setDisplayName('Windows: Front Window Area') - arg.setUnits('ft^2') - arg.setDescription("The amount of window area on the unit's front facade. A value less than 1 will be treated as a window-to-wall ratio. If the front wall is adiabatic, the value will be ignored.") - arg.setDefaultValue(0) - args << arg - - arg = OpenStudio::Measure::OSArgument::makeDoubleArgument('window_area_back', true) - arg.setDisplayName('Windows: Back Window Area') - arg.setUnits('ft^2') - arg.setDescription("The amount of window area on the unit's back facade. A value less than 1 will be treated as a window-to-wall ratio. If the back wall is adiabatic, the value will be ignored.") - arg.setDefaultValue(0) - args << arg - - arg = OpenStudio::Measure::OSArgument::makeDoubleArgument('window_area_left', true) - arg.setDisplayName('Windows: Left Window Area') - arg.setUnits('ft^2') - arg.setDescription("The amount of window area on the unit's left facade (when viewed from the front). A value less than 1 will be treated as a window-to-wall ratio. If the left wall is adiabatic, the value will be ignored.") - arg.setDefaultValue(0) - args << arg - - arg = OpenStudio::Measure::OSArgument::makeDoubleArgument('window_area_right', true) - arg.setDisplayName('Windows: Right Window Area') - arg.setUnits('ft^2') - arg.setDescription("The amount of window area on the unit's right facade (when viewed from the front). A value less than 1 will be treated as a window-to-wall ratio. If the right wall is adiabatic, the value will be ignored.") - arg.setDefaultValue(0) - args << arg - - arg = OpenStudio::Measure::OSArgument::makeDoubleArgument('window_aspect_ratio', true) - arg.setDisplayName('Windows: Aspect Ratio') - arg.setUnits('Frac') - arg.setDescription('Ratio of window height to width.') - arg.setDefaultValue(1.333) - args << arg - - arg = OpenStudio::Measure::OSArgument::makeDoubleArgument('window_ufactor', true) - arg.setDisplayName('Windows: U-Factor') - arg.setUnits('Btu/hr-ft^2-R') - arg.setDescription('Full-assembly NFRC U-factor.') - arg.setDefaultValue(0.37) - args << arg - - arg = OpenStudio::Measure::OSArgument::makeDoubleArgument('window_shgc', true) - arg.setDisplayName('Windows: SHGC') - arg.setDescription('Full-assembly NFRC solar heat gain coefficient.') - arg.setDefaultValue(0.3) - args << arg - - arg = OpenStudio::Measure::OSArgument::makeDoubleArgument('window_fraction_operable', false) - arg.setDisplayName('Windows: Fraction Operable') - arg.setUnits('Frac') - arg.setDescription("Fraction of windows that are operable. If not provided, the OS-HPXML default (see HPXML Windows) is used.") - args << arg - - arg = OpenStudio::Measure::OSArgument::makeIntegerArgument('window_natvent_availability', false) - arg.setDisplayName('Windows: Natural Ventilation Availability') - arg.setUnits('Days/week') - arg.setDescription("For operable windows, the number of days/week that windows can be opened by occupants for natural ventilation. If not provided, the OS-HPXML default (see HPXML Windows) is used.") - args << arg - + args << makeArgument( + type: Argument::Choice, + name: 'wall_siding_type', wall_siding_type_choices, false) + display_name: 'Wall: Siding Type') + description: "The siding type of the walls. Also applies to rim joists. If not provided, the OS-HPXML default (see HPXML Walls) is used.") + + args << makeArgument( + type: Argument::Choice, + name: 'wall_color', color_choices, false) + display_name: 'Wall: Color') + description: "The color of the walls. Also applies to rim joists. If not provided, the OS-HPXML default (see HPXML Walls) is used.") + + args << makeArgument( + type: Argument::Double, + name: 'wall_assembly_r', true) + display_name: 'Wall: Assembly R-value') + units: 'h-ft^2-R/Btu') + description: 'Assembly R-value of the walls.') + + args << makeArgument( + type: Argument::Double, + name: 'window_area_front', true) + display_name: 'Windows: Front Window Area') + units: 'ft^2') + description: "The amount of window area on the unit's front facade. A value less than 1 will be treated as a window-to-wall ratio. If the front wall is adiabatic, the value will be ignored.") + + args << makeArgument( + type: Argument::Double, + name: 'window_area_back', true) + display_name: 'Windows: Back Window Area') + units: 'ft^2') + description: "The amount of window area on the unit's back facade. A value less than 1 will be treated as a window-to-wall ratio. If the back wall is adiabatic, the value will be ignored.") + + args << makeArgument( + type: Argument::Double, + name: 'window_area_left', true) + display_name: 'Windows: Left Window Area') + units: 'ft^2') + description: "The amount of window area on the unit's left facade (when viewed from the front). A value less than 1 will be treated as a window-to-wall ratio. If the left wall is adiabatic, the value will be ignored.") + + args << makeArgument( + type: Argument::Double, + name: 'window_area_right', true) + display_name: 'Windows: Right Window Area') + units: 'ft^2') + description: "The amount of window area on the unit's right facade (when viewed from the front). A value less than 1 will be treated as a window-to-wall ratio. If the right wall is adiabatic, the value will be ignored.") + + args << makeArgument( + type: Argument::Double, + name: 'window_aspect_ratio', true) + display_name: 'Windows: Aspect Ratio') + units: 'Frac') + description: 'Ratio of window height to width.') + + args << makeArgument( + type: Argument::Double, + name: 'window_ufactor', true) + display_name: 'Windows: U-Factor') + units: 'Btu/hr-ft^2-R') + description: 'Full-assembly NFRC U-factor.') + + args << makeArgument( + type: Argument::Double, + name: 'window_shgc', true) + display_name: 'Windows: SHGC') + description: 'Full-assembly NFRC solar heat gain coefficient.') + + args << makeArgument( + type: Argument::Double, + name: 'window_fraction_operable' + required: false, + display_name: 'Windows: Fraction Operable') + units: 'Frac') + description: "Fraction of windows that are operable. If not provided, the OS-HPXML default (see HPXML Windows) is used.") + + args << makeArgument( + type: Argument::Integer, + name: 'window_natvent_availability' + required: false, + display_name: 'Windows: Natural Ventilation Availability') + units: 'Days/week') + description: "For operable windows, the number of days/week that windows can be opened by occupants for natural ventilation. If not provided, the OS-HPXML default (see HPXML Windows) is used.") + window_interior_shading_type_choices = OpenStudio::StringVector.new window_interior_shading_type_choices << HPXML::InteriorShadingTypeLightCurtains window_interior_shading_type_choices << HPXML::InteriorShadingTypeLightShades @@ -973,23 +1213,28 @@ def makeArgument(name:, window_interior_shading_type_choices << HPXML::InteriorShadingTypeNone # Not adding inputs for other because that can be anything - arg = OpenStudio::Measure::OSArgument::makeChoiceArgument('window_interior_shading_type', window_interior_shading_type_choices, false) - arg.setDisplayName('Windows: Interior Shading Type') - arg.setDescription("Type of window interior shading. Summer/winter shading coefficients can be provided below instead. If neither is provided, the OS-HPXML default (see HPXML Interior Shading) is used.") - args << arg - - arg = OpenStudio::Measure::OSArgument::makeDoubleArgument('window_interior_shading_winter', false) - arg.setDisplayName('Windows: Winter Interior Shading Coefficient') - arg.setUnits('Frac') - arg.setDescription("Interior shading coefficient for the winter season, which if provided overrides the shading type input. 1.0 indicates no reduction in solar gain, 0.85 indicates 15% reduction, etc. If not provided, the OS-HPXML default (see HPXML Interior Shading) is used.") - args << arg - - arg = OpenStudio::Measure::OSArgument::makeDoubleArgument('window_interior_shading_summer', false) - arg.setDisplayName('Windows: Summer Interior Shading Coefficient') - arg.setUnits('Frac') - arg.setDescription("Interior shading coefficient for the summer season, which if provided overrides the shading type input. 1.0 indicates no reduction in solar gain, 0.85 indicates 15% reduction, etc. If not provided, the OS-HPXML default (see HPXML Interior Shading) is used.") - args << arg - + args << makeArgument( + type: Argument::Choice, + name: 'window_interior_shading_type', window_interior_shading_type_choices, false) + display_name: 'Windows: Interior Shading Type') + description: "Type of window interior shading. Summer/winter shading coefficients can be provided below instead. If neither is provided, the OS-HPXML default (see HPXML Interior Shading) is used.") + + args << makeArgument( + type: Argument::Double, + name: 'window_interior_shading_winter' + required: false, + display_name: 'Windows: Winter Interior Shading Coefficient') + units: 'Frac') + description: "Interior shading coefficient for the winter season, which if provided overrides the shading type input. 1.0 indicates no reduction in solar gain, 0.85 indicates 15% reduction, etc. If not provided, the OS-HPXML default (see HPXML Interior Shading) is used.") + + args << makeArgument( + type: Argument::Double, + name: 'window_interior_shading_summer' + required: false, + display_name: 'Windows: Summer Interior Shading Coefficient') + units: 'Frac') + description: "Interior shading coefficient for the summer season, which if provided overrides the shading type input. 1.0 indicates no reduction in solar gain, 0.85 indicates 15% reduction, etc. If not provided, the OS-HPXML default (see HPXML Interior Shading) is used.") + window_exterior_shading_type_choices = OpenStudio::StringVector.new window_exterior_shading_type_choices << HPXML::ExteriorShadingTypeSolarFilm window_exterior_shading_type_choices << HPXML::ExteriorShadingTypeSolarScreens @@ -998,191 +1243,219 @@ def makeArgument(name:, # Not adding inputs for overhangs/neighbors because there are other inputs to describe those (and in more detail) # Not adding inputs for other because that can be anything - arg = OpenStudio::Measure::OSArgument::makeChoiceArgument('window_exterior_shading_type', window_exterior_shading_type_choices, false) - arg.setDisplayName('Windows: Exterior Shading Type') - arg.setDescription("Type of window exterior shading. Summer/winter shading coefficients can be provided below instead. If neither is provided, the OS-HPXML default (see HPXML Exterior Shading) is used.") - args << arg - - arg = OpenStudio::Measure::OSArgument::makeDoubleArgument('window_exterior_shading_winter', false) - arg.setDisplayName('Windows: Winter Exterior Shading Coefficient') - arg.setUnits('Frac') - arg.setDescription("Exterior shading coefficient for the winter season, which if provided overrides the shading type input. 1.0 indicates no reduction in solar gain, 0.85 indicates 15% reduction, etc. If not provided, the OS-HPXML default (see HPXML Exterior Shading) is used.") - args << arg - - arg = OpenStudio::Measure::OSArgument::makeDoubleArgument('window_exterior_shading_summer', false) - arg.setDisplayName('Windows: Summer Exterior Shading Coefficient') - arg.setUnits('Frac') - arg.setDescription("Exterior shading coefficient for the summer season, which if provided overrides the shading type input. 1.0 indicates no reduction in solar gain, 0.85 indicates 15% reduction, etc. If not provided, the OS-HPXML default (see HPXML Exterior Shading) is used.") - args << arg - - arg = OpenStudio::Measure::OSArgument::makeStringArgument('window_shading_summer_season', false) - arg.setDisplayName('Windows: Shading Summer Season') - arg.setDescription("Enter a date range like 'May 1 - Sep 30'. Defines the summer season for purposes of shading coefficients; the rest of the year is assumed to be winter. If not provided, the OS-HPXML default (see HPXML Windows) is used.") - args << arg - + args << makeArgument( + type: Argument::Choice, + name: 'window_exterior_shading_type', window_exterior_shading_type_choices, false) + display_name: 'Windows: Exterior Shading Type') + description: "Type of window exterior shading. Summer/winter shading coefficients can be provided below instead. If neither is provided, the OS-HPXML default (see HPXML Exterior Shading) is used.") + + args << makeArgument( + type: Argument::Double, + name: 'window_exterior_shading_winter' + required: false, + display_name: 'Windows: Winter Exterior Shading Coefficient') + units: 'Frac') + description: "Exterior shading coefficient for the winter season, which if provided overrides the shading type input. 1.0 indicates no reduction in solar gain, 0.85 indicates 15% reduction, etc. If not provided, the OS-HPXML default (see HPXML Exterior Shading) is used.") + + args << makeArgument( + type: Argument::Double, + name: 'window_exterior_shading_summer' + required: false, + display_name: 'Windows: Summer Exterior Shading Coefficient') + units: 'Frac') + description: "Exterior shading coefficient for the summer season, which if provided overrides the shading type input. 1.0 indicates no reduction in solar gain, 0.85 indicates 15% reduction, etc. If not provided, the OS-HPXML default (see HPXML Exterior Shading) is used.") + + args << makeArgument( + type: Argument::String, + name: 'window_shading_summer_season' + required: false, + display_name: 'Windows: Shading Summer Season') + description: "Enter a date range like 'May 1 - Sep 30'. Defines the summer season for purposes of shading coefficients; the rest of the year is assumed to be winter. If not provided, the OS-HPXML default (see HPXML Windows) is used.") + window_insect_screen_choices = OpenStudio::StringVector.new window_insect_screen_choices << Constants::None window_insect_screen_choices << HPXML::LocationExterior window_insect_screen_choices << HPXML::LocationInterior - arg = OpenStudio::Measure::OSArgument::makeChoiceArgument('window_insect_screens', window_insect_screen_choices, false) - arg.setDisplayName('Windows: Insect Screens') - arg.setDescription('The type of insect screens, if present. If not provided, assumes there are no insect screens.') - args << arg - + args << makeArgument( + type: Argument::Choice, + name: 'window_insect_screens', window_insect_screen_choices, false) + display_name: 'Windows: Insect Screens') + description: 'The type of insect screens, if present. If not provided, assumes there are no insect screens.') + storm_window_type_choices = OpenStudio::StringVector.new storm_window_type_choices << HPXML::WindowGlassTypeClear storm_window_type_choices << HPXML::WindowGlassTypeLowE - arg = OpenStudio::Measure::OSArgument::makeChoiceArgument('window_storm_type', storm_window_type_choices, false) - arg.setDisplayName('Windows: Storm Type') - arg.setDescription('The type of storm, if present. If not provided, assumes there is no storm.') - args << arg - - arg = OpenStudio::Measure::OSArgument::makeDoubleArgument('overhangs_front_depth', false) - arg.setDisplayName('Overhangs: Front Depth') - arg.setUnits('ft') - arg.setDescription('The depth of overhangs for windows for the front facade.') - arg.setDefaultValue(0) - args << arg - - arg = OpenStudio::Measure::OSArgument::makeDoubleArgument('overhangs_front_distance_to_top_of_window', false) - arg.setDisplayName('Overhangs: Front Distance to Top of Window') - arg.setUnits('ft') - arg.setDescription('The overhangs distance to the top of window for the front facade.') - arg.setDefaultValue(1) - args << arg - - arg = OpenStudio::Measure::OSArgument::makeDoubleArgument('overhangs_front_distance_to_bottom_of_window', false) - arg.setDisplayName('Overhangs: Front Distance to Bottom of Window') - arg.setUnits('ft') - arg.setDescription('The overhangs distance to the bottom of window for the front facade.') - arg.setDefaultValue(5) - args << arg - - arg = OpenStudio::Measure::OSArgument::makeDoubleArgument('overhangs_back_depth', false) - arg.setDisplayName('Overhangs: Back Depth') - arg.setUnits('ft') - arg.setDescription('The depth of overhangs for windows for the back facade.') - arg.setDefaultValue(0) - args << arg - - arg = OpenStudio::Measure::OSArgument::makeDoubleArgument('overhangs_back_distance_to_top_of_window', false) - arg.setDisplayName('Overhangs: Back Distance to Top of Window') - arg.setUnits('ft') - arg.setDescription('The overhangs distance to the top of window for the back facade.') - arg.setDefaultValue(1) - args << arg - - arg = OpenStudio::Measure::OSArgument::makeDoubleArgument('overhangs_back_distance_to_bottom_of_window', false) - arg.setDisplayName('Overhangs: Back Distance to Bottom of Window') - arg.setUnits('ft') - arg.setDescription('The overhangs distance to the bottom of window for the back facade.') - arg.setDefaultValue(5) - args << arg - - arg = OpenStudio::Measure::OSArgument::makeDoubleArgument('overhangs_left_depth', false) - arg.setDisplayName('Overhangs: Left Depth') - arg.setUnits('ft') - arg.setDescription('The depth of overhangs for windows for the left facade.') - arg.setDefaultValue(0) - args << arg - - arg = OpenStudio::Measure::OSArgument::makeDoubleArgument('overhangs_left_distance_to_top_of_window', false) - arg.setDisplayName('Overhangs: Left Distance to Top of Window') - arg.setUnits('ft') - arg.setDescription('The overhangs distance to the top of window for the left facade.') - arg.setDefaultValue(1) - args << arg - - arg = OpenStudio::Measure::OSArgument::makeDoubleArgument('overhangs_left_distance_to_bottom_of_window', false) - arg.setDisplayName('Overhangs: Left Distance to Bottom of Window') - arg.setUnits('ft') - arg.setDescription('The overhangs distance to the bottom of window for the left facade.') - arg.setDefaultValue(5) - args << arg - - arg = OpenStudio::Measure::OSArgument::makeDoubleArgument('overhangs_right_depth', false) - arg.setDisplayName('Overhangs: Right Depth') - arg.setUnits('ft') - arg.setDescription('The depth of overhangs for windows for the right facade.') - arg.setDefaultValue(0) - args << arg - - arg = OpenStudio::Measure::OSArgument::makeDoubleArgument('overhangs_right_distance_to_top_of_window', false) - arg.setDisplayName('Overhangs: Right Distance to Top of Window') - arg.setUnits('ft') - arg.setDescription('The overhangs distance to the top of window for the right facade.') - arg.setDefaultValue(1) - args << arg - - arg = OpenStudio::Measure::OSArgument::makeDoubleArgument('overhangs_right_distance_to_bottom_of_window', false) - arg.setDisplayName('Overhangs: Right Distance to Bottom of Window') - arg.setUnits('ft') - arg.setDescription('The overhangs distance to the bottom of window for the right facade.') - arg.setDefaultValue(5) - args << arg - - arg = OpenStudio::Measure::OSArgument::makeDoubleArgument('skylight_area_front', false) - arg.setDisplayName('Skylights: Front Roof Area') - arg.setUnits('ft^2') - arg.setDescription("The amount of skylight area on the unit's front conditioned roof facade.") - arg.setDefaultValue(0) - args << arg - - arg = OpenStudio::Measure::OSArgument::makeDoubleArgument('skylight_area_back', false) - arg.setDisplayName('Skylights: Back Roof Area') - arg.setUnits('ft^2') - arg.setDescription("The amount of skylight area on the unit's back conditioned roof facade.") - arg.setDefaultValue(0) - args << arg - - arg = OpenStudio::Measure::OSArgument::makeDoubleArgument('skylight_area_left', false) - arg.setDisplayName('Skylights: Left Roof Area') - arg.setUnits('ft^2') - arg.setDescription("The amount of skylight area on the unit's left conditioned roof facade (when viewed from the front).") - arg.setDefaultValue(0) - args << arg - - arg = OpenStudio::Measure::OSArgument::makeDoubleArgument('skylight_area_right', false) - arg.setDisplayName('Skylights: Right Roof Area') - arg.setUnits('ft^2') - arg.setDescription("The amount of skylight area on the unit's right conditioned roof facade (when viewed from the front).") - arg.setDefaultValue(0) - args << arg - - arg = OpenStudio::Measure::OSArgument::makeDoubleArgument('skylight_ufactor', false) - arg.setDisplayName('Skylights: U-Factor') - arg.setUnits('Btu/hr-ft^2-R') - arg.setDescription('Full-assembly NFRC U-factor.') - arg.setDefaultValue(0.33) - args << arg - - skylight_shgc = OpenStudio::Measure::OSArgument::makeDoubleArgument('skylight_shgc', false) - skylight_shgc.setDisplayName('Skylights: SHGC') - skylight_shgc.setDescription('Full-assembly NFRC solar heat gain coefficient.') - skylight_shgc.setDefaultValue(0.45) - args << skylight_shgc - - arg = OpenStudio::Measure::OSArgument::makeChoiceArgument('skylight_storm_type', storm_window_type_choices, false) - arg.setDisplayName('Skylights: Storm Type') - arg.setDescription('The type of storm, if present. If not provided, assumes there is no storm.') - args << arg - - arg = OpenStudio::Measure::OSArgument::makeDoubleArgument('door_area', true) - arg.setDisplayName('Doors: Area') - arg.setUnits('ft^2') - arg.setDescription('The area of the opaque door(s).') - arg.setDefaultValue(20.0) - args << arg - - arg = OpenStudio::Measure::OSArgument::makeDoubleArgument('door_rvalue', true) - arg.setDisplayName('Doors: R-value') - arg.setUnits('h-ft^2-R/Btu') - arg.setDescription('R-value of the opaque door(s).') - arg.setDefaultValue(4.4) - args << arg - + args << makeArgument( + type: Argument::Choice, + name: 'window_storm_type', storm_window_type_choices, false) + display_name: 'Windows: Storm Type') + description: 'The type of storm, if present. If not provided, assumes there is no storm.') + + args << makeArgument( + type: Argument::Double, + name: 'overhangs_front_depth' + required: false, + display_name: 'Overhangs: Front Depth') + units: 'ft') + description: 'The depth of overhangs for windows for the front facade.') + + args << makeArgument( + type: Argument::Double, + name: 'overhangs_front_distance_to_top_of_window' + required: false, + display_name: 'Overhangs: Front Distance to Top of Window') + units: 'ft') + description: 'The overhangs distance to the top of window for the front facade.') + + args << makeArgument( + type: Argument::Double, + name: 'overhangs_front_distance_to_bottom_of_window' + required: false, + display_name: 'Overhangs: Front Distance to Bottom of Window') + units: 'ft') + description: 'The overhangs distance to the bottom of window for the front facade.') + + args << makeArgument( + type: Argument::Double, + name: 'overhangs_back_depth' + required: false, + display_name: 'Overhangs: Back Depth') + units: 'ft') + description: 'The depth of overhangs for windows for the back facade.') + + args << makeArgument( + type: Argument::Double, + name: 'overhangs_back_distance_to_top_of_window' + required: false, + display_name: 'Overhangs: Back Distance to Top of Window') + units: 'ft') + description: 'The overhangs distance to the top of window for the back facade.') + + args << makeArgument( + type: Argument::Double, + name: 'overhangs_back_distance_to_bottom_of_window' + required: false, + display_name: 'Overhangs: Back Distance to Bottom of Window') + units: 'ft') + description: 'The overhangs distance to the bottom of window for the back facade.') + + args << makeArgument( + type: Argument::Double, + name: 'overhangs_left_depth' + required: false, + display_name: 'Overhangs: Left Depth') + units: 'ft') + description: 'The depth of overhangs for windows for the left facade.') + + args << makeArgument( + type: Argument::Double, + name: 'overhangs_left_distance_to_top_of_window' + required: false, + display_name: 'Overhangs: Left Distance to Top of Window') + units: 'ft') + description: 'The overhangs distance to the top of window for the left facade.') + + args << makeArgument( + type: Argument::Double, + name: 'overhangs_left_distance_to_bottom_of_window' + required: false, + display_name: 'Overhangs: Left Distance to Bottom of Window') + units: 'ft') + description: 'The overhangs distance to the bottom of window for the left facade.') + + args << makeArgument( + type: Argument::Double, + name: 'overhangs_right_depth' + required: false, + display_name: 'Overhangs: Right Depth') + units: 'ft') + description: 'The depth of overhangs for windows for the right facade.') + + args << makeArgument( + type: Argument::Double, + name: 'overhangs_right_distance_to_top_of_window' + required: false, + display_name: 'Overhangs: Right Distance to Top of Window') + units: 'ft') + description: 'The overhangs distance to the top of window for the right facade.') + + args << makeArgument( + type: Argument::Double, + name: 'overhangs_right_distance_to_bottom_of_window' + required: false, + display_name: 'Overhangs: Right Distance to Bottom of Window') + units: 'ft') + description: 'The overhangs distance to the bottom of window for the right facade.') + + args << makeArgument( + type: Argument::Double, + name: 'skylight_area_front' + required: false, + display_name: 'Skylights: Front Roof Area') + units: 'ft^2') + description: "The amount of skylight area on the unit's front conditioned roof facade.") + + args << makeArgument( + type: Argument::Double, + name: 'skylight_area_back' + required: false, + display_name: 'Skylights: Back Roof Area') + units: 'ft^2') + description: "The amount of skylight area on the unit's back conditioned roof facade.") + + args << makeArgument( + type: Argument::Double, + name: 'skylight_area_left' + required: false, + display_name: 'Skylights: Left Roof Area') + units: 'ft^2') + description: "The amount of skylight area on the unit's left conditioned roof facade (when viewed from the front).") + + args << makeArgument( + type: Argument::Double, + name: 'skylight_area_right' + required: false, + display_name: 'Skylights: Right Roof Area') + units: 'ft^2') + description: "The amount of skylight area on the unit's right conditioned roof facade (when viewed from the front).") + + args << makeArgument( + type: Argument::Double, + name: 'skylight_ufactor' + required: false, + display_name: 'Skylights: U-Factor') + units: 'Btu/hr-ft^2-R') + description: 'Full-assembly NFRC U-factor.') + + args << makeArgument( + name: 'skylight_shgc', + type: Argument::Double, + required: false, + display_name: 'Skylights: SHGC') + description: 'Full-assembly NFRC solar heat gain coefficient.') + + args << makeArgument( + type: Argument::Choice, + name: 'skylight_storm_type', storm_window_type_choices, false) + display_name: 'Skylights: Storm Type') + description: 'The type of storm, if present. If not provided, assumes there is no storm.') + + args << makeArgument( + type: Argument::Double, + name: 'door_area', true) + display_name: 'Doors: Area') + units: 'ft^2') + description: 'The area of the opaque door(s).') + + args << makeArgument( + type: Argument::Double, + name: 'door_rvalue', true) + display_name: 'Doors: R-value') + units: 'h-ft^2-R/Btu') + description: 'R-value of the opaque door(s).') + air_leakage_leakiness_description_choices = OpenStudio::StringVector.new air_leakage_leakiness_description_choices << HPXML::LeakinessVeryTight air_leakage_leakiness_description_choices << HPXML::LeakinessTight @@ -1190,12 +1463,12 @@ def makeArgument(name:, air_leakage_leakiness_description_choices << HPXML::LeakinessLeaky air_leakage_leakiness_description_choices << HPXML::LeakinessVeryLeaky - arg = OpenStudio::Measure::OSArgument::makeChoiceArgument('air_leakage_leakiness_description', air_leakage_leakiness_description_choices, false) - arg.setDisplayName('Air Leakage: Leakiness Description') - arg.setDescription('Qualitative description of infiltration. If provided, the Year Built of the home is required. Either provide this input or provide a numeric air leakage value below.') - arg.setDefaultValue(HPXML::LeakinessAverage) - args << arg - + args << makeArgument( + type: Argument::Choice, + name: 'air_leakage_leakiness_description', air_leakage_leakiness_description_choices, false) + display_name: 'Air Leakage: Leakiness Description') + description: 'Qualitative description of infiltration. If provided, the Year Built of the home is required. Either provide this input or provide a numeric air leakage value below.') + air_leakage_units_choices = OpenStudio::StringVector.new air_leakage_units_choices << HPXML::UnitsACH air_leakage_units_choices << HPXML::UnitsCFM @@ -1203,31 +1476,37 @@ def makeArgument(name:, air_leakage_units_choices << HPXML::UnitsCFMNatural air_leakage_units_choices << HPXML::UnitsELA - arg = OpenStudio::Measure::OSArgument::makeChoiceArgument('air_leakage_units', air_leakage_units_choices, false) - arg.setDisplayName('Air Leakage: Units') - arg.setDescription('The unit of measure for the air leakage if providing a numeric air leakage value.') - args << arg - - arg = OpenStudio::Measure::OSArgument::makeDoubleArgument('air_leakage_house_pressure', false) - arg.setDisplayName('Air Leakage: House Pressure') - arg.setUnits('Pa') - arg.setDescription("The house pressure relative to outside if providing a numeric air leakage value. Required when units are #{HPXML::UnitsACH} or #{HPXML::UnitsCFM}.") - args << arg - - arg = OpenStudio::Measure::OSArgument::makeDoubleArgument('air_leakage_value', false) - arg.setDisplayName('Air Leakage: Value') - arg.setDescription("Numeric air leakage value. For '#{HPXML::UnitsELA}', provide value in sq. in. If provided, overrides Leakiness Description input.") - args << arg - + args << makeArgument( + type: Argument::Choice, + name: 'air_leakage_units', air_leakage_units_choices, false) + display_name: 'Air Leakage: Units') + description: 'The unit of measure for the air leakage if providing a numeric air leakage value.') + + args << makeArgument( + type: Argument::Double, + name: 'air_leakage_house_pressure' + required: false, + display_name: 'Air Leakage: House Pressure') + units: 'Pa') + description: "The house pressure relative to outside if providing a numeric air leakage value. Required when units are #{HPXML::UnitsACH} or #{HPXML::UnitsCFM}.") + + args << makeArgument( + type: Argument::Double, + name: 'air_leakage_value' + required: false, + display_name: 'Air Leakage: Value') + description: "Numeric air leakage value. For '#{HPXML::UnitsELA}', provide value in sq. in. If provided, overrides Leakiness Description input.") + air_leakage_type_choices = OpenStudio::StringVector.new air_leakage_type_choices << HPXML::InfiltrationTypeUnitTotal air_leakage_type_choices << HPXML::InfiltrationTypeUnitExterior - arg = OpenStudio::Measure::OSArgument::makeChoiceArgument('air_leakage_type', air_leakage_type_choices, false) - arg.setDisplayName('Air Leakage: Type') - arg.setDescription("Type of air leakage if providing a numeric air leakage value. If '#{HPXML::InfiltrationTypeUnitTotal}', represents the total infiltration to the unit as measured by a compartmentalization test, in which case the air leakage value will be adjusted by the ratio of exterior envelope surface area to total envelope surface area. Otherwise, if '#{HPXML::InfiltrationTypeUnitExterior}', represents the infiltration to the unit from outside only as measured by a guarded test. Required when unit type is #{HPXML::ResidentialTypeSFA} or #{HPXML::ResidentialTypeApartment}.") - args << arg - + args << makeArgument( + type: Argument::Choice, + name: 'air_leakage_type', air_leakage_type_choices, false) + display_name: 'Air Leakage: Type') + description: "Type of air leakage if providing a numeric air leakage value. If '#{HPXML::InfiltrationTypeUnitTotal}', represents the total infiltration to the unit as measured by a compartmentalization test, in which case the air leakage value will be adjusted by the ratio of exterior envelope surface area to total envelope surface area. Otherwise, if '#{HPXML::InfiltrationTypeUnitExterior}', represents the infiltration to the unit from outside only as measured by a guarded test. Required when unit type is #{HPXML::ResidentialTypeSFA} or #{HPXML::ResidentialTypeApartment}.") + args << makeArgument( name: 'air_leakage_has_flue_or_chimney_in_conditioned_space', type: Argument::Boolean, @@ -1278,187 +1557,224 @@ def makeArgument(name:, compressor_type_choices << HPXML::HVACCompressorTypeTwoStage compressor_type_choices << HPXML::HVACCompressorTypeVariableSpeed - arg = OpenStudio::Measure::OSArgument::makeChoiceArgument('heating_system_type', heating_system_type_choices, true) - arg.setDisplayName('Heating System: Type') - arg.setDescription("The type of heating system. Use '#{Constants::None}' if there is no heating system or if there is a heat pump serving a heating load.") - arg.setDefaultValue(HPXML::HVACTypeFurnace) - args << arg - - arg = OpenStudio::Measure::OSArgument::makeChoiceArgument('heating_system_fuel', heating_system_fuel_choices, false) - arg.setDisplayName('Heating System: Fuel Type') - arg.setDescription("The fuel type of the heating system. Ignored for #{HPXML::HVACTypeElectricResistance}.") - arg.setDefaultValue(HPXML::FuelTypeNaturalGas) - args << arg - - arg = OpenStudio::Measure::OSArgument::makeDoubleArgument('heating_system_heating_efficiency', false) - arg.setDisplayName('Heating System: Rated AFUE or Percent') - arg.setUnits('Frac') - arg.setDescription('The rated heating efficiency value of the heating system.') - arg.setDefaultValue(0.78) - args << arg - - arg = OpenStudio::Measure::OSArgument::makeDoubleArgument('heating_system_heating_capacity', false) - arg.setDisplayName('Heating System: Heating Capacity') - arg.setDescription("The output heating capacity of the heating system. If not provided, the OS-HPXML autosized default (see HPXML Heating Systems) is used.") - arg.setUnits('Btu/hr') - args << arg - - arg = OpenStudio::Measure::OSArgument::makeDoubleArgument('heating_system_heating_autosizing_factor', false) - arg.setDisplayName('Heating System: Heating Autosizing Factor') - arg.setDescription('The capacity scaling factor applied to the auto-sizing methodology. If not provided, 1.0 is used.') - args << arg - - arg = OpenStudio::Measure::OSArgument::makeDoubleArgument('heating_system_heating_autosizing_limit', false) - arg.setDisplayName('Heating System: Heating Autosizing Limit') - arg.setDescription('The maximum capacity limit applied to the auto-sizing methodology. If not provided, no limit is used.') - arg.setUnits('Btu/hr') - args << arg - - arg = OpenStudio::Measure::OSArgument::makeDoubleArgument('heating_system_fraction_heat_load_served', false) - arg.setDisplayName('Heating System: Fraction Heat Load Served') - arg.setDescription('The heating load served by the heating system.') - arg.setUnits('Frac') - arg.setDefaultValue(1) - args << arg - - arg = OpenStudio::Measure::OSArgument::makeDoubleArgument('heating_system_pilot_light', false) - arg.setDisplayName('Heating System: Pilot Light') - arg.setDescription("The fuel usage of the pilot light. Applies only to #{HPXML::HVACTypeFurnace}, #{HPXML::HVACTypeWallFurnace}, #{HPXML::HVACTypeFloorFurnace}, #{HPXML::HVACTypeStove}, #{HPXML::HVACTypeBoiler}, and #{HPXML::HVACTypeFireplace} with non-electric fuel type. If not provided, assumes no pilot light.") - arg.setUnits('Btuh') - args << arg - - arg = OpenStudio::Measure::OSArgument::makeDoubleArgument('heating_system_airflow_defect_ratio', false) - arg.setDisplayName('Heating System: Airflow Defect Ratio') - arg.setDescription("The airflow defect ratio, defined as (InstalledAirflow - DesignAirflow) / DesignAirflow, of the heating system per ANSI/RESNET/ACCA Standard 310. A value of zero means no airflow defect. Applies only to #{HPXML::HVACTypeFurnace}. If not provided, assumes no defect.") - arg.setUnits('Frac') - args << arg - - arg = OpenStudio::Measure::OSArgument::makeChoiceArgument('cooling_system_type', cooling_system_type_choices, true) - arg.setDisplayName('Cooling System: Type') - arg.setDescription("The type of cooling system. Use '#{Constants::None}' if there is no cooling system or if there is a heat pump serving a cooling load.") - arg.setDefaultValue(HPXML::HVACTypeCentralAirConditioner) - args << arg - - arg = OpenStudio::Measure::OSArgument::makeChoiceArgument('cooling_system_cooling_efficiency_type', cooling_efficiency_type_choices, false) - arg.setDisplayName('Cooling System: Efficiency Type') - arg.setDescription("The efficiency type of the cooling system. System types #{HPXML::HVACTypeCentralAirConditioner} and #{HPXML::HVACTypeMiniSplitAirConditioner} use #{HPXML::UnitsSEER} or #{HPXML::UnitsSEER2}. System types #{HPXML::HVACTypeRoomAirConditioner} and #{HPXML::HVACTypePTAC} use #{HPXML::UnitsEER} or #{HPXML::UnitsCEER}. Ignored for system type #{HPXML::HVACTypeEvaporativeCooler}.") - arg.setDefaultValue(HPXML::UnitsSEER) - args << arg - - arg = OpenStudio::Measure::OSArgument::makeDoubleArgument('cooling_system_cooling_efficiency', false) - arg.setDisplayName('Cooling System: Efficiency') - arg.setDescription("The rated efficiency value of the cooling system. Ignored for #{HPXML::HVACTypeEvaporativeCooler}.") - arg.setDefaultValue(13.0) - args << arg - - arg = OpenStudio::Measure::OSArgument::makeChoiceArgument('cooling_system_cooling_compressor_type', compressor_type_choices, false) - arg.setDisplayName('Cooling System: Cooling Compressor Type') - arg.setDescription("The compressor type of the cooling system. Only applies to #{HPXML::HVACTypeCentralAirConditioner} and #{HPXML::HVACTypeMiniSplitAirConditioner}. If not provided, the OS-HPXML default (see Central Air Conditioner, Mini-Split Air Conditioner) is used.") - args << arg - - arg = OpenStudio::Measure::OSArgument::makeDoubleArgument('cooling_system_cooling_sensible_heat_fraction', false) - arg.setDisplayName('Cooling System: Cooling Sensible Heat Fraction') - arg.setDescription("The sensible heat fraction of the cooling system. Ignored for #{HPXML::HVACTypeEvaporativeCooler}. If not provided, the OS-HPXML default (see Central Air Conditioner, Room Air Conditioner, Packaged Terminal Air Conditioner, Mini-Split Air Conditioner) is used.") - arg.setUnits('Frac') - args << arg - - arg = OpenStudio::Measure::OSArgument::makeDoubleArgument('cooling_system_cooling_capacity', false) - arg.setDisplayName('Cooling System: Cooling Capacity') - arg.setDescription("The output cooling capacity of the cooling system. If not provided, the OS-HPXML autosized default (see Central Air Conditioner, Room Air Conditioner, Packaged Terminal Air Conditioner, Evaporative Cooler, Mini-Split Air Conditioner) is used.") - arg.setUnits('Btu/hr') - args << arg - - arg = OpenStudio::Measure::OSArgument::makeDoubleArgument('cooling_system_cooling_autosizing_factor', false) - arg.setDisplayName('Cooling System: Cooling Autosizing Factor') - arg.setDescription('The capacity scaling factor applied to the auto-sizing methodology. If not provided, 1.0 is used.') - args << arg - - arg = OpenStudio::Measure::OSArgument::makeDoubleArgument('cooling_system_cooling_autosizing_limit', false) - arg.setDisplayName('Cooling System: Cooling Autosizing Limit') - arg.setDescription('The maximum capacity limit applied to the auto-sizing methodology. If not provided, no limit is used.') - arg.setUnits('Btu/hr') - args << arg - - arg = OpenStudio::Measure::OSArgument::makeDoubleArgument('cooling_system_fraction_cool_load_served', false) - arg.setDisplayName('Cooling System: Fraction Cool Load Served') - arg.setDescription('The cooling load served by the cooling system.') - arg.setUnits('Frac') - arg.setDefaultValue(1) - args << arg - - arg = OpenStudio::Measure::OSArgument::makeBoolArgument('cooling_system_is_ducted', false) - arg.setDisplayName('Cooling System: Is Ducted') - arg.setDescription("Whether the cooling system is ducted or not. Only used for #{HPXML::HVACTypeMiniSplitAirConditioner} and #{HPXML::HVACTypeEvaporativeCooler}. It's assumed that #{HPXML::HVACTypeCentralAirConditioner} is ducted, and #{HPXML::HVACTypeRoomAirConditioner} and #{HPXML::HVACTypePTAC} are not ducted.") - arg.setDefaultValue(false) - args << arg - - arg = OpenStudio::Measure::OSArgument::makeDoubleArgument('cooling_system_airflow_defect_ratio', false) - arg.setDisplayName('Cooling System: Airflow Defect Ratio') - arg.setDescription("The airflow defect ratio, defined as (InstalledAirflow - DesignAirflow) / DesignAirflow, of the cooling system per ANSI/RESNET/ACCA Standard 310. A value of zero means no airflow defect. Applies only to #{HPXML::HVACTypeCentralAirConditioner} and ducted #{HPXML::HVACTypeMiniSplitAirConditioner}. If not provided, assumes no defect.") - arg.setUnits('Frac') - args << arg - - arg = OpenStudio::Measure::OSArgument::makeDoubleArgument('cooling_system_charge_defect_ratio', false) - arg.setDisplayName('Cooling System: Charge Defect Ratio') - arg.setDescription("The refrigerant charge defect ratio, defined as (InstalledCharge - DesignCharge) / DesignCharge, of the cooling system per ANSI/RESNET/ACCA Standard 310. A value of zero means no refrigerant charge defect. Applies only to #{HPXML::HVACTypeCentralAirConditioner} and #{HPXML::HVACTypeMiniSplitAirConditioner}. If not provided, assumes no defect.") - arg.setUnits('Frac') - args << arg - - arg = OpenStudio::Measure::OSArgument::makeDoubleArgument('cooling_system_crankcase_heater_watts', false) - arg.setDisplayName('Cooling System: Crankcase Heater Power Watts') - arg.setDescription("Cooling system crankcase heater power consumption in Watts. Applies only to #{HPXML::HVACTypeCentralAirConditioner}, #{HPXML::HVACTypeRoomAirConditioner}, #{HPXML::HVACTypePTAC} and #{HPXML::HVACTypeMiniSplitAirConditioner}. If not provided, the OS-HPXML default (see Central Air Conditioner, Room Air Conditioner, Packaged Terminal Air Conditioner, Mini-Split Air Conditioner) is used.") - arg.setUnits('W') - args << arg - - arg = OpenStudio::Measure::OSArgument::makeChoiceArgument('cooling_system_integrated_heating_system_fuel', heating_system_fuel_choices, false) - arg.setDisplayName('Cooling System: Integrated Heating System Fuel Type') - arg.setDescription("The fuel type of the heating system integrated into cooling system. Only used for #{HPXML::HVACTypePTAC} and #{HPXML::HVACTypeRoomAirConditioner}.") - args << arg - - arg = OpenStudio::Measure::OSArgument::makeDoubleArgument('cooling_system_integrated_heating_system_efficiency_percent', false) - arg.setDisplayName('Cooling System: Integrated Heating System Efficiency') - arg.setUnits('Frac') - arg.setDescription("The rated heating efficiency value of the heating system integrated into cooling system. Only used for #{HPXML::HVACTypePTAC} and #{HPXML::HVACTypeRoomAirConditioner}.") - args << arg - - arg = OpenStudio::Measure::OSArgument::makeDoubleArgument('cooling_system_integrated_heating_system_capacity', false) - arg.setDisplayName('Cooling System: Integrated Heating System Heating Capacity') - arg.setDescription("The output heating capacity of the heating system integrated into cooling system. If not provided, the OS-HPXML autosized default (see Room Air Conditioner, Packaged Terminal Air Conditioner) is used. Only used for #{HPXML::HVACTypeRoomAirConditioner} and #{HPXML::HVACTypePTAC}.") - arg.setUnits('Btu/hr') - args << arg - - arg = OpenStudio::Measure::OSArgument::makeDoubleArgument('cooling_system_integrated_heating_system_fraction_heat_load_served', false) - arg.setDisplayName('Cooling System: Integrated Heating System Fraction Heat Load Served') - arg.setDescription("The heating load served by the heating system integrated into cooling system. Only used for #{HPXML::HVACTypePTAC} and #{HPXML::HVACTypeRoomAirConditioner}.") - arg.setUnits('Frac') - args << arg - - heat_pump_type_choices = OpenStudio::StringVector.new - heat_pump_type_choices << Constants::None - heat_pump_type_choices << HPXML::HVACTypeHeatPumpAirToAir - heat_pump_type_choices << HPXML::HVACTypeHeatPumpMiniSplit - heat_pump_type_choices << HPXML::HVACTypeHeatPumpGroundToAir - heat_pump_type_choices << HPXML::HVACTypeHeatPumpPTHP - heat_pump_type_choices << HPXML::HVACTypeHeatPumpRoom - - heat_pump_heating_efficiency_type_choices = OpenStudio::StringVector.new - heat_pump_heating_efficiency_type_choices << HPXML::UnitsHSPF - heat_pump_heating_efficiency_type_choices << HPXML::UnitsHSPF2 - heat_pump_heating_efficiency_type_choices << HPXML::UnitsCOP - - heat_pump_backup_type_choices = OpenStudio::StringVector.new - heat_pump_backup_type_choices << Constants::None - heat_pump_backup_type_choices << HPXML::HeatPumpBackupTypeIntegrated - heat_pump_backup_type_choices << HPXML::HeatPumpBackupTypeSeparate - - heat_pump_backup_fuel_choices = OpenStudio::StringVector.new - heat_pump_backup_fuel_choices << HPXML::FuelTypeElectricity - heat_pump_backup_fuel_choices << HPXML::FuelTypeNaturalGas - heat_pump_backup_fuel_choices << HPXML::FuelTypeOil - heat_pump_backup_fuel_choices << HPXML::FuelTypePropane - - heat_pump_sizing_choices = OpenStudio::StringVector.new - heat_pump_sizing_choices << HPXML::HeatPumpSizingACCA + args << makeArgument( + type: Argument::Choice, + name: 'heating_system_type', heating_system_type_choices, true) + display_name: 'Heating System: Type') + description: "The type of heating system. Use '#{Constants::None}' if there is no heating system or if there is a heat pump serving a heating load.") + + args << makeArgument( + type: Argument::Choice, + name: 'heating_system_fuel', heating_system_fuel_choices, false) + display_name: 'Heating System: Fuel Type') + description: "The fuel type of the heating system. Ignored for #{HPXML::HVACTypeElectricResistance}.") + + args << makeArgument( + type: Argument::Double, + name: 'heating_system_heating_efficiency' + required: false, + display_name: 'Heating System: Rated AFUE or Percent') + units: 'Frac') + description: 'The rated heating efficiency value of the heating system.') + + args << makeArgument( + type: Argument::Double, + name: 'heating_system_heating_capacity' + required: false, + display_name: 'Heating System: Heating Capacity') + description: "The output heating capacity of the heating system. If not provided, the OS-HPXML autosized default (see HPXML Heating Systems) is used.") + units: 'Btu/hr') + + args << makeArgument( + type: Argument::Double, + name: 'heating_system_heating_autosizing_factor' + required: false, + display_name: 'Heating System: Heating Autosizing Factor') + description: 'The capacity scaling factor applied to the auto-sizing methodology. If not provided, 1.0 is used.') + + args << makeArgument( + type: Argument::Double, + name: 'heating_system_heating_autosizing_limit' + required: false, + display_name: 'Heating System: Heating Autosizing Limit') + description: 'The maximum capacity limit applied to the auto-sizing methodology. If not provided, no limit is used.') + units: 'Btu/hr') + + args << makeArgument( + type: Argument::Double, + name: 'heating_system_fraction_heat_load_served' + required: false, + display_name: 'Heating System: Fraction Heat Load Served') + description: 'The heating load served by the heating system.') + units: 'Frac') + + args << makeArgument( + type: Argument::Double, + name: 'heating_system_pilot_light' + required: false, + display_name: 'Heating System: Pilot Light') + description: "The fuel usage of the pilot light. Applies only to #{HPXML::HVACTypeFurnace}, #{HPXML::HVACTypeWallFurnace}, #{HPXML::HVACTypeFloorFurnace}, #{HPXML::HVACTypeStove}, #{HPXML::HVACTypeBoiler}, and #{HPXML::HVACTypeFireplace} with non-electric fuel type. If not provided, assumes no pilot light.") + units: 'Btuh') + + args << makeArgument( + type: Argument::Double, + name: 'heating_system_airflow_defect_ratio' + required: false, + display_name: 'Heating System: Airflow Defect Ratio') + description: "The airflow defect ratio, defined as (InstalledAirflow - DesignAirflow) / DesignAirflow, of the heating system per ANSI/RESNET/ACCA Standard 310. A value of zero means no airflow defect. Applies only to #{HPXML::HVACTypeFurnace}. If not provided, assumes no defect.") + units: 'Frac') + + args << makeArgument( + type: Argument::Choice, + name: 'cooling_system_type', cooling_system_type_choices, true) + display_name: 'Cooling System: Type') + description: "The type of cooling system. Use '#{Constants::None}' if there is no cooling system or if there is a heat pump serving a cooling load.") + + args << makeArgument( + type: Argument::Choice, + name: 'cooling_system_cooling_efficiency_type', cooling_efficiency_type_choices, false) + display_name: 'Cooling System: Efficiency Type') + description: "The efficiency type of the cooling system. System types #{HPXML::HVACTypeCentralAirConditioner} and #{HPXML::HVACTypeMiniSplitAirConditioner} use #{HPXML::UnitsSEER} or #{HPXML::UnitsSEER2}. System types #{HPXML::HVACTypeRoomAirConditioner} and #{HPXML::HVACTypePTAC} use #{HPXML::UnitsEER} or #{HPXML::UnitsCEER}. Ignored for system type #{HPXML::HVACTypeEvaporativeCooler}.") + + args << makeArgument( + type: Argument::Double, + name: 'cooling_system_cooling_efficiency' + required: false, + display_name: 'Cooling System: Efficiency') + description: "The rated efficiency value of the cooling system. Ignored for #{HPXML::HVACTypeEvaporativeCooler}.") + + args << makeArgument( + type: Argument::Choice, + name: 'cooling_system_cooling_compressor_type', compressor_type_choices, false) + display_name: 'Cooling System: Cooling Compressor Type') + description: "The compressor type of the cooling system. Only applies to #{HPXML::HVACTypeCentralAirConditioner} and #{HPXML::HVACTypeMiniSplitAirConditioner}. If not provided, the OS-HPXML default (see Central Air Conditioner, Mini-Split Air Conditioner) is used.") + + args << makeArgument( + type: Argument::Double, + name: 'cooling_system_cooling_sensible_heat_fraction' + required: false, + display_name: 'Cooling System: Cooling Sensible Heat Fraction') + description: "The sensible heat fraction of the cooling system. Ignored for #{HPXML::HVACTypeEvaporativeCooler}. If not provided, the OS-HPXML default (see Central Air Conditioner, Room Air Conditioner, Packaged Terminal Air Conditioner, Mini-Split Air Conditioner) is used.") + units: 'Frac') + + args << makeArgument( + type: Argument::Double, + name: 'cooling_system_cooling_capacity' + required: false, + display_name: 'Cooling System: Cooling Capacity') + description: "The output cooling capacity of the cooling system. If not provided, the OS-HPXML autosized default (see Central Air Conditioner, Room Air Conditioner, Packaged Terminal Air Conditioner, Evaporative Cooler, Mini-Split Air Conditioner) is used.") + units: 'Btu/hr') + + args << makeArgument( + type: Argument::Double, + name: 'cooling_system_cooling_autosizing_factor' + required: false, + display_name: 'Cooling System: Cooling Autosizing Factor') + description: 'The capacity scaling factor applied to the auto-sizing methodology. If not provided, 1.0 is used.') + + args << makeArgument( + type: Argument::Double, + name: 'cooling_system_cooling_autosizing_limit' + required: false, + display_name: 'Cooling System: Cooling Autosizing Limit') + description: 'The maximum capacity limit applied to the auto-sizing methodology. If not provided, no limit is used.') + units: 'Btu/hr') + + args << makeArgument( + type: Argument::Double, + name: 'cooling_system_fraction_cool_load_served' + required: false, + display_name: 'Cooling System: Fraction Cool Load Served') + description: 'The cooling load served by the cooling system.') + units: 'Frac') + + args << makeArgument( + name: 'cooling_system_is_ducted', + type: Argument::Boolean, + required: false, + display_name: 'Cooling System: Is Ducted') + description: "Whether the cooling system is ducted or not. Only used for #{HPXML::HVACTypeMiniSplitAirConditioner} and #{HPXML::HVACTypeEvaporativeCooler}. It's assumed that #{HPXML::HVACTypeCentralAirConditioner} is ducted, and #{HPXML::HVACTypeRoomAirConditioner} and #{HPXML::HVACTypePTAC} are not ducted.") + + args << makeArgument( + type: Argument::Double, + name: 'cooling_system_airflow_defect_ratio' + required: false, + display_name: 'Cooling System: Airflow Defect Ratio') + description: "The airflow defect ratio, defined as (InstalledAirflow - DesignAirflow) / DesignAirflow, of the cooling system per ANSI/RESNET/ACCA Standard 310. A value of zero means no airflow defect. Applies only to #{HPXML::HVACTypeCentralAirConditioner} and ducted #{HPXML::HVACTypeMiniSplitAirConditioner}. If not provided, assumes no defect.") + units: 'Frac') + + args << makeArgument( + type: Argument::Double, + name: 'cooling_system_charge_defect_ratio' + required: false, + display_name: 'Cooling System: Charge Defect Ratio') + description: "The refrigerant charge defect ratio, defined as (InstalledCharge - DesignCharge) / DesignCharge, of the cooling system per ANSI/RESNET/ACCA Standard 310. A value of zero means no refrigerant charge defect. Applies only to #{HPXML::HVACTypeCentralAirConditioner} and #{HPXML::HVACTypeMiniSplitAirConditioner}. If not provided, assumes no defect.") + units: 'Frac') + + args << makeArgument( + type: Argument::Double, + name: 'cooling_system_crankcase_heater_watts' + required: false, + display_name: 'Cooling System: Crankcase Heater Power Watts') + description: "Cooling system crankcase heater power consumption in Watts. Applies only to #{HPXML::HVACTypeCentralAirConditioner}, #{HPXML::HVACTypeRoomAirConditioner}, #{HPXML::HVACTypePTAC} and #{HPXML::HVACTypeMiniSplitAirConditioner}. If not provided, the OS-HPXML default (see Central Air Conditioner, Room Air Conditioner, Packaged Terminal Air Conditioner, Mini-Split Air Conditioner) is used.") + units: 'W') + + args << makeArgument( + type: Argument::Choice, + name: 'cooling_system_integrated_heating_system_fuel', heating_system_fuel_choices, false) + display_name: 'Cooling System: Integrated Heating System Fuel Type') + description: "The fuel type of the heating system integrated into cooling system. Only used for #{HPXML::HVACTypePTAC} and #{HPXML::HVACTypeRoomAirConditioner}.") + + args << makeArgument( + type: Argument::Double, + name: 'cooling_system_integrated_heating_system_efficiency_percent' + required: false, + display_name: 'Cooling System: Integrated Heating System Efficiency') + units: 'Frac') + description: "The rated heating efficiency value of the heating system integrated into cooling system. Only used for #{HPXML::HVACTypePTAC} and #{HPXML::HVACTypeRoomAirConditioner}.") + + args << makeArgument( + type: Argument::Double, + name: 'cooling_system_integrated_heating_system_capacity' + required: false, + display_name: 'Cooling System: Integrated Heating System Heating Capacity') + description: "The output heating capacity of the heating system integrated into cooling system. If not provided, the OS-HPXML autosized default (see Room Air Conditioner, Packaged Terminal Air Conditioner) is used. Only used for #{HPXML::HVACTypeRoomAirConditioner} and #{HPXML::HVACTypePTAC}.") + units: 'Btu/hr') + + args << makeArgument( + type: Argument::Double, + name: 'cooling_system_integrated_heating_system_fraction_heat_load_served' + required: false, + display_name: 'Cooling System: Integrated Heating System Fraction Heat Load Served') + description: "The heating load served by the heating system integrated into cooling system. Only used for #{HPXML::HVACTypePTAC} and #{HPXML::HVACTypeRoomAirConditioner}.") + units: 'Frac') + + heat_pump_type_choices = OpenStudio::StringVector.new + heat_pump_type_choices << Constants::None + heat_pump_type_choices << HPXML::HVACTypeHeatPumpAirToAir + heat_pump_type_choices << HPXML::HVACTypeHeatPumpMiniSplit + heat_pump_type_choices << HPXML::HVACTypeHeatPumpGroundToAir + heat_pump_type_choices << HPXML::HVACTypeHeatPumpPTHP + heat_pump_type_choices << HPXML::HVACTypeHeatPumpRoom + + heat_pump_heating_efficiency_type_choices = OpenStudio::StringVector.new + heat_pump_heating_efficiency_type_choices << HPXML::UnitsHSPF + heat_pump_heating_efficiency_type_choices << HPXML::UnitsHSPF2 + heat_pump_heating_efficiency_type_choices << HPXML::UnitsCOP + + heat_pump_backup_type_choices = OpenStudio::StringVector.new + heat_pump_backup_type_choices << Constants::None + heat_pump_backup_type_choices << HPXML::HeatPumpBackupTypeIntegrated + heat_pump_backup_type_choices << HPXML::HeatPumpBackupTypeSeparate + + heat_pump_backup_fuel_choices = OpenStudio::StringVector.new + heat_pump_backup_fuel_choices << HPXML::FuelTypeElectricity + heat_pump_backup_fuel_choices << HPXML::FuelTypeNaturalGas + heat_pump_backup_fuel_choices << HPXML::FuelTypeOil + heat_pump_backup_fuel_choices << HPXML::FuelTypePropane + + heat_pump_sizing_choices = OpenStudio::StringVector.new + heat_pump_sizing_choices << HPXML::HeatPumpSizingACCA heat_pump_sizing_choices << HPXML::HeatPumpSizingHERS heat_pump_sizing_choices << HPXML::HeatPumpSizingMaxLoad @@ -1466,257 +1782,321 @@ def makeArgument(name:, heat_pump_backup_sizing_choices << HPXML::HeatPumpBackupSizingEmergency heat_pump_backup_sizing_choices << HPXML::HeatPumpBackupSizingSupplemental - arg = OpenStudio::Measure::OSArgument::makeChoiceArgument('heat_pump_type', heat_pump_type_choices, true) - arg.setDisplayName('Heat Pump: Type') - arg.setDescription("The type of heat pump. Use '#{Constants::None}' if there is no heat pump.") - arg.setDefaultValue(Constants::None) - args << arg - - arg = OpenStudio::Measure::OSArgument::makeChoiceArgument('heat_pump_heating_efficiency_type', heat_pump_heating_efficiency_type_choices, false) - arg.setDisplayName('Heat Pump: Heating Efficiency Type') - arg.setDescription("The heating efficiency type of heat pump. System types #{HPXML::HVACTypeHeatPumpAirToAir} and #{HPXML::HVACTypeHeatPumpMiniSplit} use #{HPXML::UnitsHSPF} or #{HPXML::UnitsHSPF2}. System types #{HPXML::HVACTypeHeatPumpGroundToAir}, #{HPXML::HVACTypeHeatPumpPTHP} and #{HPXML::HVACTypeHeatPumpRoom} use #{HPXML::UnitsCOP}.") - arg.setDefaultValue(HPXML::UnitsHSPF) - args << arg - - arg = OpenStudio::Measure::OSArgument::makeDoubleArgument('heat_pump_heating_efficiency', false) - arg.setDisplayName('Heat Pump: Heating Efficiency') - arg.setDescription('The rated heating efficiency value of the heat pump.') - arg.setDefaultValue(7.7) - args << arg - - arg = OpenStudio::Measure::OSArgument::makeChoiceArgument('heat_pump_cooling_efficiency_type', cooling_efficiency_type_choices, false) - arg.setDisplayName('Heat Pump: Cooling Efficiency Type') - arg.setDescription("The cooling efficiency type of heat pump. System types #{HPXML::HVACTypeHeatPumpAirToAir} and #{HPXML::HVACTypeHeatPumpMiniSplit} use #{HPXML::UnitsSEER} or #{HPXML::UnitsSEER2}. System types #{HPXML::HVACTypeHeatPumpGroundToAir}, #{HPXML::HVACTypeHeatPumpPTHP} and #{HPXML::HVACTypeHeatPumpRoom} use #{HPXML::UnitsEER}.") - arg.setDefaultValue(HPXML::UnitsSEER) - args << arg - - arg = OpenStudio::Measure::OSArgument::makeDoubleArgument('heat_pump_cooling_efficiency', false) - arg.setDisplayName('Heat Pump: Cooling Efficiency') - arg.setDescription('The rated cooling efficiency value of the heat pump.') - arg.setDefaultValue(13.0) - args << arg - - arg = OpenStudio::Measure::OSArgument::makeChoiceArgument('heat_pump_cooling_compressor_type', compressor_type_choices, false) - arg.setDisplayName('Heat Pump: Cooling Compressor Type') - arg.setDescription("The compressor type of the heat pump. Only applies to #{HPXML::HVACTypeHeatPumpAirToAir} and #{HPXML::HVACTypeHeatPumpMiniSplit}. If not provided, the OS-HPXML default (see Air-to-Air Heat Pump, Mini-Split Heat Pump) is used.") - args << arg - - arg = OpenStudio::Measure::OSArgument::makeDoubleArgument('heat_pump_cooling_sensible_heat_fraction', false) - arg.setDisplayName('Heat Pump: Cooling Sensible Heat Fraction') - arg.setDescription("The sensible heat fraction of the heat pump. If not provided, the OS-HPXML default (see Air-to-Air Heat Pump, Mini-Split Heat Pump, Packaged Terminal Heat Pump, Room Air Conditioner w/ Reverse Cycle, Ground-to-Air Heat Pump) is used.") - arg.setUnits('Frac') - args << arg - - arg = OpenStudio::Measure::OSArgument::makeDoubleArgument('heat_pump_heating_capacity', false) - arg.setDisplayName('Heat Pump: Heating Capacity') - arg.setDescription("The output heating capacity of the heat pump. If not provided, the OS-HPXML autosized default (see Air-to-Air Heat Pump, Mini-Split Heat Pump, Packaged Terminal Heat Pump, Room Air Conditioner w/ Reverse Cycle, Ground-to-Air Heat Pump) is used.") - arg.setUnits('Btu/hr') - args << arg - - arg = OpenStudio::Measure::OSArgument::makeDoubleArgument('heat_pump_heating_autosizing_factor', false) - arg.setDisplayName('Heat Pump: Heating Autosizing Factor') - arg.setDescription('The capacity scaling factor applied to the auto-sizing methodology. If not provided, 1.0 is used.') - args << arg - - arg = OpenStudio::Measure::OSArgument::makeDoubleArgument('heat_pump_heating_autosizing_limit', false) - arg.setDisplayName('Heat Pump: Heating Autosizing Limit') - arg.setDescription('The maximum capacity limit applied to the auto-sizing methodology. If not provided, no limit is used.') - arg.setUnits('Btu/hr') - args << arg - - arg = OpenStudio::Measure::OSArgument::makeDoubleArgument('heat_pump_heating_capacity_retention_fraction', false) - arg.setDisplayName('Heat Pump: Heating Capacity Retention Fraction') - arg.setDescription("The output heating capacity of the heat pump at a user-specified temperature (e.g., 17F or 5F) divided by the above nominal heating capacity. Applies to all heat pump types except #{HPXML::HVACTypeHeatPumpGroundToAir}. If not provided, the OS-HPXML default (see Air-to-Air Heat Pump, Mini-Split Heat Pump, Packaged Terminal Heat Pump, Room Air Conditioner w/ Reverse Cycle) is used.") - arg.setUnits('Frac') - args << arg - - arg = OpenStudio::Measure::OSArgument::makeDoubleArgument('heat_pump_heating_capacity_retention_temp', false) - arg.setDisplayName('Heat Pump: Heating Capacity Retention Temperature') - arg.setDescription("The user-specified temperature (e.g., 17F or 5F) for the above heating capacity retention fraction. Applies to all heat pump types except #{HPXML::HVACTypeHeatPumpGroundToAir}. Required if the Heating Capacity Retention Fraction is provided.") - arg.setUnits('F') - args << arg - - arg = OpenStudio::Measure::OSArgument::makeDoubleArgument('heat_pump_cooling_capacity', false) - arg.setDisplayName('Heat Pump: Cooling Capacity') - arg.setDescription("The output cooling capacity of the heat pump. If not provided, the OS-HPXML autosized default (see Air-to-Air Heat Pump, Mini-Split Heat Pump, Packaged Terminal Heat Pump, Room Air Conditioner w/ Reverse Cycle, Ground-to-Air Heat Pump) is used.") - arg.setUnits('Btu/hr') - args << arg - - arg = OpenStudio::Measure::OSArgument::makeDoubleArgument('heat_pump_cooling_autosizing_factor', false) - arg.setDisplayName('Heat Pump: Cooling Autosizing Factor') - arg.setDescription('The capacity scaling factor applied to the auto-sizing methodology. If not provided, 1.0 is used.') - args << arg - - arg = OpenStudio::Measure::OSArgument::makeDoubleArgument('heat_pump_cooling_autosizing_limit', false) - arg.setDisplayName('Heat Pump: Cooling Autosizing Limit') - arg.setDescription('The maximum capacity limit applied to the auto-sizing methodology. If not provided, no limit is used.') - arg.setUnits('Btu/hr') - args << arg - - arg = OpenStudio::Measure::OSArgument::makeDoubleArgument('heat_pump_fraction_heat_load_served', false) - arg.setDisplayName('Heat Pump: Fraction Heat Load Served') - arg.setDescription('The heating load served by the heat pump.') - arg.setUnits('Frac') - arg.setDefaultValue(1) - args << arg - - arg = OpenStudio::Measure::OSArgument::makeDoubleArgument('heat_pump_fraction_cool_load_served', false) - arg.setDisplayName('Heat Pump: Fraction Cool Load Served') - arg.setDescription('The cooling load served by the heat pump.') - arg.setUnits('Frac') - arg.setDefaultValue(1) - args << arg - - arg = OpenStudio::Measure::OSArgument::makeDoubleArgument('heat_pump_compressor_lockout_temp', false) - arg.setDisplayName('Heat Pump: Compressor Lockout Temperature') - arg.setDescription("The temperature below which the heat pump compressor is disabled. If both this and Backup Heating Lockout Temperature are provided and use the same value, it essentially defines a switchover temperature (for, e.g., a dual-fuel heat pump). Applies to all heat pump types other than #{HPXML::HVACTypeHeatPumpGroundToAir}. If not provided, the OS-HPXML default (see Air-to-Air Heat Pump, Mini-Split Heat Pump, Packaged Terminal Heat Pump, Room Air Conditioner w/ Reverse Cycle) is used.") - arg.setUnits('F') - args << arg - - arg = OpenStudio::Measure::OSArgument::makeChoiceArgument('heat_pump_backup_type', heat_pump_backup_type_choices, false) - arg.setDisplayName('Heat Pump: Backup Type') - arg.setDescription("The backup type of the heat pump. If '#{HPXML::HeatPumpBackupTypeIntegrated}', represents e.g. built-in electric strip heat or dual-fuel integrated furnace. If '#{HPXML::HeatPumpBackupTypeSeparate}', represents e.g. electric baseboard or boiler based on the Heating System 2 specified below. Use '#{Constants::None}' if there is no backup heating.") - arg.setDefaultValue(HPXML::HeatPumpBackupTypeIntegrated) - args << arg - - arg = OpenStudio::Measure::OSArgument::makeDoubleArgument('heat_pump_backup_heating_autosizing_factor', false) - arg.setDisplayName('Heat Pump: Backup Heating Autosizing Factor') - arg.setDescription("The capacity scaling factor applied to the auto-sizing methodology if Backup Type is '#{HPXML::HeatPumpBackupTypeIntegrated}'. If not provided, 1.0 is used. If Backup Type is '#{HPXML::HeatPumpBackupTypeSeparate}', use Heating System 2: Heating Autosizing Factor.") - args << arg - - arg = OpenStudio::Measure::OSArgument::makeDoubleArgument('heat_pump_backup_heating_autosizing_limit', false) - arg.setDisplayName('Heat Pump: Backup Heating Autosizing Limit') - arg.setDescription("The maximum capacity limit applied to the auto-sizing methodology if Backup Type is '#{HPXML::HeatPumpBackupTypeIntegrated}'. If not provided, no limit is used. If Backup Type is '#{HPXML::HeatPumpBackupTypeSeparate}', use Heating System 2: Heating Autosizing Limit.") - arg.setUnits('Btu/hr') - args << arg - - arg = OpenStudio::Measure::OSArgument::makeChoiceArgument('heat_pump_backup_fuel', heat_pump_backup_fuel_choices, false) - arg.setDisplayName('Heat Pump: Backup Fuel Type') - arg.setDescription("The backup fuel type of the heat pump. Only applies if Backup Type is '#{HPXML::HeatPumpBackupTypeIntegrated}'.") - arg.setDefaultValue(HPXML::FuelTypeElectricity) - args << arg - - arg = OpenStudio::Measure::OSArgument::makeDoubleArgument('heat_pump_backup_heating_efficiency', false) - arg.setDisplayName('Heat Pump: Backup Rated Efficiency') - arg.setDescription("The backup rated efficiency value of the heat pump. Percent for electricity fuel type. AFUE otherwise. Only applies if Backup Type is '#{HPXML::HeatPumpBackupTypeIntegrated}'.") - arg.setDefaultValue(1) - args << arg - - arg = OpenStudio::Measure::OSArgument::makeDoubleArgument('heat_pump_backup_heating_capacity', false) - arg.setDisplayName('Heat Pump: Backup Heating Capacity') - arg.setDescription("The backup output heating capacity of the heat pump. If not provided, the OS-HPXML autosized default (see Backup) is used. Only applies if Backup Type is '#{HPXML::HeatPumpBackupTypeIntegrated}'.") - arg.setUnits('Btu/hr') - args << arg - - arg = OpenStudio::Measure::OSArgument::makeDoubleArgument('heat_pump_backup_heating_lockout_temp', false) - arg.setDisplayName('Heat Pump: Backup Heating Lockout Temperature') - arg.setDescription("The temperature above which the heat pump backup system is disabled. If both this and Compressor Lockout Temperature are provided and use the same value, it essentially defines a switchover temperature (for, e.g., a dual-fuel heat pump). Applies for both Backup Type of '#{HPXML::HeatPumpBackupTypeIntegrated}' and '#{HPXML::HeatPumpBackupTypeSeparate}'. If not provided, the OS-HPXML default (see Backup) is used.") - arg.setUnits('F') - args << arg - - arg = OpenStudio::Measure::OSArgument::makeChoiceArgument('heat_pump_sizing_methodology', heat_pump_sizing_choices, false) - arg.setDisplayName('Heat Pump: Sizing Methodology') - arg.setDescription("The auto-sizing methodology to use when the heat pump capacity is not provided. If not provided, the OS-HPXML default (see HPXML HVAC Sizing Control) is used.") - args << arg - - arg = OpenStudio::Measure::OSArgument::makeChoiceArgument('heat_pump_backup_sizing_methodology', heat_pump_backup_sizing_choices, false) - arg.setDisplayName('Heat Pump: Backup Sizing Methodology') - arg.setDescription("The auto-sizing methodology to use when the heat pump backup capacity is not provided. If not provided, the OS-HPXML default (see HPXML HVAC Sizing Control) is used.") - args << arg - - arg = OpenStudio::Measure::OSArgument::makeBoolArgument('heat_pump_is_ducted', false) - arg.setDisplayName('Heat Pump: Is Ducted') - arg.setDescription("Whether the heat pump is ducted or not. Only used for #{HPXML::HVACTypeHeatPumpMiniSplit}. It's assumed that #{HPXML::HVACTypeHeatPumpAirToAir} and #{HPXML::HVACTypeHeatPumpGroundToAir} are ducted, and #{HPXML::HVACTypeHeatPumpPTHP} and #{HPXML::HVACTypeHeatPumpRoom} are not ducted. If not provided, assumes not ducted.") - args << arg - - arg = OpenStudio::Measure::OSArgument::makeDoubleArgument('heat_pump_airflow_defect_ratio', false) - arg.setDisplayName('Heat Pump: Airflow Defect Ratio') - arg.setDescription("The airflow defect ratio, defined as (InstalledAirflow - DesignAirflow) / DesignAirflow, of the heat pump per ANSI/RESNET/ACCA Standard 310. A value of zero means no airflow defect. Applies only to #{HPXML::HVACTypeHeatPumpAirToAir}, ducted #{HPXML::HVACTypeHeatPumpMiniSplit}, and #{HPXML::HVACTypeHeatPumpGroundToAir}. If not provided, assumes no defect.") - arg.setUnits('Frac') - args << arg - - arg = OpenStudio::Measure::OSArgument::makeDoubleArgument('heat_pump_charge_defect_ratio', false) - arg.setDisplayName('Heat Pump: Charge Defect Ratio') - arg.setDescription('The refrigerant charge defect ratio, defined as (InstalledCharge - DesignCharge) / DesignCharge, of the heat pump per ANSI/RESNET/ACCA Standard 310. A value of zero means no refrigerant charge defect. Applies to all heat pump types. If not provided, assumes no defect.') - arg.setUnits('Frac') - args << arg - - arg = OpenStudio::Measure::OSArgument::makeDoubleArgument('heat_pump_crankcase_heater_watts', false) - arg.setDisplayName('Heat Pump: Crankcase Heater Power Watts') - arg.setDescription("Heat Pump crankcase heater power consumption in Watts. Applies only to #{HPXML::HVACTypeHeatPumpAirToAir}, #{HPXML::HVACTypeHeatPumpMiniSplit}, #{HPXML::HVACTypeHeatPumpPTHP} and #{HPXML::HVACTypeHeatPumpRoom}. If not provided, the OS-HPXML default (see Air-to-Air Heat Pump, Mini-Split Heat Pump, Packaged Terminal Heat Pump, Room Air Conditioner w/ Reverse Cycle) is used.") - arg.setUnits('W') - args << arg + args << makeArgument( + type: Argument::Choice, + name: 'heat_pump_type', heat_pump_type_choices, true) + display_name: 'Heat Pump: Type') + description: "The type of heat pump. Use '#{Constants::None}' if there is no heat pump.") + + args << makeArgument( + type: Argument::Choice, + name: 'heat_pump_heating_efficiency_type', heat_pump_heating_efficiency_type_choices, false) + display_name: 'Heat Pump: Heating Efficiency Type') + description: "The heating efficiency type of heat pump. System types #{HPXML::HVACTypeHeatPumpAirToAir} and #{HPXML::HVACTypeHeatPumpMiniSplit} use #{HPXML::UnitsHSPF} or #{HPXML::UnitsHSPF2}. System types #{HPXML::HVACTypeHeatPumpGroundToAir}, #{HPXML::HVACTypeHeatPumpPTHP} and #{HPXML::HVACTypeHeatPumpRoom} use #{HPXML::UnitsCOP}.") + + args << makeArgument( + type: Argument::Double, + name: 'heat_pump_heating_efficiency' + required: false, + display_name: 'Heat Pump: Heating Efficiency') + description: 'The rated heating efficiency value of the heat pump.') + + args << makeArgument( + type: Argument::Choice, + name: 'heat_pump_cooling_efficiency_type', cooling_efficiency_type_choices, false) + display_name: 'Heat Pump: Cooling Efficiency Type') + description: "The cooling efficiency type of heat pump. System types #{HPXML::HVACTypeHeatPumpAirToAir} and #{HPXML::HVACTypeHeatPumpMiniSplit} use #{HPXML::UnitsSEER} or #{HPXML::UnitsSEER2}. System types #{HPXML::HVACTypeHeatPumpGroundToAir}, #{HPXML::HVACTypeHeatPumpPTHP} and #{HPXML::HVACTypeHeatPumpRoom} use #{HPXML::UnitsEER}.") + + args << makeArgument( + type: Argument::Double, + name: 'heat_pump_cooling_efficiency' + required: false, + display_name: 'Heat Pump: Cooling Efficiency') + description: 'The rated cooling efficiency value of the heat pump.') + + args << makeArgument( + type: Argument::Choice, + name: 'heat_pump_cooling_compressor_type', compressor_type_choices, false) + display_name: 'Heat Pump: Cooling Compressor Type') + description: "The compressor type of the heat pump. Only applies to #{HPXML::HVACTypeHeatPumpAirToAir} and #{HPXML::HVACTypeHeatPumpMiniSplit}. If not provided, the OS-HPXML default (see Air-to-Air Heat Pump, Mini-Split Heat Pump) is used.") + + args << makeArgument( + type: Argument::Double, + name: 'heat_pump_cooling_sensible_heat_fraction' + required: false, + display_name: 'Heat Pump: Cooling Sensible Heat Fraction') + description: "The sensible heat fraction of the heat pump. If not provided, the OS-HPXML default (see Air-to-Air Heat Pump, Mini-Split Heat Pump, Packaged Terminal Heat Pump, Room Air Conditioner w/ Reverse Cycle, Ground-to-Air Heat Pump) is used.") + units: 'Frac') + + args << makeArgument( + type: Argument::Double, + name: 'heat_pump_heating_capacity' + required: false, + display_name: 'Heat Pump: Heating Capacity') + description: "The output heating capacity of the heat pump. If not provided, the OS-HPXML autosized default (see Air-to-Air Heat Pump, Mini-Split Heat Pump, Packaged Terminal Heat Pump, Room Air Conditioner w/ Reverse Cycle, Ground-to-Air Heat Pump) is used.") + units: 'Btu/hr') + + args << makeArgument( + type: Argument::Double, + name: 'heat_pump_heating_autosizing_factor' + required: false, + display_name: 'Heat Pump: Heating Autosizing Factor') + description: 'The capacity scaling factor applied to the auto-sizing methodology. If not provided, 1.0 is used.') + + args << makeArgument( + type: Argument::Double, + name: 'heat_pump_heating_autosizing_limit' + required: false, + display_name: 'Heat Pump: Heating Autosizing Limit') + description: 'The maximum capacity limit applied to the auto-sizing methodology. If not provided, no limit is used.') + units: 'Btu/hr') + + args << makeArgument( + type: Argument::Double, + name: 'heat_pump_heating_capacity_retention_fraction' + required: false, + display_name: 'Heat Pump: Heating Capacity Retention Fraction') + description: "The output heating capacity of the heat pump at a user-specified temperature (e.g., 17F or 5F) divided by the above nominal heating capacity. Applies to all heat pump types except #{HPXML::HVACTypeHeatPumpGroundToAir}. If not provided, the OS-HPXML default (see Air-to-Air Heat Pump, Mini-Split Heat Pump, Packaged Terminal Heat Pump, Room Air Conditioner w/ Reverse Cycle) is used.") + units: 'Frac') + + args << makeArgument( + type: Argument::Double, + name: 'heat_pump_heating_capacity_retention_temp' + required: false, + display_name: 'Heat Pump: Heating Capacity Retention Temperature') + description: "The user-specified temperature (e.g., 17F or 5F) for the above heating capacity retention fraction. Applies to all heat pump types except #{HPXML::HVACTypeHeatPumpGroundToAir}. Required if the Heating Capacity Retention Fraction is provided.") + units: 'F') + + args << makeArgument( + type: Argument::Double, + name: 'heat_pump_cooling_capacity' + required: false, + display_name: 'Heat Pump: Cooling Capacity') + description: "The output cooling capacity of the heat pump. If not provided, the OS-HPXML autosized default (see Air-to-Air Heat Pump, Mini-Split Heat Pump, Packaged Terminal Heat Pump, Room Air Conditioner w/ Reverse Cycle, Ground-to-Air Heat Pump) is used.") + units: 'Btu/hr') + + args << makeArgument( + type: Argument::Double, + name: 'heat_pump_cooling_autosizing_factor' + required: false, + display_name: 'Heat Pump: Cooling Autosizing Factor') + description: 'The capacity scaling factor applied to the auto-sizing methodology. If not provided, 1.0 is used.') + + args << makeArgument( + type: Argument::Double, + name: 'heat_pump_cooling_autosizing_limit' + required: false, + display_name: 'Heat Pump: Cooling Autosizing Limit') + description: 'The maximum capacity limit applied to the auto-sizing methodology. If not provided, no limit is used.') + units: 'Btu/hr') + + args << makeArgument( + type: Argument::Double, + name: 'heat_pump_fraction_heat_load_served' + required: false, + display_name: 'Heat Pump: Fraction Heat Load Served') + description: 'The heating load served by the heat pump.') + units: 'Frac') + + args << makeArgument( + type: Argument::Double, + name: 'heat_pump_fraction_cool_load_served' + required: false, + display_name: 'Heat Pump: Fraction Cool Load Served') + description: 'The cooling load served by the heat pump.') + units: 'Frac') + + args << makeArgument( + type: Argument::Double, + name: 'heat_pump_compressor_lockout_temp' + required: false, + display_name: 'Heat Pump: Compressor Lockout Temperature') + description: "The temperature below which the heat pump compressor is disabled. If both this and Backup Heating Lockout Temperature are provided and use the same value, it essentially defines a switchover temperature (for, e.g., a dual-fuel heat pump). Applies to all heat pump types other than #{HPXML::HVACTypeHeatPumpGroundToAir}. If not provided, the OS-HPXML default (see Air-to-Air Heat Pump, Mini-Split Heat Pump, Packaged Terminal Heat Pump, Room Air Conditioner w/ Reverse Cycle) is used.") + units: 'F') + + args << makeArgument( + type: Argument::Choice, + name: 'heat_pump_backup_type', heat_pump_backup_type_choices, false) + display_name: 'Heat Pump: Backup Type') + description: "The backup type of the heat pump. If '#{HPXML::HeatPumpBackupTypeIntegrated}', represents e.g. built-in electric strip heat or dual-fuel integrated furnace. If '#{HPXML::HeatPumpBackupTypeSeparate}', represents e.g. electric baseboard or boiler based on the Heating System 2 specified below. Use '#{Constants::None}' if there is no backup heating.") + + args << makeArgument( + type: Argument::Double, + name: 'heat_pump_backup_heating_autosizing_factor' + required: false, + display_name: 'Heat Pump: Backup Heating Autosizing Factor') + description: "The capacity scaling factor applied to the auto-sizing methodology if Backup Type is '#{HPXML::HeatPumpBackupTypeIntegrated}'. If not provided, 1.0 is used. If Backup Type is '#{HPXML::HeatPumpBackupTypeSeparate}', use Heating System 2: Heating Autosizing Factor.") + + args << makeArgument( + type: Argument::Double, + name: 'heat_pump_backup_heating_autosizing_limit' + required: false, + display_name: 'Heat Pump: Backup Heating Autosizing Limit') + description: "The maximum capacity limit applied to the auto-sizing methodology if Backup Type is '#{HPXML::HeatPumpBackupTypeIntegrated}'. If not provided, no limit is used. If Backup Type is '#{HPXML::HeatPumpBackupTypeSeparate}', use Heating System 2: Heating Autosizing Limit.") + units: 'Btu/hr') + + args << makeArgument( + type: Argument::Choice, + name: 'heat_pump_backup_fuel', heat_pump_backup_fuel_choices, false) + display_name: 'Heat Pump: Backup Fuel Type') + description: "The backup fuel type of the heat pump. Only applies if Backup Type is '#{HPXML::HeatPumpBackupTypeIntegrated}'.") + + args << makeArgument( + type: Argument::Double, + name: 'heat_pump_backup_heating_efficiency' + required: false, + display_name: 'Heat Pump: Backup Rated Efficiency') + description: "The backup rated efficiency value of the heat pump. Percent for electricity fuel type. AFUE otherwise. Only applies if Backup Type is '#{HPXML::HeatPumpBackupTypeIntegrated}'.") + + args << makeArgument( + type: Argument::Double, + name: 'heat_pump_backup_heating_capacity' + required: false, + display_name: 'Heat Pump: Backup Heating Capacity') + description: "The backup output heating capacity of the heat pump. If not provided, the OS-HPXML autosized default (see Backup) is used. Only applies if Backup Type is '#{HPXML::HeatPumpBackupTypeIntegrated}'.") + units: 'Btu/hr') + + args << makeArgument( + type: Argument::Double, + name: 'heat_pump_backup_heating_lockout_temp' + required: false, + display_name: 'Heat Pump: Backup Heating Lockout Temperature') + description: "The temperature above which the heat pump backup system is disabled. If both this and Compressor Lockout Temperature are provided and use the same value, it essentially defines a switchover temperature (for, e.g., a dual-fuel heat pump). Applies for both Backup Type of '#{HPXML::HeatPumpBackupTypeIntegrated}' and '#{HPXML::HeatPumpBackupTypeSeparate}'. If not provided, the OS-HPXML default (see Backup) is used.") + units: 'F') + + args << makeArgument( + type: Argument::Choice, + name: 'heat_pump_sizing_methodology', heat_pump_sizing_choices, false) + display_name: 'Heat Pump: Sizing Methodology') + description: "The auto-sizing methodology to use when the heat pump capacity is not provided. If not provided, the OS-HPXML default (see HPXML HVAC Sizing Control) is used.") + + args << makeArgument( + type: Argument::Choice, + name: 'heat_pump_backup_sizing_methodology', heat_pump_backup_sizing_choices, false) + display_name: 'Heat Pump: Backup Sizing Methodology') + description: "The auto-sizing methodology to use when the heat pump backup capacity is not provided. If not provided, the OS-HPXML default (see HPXML HVAC Sizing Control) is used.") + + name: 'heat_pump_is_ducted', + type: Argument::Boolean, + required: false, + display_name: 'Heat Pump: Is Ducted') + description: "Whether the heat pump is ducted or not. Only used for #{HPXML::HVACTypeHeatPumpMiniSplit}. It's assumed that #{HPXML::HVACTypeHeatPumpAirToAir} and #{HPXML::HVACTypeHeatPumpGroundToAir} are ducted, and #{HPXML::HVACTypeHeatPumpPTHP} and #{HPXML::HVACTypeHeatPumpRoom} are not ducted. If not provided, assumes not ducted.") + + args << makeArgument( + type: Argument::Double, + name: 'heat_pump_airflow_defect_ratio' + required: false, + display_name: 'Heat Pump: Airflow Defect Ratio') + description: "The airflow defect ratio, defined as (InstalledAirflow - DesignAirflow) / DesignAirflow, of the heat pump per ANSI/RESNET/ACCA Standard 310. A value of zero means no airflow defect. Applies only to #{HPXML::HVACTypeHeatPumpAirToAir}, ducted #{HPXML::HVACTypeHeatPumpMiniSplit}, and #{HPXML::HVACTypeHeatPumpGroundToAir}. If not provided, assumes no defect.") + units: 'Frac') + + args << makeArgument( + type: Argument::Double, + name: 'heat_pump_charge_defect_ratio' + required: false, + display_name: 'Heat Pump: Charge Defect Ratio') + description: 'The refrigerant charge defect ratio, defined as (InstalledCharge - DesignCharge) / DesignCharge, of the heat pump per ANSI/RESNET/ACCA Standard 310. A value of zero means no refrigerant charge defect. Applies to all heat pump types. If not provided, assumes no defect.') + units: 'Frac') + + args << makeArgument( + type: Argument::Double, + name: 'heat_pump_crankcase_heater_watts' + required: false, + display_name: 'Heat Pump: Crankcase Heater Power Watts') + description: "Heat Pump crankcase heater power consumption in Watts. Applies only to #{HPXML::HVACTypeHeatPumpAirToAir}, #{HPXML::HVACTypeHeatPumpMiniSplit}, #{HPXML::HVACTypeHeatPumpPTHP} and #{HPXML::HVACTypeHeatPumpRoom}. If not provided, the OS-HPXML default (see Air-to-Air Heat Pump, Mini-Split Heat Pump, Packaged Terminal Heat Pump, Room Air Conditioner w/ Reverse Cycle) is used.") + units: 'W') + perf_data_capacity_type_choices = OpenStudio::StringVector.new perf_data_capacity_type_choices << 'Absolute capacities' perf_data_capacity_type_choices << 'Normalized capacity fractions' - arg = OpenStudio::Measure::OSArgument.makeChoiceArgument('hvac_perf_data_capacity_type', perf_data_capacity_type_choices, false) - arg.setDisplayName('HVAC Detailed Performance Data: Capacity Type') - arg.setDescription('Type of capacity values for detailed performance data if available. Applies only to variable-speed air-source HVAC systems (central air conditioners, mini-split air conditioners, air-to-air heat pumps, and mini-split heat pumps).') - arg.setDefaultValue('Absolute capacities') - args << arg - - arg = OpenStudio::Measure::OSArgument.makeStringArgument('hvac_perf_data_heating_outdoor_temperatures', false) - arg.setDisplayName('HVAC Detailed Performance Data: Heating Outdoor Temperatures') - arg.setDescription('Outdoor temperatures of heating detailed performance data if available. Applies only to variable-speed air-source HVAC systems (central air conditioners, mini-split air conditioners, air-to-air heat pumps, and mini-split heat pumps). One of the outdoor temperatures must be 47 F. At least two performance data points are required using a comma-separated list.') - arg.setUnits('F') - args << arg - - arg = OpenStudio::Measure::OSArgument.makeStringArgument('hvac_perf_data_heating_min_speed_capacities', false) - arg.setDisplayName('HVAC Detailed Performance Data: Heating Minimum Speed Capacities') - arg.setDescription('Minimum speed capacities of heating detailed performance data if available. Applies only to variable-speed air-source HVAC systems (central air conditioners, mini-split air conditioners, air-to-air heat pumps, and mini-split heat pumps). At least two performance data points are required using a comma-separated list.') - arg.setUnits('Btu/hr or Frac') - args << arg - - arg = OpenStudio::Measure::OSArgument.makeStringArgument('hvac_perf_data_heating_max_speed_capacities', false) - arg.setDisplayName('HVAC Detailed Performance Data: Heating Maximum Speed Capacities') - arg.setDescription('Maximum speed capacities of heating detailed performance data if available. Applies only to variable-speed air-source HVAC systems (central air conditioners, mini-split air conditioners, air-to-air heat pumps, and mini-split heat pumps). At least two performance data points are required using a comma-separated list.') - arg.setUnits('Btu/hr or Frac') - args << arg - - arg = OpenStudio::Measure::OSArgument.makeStringArgument('hvac_perf_data_heating_min_speed_cops', false) - arg.setDisplayName('HVAC Detailed Performance Data: Heating Minimum Speed COPs') - arg.setDescription('Minimum speed efficiency COP values of heating detailed performance data if available. Applies only to variable-speed air-source HVAC systems (central air conditioners, mini-split air conditioners, air-to-air heat pumps, and mini-split heat pumps). At least two performance data points are required using a comma-separated list.') - arg.setUnits('W/W') - args << arg - - arg = OpenStudio::Measure::OSArgument.makeStringArgument('hvac_perf_data_heating_max_speed_cops', false) - arg.setDisplayName('HVAC Detailed Performance Data: Heating Maximum Speed COPs') - arg.setDescription('Maximum speed efficiency COP values of heating detailed performance data if available. Applies only to variable-speed air-source HVAC systems (central air conditioners, mini-split air conditioners, air-to-air heat pumps, and mini-split heat pumps). At least two performance data points are required using a comma-separated list.') - arg.setUnits('W/W') - args << arg - - arg = OpenStudio::Measure::OSArgument.makeStringArgument('hvac_perf_data_cooling_outdoor_temperatures', false) - arg.setDisplayName('HVAC Detailed Performance Data: Cooling Outdoor Temperatures') - arg.setDescription('Outdoor temperatures of cooling detailed performance data if available. Applies only to variable-speed air-source HVAC systems (central air conditioners, mini-split air conditioners, air-to-air heat pumps, and mini-split heat pumps). One of the outdoor temperatures must be 95 F. At least two performance data points are required using a comma-separated list.') - arg.setUnits('F') - args << arg - - arg = OpenStudio::Measure::OSArgument.makeStringArgument('hvac_perf_data_cooling_min_speed_capacities', false) - arg.setDisplayName('HVAC Detailed Performance Data: Cooling Minimum Speed Capacities') - arg.setDescription('Minimum speed capacities of cooling detailed performance data if available. Applies only to variable-speed air-source HVAC systems (central air conditioners, mini-split air conditioners, air-to-air heat pumps, and mini-split heat pumps). At least two performance data points are required using a comma-separated list.') - arg.setUnits('Btu/hr or Frac') - args << arg - - arg = OpenStudio::Measure::OSArgument.makeStringArgument('hvac_perf_data_cooling_max_speed_capacities', false) - arg.setDisplayName('HVAC Detailed Performance Data: Cooling Maximum Speed Capacities') - arg.setDescription('Maximum speed capacities of cooling detailed performance data if available. Applies only to variable-speed air-source HVAC systems (central air conditioners, mini-split air conditioners, air-to-air heat pumps, and mini-split heat pumps). At least two performance data points are required using a comma-separated list.') - arg.setUnits('Btu/hr or Frac') - args << arg - - arg = OpenStudio::Measure::OSArgument.makeStringArgument('hvac_perf_data_cooling_min_speed_cops', false) - arg.setDisplayName('HVAC Detailed Performance Data: Cooling Minimum Speed COPs') - arg.setDescription('Minimum speed efficiency COP values of cooling detailed performance data if available. Applies only to variable-speed air-source HVAC systems (central air conditioners, mini-split air conditioners, air-to-air heat pumps, and mini-split heat pumps). At least two performance data points are required using a comma-separated list.') - arg.setUnits('W/W') - args << arg - - arg = OpenStudio::Measure::OSArgument.makeStringArgument('hvac_perf_data_cooling_max_speed_cops', false) - arg.setDisplayName('HVAC Detailed Performance Data: Cooling Maximum Speed COPs') - arg.setDescription('Maximum speed efficiency COP values of cooling detailed performance data if available. Applies only to variable-speed air-source HVAC systems (central air conditioners, mini-split air conditioners, air-to-air heat pumps, and mini-split heat pumps). At least two performance data points are required using a comma-separated list.') - arg.setUnits('W/W') - args << arg - + args << makeArgument( + type: Argument::Choice, + name: 'hvac_perf_data_capacity_type', perf_data_capacity_type_choices, false) + display_name: 'HVAC Detailed Performance Data: Capacity Type') + description: 'Type of capacity values for detailed performance data if available. Applies only to variable-speed air-source HVAC systems (central air conditioners, mini-split air conditioners, air-to-air heat pumps, and mini-split heat pumps).') + + args << makeArgument( + type: Argument::String, + name: 'hvac_perf_data_heating_outdoor_temperatures' + required: false, + display_name: 'HVAC Detailed Performance Data: Heating Outdoor Temperatures') + description: 'Outdoor temperatures of heating detailed performance data if available. Applies only to variable-speed air-source HVAC systems (central air conditioners, mini-split air conditioners, air-to-air heat pumps, and mini-split heat pumps). One of the outdoor temperatures must be 47 F. At least two performance data points are required using a comma-separated list.') + units: 'F') + + args << makeArgument( + type: Argument::String, + name: 'hvac_perf_data_heating_min_speed_capacities' + required: false, + display_name: 'HVAC Detailed Performance Data: Heating Minimum Speed Capacities') + description: 'Minimum speed capacities of heating detailed performance data if available. Applies only to variable-speed air-source HVAC systems (central air conditioners, mini-split air conditioners, air-to-air heat pumps, and mini-split heat pumps). At least two performance data points are required using a comma-separated list.') + units: 'Btu/hr or Frac') + + args << makeArgument( + type: Argument::String, + name: 'hvac_perf_data_heating_max_speed_capacities' + required: false, + display_name: 'HVAC Detailed Performance Data: Heating Maximum Speed Capacities') + description: 'Maximum speed capacities of heating detailed performance data if available. Applies only to variable-speed air-source HVAC systems (central air conditioners, mini-split air conditioners, air-to-air heat pumps, and mini-split heat pumps). At least two performance data points are required using a comma-separated list.') + units: 'Btu/hr or Frac') + + args << makeArgument( + type: Argument::String, + name: 'hvac_perf_data_heating_min_speed_cops' + required: false, + display_name: 'HVAC Detailed Performance Data: Heating Minimum Speed COPs') + description: 'Minimum speed efficiency COP values of heating detailed performance data if available. Applies only to variable-speed air-source HVAC systems (central air conditioners, mini-split air conditioners, air-to-air heat pumps, and mini-split heat pumps). At least two performance data points are required using a comma-separated list.') + units: 'W/W') + + args << makeArgument( + type: Argument::String, + name: 'hvac_perf_data_heating_max_speed_cops' + required: false, + display_name: 'HVAC Detailed Performance Data: Heating Maximum Speed COPs') + description: 'Maximum speed efficiency COP values of heating detailed performance data if available. Applies only to variable-speed air-source HVAC systems (central air conditioners, mini-split air conditioners, air-to-air heat pumps, and mini-split heat pumps). At least two performance data points are required using a comma-separated list.') + units: 'W/W') + + args << makeArgument( + type: Argument::String, + name: 'hvac_perf_data_cooling_outdoor_temperatures' + required: false, + display_name: 'HVAC Detailed Performance Data: Cooling Outdoor Temperatures') + description: 'Outdoor temperatures of cooling detailed performance data if available. Applies only to variable-speed air-source HVAC systems (central air conditioners, mini-split air conditioners, air-to-air heat pumps, and mini-split heat pumps). One of the outdoor temperatures must be 95 F. At least two performance data points are required using a comma-separated list.') + units: 'F') + + args << makeArgument( + type: Argument::String, + name: 'hvac_perf_data_cooling_min_speed_capacities' + required: false, + display_name: 'HVAC Detailed Performance Data: Cooling Minimum Speed Capacities') + description: 'Minimum speed capacities of cooling detailed performance data if available. Applies only to variable-speed air-source HVAC systems (central air conditioners, mini-split air conditioners, air-to-air heat pumps, and mini-split heat pumps). At least two performance data points are required using a comma-separated list.') + units: 'Btu/hr or Frac') + + args << makeArgument( + type: Argument::String, + name: 'hvac_perf_data_cooling_max_speed_capacities' + required: false, + display_name: 'HVAC Detailed Performance Data: Cooling Maximum Speed Capacities') + description: 'Maximum speed capacities of cooling detailed performance data if available. Applies only to variable-speed air-source HVAC systems (central air conditioners, mini-split air conditioners, air-to-air heat pumps, and mini-split heat pumps). At least two performance data points are required using a comma-separated list.') + units: 'Btu/hr or Frac') + + args << makeArgument( + type: Argument::String, + name: 'hvac_perf_data_cooling_min_speed_cops' + required: false, + display_name: 'HVAC Detailed Performance Data: Cooling Minimum Speed COPs') + description: 'Minimum speed efficiency COP values of cooling detailed performance data if available. Applies only to variable-speed air-source HVAC systems (central air conditioners, mini-split air conditioners, air-to-air heat pumps, and mini-split heat pumps). At least two performance data points are required using a comma-separated list.') + units: 'W/W') + + args << makeArgument( + type: Argument::String, + name: 'hvac_perf_data_cooling_max_speed_cops' + required: false, + display_name: 'HVAC Detailed Performance Data: Cooling Maximum Speed COPs') + description: 'Maximum speed efficiency COP values of cooling detailed performance data if available. Applies only to variable-speed air-source HVAC systems (central air conditioners, mini-split air conditioners, air-to-air heat pumps, and mini-split heat pumps). At least two performance data points are required using a comma-separated list.') + units: 'W/W') + geothermal_loop_configuration_choices = OpenStudio::StringVector.new geothermal_loop_configuration_choices << Constants::None # geothermal_loop_configuration_choices << HPXML::GeothermalLoopLoopConfigurationDiagonal @@ -1724,77 +2104,92 @@ def makeArgument(name:, # geothermal_loop_configuration_choices << HPXML::GeothermalLoopLoopConfigurationOther geothermal_loop_configuration_choices << HPXML::GeothermalLoopLoopConfigurationVertical - arg = OpenStudio::Measure::OSArgument::makeChoiceArgument('geothermal_loop_configuration', geothermal_loop_configuration_choices, false) - arg.setDisplayName('Geothermal Loop: Configuration') - arg.setDescription("Configuration of the geothermal loop. Only applies to #{HPXML::HVACTypeHeatPumpGroundToAir} heat pump type. If not provided, the OS-HPXML default (see Ground-to-Air Heat Pump) is used.") - args << arg - + args << makeArgument( + type: Argument::Choice, + name: 'geothermal_loop_configuration', geothermal_loop_configuration_choices, false) + display_name: 'Geothermal Loop: Configuration') + description: "Configuration of the geothermal loop. Only applies to #{HPXML::HVACTypeHeatPumpGroundToAir} heat pump type. If not provided, the OS-HPXML default (see Ground-to-Air Heat Pump) is used.") + geothermal_loop_borefield_configuration_choices = OpenStudio::StringVector.new valid_bore_configs = HVACSizing.get_geothermal_loop_valid_configurations valid_bore_configs.keys.each do |valid_bore_config| geothermal_loop_borefield_configuration_choices << valid_bore_config end - arg = OpenStudio::Measure::OSArgument::makeChoiceArgument('geothermal_loop_borefield_configuration', geothermal_loop_borefield_configuration_choices, false) - arg.setDisplayName('Geothermal Loop: Borefield Configuration') - arg.setDescription("Borefield configuration of the geothermal loop. Only applies to #{HPXML::HVACTypeHeatPumpGroundToAir} heat pump type. If not provided, the OS-HPXML default (see HPXML Geothermal Loops) is used.") - args << arg - - arg = OpenStudio::Measure::OSArgument::makeDoubleArgument('geothermal_loop_loop_flow', false) - arg.setDisplayName('Geothermal Loop: Loop Flow') - arg.setDescription("Water flow rate through the geothermal loop. Only applies to #{HPXML::HVACTypeHeatPumpGroundToAir} heat pump type. If not provided, the OS-HPXML autosized default (see HPXML Geothermal Loops) is used.") - arg.setUnits('gpm') - args << arg - - arg = OpenStudio::Measure::OSArgument::makeIntegerArgument('geothermal_loop_boreholes_count', false) - arg.setDisplayName('Geothermal Loop: Boreholes Count') - arg.setDescription("Number of boreholes. Only applies to #{HPXML::HVACTypeHeatPumpGroundToAir} heat pump type. If not provided, the OS-HPXML autosized default (see HPXML Geothermal Loops) is used.") - arg.setUnits('#') - args << arg - - arg = OpenStudio::Measure::OSArgument::makeDoubleArgument('geothermal_loop_boreholes_length', false) - arg.setDisplayName('Geothermal Loop: Boreholes Length') - arg.setDescription("Average length of each borehole (vertical). Only applies to #{HPXML::HVACTypeHeatPumpGroundToAir} heat pump type. If not provided, the OS-HPXML autosized default (see HPXML Geothermal Loops) is used.") - arg.setUnits('ft') - args << arg - - arg = OpenStudio::Measure::OSArgument::makeDoubleArgument('geothermal_loop_boreholes_spacing', false) - arg.setDisplayName('Geothermal Loop: Boreholes Spacing') - arg.setDescription("Distance between bores. Only applies to #{HPXML::HVACTypeHeatPumpGroundToAir} heat pump type. If not provided, the OS-HPXML default (see HPXML Geothermal Loops) is used.") - arg.setUnits('ft') - args << arg - - arg = OpenStudio::Measure::OSArgument::makeDoubleArgument('geothermal_loop_boreholes_diameter', false) - arg.setDisplayName('Geothermal Loop: Boreholes Diameter') - arg.setDescription("Diameter of bores. Only applies to #{HPXML::HVACTypeHeatPumpGroundToAir} heat pump type. If not provided, the OS-HPXML default (see HPXML Geothermal Loops) is used.") - arg.setUnits('in') - args << arg + args << makeArgument( + type: Argument::Choice, + name: 'geothermal_loop_borefield_configuration', geothermal_loop_borefield_configuration_choices, false) + display_name: 'Geothermal Loop: Borefield Configuration') + description: "Borefield configuration of the geothermal loop. Only applies to #{HPXML::HVACTypeHeatPumpGroundToAir} heat pump type. If not provided, the OS-HPXML default (see HPXML Geothermal Loops) is used.") + + args << makeArgument( + type: Argument::Double, + name: 'geothermal_loop_loop_flow' + required: false, + display_name: 'Geothermal Loop: Loop Flow') + description: "Water flow rate through the geothermal loop. Only applies to #{HPXML::HVACTypeHeatPumpGroundToAir} heat pump type. If not provided, the OS-HPXML autosized default (see HPXML Geothermal Loops) is used.") + units: 'gpm') + + args << makeArgument( + type: Argument::Integer, + name: 'geothermal_loop_boreholes_count' + required: false, + display_name: 'Geothermal Loop: Boreholes Count') + description: "Number of boreholes. Only applies to #{HPXML::HVACTypeHeatPumpGroundToAir} heat pump type. If not provided, the OS-HPXML autosized default (see HPXML Geothermal Loops) is used.") + units: '#') + + args << makeArgument( + type: Argument::Double, + name: 'geothermal_loop_boreholes_length' + required: false, + display_name: 'Geothermal Loop: Boreholes Length') + description: "Average length of each borehole (vertical). Only applies to #{HPXML::HVACTypeHeatPumpGroundToAir} heat pump type. If not provided, the OS-HPXML autosized default (see HPXML Geothermal Loops) is used.") + units: 'ft') + + args << makeArgument( + type: Argument::Double, + name: 'geothermal_loop_boreholes_spacing' + required: false, + display_name: 'Geothermal Loop: Boreholes Spacing') + description: "Distance between bores. Only applies to #{HPXML::HVACTypeHeatPumpGroundToAir} heat pump type. If not provided, the OS-HPXML default (see HPXML Geothermal Loops) is used.") + units: 'ft') + + args << makeArgument( + type: Argument::Double, + name: 'geothermal_loop_boreholes_diameter' + required: false, + display_name: 'Geothermal Loop: Boreholes Diameter') + description: "Diameter of bores. Only applies to #{HPXML::HVACTypeHeatPumpGroundToAir} heat pump type. If not provided, the OS-HPXML default (see HPXML Geothermal Loops) is used.") + units: 'in') geothermal_loop_grout_or_pipe_type_choices = OpenStudio::StringVector.new geothermal_loop_grout_or_pipe_type_choices << HPXML::GeothermalLoopGroutOrPipeTypeStandard geothermal_loop_grout_or_pipe_type_choices << HPXML::GeothermalLoopGroutOrPipeTypeThermallyEnhanced - arg = OpenStudio::Measure::OSArgument::makeChoiceArgument('geothermal_loop_grout_type', geothermal_loop_grout_or_pipe_type_choices, false) - arg.setDisplayName('Geothermal Loop: Grout Type') - arg.setDescription("Grout type of the geothermal loop. Only applies to #{HPXML::HVACTypeHeatPumpGroundToAir} heat pump type. If not provided, the OS-HPXML default (see HPXML Geothermal Loops) is used.") - args << arg - - arg = OpenStudio::Measure::OSArgument::makeChoiceArgument('geothermal_loop_pipe_type', geothermal_loop_grout_or_pipe_type_choices, false) - arg.setDisplayName('Geothermal Loop: Pipe Type') - arg.setDescription("Pipe type of the geothermal loop. Only applies to #{HPXML::HVACTypeHeatPumpGroundToAir} heat pump type. If not provided, the OS-HPXML default (see HPXML Geothermal Loops) is used.") - args << arg - + args << makeArgument( + type: Argument::Choice, + name: 'geothermal_loop_grout_type', geothermal_loop_grout_or_pipe_type_choices, false) + display_name: 'Geothermal Loop: Grout Type') + description: "Grout type of the geothermal loop. Only applies to #{HPXML::HVACTypeHeatPumpGroundToAir} heat pump type. If not provided, the OS-HPXML default (see HPXML Geothermal Loops) is used.") + + args << makeArgument( + type: Argument::Choice, + name: 'geothermal_loop_pipe_type', geothermal_loop_grout_or_pipe_type_choices, false) + display_name: 'Geothermal Loop: Pipe Type') + description: "Pipe type of the geothermal loop. Only applies to #{HPXML::HVACTypeHeatPumpGroundToAir} heat pump type. If not provided, the OS-HPXML default (see HPXML Geothermal Loops) is used.") + geothermal_loop_pipe_diameter_choices = OpenStudio::StringVector.new geothermal_loop_pipe_diameter_choices << '3/4" pipe' geothermal_loop_pipe_diameter_choices << '1" pipe' geothermal_loop_pipe_diameter_choices << '1-1/4" pipe' - arg = OpenStudio::Measure::OSArgument::makeChoiceArgument('geothermal_loop_pipe_diameter', geothermal_loop_pipe_diameter_choices, false) - arg.setDisplayName('Geothermal Loop: Pipe Diameter') - arg.setDescription("Pipe diameter of the geothermal loop. Only applies to #{HPXML::HVACTypeHeatPumpGroundToAir} heat pump type. If not provided, the OS-HPXML default (see HPXML Geothermal Loops) is used.") - arg.setUnits('in') - args << arg - + args << makeArgument( + type: Argument::Choice, + name: 'geothermal_loop_pipe_diameter', geothermal_loop_pipe_diameter_choices, false) + display_name: 'Geothermal Loop: Pipe Diameter') + description: "Pipe diameter of the geothermal loop. Only applies to #{HPXML::HVACTypeHeatPumpGroundToAir} heat pump type. If not provided, the OS-HPXML default (see HPXML Geothermal Loops) is used.") + units: 'in') + heating_system_2_type_choices = OpenStudio::StringVector.new heating_system_2_type_choices << Constants::None heating_system_2_type_choices << HPXML::HVACTypeFurnace @@ -1806,100 +2201,122 @@ def makeArgument(name:, heating_system_2_type_choices << HPXML::HVACTypeSpaceHeater heating_system_2_type_choices << HPXML::HVACTypeFireplace - arg = OpenStudio::Measure::OSArgument::makeChoiceArgument('heating_system_2_type', heating_system_2_type_choices, false) - arg.setDisplayName('Heating System 2: Type') - arg.setDescription("The type of the second heating system. If a heat pump is specified and the backup type is '#{HPXML::HeatPumpBackupTypeSeparate}', this heating system represents '#{HPXML::HeatPumpBackupTypeSeparate}' backup heating. For ducted heat pumps where the backup heating system is a '#{HPXML::HVACTypeFurnace}', the backup would typically be characterized as '#{HPXML::HeatPumpBackupTypeIntegrated}' in that the furnace and heat pump share the same distribution system and blower fan; a '#{HPXML::HVACTypeFurnace}' as '#{HPXML::HeatPumpBackupTypeSeparate}' backup to a ducted heat pump is not supported. If not provided, defaults to none.") - arg.setDefaultValue(Constants::None) - args << arg - - arg = OpenStudio::Measure::OSArgument::makeChoiceArgument('heating_system_2_fuel', heating_system_fuel_choices, false) - arg.setDisplayName('Heating System 2: Fuel Type') - arg.setDescription("The fuel type of the second heating system. Ignored for #{HPXML::HVACTypeElectricResistance}.") - arg.setDefaultValue(HPXML::FuelTypeElectricity) - args << arg - - arg = OpenStudio::Measure::OSArgument::makeDoubleArgument('heating_system_2_heating_efficiency', false) - arg.setDisplayName('Heating System 2: Rated AFUE or Percent') - arg.setUnits('Frac') - arg.setDescription('The rated heating efficiency value of the second heating system.') - arg.setDefaultValue(1.0) - args << arg - - arg = OpenStudio::Measure::OSArgument::makeDoubleArgument('heating_system_2_heating_capacity', false) - arg.setDisplayName('Heating System 2: Heating Capacity') - arg.setDescription("The output heating capacity of the second heating system. If not provided, the OS-HPXML autosized default (see HPXML Heating Systems) is used.") - arg.setUnits('Btu/hr') - args << arg - - arg = OpenStudio::Measure::OSArgument::makeDoubleArgument('heating_system_2_heating_autosizing_factor', false) - arg.setDisplayName('Heating System 2: Heating Autosizing Factor') - arg.setDescription('The capacity scaling factor applied to the auto-sizing methodology. If not provided, 1.0 is used.') - args << arg - - arg = OpenStudio::Measure::OSArgument::makeDoubleArgument('heating_system_2_heating_autosizing_limit', false) - arg.setDisplayName('Heating System 2: Heating Autosizing Limit') - arg.setDescription('The maximum capacity limit applied to the auto-sizing methodology. If not provided, no limit is used.') - arg.setUnits('Btu/hr') - args << arg - - arg = OpenStudio::Measure::OSArgument::makeDoubleArgument('heating_system_2_fraction_heat_load_served', false) - arg.setDisplayName('Heating System 2: Fraction Heat Load Served') - arg.setDescription('The heat load served fraction of the second heating system. Ignored if this heating system serves as a backup system for a heat pump.') - arg.setUnits('Frac') - arg.setDefaultValue(0.25) - args << arg - - arg = OpenStudio::Measure::OSArgument::makeStringArgument('hvac_control_heating_weekday_setpoint', false) - arg.setDisplayName('HVAC Control: Heating Weekday Setpoint Schedule') - arg.setDescription('Specify the constant or 24-hour comma-separated weekday heating setpoint schedule. Required unless a detailed CSV schedule is provided.') - arg.setUnits('F') - args << arg - - arg = OpenStudio::Measure::OSArgument::makeStringArgument('hvac_control_heating_weekend_setpoint', false) - arg.setDisplayName('HVAC Control: Heating Weekend Setpoint Schedule') - arg.setDescription('Specify the constant or 24-hour comma-separated weekend heating setpoint schedule. Required unless a detailed CSV schedule is provided.') - arg.setUnits('F') - args << arg - - arg = OpenStudio::Measure::OSArgument::makeStringArgument('hvac_control_cooling_weekday_setpoint', false) - arg.setDisplayName('HVAC Control: Cooling Weekday Setpoint Schedule') - arg.setDescription('Specify the constant or 24-hour comma-separated weekday cooling setpoint schedule. Required unless a detailed CSV schedule is provided.') - arg.setUnits('F') - args << arg - - arg = OpenStudio::Measure::OSArgument::makeStringArgument('hvac_control_cooling_weekend_setpoint', false) - arg.setDisplayName('HVAC Control: Cooling Weekend Setpoint Schedule') - arg.setDescription('Specify the constant or 24-hour comma-separated weekend cooling setpoint schedule. Required unless a detailed CSV schedule is provided.') - arg.setUnits('F') - args << arg - - arg = OpenStudio::Measure::OSArgument::makeStringArgument('hvac_control_heating_season_period', false) - arg.setDisplayName('HVAC Control: Heating Season Period') - arg.setDescription("Enter a date range like 'Nov 1 - Jun 30'. If not provided, the OS-HPXML default (see HPXML HVAC Control) is used. Can also provide '#{Constants::BuildingAmerica}' to use automatic seasons from the Building America House Simulation Protocols.") - args << arg - - arg = OpenStudio::Measure::OSArgument::makeStringArgument('hvac_control_cooling_season_period', false) - arg.setDisplayName('HVAC Control: Cooling Season Period') - arg.setDescription("Enter a date range like 'Jun 1 - Oct 31'. If not provided, the OS-HPXML default (see HPXML HVAC Control) is used. Can also provide '#{Constants::BuildingAmerica}' to use automatic seasons from the Building America House Simulation Protocols.") - args << arg - - arg = OpenStudio::Measure::OSArgument::makeDoubleArgument('hvac_blower_fan_watts_per_cfm', false) - arg.setDisplayName('HVAC Blower: Fan Efficiency') - arg.setDescription("The blower fan efficiency at maximum fan speed. Applies only to split (not packaged) systems (i.e., applies to ducted systems as well as ductless #{HPXML::HVACTypeHeatPumpMiniSplit} systems). If not provided, the OS-HPXML default (see HPXML Heating Systems, HPXML Cooling Systems, HPXML Heat Pumps) is used.") - arg.setUnits('W/CFM') - args << arg - - duct_leakage_units_choices = OpenStudio::StringVector.new - duct_leakage_units_choices << HPXML::UnitsCFM25 - duct_leakage_units_choices << HPXML::UnitsCFM50 - duct_leakage_units_choices << HPXML::UnitsPercent - - duct_location_choices = OpenStudio::StringVector.new - duct_location_choices << HPXML::LocationConditionedSpace - duct_location_choices << HPXML::LocationBasementConditioned - duct_location_choices << HPXML::LocationBasementUnconditioned - duct_location_choices << HPXML::LocationCrawlspace - duct_location_choices << HPXML::LocationCrawlspaceVented + args << makeArgument( + type: Argument::Choice, + name: 'heating_system_2_type', heating_system_2_type_choices, false) + display_name: 'Heating System 2: Type') + description: "The type of the second heating system. If a heat pump is specified and the backup type is '#{HPXML::HeatPumpBackupTypeSeparate}', this heating system represents '#{HPXML::HeatPumpBackupTypeSeparate}' backup heating. For ducted heat pumps where the backup heating system is a '#{HPXML::HVACTypeFurnace}', the backup would typically be characterized as '#{HPXML::HeatPumpBackupTypeIntegrated}' in that the furnace and heat pump share the same distribution system and blower fan; a '#{HPXML::HVACTypeFurnace}' as '#{HPXML::HeatPumpBackupTypeSeparate}' backup to a ducted heat pump is not supported. If not provided, defaults to none.") + + args << makeArgument( + type: Argument::Choice, + name: 'heating_system_2_fuel', heating_system_fuel_choices, false) + display_name: 'Heating System 2: Fuel Type') + description: "The fuel type of the second heating system. Ignored for #{HPXML::HVACTypeElectricResistance}.") + + args << makeArgument( + type: Argument::Double, + name: 'heating_system_2_heating_efficiency' + required: false, + display_name: 'Heating System 2: Rated AFUE or Percent') + units: 'Frac') + description: 'The rated heating efficiency value of the second heating system.') + + args << makeArgument( + type: Argument::Double, + name: 'heating_system_2_heating_capacity' + required: false, + display_name: 'Heating System 2: Heating Capacity') + description: "The output heating capacity of the second heating system. If not provided, the OS-HPXML autosized default (see HPXML Heating Systems) is used.") + units: 'Btu/hr') + + args << makeArgument( + type: Argument::Double, + name: 'heating_system_2_heating_autosizing_factor' + required: false, + display_name: 'Heating System 2: Heating Autosizing Factor') + description: 'The capacity scaling factor applied to the auto-sizing methodology. If not provided, 1.0 is used.') + + args << makeArgument( + type: Argument::Double, + name: 'heating_system_2_heating_autosizing_limit' + required: false, + display_name: 'Heating System 2: Heating Autosizing Limit') + description: 'The maximum capacity limit applied to the auto-sizing methodology. If not provided, no limit is used.') + units: 'Btu/hr') + + args << makeArgument( + type: Argument::Double, + name: 'heating_system_2_fraction_heat_load_served' + required: false, + display_name: 'Heating System 2: Fraction Heat Load Served') + description: 'The heat load served fraction of the second heating system. Ignored if this heating system serves as a backup system for a heat pump.') + units: 'Frac') + + args << makeArgument( + type: Argument::String, + name: 'hvac_control_heating_weekday_setpoint' + required: false, + display_name: 'HVAC Control: Heating Weekday Setpoint Schedule') + description: 'Specify the constant or 24-hour comma-separated weekday heating setpoint schedule. Required unless a detailed CSV schedule is provided.') + units: 'F') + + args << makeArgument( + type: Argument::String, + name: 'hvac_control_heating_weekend_setpoint' + required: false, + display_name: 'HVAC Control: Heating Weekend Setpoint Schedule') + description: 'Specify the constant or 24-hour comma-separated weekend heating setpoint schedule. Required unless a detailed CSV schedule is provided.') + units: 'F') + + args << makeArgument( + type: Argument::String, + name: 'hvac_control_cooling_weekday_setpoint' + required: false, + display_name: 'HVAC Control: Cooling Weekday Setpoint Schedule') + description: 'Specify the constant or 24-hour comma-separated weekday cooling setpoint schedule. Required unless a detailed CSV schedule is provided.') + units: 'F') + + args << makeArgument( + type: Argument::String, + name: 'hvac_control_cooling_weekend_setpoint' + required: false, + display_name: 'HVAC Control: Cooling Weekend Setpoint Schedule') + description: 'Specify the constant or 24-hour comma-separated weekend cooling setpoint schedule. Required unless a detailed CSV schedule is provided.') + units: 'F') + + args << makeArgument( + type: Argument::String, + name: 'hvac_control_heating_season_period' + required: false, + display_name: 'HVAC Control: Heating Season Period') + description: "Enter a date range like 'Nov 1 - Jun 30'. If not provided, the OS-HPXML default (see HPXML HVAC Control) is used. Can also provide '#{Constants::BuildingAmerica}' to use automatic seasons from the Building America House Simulation Protocols.") + + args << makeArgument( + type: Argument::String, + name: 'hvac_control_cooling_season_period' + required: false, + display_name: 'HVAC Control: Cooling Season Period') + description: "Enter a date range like 'Jun 1 - Oct 31'. If not provided, the OS-HPXML default (see HPXML HVAC Control) is used. Can also provide '#{Constants::BuildingAmerica}' to use automatic seasons from the Building America House Simulation Protocols.") + + args << makeArgument( + type: Argument::Double, + name: 'hvac_blower_fan_watts_per_cfm' + required: false, + display_name: 'HVAC Blower: Fan Efficiency') + description: "The blower fan efficiency at maximum fan speed. Applies only to split (not packaged) systems (i.e., applies to ducted systems as well as ductless #{HPXML::HVACTypeHeatPumpMiniSplit} systems). If not provided, the OS-HPXML default (see HPXML Heating Systems, HPXML Cooling Systems, HPXML Heat Pumps) is used.") + units: 'W/CFM') + + duct_leakage_units_choices = OpenStudio::StringVector.new + duct_leakage_units_choices << HPXML::UnitsCFM25 + duct_leakage_units_choices << HPXML::UnitsCFM50 + duct_leakage_units_choices << HPXML::UnitsPercent + + duct_location_choices = OpenStudio::StringVector.new + duct_location_choices << HPXML::LocationConditionedSpace + duct_location_choices << HPXML::LocationBasementConditioned + duct_location_choices << HPXML::LocationBasementUnconditioned + duct_location_choices << HPXML::LocationCrawlspace + duct_location_choices << HPXML::LocationCrawlspaceVented duct_location_choices << HPXML::LocationCrawlspaceUnvented duct_location_choices << HPXML::LocationCrawlspaceConditioned duct_location_choices << HPXML::LocationAttic @@ -1916,106 +2333,128 @@ def makeArgument(name:, duct_location_choices << HPXML::LocationOtherNonFreezingSpace duct_location_choices << HPXML::LocationManufacturedHomeBelly - arg = OpenStudio::Measure::OSArgument::makeChoiceArgument('ducts_leakage_units', duct_leakage_units_choices, false) - arg.setDisplayName('Ducts: Leakage Units') - arg.setDescription('The leakage units of the ducts.') - arg.setDefaultValue(HPXML::UnitsPercent) - args << arg - - arg = OpenStudio::Measure::OSArgument::makeDoubleArgument('ducts_supply_leakage_to_outside_value', false) - arg.setDisplayName('Ducts: Supply Leakage to Outside Value') - arg.setDescription('The leakage value to outside for the supply ducts.') - arg.setDefaultValue(0.1) - args << arg - - arg = OpenStudio::Measure::OSArgument::makeChoiceArgument('ducts_supply_location', duct_location_choices, false) - arg.setDisplayName('Ducts: Supply Location') - arg.setDescription("The location of the supply ducts. If not provided, the OS-HPXML default (see Air Distribution) is used.") - args << arg - - arg = OpenStudio::Measure::OSArgument::makeDoubleArgument('ducts_supply_insulation_r', false) - arg.setDisplayName('Ducts: Supply Insulation R-Value') - arg.setDescription('The nominal insulation r-value of the supply ducts excluding air films. Use 0 for uninsulated ducts.') - arg.setUnits('h-ft^2-R/Btu') - arg.setDefaultValue(0) - args << arg - + args << makeArgument( + type: Argument::Choice, + name: 'ducts_leakage_units', duct_leakage_units_choices, false) + display_name: 'Ducts: Leakage Units') + description: 'The leakage units of the ducts.') + + args << makeArgument( + type: Argument::Double, + name: 'ducts_supply_leakage_to_outside_value' + required: false, + display_name: 'Ducts: Supply Leakage to Outside Value') + description: 'The leakage value to outside for the supply ducts.') + + args << makeArgument( + type: Argument::Choice, + name: 'ducts_supply_location', duct_location_choices, false) + display_name: 'Ducts: Supply Location') + description: "The location of the supply ducts. If not provided, the OS-HPXML default (see Air Distribution) is used.") + + args << makeArgument( + type: Argument::Double, + name: 'ducts_supply_insulation_r' + required: false, + display_name: 'Ducts: Supply Insulation R-Value') + description: 'The nominal insulation r-value of the supply ducts excluding air films. Use 0 for uninsulated ducts.') + units: 'h-ft^2-R/Btu') + duct_buried_level_choices = OpenStudio::StringVector.new duct_buried_level_choices << HPXML::DuctBuriedInsulationNone duct_buried_level_choices << HPXML::DuctBuriedInsulationPartial duct_buried_level_choices << HPXML::DuctBuriedInsulationFull duct_buried_level_choices << HPXML::DuctBuriedInsulationDeep - arg = OpenStudio::Measure::OSArgument::makeChoiceArgument('ducts_supply_buried_insulation_level', duct_buried_level_choices, false) - arg.setDisplayName('Ducts: Supply Buried Insulation Level') - arg.setDescription("Whether the supply ducts are buried in, e.g., attic loose-fill insulation. Partially buried ducts have insulation that does not cover the top of the ducts. Fully buried ducts have insulation that just covers the top of the ducts. Deeply buried ducts have insulation that continues above the top of the ducts. If not provided, the OS-HPXML default (see Air Distribution) is used.") - args << arg - - arg = OpenStudio::Measure::OSArgument::makeDoubleArgument('ducts_supply_surface_area', false) - arg.setDisplayName('Ducts: Supply Surface Area') - arg.setDescription("The supply ducts surface area in the given location. If neither Surface Area nor Area Fraction provided, the OS-HPXML default (see Air Distribution) is used.") - arg.setUnits('ft^2') - args << arg - - arg = OpenStudio::Measure::OSArgument::makeDoubleArgument('ducts_supply_surface_area_fraction', false) - arg.setDisplayName('Ducts: Supply Area Fraction') - arg.setDescription("The fraction of supply ducts surface area in the given location. Only used if Surface Area is not provided. If the fraction is less than 1, the remaining duct area is assumed to be in conditioned space. If neither Surface Area nor Area Fraction provided, the OS-HPXML default (see Air Distribution) is used.") - arg.setUnits('frac') - args << arg - - arg = OpenStudio::Measure::OSArgument::makeDoubleArgument('ducts_supply_fraction_rectangular', false) - arg.setDisplayName('Ducts: Supply Fraction Rectangular') - arg.setDescription("The fraction of supply ducts that are rectangular (as opposed to round); this affects the duct effective R-value used for modeling. If not provided, the OS-HPXML default (see Air Distribution) is used.") - arg.setUnits('frac') - args << arg - - arg = OpenStudio::Measure::OSArgument::makeDoubleArgument('ducts_return_leakage_to_outside_value', false) - arg.setDisplayName('Ducts: Return Leakage to Outside Value') - arg.setDescription('The leakage value to outside for the return ducts.') - arg.setDefaultValue(0.1) - args << arg - - arg = OpenStudio::Measure::OSArgument::makeChoiceArgument('ducts_return_location', duct_location_choices, false) - arg.setDisplayName('Ducts: Return Location') - arg.setDescription("The location of the return ducts. If not provided, the OS-HPXML default (see Air Distribution) is used.") - args << arg - - arg = OpenStudio::Measure::OSArgument::makeDoubleArgument('ducts_return_insulation_r', false) - arg.setDisplayName('Ducts: Return Insulation R-Value') - arg.setDescription('The nominal insulation r-value of the return ducts excluding air films. Use 0 for uninsulated ducts.') - arg.setUnits('h-ft^2-R/Btu') - arg.setDefaultValue(0) - args << arg - - arg = OpenStudio::Measure::OSArgument::makeChoiceArgument('ducts_return_buried_insulation_level', duct_buried_level_choices, false) - arg.setDisplayName('Ducts: Return Buried Insulation Level') - arg.setDescription("Whether the return ducts are buried in, e.g., attic loose-fill insulation. Partially buried ducts have insulation that does not cover the top of the ducts. Fully buried ducts have insulation that just covers the top of the ducts. Deeply buried ducts have insulation that continues above the top of the ducts. If not provided, the OS-HPXML default (see Air Distribution) is used.") - args << arg - - arg = OpenStudio::Measure::OSArgument::makeDoubleArgument('ducts_return_surface_area', false) - arg.setDisplayName('Ducts: Return Surface Area') - arg.setDescription("The return ducts surface area in the given location. If neither Surface Area nor Area Fraction provided, the OS-HPXML default (see Air Distribution) is used.") - arg.setUnits('ft^2') - args << arg - - arg = OpenStudio::Measure::OSArgument::makeDoubleArgument('ducts_return_surface_area_fraction', false) - arg.setDisplayName('Ducts: Return Area Fraction') - arg.setDescription("The fraction of return ducts surface area in the given location. Only used if Surface Area is not provided. If the fraction is less than 1, the remaining duct area is assumed to be in conditioned space. If neither Surface Area nor Area Fraction provided, the OS-HPXML default (see Air Distribution) is used.") - arg.setUnits('frac') - args << arg - - arg = OpenStudio::Measure::OSArgument::makeIntegerArgument('ducts_number_of_return_registers', false) - arg.setDisplayName('Ducts: Number of Return Registers') - arg.setDescription("The number of return registers of the ducts. Only used to calculate default return duct surface area. If not provided, the OS-HPXML default (see Air Distribution) is used.") - arg.setUnits('#') - args << arg - - arg = OpenStudio::Measure::OSArgument::makeDoubleArgument('ducts_return_fraction_rectangular', false) - arg.setDisplayName('Ducts: Return Fraction Rectangular') - arg.setDescription("The fraction of return ducts that are rectangular (as opposed to round); this affects the duct effective R-value used for modeling. If not provided, the OS-HPXML default (see Air Distribution) is used.") - arg.setUnits('frac') - args << arg - + args << makeArgument( + type: Argument::Choice, + name: 'ducts_supply_buried_insulation_level', duct_buried_level_choices, false) + display_name: 'Ducts: Supply Buried Insulation Level') + description: "Whether the supply ducts are buried in, e.g., attic loose-fill insulation. Partially buried ducts have insulation that does not cover the top of the ducts. Fully buried ducts have insulation that just covers the top of the ducts. Deeply buried ducts have insulation that continues above the top of the ducts. If not provided, the OS-HPXML default (see Air Distribution) is used.") + + args << makeArgument( + type: Argument::Double, + name: 'ducts_supply_surface_area' + required: false, + display_name: 'Ducts: Supply Surface Area') + description: "The supply ducts surface area in the given location. If neither Surface Area nor Area Fraction provided, the OS-HPXML default (see Air Distribution) is used.") + units: 'ft^2') + + args << makeArgument( + type: Argument::Double, + name: 'ducts_supply_surface_area_fraction' + required: false, + display_name: 'Ducts: Supply Area Fraction') + description: "The fraction of supply ducts surface area in the given location. Only used if Surface Area is not provided. If the fraction is less than 1, the remaining duct area is assumed to be in conditioned space. If neither Surface Area nor Area Fraction provided, the OS-HPXML default (see Air Distribution) is used.") + units: 'frac') + + args << makeArgument( + type: Argument::Double, + name: 'ducts_supply_fraction_rectangular' + required: false, + display_name: 'Ducts: Supply Fraction Rectangular') + description: "The fraction of supply ducts that are rectangular (as opposed to round); this affects the duct effective R-value used for modeling. If not provided, the OS-HPXML default (see Air Distribution) is used.") + units: 'frac') + + args << makeArgument( + type: Argument::Double, + name: 'ducts_return_leakage_to_outside_value' + required: false, + display_name: 'Ducts: Return Leakage to Outside Value') + description: 'The leakage value to outside for the return ducts.') + + args << makeArgument( + type: Argument::Choice, + name: 'ducts_return_location', duct_location_choices, false) + display_name: 'Ducts: Return Location') + description: "The location of the return ducts. If not provided, the OS-HPXML default (see Air Distribution) is used.") + + args << makeArgument( + type: Argument::Double, + name: 'ducts_return_insulation_r' + required: false, + display_name: 'Ducts: Return Insulation R-Value') + description: 'The nominal insulation r-value of the return ducts excluding air films. Use 0 for uninsulated ducts.') + units: 'h-ft^2-R/Btu') + + args << makeArgument( + type: Argument::Choice, + name: 'ducts_return_buried_insulation_level', duct_buried_level_choices, false) + display_name: 'Ducts: Return Buried Insulation Level') + description: "Whether the return ducts are buried in, e.g., attic loose-fill insulation. Partially buried ducts have insulation that does not cover the top of the ducts. Fully buried ducts have insulation that just covers the top of the ducts. Deeply buried ducts have insulation that continues above the top of the ducts. If not provided, the OS-HPXML default (see Air Distribution) is used.") + + args << makeArgument( + type: Argument::Double, + name: 'ducts_return_surface_area' + required: false, + display_name: 'Ducts: Return Surface Area') + description: "The return ducts surface area in the given location. If neither Surface Area nor Area Fraction provided, the OS-HPXML default (see Air Distribution) is used.") + units: 'ft^2') + + args << makeArgument( + type: Argument::Double, + name: 'ducts_return_surface_area_fraction' + required: false, + display_name: 'Ducts: Return Area Fraction') + description: "The fraction of return ducts surface area in the given location. Only used if Surface Area is not provided. If the fraction is less than 1, the remaining duct area is assumed to be in conditioned space. If neither Surface Area nor Area Fraction provided, the OS-HPXML default (see Air Distribution) is used.") + units: 'frac') + + args << makeArgument( + type: Argument::Integer, + name: 'ducts_number_of_return_registers' + required: false, + display_name: 'Ducts: Number of Return Registers') + description: "The number of return registers of the ducts. Only used to calculate default return duct surface area. If not provided, the OS-HPXML default (see Air Distribution) is used.") + units: '#') + + args << makeArgument( + type: Argument::Double, + name: 'ducts_return_fraction_rectangular' + required: false, + display_name: 'Ducts: Return Fraction Rectangular') + description: "The fraction of return ducts that are rectangular (as opposed to round); this affects the duct effective R-value used for modeling. If not provided, the OS-HPXML default (see Air Distribution) is used.") + units: 'frac') + mech_vent_fan_type_choices = OpenStudio::StringVector.new mech_vent_fan_type_choices << Constants::None mech_vent_fan_type_choices << HPXML::MechVentTypeExhaust @@ -2029,100 +2468,121 @@ def makeArgument(name:, mech_vent_recovery_efficiency_type_choices << 'Unadjusted' mech_vent_recovery_efficiency_type_choices << 'Adjusted' - arg = OpenStudio::Measure::OSArgument::makeChoiceArgument('mech_vent_fan_type', mech_vent_fan_type_choices, false) - arg.setDisplayName('Mechanical Ventilation: Fan Type') - arg.setDescription("The type of the mechanical ventilation. Use '#{Constants::None}' if there is no mechanical ventilation system. If not provided, defaults to none.") - arg.setDefaultValue(Constants::None) - args << arg - - arg = OpenStudio::Measure::OSArgument::makeDoubleArgument('mech_vent_flow_rate', false) - arg.setDisplayName('Mechanical Ventilation: Flow Rate') - arg.setDescription("The flow rate of the mechanical ventilation. If not provided, the OS-HPXML default (see HPXML Mechanical Ventilation Fans) is used.") - arg.setUnits('CFM') - args << arg - - arg = OpenStudio::Measure::OSArgument::makeDoubleArgument('mech_vent_hours_in_operation', false) - arg.setDisplayName('Mechanical Ventilation: Hours In Operation') - arg.setDescription("The hours in operation of the mechanical ventilation. If not provided, the OS-HPXML default (see HPXML Mechanical Ventilation Fans) is used.") - arg.setUnits('hrs/day') - args << arg - - arg = OpenStudio::Measure::OSArgument::makeChoiceArgument('mech_vent_recovery_efficiency_type', mech_vent_recovery_efficiency_type_choices, false) - arg.setDisplayName('Mechanical Ventilation: Total Recovery Efficiency Type') - arg.setDescription('The total recovery efficiency type of the mechanical ventilation.') - arg.setDefaultValue('Unadjusted') - args << arg - - arg = OpenStudio::Measure::OSArgument::makeDoubleArgument('mech_vent_total_recovery_efficiency', false) - arg.setDisplayName('Mechanical Ventilation: Total Recovery Efficiency') - arg.setDescription("The Unadjusted or Adjusted total recovery efficiency of the mechanical ventilation. Applies to #{HPXML::MechVentTypeERV}.") - arg.setUnits('Frac') - arg.setDefaultValue(0.48) - args << arg - - arg = OpenStudio::Measure::OSArgument::makeDoubleArgument('mech_vent_sensible_recovery_efficiency', false) - arg.setDisplayName('Mechanical Ventilation: Sensible Recovery Efficiency') - arg.setDescription("The Unadjusted or Adjusted sensible recovery efficiency of the mechanical ventilation. Applies to #{HPXML::MechVentTypeERV} and #{HPXML::MechVentTypeHRV}.") - arg.setUnits('Frac') - arg.setDefaultValue(0.72) - args << arg - - arg = OpenStudio::Measure::OSArgument::makeDoubleArgument('mech_vent_fan_power', false) - arg.setDisplayName('Mechanical Ventilation: Fan Power') - arg.setDescription("The fan power of the mechanical ventilation. If not provided, the OS-HPXML default (see HPXML Mechanical Ventilation Fans) is used.") - arg.setUnits('W') - args << arg - - arg = OpenStudio::Measure::OSArgument::makeIntegerArgument('mech_vent_num_units_served', false) - arg.setDisplayName('Mechanical Ventilation: Number of Units Served') - arg.setDescription("Number of dwelling units served by the mechanical ventilation system. Must be 1 if #{HPXML::ResidentialTypeSFD}. Used to apportion flow rate and fan power to the unit.") - arg.setUnits('#') - arg.setDefaultValue(1) - args << arg - - arg = OpenStudio::Measure::OSArgument::makeDoubleArgument('mech_vent_shared_frac_recirculation', false) - arg.setDisplayName('Shared Mechanical Ventilation: Fraction Recirculation') - arg.setDescription('Fraction of the total supply air that is recirculated, with the remainder assumed to be outdoor air. The value must be 0 for exhaust only systems. Required for a shared mechanical ventilation system.') - arg.setUnits('Frac') - args << arg - - arg = OpenStudio::Measure::OSArgument::makeChoiceArgument('mech_vent_shared_preheating_fuel', heating_system_fuel_choices, false) - arg.setDisplayName('Shared Mechanical Ventilation: Preheating Fuel') - arg.setDescription('Fuel type of the preconditioning heating equipment. Only used for a shared mechanical ventilation system. If not provided, assumes no preheating.') - args << arg - - arg = OpenStudio::Measure::OSArgument::makeDoubleArgument('mech_vent_shared_preheating_efficiency', false) - arg.setDisplayName('Shared Mechanical Ventilation: Preheating Efficiency') - arg.setDescription('Efficiency of the preconditioning heating equipment. Only used for a shared mechanical ventilation system. If not provided, assumes no preheating.') - arg.setUnits('COP') - args << arg - - arg = OpenStudio::Measure::OSArgument::makeDoubleArgument('mech_vent_shared_preheating_fraction_heat_load_served', false) - arg.setDisplayName('Shared Mechanical Ventilation: Preheating Fraction Ventilation Heat Load Served') - arg.setDescription('Fraction of heating load introduced by the shared ventilation system that is met by the preconditioning heating equipment. If not provided, assumes no preheating.') - arg.setUnits('Frac') - args << arg - + args << makeArgument( + type: Argument::Choice, + name: 'mech_vent_fan_type', mech_vent_fan_type_choices, false) + display_name: 'Mechanical Ventilation: Fan Type') + description: "The type of the mechanical ventilation. Use '#{Constants::None}' if there is no mechanical ventilation system. If not provided, defaults to none.") + + args << makeArgument( + type: Argument::Double, + name: 'mech_vent_flow_rate' + required: false, + display_name: 'Mechanical Ventilation: Flow Rate') + description: "The flow rate of the mechanical ventilation. If not provided, the OS-HPXML default (see HPXML Mechanical Ventilation Fans) is used.") + units: 'CFM') + + args << makeArgument( + type: Argument::Double, + name: 'mech_vent_hours_in_operation' + required: false, + display_name: 'Mechanical Ventilation: Hours In Operation') + description: "The hours in operation of the mechanical ventilation. If not provided, the OS-HPXML default (see HPXML Mechanical Ventilation Fans) is used.") + units: 'hrs/day') + + args << makeArgument( + type: Argument::Choice, + name: 'mech_vent_recovery_efficiency_type', mech_vent_recovery_efficiency_type_choices, false) + display_name: 'Mechanical Ventilation: Total Recovery Efficiency Type') + description: 'The total recovery efficiency type of the mechanical ventilation.') + + args << makeArgument( + type: Argument::Double, + name: 'mech_vent_total_recovery_efficiency' + required: false, + display_name: 'Mechanical Ventilation: Total Recovery Efficiency') + description: "The Unadjusted or Adjusted total recovery efficiency of the mechanical ventilation. Applies to #{HPXML::MechVentTypeERV}.") + units: 'Frac') + + args << makeArgument( + type: Argument::Double, + name: 'mech_vent_sensible_recovery_efficiency' + required: false, + display_name: 'Mechanical Ventilation: Sensible Recovery Efficiency') + description: "The Unadjusted or Adjusted sensible recovery efficiency of the mechanical ventilation. Applies to #{HPXML::MechVentTypeERV} and #{HPXML::MechVentTypeHRV}.") + units: 'Frac') + + args << makeArgument( + type: Argument::Double, + name: 'mech_vent_fan_power' + required: false, + display_name: 'Mechanical Ventilation: Fan Power') + description: "The fan power of the mechanical ventilation. If not provided, the OS-HPXML default (see HPXML Mechanical Ventilation Fans) is used.") + units: 'W') + + args << makeArgument( + type: Argument::Integer, + name: 'mech_vent_num_units_served' + required: false, + display_name: 'Mechanical Ventilation: Number of Units Served') + description: "Number of dwelling units served by the mechanical ventilation system. Must be 1 if #{HPXML::ResidentialTypeSFD}. Used to apportion flow rate and fan power to the unit.") + units: '#') + + args << makeArgument( + type: Argument::Double, + name: 'mech_vent_shared_frac_recirculation' + required: false, + display_name: 'Shared Mechanical Ventilation: Fraction Recirculation') + description: 'Fraction of the total supply air that is recirculated, with the remainder assumed to be outdoor air. The value must be 0 for exhaust only systems. Required for a shared mechanical ventilation system.') + units: 'Frac') + + args << makeArgument( + type: Argument::Choice, + name: 'mech_vent_shared_preheating_fuel', heating_system_fuel_choices, false) + display_name: 'Shared Mechanical Ventilation: Preheating Fuel') + description: 'Fuel type of the preconditioning heating equipment. Only used for a shared mechanical ventilation system. If not provided, assumes no preheating.') + + args << makeArgument( + type: Argument::Double, + name: 'mech_vent_shared_preheating_efficiency' + required: false, + display_name: 'Shared Mechanical Ventilation: Preheating Efficiency') + description: 'Efficiency of the preconditioning heating equipment. Only used for a shared mechanical ventilation system. If not provided, assumes no preheating.') + units: 'COP') + + args << makeArgument( + type: Argument::Double, + name: 'mech_vent_shared_preheating_fraction_heat_load_served' + required: false, + display_name: 'Shared Mechanical Ventilation: Preheating Fraction Ventilation Heat Load Served') + description: 'Fraction of heating load introduced by the shared ventilation system that is met by the preconditioning heating equipment. If not provided, assumes no preheating.') + units: 'Frac') + cooling_system_fuel_choices = OpenStudio::StringVector.new cooling_system_fuel_choices << HPXML::FuelTypeElectricity - arg = OpenStudio::Measure::OSArgument::makeChoiceArgument('mech_vent_shared_precooling_fuel', cooling_system_fuel_choices, false) - arg.setDisplayName('Shared Mechanical Ventilation: Precooling Fuel') - arg.setDescription('Fuel type of the preconditioning cooling equipment. Only used for a shared mechanical ventilation system. If not provided, assumes no precooling.') - args << arg - - arg = OpenStudio::Measure::OSArgument::makeDoubleArgument('mech_vent_shared_precooling_efficiency', false) - arg.setDisplayName('Shared Mechanical Ventilation: Precooling Efficiency') - arg.setDescription('Efficiency of the preconditioning cooling equipment. Only used for a shared mechanical ventilation system. If not provided, assumes no precooling.') - arg.setUnits('COP') - args << arg - - arg = OpenStudio::Measure::OSArgument::makeDoubleArgument('mech_vent_shared_precooling_fraction_cool_load_served', false) - arg.setDisplayName('Shared Mechanical Ventilation: Precooling Fraction Ventilation Cool Load Served') - arg.setDescription('Fraction of cooling load introduced by the shared ventilation system that is met by the preconditioning cooling equipment. If not provided, assumes no precooling.') - arg.setUnits('Frac') - args << arg - + args << makeArgument( + type: Argument::Choice, + name: 'mech_vent_shared_precooling_fuel', cooling_system_fuel_choices, false) + display_name: 'Shared Mechanical Ventilation: Precooling Fuel') + description: 'Fuel type of the preconditioning cooling equipment. Only used for a shared mechanical ventilation system. If not provided, assumes no precooling.') + + args << makeArgument( + type: Argument::Double, + name: 'mech_vent_shared_precooling_efficiency' + required: false, + display_name: 'Shared Mechanical Ventilation: Precooling Efficiency') + description: 'Efficiency of the preconditioning cooling equipment. Only used for a shared mechanical ventilation system. If not provided, assumes no precooling.') + units: 'COP') + + args << makeArgument( + type: Argument::Double, + name: 'mech_vent_shared_precooling_fraction_cool_load_served' + required: false, + display_name: 'Shared Mechanical Ventilation: Precooling Fraction Ventilation Cool Load Served') + description: 'Fraction of cooling load introduced by the shared ventilation system that is met by the preconditioning cooling equipment. If not provided, assumes no precooling.') + units: 'Frac') + mech_vent_2_fan_type_choices = OpenStudio::StringVector.new mech_vent_2_fan_type_choices << Constants::None mech_vent_2_fan_type_choices << HPXML::MechVentTypeExhaust @@ -2131,131 +2591,161 @@ def makeArgument(name:, mech_vent_2_fan_type_choices << HPXML::MechVentTypeHRV mech_vent_2_fan_type_choices << HPXML::MechVentTypeBalanced - arg = OpenStudio::Measure::OSArgument::makeChoiceArgument('mech_vent_2_fan_type', mech_vent_2_fan_type_choices, false) - arg.setDisplayName('Mechanical Ventilation 2: Fan Type') - arg.setDescription("The type of the second mechanical ventilation. Use '#{Constants::None}' if there is no second mechanical ventilation system. If not provided, defaults to none.") - arg.setDefaultValue(Constants::None) - args << arg - - arg = OpenStudio::Measure::OSArgument::makeDoubleArgument('mech_vent_2_flow_rate', false) - arg.setDisplayName('Mechanical Ventilation 2: Flow Rate') - arg.setDescription('The flow rate of the second mechanical ventilation.') - arg.setUnits('CFM') - arg.setDefaultValue(110) - args << arg - - arg = OpenStudio::Measure::OSArgument::makeDoubleArgument('mech_vent_2_hours_in_operation', false) - arg.setDisplayName('Mechanical Ventilation 2: Hours In Operation') - arg.setDescription('The hours in operation of the second mechanical ventilation.') - arg.setUnits('hrs/day') - arg.setDefaultValue(24) - args << arg - - arg = OpenStudio::Measure::OSArgument::makeChoiceArgument('mech_vent_2_recovery_efficiency_type', mech_vent_recovery_efficiency_type_choices, false) - arg.setDisplayName('Mechanical Ventilation 2: Total Recovery Efficiency Type') - arg.setDescription('The total recovery efficiency type of the second mechanical ventilation.') - arg.setDefaultValue('Unadjusted') - args << arg - - arg = OpenStudio::Measure::OSArgument::makeDoubleArgument('mech_vent_2_total_recovery_efficiency', false) - arg.setDisplayName('Mechanical Ventilation 2: Total Recovery Efficiency') - arg.setDescription("The Unadjusted or Adjusted total recovery efficiency of the second mechanical ventilation. Applies to #{HPXML::MechVentTypeERV}.") - arg.setUnits('Frac') - arg.setDefaultValue(0.48) - args << arg - - arg = OpenStudio::Measure::OSArgument::makeDoubleArgument('mech_vent_2_sensible_recovery_efficiency', false) - arg.setDisplayName('Mechanical Ventilation 2: Sensible Recovery Efficiency') - arg.setDescription("The Unadjusted or Adjusted sensible recovery efficiency of the second mechanical ventilation. Applies to #{HPXML::MechVentTypeERV} and #{HPXML::MechVentTypeHRV}.") - arg.setUnits('Frac') - arg.setDefaultValue(0.72) - args << arg - - arg = OpenStudio::Measure::OSArgument::makeDoubleArgument('mech_vent_2_fan_power', false) - arg.setDisplayName('Mechanical Ventilation 2: Fan Power') - arg.setDescription('The fan power of the second mechanical ventilation.') - arg.setUnits('W') - arg.setDefaultValue(30) - args << arg - - arg = OpenStudio::Measure::OSArgument::makeIntegerArgument('kitchen_fans_quantity', false) - arg.setDisplayName('Kitchen Fans: Quantity') - arg.setDescription("The quantity of the kitchen fans. If not provided, the OS-HPXML default (see HPXML Local Ventilation Fans) is used.") - arg.setUnits('#') - args << arg - - arg = OpenStudio::Measure::OSArgument::makeDoubleArgument('kitchen_fans_flow_rate', false) - arg.setDisplayName('Kitchen Fans: Flow Rate') - arg.setDescription("The flow rate of the kitchen fan. If not provided, the OS-HPXML default (see HPXML Local Ventilation Fans) is used.") - arg.setUnits('CFM') - args << arg - - arg = OpenStudio::Measure::OSArgument::makeDoubleArgument('kitchen_fans_hours_in_operation', false) - arg.setDisplayName('Kitchen Fans: Hours In Operation') - arg.setDescription("The hours in operation of the kitchen fan. If not provided, the OS-HPXML default (see HPXML Local Ventilation Fans) is used.") - arg.setUnits('hrs/day') - args << arg - - arg = OpenStudio::Measure::OSArgument::makeDoubleArgument('kitchen_fans_power', false) - arg.setDisplayName('Kitchen Fans: Fan Power') - arg.setDescription("The fan power of the kitchen fan. If not provided, the OS-HPXML default (see HPXML Local Ventilation Fans) is used.") - arg.setUnits('W') - args << arg - - arg = OpenStudio::Measure::OSArgument::makeIntegerArgument('kitchen_fans_start_hour', false) - arg.setDisplayName('Kitchen Fans: Start Hour') - arg.setDescription("The start hour of the kitchen fan. If not provided, the OS-HPXML default (see HPXML Local Ventilation Fans) is used.") - arg.setUnits('hr') - args << arg - - arg = OpenStudio::Measure::OSArgument::makeIntegerArgument('bathroom_fans_quantity', false) - arg.setDisplayName('Bathroom Fans: Quantity') - arg.setDescription("The quantity of the bathroom fans. If not provided, the OS-HPXML default (see HPXML Local Ventilation Fans) is used.") - arg.setUnits('#') - args << arg - - arg = OpenStudio::Measure::OSArgument::makeDoubleArgument('bathroom_fans_flow_rate', false) - arg.setDisplayName('Bathroom Fans: Flow Rate') - arg.setDescription("The flow rate of the bathroom fans. If not provided, the OS-HPXML default (see HPXML Local Ventilation Fans) is used.") - arg.setUnits('CFM') - args << arg - - arg = OpenStudio::Measure::OSArgument::makeDoubleArgument('bathroom_fans_hours_in_operation', false) - arg.setDisplayName('Bathroom Fans: Hours In Operation') - arg.setDescription("The hours in operation of the bathroom fans. If not provided, the OS-HPXML default (see HPXML Local Ventilation Fans) is used.") - arg.setUnits('hrs/day') - args << arg - - arg = OpenStudio::Measure::OSArgument::makeDoubleArgument('bathroom_fans_power', false) - arg.setDisplayName('Bathroom Fans: Fan Power') - arg.setDescription("The fan power of the bathroom fans. If not provided, the OS-HPXML default (see HPXML Local Ventilation Fans) is used.") - arg.setUnits('W') - args << arg - - arg = OpenStudio::Measure::OSArgument::makeIntegerArgument('bathroom_fans_start_hour', false) - arg.setDisplayName('Bathroom Fans: Start Hour') - arg.setDescription("The start hour of the bathroom fans. If not provided, the OS-HPXML default (see HPXML Local Ventilation Fans) is used.") - arg.setUnits('hr') - args << arg - - arg = OpenStudio::Measure::OSArgument::makeBoolArgument('whole_house_fan_present', false) - arg.setDisplayName('Whole House Fan: Present') - arg.setDescription('Whether there is a whole house fan.') - arg.setDefaultValue(false) - args << arg - - arg = OpenStudio::Measure::OSArgument::makeDoubleArgument('whole_house_fan_flow_rate', false) - arg.setDisplayName('Whole House Fan: Flow Rate') - arg.setDescription("The flow rate of the whole house fan. If not provided, the OS-HPXML default (see HPXML Whole House Fans) is used.") - arg.setUnits('CFM') - args << arg - - arg = OpenStudio::Measure::OSArgument::makeDoubleArgument('whole_house_fan_power', false) - arg.setDisplayName('Whole House Fan: Fan Power') - arg.setDescription("The fan power of the whole house fan. If not provided, the OS-HPXML default (see HPXML Whole House Fans) is used.") - arg.setUnits('W') - args << arg - + args << makeArgument( + type: Argument::Choice, + name: 'mech_vent_2_fan_type', mech_vent_2_fan_type_choices, false) + display_name: 'Mechanical Ventilation 2: Fan Type') + description: "The type of the second mechanical ventilation. Use '#{Constants::None}' if there is no second mechanical ventilation system. If not provided, defaults to none.") + + args << makeArgument( + type: Argument::Double, + name: 'mech_vent_2_flow_rate' + required: false, + display_name: 'Mechanical Ventilation 2: Flow Rate') + description: 'The flow rate of the second mechanical ventilation.') + units: 'CFM') + + args << makeArgument( + type: Argument::Double, + name: 'mech_vent_2_hours_in_operation' + required: false, + display_name: 'Mechanical Ventilation 2: Hours In Operation') + description: 'The hours in operation of the second mechanical ventilation.') + units: 'hrs/day') + + args << makeArgument( + type: Argument::Choice, + name: 'mech_vent_2_recovery_efficiency_type', mech_vent_recovery_efficiency_type_choices, false) + display_name: 'Mechanical Ventilation 2: Total Recovery Efficiency Type') + description: 'The total recovery efficiency type of the second mechanical ventilation.') + + args << makeArgument( + type: Argument::Double, + name: 'mech_vent_2_total_recovery_efficiency' + required: false, + display_name: 'Mechanical Ventilation 2: Total Recovery Efficiency') + description: "The Unadjusted or Adjusted total recovery efficiency of the second mechanical ventilation. Applies to #{HPXML::MechVentTypeERV}.") + units: 'Frac') + + args << makeArgument( + type: Argument::Double, + name: 'mech_vent_2_sensible_recovery_efficiency' + required: false, + display_name: 'Mechanical Ventilation 2: Sensible Recovery Efficiency') + description: "The Unadjusted or Adjusted sensible recovery efficiency of the second mechanical ventilation. Applies to #{HPXML::MechVentTypeERV} and #{HPXML::MechVentTypeHRV}.") + units: 'Frac') + + args << makeArgument( + type: Argument::Double, + name: 'mech_vent_2_fan_power' + required: false, + display_name: 'Mechanical Ventilation 2: Fan Power') + description: 'The fan power of the second mechanical ventilation.') + units: 'W') + + args << makeArgument( + type: Argument::Integer, + name: 'kitchen_fans_quantity' + required: false, + display_name: 'Kitchen Fans: Quantity') + description: "The quantity of the kitchen fans. If not provided, the OS-HPXML default (see HPXML Local Ventilation Fans) is used.") + units: '#') + + args << makeArgument( + type: Argument::Double, + name: 'kitchen_fans_flow_rate' + required: false, + display_name: 'Kitchen Fans: Flow Rate') + description: "The flow rate of the kitchen fan. If not provided, the OS-HPXML default (see HPXML Local Ventilation Fans) is used.") + units: 'CFM') + + args << makeArgument( + type: Argument::Double, + name: 'kitchen_fans_hours_in_operation' + required: false, + display_name: 'Kitchen Fans: Hours In Operation') + description: "The hours in operation of the kitchen fan. If not provided, the OS-HPXML default (see HPXML Local Ventilation Fans) is used.") + units: 'hrs/day') + + args << makeArgument( + type: Argument::Double, + name: 'kitchen_fans_power' + required: false, + display_name: 'Kitchen Fans: Fan Power') + description: "The fan power of the kitchen fan. If not provided, the OS-HPXML default (see HPXML Local Ventilation Fans) is used.") + units: 'W') + + args << makeArgument( + type: Argument::Integer, + name: 'kitchen_fans_start_hour' + required: false, + display_name: 'Kitchen Fans: Start Hour') + description: "The start hour of the kitchen fan. If not provided, the OS-HPXML default (see HPXML Local Ventilation Fans) is used.") + units: 'hr') + + args << makeArgument( + type: Argument::Integer, + name: 'bathroom_fans_quantity' + required: false, + display_name: 'Bathroom Fans: Quantity') + description: "The quantity of the bathroom fans. If not provided, the OS-HPXML default (see HPXML Local Ventilation Fans) is used.") + units: '#') + + args << makeArgument( + type: Argument::Double, + name: 'bathroom_fans_flow_rate' + required: false, + display_name: 'Bathroom Fans: Flow Rate') + description: "The flow rate of the bathroom fans. If not provided, the OS-HPXML default (see HPXML Local Ventilation Fans) is used.") + units: 'CFM') + + args << makeArgument( + type: Argument::Double, + name: 'bathroom_fans_hours_in_operation' + required: false, + display_name: 'Bathroom Fans: Hours In Operation') + description: "The hours in operation of the bathroom fans. If not provided, the OS-HPXML default (see HPXML Local Ventilation Fans) is used.") + units: 'hrs/day') + + args << makeArgument( + type: Argument::Double, + name: 'bathroom_fans_power' + required: false, + display_name: 'Bathroom Fans: Fan Power') + description: "The fan power of the bathroom fans. If not provided, the OS-HPXML default (see HPXML Local Ventilation Fans) is used.") + units: 'W') + + args << makeArgument( + type: Argument::Integer, + name: 'bathroom_fans_start_hour' + required: false, + display_name: 'Bathroom Fans: Start Hour') + description: "The start hour of the bathroom fans. If not provided, the OS-HPXML default (see HPXML Local Ventilation Fans) is used.") + units: 'hr') + + args << makeArgument( + name: 'whole_house_fan_present', + type: Argument::Boolean, + required: false, + display_name: 'Whole House Fan: Present') + description: 'Whether there is a whole house fan.') + + args << makeArgument( + type: Argument::Double, + name: 'whole_house_fan_flow_rate' + required: false, + display_name: 'Whole House Fan: Flow Rate') + description: "The flow rate of the whole house fan. If not provided, the OS-HPXML default (see HPXML Whole House Fans) is used.") + units: 'CFM') + + args << makeArgument( + type: Argument::Double, + name: 'whole_house_fan_power' + required: false, + display_name: 'Whole House Fan: Fan Power') + description: "The fan power of the whole house fan. If not provided, the OS-HPXML default (see HPXML Whole House Fans) is used.") + units: 'W') + water_heater_type_choices = OpenStudio::StringVector.new water_heater_type_choices << Constants::None water_heater_type_choices << HPXML::WaterHeaterTypeStorage @@ -2300,127 +2790,152 @@ def makeArgument(name:, water_heater_usage_bin_choices << HPXML::WaterHeaterUsageBinMedium water_heater_usage_bin_choices << HPXML::WaterHeaterUsageBinHigh - arg = OpenStudio::Measure::OSArgument::makeChoiceArgument('water_heater_type', water_heater_type_choices, true) - arg.setDisplayName('Water Heater: Type') - arg.setDescription("The type of water heater. Use '#{Constants::None}' if there is no water heater.") - arg.setDefaultValue(HPXML::WaterHeaterTypeStorage) - args << arg - - arg = OpenStudio::Measure::OSArgument::makeChoiceArgument('water_heater_fuel_type', water_heater_fuel_choices, false) - arg.setDisplayName('Water Heater: Fuel Type') - arg.setDescription("The fuel type of water heater. Ignored for #{HPXML::WaterHeaterTypeHeatPump}.") - arg.setDefaultValue(HPXML::FuelTypeNaturalGas) - args << arg - - arg = OpenStudio::Measure::OSArgument::makeChoiceArgument('water_heater_location', water_heater_location_choices, false) - arg.setDisplayName('Water Heater: Location') - arg.setDescription("The location of water heater. If not provided, the OS-HPXML default (see HPXML Water Heating Systems) is used.") - args << arg - - arg = OpenStudio::Measure::OSArgument::makeDoubleArgument('water_heater_tank_volume', false) - arg.setDisplayName('Water Heater: Tank Volume') - arg.setDescription("Nominal volume of water heater tank. If not provided, the OS-HPXML default (see Conventional Storage, Heat Pump, Combi Boiler w/ Storage) is used.") - arg.setUnits('gal') - args << arg - - arg = OpenStudio::Measure::OSArgument::makeChoiceArgument('water_heater_efficiency_type', water_heater_efficiency_type_choices, false) - arg.setDisplayName('Water Heater: Efficiency Type') - arg.setDescription('The efficiency type of water heater. Does not apply to space-heating boilers.') - arg.setDefaultValue('EnergyFactor') - args << arg - - arg = OpenStudio::Measure::OSArgument::makeDoubleArgument('water_heater_efficiency', false) - arg.setDisplayName('Water Heater: Efficiency') - arg.setDescription('Rated Energy Factor or Uniform Energy Factor. Does not apply to space-heating boilers.') - arg.setDefaultValue(0.67) - args << arg - - arg = OpenStudio::Measure::OSArgument::makeChoiceArgument('water_heater_usage_bin', water_heater_usage_bin_choices, false) - arg.setDisplayName('Water Heater: Usage Bin') - arg.setDescription("The usage of the water heater. Only applies if Efficiency Type is UniformEnergyFactor and Type is not #{HPXML::WaterHeaterTypeTankless}. Does not apply to space-heating boilers. If not provided, the OS-HPXML default (see Conventional Storage, Heat Pump) is used.") - args << arg - - arg = OpenStudio::Measure::OSArgument::makeDoubleArgument('water_heater_recovery_efficiency', false) - arg.setDisplayName('Water Heater: Recovery Efficiency') - arg.setDescription("Ratio of energy delivered to water heater to the energy content of the fuel consumed by the water heater. Only used for non-electric storage water heaters. If not provided, the OS-HPXML default (see Conventional Storage) is used.") - arg.setUnits('Frac') - args << arg - - arg = OpenStudio::Measure::OSArgument::makeDoubleArgument('water_heater_heating_capacity', false) - arg.setDisplayName('Water Heater: Heating Capacity') - arg.setDescription("Heating capacity. Only applies to #{HPXML::WaterHeaterTypeStorage} and #{HPXML::WaterHeaterTypeHeatPump} (compressor). If not provided, the OS-HPXML default (see Conventional Storage, Heat Pump) is used.") - arg.setUnits('Btu/hr') - args << arg - - arg = OpenStudio::Measure::OSArgument::makeDoubleArgument('water_heater_backup_heating_capacity', false) - arg.setDisplayName('Water Heater: Backup Heating Capacity') - arg.setDescription("Backup heating capacity for a #{HPXML::WaterHeaterTypeHeatPump}. If not provided, the OS-HPXML default (see Heat Pump) is used.") - arg.setUnits('Btu/hr') - args << arg - - arg = OpenStudio::Measure::OSArgument::makeDoubleArgument('water_heater_standby_loss', false) - arg.setDisplayName('Water Heater: Standby Loss') - arg.setDescription("The standby loss of water heater. Only applies to space-heating boilers. If not provided, the OS-HPXML default (see Combi Boiler w/ Storage) is used.") - arg.setUnits('F/hr') - args << arg - - arg = OpenStudio::Measure::OSArgument::makeDoubleArgument('water_heater_jacket_rvalue', false) - arg.setDisplayName('Water Heater: Jacket R-value') - arg.setDescription("The jacket R-value of water heater. Doesn't apply to #{HPXML::WaterHeaterTypeTankless} or #{HPXML::WaterHeaterTypeCombiTankless}. If not provided, defaults to no jacket insulation.") - arg.setUnits('h-ft^2-R/Btu') - args << arg - - arg = OpenStudio::Measure::OSArgument::makeDoubleArgument('water_heater_setpoint_temperature', false) - arg.setDisplayName('Water Heater: Setpoint Temperature') - arg.setDescription("The setpoint temperature of water heater. If not provided, the OS-HPXML default (see HPXML Water Heating Systems) is used.") - arg.setUnits('F') - args << arg - - arg = OpenStudio::Measure::OSArgument::makeIntegerArgument('water_heater_num_bedrooms_served', false) - arg.setDisplayName('Water Heater: Number of Bedrooms Served') - arg.setDescription("Number of bedrooms served (directly or indirectly) by the water heater. Only needed if #{HPXML::ResidentialTypeSFA} or #{HPXML::ResidentialTypeApartment} and it is a shared water heater serving multiple dwelling units. Used to apportion water heater tank losses to the unit.") - arg.setUnits('#') - args << arg - - arg = OpenStudio::Measure::OSArgument::makeBoolArgument('water_heater_uses_desuperheater', false) - arg.setDisplayName('Water Heater: Uses Desuperheater') - arg.setDescription("Requires that the dwelling unit has a #{HPXML::HVACTypeHeatPumpAirToAir}, #{HPXML::HVACTypeHeatPumpMiniSplit}, or #{HPXML::HVACTypeHeatPumpGroundToAir} heat pump or a #{HPXML::HVACTypeCentralAirConditioner} or #{HPXML::HVACTypeMiniSplitAirConditioner} air conditioner. If not provided, assumes no desuperheater.") - args << arg - + args << makeArgument( + type: Argument::Choice, + name: 'water_heater_type', water_heater_type_choices, true) + display_name: 'Water Heater: Type') + description: "The type of water heater. Use '#{Constants::None}' if there is no water heater.") + + args << makeArgument( + type: Argument::Choice, + name: 'water_heater_fuel_type', water_heater_fuel_choices, false) + display_name: 'Water Heater: Fuel Type') + description: "The fuel type of water heater. Ignored for #{HPXML::WaterHeaterTypeHeatPump}.") + + args << makeArgument( + type: Argument::Choice, + name: 'water_heater_location', water_heater_location_choices, false) + display_name: 'Water Heater: Location') + description: "The location of water heater. If not provided, the OS-HPXML default (see HPXML Water Heating Systems) is used.") + + args << makeArgument( + type: Argument::Double, + name: 'water_heater_tank_volume' + required: false, + display_name: 'Water Heater: Tank Volume') + description: "Nominal volume of water heater tank. If not provided, the OS-HPXML default (see Conventional Storage, Heat Pump, Combi Boiler w/ Storage) is used.") + units: 'gal') + + args << makeArgument( + type: Argument::Choice, + name: 'water_heater_efficiency_type', water_heater_efficiency_type_choices, false) + display_name: 'Water Heater: Efficiency Type') + description: 'The efficiency type of water heater. Does not apply to space-heating boilers.') + + args << makeArgument( + type: Argument::Double, + name: 'water_heater_efficiency' + required: false, + display_name: 'Water Heater: Efficiency') + description: 'Rated Energy Factor or Uniform Energy Factor. Does not apply to space-heating boilers.') + + args << makeArgument( + type: Argument::Choice, + name: 'water_heater_usage_bin', water_heater_usage_bin_choices, false) + display_name: 'Water Heater: Usage Bin') + description: "The usage of the water heater. Only applies if Efficiency Type is UniformEnergyFactor and Type is not #{HPXML::WaterHeaterTypeTankless}. Does not apply to space-heating boilers. If not provided, the OS-HPXML default (see Conventional Storage, Heat Pump) is used.") + + args << makeArgument( + type: Argument::Double, + name: 'water_heater_recovery_efficiency' + required: false, + display_name: 'Water Heater: Recovery Efficiency') + description: "Ratio of energy delivered to water heater to the energy content of the fuel consumed by the water heater. Only used for non-electric storage water heaters. If not provided, the OS-HPXML default (see Conventional Storage) is used.") + units: 'Frac') + + args << makeArgument( + type: Argument::Double, + name: 'water_heater_heating_capacity' + required: false, + display_name: 'Water Heater: Heating Capacity') + description: "Heating capacity. Only applies to #{HPXML::WaterHeaterTypeStorage} and #{HPXML::WaterHeaterTypeHeatPump} (compressor). If not provided, the OS-HPXML default (see Conventional Storage, Heat Pump) is used.") + units: 'Btu/hr') + + args << makeArgument( + type: Argument::Double, + name: 'water_heater_backup_heating_capacity' + required: false, + display_name: 'Water Heater: Backup Heating Capacity') + description: "Backup heating capacity for a #{HPXML::WaterHeaterTypeHeatPump}. If not provided, the OS-HPXML default (see Heat Pump) is used.") + units: 'Btu/hr') + + args << makeArgument( + type: Argument::Double, + name: 'water_heater_standby_loss' + required: false, + display_name: 'Water Heater: Standby Loss') + description: "The standby loss of water heater. Only applies to space-heating boilers. If not provided, the OS-HPXML default (see Combi Boiler w/ Storage) is used.") + units: 'F/hr') + + args << makeArgument( + type: Argument::Double, + name: 'water_heater_jacket_rvalue' + required: false, + display_name: 'Water Heater: Jacket R-value') + description: "The jacket R-value of water heater. Doesn't apply to #{HPXML::WaterHeaterTypeTankless} or #{HPXML::WaterHeaterTypeCombiTankless}. If not provided, defaults to no jacket insulation.") + units: 'h-ft^2-R/Btu') + + args << makeArgument( + type: Argument::Double, + name: 'water_heater_setpoint_temperature' + required: false, + display_name: 'Water Heater: Setpoint Temperature') + description: "The setpoint temperature of water heater. If not provided, the OS-HPXML default (see HPXML Water Heating Systems) is used.") + units: 'F') + + args << makeArgument( + type: Argument::Integer, + name: 'water_heater_num_bedrooms_served' + required: false, + display_name: 'Water Heater: Number of Bedrooms Served') + description: "Number of bedrooms served (directly or indirectly) by the water heater. Only needed if #{HPXML::ResidentialTypeSFA} or #{HPXML::ResidentialTypeApartment} and it is a shared water heater serving multiple dwelling units. Used to apportion water heater tank losses to the unit.") + units: '#') + + args << makeArgument( + name: 'water_heater_uses_desuperheater', + type: Argument::Boolean, + required: false, + display_name: 'Water Heater: Uses Desuperheater') + description: "Requires that the dwelling unit has a #{HPXML::HVACTypeHeatPumpAirToAir}, #{HPXML::HVACTypeHeatPumpMiniSplit}, or #{HPXML::HVACTypeHeatPumpGroundToAir} heat pump or a #{HPXML::HVACTypeCentralAirConditioner} or #{HPXML::HVACTypeMiniSplitAirConditioner} air conditioner. If not provided, assumes no desuperheater.") + water_heater_tank_model_type_choices = OpenStudio::StringVector.new water_heater_tank_model_type_choices << HPXML::WaterHeaterTankModelTypeMixed water_heater_tank_model_type_choices << HPXML::WaterHeaterTankModelTypeStratified - arg = OpenStudio::Measure::OSArgument::makeChoiceArgument('water_heater_tank_model_type', water_heater_tank_model_type_choices, false) - arg.setDisplayName('Water Heater: Tank Type') - arg.setDescription("Type of tank model to use. The '#{HPXML::WaterHeaterTankModelTypeStratified}' tank generally provide more accurate results, but may significantly increase run time. Applies only to #{HPXML::WaterHeaterTypeStorage}. If not provided, the OS-HPXML default (see Conventional Storage) is used.") - args << arg - + args << makeArgument( + type: Argument::Choice, + name: 'water_heater_tank_model_type', water_heater_tank_model_type_choices, false) + display_name: 'Water Heater: Tank Type') + description: "Type of tank model to use. The '#{HPXML::WaterHeaterTankModelTypeStratified}' tank generally provide more accurate results, but may significantly increase run time. Applies only to #{HPXML::WaterHeaterTypeStorage}. If not provided, the OS-HPXML default (see Conventional Storage) is used.") + water_heater_operating_mode_choices = OpenStudio::StringVector.new water_heater_operating_mode_choices << HPXML::WaterHeaterOperatingModeHybridAuto water_heater_operating_mode_choices << HPXML::WaterHeaterOperatingModeHeatPumpOnly - arg = OpenStudio::Measure::OSArgument::makeChoiceArgument('water_heater_operating_mode', water_heater_operating_mode_choices, false) - arg.setDisplayName('Water Heater: Operating Mode') - arg.setDescription("The water heater operating mode. The '#{HPXML::WaterHeaterOperatingModeHeatPumpOnly}' option only uses the heat pump, while '#{HPXML::WaterHeaterOperatingModeHybridAuto}' allows the backup electric resistance to come on in high demand situations. This is ignored if a scheduled operating mode type is selected. Applies only to #{HPXML::WaterHeaterTypeHeatPump}. If not provided, the OS-HPXML default (see Heat Pump) is used.") - args << arg - + args << makeArgument( + type: Argument::Choice, + name: 'water_heater_operating_mode', water_heater_operating_mode_choices, false) + display_name: 'Water Heater: Operating Mode') + description: "The water heater operating mode. The '#{HPXML::WaterHeaterOperatingModeHeatPumpOnly}' option only uses the heat pump, while '#{HPXML::WaterHeaterOperatingModeHybridAuto}' allows the backup electric resistance to come on in high demand situations. This is ignored if a scheduled operating mode type is selected. Applies only to #{HPXML::WaterHeaterTypeHeatPump}. If not provided, the OS-HPXML default (see Heat Pump) is used.") + hot_water_distribution_system_type_choices = OpenStudio::StringVector.new hot_water_distribution_system_type_choices << HPXML::DHWDistTypeStandard hot_water_distribution_system_type_choices << HPXML::DHWDistTypeRecirc - arg = OpenStudio::Measure::OSArgument::makeChoiceArgument('hot_water_distribution_system_type', hot_water_distribution_system_type_choices, true) - arg.setDisplayName('Hot Water Distribution: System Type') - arg.setDescription('The type of the hot water distribution system.') - arg.setDefaultValue(HPXML::DHWDistTypeStandard) - args << arg - - arg = OpenStudio::Measure::OSArgument::makeDoubleArgument('hot_water_distribution_standard_piping_length', false) - arg.setDisplayName('Hot Water Distribution: Standard Piping Length') - arg.setUnits('ft') - arg.setDescription("If the distribution system is #{HPXML::DHWDistTypeStandard}, the length of the piping. If not provided, the OS-HPXML default (see Standard) is used.") - args << arg - + args << makeArgument( + type: Argument::Choice, + name: 'hot_water_distribution_system_type', hot_water_distribution_system_type_choices, true) + display_name: 'Hot Water Distribution: System Type') + description: 'The type of the hot water distribution system.') + + args << makeArgument( + type: Argument::Double, + name: 'hot_water_distribution_standard_piping_length' + required: false, + display_name: 'Hot Water Distribution: Standard Piping Length') + units: 'ft') + description: "If the distribution system is #{HPXML::DHWDistTypeStandard}, the length of the piping. If not provided, the OS-HPXML default (see Standard) is used.") + recirculation_control_type_choices = OpenStudio::StringVector.new recirculation_control_type_choices << HPXML::DHWRecircControlTypeNone recirculation_control_type_choices << HPXML::DHWRecircControlTypeTimer @@ -2428,82 +2943,98 @@ def makeArgument(name:, recirculation_control_type_choices << HPXML::DHWRecircControlTypeSensor recirculation_control_type_choices << HPXML::DHWRecircControlTypeManual - arg = OpenStudio::Measure::OSArgument::makeChoiceArgument('hot_water_distribution_recirc_control_type', recirculation_control_type_choices, false) - arg.setDisplayName('Hot Water Distribution: Recirculation Control Type') - arg.setDescription("If the distribution system is #{HPXML::DHWDistTypeRecirc}, the type of hot water recirculation control, if any.") - arg.setDefaultValue(HPXML::DHWRecircControlTypeNone) - args << arg - - arg = OpenStudio::Measure::OSArgument::makeDoubleArgument('hot_water_distribution_recirc_piping_length', false) - arg.setDisplayName('Hot Water Distribution: Recirculation Piping Length') - arg.setUnits('ft') - arg.setDescription("If the distribution system is #{HPXML::DHWDistTypeRecirc}, the length of the recirculation piping. If not provided, the OS-HPXML default (see Recirculation (In-Unit)) is used.") - args << arg - - arg = OpenStudio::Measure::OSArgument::makeDoubleArgument('hot_water_distribution_recirc_branch_piping_length', false) - arg.setDisplayName('Hot Water Distribution: Recirculation Branch Piping Length') - arg.setUnits('ft') - arg.setDescription("If the distribution system is #{HPXML::DHWDistTypeRecirc}, the length of the recirculation branch piping. If not provided, the OS-HPXML default (see Recirculation (In-Unit)) is used.") - args << arg - - arg = OpenStudio::Measure::OSArgument::makeDoubleArgument('hot_water_distribution_recirc_pump_power', false) - arg.setDisplayName('Hot Water Distribution: Recirculation Pump Power') - arg.setUnits('W') - arg.setDescription("If the distribution system is #{HPXML::DHWDistTypeRecirc}, the recirculation pump power. If not provided, the OS-HPXML default (see Recirculation (In-Unit)) is used.") - args << arg - - arg = OpenStudio::Measure::OSArgument::makeDoubleArgument('hot_water_distribution_pipe_r', false) - arg.setDisplayName('Hot Water Distribution: Pipe Insulation Nominal R-Value') - arg.setUnits('h-ft^2-R/Btu') - arg.setDescription("Nominal R-value of the pipe insulation. If not provided, the OS-HPXML default (see HPXML Hot Water Distribution) is used.") - args << arg - - dwhr_facilities_connected_choices = OpenStudio::StringVector.new + args << makeArgument( + type: Argument::Choice, + name: 'hot_water_distribution_recirc_control_type', recirculation_control_type_choices, false) + display_name: 'Hot Water Distribution: Recirculation Control Type') + description: "If the distribution system is #{HPXML::DHWDistTypeRecirc}, the type of hot water recirculation control, if any.") + + args << makeArgument( + type: Argument::Double, + name: 'hot_water_distribution_recirc_piping_length' + required: false, + display_name: 'Hot Water Distribution: Recirculation Piping Length') + units: 'ft') + description: "If the distribution system is #{HPXML::DHWDistTypeRecirc}, the length of the recirculation piping. If not provided, the OS-HPXML default (see Recirculation (In-Unit)) is used.") + + args << makeArgument( + type: Argument::Double, + name: 'hot_water_distribution_recirc_branch_piping_length' + required: false, + display_name: 'Hot Water Distribution: Recirculation Branch Piping Length') + units: 'ft') + description: "If the distribution system is #{HPXML::DHWDistTypeRecirc}, the length of the recirculation branch piping. If not provided, the OS-HPXML default (see Recirculation (In-Unit)) is used.") + + args << makeArgument( + type: Argument::Double, + name: 'hot_water_distribution_recirc_pump_power' + required: false, + display_name: 'Hot Water Distribution: Recirculation Pump Power') + units: 'W') + description: "If the distribution system is #{HPXML::DHWDistTypeRecirc}, the recirculation pump power. If not provided, the OS-HPXML default (see Recirculation (In-Unit)) is used.") + + args << makeArgument( + type: Argument::Double, + name: 'hot_water_distribution_pipe_r' + required: false, + display_name: 'Hot Water Distribution: Pipe Insulation Nominal R-Value') + units: 'h-ft^2-R/Btu') + description: "Nominal R-value of the pipe insulation. If not provided, the OS-HPXML default (see HPXML Hot Water Distribution) is used.") + + dwhr_facilities_connected_choices = OpenStudio::StringVector.new dwhr_facilities_connected_choices << Constants::None dwhr_facilities_connected_choices << HPXML::DWHRFacilitiesConnectedOne dwhr_facilities_connected_choices << HPXML::DWHRFacilitiesConnectedAll - arg = OpenStudio::Measure::OSArgument::makeChoiceArgument('dwhr_facilities_connected', dwhr_facilities_connected_choices, false) - arg.setDisplayName('Drain Water Heat Recovery: Facilities Connected') - arg.setDescription("Which facilities are connected for the drain water heat recovery. Use '#{Constants::None}' if there is no drain water heat recovery system.") - arg.setDefaultValue(Constants::None) - args << arg - - arg = OpenStudio::Measure::OSArgument::makeBoolArgument('dwhr_equal_flow', false) - arg.setDisplayName('Drain Water Heat Recovery: Equal Flow') - arg.setDescription('Whether the drain water heat recovery has equal flow.') - arg.setDefaultValue(true) - args << arg - - arg = OpenStudio::Measure::OSArgument::makeDoubleArgument('dwhr_efficiency', false) - arg.setDisplayName('Drain Water Heat Recovery: Efficiency') - arg.setUnits('Frac') - arg.setDescription('The efficiency of the drain water heat recovery.') - arg.setDefaultValue(0.55) - args << arg - - arg = OpenStudio::Measure::OSArgument::makeBoolArgument('water_fixtures_shower_low_flow', false) - arg.setDisplayName('Hot Water Fixtures: Is Shower Low Flow') - arg.setDescription('Whether the shower fixture is low flow. If not provided, defaults to false.') - arg.setDefaultValue(false) - args << arg - - arg = OpenStudio::Measure::OSArgument::makeBoolArgument('water_fixtures_sink_low_flow', false) - arg.setDisplayName('Hot Water Fixtures: Is Sink Low Flow') - arg.setDescription('Whether the sink fixture is low flow. If not provided, defaults to false.') - arg.setDefaultValue(false) - args << arg - - arg = OpenStudio::Measure::OSArgument::makeDoubleArgument('water_fixtures_usage_multiplier', false) - arg.setDisplayName('Hot Water Fixtures: Usage Multiplier') - arg.setDescription("Multiplier on the hot water usage that can reflect, e.g., high/low usage occupants. If not provided, the OS-HPXML default (see HPXML Water Fixtures) is used.") - args << arg - - arg = OpenStudio::Measure::OSArgument::makeDoubleArgument('general_water_use_usage_multiplier', false) - arg.setDisplayName('General Water Use: Usage Multiplier') - arg.setDescription("Multiplier on internal gains from general water use (floor mopping, shower evaporation, water films on showers, tubs & sinks surfaces, plant watering, etc.) that can reflect, e.g., high/low usage occupants. If not provided, the OS-HPXML default (see HPXML Building Occupancy) is used.") - args << arg - + args << makeArgument( + type: Argument::Choice, + name: 'dwhr_facilities_connected', dwhr_facilities_connected_choices, false) + display_name: 'Drain Water Heat Recovery: Facilities Connected') + description: "Which facilities are connected for the drain water heat recovery. Use '#{Constants::None}' if there is no drain water heat recovery system.") + + args << makeArgument( + name: 'dwhr_equal_flow', + type: Argument::Boolean, + required: false, + display_name: 'Drain Water Heat Recovery: Equal Flow') + description: 'Whether the drain water heat recovery has equal flow.') + + args << makeArgument( + type: Argument::Double, + name: 'dwhr_efficiency' + required: false, + display_name: 'Drain Water Heat Recovery: Efficiency') + units: 'Frac') + description: 'The efficiency of the drain water heat recovery.') + + args << makeArgument( + name: 'water_fixtures_shower_low_flow', + type: Argument::Boolean, + required: false, + display_name: 'Hot Water Fixtures: Is Shower Low Flow') + description: 'Whether the shower fixture is low flow. If not provided, defaults to false.') + + args << makeArgument( + name: 'water_fixtures_sink_low_flow', + type: Argument::Boolean, + required: false, + display_name: 'Hot Water Fixtures: Is Sink Low Flow') + description: 'Whether the sink fixture is low flow. If not provided, defaults to false.') + + args << makeArgument( + type: Argument::Double, + name: 'water_fixtures_usage_multiplier' + required: false, + display_name: 'Hot Water Fixtures: Usage Multiplier') + description: "Multiplier on the hot water usage that can reflect, e.g., high/low usage occupants. If not provided, the OS-HPXML default (see HPXML Water Fixtures) is used.") + + args << makeArgument( + type: Argument::Double, + name: 'general_water_use_usage_multiplier' + required: false, + display_name: 'General Water Use: Usage Multiplier') + description: "Multiplier on internal gains from general water use (floor mopping, shower evaporation, water films on showers, tubs & sinks surfaces, plant watering, etc.) that can reflect, e.g., high/low usage occupants. If not provided, the OS-HPXML default (see HPXML Building Occupancy) is used.") + solar_thermal_system_type_choices = OpenStudio::StringVector.new solar_thermal_system_type_choices << Constants::None solar_thermal_system_type_choices << HPXML::SolarThermalSystemTypeHotWater @@ -2519,72 +3050,80 @@ def makeArgument(name:, solar_thermal_collector_type_choices << HPXML::SolarThermalCollectorTypeDoubleGlazing solar_thermal_collector_type_choices << HPXML::SolarThermalCollectorTypeICS - arg = OpenStudio::Measure::OSArgument::makeChoiceArgument('solar_thermal_system_type', solar_thermal_system_type_choices, false) - arg.setDisplayName('Solar Thermal: System Type') - arg.setDescription("The type of solar thermal system. Use '#{Constants::None}' if there is no solar thermal system.") - arg.setDefaultValue(Constants::None) - args << arg - - arg = OpenStudio::Measure::OSArgument::makeDoubleArgument('solar_thermal_collector_area', false) - arg.setDisplayName('Solar Thermal: Collector Area') - arg.setUnits('ft^2') - arg.setDescription('The collector area of the solar thermal system.') - arg.setDefaultValue(40.0) - args << arg - - arg = OpenStudio::Measure::OSArgument::makeChoiceArgument('solar_thermal_collector_loop_type', solar_thermal_collector_loop_type_choices, false) - arg.setDisplayName('Solar Thermal: Collector Loop Type') - arg.setDescription('The collector loop type of the solar thermal system.') - arg.setDefaultValue(HPXML::SolarThermalLoopTypeDirect) - args << arg - - arg = OpenStudio::Measure::OSArgument::makeChoiceArgument('solar_thermal_collector_type', solar_thermal_collector_type_choices, false) - arg.setDisplayName('Solar Thermal: Collector Type') - arg.setDescription('The collector type of the solar thermal system.') - arg.setDefaultValue(HPXML::SolarThermalCollectorTypeEvacuatedTube) - args << arg - - arg = OpenStudio::Measure::OSArgument::makeDoubleArgument('solar_thermal_collector_azimuth', false) - arg.setDisplayName('Solar Thermal: Collector Azimuth') - arg.setUnits('degrees') - arg.setDescription('The collector azimuth of the solar thermal system. Azimuth is measured clockwise from north (e.g., North=0, East=90, South=180, West=270).') - arg.setDefaultValue(180) - args << arg - - arg = OpenStudio::Measure::OSArgument::makeStringArgument('solar_thermal_collector_tilt', false) - arg.setDisplayName('Solar Thermal: Collector Tilt') - arg.setUnits('degrees') - arg.setDescription('The collector tilt of the solar thermal system. Can also enter, e.g., RoofPitch, RoofPitch+20, Latitude, Latitude-15, etc.') - arg.setDefaultValue('RoofPitch') - args << arg - - arg = OpenStudio::Measure::OSArgument::makeDoubleArgument('solar_thermal_collector_rated_optical_efficiency', false) - arg.setDisplayName('Solar Thermal: Collector Rated Optical Efficiency') - arg.setUnits('Frac') - arg.setDescription('The collector rated optical efficiency of the solar thermal system.') - arg.setDefaultValue(0.5) - args << arg - - arg = OpenStudio::Measure::OSArgument::makeDoubleArgument('solar_thermal_collector_rated_thermal_losses', false) - arg.setDisplayName('Solar Thermal: Collector Rated Thermal Losses') - arg.setUnits('Btu/hr-ft^2-R') - arg.setDescription('The collector rated thermal losses of the solar thermal system.') - arg.setDefaultValue(0.2799) - args << arg - - arg = OpenStudio::Measure::OSArgument::makeDoubleArgument('solar_thermal_storage_volume', false) - arg.setDisplayName('Solar Thermal: Storage Volume') - arg.setUnits('gal') - arg.setDescription("The storage volume of the solar thermal system. If not provided, the OS-HPXML default (see Detailed Inputs) is used.") - args << arg - - arg = OpenStudio::Measure::OSArgument::makeDoubleArgument('solar_thermal_solar_fraction', false) - arg.setDisplayName('Solar Thermal: Solar Fraction') - arg.setUnits('Frac') - arg.setDescription('The solar fraction of the solar thermal system. If provided, overrides all other solar thermal inputs.') - arg.setDefaultValue(0) - args << arg - + args << makeArgument( + type: Argument::Choice, + name: 'solar_thermal_system_type', solar_thermal_system_type_choices, false) + display_name: 'Solar Thermal: System Type') + description: "The type of solar thermal system. Use '#{Constants::None}' if there is no solar thermal system.") + + args << makeArgument( + type: Argument::Double, + name: 'solar_thermal_collector_area' + required: false, + display_name: 'Solar Thermal: Collector Area') + units: 'ft^2') + description: 'The collector area of the solar thermal system.') + + args << makeArgument( + type: Argument::Choice, + name: 'solar_thermal_collector_loop_type', solar_thermal_collector_loop_type_choices, false) + display_name: 'Solar Thermal: Collector Loop Type') + description: 'The collector loop type of the solar thermal system.') + + args << makeArgument( + type: Argument::Choice, + name: 'solar_thermal_collector_type', solar_thermal_collector_type_choices, false) + display_name: 'Solar Thermal: Collector Type') + description: 'The collector type of the solar thermal system.') + + args << makeArgument( + type: Argument::Double, + name: 'solar_thermal_collector_azimuth' + required: false, + display_name: 'Solar Thermal: Collector Azimuth') + units: 'degrees') + description: 'The collector azimuth of the solar thermal system. Azimuth is measured clockwise from north (e.g., North=0, East=90, South=180, West=270).') + + args << makeArgument( + type: Argument::String, + name: 'solar_thermal_collector_tilt' + required: false, + display_name: 'Solar Thermal: Collector Tilt') + units: 'degrees') + description: 'The collector tilt of the solar thermal system. Can also enter, e.g., RoofPitch, RoofPitch+20, Latitude, Latitude-15, etc.') + + args << makeArgument( + type: Argument::Double, + name: 'solar_thermal_collector_rated_optical_efficiency' + required: false, + display_name: 'Solar Thermal: Collector Rated Optical Efficiency') + units: 'Frac') + description: 'The collector rated optical efficiency of the solar thermal system.') + + args << makeArgument( + type: Argument::Double, + name: 'solar_thermal_collector_rated_thermal_losses' + required: false, + display_name: 'Solar Thermal: Collector Rated Thermal Losses') + units: 'Btu/hr-ft^2-R') + description: 'The collector rated thermal losses of the solar thermal system.') + + args << makeArgument( + type: Argument::Double, + name: 'solar_thermal_storage_volume' + required: false, + display_name: 'Solar Thermal: Storage Volume') + units: 'gal') + description: "The storage volume of the solar thermal system. If not provided, the OS-HPXML default (see Detailed Inputs) is used.") + + args << makeArgument( + type: Argument::Double, + name: 'solar_thermal_solar_fraction' + required: false, + display_name: 'Solar Thermal: Solar Fraction') + units: 'Frac') + description: 'The solar fraction of the solar thermal system. If provided, overrides all other solar thermal inputs.') + pv_system_module_type_choices = OpenStudio::StringVector.new pv_system_module_type_choices << HPXML::PVModuleTypeStandard pv_system_module_type_choices << HPXML::PVModuleTypePremium @@ -2600,107 +3139,127 @@ def makeArgument(name:, pv_system_tracking_choices << HPXML::PVTrackingType1AxisBacktracked pv_system_tracking_choices << HPXML::PVTrackingType2Axis - arg = OpenStudio::Measure::OSArgument::makeBoolArgument('pv_system_present', false) - arg.setDisplayName('PV System: Present') - arg.setDescription('Whether there is a PV system present. If not provided, defaults to false.') - arg.setDefaultValue(false) - args << arg - - arg = OpenStudio::Measure::OSArgument::makeChoiceArgument('pv_system_module_type', pv_system_module_type_choices, false) - arg.setDisplayName('PV System: Module Type') - arg.setDescription("Module type of the PV system. If not provided, the OS-HPXML default (see HPXML Photovoltaics) is used.") - args << arg - - arg = OpenStudio::Measure::OSArgument::makeChoiceArgument('pv_system_location', pv_system_location_choices, false) - arg.setDisplayName('PV System: Location') - arg.setDescription("Location of the PV system. If not provided, the OS-HPXML default (see HPXML Photovoltaics) is used.") - args << arg - - arg = OpenStudio::Measure::OSArgument::makeChoiceArgument('pv_system_tracking', pv_system_tracking_choices, false) - arg.setDisplayName('PV System: Tracking') - arg.setDescription("Type of tracking for the PV system. If not provided, the OS-HPXML default (see HPXML Photovoltaics) is used.") - args << arg - - arg = OpenStudio::Measure::OSArgument::makeDoubleArgument('pv_system_array_azimuth', false) - arg.setDisplayName('PV System: Array Azimuth') - arg.setUnits('degrees') - arg.setDescription('Array azimuth of the PV system. Azimuth is measured clockwise from north (e.g., North=0, East=90, South=180, West=270).') - arg.setDefaultValue(180) - args << arg - - arg = OpenStudio::Measure::OSArgument::makeStringArgument('pv_system_array_tilt', false) - arg.setDisplayName('PV System: Array Tilt') - arg.setUnits('degrees') - arg.setDescription('Array tilt of the PV system. Can also enter, e.g., RoofPitch, RoofPitch+20, Latitude, Latitude-15, etc.') - arg.setDefaultValue('RoofPitch') - args << arg - - arg = OpenStudio::Measure::OSArgument::makeDoubleArgument('pv_system_max_power_output', false) - arg.setDisplayName('PV System: Maximum Power Output') - arg.setUnits('W') - arg.setDescription('Maximum power output of the PV system. For a shared system, this is the total building maximum power output.') - arg.setDefaultValue(4000) - args << arg - - arg = OpenStudio::Measure::OSArgument::makeDoubleArgument('pv_system_inverter_efficiency', false) - arg.setDisplayName('PV System: Inverter Efficiency') - arg.setUnits('Frac') - arg.setDescription("Inverter efficiency of the PV system. If there are two PV systems, this will apply to both. If not provided, the OS-HPXML default (see HPXML Photovoltaics) is used.") - args << arg - - arg = OpenStudio::Measure::OSArgument::makeDoubleArgument('pv_system_system_losses_fraction', false) - arg.setDisplayName('PV System: System Losses Fraction') - arg.setUnits('Frac') - arg.setDescription("System losses fraction of the PV system. If there are two PV systems, this will apply to both. If not provided, the OS-HPXML default (see HPXML Photovoltaics) is used.") - args << arg - - arg = OpenStudio::Measure::OSArgument::makeIntegerArgument('pv_system_num_bedrooms_served', false) - arg.setDisplayName('PV System: Number of Bedrooms Served') - arg.setDescription("Number of bedrooms served by PV system. Only needed if #{HPXML::ResidentialTypeSFA} or #{HPXML::ResidentialTypeApartment} and it is a shared PV system serving multiple dwelling units. Used to apportion PV generation to the unit of a SFA/MF building. If there are two PV systems, this will apply to both.") - arg.setUnits('#') - args << arg - - arg = OpenStudio::Measure::OSArgument::makeBoolArgument('pv_system_2_present', false) - arg.setDisplayName('PV System 2: Present') - arg.setDescription('Whether there is a second PV system present. If not provided, defaults to false.') - arg.setDefaultValue(false) - args << arg - - arg = OpenStudio::Measure::OSArgument::makeChoiceArgument('pv_system_2_module_type', pv_system_module_type_choices, false) - arg.setDisplayName('PV System 2: Module Type') - arg.setDescription("Module type of the second PV system. If not provided, the OS-HPXML default (see HPXML Photovoltaics) is used.") - args << arg - - arg = OpenStudio::Measure::OSArgument::makeChoiceArgument('pv_system_2_location', pv_system_location_choices, false) - arg.setDisplayName('PV System 2: Location') - arg.setDescription("Location of the second PV system. If not provided, the OS-HPXML default (see HPXML Photovoltaics) is used.") - args << arg - - arg = OpenStudio::Measure::OSArgument::makeChoiceArgument('pv_system_2_tracking', pv_system_tracking_choices, false) - arg.setDisplayName('PV System 2: Tracking') - arg.setDescription("Type of tracking for the second PV system. If not provided, the OS-HPXML default (see HPXML Photovoltaics) is used.") - args << arg - - arg = OpenStudio::Measure::OSArgument::makeDoubleArgument('pv_system_2_array_azimuth', false) - arg.setDisplayName('PV System 2: Array Azimuth') - arg.setUnits('degrees') - arg.setDescription('Array azimuth of the second PV system. Azimuth is measured clockwise from north (e.g., North=0, East=90, South=180, West=270).') - arg.setDefaultValue(180) - args << arg - - arg = OpenStudio::Measure::OSArgument::makeStringArgument('pv_system_2_array_tilt', false) - arg.setDisplayName('PV System 2: Array Tilt') - arg.setUnits('degrees') - arg.setDescription('Array tilt of the second PV system. Can also enter, e.g., RoofPitch, RoofPitch+20, Latitude, Latitude-15, etc.') - arg.setDefaultValue('RoofPitch') - args << arg - - arg = OpenStudio::Measure::OSArgument::makeDoubleArgument('pv_system_2_max_power_output', false) - arg.setDisplayName('PV System 2: Maximum Power Output') - arg.setUnits('W') - arg.setDescription('Maximum power output of the second PV system. For a shared system, this is the total building maximum power output.') - arg.setDefaultValue(4000) - args << arg + args << makeArgument( + name: 'pv_system_present', + type:: Argument::Boolean, + required: false, + display_name: 'PV System: Present') + description: 'Whether there is a PV system present. If not provided, defaults to false.') + + args << makeArgument( + type: Argument::Choice, + name: 'pv_system_module_type', pv_system_module_type_choices, false) + display_name: 'PV System: Module Type') + description: "Module type of the PV system. If not provided, the OS-HPXML default (see HPXML Photovoltaics) is used.") + + args << makeArgument( + type: Argument::Choice, + name: 'pv_system_location', pv_system_location_choices, false) + display_name: 'PV System: Location') + description: "Location of the PV system. If not provided, the OS-HPXML default (see HPXML Photovoltaics) is used.") + + args << makeArgument( + type: Argument::Choice, + name: 'pv_system_tracking', pv_system_tracking_choices, false) + display_name: 'PV System: Tracking') + description: "Type of tracking for the PV system. If not provided, the OS-HPXML default (see HPXML Photovoltaics) is used.") + + args << makeArgument( + type: Argument::Double, + name: 'pv_system_array_azimuth' + required: false, + display_name: 'PV System: Array Azimuth') + units: 'degrees') + description: 'Array azimuth of the PV system. Azimuth is measured clockwise from north (e.g., North=0, East=90, South=180, West=270).') + + args << makeArgument( + type: Argument::String, + name: 'pv_system_array_tilt' + required: false, + display_name: 'PV System: Array Tilt') + units: 'degrees') + description: 'Array tilt of the PV system. Can also enter, e.g., RoofPitch, RoofPitch+20, Latitude, Latitude-15, etc.') + + args << makeArgument( + type: Argument::Double, + name: 'pv_system_max_power_output' + required: false, + display_name: 'PV System: Maximum Power Output') + units: 'W') + description: 'Maximum power output of the PV system. For a shared system, this is the total building maximum power output.') + + args << makeArgument( + type: Argument::Double, + name: 'pv_system_inverter_efficiency' + required: false, + display_name: 'PV System: Inverter Efficiency') + units: 'Frac') + description: "Inverter efficiency of the PV system. If there are two PV systems, this will apply to both. If not provided, the OS-HPXML default (see HPXML Photovoltaics) is used.") + + args << makeArgument( + type: Argument::Double, + name: 'pv_system_system_losses_fraction' + required: false, + display_name: 'PV System: System Losses Fraction') + units: 'Frac') + description: "System losses fraction of the PV system. If there are two PV systems, this will apply to both. If not provided, the OS-HPXML default (see HPXML Photovoltaics) is used.") + + args << makeArgument( + type: Argument::Integer, + name: 'pv_system_num_bedrooms_served' + required: false, + display_name: 'PV System: Number of Bedrooms Served') + description: "Number of bedrooms served by PV system. Only needed if #{HPXML::ResidentialTypeSFA} or #{HPXML::ResidentialTypeApartment} and it is a shared PV system serving multiple dwelling units. Used to apportion PV generation to the unit of a SFA/MF building. If there are two PV systems, this will apply to both.") + units: '#') + + args << makeArgument( + name: 'pv_system_2_present', + type: Argument::Boolean, + required: false, + display_name: 'PV System 2: Present') + description: 'Whether there is a second PV system present. If not provided, defaults to false.') + + args << makeArgument( + type: Argument::Choice, + name: 'pv_system_2_module_type', pv_system_module_type_choices, false) + display_name: 'PV System 2: Module Type') + description: "Module type of the second PV system. If not provided, the OS-HPXML default (see HPXML Photovoltaics) is used.") + + args << makeArgument( + type: Argument::Choice, + name: 'pv_system_2_location', pv_system_location_choices, false) + display_name: 'PV System 2: Location') + description: "Location of the second PV system. If not provided, the OS-HPXML default (see HPXML Photovoltaics) is used.") + + args << makeArgument( + type: Argument::Choice, + name: 'pv_system_2_tracking', pv_system_tracking_choices, false) + display_name: 'PV System 2: Tracking') + description: "Type of tracking for the second PV system. If not provided, the OS-HPXML default (see HPXML Photovoltaics) is used.") + + args << makeArgument( + type: Argument::Double, + name: 'pv_system_2_array_azimuth' + required: false, + display_name: 'PV System 2: Array Azimuth') + units: 'degrees') + description: 'Array azimuth of the second PV system. Azimuth is measured clockwise from north (e.g., North=0, East=90, South=180, West=270).') + + args << makeArgument( + type: Argument::String, + name: 'pv_system_2_array_tilt' + required: false, + display_name: 'PV System 2: Array Tilt') + units: 'degrees') + description: 'Array tilt of the second PV system. Can also enter, e.g., RoofPitch, RoofPitch+20, Latitude, Latitude-15, etc.') + + args << makeArgument( + type: Argument::Double, + name: 'pv_system_2_max_power_output' + required: false, + display_name: 'PV System 2: Maximum Power Output') + units: 'W') + description: 'Maximum power output of the second PV system. For a shared system, this is the total building maximum power output.') battery_location_choices = OpenStudio::StringVector.new battery_location_choices << HPXML::LocationConditionedSpace @@ -2716,139 +3275,172 @@ def makeArgument(name:, battery_location_choices << HPXML::LocationGarage battery_location_choices << HPXML::LocationOutside - arg = OpenStudio::Measure::OSArgument::makeBoolArgument('battery_present', false) - arg.setDisplayName('Battery: Present') - arg.setDescription('Whether there is a lithium ion battery present. If not provided, defaults to false.') - arg.setDefaultValue(false) - args << arg - - arg = OpenStudio::Measure::OSArgument::makeChoiceArgument('battery_location', battery_location_choices, false) - arg.setDisplayName('Battery: Location') - arg.setDescription("The space type for the lithium ion battery location. If not provided, the OS-HPXML default (see HPXML Batteries) is used.") - args << arg - - arg = OpenStudio::Measure::OSArgument::makeDoubleArgument('battery_power', false) - arg.setDisplayName('Battery: Rated Power Output') - arg.setDescription("The rated power output of the lithium ion battery. If not provided, the OS-HPXML default (see HPXML Batteries) is used.") - arg.setUnits('W') - args << arg - - arg = OpenStudio::Measure::OSArgument::makeDoubleArgument('battery_capacity', false) - arg.setDisplayName('Battery: Nominal Capacity') - arg.setDescription("The nominal capacity of the lithium ion battery. If not provided, the OS-HPXML default (see HPXML Batteries) is used.") - arg.setUnits('kWh') - args << arg - - arg = OpenStudio::Measure::OSArgument::makeDoubleArgument('battery_usable_capacity', false) - arg.setDisplayName('Battery: Usable Capacity') - arg.setDescription("The usable capacity of the lithium ion battery. If not provided, the OS-HPXML default (see HPXML Batteries) is used.") - arg.setUnits('kWh') - args << arg - - arg = OpenStudio::Measure::OSArgument::makeDoubleArgument('battery_round_trip_efficiency', false) - arg.setDisplayName('Battery: Round Trip Efficiency') - arg.setDescription("The round trip efficiency of the lithium ion battery. If not provided, the OS-HPXML default (see HPXML Batteries) is used.") - arg.setUnits('Frac') - args << arg - - arg = OpenStudio::Measure::OSArgument::makeIntegerArgument('battery_num_bedrooms_served', false) - arg.setDisplayName('Battery: Number of Bedrooms Served') - arg.setDescription("Number of bedrooms served by the lithium ion battery. Only needed if #{HPXML::ResidentialTypeSFA} or #{HPXML::ResidentialTypeApartment} and it is a shared battery serving multiple dwelling units. Used to apportion battery charging/discharging to the unit of a SFA/MF building.") - arg.setUnits('#') - args << arg - - arg = OpenStudio::Measure::OSArgument::makeBoolArgument('lighting_present', true) - arg.setDisplayName('Lighting: Present') - arg.setDescription('Whether there is lighting energy use.') - arg.setDefaultValue(true) - args << arg - - arg = OpenStudio::Measure::OSArgument::makeDoubleArgument('lighting_interior_fraction_cfl', false) - arg.setDisplayName('Lighting: Interior Fraction CFL') - arg.setDescription('Fraction of all lamps (interior) that are compact fluorescent. Lighting not specified as CFL, LFL, or LED is assumed to be incandescent.') - arg.setDefaultValue(0.1) - args << arg - - arg = OpenStudio::Measure::OSArgument::makeDoubleArgument('lighting_interior_fraction_lfl', false) - arg.setDisplayName('Lighting: Interior Fraction LFL') - arg.setDescription('Fraction of all lamps (interior) that are linear fluorescent. Lighting not specified as CFL, LFL, or LED is assumed to be incandescent.') - arg.setDefaultValue(0.0) - args << arg - - arg = OpenStudio::Measure::OSArgument::makeDoubleArgument('lighting_interior_fraction_led', false) - arg.setDisplayName('Lighting: Interior Fraction LED') - arg.setDescription('Fraction of all lamps (interior) that are light emitting diodes. Lighting not specified as CFL, LFL, or LED is assumed to be incandescent.') - arg.setDefaultValue(0.0) - args << arg - - arg = OpenStudio::Measure::OSArgument::makeDoubleArgument('lighting_interior_usage_multiplier', false) - arg.setDisplayName('Lighting: Interior Usage Multiplier') - arg.setDescription("Multiplier on the lighting energy usage (interior) that can reflect, e.g., high/low usage occupants. If not provided, the OS-HPXML default (see HPXML Lighting) is used.") - args << arg - - arg = OpenStudio::Measure::OSArgument::makeDoubleArgument('lighting_exterior_fraction_cfl', false) - arg.setDisplayName('Lighting: Exterior Fraction CFL') - arg.setDescription('Fraction of all lamps (exterior) that are compact fluorescent. Lighting not specified as CFL, LFL, or LED is assumed to be incandescent.') - arg.setDefaultValue(0.0) - args << arg - - arg = OpenStudio::Measure::OSArgument::makeDoubleArgument('lighting_exterior_fraction_lfl', false) - arg.setDisplayName('Lighting: Exterior Fraction LFL') - arg.setDescription('Fraction of all lamps (exterior) that are linear fluorescent. Lighting not specified as CFL, LFL, or LED is assumed to be incandescent.') - arg.setDefaultValue(0.0) - args << arg - - arg = OpenStudio::Measure::OSArgument::makeDoubleArgument('lighting_exterior_fraction_led', false) - arg.setDisplayName('Lighting: Exterior Fraction LED') - arg.setDescription('Fraction of all lamps (exterior) that are light emitting diodes. Lighting not specified as CFL, LFL, or LED is assumed to be incandescent.') - arg.setDefaultValue(0.0) - args << arg - - arg = OpenStudio::Measure::OSArgument::makeDoubleArgument('lighting_exterior_usage_multiplier', false) - arg.setDisplayName('Lighting: Exterior Usage Multiplier') - arg.setDescription("Multiplier on the lighting energy usage (exterior) that can reflect, e.g., high/low usage occupants. If not provided, the OS-HPXML default (see HPXML Lighting) is used.") - args << arg - - arg = OpenStudio::Measure::OSArgument::makeDoubleArgument('lighting_garage_fraction_cfl', false) - arg.setDisplayName('Lighting: Garage Fraction CFL') - arg.setDescription('Fraction of all lamps (garage) that are compact fluorescent. Lighting not specified as CFL, LFL, or LED is assumed to be incandescent.') - arg.setDefaultValue(0.0) - args << arg - - arg = OpenStudio::Measure::OSArgument::makeDoubleArgument('lighting_garage_fraction_lfl', false) - arg.setDisplayName('Lighting: Garage Fraction LFL') - arg.setDescription('Fraction of all lamps (garage) that are linear fluorescent. Lighting not specified as CFL, LFL, or LED is assumed to be incandescent.') - arg.setDefaultValue(0.0) - args << arg - - arg = OpenStudio::Measure::OSArgument::makeDoubleArgument('lighting_garage_fraction_led', false) - arg.setDisplayName('Lighting: Garage Fraction LED') - arg.setDescription('Fraction of all lamps (garage) that are light emitting diodes. Lighting not specified as CFL, LFL, or LED is assumed to be incandescent.') - arg.setDefaultValue(0.0) - args << arg - - arg = OpenStudio::Measure::OSArgument::makeDoubleArgument('lighting_garage_usage_multiplier', false) - arg.setDisplayName('Lighting: Garage Usage Multiplier') - arg.setDescription("Multiplier on the lighting energy usage (garage) that can reflect, e.g., high/low usage occupants. If not provided, the OS-HPXML default (see HPXML Lighting) is used.") - args << arg - - arg = OpenStudio::Measure::OSArgument::makeBoolArgument('holiday_lighting_present', false) - arg.setDisplayName('Holiday Lighting: Present') - arg.setDescription('Whether there is holiday lighting. If not provided, defaults to false.') - arg.setDefaultValue(false) - args << arg - - arg = OpenStudio::Measure::OSArgument::makeDoubleArgument('holiday_lighting_daily_kwh', false) - arg.setDisplayName('Holiday Lighting: Daily Consumption') - arg.setUnits('kWh/day') - arg.setDescription("The daily energy consumption for holiday lighting (exterior). If not provided, the OS-HPXML default (see HPXML Lighting) is used.") - args << arg - - arg = OpenStudio::Measure::OSArgument::makeStringArgument('holiday_lighting_period', false) - arg.setDisplayName('Holiday Lighting: Period') - arg.setDescription("Enter a date range like 'Nov 25 - Jan 5'. If not provided, the OS-HPXML default (see HPXML Lighting) is used.") - args << arg - + args << makeArgument( + name: 'battery_present', + type: Argument::Boolean, + required: false, + display_name: 'Battery: Present') + description: 'Whether there is a lithium ion battery present. If not provided, defaults to false.') + + args << makeArgument( + type: Argument::Choice, + name: 'battery_location', battery_location_choices, false) + display_name: 'Battery: Location') + description: "The space type for the lithium ion battery location. If not provided, the OS-HPXML default (see HPXML Batteries) is used.") + + args << makeArgument( + type: Argument::Double, + name: 'battery_power' + required: false, + display_name: 'Battery: Rated Power Output') + description: "The rated power output of the lithium ion battery. If not provided, the OS-HPXML default (see HPXML Batteries) is used.") + units: 'W') + + args << makeArgument( + type: Argument::Double, + name: 'battery_capacity' + required: false, + display_name: 'Battery: Nominal Capacity') + description: "The nominal capacity of the lithium ion battery. If not provided, the OS-HPXML default (see HPXML Batteries) is used.") + units: 'kWh') + + args << makeArgument( + type: Argument::Double, + name: 'battery_usable_capacity' + required: false, + display_name: 'Battery: Usable Capacity') + description: "The usable capacity of the lithium ion battery. If not provided, the OS-HPXML default (see HPXML Batteries) is used.") + units: 'kWh') + + args << makeArgument( + type: Argument::Double, + name: 'battery_round_trip_efficiency' + required: false, + display_name: 'Battery: Round Trip Efficiency') + description: "The round trip efficiency of the lithium ion battery. If not provided, the OS-HPXML default (see HPXML Batteries) is used.") + units: 'Frac') + + args << makeArgument( + type: Argument::Integer, + name: 'battery_num_bedrooms_served' + required: false, + display_name: 'Battery: Number of Bedrooms Served') + description: "Number of bedrooms served by the lithium ion battery. Only needed if #{HPXML::ResidentialTypeSFA} or #{HPXML::ResidentialTypeApartment} and it is a shared battery serving multiple dwelling units. Used to apportion battery charging/discharging to the unit of a SFA/MF building.") + units: '#') + + args << makeArgument( + name: 'lighting_present', + type: Argument::Boolean, + required: true, + display_name: 'Lighting: Present') + description: 'Whether there is lighting energy use.') + + args << makeArgument( + type: Argument::Double, + name: 'lighting_interior_fraction_cfl' + required: false, + display_name: 'Lighting: Interior Fraction CFL') + description: 'Fraction of all lamps (interior) that are compact fluorescent. Lighting not specified as CFL, LFL, or LED is assumed to be incandescent.') + + args << makeArgument( + type: Argument::Double, + name: 'lighting_interior_fraction_lfl' + required: false, + display_name: 'Lighting: Interior Fraction LFL') + description: 'Fraction of all lamps (interior) that are linear fluorescent. Lighting not specified as CFL, LFL, or LED is assumed to be incandescent.') + + args << makeArgument( + type: Argument::Double, + name: 'lighting_interior_fraction_led' + required: false, + display_name: 'Lighting: Interior Fraction LED') + description: 'Fraction of all lamps (interior) that are light emitting diodes. Lighting not specified as CFL, LFL, or LED is assumed to be incandescent.') + + args << makeArgument( + type: Argument::Double, + name: 'lighting_interior_usage_multiplier' + required: false, + display_name: 'Lighting: Interior Usage Multiplier') + description: "Multiplier on the lighting energy usage (interior) that can reflect, e.g., high/low usage occupants. If not provided, the OS-HPXML default (see HPXML Lighting) is used.") + + args << makeArgument( + type: Argument::Double, + name: 'lighting_exterior_fraction_cfl' + required: false, + display_name: 'Lighting: Exterior Fraction CFL') + description: 'Fraction of all lamps (exterior) that are compact fluorescent. Lighting not specified as CFL, LFL, or LED is assumed to be incandescent.') + + args << makeArgument( + type: Argument::Double, + name: 'lighting_exterior_fraction_lfl' + required: false, + display_name: 'Lighting: Exterior Fraction LFL') + description: 'Fraction of all lamps (exterior) that are linear fluorescent. Lighting not specified as CFL, LFL, or LED is assumed to be incandescent.') + + args << makeArgument( + type: Argument::Double, + name: 'lighting_exterior_fraction_led' + required: false, + display_name: 'Lighting: Exterior Fraction LED') + description: 'Fraction of all lamps (exterior) that are light emitting diodes. Lighting not specified as CFL, LFL, or LED is assumed to be incandescent.') + + args << makeArgument( + type: Argument::Double, + name: 'lighting_exterior_usage_multiplier' + required: false, + display_name: 'Lighting: Exterior Usage Multiplier') + description: "Multiplier on the lighting energy usage (exterior) that can reflect, e.g., high/low usage occupants. If not provided, the OS-HPXML default (see HPXML Lighting) is used.") + + args << makeArgument( + type: Argument::Double, + name: 'lighting_garage_fraction_cfl' + required: false, + display_name: 'Lighting: Garage Fraction CFL') + description: 'Fraction of all lamps (garage) that are compact fluorescent. Lighting not specified as CFL, LFL, or LED is assumed to be incandescent.') + + args << makeArgument( + type: Argument::Double, + name: 'lighting_garage_fraction_lfl' + required: false, + display_name: 'Lighting: Garage Fraction LFL') + description: 'Fraction of all lamps (garage) that are linear fluorescent. Lighting not specified as CFL, LFL, or LED is assumed to be incandescent.') + + args << makeArgument( + type: Argument::Double, + name: 'lighting_garage_fraction_led' + required: false, + display_name: 'Lighting: Garage Fraction LED') + description: 'Fraction of all lamps (garage) that are light emitting diodes. Lighting not specified as CFL, LFL, or LED is assumed to be incandescent.') + + args << makeArgument( + type: Argument::Double, + name: 'lighting_garage_usage_multiplier' + required: false, + display_name: 'Lighting: Garage Usage Multiplier') + description: "Multiplier on the lighting energy usage (garage) that can reflect, e.g., high/low usage occupants. If not provided, the OS-HPXML default (see HPXML Lighting) is used.") + + args << makeArgument( + name: 'holiday_lighting_present', + type: Argument::Boolean, + required: false, + display_name: 'Holiday Lighting: Present') + description: 'Whether there is holiday lighting. If not provided, defaults to false.') + + args << makeArgument( + type: Argument::Double, + name: 'holiday_lighting_daily_kwh' + required: false, + display_name: 'Holiday Lighting: Daily Consumption') + units: 'kWh/day') + description: "The daily energy consumption for holiday lighting (exterior). If not provided, the OS-HPXML default (see HPXML Lighting) is used.") + + args << makeArgument( + type: Argument::String, + name: 'holiday_lighting_period' + required: false, + display_name: 'Holiday Lighting: Period') + description: "Enter a date range like 'Nov 25 - Jan 5'. If not provided, the OS-HPXML default (see HPXML Lighting) is used.") + dehumidifier_type_choices = OpenStudio::StringVector.new dehumidifier_type_choices << Constants::None dehumidifier_type_choices << HPXML::DehumidifierTypePortable @@ -2858,45 +3450,49 @@ def makeArgument(name:, dehumidifier_efficiency_type_choices << 'EnergyFactor' dehumidifier_efficiency_type_choices << 'IntegratedEnergyFactor' - arg = OpenStudio::Measure::OSArgument::makeChoiceArgument('dehumidifier_type', dehumidifier_type_choices, false) - arg.setDisplayName('Dehumidifier: Type') - arg.setDescription('The type of dehumidifier. If not provided, defaults to none.') - arg.setDefaultValue(Constants::None) - args << arg - - arg = OpenStudio::Measure::OSArgument::makeChoiceArgument('dehumidifier_efficiency_type', dehumidifier_efficiency_type_choices, false) - arg.setDisplayName('Dehumidifier: Efficiency Type') - arg.setDescription('The efficiency type of dehumidifier.') - arg.setDefaultValue('IntegratedEnergyFactor') - args << arg - - arg = OpenStudio::Measure::OSArgument::makeDoubleArgument('dehumidifier_efficiency', false) - arg.setDisplayName('Dehumidifier: Efficiency') - arg.setUnits('liters/kWh') - arg.setDescription('The efficiency of the dehumidifier.') - arg.setDefaultValue(1.5) - args << arg - - arg = OpenStudio::Measure::OSArgument::makeDoubleArgument('dehumidifier_capacity', false) - arg.setDisplayName('Dehumidifier: Capacity') - arg.setDescription('The capacity (water removal rate) of the dehumidifier.') - arg.setUnits('pint/day') - arg.setDefaultValue(40) - args << arg - - arg = OpenStudio::Measure::OSArgument::makeDoubleArgument('dehumidifier_rh_setpoint', false) - arg.setDisplayName('Dehumidifier: Relative Humidity Setpoint') - arg.setDescription('The relative humidity setpoint of the dehumidifier.') - arg.setUnits('Frac') - arg.setDefaultValue(0.5) - args << arg - - arg = OpenStudio::Measure::OSArgument::makeDoubleArgument('dehumidifier_fraction_dehumidification_load_served', false) - arg.setDisplayName('Dehumidifier: Fraction Dehumidification Load Served') - arg.setDescription('The dehumidification load served fraction of the dehumidifier.') - arg.setUnits('Frac') - arg.setDefaultValue(1) - args << arg + args << makeArgument( + type: Argument::Choice, + name: 'dehumidifier_type', dehumidifier_type_choices, false) + display_name: 'Dehumidifier: Type') + description: 'The type of dehumidifier. If not provided, defaults to none.') + + args << makeArgument( + type: Argument::Choice, + name: 'dehumidifier_efficiency_type', dehumidifier_efficiency_type_choices, false) + display_name: 'Dehumidifier: Efficiency Type') + description: 'The efficiency type of dehumidifier.') + + args << makeArgument( + type: Argument::Double, + name: 'dehumidifier_efficiency' + required: false, + display_name: 'Dehumidifier: Efficiency') + units: 'liters/kWh') + description: 'The efficiency of the dehumidifier.') + + args << makeArgument( + type: Argument::Double, + name: 'dehumidifier_capacity' + required: false, + display_name: 'Dehumidifier: Capacity') + description: 'The capacity (water removal rate) of the dehumidifier.') + units: 'pint/day') + + args << makeArgument( + type: Argument::Double, + name: 'dehumidifier_rh_setpoint' + required: false, + display_name: 'Dehumidifier: Relative Humidity Setpoint') + description: 'The relative humidity setpoint of the dehumidifier.') + units: 'Frac') + + args << makeArgument( + type: Argument::Double, + name: 'dehumidifier_fraction_dehumidification_load_served' + required: false, + display_name: 'Dehumidifier: Fraction Dehumidification Load Served') + description: 'The dehumidification load served fraction of the dehumidifier.') + units: 'Frac') appliance_location_choices = OpenStudio::StringVector.new appliance_location_choices << HPXML::LocationConditionedSpace @@ -2912,81 +3508,101 @@ def makeArgument(name:, clothes_washer_efficiency_type_choices << 'ModifiedEnergyFactor' clothes_washer_efficiency_type_choices << 'IntegratedModifiedEnergyFactor' - arg = OpenStudio::Measure::OSArgument::makeBoolArgument('clothes_washer_present', true) - arg.setDisplayName('Clothes Washer: Present') - arg.setDescription('Whether there is a clothes washer present.') - arg.setDefaultValue(true) - args << arg - - arg = OpenStudio::Measure::OSArgument::makeChoiceArgument('clothes_washer_location', appliance_location_choices, false) - arg.setDisplayName('Clothes Washer: Location') - arg.setDescription("The space type for the clothes washer location. If not provided, the OS-HPXML default (see HPXML Clothes Washer) is used.") - args << arg - - arg = OpenStudio::Measure::OSArgument::makeChoiceArgument('clothes_washer_efficiency_type', clothes_washer_efficiency_type_choices, false) - arg.setDisplayName('Clothes Washer: Efficiency Type') - arg.setDescription('The efficiency type of the clothes washer.') - arg.setDefaultValue('IntegratedModifiedEnergyFactor') - args << arg - - arg = OpenStudio::Measure::OSArgument::makeDoubleArgument('clothes_washer_efficiency', false) - arg.setDisplayName('Clothes Washer: Efficiency') - arg.setUnits('ft^3/kWh-cyc') - arg.setDescription("The efficiency of the clothes washer. If not provided, the OS-HPXML default (see HPXML Clothes Washer) is used.") - args << arg - - arg = OpenStudio::Measure::OSArgument::makeDoubleArgument('clothes_washer_rated_annual_kwh', false) - arg.setDisplayName('Clothes Washer: Rated Annual Consumption') - arg.setUnits('kWh/yr') - arg.setDescription("The annual energy consumed by the clothes washer, as rated, obtained from the EnergyGuide label. This includes both the appliance electricity consumption and the energy required for water heating. If not provided, the OS-HPXML default (see HPXML Clothes Washer) is used.") - args << arg - - arg = OpenStudio::Measure::OSArgument::makeDoubleArgument('clothes_washer_label_electric_rate', false) - arg.setDisplayName('Clothes Washer: Label Electric Rate') - arg.setUnits('$/kWh') - arg.setDescription("The annual energy consumed by the clothes washer, as rated, obtained from the EnergyGuide label. This includes both the appliance electricity consumption and the energy required for water heating. If not provided, the OS-HPXML default (see HPXML Clothes Washer) is used.") - args << arg - - arg = OpenStudio::Measure::OSArgument::makeDoubleArgument('clothes_washer_label_gas_rate', false) - arg.setDisplayName('Clothes Washer: Label Gas Rate') - arg.setUnits('$/therm') - arg.setDescription("The annual energy consumed by the clothes washer, as rated, obtained from the EnergyGuide label. This includes both the appliance electricity consumption and the energy required for water heating. If not provided, the OS-HPXML default (see HPXML Clothes Washer) is used.") - args << arg - - arg = OpenStudio::Measure::OSArgument::makeDoubleArgument('clothes_washer_label_annual_gas_cost', false) - arg.setDisplayName('Clothes Washer: Label Annual Cost with Gas DHW') - arg.setUnits('$') - arg.setDescription("The annual cost of using the system under test conditions. Input is obtained from the EnergyGuide label. If not provided, the OS-HPXML default (see HPXML Clothes Washer) is used.") - args << arg - - arg = OpenStudio::Measure::OSArgument::makeDoubleArgument('clothes_washer_label_usage', false) - arg.setDisplayName('Clothes Washer: Label Usage') - arg.setUnits('cyc/wk') - arg.setDescription("The clothes washer loads per week. If not provided, the OS-HPXML default (see HPXML Clothes Washer) is used.") - args << arg - - arg = OpenStudio::Measure::OSArgument::makeDoubleArgument('clothes_washer_capacity', false) - arg.setDisplayName('Clothes Washer: Drum Volume') - arg.setUnits('ft^3') - arg.setDescription("Volume of the washer drum. Obtained from the EnergyStar website or the manufacturer's literature. If not provided, the OS-HPXML default (see HPXML Clothes Washer) is used.") - args << arg - - arg = OpenStudio::Measure::OSArgument::makeDoubleArgument('clothes_washer_usage_multiplier', false) - arg.setDisplayName('Clothes Washer: Usage Multiplier') - arg.setDescription("Multiplier on the clothes washer energy and hot water usage that can reflect, e.g., high/low usage occupants. If not provided, the OS-HPXML default (see HPXML Clothes Washer) is used.") - args << arg - - arg = OpenStudio::Measure::OSArgument::makeBoolArgument('clothes_dryer_present', true) - arg.setDisplayName('Clothes Dryer: Present') - arg.setDescription('Whether there is a clothes dryer present.') - arg.setDefaultValue(true) - args << arg - - arg = OpenStudio::Measure::OSArgument::makeChoiceArgument('clothes_dryer_location', appliance_location_choices, false) - arg.setDisplayName('Clothes Dryer: Location') - arg.setDescription("The space type for the clothes dryer location. If not provided, the OS-HPXML default (see HPXML Clothes Dryer) is used.") - args << arg - + args << makeArgument( + name: 'clothes_washer_present', + type: Argument::Boolean, + required: true, + display_name: 'Clothes Washer: Present') + description: 'Whether there is a clothes washer present.') + + args << makeArgument( + type: Argument::Choice, + name: 'clothes_washer_location', appliance_location_choices, false) + display_name: 'Clothes Washer: Location') + description: "The space type for the clothes washer location. If not provided, the OS-HPXML default (see HPXML Clothes Washer) is used.") + + args << makeArgument( + type: Argument::Choice, + name: 'clothes_washer_efficiency_type', clothes_washer_efficiency_type_choices, false) + display_name: 'Clothes Washer: Efficiency Type') + description: 'The efficiency type of the clothes washer.') + + args << makeArgument( + type: Argument::Double, + name: 'clothes_washer_efficiency' + required: false, + display_name: 'Clothes Washer: Efficiency') + units: 'ft^3/kWh-cyc') + description: "The efficiency of the clothes washer. If not provided, the OS-HPXML default (see HPXML Clothes Washer) is used.") + + args << makeArgument( + type: Argument::Double, + name: 'clothes_washer_rated_annual_kwh' + required: false, + display_name: 'Clothes Washer: Rated Annual Consumption') + units: 'kWh/yr') + description: "The annual energy consumed by the clothes washer, as rated, obtained from the EnergyGuide label. This includes both the appliance electricity consumption and the energy required for water heating. If not provided, the OS-HPXML default (see HPXML Clothes Washer) is used.") + + args << makeArgument( + type: Argument::Double, + name: 'clothes_washer_label_electric_rate' + required: false, + display_name: 'Clothes Washer: Label Electric Rate') + units: '$/kWh') + description: "The annual energy consumed by the clothes washer, as rated, obtained from the EnergyGuide label. This includes both the appliance electricity consumption and the energy required for water heating. If not provided, the OS-HPXML default (see HPXML Clothes Washer) is used.") + + args << makeArgument( + type: Argument::Double, + name: 'clothes_washer_label_gas_rate' + required: false, + display_name: 'Clothes Washer: Label Gas Rate') + units: '$/therm') + description: "The annual energy consumed by the clothes washer, as rated, obtained from the EnergyGuide label. This includes both the appliance electricity consumption and the energy required for water heating. If not provided, the OS-HPXML default (see HPXML Clothes Washer) is used.") + + args << makeArgument( + type: Argument::Double, + name: 'clothes_washer_label_annual_gas_cost' + required: false, + display_name: 'Clothes Washer: Label Annual Cost with Gas DHW') + units: '$') + description: "The annual cost of using the system under test conditions. Input is obtained from the EnergyGuide label. If not provided, the OS-HPXML default (see HPXML Clothes Washer) is used.") + + args << makeArgument( + type: Argument::Double, + name: 'clothes_washer_label_usage' + required: false, + display_name: 'Clothes Washer: Label Usage') + units: 'cyc/wk') + description: "The clothes washer loads per week. If not provided, the OS-HPXML default (see HPXML Clothes Washer) is used.") + + args << makeArgument( + type: Argument::Double, + name: 'clothes_washer_capacity' + required: false, + display_name: 'Clothes Washer: Drum Volume') + units: 'ft^3') + description: "Volume of the washer drum. Obtained from the EnergyStar website or the manufacturer's literature. If not provided, the OS-HPXML default (see HPXML Clothes Washer) is used.") + + args << makeArgument( + type: Argument::Double, + name: 'clothes_washer_usage_multiplier' + required: false, + display_name: 'Clothes Washer: Usage Multiplier') + description: "Multiplier on the clothes washer energy and hot water usage that can reflect, e.g., high/low usage occupants. If not provided, the OS-HPXML default (see HPXML Clothes Washer) is used.") + + args << makeArgument( + name: 'clothes_dryer_present', + type: Argument::Boolean, + required: true, + display_name: 'Clothes Dryer: Present') + description: 'Whether there is a clothes dryer present.') + + args << makeArgument( + type: Argument::Choice, + name: 'clothes_dryer_location', appliance_location_choices, false) + display_name: 'Clothes Dryer: Location') + description: "The space type for the clothes dryer location. If not provided, the OS-HPXML default (see HPXML Clothes Dryer) is used.") + clothes_dryer_fuel_choices = OpenStudio::StringVector.new clothes_dryer_fuel_choices << HPXML::FuelTypeElectricity clothes_dryer_fuel_choices << HPXML::FuelTypeNaturalGas @@ -2999,307 +3615,387 @@ def makeArgument(name:, clothes_dryer_efficiency_type_choices << 'EnergyFactor' clothes_dryer_efficiency_type_choices << 'CombinedEnergyFactor' - arg = OpenStudio::Measure::OSArgument::makeChoiceArgument('clothes_dryer_fuel_type', clothes_dryer_fuel_choices, false) - arg.setDisplayName('Clothes Dryer: Fuel Type') - arg.setDescription('Type of fuel used by the clothes dryer.') - arg.setDefaultValue(HPXML::FuelTypeNaturalGas) - args << arg - - arg = OpenStudio::Measure::OSArgument::makeChoiceArgument('clothes_dryer_efficiency_type', clothes_dryer_efficiency_type_choices, false) - arg.setDisplayName('Clothes Dryer: Efficiency Type') - arg.setDescription('The efficiency type of the clothes dryer.') - arg.setDefaultValue('CombinedEnergyFactor') - args << arg - - arg = OpenStudio::Measure::OSArgument::makeDoubleArgument('clothes_dryer_efficiency', false) - arg.setDisplayName('Clothes Dryer: Efficiency') - arg.setUnits('lb/kWh') - arg.setDescription("The efficiency of the clothes dryer. If not provided, the OS-HPXML default (see HPXML Clothes Dryer) is used.") - args << arg - - arg = OpenStudio::Measure::OSArgument::makeDoubleArgument('clothes_dryer_vented_flow_rate', false) - arg.setDisplayName('Clothes Dryer: Vented Flow Rate') - arg.setDescription("The exhaust flow rate of the vented clothes dryer. If not provided, the OS-HPXML default (see HPXML Clothes Dryer) is used.") - arg.setUnits('CFM') - args << arg - - arg = OpenStudio::Measure::OSArgument::makeDoubleArgument('clothes_dryer_usage_multiplier', false) - arg.setDisplayName('Clothes Dryer: Usage Multiplier') - arg.setDescription("Multiplier on the clothes dryer energy usage that can reflect, e.g., high/low usage occupants. If not provided, the OS-HPXML default (see HPXML Clothes Dryer) is used.") - args << arg - - arg = OpenStudio::Measure::OSArgument::makeBoolArgument('dishwasher_present', true) - arg.setDisplayName('Dishwasher: Present') - arg.setDescription('Whether there is a dishwasher present.') - arg.setDefaultValue(true) - args << arg - - arg = OpenStudio::Measure::OSArgument::makeChoiceArgument('dishwasher_location', appliance_location_choices, false) - arg.setDisplayName('Dishwasher: Location') - arg.setDescription("The space type for the dishwasher location. If not provided, the OS-HPXML default (see HPXML Dishwasher) is used.") - args << arg + args << makeArgument( + type: Argument::Choice, + name: 'clothes_dryer_fuel_type', clothes_dryer_fuel_choices, false) + display_name: 'Clothes Dryer: Fuel Type') + description: 'Type of fuel used by the clothes dryer.') + + args << makeArgument( + type: Argument::Choice, + name: 'clothes_dryer_efficiency_type', clothes_dryer_efficiency_type_choices, false) + display_name: 'Clothes Dryer: Efficiency Type') + description: 'The efficiency type of the clothes dryer.') + + args << makeArgument( + type: Argument::Double, + name: 'clothes_dryer_efficiency' + required: false, + display_name: 'Clothes Dryer: Efficiency') + units: 'lb/kWh') + description: "The efficiency of the clothes dryer. If not provided, the OS-HPXML default (see HPXML Clothes Dryer) is used.") + + args << makeArgument( + type: Argument::Double, + name: 'clothes_dryer_vented_flow_rate' + required: false, + display_name: 'Clothes Dryer: Vented Flow Rate') + description: "The exhaust flow rate of the vented clothes dryer. If not provided, the OS-HPXML default (see HPXML Clothes Dryer) is used.") + units: 'CFM') + + args << makeArgument( + type: Argument::Double, + name: 'clothes_dryer_usage_multiplier' + required: false, + display_name: 'Clothes Dryer: Usage Multiplier') + description: "Multiplier on the clothes dryer energy usage that can reflect, e.g., high/low usage occupants. If not provided, the OS-HPXML default (see HPXML Clothes Dryer) is used.") + + args << makeArgument( + name: 'dishwasher_present', + type: Argument::Boolean, + required: true, + display_name: 'Dishwasher: Present') + description: 'Whether there is a dishwasher present.') + + args << makeArgument( + type: Argument::Choice, + name: 'dishwasher_location', appliance_location_choices, false) + display_name: 'Dishwasher: Location') + description: "The space type for the dishwasher location. If not provided, the OS-HPXML default (see HPXML Dishwasher) is used.") dishwasher_efficiency_type_choices = OpenStudio::StringVector.new dishwasher_efficiency_type_choices << 'RatedAnnualkWh' dishwasher_efficiency_type_choices << 'EnergyFactor' - arg = OpenStudio::Measure::OSArgument::makeChoiceArgument('dishwasher_efficiency_type', dishwasher_efficiency_type_choices, false) - arg.setDisplayName('Dishwasher: Efficiency Type') - arg.setDescription('The efficiency type of dishwasher.') - arg.setDefaultValue('RatedAnnualkWh') - args << arg - - arg = OpenStudio::Measure::OSArgument::makeDoubleArgument('dishwasher_efficiency', false) - arg.setDisplayName('Dishwasher: Efficiency') - arg.setUnits('RatedAnnualkWh or EnergyFactor') - arg.setDescription("The efficiency of the dishwasher. If not provided, the OS-HPXML default (see HPXML Dishwasher) is used.") - args << arg - - arg = OpenStudio::Measure::OSArgument::makeDoubleArgument('dishwasher_label_electric_rate', false) - arg.setDisplayName('Dishwasher: Label Electric Rate') - arg.setUnits('$/kWh') - arg.setDescription("The label electric rate of the dishwasher. If not provided, the OS-HPXML default (see HPXML Dishwasher) is used.") - args << arg - - arg = OpenStudio::Measure::OSArgument::makeDoubleArgument('dishwasher_label_gas_rate', false) - arg.setDisplayName('Dishwasher: Label Gas Rate') - arg.setUnits('$/therm') - arg.setDescription("The label gas rate of the dishwasher. If not provided, the OS-HPXML default (see HPXML Dishwasher) is used.") - args << arg - - arg = OpenStudio::Measure::OSArgument::makeDoubleArgument('dishwasher_label_annual_gas_cost', false) - arg.setDisplayName('Dishwasher: Label Annual Gas Cost') - arg.setUnits('$') - arg.setDescription("The label annual gas cost of the dishwasher. If not provided, the OS-HPXML default (see HPXML Dishwasher) is used.") - args << arg - - arg = OpenStudio::Measure::OSArgument::makeDoubleArgument('dishwasher_label_usage', false) - arg.setDisplayName('Dishwasher: Label Usage') - arg.setUnits('cyc/wk') - arg.setDescription("The dishwasher loads per week. If not provided, the OS-HPXML default (see HPXML Dishwasher) is used.") - args << arg - - arg = OpenStudio::Measure::OSArgument::makeIntegerArgument('dishwasher_place_setting_capacity', false) - arg.setDisplayName('Dishwasher: Number of Place Settings') - arg.setUnits('#') - arg.setDescription("The number of place settings for the unit. Data obtained from manufacturer's literature. If not provided, the OS-HPXML default (see HPXML Dishwasher) is used.") - args << arg - - arg = OpenStudio::Measure::OSArgument::makeDoubleArgument('dishwasher_usage_multiplier', false) - arg.setDisplayName('Dishwasher: Usage Multiplier') - arg.setDescription("Multiplier on the dishwasher energy usage that can reflect, e.g., high/low usage occupants. If not provided, the OS-HPXML default (see HPXML Dishwasher) is used.") - args << arg - - arg = OpenStudio::Measure::OSArgument::makeBoolArgument('refrigerator_present', true) - arg.setDisplayName('Refrigerator: Present') - arg.setDescription('Whether there is a refrigerator present.') - arg.setDefaultValue(true) - args << arg - - arg = OpenStudio::Measure::OSArgument::makeChoiceArgument('refrigerator_location', appliance_location_choices, false) - arg.setDisplayName('Refrigerator: Location') - arg.setDescription("The space type for the refrigerator location. If not provided, the OS-HPXML default (see HPXML Refrigerators) is used.") - args << arg - - arg = OpenStudio::Measure::OSArgument::makeDoubleArgument('refrigerator_rated_annual_kwh', false) - arg.setDisplayName('Refrigerator: Rated Annual Consumption') - arg.setUnits('kWh/yr') - arg.setDescription("The EnergyGuide rated annual energy consumption for a refrigerator. If not provided, the OS-HPXML default (see HPXML Refrigerators) is used.") - args << arg - - arg = OpenStudio::Measure::OSArgument::makeDoubleArgument('refrigerator_usage_multiplier', false) - arg.setDisplayName('Refrigerator: Usage Multiplier') - arg.setDescription("Multiplier on the refrigerator energy usage that can reflect, e.g., high/low usage occupants. If not provided, the OS-HPXML default (see HPXML Refrigerators) is used.") - args << arg - - arg = OpenStudio::Measure::OSArgument::makeBoolArgument('extra_refrigerator_present', false) - arg.setDisplayName('Extra Refrigerator: Present') - arg.setDescription('Whether there is an extra refrigerator present. If not provided, defaults to false.') - arg.setDefaultValue(false) - args << arg - - arg = OpenStudio::Measure::OSArgument::makeChoiceArgument('extra_refrigerator_location', appliance_location_choices, false) - arg.setDisplayName('Extra Refrigerator: Location') - arg.setDescription("The space type for the extra refrigerator location. If not provided, the OS-HPXML default (see HPXML Refrigerators) is used.") - args << arg - - arg = OpenStudio::Measure::OSArgument::makeDoubleArgument('extra_refrigerator_rated_annual_kwh', false) - arg.setDisplayName('Extra Refrigerator: Rated Annual Consumption') - arg.setUnits('kWh/yr') - arg.setDescription("The EnergyGuide rated annual energy consumption for an extra refrigerator. If not provided, the OS-HPXML default (see HPXML Refrigerators) is used.") - args << arg - - arg = OpenStudio::Measure::OSArgument::makeDoubleArgument('extra_refrigerator_usage_multiplier', false) - arg.setDisplayName('Extra Refrigerator: Usage Multiplier') - arg.setDescription("Multiplier on the extra refrigerator energy usage that can reflect, e.g., high/low usage occupants. If not provided, the OS-HPXML default (see HPXML Refrigerators) is used.") - args << arg - - arg = OpenStudio::Measure::OSArgument::makeBoolArgument('freezer_present', false) - arg.setDisplayName('Freezer: Present') - arg.setDescription('Whether there is a freezer present. If not provided, defaults to false.') - arg.setDefaultValue(false) - args << arg - - arg = OpenStudio::Measure::OSArgument::makeChoiceArgument('freezer_location', appliance_location_choices, false) - arg.setDisplayName('Freezer: Location') - arg.setDescription("The space type for the freezer location. If not provided, the OS-HPXML default (see HPXML Freezers) is used.") - args << arg - - arg = OpenStudio::Measure::OSArgument::makeDoubleArgument('freezer_rated_annual_kwh', false) - arg.setDisplayName('Freezer: Rated Annual Consumption') - arg.setUnits('kWh/yr') - arg.setDescription("The EnergyGuide rated annual energy consumption for a freezer. If not provided, the OS-HPXML default (see HPXML Freezers) is used.") - args << arg - - arg = OpenStudio::Measure::OSArgument::makeDoubleArgument('freezer_usage_multiplier', false) - arg.setDisplayName('Freezer: Usage Multiplier') - arg.setDescription("Multiplier on the freezer energy usage that can reflect, e.g., high/low usage occupants. If not provided, the OS-HPXML default (see HPXML Freezers) is used.") - args << arg - - cooking_range_oven_fuel_choices = OpenStudio::StringVector.new - cooking_range_oven_fuel_choices << HPXML::FuelTypeElectricity - cooking_range_oven_fuel_choices << HPXML::FuelTypeNaturalGas - cooking_range_oven_fuel_choices << HPXML::FuelTypeOil - cooking_range_oven_fuel_choices << HPXML::FuelTypePropane - cooking_range_oven_fuel_choices << HPXML::FuelTypeWoodCord + args << makeArgument( + type: Argument::Choice, + name: 'dishwasher_efficiency_type', dishwasher_efficiency_type_choices, false) + display_name: 'Dishwasher: Efficiency Type') + description: 'The efficiency type of dishwasher.') + + args << makeArgument( + type: Argument::Double, + name: 'dishwasher_efficiency' + required: false, + display_name: 'Dishwasher: Efficiency') + units: 'RatedAnnualkWh or EnergyFactor') + description: "The efficiency of the dishwasher. If not provided, the OS-HPXML default (see HPXML Dishwasher) is used.") + + args << makeArgument( + type: Argument::Double, + name: 'dishwasher_label_electric_rate' + required: false, + display_name: 'Dishwasher: Label Electric Rate') + units: '$/kWh') + description: "The label electric rate of the dishwasher. If not provided, the OS-HPXML default (see HPXML Dishwasher) is used.") + + args << makeArgument( + type: Argument::Double, + name: 'dishwasher_label_gas_rate' + required: false, + display_name: 'Dishwasher: Label Gas Rate') + units: '$/therm') + description: "The label gas rate of the dishwasher. If not provided, the OS-HPXML default (see HPXML Dishwasher) is used.") + + args << makeArgument( + type: Argument::Double, + name: 'dishwasher_label_annual_gas_cost' + required: false, + display_name: 'Dishwasher: Label Annual Gas Cost') + units: '$') + description: "The label annual gas cost of the dishwasher. If not provided, the OS-HPXML default (see HPXML Dishwasher) is used.") + + args << makeArgument( + type: Argument::Double, + name: 'dishwasher_label_usage' + required: false, + display_name: 'Dishwasher: Label Usage') + units: 'cyc/wk') + description: "The dishwasher loads per week. If not provided, the OS-HPXML default (see HPXML Dishwasher) is used.") + + args << makeArgument( + type: Argument::Integer, + name: 'dishwasher_place_setting_capacity' + required: false, + display_name: 'Dishwasher: Number of Place Settings') + units: '#') + description: "The number of place settings for the unit. Data obtained from manufacturer's literature. If not provided, the OS-HPXML default (see HPXML Dishwasher) is used.") + + args << makeArgument( + type: Argument::Double, + name: 'dishwasher_usage_multiplier' + required: false, + display_name: 'Dishwasher: Usage Multiplier') + description: "Multiplier on the dishwasher energy usage that can reflect, e.g., high/low usage occupants. If not provided, the OS-HPXML default (see HPXML Dishwasher) is used.") + + args << makeArgument( + name: 'refrigerator_present', + type: Argument::Boolean, + required: true, + display_name: 'Refrigerator: Present') + description: 'Whether there is a refrigerator present.') + + args << makeArgument( + type: Argument::Choice, + name: 'refrigerator_location', appliance_location_choices, false) + display_name: 'Refrigerator: Location') + description: "The space type for the refrigerator location. If not provided, the OS-HPXML default (see HPXML Refrigerators) is used.") + + args << makeArgument( + type: Argument::Double, + name: 'refrigerator_rated_annual_kwh' + required: false, + display_name: 'Refrigerator: Rated Annual Consumption') + units: 'kWh/yr') + description: "The EnergyGuide rated annual energy consumption for a refrigerator. If not provided, the OS-HPXML default (see HPXML Refrigerators) is used.") + + args << makeArgument( + type: Argument::Double, + name: 'refrigerator_usage_multiplier' + required: false, + display_name: 'Refrigerator: Usage Multiplier') + description: "Multiplier on the refrigerator energy usage that can reflect, e.g., high/low usage occupants. If not provided, the OS-HPXML default (see HPXML Refrigerators) is used.") + + args << makeArgument( + name: 'extra_refrigerator_present', + type: Argument::Boolean, + required: false, + display_name: 'Extra Refrigerator: Present') + description: 'Whether there is an extra refrigerator present. If not provided, defaults to false.') + + args << makeArgument( + type: Argument::Choice, + name: 'extra_refrigerator_location', appliance_location_choices, false) + display_name: 'Extra Refrigerator: Location') + description: "The space type for the extra refrigerator location. If not provided, the OS-HPXML default (see HPXML Refrigerators) is used.") + + args << makeArgument( + type: Argument::Double, + name: 'extra_refrigerator_rated_annual_kwh' + required: false, + display_name: 'Extra Refrigerator: Rated Annual Consumption') + units: 'kWh/yr') + description: "The EnergyGuide rated annual energy consumption for an extra refrigerator. If not provided, the OS-HPXML default (see HPXML Refrigerators) is used.") + + args << makeArgument( + type: Argument::Double, + name: 'extra_refrigerator_usage_multiplier' + required: false, + display_name: 'Extra Refrigerator: Usage Multiplier') + description: "Multiplier on the extra refrigerator energy usage that can reflect, e.g., high/low usage occupants. If not provided, the OS-HPXML default (see HPXML Refrigerators) is used.") + + args << makeArgument( + name: 'freezer_present', + type: Argument::Boolean, + required: false, + display_name: 'Freezer: Present') + description: 'Whether there is a freezer present. If not provided, defaults to false.') + + args << makeArgument( + type: Argument::Choice, + name: 'freezer_location', appliance_location_choices, false) + display_name: 'Freezer: Location') + description: "The space type for the freezer location. If not provided, the OS-HPXML default (see HPXML Freezers) is used.") + + args << makeArgument( + type: Argument::Double, + name: 'freezer_rated_annual_kwh' + required: false, + display_name: 'Freezer: Rated Annual Consumption') + units: 'kWh/yr') + description: "The EnergyGuide rated annual energy consumption for a freezer. If not provided, the OS-HPXML default (see HPXML Freezers) is used.") + + args << makeArgument( + type: Argument::Double, + name: 'freezer_usage_multiplier' + required: false, + display_name: 'Freezer: Usage Multiplier') + description: "Multiplier on the freezer energy usage that can reflect, e.g., high/low usage occupants. If not provided, the OS-HPXML default (see HPXML Freezers) is used.") + + cooking_range_oven_fuel_choices = OpenStudio::StringVector.new + cooking_range_oven_fuel_choices << HPXML::FuelTypeElectricity + cooking_range_oven_fuel_choices << HPXML::FuelTypeNaturalGas + cooking_range_oven_fuel_choices << HPXML::FuelTypeOil + cooking_range_oven_fuel_choices << HPXML::FuelTypePropane + cooking_range_oven_fuel_choices << HPXML::FuelTypeWoodCord cooking_range_oven_fuel_choices << HPXML::FuelTypeCoal - arg = OpenStudio::Measure::OSArgument::makeBoolArgument('cooking_range_oven_present', true) - arg.setDisplayName('Cooking Range/Oven: Present') - arg.setDescription('Whether there is a cooking range/oven present.') - arg.setDefaultValue(true) - args << arg - - arg = OpenStudio::Measure::OSArgument::makeChoiceArgument('cooking_range_oven_location', appliance_location_choices, false) - arg.setDisplayName('Cooking Range/Oven: Location') - arg.setDescription("The space type for the cooking range/oven location. If not provided, the OS-HPXML default (see HPXML Cooking Range/Oven) is used.") - args << arg - - arg = OpenStudio::Measure::OSArgument::makeChoiceArgument('cooking_range_oven_fuel_type', cooking_range_oven_fuel_choices, false) - arg.setDisplayName('Cooking Range/Oven: Fuel Type') - arg.setDescription('Type of fuel used by the cooking range/oven.') - arg.setDefaultValue(HPXML::FuelTypeNaturalGas) - args << arg - - arg = OpenStudio::Measure::OSArgument::makeBoolArgument('cooking_range_oven_is_induction', false) - arg.setDisplayName('Cooking Range/Oven: Is Induction') - arg.setDescription("Whether the cooking range is induction. If not provided, the OS-HPXML default (see HPXML Cooking Range/Oven) is used.") - args << arg - - arg = OpenStudio::Measure::OSArgument::makeBoolArgument('cooking_range_oven_is_convection', false) - arg.setDisplayName('Cooking Range/Oven: Is Convection') - arg.setDescription("Whether the oven is convection. If not provided, the OS-HPXML default (see HPXML Cooking Range/Oven) is used.") - args << arg - - arg = OpenStudio::Measure::OSArgument::makeDoubleArgument('cooking_range_oven_usage_multiplier', false) - arg.setDisplayName('Cooking Range/Oven: Usage Multiplier') - arg.setDescription("Multiplier on the cooking range/oven energy usage that can reflect, e.g., high/low usage occupants. If not provided, the OS-HPXML default (see HPXML Cooking Range/Oven) is used.") - args << arg - - arg = OpenStudio::Measure::OSArgument::makeBoolArgument('ceiling_fan_present', true) - arg.setDisplayName('Ceiling Fan: Present') - arg.setDescription('Whether there are any ceiling fans.') - arg.setDefaultValue(true) - args << arg - - arg = OpenStudio::Measure::OSArgument::makeDoubleArgument('ceiling_fan_label_energy_use', false) - arg.setDisplayName('Ceiling Fan: Label Energy Use') - arg.setUnits('W') - arg.setDescription("The label average energy use of the ceiling fan(s). If neither Efficiency nor Label Energy Use provided, the OS-HPXML default (see HPXML Ceiling Fans) is used.") - args << arg - - arg = OpenStudio::Measure::OSArgument::makeDoubleArgument('ceiling_fan_efficiency', false) - arg.setDisplayName('Ceiling Fan: Efficiency') - arg.setUnits('CFM/W') - arg.setDescription("The efficiency rating of the ceiling fan(s) at medium speed. Only used if Label Energy Use not provided. If neither Efficiency nor Label Energy Use provided, the OS-HPXML default (see HPXML Ceiling Fans) is used.") - args << arg - - arg = OpenStudio::Measure::OSArgument::makeIntegerArgument('ceiling_fan_quantity', false) - arg.setDisplayName('Ceiling Fan: Quantity') - arg.setUnits('#') - arg.setDescription("Total number of ceiling fans. If not provided, the OS-HPXML default (see HPXML Ceiling Fans) is used.") - args << arg - - arg = OpenStudio::Measure::OSArgument::makeDoubleArgument('ceiling_fan_cooling_setpoint_temp_offset', false) - arg.setDisplayName('Ceiling Fan: Cooling Setpoint Temperature Offset') - arg.setUnits('F') - arg.setDescription("The cooling setpoint temperature offset during months when the ceiling fans are operating. Only applies if ceiling fan quantity is greater than zero. If not provided, the OS-HPXML default (see HPXML Ceiling Fans) is used.") - args << arg - - arg = OpenStudio::Measure::OSArgument::makeBoolArgument('misc_plug_loads_television_present', true) - arg.setDisplayName('Misc Plug Loads: Television Present') - arg.setDescription('Whether there are televisions.') - arg.setDefaultValue(true) - args << arg - - arg = OpenStudio::Measure::OSArgument::makeDoubleArgument('misc_plug_loads_television_annual_kwh', false) - arg.setDisplayName('Misc Plug Loads: Television Annual kWh') - arg.setDescription("The annual energy consumption of the television plug loads. If not provided, the OS-HPXML default (see HPXML Plug Loads) is used.") - arg.setUnits('kWh/yr') - args << arg - - arg = OpenStudio::Measure::OSArgument::makeDoubleArgument('misc_plug_loads_television_usage_multiplier', false) - arg.setDisplayName('Misc Plug Loads: Television Usage Multiplier') - arg.setDescription("Multiplier on the television energy usage that can reflect, e.g., high/low usage occupants. If not provided, the OS-HPXML default (see HPXML Plug Loads) is used.") - args << arg - - arg = OpenStudio::Measure::OSArgument::makeDoubleArgument('misc_plug_loads_other_annual_kwh', false) - arg.setDisplayName('Misc Plug Loads: Other Annual kWh') - arg.setDescription("The annual energy consumption of the other residual plug loads. If not provided, the OS-HPXML default (see HPXML Plug Loads) is used.") - arg.setUnits('kWh/yr') - args << arg - - arg = OpenStudio::Measure::OSArgument::makeDoubleArgument('misc_plug_loads_other_frac_sensible', false) - arg.setDisplayName('Misc Plug Loads: Other Sensible Fraction') - arg.setDescription("Fraction of other residual plug loads' internal gains that are sensible. If not provided, the OS-HPXML default (see HPXML Plug Loads) is used.") - arg.setUnits('Frac') - args << arg - - arg = OpenStudio::Measure::OSArgument::makeDoubleArgument('misc_plug_loads_other_frac_latent', false) - arg.setDisplayName('Misc Plug Loads: Other Latent Fraction') - arg.setDescription("Fraction of other residual plug loads' internal gains that are latent. If not provided, the OS-HPXML default (see HPXML Plug Loads) is used.") - arg.setUnits('Frac') - args << arg - - arg = OpenStudio::Measure::OSArgument::makeDoubleArgument('misc_plug_loads_other_usage_multiplier', false) - arg.setDisplayName('Misc Plug Loads: Other Usage Multiplier') - arg.setDescription("Multiplier on the other energy usage that can reflect, e.g., high/low usage occupants. If not provided, the OS-HPXML default (see HPXML Plug Loads) is used.") - args << arg - - arg = OpenStudio::Measure::OSArgument::makeBoolArgument('misc_plug_loads_well_pump_present', false) - arg.setDisplayName('Misc Plug Loads: Well Pump Present') - arg.setDescription('Whether there is a well pump. If not provided, defaults to false.') - arg.setDefaultValue(false) - args << arg - - arg = OpenStudio::Measure::OSArgument::makeDoubleArgument('misc_plug_loads_well_pump_annual_kwh', false) - arg.setDisplayName('Misc Plug Loads: Well Pump Annual kWh') - arg.setDescription("The annual energy consumption of the well pump plug loads. If not provided, the OS-HPXML default (see HPXML Plug Loads) is used.") - arg.setUnits('kWh/yr') - args << arg - - arg = OpenStudio::Measure::OSArgument::makeDoubleArgument('misc_plug_loads_well_pump_usage_multiplier', false) - arg.setDisplayName('Misc Plug Loads: Well Pump Usage Multiplier') - arg.setDescription("Multiplier on the well pump energy usage that can reflect, e.g., high/low usage occupants. If not provided, the OS-HPXML default (see HPXML Plug Loads) is used.") - args << arg - - arg = OpenStudio::Measure::OSArgument::makeBoolArgument('misc_plug_loads_vehicle_present', false) - arg.setDisplayName('Misc Plug Loads: Vehicle Present') - arg.setDescription('Whether there is an electric vehicle. If not provided, defaults to false.') - arg.setDefaultValue(false) - args << arg - - arg = OpenStudio::Measure::OSArgument::makeDoubleArgument('misc_plug_loads_vehicle_annual_kwh', false) - arg.setDisplayName('Misc Plug Loads: Vehicle Annual kWh') - arg.setDescription("The annual energy consumption of the electric vehicle plug loads. If not provided, the OS-HPXML default (see HPXML Plug Loads) is used.") - arg.setUnits('kWh/yr') - args << arg - - arg = OpenStudio::Measure::OSArgument::makeDoubleArgument('misc_plug_loads_vehicle_usage_multiplier', false) - arg.setDisplayName('Misc Plug Loads: Vehicle Usage Multiplier') - arg.setDescription("Multiplier on the electric vehicle energy usage that can reflect, e.g., high/low usage occupants. If not provided, the OS-HPXML default (see HPXML Plug Loads) is used.") - args << arg - + args << makeArgument( + name: 'cooking_range_oven_present', + type: Argument::Boolean, + required: true, + display_name: 'Cooking Range/Oven: Present') + description: 'Whether there is a cooking range/oven present.') + + args << makeArgument( + type: Argument::Choice, + name: 'cooking_range_oven_location', appliance_location_choices, false) + display_name: 'Cooking Range/Oven: Location') + description: "The space type for the cooking range/oven location. If not provided, the OS-HPXML default (see HPXML Cooking Range/Oven) is used.") + + args << makeArgument( + type: Argument::Choice, + name: 'cooking_range_oven_fuel_type', cooking_range_oven_fuel_choices, false) + display_name: 'Cooking Range/Oven: Fuel Type') + description: 'Type of fuel used by the cooking range/oven.') + + args << makeArgument( + name: 'cooking_range_oven_is_induction', + type: Argument::Boolean, + required: false, + display_name: 'Cooking Range/Oven: Is Induction') + description: "Whether the cooking range is induction. If not provided, the OS-HPXML default (see HPXML Cooking Range/Oven) is used.") + + args << makeArgument( + name: 'cooking_range_oven_is_convection', + type: Argument::Boolean, + required: false, + display_name: 'Cooking Range/Oven: Is Convection') + description: "Whether the oven is convection. If not provided, the OS-HPXML default (see HPXML Cooking Range/Oven) is used.") + + args << makeArgument( + type: Argument::Double, + name: 'cooking_range_oven_usage_multiplier' + required: false, + display_name: 'Cooking Range/Oven: Usage Multiplier') + description: "Multiplier on the cooking range/oven energy usage that can reflect, e.g., high/low usage occupants. If not provided, the OS-HPXML default (see HPXML Cooking Range/Oven) is used.") + + args << makeArgument( + name: 'ceiling_fan_present', + type: Argument::Boolean, + required: true, + display_name: 'Ceiling Fan: Present') + description: 'Whether there are any ceiling fans.') + + args << makeArgument( + type: Argument::Double, + name: 'ceiling_fan_label_energy_use' + required: false, + display_name: 'Ceiling Fan: Label Energy Use') + units: 'W') + description: "The label average energy use of the ceiling fan(s). If neither Efficiency nor Label Energy Use provided, the OS-HPXML default (see HPXML Ceiling Fans) is used.") + + args << makeArgument( + type: Argument::Double, + name: 'ceiling_fan_efficiency' + required: false, + display_name: 'Ceiling Fan: Efficiency') + units: 'CFM/W') + description: "The efficiency rating of the ceiling fan(s) at medium speed. Only used if Label Energy Use not provided. If neither Efficiency nor Label Energy Use provided, the OS-HPXML default (see HPXML Ceiling Fans) is used.") + + args << makeArgument( + type: Argument::Integer, + name: 'ceiling_fan_quantity' + required: false, + display_name: 'Ceiling Fan: Quantity') + units: '#') + description: "Total number of ceiling fans. If not provided, the OS-HPXML default (see HPXML Ceiling Fans) is used.") + + args << makeArgument( + type: Argument::Double, + name: 'ceiling_fan_cooling_setpoint_temp_offset' + required: false, + display_name: 'Ceiling Fan: Cooling Setpoint Temperature Offset') + units: 'F') + description: "The cooling setpoint temperature offset during months when the ceiling fans are operating. Only applies if ceiling fan quantity is greater than zero. If not provided, the OS-HPXML default (see HPXML Ceiling Fans) is used.") + + args << makeArgument( + name: 'misc_plug_loads_television_present', + type: Argument::Boolean, + required: true, + display_name: 'Misc Plug Loads: Television Present') + description: 'Whether there are televisions.') + + args << makeArgument( + type: Argument::Double, + name: 'misc_plug_loads_television_annual_kwh' + required: false, + display_name: 'Misc Plug Loads: Television Annual kWh') + description: "The annual energy consumption of the television plug loads. If not provided, the OS-HPXML default (see HPXML Plug Loads) is used.") + units: 'kWh/yr') + + args << makeArgument( + type: Argument::Double, + name: 'misc_plug_loads_television_usage_multiplier' + required: false, + display_name: 'Misc Plug Loads: Television Usage Multiplier') + description: "Multiplier on the television energy usage that can reflect, e.g., high/low usage occupants. If not provided, the OS-HPXML default (see HPXML Plug Loads) is used.") + + args << makeArgument( + type: Argument::Double, + name: 'misc_plug_loads_other_annual_kwh' + required: false, + display_name: 'Misc Plug Loads: Other Annual kWh') + description: "The annual energy consumption of the other residual plug loads. If not provided, the OS-HPXML default (see HPXML Plug Loads) is used.") + units: 'kWh/yr') + + args << makeArgument( + type: Argument::Double, + name: 'misc_plug_loads_other_frac_sensible' + required: false, + display_name: 'Misc Plug Loads: Other Sensible Fraction') + description: "Fraction of other residual plug loads' internal gains that are sensible. If not provided, the OS-HPXML default (see HPXML Plug Loads) is used.") + units: 'Frac') + + args << makeArgument( + type: Argument::Double, + name: 'misc_plug_loads_other_frac_latent' + required: false, + display_name: 'Misc Plug Loads: Other Latent Fraction') + description: "Fraction of other residual plug loads' internal gains that are latent. If not provided, the OS-HPXML default (see HPXML Plug Loads) is used.") + units: 'Frac') + + args << makeArgument( + type: Argument::Double, + name: 'misc_plug_loads_other_usage_multiplier' + required: false, + display_name: 'Misc Plug Loads: Other Usage Multiplier') + description: "Multiplier on the other energy usage that can reflect, e.g., high/low usage occupants. If not provided, the OS-HPXML default (see HPXML Plug Loads) is used.") + + args << makeArgument( + name: 'misc_plug_loads_well_pump_present', + type: Argument::Boolean, + required: false, + display_name: 'Misc Plug Loads: Well Pump Present') + description: 'Whether there is a well pump. If not provided, defaults to false.') + + args << makeArgument( + type: Argument::Double, + name: 'misc_plug_loads_well_pump_annual_kwh' + required: false, + display_name: 'Misc Plug Loads: Well Pump Annual kWh') + description: "The annual energy consumption of the well pump plug loads. If not provided, the OS-HPXML default (see HPXML Plug Loads) is used.") + units: 'kWh/yr') + + args << makeArgument( + type: Argument::Double, + name: 'misc_plug_loads_well_pump_usage_multiplier' + required: false, + display_name: 'Misc Plug Loads: Well Pump Usage Multiplier') + description: "Multiplier on the well pump energy usage that can reflect, e.g., high/low usage occupants. If not provided, the OS-HPXML default (see HPXML Plug Loads) is used.") + + args << makeArgument( + name: 'misc_plug_loads_vehicle_present', + type: Argument::Boolean, + required: false, + display_name: 'Misc Plug Loads: Vehicle Present') + description: 'Whether there is an electric vehicle. If not provided, defaults to false.') + + args << makeArgument( + type: Argument::Double, + name: 'misc_plug_loads_vehicle_annual_kwh' + required: false, + display_name: 'Misc Plug Loads: Vehicle Annual kWh') + description: "The annual energy consumption of the electric vehicle plug loads. If not provided, the OS-HPXML default (see HPXML Plug Loads) is used.") + units: 'kWh/yr') + + args << makeArgument( + type: Argument::Double, + name: 'misc_plug_loads_vehicle_usage_multiplier' + required: false, + display_name: 'Misc Plug Loads: Vehicle Usage Multiplier') + description: "Multiplier on the electric vehicle energy usage that can reflect, e.g., high/low usage occupants. If not provided, the OS-HPXML default (see HPXML Plug Loads) is used.") + misc_fuel_loads_fuel_choices = OpenStudio::StringVector.new misc_fuel_loads_fuel_choices << HPXML::FuelTypeNaturalGas misc_fuel_loads_fuel_choices << HPXML::FuelTypeOil @@ -3307,238 +4003,300 @@ def makeArgument(name:, misc_fuel_loads_fuel_choices << HPXML::FuelTypeWoodCord misc_fuel_loads_fuel_choices << HPXML::FuelTypeWoodPellets - arg = OpenStudio::Measure::OSArgument::makeBoolArgument('misc_fuel_loads_grill_present', false) - arg.setDisplayName('Misc Fuel Loads: Grill Present') - arg.setDescription('Whether there is a fuel loads grill. If not provided, defaults to false.') - arg.setDefaultValue(false) - args << arg - - arg = OpenStudio::Measure::OSArgument::makeChoiceArgument('misc_fuel_loads_grill_fuel_type', misc_fuel_loads_fuel_choices, false) - arg.setDisplayName('Misc Fuel Loads: Grill Fuel Type') - arg.setDescription('The fuel type of the fuel loads grill.') - arg.setDefaultValue(HPXML::FuelTypeNaturalGas) - args << arg - - arg = OpenStudio::Measure::OSArgument::makeDoubleArgument('misc_fuel_loads_grill_annual_therm', false) - arg.setDisplayName('Misc Fuel Loads: Grill Annual therm') - arg.setDescription("The annual energy consumption of the fuel loads grill. If not provided, the OS-HPXML default (see HPXML Fuel Loads) is used.") - arg.setUnits('therm/yr') - args << arg - - arg = OpenStudio::Measure::OSArgument::makeDoubleArgument('misc_fuel_loads_grill_usage_multiplier', false) - arg.setDisplayName('Misc Fuel Loads: Grill Usage Multiplier') - arg.setDescription("Multiplier on the fuel loads grill energy usage that can reflect, e.g., high/low usage occupants. If not provided, the OS-HPXML default (see HPXML Fuel Loads) is used.") - args << arg - - arg = OpenStudio::Measure::OSArgument::makeBoolArgument('misc_fuel_loads_lighting_present', false) - arg.setDisplayName('Misc Fuel Loads: Lighting Present') - arg.setDescription('Whether there is fuel loads lighting. If not provided, defaults to false.') - arg.setDefaultValue(false) - args << arg - - arg = OpenStudio::Measure::OSArgument::makeChoiceArgument('misc_fuel_loads_lighting_fuel_type', misc_fuel_loads_fuel_choices, false) - arg.setDisplayName('Misc Fuel Loads: Lighting Fuel Type') - arg.setDescription('The fuel type of the fuel loads lighting.') - arg.setDefaultValue(HPXML::FuelTypeNaturalGas) - args << arg - - arg = OpenStudio::Measure::OSArgument::makeDoubleArgument('misc_fuel_loads_lighting_annual_therm', false) - arg.setDisplayName('Misc Fuel Loads: Lighting Annual therm') - arg.setDescription("The annual energy consumption of the fuel loads lighting. If not provided, the OS-HPXML default (see HPXML Fuel Loads)is used.") - arg.setUnits('therm/yr') - args << arg - - arg = OpenStudio::Measure::OSArgument::makeDoubleArgument('misc_fuel_loads_lighting_usage_multiplier', false) - arg.setDisplayName('Misc Fuel Loads: Lighting Usage Multiplier') - arg.setDescription("Multiplier on the fuel loads lighting energy usage that can reflect, e.g., high/low usage occupants. If not provided, the OS-HPXML default (see HPXML Fuel Loads) is used.") - args << arg - - arg = OpenStudio::Measure::OSArgument::makeBoolArgument('misc_fuel_loads_fireplace_present', false) - arg.setDisplayName('Misc Fuel Loads: Fireplace Present') - arg.setDescription('Whether there is fuel loads fireplace. If not provided, defaults to false.') - arg.setDefaultValue(false) - args << arg - - arg = OpenStudio::Measure::OSArgument::makeChoiceArgument('misc_fuel_loads_fireplace_fuel_type', misc_fuel_loads_fuel_choices, false) - arg.setDisplayName('Misc Fuel Loads: Fireplace Fuel Type') - arg.setDescription('The fuel type of the fuel loads fireplace.') - arg.setDefaultValue(HPXML::FuelTypeNaturalGas) - args << arg - - arg = OpenStudio::Measure::OSArgument::makeDoubleArgument('misc_fuel_loads_fireplace_annual_therm', false) - arg.setDisplayName('Misc Fuel Loads: Fireplace Annual therm') - arg.setDescription("The annual energy consumption of the fuel loads fireplace. If not provided, the OS-HPXML default (see HPXML Fuel Loads) is used.") - arg.setUnits('therm/yr') - args << arg - - arg = OpenStudio::Measure::OSArgument::makeDoubleArgument('misc_fuel_loads_fireplace_frac_sensible', false) - arg.setDisplayName('Misc Fuel Loads: Fireplace Sensible Fraction') - arg.setDescription("Fraction of fireplace residual fuel loads' internal gains that are sensible. If not provided, the OS-HPXML default (see HPXML Fuel Loads) is used.") - arg.setUnits('Frac') - args << arg - - arg = OpenStudio::Measure::OSArgument::makeDoubleArgument('misc_fuel_loads_fireplace_frac_latent', false) - arg.setDisplayName('Misc Fuel Loads: Fireplace Latent Fraction') - arg.setDescription("Fraction of fireplace residual fuel loads' internal gains that are latent. If not provided, the OS-HPXML default (see HPXML Fuel Loads) is used.") - arg.setUnits('Frac') - args << arg - - arg = OpenStudio::Measure::OSArgument::makeDoubleArgument('misc_fuel_loads_fireplace_usage_multiplier', false) - arg.setDisplayName('Misc Fuel Loads: Fireplace Usage Multiplier') - arg.setDescription("Multiplier on the fuel loads fireplace energy usage that can reflect, e.g., high/low usage occupants. If not provided, the OS-HPXML default (see HPXML Fuel Loads) is used.") - args << arg - + args << makeArgument( + name: 'misc_fuel_loads_grill_present', + type: Argument::Boolean, + required: false, + display_name: 'Misc Fuel Loads: Grill Present') + description: 'Whether there is a fuel loads grill. If not provided, defaults to false.') + + args << makeArgument( + type: Argument::Choice, + name: 'misc_fuel_loads_grill_fuel_type', misc_fuel_loads_fuel_choices, false) + display_name: 'Misc Fuel Loads: Grill Fuel Type') + description: 'The fuel type of the fuel loads grill.') + + args << makeArgument( + type: Argument::Double, + name: 'misc_fuel_loads_grill_annual_therm' + required: false, + display_name: 'Misc Fuel Loads: Grill Annual therm') + description: "The annual energy consumption of the fuel loads grill. If not provided, the OS-HPXML default (see HPXML Fuel Loads) is used.") + units: 'therm/yr') + + args << makeArgument( + type: Argument::Double, + name: 'misc_fuel_loads_grill_usage_multiplier' + required: false, + display_name: 'Misc Fuel Loads: Grill Usage Multiplier') + description: "Multiplier on the fuel loads grill energy usage that can reflect, e.g., high/low usage occupants. If not provided, the OS-HPXML default (see HPXML Fuel Loads) is used.") + + args << makeArgument( + name: 'misc_fuel_loads_lighting_present', + type: Argument::Boolean, + required: false, + display_name: 'Misc Fuel Loads: Lighting Present') + description: 'Whether there is fuel loads lighting. If not provided, defaults to false.') + + args << makeArgument( + type: Argument::Choice, + name: 'misc_fuel_loads_lighting_fuel_type', misc_fuel_loads_fuel_choices, false) + display_name: 'Misc Fuel Loads: Lighting Fuel Type') + description: 'The fuel type of the fuel loads lighting.') + + args << makeArgument( + type: Argument::Double, + name: 'misc_fuel_loads_lighting_annual_therm' + required: false, + display_name: 'Misc Fuel Loads: Lighting Annual therm') + description: "The annual energy consumption of the fuel loads lighting. If not provided, the OS-HPXML default (see HPXML Fuel Loads)is used.") + units: 'therm/yr') + + args << makeArgument( + type: Argument::Double, + name: 'misc_fuel_loads_lighting_usage_multiplier' + required: false, + display_name: 'Misc Fuel Loads: Lighting Usage Multiplier') + description: "Multiplier on the fuel loads lighting energy usage that can reflect, e.g., high/low usage occupants. If not provided, the OS-HPXML default (see HPXML Fuel Loads) is used.") + + args << makeArgument( + name: 'misc_fuel_loads_fireplace_present', + type: Argument::Boolean, + required: false, + display_name: 'Misc Fuel Loads: Fireplace Present') + description: 'Whether there is fuel loads fireplace. If not provided, defaults to false.') + + args << makeArgument( + type: Argument::Choice, + name: 'misc_fuel_loads_fireplace_fuel_type', misc_fuel_loads_fuel_choices, false) + display_name: 'Misc Fuel Loads: Fireplace Fuel Type') + description: 'The fuel type of the fuel loads fireplace.') + + args << makeArgument( + type: Argument::Double, + name: 'misc_fuel_loads_fireplace_annual_therm' + required: false, + display_name: 'Misc Fuel Loads: Fireplace Annual therm') + description: "The annual energy consumption of the fuel loads fireplace. If not provided, the OS-HPXML default (see HPXML Fuel Loads) is used.") + units: 'therm/yr') + + args << makeArgument( + type: Argument::Double, + name: 'misc_fuel_loads_fireplace_frac_sensible' + required: false, + display_name: 'Misc Fuel Loads: Fireplace Sensible Fraction') + description: "Fraction of fireplace residual fuel loads' internal gains that are sensible. If not provided, the OS-HPXML default (see HPXML Fuel Loads) is used.") + units: 'Frac') + + args << makeArgument( + type: Argument::Double, + name: 'misc_fuel_loads_fireplace_frac_latent' + required: false, + display_name: 'Misc Fuel Loads: Fireplace Latent Fraction') + description: "Fraction of fireplace residual fuel loads' internal gains that are latent. If not provided, the OS-HPXML default (see HPXML Fuel Loads) is used.") + units: 'Frac') + + args << makeArgument( + type: Argument::Double, + name: 'misc_fuel_loads_fireplace_usage_multiplier' + required: false, + display_name: 'Misc Fuel Loads: Fireplace Usage Multiplier') + description: "Multiplier on the fuel loads fireplace energy usage that can reflect, e.g., high/low usage occupants. If not provided, the OS-HPXML default (see HPXML Fuel Loads) is used.") + heater_type_choices = OpenStudio::StringVector.new heater_type_choices << HPXML::TypeNone heater_type_choices << HPXML::HeaterTypeElectricResistance heater_type_choices << HPXML::HeaterTypeGas heater_type_choices << HPXML::HeaterTypeHeatPump - arg = OpenStudio::Measure::OSArgument::makeBoolArgument('pool_present', false) - arg.setDisplayName('Pool: Present') - arg.setDescription('Whether there is a pool. If not provided, defaults to false.') - arg.setDefaultValue(false) - args << arg - - arg = OpenStudio::Measure::OSArgument::makeDoubleArgument('pool_pump_annual_kwh', false) - arg.setDisplayName('Pool: Pump Annual kWh') - arg.setDescription("The annual energy consumption of the pool pump. If not provided, the OS-HPXML default (see Pool Pump) is used.") - arg.setUnits('kWh/yr') - args << arg - - arg = OpenStudio::Measure::OSArgument::makeDoubleArgument('pool_pump_usage_multiplier', false) - arg.setDisplayName('Pool: Pump Usage Multiplier') - arg.setDescription("Multiplier on the pool pump energy usage that can reflect, e.g., high/low usage occupants. If not provided, the OS-HPXML default (see Pool Pump) is used.") - args << arg - - arg = OpenStudio::Measure::OSArgument::makeChoiceArgument('pool_heater_type', heater_type_choices, false) - arg.setDisplayName('Pool: Heater Type') - arg.setDescription("The type of pool heater. Use '#{HPXML::TypeNone}' if there is no pool heater.") - arg.setDefaultValue(HPXML::TypeNone) - args << arg - - arg = OpenStudio::Measure::OSArgument::makeDoubleArgument('pool_heater_annual_kwh', false) - arg.setDisplayName('Pool: Heater Annual kWh') - arg.setDescription("The annual energy consumption of the #{HPXML::HeaterTypeElectricResistance} pool heater. If not provided, the OS-HPXML default (see Pool Heater) is used.") - arg.setUnits('kWh/yr') - args << arg - - arg = OpenStudio::Measure::OSArgument::makeDoubleArgument('pool_heater_annual_therm', false) - arg.setDisplayName('Pool: Heater Annual therm') - arg.setDescription("The annual energy consumption of the #{HPXML::HeaterTypeGas} pool heater. If not provided, the OS-HPXML default (see Pool Heater) is used.") - arg.setUnits('therm/yr') - args << arg - - arg = OpenStudio::Measure::OSArgument::makeDoubleArgument('pool_heater_usage_multiplier', false) - arg.setDisplayName('Pool: Heater Usage Multiplier') - arg.setDescription("Multiplier on the pool heater energy usage that can reflect, e.g., high/low usage occupants. If not provided, the OS-HPXML default (see Pool Heater) is used.") - args << arg - - arg = OpenStudio::Measure::OSArgument::makeBoolArgument('permanent_spa_present', false) - arg.setDisplayName('Permanent Spa: Present') - arg.setDescription('Whether there is a permanent spa. If not provided, defaults to false.') - arg.setDefaultValue(false) - args << arg - - arg = OpenStudio::Measure::OSArgument::makeDoubleArgument('permanent_spa_pump_annual_kwh', false) - arg.setDisplayName('Permanent Spa: Pump Annual kWh') - arg.setDescription("The annual energy consumption of the permanent spa pump. If not provided, the OS-HPXML default (see Permanent Spa Pump) is used.") - arg.setUnits('kWh/yr') - args << arg - - arg = OpenStudio::Measure::OSArgument::makeDoubleArgument('permanent_spa_pump_usage_multiplier', false) - arg.setDisplayName('Permanent Spa: Pump Usage Multiplier') - arg.setDescription("Multiplier on the permanent spa pump energy usage that can reflect, e.g., high/low usage occupants. If not provided, the OS-HPXML default (see Permanent Spa Pump) is used.") - args << arg - - arg = OpenStudio::Measure::OSArgument::makeChoiceArgument('permanent_spa_heater_type', heater_type_choices, false) - arg.setDisplayName('Permanent Spa: Heater Type') - arg.setDescription("The type of permanent spa heater. Use '#{HPXML::TypeNone}' if there is no permanent spa heater.") - arg.setDefaultValue(HPXML::TypeNone) - args << arg - - arg = OpenStudio::Measure::OSArgument::makeDoubleArgument('permanent_spa_heater_annual_kwh', false) - arg.setDisplayName('Permanent Spa: Heater Annual kWh') - arg.setDescription("The annual energy consumption of the #{HPXML::HeaterTypeElectricResistance} permanent spa heater. If not provided, the OS-HPXML default (see Permanent Spa Heater) is used.") - arg.setUnits('kWh/yr') - args << arg - - arg = OpenStudio::Measure::OSArgument::makeDoubleArgument('permanent_spa_heater_annual_therm', false) - arg.setDisplayName('Permanent Spa: Heater Annual therm') - arg.setDescription("The annual energy consumption of the #{HPXML::HeaterTypeGas} permanent spa heater. If not provided, the OS-HPXML default (see Permanent Spa Heater) is used.") - arg.setUnits('therm/yr') - args << arg - - arg = OpenStudio::Measure::OSArgument::makeDoubleArgument('permanent_spa_heater_usage_multiplier', false) - arg.setDisplayName('Permanent Spa: Heater Usage Multiplier') - arg.setDescription("Multiplier on the permanent spa heater energy usage that can reflect, e.g., high/low usage occupants. If not provided, the OS-HPXML default (see Permanent Spa Heater) is used.") - args << arg - - arg = OpenStudio::Measure::OSArgument.makeStringArgument('emissions_scenario_names', false) - arg.setDisplayName('Emissions: Scenario Names') - arg.setDescription('Names of emissions scenarios. If multiple scenarios, use a comma-separated list. If not provided, no emissions scenarios are calculated.') - args << arg - - arg = OpenStudio::Measure::OSArgument.makeStringArgument('emissions_types', false) - arg.setDisplayName('Emissions: Types') - arg.setDescription('Types of emissions (e.g., CO2e, NOx, etc.). If multiple scenarios, use a comma-separated list.') - args << arg - - arg = OpenStudio::Measure::OSArgument.makeStringArgument('emissions_electricity_units', false) - arg.setDisplayName('Emissions: Electricity Units') - arg.setDescription('Electricity emissions factors units. If multiple scenarios, use a comma-separated list. Only lb/MWh and kg/MWh are allowed.') - args << arg - - arg = OpenStudio::Measure::OSArgument.makeStringArgument('emissions_electricity_values_or_filepaths', false) - arg.setDisplayName('Emissions: Electricity Values or File Paths') - arg.setDescription('Electricity emissions factors values, specified as either an annual factor or an absolute/relative path to a file with hourly factors. If multiple scenarios, use a comma-separated list.') - args << arg - - arg = OpenStudio::Measure::OSArgument.makeStringArgument('emissions_electricity_number_of_header_rows', false) - arg.setDisplayName('Emissions: Electricity Files Number of Header Rows') - arg.setDescription('The number of header rows in the electricity emissions factor file. Only applies when an electricity filepath is used. If multiple scenarios, use a comma-separated list.') - args << arg - - arg = OpenStudio::Measure::OSArgument.makeStringArgument('emissions_electricity_column_numbers', false) - arg.setDisplayName('Emissions: Electricity Files Column Numbers') - arg.setDescription('The column number in the electricity emissions factor file. Only applies when an electricity filepath is used. If multiple scenarios, use a comma-separated list.') - args << arg - - arg = OpenStudio::Measure::OSArgument.makeStringArgument('emissions_fossil_fuel_units', false) - arg.setDisplayName('Emissions: Fossil Fuel Units') - arg.setDescription('Fossil fuel emissions factors units. If multiple scenarios, use a comma-separated list. Only lb/MBtu and kg/MBtu are allowed.') - args << arg - + args << makeArgument( + name: 'pool_present', + type: Argument::Boolean, + required: false, + display_name: 'Pool: Present') + description: 'Whether there is a pool. If not provided, defaults to false.') + + args << makeArgument( + type: Argument::Double, + name: 'pool_pump_annual_kwh' + required: false, + display_name: 'Pool: Pump Annual kWh') + description: "The annual energy consumption of the pool pump. If not provided, the OS-HPXML default (see Pool Pump) is used.") + units: 'kWh/yr') + + args << makeArgument( + type: Argument::Double, + name: 'pool_pump_usage_multiplier' + required: false, + display_name: 'Pool: Pump Usage Multiplier') + description: "Multiplier on the pool pump energy usage that can reflect, e.g., high/low usage occupants. If not provided, the OS-HPXML default (see Pool Pump) is used.") + + args << makeArgument( + type: Argument::Choice, + name: 'pool_heater_type', heater_type_choices, false) + display_name: 'Pool: Heater Type') + description: "The type of pool heater. Use '#{HPXML::TypeNone}' if there is no pool heater.") + + args << makeArgument( + type: Argument::Double, + name: 'pool_heater_annual_kwh' + required: false, + display_name: 'Pool: Heater Annual kWh') + description: "The annual energy consumption of the #{HPXML::HeaterTypeElectricResistance} pool heater. If not provided, the OS-HPXML default (see Pool Heater) is used.") + units: 'kWh/yr') + + args << makeArgument( + type: Argument::Double, + name: 'pool_heater_annual_therm' + required: false, + display_name: 'Pool: Heater Annual therm') + description: "The annual energy consumption of the #{HPXML::HeaterTypeGas} pool heater. If not provided, the OS-HPXML default (see Pool Heater) is used.") + units: 'therm/yr') + + args << makeArgument( + type: Argument::Double, + name: 'pool_heater_usage_multiplier' + required: false, + display_name: 'Pool: Heater Usage Multiplier') + description: "Multiplier on the pool heater energy usage that can reflect, e.g., high/low usage occupants. If not provided, the OS-HPXML default (see Pool Heater) is used.") + + args << makeArgument( + name: 'permanent_spa_present', + type: Argument::Boolean, + required: false, + display_name: 'Permanent Spa: Present') + description: 'Whether there is a permanent spa. If not provided, defaults to false.') + + args << makeArgument( + type: Argument::Double, + name: 'permanent_spa_pump_annual_kwh' + required: false, + display_name: 'Permanent Spa: Pump Annual kWh') + description: "The annual energy consumption of the permanent spa pump. If not provided, the OS-HPXML default (see Permanent Spa Pump) is used.") + units: 'kWh/yr') + + args << makeArgument( + type: Argument::Double, + name: 'permanent_spa_pump_usage_multiplier' + required: false, + display_name: 'Permanent Spa: Pump Usage Multiplier') + description: "Multiplier on the permanent spa pump energy usage that can reflect, e.g., high/low usage occupants. If not provided, the OS-HPXML default (see Permanent Spa Pump) is used.") + + args << makeArgument( + type: Argument::Choice, + name: 'permanent_spa_heater_type', heater_type_choices, false) + display_name: 'Permanent Spa: Heater Type') + description: "The type of permanent spa heater. Use '#{HPXML::TypeNone}' if there is no permanent spa heater.") + + args << makeArgument( + type: Argument::Double, + name: 'permanent_spa_heater_annual_kwh' + required: false, + display_name: 'Permanent Spa: Heater Annual kWh') + description: "The annual energy consumption of the #{HPXML::HeaterTypeElectricResistance} permanent spa heater. If not provided, the OS-HPXML default (see Permanent Spa Heater) is used.") + units: 'kWh/yr') + + args << makeArgument( + type: Argument::Double, + name: 'permanent_spa_heater_annual_therm' + required: false, + display_name: 'Permanent Spa: Heater Annual therm') + description: "The annual energy consumption of the #{HPXML::HeaterTypeGas} permanent spa heater. If not provided, the OS-HPXML default (see Permanent Spa Heater) is used.") + units: 'therm/yr') + + args << makeArgument( + type: Argument::Double, + name: 'permanent_spa_heater_usage_multiplier' + required: false, + display_name: 'Permanent Spa: Heater Usage Multiplier') + description: "Multiplier on the permanent spa heater energy usage that can reflect, e.g., high/low usage occupants. If not provided, the OS-HPXML default (see Permanent Spa Heater) is used.") + + args << makeArgument( + type: Argument::String, + name: 'emissions_scenario_names' + required: false, + display_name: 'Emissions: Scenario Names') + description: 'Names of emissions scenarios. If multiple scenarios, use a comma-separated list. If not provided, no emissions scenarios are calculated.') + + args << makeArgument( + type: Argument::String, + name: 'emissions_types' + required: false, + display_name: 'Emissions: Types') + description: 'Types of emissions (e.g., CO2e, NOx, etc.). If multiple scenarios, use a comma-separated list.') + + args << makeArgument( + type: Argument::String, + name: 'emissions_electricity_units' + required: false, + display_name: 'Emissions: Electricity Units') + description: 'Electricity emissions factors units. If multiple scenarios, use a comma-separated list. Only lb/MWh and kg/MWh are allowed.') + + args << makeArgument( + type: Argument::String, + name: 'emissions_electricity_values_or_filepaths' + required: false, + display_name: 'Emissions: Electricity Values or File Paths') + description: 'Electricity emissions factors values, specified as either an annual factor or an absolute/relative path to a file with hourly factors. If multiple scenarios, use a comma-separated list.') + + args << makeArgument( + type: Argument::String, + name: 'emissions_electricity_number_of_header_rows' + required: false, + display_name: 'Emissions: Electricity Files Number of Header Rows') + description: 'The number of header rows in the electricity emissions factor file. Only applies when an electricity filepath is used. If multiple scenarios, use a comma-separated list.') + + args << makeArgument( + type: Argument::String, + name: 'emissions_electricity_column_numbers' + required: false, + display_name: 'Emissions: Electricity Files Column Numbers') + description: 'The column number in the electricity emissions factor file. Only applies when an electricity filepath is used. If multiple scenarios, use a comma-separated list.') + + args << makeArgument( + type: Argument::String, + name: 'emissions_fossil_fuel_units' + required: false, + display_name: 'Emissions: Fossil Fuel Units') + description: 'Fossil fuel emissions factors units. If multiple scenarios, use a comma-separated list. Only lb/MBtu and kg/MBtu are allowed.') + HPXML::fossil_fuels.each do |fossil_fuel| underscore_case = OpenStudio::toUnderscoreCase(fossil_fuel) all_caps_case = fossil_fuel.split(' ').map(&:capitalize).join(' ') cap_case = fossil_fuel.capitalize - arg = OpenStudio::Measure::OSArgument.makeStringArgument("emissions_#{underscore_case}_values", false) - arg.setDisplayName("Emissions: #{all_caps_case} Values") - arg.setDescription("#{cap_case} emissions factors values, specified as an annual factor. If multiple scenarios, use a comma-separated list.") - args << arg + args << makeArgument( + type: Argument::String, + name: "emissions_#{underscore_case}_values", false) + display_name: "Emissions: #{all_caps_case} Values") + description: "#{cap_case} emissions factors values, specified as an annual factor. If multiple scenarios, use a comma-separated list.") end - arg = OpenStudio::Measure::OSArgument.makeStringArgument('utility_bill_scenario_names', false) - arg.setDisplayName('Utility Bills: Scenario Names') - arg.setDescription('Names of utility bill scenarios. If multiple scenarios, use a comma-separated list. If not provided, no utility bills scenarios are calculated.') - args << arg - - arg = OpenStudio::Measure::OSArgument.makeStringArgument('utility_bill_electricity_filepaths', false) - arg.setDisplayName('Utility Bills: Electricity File Paths') - arg.setDescription('Electricity tariff file specified as an absolute/relative path to a file with utility rate structure information. Tariff file must be formatted to OpenEI API version 7. If multiple scenarios, use a comma-separated list.') - args << arg + args << makeArgument( + type: Argument::String, + name: 'utility_bill_scenario_names' + required: false, + display_name: 'Utility Bills: Scenario Names') + description: 'Names of utility bill scenarios. If multiple scenarios, use a comma-separated list. If not provided, no utility bills scenarios are calculated.') + + args << makeArgument( + type: Argument::String, + name: 'utility_bill_electricity_filepaths' + required: false, + display_name: 'Utility Bills: Electricity File Paths') + description: 'Electricity tariff file specified as an absolute/relative path to a file with utility rate structure information. Tariff file must be formatted to OpenEI API version 7. If multiple scenarios, use a comma-separated list.') + HPXML::all_fuels.each do |fuel| underscore_case = OpenStudio::toUnderscoreCase(fuel) all_caps_case = fuel.split(' ').map(&:capitalize).join(' ') cap_case = fuel.capitalize - arg = OpenStudio::Measure::OSArgument.makeStringArgument("utility_bill_#{underscore_case}_fixed_charges", false) - arg.setDisplayName("Utility Bills: #{all_caps_case} Fixed Charges") - arg.setDescription("#{cap_case} utility bill monthly fixed charges. If multiple scenarios, use a comma-separated list.") - args << arg + args << makeArgument( + type: Argument::String, + name: "utility_bill_#{underscore_case}_fixed_charges", false) + display_name: "Utility Bills: #{all_caps_case} Fixed Charges") + description: "#{cap_case} utility bill monthly fixed charges. If multiple scenarios, use a comma-separated list.") end HPXML::all_fuels.each do |fuel| @@ -3546,64 +4304,83 @@ def makeArgument(name:, all_caps_case = fuel.split(' ').map(&:capitalize).join(' ') cap_case = fuel.capitalize - arg = OpenStudio::Measure::OSArgument.makeStringArgument("utility_bill_#{underscore_case}_marginal_rates", false) - arg.setDisplayName("Utility Bills: #{all_caps_case} Marginal Rates") - arg.setDescription("#{cap_case} utility bill marginal rates. If multiple scenarios, use a comma-separated list.") - args << arg - end - - arg = OpenStudio::Measure::OSArgument.makeStringArgument('utility_bill_pv_compensation_types', false) - arg.setDisplayName('Utility Bills: PV Compensation Types') - arg.setDescription('Utility bill PV compensation types. If multiple scenarios, use a comma-separated list.') - args << arg - - arg = OpenStudio::Measure::OSArgument.makeStringArgument('utility_bill_pv_net_metering_annual_excess_sellback_rate_types', false) - arg.setDisplayName('Utility Bills: PV Net Metering Annual Excess Sellback Rate Types') - arg.setDescription("Utility bill PV net metering annual excess sellback rate types. Only applies if the PV compensation type is '#{HPXML::PVCompensationTypeNetMetering}'. If multiple scenarios, use a comma-separated list.") - args << arg - - arg = OpenStudio::Measure::OSArgument.makeStringArgument('utility_bill_pv_net_metering_annual_excess_sellback_rates', false) - arg.setDisplayName('Utility Bills: PV Net Metering Annual Excess Sellback Rates') - arg.setDescription("Utility bill PV net metering annual excess sellback rates. Only applies if the PV compensation type is '#{HPXML::PVCompensationTypeNetMetering}' and the PV annual excess sellback rate type is '#{HPXML::PVAnnualExcessSellbackRateTypeUserSpecified}'. If multiple scenarios, use a comma-separated list.") - args << arg - - arg = OpenStudio::Measure::OSArgument.makeStringArgument('utility_bill_pv_feed_in_tariff_rates', false) - arg.setDisplayName('Utility Bills: PV Feed-In Tariff Rates') - arg.setDescription("Utility bill PV annual full/gross feed-in tariff rates. Only applies if the PV compensation type is '#{HPXML::PVCompensationTypeFeedInTariff}'. If multiple scenarios, use a comma-separated list.") - args << arg - - arg = OpenStudio::Measure::OSArgument.makeStringArgument('utility_bill_pv_monthly_grid_connection_fee_units', false) - arg.setDisplayName('Utility Bills: PV Monthly Grid Connection Fee Units') - arg.setDescription('Utility bill PV monthly grid connection fee units. If multiple scenarios, use a comma-separated list.') - args << arg - - arg = OpenStudio::Measure::OSArgument.makeStringArgument('utility_bill_pv_monthly_grid_connection_fees', false) - arg.setDisplayName('Utility Bills: PV Monthly Grid Connection Fees') - arg.setDescription('Utility bill PV monthly grid connection fees. If multiple scenarios, use a comma-separated list.') - args << arg - - arg = OpenStudio::Measure::OSArgument.makeStringArgument('additional_properties', false) - arg.setDisplayName('Additional Properties') - arg.setDescription("Additional properties specified as key-value pairs (i.e., key=value). If multiple additional properties, use a |-separated list. For example, 'LowIncome=false|Remodeled|Description=2-story home in Denver'. These properties will be stored in the HPXML file under /HPXML/SoftwareInfo/extension/AdditionalProperties.") - args << arg - - arg = OpenStudio::Measure::OSArgument::makeBoolArgument('combine_like_surfaces', false) - arg.setDisplayName('Combine like surfaces?') - arg.setDescription('If true, combines like surfaces to simplify the HPXML file generated.') - arg.setDefaultValue(false) - args << arg - - arg = OpenStudio::Measure::OSArgument::makeBoolArgument('apply_defaults', false) - arg.setDisplayName('Apply Default Values?') - arg.setDescription('If true, applies OS-HPXML default values to the HPXML output file. Setting to true will also force validation of the HPXML output file before applying OS-HPXML default values.') - arg.setDefaultValue(false) - args << arg - - arg = OpenStudio::Measure::OSArgument::makeBoolArgument('apply_validation', false) - arg.setDisplayName('Apply Validation?') - arg.setDescription('If true, validates the HPXML output file. Set to false for faster performance. Note that validation is not needed if the HPXML file will be validated downstream (e.g., via the HPXMLtoOpenStudio measure).') - arg.setDefaultValue(false) - args << arg + args << makeArgument( + type: Argument::String, + name: "utility_bill_#{underscore_case}_marginal_rates", false) + display_name: "Utility Bills: #{all_caps_case} Marginal Rates") + description: "#{cap_case} utility bill marginal rates. If multiple scenarios, use a comma-separated list.") + end + + args << makeArgument( + type: Argument::String, + name: 'utility_bill_pv_compensation_types' + required: false, + display_name: 'Utility Bills: PV Compensation Types') + description: 'Utility bill PV compensation types. If multiple scenarios, use a comma-separated list.') + + args << makeArgument( + type: Argument::String, + name: 'utility_bill_pv_net_metering_annual_excess_sellback_rate_types' + required: false, + display_name: 'Utility Bills: PV Net Metering Annual Excess Sellback Rate Types') + description: "Utility bill PV net metering annual excess sellback rate types. Only applies if the PV compensation type is '#{HPXML::PVCompensationTypeNetMetering}'. If multiple scenarios, use a comma-separated list.") + + args << makeArgument( + type: Argument::String, + name: 'utility_bill_pv_net_metering_annual_excess_sellback_rates' + required: false, + display_name: 'Utility Bills: PV Net Metering Annual Excess Sellback Rates') + description: "Utility bill PV net metering annual excess sellback rates. Only applies if the PV compensation type is '#{HPXML::PVCompensationTypeNetMetering}' and the PV annual excess sellback rate type is '#{HPXML::PVAnnualExcessSellbackRateTypeUserSpecified}'. If multiple scenarios, use a comma-separated list.") + + args << makeArgument( + type: Argument::String, + name: 'utility_bill_pv_feed_in_tariff_rates' + required: false, + display_name: 'Utility Bills: PV Feed-In Tariff Rates') + description: "Utility bill PV annual full/gross feed-in tariff rates. Only applies if the PV compensation type is '#{HPXML::PVCompensationTypeFeedInTariff}'. If multiple scenarios, use a comma-separated list.") + + args << makeArgument( + type: Argument::String, + name: 'utility_bill_pv_monthly_grid_connection_fee_units' + required: false, + display_name: 'Utility Bills: PV Monthly Grid Connection Fee Units') + description: 'Utility bill PV monthly grid connection fee units. If multiple scenarios, use a comma-separated list.') + + args << makeArgument( + type: Argument::String, + name: 'utility_bill_pv_monthly_grid_connection_fees' + required: false, + display_name: 'Utility Bills: PV Monthly Grid Connection Fees') + description: 'Utility bill PV monthly grid connection fees. If multiple scenarios, use a comma-separated list.') + + args << makeArgument( + type: Argument::String, + name: 'additional_properties' + required: false, + display_name: 'Additional Properties') + description: "Additional properties specified as key-value pairs (i.e., key=value). If multiple additional properties, use a |-separated list. For example, 'LowIncome=false|Remodeled|Description=2-story home in Denver'. These properties will be stored in the HPXML file under /HPXML/SoftwareInfo/extension/AdditionalProperties.") + + args << makeArgument( + name: 'combine_like_surfaces', + type: Argument::Boolean, + required: false, + display_name: 'Combine like surfaces?') + description: 'If true, combines like surfaces to simplify the HPXML file generated.') + + args << makeArgument( + name: 'apply_defaults', + type: Argument::Boolean, + required: false, + display_name: 'Apply Default Values?') + description: 'If true, applies OS-HPXML default values to the HPXML output file. Setting to true will also force validation of the HPXML output file before applying OS-HPXML default values.') + + args << makeArgument( + name: 'apply_validation', + type: Argument::Boolean, + required: false, + display_name: 'Apply Validation?') + description: 'If true, validates the HPXML output file. Set to false for faster performance. Note that validation is not needed if the HPXML file will be validated downstream (e.g., via the HPXMLtoOpenStudio measure).') + return args end From 775eb161969e5a4eadb1f0983d621ed78465f46c Mon Sep 17 00:00:00 2001 From: Joe Robertson Date: Sat, 2 Nov 2024 08:08:53 -0700 Subject: [PATCH 18/33] Progress. --- BuildResidentialHPXML/measure.rb | 1231 ++++++++++++++++++------------ 1 file changed, 738 insertions(+), 493 deletions(-) diff --git a/BuildResidentialHPXML/measure.rb b/BuildResidentialHPXML/measure.rb index acd339b5cc..e86c46f93e 100644 --- a/BuildResidentialHPXML/measure.rb +++ b/BuildResidentialHPXML/measure.rb @@ -1070,9 +1070,12 @@ def makeArgument(name:, args << makeArgument( type: Argument::Choice, - name: 'radiant_barrier_attic_location', radiant_barrier_attic_location_choices, false) - display_name: 'Attic: Radiant Barrier Location') - description: 'The location of the radiant barrier in the attic.') + name: 'radiant_barrier_attic_location', + choices: radiant_barrier_attic_location_choices, + required: false, + display_name: 'Attic: Radiant Barrier Location', + description: 'The location of the radiant barrier in the attic.' + ) radiant_barrier_grade_choices = OpenStudio::StringVector.new radiant_barrier_grade_choices << '1' @@ -1081,9 +1084,13 @@ def makeArgument(name:, args << makeArgument( type: Argument::Choice, - name: 'radiant_barrier_grade', radiant_barrier_grade_choices, false) - display_name: 'Attic: Radiant Barrier Grade') - description: "The grade of the radiant barrier in the attic. If not provided, the OS-HPXML default (see HPXML Roofs) is used.") + name: 'radiant_barrier_grade', + choices: radiant_barrier_grade_choices, + required: false, + display_name: 'Attic: Radiant Barrier Grade', + description: "The grade of the radiant barrier in the attic.", + default_href: "HPXML Roofs" + ) wall_type_choices = OpenStudio::StringVector.new wall_type_choices << HPXML::WallTypeWoodStud @@ -1100,9 +1107,12 @@ def makeArgument(name:, args << makeArgument( type: Argument::Choice, - name: 'wall_type', wall_type_choices, true) - display_name: 'Wall: Type') - description: 'The type of walls.') + name: 'wall_type', + choices: wall_type_choices, + required: true, + display_name: 'Wall: Type', + description: 'The type of walls.' + ) wall_siding_type_choices = OpenStudio::StringVector.new wall_siding_type_choices << HPXML::SidingTypeAluminum @@ -1119,86 +1129,114 @@ def makeArgument(name:, args << makeArgument( type: Argument::Choice, - name: 'wall_siding_type', wall_siding_type_choices, false) - display_name: 'Wall: Siding Type') - description: "The siding type of the walls. Also applies to rim joists. If not provided, the OS-HPXML default (see HPXML Walls) is used.") + name: 'wall_siding_type', + choices: wall_siding_type_choices, + required: false, + display_name: 'Wall: Siding Type', + description: "The siding type of the walls. Also applies to rim joists.", + default_href: "HPXML Walls" + ) args << makeArgument( type: Argument::Choice, - name: 'wall_color', color_choices, false) - display_name: 'Wall: Color') - description: "The color of the walls. Also applies to rim joists. If not provided, the OS-HPXML default (see HPXML Walls) is used.") + name: 'wall_color', + choices: color_choices, + required: false, + display_name: 'Wall: Color', + description: "The color of the walls. Also applies to rim joists.", + default_href: "HPXML Walls" + ) args << makeArgument( type: Argument::Double, - name: 'wall_assembly_r', true) - display_name: 'Wall: Assembly R-value') - units: 'h-ft^2-R/Btu') - description: 'Assembly R-value of the walls.') + name: 'wall_assembly_r', + required: true, + display_name: 'Wall: Assembly R-value', + units: 'h-ft^2-R/Btu', + description: 'Assembly R-value of the walls.' + ) args << makeArgument( type: Argument::Double, - name: 'window_area_front', true) - display_name: 'Windows: Front Window Area') - units: 'ft^2') - description: "The amount of window area on the unit's front facade. A value less than 1 will be treated as a window-to-wall ratio. If the front wall is adiabatic, the value will be ignored.") + name: 'window_area_front', + required: true, + display_name: 'Windows: Front Window Area', + units: 'ft^2', + description: "The amount of window area on the unit's front facade. A value less than 1 will be treated as a window-to-wall ratio. If the front wall is adiabatic, the value will be ignored." + ) args << makeArgument( type: Argument::Double, - name: 'window_area_back', true) - display_name: 'Windows: Back Window Area') - units: 'ft^2') - description: "The amount of window area on the unit's back facade. A value less than 1 will be treated as a window-to-wall ratio. If the back wall is adiabatic, the value will be ignored.") + name: 'window_area_back', + required: true, + display_name: 'Windows: Back Window Area', + units: 'ft^2', + description: "The amount of window area on the unit's back facade. A value less than 1 will be treated as a window-to-wall ratio. If the back wall is adiabatic, the value will be ignored." + ) args << makeArgument( type: Argument::Double, - name: 'window_area_left', true) - display_name: 'Windows: Left Window Area') - units: 'ft^2') - description: "The amount of window area on the unit's left facade (when viewed from the front). A value less than 1 will be treated as a window-to-wall ratio. If the left wall is adiabatic, the value will be ignored.") + name: 'window_area_left', + required: true, + display_name: 'Windows: Left Window Area', + units: 'ft^2', + description: "The amount of window area on the unit's left facade (when viewed from the front). A value less than 1 will be treated as a window-to-wall ratio. If the left wall is adiabatic, the value will be ignored." + ) args << makeArgument( type: Argument::Double, - name: 'window_area_right', true) - display_name: 'Windows: Right Window Area') - units: 'ft^2') - description: "The amount of window area on the unit's right facade (when viewed from the front). A value less than 1 will be treated as a window-to-wall ratio. If the right wall is adiabatic, the value will be ignored.") + name: 'window_area_right', + required: true, + display_name: 'Windows: Right Window Area', + units: 'ft^2', + description: "The amount of window area on the unit's right facade (when viewed from the front). A value less than 1 will be treated as a window-to-wall ratio. If the right wall is adiabatic, the value will be ignored." + ) args << makeArgument( type: Argument::Double, - name: 'window_aspect_ratio', true) - display_name: 'Windows: Aspect Ratio') - units: 'Frac') - description: 'Ratio of window height to width.') + name: 'window_aspect_ratio', + required: true, + display_name: 'Windows: Aspect Ratio', + units: 'Frac', + description: 'Ratio of window height to width.' + ) args << makeArgument( type: Argument::Double, - name: 'window_ufactor', true) - display_name: 'Windows: U-Factor') - units: 'Btu/hr-ft^2-R') - description: 'Full-assembly NFRC U-factor.') + name: 'window_ufactor', + required: true, + display_name: 'Windows: U-Factor', + units: 'Btu/hr-ft^2-R', + description: 'Full-assembly NFRC U-factor.' + ) args << makeArgument( type: Argument::Double, - name: 'window_shgc', true) - display_name: 'Windows: SHGC') - description: 'Full-assembly NFRC solar heat gain coefficient.') + name: 'window_shgc', + required: true, + display_name: 'Windows: SHGC', + description: 'Full-assembly NFRC solar heat gain coefficient.' + ) args << makeArgument( type: Argument::Double, - name: 'window_fraction_operable' + name: 'window_fraction_operable', required: false, - display_name: 'Windows: Fraction Operable') - units: 'Frac') - description: "Fraction of windows that are operable. If not provided, the OS-HPXML default (see HPXML Windows) is used.") + display_name: 'Windows: Fraction Operable', + units: 'Frac', + description: "Fraction of windows that are operable.", + default_href: "HPXML Windows" + ) args << makeArgument( type: Argument::Integer, - name: 'window_natvent_availability' + name: 'window_natvent_availability', required: false, - display_name: 'Windows: Natural Ventilation Availability') - units: 'Days/week') - description: "For operable windows, the number of days/week that windows can be opened by occupants for natural ventilation. If not provided, the OS-HPXML default (see HPXML Windows) is used.") + display_name: 'Windows: Natural Ventilation Availability', + units: 'Days/week', + description: "For operable windows, the number of days/week that windows can be opened by occupants for natural ventilation.", + default_href: "HPXML Windows" + ) window_interior_shading_type_choices = OpenStudio::StringVector.new window_interior_shading_type_choices << HPXML::InteriorShadingTypeLightCurtains @@ -1215,25 +1253,33 @@ def makeArgument(name:, args << makeArgument( type: Argument::Choice, - name: 'window_interior_shading_type', window_interior_shading_type_choices, false) - display_name: 'Windows: Interior Shading Type') - description: "Type of window interior shading. Summer/winter shading coefficients can be provided below instead. If neither is provided, the OS-HPXML default (see HPXML Interior Shading) is used.") + name: 'window_interior_shading_type', + choices: window_interior_shading_type_choices, + required: false, + display_name: 'Windows: Interior Shading Type', + description: "Type of window interior shading. Summer/winter shading coefficients can be provided below instead.", + default_href: "HPXML Interior Shading" + ) args << makeArgument( type: Argument::Double, - name: 'window_interior_shading_winter' + name: 'window_interior_shading_winter', required: false, - display_name: 'Windows: Winter Interior Shading Coefficient') - units: 'Frac') - description: "Interior shading coefficient for the winter season, which if provided overrides the shading type input. 1.0 indicates no reduction in solar gain, 0.85 indicates 15% reduction, etc. If not provided, the OS-HPXML default (see HPXML Interior Shading) is used.") + display_name: 'Windows: Winter Interior Shading Coefficient', + units: 'Frac', + description: "Interior shading coefficient for the winter season, which if provided overrides the shading type input. 1.0 indicates no reduction in solar gain, 0.85 indicates 15% reduction, etc.", + default_href: "HPXML Interior Shading" + ) args << makeArgument( type: Argument::Double, - name: 'window_interior_shading_summer' + name: 'window_interior_shading_summer', required: false, - display_name: 'Windows: Summer Interior Shading Coefficient') - units: 'Frac') - description: "Interior shading coefficient for the summer season, which if provided overrides the shading type input. 1.0 indicates no reduction in solar gain, 0.85 indicates 15% reduction, etc. If not provided, the OS-HPXML default (see HPXML Interior Shading) is used.") + display_name: 'Windows: Summer Interior Shading Coefficient', + units: 'Frac', + description: "Interior shading coefficient for the summer season, which if provided overrides the shading type input. 1.0 indicates no reduction in solar gain, 0.85 indicates 15% reduction, etc.", + default_href: "HPXML Interior Shading" + ) window_exterior_shading_type_choices = OpenStudio::StringVector.new window_exterior_shading_type_choices << HPXML::ExteriorShadingTypeSolarFilm @@ -1245,32 +1291,42 @@ def makeArgument(name:, args << makeArgument( type: Argument::Choice, - name: 'window_exterior_shading_type', window_exterior_shading_type_choices, false) - display_name: 'Windows: Exterior Shading Type') - description: "Type of window exterior shading. Summer/winter shading coefficients can be provided below instead. If neither is provided, the OS-HPXML default (see HPXML Exterior Shading) is used.") + name: 'window_exterior_shading_type', + choices: window_exterior_shading_type_choices, + required: false, + display_name: 'Windows: Exterior Shading Type', + description: "Type of window exterior shading. Summer/winter shading coefficients can be provided below instead.", + default_href: "HPXML Exterior Shading" + ) args << makeArgument( type: Argument::Double, - name: 'window_exterior_shading_winter' + name: 'window_exterior_shading_winter', required: false, - display_name: 'Windows: Winter Exterior Shading Coefficient') - units: 'Frac') - description: "Exterior shading coefficient for the winter season, which if provided overrides the shading type input. 1.0 indicates no reduction in solar gain, 0.85 indicates 15% reduction, etc. If not provided, the OS-HPXML default (see HPXML Exterior Shading) is used.") + display_name: 'Windows: Winter Exterior Shading Coefficient', + units: 'Frac', + description: "Exterior shading coefficient for the winter season, which if provided overrides the shading type input. 1.0 indicates no reduction in solar gain, 0.85 indicates 15% reduction, etc.", + default_href: "HPXML Exterior Shading" + ) args << makeArgument( type: Argument::Double, - name: 'window_exterior_shading_summer' + name: 'window_exterior_shading_summer', required: false, - display_name: 'Windows: Summer Exterior Shading Coefficient') - units: 'Frac') - description: "Exterior shading coefficient for the summer season, which if provided overrides the shading type input. 1.0 indicates no reduction in solar gain, 0.85 indicates 15% reduction, etc. If not provided, the OS-HPXML default (see HPXML Exterior Shading) is used.") + display_name: 'Windows: Summer Exterior Shading Coefficient', + units: 'Frac', + description: "Exterior shading coefficient for the summer season, which if provided overrides the shading type input. 1.0 indicates no reduction in solar gain, 0.85 indicates 15% reduction, etc.", + default_href: "HPXML Exterior Shading" + ) args << makeArgument( type: Argument::String, - name: 'window_shading_summer_season' + name: 'window_shading_summer_season', required: false, - display_name: 'Windows: Shading Summer Season') - description: "Enter a date range like 'May 1 - Sep 30'. Defines the summer season for purposes of shading coefficients; the rest of the year is assumed to be winter. If not provided, the OS-HPXML default (see HPXML Windows) is used.") + display_name: 'Windows: Shading Summer Season', + description: "Enter a date range like 'May 1 - Sep 30'. Defines the summer season for purposes of shading coefficients; the rest of the year is assumed to be winter.", + default_href: "HPXML Windows" + ) window_insect_screen_choices = OpenStudio::StringVector.new window_insect_screen_choices << Constants::None @@ -1279,9 +1335,12 @@ def makeArgument(name:, args << makeArgument( type: Argument::Choice, - name: 'window_insect_screens', window_insect_screen_choices, false) - display_name: 'Windows: Insect Screens') - description: 'The type of insect screens, if present. If not provided, assumes there are no insect screens.') + name: 'window_insect_screens', + choices: window_insect_screen_choices, + required: false, + display_name: 'Windows: Insect Screens', + description: 'The type of insect screens, if present. If not provided, assumes there are no insect screens.' + ) storm_window_type_choices = OpenStudio::StringVector.new storm_window_type_choices << HPXML::WindowGlassTypeClear @@ -1289,172 +1348,200 @@ def makeArgument(name:, args << makeArgument( type: Argument::Choice, - name: 'window_storm_type', storm_window_type_choices, false) - display_name: 'Windows: Storm Type') - description: 'The type of storm, if present. If not provided, assumes there is no storm.') + name: 'window_storm_type', + choices: storm_window_type_choices, + required: false, + display_name: 'Windows: Storm Type', + description: 'The type of storm, if present. If not provided, assumes there is no storm.' + ) args << makeArgument( type: Argument::Double, - name: 'overhangs_front_depth' + name: 'overhangs_front_depth', required: false, - display_name: 'Overhangs: Front Depth') - units: 'ft') - description: 'The depth of overhangs for windows for the front facade.') + display_name: 'Overhangs: Front Depth', + units: 'ft', + description: 'The depth of overhangs for windows for the front facade.' + ) args << makeArgument( type: Argument::Double, - name: 'overhangs_front_distance_to_top_of_window' + name: 'overhangs_front_distance_to_top_of_window', required: false, - display_name: 'Overhangs: Front Distance to Top of Window') - units: 'ft') - description: 'The overhangs distance to the top of window for the front facade.') + display_name: 'Overhangs: Front Distance to Top of Window', + units: 'ft', + description: 'The overhangs distance to the top of window for the front facade.' + ) args << makeArgument( type: Argument::Double, - name: 'overhangs_front_distance_to_bottom_of_window' + name: 'overhangs_front_distance_to_bottom_of_window', required: false, - display_name: 'Overhangs: Front Distance to Bottom of Window') - units: 'ft') - description: 'The overhangs distance to the bottom of window for the front facade.') + display_name: 'Overhangs: Front Distance to Bottom of Window', + units: 'ft', + description: 'The overhangs distance to the bottom of window for the front facade.' + ) args << makeArgument( type: Argument::Double, - name: 'overhangs_back_depth' + name: 'overhangs_back_depth', required: false, - display_name: 'Overhangs: Back Depth') - units: 'ft') - description: 'The depth of overhangs for windows for the back facade.') + display_name: 'Overhangs: Back Depth', + units: 'ft', + description: 'The depth of overhangs for windows for the back facade.' + ) args << makeArgument( type: Argument::Double, - name: 'overhangs_back_distance_to_top_of_window' + name: 'overhangs_back_distance_to_top_of_window', required: false, - display_name: 'Overhangs: Back Distance to Top of Window') - units: 'ft') - description: 'The overhangs distance to the top of window for the back facade.') + display_name: 'Overhangs: Back Distance to Top of Window', + units: 'ft', + description: 'The overhangs distance to the top of window for the back facade.' + ) args << makeArgument( type: Argument::Double, - name: 'overhangs_back_distance_to_bottom_of_window' + name: 'overhangs_back_distance_to_bottom_of_window', required: false, - display_name: 'Overhangs: Back Distance to Bottom of Window') - units: 'ft') - description: 'The overhangs distance to the bottom of window for the back facade.') + display_name: 'Overhangs: Back Distance to Bottom of Window', + units: 'ft', + description: 'The overhangs distance to the bottom of window for the back facade.' + ) args << makeArgument( type: Argument::Double, - name: 'overhangs_left_depth' + name: 'overhangs_left_depth', required: false, - display_name: 'Overhangs: Left Depth') - units: 'ft') - description: 'The depth of overhangs for windows for the left facade.') + display_name: 'Overhangs: Left Depth', + units: 'ft', + description: 'The depth of overhangs for windows for the left facade.' + ) args << makeArgument( type: Argument::Double, - name: 'overhangs_left_distance_to_top_of_window' + name: 'overhangs_left_distance_to_top_of_window', required: false, - display_name: 'Overhangs: Left Distance to Top of Window') - units: 'ft') - description: 'The overhangs distance to the top of window for the left facade.') + display_name: 'Overhangs: Left Distance to Top of Window', + units: 'ft', + description: 'The overhangs distance to the top of window for the left facade.' + ) args << makeArgument( type: Argument::Double, - name: 'overhangs_left_distance_to_bottom_of_window' + name: 'overhangs_left_distance_to_bottom_of_window', required: false, - display_name: 'Overhangs: Left Distance to Bottom of Window') - units: 'ft') - description: 'The overhangs distance to the bottom of window for the left facade.') + display_name: 'Overhangs: Left Distance to Bottom of Window', + units: 'ft', + description: 'The overhangs distance to the bottom of window for the left facade.' + ) args << makeArgument( type: Argument::Double, - name: 'overhangs_right_depth' + name: 'overhangs_right_depth', required: false, - display_name: 'Overhangs: Right Depth') - units: 'ft') - description: 'The depth of overhangs for windows for the right facade.') + display_name: 'Overhangs: Right Depth', + units: 'ft', + description: 'The depth of overhangs for windows for the right facade.' + ) args << makeArgument( type: Argument::Double, - name: 'overhangs_right_distance_to_top_of_window' + name: 'overhangs_right_distance_to_top_of_window', required: false, - display_name: 'Overhangs: Right Distance to Top of Window') - units: 'ft') - description: 'The overhangs distance to the top of window for the right facade.') + display_name: 'Overhangs: Right Distance to Top of Window', + units: 'ft', + description: 'The overhangs distance to the top of window for the right facade.' + ) args << makeArgument( type: Argument::Double, - name: 'overhangs_right_distance_to_bottom_of_window' + name: 'overhangs_right_distance_to_bottom_of_window', required: false, - display_name: 'Overhangs: Right Distance to Bottom of Window') - units: 'ft') - description: 'The overhangs distance to the bottom of window for the right facade.') + display_name: 'Overhangs: Right Distance to Bottom of Window', + units: 'ft', + description: 'The overhangs distance to the bottom of window for the right facade.' + ) args << makeArgument( type: Argument::Double, - name: 'skylight_area_front' + name: 'skylight_area_front', required: false, - display_name: 'Skylights: Front Roof Area') - units: 'ft^2') - description: "The amount of skylight area on the unit's front conditioned roof facade.") + display_name: 'Skylights: Front Roof Area', + units: 'ft^2', + description: "The amount of skylight area on the unit's front conditioned roof facade." + ) args << makeArgument( type: Argument::Double, - name: 'skylight_area_back' + name: 'skylight_area_back', required: false, - display_name: 'Skylights: Back Roof Area') - units: 'ft^2') - description: "The amount of skylight area on the unit's back conditioned roof facade.") + display_name: 'Skylights: Back Roof Area', + units: 'ft^2', + description: "The amount of skylight area on the unit's back conditioned roof facade." + ) args << makeArgument( type: Argument::Double, - name: 'skylight_area_left' + name: 'skylight_area_left', required: false, - display_name: 'Skylights: Left Roof Area') - units: 'ft^2') - description: "The amount of skylight area on the unit's left conditioned roof facade (when viewed from the front).") + display_name: 'Skylights: Left Roof Area', + units: 'ft^2', + description: "The amount of skylight area on the unit's left conditioned roof facade (when viewed from the front)." + ) args << makeArgument( type: Argument::Double, - name: 'skylight_area_right' + name: 'skylight_area_right', required: false, - display_name: 'Skylights: Right Roof Area') - units: 'ft^2') - description: "The amount of skylight area on the unit's right conditioned roof facade (when viewed from the front).") + display_name: 'Skylights: Right Roof Area', + units: 'ft^2', + description: "The amount of skylight area on the unit's right conditioned roof facade (when viewed from the front)." + ) args << makeArgument( type: Argument::Double, - name: 'skylight_ufactor' + name: 'skylight_ufactor', required: false, - display_name: 'Skylights: U-Factor') - units: 'Btu/hr-ft^2-R') - description: 'Full-assembly NFRC U-factor.') + display_name: 'Skylights: U-Factor', + units: 'Btu/hr-ft^2-R', + description: 'Full-assembly NFRC U-factor.' + ) args << makeArgument( name: 'skylight_shgc', type: Argument::Double, required: false, - display_name: 'Skylights: SHGC') - description: 'Full-assembly NFRC solar heat gain coefficient.') + display_name: 'Skylights: SHGC', + description: 'Full-assembly NFRC solar heat gain coefficient.' + ) args << makeArgument( type: Argument::Choice, - name: 'skylight_storm_type', storm_window_type_choices, false) - display_name: 'Skylights: Storm Type') - description: 'The type of storm, if present. If not provided, assumes there is no storm.') + name: 'skylight_storm_type', + choices: storm_window_type_choices, + required: false, + display_name: 'Skylights: Storm Type', + description: 'The type of storm, if present. If not provided, assumes there is no storm.' + ) args << makeArgument( type: Argument::Double, - name: 'door_area', true) - display_name: 'Doors: Area') - units: 'ft^2') - description: 'The area of the opaque door(s).') + name: 'door_area', + required: true, + display_name: 'Doors: Area', + units: 'ft^2', + description: 'The area of the opaque door(s).' + ) args << makeArgument( type: Argument::Double, - name: 'door_rvalue', true) - display_name: 'Doors: R-value') - units: 'h-ft^2-R/Btu') - description: 'R-value of the opaque door(s).') + name: 'door_rvalue', + required: true, + display_name: 'Doors: R-value', + units: 'h-ft^2-R/Btu', + description: 'R-value of the opaque door(s).' + ) air_leakage_leakiness_description_choices = OpenStudio::StringVector.new air_leakage_leakiness_description_choices << HPXML::LeakinessVeryTight @@ -1465,9 +1552,12 @@ def makeArgument(name:, args << makeArgument( type: Argument::Choice, - name: 'air_leakage_leakiness_description', air_leakage_leakiness_description_choices, false) - display_name: 'Air Leakage: Leakiness Description') - description: 'Qualitative description of infiltration. If provided, the Year Built of the home is required. Either provide this input or provide a numeric air leakage value below.') + name: 'air_leakage_leakiness_description', + choices: air_leakage_leakiness_description_choices, + required: false, + display_name: 'Air Leakage: Leakiness Description', + description: 'Qualitative description of infiltration. If provided, the Year Built of the home is required. Either provide this input or provide a numeric air leakage value below.' + ) air_leakage_units_choices = OpenStudio::StringVector.new air_leakage_units_choices << HPXML::UnitsACH @@ -1478,24 +1568,29 @@ def makeArgument(name:, args << makeArgument( type: Argument::Choice, - name: 'air_leakage_units', air_leakage_units_choices, false) - display_name: 'Air Leakage: Units') - description: 'The unit of measure for the air leakage if providing a numeric air leakage value.') + name: 'air_leakage_units', + choices: air_leakage_units_choices, + required: false, + display_name: 'Air Leakage: Units', + description: 'The unit of measure for the air leakage if providing a numeric air leakage value.' + ) args << makeArgument( type: Argument::Double, name: 'air_leakage_house_pressure' required: false, - display_name: 'Air Leakage: House Pressure') - units: 'Pa') - description: "The house pressure relative to outside if providing a numeric air leakage value. Required when units are #{HPXML::UnitsACH} or #{HPXML::UnitsCFM}.") + display_name: 'Air Leakage: House Pressure', + units: 'Pa', + description: "The house pressure relative to outside if providing a numeric air leakage value. Required when units are #{HPXML::UnitsACH} or #{HPXML::UnitsCFM}." + ) args << makeArgument( type: Argument::Double, - name: 'air_leakage_value' + name: 'air_leakage_value', required: false, - display_name: 'Air Leakage: Value') - description: "Numeric air leakage value. For '#{HPXML::UnitsELA}', provide value in sq. in. If provided, overrides Leakiness Description input.") + display_name: 'Air Leakage: Value', + description: "Numeric air leakage value. For '#{HPXML::UnitsELA}', provide value in sq. in. If provided, overrides Leakiness Description input." + ) air_leakage_type_choices = OpenStudio::StringVector.new air_leakage_type_choices << HPXML::InfiltrationTypeUnitTotal @@ -1503,9 +1598,12 @@ def makeArgument(name:, args << makeArgument( type: Argument::Choice, - name: 'air_leakage_type', air_leakage_type_choices, false) - display_name: 'Air Leakage: Type') - description: "Type of air leakage if providing a numeric air leakage value. If '#{HPXML::InfiltrationTypeUnitTotal}', represents the total infiltration to the unit as measured by a compartmentalization test, in which case the air leakage value will be adjusted by the ratio of exterior envelope surface area to total envelope surface area. Otherwise, if '#{HPXML::InfiltrationTypeUnitExterior}', represents the infiltration to the unit from outside only as measured by a guarded test. Required when unit type is #{HPXML::ResidentialTypeSFA} or #{HPXML::ResidentialTypeApartment}.") + name: 'air_leakage_type', + choices: air_leakage_type_choices, + required: false, + display_name: 'Air Leakage: Type', + description: "Type of air leakage if providing a numeric air leakage value. If '#{HPXML::InfiltrationTypeUnitTotal}', represents the total infiltration to the unit as measured by a compartmentalization test, in which case the air leakage value will be adjusted by the ratio of exterior envelope surface area to total envelope surface area. Otherwise, if '#{HPXML::InfiltrationTypeUnitExterior}', represents the infiltration to the unit from outside only as measured by a guarded test. Required when unit type is #{HPXML::ResidentialTypeSFA} or #{HPXML::ResidentialTypeApartment}." + ) args << makeArgument( name: 'air_leakage_has_flue_or_chimney_in_conditioned_space', @@ -1559,27 +1657,34 @@ def makeArgument(name:, args << makeArgument( type: Argument::Choice, - name: 'heating_system_type', heating_system_type_choices, true) - display_name: 'Heating System: Type') - description: "The type of heating system. Use '#{Constants::None}' if there is no heating system or if there is a heat pump serving a heating load.") + name: 'heating_system_type', + choices: heating_system_type_choices, + required: true, + display_name: 'Heating System: Type', + description: "The type of heating system. Use '#{Constants::None}' if there is no heating system or if there is a heat pump serving a heating load." + ) args << makeArgument( type: Argument::Choice, - name: 'heating_system_fuel', heating_system_fuel_choices, false) - display_name: 'Heating System: Fuel Type') - description: "The fuel type of the heating system. Ignored for #{HPXML::HVACTypeElectricResistance}.") + name: 'heating_system_fuel', + choices: heating_system_fuel_choices, + required: false, + display_name: 'Heating System: Fuel Type', + description: "The fuel type of the heating system. Ignored for #{HPXML::HVACTypeElectricResistance}." + ) args << makeArgument( type: Argument::Double, - name: 'heating_system_heating_efficiency' + name: 'heating_system_heating_efficiency', required: false, - display_name: 'Heating System: Rated AFUE or Percent') - units: 'Frac') - description: 'The rated heating efficiency value of the heating system.') + display_name: 'Heating System: Rated AFUE or Percent', + units: 'Frac', + description: 'The rated heating efficiency value of the heating system.' + ) args << makeArgument( type: Argument::Double, - name: 'heating_system_heating_capacity' + name: 'heating_system_heating_capacity', required: false, display_name: 'Heating System: Heating Capacity') description: "The output heating capacity of the heating system. If not provided, the OS-HPXML autosized default (see HPXML Heating Systems) is used.") @@ -1587,14 +1692,14 @@ def makeArgument(name:, args << makeArgument( type: Argument::Double, - name: 'heating_system_heating_autosizing_factor' + name: 'heating_system_heating_autosizing_factor', required: false, display_name: 'Heating System: Heating Autosizing Factor') description: 'The capacity scaling factor applied to the auto-sizing methodology. If not provided, 1.0 is used.') args << makeArgument( type: Argument::Double, - name: 'heating_system_heating_autosizing_limit' + name: 'heating_system_heating_autosizing_limit', required: false, display_name: 'Heating System: Heating Autosizing Limit') description: 'The maximum capacity limit applied to the auto-sizing methodology. If not provided, no limit is used.') @@ -1602,7 +1707,7 @@ def makeArgument(name:, args << makeArgument( type: Argument::Double, - name: 'heating_system_fraction_heat_load_served' + name: 'heating_system_fraction_heat_load_served', required: false, display_name: 'Heating System: Fraction Heat Load Served') description: 'The heating load served by the heating system.') @@ -1610,7 +1715,7 @@ def makeArgument(name:, args << makeArgument( type: Argument::Double, - name: 'heating_system_pilot_light' + name: 'heating_system_pilot_light', required: false, display_name: 'Heating System: Pilot Light') description: "The fuel usage of the pilot light. Applies only to #{HPXML::HVACTypeFurnace}, #{HPXML::HVACTypeWallFurnace}, #{HPXML::HVACTypeFloorFurnace}, #{HPXML::HVACTypeStove}, #{HPXML::HVACTypeBoiler}, and #{HPXML::HVACTypeFireplace} with non-electric fuel type. If not provided, assumes no pilot light.") @@ -1618,7 +1723,7 @@ def makeArgument(name:, args << makeArgument( type: Argument::Double, - name: 'heating_system_airflow_defect_ratio' + name: 'heating_system_airflow_defect_ratio', required: false, display_name: 'Heating System: Airflow Defect Ratio') description: "The airflow defect ratio, defined as (InstalledAirflow - DesignAirflow) / DesignAirflow, of the heating system per ANSI/RESNET/ACCA Standard 310. A value of zero means no airflow defect. Applies only to #{HPXML::HVACTypeFurnace}. If not provided, assumes no defect.") @@ -1626,32 +1731,38 @@ def makeArgument(name:, args << makeArgument( type: Argument::Choice, - name: 'cooling_system_type', cooling_system_type_choices, true) + name: 'cooling_system_type', + choices: cooling_system_type_choices, + required: true) display_name: 'Cooling System: Type') description: "The type of cooling system. Use '#{Constants::None}' if there is no cooling system or if there is a heat pump serving a cooling load.") args << makeArgument( type: Argument::Choice, - name: 'cooling_system_cooling_efficiency_type', cooling_efficiency_type_choices, false) + name: 'cooling_system_cooling_efficiency_type', + choices: cooling_efficiency_type_choices, + required: false) display_name: 'Cooling System: Efficiency Type') description: "The efficiency type of the cooling system. System types #{HPXML::HVACTypeCentralAirConditioner} and #{HPXML::HVACTypeMiniSplitAirConditioner} use #{HPXML::UnitsSEER} or #{HPXML::UnitsSEER2}. System types #{HPXML::HVACTypeRoomAirConditioner} and #{HPXML::HVACTypePTAC} use #{HPXML::UnitsEER} or #{HPXML::UnitsCEER}. Ignored for system type #{HPXML::HVACTypeEvaporativeCooler}.") args << makeArgument( type: Argument::Double, - name: 'cooling_system_cooling_efficiency' + name: 'cooling_system_cooling_efficiency', required: false, display_name: 'Cooling System: Efficiency') description: "The rated efficiency value of the cooling system. Ignored for #{HPXML::HVACTypeEvaporativeCooler}.") args << makeArgument( type: Argument::Choice, - name: 'cooling_system_cooling_compressor_type', compressor_type_choices, false) + name: 'cooling_system_cooling_compressor_type', + choices: compressor_type_choices, + required: false) display_name: 'Cooling System: Cooling Compressor Type') description: "The compressor type of the cooling system. Only applies to #{HPXML::HVACTypeCentralAirConditioner} and #{HPXML::HVACTypeMiniSplitAirConditioner}. If not provided, the OS-HPXML default (see Central Air Conditioner, Mini-Split Air Conditioner) is used.") args << makeArgument( type: Argument::Double, - name: 'cooling_system_cooling_sensible_heat_fraction' + name: 'cooling_system_cooling_sensible_heat_fraction', required: false, display_name: 'Cooling System: Cooling Sensible Heat Fraction') description: "The sensible heat fraction of the cooling system. Ignored for #{HPXML::HVACTypeEvaporativeCooler}. If not provided, the OS-HPXML default (see Central Air Conditioner, Room Air Conditioner, Packaged Terminal Air Conditioner, Mini-Split Air Conditioner) is used.") @@ -1659,7 +1770,7 @@ def makeArgument(name:, args << makeArgument( type: Argument::Double, - name: 'cooling_system_cooling_capacity' + name: 'cooling_system_cooling_capacity', required: false, display_name: 'Cooling System: Cooling Capacity') description: "The output cooling capacity of the cooling system. If not provided, the OS-HPXML autosized default (see Central Air Conditioner, Room Air Conditioner, Packaged Terminal Air Conditioner, Evaporative Cooler, Mini-Split Air Conditioner) is used.") @@ -1667,14 +1778,14 @@ def makeArgument(name:, args << makeArgument( type: Argument::Double, - name: 'cooling_system_cooling_autosizing_factor' + name: 'cooling_system_cooling_autosizing_factor', required: false, display_name: 'Cooling System: Cooling Autosizing Factor') description: 'The capacity scaling factor applied to the auto-sizing methodology. If not provided, 1.0 is used.') args << makeArgument( type: Argument::Double, - name: 'cooling_system_cooling_autosizing_limit' + name: 'cooling_system_cooling_autosizing_limit', required: false, display_name: 'Cooling System: Cooling Autosizing Limit') description: 'The maximum capacity limit applied to the auto-sizing methodology. If not provided, no limit is used.') @@ -1682,7 +1793,7 @@ def makeArgument(name:, args << makeArgument( type: Argument::Double, - name: 'cooling_system_fraction_cool_load_served' + name: 'cooling_system_fraction_cool_load_served', required: false, display_name: 'Cooling System: Fraction Cool Load Served') description: 'The cooling load served by the cooling system.') @@ -1697,7 +1808,7 @@ def makeArgument(name:, args << makeArgument( type: Argument::Double, - name: 'cooling_system_airflow_defect_ratio' + name: 'cooling_system_airflow_defect_ratio', required: false, display_name: 'Cooling System: Airflow Defect Ratio') description: "The airflow defect ratio, defined as (InstalledAirflow - DesignAirflow) / DesignAirflow, of the cooling system per ANSI/RESNET/ACCA Standard 310. A value of zero means no airflow defect. Applies only to #{HPXML::HVACTypeCentralAirConditioner} and ducted #{HPXML::HVACTypeMiniSplitAirConditioner}. If not provided, assumes no defect.") @@ -1705,7 +1816,7 @@ def makeArgument(name:, args << makeArgument( type: Argument::Double, - name: 'cooling_system_charge_defect_ratio' + name: 'cooling_system_charge_defect_ratio', required: false, display_name: 'Cooling System: Charge Defect Ratio') description: "The refrigerant charge defect ratio, defined as (InstalledCharge - DesignCharge) / DesignCharge, of the cooling system per ANSI/RESNET/ACCA Standard 310. A value of zero means no refrigerant charge defect. Applies only to #{HPXML::HVACTypeCentralAirConditioner} and #{HPXML::HVACTypeMiniSplitAirConditioner}. If not provided, assumes no defect.") @@ -1713,7 +1824,7 @@ def makeArgument(name:, args << makeArgument( type: Argument::Double, - name: 'cooling_system_crankcase_heater_watts' + name: 'cooling_system_crankcase_heater_watts', required: false, display_name: 'Cooling System: Crankcase Heater Power Watts') description: "Cooling system crankcase heater power consumption in Watts. Applies only to #{HPXML::HVACTypeCentralAirConditioner}, #{HPXML::HVACTypeRoomAirConditioner}, #{HPXML::HVACTypePTAC} and #{HPXML::HVACTypeMiniSplitAirConditioner}. If not provided, the OS-HPXML default (see Central Air Conditioner, Room Air Conditioner, Packaged Terminal Air Conditioner, Mini-Split Air Conditioner) is used.") @@ -1721,13 +1832,15 @@ def makeArgument(name:, args << makeArgument( type: Argument::Choice, - name: 'cooling_system_integrated_heating_system_fuel', heating_system_fuel_choices, false) + name: 'cooling_system_integrated_heating_system_fuel', + choices: heating_system_fuel_choices, + required: false) display_name: 'Cooling System: Integrated Heating System Fuel Type') description: "The fuel type of the heating system integrated into cooling system. Only used for #{HPXML::HVACTypePTAC} and #{HPXML::HVACTypeRoomAirConditioner}.") args << makeArgument( type: Argument::Double, - name: 'cooling_system_integrated_heating_system_efficiency_percent' + name: 'cooling_system_integrated_heating_system_efficiency_percent', required: false, display_name: 'Cooling System: Integrated Heating System Efficiency') units: 'Frac') @@ -1735,7 +1848,7 @@ def makeArgument(name:, args << makeArgument( type: Argument::Double, - name: 'cooling_system_integrated_heating_system_capacity' + name: 'cooling_system_integrated_heating_system_capacity', required: false, display_name: 'Cooling System: Integrated Heating System Heating Capacity') description: "The output heating capacity of the heating system integrated into cooling system. If not provided, the OS-HPXML autosized default (see Room Air Conditioner, Packaged Terminal Air Conditioner) is used. Only used for #{HPXML::HVACTypeRoomAirConditioner} and #{HPXML::HVACTypePTAC}.") @@ -1743,7 +1856,7 @@ def makeArgument(name:, args << makeArgument( type: Argument::Double, - name: 'cooling_system_integrated_heating_system_fraction_heat_load_served' + name: 'cooling_system_integrated_heating_system_fraction_heat_load_served', required: false, display_name: 'Cooling System: Integrated Heating System Fraction Heat Load Served') description: "The heating load served by the heating system integrated into cooling system. Only used for #{HPXML::HVACTypePTAC} and #{HPXML::HVACTypeRoomAirConditioner}.") @@ -1784,45 +1897,53 @@ def makeArgument(name:, args << makeArgument( type: Argument::Choice, - name: 'heat_pump_type', heat_pump_type_choices, true) + name: 'heat_pump_type', + choices: heat_pump_type_choices, + required: true) display_name: 'Heat Pump: Type') description: "The type of heat pump. Use '#{Constants::None}' if there is no heat pump.") args << makeArgument( type: Argument::Choice, - name: 'heat_pump_heating_efficiency_type', heat_pump_heating_efficiency_type_choices, false) + name: 'heat_pump_heating_efficiency_type', + choices: heat_pump_heating_efficiency_type_choices, + required: false) display_name: 'Heat Pump: Heating Efficiency Type') description: "The heating efficiency type of heat pump. System types #{HPXML::HVACTypeHeatPumpAirToAir} and #{HPXML::HVACTypeHeatPumpMiniSplit} use #{HPXML::UnitsHSPF} or #{HPXML::UnitsHSPF2}. System types #{HPXML::HVACTypeHeatPumpGroundToAir}, #{HPXML::HVACTypeHeatPumpPTHP} and #{HPXML::HVACTypeHeatPumpRoom} use #{HPXML::UnitsCOP}.") args << makeArgument( type: Argument::Double, - name: 'heat_pump_heating_efficiency' + name: 'heat_pump_heating_efficiency', required: false, display_name: 'Heat Pump: Heating Efficiency') description: 'The rated heating efficiency value of the heat pump.') args << makeArgument( type: Argument::Choice, - name: 'heat_pump_cooling_efficiency_type', cooling_efficiency_type_choices, false) + name: 'heat_pump_cooling_efficiency_type', + choices: cooling_efficiency_type_choices, + required: false) display_name: 'Heat Pump: Cooling Efficiency Type') description: "The cooling efficiency type of heat pump. System types #{HPXML::HVACTypeHeatPumpAirToAir} and #{HPXML::HVACTypeHeatPumpMiniSplit} use #{HPXML::UnitsSEER} or #{HPXML::UnitsSEER2}. System types #{HPXML::HVACTypeHeatPumpGroundToAir}, #{HPXML::HVACTypeHeatPumpPTHP} and #{HPXML::HVACTypeHeatPumpRoom} use #{HPXML::UnitsEER}.") args << makeArgument( type: Argument::Double, - name: 'heat_pump_cooling_efficiency' + name: 'heat_pump_cooling_efficiency', required: false, display_name: 'Heat Pump: Cooling Efficiency') description: 'The rated cooling efficiency value of the heat pump.') args << makeArgument( type: Argument::Choice, - name: 'heat_pump_cooling_compressor_type', compressor_type_choices, false) + name: 'heat_pump_cooling_compressor_type', + choices: compressor_type_choices, + required: false) display_name: 'Heat Pump: Cooling Compressor Type') description: "The compressor type of the heat pump. Only applies to #{HPXML::HVACTypeHeatPumpAirToAir} and #{HPXML::HVACTypeHeatPumpMiniSplit}. If not provided, the OS-HPXML default (see Air-to-Air Heat Pump, Mini-Split Heat Pump) is used.") args << makeArgument( type: Argument::Double, - name: 'heat_pump_cooling_sensible_heat_fraction' + name: 'heat_pump_cooling_sensible_heat_fraction', required: false, display_name: 'Heat Pump: Cooling Sensible Heat Fraction') description: "The sensible heat fraction of the heat pump. If not provided, the OS-HPXML default (see Air-to-Air Heat Pump, Mini-Split Heat Pump, Packaged Terminal Heat Pump, Room Air Conditioner w/ Reverse Cycle, Ground-to-Air Heat Pump) is used.") @@ -1830,7 +1951,7 @@ def makeArgument(name:, args << makeArgument( type: Argument::Double, - name: 'heat_pump_heating_capacity' + name: 'heat_pump_heating_capacity', required: false, display_name: 'Heat Pump: Heating Capacity') description: "The output heating capacity of the heat pump. If not provided, the OS-HPXML autosized default (see Air-to-Air Heat Pump, Mini-Split Heat Pump, Packaged Terminal Heat Pump, Room Air Conditioner w/ Reverse Cycle, Ground-to-Air Heat Pump) is used.") @@ -1838,14 +1959,14 @@ def makeArgument(name:, args << makeArgument( type: Argument::Double, - name: 'heat_pump_heating_autosizing_factor' + name: 'heat_pump_heating_autosizing_factor', required: false, display_name: 'Heat Pump: Heating Autosizing Factor') description: 'The capacity scaling factor applied to the auto-sizing methodology. If not provided, 1.0 is used.') args << makeArgument( type: Argument::Double, - name: 'heat_pump_heating_autosizing_limit' + name: 'heat_pump_heating_autosizing_limit', required: false, display_name: 'Heat Pump: Heating Autosizing Limit') description: 'The maximum capacity limit applied to the auto-sizing methodology. If not provided, no limit is used.') @@ -1853,7 +1974,7 @@ def makeArgument(name:, args << makeArgument( type: Argument::Double, - name: 'heat_pump_heating_capacity_retention_fraction' + name: 'heat_pump_heating_capacity_retention_fraction', required: false, display_name: 'Heat Pump: Heating Capacity Retention Fraction') description: "The output heating capacity of the heat pump at a user-specified temperature (e.g., 17F or 5F) divided by the above nominal heating capacity. Applies to all heat pump types except #{HPXML::HVACTypeHeatPumpGroundToAir}. If not provided, the OS-HPXML default (see Air-to-Air Heat Pump, Mini-Split Heat Pump, Packaged Terminal Heat Pump, Room Air Conditioner w/ Reverse Cycle) is used.") @@ -1861,7 +1982,7 @@ def makeArgument(name:, args << makeArgument( type: Argument::Double, - name: 'heat_pump_heating_capacity_retention_temp' + name: 'heat_pump_heating_capacity_retention_temp', required: false, display_name: 'Heat Pump: Heating Capacity Retention Temperature') description: "The user-specified temperature (e.g., 17F or 5F) for the above heating capacity retention fraction. Applies to all heat pump types except #{HPXML::HVACTypeHeatPumpGroundToAir}. Required if the Heating Capacity Retention Fraction is provided.") @@ -1869,7 +1990,7 @@ def makeArgument(name:, args << makeArgument( type: Argument::Double, - name: 'heat_pump_cooling_capacity' + name: 'heat_pump_cooling_capacity', required: false, display_name: 'Heat Pump: Cooling Capacity') description: "The output cooling capacity of the heat pump. If not provided, the OS-HPXML autosized default (see Air-to-Air Heat Pump, Mini-Split Heat Pump, Packaged Terminal Heat Pump, Room Air Conditioner w/ Reverse Cycle, Ground-to-Air Heat Pump) is used.") @@ -1877,14 +1998,14 @@ def makeArgument(name:, args << makeArgument( type: Argument::Double, - name: 'heat_pump_cooling_autosizing_factor' + name: 'heat_pump_cooling_autosizing_factor', required: false, display_name: 'Heat Pump: Cooling Autosizing Factor') description: 'The capacity scaling factor applied to the auto-sizing methodology. If not provided, 1.0 is used.') args << makeArgument( type: Argument::Double, - name: 'heat_pump_cooling_autosizing_limit' + name: 'heat_pump_cooling_autosizing_limit', required: false, display_name: 'Heat Pump: Cooling Autosizing Limit') description: 'The maximum capacity limit applied to the auto-sizing methodology. If not provided, no limit is used.') @@ -1892,7 +2013,7 @@ def makeArgument(name:, args << makeArgument( type: Argument::Double, - name: 'heat_pump_fraction_heat_load_served' + name: 'heat_pump_fraction_heat_load_served', required: false, display_name: 'Heat Pump: Fraction Heat Load Served') description: 'The heating load served by the heat pump.') @@ -1900,7 +2021,7 @@ def makeArgument(name:, args << makeArgument( type: Argument::Double, - name: 'heat_pump_fraction_cool_load_served' + name: 'heat_pump_fraction_cool_load_served', required: false, display_name: 'Heat Pump: Fraction Cool Load Served') description: 'The cooling load served by the heat pump.') @@ -1908,7 +2029,7 @@ def makeArgument(name:, args << makeArgument( type: Argument::Double, - name: 'heat_pump_compressor_lockout_temp' + name: 'heat_pump_compressor_lockout_temp', required: false, display_name: 'Heat Pump: Compressor Lockout Temperature') description: "The temperature below which the heat pump compressor is disabled. If both this and Backup Heating Lockout Temperature are provided and use the same value, it essentially defines a switchover temperature (for, e.g., a dual-fuel heat pump). Applies to all heat pump types other than #{HPXML::HVACTypeHeatPumpGroundToAir}. If not provided, the OS-HPXML default (see Air-to-Air Heat Pump, Mini-Split Heat Pump, Packaged Terminal Heat Pump, Room Air Conditioner w/ Reverse Cycle) is used.") @@ -1916,20 +2037,22 @@ def makeArgument(name:, args << makeArgument( type: Argument::Choice, - name: 'heat_pump_backup_type', heat_pump_backup_type_choices, false) + name: 'heat_pump_backup_type', + choices: heat_pump_backup_type_choices, + required: false) display_name: 'Heat Pump: Backup Type') description: "The backup type of the heat pump. If '#{HPXML::HeatPumpBackupTypeIntegrated}', represents e.g. built-in electric strip heat or dual-fuel integrated furnace. If '#{HPXML::HeatPumpBackupTypeSeparate}', represents e.g. electric baseboard or boiler based on the Heating System 2 specified below. Use '#{Constants::None}' if there is no backup heating.") args << makeArgument( type: Argument::Double, - name: 'heat_pump_backup_heating_autosizing_factor' + name: 'heat_pump_backup_heating_autosizing_factor', required: false, display_name: 'Heat Pump: Backup Heating Autosizing Factor') description: "The capacity scaling factor applied to the auto-sizing methodology if Backup Type is '#{HPXML::HeatPumpBackupTypeIntegrated}'. If not provided, 1.0 is used. If Backup Type is '#{HPXML::HeatPumpBackupTypeSeparate}', use Heating System 2: Heating Autosizing Factor.") args << makeArgument( type: Argument::Double, - name: 'heat_pump_backup_heating_autosizing_limit' + name: 'heat_pump_backup_heating_autosizing_limit', required: false, display_name: 'Heat Pump: Backup Heating Autosizing Limit') description: "The maximum capacity limit applied to the auto-sizing methodology if Backup Type is '#{HPXML::HeatPumpBackupTypeIntegrated}'. If not provided, no limit is used. If Backup Type is '#{HPXML::HeatPumpBackupTypeSeparate}', use Heating System 2: Heating Autosizing Limit.") @@ -1937,20 +2060,22 @@ def makeArgument(name:, args << makeArgument( type: Argument::Choice, - name: 'heat_pump_backup_fuel', heat_pump_backup_fuel_choices, false) + name: 'heat_pump_backup_fuel', + choices: heat_pump_backup_fuel_choices, + required: false) display_name: 'Heat Pump: Backup Fuel Type') description: "The backup fuel type of the heat pump. Only applies if Backup Type is '#{HPXML::HeatPumpBackupTypeIntegrated}'.") args << makeArgument( type: Argument::Double, - name: 'heat_pump_backup_heating_efficiency' + name: 'heat_pump_backup_heating_efficiency', required: false, display_name: 'Heat Pump: Backup Rated Efficiency') description: "The backup rated efficiency value of the heat pump. Percent for electricity fuel type. AFUE otherwise. Only applies if Backup Type is '#{HPXML::HeatPumpBackupTypeIntegrated}'.") args << makeArgument( type: Argument::Double, - name: 'heat_pump_backup_heating_capacity' + name: 'heat_pump_backup_heating_capacity', required: false, display_name: 'Heat Pump: Backup Heating Capacity') description: "The backup output heating capacity of the heat pump. If not provided, the OS-HPXML autosized default (see Backup) is used. Only applies if Backup Type is '#{HPXML::HeatPumpBackupTypeIntegrated}'.") @@ -1958,7 +2083,7 @@ def makeArgument(name:, args << makeArgument( type: Argument::Double, - name: 'heat_pump_backup_heating_lockout_temp' + name: 'heat_pump_backup_heating_lockout_temp', required: false, display_name: 'Heat Pump: Backup Heating Lockout Temperature') description: "The temperature above which the heat pump backup system is disabled. If both this and Compressor Lockout Temperature are provided and use the same value, it essentially defines a switchover temperature (for, e.g., a dual-fuel heat pump). Applies for both Backup Type of '#{HPXML::HeatPumpBackupTypeIntegrated}' and '#{HPXML::HeatPumpBackupTypeSeparate}'. If not provided, the OS-HPXML default (see Backup) is used.") @@ -1966,17 +2091,21 @@ def makeArgument(name:, args << makeArgument( type: Argument::Choice, - name: 'heat_pump_sizing_methodology', heat_pump_sizing_choices, false) + name: 'heat_pump_sizing_methodology', + choices: heat_pump_sizing_choices, + required: false) display_name: 'Heat Pump: Sizing Methodology') description: "The auto-sizing methodology to use when the heat pump capacity is not provided. If not provided, the OS-HPXML default (see HPXML HVAC Sizing Control) is used.") args << makeArgument( type: Argument::Choice, - name: 'heat_pump_backup_sizing_methodology', heat_pump_backup_sizing_choices, false) + name: 'heat_pump_backup_sizing_methodology', + choices: heat_pump_backup_sizing_choices, + required: false) display_name: 'Heat Pump: Backup Sizing Methodology') description: "The auto-sizing methodology to use when the heat pump backup capacity is not provided. If not provided, the OS-HPXML default (see HPXML HVAC Sizing Control) is used.") - + args << makeArgument( name: 'heat_pump_is_ducted', type: Argument::Boolean, required: false, @@ -1985,7 +2114,7 @@ def makeArgument(name:, args << makeArgument( type: Argument::Double, - name: 'heat_pump_airflow_defect_ratio' + name: 'heat_pump_airflow_defect_ratio', required: false, display_name: 'Heat Pump: Airflow Defect Ratio') description: "The airflow defect ratio, defined as (InstalledAirflow - DesignAirflow) / DesignAirflow, of the heat pump per ANSI/RESNET/ACCA Standard 310. A value of zero means no airflow defect. Applies only to #{HPXML::HVACTypeHeatPumpAirToAir}, ducted #{HPXML::HVACTypeHeatPumpMiniSplit}, and #{HPXML::HVACTypeHeatPumpGroundToAir}. If not provided, assumes no defect.") @@ -1993,7 +2122,7 @@ def makeArgument(name:, args << makeArgument( type: Argument::Double, - name: 'heat_pump_charge_defect_ratio' + name: 'heat_pump_charge_defect_ratio', required: false, display_name: 'Heat Pump: Charge Defect Ratio') description: 'The refrigerant charge defect ratio, defined as (InstalledCharge - DesignCharge) / DesignCharge, of the heat pump per ANSI/RESNET/ACCA Standard 310. A value of zero means no refrigerant charge defect. Applies to all heat pump types. If not provided, assumes no defect.') @@ -2001,7 +2130,7 @@ def makeArgument(name:, args << makeArgument( type: Argument::Double, - name: 'heat_pump_crankcase_heater_watts' + name: 'heat_pump_crankcase_heater_watts', required: false, display_name: 'Heat Pump: Crankcase Heater Power Watts') description: "Heat Pump crankcase heater power consumption in Watts. Applies only to #{HPXML::HVACTypeHeatPumpAirToAir}, #{HPXML::HVACTypeHeatPumpMiniSplit}, #{HPXML::HVACTypeHeatPumpPTHP} and #{HPXML::HVACTypeHeatPumpRoom}. If not provided, the OS-HPXML default (see Air-to-Air Heat Pump, Mini-Split Heat Pump, Packaged Terminal Heat Pump, Room Air Conditioner w/ Reverse Cycle) is used.") @@ -2013,13 +2142,15 @@ def makeArgument(name:, args << makeArgument( type: Argument::Choice, - name: 'hvac_perf_data_capacity_type', perf_data_capacity_type_choices, false) + name: 'hvac_perf_data_capacity_type', + choices: perf_data_capacity_type_choices, + required: false) display_name: 'HVAC Detailed Performance Data: Capacity Type') description: 'Type of capacity values for detailed performance data if available. Applies only to variable-speed air-source HVAC systems (central air conditioners, mini-split air conditioners, air-to-air heat pumps, and mini-split heat pumps).') args << makeArgument( type: Argument::String, - name: 'hvac_perf_data_heating_outdoor_temperatures' + name: 'hvac_perf_data_heating_outdoor_temperatures', required: false, display_name: 'HVAC Detailed Performance Data: Heating Outdoor Temperatures') description: 'Outdoor temperatures of heating detailed performance data if available. Applies only to variable-speed air-source HVAC systems (central air conditioners, mini-split air conditioners, air-to-air heat pumps, and mini-split heat pumps). One of the outdoor temperatures must be 47 F. At least two performance data points are required using a comma-separated list.') @@ -2027,7 +2158,7 @@ def makeArgument(name:, args << makeArgument( type: Argument::String, - name: 'hvac_perf_data_heating_min_speed_capacities' + name: 'hvac_perf_data_heating_min_speed_capacities', required: false, display_name: 'HVAC Detailed Performance Data: Heating Minimum Speed Capacities') description: 'Minimum speed capacities of heating detailed performance data if available. Applies only to variable-speed air-source HVAC systems (central air conditioners, mini-split air conditioners, air-to-air heat pumps, and mini-split heat pumps). At least two performance data points are required using a comma-separated list.') @@ -2035,7 +2166,7 @@ def makeArgument(name:, args << makeArgument( type: Argument::String, - name: 'hvac_perf_data_heating_max_speed_capacities' + name: 'hvac_perf_data_heating_max_speed_capacities', required: false, display_name: 'HVAC Detailed Performance Data: Heating Maximum Speed Capacities') description: 'Maximum speed capacities of heating detailed performance data if available. Applies only to variable-speed air-source HVAC systems (central air conditioners, mini-split air conditioners, air-to-air heat pumps, and mini-split heat pumps). At least two performance data points are required using a comma-separated list.') @@ -2043,7 +2174,7 @@ def makeArgument(name:, args << makeArgument( type: Argument::String, - name: 'hvac_perf_data_heating_min_speed_cops' + name: 'hvac_perf_data_heating_min_speed_cops', required: false, display_name: 'HVAC Detailed Performance Data: Heating Minimum Speed COPs') description: 'Minimum speed efficiency COP values of heating detailed performance data if available. Applies only to variable-speed air-source HVAC systems (central air conditioners, mini-split air conditioners, air-to-air heat pumps, and mini-split heat pumps). At least two performance data points are required using a comma-separated list.') @@ -2051,7 +2182,7 @@ def makeArgument(name:, args << makeArgument( type: Argument::String, - name: 'hvac_perf_data_heating_max_speed_cops' + name: 'hvac_perf_data_heating_max_speed_cops', required: false, display_name: 'HVAC Detailed Performance Data: Heating Maximum Speed COPs') description: 'Maximum speed efficiency COP values of heating detailed performance data if available. Applies only to variable-speed air-source HVAC systems (central air conditioners, mini-split air conditioners, air-to-air heat pumps, and mini-split heat pumps). At least two performance data points are required using a comma-separated list.') @@ -2059,7 +2190,7 @@ def makeArgument(name:, args << makeArgument( type: Argument::String, - name: 'hvac_perf_data_cooling_outdoor_temperatures' + name: 'hvac_perf_data_cooling_outdoor_temperatures', required: false, display_name: 'HVAC Detailed Performance Data: Cooling Outdoor Temperatures') description: 'Outdoor temperatures of cooling detailed performance data if available. Applies only to variable-speed air-source HVAC systems (central air conditioners, mini-split air conditioners, air-to-air heat pumps, and mini-split heat pumps). One of the outdoor temperatures must be 95 F. At least two performance data points are required using a comma-separated list.') @@ -2067,7 +2198,7 @@ def makeArgument(name:, args << makeArgument( type: Argument::String, - name: 'hvac_perf_data_cooling_min_speed_capacities' + name: 'hvac_perf_data_cooling_min_speed_capacities', required: false, display_name: 'HVAC Detailed Performance Data: Cooling Minimum Speed Capacities') description: 'Minimum speed capacities of cooling detailed performance data if available. Applies only to variable-speed air-source HVAC systems (central air conditioners, mini-split air conditioners, air-to-air heat pumps, and mini-split heat pumps). At least two performance data points are required using a comma-separated list.') @@ -2075,7 +2206,7 @@ def makeArgument(name:, args << makeArgument( type: Argument::String, - name: 'hvac_perf_data_cooling_max_speed_capacities' + name: 'hvac_perf_data_cooling_max_speed_capacities', required: false, display_name: 'HVAC Detailed Performance Data: Cooling Maximum Speed Capacities') description: 'Maximum speed capacities of cooling detailed performance data if available. Applies only to variable-speed air-source HVAC systems (central air conditioners, mini-split air conditioners, air-to-air heat pumps, and mini-split heat pumps). At least two performance data points are required using a comma-separated list.') @@ -2083,7 +2214,7 @@ def makeArgument(name:, args << makeArgument( type: Argument::String, - name: 'hvac_perf_data_cooling_min_speed_cops' + name: 'hvac_perf_data_cooling_min_speed_cops', required: false, display_name: 'HVAC Detailed Performance Data: Cooling Minimum Speed COPs') description: 'Minimum speed efficiency COP values of cooling detailed performance data if available. Applies only to variable-speed air-source HVAC systems (central air conditioners, mini-split air conditioners, air-to-air heat pumps, and mini-split heat pumps). At least two performance data points are required using a comma-separated list.') @@ -2091,7 +2222,7 @@ def makeArgument(name:, args << makeArgument( type: Argument::String, - name: 'hvac_perf_data_cooling_max_speed_cops' + name: 'hvac_perf_data_cooling_max_speed_cops', required: false, display_name: 'HVAC Detailed Performance Data: Cooling Maximum Speed COPs') description: 'Maximum speed efficiency COP values of cooling detailed performance data if available. Applies only to variable-speed air-source HVAC systems (central air conditioners, mini-split air conditioners, air-to-air heat pumps, and mini-split heat pumps). At least two performance data points are required using a comma-separated list.') @@ -2106,7 +2237,9 @@ def makeArgument(name:, args << makeArgument( type: Argument::Choice, - name: 'geothermal_loop_configuration', geothermal_loop_configuration_choices, false) + name: 'geothermal_loop_configuration', + choices: geothermal_loop_configuration_choices, + required: false) display_name: 'Geothermal Loop: Configuration') description: "Configuration of the geothermal loop. Only applies to #{HPXML::HVACTypeHeatPumpGroundToAir} heat pump type. If not provided, the OS-HPXML default (see Ground-to-Air Heat Pump) is used.") @@ -2118,13 +2251,15 @@ def makeArgument(name:, args << makeArgument( type: Argument::Choice, - name: 'geothermal_loop_borefield_configuration', geothermal_loop_borefield_configuration_choices, false) + name: 'geothermal_loop_borefield_configuration', + choices: geothermal_loop_borefield_configuration_choices, + required: false) display_name: 'Geothermal Loop: Borefield Configuration') description: "Borefield configuration of the geothermal loop. Only applies to #{HPXML::HVACTypeHeatPumpGroundToAir} heat pump type. If not provided, the OS-HPXML default (see HPXML Geothermal Loops) is used.") args << makeArgument( type: Argument::Double, - name: 'geothermal_loop_loop_flow' + name: 'geothermal_loop_loop_flow', required: false, display_name: 'Geothermal Loop: Loop Flow') description: "Water flow rate through the geothermal loop. Only applies to #{HPXML::HVACTypeHeatPumpGroundToAir} heat pump type. If not provided, the OS-HPXML autosized default (see HPXML Geothermal Loops) is used.") @@ -2132,7 +2267,7 @@ def makeArgument(name:, args << makeArgument( type: Argument::Integer, - name: 'geothermal_loop_boreholes_count' + name: 'geothermal_loop_boreholes_count', required: false, display_name: 'Geothermal Loop: Boreholes Count') description: "Number of boreholes. Only applies to #{HPXML::HVACTypeHeatPumpGroundToAir} heat pump type. If not provided, the OS-HPXML autosized default (see HPXML Geothermal Loops) is used.") @@ -2140,7 +2275,7 @@ def makeArgument(name:, args << makeArgument( type: Argument::Double, - name: 'geothermal_loop_boreholes_length' + name: 'geothermal_loop_boreholes_length', required: false, display_name: 'Geothermal Loop: Boreholes Length') description: "Average length of each borehole (vertical). Only applies to #{HPXML::HVACTypeHeatPumpGroundToAir} heat pump type. If not provided, the OS-HPXML autosized default (see HPXML Geothermal Loops) is used.") @@ -2148,7 +2283,7 @@ def makeArgument(name:, args << makeArgument( type: Argument::Double, - name: 'geothermal_loop_boreholes_spacing' + name: 'geothermal_loop_boreholes_spacing', required: false, display_name: 'Geothermal Loop: Boreholes Spacing') description: "Distance between bores. Only applies to #{HPXML::HVACTypeHeatPumpGroundToAir} heat pump type. If not provided, the OS-HPXML default (see HPXML Geothermal Loops) is used.") @@ -2156,7 +2291,7 @@ def makeArgument(name:, args << makeArgument( type: Argument::Double, - name: 'geothermal_loop_boreholes_diameter' + name: 'geothermal_loop_boreholes_diameter', required: false, display_name: 'Geothermal Loop: Boreholes Diameter') description: "Diameter of bores. Only applies to #{HPXML::HVACTypeHeatPumpGroundToAir} heat pump type. If not provided, the OS-HPXML default (see HPXML Geothermal Loops) is used.") @@ -2168,13 +2303,17 @@ def makeArgument(name:, args << makeArgument( type: Argument::Choice, - name: 'geothermal_loop_grout_type', geothermal_loop_grout_or_pipe_type_choices, false) + name: 'geothermal_loop_grout_type', + choices: geothermal_loop_grout_or_pipe_type_choices, + required: false) display_name: 'Geothermal Loop: Grout Type') description: "Grout type of the geothermal loop. Only applies to #{HPXML::HVACTypeHeatPumpGroundToAir} heat pump type. If not provided, the OS-HPXML default (see HPXML Geothermal Loops) is used.") args << makeArgument( type: Argument::Choice, - name: 'geothermal_loop_pipe_type', geothermal_loop_grout_or_pipe_type_choices, false) + name: 'geothermal_loop_pipe_type', + choices: geothermal_loop_grout_or_pipe_type_choices, + required: false) display_name: 'Geothermal Loop: Pipe Type') description: "Pipe type of the geothermal loop. Only applies to #{HPXML::HVACTypeHeatPumpGroundToAir} heat pump type. If not provided, the OS-HPXML default (see HPXML Geothermal Loops) is used.") @@ -2185,7 +2324,9 @@ def makeArgument(name:, args << makeArgument( type: Argument::Choice, - name: 'geothermal_loop_pipe_diameter', geothermal_loop_pipe_diameter_choices, false) + name: 'geothermal_loop_pipe_diameter', + choices: geothermal_loop_pipe_diameter_choices, + required: false) display_name: 'Geothermal Loop: Pipe Diameter') description: "Pipe diameter of the geothermal loop. Only applies to #{HPXML::HVACTypeHeatPumpGroundToAir} heat pump type. If not provided, the OS-HPXML default (see HPXML Geothermal Loops) is used.") units: 'in') @@ -2203,19 +2344,23 @@ def makeArgument(name:, args << makeArgument( type: Argument::Choice, - name: 'heating_system_2_type', heating_system_2_type_choices, false) + name: 'heating_system_2_type', + choices: heating_system_2_type_choices, + required: false) display_name: 'Heating System 2: Type') description: "The type of the second heating system. If a heat pump is specified and the backup type is '#{HPXML::HeatPumpBackupTypeSeparate}', this heating system represents '#{HPXML::HeatPumpBackupTypeSeparate}' backup heating. For ducted heat pumps where the backup heating system is a '#{HPXML::HVACTypeFurnace}', the backup would typically be characterized as '#{HPXML::HeatPumpBackupTypeIntegrated}' in that the furnace and heat pump share the same distribution system and blower fan; a '#{HPXML::HVACTypeFurnace}' as '#{HPXML::HeatPumpBackupTypeSeparate}' backup to a ducted heat pump is not supported. If not provided, defaults to none.") args << makeArgument( type: Argument::Choice, - name: 'heating_system_2_fuel', heating_system_fuel_choices, false) + name: 'heating_system_2_fuel', + choices: heating_system_fuel_choices, + required: false) display_name: 'Heating System 2: Fuel Type') description: "The fuel type of the second heating system. Ignored for #{HPXML::HVACTypeElectricResistance}.") args << makeArgument( type: Argument::Double, - name: 'heating_system_2_heating_efficiency' + name: 'heating_system_2_heating_efficiency', required: false, display_name: 'Heating System 2: Rated AFUE or Percent') units: 'Frac') @@ -2223,7 +2368,7 @@ def makeArgument(name:, args << makeArgument( type: Argument::Double, - name: 'heating_system_2_heating_capacity' + name: 'heating_system_2_heating_capacity', required: false, display_name: 'Heating System 2: Heating Capacity') description: "The output heating capacity of the second heating system. If not provided, the OS-HPXML autosized default (see HPXML Heating Systems) is used.") @@ -2231,14 +2376,14 @@ def makeArgument(name:, args << makeArgument( type: Argument::Double, - name: 'heating_system_2_heating_autosizing_factor' + name: 'heating_system_2_heating_autosizing_factor', required: false, display_name: 'Heating System 2: Heating Autosizing Factor') description: 'The capacity scaling factor applied to the auto-sizing methodology. If not provided, 1.0 is used.') args << makeArgument( type: Argument::Double, - name: 'heating_system_2_heating_autosizing_limit' + name: 'heating_system_2_heating_autosizing_limit', required: false, display_name: 'Heating System 2: Heating Autosizing Limit') description: 'The maximum capacity limit applied to the auto-sizing methodology. If not provided, no limit is used.') @@ -2246,7 +2391,7 @@ def makeArgument(name:, args << makeArgument( type: Argument::Double, - name: 'heating_system_2_fraction_heat_load_served' + name: 'heating_system_2_fraction_heat_load_served', required: false, display_name: 'Heating System 2: Fraction Heat Load Served') description: 'The heat load served fraction of the second heating system. Ignored if this heating system serves as a backup system for a heat pump.') @@ -2254,7 +2399,7 @@ def makeArgument(name:, args << makeArgument( type: Argument::String, - name: 'hvac_control_heating_weekday_setpoint' + name: 'hvac_control_heating_weekday_setpoint', required: false, display_name: 'HVAC Control: Heating Weekday Setpoint Schedule') description: 'Specify the constant or 24-hour comma-separated weekday heating setpoint schedule. Required unless a detailed CSV schedule is provided.') @@ -2262,7 +2407,7 @@ def makeArgument(name:, args << makeArgument( type: Argument::String, - name: 'hvac_control_heating_weekend_setpoint' + name: 'hvac_control_heating_weekend_setpoint', required: false, display_name: 'HVAC Control: Heating Weekend Setpoint Schedule') description: 'Specify the constant or 24-hour comma-separated weekend heating setpoint schedule. Required unless a detailed CSV schedule is provided.') @@ -2270,7 +2415,7 @@ def makeArgument(name:, args << makeArgument( type: Argument::String, - name: 'hvac_control_cooling_weekday_setpoint' + name: 'hvac_control_cooling_weekday_setpoint', required: false, display_name: 'HVAC Control: Cooling Weekday Setpoint Schedule') description: 'Specify the constant or 24-hour comma-separated weekday cooling setpoint schedule. Required unless a detailed CSV schedule is provided.') @@ -2278,7 +2423,7 @@ def makeArgument(name:, args << makeArgument( type: Argument::String, - name: 'hvac_control_cooling_weekend_setpoint' + name: 'hvac_control_cooling_weekend_setpoint', required: false, display_name: 'HVAC Control: Cooling Weekend Setpoint Schedule') description: 'Specify the constant or 24-hour comma-separated weekend cooling setpoint schedule. Required unless a detailed CSV schedule is provided.') @@ -2286,21 +2431,21 @@ def makeArgument(name:, args << makeArgument( type: Argument::String, - name: 'hvac_control_heating_season_period' + name: 'hvac_control_heating_season_period', required: false, display_name: 'HVAC Control: Heating Season Period') description: "Enter a date range like 'Nov 1 - Jun 30'. If not provided, the OS-HPXML default (see HPXML HVAC Control) is used. Can also provide '#{Constants::BuildingAmerica}' to use automatic seasons from the Building America House Simulation Protocols.") args << makeArgument( type: Argument::String, - name: 'hvac_control_cooling_season_period' + name: 'hvac_control_cooling_season_period', required: false, display_name: 'HVAC Control: Cooling Season Period') description: "Enter a date range like 'Jun 1 - Oct 31'. If not provided, the OS-HPXML default (see HPXML HVAC Control) is used. Can also provide '#{Constants::BuildingAmerica}' to use automatic seasons from the Building America House Simulation Protocols.") args << makeArgument( type: Argument::Double, - name: 'hvac_blower_fan_watts_per_cfm' + name: 'hvac_blower_fan_watts_per_cfm', required: false, display_name: 'HVAC Blower: Fan Efficiency') description: "The blower fan efficiency at maximum fan speed. Applies only to split (not packaged) systems (i.e., applies to ducted systems as well as ductless #{HPXML::HVACTypeHeatPumpMiniSplit} systems). If not provided, the OS-HPXML default (see HPXML Heating Systems, HPXML Cooling Systems, HPXML Heat Pumps) is used.") @@ -2335,26 +2480,30 @@ def makeArgument(name:, args << makeArgument( type: Argument::Choice, - name: 'ducts_leakage_units', duct_leakage_units_choices, false) + name: 'ducts_leakage_units', + choices: duct_leakage_units_choices, + required: false) display_name: 'Ducts: Leakage Units') description: 'The leakage units of the ducts.') args << makeArgument( type: Argument::Double, - name: 'ducts_supply_leakage_to_outside_value' + name: 'ducts_supply_leakage_to_outside_value', required: false, display_name: 'Ducts: Supply Leakage to Outside Value') description: 'The leakage value to outside for the supply ducts.') args << makeArgument( type: Argument::Choice, - name: 'ducts_supply_location', duct_location_choices, false) + name: 'ducts_supply_location', + choices: duct_location_choices, + required: false) display_name: 'Ducts: Supply Location') description: "The location of the supply ducts. If not provided, the OS-HPXML default (see Air Distribution) is used.") args << makeArgument( type: Argument::Double, - name: 'ducts_supply_insulation_r' + name: 'ducts_supply_insulation_r', required: false, display_name: 'Ducts: Supply Insulation R-Value') description: 'The nominal insulation r-value of the supply ducts excluding air films. Use 0 for uninsulated ducts.') @@ -2368,13 +2517,15 @@ def makeArgument(name:, args << makeArgument( type: Argument::Choice, - name: 'ducts_supply_buried_insulation_level', duct_buried_level_choices, false) + name: 'ducts_supply_buried_insulation_level', + choices: duct_buried_level_choices, + required: false) display_name: 'Ducts: Supply Buried Insulation Level') description: "Whether the supply ducts are buried in, e.g., attic loose-fill insulation. Partially buried ducts have insulation that does not cover the top of the ducts. Fully buried ducts have insulation that just covers the top of the ducts. Deeply buried ducts have insulation that continues above the top of the ducts. If not provided, the OS-HPXML default (see Air Distribution) is used.") args << makeArgument( type: Argument::Double, - name: 'ducts_supply_surface_area' + name: 'ducts_supply_surface_area', required: false, display_name: 'Ducts: Supply Surface Area') description: "The supply ducts surface area in the given location. If neither Surface Area nor Area Fraction provided, the OS-HPXML default (see Air Distribution) is used.") @@ -2382,7 +2533,7 @@ def makeArgument(name:, args << makeArgument( type: Argument::Double, - name: 'ducts_supply_surface_area_fraction' + name: 'ducts_supply_surface_area_fraction', required: false, display_name: 'Ducts: Supply Area Fraction') description: "The fraction of supply ducts surface area in the given location. Only used if Surface Area is not provided. If the fraction is less than 1, the remaining duct area is assumed to be in conditioned space. If neither Surface Area nor Area Fraction provided, the OS-HPXML default (see Air Distribution) is used.") @@ -2390,7 +2541,7 @@ def makeArgument(name:, args << makeArgument( type: Argument::Double, - name: 'ducts_supply_fraction_rectangular' + name: 'ducts_supply_fraction_rectangular', required: false, display_name: 'Ducts: Supply Fraction Rectangular') description: "The fraction of supply ducts that are rectangular (as opposed to round); this affects the duct effective R-value used for modeling. If not provided, the OS-HPXML default (see Air Distribution) is used.") @@ -2398,20 +2549,22 @@ def makeArgument(name:, args << makeArgument( type: Argument::Double, - name: 'ducts_return_leakage_to_outside_value' + name: 'ducts_return_leakage_to_outside_value', required: false, display_name: 'Ducts: Return Leakage to Outside Value') description: 'The leakage value to outside for the return ducts.') args << makeArgument( type: Argument::Choice, - name: 'ducts_return_location', duct_location_choices, false) + name: 'ducts_return_location', + choices: duct_location_choices, + required: false) display_name: 'Ducts: Return Location') description: "The location of the return ducts. If not provided, the OS-HPXML default (see Air Distribution) is used.") args << makeArgument( type: Argument::Double, - name: 'ducts_return_insulation_r' + name: 'ducts_return_insulation_r', required: false, display_name: 'Ducts: Return Insulation R-Value') description: 'The nominal insulation r-value of the return ducts excluding air films. Use 0 for uninsulated ducts.') @@ -2419,13 +2572,15 @@ def makeArgument(name:, args << makeArgument( type: Argument::Choice, - name: 'ducts_return_buried_insulation_level', duct_buried_level_choices, false) + name: 'ducts_return_buried_insulation_level', + choices: duct_buried_level_choices, + required: false) display_name: 'Ducts: Return Buried Insulation Level') description: "Whether the return ducts are buried in, e.g., attic loose-fill insulation. Partially buried ducts have insulation that does not cover the top of the ducts. Fully buried ducts have insulation that just covers the top of the ducts. Deeply buried ducts have insulation that continues above the top of the ducts. If not provided, the OS-HPXML default (see Air Distribution) is used.") args << makeArgument( type: Argument::Double, - name: 'ducts_return_surface_area' + name: 'ducts_return_surface_area', required: false, display_name: 'Ducts: Return Surface Area') description: "The return ducts surface area in the given location. If neither Surface Area nor Area Fraction provided, the OS-HPXML default (see Air Distribution) is used.") @@ -2433,7 +2588,7 @@ def makeArgument(name:, args << makeArgument( type: Argument::Double, - name: 'ducts_return_surface_area_fraction' + name: 'ducts_return_surface_area_fraction', required: false, display_name: 'Ducts: Return Area Fraction') description: "The fraction of return ducts surface area in the given location. Only used if Surface Area is not provided. If the fraction is less than 1, the remaining duct area is assumed to be in conditioned space. If neither Surface Area nor Area Fraction provided, the OS-HPXML default (see Air Distribution) is used.") @@ -2441,7 +2596,7 @@ def makeArgument(name:, args << makeArgument( type: Argument::Integer, - name: 'ducts_number_of_return_registers' + name: 'ducts_number_of_return_registers', required: false, display_name: 'Ducts: Number of Return Registers') description: "The number of return registers of the ducts. Only used to calculate default return duct surface area. If not provided, the OS-HPXML default (see Air Distribution) is used.") @@ -2449,7 +2604,7 @@ def makeArgument(name:, args << makeArgument( type: Argument::Double, - name: 'ducts_return_fraction_rectangular' + name: 'ducts_return_fraction_rectangular', required: false, display_name: 'Ducts: Return Fraction Rectangular') description: "The fraction of return ducts that are rectangular (as opposed to round); this affects the duct effective R-value used for modeling. If not provided, the OS-HPXML default (see Air Distribution) is used.") @@ -2470,13 +2625,15 @@ def makeArgument(name:, args << makeArgument( type: Argument::Choice, - name: 'mech_vent_fan_type', mech_vent_fan_type_choices, false) + name: 'mech_vent_fan_type', + choices: mech_vent_fan_type_choices, + required: false) display_name: 'Mechanical Ventilation: Fan Type') description: "The type of the mechanical ventilation. Use '#{Constants::None}' if there is no mechanical ventilation system. If not provided, defaults to none.") args << makeArgument( type: Argument::Double, - name: 'mech_vent_flow_rate' + name: 'mech_vent_flow_rate', required: false, display_name: 'Mechanical Ventilation: Flow Rate') description: "The flow rate of the mechanical ventilation. If not provided, the OS-HPXML default (see HPXML Mechanical Ventilation Fans) is used.") @@ -2484,7 +2641,7 @@ def makeArgument(name:, args << makeArgument( type: Argument::Double, - name: 'mech_vent_hours_in_operation' + name: 'mech_vent_hours_in_operation', required: false, display_name: 'Mechanical Ventilation: Hours In Operation') description: "The hours in operation of the mechanical ventilation. If not provided, the OS-HPXML default (see HPXML Mechanical Ventilation Fans) is used.") @@ -2492,13 +2649,15 @@ def makeArgument(name:, args << makeArgument( type: Argument::Choice, - name: 'mech_vent_recovery_efficiency_type', mech_vent_recovery_efficiency_type_choices, false) + name: 'mech_vent_recovery_efficiency_type', + choices: mech_vent_recovery_efficiency_type_choices, + required: false) display_name: 'Mechanical Ventilation: Total Recovery Efficiency Type') description: 'The total recovery efficiency type of the mechanical ventilation.') args << makeArgument( type: Argument::Double, - name: 'mech_vent_total_recovery_efficiency' + name: 'mech_vent_total_recovery_efficiency', required: false, display_name: 'Mechanical Ventilation: Total Recovery Efficiency') description: "The Unadjusted or Adjusted total recovery efficiency of the mechanical ventilation. Applies to #{HPXML::MechVentTypeERV}.") @@ -2506,7 +2665,7 @@ def makeArgument(name:, args << makeArgument( type: Argument::Double, - name: 'mech_vent_sensible_recovery_efficiency' + name: 'mech_vent_sensible_recovery_efficiency', required: false, display_name: 'Mechanical Ventilation: Sensible Recovery Efficiency') description: "The Unadjusted or Adjusted sensible recovery efficiency of the mechanical ventilation. Applies to #{HPXML::MechVentTypeERV} and #{HPXML::MechVentTypeHRV}.") @@ -2522,7 +2681,7 @@ def makeArgument(name:, args << makeArgument( type: Argument::Integer, - name: 'mech_vent_num_units_served' + name: 'mech_vent_num_units_served', required: false, display_name: 'Mechanical Ventilation: Number of Units Served') description: "Number of dwelling units served by the mechanical ventilation system. Must be 1 if #{HPXML::ResidentialTypeSFD}. Used to apportion flow rate and fan power to the unit.") @@ -2530,7 +2689,7 @@ def makeArgument(name:, args << makeArgument( type: Argument::Double, - name: 'mech_vent_shared_frac_recirculation' + name: 'mech_vent_shared_frac_recirculation', required: false, display_name: 'Shared Mechanical Ventilation: Fraction Recirculation') description: 'Fraction of the total supply air that is recirculated, with the remainder assumed to be outdoor air. The value must be 0 for exhaust only systems. Required for a shared mechanical ventilation system.') @@ -2538,13 +2697,15 @@ def makeArgument(name:, args << makeArgument( type: Argument::Choice, - name: 'mech_vent_shared_preheating_fuel', heating_system_fuel_choices, false) + name: 'mech_vent_shared_preheating_fuel', + choices: heating_system_fuel_choices, + required: false) display_name: 'Shared Mechanical Ventilation: Preheating Fuel') description: 'Fuel type of the preconditioning heating equipment. Only used for a shared mechanical ventilation system. If not provided, assumes no preheating.') args << makeArgument( type: Argument::Double, - name: 'mech_vent_shared_preheating_efficiency' + name: 'mech_vent_shared_preheating_efficiency', required: false, display_name: 'Shared Mechanical Ventilation: Preheating Efficiency') description: 'Efficiency of the preconditioning heating equipment. Only used for a shared mechanical ventilation system. If not provided, assumes no preheating.') @@ -2552,7 +2713,7 @@ def makeArgument(name:, args << makeArgument( type: Argument::Double, - name: 'mech_vent_shared_preheating_fraction_heat_load_served' + name: 'mech_vent_shared_preheating_fraction_heat_load_served', required: false, display_name: 'Shared Mechanical Ventilation: Preheating Fraction Ventilation Heat Load Served') description: 'Fraction of heating load introduced by the shared ventilation system that is met by the preconditioning heating equipment. If not provided, assumes no preheating.') @@ -2563,13 +2724,15 @@ def makeArgument(name:, args << makeArgument( type: Argument::Choice, - name: 'mech_vent_shared_precooling_fuel', cooling_system_fuel_choices, false) + name: 'mech_vent_shared_precooling_fuel', + choices: cooling_system_fuel_choices, + required: false) display_name: 'Shared Mechanical Ventilation: Precooling Fuel') description: 'Fuel type of the preconditioning cooling equipment. Only used for a shared mechanical ventilation system. If not provided, assumes no precooling.') args << makeArgument( type: Argument::Double, - name: 'mech_vent_shared_precooling_efficiency' + name: 'mech_vent_shared_precooling_efficiency', required: false, display_name: 'Shared Mechanical Ventilation: Precooling Efficiency') description: 'Efficiency of the preconditioning cooling equipment. Only used for a shared mechanical ventilation system. If not provided, assumes no precooling.') @@ -2577,7 +2740,7 @@ def makeArgument(name:, args << makeArgument( type: Argument::Double, - name: 'mech_vent_shared_precooling_fraction_cool_load_served' + name: 'mech_vent_shared_precooling_fraction_cool_load_served', required: false, display_name: 'Shared Mechanical Ventilation: Precooling Fraction Ventilation Cool Load Served') description: 'Fraction of cooling load introduced by the shared ventilation system that is met by the preconditioning cooling equipment. If not provided, assumes no precooling.') @@ -2593,13 +2756,15 @@ def makeArgument(name:, args << makeArgument( type: Argument::Choice, - name: 'mech_vent_2_fan_type', mech_vent_2_fan_type_choices, false) + name: 'mech_vent_2_fan_type', + choices: mech_vent_2_fan_type_choices, + required: false) display_name: 'Mechanical Ventilation 2: Fan Type') description: "The type of the second mechanical ventilation. Use '#{Constants::None}' if there is no second mechanical ventilation system. If not provided, defaults to none.") args << makeArgument( type: Argument::Double, - name: 'mech_vent_2_flow_rate' + name: 'mech_vent_2_flow_rate', required: false, display_name: 'Mechanical Ventilation 2: Flow Rate') description: 'The flow rate of the second mechanical ventilation.') @@ -2607,7 +2772,7 @@ def makeArgument(name:, args << makeArgument( type: Argument::Double, - name: 'mech_vent_2_hours_in_operation' + name: 'mech_vent_2_hours_in_operation', required: false, display_name: 'Mechanical Ventilation 2: Hours In Operation') description: 'The hours in operation of the second mechanical ventilation.') @@ -2615,13 +2780,15 @@ def makeArgument(name:, args << makeArgument( type: Argument::Choice, - name: 'mech_vent_2_recovery_efficiency_type', mech_vent_recovery_efficiency_type_choices, false) + name: 'mech_vent_2_recovery_efficiency_type', + choices: mech_vent_recovery_efficiency_type_choices, + required: false) display_name: 'Mechanical Ventilation 2: Total Recovery Efficiency Type') description: 'The total recovery efficiency type of the second mechanical ventilation.') args << makeArgument( type: Argument::Double, - name: 'mech_vent_2_total_recovery_efficiency' + name: 'mech_vent_2_total_recovery_efficiency', required: false, display_name: 'Mechanical Ventilation 2: Total Recovery Efficiency') description: "The Unadjusted or Adjusted total recovery efficiency of the second mechanical ventilation. Applies to #{HPXML::MechVentTypeERV}.") @@ -2629,7 +2796,7 @@ def makeArgument(name:, args << makeArgument( type: Argument::Double, - name: 'mech_vent_2_sensible_recovery_efficiency' + name: 'mech_vent_2_sensible_recovery_efficiency', required: false, display_name: 'Mechanical Ventilation 2: Sensible Recovery Efficiency') description: "The Unadjusted or Adjusted sensible recovery efficiency of the second mechanical ventilation. Applies to #{HPXML::MechVentTypeERV} and #{HPXML::MechVentTypeHRV}.") @@ -2637,7 +2804,7 @@ def makeArgument(name:, args << makeArgument( type: Argument::Double, - name: 'mech_vent_2_fan_power' + name: 'mech_vent_2_fan_power', required: false, display_name: 'Mechanical Ventilation 2: Fan Power') description: 'The fan power of the second mechanical ventilation.') @@ -2645,7 +2812,7 @@ def makeArgument(name:, args << makeArgument( type: Argument::Integer, - name: 'kitchen_fans_quantity' + name: 'kitchen_fans_quantity', required: false, display_name: 'Kitchen Fans: Quantity') description: "The quantity of the kitchen fans. If not provided, the OS-HPXML default (see HPXML Local Ventilation Fans) is used.") @@ -2653,7 +2820,7 @@ def makeArgument(name:, args << makeArgument( type: Argument::Double, - name: 'kitchen_fans_flow_rate' + name: 'kitchen_fans_flow_rate', required: false, display_name: 'Kitchen Fans: Flow Rate') description: "The flow rate of the kitchen fan. If not provided, the OS-HPXML default (see HPXML Local Ventilation Fans) is used.") @@ -2661,7 +2828,7 @@ def makeArgument(name:, args << makeArgument( type: Argument::Double, - name: 'kitchen_fans_hours_in_operation' + name: 'kitchen_fans_hours_in_operation', required: false, display_name: 'Kitchen Fans: Hours In Operation') description: "The hours in operation of the kitchen fan. If not provided, the OS-HPXML default (see HPXML Local Ventilation Fans) is used.") @@ -2669,7 +2836,7 @@ def makeArgument(name:, args << makeArgument( type: Argument::Double, - name: 'kitchen_fans_power' + name: 'kitchen_fans_power', required: false, display_name: 'Kitchen Fans: Fan Power') description: "The fan power of the kitchen fan. If not provided, the OS-HPXML default (see HPXML Local Ventilation Fans) is used.") @@ -2677,7 +2844,7 @@ def makeArgument(name:, args << makeArgument( type: Argument::Integer, - name: 'kitchen_fans_start_hour' + name: 'kitchen_fans_start_hour', required: false, display_name: 'Kitchen Fans: Start Hour') description: "The start hour of the kitchen fan. If not provided, the OS-HPXML default (see HPXML Local Ventilation Fans) is used.") @@ -2685,7 +2852,7 @@ def makeArgument(name:, args << makeArgument( type: Argument::Integer, - name: 'bathroom_fans_quantity' + name: 'bathroom_fans_quantity', required: false, display_name: 'Bathroom Fans: Quantity') description: "The quantity of the bathroom fans. If not provided, the OS-HPXML default (see HPXML Local Ventilation Fans) is used.") @@ -2693,7 +2860,7 @@ def makeArgument(name:, args << makeArgument( type: Argument::Double, - name: 'bathroom_fans_flow_rate' + name: 'bathroom_fans_flow_rate', required: false, display_name: 'Bathroom Fans: Flow Rate') description: "The flow rate of the bathroom fans. If not provided, the OS-HPXML default (see HPXML Local Ventilation Fans) is used.") @@ -2701,7 +2868,7 @@ def makeArgument(name:, args << makeArgument( type: Argument::Double, - name: 'bathroom_fans_hours_in_operation' + name: 'bathroom_fans_hours_in_operation', required: false, display_name: 'Bathroom Fans: Hours In Operation') description: "The hours in operation of the bathroom fans. If not provided, the OS-HPXML default (see HPXML Local Ventilation Fans) is used.") @@ -2709,7 +2876,7 @@ def makeArgument(name:, args << makeArgument( type: Argument::Double, - name: 'bathroom_fans_power' + name: 'bathroom_fans_power', required: false, display_name: 'Bathroom Fans: Fan Power') description: "The fan power of the bathroom fans. If not provided, the OS-HPXML default (see HPXML Local Ventilation Fans) is used.") @@ -2717,7 +2884,7 @@ def makeArgument(name:, args << makeArgument( type: Argument::Integer, - name: 'bathroom_fans_start_hour' + name: 'bathroom_fans_start_hour', required: false, display_name: 'Bathroom Fans: Start Hour') description: "The start hour of the bathroom fans. If not provided, the OS-HPXML default (see HPXML Local Ventilation Fans) is used.") @@ -2792,25 +2959,31 @@ def makeArgument(name:, args << makeArgument( type: Argument::Choice, - name: 'water_heater_type', water_heater_type_choices, true) + name: 'water_heater_type', + choices: water_heater_type_choices, + required: true) display_name: 'Water Heater: Type') description: "The type of water heater. Use '#{Constants::None}' if there is no water heater.") args << makeArgument( type: Argument::Choice, - name: 'water_heater_fuel_type', water_heater_fuel_choices, false) + name: 'water_heater_fuel_type', + choices: water_heater_fuel_choices, + required: false) display_name: 'Water Heater: Fuel Type') description: "The fuel type of water heater. Ignored for #{HPXML::WaterHeaterTypeHeatPump}.") args << makeArgument( type: Argument::Choice, - name: 'water_heater_location', water_heater_location_choices, false) + name: 'water_heater_location', + choices: water_heater_location_choices, + required: false) display_name: 'Water Heater: Location') description: "The location of water heater. If not provided, the OS-HPXML default (see HPXML Water Heating Systems) is used.") args << makeArgument( type: Argument::Double, - name: 'water_heater_tank_volume' + name: 'water_heater_tank_volume', required: false, display_name: 'Water Heater: Tank Volume') description: "Nominal volume of water heater tank. If not provided, the OS-HPXML default (see Conventional Storage, Heat Pump, Combi Boiler w/ Storage) is used.") @@ -2818,26 +2991,30 @@ def makeArgument(name:, args << makeArgument( type: Argument::Choice, - name: 'water_heater_efficiency_type', water_heater_efficiency_type_choices, false) + name: 'water_heater_efficiency_type', + choices: water_heater_efficiency_type_choices, + required: false) display_name: 'Water Heater: Efficiency Type') description: 'The efficiency type of water heater. Does not apply to space-heating boilers.') args << makeArgument( type: Argument::Double, - name: 'water_heater_efficiency' + name: 'water_heater_efficiency', required: false, display_name: 'Water Heater: Efficiency') description: 'Rated Energy Factor or Uniform Energy Factor. Does not apply to space-heating boilers.') args << makeArgument( type: Argument::Choice, - name: 'water_heater_usage_bin', water_heater_usage_bin_choices, false) + name: 'water_heater_usage_bin', + choices: water_heater_usage_bin_choices, + required: false) display_name: 'Water Heater: Usage Bin') description: "The usage of the water heater. Only applies if Efficiency Type is UniformEnergyFactor and Type is not #{HPXML::WaterHeaterTypeTankless}. Does not apply to space-heating boilers. If not provided, the OS-HPXML default (see Conventional Storage, Heat Pump) is used.") args << makeArgument( type: Argument::Double, - name: 'water_heater_recovery_efficiency' + name: 'water_heater_recovery_efficiency', required: false, display_name: 'Water Heater: Recovery Efficiency') description: "Ratio of energy delivered to water heater to the energy content of the fuel consumed by the water heater. Only used for non-electric storage water heaters. If not provided, the OS-HPXML default (see Conventional Storage) is used.") @@ -2845,7 +3022,7 @@ def makeArgument(name:, args << makeArgument( type: Argument::Double, - name: 'water_heater_heating_capacity' + name: 'water_heater_heating_capacity', required: false, display_name: 'Water Heater: Heating Capacity') description: "Heating capacity. Only applies to #{HPXML::WaterHeaterTypeStorage} and #{HPXML::WaterHeaterTypeHeatPump} (compressor). If not provided, the OS-HPXML default (see Conventional Storage, Heat Pump) is used.") @@ -2853,7 +3030,7 @@ def makeArgument(name:, args << makeArgument( type: Argument::Double, - name: 'water_heater_backup_heating_capacity' + name: 'water_heater_backup_heating_capacity', required: false, display_name: 'Water Heater: Backup Heating Capacity') description: "Backup heating capacity for a #{HPXML::WaterHeaterTypeHeatPump}. If not provided, the OS-HPXML default (see Heat Pump) is used.") @@ -2861,7 +3038,7 @@ def makeArgument(name:, args << makeArgument( type: Argument::Double, - name: 'water_heater_standby_loss' + name: 'water_heater_standby_loss', required: false, display_name: 'Water Heater: Standby Loss') description: "The standby loss of water heater. Only applies to space-heating boilers. If not provided, the OS-HPXML default (see Combi Boiler w/ Storage) is used.") @@ -2869,7 +3046,7 @@ def makeArgument(name:, args << makeArgument( type: Argument::Double, - name: 'water_heater_jacket_rvalue' + name: 'water_heater_jacket_rvalue', required: false, display_name: 'Water Heater: Jacket R-value') description: "The jacket R-value of water heater. Doesn't apply to #{HPXML::WaterHeaterTypeTankless} or #{HPXML::WaterHeaterTypeCombiTankless}. If not provided, defaults to no jacket insulation.") @@ -2877,7 +3054,7 @@ def makeArgument(name:, args << makeArgument( type: Argument::Double, - name: 'water_heater_setpoint_temperature' + name: 'water_heater_setpoint_temperature', required: false, display_name: 'Water Heater: Setpoint Temperature') description: "The setpoint temperature of water heater. If not provided, the OS-HPXML default (see HPXML Water Heating Systems) is used.") @@ -2885,7 +3062,7 @@ def makeArgument(name:, args << makeArgument( type: Argument::Integer, - name: 'water_heater_num_bedrooms_served' + name: 'water_heater_num_bedrooms_served', required: false, display_name: 'Water Heater: Number of Bedrooms Served') description: "Number of bedrooms served (directly or indirectly) by the water heater. Only needed if #{HPXML::ResidentialTypeSFA} or #{HPXML::ResidentialTypeApartment} and it is a shared water heater serving multiple dwelling units. Used to apportion water heater tank losses to the unit.") @@ -2904,7 +3081,9 @@ def makeArgument(name:, args << makeArgument( type: Argument::Choice, - name: 'water_heater_tank_model_type', water_heater_tank_model_type_choices, false) + name: 'water_heater_tank_model_type', + choices: water_heater_tank_model_type_choices, + required: false) display_name: 'Water Heater: Tank Type') description: "Type of tank model to use. The '#{HPXML::WaterHeaterTankModelTypeStratified}' tank generally provide more accurate results, but may significantly increase run time. Applies only to #{HPXML::WaterHeaterTypeStorage}. If not provided, the OS-HPXML default (see Conventional Storage) is used.") @@ -2914,7 +3093,9 @@ def makeArgument(name:, args << makeArgument( type: Argument::Choice, - name: 'water_heater_operating_mode', water_heater_operating_mode_choices, false) + name: 'water_heater_operating_mode', + choices: water_heater_operating_mode_choices, + required: false) display_name: 'Water Heater: Operating Mode') description: "The water heater operating mode. The '#{HPXML::WaterHeaterOperatingModeHeatPumpOnly}' option only uses the heat pump, while '#{HPXML::WaterHeaterOperatingModeHybridAuto}' allows the backup electric resistance to come on in high demand situations. This is ignored if a scheduled operating mode type is selected. Applies only to #{HPXML::WaterHeaterTypeHeatPump}. If not provided, the OS-HPXML default (see Heat Pump) is used.") @@ -2924,13 +3105,15 @@ def makeArgument(name:, args << makeArgument( type: Argument::Choice, - name: 'hot_water_distribution_system_type', hot_water_distribution_system_type_choices, true) + name: 'hot_water_distribution_system_type', + choices: hot_water_distribution_system_type_choices, + required: true) display_name: 'Hot Water Distribution: System Type') description: 'The type of the hot water distribution system.') args << makeArgument( type: Argument::Double, - name: 'hot_water_distribution_standard_piping_length' + name: 'hot_water_distribution_standard_piping_length', required: false, display_name: 'Hot Water Distribution: Standard Piping Length') units: 'ft') @@ -2945,13 +3128,15 @@ def makeArgument(name:, args << makeArgument( type: Argument::Choice, - name: 'hot_water_distribution_recirc_control_type', recirculation_control_type_choices, false) + name: 'hot_water_distribution_recirc_control_type', + choices: recirculation_control_type_choices, + required: false) display_name: 'Hot Water Distribution: Recirculation Control Type') description: "If the distribution system is #{HPXML::DHWDistTypeRecirc}, the type of hot water recirculation control, if any.") args << makeArgument( type: Argument::Double, - name: 'hot_water_distribution_recirc_piping_length' + name: 'hot_water_distribution_recirc_piping_length', required: false, display_name: 'Hot Water Distribution: Recirculation Piping Length') units: 'ft') @@ -2959,7 +3144,7 @@ def makeArgument(name:, args << makeArgument( type: Argument::Double, - name: 'hot_water_distribution_recirc_branch_piping_length' + name: 'hot_water_distribution_recirc_branch_piping_length', required: false, display_name: 'Hot Water Distribution: Recirculation Branch Piping Length') units: 'ft') @@ -2967,7 +3152,7 @@ def makeArgument(name:, args << makeArgument( type: Argument::Double, - name: 'hot_water_distribution_recirc_pump_power' + name: 'hot_water_distribution_recirc_pump_power', required: false, display_name: 'Hot Water Distribution: Recirculation Pump Power') units: 'W') @@ -2975,7 +3160,7 @@ def makeArgument(name:, args << makeArgument( type: Argument::Double, - name: 'hot_water_distribution_pipe_r' + name: 'hot_water_distribution_pipe_r', required: false, display_name: 'Hot Water Distribution: Pipe Insulation Nominal R-Value') units: 'h-ft^2-R/Btu') @@ -2988,7 +3173,9 @@ def makeArgument(name:, args << makeArgument( type: Argument::Choice, - name: 'dwhr_facilities_connected', dwhr_facilities_connected_choices, false) + name: 'dwhr_facilities_connected', + choices: dwhr_facilities_connected_choices, + required: false) display_name: 'Drain Water Heat Recovery: Facilities Connected') description: "Which facilities are connected for the drain water heat recovery. Use '#{Constants::None}' if there is no drain water heat recovery system.") @@ -3001,7 +3188,7 @@ def makeArgument(name:, args << makeArgument( type: Argument::Double, - name: 'dwhr_efficiency' + name: 'dwhr_efficiency', required: false, display_name: 'Drain Water Heat Recovery: Efficiency') units: 'Frac') @@ -3023,14 +3210,14 @@ def makeArgument(name:, args << makeArgument( type: Argument::Double, - name: 'water_fixtures_usage_multiplier' + name: 'water_fixtures_usage_multiplier', required: false, display_name: 'Hot Water Fixtures: Usage Multiplier') description: "Multiplier on the hot water usage that can reflect, e.g., high/low usage occupants. If not provided, the OS-HPXML default (see HPXML Water Fixtures) is used.") args << makeArgument( type: Argument::Double, - name: 'general_water_use_usage_multiplier' + name: 'general_water_use_usage_multiplier', required: false, display_name: 'General Water Use: Usage Multiplier') description: "Multiplier on internal gains from general water use (floor mopping, shower evaporation, water films on showers, tubs & sinks surfaces, plant watering, etc.) that can reflect, e.g., high/low usage occupants. If not provided, the OS-HPXML default (see HPXML Building Occupancy) is used.") @@ -3052,13 +3239,15 @@ def makeArgument(name:, args << makeArgument( type: Argument::Choice, - name: 'solar_thermal_system_type', solar_thermal_system_type_choices, false) + name: 'solar_thermal_system_type', + choices: solar_thermal_system_type_choices, + required: false) display_name: 'Solar Thermal: System Type') description: "The type of solar thermal system. Use '#{Constants::None}' if there is no solar thermal system.") args << makeArgument( type: Argument::Double, - name: 'solar_thermal_collector_area' + name: 'solar_thermal_collector_area', required: false, display_name: 'Solar Thermal: Collector Area') units: 'ft^2') @@ -3066,19 +3255,23 @@ def makeArgument(name:, args << makeArgument( type: Argument::Choice, - name: 'solar_thermal_collector_loop_type', solar_thermal_collector_loop_type_choices, false) + name: 'solar_thermal_collector_loop_type', + choices: solar_thermal_collector_loop_type_choices, + required: false) display_name: 'Solar Thermal: Collector Loop Type') description: 'The collector loop type of the solar thermal system.') args << makeArgument( type: Argument::Choice, - name: 'solar_thermal_collector_type', solar_thermal_collector_type_choices, false) + name: 'solar_thermal_collector_type', + choices: solar_thermal_collector_type_choices, + required: false) display_name: 'Solar Thermal: Collector Type') description: 'The collector type of the solar thermal system.') args << makeArgument( type: Argument::Double, - name: 'solar_thermal_collector_azimuth' + name: 'solar_thermal_collector_azimuth', required: false, display_name: 'Solar Thermal: Collector Azimuth') units: 'degrees') @@ -3086,7 +3279,7 @@ def makeArgument(name:, args << makeArgument( type: Argument::String, - name: 'solar_thermal_collector_tilt' + name: 'solar_thermal_collector_tilt', required: false, display_name: 'Solar Thermal: Collector Tilt') units: 'degrees') @@ -3094,7 +3287,7 @@ def makeArgument(name:, args << makeArgument( type: Argument::Double, - name: 'solar_thermal_collector_rated_optical_efficiency' + name: 'solar_thermal_collector_rated_optical_efficiency', required: false, display_name: 'Solar Thermal: Collector Rated Optical Efficiency') units: 'Frac') @@ -3102,7 +3295,7 @@ def makeArgument(name:, args << makeArgument( type: Argument::Double, - name: 'solar_thermal_collector_rated_thermal_losses' + name: 'solar_thermal_collector_rated_thermal_losses', required: false, display_name: 'Solar Thermal: Collector Rated Thermal Losses') units: 'Btu/hr-ft^2-R') @@ -3110,7 +3303,7 @@ def makeArgument(name:, args << makeArgument( type: Argument::Double, - name: 'solar_thermal_storage_volume' + name: 'solar_thermal_storage_volume', required: false, display_name: 'Solar Thermal: Storage Volume') units: 'gal') @@ -3118,7 +3311,7 @@ def makeArgument(name:, args << makeArgument( type: Argument::Double, - name: 'solar_thermal_solar_fraction' + name: 'solar_thermal_solar_fraction', required: false, display_name: 'Solar Thermal: Solar Fraction') units: 'Frac') @@ -3148,25 +3341,31 @@ def makeArgument(name:, args << makeArgument( type: Argument::Choice, - name: 'pv_system_module_type', pv_system_module_type_choices, false) + name: 'pv_system_module_type', + choices: pv_system_module_type_choices, + required: false) display_name: 'PV System: Module Type') description: "Module type of the PV system. If not provided, the OS-HPXML default (see HPXML Photovoltaics) is used.") args << makeArgument( type: Argument::Choice, - name: 'pv_system_location', pv_system_location_choices, false) + name: 'pv_system_location', + choices: pv_system_location_choices, + required: false) display_name: 'PV System: Location') description: "Location of the PV system. If not provided, the OS-HPXML default (see HPXML Photovoltaics) is used.") args << makeArgument( type: Argument::Choice, - name: 'pv_system_tracking', pv_system_tracking_choices, false) + name: 'pv_system_tracking', + choices: pv_system_tracking_choices, + required: false) display_name: 'PV System: Tracking') description: "Type of tracking for the PV system. If not provided, the OS-HPXML default (see HPXML Photovoltaics) is used.") args << makeArgument( type: Argument::Double, - name: 'pv_system_array_azimuth' + name: 'pv_system_array_azimuth', required: false, display_name: 'PV System: Array Azimuth') units: 'degrees') @@ -3174,7 +3373,7 @@ def makeArgument(name:, args << makeArgument( type: Argument::String, - name: 'pv_system_array_tilt' + name: 'pv_system_array_tilt', required: false, display_name: 'PV System: Array Tilt') units: 'degrees') @@ -3182,7 +3381,7 @@ def makeArgument(name:, args << makeArgument( type: Argument::Double, - name: 'pv_system_max_power_output' + name: 'pv_system_max_power_output', required: false, display_name: 'PV System: Maximum Power Output') units: 'W') @@ -3190,7 +3389,7 @@ def makeArgument(name:, args << makeArgument( type: Argument::Double, - name: 'pv_system_inverter_efficiency' + name: 'pv_system_inverter_efficiency', required: false, display_name: 'PV System: Inverter Efficiency') units: 'Frac') @@ -3198,7 +3397,7 @@ def makeArgument(name:, args << makeArgument( type: Argument::Double, - name: 'pv_system_system_losses_fraction' + name: 'pv_system_system_losses_fraction', required: false, display_name: 'PV System: System Losses Fraction') units: 'Frac') @@ -3206,7 +3405,7 @@ def makeArgument(name:, args << makeArgument( type: Argument::Integer, - name: 'pv_system_num_bedrooms_served' + name: 'pv_system_num_bedrooms_served', required: false, display_name: 'PV System: Number of Bedrooms Served') description: "Number of bedrooms served by PV system. Only needed if #{HPXML::ResidentialTypeSFA} or #{HPXML::ResidentialTypeApartment} and it is a shared PV system serving multiple dwelling units. Used to apportion PV generation to the unit of a SFA/MF building. If there are two PV systems, this will apply to both.") @@ -3221,25 +3420,31 @@ def makeArgument(name:, args << makeArgument( type: Argument::Choice, - name: 'pv_system_2_module_type', pv_system_module_type_choices, false) + name: 'pv_system_2_module_type', + choices: pv_system_module_type_choices, + required: false) display_name: 'PV System 2: Module Type') description: "Module type of the second PV system. If not provided, the OS-HPXML default (see HPXML Photovoltaics) is used.") args << makeArgument( type: Argument::Choice, - name: 'pv_system_2_location', pv_system_location_choices, false) + name: 'pv_system_2_location', + choices: pv_system_location_choices, + required: false) display_name: 'PV System 2: Location') description: "Location of the second PV system. If not provided, the OS-HPXML default (see HPXML Photovoltaics) is used.") args << makeArgument( type: Argument::Choice, - name: 'pv_system_2_tracking', pv_system_tracking_choices, false) + name: 'pv_system_2_tracking', + choices: pv_system_tracking_choices, + required: false) display_name: 'PV System 2: Tracking') description: "Type of tracking for the second PV system. If not provided, the OS-HPXML default (see HPXML Photovoltaics) is used.") args << makeArgument( type: Argument::Double, - name: 'pv_system_2_array_azimuth' + name: 'pv_system_2_array_azimuth', required: false, display_name: 'PV System 2: Array Azimuth') units: 'degrees') @@ -3247,7 +3452,7 @@ def makeArgument(name:, args << makeArgument( type: Argument::String, - name: 'pv_system_2_array_tilt' + name: 'pv_system_2_array_tilt', required: false, display_name: 'PV System 2: Array Tilt') units: 'degrees') @@ -3255,7 +3460,7 @@ def makeArgument(name:, args << makeArgument( type: Argument::Double, - name: 'pv_system_2_max_power_output' + name: 'pv_system_2_max_power_output', required: false, display_name: 'PV System 2: Maximum Power Output') units: 'W') @@ -3284,13 +3489,15 @@ def makeArgument(name:, args << makeArgument( type: Argument::Choice, - name: 'battery_location', battery_location_choices, false) + name: 'battery_location', + choices: battery_location_choices, + required: false) display_name: 'Battery: Location') description: "The space type for the lithium ion battery location. If not provided, the OS-HPXML default (see HPXML Batteries) is used.") args << makeArgument( type: Argument::Double, - name: 'battery_power' + name: 'battery_power', required: false, display_name: 'Battery: Rated Power Output') description: "The rated power output of the lithium ion battery. If not provided, the OS-HPXML default (see HPXML Batteries) is used.") @@ -3298,7 +3505,7 @@ def makeArgument(name:, args << makeArgument( type: Argument::Double, - name: 'battery_capacity' + name: 'battery_capacity', required: false, display_name: 'Battery: Nominal Capacity') description: "The nominal capacity of the lithium ion battery. If not provided, the OS-HPXML default (see HPXML Batteries) is used.") @@ -3306,7 +3513,7 @@ def makeArgument(name:, args << makeArgument( type: Argument::Double, - name: 'battery_usable_capacity' + name: 'battery_usable_capacity', required: false, display_name: 'Battery: Usable Capacity') description: "The usable capacity of the lithium ion battery. If not provided, the OS-HPXML default (see HPXML Batteries) is used.") @@ -3314,7 +3521,7 @@ def makeArgument(name:, args << makeArgument( type: Argument::Double, - name: 'battery_round_trip_efficiency' + name: 'battery_round_trip_efficiency', required: false, display_name: 'Battery: Round Trip Efficiency') description: "The round trip efficiency of the lithium ion battery. If not provided, the OS-HPXML default (see HPXML Batteries) is used.") @@ -3322,7 +3529,7 @@ def makeArgument(name:, args << makeArgument( type: Argument::Integer, - name: 'battery_num_bedrooms_served' + name: 'battery_num_bedrooms_served', required: false, display_name: 'Battery: Number of Bedrooms Served') description: "Number of bedrooms served by the lithium ion battery. Only needed if #{HPXML::ResidentialTypeSFA} or #{HPXML::ResidentialTypeApartment} and it is a shared battery serving multiple dwelling units. Used to apportion battery charging/discharging to the unit of a SFA/MF building.") @@ -3337,84 +3544,84 @@ def makeArgument(name:, args << makeArgument( type: Argument::Double, - name: 'lighting_interior_fraction_cfl' + name: 'lighting_interior_fraction_cfl', required: false, display_name: 'Lighting: Interior Fraction CFL') description: 'Fraction of all lamps (interior) that are compact fluorescent. Lighting not specified as CFL, LFL, or LED is assumed to be incandescent.') args << makeArgument( type: Argument::Double, - name: 'lighting_interior_fraction_lfl' + name: 'lighting_interior_fraction_lfl', required: false, display_name: 'Lighting: Interior Fraction LFL') description: 'Fraction of all lamps (interior) that are linear fluorescent. Lighting not specified as CFL, LFL, or LED is assumed to be incandescent.') args << makeArgument( type: Argument::Double, - name: 'lighting_interior_fraction_led' + name: 'lighting_interior_fraction_led', required: false, display_name: 'Lighting: Interior Fraction LED') description: 'Fraction of all lamps (interior) that are light emitting diodes. Lighting not specified as CFL, LFL, or LED is assumed to be incandescent.') args << makeArgument( type: Argument::Double, - name: 'lighting_interior_usage_multiplier' + name: 'lighting_interior_usage_multiplier', required: false, display_name: 'Lighting: Interior Usage Multiplier') description: "Multiplier on the lighting energy usage (interior) that can reflect, e.g., high/low usage occupants. If not provided, the OS-HPXML default (see HPXML Lighting) is used.") args << makeArgument( type: Argument::Double, - name: 'lighting_exterior_fraction_cfl' + name: 'lighting_exterior_fraction_cfl', required: false, display_name: 'Lighting: Exterior Fraction CFL') description: 'Fraction of all lamps (exterior) that are compact fluorescent. Lighting not specified as CFL, LFL, or LED is assumed to be incandescent.') args << makeArgument( type: Argument::Double, - name: 'lighting_exterior_fraction_lfl' + name: 'lighting_exterior_fraction_lfl', required: false, display_name: 'Lighting: Exterior Fraction LFL') description: 'Fraction of all lamps (exterior) that are linear fluorescent. Lighting not specified as CFL, LFL, or LED is assumed to be incandescent.') args << makeArgument( type: Argument::Double, - name: 'lighting_exterior_fraction_led' + name: 'lighting_exterior_fraction_led', required: false, display_name: 'Lighting: Exterior Fraction LED') description: 'Fraction of all lamps (exterior) that are light emitting diodes. Lighting not specified as CFL, LFL, or LED is assumed to be incandescent.') args << makeArgument( type: Argument::Double, - name: 'lighting_exterior_usage_multiplier' + name: 'lighting_exterior_usage_multiplier', required: false, display_name: 'Lighting: Exterior Usage Multiplier') description: "Multiplier on the lighting energy usage (exterior) that can reflect, e.g., high/low usage occupants. If not provided, the OS-HPXML default (see HPXML Lighting) is used.") args << makeArgument( type: Argument::Double, - name: 'lighting_garage_fraction_cfl' + name: 'lighting_garage_fraction_cfl', required: false, display_name: 'Lighting: Garage Fraction CFL') description: 'Fraction of all lamps (garage) that are compact fluorescent. Lighting not specified as CFL, LFL, or LED is assumed to be incandescent.') args << makeArgument( type: Argument::Double, - name: 'lighting_garage_fraction_lfl' + name: 'lighting_garage_fraction_lfl', required: false, display_name: 'Lighting: Garage Fraction LFL') description: 'Fraction of all lamps (garage) that are linear fluorescent. Lighting not specified as CFL, LFL, or LED is assumed to be incandescent.') args << makeArgument( type: Argument::Double, - name: 'lighting_garage_fraction_led' + name: 'lighting_garage_fraction_led', required: false, display_name: 'Lighting: Garage Fraction LED') description: 'Fraction of all lamps (garage) that are light emitting diodes. Lighting not specified as CFL, LFL, or LED is assumed to be incandescent.') args << makeArgument( type: Argument::Double, - name: 'lighting_garage_usage_multiplier' + name: 'lighting_garage_usage_multiplier', required: false, display_name: 'Lighting: Garage Usage Multiplier') description: "Multiplier on the lighting energy usage (garage) that can reflect, e.g., high/low usage occupants. If not provided, the OS-HPXML default (see HPXML Lighting) is used.") @@ -3428,7 +3635,7 @@ def makeArgument(name:, args << makeArgument( type: Argument::Double, - name: 'holiday_lighting_daily_kwh' + name: 'holiday_lighting_daily_kwh', required: false, display_name: 'Holiday Lighting: Daily Consumption') units: 'kWh/day') @@ -3436,7 +3643,7 @@ def makeArgument(name:, args << makeArgument( type: Argument::String, - name: 'holiday_lighting_period' + name: 'holiday_lighting_period', required: false, display_name: 'Holiday Lighting: Period') description: "Enter a date range like 'Nov 25 - Jan 5'. If not provided, the OS-HPXML default (see HPXML Lighting) is used.") @@ -3452,19 +3659,23 @@ def makeArgument(name:, args << makeArgument( type: Argument::Choice, - name: 'dehumidifier_type', dehumidifier_type_choices, false) + name: 'dehumidifier_type', + choices: dehumidifier_type_choices, + required: false) display_name: 'Dehumidifier: Type') description: 'The type of dehumidifier. If not provided, defaults to none.') args << makeArgument( type: Argument::Choice, - name: 'dehumidifier_efficiency_type', dehumidifier_efficiency_type_choices, false) + name: 'dehumidifier_efficiency_type', + choices: dehumidifier_efficiency_type_choices, + required: false) display_name: 'Dehumidifier: Efficiency Type') description: 'The efficiency type of dehumidifier.') args << makeArgument( type: Argument::Double, - name: 'dehumidifier_efficiency' + name: 'dehumidifier_efficiency', required: false, display_name: 'Dehumidifier: Efficiency') units: 'liters/kWh') @@ -3472,7 +3683,7 @@ def makeArgument(name:, args << makeArgument( type: Argument::Double, - name: 'dehumidifier_capacity' + name: 'dehumidifier_capacity', required: false, display_name: 'Dehumidifier: Capacity') description: 'The capacity (water removal rate) of the dehumidifier.') @@ -3480,7 +3691,7 @@ def makeArgument(name:, args << makeArgument( type: Argument::Double, - name: 'dehumidifier_rh_setpoint' + name: 'dehumidifier_rh_setpoint', required: false, display_name: 'Dehumidifier: Relative Humidity Setpoint') description: 'The relative humidity setpoint of the dehumidifier.') @@ -3488,7 +3699,7 @@ def makeArgument(name:, args << makeArgument( type: Argument::Double, - name: 'dehumidifier_fraction_dehumidification_load_served' + name: 'dehumidifier_fraction_dehumidification_load_served', required: false, display_name: 'Dehumidifier: Fraction Dehumidification Load Served') description: 'The dehumidification load served fraction of the dehumidifier.') @@ -3517,19 +3728,23 @@ def makeArgument(name:, args << makeArgument( type: Argument::Choice, - name: 'clothes_washer_location', appliance_location_choices, false) + name: 'clothes_washer_location', + choices: appliance_location_choices, + required: false) display_name: 'Clothes Washer: Location') description: "The space type for the clothes washer location. If not provided, the OS-HPXML default (see HPXML Clothes Washer) is used.") args << makeArgument( type: Argument::Choice, - name: 'clothes_washer_efficiency_type', clothes_washer_efficiency_type_choices, false) + name: 'clothes_washer_efficiency_type', + choices: clothes_washer_efficiency_type_choices, + required: false) display_name: 'Clothes Washer: Efficiency Type') description: 'The efficiency type of the clothes washer.') args << makeArgument( type: Argument::Double, - name: 'clothes_washer_efficiency' + name: 'clothes_washer_efficiency', required: false, display_name: 'Clothes Washer: Efficiency') units: 'ft^3/kWh-cyc') @@ -3537,7 +3752,7 @@ def makeArgument(name:, args << makeArgument( type: Argument::Double, - name: 'clothes_washer_rated_annual_kwh' + name: 'clothes_washer_rated_annual_kwh', required: false, display_name: 'Clothes Washer: Rated Annual Consumption') units: 'kWh/yr') @@ -3545,7 +3760,7 @@ def makeArgument(name:, args << makeArgument( type: Argument::Double, - name: 'clothes_washer_label_electric_rate' + name: 'clothes_washer_label_electric_rate', required: false, display_name: 'Clothes Washer: Label Electric Rate') units: '$/kWh') @@ -3553,7 +3768,7 @@ def makeArgument(name:, args << makeArgument( type: Argument::Double, - name: 'clothes_washer_label_gas_rate' + name: 'clothes_washer_label_gas_rate', required: false, display_name: 'Clothes Washer: Label Gas Rate') units: '$/therm') @@ -3561,7 +3776,7 @@ def makeArgument(name:, args << makeArgument( type: Argument::Double, - name: 'clothes_washer_label_annual_gas_cost' + name: 'clothes_washer_label_annual_gas_cost', required: false, display_name: 'Clothes Washer: Label Annual Cost with Gas DHW') units: '$') @@ -3569,7 +3784,7 @@ def makeArgument(name:, args << makeArgument( type: Argument::Double, - name: 'clothes_washer_label_usage' + name: 'clothes_washer_label_usage', required: false, display_name: 'Clothes Washer: Label Usage') units: 'cyc/wk') @@ -3577,7 +3792,7 @@ def makeArgument(name:, args << makeArgument( type: Argument::Double, - name: 'clothes_washer_capacity' + name: 'clothes_washer_capacity', required: false, display_name: 'Clothes Washer: Drum Volume') units: 'ft^3') @@ -3585,7 +3800,7 @@ def makeArgument(name:, args << makeArgument( type: Argument::Double, - name: 'clothes_washer_usage_multiplier' + name: 'clothes_washer_usage_multiplier', required: false, display_name: 'Clothes Washer: Usage Multiplier') description: "Multiplier on the clothes washer energy and hot water usage that can reflect, e.g., high/low usage occupants. If not provided, the OS-HPXML default (see HPXML Clothes Washer) is used.") @@ -3599,7 +3814,9 @@ def makeArgument(name:, args << makeArgument( type: Argument::Choice, - name: 'clothes_dryer_location', appliance_location_choices, false) + name: 'clothes_dryer_location', + choices: appliance_location_choices, + required: false) display_name: 'Clothes Dryer: Location') description: "The space type for the clothes dryer location. If not provided, the OS-HPXML default (see HPXML Clothes Dryer) is used.") @@ -3617,19 +3834,23 @@ def makeArgument(name:, args << makeArgument( type: Argument::Choice, - name: 'clothes_dryer_fuel_type', clothes_dryer_fuel_choices, false) + name: 'clothes_dryer_fuel_type', + choices: clothes_dryer_fuel_choices, + required: false) display_name: 'Clothes Dryer: Fuel Type') description: 'Type of fuel used by the clothes dryer.') args << makeArgument( type: Argument::Choice, - name: 'clothes_dryer_efficiency_type', clothes_dryer_efficiency_type_choices, false) + name: 'clothes_dryer_efficiency_type', + choices: clothes_dryer_efficiency_type_choices, + required: false) display_name: 'Clothes Dryer: Efficiency Type') description: 'The efficiency type of the clothes dryer.') args << makeArgument( type: Argument::Double, - name: 'clothes_dryer_efficiency' + name: 'clothes_dryer_efficiency', required: false, display_name: 'Clothes Dryer: Efficiency') units: 'lb/kWh') @@ -3637,7 +3858,7 @@ def makeArgument(name:, args << makeArgument( type: Argument::Double, - name: 'clothes_dryer_vented_flow_rate' + name: 'clothes_dryer_vented_flow_rate', required: false, display_name: 'Clothes Dryer: Vented Flow Rate') description: "The exhaust flow rate of the vented clothes dryer. If not provided, the OS-HPXML default (see HPXML Clothes Dryer) is used.") @@ -3645,7 +3866,7 @@ def makeArgument(name:, args << makeArgument( type: Argument::Double, - name: 'clothes_dryer_usage_multiplier' + name: 'clothes_dryer_usage_multiplier', required: false, display_name: 'Clothes Dryer: Usage Multiplier') description: "Multiplier on the clothes dryer energy usage that can reflect, e.g., high/low usage occupants. If not provided, the OS-HPXML default (see HPXML Clothes Dryer) is used.") @@ -3659,7 +3880,9 @@ def makeArgument(name:, args << makeArgument( type: Argument::Choice, - name: 'dishwasher_location', appliance_location_choices, false) + name: 'dishwasher_location', + choices: appliance_location_choices, + required: false) display_name: 'Dishwasher: Location') description: "The space type for the dishwasher location. If not provided, the OS-HPXML default (see HPXML Dishwasher) is used.") @@ -3669,13 +3892,15 @@ def makeArgument(name:, args << makeArgument( type: Argument::Choice, - name: 'dishwasher_efficiency_type', dishwasher_efficiency_type_choices, false) + name: 'dishwasher_efficiency_type', + choices: dishwasher_efficiency_type_choices, + required: false) display_name: 'Dishwasher: Efficiency Type') description: 'The efficiency type of dishwasher.') args << makeArgument( type: Argument::Double, - name: 'dishwasher_efficiency' + name: 'dishwasher_efficiency', required: false, display_name: 'Dishwasher: Efficiency') units: 'RatedAnnualkWh or EnergyFactor') @@ -3683,7 +3908,7 @@ def makeArgument(name:, args << makeArgument( type: Argument::Double, - name: 'dishwasher_label_electric_rate' + name: 'dishwasher_label_electric_rate', required: false, display_name: 'Dishwasher: Label Electric Rate') units: '$/kWh') @@ -3691,7 +3916,7 @@ def makeArgument(name:, args << makeArgument( type: Argument::Double, - name: 'dishwasher_label_gas_rate' + name: 'dishwasher_label_gas_rate', required: false, display_name: 'Dishwasher: Label Gas Rate') units: '$/therm') @@ -3699,7 +3924,7 @@ def makeArgument(name:, args << makeArgument( type: Argument::Double, - name: 'dishwasher_label_annual_gas_cost' + name: 'dishwasher_label_annual_gas_cost', required: false, display_name: 'Dishwasher: Label Annual Gas Cost') units: '$') @@ -3707,7 +3932,7 @@ def makeArgument(name:, args << makeArgument( type: Argument::Double, - name: 'dishwasher_label_usage' + name: 'dishwasher_label_usage', required: false, display_name: 'Dishwasher: Label Usage') units: 'cyc/wk') @@ -3715,7 +3940,7 @@ def makeArgument(name:, args << makeArgument( type: Argument::Integer, - name: 'dishwasher_place_setting_capacity' + name: 'dishwasher_place_setting_capacity', required: false, display_name: 'Dishwasher: Number of Place Settings') units: '#') @@ -3723,7 +3948,7 @@ def makeArgument(name:, args << makeArgument( type: Argument::Double, - name: 'dishwasher_usage_multiplier' + name: 'dishwasher_usage_multiplier', required: false, display_name: 'Dishwasher: Usage Multiplier') description: "Multiplier on the dishwasher energy usage that can reflect, e.g., high/low usage occupants. If not provided, the OS-HPXML default (see HPXML Dishwasher) is used.") @@ -3737,13 +3962,15 @@ def makeArgument(name:, args << makeArgument( type: Argument::Choice, - name: 'refrigerator_location', appliance_location_choices, false) + name: 'refrigerator_location', + choices: appliance_location_choices, + required: false) display_name: 'Refrigerator: Location') description: "The space type for the refrigerator location. If not provided, the OS-HPXML default (see HPXML Refrigerators) is used.") args << makeArgument( type: Argument::Double, - name: 'refrigerator_rated_annual_kwh' + name: 'refrigerator_rated_annual_kwh', required: false, display_name: 'Refrigerator: Rated Annual Consumption') units: 'kWh/yr') @@ -3751,7 +3978,7 @@ def makeArgument(name:, args << makeArgument( type: Argument::Double, - name: 'refrigerator_usage_multiplier' + name: 'refrigerator_usage_multiplier', required: false, display_name: 'Refrigerator: Usage Multiplier') description: "Multiplier on the refrigerator energy usage that can reflect, e.g., high/low usage occupants. If not provided, the OS-HPXML default (see HPXML Refrigerators) is used.") @@ -3765,13 +3992,15 @@ def makeArgument(name:, args << makeArgument( type: Argument::Choice, - name: 'extra_refrigerator_location', appliance_location_choices, false) + name: 'extra_refrigerator_location', + choices: appliance_location_choices, + required: false) display_name: 'Extra Refrigerator: Location') description: "The space type for the extra refrigerator location. If not provided, the OS-HPXML default (see HPXML Refrigerators) is used.") args << makeArgument( type: Argument::Double, - name: 'extra_refrigerator_rated_annual_kwh' + name: 'extra_refrigerator_rated_annual_kwh', required: false, display_name: 'Extra Refrigerator: Rated Annual Consumption') units: 'kWh/yr') @@ -3779,7 +4008,7 @@ def makeArgument(name:, args << makeArgument( type: Argument::Double, - name: 'extra_refrigerator_usage_multiplier' + name: 'extra_refrigerator_usage_multiplier', required: false, display_name: 'Extra Refrigerator: Usage Multiplier') description: "Multiplier on the extra refrigerator energy usage that can reflect, e.g., high/low usage occupants. If not provided, the OS-HPXML default (see HPXML Refrigerators) is used.") @@ -3793,13 +4022,15 @@ def makeArgument(name:, args << makeArgument( type: Argument::Choice, - name: 'freezer_location', appliance_location_choices, false) + name: 'freezer_location', + choices: appliance_location_choices, + required: false) display_name: 'Freezer: Location') description: "The space type for the freezer location. If not provided, the OS-HPXML default (see HPXML Freezers) is used.") args << makeArgument( type: Argument::Double, - name: 'freezer_rated_annual_kwh' + name: 'freezer_rated_annual_kwh', required: false, display_name: 'Freezer: Rated Annual Consumption') units: 'kWh/yr') @@ -3807,7 +4038,7 @@ def makeArgument(name:, args << makeArgument( type: Argument::Double, - name: 'freezer_usage_multiplier' + name: 'freezer_usage_multiplier', required: false, display_name: 'Freezer: Usage Multiplier') description: "Multiplier on the freezer energy usage that can reflect, e.g., high/low usage occupants. If not provided, the OS-HPXML default (see HPXML Freezers) is used.") @@ -3829,13 +4060,17 @@ def makeArgument(name:, args << makeArgument( type: Argument::Choice, - name: 'cooking_range_oven_location', appliance_location_choices, false) + name: 'cooking_range_oven_location', + choices: appliance_location_choices, + required: false) display_name: 'Cooking Range/Oven: Location') description: "The space type for the cooking range/oven location. If not provided, the OS-HPXML default (see HPXML Cooking Range/Oven) is used.") args << makeArgument( type: Argument::Choice, - name: 'cooking_range_oven_fuel_type', cooking_range_oven_fuel_choices, false) + name: 'cooking_range_oven_fuel_type', + choices: cooking_range_oven_fuel_choices, + required: false) display_name: 'Cooking Range/Oven: Fuel Type') description: 'Type of fuel used by the cooking range/oven.') @@ -3855,7 +4090,7 @@ def makeArgument(name:, args << makeArgument( type: Argument::Double, - name: 'cooking_range_oven_usage_multiplier' + name: 'cooking_range_oven_usage_multiplier', required: false, display_name: 'Cooking Range/Oven: Usage Multiplier') description: "Multiplier on the cooking range/oven energy usage that can reflect, e.g., high/low usage occupants. If not provided, the OS-HPXML default (see HPXML Cooking Range/Oven) is used.") @@ -3869,7 +4104,7 @@ def makeArgument(name:, args << makeArgument( type: Argument::Double, - name: 'ceiling_fan_label_energy_use' + name: 'ceiling_fan_label_energy_use', required: false, display_name: 'Ceiling Fan: Label Energy Use') units: 'W') @@ -3877,7 +4112,7 @@ def makeArgument(name:, args << makeArgument( type: Argument::Double, - name: 'ceiling_fan_efficiency' + name: 'ceiling_fan_efficiency', required: false, display_name: 'Ceiling Fan: Efficiency') units: 'CFM/W') @@ -3885,7 +4120,7 @@ def makeArgument(name:, args << makeArgument( type: Argument::Integer, - name: 'ceiling_fan_quantity' + name: 'ceiling_fan_quantity', required: false, display_name: 'Ceiling Fan: Quantity') units: '#') @@ -3893,7 +4128,7 @@ def makeArgument(name:, args << makeArgument( type: Argument::Double, - name: 'ceiling_fan_cooling_setpoint_temp_offset' + name: 'ceiling_fan_cooling_setpoint_temp_offset', required: false, display_name: 'Ceiling Fan: Cooling Setpoint Temperature Offset') units: 'F') @@ -3908,7 +4143,7 @@ def makeArgument(name:, args << makeArgument( type: Argument::Double, - name: 'misc_plug_loads_television_annual_kwh' + name: 'misc_plug_loads_television_annual_kwh', required: false, display_name: 'Misc Plug Loads: Television Annual kWh') description: "The annual energy consumption of the television plug loads. If not provided, the OS-HPXML default (see HPXML Plug Loads) is used.") @@ -3916,14 +4151,14 @@ def makeArgument(name:, args << makeArgument( type: Argument::Double, - name: 'misc_plug_loads_television_usage_multiplier' + name: 'misc_plug_loads_television_usage_multiplier', required: false, display_name: 'Misc Plug Loads: Television Usage Multiplier') description: "Multiplier on the television energy usage that can reflect, e.g., high/low usage occupants. If not provided, the OS-HPXML default (see HPXML Plug Loads) is used.") args << makeArgument( type: Argument::Double, - name: 'misc_plug_loads_other_annual_kwh' + name: 'misc_plug_loads_other_annual_kwh', required: false, display_name: 'Misc Plug Loads: Other Annual kWh') description: "The annual energy consumption of the other residual plug loads. If not provided, the OS-HPXML default (see HPXML Plug Loads) is used.") @@ -3931,7 +4166,7 @@ def makeArgument(name:, args << makeArgument( type: Argument::Double, - name: 'misc_plug_loads_other_frac_sensible' + name: 'misc_plug_loads_other_frac_sensible', required: false, display_name: 'Misc Plug Loads: Other Sensible Fraction') description: "Fraction of other residual plug loads' internal gains that are sensible. If not provided, the OS-HPXML default (see HPXML Plug Loads) is used.") @@ -3939,7 +4174,7 @@ def makeArgument(name:, args << makeArgument( type: Argument::Double, - name: 'misc_plug_loads_other_frac_latent' + name: 'misc_plug_loads_other_frac_latent', required: false, display_name: 'Misc Plug Loads: Other Latent Fraction') description: "Fraction of other residual plug loads' internal gains that are latent. If not provided, the OS-HPXML default (see HPXML Plug Loads) is used.") @@ -3947,7 +4182,7 @@ def makeArgument(name:, args << makeArgument( type: Argument::Double, - name: 'misc_plug_loads_other_usage_multiplier' + name: 'misc_plug_loads_other_usage_multiplier', required: false, display_name: 'Misc Plug Loads: Other Usage Multiplier') description: "Multiplier on the other energy usage that can reflect, e.g., high/low usage occupants. If not provided, the OS-HPXML default (see HPXML Plug Loads) is used.") @@ -3961,7 +4196,7 @@ def makeArgument(name:, args << makeArgument( type: Argument::Double, - name: 'misc_plug_loads_well_pump_annual_kwh' + name: 'misc_plug_loads_well_pump_annual_kwh', required: false, display_name: 'Misc Plug Loads: Well Pump Annual kWh') description: "The annual energy consumption of the well pump plug loads. If not provided, the OS-HPXML default (see HPXML Plug Loads) is used.") @@ -3969,7 +4204,7 @@ def makeArgument(name:, args << makeArgument( type: Argument::Double, - name: 'misc_plug_loads_well_pump_usage_multiplier' + name: 'misc_plug_loads_well_pump_usage_multiplier', required: false, display_name: 'Misc Plug Loads: Well Pump Usage Multiplier') description: "Multiplier on the well pump energy usage that can reflect, e.g., high/low usage occupants. If not provided, the OS-HPXML default (see HPXML Plug Loads) is used.") @@ -3983,7 +4218,7 @@ def makeArgument(name:, args << makeArgument( type: Argument::Double, - name: 'misc_plug_loads_vehicle_annual_kwh' + name: 'misc_plug_loads_vehicle_annual_kwh', required: false, display_name: 'Misc Plug Loads: Vehicle Annual kWh') description: "The annual energy consumption of the electric vehicle plug loads. If not provided, the OS-HPXML default (see HPXML Plug Loads) is used.") @@ -3991,7 +4226,7 @@ def makeArgument(name:, args << makeArgument( type: Argument::Double, - name: 'misc_plug_loads_vehicle_usage_multiplier' + name: 'misc_plug_loads_vehicle_usage_multiplier', required: false, display_name: 'Misc Plug Loads: Vehicle Usage Multiplier') description: "Multiplier on the electric vehicle energy usage that can reflect, e.g., high/low usage occupants. If not provided, the OS-HPXML default (see HPXML Plug Loads) is used.") @@ -4012,13 +4247,15 @@ def makeArgument(name:, args << makeArgument( type: Argument::Choice, - name: 'misc_fuel_loads_grill_fuel_type', misc_fuel_loads_fuel_choices, false) + name: 'misc_fuel_loads_grill_fuel_type', + choices: misc_fuel_loads_fuel_choices, + required: false) display_name: 'Misc Fuel Loads: Grill Fuel Type') description: 'The fuel type of the fuel loads grill.') args << makeArgument( type: Argument::Double, - name: 'misc_fuel_loads_grill_annual_therm' + name: 'misc_fuel_loads_grill_annual_therm', required: false, display_name: 'Misc Fuel Loads: Grill Annual therm') description: "The annual energy consumption of the fuel loads grill. If not provided, the OS-HPXML default (see HPXML Fuel Loads) is used.") @@ -4026,7 +4263,7 @@ def makeArgument(name:, args << makeArgument( type: Argument::Double, - name: 'misc_fuel_loads_grill_usage_multiplier' + name: 'misc_fuel_loads_grill_usage_multiplier', required: false, display_name: 'Misc Fuel Loads: Grill Usage Multiplier') description: "Multiplier on the fuel loads grill energy usage that can reflect, e.g., high/low usage occupants. If not provided, the OS-HPXML default (see HPXML Fuel Loads) is used.") @@ -4040,13 +4277,15 @@ def makeArgument(name:, args << makeArgument( type: Argument::Choice, - name: 'misc_fuel_loads_lighting_fuel_type', misc_fuel_loads_fuel_choices, false) + name: 'misc_fuel_loads_lighting_fuel_type', + choices: misc_fuel_loads_fuel_choices, + required: false) display_name: 'Misc Fuel Loads: Lighting Fuel Type') description: 'The fuel type of the fuel loads lighting.') args << makeArgument( type: Argument::Double, - name: 'misc_fuel_loads_lighting_annual_therm' + name: 'misc_fuel_loads_lighting_annual_therm', required: false, display_name: 'Misc Fuel Loads: Lighting Annual therm') description: "The annual energy consumption of the fuel loads lighting. If not provided, the OS-HPXML default (see HPXML Fuel Loads)is used.") @@ -4054,7 +4293,7 @@ def makeArgument(name:, args << makeArgument( type: Argument::Double, - name: 'misc_fuel_loads_lighting_usage_multiplier' + name: 'misc_fuel_loads_lighting_usage_multiplier', required: false, display_name: 'Misc Fuel Loads: Lighting Usage Multiplier') description: "Multiplier on the fuel loads lighting energy usage that can reflect, e.g., high/low usage occupants. If not provided, the OS-HPXML default (see HPXML Fuel Loads) is used.") @@ -4068,13 +4307,15 @@ def makeArgument(name:, args << makeArgument( type: Argument::Choice, - name: 'misc_fuel_loads_fireplace_fuel_type', misc_fuel_loads_fuel_choices, false) + name: 'misc_fuel_loads_fireplace_fuel_type', + choices: misc_fuel_loads_fuel_choices, + required: false) display_name: 'Misc Fuel Loads: Fireplace Fuel Type') description: 'The fuel type of the fuel loads fireplace.') args << makeArgument( type: Argument::Double, - name: 'misc_fuel_loads_fireplace_annual_therm' + name: 'misc_fuel_loads_fireplace_annual_therm', required: false, display_name: 'Misc Fuel Loads: Fireplace Annual therm') description: "The annual energy consumption of the fuel loads fireplace. If not provided, the OS-HPXML default (see HPXML Fuel Loads) is used.") @@ -4082,7 +4323,7 @@ def makeArgument(name:, args << makeArgument( type: Argument::Double, - name: 'misc_fuel_loads_fireplace_frac_sensible' + name: 'misc_fuel_loads_fireplace_frac_sensible', required: false, display_name: 'Misc Fuel Loads: Fireplace Sensible Fraction') description: "Fraction of fireplace residual fuel loads' internal gains that are sensible. If not provided, the OS-HPXML default (see HPXML Fuel Loads) is used.") @@ -4090,7 +4331,7 @@ def makeArgument(name:, args << makeArgument( type: Argument::Double, - name: 'misc_fuel_loads_fireplace_frac_latent' + name: 'misc_fuel_loads_fireplace_frac_latent', required: false, display_name: 'Misc Fuel Loads: Fireplace Latent Fraction') description: "Fraction of fireplace residual fuel loads' internal gains that are latent. If not provided, the OS-HPXML default (see HPXML Fuel Loads) is used.") @@ -4118,7 +4359,7 @@ def makeArgument(name:, args << makeArgument( type: Argument::Double, - name: 'pool_pump_annual_kwh' + name: 'pool_pump_annual_kwh', required: false, display_name: 'Pool: Pump Annual kWh') description: "The annual energy consumption of the pool pump. If not provided, the OS-HPXML default (see Pool Pump) is used.") @@ -4126,20 +4367,22 @@ def makeArgument(name:, args << makeArgument( type: Argument::Double, - name: 'pool_pump_usage_multiplier' + name: 'pool_pump_usage_multiplier', required: false, display_name: 'Pool: Pump Usage Multiplier') description: "Multiplier on the pool pump energy usage that can reflect, e.g., high/low usage occupants. If not provided, the OS-HPXML default (see Pool Pump) is used.") args << makeArgument( type: Argument::Choice, - name: 'pool_heater_type', heater_type_choices, false) + name: 'pool_heater_type', + choices: heater_type_choices, + required: false) display_name: 'Pool: Heater Type') description: "The type of pool heater. Use '#{HPXML::TypeNone}' if there is no pool heater.") args << makeArgument( type: Argument::Double, - name: 'pool_heater_annual_kwh' + name: 'pool_heater_annual_kwh', required: false, display_name: 'Pool: Heater Annual kWh') description: "The annual energy consumption of the #{HPXML::HeaterTypeElectricResistance} pool heater. If not provided, the OS-HPXML default (see Pool Heater) is used.") @@ -4147,7 +4390,7 @@ def makeArgument(name:, args << makeArgument( type: Argument::Double, - name: 'pool_heater_annual_therm' + name: 'pool_heater_annual_therm', required: false, display_name: 'Pool: Heater Annual therm') description: "The annual energy consumption of the #{HPXML::HeaterTypeGas} pool heater. If not provided, the OS-HPXML default (see Pool Heater) is used.") @@ -4155,7 +4398,7 @@ def makeArgument(name:, args << makeArgument( type: Argument::Double, - name: 'pool_heater_usage_multiplier' + name: 'pool_heater_usage_multiplier', required: false, display_name: 'Pool: Heater Usage Multiplier') description: "Multiplier on the pool heater energy usage that can reflect, e.g., high/low usage occupants. If not provided, the OS-HPXML default (see Pool Heater) is used.") @@ -4169,7 +4412,7 @@ def makeArgument(name:, args << makeArgument( type: Argument::Double, - name: 'permanent_spa_pump_annual_kwh' + name: 'permanent_spa_pump_annual_kwh', required: false, display_name: 'Permanent Spa: Pump Annual kWh') description: "The annual energy consumption of the permanent spa pump. If not provided, the OS-HPXML default (see Permanent Spa Pump) is used.") @@ -4177,20 +4420,22 @@ def makeArgument(name:, args << makeArgument( type: Argument::Double, - name: 'permanent_spa_pump_usage_multiplier' + name: 'permanent_spa_pump_usage_multiplier', required: false, display_name: 'Permanent Spa: Pump Usage Multiplier') description: "Multiplier on the permanent spa pump energy usage that can reflect, e.g., high/low usage occupants. If not provided, the OS-HPXML default (see Permanent Spa Pump) is used.") args << makeArgument( type: Argument::Choice, - name: 'permanent_spa_heater_type', heater_type_choices, false) + name: 'permanent_spa_heater_type', + choices: heater_type_choices, + required: false) display_name: 'Permanent Spa: Heater Type') description: "The type of permanent spa heater. Use '#{HPXML::TypeNone}' if there is no permanent spa heater.") args << makeArgument( type: Argument::Double, - name: 'permanent_spa_heater_annual_kwh' + name: 'permanent_spa_heater_annual_kwh', required: false, display_name: 'Permanent Spa: Heater Annual kWh') description: "The annual energy consumption of the #{HPXML::HeaterTypeElectricResistance} permanent spa heater. If not provided, the OS-HPXML default (see Permanent Spa Heater) is used.") @@ -4198,7 +4443,7 @@ def makeArgument(name:, args << makeArgument( type: Argument::Double, - name: 'permanent_spa_heater_annual_therm' + name: 'permanent_spa_heater_annual_therm', required: false, display_name: 'Permanent Spa: Heater Annual therm') description: "The annual energy consumption of the #{HPXML::HeaterTypeGas} permanent spa heater. If not provided, the OS-HPXML default (see Permanent Spa Heater) is used.") @@ -4206,56 +4451,56 @@ def makeArgument(name:, args << makeArgument( type: Argument::Double, - name: 'permanent_spa_heater_usage_multiplier' + name: 'permanent_spa_heater_usage_multiplier', required: false, display_name: 'Permanent Spa: Heater Usage Multiplier') description: "Multiplier on the permanent spa heater energy usage that can reflect, e.g., high/low usage occupants. If not provided, the OS-HPXML default (see Permanent Spa Heater) is used.") args << makeArgument( type: Argument::String, - name: 'emissions_scenario_names' + name: 'emissions_scenario_names', required: false, display_name: 'Emissions: Scenario Names') description: 'Names of emissions scenarios. If multiple scenarios, use a comma-separated list. If not provided, no emissions scenarios are calculated.') args << makeArgument( type: Argument::String, - name: 'emissions_types' + name: 'emissions_types', required: false, display_name: 'Emissions: Types') description: 'Types of emissions (e.g., CO2e, NOx, etc.). If multiple scenarios, use a comma-separated list.') args << makeArgument( type: Argument::String, - name: 'emissions_electricity_units' + name: 'emissions_electricity_units', required: false, display_name: 'Emissions: Electricity Units') description: 'Electricity emissions factors units. If multiple scenarios, use a comma-separated list. Only lb/MWh and kg/MWh are allowed.') args << makeArgument( type: Argument::String, - name: 'emissions_electricity_values_or_filepaths' + name: 'emissions_electricity_values_or_filepaths', required: false, display_name: 'Emissions: Electricity Values or File Paths') description: 'Electricity emissions factors values, specified as either an annual factor or an absolute/relative path to a file with hourly factors. If multiple scenarios, use a comma-separated list.') args << makeArgument( type: Argument::String, - name: 'emissions_electricity_number_of_header_rows' + name: 'emissions_electricity_number_of_header_rows', required: false, display_name: 'Emissions: Electricity Files Number of Header Rows') description: 'The number of header rows in the electricity emissions factor file. Only applies when an electricity filepath is used. If multiple scenarios, use a comma-separated list.') args << makeArgument( type: Argument::String, - name: 'emissions_electricity_column_numbers' + name: 'emissions_electricity_column_numbers', required: false, display_name: 'Emissions: Electricity Files Column Numbers') description: 'The column number in the electricity emissions factor file. Only applies when an electricity filepath is used. If multiple scenarios, use a comma-separated list.') args << makeArgument( type: Argument::String, - name: 'emissions_fossil_fuel_units' + name: 'emissions_fossil_fuel_units', required: false, display_name: 'Emissions: Fossil Fuel Units') description: 'Fossil fuel emissions factors units. If multiple scenarios, use a comma-separated list. Only lb/MBtu and kg/MBtu are allowed.') @@ -4274,14 +4519,14 @@ def makeArgument(name:, args << makeArgument( type: Argument::String, - name: 'utility_bill_scenario_names' + name: 'utility_bill_scenario_names', required: false, display_name: 'Utility Bills: Scenario Names') description: 'Names of utility bill scenarios. If multiple scenarios, use a comma-separated list. If not provided, no utility bills scenarios are calculated.') args << makeArgument( type: Argument::String, - name: 'utility_bill_electricity_filepaths' + name: 'utility_bill_electricity_filepaths', required: false, display_name: 'Utility Bills: Electricity File Paths') description: 'Electricity tariff file specified as an absolute/relative path to a file with utility rate structure information. Tariff file must be formatted to OpenEI API version 7. If multiple scenarios, use a comma-separated list.') @@ -4313,49 +4558,49 @@ def makeArgument(name:, args << makeArgument( type: Argument::String, - name: 'utility_bill_pv_compensation_types' + name: 'utility_bill_pv_compensation_types', required: false, display_name: 'Utility Bills: PV Compensation Types') description: 'Utility bill PV compensation types. If multiple scenarios, use a comma-separated list.') args << makeArgument( type: Argument::String, - name: 'utility_bill_pv_net_metering_annual_excess_sellback_rate_types' + name: 'utility_bill_pv_net_metering_annual_excess_sellback_rate_types', required: false, display_name: 'Utility Bills: PV Net Metering Annual Excess Sellback Rate Types') description: "Utility bill PV net metering annual excess sellback rate types. Only applies if the PV compensation type is '#{HPXML::PVCompensationTypeNetMetering}'. If multiple scenarios, use a comma-separated list.") args << makeArgument( type: Argument::String, - name: 'utility_bill_pv_net_metering_annual_excess_sellback_rates' + name: 'utility_bill_pv_net_metering_annual_excess_sellback_rates', required: false, display_name: 'Utility Bills: PV Net Metering Annual Excess Sellback Rates') description: "Utility bill PV net metering annual excess sellback rates. Only applies if the PV compensation type is '#{HPXML::PVCompensationTypeNetMetering}' and the PV annual excess sellback rate type is '#{HPXML::PVAnnualExcessSellbackRateTypeUserSpecified}'. If multiple scenarios, use a comma-separated list.") args << makeArgument( type: Argument::String, - name: 'utility_bill_pv_feed_in_tariff_rates' + name: 'utility_bill_pv_feed_in_tariff_rates', required: false, display_name: 'Utility Bills: PV Feed-In Tariff Rates') description: "Utility bill PV annual full/gross feed-in tariff rates. Only applies if the PV compensation type is '#{HPXML::PVCompensationTypeFeedInTariff}'. If multiple scenarios, use a comma-separated list.") args << makeArgument( type: Argument::String, - name: 'utility_bill_pv_monthly_grid_connection_fee_units' + name: 'utility_bill_pv_monthly_grid_connection_fee_units', required: false, display_name: 'Utility Bills: PV Monthly Grid Connection Fee Units') description: 'Utility bill PV monthly grid connection fee units. If multiple scenarios, use a comma-separated list.') args << makeArgument( type: Argument::String, - name: 'utility_bill_pv_monthly_grid_connection_fees' + name: 'utility_bill_pv_monthly_grid_connection_fees', required: false, display_name: 'Utility Bills: PV Monthly Grid Connection Fees') description: 'Utility bill PV monthly grid connection fees. If multiple scenarios, use a comma-separated list.') args << makeArgument( type: Argument::String, - name: 'additional_properties' + name: 'additional_properties', required: false, display_name: 'Additional Properties') description: "Additional properties specified as key-value pairs (i.e., key=value). If multiple additional properties, use a |-separated list. For example, 'LowIncome=false|Remodeled|Description=2-story home in Denver'. These properties will be stored in the HPXML file under /HPXML/SoftwareInfo/extension/AdditionalProperties.") From 1b60e912c164d35a6a619af37d07d7cc453a3022 Mon Sep 17 00:00:00 2001 From: Joe Robertson Date: Sat, 2 Nov 2024 13:30:06 -0700 Subject: [PATCH 19/33] Sweep through. --- BuildResidentialHPXML/measure.rb | 2354 ++++++++++++++++++------------ 1 file changed, 1427 insertions(+), 927 deletions(-) diff --git a/BuildResidentialHPXML/measure.rb b/BuildResidentialHPXML/measure.rb index e86c46f93e..f67ff6a832 100644 --- a/BuildResidentialHPXML/measure.rb +++ b/BuildResidentialHPXML/measure.rb @@ -1687,180 +1687,209 @@ def makeArgument(name:, name: 'heating_system_heating_capacity', required: false, display_name: 'Heating System: Heating Capacity') - description: "The output heating capacity of the heating system. If not provided, the OS-HPXML autosized default (see HPXML Heating Systems) is used.") - units: 'Btu/hr') + description: "The output heating capacity of the heating system.", + units: 'Btu/hr', + default_href: "HPXML Heating Systems" + ) args << makeArgument( type: Argument::Double, name: 'heating_system_heating_autosizing_factor', required: false, - display_name: 'Heating System: Heating Autosizing Factor') - description: 'The capacity scaling factor applied to the auto-sizing methodology. If not provided, 1.0 is used.') + display_name: 'Heating System: Heating Autosizing Factor', + description: 'The capacity scaling factor applied to the auto-sizing methodology. If not provided, 1.0 is used.' + ) args << makeArgument( type: Argument::Double, name: 'heating_system_heating_autosizing_limit', required: false, - display_name: 'Heating System: Heating Autosizing Limit') - description: 'The maximum capacity limit applied to the auto-sizing methodology. If not provided, no limit is used.') - units: 'Btu/hr') + display_name: 'Heating System: Heating Autosizing Limit', + description: 'The maximum capacity limit applied to the auto-sizing methodology. If not provided, no limit is used.', + units: 'Btu/hr' + ) args << makeArgument( type: Argument::Double, name: 'heating_system_fraction_heat_load_served', required: false, - display_name: 'Heating System: Fraction Heat Load Served') - description: 'The heating load served by the heating system.') - units: 'Frac') + display_name: 'Heating System: Fraction Heat Load Served', + description: 'The heating load served by the heating system.', + units: 'Frac' + ) args << makeArgument( type: Argument::Double, name: 'heating_system_pilot_light', required: false, - display_name: 'Heating System: Pilot Light') - description: "The fuel usage of the pilot light. Applies only to #{HPXML::HVACTypeFurnace}, #{HPXML::HVACTypeWallFurnace}, #{HPXML::HVACTypeFloorFurnace}, #{HPXML::HVACTypeStove}, #{HPXML::HVACTypeBoiler}, and #{HPXML::HVACTypeFireplace} with non-electric fuel type. If not provided, assumes no pilot light.") - units: 'Btuh') + display_name: 'Heating System: Pilot Light', + description: "The fuel usage of the pilot light. Applies only to #{HPXML::HVACTypeFurnace}, #{HPXML::HVACTypeWallFurnace}, #{HPXML::HVACTypeFloorFurnace}, #{HPXML::HVACTypeStove}, #{HPXML::HVACTypeBoiler}, and #{HPXML::HVACTypeFireplace} with non-electric fuel type. If not provided, assumes no pilot light.", + units: 'Btuh' + ) args << makeArgument( type: Argument::Double, name: 'heating_system_airflow_defect_ratio', required: false, - display_name: 'Heating System: Airflow Defect Ratio') - description: "The airflow defect ratio, defined as (InstalledAirflow - DesignAirflow) / DesignAirflow, of the heating system per ANSI/RESNET/ACCA Standard 310. A value of zero means no airflow defect. Applies only to #{HPXML::HVACTypeFurnace}. If not provided, assumes no defect.") - units: 'Frac') + display_name: 'Heating System: Airflow Defect Ratio', + description: "The airflow defect ratio, defined as (InstalledAirflow - DesignAirflow) / DesignAirflow, of the heating system per ANSI/RESNET/ACCA Standard 310. A value of zero means no airflow defect. Applies only to #{HPXML::HVACTypeFurnace}. If not provided, assumes no defect.", + units: 'Frac' + ) args << makeArgument( type: Argument::Choice, name: 'cooling_system_type', choices: cooling_system_type_choices, - required: true) - display_name: 'Cooling System: Type') - description: "The type of cooling system. Use '#{Constants::None}' if there is no cooling system or if there is a heat pump serving a cooling load.") + required: true, + display_name: 'Cooling System: Type', + description: "The type of cooling system. Use '#{Constants::None}' if there is no cooling system or if there is a heat pump serving a cooling load." + ) args << makeArgument( type: Argument::Choice, name: 'cooling_system_cooling_efficiency_type', choices: cooling_efficiency_type_choices, - required: false) - display_name: 'Cooling System: Efficiency Type') - description: "The efficiency type of the cooling system. System types #{HPXML::HVACTypeCentralAirConditioner} and #{HPXML::HVACTypeMiniSplitAirConditioner} use #{HPXML::UnitsSEER} or #{HPXML::UnitsSEER2}. System types #{HPXML::HVACTypeRoomAirConditioner} and #{HPXML::HVACTypePTAC} use #{HPXML::UnitsEER} or #{HPXML::UnitsCEER}. Ignored for system type #{HPXML::HVACTypeEvaporativeCooler}.") + required: false, + display_name: 'Cooling System: Efficiency Type', + description: "The efficiency type of the cooling system. System types #{HPXML::HVACTypeCentralAirConditioner} and #{HPXML::HVACTypeMiniSplitAirConditioner} use #{HPXML::UnitsSEER} or #{HPXML::UnitsSEER2}. System types #{HPXML::HVACTypeRoomAirConditioner} and #{HPXML::HVACTypePTAC} use #{HPXML::UnitsEER} or #{HPXML::UnitsCEER}. Ignored for system type #{HPXML::HVACTypeEvaporativeCooler}." + ) args << makeArgument( type: Argument::Double, name: 'cooling_system_cooling_efficiency', required: false, - display_name: 'Cooling System: Efficiency') - description: "The rated efficiency value of the cooling system. Ignored for #{HPXML::HVACTypeEvaporativeCooler}.") + display_name: 'Cooling System: Efficiency', + description: "The rated efficiency value of the cooling system. Ignored for #{HPXML::HVACTypeEvaporativeCooler}." + ) args << makeArgument( type: Argument::Choice, name: 'cooling_system_cooling_compressor_type', choices: compressor_type_choices, - required: false) - display_name: 'Cooling System: Cooling Compressor Type') - description: "The compressor type of the cooling system. Only applies to #{HPXML::HVACTypeCentralAirConditioner} and #{HPXML::HVACTypeMiniSplitAirConditioner}. If not provided, the OS-HPXML default (see Central Air Conditioner, Mini-Split Air Conditioner) is used.") + required: false, + display_name: 'Cooling System: Cooling Compressor Type', + description: "The compressor type of the cooling system. Only applies to #{HPXML::HVACTypeCentralAirConditioner} and #{HPXML::HVACTypeMiniSplitAirConditioner}.", + default_href: "Central Air Conditioner, Mini-Split Air Conditioner" + ) args << makeArgument( type: Argument::Double, name: 'cooling_system_cooling_sensible_heat_fraction', required: false, - display_name: 'Cooling System: Cooling Sensible Heat Fraction') - description: "The sensible heat fraction of the cooling system. Ignored for #{HPXML::HVACTypeEvaporativeCooler}. If not provided, the OS-HPXML default (see Central Air Conditioner, Room Air Conditioner, Packaged Terminal Air Conditioner, Mini-Split Air Conditioner) is used.") - units: 'Frac') + display_name: 'Cooling System: Cooling Sensible Heat Fraction', + description: "The sensible heat fraction of the cooling system. Ignored for #{HPXML::HVACTypeEvaporativeCooler}.", + default_href: "Central Air Conditioner, Room Air Conditioner, Packaged Terminal Air Conditioner, Mini-Split Air Conditioner", + units: 'Frac' + ) args << makeArgument( type: Argument::Double, name: 'cooling_system_cooling_capacity', required: false, - display_name: 'Cooling System: Cooling Capacity') - description: "The output cooling capacity of the cooling system. If not provided, the OS-HPXML autosized default (see Central Air Conditioner, Room Air Conditioner, Packaged Terminal Air Conditioner, Evaporative Cooler, Mini-Split Air Conditioner) is used.") - units: 'Btu/hr') + display_name: 'Cooling System: Cooling Capacity', + description: "The output cooling capacity of the cooling system.", + default_href: "Central Air Conditioner, Room Air Conditioner, Packaged Terminal Air Conditioner, Evaporative Cooler, Mini-Split Air Conditioner", + units: 'Btu/hr' + ) args << makeArgument( type: Argument::Double, name: 'cooling_system_cooling_autosizing_factor', required: false, - display_name: 'Cooling System: Cooling Autosizing Factor') - description: 'The capacity scaling factor applied to the auto-sizing methodology. If not provided, 1.0 is used.') + display_name: 'Cooling System: Cooling Autosizing Factor', + description: 'The capacity scaling factor applied to the auto-sizing methodology. If not provided, 1.0 is used.' + ) args << makeArgument( type: Argument::Double, name: 'cooling_system_cooling_autosizing_limit', required: false, - display_name: 'Cooling System: Cooling Autosizing Limit') - description: 'The maximum capacity limit applied to the auto-sizing methodology. If not provided, no limit is used.') - units: 'Btu/hr') + display_name: 'Cooling System: Cooling Autosizing Limit', + description: 'The maximum capacity limit applied to the auto-sizing methodology. If not provided, no limit is used.', + units: 'Btu/hr' + ) args << makeArgument( type: Argument::Double, name: 'cooling_system_fraction_cool_load_served', required: false, - display_name: 'Cooling System: Fraction Cool Load Served') - description: 'The cooling load served by the cooling system.') - units: 'Frac') + display_name: 'Cooling System: Fraction Cool Load Served', + description: 'The cooling load served by the cooling system.', + units: 'Frac' + ) args << makeArgument( name: 'cooling_system_is_ducted', type: Argument::Boolean, required: false, - display_name: 'Cooling System: Is Ducted') - description: "Whether the cooling system is ducted or not. Only used for #{HPXML::HVACTypeMiniSplitAirConditioner} and #{HPXML::HVACTypeEvaporativeCooler}. It's assumed that #{HPXML::HVACTypeCentralAirConditioner} is ducted, and #{HPXML::HVACTypeRoomAirConditioner} and #{HPXML::HVACTypePTAC} are not ducted.") + display_name: 'Cooling System: Is Ducted', + description: "Whether the cooling system is ducted or not. Only used for #{HPXML::HVACTypeMiniSplitAirConditioner} and #{HPXML::HVACTypeEvaporativeCooler}. It's assumed that #{HPXML::HVACTypeCentralAirConditioner} is ducted, and #{HPXML::HVACTypeRoomAirConditioner} and #{HPXML::HVACTypePTAC} are not ducted." + ) args << makeArgument( type: Argument::Double, name: 'cooling_system_airflow_defect_ratio', required: false, - display_name: 'Cooling System: Airflow Defect Ratio') - description: "The airflow defect ratio, defined as (InstalledAirflow - DesignAirflow) / DesignAirflow, of the cooling system per ANSI/RESNET/ACCA Standard 310. A value of zero means no airflow defect. Applies only to #{HPXML::HVACTypeCentralAirConditioner} and ducted #{HPXML::HVACTypeMiniSplitAirConditioner}. If not provided, assumes no defect.") - units: 'Frac') + display_name: 'Cooling System: Airflow Defect Ratio', + description: "The airflow defect ratio, defined as (InstalledAirflow - DesignAirflow) / DesignAirflow, of the cooling system per ANSI/RESNET/ACCA Standard 310. A value of zero means no airflow defect. Applies only to #{HPXML::HVACTypeCentralAirConditioner} and ducted #{HPXML::HVACTypeMiniSplitAirConditioner}. If not provided, assumes no defect.", + units: 'Frac' + ) args << makeArgument( type: Argument::Double, name: 'cooling_system_charge_defect_ratio', required: false, - display_name: 'Cooling System: Charge Defect Ratio') - description: "The refrigerant charge defect ratio, defined as (InstalledCharge - DesignCharge) / DesignCharge, of the cooling system per ANSI/RESNET/ACCA Standard 310. A value of zero means no refrigerant charge defect. Applies only to #{HPXML::HVACTypeCentralAirConditioner} and #{HPXML::HVACTypeMiniSplitAirConditioner}. If not provided, assumes no defect.") - units: 'Frac') + display_name: 'Cooling System: Charge Defect Ratio', + description: "The refrigerant charge defect ratio, defined as (InstalledCharge - DesignCharge) / DesignCharge, of the cooling system per ANSI/RESNET/ACCA Standard 310. A value of zero means no refrigerant charge defect. Applies only to #{HPXML::HVACTypeCentralAirConditioner} and #{HPXML::HVACTypeMiniSplitAirConditioner}. If not provided, assumes no defect.", + units: 'Frac' + ) args << makeArgument( type: Argument::Double, name: 'cooling_system_crankcase_heater_watts', required: false, - display_name: 'Cooling System: Crankcase Heater Power Watts') - description: "Cooling system crankcase heater power consumption in Watts. Applies only to #{HPXML::HVACTypeCentralAirConditioner}, #{HPXML::HVACTypeRoomAirConditioner}, #{HPXML::HVACTypePTAC} and #{HPXML::HVACTypeMiniSplitAirConditioner}. If not provided, the OS-HPXML default (see Central Air Conditioner, Room Air Conditioner, Packaged Terminal Air Conditioner, Mini-Split Air Conditioner) is used.") - units: 'W') + display_name: 'Cooling System: Crankcase Heater Power Watts', + description: "Cooling system crankcase heater power consumption in Watts. Applies only to #{HPXML::HVACTypeCentralAirConditioner}, #{HPXML::HVACTypeRoomAirConditioner}, #{HPXML::HVACTypePTAC} and #{HPXML::HVACTypeMiniSplitAirConditioner}.", + default_href: "Central Air Conditioner, Room Air Conditioner, Packaged Terminal Air Conditioner, Mini-Split Air Conditioner", + units: 'W' + ) args << makeArgument( type: Argument::Choice, name: 'cooling_system_integrated_heating_system_fuel', choices: heating_system_fuel_choices, - required: false) - display_name: 'Cooling System: Integrated Heating System Fuel Type') - description: "The fuel type of the heating system integrated into cooling system. Only used for #{HPXML::HVACTypePTAC} and #{HPXML::HVACTypeRoomAirConditioner}.") + required: false, + display_name: 'Cooling System: Integrated Heating System Fuel Type', + description: "The fuel type of the heating system integrated into cooling system. Only used for #{HPXML::HVACTypePTAC} and #{HPXML::HVACTypeRoomAirConditioner}." + ) args << makeArgument( type: Argument::Double, name: 'cooling_system_integrated_heating_system_efficiency_percent', required: false, - display_name: 'Cooling System: Integrated Heating System Efficiency') - units: 'Frac') - description: "The rated heating efficiency value of the heating system integrated into cooling system. Only used for #{HPXML::HVACTypePTAC} and #{HPXML::HVACTypeRoomAirConditioner}.") + display_name: 'Cooling System: Integrated Heating System Efficiency', + units: 'Frac', + description: "The rated heating efficiency value of the heating system integrated into cooling system. Only used for #{HPXML::HVACTypePTAC} and #{HPXML::HVACTypeRoomAirConditioner}." + ) args << makeArgument( type: Argument::Double, name: 'cooling_system_integrated_heating_system_capacity', required: false, - display_name: 'Cooling System: Integrated Heating System Heating Capacity') - description: "The output heating capacity of the heating system integrated into cooling system. If not provided, the OS-HPXML autosized default (see Room Air Conditioner, Packaged Terminal Air Conditioner) is used. Only used for #{HPXML::HVACTypeRoomAirConditioner} and #{HPXML::HVACTypePTAC}.") - units: 'Btu/hr') + display_name: 'Cooling System: Integrated Heating System Heating Capacity', + description: "The output heating capacity of the heating system integrated into cooling system. Only used for #{HPXML::HVACTypeRoomAirConditioner} and #{HPXML::HVACTypePTAC}.", + default_href: "Room Air Conditioner, Packaged Terminal Air Conditioner", + units: 'Btu/hr' + ) args << makeArgument( type: Argument::Double, name: 'cooling_system_integrated_heating_system_fraction_heat_load_served', required: false, - display_name: 'Cooling System: Integrated Heating System Fraction Heat Load Served') - description: "The heating load served by the heating system integrated into cooling system. Only used for #{HPXML::HVACTypePTAC} and #{HPXML::HVACTypeRoomAirConditioner}.") - units: 'Frac') + display_name: 'Cooling System: Integrated Heating System Fraction Heat Load Served', + description: "The heating load served by the heating system integrated into cooling system. Only used for #{HPXML::HVACTypePTAC} and #{HPXML::HVACTypeRoomAirConditioner}.", + units: 'Frac' + ) heat_pump_type_choices = OpenStudio::StringVector.new heat_pump_type_choices << Constants::None @@ -1899,242 +1928,283 @@ def makeArgument(name:, type: Argument::Choice, name: 'heat_pump_type', choices: heat_pump_type_choices, - required: true) - display_name: 'Heat Pump: Type') - description: "The type of heat pump. Use '#{Constants::None}' if there is no heat pump.") + required: true, + display_name: 'Heat Pump: Type', + description: "The type of heat pump. Use '#{Constants::None}' if there is no heat pump." + ) args << makeArgument( type: Argument::Choice, name: 'heat_pump_heating_efficiency_type', choices: heat_pump_heating_efficiency_type_choices, - required: false) - display_name: 'Heat Pump: Heating Efficiency Type') - description: "The heating efficiency type of heat pump. System types #{HPXML::HVACTypeHeatPumpAirToAir} and #{HPXML::HVACTypeHeatPumpMiniSplit} use #{HPXML::UnitsHSPF} or #{HPXML::UnitsHSPF2}. System types #{HPXML::HVACTypeHeatPumpGroundToAir}, #{HPXML::HVACTypeHeatPumpPTHP} and #{HPXML::HVACTypeHeatPumpRoom} use #{HPXML::UnitsCOP}.") + required: false, + display_name: 'Heat Pump: Heating Efficiency Type', + description: "The heating efficiency type of heat pump. System types #{HPXML::HVACTypeHeatPumpAirToAir} and #{HPXML::HVACTypeHeatPumpMiniSplit} use #{HPXML::UnitsHSPF} or #{HPXML::UnitsHSPF2}. System types #{HPXML::HVACTypeHeatPumpGroundToAir}, #{HPXML::HVACTypeHeatPumpPTHP} and #{HPXML::HVACTypeHeatPumpRoom} use #{HPXML::UnitsCOP}." + ) args << makeArgument( type: Argument::Double, name: 'heat_pump_heating_efficiency', required: false, - display_name: 'Heat Pump: Heating Efficiency') - description: 'The rated heating efficiency value of the heat pump.') + display_name: 'Heat Pump: Heating Efficiency', + description: 'The rated heating efficiency value of the heat pump.' + ) args << makeArgument( type: Argument::Choice, name: 'heat_pump_cooling_efficiency_type', choices: cooling_efficiency_type_choices, - required: false) - display_name: 'Heat Pump: Cooling Efficiency Type') - description: "The cooling efficiency type of heat pump. System types #{HPXML::HVACTypeHeatPumpAirToAir} and #{HPXML::HVACTypeHeatPumpMiniSplit} use #{HPXML::UnitsSEER} or #{HPXML::UnitsSEER2}. System types #{HPXML::HVACTypeHeatPumpGroundToAir}, #{HPXML::HVACTypeHeatPumpPTHP} and #{HPXML::HVACTypeHeatPumpRoom} use #{HPXML::UnitsEER}.") + required: false, + display_name: 'Heat Pump: Cooling Efficiency Type', + description: "The cooling efficiency type of heat pump. System types #{HPXML::HVACTypeHeatPumpAirToAir} and #{HPXML::HVACTypeHeatPumpMiniSplit} use #{HPXML::UnitsSEER} or #{HPXML::UnitsSEER2}. System types #{HPXML::HVACTypeHeatPumpGroundToAir}, #{HPXML::HVACTypeHeatPumpPTHP} and #{HPXML::HVACTypeHeatPumpRoom} use #{HPXML::UnitsEER}." + ) args << makeArgument( type: Argument::Double, name: 'heat_pump_cooling_efficiency', required: false, - display_name: 'Heat Pump: Cooling Efficiency') - description: 'The rated cooling efficiency value of the heat pump.') + display_name: 'Heat Pump: Cooling Efficiency', + description: 'The rated cooling efficiency value of the heat pump.' + ) args << makeArgument( type: Argument::Choice, name: 'heat_pump_cooling_compressor_type', choices: compressor_type_choices, - required: false) - display_name: 'Heat Pump: Cooling Compressor Type') - description: "The compressor type of the heat pump. Only applies to #{HPXML::HVACTypeHeatPumpAirToAir} and #{HPXML::HVACTypeHeatPumpMiniSplit}. If not provided, the OS-HPXML default (see Air-to-Air Heat Pump, Mini-Split Heat Pump) is used.") + required: false, + display_name: 'Heat Pump: Cooling Compressor Type', + description: "The compressor type of the heat pump. Only applies to #{HPXML::HVACTypeHeatPumpAirToAir} and #{HPXML::HVACTypeHeatPumpMiniSplit}.", + default_href: "Air-to-Air Heat Pump, Mini-Split Heat Pump" + ) args << makeArgument( type: Argument::Double, name: 'heat_pump_cooling_sensible_heat_fraction', required: false, - display_name: 'Heat Pump: Cooling Sensible Heat Fraction') - description: "The sensible heat fraction of the heat pump. If not provided, the OS-HPXML default (see Air-to-Air Heat Pump, Mini-Split Heat Pump, Packaged Terminal Heat Pump, Room Air Conditioner w/ Reverse Cycle, Ground-to-Air Heat Pump) is used.") - units: 'Frac') + display_name: 'Heat Pump: Cooling Sensible Heat Fraction', + description: "The sensible heat fraction of the heat pump.", + default_href: "Air-to-Air Heat Pump, Mini-Split Heat Pump, Packaged Terminal Heat Pump, Room Air Conditioner w/ Reverse Cycle, Ground-to-Air Heat Pump", + units: 'Frac' + ) args << makeArgument( type: Argument::Double, name: 'heat_pump_heating_capacity', required: false, - display_name: 'Heat Pump: Heating Capacity') - description: "The output heating capacity of the heat pump. If not provided, the OS-HPXML autosized default (see Air-to-Air Heat Pump, Mini-Split Heat Pump, Packaged Terminal Heat Pump, Room Air Conditioner w/ Reverse Cycle, Ground-to-Air Heat Pump) is used.") - units: 'Btu/hr') + display_name: 'Heat Pump: Heating Capacity', + description: "The output heating capacity of the heat pump.", + default_href: "Air-to-Air Heat Pump, Mini-Split Heat Pump, Packaged Terminal Heat Pump, Room Air Conditioner w/ Reverse Cycle, Ground-to-Air Heat Pump", + units: 'Btu/hr' + ) args << makeArgument( type: Argument::Double, name: 'heat_pump_heating_autosizing_factor', required: false, - display_name: 'Heat Pump: Heating Autosizing Factor') - description: 'The capacity scaling factor applied to the auto-sizing methodology. If not provided, 1.0 is used.') + display_name: 'Heat Pump: Heating Autosizing Factor', + description: 'The capacity scaling factor applied to the auto-sizing methodology. If not provided, 1.0 is used.' + ) args << makeArgument( type: Argument::Double, name: 'heat_pump_heating_autosizing_limit', required: false, - display_name: 'Heat Pump: Heating Autosizing Limit') - description: 'The maximum capacity limit applied to the auto-sizing methodology. If not provided, no limit is used.') - units: 'Btu/hr') + display_name: 'Heat Pump: Heating Autosizing Limit', + description: 'The maximum capacity limit applied to the auto-sizing methodology. If not provided, no limit is used.', + units: 'Btu/hr' + ) args << makeArgument( type: Argument::Double, name: 'heat_pump_heating_capacity_retention_fraction', required: false, - display_name: 'Heat Pump: Heating Capacity Retention Fraction') - description: "The output heating capacity of the heat pump at a user-specified temperature (e.g., 17F or 5F) divided by the above nominal heating capacity. Applies to all heat pump types except #{HPXML::HVACTypeHeatPumpGroundToAir}. If not provided, the OS-HPXML default (see Air-to-Air Heat Pump, Mini-Split Heat Pump, Packaged Terminal Heat Pump, Room Air Conditioner w/ Reverse Cycle) is used.") - units: 'Frac') + display_name: 'Heat Pump: Heating Capacity Retention Fraction', + description: "The output heating capacity of the heat pump at a user-specified temperature (e.g., 17F or 5F) divided by the above nominal heating capacity. Applies to all heat pump types except #{HPXML::HVACTypeHeatPumpGroundToAir}.", + default_href: "Air-to-Air Heat Pump, Mini-Split Heat Pump, Packaged Terminal Heat Pump, Room Air Conditioner w/ Reverse Cycle", + units: 'Frac' + ) args << makeArgument( type: Argument::Double, name: 'heat_pump_heating_capacity_retention_temp', required: false, - display_name: 'Heat Pump: Heating Capacity Retention Temperature') - description: "The user-specified temperature (e.g., 17F or 5F) for the above heating capacity retention fraction. Applies to all heat pump types except #{HPXML::HVACTypeHeatPumpGroundToAir}. Required if the Heating Capacity Retention Fraction is provided.") - units: 'F') + display_name: 'Heat Pump: Heating Capacity Retention Temperature', + description: "The user-specified temperature (e.g., 17F or 5F) for the above heating capacity retention fraction. Applies to all heat pump types except #{HPXML::HVACTypeHeatPumpGroundToAir}. Required if the Heating Capacity Retention Fraction is provided.", + units: 'F' + ) args << makeArgument( type: Argument::Double, name: 'heat_pump_cooling_capacity', required: false, - display_name: 'Heat Pump: Cooling Capacity') - description: "The output cooling capacity of the heat pump. If not provided, the OS-HPXML autosized default (see Air-to-Air Heat Pump, Mini-Split Heat Pump, Packaged Terminal Heat Pump, Room Air Conditioner w/ Reverse Cycle, Ground-to-Air Heat Pump) is used.") - units: 'Btu/hr') + display_name: 'Heat Pump: Cooling Capacity', + description: "The output cooling capacity of the heat pump.", + default_href: "Air-to-Air Heat Pump, Mini-Split Heat Pump, Packaged Terminal Heat Pump, Room Air Conditioner w/ Reverse Cycle, Ground-to-Air Heat Pump", + units: 'Btu/hr' + ) args << makeArgument( type: Argument::Double, name: 'heat_pump_cooling_autosizing_factor', required: false, - display_name: 'Heat Pump: Cooling Autosizing Factor') - description: 'The capacity scaling factor applied to the auto-sizing methodology. If not provided, 1.0 is used.') + display_name: 'Heat Pump: Cooling Autosizing Factor', + description: 'The capacity scaling factor applied to the auto-sizing methodology. If not provided, 1.0 is used.' + ) args << makeArgument( type: Argument::Double, name: 'heat_pump_cooling_autosizing_limit', required: false, - display_name: 'Heat Pump: Cooling Autosizing Limit') - description: 'The maximum capacity limit applied to the auto-sizing methodology. If not provided, no limit is used.') - units: 'Btu/hr') + display_name: 'Heat Pump: Cooling Autosizing Limit', + description: 'The maximum capacity limit applied to the auto-sizing methodology. If not provided, no limit is used.', + units: 'Btu/hr' + ) args << makeArgument( type: Argument::Double, name: 'heat_pump_fraction_heat_load_served', required: false, - display_name: 'Heat Pump: Fraction Heat Load Served') - description: 'The heating load served by the heat pump.') - units: 'Frac') + display_name: 'Heat Pump: Fraction Heat Load Served', + description: 'The heating load served by the heat pump.', + units: 'Frac' + ) args << makeArgument( type: Argument::Double, name: 'heat_pump_fraction_cool_load_served', required: false, - display_name: 'Heat Pump: Fraction Cool Load Served') - description: 'The cooling load served by the heat pump.') - units: 'Frac') + display_name: 'Heat Pump: Fraction Cool Load Served', + description: 'The cooling load served by the heat pump.', + units: 'Frac' + ) args << makeArgument( type: Argument::Double, name: 'heat_pump_compressor_lockout_temp', required: false, - display_name: 'Heat Pump: Compressor Lockout Temperature') - description: "The temperature below which the heat pump compressor is disabled. If both this and Backup Heating Lockout Temperature are provided and use the same value, it essentially defines a switchover temperature (for, e.g., a dual-fuel heat pump). Applies to all heat pump types other than #{HPXML::HVACTypeHeatPumpGroundToAir}. If not provided, the OS-HPXML default (see Air-to-Air Heat Pump, Mini-Split Heat Pump, Packaged Terminal Heat Pump, Room Air Conditioner w/ Reverse Cycle) is used.") - units: 'F') + display_name: 'Heat Pump: Compressor Lockout Temperature', + description: "The temperature below which the heat pump compressor is disabled. If both this and Backup Heating Lockout Temperature are provided and use the same value, it essentially defines a switchover temperature (for, e.g., a dual-fuel heat pump). Applies to all heat pump types other than #{HPXML::HVACTypeHeatPumpGroundToAir}.", + default_href: "Air-to-Air Heat Pump, Mini-Split Heat Pump, Packaged Terminal Heat Pump, Room Air Conditioner w/ Reverse Cycle", + units: 'F' + ) args << makeArgument( type: Argument::Choice, name: 'heat_pump_backup_type', choices: heat_pump_backup_type_choices, - required: false) - display_name: 'Heat Pump: Backup Type') - description: "The backup type of the heat pump. If '#{HPXML::HeatPumpBackupTypeIntegrated}', represents e.g. built-in electric strip heat or dual-fuel integrated furnace. If '#{HPXML::HeatPumpBackupTypeSeparate}', represents e.g. electric baseboard or boiler based on the Heating System 2 specified below. Use '#{Constants::None}' if there is no backup heating.") + required: false, + display_name: 'Heat Pump: Backup Type', + description: "The backup type of the heat pump. If '#{HPXML::HeatPumpBackupTypeIntegrated}', represents e.g. built-in electric strip heat or dual-fuel integrated furnace. If '#{HPXML::HeatPumpBackupTypeSeparate}', represents e.g. electric baseboard or boiler based on the Heating System 2 specified below. Use '#{Constants::None}' if there is no backup heating." + ) args << makeArgument( type: Argument::Double, name: 'heat_pump_backup_heating_autosizing_factor', required: false, - display_name: 'Heat Pump: Backup Heating Autosizing Factor') + display_name: 'Heat Pump: Backup Heating Autosizing Factor', description: "The capacity scaling factor applied to the auto-sizing methodology if Backup Type is '#{HPXML::HeatPumpBackupTypeIntegrated}'. If not provided, 1.0 is used. If Backup Type is '#{HPXML::HeatPumpBackupTypeSeparate}', use Heating System 2: Heating Autosizing Factor.") args << makeArgument( type: Argument::Double, name: 'heat_pump_backup_heating_autosizing_limit', required: false, - display_name: 'Heat Pump: Backup Heating Autosizing Limit') - description: "The maximum capacity limit applied to the auto-sizing methodology if Backup Type is '#{HPXML::HeatPumpBackupTypeIntegrated}'. If not provided, no limit is used. If Backup Type is '#{HPXML::HeatPumpBackupTypeSeparate}', use Heating System 2: Heating Autosizing Limit.") - units: 'Btu/hr') + display_name: 'Heat Pump: Backup Heating Autosizing Limit', + description: "The maximum capacity limit applied to the auto-sizing methodology if Backup Type is '#{HPXML::HeatPumpBackupTypeIntegrated}'. If not provided, no limit is used. If Backup Type is '#{HPXML::HeatPumpBackupTypeSeparate}', use Heating System 2: Heating Autosizing Limit.", + units: 'Btu/hr' + ) args << makeArgument( type: Argument::Choice, name: 'heat_pump_backup_fuel', choices: heat_pump_backup_fuel_choices, - required: false) - display_name: 'Heat Pump: Backup Fuel Type') - description: "The backup fuel type of the heat pump. Only applies if Backup Type is '#{HPXML::HeatPumpBackupTypeIntegrated}'.") + required: false, + display_name: 'Heat Pump: Backup Fuel Type', + description: "The backup fuel type of the heat pump. Only applies if Backup Type is '#{HPXML::HeatPumpBackupTypeIntegrated}'." + ) args << makeArgument( type: Argument::Double, name: 'heat_pump_backup_heating_efficiency', required: false, - display_name: 'Heat Pump: Backup Rated Efficiency') - description: "The backup rated efficiency value of the heat pump. Percent for electricity fuel type. AFUE otherwise. Only applies if Backup Type is '#{HPXML::HeatPumpBackupTypeIntegrated}'.") + display_name: 'Heat Pump: Backup Rated Efficiency', + description: "The backup rated efficiency value of the heat pump. Percent for electricity fuel type. AFUE otherwise. Only applies if Backup Type is '#{HPXML::HeatPumpBackupTypeIntegrated}'." + ) args << makeArgument( type: Argument::Double, name: 'heat_pump_backup_heating_capacity', required: false, - display_name: 'Heat Pump: Backup Heating Capacity') - description: "The backup output heating capacity of the heat pump. If not provided, the OS-HPXML autosized default (see Backup) is used. Only applies if Backup Type is '#{HPXML::HeatPumpBackupTypeIntegrated}'.") - units: 'Btu/hr') + display_name: 'Heat Pump: Backup Heating Capacity', + description: "The backup output heating capacity of the heat pump. Only applies if Backup Type is '#{HPXML::HeatPumpBackupTypeIntegrated}'.", + default_href: "Backup", + units: 'Btu/hr' + ) args << makeArgument( type: Argument::Double, name: 'heat_pump_backup_heating_lockout_temp', required: false, - display_name: 'Heat Pump: Backup Heating Lockout Temperature') - description: "The temperature above which the heat pump backup system is disabled. If both this and Compressor Lockout Temperature are provided and use the same value, it essentially defines a switchover temperature (for, e.g., a dual-fuel heat pump). Applies for both Backup Type of '#{HPXML::HeatPumpBackupTypeIntegrated}' and '#{HPXML::HeatPumpBackupTypeSeparate}'. If not provided, the OS-HPXML default (see Backup) is used.") - units: 'F') + display_name: 'Heat Pump: Backup Heating Lockout Temperature', + description: "The temperature above which the heat pump backup system is disabled. If both this and Compressor Lockout Temperature are provided and use the same value, it essentially defines a switchover temperature (for, e.g., a dual-fuel heat pump). Applies for both Backup Type of '#{HPXML::HeatPumpBackupTypeIntegrated}' and '#{HPXML::HeatPumpBackupTypeSeparate}'.", + default_href: "Backup", + units: 'F' + ) args << makeArgument( type: Argument::Choice, name: 'heat_pump_sizing_methodology', choices: heat_pump_sizing_choices, - required: false) - display_name: 'Heat Pump: Sizing Methodology') - description: "The auto-sizing methodology to use when the heat pump capacity is not provided. If not provided, the OS-HPXML default (see HPXML HVAC Sizing Control) is used.") + required: false, + display_name: 'Heat Pump: Sizing Methodology', + description: "The auto-sizing methodology to use when the heat pump capacity is not provided.", + default_href: "HPXML HVAC Sizing Control" + ) args << makeArgument( type: Argument::Choice, name: 'heat_pump_backup_sizing_methodology', choices: heat_pump_backup_sizing_choices, - required: false) - display_name: 'Heat Pump: Backup Sizing Methodology') - description: "The auto-sizing methodology to use when the heat pump backup capacity is not provided. If not provided, the OS-HPXML default (see HPXML HVAC Sizing Control) is used.") + required: false, + display_name: 'Heat Pump: Backup Sizing Methodology', + description: "The auto-sizing methodology to use when the heat pump backup capacity is not provided.", + default_href: "HPXML HVAC Sizing Control" + ) args << makeArgument( name: 'heat_pump_is_ducted', type: Argument::Boolean, required: false, - display_name: 'Heat Pump: Is Ducted') - description: "Whether the heat pump is ducted or not. Only used for #{HPXML::HVACTypeHeatPumpMiniSplit}. It's assumed that #{HPXML::HVACTypeHeatPumpAirToAir} and #{HPXML::HVACTypeHeatPumpGroundToAir} are ducted, and #{HPXML::HVACTypeHeatPumpPTHP} and #{HPXML::HVACTypeHeatPumpRoom} are not ducted. If not provided, assumes not ducted.") + display_name: 'Heat Pump: Is Ducted', + description: "Whether the heat pump is ducted or not. Only used for #{HPXML::HVACTypeHeatPumpMiniSplit}. It's assumed that #{HPXML::HVACTypeHeatPumpAirToAir} and #{HPXML::HVACTypeHeatPumpGroundToAir} are ducted, and #{HPXML::HVACTypeHeatPumpPTHP} and #{HPXML::HVACTypeHeatPumpRoom} are not ducted. If not provided, assumes not ducted." + ) args << makeArgument( type: Argument::Double, name: 'heat_pump_airflow_defect_ratio', required: false, - display_name: 'Heat Pump: Airflow Defect Ratio') - description: "The airflow defect ratio, defined as (InstalledAirflow - DesignAirflow) / DesignAirflow, of the heat pump per ANSI/RESNET/ACCA Standard 310. A value of zero means no airflow defect. Applies only to #{HPXML::HVACTypeHeatPumpAirToAir}, ducted #{HPXML::HVACTypeHeatPumpMiniSplit}, and #{HPXML::HVACTypeHeatPumpGroundToAir}. If not provided, assumes no defect.") - units: 'Frac') + display_name: 'Heat Pump: Airflow Defect Ratio', + description: "The airflow defect ratio, defined as (InstalledAirflow - DesignAirflow) / DesignAirflow, of the heat pump per ANSI/RESNET/ACCA Standard 310. A value of zero means no airflow defect. Applies only to #{HPXML::HVACTypeHeatPumpAirToAir}, ducted #{HPXML::HVACTypeHeatPumpMiniSplit}, and #{HPXML::HVACTypeHeatPumpGroundToAir}. If not provided, assumes no defect.", + units: 'Frac' + ) args << makeArgument( type: Argument::Double, name: 'heat_pump_charge_defect_ratio', required: false, - display_name: 'Heat Pump: Charge Defect Ratio') - description: 'The refrigerant charge defect ratio, defined as (InstalledCharge - DesignCharge) / DesignCharge, of the heat pump per ANSI/RESNET/ACCA Standard 310. A value of zero means no refrigerant charge defect. Applies to all heat pump types. If not provided, assumes no defect.') - units: 'Frac') + display_name: 'Heat Pump: Charge Defect Ratio', + description: 'The refrigerant charge defect ratio, defined as (InstalledCharge - DesignCharge) / DesignCharge, of the heat pump per ANSI/RESNET/ACCA Standard 310. A value of zero means no refrigerant charge defect. Applies to all heat pump types. If not provided, assumes no defect.', + units: 'Frac' + ) args << makeArgument( type: Argument::Double, name: 'heat_pump_crankcase_heater_watts', required: false, - display_name: 'Heat Pump: Crankcase Heater Power Watts') - description: "Heat Pump crankcase heater power consumption in Watts. Applies only to #{HPXML::HVACTypeHeatPumpAirToAir}, #{HPXML::HVACTypeHeatPumpMiniSplit}, #{HPXML::HVACTypeHeatPumpPTHP} and #{HPXML::HVACTypeHeatPumpRoom}. If not provided, the OS-HPXML default (see Air-to-Air Heat Pump, Mini-Split Heat Pump, Packaged Terminal Heat Pump, Room Air Conditioner w/ Reverse Cycle) is used.") - units: 'W') + display_name: 'Heat Pump: Crankcase Heater Power Watts', + description: "Heat Pump crankcase heater power consumption in Watts. Applies only to #{HPXML::HVACTypeHeatPumpAirToAir}, #{HPXML::HVACTypeHeatPumpMiniSplit}, #{HPXML::HVACTypeHeatPumpPTHP} and #{HPXML::HVACTypeHeatPumpRoom}.", + default_href: "Air-to-Air Heat Pump, Mini-Split Heat Pump, Packaged Terminal Heat Pump, Room Air Conditioner w/ Reverse Cycle", + units: 'W' + ) perf_data_capacity_type_choices = OpenStudio::StringVector.new perf_data_capacity_type_choices << 'Absolute capacities' @@ -2144,89 +2214,100 @@ def makeArgument(name:, type: Argument::Choice, name: 'hvac_perf_data_capacity_type', choices: perf_data_capacity_type_choices, - required: false) - display_name: 'HVAC Detailed Performance Data: Capacity Type') - description: 'Type of capacity values for detailed performance data if available. Applies only to variable-speed air-source HVAC systems (central air conditioners, mini-split air conditioners, air-to-air heat pumps, and mini-split heat pumps).') + required: false, + display_name: 'HVAC Detailed Performance Data: Capacity Type', + description: 'Type of capacity values for detailed performance data if available. Applies only to variable-speed air-source HVAC systems (central air conditioners, mini-split air conditioners, air-to-air heat pumps, and mini-split heat pumps).' + ) args << makeArgument( type: Argument::String, name: 'hvac_perf_data_heating_outdoor_temperatures', required: false, - display_name: 'HVAC Detailed Performance Data: Heating Outdoor Temperatures') - description: 'Outdoor temperatures of heating detailed performance data if available. Applies only to variable-speed air-source HVAC systems (central air conditioners, mini-split air conditioners, air-to-air heat pumps, and mini-split heat pumps). One of the outdoor temperatures must be 47 F. At least two performance data points are required using a comma-separated list.') - units: 'F') + display_name: 'HVAC Detailed Performance Data: Heating Outdoor Temperatures', + description: 'Outdoor temperatures of heating detailed performance data if available. Applies only to variable-speed air-source HVAC systems (central air conditioners, mini-split air conditioners, air-to-air heat pumps, and mini-split heat pumps). One of the outdoor temperatures must be 47 F. At least two performance data points are required using a comma-separated list.', + units: 'F' + ) args << makeArgument( type: Argument::String, name: 'hvac_perf_data_heating_min_speed_capacities', required: false, - display_name: 'HVAC Detailed Performance Data: Heating Minimum Speed Capacities') - description: 'Minimum speed capacities of heating detailed performance data if available. Applies only to variable-speed air-source HVAC systems (central air conditioners, mini-split air conditioners, air-to-air heat pumps, and mini-split heat pumps). At least two performance data points are required using a comma-separated list.') - units: 'Btu/hr or Frac') + display_name: 'HVAC Detailed Performance Data: Heating Minimum Speed Capacities', + description: 'Minimum speed capacities of heating detailed performance data if available. Applies only to variable-speed air-source HVAC systems (central air conditioners, mini-split air conditioners, air-to-air heat pumps, and mini-split heat pumps). At least two performance data points are required using a comma-separated list.', + units: 'Btu/hr or Frac' + ) args << makeArgument( type: Argument::String, name: 'hvac_perf_data_heating_max_speed_capacities', required: false, - display_name: 'HVAC Detailed Performance Data: Heating Maximum Speed Capacities') - description: 'Maximum speed capacities of heating detailed performance data if available. Applies only to variable-speed air-source HVAC systems (central air conditioners, mini-split air conditioners, air-to-air heat pumps, and mini-split heat pumps). At least two performance data points are required using a comma-separated list.') - units: 'Btu/hr or Frac') + display_name: 'HVAC Detailed Performance Data: Heating Maximum Speed Capacities', + description: 'Maximum speed capacities of heating detailed performance data if available. Applies only to variable-speed air-source HVAC systems (central air conditioners, mini-split air conditioners, air-to-air heat pumps, and mini-split heat pumps). At least two performance data points are required using a comma-separated list.', + units: 'Btu/hr or Frac' + ) args << makeArgument( type: Argument::String, name: 'hvac_perf_data_heating_min_speed_cops', required: false, - display_name: 'HVAC Detailed Performance Data: Heating Minimum Speed COPs') - description: 'Minimum speed efficiency COP values of heating detailed performance data if available. Applies only to variable-speed air-source HVAC systems (central air conditioners, mini-split air conditioners, air-to-air heat pumps, and mini-split heat pumps). At least two performance data points are required using a comma-separated list.') - units: 'W/W') + display_name: 'HVAC Detailed Performance Data: Heating Minimum Speed COPs', + description: 'Minimum speed efficiency COP values of heating detailed performance data if available. Applies only to variable-speed air-source HVAC systems (central air conditioners, mini-split air conditioners, air-to-air heat pumps, and mini-split heat pumps). At least two performance data points are required using a comma-separated list.', + units: 'W/W' + ) args << makeArgument( type: Argument::String, name: 'hvac_perf_data_heating_max_speed_cops', required: false, - display_name: 'HVAC Detailed Performance Data: Heating Maximum Speed COPs') - description: 'Maximum speed efficiency COP values of heating detailed performance data if available. Applies only to variable-speed air-source HVAC systems (central air conditioners, mini-split air conditioners, air-to-air heat pumps, and mini-split heat pumps). At least two performance data points are required using a comma-separated list.') - units: 'W/W') + display_name: 'HVAC Detailed Performance Data: Heating Maximum Speed COPs', + description: 'Maximum speed efficiency COP values of heating detailed performance data if available. Applies only to variable-speed air-source HVAC systems (central air conditioners, mini-split air conditioners, air-to-air heat pumps, and mini-split heat pumps). At least two performance data points are required using a comma-separated list.', + units: 'W/W' + ) args << makeArgument( type: Argument::String, name: 'hvac_perf_data_cooling_outdoor_temperatures', required: false, - display_name: 'HVAC Detailed Performance Data: Cooling Outdoor Temperatures') - description: 'Outdoor temperatures of cooling detailed performance data if available. Applies only to variable-speed air-source HVAC systems (central air conditioners, mini-split air conditioners, air-to-air heat pumps, and mini-split heat pumps). One of the outdoor temperatures must be 95 F. At least two performance data points are required using a comma-separated list.') - units: 'F') + display_name: 'HVAC Detailed Performance Data: Cooling Outdoor Temperatures', + description: 'Outdoor temperatures of cooling detailed performance data if available. Applies only to variable-speed air-source HVAC systems (central air conditioners, mini-split air conditioners, air-to-air heat pumps, and mini-split heat pumps). One of the outdoor temperatures must be 95 F. At least two performance data points are required using a comma-separated list.', + units: 'F' + ) args << makeArgument( type: Argument::String, name: 'hvac_perf_data_cooling_min_speed_capacities', required: false, - display_name: 'HVAC Detailed Performance Data: Cooling Minimum Speed Capacities') - description: 'Minimum speed capacities of cooling detailed performance data if available. Applies only to variable-speed air-source HVAC systems (central air conditioners, mini-split air conditioners, air-to-air heat pumps, and mini-split heat pumps). At least two performance data points are required using a comma-separated list.') - units: 'Btu/hr or Frac') + display_name: 'HVAC Detailed Performance Data: Cooling Minimum Speed Capacities', + description: 'Minimum speed capacities of cooling detailed performance data if available. Applies only to variable-speed air-source HVAC systems (central air conditioners, mini-split air conditioners, air-to-air heat pumps, and mini-split heat pumps). At least two performance data points are required using a comma-separated list.', + units: 'Btu/hr or Frac' + ) args << makeArgument( type: Argument::String, name: 'hvac_perf_data_cooling_max_speed_capacities', required: false, - display_name: 'HVAC Detailed Performance Data: Cooling Maximum Speed Capacities') - description: 'Maximum speed capacities of cooling detailed performance data if available. Applies only to variable-speed air-source HVAC systems (central air conditioners, mini-split air conditioners, air-to-air heat pumps, and mini-split heat pumps). At least two performance data points are required using a comma-separated list.') - units: 'Btu/hr or Frac') + display_name: 'HVAC Detailed Performance Data: Cooling Maximum Speed Capacities', + description: 'Maximum speed capacities of cooling detailed performance data if available. Applies only to variable-speed air-source HVAC systems (central air conditioners, mini-split air conditioners, air-to-air heat pumps, and mini-split heat pumps). At least two performance data points are required using a comma-separated list.', + units: 'Btu/hr or Frac' + ) args << makeArgument( type: Argument::String, name: 'hvac_perf_data_cooling_min_speed_cops', required: false, - display_name: 'HVAC Detailed Performance Data: Cooling Minimum Speed COPs') - description: 'Minimum speed efficiency COP values of cooling detailed performance data if available. Applies only to variable-speed air-source HVAC systems (central air conditioners, mini-split air conditioners, air-to-air heat pumps, and mini-split heat pumps). At least two performance data points are required using a comma-separated list.') - units: 'W/W') + display_name: 'HVAC Detailed Performance Data: Cooling Minimum Speed COPs', + description: 'Minimum speed efficiency COP values of cooling detailed performance data if available. Applies only to variable-speed air-source HVAC systems (central air conditioners, mini-split air conditioners, air-to-air heat pumps, and mini-split heat pumps). At least two performance data points are required using a comma-separated list.', + units: 'W/W' + ) args << makeArgument( type: Argument::String, name: 'hvac_perf_data_cooling_max_speed_cops', required: false, - display_name: 'HVAC Detailed Performance Data: Cooling Maximum Speed COPs') - description: 'Maximum speed efficiency COP values of cooling detailed performance data if available. Applies only to variable-speed air-source HVAC systems (central air conditioners, mini-split air conditioners, air-to-air heat pumps, and mini-split heat pumps). At least two performance data points are required using a comma-separated list.') - units: 'W/W') + display_name: 'HVAC Detailed Performance Data: Cooling Maximum Speed COPs', + description: 'Maximum speed efficiency COP values of cooling detailed performance data if available. Applies only to variable-speed air-source HVAC systems (central air conditioners, mini-split air conditioners, air-to-air heat pumps, and mini-split heat pumps). At least two performance data points are required using a comma-separated list.', + units: 'W/W' + ) geothermal_loop_configuration_choices = OpenStudio::StringVector.new geothermal_loop_configuration_choices << Constants::None @@ -2239,9 +2320,11 @@ def makeArgument(name:, type: Argument::Choice, name: 'geothermal_loop_configuration', choices: geothermal_loop_configuration_choices, - required: false) - display_name: 'Geothermal Loop: Configuration') - description: "Configuration of the geothermal loop. Only applies to #{HPXML::HVACTypeHeatPumpGroundToAir} heat pump type. If not provided, the OS-HPXML default (see Ground-to-Air Heat Pump) is used.") + required: false, + display_name: 'Geothermal Loop: Configuration', + description: "Configuration of the geothermal loop. Only applies to #{HPXML::HVACTypeHeatPumpGroundToAir} heat pump type.", + default_href: "Ground-to-Air Heat Pump" + ) geothermal_loop_borefield_configuration_choices = OpenStudio::StringVector.new valid_bore_configs = HVACSizing.get_geothermal_loop_valid_configurations @@ -2253,49 +2336,61 @@ def makeArgument(name:, type: Argument::Choice, name: 'geothermal_loop_borefield_configuration', choices: geothermal_loop_borefield_configuration_choices, - required: false) - display_name: 'Geothermal Loop: Borefield Configuration') - description: "Borefield configuration of the geothermal loop. Only applies to #{HPXML::HVACTypeHeatPumpGroundToAir} heat pump type. If not provided, the OS-HPXML default (see HPXML Geothermal Loops) is used.") + required: false, + display_name: 'Geothermal Loop: Borefield Configuration', + description: "Borefield configuration of the geothermal loop. Only applies to #{HPXML::HVACTypeHeatPumpGroundToAir} heat pump type.", + default_href: "HPXML Geothermal Loops" + ) args << makeArgument( type: Argument::Double, name: 'geothermal_loop_loop_flow', required: false, - display_name: 'Geothermal Loop: Loop Flow') - description: "Water flow rate through the geothermal loop. Only applies to #{HPXML::HVACTypeHeatPumpGroundToAir} heat pump type. If not provided, the OS-HPXML autosized default (see HPXML Geothermal Loops) is used.") - units: 'gpm') + display_name: 'Geothermal Loop: Loop Flow', + description: "Water flow rate through the geothermal loop. Only applies to #{HPXML::HVACTypeHeatPumpGroundToAir} heat pump type.", + default_href: "HPXML Geothermal Loops", + units: 'gpm' + ) args << makeArgument( type: Argument::Integer, name: 'geothermal_loop_boreholes_count', required: false, - display_name: 'Geothermal Loop: Boreholes Count') - description: "Number of boreholes. Only applies to #{HPXML::HVACTypeHeatPumpGroundToAir} heat pump type. If not provided, the OS-HPXML autosized default (see HPXML Geothermal Loops) is used.") - units: '#') + display_name: 'Geothermal Loop: Boreholes Count', + description: "Number of boreholes. Only applies to #{HPXML::HVACTypeHeatPumpGroundToAir} heat pump type.", + default_href: "HPXML Geothermal Loops", + units: '#' + ) args << makeArgument( type: Argument::Double, name: 'geothermal_loop_boreholes_length', required: false, - display_name: 'Geothermal Loop: Boreholes Length') - description: "Average length of each borehole (vertical). Only applies to #{HPXML::HVACTypeHeatPumpGroundToAir} heat pump type. If not provided, the OS-HPXML autosized default (see HPXML Geothermal Loops) is used.") - units: 'ft') + display_name: 'Geothermal Loop: Boreholes Length', + description: "Average length of each borehole (vertical). Only applies to #{HPXML::HVACTypeHeatPumpGroundToAir} heat pump type.", + default_href: "HPXML Geothermal Loops", + units: 'ft' + ) args << makeArgument( type: Argument::Double, name: 'geothermal_loop_boreholes_spacing', required: false, - display_name: 'Geothermal Loop: Boreholes Spacing') - description: "Distance between bores. Only applies to #{HPXML::HVACTypeHeatPumpGroundToAir} heat pump type. If not provided, the OS-HPXML default (see HPXML Geothermal Loops) is used.") - units: 'ft') + display_name: 'Geothermal Loop: Boreholes Spacing', + description: "Distance between bores. Only applies to #{HPXML::HVACTypeHeatPumpGroundToAir} heat pump type.", + default_href: "HPXML Geothermal Loops", + units: 'ft' + ) args << makeArgument( type: Argument::Double, name: 'geothermal_loop_boreholes_diameter', required: false, - display_name: 'Geothermal Loop: Boreholes Diameter') - description: "Diameter of bores. Only applies to #{HPXML::HVACTypeHeatPumpGroundToAir} heat pump type. If not provided, the OS-HPXML default (see HPXML Geothermal Loops) is used.") - units: 'in') + display_name: 'Geothermal Loop: Boreholes Diameter', + description: "Diameter of bores. Only applies to #{HPXML::HVACTypeHeatPumpGroundToAir} heat pump type.", + default_href: "HPXML Geothermal Loops", + units: 'in' + ) geothermal_loop_grout_or_pipe_type_choices = OpenStudio::StringVector.new geothermal_loop_grout_or_pipe_type_choices << HPXML::GeothermalLoopGroutOrPipeTypeStandard @@ -2305,17 +2400,21 @@ def makeArgument(name:, type: Argument::Choice, name: 'geothermal_loop_grout_type', choices: geothermal_loop_grout_or_pipe_type_choices, - required: false) - display_name: 'Geothermal Loop: Grout Type') - description: "Grout type of the geothermal loop. Only applies to #{HPXML::HVACTypeHeatPumpGroundToAir} heat pump type. If not provided, the OS-HPXML default (see HPXML Geothermal Loops) is used.") + required: false, + display_name: 'Geothermal Loop: Grout Type', + description: "Grout type of the geothermal loop. Only applies to #{HPXML::HVACTypeHeatPumpGroundToAir} heat pump type.", + default_href: "HPXML Geothermal Loops" + ) args << makeArgument( type: Argument::Choice, name: 'geothermal_loop_pipe_type', choices: geothermal_loop_grout_or_pipe_type_choices, - required: false) - display_name: 'Geothermal Loop: Pipe Type') - description: "Pipe type of the geothermal loop. Only applies to #{HPXML::HVACTypeHeatPumpGroundToAir} heat pump type. If not provided, the OS-HPXML default (see HPXML Geothermal Loops) is used.") + required: false, + display_name: 'Geothermal Loop: Pipe Type', + description: "Pipe type of the geothermal loop. Only applies to #{HPXML::HVACTypeHeatPumpGroundToAir} heat pump type.", + default_href: "HPXML Geothermal Loops" + ) geothermal_loop_pipe_diameter_choices = OpenStudio::StringVector.new geothermal_loop_pipe_diameter_choices << '3/4" pipe' @@ -2326,10 +2425,12 @@ def makeArgument(name:, type: Argument::Choice, name: 'geothermal_loop_pipe_diameter', choices: geothermal_loop_pipe_diameter_choices, - required: false) - display_name: 'Geothermal Loop: Pipe Diameter') - description: "Pipe diameter of the geothermal loop. Only applies to #{HPXML::HVACTypeHeatPumpGroundToAir} heat pump type. If not provided, the OS-HPXML default (see HPXML Geothermal Loops) is used.") - units: 'in') + required: false, + display_name: 'Geothermal Loop: Pipe Diameter', + description: "Pipe diameter of the geothermal loop. Only applies to #{HPXML::HVACTypeHeatPumpGroundToAir} heat pump type.", + default_href: "HPXML Geothermal Loops", + units: 'in' + ) heating_system_2_type_choices = OpenStudio::StringVector.new heating_system_2_type_choices << Constants::None @@ -2346,110 +2447,128 @@ def makeArgument(name:, type: Argument::Choice, name: 'heating_system_2_type', choices: heating_system_2_type_choices, - required: false) - display_name: 'Heating System 2: Type') - description: "The type of the second heating system. If a heat pump is specified and the backup type is '#{HPXML::HeatPumpBackupTypeSeparate}', this heating system represents '#{HPXML::HeatPumpBackupTypeSeparate}' backup heating. For ducted heat pumps where the backup heating system is a '#{HPXML::HVACTypeFurnace}', the backup would typically be characterized as '#{HPXML::HeatPumpBackupTypeIntegrated}' in that the furnace and heat pump share the same distribution system and blower fan; a '#{HPXML::HVACTypeFurnace}' as '#{HPXML::HeatPumpBackupTypeSeparate}' backup to a ducted heat pump is not supported. If not provided, defaults to none.") + required: false, + display_name: 'Heating System 2: Type', + description: "The type of the second heating system. If a heat pump is specified and the backup type is '#{HPXML::HeatPumpBackupTypeSeparate}', this heating system represents '#{HPXML::HeatPumpBackupTypeSeparate}' backup heating. For ducted heat pumps where the backup heating system is a '#{HPXML::HVACTypeFurnace}', the backup would typically be characterized as '#{HPXML::HeatPumpBackupTypeIntegrated}' in that the furnace and heat pump share the same distribution system and blower fan; a '#{HPXML::HVACTypeFurnace}' as '#{HPXML::HeatPumpBackupTypeSeparate}' backup to a ducted heat pump is not supported. If not provided, defaults to none." + ) args << makeArgument( type: Argument::Choice, name: 'heating_system_2_fuel', choices: heating_system_fuel_choices, - required: false) - display_name: 'Heating System 2: Fuel Type') - description: "The fuel type of the second heating system. Ignored for #{HPXML::HVACTypeElectricResistance}.") + required: false, + display_name: 'Heating System 2: Fuel Type', + description: "The fuel type of the second heating system. Ignored for #{HPXML::HVACTypeElectricResistance}." + ) args << makeArgument( type: Argument::Double, name: 'heating_system_2_heating_efficiency', required: false, - display_name: 'Heating System 2: Rated AFUE or Percent') - units: 'Frac') - description: 'The rated heating efficiency value of the second heating system.') + display_name: 'Heating System 2: Rated AFUE or Percent', + units: 'Frac', + description: 'The rated heating efficiency value of the second heating system.' + ) args << makeArgument( type: Argument::Double, name: 'heating_system_2_heating_capacity', required: false, - display_name: 'Heating System 2: Heating Capacity') - description: "The output heating capacity of the second heating system. If not provided, the OS-HPXML autosized default (see HPXML Heating Systems) is used.") - units: 'Btu/hr') + display_name: 'Heating System 2: Heating Capacity', + description: "The output heating capacity of the second heating system.", + default_href: "HPXML Heating Systems", + units: 'Btu/hr' + ) args << makeArgument( type: Argument::Double, name: 'heating_system_2_heating_autosizing_factor', required: false, - display_name: 'Heating System 2: Heating Autosizing Factor') - description: 'The capacity scaling factor applied to the auto-sizing methodology. If not provided, 1.0 is used.') + display_name: 'Heating System 2: Heating Autosizing Factor', + description: 'The capacity scaling factor applied to the auto-sizing methodology. If not provided, 1.0 is used.' + ) args << makeArgument( type: Argument::Double, name: 'heating_system_2_heating_autosizing_limit', required: false, - display_name: 'Heating System 2: Heating Autosizing Limit') - description: 'The maximum capacity limit applied to the auto-sizing methodology. If not provided, no limit is used.') - units: 'Btu/hr') + display_name: 'Heating System 2: Heating Autosizing Limit', + description: 'The maximum capacity limit applied to the auto-sizing methodology. If not provided, no limit is used.', + units: 'Btu/hr' + ) args << makeArgument( type: Argument::Double, name: 'heating_system_2_fraction_heat_load_served', required: false, - display_name: 'Heating System 2: Fraction Heat Load Served') - description: 'The heat load served fraction of the second heating system. Ignored if this heating system serves as a backup system for a heat pump.') - units: 'Frac') + display_name: 'Heating System 2: Fraction Heat Load Served', + description: 'The heat load served fraction of the second heating system. Ignored if this heating system serves as a backup system for a heat pump.', + units: 'Frac' + ) args << makeArgument( type: Argument::String, name: 'hvac_control_heating_weekday_setpoint', required: false, - display_name: 'HVAC Control: Heating Weekday Setpoint Schedule') - description: 'Specify the constant or 24-hour comma-separated weekday heating setpoint schedule. Required unless a detailed CSV schedule is provided.') - units: 'F') + display_name: 'HVAC Control: Heating Weekday Setpoint Schedule', + description: 'Specify the constant or 24-hour comma-separated weekday heating setpoint schedule. Required unless a detailed CSV schedule is provided.', + units: 'F' + ) args << makeArgument( type: Argument::String, name: 'hvac_control_heating_weekend_setpoint', required: false, - display_name: 'HVAC Control: Heating Weekend Setpoint Schedule') - description: 'Specify the constant or 24-hour comma-separated weekend heating setpoint schedule. Required unless a detailed CSV schedule is provided.') - units: 'F') + display_name: 'HVAC Control: Heating Weekend Setpoint Schedule', + description: 'Specify the constant or 24-hour comma-separated weekend heating setpoint schedule. Required unless a detailed CSV schedule is provided.', + units: 'F' + ) args << makeArgument( type: Argument::String, name: 'hvac_control_cooling_weekday_setpoint', required: false, - display_name: 'HVAC Control: Cooling Weekday Setpoint Schedule') - description: 'Specify the constant or 24-hour comma-separated weekday cooling setpoint schedule. Required unless a detailed CSV schedule is provided.') - units: 'F') + display_name: 'HVAC Control: Cooling Weekday Setpoint Schedule', + description: 'Specify the constant or 24-hour comma-separated weekday cooling setpoint schedule. Required unless a detailed CSV schedule is provided.', + units: 'F' + ) args << makeArgument( type: Argument::String, name: 'hvac_control_cooling_weekend_setpoint', required: false, - display_name: 'HVAC Control: Cooling Weekend Setpoint Schedule') - description: 'Specify the constant or 24-hour comma-separated weekend cooling setpoint schedule. Required unless a detailed CSV schedule is provided.') - units: 'F') + display_name: 'HVAC Control: Cooling Weekend Setpoint Schedule', + description: 'Specify the constant or 24-hour comma-separated weekend cooling setpoint schedule. Required unless a detailed CSV schedule is provided.', + units: 'F' + ) args << makeArgument( type: Argument::String, name: 'hvac_control_heating_season_period', required: false, - display_name: 'HVAC Control: Heating Season Period') - description: "Enter a date range like 'Nov 1 - Jun 30'. If not provided, the OS-HPXML default (see HPXML HVAC Control) is used. Can also provide '#{Constants::BuildingAmerica}' to use automatic seasons from the Building America House Simulation Protocols.") + display_name: 'HVAC Control: Heating Season Period', + description: "Enter a date range like 'Nov 1 - Jun 30'. Can also provide '#{Constants::BuildingAmerica}' to use automatic seasons from the Building America House Simulation Protocols.", + default_href: "HPXML HVAC Control" + ) args << makeArgument( type: Argument::String, name: 'hvac_control_cooling_season_period', required: false, - display_name: 'HVAC Control: Cooling Season Period') - description: "Enter a date range like 'Jun 1 - Oct 31'. If not provided, the OS-HPXML default (see HPXML HVAC Control) is used. Can also provide '#{Constants::BuildingAmerica}' to use automatic seasons from the Building America House Simulation Protocols.") + display_name: 'HVAC Control: Cooling Season Period', + description: "Enter a date range like 'Jun 1 - Oct 31'. Can also provide '#{Constants::BuildingAmerica}' to use automatic seasons from the Building America House Simulation Protocols.", + default_href: "HPXML HVAC Control" + ) args << makeArgument( type: Argument::Double, name: 'hvac_blower_fan_watts_per_cfm', required: false, - display_name: 'HVAC Blower: Fan Efficiency') - description: "The blower fan efficiency at maximum fan speed. Applies only to split (not packaged) systems (i.e., applies to ducted systems as well as ductless #{HPXML::HVACTypeHeatPumpMiniSplit} systems). If not provided, the OS-HPXML default (see HPXML Heating Systems, HPXML Cooling Systems, HPXML Heat Pumps) is used.") - units: 'W/CFM') + display_name: 'HVAC Blower: Fan Efficiency', + description: "The blower fan efficiency at maximum fan speed. Applies only to split (not packaged) systems (i.e., applies to ducted systems as well as ductless #{HPXML::HVACTypeHeatPumpMiniSplit} systems).", + default_href: "HPXML Heating Systems, HPXML Cooling Systems, HPXML Heat Pumps", + units: 'W/CFM' + ) duct_leakage_units_choices = OpenStudio::StringVector.new duct_leakage_units_choices << HPXML::UnitsCFM25 @@ -2482,32 +2601,37 @@ def makeArgument(name:, type: Argument::Choice, name: 'ducts_leakage_units', choices: duct_leakage_units_choices, - required: false) - display_name: 'Ducts: Leakage Units') - description: 'The leakage units of the ducts.') + required: false, + display_name: 'Ducts: Leakage Units', + description: 'The leakage units of the ducts.' + ) args << makeArgument( type: Argument::Double, name: 'ducts_supply_leakage_to_outside_value', required: false, - display_name: 'Ducts: Supply Leakage to Outside Value') - description: 'The leakage value to outside for the supply ducts.') + display_name: 'Ducts: Supply Leakage to Outside Value', + description: 'The leakage value to outside for the supply ducts.' + ) args << makeArgument( type: Argument::Choice, name: 'ducts_supply_location', choices: duct_location_choices, - required: false) - display_name: 'Ducts: Supply Location') - description: "The location of the supply ducts. If not provided, the OS-HPXML default (see Air Distribution) is used.") + required: false, + display_name: 'Ducts: Supply Location', + description: "The location of the supply ducts.", + default_href: "Air Distribution" + ) args << makeArgument( type: Argument::Double, name: 'ducts_supply_insulation_r', required: false, - display_name: 'Ducts: Supply Insulation R-Value') - description: 'The nominal insulation r-value of the supply ducts excluding air films. Use 0 for uninsulated ducts.') - units: 'h-ft^2-R/Btu') + display_name: 'Ducts: Supply Insulation R-Value', + description: 'The nominal insulation r-value of the supply ducts excluding air films. Use 0 for uninsulated ducts.', + units: 'h-ft^2-R/Btu' + ) duct_buried_level_choices = OpenStudio::StringVector.new duct_buried_level_choices << HPXML::DuctBuriedInsulationNone @@ -2519,96 +2643,118 @@ def makeArgument(name:, type: Argument::Choice, name: 'ducts_supply_buried_insulation_level', choices: duct_buried_level_choices, - required: false) - display_name: 'Ducts: Supply Buried Insulation Level') - description: "Whether the supply ducts are buried in, e.g., attic loose-fill insulation. Partially buried ducts have insulation that does not cover the top of the ducts. Fully buried ducts have insulation that just covers the top of the ducts. Deeply buried ducts have insulation that continues above the top of the ducts. If not provided, the OS-HPXML default (see Air Distribution) is used.") + required: false, + display_name: 'Ducts: Supply Buried Insulation Level', + description: "Whether the supply ducts are buried in, e.g., attic loose-fill insulation. Partially buried ducts have insulation that does not cover the top of the ducts. Fully buried ducts have insulation that just covers the top of the ducts. Deeply buried ducts have insulation that continues above the top of the ducts.", + default_href: "Air Distribution" + ) args << makeArgument( type: Argument::Double, name: 'ducts_supply_surface_area', required: false, - display_name: 'Ducts: Supply Surface Area') - description: "The supply ducts surface area in the given location. If neither Surface Area nor Area Fraction provided, the OS-HPXML default (see Air Distribution) is used.") - units: 'ft^2') + display_name: 'Ducts: Supply Surface Area', + description: "The supply ducts surface area in the given location.", + default_href: "Air Distribution", + units: 'ft^2' + ) args << makeArgument( type: Argument::Double, name: 'ducts_supply_surface_area_fraction', required: false, - display_name: 'Ducts: Supply Area Fraction') - description: "The fraction of supply ducts surface area in the given location. Only used if Surface Area is not provided. If the fraction is less than 1, the remaining duct area is assumed to be in conditioned space. If neither Surface Area nor Area Fraction provided, the OS-HPXML default (see Air Distribution) is used.") - units: 'frac') + display_name: 'Ducts: Supply Area Fraction', + description: "The fraction of supply ducts surface area in the given location. Only used if Surface Area is not provided. If the fraction is less than 1, the remaining duct area is assumed to be in conditioned space.", + default_href: "Air Distribution", + units: 'frac' + ) args << makeArgument( type: Argument::Double, name: 'ducts_supply_fraction_rectangular', required: false, - display_name: 'Ducts: Supply Fraction Rectangular') - description: "The fraction of supply ducts that are rectangular (as opposed to round); this affects the duct effective R-value used for modeling. If not provided, the OS-HPXML default (see Air Distribution) is used.") - units: 'frac') + display_name: 'Ducts: Supply Fraction Rectangular', + description: "The fraction of supply ducts that are rectangular (as opposed to round); this affects the duct effective R-value used for modeling.", + default_href: "Air Distribution", + units: 'frac' + ) args << makeArgument( type: Argument::Double, name: 'ducts_return_leakage_to_outside_value', required: false, - display_name: 'Ducts: Return Leakage to Outside Value') - description: 'The leakage value to outside for the return ducts.') + display_name: 'Ducts: Return Leakage to Outside Value', + description: 'The leakage value to outside for the return ducts.' + ) args << makeArgument( type: Argument::Choice, name: 'ducts_return_location', choices: duct_location_choices, - required: false) - display_name: 'Ducts: Return Location') - description: "The location of the return ducts. If not provided, the OS-HPXML default (see Air Distribution) is used.") + required: false, + display_name: 'Ducts: Return Location', + description: "The location of the return ducts.", + default_href: "Air Distribution" + ) args << makeArgument( type: Argument::Double, name: 'ducts_return_insulation_r', required: false, - display_name: 'Ducts: Return Insulation R-Value') - description: 'The nominal insulation r-value of the return ducts excluding air films. Use 0 for uninsulated ducts.') - units: 'h-ft^2-R/Btu') + display_name: 'Ducts: Return Insulation R-Value', + description: 'The nominal insulation r-value of the return ducts excluding air films. Use 0 for uninsulated ducts.', + units: 'h-ft^2-R/Btu' + ) args << makeArgument( type: Argument::Choice, name: 'ducts_return_buried_insulation_level', choices: duct_buried_level_choices, - required: false) - display_name: 'Ducts: Return Buried Insulation Level') - description: "Whether the return ducts are buried in, e.g., attic loose-fill insulation. Partially buried ducts have insulation that does not cover the top of the ducts. Fully buried ducts have insulation that just covers the top of the ducts. Deeply buried ducts have insulation that continues above the top of the ducts. If not provided, the OS-HPXML default (see Air Distribution) is used.") + required: false, + display_name: 'Ducts: Return Buried Insulation Level', + description: "Whether the return ducts are buried in, e.g., attic loose-fill insulation. Partially buried ducts have insulation that does not cover the top of the ducts. Fully buried ducts have insulation that just covers the top of the ducts. Deeply buried ducts have insulation that continues above the top of the ducts.", + default_href: "Air Distribution" + ) args << makeArgument( type: Argument::Double, name: 'ducts_return_surface_area', required: false, - display_name: 'Ducts: Return Surface Area') - description: "The return ducts surface area in the given location. If neither Surface Area nor Area Fraction provided, the OS-HPXML default (see Air Distribution) is used.") - units: 'ft^2') + display_name: 'Ducts: Return Surface Area', + description: "The return ducts surface area in the given location.", + default_href: "Air Distribution", + units: 'ft^2' + ) args << makeArgument( type: Argument::Double, name: 'ducts_return_surface_area_fraction', required: false, - display_name: 'Ducts: Return Area Fraction') - description: "The fraction of return ducts surface area in the given location. Only used if Surface Area is not provided. If the fraction is less than 1, the remaining duct area is assumed to be in conditioned space. If neither Surface Area nor Area Fraction provided, the OS-HPXML default (see Air Distribution) is used.") - units: 'frac') + display_name: 'Ducts: Return Area Fraction', + description: "The fraction of return ducts surface area in the given location. Only used if Surface Area is not provided. If the fraction is less than 1, the remaining duct area is assumed to be in conditioned space.", + default_href: "Air Distribution", + units: 'frac' + ) args << makeArgument( type: Argument::Integer, name: 'ducts_number_of_return_registers', required: false, - display_name: 'Ducts: Number of Return Registers') - description: "The number of return registers of the ducts. Only used to calculate default return duct surface area. If not provided, the OS-HPXML default (see Air Distribution) is used.") - units: '#') + display_name: 'Ducts: Number of Return Registers', + description: "The number of return registers of the ducts. Only used to calculate default return duct surface area.", + default_href: "Air Distribution", + units: '#' + ) args << makeArgument( type: Argument::Double, name: 'ducts_return_fraction_rectangular', required: false, - display_name: 'Ducts: Return Fraction Rectangular') - description: "The fraction of return ducts that are rectangular (as opposed to round); this affects the duct effective R-value used for modeling. If not provided, the OS-HPXML default (see Air Distribution) is used.") - units: 'frac') + display_name: 'Ducts: Return Fraction Rectangular', + description: "The fraction of return ducts that are rectangular (as opposed to round); this affects the duct effective R-value used for modeling.", + default_href: "Air Distribution", + units: 'frac' + ) mech_vent_fan_type_choices = OpenStudio::StringVector.new mech_vent_fan_type_choices << Constants::None @@ -2627,97 +2773,112 @@ def makeArgument(name:, type: Argument::Choice, name: 'mech_vent_fan_type', choices: mech_vent_fan_type_choices, - required: false) - display_name: 'Mechanical Ventilation: Fan Type') - description: "The type of the mechanical ventilation. Use '#{Constants::None}' if there is no mechanical ventilation system. If not provided, defaults to none.") + required: false, + display_name: 'Mechanical Ventilation: Fan Type', + description: "The type of the mechanical ventilation. Use '#{Constants::None}' if there is no mechanical ventilation system. If not provided, defaults to none." + ) args << makeArgument( type: Argument::Double, name: 'mech_vent_flow_rate', required: false, - display_name: 'Mechanical Ventilation: Flow Rate') - description: "The flow rate of the mechanical ventilation. If not provided, the OS-HPXML default (see HPXML Mechanical Ventilation Fans) is used.") - units: 'CFM') + display_name: 'Mechanical Ventilation: Flow Rate', + description: "The flow rate of the mechanical ventilation.", + default_href: "HPXML Mechanical Ventilation Fans", + units: 'CFM' + ) args << makeArgument( type: Argument::Double, name: 'mech_vent_hours_in_operation', required: false, - display_name: 'Mechanical Ventilation: Hours In Operation') - description: "The hours in operation of the mechanical ventilation. If not provided, the OS-HPXML default (see HPXML Mechanical Ventilation Fans) is used.") - units: 'hrs/day') + display_name: 'Mechanical Ventilation: Hours In Operation', + description: "The hours in operation of the mechanical ventilation.", + default_href: "HPXML Mechanical Ventilation Fans", + units: 'hrs/day' + ) args << makeArgument( type: Argument::Choice, name: 'mech_vent_recovery_efficiency_type', choices: mech_vent_recovery_efficiency_type_choices, - required: false) - display_name: 'Mechanical Ventilation: Total Recovery Efficiency Type') - description: 'The total recovery efficiency type of the mechanical ventilation.') + required: false, + display_name: 'Mechanical Ventilation: Total Recovery Efficiency Type', + description: 'The total recovery efficiency type of the mechanical ventilation.' + ) args << makeArgument( type: Argument::Double, name: 'mech_vent_total_recovery_efficiency', required: false, - display_name: 'Mechanical Ventilation: Total Recovery Efficiency') - description: "The Unadjusted or Adjusted total recovery efficiency of the mechanical ventilation. Applies to #{HPXML::MechVentTypeERV}.") - units: 'Frac') + display_name: 'Mechanical Ventilation: Total Recovery Efficiency', + description: "The Unadjusted or Adjusted total recovery efficiency of the mechanical ventilation. Applies to #{HPXML::MechVentTypeERV}.", + units: 'Frac' + ) args << makeArgument( type: Argument::Double, name: 'mech_vent_sensible_recovery_efficiency', required: false, - display_name: 'Mechanical Ventilation: Sensible Recovery Efficiency') - description: "The Unadjusted or Adjusted sensible recovery efficiency of the mechanical ventilation. Applies to #{HPXML::MechVentTypeERV} and #{HPXML::MechVentTypeHRV}.") - units: 'Frac') + display_name: 'Mechanical Ventilation: Sensible Recovery Efficiency', + description: "The Unadjusted or Adjusted sensible recovery efficiency of the mechanical ventilation. Applies to #{HPXML::MechVentTypeERV} and #{HPXML::MechVentTypeHRV}.", + units: 'Frac' + ) args << makeArgument( type: Argument::Double, name: 'mech_vent_fan_power' required: false, - display_name: 'Mechanical Ventilation: Fan Power') - description: "The fan power of the mechanical ventilation. If not provided, the OS-HPXML default (see HPXML Mechanical Ventilation Fans) is used.") - units: 'W') + display_name: 'Mechanical Ventilation: Fan Power', + description: "The fan power of the mechanical ventilation.", + default_href: "HPXML Mechanical Ventilation Fans", + units: 'W' + ) args << makeArgument( type: Argument::Integer, name: 'mech_vent_num_units_served', required: false, - display_name: 'Mechanical Ventilation: Number of Units Served') - description: "Number of dwelling units served by the mechanical ventilation system. Must be 1 if #{HPXML::ResidentialTypeSFD}. Used to apportion flow rate and fan power to the unit.") - units: '#') + display_name: 'Mechanical Ventilation: Number of Units Served', + description: "Number of dwelling units served by the mechanical ventilation system. Must be 1 if #{HPXML::ResidentialTypeSFD}. Used to apportion flow rate and fan power to the unit.", + units: '#' + ) args << makeArgument( type: Argument::Double, name: 'mech_vent_shared_frac_recirculation', required: false, - display_name: 'Shared Mechanical Ventilation: Fraction Recirculation') - description: 'Fraction of the total supply air that is recirculated, with the remainder assumed to be outdoor air. The value must be 0 for exhaust only systems. Required for a shared mechanical ventilation system.') - units: 'Frac') + display_name: 'Shared Mechanical Ventilation: Fraction Recirculation', + description: 'Fraction of the total supply air that is recirculated, with the remainder assumed to be outdoor air. The value must be 0 for exhaust only systems. Required for a shared mechanical ventilation system.', + units: 'Frac' + ) args << makeArgument( type: Argument::Choice, name: 'mech_vent_shared_preheating_fuel', choices: heating_system_fuel_choices, - required: false) - display_name: 'Shared Mechanical Ventilation: Preheating Fuel') - description: 'Fuel type of the preconditioning heating equipment. Only used for a shared mechanical ventilation system. If not provided, assumes no preheating.') + required: false, + display_name: 'Shared Mechanical Ventilation: Preheating Fuel', + description: 'Fuel type of the preconditioning heating equipment. Only used for a shared mechanical ventilation system. If not provided, assumes no preheating.' + ) args << makeArgument( type: Argument::Double, name: 'mech_vent_shared_preheating_efficiency', required: false, - display_name: 'Shared Mechanical Ventilation: Preheating Efficiency') - description: 'Efficiency of the preconditioning heating equipment. Only used for a shared mechanical ventilation system. If not provided, assumes no preheating.') - units: 'COP') + display_name: 'Shared Mechanical Ventilation: Preheating Efficiency', + description: 'Efficiency of the preconditioning heating equipment. Only used for a shared mechanical ventilation system. If not provided, assumes no preheating.', + units: 'COP' + ) args << makeArgument( type: Argument::Double, name: 'mech_vent_shared_preheating_fraction_heat_load_served', required: false, - display_name: 'Shared Mechanical Ventilation: Preheating Fraction Ventilation Heat Load Served') - description: 'Fraction of heating load introduced by the shared ventilation system that is met by the preconditioning heating equipment. If not provided, assumes no preheating.') - units: 'Frac') + display_name: 'Shared Mechanical Ventilation: Preheating Fraction Ventilation Heat Load Served', + description: 'Fraction of heating load introduced by the shared ventilation system that is met by the preconditioning heating equipment. If not provided, assumes no preheating.', + units: 'Frac' + ) cooling_system_fuel_choices = OpenStudio::StringVector.new cooling_system_fuel_choices << HPXML::FuelTypeElectricity @@ -2726,25 +2887,28 @@ def makeArgument(name:, type: Argument::Choice, name: 'mech_vent_shared_precooling_fuel', choices: cooling_system_fuel_choices, - required: false) - display_name: 'Shared Mechanical Ventilation: Precooling Fuel') - description: 'Fuel type of the preconditioning cooling equipment. Only used for a shared mechanical ventilation system. If not provided, assumes no precooling.') + required: false, + display_name: 'Shared Mechanical Ventilation: Precooling Fuel', + description: 'Fuel type of the preconditioning cooling equipment. Only used for a shared mechanical ventilation system. If not provided, assumes no precooling.' + ) args << makeArgument( type: Argument::Double, name: 'mech_vent_shared_precooling_efficiency', required: false, - display_name: 'Shared Mechanical Ventilation: Precooling Efficiency') - description: 'Efficiency of the preconditioning cooling equipment. Only used for a shared mechanical ventilation system. If not provided, assumes no precooling.') - units: 'COP') + display_name: 'Shared Mechanical Ventilation: Precooling Efficiency', + description: 'Efficiency of the preconditioning cooling equipment. Only used for a shared mechanical ventilation system. If not provided, assumes no precooling.', + units: 'COP' + ) args << makeArgument( type: Argument::Double, name: 'mech_vent_shared_precooling_fraction_cool_load_served', required: false, - display_name: 'Shared Mechanical Ventilation: Precooling Fraction Ventilation Cool Load Served') - description: 'Fraction of cooling load introduced by the shared ventilation system that is met by the preconditioning cooling equipment. If not provided, assumes no precooling.') - units: 'Frac') + display_name: 'Shared Mechanical Ventilation: Precooling Fraction Ventilation Cool Load Served', + description: 'Fraction of cooling load introduced by the shared ventilation system that is met by the preconditioning cooling equipment. If not provided, assumes no precooling.', + units: 'Frac' + ) mech_vent_2_fan_type_choices = OpenStudio::StringVector.new mech_vent_2_fan_type_choices << Constants::None @@ -2758,160 +2922,192 @@ def makeArgument(name:, type: Argument::Choice, name: 'mech_vent_2_fan_type', choices: mech_vent_2_fan_type_choices, - required: false) - display_name: 'Mechanical Ventilation 2: Fan Type') - description: "The type of the second mechanical ventilation. Use '#{Constants::None}' if there is no second mechanical ventilation system. If not provided, defaults to none.") + required: false, + display_name: 'Mechanical Ventilation 2: Fan Type', + description: "The type of the second mechanical ventilation. Use '#{Constants::None}' if there is no second mechanical ventilation system. If not provided, defaults to none." + ) args << makeArgument( type: Argument::Double, name: 'mech_vent_2_flow_rate', required: false, - display_name: 'Mechanical Ventilation 2: Flow Rate') - description: 'The flow rate of the second mechanical ventilation.') - units: 'CFM') + display_name: 'Mechanical Ventilation 2: Flow Rate', + description: 'The flow rate of the second mechanical ventilation.', + units: 'CFM' + ) args << makeArgument( type: Argument::Double, name: 'mech_vent_2_hours_in_operation', required: false, - display_name: 'Mechanical Ventilation 2: Hours In Operation') - description: 'The hours in operation of the second mechanical ventilation.') - units: 'hrs/day') + display_name: 'Mechanical Ventilation 2: Hours In Operation', + description: 'The hours in operation of the second mechanical ventilation.', + units: 'hrs/day' + ) args << makeArgument( type: Argument::Choice, name: 'mech_vent_2_recovery_efficiency_type', choices: mech_vent_recovery_efficiency_type_choices, - required: false) - display_name: 'Mechanical Ventilation 2: Total Recovery Efficiency Type') - description: 'The total recovery efficiency type of the second mechanical ventilation.') + required: false, + display_name: 'Mechanical Ventilation 2: Total Recovery Efficiency Type', + description: 'The total recovery efficiency type of the second mechanical ventilation.' + ) args << makeArgument( type: Argument::Double, name: 'mech_vent_2_total_recovery_efficiency', required: false, - display_name: 'Mechanical Ventilation 2: Total Recovery Efficiency') - description: "The Unadjusted or Adjusted total recovery efficiency of the second mechanical ventilation. Applies to #{HPXML::MechVentTypeERV}.") - units: 'Frac') + display_name: 'Mechanical Ventilation 2: Total Recovery Efficiency', + description: "The Unadjusted or Adjusted total recovery efficiency of the second mechanical ventilation. Applies to #{HPXML::MechVentTypeERV}.", + units: 'Frac' + ) args << makeArgument( type: Argument::Double, name: 'mech_vent_2_sensible_recovery_efficiency', required: false, - display_name: 'Mechanical Ventilation 2: Sensible Recovery Efficiency') - description: "The Unadjusted or Adjusted sensible recovery efficiency of the second mechanical ventilation. Applies to #{HPXML::MechVentTypeERV} and #{HPXML::MechVentTypeHRV}.") - units: 'Frac') + display_name: 'Mechanical Ventilation 2: Sensible Recovery Efficiency', + description: "The Unadjusted or Adjusted sensible recovery efficiency of the second mechanical ventilation. Applies to #{HPXML::MechVentTypeERV} and #{HPXML::MechVentTypeHRV}.", + units: 'Frac' + ) args << makeArgument( type: Argument::Double, name: 'mech_vent_2_fan_power', required: false, - display_name: 'Mechanical Ventilation 2: Fan Power') - description: 'The fan power of the second mechanical ventilation.') - units: 'W') + display_name: 'Mechanical Ventilation 2: Fan Power', + description: 'The fan power of the second mechanical ventilation.', + units: 'W' + ) args << makeArgument( type: Argument::Integer, name: 'kitchen_fans_quantity', required: false, - display_name: 'Kitchen Fans: Quantity') - description: "The quantity of the kitchen fans. If not provided, the OS-HPXML default (see HPXML Local Ventilation Fans) is used.") - units: '#') + display_name: 'Kitchen Fans: Quantity', + description: "The quantity of the kitchen fans.", + default_href: "HPXML Local Ventilation Fans", + units: '#' + ) args << makeArgument( type: Argument::Double, name: 'kitchen_fans_flow_rate', required: false, - display_name: 'Kitchen Fans: Flow Rate') - description: "The flow rate of the kitchen fan. If not provided, the OS-HPXML default (see HPXML Local Ventilation Fans) is used.") - units: 'CFM') + display_name: 'Kitchen Fans: Flow Rate', + description: "The flow rate of the kitchen fan.", + default_href: "HPXML Local Ventilation Fans", + units: 'CFM' + ) args << makeArgument( type: Argument::Double, name: 'kitchen_fans_hours_in_operation', required: false, - display_name: 'Kitchen Fans: Hours In Operation') - description: "The hours in operation of the kitchen fan. If not provided, the OS-HPXML default (see HPXML Local Ventilation Fans) is used.") - units: 'hrs/day') + display_name: 'Kitchen Fans: Hours In Operation', + description: "The hours in operation of the kitchen fan.", + default_href: "HPXML Local Ventilation Fans", + units: 'hrs/day' + ) args << makeArgument( type: Argument::Double, name: 'kitchen_fans_power', required: false, - display_name: 'Kitchen Fans: Fan Power') - description: "The fan power of the kitchen fan. If not provided, the OS-HPXML default (see HPXML Local Ventilation Fans) is used.") - units: 'W') + display_name: 'Kitchen Fans: Fan Power', + description: "The fan power of the kitchen fan.", + default_href: "HPXML Local Ventilation Fans", + units: 'W' + ) args << makeArgument( type: Argument::Integer, name: 'kitchen_fans_start_hour', required: false, - display_name: 'Kitchen Fans: Start Hour') - description: "The start hour of the kitchen fan. If not provided, the OS-HPXML default (see HPXML Local Ventilation Fans) is used.") - units: 'hr') + display_name: 'Kitchen Fans: Start Hour', + description: "The start hour of the kitchen fan.", + default_href: "HPXML Local Ventilation Fans", + units: 'hr' + ) args << makeArgument( type: Argument::Integer, name: 'bathroom_fans_quantity', required: false, - display_name: 'Bathroom Fans: Quantity') - description: "The quantity of the bathroom fans. If not provided, the OS-HPXML default (see HPXML Local Ventilation Fans) is used.") - units: '#') + display_name: 'Bathroom Fans: Quantity', + description: "The quantity of the bathroom fans.", + default_href: "HPXML Local Ventilation Fans", + units: '#' + ) args << makeArgument( type: Argument::Double, name: 'bathroom_fans_flow_rate', required: false, - display_name: 'Bathroom Fans: Flow Rate') - description: "The flow rate of the bathroom fans. If not provided, the OS-HPXML default (see HPXML Local Ventilation Fans) is used.") - units: 'CFM') + display_name: 'Bathroom Fans: Flow Rate', + description: "The flow rate of the bathroom fans.", + default_href: "HPXML Local Ventilation Fans", + units: 'CFM' + ) args << makeArgument( type: Argument::Double, name: 'bathroom_fans_hours_in_operation', required: false, - display_name: 'Bathroom Fans: Hours In Operation') - description: "The hours in operation of the bathroom fans. If not provided, the OS-HPXML default (see HPXML Local Ventilation Fans) is used.") - units: 'hrs/day') + display_name: 'Bathroom Fans: Hours In Operation', + description: "The hours in operation of the bathroom fans.", + default_href: "HPXML Local Ventilation Fans", + units: 'hrs/day' + ) args << makeArgument( type: Argument::Double, name: 'bathroom_fans_power', required: false, - display_name: 'Bathroom Fans: Fan Power') - description: "The fan power of the bathroom fans. If not provided, the OS-HPXML default (see HPXML Local Ventilation Fans) is used.") - units: 'W') + display_name: 'Bathroom Fans: Fan Power', + description: "The fan power of the bathroom fans.", + default_href: "HPXML Local Ventilation Fans", + units: 'W' + ) args << makeArgument( type: Argument::Integer, name: 'bathroom_fans_start_hour', required: false, - display_name: 'Bathroom Fans: Start Hour') - description: "The start hour of the bathroom fans. If not provided, the OS-HPXML default (see HPXML Local Ventilation Fans) is used.") - units: 'hr') + display_name: 'Bathroom Fans: Start Hour', + description: "The start hour of the bathroom fans.", + default_href: "HPXML Local Ventilation Fans", + units: 'hr' + ) args << makeArgument( name: 'whole_house_fan_present', type: Argument::Boolean, required: false, - display_name: 'Whole House Fan: Present') - description: 'Whether there is a whole house fan.') + display_name: 'Whole House Fan: Present', + description: 'Whether there is a whole house fan.' + ) args << makeArgument( type: Argument::Double, name: 'whole_house_fan_flow_rate' required: false, - display_name: 'Whole House Fan: Flow Rate') - description: "The flow rate of the whole house fan. If not provided, the OS-HPXML default (see HPXML Whole House Fans) is used.") - units: 'CFM') + display_name: 'Whole House Fan: Flow Rate', + description: "The flow rate of the whole house fan.", + default_href: "HPXML Whole House Fans", + units: 'CFM' + ) args << makeArgument( type: Argument::Double, name: 'whole_house_fan_power' required: false, - display_name: 'Whole House Fan: Fan Power') - description: "The fan power of the whole house fan. If not provided, the OS-HPXML default (see HPXML Whole House Fans) is used.") - units: 'W') + display_name: 'Whole House Fan: Fan Power', + description: "The fan power of the whole house fan.", + default_href: "HPXML Whole House Fans", + units: 'W' + ) water_heater_type_choices = OpenStudio::StringVector.new water_heater_type_choices << Constants::None @@ -2961,41 +3157,48 @@ def makeArgument(name:, type: Argument::Choice, name: 'water_heater_type', choices: water_heater_type_choices, - required: true) - display_name: 'Water Heater: Type') - description: "The type of water heater. Use '#{Constants::None}' if there is no water heater.") + required: true, + display_name: 'Water Heater: Type', + description: "The type of water heater. Use '#{Constants::None}' if there is no water heater." + ) args << makeArgument( type: Argument::Choice, name: 'water_heater_fuel_type', choices: water_heater_fuel_choices, - required: false) - display_name: 'Water Heater: Fuel Type') - description: "The fuel type of water heater. Ignored for #{HPXML::WaterHeaterTypeHeatPump}.") + required: false, + display_name: 'Water Heater: Fuel Type', + description: "The fuel type of water heater. Ignored for #{HPXML::WaterHeaterTypeHeatPump}." + ) args << makeArgument( type: Argument::Choice, name: 'water_heater_location', choices: water_heater_location_choices, - required: false) - display_name: 'Water Heater: Location') - description: "The location of water heater. If not provided, the OS-HPXML default (see HPXML Water Heating Systems) is used.") + required: false, + display_name: 'Water Heater: Location', + description: "The location of water heater.", + default_href: "HPXML Water Heating Systems" + ) args << makeArgument( type: Argument::Double, name: 'water_heater_tank_volume', required: false, - display_name: 'Water Heater: Tank Volume') - description: "Nominal volume of water heater tank. If not provided, the OS-HPXML default (see Conventional Storage, Heat Pump, Combi Boiler w/ Storage) is used.") - units: 'gal') + display_name: 'Water Heater: Tank Volume', + description: "Nominal volume of water heater tank.", + default_href: "Conventional Storage, Heat Pump, Combi Boiler w/ Storage", + units: 'gal' + ) args << makeArgument( type: Argument::Choice, name: 'water_heater_efficiency_type', choices: water_heater_efficiency_type_choices, - required: false) - display_name: 'Water Heater: Efficiency Type') - description: 'The efficiency type of water heater. Does not apply to space-heating boilers.') + required: false, + display_name: 'Water Heater: Efficiency Type', + description: 'The efficiency type of water heater. Does not apply to space-heating boilers.' + ) args << makeArgument( type: Argument::Double, @@ -3008,72 +3211,87 @@ def makeArgument(name:, type: Argument::Choice, name: 'water_heater_usage_bin', choices: water_heater_usage_bin_choices, - required: false) - display_name: 'Water Heater: Usage Bin') - description: "The usage of the water heater. Only applies if Efficiency Type is UniformEnergyFactor and Type is not #{HPXML::WaterHeaterTypeTankless}. Does not apply to space-heating boilers. If not provided, the OS-HPXML default (see Conventional Storage, Heat Pump) is used.") + required: false, + display_name: 'Water Heater: Usage Bin', + description: "The usage of the water heater. Only applies if Efficiency Type is UniformEnergyFactor and Type is not #{HPXML::WaterHeaterTypeTankless}. Does not apply to space-heating boilers.", + default_href: "Conventional Storage, Heat Pump" + ) args << makeArgument( type: Argument::Double, name: 'water_heater_recovery_efficiency', required: false, - display_name: 'Water Heater: Recovery Efficiency') - description: "Ratio of energy delivered to water heater to the energy content of the fuel consumed by the water heater. Only used for non-electric storage water heaters. If not provided, the OS-HPXML default (see Conventional Storage) is used.") - units: 'Frac') + display_name: 'Water Heater: Recovery Efficiency', + description: "Ratio of energy delivered to water heater to the energy content of the fuel consumed by the water heater. Only used for non-electric storage water heaters.", + default_href: "Conventional Storage", + units: 'Frac' + ) args << makeArgument( type: Argument::Double, name: 'water_heater_heating_capacity', required: false, - display_name: 'Water Heater: Heating Capacity') - description: "Heating capacity. Only applies to #{HPXML::WaterHeaterTypeStorage} and #{HPXML::WaterHeaterTypeHeatPump} (compressor). If not provided, the OS-HPXML default (see Conventional Storage, Heat Pump) is used.") - units: 'Btu/hr') + display_name: 'Water Heater: Heating Capacity', + description: "Heating capacity. Only applies to #{HPXML::WaterHeaterTypeStorage} and #{HPXML::WaterHeaterTypeHeatPump} (compressor).", + default_href: "Conventional Storage, Heat Pump", + units: 'Btu/hr' + ) args << makeArgument( type: Argument::Double, name: 'water_heater_backup_heating_capacity', required: false, - display_name: 'Water Heater: Backup Heating Capacity') - description: "Backup heating capacity for a #{HPXML::WaterHeaterTypeHeatPump}. If not provided, the OS-HPXML default (see Heat Pump) is used.") - units: 'Btu/hr') + display_name: 'Water Heater: Backup Heating Capacity', + description: "Backup heating capacity for a #{HPXML::WaterHeaterTypeHeatPump}.", + default_href: "Heat Pump", + units: 'Btu/hr' + ) args << makeArgument( type: Argument::Double, name: 'water_heater_standby_loss', required: false, - display_name: 'Water Heater: Standby Loss') - description: "The standby loss of water heater. Only applies to space-heating boilers. If not provided, the OS-HPXML default (see Combi Boiler w/ Storage) is used.") - units: 'F/hr') + display_name: 'Water Heater: Standby Loss', + description: "The standby loss of water heater. Only applies to space-heating boilers.", + default_href: "Combi Boiler w/ Storage", + units: 'F/hr' + ) args << makeArgument( type: Argument::Double, name: 'water_heater_jacket_rvalue', required: false, - display_name: 'Water Heater: Jacket R-value') - description: "The jacket R-value of water heater. Doesn't apply to #{HPXML::WaterHeaterTypeTankless} or #{HPXML::WaterHeaterTypeCombiTankless}. If not provided, defaults to no jacket insulation.") - units: 'h-ft^2-R/Btu') + display_name: 'Water Heater: Jacket R-value', + description: "The jacket R-value of water heater. Doesn't apply to #{HPXML::WaterHeaterTypeTankless} or #{HPXML::WaterHeaterTypeCombiTankless}. If not provided, defaults to no jacket insulation.", + units: 'h-ft^2-R/Btu' + ) args << makeArgument( type: Argument::Double, name: 'water_heater_setpoint_temperature', required: false, - display_name: 'Water Heater: Setpoint Temperature') - description: "The setpoint temperature of water heater. If not provided, the OS-HPXML default (see HPXML Water Heating Systems) is used.") - units: 'F') + display_name: 'Water Heater: Setpoint Temperature', + description: "The setpoint temperature of water heater.", + default_href: "HPXML Water Heating Systems", + units: 'F' + ) args << makeArgument( type: Argument::Integer, name: 'water_heater_num_bedrooms_served', required: false, - display_name: 'Water Heater: Number of Bedrooms Served') - description: "Number of bedrooms served (directly or indirectly) by the water heater. Only needed if #{HPXML::ResidentialTypeSFA} or #{HPXML::ResidentialTypeApartment} and it is a shared water heater serving multiple dwelling units. Used to apportion water heater tank losses to the unit.") - units: '#') + display_name: 'Water Heater: Number of Bedrooms Served', + description: "Number of bedrooms served (directly or indirectly) by the water heater. Only needed if #{HPXML::ResidentialTypeSFA} or #{HPXML::ResidentialTypeApartment} and it is a shared water heater serving multiple dwelling units. Used to apportion water heater tank losses to the unit.", + units: '#' + ) args << makeArgument( name: 'water_heater_uses_desuperheater', type: Argument::Boolean, required: false, - display_name: 'Water Heater: Uses Desuperheater') - description: "Requires that the dwelling unit has a #{HPXML::HVACTypeHeatPumpAirToAir}, #{HPXML::HVACTypeHeatPumpMiniSplit}, or #{HPXML::HVACTypeHeatPumpGroundToAir} heat pump or a #{HPXML::HVACTypeCentralAirConditioner} or #{HPXML::HVACTypeMiniSplitAirConditioner} air conditioner. If not provided, assumes no desuperheater.") + display_name: 'Water Heater: Uses Desuperheater', + description: "Requires that the dwelling unit has a #{HPXML::HVACTypeHeatPumpAirToAir}, #{HPXML::HVACTypeHeatPumpMiniSplit}, or #{HPXML::HVACTypeHeatPumpGroundToAir} heat pump or a #{HPXML::HVACTypeCentralAirConditioner} or #{HPXML::HVACTypeMiniSplitAirConditioner} air conditioner. If not provided, assumes no desuperheater." + ) water_heater_tank_model_type_choices = OpenStudio::StringVector.new water_heater_tank_model_type_choices << HPXML::WaterHeaterTankModelTypeMixed @@ -3083,9 +3301,11 @@ def makeArgument(name:, type: Argument::Choice, name: 'water_heater_tank_model_type', choices: water_heater_tank_model_type_choices, - required: false) - display_name: 'Water Heater: Tank Type') - description: "Type of tank model to use. The '#{HPXML::WaterHeaterTankModelTypeStratified}' tank generally provide more accurate results, but may significantly increase run time. Applies only to #{HPXML::WaterHeaterTypeStorage}. If not provided, the OS-HPXML default (see Conventional Storage) is used.") + required: false, + display_name: 'Water Heater: Tank Type', + description: "Type of tank model to use. The '#{HPXML::WaterHeaterTankModelTypeStratified}' tank generally provide more accurate results, but may significantly increase run time. Applies only to #{HPXML::WaterHeaterTypeStorage}.", + default_href: "Conventional Storage" + ) water_heater_operating_mode_choices = OpenStudio::StringVector.new water_heater_operating_mode_choices << HPXML::WaterHeaterOperatingModeHybridAuto @@ -3095,9 +3315,11 @@ def makeArgument(name:, type: Argument::Choice, name: 'water_heater_operating_mode', choices: water_heater_operating_mode_choices, - required: false) - display_name: 'Water Heater: Operating Mode') - description: "The water heater operating mode. The '#{HPXML::WaterHeaterOperatingModeHeatPumpOnly}' option only uses the heat pump, while '#{HPXML::WaterHeaterOperatingModeHybridAuto}' allows the backup electric resistance to come on in high demand situations. This is ignored if a scheduled operating mode type is selected. Applies only to #{HPXML::WaterHeaterTypeHeatPump}. If not provided, the OS-HPXML default (see Heat Pump) is used.") + required: false, + display_name: 'Water Heater: Operating Mode', + description: "The water heater operating mode. The '#{HPXML::WaterHeaterOperatingModeHeatPumpOnly}' option only uses the heat pump, while '#{HPXML::WaterHeaterOperatingModeHybridAuto}' allows the backup electric resistance to come on in high demand situations. This is ignored if a scheduled operating mode type is selected. Applies only to #{HPXML::WaterHeaterTypeHeatPump}.", + default_href: "Heat Pump" + ) hot_water_distribution_system_type_choices = OpenStudio::StringVector.new hot_water_distribution_system_type_choices << HPXML::DHWDistTypeStandard @@ -3107,17 +3329,20 @@ def makeArgument(name:, type: Argument::Choice, name: 'hot_water_distribution_system_type', choices: hot_water_distribution_system_type_choices, - required: true) - display_name: 'Hot Water Distribution: System Type') - description: 'The type of the hot water distribution system.') + required: true, + display_name: 'Hot Water Distribution: System Type', + description: 'The type of the hot water distribution system.' + ) args << makeArgument( type: Argument::Double, name: 'hot_water_distribution_standard_piping_length', required: false, - display_name: 'Hot Water Distribution: Standard Piping Length') - units: 'ft') - description: "If the distribution system is #{HPXML::DHWDistTypeStandard}, the length of the piping. If not provided, the OS-HPXML default (see Standard) is used.") + display_name: 'Hot Water Distribution: Standard Piping Length', + units: 'ft', + description: "If the distribution system is #{HPXML::DHWDistTypeStandard}, the length of the piping.", + default_href: "Standard" + ) recirculation_control_type_choices = OpenStudio::StringVector.new recirculation_control_type_choices << HPXML::DHWRecircControlTypeNone @@ -3130,41 +3355,50 @@ def makeArgument(name:, type: Argument::Choice, name: 'hot_water_distribution_recirc_control_type', choices: recirculation_control_type_choices, - required: false) - display_name: 'Hot Water Distribution: Recirculation Control Type') - description: "If the distribution system is #{HPXML::DHWDistTypeRecirc}, the type of hot water recirculation control, if any.") + required: false, + display_name: 'Hot Water Distribution: Recirculation Control Type', + description: "If the distribution system is #{HPXML::DHWDistTypeRecirc}, the type of hot water recirculation control, if any." + ) args << makeArgument( type: Argument::Double, name: 'hot_water_distribution_recirc_piping_length', required: false, - display_name: 'Hot Water Distribution: Recirculation Piping Length') - units: 'ft') - description: "If the distribution system is #{HPXML::DHWDistTypeRecirc}, the length of the recirculation piping. If not provided, the OS-HPXML default (see Recirculation (In-Unit)) is used.") + display_name: 'Hot Water Distribution: Recirculation Piping Length', + units: 'ft', + description: "If the distribution system is #{HPXML::DHWDistTypeRecirc}, the length of the recirculation piping.", + default_href: "Recirculation (In-Unit)" + ) args << makeArgument( type: Argument::Double, name: 'hot_water_distribution_recirc_branch_piping_length', required: false, - display_name: 'Hot Water Distribution: Recirculation Branch Piping Length') - units: 'ft') - description: "If the distribution system is #{HPXML::DHWDistTypeRecirc}, the length of the recirculation branch piping. If not provided, the OS-HPXML default (see Recirculation (In-Unit)) is used.") + display_name: 'Hot Water Distribution: Recirculation Branch Piping Length', + units: 'ft', + description: "If the distribution system is #{HPXML::DHWDistTypeRecirc}, the length of the recirculation branch piping.", + default_href: "Recirculation (In-Unit)" + ) args << makeArgument( type: Argument::Double, name: 'hot_water_distribution_recirc_pump_power', required: false, - display_name: 'Hot Water Distribution: Recirculation Pump Power') - units: 'W') - description: "If the distribution system is #{HPXML::DHWDistTypeRecirc}, the recirculation pump power. If not provided, the OS-HPXML default (see Recirculation (In-Unit)) is used.") + display_name: 'Hot Water Distribution: Recirculation Pump Power', + units: 'W', + description: "If the distribution system is #{HPXML::DHWDistTypeRecirc}, the recirculation pump power.", + default_href: "Recirculation (In-Unit)" + ) args << makeArgument( type: Argument::Double, name: 'hot_water_distribution_pipe_r', required: false, - display_name: 'Hot Water Distribution: Pipe Insulation Nominal R-Value') - units: 'h-ft^2-R/Btu') - description: "Nominal R-value of the pipe insulation. If not provided, the OS-HPXML default (see HPXML Hot Water Distribution) is used.") + display_name: 'Hot Water Distribution: Pipe Insulation Nominal R-Value', + units: 'h-ft^2-R/Btu', + description: "Nominal R-value of the pipe insulation.", + default_href: "HPXML Hot Water Distribution" + ) dwhr_facilities_connected_choices = OpenStudio::StringVector.new dwhr_facilities_connected_choices << Constants::None @@ -3175,52 +3409,61 @@ def makeArgument(name:, type: Argument::Choice, name: 'dwhr_facilities_connected', choices: dwhr_facilities_connected_choices, - required: false) - display_name: 'Drain Water Heat Recovery: Facilities Connected') - description: "Which facilities are connected for the drain water heat recovery. Use '#{Constants::None}' if there is no drain water heat recovery system.") + required: false, + display_name: 'Drain Water Heat Recovery: Facilities Connected', + description: "Which facilities are connected for the drain water heat recovery. Use '#{Constants::None}' if there is no drain water heat recovery system." + ) args << makeArgument( name: 'dwhr_equal_flow', type: Argument::Boolean, required: false, - display_name: 'Drain Water Heat Recovery: Equal Flow') - description: 'Whether the drain water heat recovery has equal flow.') + display_name: 'Drain Water Heat Recovery: Equal Flow', + description: 'Whether the drain water heat recovery has equal flow.' + ) args << makeArgument( type: Argument::Double, name: 'dwhr_efficiency', required: false, - display_name: 'Drain Water Heat Recovery: Efficiency') - units: 'Frac') - description: 'The efficiency of the drain water heat recovery.') + display_name: 'Drain Water Heat Recovery: Efficiency', + units: 'Frac', + description: 'The efficiency of the drain water heat recovery.' + ) args << makeArgument( name: 'water_fixtures_shower_low_flow', type: Argument::Boolean, required: false, - display_name: 'Hot Water Fixtures: Is Shower Low Flow') - description: 'Whether the shower fixture is low flow. If not provided, defaults to false.') + display_name: 'Hot Water Fixtures: Is Shower Low Flow', + description: 'Whether the shower fixture is low flow. If not provided, defaults to false.' + ) args << makeArgument( name: 'water_fixtures_sink_low_flow', type: Argument::Boolean, required: false, - display_name: 'Hot Water Fixtures: Is Sink Low Flow') - description: 'Whether the sink fixture is low flow. If not provided, defaults to false.') + display_name: 'Hot Water Fixtures: Is Sink Low Flow', + description: 'Whether the sink fixture is low flow. If not provided, defaults to false.' + ) args << makeArgument( type: Argument::Double, name: 'water_fixtures_usage_multiplier', required: false, - display_name: 'Hot Water Fixtures: Usage Multiplier') - description: "Multiplier on the hot water usage that can reflect, e.g., high/low usage occupants. If not provided, the OS-HPXML default (see HPXML Water Fixtures) is used.") + display_name: 'Hot Water Fixtures: Usage Multiplier', + description: "Multiplier on the hot water usage that can reflect, e.g., high/low usage occupants.", + default_href: "HPXML Water Fixtures" + ) args << makeArgument( type: Argument::Double, name: 'general_water_use_usage_multiplier', required: false, - display_name: 'General Water Use: Usage Multiplier') - description: "Multiplier on internal gains from general water use (floor mopping, shower evaporation, water films on showers, tubs & sinks surfaces, plant watering, etc.) that can reflect, e.g., high/low usage occupants. If not provided, the OS-HPXML default (see HPXML Building Occupancy) is used.") + display_name: 'General Water Use: Usage Multiplier', + description: "Multiplier on internal gains from general water use (floor mopping, shower evaporation, water films on showers, tubs & sinks surfaces, plant watering, etc.) that can reflect, e.g., high/low usage occupants.", + default_href: "HPXML Building Occupancy" + ) solar_thermal_system_type_choices = OpenStudio::StringVector.new solar_thermal_system_type_choices << Constants::None @@ -3241,81 +3484,92 @@ def makeArgument(name:, type: Argument::Choice, name: 'solar_thermal_system_type', choices: solar_thermal_system_type_choices, - required: false) - display_name: 'Solar Thermal: System Type') - description: "The type of solar thermal system. Use '#{Constants::None}' if there is no solar thermal system.") + required: false, + display_name: 'Solar Thermal: System Type', + description: "The type of solar thermal system. Use '#{Constants::None}' if there is no solar thermal system." + ) args << makeArgument( type: Argument::Double, name: 'solar_thermal_collector_area', required: false, - display_name: 'Solar Thermal: Collector Area') - units: 'ft^2') - description: 'The collector area of the solar thermal system.') + display_name: 'Solar Thermal: Collector Area', + units: 'ft^2', + description: 'The collector area of the solar thermal system.' + ) args << makeArgument( type: Argument::Choice, name: 'solar_thermal_collector_loop_type', choices: solar_thermal_collector_loop_type_choices, - required: false) - display_name: 'Solar Thermal: Collector Loop Type') - description: 'The collector loop type of the solar thermal system.') + required: false, + display_name: 'Solar Thermal: Collector Loop Type', + description: 'The collector loop type of the solar thermal system.' + ) args << makeArgument( type: Argument::Choice, name: 'solar_thermal_collector_type', choices: solar_thermal_collector_type_choices, - required: false) - display_name: 'Solar Thermal: Collector Type') - description: 'The collector type of the solar thermal system.') + required: false, + display_name: 'Solar Thermal: Collector Type', + description: 'The collector type of the solar thermal system.' + ) args << makeArgument( type: Argument::Double, name: 'solar_thermal_collector_azimuth', required: false, - display_name: 'Solar Thermal: Collector Azimuth') - units: 'degrees') - description: 'The collector azimuth of the solar thermal system. Azimuth is measured clockwise from north (e.g., North=0, East=90, South=180, West=270).') + display_name: 'Solar Thermal: Collector Azimuth', + units: 'degrees', + description: 'The collector azimuth of the solar thermal system. Azimuth is measured clockwise from north (e.g., North=0, East=90, South=180, West=270).' + ) args << makeArgument( type: Argument::String, name: 'solar_thermal_collector_tilt', required: false, - display_name: 'Solar Thermal: Collector Tilt') - units: 'degrees') - description: 'The collector tilt of the solar thermal system. Can also enter, e.g., RoofPitch, RoofPitch+20, Latitude, Latitude-15, etc.') + display_name: 'Solar Thermal: Collector Tilt', + units: 'degrees', + description: 'The collector tilt of the solar thermal system. Can also enter, e.g., RoofPitch, RoofPitch+20, Latitude, Latitude-15, etc.' + ) args << makeArgument( type: Argument::Double, name: 'solar_thermal_collector_rated_optical_efficiency', required: false, - display_name: 'Solar Thermal: Collector Rated Optical Efficiency') - units: 'Frac') - description: 'The collector rated optical efficiency of the solar thermal system.') + display_name: 'Solar Thermal: Collector Rated Optical Efficiency', + units: 'Frac', + description: 'The collector rated optical efficiency of the solar thermal system.' + ) args << makeArgument( type: Argument::Double, name: 'solar_thermal_collector_rated_thermal_losses', required: false, - display_name: 'Solar Thermal: Collector Rated Thermal Losses') - units: 'Btu/hr-ft^2-R') - description: 'The collector rated thermal losses of the solar thermal system.') + display_name: 'Solar Thermal: Collector Rated Thermal Losses', + units: 'Btu/hr-ft^2-R', + description: 'The collector rated thermal losses of the solar thermal system.' + ) args << makeArgument( type: Argument::Double, name: 'solar_thermal_storage_volume', required: false, - display_name: 'Solar Thermal: Storage Volume') - units: 'gal') - description: "The storage volume of the solar thermal system. If not provided, the OS-HPXML default (see Detailed Inputs) is used.") + display_name: 'Solar Thermal: Storage Volume', + units: 'gal', + description: "The storage volume of the solar thermal system.", + default_href: "Detailed Inputs" + ) args << makeArgument( type: Argument::Double, name: 'solar_thermal_solar_fraction', required: false, - display_name: 'Solar Thermal: Solar Fraction') - units: 'Frac') - description: 'The solar fraction of the solar thermal system. If provided, overrides all other solar thermal inputs.') + display_name: 'Solar Thermal: Solar Fraction', + units: 'Frac', + description: 'The solar fraction of the solar thermal system. If provided, overrides all other solar thermal inputs.' + ) pv_system_module_type_choices = OpenStudio::StringVector.new pv_system_module_type_choices << HPXML::PVModuleTypeStandard @@ -3336,135 +3590,160 @@ def makeArgument(name:, name: 'pv_system_present', type:: Argument::Boolean, required: false, - display_name: 'PV System: Present') - description: 'Whether there is a PV system present. If not provided, defaults to false.') + display_name: 'PV System: Present', + description: 'Whether there is a PV system present. If not provided, defaults to false.' + ) args << makeArgument( type: Argument::Choice, name: 'pv_system_module_type', choices: pv_system_module_type_choices, - required: false) - display_name: 'PV System: Module Type') - description: "Module type of the PV system. If not provided, the OS-HPXML default (see HPXML Photovoltaics) is used.") + required: false, + display_name: 'PV System: Module Type', + description: "Module type of the PV system.", + default_href: "HPXML Photovoltaics" + ) args << makeArgument( type: Argument::Choice, name: 'pv_system_location', choices: pv_system_location_choices, - required: false) - display_name: 'PV System: Location') - description: "Location of the PV system. If not provided, the OS-HPXML default (see HPXML Photovoltaics) is used.") + required: false, + display_name: 'PV System: Location', + description: "Location of the PV system.", + default_href: "HPXML Photovoltaics" + ) args << makeArgument( type: Argument::Choice, name: 'pv_system_tracking', choices: pv_system_tracking_choices, - required: false) - display_name: 'PV System: Tracking') - description: "Type of tracking for the PV system. If not provided, the OS-HPXML default (see HPXML Photovoltaics) is used.") + required: false, + display_name: 'PV System: Tracking', + description: "Type of tracking for the PV system.", + default_href: "HPXML Photovoltaics" + ) args << makeArgument( type: Argument::Double, name: 'pv_system_array_azimuth', required: false, - display_name: 'PV System: Array Azimuth') - units: 'degrees') - description: 'Array azimuth of the PV system. Azimuth is measured clockwise from north (e.g., North=0, East=90, South=180, West=270).') + display_name: 'PV System: Array Azimuth', + units: 'degrees', + description: 'Array azimuth of the PV system. Azimuth is measured clockwise from north (e.g., North=0, East=90, South=180, West=270).' + ) args << makeArgument( type: Argument::String, name: 'pv_system_array_tilt', required: false, - display_name: 'PV System: Array Tilt') - units: 'degrees') - description: 'Array tilt of the PV system. Can also enter, e.g., RoofPitch, RoofPitch+20, Latitude, Latitude-15, etc.') + display_name: 'PV System: Array Tilt', + units: 'degrees', + description: 'Array tilt of the PV system. Can also enter, e.g., RoofPitch, RoofPitch+20, Latitude, Latitude-15, etc.' + ) args << makeArgument( type: Argument::Double, name: 'pv_system_max_power_output', required: false, - display_name: 'PV System: Maximum Power Output') - units: 'W') - description: 'Maximum power output of the PV system. For a shared system, this is the total building maximum power output.') + display_name: 'PV System: Maximum Power Output', + units: 'W', + description: 'Maximum power output of the PV system. For a shared system, this is the total building maximum power output.' + ) args << makeArgument( type: Argument::Double, name: 'pv_system_inverter_efficiency', required: false, - display_name: 'PV System: Inverter Efficiency') - units: 'Frac') - description: "Inverter efficiency of the PV system. If there are two PV systems, this will apply to both. If not provided, the OS-HPXML default (see HPXML Photovoltaics) is used.") + display_name: 'PV System: Inverter Efficiency', + units: 'Frac', + description: "Inverter efficiency of the PV system. If there are two PV systems, this will apply to both.", + default_href: "HPXML Photovoltaics" + ) args << makeArgument( type: Argument::Double, name: 'pv_system_system_losses_fraction', required: false, - display_name: 'PV System: System Losses Fraction') - units: 'Frac') - description: "System losses fraction of the PV system. If there are two PV systems, this will apply to both. If not provided, the OS-HPXML default (see HPXML Photovoltaics) is used.") + display_name: 'PV System: System Losses Fraction', + units: 'Frac', + description: "System losses fraction of the PV system. If there are two PV systems, this will apply to both.", + default_href: "HPXML Photovoltaics" + ) args << makeArgument( type: Argument::Integer, name: 'pv_system_num_bedrooms_served', required: false, - display_name: 'PV System: Number of Bedrooms Served') - description: "Number of bedrooms served by PV system. Only needed if #{HPXML::ResidentialTypeSFA} or #{HPXML::ResidentialTypeApartment} and it is a shared PV system serving multiple dwelling units. Used to apportion PV generation to the unit of a SFA/MF building. If there are two PV systems, this will apply to both.") - units: '#') + display_name: 'PV System: Number of Bedrooms Served', + description: "Number of bedrooms served by PV system. Only needed if #{HPXML::ResidentialTypeSFA} or #{HPXML::ResidentialTypeApartment} and it is a shared PV system serving multiple dwelling units. Used to apportion PV generation to the unit of a SFA/MF building. If there are two PV systems, this will apply to both.", + units: '#' + ) args << makeArgument( name: 'pv_system_2_present', type: Argument::Boolean, required: false, - display_name: 'PV System 2: Present') - description: 'Whether there is a second PV system present. If not provided, defaults to false.') + display_name: 'PV System 2: Present', + description: 'Whether there is a second PV system present. If not provided, defaults to false.' + ) args << makeArgument( type: Argument::Choice, name: 'pv_system_2_module_type', choices: pv_system_module_type_choices, - required: false) - display_name: 'PV System 2: Module Type') - description: "Module type of the second PV system. If not provided, the OS-HPXML default (see HPXML Photovoltaics) is used.") + required: false, + display_name: 'PV System 2: Module Type', + description: "Module type of the second PV system.", + default_href: "HPXML Photovoltaics" + ) args << makeArgument( type: Argument::Choice, name: 'pv_system_2_location', choices: pv_system_location_choices, - required: false) - display_name: 'PV System 2: Location') - description: "Location of the second PV system. If not provided, the OS-HPXML default (see HPXML Photovoltaics) is used.") + required: false, + display_name: 'PV System 2: Location', + description: "Location of the second PV system.", + default_href: "HPXML Photovoltaics" + ) args << makeArgument( type: Argument::Choice, name: 'pv_system_2_tracking', choices: pv_system_tracking_choices, - required: false) - display_name: 'PV System 2: Tracking') - description: "Type of tracking for the second PV system. If not provided, the OS-HPXML default (see HPXML Photovoltaics) is used.") + required: false, + display_name: 'PV System 2: Tracking', + description: "Type of tracking for the second PV system.", + default_href: "HPXML Photovoltaics" + ) args << makeArgument( type: Argument::Double, name: 'pv_system_2_array_azimuth', required: false, - display_name: 'PV System 2: Array Azimuth') - units: 'degrees') - description: 'Array azimuth of the second PV system. Azimuth is measured clockwise from north (e.g., North=0, East=90, South=180, West=270).') + display_name: 'PV System 2: Array Azimuth', + units: 'degrees', + description: 'Array azimuth of the second PV system. Azimuth is measured clockwise from north (e.g., North=0, East=90, South=180, West=270).' + ) args << makeArgument( type: Argument::String, name: 'pv_system_2_array_tilt', required: false, - display_name: 'PV System 2: Array Tilt') - units: 'degrees') - description: 'Array tilt of the second PV system. Can also enter, e.g., RoofPitch, RoofPitch+20, Latitude, Latitude-15, etc.') + display_name: 'PV System 2: Array Tilt', + units: 'degrees', + description: 'Array tilt of the second PV system. Can also enter, e.g., RoofPitch, RoofPitch+20, Latitude, Latitude-15, etc.' + ) args << makeArgument( type: Argument::Double, name: 'pv_system_2_max_power_output', required: false, - display_name: 'PV System 2: Maximum Power Output') - units: 'W') - description: 'Maximum power output of the second PV system. For a shared system, this is the total building maximum power output.') + display_name: 'PV System 2: Maximum Power Output', + units: 'W', + description: 'Maximum power output of the second PV system. For a shared system, this is the total building maximum power output.' + ) battery_location_choices = OpenStudio::StringVector.new battery_location_choices << HPXML::LocationConditionedSpace @@ -3484,169 +3763,202 @@ def makeArgument(name:, name: 'battery_present', type: Argument::Boolean, required: false, - display_name: 'Battery: Present') - description: 'Whether there is a lithium ion battery present. If not provided, defaults to false.') + display_name: 'Battery: Present', + description: 'Whether there is a lithium ion battery present. If not provided, defaults to false.' + ) args << makeArgument( type: Argument::Choice, name: 'battery_location', choices: battery_location_choices, - required: false) - display_name: 'Battery: Location') - description: "The space type for the lithium ion battery location. If not provided, the OS-HPXML default (see HPXML Batteries) is used.") + required: false, + display_name: 'Battery: Location', + description: "The space type for the lithium ion battery location.", + default_href: "HPXML Batteries" + ) args << makeArgument( type: Argument::Double, name: 'battery_power', required: false, - display_name: 'Battery: Rated Power Output') - description: "The rated power output of the lithium ion battery. If not provided, the OS-HPXML default (see HPXML Batteries) is used.") - units: 'W') + display_name: 'Battery: Rated Power Output', + description: "The rated power output of the lithium ion battery.", + default_href: "HPXML Batteries", + units: 'W' + ) args << makeArgument( type: Argument::Double, name: 'battery_capacity', required: false, - display_name: 'Battery: Nominal Capacity') - description: "The nominal capacity of the lithium ion battery. If not provided, the OS-HPXML default (see HPXML Batteries) is used.") - units: 'kWh') + display_name: 'Battery: Nominal Capacity', + description: "The nominal capacity of the lithium ion battery.", + default_href: "HPXML Batteries", + units: 'kWh' + ) args << makeArgument( type: Argument::Double, name: 'battery_usable_capacity', required: false, - display_name: 'Battery: Usable Capacity') - description: "The usable capacity of the lithium ion battery. If not provided, the OS-HPXML default (see HPXML Batteries) is used.") - units: 'kWh') + display_name: 'Battery: Usable Capacity', + description: "The usable capacity of the lithium ion battery.", + default_href: "HPXML Batteries", + units: 'kWh' + ) args << makeArgument( type: Argument::Double, name: 'battery_round_trip_efficiency', required: false, - display_name: 'Battery: Round Trip Efficiency') - description: "The round trip efficiency of the lithium ion battery. If not provided, the OS-HPXML default (see HPXML Batteries) is used.") - units: 'Frac') + display_name: 'Battery: Round Trip Efficiency', + description: "The round trip efficiency of the lithium ion battery.", + default_href: "HPXML Batteries", + units: 'Frac' + ) args << makeArgument( type: Argument::Integer, name: 'battery_num_bedrooms_served', required: false, - display_name: 'Battery: Number of Bedrooms Served') - description: "Number of bedrooms served by the lithium ion battery. Only needed if #{HPXML::ResidentialTypeSFA} or #{HPXML::ResidentialTypeApartment} and it is a shared battery serving multiple dwelling units. Used to apportion battery charging/discharging to the unit of a SFA/MF building.") - units: '#') + display_name: 'Battery: Number of Bedrooms Served', + description: "Number of bedrooms served by the lithium ion battery. Only needed if #{HPXML::ResidentialTypeSFA} or #{HPXML::ResidentialTypeApartment} and it is a shared battery serving multiple dwelling units. Used to apportion battery charging/discharging to the unit of a SFA/MF building.", + units: '#' + ) args << makeArgument( name: 'lighting_present', type: Argument::Boolean, required: true, - display_name: 'Lighting: Present') - description: 'Whether there is lighting energy use.') + display_name: 'Lighting: Present', + description: 'Whether there is lighting energy use.' + ) args << makeArgument( type: Argument::Double, name: 'lighting_interior_fraction_cfl', required: false, - display_name: 'Lighting: Interior Fraction CFL') - description: 'Fraction of all lamps (interior) that are compact fluorescent. Lighting not specified as CFL, LFL, or LED is assumed to be incandescent.') + display_name: 'Lighting: Interior Fraction CFL', + description: 'Fraction of all lamps (interior) that are compact fluorescent. Lighting not specified as CFL, LFL, or LED is assumed to be incandescent.' + ) args << makeArgument( type: Argument::Double, name: 'lighting_interior_fraction_lfl', required: false, - display_name: 'Lighting: Interior Fraction LFL') - description: 'Fraction of all lamps (interior) that are linear fluorescent. Lighting not specified as CFL, LFL, or LED is assumed to be incandescent.') + display_name: 'Lighting: Interior Fraction LFL', + description: 'Fraction of all lamps (interior) that are linear fluorescent. Lighting not specified as CFL, LFL, or LED is assumed to be incandescent.' + ) args << makeArgument( type: Argument::Double, name: 'lighting_interior_fraction_led', required: false, - display_name: 'Lighting: Interior Fraction LED') - description: 'Fraction of all lamps (interior) that are light emitting diodes. Lighting not specified as CFL, LFL, or LED is assumed to be incandescent.') + display_name: 'Lighting: Interior Fraction LED', + description: 'Fraction of all lamps (interior) that are light emitting diodes. Lighting not specified as CFL, LFL, or LED is assumed to be incandescent.' + ) args << makeArgument( type: Argument::Double, name: 'lighting_interior_usage_multiplier', required: false, - display_name: 'Lighting: Interior Usage Multiplier') - description: "Multiplier on the lighting energy usage (interior) that can reflect, e.g., high/low usage occupants. If not provided, the OS-HPXML default (see HPXML Lighting) is used.") + display_name: 'Lighting: Interior Usage Multiplier', + description: "Multiplier on the lighting energy usage (interior) that can reflect, e.g., high/low usage occupants.", + default_href: "HPXML Lighting" + ) args << makeArgument( type: Argument::Double, name: 'lighting_exterior_fraction_cfl', required: false, - display_name: 'Lighting: Exterior Fraction CFL') - description: 'Fraction of all lamps (exterior) that are compact fluorescent. Lighting not specified as CFL, LFL, or LED is assumed to be incandescent.') + display_name: 'Lighting: Exterior Fraction CFL', + description: 'Fraction of all lamps (exterior) that are compact fluorescent. Lighting not specified as CFL, LFL, or LED is assumed to be incandescent.' + ) args << makeArgument( type: Argument::Double, name: 'lighting_exterior_fraction_lfl', required: false, - display_name: 'Lighting: Exterior Fraction LFL') - description: 'Fraction of all lamps (exterior) that are linear fluorescent. Lighting not specified as CFL, LFL, or LED is assumed to be incandescent.') + display_name: 'Lighting: Exterior Fraction LFL', + description: 'Fraction of all lamps (exterior) that are linear fluorescent. Lighting not specified as CFL, LFL, or LED is assumed to be incandescent.' + ) args << makeArgument( type: Argument::Double, name: 'lighting_exterior_fraction_led', required: false, - display_name: 'Lighting: Exterior Fraction LED') - description: 'Fraction of all lamps (exterior) that are light emitting diodes. Lighting not specified as CFL, LFL, or LED is assumed to be incandescent.') + display_name: 'Lighting: Exterior Fraction LED', + description: 'Fraction of all lamps (exterior) that are light emitting diodes. Lighting not specified as CFL, LFL, or LED is assumed to be incandescent.' + ) args << makeArgument( type: Argument::Double, name: 'lighting_exterior_usage_multiplier', required: false, - display_name: 'Lighting: Exterior Usage Multiplier') - description: "Multiplier on the lighting energy usage (exterior) that can reflect, e.g., high/low usage occupants. If not provided, the OS-HPXML default (see HPXML Lighting) is used.") + display_name: 'Lighting: Exterior Usage Multiplier', + description: "Multiplier on the lighting energy usage (exterior) that can reflect, e.g., high/low usage occupants.", + default_href: "HPXML Lighting" + ) args << makeArgument( type: Argument::Double, name: 'lighting_garage_fraction_cfl', required: false, - display_name: 'Lighting: Garage Fraction CFL') - description: 'Fraction of all lamps (garage) that are compact fluorescent. Lighting not specified as CFL, LFL, or LED is assumed to be incandescent.') + display_name: 'Lighting: Garage Fraction CFL', + description: 'Fraction of all lamps (garage) that are compact fluorescent. Lighting not specified as CFL, LFL, or LED is assumed to be incandescent.' + ) args << makeArgument( type: Argument::Double, name: 'lighting_garage_fraction_lfl', required: false, - display_name: 'Lighting: Garage Fraction LFL') - description: 'Fraction of all lamps (garage) that are linear fluorescent. Lighting not specified as CFL, LFL, or LED is assumed to be incandescent.') + display_name: 'Lighting: Garage Fraction LFL', + description: 'Fraction of all lamps (garage) that are linear fluorescent. Lighting not specified as CFL, LFL, or LED is assumed to be incandescent.' + ) args << makeArgument( type: Argument::Double, name: 'lighting_garage_fraction_led', required: false, - display_name: 'Lighting: Garage Fraction LED') - description: 'Fraction of all lamps (garage) that are light emitting diodes. Lighting not specified as CFL, LFL, or LED is assumed to be incandescent.') + display_name: 'Lighting: Garage Fraction LED', + description: 'Fraction of all lamps (garage) that are light emitting diodes. Lighting not specified as CFL, LFL, or LED is assumed to be incandescent.' + ) args << makeArgument( type: Argument::Double, name: 'lighting_garage_usage_multiplier', required: false, - display_name: 'Lighting: Garage Usage Multiplier') - description: "Multiplier on the lighting energy usage (garage) that can reflect, e.g., high/low usage occupants. If not provided, the OS-HPXML default (see HPXML Lighting) is used.") + display_name: 'Lighting: Garage Usage Multiplier', + description: "Multiplier on the lighting energy usage (garage) that can reflect, e.g., high/low usage occupants.", + default_href: "HPXML Lighting" + ) args << makeArgument( name: 'holiday_lighting_present', type: Argument::Boolean, required: false, - display_name: 'Holiday Lighting: Present') - description: 'Whether there is holiday lighting. If not provided, defaults to false.') + display_name: 'Holiday Lighting: Present', + description: 'Whether there is holiday lighting. If not provided, defaults to false.' + ) args << makeArgument( type: Argument::Double, name: 'holiday_lighting_daily_kwh', required: false, - display_name: 'Holiday Lighting: Daily Consumption') - units: 'kWh/day') - description: "The daily energy consumption for holiday lighting (exterior). If not provided, the OS-HPXML default (see HPXML Lighting) is used.") + display_name: 'Holiday Lighting: Daily Consumption', + units: 'kWh/day', + description: "The daily energy consumption for holiday lighting (exterior).", + default_href: "HPXML Lighting" + ) args << makeArgument( type: Argument::String, name: 'holiday_lighting_period', required: false, - display_name: 'Holiday Lighting: Period') - description: "Enter a date range like 'Nov 25 - Jan 5'. If not provided, the OS-HPXML default (see HPXML Lighting) is used.") + display_name: 'Holiday Lighting: Period', + description: "Enter a date range like 'Nov 25 - Jan 5'.", + default_href: "HPXML Lighting" + ) dehumidifier_type_choices = OpenStudio::StringVector.new dehumidifier_type_choices << Constants::None @@ -3661,49 +3973,55 @@ def makeArgument(name:, type: Argument::Choice, name: 'dehumidifier_type', choices: dehumidifier_type_choices, - required: false) - display_name: 'Dehumidifier: Type') - description: 'The type of dehumidifier. If not provided, defaults to none.') + required: false, + display_name: 'Dehumidifier: Type', + description: 'The type of dehumidifier. If not provided, defaults to none.' + ) args << makeArgument( type: Argument::Choice, name: 'dehumidifier_efficiency_type', choices: dehumidifier_efficiency_type_choices, - required: false) - display_name: 'Dehumidifier: Efficiency Type') - description: 'The efficiency type of dehumidifier.') + required: false, + display_name: 'Dehumidifier: Efficiency Type', + description: 'The efficiency type of dehumidifier.' + ) args << makeArgument( type: Argument::Double, name: 'dehumidifier_efficiency', required: false, - display_name: 'Dehumidifier: Efficiency') - units: 'liters/kWh') - description: 'The efficiency of the dehumidifier.') + display_name: 'Dehumidifier: Efficiency', + units: 'liters/kWh', + description: 'The efficiency of the dehumidifier.' + ) args << makeArgument( type: Argument::Double, name: 'dehumidifier_capacity', required: false, - display_name: 'Dehumidifier: Capacity') - description: 'The capacity (water removal rate) of the dehumidifier.') - units: 'pint/day') + display_name: 'Dehumidifier: Capacity', + description: 'The capacity (water removal rate) of the dehumidifier.', + units: 'pint/day' + ) args << makeArgument( type: Argument::Double, name: 'dehumidifier_rh_setpoint', required: false, - display_name: 'Dehumidifier: Relative Humidity Setpoint') - description: 'The relative humidity setpoint of the dehumidifier.') - units: 'Frac') + display_name: 'Dehumidifier: Relative Humidity Setpoint', + description: 'The relative humidity setpoint of the dehumidifier.', + units: 'Frac' + ) args << makeArgument( type: Argument::Double, name: 'dehumidifier_fraction_dehumidification_load_served', required: false, - display_name: 'Dehumidifier: Fraction Dehumidification Load Served') - description: 'The dehumidification load served fraction of the dehumidifier.') - units: 'Frac') + display_name: 'Dehumidifier: Fraction Dehumidification Load Served', + description: 'The dehumidification load served fraction of the dehumidifier.', + units: 'Frac' + ) appliance_location_choices = OpenStudio::StringVector.new appliance_location_choices << HPXML::LocationConditionedSpace @@ -3723,102 +4041,125 @@ def makeArgument(name:, name: 'clothes_washer_present', type: Argument::Boolean, required: true, - display_name: 'Clothes Washer: Present') - description: 'Whether there is a clothes washer present.') + display_name: 'Clothes Washer: Present', + description: 'Whether there is a clothes washer present.' + ) args << makeArgument( type: Argument::Choice, name: 'clothes_washer_location', choices: appliance_location_choices, - required: false) - display_name: 'Clothes Washer: Location') - description: "The space type for the clothes washer location. If not provided, the OS-HPXML default (see HPXML Clothes Washer) is used.") + required: false, + display_name: 'Clothes Washer: Location', + description: "The space type for the clothes washer location.", + default_href: "HPXML Clothes Washer" + ) args << makeArgument( type: Argument::Choice, name: 'clothes_washer_efficiency_type', choices: clothes_washer_efficiency_type_choices, - required: false) - display_name: 'Clothes Washer: Efficiency Type') - description: 'The efficiency type of the clothes washer.') + required: false, + display_name: 'Clothes Washer: Efficiency Type', + description: 'The efficiency type of the clothes washer.' + ) args << makeArgument( type: Argument::Double, name: 'clothes_washer_efficiency', required: false, - display_name: 'Clothes Washer: Efficiency') - units: 'ft^3/kWh-cyc') - description: "The efficiency of the clothes washer. If not provided, the OS-HPXML default (see HPXML Clothes Washer) is used.") + display_name: 'Clothes Washer: Efficiency', + units: 'ft^3/kWh-cyc', + description: "The efficiency of the clothes washer.", + default_href: "HPXML Clothes Washer" + ) args << makeArgument( type: Argument::Double, name: 'clothes_washer_rated_annual_kwh', required: false, - display_name: 'Clothes Washer: Rated Annual Consumption') - units: 'kWh/yr') - description: "The annual energy consumed by the clothes washer, as rated, obtained from the EnergyGuide label. This includes both the appliance electricity consumption and the energy required for water heating. If not provided, the OS-HPXML default (see HPXML Clothes Washer) is used.") + display_name: 'Clothes Washer: Rated Annual Consumption', + units: 'kWh/yr', + description: "The annual energy consumed by the clothes washer, as rated, obtained from the EnergyGuide label. This includes both the appliance electricity consumption and the energy required for water heating.", + default_href: "HPXML Clothes Washer" + ) args << makeArgument( type: Argument::Double, name: 'clothes_washer_label_electric_rate', required: false, - display_name: 'Clothes Washer: Label Electric Rate') - units: '$/kWh') - description: "The annual energy consumed by the clothes washer, as rated, obtained from the EnergyGuide label. This includes both the appliance electricity consumption and the energy required for water heating. If not provided, the OS-HPXML default (see HPXML Clothes Washer) is used.") + display_name: 'Clothes Washer: Label Electric Rate', + units: '$/kWh', + description: "The annual energy consumed by the clothes washer, as rated, obtained from the EnergyGuide label. This includes both the appliance electricity consumption and the energy required for water heating.", + default_href: "HPXML Clothes Washer" + ) args << makeArgument( type: Argument::Double, name: 'clothes_washer_label_gas_rate', required: false, - display_name: 'Clothes Washer: Label Gas Rate') - units: '$/therm') - description: "The annual energy consumed by the clothes washer, as rated, obtained from the EnergyGuide label. This includes both the appliance electricity consumption and the energy required for water heating. If not provided, the OS-HPXML default (see HPXML Clothes Washer) is used.") + display_name: 'Clothes Washer: Label Gas Rate', + units: '$/therm', + description: "The annual energy consumed by the clothes washer, as rated, obtained from the EnergyGuide label. This includes both the appliance electricity consumption and the energy required for water heating.", + default_href: "HPXML Clothes Washer" + ) args << makeArgument( type: Argument::Double, name: 'clothes_washer_label_annual_gas_cost', required: false, - display_name: 'Clothes Washer: Label Annual Cost with Gas DHW') - units: '$') - description: "The annual cost of using the system under test conditions. Input is obtained from the EnergyGuide label. If not provided, the OS-HPXML default (see HPXML Clothes Washer) is used.") + display_name: 'Clothes Washer: Label Annual Cost with Gas DHW', + units: '$', + description: "The annual cost of using the system under test conditions. Input is obtained from the EnergyGuide label.", + default_href: "HPXML Clothes Washer" + ) args << makeArgument( type: Argument::Double, name: 'clothes_washer_label_usage', required: false, - display_name: 'Clothes Washer: Label Usage') - units: 'cyc/wk') - description: "The clothes washer loads per week. If not provided, the OS-HPXML default (see HPXML Clothes Washer) is used.") + display_name: 'Clothes Washer: Label Usage', + units: 'cyc/wk', + description: "The clothes washer loads per week.", + default_href: "HPXML Clothes Washer" + ) args << makeArgument( type: Argument::Double, name: 'clothes_washer_capacity', required: false, - display_name: 'Clothes Washer: Drum Volume') - units: 'ft^3') - description: "Volume of the washer drum. Obtained from the EnergyStar website or the manufacturer's literature. If not provided, the OS-HPXML default (see HPXML Clothes Washer) is used.") + display_name: 'Clothes Washer: Drum Volume', + units: 'ft^3', + description: "Volume of the washer drum. Obtained from the EnergyStar website or the manufacturer's literature.", + default_href: "HPXML Clothes Washer" + ) args << makeArgument( type: Argument::Double, name: 'clothes_washer_usage_multiplier', required: false, - display_name: 'Clothes Washer: Usage Multiplier') - description: "Multiplier on the clothes washer energy and hot water usage that can reflect, e.g., high/low usage occupants. If not provided, the OS-HPXML default (see HPXML Clothes Washer) is used.") + display_name: 'Clothes Washer: Usage Multiplier', + description: "Multiplier on the clothes washer energy and hot water usage that can reflect, e.g., high/low usage occupants.", + default_href: "HPXML Clothes Washer" + ) args << makeArgument( name: 'clothes_dryer_present', type: Argument::Boolean, required: true, - display_name: 'Clothes Dryer: Present') - description: 'Whether there is a clothes dryer present.') + display_name: 'Clothes Dryer: Present', + description: 'Whether there is a clothes dryer present.' + ) args << makeArgument( type: Argument::Choice, name: 'clothes_dryer_location', choices: appliance_location_choices, - required: false) - display_name: 'Clothes Dryer: Location') - description: "The space type for the clothes dryer location. If not provided, the OS-HPXML default (see HPXML Clothes Dryer) is used.") + required: false, + display_name: 'Clothes Dryer: Location', + description: "The space type for the clothes dryer location.", + default_href: "HPXML Clothes Dryer" + ) clothes_dryer_fuel_choices = OpenStudio::StringVector.new clothes_dryer_fuel_choices << HPXML::FuelTypeElectricity @@ -3836,55 +4177,66 @@ def makeArgument(name:, type: Argument::Choice, name: 'clothes_dryer_fuel_type', choices: clothes_dryer_fuel_choices, - required: false) - display_name: 'Clothes Dryer: Fuel Type') - description: 'Type of fuel used by the clothes dryer.') + required: false, + display_name: 'Clothes Dryer: Fuel Type', + description: 'Type of fuel used by the clothes dryer.' + ) args << makeArgument( type: Argument::Choice, name: 'clothes_dryer_efficiency_type', choices: clothes_dryer_efficiency_type_choices, - required: false) - display_name: 'Clothes Dryer: Efficiency Type') - description: 'The efficiency type of the clothes dryer.') + required: false, + display_name: 'Clothes Dryer: Efficiency Type', + description: 'The efficiency type of the clothes dryer.' + ) args << makeArgument( type: Argument::Double, name: 'clothes_dryer_efficiency', required: false, - display_name: 'Clothes Dryer: Efficiency') - units: 'lb/kWh') - description: "The efficiency of the clothes dryer. If not provided, the OS-HPXML default (see HPXML Clothes Dryer) is used.") + display_name: 'Clothes Dryer: Efficiency', + units: 'lb/kWh', + description: "The efficiency of the clothes dryer.", + default_href: "HPXML Clothes Dryer" + ) args << makeArgument( type: Argument::Double, name: 'clothes_dryer_vented_flow_rate', required: false, - display_name: 'Clothes Dryer: Vented Flow Rate') - description: "The exhaust flow rate of the vented clothes dryer. If not provided, the OS-HPXML default (see HPXML Clothes Dryer) is used.") - units: 'CFM') + display_name: 'Clothes Dryer: Vented Flow Rate', + description: "The exhaust flow rate of the vented clothes dryer.", + default_href: "HPXML Clothes Dryer", + units: 'CFM' + ) args << makeArgument( type: Argument::Double, name: 'clothes_dryer_usage_multiplier', required: false, - display_name: 'Clothes Dryer: Usage Multiplier') - description: "Multiplier on the clothes dryer energy usage that can reflect, e.g., high/low usage occupants. If not provided, the OS-HPXML default (see HPXML Clothes Dryer) is used.") + display_name: 'Clothes Dryer: Usage Multiplier', + description: "Multiplier on the clothes dryer energy usage that can reflect, e.g., high/low usage occupants.", + default_href: "HPXML Clothes Dryer" + ) args << makeArgument( name: 'dishwasher_present', type: Argument::Boolean, required: true, - display_name: 'Dishwasher: Present') - description: 'Whether there is a dishwasher present.') + display_name: 'Dishwasher: Present', + description: 'Whether there is a dishwasher present.' + ) args << makeArgument( type: Argument::Choice, name: 'dishwasher_location', choices: appliance_location_choices, - required: false) - display_name: 'Dishwasher: Location') - description: "The space type for the dishwasher location. If not provided, the OS-HPXML default (see HPXML Dishwasher) is used.") + required: false, + display_name: 'Dishwasher: Location', + description: "The space type for the dishwasher location.", + default_href: "HPXML Dishwasher" + ) dishwasher_efficiency_type_choices = OpenStudio::StringVector.new dishwasher_efficiency_type_choices << 'RatedAnnualkWh' @@ -3894,154 +4246,190 @@ def makeArgument(name:, type: Argument::Choice, name: 'dishwasher_efficiency_type', choices: dishwasher_efficiency_type_choices, - required: false) - display_name: 'Dishwasher: Efficiency Type') - description: 'The efficiency type of dishwasher.') + required: false, + display_name: 'Dishwasher: Efficiency Type', + description: 'The efficiency type of dishwasher.' + ) args << makeArgument( type: Argument::Double, name: 'dishwasher_efficiency', required: false, - display_name: 'Dishwasher: Efficiency') - units: 'RatedAnnualkWh or EnergyFactor') - description: "The efficiency of the dishwasher. If not provided, the OS-HPXML default (see HPXML Dishwasher) is used.") + display_name: 'Dishwasher: Efficiency', + units: 'RatedAnnualkWh or EnergyFactor', + description: "The efficiency of the dishwasher.", + default_href: "HPXML Dishwasher" + ) args << makeArgument( type: Argument::Double, name: 'dishwasher_label_electric_rate', required: false, - display_name: 'Dishwasher: Label Electric Rate') - units: '$/kWh') - description: "The label electric rate of the dishwasher. If not provided, the OS-HPXML default (see HPXML Dishwasher) is used.") + display_name: 'Dishwasher: Label Electric Rate', + units: '$/kWh', + description: "The label electric rate of the dishwasher.", + default_href: "HPXML Dishwasher" + ) args << makeArgument( type: Argument::Double, name: 'dishwasher_label_gas_rate', required: false, - display_name: 'Dishwasher: Label Gas Rate') - units: '$/therm') - description: "The label gas rate of the dishwasher. If not provided, the OS-HPXML default (see HPXML Dishwasher) is used.") + display_name: 'Dishwasher: Label Gas Rate', + units: '$/therm', + description: "The label gas rate of the dishwasher.", + default_href: "HPXML Dishwasher" + ) args << makeArgument( type: Argument::Double, name: 'dishwasher_label_annual_gas_cost', required: false, - display_name: 'Dishwasher: Label Annual Gas Cost') - units: '$') - description: "The label annual gas cost of the dishwasher. If not provided, the OS-HPXML default (see HPXML Dishwasher) is used.") + display_name: 'Dishwasher: Label Annual Gas Cost', + units: '$', + description: "The label annual gas cost of the dishwasher.", + default_href: "HPXML Dishwasher" + ) args << makeArgument( type: Argument::Double, name: 'dishwasher_label_usage', required: false, - display_name: 'Dishwasher: Label Usage') - units: 'cyc/wk') - description: "The dishwasher loads per week. If not provided, the OS-HPXML default (see HPXML Dishwasher) is used.") + display_name: 'Dishwasher: Label Usage', + units: 'cyc/wk', + description: "The dishwasher loads per week.", + default_href: "HPXML Dishwasher" + ) args << makeArgument( type: Argument::Integer, name: 'dishwasher_place_setting_capacity', required: false, - display_name: 'Dishwasher: Number of Place Settings') - units: '#') - description: "The number of place settings for the unit. Data obtained from manufacturer's literature. If not provided, the OS-HPXML default (see HPXML Dishwasher) is used.") + display_name: 'Dishwasher: Number of Place Settings', + units: '#', + description: "The number of place settings for the unit. Data obtained from manufacturer's literature.", + default_href: "HPXML Dishwasher" + ) args << makeArgument( type: Argument::Double, name: 'dishwasher_usage_multiplier', required: false, - display_name: 'Dishwasher: Usage Multiplier') - description: "Multiplier on the dishwasher energy usage that can reflect, e.g., high/low usage occupants. If not provided, the OS-HPXML default (see HPXML Dishwasher) is used.") + display_name: 'Dishwasher: Usage Multiplier', + description: "Multiplier on the dishwasher energy usage that can reflect, e.g., high/low usage occupants.", + default_href: "HPXML Dishwasher" + ) args << makeArgument( name: 'refrigerator_present', type: Argument::Boolean, required: true, - display_name: 'Refrigerator: Present') - description: 'Whether there is a refrigerator present.') + display_name: 'Refrigerator: Present', + description: 'Whether there is a refrigerator present.' + ) args << makeArgument( type: Argument::Choice, name: 'refrigerator_location', choices: appliance_location_choices, - required: false) - display_name: 'Refrigerator: Location') - description: "The space type for the refrigerator location. If not provided, the OS-HPXML default (see HPXML Refrigerators) is used.") + required: false, + display_name: 'Refrigerator: Location', + description: "The space type for the refrigerator location.", + default_href: "HPXML Refrigerators" + ) args << makeArgument( type: Argument::Double, name: 'refrigerator_rated_annual_kwh', required: false, - display_name: 'Refrigerator: Rated Annual Consumption') - units: 'kWh/yr') - description: "The EnergyGuide rated annual energy consumption for a refrigerator. If not provided, the OS-HPXML default (see HPXML Refrigerators) is used.") + display_name: 'Refrigerator: Rated Annual Consumption', + units: 'kWh/yr', + description: "The EnergyGuide rated annual energy consumption for a refrigerator.", + default_href: "HPXML Refrigerators" + ) args << makeArgument( type: Argument::Double, name: 'refrigerator_usage_multiplier', required: false, - display_name: 'Refrigerator: Usage Multiplier') - description: "Multiplier on the refrigerator energy usage that can reflect, e.g., high/low usage occupants. If not provided, the OS-HPXML default (see HPXML Refrigerators) is used.") + display_name: 'Refrigerator: Usage Multiplier', + description: "Multiplier on the refrigerator energy usage that can reflect, e.g., high/low usage occupants.", + default_href: "HPXML Refrigerators" + ) args << makeArgument( name: 'extra_refrigerator_present', type: Argument::Boolean, required: false, - display_name: 'Extra Refrigerator: Present') - description: 'Whether there is an extra refrigerator present. If not provided, defaults to false.') + display_name: 'Extra Refrigerator: Present', + description: 'Whether there is an extra refrigerator present. If not provided, defaults to false.' + ) args << makeArgument( type: Argument::Choice, name: 'extra_refrigerator_location', choices: appliance_location_choices, - required: false) - display_name: 'Extra Refrigerator: Location') - description: "The space type for the extra refrigerator location. If not provided, the OS-HPXML default (see HPXML Refrigerators) is used.") + required: false, + display_name: 'Extra Refrigerator: Location', + description: "The space type for the extra refrigerator location.", + default_href: "HPXML Refrigerators" + ) args << makeArgument( type: Argument::Double, name: 'extra_refrigerator_rated_annual_kwh', required: false, - display_name: 'Extra Refrigerator: Rated Annual Consumption') - units: 'kWh/yr') - description: "The EnergyGuide rated annual energy consumption for an extra refrigerator. If not provided, the OS-HPXML default (see HPXML Refrigerators) is used.") + display_name: 'Extra Refrigerator: Rated Annual Consumption', + units: 'kWh/yr', + description: "The EnergyGuide rated annual energy consumption for an extra refrigerator.", + default_href: "HPXML Refrigerators" + ) args << makeArgument( type: Argument::Double, name: 'extra_refrigerator_usage_multiplier', required: false, - display_name: 'Extra Refrigerator: Usage Multiplier') - description: "Multiplier on the extra refrigerator energy usage that can reflect, e.g., high/low usage occupants. If not provided, the OS-HPXML default (see HPXML Refrigerators) is used.") + display_name: 'Extra Refrigerator: Usage Multiplier', + description: "Multiplier on the extra refrigerator energy usage that can reflect, e.g., high/low usage occupants.", + default_href: "HPXML Refrigerators" + ) args << makeArgument( name: 'freezer_present', type: Argument::Boolean, required: false, - display_name: 'Freezer: Present') - description: 'Whether there is a freezer present. If not provided, defaults to false.') + display_name: 'Freezer: Present', + description: 'Whether there is a freezer present. If not provided, defaults to false.' + ) args << makeArgument( type: Argument::Choice, name: 'freezer_location', choices: appliance_location_choices, - required: false) - display_name: 'Freezer: Location') - description: "The space type for the freezer location. If not provided, the OS-HPXML default (see HPXML Freezers) is used.") + required: false, + display_name: 'Freezer: Location', + description: "The space type for the freezer location.", + default_href: "HPXML Freezers" + ) args << makeArgument( type: Argument::Double, name: 'freezer_rated_annual_kwh', required: false, - display_name: 'Freezer: Rated Annual Consumption') - units: 'kWh/yr') - description: "The EnergyGuide rated annual energy consumption for a freezer. If not provided, the OS-HPXML default (see HPXML Freezers) is used.") + display_name: 'Freezer: Rated Annual Consumption', + units: 'kWh/yr', + description: "The EnergyGuide rated annual energy consumption for a freezer.", + default_href: "HPXML Freezers" + ) args << makeArgument( type: Argument::Double, name: 'freezer_usage_multiplier', required: false, - display_name: 'Freezer: Usage Multiplier') - description: "Multiplier on the freezer energy usage that can reflect, e.g., high/low usage occupants. If not provided, the OS-HPXML default (see HPXML Freezers) is used.") + display_name: 'Freezer: Usage Multiplier', + description: "Multiplier on the freezer energy usage that can reflect, e.g., high/low usage occupants.", + default_href: "HPXML Freezers" + ) cooking_range_oven_fuel_choices = OpenStudio::StringVector.new cooking_range_oven_fuel_choices << HPXML::FuelTypeElectricity @@ -4055,181 +4443,223 @@ def makeArgument(name:, name: 'cooking_range_oven_present', type: Argument::Boolean, required: true, - display_name: 'Cooking Range/Oven: Present') - description: 'Whether there is a cooking range/oven present.') + display_name: 'Cooking Range/Oven: Present', + description: 'Whether there is a cooking range/oven present.' + ) args << makeArgument( type: Argument::Choice, name: 'cooking_range_oven_location', choices: appliance_location_choices, - required: false) - display_name: 'Cooking Range/Oven: Location') - description: "The space type for the cooking range/oven location. If not provided, the OS-HPXML default (see HPXML Cooking Range/Oven) is used.") + required: false, + display_name: 'Cooking Range/Oven: Location', + description: "The space type for the cooking range/oven location.", + default_href: "HPXML Cooking Range/Oven" + ) args << makeArgument( type: Argument::Choice, name: 'cooking_range_oven_fuel_type', choices: cooking_range_oven_fuel_choices, - required: false) - display_name: 'Cooking Range/Oven: Fuel Type') - description: 'Type of fuel used by the cooking range/oven.') + required: false, + display_name: 'Cooking Range/Oven: Fuel Type', + description: 'Type of fuel used by the cooking range/oven.' + ) args << makeArgument( name: 'cooking_range_oven_is_induction', type: Argument::Boolean, required: false, - display_name: 'Cooking Range/Oven: Is Induction') - description: "Whether the cooking range is induction. If not provided, the OS-HPXML default (see HPXML Cooking Range/Oven) is used.") + display_name: 'Cooking Range/Oven: Is Induction', + description: "Whether the cooking range is induction.", + default_href: "HPXML Cooking Range/Oven" + ) args << makeArgument( name: 'cooking_range_oven_is_convection', type: Argument::Boolean, required: false, - display_name: 'Cooking Range/Oven: Is Convection') - description: "Whether the oven is convection. If not provided, the OS-HPXML default (see HPXML Cooking Range/Oven) is used.") + display_name: 'Cooking Range/Oven: Is Convection', + description: "Whether the oven is convection.", + default_href: "HPXML Cooking Range/Oven" + ) args << makeArgument( type: Argument::Double, name: 'cooking_range_oven_usage_multiplier', required: false, - display_name: 'Cooking Range/Oven: Usage Multiplier') - description: "Multiplier on the cooking range/oven energy usage that can reflect, e.g., high/low usage occupants. If not provided, the OS-HPXML default (see HPXML Cooking Range/Oven) is used.") + display_name: 'Cooking Range/Oven: Usage Multiplier', + description: "Multiplier on the cooking range/oven energy usage that can reflect, e.g., high/low usage occupants.", + default_href: "HPXML Cooking Range/Oven" + ) args << makeArgument( name: 'ceiling_fan_present', type: Argument::Boolean, required: true, - display_name: 'Ceiling Fan: Present') - description: 'Whether there are any ceiling fans.') + display_name: 'Ceiling Fan: Present', + description: 'Whether there are any ceiling fans.' + ) args << makeArgument( type: Argument::Double, name: 'ceiling_fan_label_energy_use', required: false, - display_name: 'Ceiling Fan: Label Energy Use') - units: 'W') - description: "The label average energy use of the ceiling fan(s). If neither Efficiency nor Label Energy Use provided, the OS-HPXML default (see HPXML Ceiling Fans) is used.") + display_name: 'Ceiling Fan: Label Energy Use', + units: 'W', + description: "The label average energy use of the ceiling fan(s).", + default_href: "HPXML Ceiling Fans" + ) args << makeArgument( type: Argument::Double, name: 'ceiling_fan_efficiency', required: false, - display_name: 'Ceiling Fan: Efficiency') - units: 'CFM/W') - description: "The efficiency rating of the ceiling fan(s) at medium speed. Only used if Label Energy Use not provided. If neither Efficiency nor Label Energy Use provided, the OS-HPXML default (see HPXML Ceiling Fans) is used.") + display_name: 'Ceiling Fan: Efficiency', + units: 'CFM/W', + description: "The efficiency rating of the ceiling fan(s) at medium speed. Only used if Label Energy Use not provided.", + default_href: "HPXML Ceiling Fans" + ) args << makeArgument( type: Argument::Integer, name: 'ceiling_fan_quantity', required: false, - display_name: 'Ceiling Fan: Quantity') - units: '#') - description: "Total number of ceiling fans. If not provided, the OS-HPXML default (see HPXML Ceiling Fans) is used.") + display_name: 'Ceiling Fan: Quantity', + units: '#', + description: "Total number of ceiling fans.", + default_href: "HPXML Ceiling Fans" + ) args << makeArgument( type: Argument::Double, name: 'ceiling_fan_cooling_setpoint_temp_offset', required: false, - display_name: 'Ceiling Fan: Cooling Setpoint Temperature Offset') - units: 'F') - description: "The cooling setpoint temperature offset during months when the ceiling fans are operating. Only applies if ceiling fan quantity is greater than zero. If not provided, the OS-HPXML default (see HPXML Ceiling Fans) is used.") + display_name: 'Ceiling Fan: Cooling Setpoint Temperature Offset', + units: 'F', + description: "The cooling setpoint temperature offset during months when the ceiling fans are operating. Only applies if ceiling fan quantity is greater than zero.", + default_href: "HPXML Ceiling Fans" + ) args << makeArgument( name: 'misc_plug_loads_television_present', type: Argument::Boolean, required: true, - display_name: 'Misc Plug Loads: Television Present') - description: 'Whether there are televisions.') + display_name: 'Misc Plug Loads: Television Present', + description: 'Whether there are televisions.' + ) args << makeArgument( type: Argument::Double, name: 'misc_plug_loads_television_annual_kwh', required: false, - display_name: 'Misc Plug Loads: Television Annual kWh') - description: "The annual energy consumption of the television plug loads. If not provided, the OS-HPXML default (see HPXML Plug Loads) is used.") - units: 'kWh/yr') + display_name: 'Misc Plug Loads: Television Annual kWh', + description: "The annual energy consumption of the television plug loads.", + default_href: "HPXML Plug Loads", + units: 'kWh/yr' + ) args << makeArgument( type: Argument::Double, name: 'misc_plug_loads_television_usage_multiplier', required: false, - display_name: 'Misc Plug Loads: Television Usage Multiplier') - description: "Multiplier on the television energy usage that can reflect, e.g., high/low usage occupants. If not provided, the OS-HPXML default (see HPXML Plug Loads) is used.") + display_name: 'Misc Plug Loads: Television Usage Multiplier', + description: "Multiplier on the television energy usage that can reflect, e.g., high/low usage occupants.", + default_href: "HPXML Plug Loads" + ) args << makeArgument( type: Argument::Double, name: 'misc_plug_loads_other_annual_kwh', required: false, - display_name: 'Misc Plug Loads: Other Annual kWh') - description: "The annual energy consumption of the other residual plug loads. If not provided, the OS-HPXML default (see HPXML Plug Loads) is used.") - units: 'kWh/yr') + display_name: 'Misc Plug Loads: Other Annual kWh', + description: "The annual energy consumption of the other residual plug loads.", + default_href: "HPXML Plug Loads", + units: 'kWh/yr' + ) args << makeArgument( type: Argument::Double, name: 'misc_plug_loads_other_frac_sensible', required: false, - display_name: 'Misc Plug Loads: Other Sensible Fraction') - description: "Fraction of other residual plug loads' internal gains that are sensible. If not provided, the OS-HPXML default (see HPXML Plug Loads) is used.") - units: 'Frac') + display_name: 'Misc Plug Loads: Other Sensible Fraction', + description: "Fraction of other residual plug loads' internal gains that are sensible.", + default_href: "HPXML Plug Loads", + units: 'Frac' + ) args << makeArgument( type: Argument::Double, name: 'misc_plug_loads_other_frac_latent', required: false, - display_name: 'Misc Plug Loads: Other Latent Fraction') - description: "Fraction of other residual plug loads' internal gains that are latent. If not provided, the OS-HPXML default (see HPXML Plug Loads) is used.") - units: 'Frac') + display_name: 'Misc Plug Loads: Other Latent Fraction', + description: "Fraction of other residual plug loads' internal gains that are latent.", + default_href: "HPXML Plug Loads", + units: 'Frac' + ) args << makeArgument( type: Argument::Double, name: 'misc_plug_loads_other_usage_multiplier', required: false, - display_name: 'Misc Plug Loads: Other Usage Multiplier') - description: "Multiplier on the other energy usage that can reflect, e.g., high/low usage occupants. If not provided, the OS-HPXML default (see HPXML Plug Loads) is used.") + display_name: 'Misc Plug Loads: Other Usage Multiplier', + description: "Multiplier on the other energy usage that can reflect, e.g., high/low usage occupants.", + default_href: "HPXML Plug Loads" + ) args << makeArgument( name: 'misc_plug_loads_well_pump_present', type: Argument::Boolean, required: false, - display_name: 'Misc Plug Loads: Well Pump Present') - description: 'Whether there is a well pump. If not provided, defaults to false.') + display_name: 'Misc Plug Loads: Well Pump Present', + description: 'Whether there is a well pump. If not provided, defaults to false.' + ) args << makeArgument( type: Argument::Double, name: 'misc_plug_loads_well_pump_annual_kwh', required: false, - display_name: 'Misc Plug Loads: Well Pump Annual kWh') - description: "The annual energy consumption of the well pump plug loads. If not provided, the OS-HPXML default (see HPXML Plug Loads) is used.") - units: 'kWh/yr') + display_name: 'Misc Plug Loads: Well Pump Annual kWh', + description: "The annual energy consumption of the well pump plug loads.", + default_href: "HPXML Plug Loads", + units: 'kWh/yr' + ) args << makeArgument( type: Argument::Double, name: 'misc_plug_loads_well_pump_usage_multiplier', required: false, - display_name: 'Misc Plug Loads: Well Pump Usage Multiplier') - description: "Multiplier on the well pump energy usage that can reflect, e.g., high/low usage occupants. If not provided, the OS-HPXML default (see HPXML Plug Loads) is used.") + display_name: 'Misc Plug Loads: Well Pump Usage Multiplier', + description: "Multiplier on the well pump energy usage that can reflect, e.g., high/low usage occupants.", + default_href: "HPXML Plug Loads" + ) args << makeArgument( name: 'misc_plug_loads_vehicle_present', type: Argument::Boolean, required: false, - display_name: 'Misc Plug Loads: Vehicle Present') - description: 'Whether there is an electric vehicle. If not provided, defaults to false.') + display_name: 'Misc Plug Loads: Vehicle Present', + description: 'Whether there is an electric vehicle. If not provided, defaults to false.' + ) args << makeArgument( type: Argument::Double, name: 'misc_plug_loads_vehicle_annual_kwh', required: false, - display_name: 'Misc Plug Loads: Vehicle Annual kWh') - description: "The annual energy consumption of the electric vehicle plug loads. If not provided, the OS-HPXML default (see HPXML Plug Loads) is used.") - units: 'kWh/yr') + display_name: 'Misc Plug Loads: Vehicle Annual kWh', + description: "The annual energy consumption of the electric vehicle plug loads.", + default_href: "HPXML Plug Loads", + units: 'kWh/yr' + ) args << makeArgument( type: Argument::Double, name: 'misc_plug_loads_vehicle_usage_multiplier', required: false, - display_name: 'Misc Plug Loads: Vehicle Usage Multiplier') - description: "Multiplier on the electric vehicle energy usage that can reflect, e.g., high/low usage occupants. If not provided, the OS-HPXML default (see HPXML Plug Loads) is used.") + display_name: 'Misc Plug Loads: Vehicle Usage Multiplier', + description: "Multiplier on the electric vehicle energy usage that can reflect, e.g., high/low usage occupants.", + default_href: "HPXML Plug Loads" + ) misc_fuel_loads_fuel_choices = OpenStudio::StringVector.new misc_fuel_loads_fuel_choices << HPXML::FuelTypeNaturalGas @@ -4242,107 +4672,129 @@ def makeArgument(name:, name: 'misc_fuel_loads_grill_present', type: Argument::Boolean, required: false, - display_name: 'Misc Fuel Loads: Grill Present') - description: 'Whether there is a fuel loads grill. If not provided, defaults to false.') + display_name: 'Misc Fuel Loads: Grill Present', + description: 'Whether there is a fuel loads grill. If not provided, defaults to false.' + ) args << makeArgument( type: Argument::Choice, name: 'misc_fuel_loads_grill_fuel_type', choices: misc_fuel_loads_fuel_choices, - required: false) - display_name: 'Misc Fuel Loads: Grill Fuel Type') - description: 'The fuel type of the fuel loads grill.') + required: false, + display_name: 'Misc Fuel Loads: Grill Fuel Type', + description: 'The fuel type of the fuel loads grill.' + ) args << makeArgument( type: Argument::Double, name: 'misc_fuel_loads_grill_annual_therm', required: false, - display_name: 'Misc Fuel Loads: Grill Annual therm') - description: "The annual energy consumption of the fuel loads grill. If not provided, the OS-HPXML default (see HPXML Fuel Loads) is used.") - units: 'therm/yr') + display_name: 'Misc Fuel Loads: Grill Annual therm', + description: "The annual energy consumption of the fuel loads grill.", + default_href: "HPXML Fuel Loads", + units: 'therm/yr' + ) args << makeArgument( type: Argument::Double, name: 'misc_fuel_loads_grill_usage_multiplier', required: false, - display_name: 'Misc Fuel Loads: Grill Usage Multiplier') - description: "Multiplier on the fuel loads grill energy usage that can reflect, e.g., high/low usage occupants. If not provided, the OS-HPXML default (see HPXML Fuel Loads) is used.") + display_name: 'Misc Fuel Loads: Grill Usage Multiplier', + description: "Multiplier on the fuel loads grill energy usage that can reflect, e.g., high/low usage occupants.", + default_href: "HPXML Fuel Loads" + ) args << makeArgument( name: 'misc_fuel_loads_lighting_present', type: Argument::Boolean, required: false, - display_name: 'Misc Fuel Loads: Lighting Present') - description: 'Whether there is fuel loads lighting. If not provided, defaults to false.') + display_name: 'Misc Fuel Loads: Lighting Present', + description: 'Whether there is fuel loads lighting. If not provided, defaults to false.' + ) args << makeArgument( type: Argument::Choice, name: 'misc_fuel_loads_lighting_fuel_type', choices: misc_fuel_loads_fuel_choices, - required: false) - display_name: 'Misc Fuel Loads: Lighting Fuel Type') - description: 'The fuel type of the fuel loads lighting.') + required: false, + display_name: 'Misc Fuel Loads: Lighting Fuel Type', + description: 'The fuel type of the fuel loads lighting.' + ) args << makeArgument( type: Argument::Double, name: 'misc_fuel_loads_lighting_annual_therm', required: false, - display_name: 'Misc Fuel Loads: Lighting Annual therm') - description: "The annual energy consumption of the fuel loads lighting. If not provided, the OS-HPXML default (see HPXML Fuel Loads)is used.") - units: 'therm/yr') + display_name: 'Misc Fuel Loads: Lighting Annual therm', + description: "The annual energy consumption of the fuel loads lighting.", + default_href: "HPXML Fuel Loads", + units: 'therm/yr' + ) args << makeArgument( type: Argument::Double, name: 'misc_fuel_loads_lighting_usage_multiplier', required: false, - display_name: 'Misc Fuel Loads: Lighting Usage Multiplier') - description: "Multiplier on the fuel loads lighting energy usage that can reflect, e.g., high/low usage occupants. If not provided, the OS-HPXML default (see HPXML Fuel Loads) is used.") + display_name: 'Misc Fuel Loads: Lighting Usage Multiplier', + description: "Multiplier on the fuel loads lighting energy usage that can reflect, e.g., high/low usage occupants.", + default_href: "HPXML Fuel Loads" + ) args << makeArgument( name: 'misc_fuel_loads_fireplace_present', type: Argument::Boolean, required: false, - display_name: 'Misc Fuel Loads: Fireplace Present') - description: 'Whether there is fuel loads fireplace. If not provided, defaults to false.') + display_name: 'Misc Fuel Loads: Fireplace Present', + description: 'Whether there is fuel loads fireplace. If not provided, defaults to false.' + ) args << makeArgument( type: Argument::Choice, name: 'misc_fuel_loads_fireplace_fuel_type', choices: misc_fuel_loads_fuel_choices, - required: false) - display_name: 'Misc Fuel Loads: Fireplace Fuel Type') - description: 'The fuel type of the fuel loads fireplace.') + required: false, + display_name: 'Misc Fuel Loads: Fireplace Fuel Type', + description: 'The fuel type of the fuel loads fireplace.' + ) args << makeArgument( type: Argument::Double, name: 'misc_fuel_loads_fireplace_annual_therm', required: false, - display_name: 'Misc Fuel Loads: Fireplace Annual therm') - description: "The annual energy consumption of the fuel loads fireplace. If not provided, the OS-HPXML default (see HPXML Fuel Loads) is used.") - units: 'therm/yr') + display_name: 'Misc Fuel Loads: Fireplace Annual therm', + description: "The annual energy consumption of the fuel loads fireplace.", + default_href: "HPXML Fuel Loads", + units: 'therm/yr' + ) args << makeArgument( type: Argument::Double, name: 'misc_fuel_loads_fireplace_frac_sensible', required: false, - display_name: 'Misc Fuel Loads: Fireplace Sensible Fraction') - description: "Fraction of fireplace residual fuel loads' internal gains that are sensible. If not provided, the OS-HPXML default (see HPXML Fuel Loads) is used.") - units: 'Frac') + display_name: 'Misc Fuel Loads: Fireplace Sensible Fraction', + description: "Fraction of fireplace residual fuel loads' internal gains that are sensible.", + default_href: "HPXML Fuel Loads", + units: 'Frac' + ) args << makeArgument( type: Argument::Double, name: 'misc_fuel_loads_fireplace_frac_latent', required: false, - display_name: 'Misc Fuel Loads: Fireplace Latent Fraction') - description: "Fraction of fireplace residual fuel loads' internal gains that are latent. If not provided, the OS-HPXML default (see HPXML Fuel Loads) is used.") - units: 'Frac') + display_name: 'Misc Fuel Loads: Fireplace Latent Fraction', + description: "Fraction of fireplace residual fuel loads' internal gains that are latent.", + default_href: "HPXML Fuel Loads", + units: 'Frac' + ) args << makeArgument( type: Argument::Double, name: 'misc_fuel_loads_fireplace_usage_multiplier' required: false, - display_name: 'Misc Fuel Loads: Fireplace Usage Multiplier') - description: "Multiplier on the fuel loads fireplace energy usage that can reflect, e.g., high/low usage occupants. If not provided, the OS-HPXML default (see HPXML Fuel Loads) is used.") + display_name: 'Misc Fuel Loads: Fireplace Usage Multiplier', + description: "Multiplier on the fuel loads fireplace energy usage that can reflect, e.g., high/low usage occupants.", + default_href: "HPXML Fuel Loads" + ) heater_type_choices = OpenStudio::StringVector.new heater_type_choices << HPXML::TypeNone @@ -4354,182 +4806,217 @@ def makeArgument(name:, name: 'pool_present', type: Argument::Boolean, required: false, - display_name: 'Pool: Present') - description: 'Whether there is a pool. If not provided, defaults to false.') + display_name: 'Pool: Present', + description: 'Whether there is a pool. If not provided, defaults to false.' + ) args << makeArgument( type: Argument::Double, name: 'pool_pump_annual_kwh', required: false, - display_name: 'Pool: Pump Annual kWh') - description: "The annual energy consumption of the pool pump. If not provided, the OS-HPXML default (see Pool Pump) is used.") - units: 'kWh/yr') + display_name: 'Pool: Pump Annual kWh', + description: "The annual energy consumption of the pool pump.", + default_href: "Pool Pump", + units: 'kWh/yr' + ) args << makeArgument( type: Argument::Double, name: 'pool_pump_usage_multiplier', required: false, - display_name: 'Pool: Pump Usage Multiplier') - description: "Multiplier on the pool pump energy usage that can reflect, e.g., high/low usage occupants. If not provided, the OS-HPXML default (see Pool Pump) is used.") + display_name: 'Pool: Pump Usage Multiplier', + description: "Multiplier on the pool pump energy usage that can reflect, e.g., high/low usage occupants.", + default_href: "Pool Pump" + ) args << makeArgument( type: Argument::Choice, name: 'pool_heater_type', choices: heater_type_choices, - required: false) - display_name: 'Pool: Heater Type') - description: "The type of pool heater. Use '#{HPXML::TypeNone}' if there is no pool heater.") + required: false, + display_name: 'Pool: Heater Type', + description: "The type of pool heater. Use '#{HPXML::TypeNone}' if there is no pool heater." + ) args << makeArgument( type: Argument::Double, name: 'pool_heater_annual_kwh', required: false, - display_name: 'Pool: Heater Annual kWh') - description: "The annual energy consumption of the #{HPXML::HeaterTypeElectricResistance} pool heater. If not provided, the OS-HPXML default (see Pool Heater) is used.") - units: 'kWh/yr') + display_name: 'Pool: Heater Annual kWh', + description: "The annual energy consumption of the #{HPXML::HeaterTypeElectricResistance} pool heater.", + default_href: "Pool Heater", + units: 'kWh/yr' + ) args << makeArgument( type: Argument::Double, name: 'pool_heater_annual_therm', required: false, - display_name: 'Pool: Heater Annual therm') - description: "The annual energy consumption of the #{HPXML::HeaterTypeGas} pool heater. If not provided, the OS-HPXML default (see Pool Heater) is used.") - units: 'therm/yr') + display_name: 'Pool: Heater Annual therm', + description: "The annual energy consumption of the #{HPXML::HeaterTypeGas} pool heater.", + default_href: "Pool Heater", + units: 'therm/yr' + ) args << makeArgument( type: Argument::Double, name: 'pool_heater_usage_multiplier', required: false, - display_name: 'Pool: Heater Usage Multiplier') - description: "Multiplier on the pool heater energy usage that can reflect, e.g., high/low usage occupants. If not provided, the OS-HPXML default (see Pool Heater) is used.") + display_name: 'Pool: Heater Usage Multiplier', + description: "Multiplier on the pool heater energy usage that can reflect, e.g., high/low usage occupants.", + default_href: "Pool Heater" + ) args << makeArgument( name: 'permanent_spa_present', type: Argument::Boolean, required: false, - display_name: 'Permanent Spa: Present') - description: 'Whether there is a permanent spa. If not provided, defaults to false.') + display_name: 'Permanent Spa: Present', + description: 'Whether there is a permanent spa. If not provided, defaults to false.' + ) args << makeArgument( type: Argument::Double, name: 'permanent_spa_pump_annual_kwh', required: false, - display_name: 'Permanent Spa: Pump Annual kWh') - description: "The annual energy consumption of the permanent spa pump. If not provided, the OS-HPXML default (see Permanent Spa Pump) is used.") - units: 'kWh/yr') + display_name: 'Permanent Spa: Pump Annual kWh', + description: "The annual energy consumption of the permanent spa pump.", + default_href: "Permanent Spa Pump", + units: 'kWh/yr' + ) args << makeArgument( type: Argument::Double, name: 'permanent_spa_pump_usage_multiplier', required: false, - display_name: 'Permanent Spa: Pump Usage Multiplier') - description: "Multiplier on the permanent spa pump energy usage that can reflect, e.g., high/low usage occupants. If not provided, the OS-HPXML default (see Permanent Spa Pump) is used.") + display_name: 'Permanent Spa: Pump Usage Multiplier', + description: "Multiplier on the permanent spa pump energy usage that can reflect, e.g., high/low usage occupants.", + default_href: "Permanent Spa Pump" + ) args << makeArgument( type: Argument::Choice, name: 'permanent_spa_heater_type', choices: heater_type_choices, - required: false) - display_name: 'Permanent Spa: Heater Type') - description: "The type of permanent spa heater. Use '#{HPXML::TypeNone}' if there is no permanent spa heater.") + required: false, + display_name: 'Permanent Spa: Heater Type', + description: "The type of permanent spa heater. Use '#{HPXML::TypeNone}' if there is no permanent spa heater." + ) args << makeArgument( type: Argument::Double, name: 'permanent_spa_heater_annual_kwh', required: false, - display_name: 'Permanent Spa: Heater Annual kWh') - description: "The annual energy consumption of the #{HPXML::HeaterTypeElectricResistance} permanent spa heater. If not provided, the OS-HPXML default (see Permanent Spa Heater) is used.") - units: 'kWh/yr') + display_name: 'Permanent Spa: Heater Annual kWh', + description: "The annual energy consumption of the #{HPXML::HeaterTypeElectricResistance} permanent spa heater.", + default_href: "Permanent Spa Heater", + units: 'kWh/yr' + ) args << makeArgument( type: Argument::Double, name: 'permanent_spa_heater_annual_therm', required: false, - display_name: 'Permanent Spa: Heater Annual therm') - description: "The annual energy consumption of the #{HPXML::HeaterTypeGas} permanent spa heater. If not provided, the OS-HPXML default (see Permanent Spa Heater) is used.") - units: 'therm/yr') + display_name: 'Permanent Spa: Heater Annual therm', + description: "The annual energy consumption of the #{HPXML::HeaterTypeGas} permanent spa heater.", + default_href: "Permanent Spa Heater", + units: 'therm/yr' + ) args << makeArgument( type: Argument::Double, name: 'permanent_spa_heater_usage_multiplier', required: false, - display_name: 'Permanent Spa: Heater Usage Multiplier') - description: "Multiplier on the permanent spa heater energy usage that can reflect, e.g., high/low usage occupants. If not provided, the OS-HPXML default (see Permanent Spa Heater) is used.") + display_name: 'Permanent Spa: Heater Usage Multiplier', + description: "Multiplier on the permanent spa heater energy usage that can reflect, e.g., high/low usage occupants.", + default_href: "Permanent Spa Heater" + ) args << makeArgument( type: Argument::String, name: 'emissions_scenario_names', required: false, - display_name: 'Emissions: Scenario Names') - description: 'Names of emissions scenarios. If multiple scenarios, use a comma-separated list. If not provided, no emissions scenarios are calculated.') + display_name: 'Emissions: Scenario Names', + description: 'Names of emissions scenarios. If multiple scenarios, use a comma-separated list. If not provided, no emissions scenarios are calculated.' + ) args << makeArgument( type: Argument::String, name: 'emissions_types', required: false, - display_name: 'Emissions: Types') - description: 'Types of emissions (e.g., CO2e, NOx, etc.). If multiple scenarios, use a comma-separated list.') + display_name: 'Emissions: Types', + description: 'Types of emissions (e.g., CO2e, NOx, etc.). If multiple scenarios, use a comma-separated list.' + ) args << makeArgument( type: Argument::String, name: 'emissions_electricity_units', required: false, - display_name: 'Emissions: Electricity Units') - description: 'Electricity emissions factors units. If multiple scenarios, use a comma-separated list. Only lb/MWh and kg/MWh are allowed.') + display_name: 'Emissions: Electricity Units', + description: 'Electricity emissions factors units. If multiple scenarios, use a comma-separated list. Only lb/MWh and kg/MWh are allowed.' + ) args << makeArgument( type: Argument::String, name: 'emissions_electricity_values_or_filepaths', required: false, - display_name: 'Emissions: Electricity Values or File Paths') - description: 'Electricity emissions factors values, specified as either an annual factor or an absolute/relative path to a file with hourly factors. If multiple scenarios, use a comma-separated list.') + display_name: 'Emissions: Electricity Values or File Paths', + description: 'Electricity emissions factors values, specified as either an annual factor or an absolute/relative path to a file with hourly factors. If multiple scenarios, use a comma-separated list.' + ) args << makeArgument( type: Argument::String, name: 'emissions_electricity_number_of_header_rows', required: false, - display_name: 'Emissions: Electricity Files Number of Header Rows') - description: 'The number of header rows in the electricity emissions factor file. Only applies when an electricity filepath is used. If multiple scenarios, use a comma-separated list.') + display_name: 'Emissions: Electricity Files Number of Header Rows', + description: 'The number of header rows in the electricity emissions factor file. Only applies when an electricity filepath is used. If multiple scenarios, use a comma-separated list.' + ) args << makeArgument( type: Argument::String, name: 'emissions_electricity_column_numbers', required: false, - display_name: 'Emissions: Electricity Files Column Numbers') - description: 'The column number in the electricity emissions factor file. Only applies when an electricity filepath is used. If multiple scenarios, use a comma-separated list.') + display_name: 'Emissions: Electricity Files Column Numbers', + description: 'The column number in the electricity emissions factor file. Only applies when an electricity filepath is used. If multiple scenarios, use a comma-separated list.' + ) args << makeArgument( type: Argument::String, name: 'emissions_fossil_fuel_units', required: false, - display_name: 'Emissions: Fossil Fuel Units') - description: 'Fossil fuel emissions factors units. If multiple scenarios, use a comma-separated list. Only lb/MBtu and kg/MBtu are allowed.') + display_name: 'Emissions: Fossil Fuel Units', + description: 'Fossil fuel emissions factors units. If multiple scenarios, use a comma-separated list. Only lb/MBtu and kg/MBtu are allowed.' + ) HPXML::fossil_fuels.each do |fossil_fuel| underscore_case = OpenStudio::toUnderscoreCase(fossil_fuel) all_caps_case = fossil_fuel.split(' ').map(&:capitalize).join(' ') cap_case = fossil_fuel.capitalize - args << makeArgument( - type: Argument::String, - name: "emissions_#{underscore_case}_values", false) - display_name: "Emissions: #{all_caps_case} Values") - description: "#{cap_case} emissions factors values, specified as an annual factor. If multiple scenarios, use a comma-separated list.") + args << makeArgument( + type: Argument::String, + name: "emissions_#{underscore_case}_values", + required: false, + display_name: "Emissions: #{all_caps_case} Values", + description: "#{cap_case} emissions factors values, specified as an annual factor. If multiple scenarios, use a comma-separated list." + ) end args << makeArgument( type: Argument::String, name: 'utility_bill_scenario_names', required: false, - display_name: 'Utility Bills: Scenario Names') - description: 'Names of utility bill scenarios. If multiple scenarios, use a comma-separated list. If not provided, no utility bills scenarios are calculated.') + display_name: 'Utility Bills: Scenario Names', + description: 'Names of utility bill scenarios. If multiple scenarios, use a comma-separated list. If not provided, no utility bills scenarios are calculated.' + ) args << makeArgument( type: Argument::String, name: 'utility_bill_electricity_filepaths', required: false, - display_name: 'Utility Bills: Electricity File Paths') - description: 'Electricity tariff file specified as an absolute/relative path to a file with utility rate structure information. Tariff file must be formatted to OpenEI API version 7. If multiple scenarios, use a comma-separated list.') + display_name: 'Utility Bills: Electricity File Paths', + description: 'Electricity tariff file specified as an absolute/relative path to a file with utility rate structure information. Tariff file must be formatted to OpenEI API version 7. If multiple scenarios, use a comma-separated list.' + ) HPXML::all_fuels.each do |fuel| @@ -4539,9 +5026,11 @@ def makeArgument(name:, args << makeArgument( type: Argument::String, - name: "utility_bill_#{underscore_case}_fixed_charges", false) - display_name: "Utility Bills: #{all_caps_case} Fixed Charges") - description: "#{cap_case} utility bill monthly fixed charges. If multiple scenarios, use a comma-separated list.") + name: "utility_bill_#{underscore_case}_fixed_charges", + required: false, + display_name: "Utility Bills: #{all_caps_case} Fixed Charges", + description: "#{cap_case} utility bill monthly fixed charges. If multiple scenarios, use a comma-separated list." + ) end HPXML::all_fuels.each do |fuel| @@ -4551,81 +5040,92 @@ def makeArgument(name:, args << makeArgument( type: Argument::String, - name: "utility_bill_#{underscore_case}_marginal_rates", false) - display_name: "Utility Bills: #{all_caps_case} Marginal Rates") - description: "#{cap_case} utility bill marginal rates. If multiple scenarios, use a comma-separated list.") + name: "utility_bill_#{underscore_case}_marginal_rates", + required: false, + display_name: "Utility Bills: #{all_caps_case} Marginal Rates", + description: "#{cap_case} utility bill marginal rates. If multiple scenarios, use a comma-separated list." + ) end args << makeArgument( type: Argument::String, name: 'utility_bill_pv_compensation_types', required: false, - display_name: 'Utility Bills: PV Compensation Types') - description: 'Utility bill PV compensation types. If multiple scenarios, use a comma-separated list.') + display_name: 'Utility Bills: PV Compensation Types', + description: 'Utility bill PV compensation types. If multiple scenarios, use a comma-separated list.' + ) args << makeArgument( type: Argument::String, name: 'utility_bill_pv_net_metering_annual_excess_sellback_rate_types', required: false, - display_name: 'Utility Bills: PV Net Metering Annual Excess Sellback Rate Types') - description: "Utility bill PV net metering annual excess sellback rate types. Only applies if the PV compensation type is '#{HPXML::PVCompensationTypeNetMetering}'. If multiple scenarios, use a comma-separated list.") + display_name: 'Utility Bills: PV Net Metering Annual Excess Sellback Rate Types', + description: "Utility bill PV net metering annual excess sellback rate types. Only applies if the PV compensation type is '#{HPXML::PVCompensationTypeNetMetering}'. If multiple scenarios, use a comma-separated list." + ) args << makeArgument( type: Argument::String, name: 'utility_bill_pv_net_metering_annual_excess_sellback_rates', required: false, - display_name: 'Utility Bills: PV Net Metering Annual Excess Sellback Rates') - description: "Utility bill PV net metering annual excess sellback rates. Only applies if the PV compensation type is '#{HPXML::PVCompensationTypeNetMetering}' and the PV annual excess sellback rate type is '#{HPXML::PVAnnualExcessSellbackRateTypeUserSpecified}'. If multiple scenarios, use a comma-separated list.") + display_name: 'Utility Bills: PV Net Metering Annual Excess Sellback Rates', + description: "Utility bill PV net metering annual excess sellback rates. Only applies if the PV compensation type is '#{HPXML::PVCompensationTypeNetMetering}' and the PV annual excess sellback rate type is '#{HPXML::PVAnnualExcessSellbackRateTypeUserSpecified}'. If multiple scenarios, use a comma-separated list." + ) args << makeArgument( type: Argument::String, name: 'utility_bill_pv_feed_in_tariff_rates', required: false, - display_name: 'Utility Bills: PV Feed-In Tariff Rates') - description: "Utility bill PV annual full/gross feed-in tariff rates. Only applies if the PV compensation type is '#{HPXML::PVCompensationTypeFeedInTariff}'. If multiple scenarios, use a comma-separated list.") + display_name: 'Utility Bills: PV Feed-In Tariff Rates', + description: "Utility bill PV annual full/gross feed-in tariff rates. Only applies if the PV compensation type is '#{HPXML::PVCompensationTypeFeedInTariff}'. If multiple scenarios, use a comma-separated list." + ) args << makeArgument( type: Argument::String, name: 'utility_bill_pv_monthly_grid_connection_fee_units', required: false, - display_name: 'Utility Bills: PV Monthly Grid Connection Fee Units') - description: 'Utility bill PV monthly grid connection fee units. If multiple scenarios, use a comma-separated list.') + display_name: 'Utility Bills: PV Monthly Grid Connection Fee Units', + description: 'Utility bill PV monthly grid connection fee units. If multiple scenarios, use a comma-separated list.' + ) args << makeArgument( type: Argument::String, name: 'utility_bill_pv_monthly_grid_connection_fees', required: false, - display_name: 'Utility Bills: PV Monthly Grid Connection Fees') - description: 'Utility bill PV monthly grid connection fees. If multiple scenarios, use a comma-separated list.') + display_name: 'Utility Bills: PV Monthly Grid Connection Fees', + description: 'Utility bill PV monthly grid connection fees. If multiple scenarios, use a comma-separated list.' + ) args << makeArgument( type: Argument::String, name: 'additional_properties', required: false, - display_name: 'Additional Properties') - description: "Additional properties specified as key-value pairs (i.e., key=value). If multiple additional properties, use a |-separated list. For example, 'LowIncome=false|Remodeled|Description=2-story home in Denver'. These properties will be stored in the HPXML file under /HPXML/SoftwareInfo/extension/AdditionalProperties.") + display_name: 'Additional Properties', + description: "Additional properties specified as key-value pairs (i.e., key=value). If multiple additional properties, use a |-separated list. For example, 'LowIncome=false|Remodeled|Description=2-story home in Denver'. These properties will be stored in the HPXML file under /HPXML/SoftwareInfo/extension/AdditionalProperties." + ) args << makeArgument( name: 'combine_like_surfaces', type: Argument::Boolean, required: false, - display_name: 'Combine like surfaces?') - description: 'If true, combines like surfaces to simplify the HPXML file generated.') + display_name: 'Combine like surfaces?', + description: 'If true, combines like surfaces to simplify the HPXML file generated.' + ) args << makeArgument( name: 'apply_defaults', type: Argument::Boolean, required: false, - display_name: 'Apply Default Values?') - description: 'If true, applies OS-HPXML default values to the HPXML output file. Setting to true will also force validation of the HPXML output file before applying OS-HPXML default values.') + display_name: 'Apply Default Values?', + description: 'If true, applies OS-HPXML default values to the HPXML output file. Setting to true will also force validation of the HPXML output file before applying OS-HPXML default values.' + ) args << makeArgument( name: 'apply_validation', type: Argument::Boolean, required: false, - display_name: 'Apply Validation?') - description: 'If true, validates the HPXML output file. Set to false for faster performance. Note that validation is not needed if the HPXML file will be validated downstream (e.g., via the HPXMLtoOpenStudio measure).') - + display_name: 'Apply Validation?', + description: 'If true, validates the HPXML output file. Set to false for faster performance. Note that validation is not needed if the HPXML file will be validated downstream (e.g., via the HPXMLtoOpenStudio measure).' + ) return args end @@ -8243,7 +8743,7 @@ def self.set_extra_refrigerator(hpxml_bldg, args) location: args[:extra_refrigerator_location], rated_annual_kwh: args[:extra_refrigerator_rated_annual_kwh], usage_multiplier: args[:extra_refrigerator_usage_multiplier], - primary_indicator: false) + primary_indicator: false, hpxml_bldg.refrigerators[0].primary_indicator = true end From dba3891e5a862a86c12930afc72d6b664a2d3fa3 Mon Sep 17 00:00:00 2001 From: Joe Robertson Date: Sat, 2 Nov 2024 13:35:43 -0700 Subject: [PATCH 20/33] Clean up. --- BuildResidentialHPXML/README.md | 1020 ++++++++----------- BuildResidentialHPXML/measure.rb | 1537 +++++++++++++++-------------- BuildResidentialHPXML/measure.xml | 1174 ++++++++++++---------- 3 files changed, 1805 insertions(+), 1926 deletions(-) diff --git a/BuildResidentialHPXML/README.md b/BuildResidentialHPXML/README.md index 5e77e6f806..44fa638cb6 100644 --- a/BuildResidentialHPXML/README.md +++ b/BuildResidentialHPXML/README.md @@ -134,12 +134,10 @@ Enter a date range like 'Jan 1 - Dec 31'. If not provided, the OS-HPXML default **Simulation Control: Run Period Calendar Year** -This numeric field should contain the calendar year that determines the start day of week. If you are running simulations using AMY weather files, the value entered for calendar year will not be used; it will be overridden by the actual year found in the AMY weather file. If not provided, the OS-HPXML default (see HPXML Simulation Control) is used. +This numeric field should contain the calendar year that determines the start day of week. If you are running simulations using AMY weather files, the value entered for calendar year will not be used; it will be overridden by the actual year found in the AMY weather file. If auto or not provided, the OS-HPXML default (see HPXML Simulation Control) is used. - **Name:** ``simulation_control_run_period_calendar_year`` -- **Type:** ``Integer`` - -- **Units:** ``year`` +- **Type:** ``String`` - **Required:** ``false`` @@ -160,7 +158,7 @@ Whether to use daylight saving. If auto or not provided, the OS-HPXML default (s **Simulation Control: Daylight Saving Period** -Enter a date range like 'Mar 15 - Dec 15'. If not provided, the OS-HPXML default (see HPXML Building Site) is used. +Enter a date range like 'Mar 15 - Dec 15'. If auto or not provided, the OS-HPXML default (see HPXML Building Site) is used. - **Name:** ``simulation_control_daylight_saving_period`` - **Type:** ``String`` @@ -171,7 +169,7 @@ Enter a date range like 'Mar 15 - Dec 15'. If not provided, the OS-HPXML default **Simulation Control: Temperature Capacitance Multiplier** -Affects the transient calculation of indoor air temperatures. If not provided, the OS-HPXML default (see HPXML Simulation Control) is used. +Affects the transient calculation of indoor air temperatures. If auto or not provided, the OS-HPXML default (see HPXML Simulation Control) is used. - **Name:** ``simulation_control_temperature_capacitance_multiplier`` - **Type:** ``String`` @@ -221,40 +219,40 @@ Research feature to model capacity increment of multi-stage heat pump backup sys **Site: Type** -The type of site. If not provided, the OS-HPXML default (see HPXML Site) is used. +The type of site. If auto or not provided, the OS-HPXML default (see HPXML Site) is used. - **Name:** ``site_type`` - **Type:** ``Choice`` - **Required:** ``false`` -- **Choices:** `suburban`, `urban`, `rural` +- **Choices:** `auto`, `suburban`, `urban`, `rural`
**Site: Shielding of Home** -Presence of nearby buildings, trees, obstructions for infiltration model. If not provided, the OS-HPXML default (see HPXML Site) is used. +Presence of nearby buildings, trees, obstructions for infiltration model. If auto or not provided, the OS-HPXML default (see HPXML Site) is used. - **Name:** ``site_shielding_of_home`` - **Type:** ``Choice`` - **Required:** ``false`` -- **Choices:** `exposed`, `normal`, `well-shielded` +- **Choices:** `auto`, `exposed`, `normal`, `well-shielded`
**Site: Soil and Moisture Type** -Type of soil and moisture. This is used to inform ground conductivity and diffusivity. If not provided, the OS-HPXML default (see HPXML Site) is used. +Type of soil and moisture. This is used to inform ground conductivity and diffusivity. If auto or not provided, the OS-HPXML default (see HPXML Site) is used. - **Name:** ``site_soil_and_moisture_type`` - **Type:** ``Choice`` - **Required:** ``false`` -- **Choices:** `clay, dry`, `clay, mixed`, `clay, wet`, `gravel, dry`, `gravel, mixed`, `gravel, wet`, `loam, dry`, `loam, mixed`, `loam, wet`, `sand, dry`, `sand, mixed`, `sand, wet`, `silt, dry`, `silt, mixed`, `silt, wet`, `unknown, dry`, `unknown, mixed`, `unknown, wet` +- **Choices:** `auto`, `clay, dry`, `clay, mixed`, `clay, wet`, `gravel, dry`, `gravel, mixed`, `gravel, wet`, `loam, dry`, `loam, mixed`, `loam, wet`, `sand, dry`, `sand, mixed`, `sand, wet`, `silt, dry`, `silt, mixed`, `silt, wet`, `unknown, dry`, `unknown, mixed`, `unknown, wet`
@@ -310,14 +308,14 @@ City/municipality of the home address. **Site: State Code** -State code of the home address. If not provided, the OS-HPXML default (see HPXML Site) is used. +State code of the home address. If auto or not provided, the OS-HPXML default (see HPXML Site) is used. - **Name:** ``site_state_code`` - **Type:** ``Choice`` - **Required:** ``false`` -- **Choices:** `AK`, `AL`, `AR`, `AZ`, `CA`, `CO`, `CT`, `DC`, `DE`, `FL`, `GA`, `HI`, `IA`, `ID`, `IL`, `IN`, `KS`, `KY`, `LA`, `MA`, `MD`, `ME`, `MI`, `MN`, `MO`, `MS`, `MT`, `NC`, `ND`, `NE`, `NH`, `NJ`, `NM`, `NV`, `NY`, `OH`, `OK`, `OR`, `PA`, `RI`, `SC`, `SD`, `TN`, `TX`, `UT`, `VA`, `VT`, `WA`, `WI`, `WV`, `WY` +- **Choices:** `auto`, `AK`, `AL`, `AR`, `AZ`, `CA`, `CO`, `CT`, `DC`, `DE`, `FL`, `GA`, `HI`, `IA`, `ID`, `IL`, `IN`, `KS`, `KY`, `LA`, `MA`, `MD`, `ME`, `MI`, `MN`, `MO`, `MS`, `MT`, `NC`, `ND`, `NE`, `NH`, `NJ`, `NM`, `NV`, `NY`, `OH`, `OK`, `OR`, `PA`, `RI`, `SC`, `SD`, `TN`, `TX`, `UT`, `VA`, `VT`, `WA`, `WI`, `WV`, `WY`
@@ -345,12 +343,10 @@ Time zone UTC offset of the home address. Must be between -12 and 14. If auto or **Site: Elevation** -Elevation of the home address. If not provided, the OS-HPXML default (see HPXML Site) is used. +Elevation of the home address. If auto or not provided, the OS-HPXML default (see HPXML Site) is used. - **Name:** ``site_elevation`` -- **Type:** ``Double`` - -- **Units:** ``ft`` +- **Type:** ``String`` - **Required:** ``false`` @@ -358,12 +354,10 @@ Elevation of the home address. If not provided, the OS-HPXML default (see HPXML Site) is used. +Latitude of the home address. Must be between -90 and 90. Use negative values for southern hemisphere. If auto or not provided, the OS-HPXML default (see HPXML Site) is used. - **Name:** ``site_latitude`` -- **Type:** ``Double`` - -- **Units:** ``deg`` +- **Type:** ``String`` - **Required:** ``false`` @@ -371,12 +365,10 @@ Latitude of the home address. Must be between -90 and 90. Use negative values fo **Site: Longitude** -Longitude of the home address. Must be between -180 and 180. Use negative values for the western hemisphere. If not provided, the OS-HPXML default (see HPXML Site) is used. +Longitude of the home address. Must be between -180 and 180. Use negative values for the western hemisphere. If auto or not provided, the OS-HPXML default (see HPXML Site) is used. - **Name:** ``site_longitude`` -- **Type:** ``Double`` - -- **Units:** ``deg`` +- **Type:** ``String`` - **Required:** ``false`` @@ -539,12 +531,10 @@ The number of bedrooms in the unit. **Geometry: Unit Number of Bathrooms** -The number of bathrooms in the unit. If not provided, the OS-HPXML default (see HPXML Building Construction) is used. +The number of bathrooms in the unit. If auto or not provided, the OS-HPXML default (see HPXML Building Construction) is used. - **Name:** ``geometry_unit_num_bathrooms`` -- **Type:** ``Integer`` - -- **Units:** ``#`` +- **Type:** ``String`` - **Required:** ``false`` @@ -591,12 +581,10 @@ Average distance from the floor to the ceiling. **Geometry: Unit Height Above Grade** -Describes the above-grade height of apartment units on upper floors or homes above ambient or belly-and-wing foundations. It is defined as the height of the lowest conditioned floor above grade and is used to calculate the wind speed for the infiltration model. If not provided, the OS-HPXML default (see HPXML Building Construction) is used. +Describes the above-grade height of apartment units on upper floors or homes above ambient or belly-and-wing foundations. It is defined as the height of the lowest conditioned floor above grade and is used to calculate the wind speed for the infiltration model. If auto or not provided, the OS-HPXML default (see HPXML Building Construction) is used. - **Name:** ``geometry_unit_height_above_grade`` -- **Type:** ``Double`` - -- **Units:** ``ft`` +- **Type:** ``String`` - **Required:** ``false`` @@ -812,12 +800,10 @@ The distance between the unit and the neighboring building to the right (not inc **Neighbor: Front Height** -The height of the neighboring building to the front. If not provided, the OS-HPXML default (see HPXML Neighbor Building) is used. +The height of the neighboring building to the front. If auto or not provided, the OS-HPXML default (see HPXML Neighbor Building) is used. - **Name:** ``neighbor_front_height`` -- **Type:** ``Double`` - -- **Units:** ``ft`` +- **Type:** ``String`` - **Required:** ``false`` @@ -825,12 +811,10 @@ The height of the neighboring building to the front. If not provided, the OS-HPX **Neighbor: Back Height** -The height of the neighboring building to the back. If not provided, the OS-HPXML default (see HPXML Neighbor Building) is used. +The height of the neighboring building to the back. If auto or not provided, the OS-HPXML default (see HPXML Neighbor Building) is used. - **Name:** ``neighbor_back_height`` -- **Type:** ``Double`` - -- **Units:** ``ft`` +- **Type:** ``String`` - **Required:** ``false`` @@ -838,12 +822,10 @@ The height of the neighboring building to the back. If not provided, the OS-HPXM **Neighbor: Left Height** -The height of the neighboring building to the left. If not provided, the OS-HPXML default (see HPXML Neighbor Building) is used. +The height of the neighboring building to the left. If auto or not provided, the OS-HPXML default (see HPXML Neighbor Building) is used. - **Name:** ``neighbor_left_height`` -- **Type:** ``Double`` - -- **Units:** ``ft`` +- **Type:** ``String`` - **Required:** ``false`` @@ -851,12 +833,10 @@ The height of the neighboring building to the left. If not provided, the OS-HPXM **Neighbor: Right Height** -The height of the neighboring building to the right. If not provided, the OS-HPXML default (see HPXML Neighbor Building) is used. +The height of the neighboring building to the right. If auto or not provided, the OS-HPXML default (see HPXML Neighbor Building) is used. - **Name:** ``neighbor_right_height`` -- **Type:** ``Double`` - -- **Units:** ``ft`` +- **Type:** ``String`` - **Required:** ``false`` @@ -903,25 +883,23 @@ The type of floors. **Foundation Wall: Type** -The material type of the foundation wall. If not provided, the OS-HPXML default (see HPXML Foundation Walls) is used. +The material type of the foundation wall. If auto or not provided, the OS-HPXML default (see HPXML Foundation Walls) is used. - **Name:** ``foundation_wall_type`` - **Type:** ``Choice`` - **Required:** ``false`` -- **Choices:** `solid concrete`, `concrete block`, `concrete block foam core`, `concrete block perlite core`, `concrete block vermiculite core`, `concrete block solid core`, `double brick`, `wood` +- **Choices:** `auto`, `solid concrete`, `concrete block`, `concrete block foam core`, `concrete block perlite core`, `concrete block vermiculite core`, `concrete block solid core`, `double brick`, `wood`
**Foundation Wall: Thickness** -The thickness of the foundation wall. If not provided, the OS-HPXML default (see HPXML Foundation Walls) is used. +The thickness of the foundation wall. If auto or not provided, the OS-HPXML default (see HPXML Foundation Walls) is used. - **Name:** ``foundation_wall_thickness`` -- **Type:** ``Double`` - -- **Units:** ``in`` +- **Type:** ``String`` - **Required:** ``false`` @@ -955,12 +933,10 @@ Whether the insulation is on the interior or exterior of the foundation wall. On **Foundation Wall: Insulation Distance To Top** -The distance from the top of the foundation wall to the top of the foundation wall insulation. Only applies to basements/crawlspaces. If not provided, the OS-HPXML default (see HPXML Foundation Walls) is used. +The distance from the top of the foundation wall to the top of the foundation wall insulation. Only applies to basements/crawlspaces. If auto or not provided, the OS-HPXML default (see HPXML Foundation Walls) is used. - **Name:** ``foundation_wall_insulation_distance_to_top`` -- **Type:** ``Double`` - -- **Units:** ``ft`` +- **Type:** ``String`` - **Required:** ``false`` @@ -968,12 +944,10 @@ The distance from the top of the foundation wall to the top of the foundation wa **Foundation Wall: Insulation Distance To Bottom** -The distance from the top of the foundation wall to the bottom of the foundation wall insulation. Only applies to basements/crawlspaces. If not provided, the OS-HPXML default (see HPXML Foundation Walls) is used. +The distance from the top of the foundation wall to the bottom of the foundation wall insulation. Only applies to basements/crawlspaces. If auto or not provided, the OS-HPXML default (see HPXML Foundation Walls) is used. - **Name:** ``foundation_wall_insulation_distance_to_bottom`` -- **Type:** ``Double`` - -- **Units:** ``ft`` +- **Type:** ``String`` - **Required:** ``false`` @@ -1098,12 +1072,10 @@ Width from slab edge inward of horizontal under-slab insulation. Enter 999 to sp **Slab: Thickness** -The thickness of the slab. Zero can be entered if there is a dirt floor instead of a slab. If not provided, the OS-HPXML default (see HPXML Slabs) is used. +The thickness of the slab. Zero can be entered if there is a dirt floor instead of a slab. If auto or not provided, the OS-HPXML default (see HPXML Slabs) is used. - **Name:** ``slab_thickness`` -- **Type:** ``Double`` - -- **Units:** ``in`` +- **Type:** ``String`` - **Required:** ``false`` @@ -1111,12 +1083,10 @@ The thickness of the slab. Zero can be entered if there is a dirt floor instead **Slab: Carpet Fraction** -Fraction of the slab floor area that is carpeted. If not provided, the OS-HPXML default (see HPXML Slabs) is used. +Fraction of the slab floor area that is carpeted. If auto or not provided, the OS-HPXML default (see HPXML Slabs) is used. - **Name:** ``slab_carpet_fraction`` -- **Type:** ``Double`` - -- **Units:** ``Frac`` +- **Type:** ``String`` - **Required:** ``false`` @@ -1124,12 +1094,10 @@ Fraction of the slab floor area that is carpeted. If not provided, the OS-HPXML **Slab: Carpet R-value** -R-value of the slab carpet. If not provided, the OS-HPXML default (see HPXML Slabs) is used. +R-value of the slab carpet. If auto or not provided, the OS-HPXML default (see HPXML Slabs) is used. - **Name:** ``slab_carpet_r`` -- **Type:** ``Double`` - -- **Units:** ``h-ft^2-R/Btu`` +- **Type:** ``String`` - **Required:** ``false`` @@ -1150,27 +1118,27 @@ Assembly R-value for the ceiling (attic floor). **Roof: Material Type** -The material type of the roof. If not provided, the OS-HPXML default (see HPXML Roofs) is used. +The material type of the roof. If auto or not provided, the OS-HPXML default (see HPXML Roofs) is used. - **Name:** ``roof_material_type`` - **Type:** ``Choice`` - **Required:** ``false`` -- **Choices:** `asphalt or fiberglass shingles`, `concrete`, `cool roof`, `slate or tile shingles`, `expanded polystyrene sheathing`, `metal surfacing`, `plastic/rubber/synthetic sheeting`, `shingles`, `wood shingles or shakes` +- **Choices:** `auto`, `asphalt or fiberglass shingles`, `concrete`, `cool roof`, `slate or tile shingles`, `expanded polystyrene sheathing`, `metal surfacing`, `plastic/rubber/synthetic sheeting`, `shingles`, `wood shingles or shakes`
**Roof: Color** -The color of the roof. If not provided, the OS-HPXML default (see HPXML Roofs) is used. +The color of the roof. If auto or not provided, the OS-HPXML default (see HPXML Roofs) is used. - **Name:** ``roof_color`` - **Type:** ``Choice`` - **Required:** ``false`` -- **Choices:** `dark`, `light`, `medium`, `medium dark`, `reflective` +- **Choices:** `auto`, `dark`, `light`, `medium`, `medium dark`, `reflective`
@@ -1202,14 +1170,14 @@ The location of the radiant barrier in the attic. **Attic: Radiant Barrier Grade** -The grade of the radiant barrier in the attic. If not provided, the OS-HPXML default (see HPXML Roofs) is used. +The grade of the radiant barrier in the attic. If auto or not provided, the OS-HPXML default (see HPXML Roofs) is used. - **Name:** ``radiant_barrier_grade`` - **Type:** ``Choice`` - **Required:** ``false`` -- **Choices:** `1`, `2`, `3` +- **Choices:** `auto`, `1`, `2`, `3`
@@ -1228,27 +1196,27 @@ The type of walls. **Wall: Siding Type** -The siding type of the walls. Also applies to rim joists. If not provided, the OS-HPXML default (see HPXML Walls) is used. +The siding type of the walls. Also applies to rim joists. If auto or not provided, the OS-HPXML default (see HPXML Walls) is used. - **Name:** ``wall_siding_type`` - **Type:** ``Choice`` - **Required:** ``false`` -- **Choices:** `aluminum siding`, `asbestos siding`, `brick veneer`, `composite shingle siding`, `fiber cement siding`, `masonite siding`, `none`, `stucco`, `synthetic stucco`, `vinyl siding`, `wood siding` +- **Choices:** `auto`, `aluminum siding`, `asbestos siding`, `brick veneer`, `composite shingle siding`, `fiber cement siding`, `masonite siding`, `none`, `stucco`, `synthetic stucco`, `vinyl siding`, `wood siding`
**Wall: Color** -The color of the walls. Also applies to rim joists. If not provided, the OS-HPXML default (see HPXML Walls) is used. +The color of the walls. Also applies to rim joists. If auto or not provided, the OS-HPXML default (see HPXML Walls) is used. - **Name:** ``wall_color`` - **Type:** ``Choice`` - **Required:** ``false`` -- **Choices:** `dark`, `light`, `medium`, `medium dark`, `reflective` +- **Choices:** `auto`, `auto`, `dark`, `light`, `medium`, `medium dark`, `reflective`
@@ -1356,12 +1324,10 @@ Full-assembly NFRC solar heat gain coefficient. **Windows: Fraction Operable** -Fraction of windows that are operable. If not provided, the OS-HPXML default (see HPXML Windows) is used. +Fraction of windows that are operable. If auto or not provided, the OS-HPXML default (see HPXML Windows) is used. - **Name:** ``window_fraction_operable`` -- **Type:** ``Double`` - -- **Units:** ``Frac`` +- **Type:** ``String`` - **Required:** ``false`` @@ -1369,12 +1335,10 @@ Fraction of windows that are operable. If not provided, the OS-HPXML default (se **Windows: Natural Ventilation Availability** -For operable windows, the number of days/week that windows can be opened by occupants for natural ventilation. If not provided, the OS-HPXML default (see HPXML Windows) is used. +For operable windows, the number of days/week that windows can be opened by occupants for natural ventilation. If auto or not provided, the OS-HPXML default (see HPXML Windows) is used. - **Name:** ``window_natvent_availability`` -- **Type:** ``Integer`` - -- **Units:** ``Days/week`` +- **Type:** ``String`` - **Required:** ``false`` @@ -1382,25 +1346,23 @@ For operable windows, the number of days/week that windows can be opened by occu **Windows: Interior Shading Type** -Type of window interior shading. Summer/winter shading coefficients can be provided below instead. If neither is provided, the OS-HPXML default (see HPXML Interior Shading) is used. +Type of window interior shading. Summer/winter shading coefficients can be provided below instead. If auto or not provided, the OS-HPXML default (see HPXML Interior Shading) is used. - **Name:** ``window_interior_shading_type`` - **Type:** ``Choice`` - **Required:** ``false`` -- **Choices:** `light curtains`, `light shades`, `light blinds`, `medium curtains`, `medium shades`, `medium blinds`, `dark curtains`, `dark shades`, `dark blinds`, `none` +- **Choices:** `auto`, `light curtains`, `light shades`, `light blinds`, `medium curtains`, `medium shades`, `medium blinds`, `dark curtains`, `dark shades`, `dark blinds`, `none`
**Windows: Winter Interior Shading Coefficient** -Interior shading coefficient for the winter season, which if provided overrides the shading type input. 1.0 indicates no reduction in solar gain, 0.85 indicates 15% reduction, etc. If not provided, the OS-HPXML default (see HPXML Interior Shading) is used. +Interior shading coefficient for the winter season, which if provided overrides the shading type input. 1.0 indicates no reduction in solar gain, 0.85 indicates 15% reduction, etc. If auto or not provided, the OS-HPXML default (see HPXML Interior Shading) is used. - **Name:** ``window_interior_shading_winter`` -- **Type:** ``Double`` - -- **Units:** ``Frac`` +- **Type:** ``String`` - **Required:** ``false`` @@ -1408,12 +1370,10 @@ Interior shading coefficient for the winter season, which if provided overrides **Windows: Summer Interior Shading Coefficient** -Interior shading coefficient for the summer season, which if provided overrides the shading type input. 1.0 indicates no reduction in solar gain, 0.85 indicates 15% reduction, etc. If not provided, the OS-HPXML default (see HPXML Interior Shading) is used. +Interior shading coefficient for the summer season, which if provided overrides the shading type input. 1.0 indicates no reduction in solar gain, 0.85 indicates 15% reduction, etc. If auto or not provided, the OS-HPXML default (see HPXML Interior Shading) is used. - **Name:** ``window_interior_shading_summer`` -- **Type:** ``Double`` - -- **Units:** ``Frac`` +- **Type:** ``String`` - **Required:** ``false`` @@ -1421,25 +1381,23 @@ Interior shading coefficient for the summer season, which if provided overrides **Windows: Exterior Shading Type** -Type of window exterior shading. Summer/winter shading coefficients can be provided below instead. If neither is provided, the OS-HPXML default (see HPXML Exterior Shading) is used. +Type of window exterior shading. Summer/winter shading coefficients can be provided below instead. If auto or not provided, the OS-HPXML default (see HPXML Exterior Shading) is used. - **Name:** ``window_exterior_shading_type`` - **Type:** ``Choice`` - **Required:** ``false`` -- **Choices:** `solar film`, `solar screens`, `none` +- **Choices:** `auto`, `solar film`, `solar screens`, `none`
**Windows: Winter Exterior Shading Coefficient** -Exterior shading coefficient for the winter season, which if provided overrides the shading type input. 1.0 indicates no reduction in solar gain, 0.85 indicates 15% reduction, etc. If not provided, the OS-HPXML default (see HPXML Exterior Shading) is used. +Exterior shading coefficient for the winter season, which if provided overrides the shading type input. 1.0 indicates no reduction in solar gain, 0.85 indicates 15% reduction, etc. If auto or not provided, the OS-HPXML default (see HPXML Exterior Shading) is used. - **Name:** ``window_exterior_shading_winter`` -- **Type:** ``Double`` - -- **Units:** ``Frac`` +- **Type:** ``String`` - **Required:** ``false`` @@ -1447,12 +1405,10 @@ Exterior shading coefficient for the winter season, which if provided overrides **Windows: Summer Exterior Shading Coefficient** -Exterior shading coefficient for the summer season, which if provided overrides the shading type input. 1.0 indicates no reduction in solar gain, 0.85 indicates 15% reduction, etc. If not provided, the OS-HPXML default (see HPXML Exterior Shading) is used. +Exterior shading coefficient for the summer season, which if provided overrides the shading type input. 1.0 indicates no reduction in solar gain, 0.85 indicates 15% reduction, etc. If auto or not provided, the OS-HPXML default (see HPXML Exterior Shading) is used. - **Name:** ``window_exterior_shading_summer`` -- **Type:** ``Double`` - -- **Units:** ``Frac`` +- **Type:** ``String`` - **Required:** ``false`` @@ -1460,7 +1416,7 @@ Exterior shading coefficient for the summer season, which if provided overrides **Windows: Shading Summer Season** -Enter a date range like 'May 1 - Sep 30'. Defines the summer season for purposes of shading coefficients; the rest of the year is assumed to be winter. If not provided, the OS-HPXML default (see HPXML Windows) is used. +Enter a date range like 'May 1 - Sep 30'. Defines the summer season for purposes of shading coefficients; the rest of the year is assumed to be winter. If auto or not provided, the OS-HPXML default (see HPXML Windows) is used. - **Name:** ``window_shading_summer_season`` - **Type:** ``String`` @@ -1883,12 +1839,10 @@ The rated heating efficiency value of the heating system. **Heating System: Heating Capacity** -The output heating capacity of the heating system. If not provided, the OS-HPXML autosized default (see HPXML Heating Systems) is used. +The output heating capacity of the heating system. If auto or not provided, the OS-HPXML default (see HPXML Heating Systems) is used. - **Name:** ``heating_system_heating_capacity`` -- **Type:** ``Double`` - -- **Units:** ``Btu/hr`` +- **Type:** ``String`` - **Required:** ``false`` @@ -1996,25 +1950,23 @@ The rated efficiency value of the cooling system. Ignored for evaporative cooler **Cooling System: Cooling Compressor Type** -The compressor type of the cooling system. Only applies to central air conditioner and mini-split. If not provided, the OS-HPXML default (see Central Air Conditioner, Mini-Split Air Conditioner) is used. +The compressor type of the cooling system. Only applies to central air conditioner and mini-split. If auto or not provided, the OS-HPXML default (see Central Air Conditioner, Mini-Split Air Conditioner) is used. - **Name:** ``cooling_system_cooling_compressor_type`` - **Type:** ``Choice`` - **Required:** ``false`` -- **Choices:** `single stage`, `two stage`, `variable speed` +- **Choices:** `auto`, `single stage`, `two stage`, `variable speed`
**Cooling System: Cooling Sensible Heat Fraction** -The sensible heat fraction of the cooling system. Ignored for evaporative cooler. If not provided, the OS-HPXML default (see Central Air Conditioner, Room Air Conditioner, Packaged Terminal Air Conditioner, Mini-Split Air Conditioner) is used. +The sensible heat fraction of the cooling system. Ignored for evaporative cooler. If auto or not provided, the OS-HPXML default (see Central Air Conditioner, Room Air Conditioner, Packaged Terminal Air Conditioner, Mini-Split Air Conditioner) is used. - **Name:** ``cooling_system_cooling_sensible_heat_fraction`` -- **Type:** ``Double`` - -- **Units:** ``Frac`` +- **Type:** ``String`` - **Required:** ``false`` @@ -2022,12 +1974,10 @@ The sensible heat fraction of the cooling system. Ignored for evaporative cooler **Cooling System: Cooling Capacity** -The output cooling capacity of the cooling system. If not provided, the OS-HPXML autosized default (see Central Air Conditioner, Room Air Conditioner, Packaged Terminal Air Conditioner, Evaporative Cooler, Mini-Split Air Conditioner) is used. +The output cooling capacity of the cooling system. If auto or not provided, the OS-HPXML default (see Central Air Conditioner, Room Air Conditioner, Packaged Terminal Air Conditioner, Evaporative Cooler, Mini-Split Air Conditioner) is used. - **Name:** ``cooling_system_cooling_capacity`` -- **Type:** ``Double`` - -- **Units:** ``Btu/hr`` +- **Type:** ``String`` - **Required:** ``false`` @@ -2109,12 +2059,10 @@ The refrigerant charge defect ratio, defined as (InstalledCharge - DesignCharge) **Cooling System: Crankcase Heater Power Watts** -Cooling system crankcase heater power consumption in Watts. Applies only to central air conditioner, room air conditioner, packaged terminal air conditioner and mini-split. If not provided, the OS-HPXML default (see Central Air Conditioner, Room Air Conditioner, Packaged Terminal Air Conditioner, Mini-Split Air Conditioner) is used. +Cooling system crankcase heater power consumption in Watts. Applies only to central air conditioner, room air conditioner, packaged terminal air conditioner and mini-split. If auto or not provided, the OS-HPXML default (see Central Air Conditioner, Room Air Conditioner, Packaged Terminal Air Conditioner, Mini-Split Air Conditioner) is used. - **Name:** ``cooling_system_crankcase_heater_watts`` -- **Type:** ``Double`` - -- **Units:** ``W`` +- **Type:** ``String`` - **Required:** ``false`` @@ -2148,12 +2096,10 @@ The rated heating efficiency value of the heating system integrated into cooling **Cooling System: Integrated Heating System Heating Capacity** -The output heating capacity of the heating system integrated into cooling system. If not provided, the OS-HPXML autosized default (see Room Air Conditioner, Packaged Terminal Air Conditioner) is used. Only used for room air conditioner and packaged terminal air conditioner. +The output heating capacity of the heating system integrated into cooling system. Only used for room air conditioner and packaged terminal air conditioner. If auto or not provided, the OS-HPXML default (see Room Air Conditioner, Packaged Terminal Air Conditioner) is used. - **Name:** ``cooling_system_integrated_heating_system_capacity`` -- **Type:** ``Double`` - -- **Units:** ``Btu/hr`` +- **Type:** ``String`` - **Required:** ``false`` @@ -2235,25 +2181,23 @@ The rated cooling efficiency value of the heat pump. **Heat Pump: Cooling Compressor Type** -The compressor type of the heat pump. Only applies to air-to-air and mini-split. If not provided, the OS-HPXML default (see Air-to-Air Heat Pump, Mini-Split Heat Pump) is used. +The compressor type of the heat pump. Only applies to air-to-air and mini-split. If auto or not provided, the OS-HPXML default (see Air-to-Air Heat Pump, Mini-Split Heat Pump) is used. - **Name:** ``heat_pump_cooling_compressor_type`` - **Type:** ``Choice`` - **Required:** ``false`` -- **Choices:** `single stage`, `two stage`, `variable speed` +- **Choices:** `auto`, `auto`, `single stage`, `two stage`, `variable speed`
**Heat Pump: Cooling Sensible Heat Fraction** -The sensible heat fraction of the heat pump. If not provided, the OS-HPXML default (see Air-to-Air Heat Pump, Mini-Split Heat Pump, Packaged Terminal Heat Pump, Room Air Conditioner w/ Reverse Cycle, Ground-to-Air Heat Pump) is used. +The sensible heat fraction of the heat pump. If auto or not provided, the OS-HPXML default (see Air-to-Air Heat Pump, Mini-Split Heat Pump, Packaged Terminal Heat Pump, Room Air Conditioner w/ Reverse Cycle, Ground-to-Air Heat Pump) is used. - **Name:** ``heat_pump_cooling_sensible_heat_fraction`` -- **Type:** ``Double`` - -- **Units:** ``Frac`` +- **Type:** ``String`` - **Required:** ``false`` @@ -2261,12 +2205,10 @@ The sensible heat fraction of the heat pump. If not provided, the OS-HPXML defau **Heat Pump: Heating Capacity** -The output heating capacity of the heat pump. If not provided, the OS-HPXML autosized default (see Air-to-Air Heat Pump, Mini-Split Heat Pump, Packaged Terminal Heat Pump, Room Air Conditioner w/ Reverse Cycle, Ground-to-Air Heat Pump) is used. +The output heating capacity of the heat pump. If auto or not provided, the OS-HPXML default (see Air-to-Air Heat Pump, Mini-Split Heat Pump, Packaged Terminal Heat Pump, Room Air Conditioner w/ Reverse Cycle, Ground-to-Air Heat Pump) is used. - **Name:** ``heat_pump_heating_capacity`` -- **Type:** ``Double`` - -- **Units:** ``Btu/hr`` +- **Type:** ``String`` - **Required:** ``false`` @@ -2298,12 +2240,10 @@ The maximum capacity limit applied to the auto-sizing methodology. If not provid **Heat Pump: Heating Capacity Retention Fraction** -The output heating capacity of the heat pump at a user-specified temperature (e.g., 17F or 5F) divided by the above nominal heating capacity. Applies to all heat pump types except ground-to-air. If not provided, the OS-HPXML default (see Air-to-Air Heat Pump, Mini-Split Heat Pump, Packaged Terminal Heat Pump, Room Air Conditioner w/ Reverse Cycle) is used. +The output heating capacity of the heat pump at a user-specified temperature (e.g., 17F or 5F) divided by the above nominal heating capacity. Applies to all heat pump types except ground-to-air. If auto or not provided, the OS-HPXML default (see Air-to-Air Heat Pump, Mini-Split Heat Pump, Packaged Terminal Heat Pump, Room Air Conditioner w/ Reverse Cycle) is used. - **Name:** ``heat_pump_heating_capacity_retention_fraction`` -- **Type:** ``Double`` - -- **Units:** ``Frac`` +- **Type:** ``String`` - **Required:** ``false`` @@ -2324,12 +2264,10 @@ The user-specified temperature (e.g., 17F or 5F) for the above heating capacity **Heat Pump: Cooling Capacity** -The output cooling capacity of the heat pump. If not provided, the OS-HPXML autosized default (see Air-to-Air Heat Pump, Mini-Split Heat Pump, Packaged Terminal Heat Pump, Room Air Conditioner w/ Reverse Cycle, Ground-to-Air Heat Pump) is used. +The output cooling capacity of the heat pump. If auto or not provided, the OS-HPXML default (see Air-to-Air Heat Pump, Mini-Split Heat Pump, Packaged Terminal Heat Pump, Room Air Conditioner w/ Reverse Cycle, Ground-to-Air Heat Pump) is used. - **Name:** ``heat_pump_cooling_capacity`` -- **Type:** ``Double`` - -- **Units:** ``Btu/hr`` +- **Type:** ``String`` - **Required:** ``false`` @@ -2387,12 +2325,10 @@ The cooling load served by the heat pump. **Heat Pump: Compressor Lockout Temperature** -The temperature below which the heat pump compressor is disabled. If both this and Backup Heating Lockout Temperature are provided and use the same value, it essentially defines a switchover temperature (for, e.g., a dual-fuel heat pump). Applies to all heat pump types other than ground-to-air. If not provided, the OS-HPXML default (see Air-to-Air Heat Pump, Mini-Split Heat Pump, Packaged Terminal Heat Pump, Room Air Conditioner w/ Reverse Cycle) is used. +The temperature below which the heat pump compressor is disabled. If both this and Backup Heating Lockout Temperature are provided and use the same value, it essentially defines a switchover temperature (for, e.g., a dual-fuel heat pump). Applies to all heat pump types other than ground-to-air. If auto or not provided, the OS-HPXML default (see Air-to-Air Heat Pump, Mini-Split Heat Pump, Packaged Terminal Heat Pump, Room Air Conditioner w/ Reverse Cycle) is used. - **Name:** ``heat_pump_compressor_lockout_temp`` -- **Type:** ``Double`` - -- **Units:** ``F`` +- **Type:** ``String`` - **Required:** ``false`` @@ -2461,12 +2397,10 @@ The backup rated efficiency value of the heat pump. Percent for electricity fuel **Heat Pump: Backup Heating Capacity** -The backup output heating capacity of the heat pump. If not provided, the OS-HPXML autosized default (see Backup) is used. Only applies if Backup Type is 'integrated'. +The backup output heating capacity of the heat pump. Only applies if Backup Type is 'integrated'. If auto or not provided, the OS-HPXML default (see Backup) is used. - **Name:** ``heat_pump_backup_heating_capacity`` -- **Type:** ``Double`` - -- **Units:** ``Btu/hr`` +- **Type:** ``String`` - **Required:** ``false`` @@ -2474,12 +2408,10 @@ The backup output heating capacity of the heat pump. If not provided, the OS-HPX **Heat Pump: Backup Heating Lockout Temperature** -The temperature above which the heat pump backup system is disabled. If both this and Compressor Lockout Temperature are provided and use the same value, it essentially defines a switchover temperature (for, e.g., a dual-fuel heat pump). Applies for both Backup Type of 'integrated' and 'separate'. If not provided, the OS-HPXML default (see Backup) is used. +The temperature above which the heat pump backup system is disabled. If both this and Compressor Lockout Temperature are provided and use the same value, it essentially defines a switchover temperature (for, e.g., a dual-fuel heat pump). Applies for both Backup Type of 'integrated' and 'separate'. If auto or not provided, the OS-HPXML default (see Backup) is used. - **Name:** ``heat_pump_backup_heating_lockout_temp`` -- **Type:** ``Double`` - -- **Units:** ``F`` +- **Type:** ``String`` - **Required:** ``false`` @@ -2487,27 +2419,27 @@ The temperature above which the heat pump backup system is disabled. If both thi **Heat Pump: Sizing Methodology** -The auto-sizing methodology to use when the heat pump capacity is not provided. If not provided, the OS-HPXML default (see HPXML HVAC Sizing Control) is used. +The auto-sizing methodology to use when the heat pump capacity is not provided. If auto or not provided, the OS-HPXML default (see HPXML HVAC Sizing Control) is used. - **Name:** ``heat_pump_sizing_methodology`` - **Type:** ``Choice`` - **Required:** ``false`` -- **Choices:** `ACCA`, `HERS`, `MaxLoad` +- **Choices:** `auto`, `ACCA`, `HERS`, `MaxLoad`
**Heat Pump: Backup Sizing Methodology** -The auto-sizing methodology to use when the heat pump backup capacity is not provided. If not provided, the OS-HPXML default (see HPXML HVAC Sizing Control) is used. +The auto-sizing methodology to use when the heat pump backup capacity is not provided. If auto or not provided, the OS-HPXML default (see HPXML HVAC Sizing Control) is used. - **Name:** ``heat_pump_backup_sizing_methodology`` - **Type:** ``Choice`` - **Required:** ``false`` -- **Choices:** `emergency`, `supplemental` +- **Choices:** `auto`, `emergency`, `supplemental`
@@ -2550,12 +2482,10 @@ The refrigerant charge defect ratio, defined as (InstalledCharge - DesignCharge) **Heat Pump: Crankcase Heater Power Watts** -Heat Pump crankcase heater power consumption in Watts. Applies only to air-to-air, mini-split, packaged terminal heat pump and room air conditioner with reverse cycle. If not provided, the OS-HPXML default (see Air-to-Air Heat Pump, Mini-Split Heat Pump, Packaged Terminal Heat Pump, Room Air Conditioner w/ Reverse Cycle) is used. +Heat Pump crankcase heater power consumption in Watts. Applies only to air-to-air, mini-split, packaged terminal heat pump and room air conditioner with reverse cycle. If auto or not provided, the OS-HPXML default (see Air-to-Air Heat Pump, Mini-Split Heat Pump, Packaged Terminal Heat Pump, Room Air Conditioner w/ Reverse Cycle) is used. - **Name:** ``heat_pump_crankcase_heater_watts`` -- **Type:** ``Double`` - -- **Units:** ``W`` +- **Type:** ``String`` - **Required:** ``false`` @@ -2686,38 +2616,36 @@ Maximum speed efficiency COP values of cooling detailed performance data if avai **Geothermal Loop: Configuration** -Configuration of the geothermal loop. Only applies to ground-to-air heat pump type. If not provided, the OS-HPXML default (see Ground-to-Air Heat Pump) is used. +Configuration of the geothermal loop. Only applies to ground-to-air heat pump type. If auto or not provided, the OS-HPXML default (see Ground-to-Air Heat Pump) is used. - **Name:** ``geothermal_loop_configuration`` - **Type:** ``Choice`` - **Required:** ``false`` -- **Choices:** `none`, `vertical` +- **Choices:** `auto`, `none`, `vertical`
**Geothermal Loop: Borefield Configuration** -Borefield configuration of the geothermal loop. Only applies to ground-to-air heat pump type. If not provided, the OS-HPXML default (see HPXML Geothermal Loops) is used. +Borefield configuration of the geothermal loop. Only applies to ground-to-air heat pump type. If auto or not provided, the OS-HPXML default (see HPXML Geothermal Loops) is used. - **Name:** ``geothermal_loop_borefield_configuration`` - **Type:** ``Choice`` - **Required:** ``false`` -- **Choices:** `Rectangle`, `Open Rectangle`, `C`, `L`, `U`, `Lopsided U` +- **Choices:** `auto`, `Rectangle`, `Open Rectangle`, `C`, `L`, `U`, `Lopsided U`
**Geothermal Loop: Loop Flow** -Water flow rate through the geothermal loop. Only applies to ground-to-air heat pump type. If not provided, the OS-HPXML autosized default (see HPXML Geothermal Loops) is used. +Water flow rate through the geothermal loop. Only applies to ground-to-air heat pump type. If auto or not provided, the OS-HPXML default (see HPXML Geothermal Loops) is used. - **Name:** ``geothermal_loop_loop_flow`` -- **Type:** ``Double`` - -- **Units:** ``gpm`` +- **Type:** ``String`` - **Required:** ``false`` @@ -2725,12 +2653,10 @@ Water flow rate through the geothermal loop. Only applies to ground-to-air heat **Geothermal Loop: Boreholes Count** -Number of boreholes. Only applies to ground-to-air heat pump type. If not provided, the OS-HPXML autosized default (see HPXML Geothermal Loops) is used. +Number of boreholes. Only applies to ground-to-air heat pump type. If auto or not provided, the OS-HPXML default (see HPXML Geothermal Loops) is used. - **Name:** ``geothermal_loop_boreholes_count`` -- **Type:** ``Integer`` - -- **Units:** ``#`` +- **Type:** ``String`` - **Required:** ``false`` @@ -2738,12 +2664,10 @@ Number of boreholes. Only applies to ground-to-air heat pump type. If not provid **Geothermal Loop: Boreholes Length** -Average length of each borehole (vertical). Only applies to ground-to-air heat pump type. If not provided, the OS-HPXML autosized default (see HPXML Geothermal Loops) is used. +Average length of each borehole (vertical). Only applies to ground-to-air heat pump type. If auto or not provided, the OS-HPXML default (see HPXML Geothermal Loops) is used. - **Name:** ``geothermal_loop_boreholes_length`` -- **Type:** ``Double`` - -- **Units:** ``ft`` +- **Type:** ``String`` - **Required:** ``false`` @@ -2751,12 +2675,10 @@ Average length of each borehole (vertical). Only applies to ground-to-air heat p **Geothermal Loop: Boreholes Spacing** -Distance between bores. Only applies to ground-to-air heat pump type. If not provided, the OS-HPXML default (see HPXML Geothermal Loops) is used. +Distance between bores. Only applies to ground-to-air heat pump type. If auto or not provided, the OS-HPXML default (see HPXML Geothermal Loops) is used. - **Name:** ``geothermal_loop_boreholes_spacing`` -- **Type:** ``Double`` - -- **Units:** ``ft`` +- **Type:** ``String`` - **Required:** ``false`` @@ -2764,12 +2686,10 @@ Distance between bores. Only applies to ground-to-air heat pump type. If not pro **Geothermal Loop: Boreholes Diameter** -Diameter of bores. Only applies to ground-to-air heat pump type. If not provided, the OS-HPXML default (see HPXML Geothermal Loops) is used. +Diameter of bores. Only applies to ground-to-air heat pump type. If auto or not provided, the OS-HPXML default (see HPXML Geothermal Loops) is used. - **Name:** ``geothermal_loop_boreholes_diameter`` -- **Type:** ``Double`` - -- **Units:** ``in`` +- **Type:** ``String`` - **Required:** ``false`` @@ -2777,40 +2697,40 @@ Diameter of bores. Only applies to ground-to-air heat pump type. If not provided **Geothermal Loop: Grout Type** -Grout type of the geothermal loop. Only applies to ground-to-air heat pump type. If not provided, the OS-HPXML default (see HPXML Geothermal Loops) is used. +Grout type of the geothermal loop. Only applies to ground-to-air heat pump type. If auto or not provided, the OS-HPXML default (see HPXML Geothermal Loops) is used. - **Name:** ``geothermal_loop_grout_type`` - **Type:** ``Choice`` - **Required:** ``false`` -- **Choices:** `standard`, `thermally enhanced` +- **Choices:** `auto`, `standard`, `thermally enhanced`
**Geothermal Loop: Pipe Type** -Pipe type of the geothermal loop. Only applies to ground-to-air heat pump type. If not provided, the OS-HPXML default (see HPXML Geothermal Loops) is used. +Pipe type of the geothermal loop. Only applies to ground-to-air heat pump type. If auto or not provided, the OS-HPXML default (see HPXML Geothermal Loops) is used. - **Name:** ``geothermal_loop_pipe_type`` - **Type:** ``Choice`` - **Required:** ``false`` -- **Choices:** `standard`, `thermally enhanced` +- **Choices:** `auto`, `auto`, `standard`, `thermally enhanced`
**Geothermal Loop: Pipe Diameter** -Pipe diameter of the geothermal loop. Only applies to ground-to-air heat pump type. If not provided, the OS-HPXML default (see HPXML Geothermal Loops) is used. +Pipe diameter of the geothermal loop. Only applies to ground-to-air heat pump type. If auto or not provided, the OS-HPXML default (see HPXML Geothermal Loops) is used. - **Name:** ``geothermal_loop_pipe_diameter`` - **Type:** ``Choice`` - **Required:** ``false`` -- **Choices:** `3/4" pipe`, `1" pipe`, `1-1/4" pipe` +- **Choices:** `auto`, `3/4" pipe`, `1" pipe`, `1-1/4" pipe`
@@ -2855,12 +2775,10 @@ The rated heating efficiency value of the second heating system. **Heating System 2: Heating Capacity** -The output heating capacity of the second heating system. If not provided, the OS-HPXML autosized default (see HPXML Heating Systems) is used. +The output heating capacity of the second heating system. If auto or not provided, the OS-HPXML default (see HPXML Heating Systems) is used. - **Name:** ``heating_system_2_heating_capacity`` -- **Type:** ``Double`` - -- **Units:** ``Btu/hr`` +- **Type:** ``String`` - **Required:** ``false`` @@ -2949,7 +2867,7 @@ Specify the constant or 24-hour comma-separated weekend cooling setpoint schedul **HVAC Control: Heating Season Period** -Enter a date range like 'Nov 1 - Jun 30'. If not provided, the OS-HPXML default (see HPXML HVAC Control) is used. Can also provide 'BuildingAmerica' to use automatic seasons from the Building America House Simulation Protocols. +Enter a date range like 'Nov 1 - Jun 30'. Can also provide 'BuildingAmerica' to use automatic seasons from the Building America House Simulation Protocols. If auto or not provided, the OS-HPXML default (see HPXML HVAC Control) is used. - **Name:** ``hvac_control_heating_season_period`` - **Type:** ``String`` @@ -2960,7 +2878,7 @@ Enter a date range like 'Nov 1 - Jun 30'. If not provided, the OS-HPXML default **HVAC Control: Cooling Season Period** -Enter a date range like 'Jun 1 - Oct 31'. If not provided, the OS-HPXML default (see HPXML HVAC Control) is used. Can also provide 'BuildingAmerica' to use automatic seasons from the Building America House Simulation Protocols. +Enter a date range like 'Jun 1 - Oct 31'. Can also provide 'BuildingAmerica' to use automatic seasons from the Building America House Simulation Protocols. If auto or not provided, the OS-HPXML default (see HPXML HVAC Control) is used. - **Name:** ``hvac_control_cooling_season_period`` - **Type:** ``String`` @@ -2971,12 +2889,10 @@ Enter a date range like 'Jun 1 - Oct 31'. If not provided, the OS-HPXML default **HVAC Blower: Fan Efficiency** -The blower fan efficiency at maximum fan speed. Applies only to split (not packaged) systems (i.e., applies to ducted systems as well as ductless mini-split systems). If not provided, the OS-HPXML default (see HPXML Heating Systems, HPXML Cooling Systems, HPXML Heat Pumps) is used. +The blower fan efficiency at maximum fan speed. Applies only to split (not packaged) systems (i.e., applies to ducted systems as well as ductless mini-split systems). If auto or not provided, the OS-HPXML default (see HPXML Heating Systems, HPXML Cooling Systems, HPXML Heat Pumps) is used. - **Name:** ``hvac_blower_fan_watts_per_cfm`` -- **Type:** ``Double`` - -- **Units:** ``W/CFM`` +- **Type:** ``String`` - **Required:** ``false`` @@ -3008,14 +2924,14 @@ The leakage value to outside for the supply ducts. **Ducts: Supply Location** -The location of the supply ducts. If not provided, the OS-HPXML default (see Air Distribution) is used. +The location of the supply ducts. If auto or not provided, the OS-HPXML default (see Air Distribution) is used. - **Name:** ``ducts_supply_location`` - **Type:** ``Choice`` - **Required:** ``false`` -- **Choices:** `conditioned space`, `basement - conditioned`, `basement - unconditioned`, `crawlspace`, `crawlspace - vented`, `crawlspace - unvented`, `crawlspace - conditioned`, `attic`, `attic - vented`, `attic - unvented`, `garage`, `exterior wall`, `under slab`, `roof deck`, `outside`, `other housing unit`, `other heated space`, `other multifamily buffer space`, `other non-freezing space`, `manufactured home belly` +- **Choices:** `auto`, `conditioned space`, `basement - conditioned`, `basement - unconditioned`, `crawlspace`, `crawlspace - vented`, `crawlspace - unvented`, `crawlspace - conditioned`, `attic`, `attic - vented`, `attic - unvented`, `garage`, `exterior wall`, `under slab`, `roof deck`, `outside`, `other housing unit`, `other heated space`, `other multifamily buffer space`, `other non-freezing space`, `manufactured home belly`
@@ -3034,25 +2950,23 @@ The nominal insulation r-value of the supply ducts excluding air films. Use 0 fo **Ducts: Supply Buried Insulation Level** -Whether the supply ducts are buried in, e.g., attic loose-fill insulation. Partially buried ducts have insulation that does not cover the top of the ducts. Fully buried ducts have insulation that just covers the top of the ducts. Deeply buried ducts have insulation that continues above the top of the ducts. If not provided, the OS-HPXML default (see Air Distribution) is used. +Whether the supply ducts are buried in, e.g., attic loose-fill insulation. Partially buried ducts have insulation that does not cover the top of the ducts. Fully buried ducts have insulation that just covers the top of the ducts. Deeply buried ducts have insulation that continues above the top of the ducts. If auto or not provided, the OS-HPXML default (see Air Distribution) is used. - **Name:** ``ducts_supply_buried_insulation_level`` - **Type:** ``Choice`` - **Required:** ``false`` -- **Choices:** `not buried`, `partially buried`, `fully buried`, `deeply buried` +- **Choices:** `auto`, `not buried`, `partially buried`, `fully buried`, `deeply buried`
**Ducts: Supply Surface Area** -The supply ducts surface area in the given location. If neither Surface Area nor Area Fraction provided, the OS-HPXML default (see Air Distribution) is used. +The supply ducts surface area in the given location. If auto or not provided, the OS-HPXML default (see Air Distribution) is used. - **Name:** ``ducts_supply_surface_area`` -- **Type:** ``Double`` - -- **Units:** ``ft^2`` +- **Type:** ``String`` - **Required:** ``false`` @@ -3060,12 +2974,10 @@ The supply ducts surface area in the given location. If neither Surface Area nor **Ducts: Supply Area Fraction** -The fraction of supply ducts surface area in the given location. Only used if Surface Area is not provided. If the fraction is less than 1, the remaining duct area is assumed to be in conditioned space. If neither Surface Area nor Area Fraction provided, the OS-HPXML default (see Air Distribution) is used. +The fraction of supply ducts surface area in the given location. Only used if Surface Area is not provided. If the fraction is less than 1, the remaining duct area is assumed to be in conditioned space. If auto or not provided, the OS-HPXML default (see Air Distribution) is used. - **Name:** ``ducts_supply_surface_area_fraction`` -- **Type:** ``Double`` - -- **Units:** ``frac`` +- **Type:** ``String`` - **Required:** ``false`` @@ -3073,12 +2985,10 @@ The fraction of supply ducts surface area in the given location. Only used if Su **Ducts: Supply Fraction Rectangular** -The fraction of supply ducts that are rectangular (as opposed to round); this affects the duct effective R-value used for modeling. If not provided, the OS-HPXML default (see Air Distribution) is used. +The fraction of supply ducts that are rectangular (as opposed to round); this affects the duct effective R-value used for modeling. If auto or not provided, the OS-HPXML default (see Air Distribution) is used. - **Name:** ``ducts_supply_fraction_rectangular`` -- **Type:** ``Double`` - -- **Units:** ``frac`` +- **Type:** ``String`` - **Required:** ``false`` @@ -3097,14 +3007,14 @@ The leakage value to outside for the return ducts. **Ducts: Return Location** -The location of the return ducts. If not provided, the OS-HPXML default (see Air Distribution) is used. +The location of the return ducts. If auto or not provided, the OS-HPXML default (see Air Distribution) is used. - **Name:** ``ducts_return_location`` - **Type:** ``Choice`` - **Required:** ``false`` -- **Choices:** `conditioned space`, `basement - conditioned`, `basement - unconditioned`, `crawlspace`, `crawlspace - vented`, `crawlspace - unvented`, `crawlspace - conditioned`, `attic`, `attic - vented`, `attic - unvented`, `garage`, `exterior wall`, `under slab`, `roof deck`, `outside`, `other housing unit`, `other heated space`, `other multifamily buffer space`, `other non-freezing space`, `manufactured home belly` +- **Choices:** `auto`, `auto`, `conditioned space`, `basement - conditioned`, `basement - unconditioned`, `crawlspace`, `crawlspace - vented`, `crawlspace - unvented`, `crawlspace - conditioned`, `attic`, `attic - vented`, `attic - unvented`, `garage`, `exterior wall`, `under slab`, `roof deck`, `outside`, `other housing unit`, `other heated space`, `other multifamily buffer space`, `other non-freezing space`, `manufactured home belly`
@@ -3123,25 +3033,23 @@ The nominal insulation r-value of the return ducts excluding air films. Use 0 fo **Ducts: Return Buried Insulation Level** -Whether the return ducts are buried in, e.g., attic loose-fill insulation. Partially buried ducts have insulation that does not cover the top of the ducts. Fully buried ducts have insulation that just covers the top of the ducts. Deeply buried ducts have insulation that continues above the top of the ducts. If not provided, the OS-HPXML default (see Air Distribution) is used. +Whether the return ducts are buried in, e.g., attic loose-fill insulation. Partially buried ducts have insulation that does not cover the top of the ducts. Fully buried ducts have insulation that just covers the top of the ducts. Deeply buried ducts have insulation that continues above the top of the ducts. If auto or not provided, the OS-HPXML default (see Air Distribution) is used. - **Name:** ``ducts_return_buried_insulation_level`` - **Type:** ``Choice`` - **Required:** ``false`` -- **Choices:** `not buried`, `partially buried`, `fully buried`, `deeply buried` +- **Choices:** `auto`, `auto`, `not buried`, `partially buried`, `fully buried`, `deeply buried`
**Ducts: Return Surface Area** -The return ducts surface area in the given location. If neither Surface Area nor Area Fraction provided, the OS-HPXML default (see Air Distribution) is used. +The return ducts surface area in the given location. If auto or not provided, the OS-HPXML default (see Air Distribution) is used. - **Name:** ``ducts_return_surface_area`` -- **Type:** ``Double`` - -- **Units:** ``ft^2`` +- **Type:** ``String`` - **Required:** ``false`` @@ -3149,12 +3057,10 @@ The return ducts surface area in the given location. If neither Surface Area nor **Ducts: Return Area Fraction** -The fraction of return ducts surface area in the given location. Only used if Surface Area is not provided. If the fraction is less than 1, the remaining duct area is assumed to be in conditioned space. If neither Surface Area nor Area Fraction provided, the OS-HPXML default (see Air Distribution) is used. +The fraction of return ducts surface area in the given location. Only used if Surface Area is not provided. If the fraction is less than 1, the remaining duct area is assumed to be in conditioned space. If auto or not provided, the OS-HPXML default (see Air Distribution) is used. - **Name:** ``ducts_return_surface_area_fraction`` -- **Type:** ``Double`` - -- **Units:** ``frac`` +- **Type:** ``String`` - **Required:** ``false`` @@ -3162,12 +3068,10 @@ The fraction of return ducts surface area in the given location. Only used if Su **Ducts: Number of Return Registers** -The number of return registers of the ducts. Only used to calculate default return duct surface area. If not provided, the OS-HPXML default (see Air Distribution) is used. +The number of return registers of the ducts. Only used to calculate default return duct surface area. If auto or not provided, the OS-HPXML default (see Air Distribution) is used. - **Name:** ``ducts_number_of_return_registers`` -- **Type:** ``Integer`` - -- **Units:** ``#`` +- **Type:** ``String`` - **Required:** ``false`` @@ -3175,12 +3079,10 @@ The number of return registers of the ducts. Only used to calculate default retu **Ducts: Return Fraction Rectangular** -The fraction of return ducts that are rectangular (as opposed to round); this affects the duct effective R-value used for modeling. If not provided, the OS-HPXML default (see Air Distribution) is used. +The fraction of return ducts that are rectangular (as opposed to round); this affects the duct effective R-value used for modeling. If auto or not provided, the OS-HPXML default (see Air Distribution) is used. - **Name:** ``ducts_return_fraction_rectangular`` -- **Type:** ``Double`` - -- **Units:** ``frac`` +- **Type:** ``String`` - **Required:** ``false`` @@ -3201,12 +3103,10 @@ The type of the mechanical ventilation. Use 'none' if there is no mechanical ven **Mechanical Ventilation: Flow Rate** -The flow rate of the mechanical ventilation. If not provided, the OS-HPXML default (see HPXML Mechanical Ventilation Fans) is used. +The flow rate of the mechanical ventilation. If auto or not provided, the OS-HPXML default (see HPXML Mechanical Ventilation Fans) is used. - **Name:** ``mech_vent_flow_rate`` -- **Type:** ``Double`` - -- **Units:** ``CFM`` +- **Type:** ``String`` - **Required:** ``false`` @@ -3214,12 +3114,10 @@ The flow rate of the mechanical ventilation. If not provided, the OS-HPXML defau **Mechanical Ventilation: Hours In Operation** -The hours in operation of the mechanical ventilation. If not provided, the OS-HPXML default (see HPXML Mechanical Ventilation Fans) is used. +The hours in operation of the mechanical ventilation. If auto or not provided, the OS-HPXML default (see HPXML Mechanical Ventilation Fans) is used. - **Name:** ``mech_vent_hours_in_operation`` -- **Type:** ``Double`` - -- **Units:** ``hrs/day`` +- **Type:** ``String`` - **Required:** ``false`` @@ -3266,12 +3164,10 @@ The Unadjusted or Adjusted sensible recovery efficiency of the mechanical ventil **Mechanical Ventilation: Fan Power** -The fan power of the mechanical ventilation. If not provided, the OS-HPXML default (see HPXML Mechanical Ventilation Fans) is used. +The fan power of the mechanical ventilation. If auto or not provided, the OS-HPXML default (see HPXML Mechanical Ventilation Fans) is used. - **Name:** ``mech_vent_fan_power`` -- **Type:** ``Double`` - -- **Units:** ``W`` +- **Type:** ``String`` - **Required:** ``false`` @@ -3474,12 +3370,10 @@ The fan power of the second mechanical ventilation. **Kitchen Fans: Quantity** -The quantity of the kitchen fans. If not provided, the OS-HPXML default (see HPXML Local Ventilation Fans) is used. +The quantity of the kitchen fans. If auto or not provided, the OS-HPXML default (see HPXML Local Ventilation Fans) is used. - **Name:** ``kitchen_fans_quantity`` -- **Type:** ``Integer`` - -- **Units:** ``#`` +- **Type:** ``String`` - **Required:** ``false`` @@ -3487,12 +3381,10 @@ The quantity of the kitchen fans. If not provided, the OS-HPXML default (see HPXML Local Ventilation Fans) is used. +The flow rate of the kitchen fan. If auto or not provided, the OS-HPXML default (see HPXML Local Ventilation Fans) is used. - **Name:** ``kitchen_fans_flow_rate`` -- **Type:** ``Double`` - -- **Units:** ``CFM`` +- **Type:** ``String`` - **Required:** ``false`` @@ -3500,12 +3392,10 @@ The flow rate of the kitchen fan. If not provided, the OS-HPXML default (see HPXML Local Ventilation Fans) is used. +The hours in operation of the kitchen fan. If auto or not provided, the OS-HPXML default (see HPXML Local Ventilation Fans) is used. - **Name:** ``kitchen_fans_hours_in_operation`` -- **Type:** ``Double`` - -- **Units:** ``hrs/day`` +- **Type:** ``String`` - **Required:** ``false`` @@ -3513,12 +3403,10 @@ The hours in operation of the kitchen fan. If not provided, the OS-HPXML default **Kitchen Fans: Fan Power** -The fan power of the kitchen fan. If not provided, the OS-HPXML default (see HPXML Local Ventilation Fans) is used. +The fan power of the kitchen fan. If auto or not provided, the OS-HPXML default (see HPXML Local Ventilation Fans) is used. - **Name:** ``kitchen_fans_power`` -- **Type:** ``Double`` - -- **Units:** ``W`` +- **Type:** ``String`` - **Required:** ``false`` @@ -3526,12 +3414,10 @@ The fan power of the kitchen fan. If not provided, the OS-HPXML default (see HPXML Local Ventilation Fans) is used. +The start hour of the kitchen fan. If auto or not provided, the OS-HPXML default (see HPXML Local Ventilation Fans) is used. - **Name:** ``kitchen_fans_start_hour`` -- **Type:** ``Integer`` - -- **Units:** ``hr`` +- **Type:** ``String`` - **Required:** ``false`` @@ -3539,12 +3425,10 @@ The start hour of the kitchen fan. If not provided, the OS-HPXML default (see HPXML Local Ventilation Fans) is used. +The quantity of the bathroom fans. If auto or not provided, the OS-HPXML default (see HPXML Local Ventilation Fans) is used. - **Name:** ``bathroom_fans_quantity`` -- **Type:** ``Integer`` - -- **Units:** ``#`` +- **Type:** ``String`` - **Required:** ``false`` @@ -3552,12 +3436,10 @@ The quantity of the bathroom fans. If not provided, the OS-HPXML default (see HPXML Local Ventilation Fans) is used. +The flow rate of the bathroom fans. If auto or not provided, the OS-HPXML default (see HPXML Local Ventilation Fans) is used. - **Name:** ``bathroom_fans_flow_rate`` -- **Type:** ``Double`` - -- **Units:** ``CFM`` +- **Type:** ``String`` - **Required:** ``false`` @@ -3565,12 +3447,10 @@ The flow rate of the bathroom fans. If not provided, the OS-HPXML default (see < **Bathroom Fans: Hours In Operation** -The hours in operation of the bathroom fans. If not provided, the OS-HPXML default (see HPXML Local Ventilation Fans) is used. +The hours in operation of the bathroom fans. If auto or not provided, the OS-HPXML default (see HPXML Local Ventilation Fans) is used. - **Name:** ``bathroom_fans_hours_in_operation`` -- **Type:** ``Double`` - -- **Units:** ``hrs/day`` +- **Type:** ``String`` - **Required:** ``false`` @@ -3578,12 +3458,10 @@ The hours in operation of the bathroom fans. If not provided, the OS-HPXML defau **Bathroom Fans: Fan Power** -The fan power of the bathroom fans. If not provided, the OS-HPXML default (see HPXML Local Ventilation Fans) is used. +The fan power of the bathroom fans. If auto or not provided, the OS-HPXML default (see HPXML Local Ventilation Fans) is used. - **Name:** ``bathroom_fans_power`` -- **Type:** ``Double`` - -- **Units:** ``W`` +- **Type:** ``String`` - **Required:** ``false`` @@ -3591,12 +3469,10 @@ The fan power of the bathroom fans. If not provided, the OS-HPXML default (see < **Bathroom Fans: Start Hour** -The start hour of the bathroom fans. If not provided, the OS-HPXML default (see HPXML Local Ventilation Fans) is used. +The start hour of the bathroom fans. If auto or not provided, the OS-HPXML default (see HPXML Local Ventilation Fans) is used. - **Name:** ``bathroom_fans_start_hour`` -- **Type:** ``Integer`` - -- **Units:** ``hr`` +- **Type:** ``String`` - **Required:** ``false`` @@ -3615,12 +3491,10 @@ Whether there is a whole house fan. **Whole House Fan: Flow Rate** -The flow rate of the whole house fan. If not provided, the OS-HPXML default (see HPXML Whole House Fans) is used. +The flow rate of the whole house fan. If auto or not provided, the OS-HPXML default (see HPXML Whole House Fans) is used. - **Name:** ``whole_house_fan_flow_rate`` -- **Type:** ``Double`` - -- **Units:** ``CFM`` +- **Type:** ``String`` - **Required:** ``false`` @@ -3628,12 +3502,10 @@ The flow rate of the whole house fan. If not provided, the OS-HPXML default (see **Whole House Fan: Fan Power** -The fan power of the whole house fan. If not provided, the OS-HPXML default (see HPXML Whole House Fans) is used. +The fan power of the whole house fan. If auto or not provided, the OS-HPXML default (see HPXML Whole House Fans) is used. - **Name:** ``whole_house_fan_power`` -- **Type:** ``Double`` - -- **Units:** ``W`` +- **Type:** ``String`` - **Required:** ``false`` @@ -3667,25 +3539,23 @@ The fuel type of water heater. Ignored for heat pump water heater. **Water Heater: Location** -The location of water heater. If not provided, the OS-HPXML default (see HPXML Water Heating Systems) is used. +The location of water heater. If auto or not provided, the OS-HPXML default (see HPXML Water Heating Systems) is used. - **Name:** ``water_heater_location`` - **Type:** ``Choice`` - **Required:** ``false`` -- **Choices:** `conditioned space`, `basement - conditioned`, `basement - unconditioned`, `garage`, `attic`, `attic - vented`, `attic - unvented`, `crawlspace`, `crawlspace - vented`, `crawlspace - unvented`, `crawlspace - conditioned`, `other exterior`, `other housing unit`, `other heated space`, `other multifamily buffer space`, `other non-freezing space` +- **Choices:** `auto`, `conditioned space`, `basement - conditioned`, `basement - unconditioned`, `garage`, `attic`, `attic - vented`, `attic - unvented`, `crawlspace`, `crawlspace - vented`, `crawlspace - unvented`, `crawlspace - conditioned`, `other exterior`, `other housing unit`, `other heated space`, `other multifamily buffer space`, `other non-freezing space`
**Water Heater: Tank Volume** -Nominal volume of water heater tank. If not provided, the OS-HPXML default (see Conventional Storage, Heat Pump, Combi Boiler w/ Storage) is used. +Nominal volume of water heater tank. If auto or not provided, the OS-HPXML default (see Conventional Storage, Heat Pump, Combi Boiler w/ Storage) is used. - **Name:** ``water_heater_tank_volume`` -- **Type:** ``Double`` - -- **Units:** ``gal`` +- **Type:** ``String`` - **Required:** ``false`` @@ -3717,25 +3587,23 @@ Rated Energy Factor or Uniform Energy Factor. Does not apply to space-heating bo **Water Heater: Usage Bin** -The usage of the water heater. Only applies if Efficiency Type is UniformEnergyFactor and Type is not instantaneous water heater. Does not apply to space-heating boilers. If not provided, the OS-HPXML default (see Conventional Storage, Heat Pump) is used. +The usage of the water heater. Only applies if Efficiency Type is UniformEnergyFactor and Type is not instantaneous water heater. Does not apply to space-heating boilers. If auto or not provided, the OS-HPXML default (see Conventional Storage, Heat Pump) is used. - **Name:** ``water_heater_usage_bin`` - **Type:** ``Choice`` - **Required:** ``false`` -- **Choices:** `very small`, `low`, `medium`, `high` +- **Choices:** `auto`, `very small`, `low`, `medium`, `high`
**Water Heater: Recovery Efficiency** -Ratio of energy delivered to water heater to the energy content of the fuel consumed by the water heater. Only used for non-electric storage water heaters. If not provided, the OS-HPXML default (see Conventional Storage) is used. +Ratio of energy delivered to water heater to the energy content of the fuel consumed by the water heater. Only used for non-electric storage water heaters. If auto or not provided, the OS-HPXML default (see Conventional Storage) is used. - **Name:** ``water_heater_recovery_efficiency`` -- **Type:** ``Double`` - -- **Units:** ``Frac`` +- **Type:** ``String`` - **Required:** ``false`` @@ -3743,12 +3611,10 @@ Ratio of energy delivered to water heater to the energy content of the fuel cons **Water Heater: Heating Capacity** -Heating capacity. Only applies to storage water heater and heat pump water heater (compressor). If not provided, the OS-HPXML default (see Conventional Storage, Heat Pump) is used. +Heating capacity. Only applies to storage water heater and heat pump water heater (compressor). If auto or not provided, the OS-HPXML default (see Conventional Storage, Heat Pump) is used. - **Name:** ``water_heater_heating_capacity`` -- **Type:** ``Double`` - -- **Units:** ``Btu/hr`` +- **Type:** ``String`` - **Required:** ``false`` @@ -3756,12 +3622,10 @@ Heating capacity. Only applies to storage water heater and heat pump water heate **Water Heater: Backup Heating Capacity** -Backup heating capacity for a heat pump water heater. If not provided, the OS-HPXML default (see Heat Pump) is used. +Backup heating capacity for a heat pump water heater. If auto or not provided, the OS-HPXML default (see Heat Pump) is used. - **Name:** ``water_heater_backup_heating_capacity`` -- **Type:** ``Double`` - -- **Units:** ``Btu/hr`` +- **Type:** ``String`` - **Required:** ``false`` @@ -3769,12 +3633,10 @@ Backup heating capacity for a heat pump water heater. If not provided, the OS-HP **Water Heater: Standby Loss** -The standby loss of water heater. Only applies to space-heating boilers. If not provided, the OS-HPXML default (see Combi Boiler w/ Storage) is used. +The standby loss of water heater. Only applies to space-heating boilers. If auto or not provided, the OS-HPXML default (see Combi Boiler w/ Storage) is used. - **Name:** ``water_heater_standby_loss`` -- **Type:** ``Double`` - -- **Units:** ``F/hr`` +- **Type:** ``String`` - **Required:** ``false`` @@ -3795,12 +3657,10 @@ The jacket R-value of water heater. Doesn't apply to instantaneous water heater **Water Heater: Setpoint Temperature** -The setpoint temperature of water heater. If not provided, the OS-HPXML default (see HPXML Water Heating Systems) is used. +The setpoint temperature of water heater. If auto or not provided, the OS-HPXML default (see HPXML Water Heating Systems) is used. - **Name:** ``water_heater_setpoint_temperature`` -- **Type:** ``Double`` - -- **Units:** ``F`` +- **Type:** ``String`` - **Required:** ``false`` @@ -3832,27 +3692,27 @@ Requires that the dwelling unit has a air-to-air, mini-split, or ground-to-air h **Water Heater: Tank Type** -Type of tank model to use. The 'stratified' tank generally provide more accurate results, but may significantly increase run time. Applies only to storage water heater. If not provided, the OS-HPXML default (see Conventional Storage) is used. +Type of tank model to use. The 'stratified' tank generally provide more accurate results, but may significantly increase run time. Applies only to storage water heater. If auto or not provided, the OS-HPXML default (see Conventional Storage) is used. - **Name:** ``water_heater_tank_model_type`` - **Type:** ``Choice`` - **Required:** ``false`` -- **Choices:** `mixed`, `stratified` +- **Choices:** `auto`, `mixed`, `stratified`
**Water Heater: Operating Mode** -The water heater operating mode. The 'heat pump only' option only uses the heat pump, while 'hybrid/auto' allows the backup electric resistance to come on in high demand situations. This is ignored if a scheduled operating mode type is selected. Applies only to heat pump water heater. If not provided, the OS-HPXML default (see Heat Pump) is used. +The water heater operating mode. The 'heat pump only' option only uses the heat pump, while 'hybrid/auto' allows the backup electric resistance to come on in high demand situations. This is ignored if a scheduled operating mode type is selected. Applies only to heat pump water heater. If auto or not provided, the OS-HPXML default (see Heat Pump) is used. - **Name:** ``water_heater_operating_mode`` - **Type:** ``Choice`` - **Required:** ``false`` -- **Choices:** `hybrid/auto`, `heat pump only` +- **Choices:** `auto`, `hybrid/auto`, `heat pump only`
@@ -3871,12 +3731,10 @@ The type of the hot water distribution system. **Hot Water Distribution: Standard Piping Length** -If the distribution system is Standard, the length of the piping. If not provided, the OS-HPXML default (see Standard) is used. +If the distribution system is Standard, the length of the piping. If auto or not provided, the OS-HPXML default (see Standard) is used. - **Name:** ``hot_water_distribution_standard_piping_length`` -- **Type:** ``Double`` - -- **Units:** ``ft`` +- **Type:** ``String`` - **Required:** ``false`` @@ -3897,12 +3755,10 @@ If the distribution system is Recirculation, the type of hot water recirculation **Hot Water Distribution: Recirculation Piping Length** -If the distribution system is Recirculation, the length of the recirculation piping. If not provided, the OS-HPXML default (see Recirculation (In-Unit)) is used. +If the distribution system is Recirculation, the length of the recirculation piping. If auto or not provided, the OS-HPXML default (see Recirculation (In-Unit)) is used. - **Name:** ``hot_water_distribution_recirc_piping_length`` -- **Type:** ``Double`` - -- **Units:** ``ft`` +- **Type:** ``String`` - **Required:** ``false`` @@ -3910,12 +3766,10 @@ If the distribution system is Recirculation, the length of the recirculation pip **Hot Water Distribution: Recirculation Branch Piping Length** -If the distribution system is Recirculation, the length of the recirculation branch piping. If not provided, the OS-HPXML default (see Recirculation (In-Unit)) is used. +If the distribution system is Recirculation, the length of the recirculation branch piping. If auto or not provided, the OS-HPXML default (see Recirculation (In-Unit)) is used. - **Name:** ``hot_water_distribution_recirc_branch_piping_length`` -- **Type:** ``Double`` - -- **Units:** ``ft`` +- **Type:** ``String`` - **Required:** ``false`` @@ -3923,12 +3777,10 @@ If the distribution system is Recirculation, the length of the recirculation bra **Hot Water Distribution: Recirculation Pump Power** -If the distribution system is Recirculation, the recirculation pump power. If not provided, the OS-HPXML default (see Recirculation (In-Unit)) is used. +If the distribution system is Recirculation, the recirculation pump power. If auto or not provided, the OS-HPXML default (see Recirculation (In-Unit)) is used. - **Name:** ``hot_water_distribution_recirc_pump_power`` -- **Type:** ``Double`` - -- **Units:** ``W`` +- **Type:** ``String`` - **Required:** ``false`` @@ -3936,12 +3788,10 @@ If the distribution system is Recirculation, the recirculation pump power. If no **Hot Water Distribution: Pipe Insulation Nominal R-Value** -Nominal R-value of the pipe insulation. If not provided, the OS-HPXML default (see HPXML Hot Water Distribution) is used. +Nominal R-value of the pipe insulation. If auto or not provided, the OS-HPXML default (see HPXML Hot Water Distribution) is used. - **Name:** ``hot_water_distribution_pipe_r`` -- **Type:** ``Double`` - -- **Units:** ``h-ft^2-R/Btu`` +- **Type:** ``String`` - **Required:** ``false`` @@ -4008,10 +3858,10 @@ Whether the sink fixture is low flow. If not provided, defaults to false. **Hot Water Fixtures: Usage Multiplier** -Multiplier on the hot water usage that can reflect, e.g., high/low usage occupants. If not provided, the OS-HPXML default (see HPXML Water Fixtures) is used. +Multiplier on the hot water usage that can reflect, e.g., high/low usage occupants. If auto or not provided, the OS-HPXML default (see HPXML Water Fixtures) is used. - **Name:** ``water_fixtures_usage_multiplier`` -- **Type:** ``Double`` +- **Type:** ``String`` - **Required:** ``false`` @@ -4019,10 +3869,10 @@ Multiplier on the hot water usage that can reflect, e.g., high/low usage occupan **General Water Use: Usage Multiplier** -Multiplier on internal gains from general water use (floor mopping, shower evaporation, water films on showers, tubs & sinks surfaces, plant watering, etc.) that can reflect, e.g., high/low usage occupants. If not provided, the OS-HPXML default (see HPXML Building Occupancy) is used. +Multiplier on internal gains from general water use (floor mopping, shower evaporation, water films on showers, tubs & sinks surfaces, plant watering, etc.) that can reflect, e.g., high/low usage occupants. If auto or not provided, the OS-HPXML default (see HPXML Building Occupancy) is used. - **Name:** ``general_water_use_usage_multiplier`` -- **Type:** ``Double`` +- **Type:** ``String`` - **Required:** ``false`` @@ -4132,12 +3982,10 @@ The collector rated thermal losses of the solar thermal system. **Solar Thermal: Storage Volume** -The storage volume of the solar thermal system. If not provided, the OS-HPXML default (see Detailed Inputs) is used. +The storage volume of the solar thermal system. If auto or not provided, the OS-HPXML default (see Detailed Inputs) is used. - **Name:** ``solar_thermal_storage_volume`` -- **Type:** ``Double`` - -- **Units:** ``gal`` +- **Type:** ``String`` - **Required:** ``false`` @@ -4169,40 +4017,40 @@ Whether there is a PV system present. If not provided, defaults to false. **PV System: Module Type** -Module type of the PV system. If not provided, the OS-HPXML default (see HPXML Photovoltaics) is used. +Module type of the PV system. If auto or not provided, the OS-HPXML default (see HPXML Photovoltaics) is used. - **Name:** ``pv_system_module_type`` - **Type:** ``Choice`` - **Required:** ``false`` -- **Choices:** `standard`, `premium`, `thin film` +- **Choices:** `auto`, `standard`, `premium`, `thin film`
**PV System: Location** -Location of the PV system. If not provided, the OS-HPXML default (see HPXML Photovoltaics) is used. +Location of the PV system. If auto or not provided, the OS-HPXML default (see HPXML Photovoltaics) is used. - **Name:** ``pv_system_location`` - **Type:** ``Choice`` - **Required:** ``false`` -- **Choices:** `roof`, `ground` +- **Choices:** `auto`, `roof`, `ground`
**PV System: Tracking** -Type of tracking for the PV system. If not provided, the OS-HPXML default (see HPXML Photovoltaics) is used. +Type of tracking for the PV system. If auto or not provided, the OS-HPXML default (see HPXML Photovoltaics) is used. - **Name:** ``pv_system_tracking`` - **Type:** ``Choice`` - **Required:** ``false`` -- **Choices:** `fixed`, `1-axis`, `1-axis backtracked`, `2-axis` +- **Choices:** `auto`, `fixed`, `1-axis`, `1-axis backtracked`, `2-axis`
@@ -4245,12 +4093,10 @@ Maximum power output of the PV system. For a shared system, this is the total bu **PV System: Inverter Efficiency** -Inverter efficiency of the PV system. If there are two PV systems, this will apply to both. If not provided, the OS-HPXML default (see HPXML Photovoltaics) is used. +Inverter efficiency of the PV system. If there are two PV systems, this will apply to both. If auto or not provided, the OS-HPXML default (see HPXML Photovoltaics) is used. - **Name:** ``pv_system_inverter_efficiency`` -- **Type:** ``Double`` - -- **Units:** ``Frac`` +- **Type:** ``String`` - **Required:** ``false`` @@ -4258,12 +4104,10 @@ Inverter efficiency of the PV system. If there are two PV systems, this will app **PV System: System Losses Fraction** -System losses fraction of the PV system. If there are two PV systems, this will apply to both. If not provided, the OS-HPXML default (see HPXML Photovoltaics) is used. +System losses fraction of the PV system. If there are two PV systems, this will apply to both. If auto or not provided, the OS-HPXML default (see HPXML Photovoltaics) is used. - **Name:** ``pv_system_system_losses_fraction`` -- **Type:** ``Double`` - -- **Units:** ``Frac`` +- **Type:** ``String`` - **Required:** ``false`` @@ -4295,40 +4139,40 @@ Whether there is a second PV system present. If not provided, defaults to false. **PV System 2: Module Type** -Module type of the second PV system. If not provided, the OS-HPXML default (see HPXML Photovoltaics) is used. +Module type of the second PV system. If auto or not provided, the OS-HPXML default (see HPXML Photovoltaics) is used. - **Name:** ``pv_system_2_module_type`` - **Type:** ``Choice`` - **Required:** ``false`` -- **Choices:** `standard`, `premium`, `thin film` +- **Choices:** `auto`, `auto`, `standard`, `premium`, `thin film`
**PV System 2: Location** -Location of the second PV system. If not provided, the OS-HPXML default (see HPXML Photovoltaics) is used. +Location of the second PV system. If auto or not provided, the OS-HPXML default (see HPXML Photovoltaics) is used. - **Name:** ``pv_system_2_location`` - **Type:** ``Choice`` - **Required:** ``false`` -- **Choices:** `roof`, `ground` +- **Choices:** `auto`, `auto`, `roof`, `ground`
**PV System 2: Tracking** -Type of tracking for the second PV system. If not provided, the OS-HPXML default (see HPXML Photovoltaics) is used. +Type of tracking for the second PV system. If auto or not provided, the OS-HPXML default (see HPXML Photovoltaics) is used. - **Name:** ``pv_system_2_tracking`` - **Type:** ``Choice`` - **Required:** ``false`` -- **Choices:** `fixed`, `1-axis`, `1-axis backtracked`, `2-axis` +- **Choices:** `auto`, `auto`, `fixed`, `1-axis`, `1-axis backtracked`, `2-axis`
@@ -4382,25 +4226,23 @@ Whether there is a lithium ion battery present. If not provided, defaults to fal **Battery: Location** -The space type for the lithium ion battery location. If not provided, the OS-HPXML default (see HPXML Batteries) is used. +The space type for the lithium ion battery location. If auto or not provided, the OS-HPXML default (see HPXML Batteries) is used. - **Name:** ``battery_location`` - **Type:** ``Choice`` - **Required:** ``false`` -- **Choices:** `conditioned space`, `basement - conditioned`, `basement - unconditioned`, `crawlspace`, `crawlspace - vented`, `crawlspace - unvented`, `crawlspace - conditioned`, `attic`, `attic - vented`, `attic - unvented`, `garage`, `outside` +- **Choices:** `auto`, `conditioned space`, `basement - conditioned`, `basement - unconditioned`, `crawlspace`, `crawlspace - vented`, `crawlspace - unvented`, `crawlspace - conditioned`, `attic`, `attic - vented`, `attic - unvented`, `garage`, `outside`
**Battery: Rated Power Output** -The rated power output of the lithium ion battery. If not provided, the OS-HPXML default (see HPXML Batteries) is used. +The rated power output of the lithium ion battery. If auto or not provided, the OS-HPXML default (see HPXML Batteries) is used. - **Name:** ``battery_power`` -- **Type:** ``Double`` - -- **Units:** ``W`` +- **Type:** ``String`` - **Required:** ``false`` @@ -4408,12 +4250,10 @@ The rated power output of the lithium ion battery. If not provided, the OS-HPXML **Battery: Nominal Capacity** -The nominal capacity of the lithium ion battery. If not provided, the OS-HPXML default (see HPXML Batteries) is used. +The nominal capacity of the lithium ion battery. If auto or not provided, the OS-HPXML default (see HPXML Batteries) is used. - **Name:** ``battery_capacity`` -- **Type:** ``Double`` - -- **Units:** ``kWh`` +- **Type:** ``String`` - **Required:** ``false`` @@ -4421,12 +4261,10 @@ The nominal capacity of the lithium ion battery. If not provided, the OS-HPXML d **Battery: Usable Capacity** -The usable capacity of the lithium ion battery. If not provided, the OS-HPXML default (see HPXML Batteries) is used. +The usable capacity of the lithium ion battery. If auto or not provided, the OS-HPXML default (see HPXML Batteries) is used. - **Name:** ``battery_usable_capacity`` -- **Type:** ``Double`` - -- **Units:** ``kWh`` +- **Type:** ``String`` - **Required:** ``false`` @@ -4434,12 +4272,10 @@ The usable capacity of the lithium ion battery. If not provided, the OS-HPXML de **Battery: Round Trip Efficiency** -The round trip efficiency of the lithium ion battery. If not provided, the OS-HPXML default (see HPXML Batteries) is used. +The round trip efficiency of the lithium ion battery. If auto or not provided, the OS-HPXML default (see HPXML Batteries) is used. - **Name:** ``battery_round_trip_efficiency`` -- **Type:** ``Double`` - -- **Units:** ``Frac`` +- **Type:** ``String`` - **Required:** ``false`` @@ -4504,10 +4340,10 @@ Fraction of all lamps (interior) that are light emitting diodes. Lighting not sp **Lighting: Interior Usage Multiplier** -Multiplier on the lighting energy usage (interior) that can reflect, e.g., high/low usage occupants. If not provided, the OS-HPXML default (see HPXML Lighting) is used. +Multiplier on the lighting energy usage (interior) that can reflect, e.g., high/low usage occupants. If auto or not provided, the OS-HPXML default (see HPXML Lighting) is used. - **Name:** ``lighting_interior_usage_multiplier`` -- **Type:** ``Double`` +- **Type:** ``String`` - **Required:** ``false`` @@ -4548,10 +4384,10 @@ Fraction of all lamps (exterior) that are light emitting diodes. Lighting not sp **Lighting: Exterior Usage Multiplier** -Multiplier on the lighting energy usage (exterior) that can reflect, e.g., high/low usage occupants. If not provided, the OS-HPXML default (see HPXML Lighting) is used. +Multiplier on the lighting energy usage (exterior) that can reflect, e.g., high/low usage occupants. If auto or not provided, the OS-HPXML default (see HPXML Lighting) is used. - **Name:** ``lighting_exterior_usage_multiplier`` -- **Type:** ``Double`` +- **Type:** ``String`` - **Required:** ``false`` @@ -4592,10 +4428,10 @@ Fraction of all lamps (garage) that are light emitting diodes. Lighting not spec **Lighting: Garage Usage Multiplier** -Multiplier on the lighting energy usage (garage) that can reflect, e.g., high/low usage occupants. If not provided, the OS-HPXML default (see HPXML Lighting) is used. +Multiplier on the lighting energy usage (garage) that can reflect, e.g., high/low usage occupants. If auto or not provided, the OS-HPXML default (see HPXML Lighting) is used. - **Name:** ``lighting_garage_usage_multiplier`` -- **Type:** ``Double`` +- **Type:** ``String`` - **Required:** ``false`` @@ -4614,12 +4450,10 @@ Whether there is holiday lighting. If not provided, defaults to false. **Holiday Lighting: Daily Consumption** -The daily energy consumption for holiday lighting (exterior). If not provided, the OS-HPXML default (see HPXML Lighting) is used. +The daily energy consumption for holiday lighting (exterior). If auto or not provided, the OS-HPXML default (see HPXML Lighting) is used. - **Name:** ``holiday_lighting_daily_kwh`` -- **Type:** ``Double`` - -- **Units:** ``kWh/day`` +- **Type:** ``String`` - **Required:** ``false`` @@ -4627,7 +4461,7 @@ The daily energy consumption for holiday lighting (exterior). If not provided, t **Holiday Lighting: Period** -Enter a date range like 'Nov 25 - Jan 5'. If not provided, the OS-HPXML default (see HPXML Lighting) is used. +Enter a date range like 'Nov 25 - Jan 5'. If auto or not provided, the OS-HPXML default (see HPXML Lighting) is used. - **Name:** ``holiday_lighting_period`` - **Type:** ``String`` @@ -4727,14 +4561,14 @@ Whether there is a clothes washer present. **Clothes Washer: Location** -The space type for the clothes washer location. If not provided, the OS-HPXML default (see HPXML Clothes Washer) is used. +The space type for the clothes washer location. If auto or not provided, the OS-HPXML default (see HPXML Clothes Washer) is used. - **Name:** ``clothes_washer_location`` - **Type:** ``Choice`` - **Required:** ``false`` -- **Choices:** `conditioned space`, `basement - conditioned`, `basement - unconditioned`, `garage`, `other housing unit`, `other heated space`, `other multifamily buffer space`, `other non-freezing space` +- **Choices:** `auto`, `conditioned space`, `basement - conditioned`, `basement - unconditioned`, `garage`, `other housing unit`, `other heated space`, `other multifamily buffer space`, `other non-freezing space`
@@ -4753,12 +4587,10 @@ The efficiency type of the clothes washer. **Clothes Washer: Efficiency** -The efficiency of the clothes washer. If not provided, the OS-HPXML default (see HPXML Clothes Washer) is used. +The efficiency of the clothes washer. If auto or not provided, the OS-HPXML default (see HPXML Clothes Washer) is used. - **Name:** ``clothes_washer_efficiency`` -- **Type:** ``Double`` - -- **Units:** ``ft^3/kWh-cyc`` +- **Type:** ``String`` - **Required:** ``false`` @@ -4766,12 +4598,10 @@ The efficiency of the clothes washer. If not provided, the OS-HPXML default (see **Clothes Washer: Rated Annual Consumption** -The annual energy consumed by the clothes washer, as rated, obtained from the EnergyGuide label. This includes both the appliance electricity consumption and the energy required for water heating. If not provided, the OS-HPXML default (see HPXML Clothes Washer) is used. +The annual energy consumed by the clothes washer, as rated, obtained from the EnergyGuide label. This includes both the appliance electricity consumption and the energy required for water heating. If auto or not provided, the OS-HPXML default (see HPXML Clothes Washer) is used. - **Name:** ``clothes_washer_rated_annual_kwh`` -- **Type:** ``Double`` - -- **Units:** ``kWh/yr`` +- **Type:** ``String`` - **Required:** ``false`` @@ -4779,12 +4609,10 @@ The annual energy consumed by the clothes washer, as rated, obtained from the En **Clothes Washer: Label Electric Rate** -The annual energy consumed by the clothes washer, as rated, obtained from the EnergyGuide label. This includes both the appliance electricity consumption and the energy required for water heating. If not provided, the OS-HPXML default (see HPXML Clothes Washer) is used. +The annual energy consumed by the clothes washer, as rated, obtained from the EnergyGuide label. This includes both the appliance electricity consumption and the energy required for water heating. If auto or not provided, the OS-HPXML default (see HPXML Clothes Washer) is used. - **Name:** ``clothes_washer_label_electric_rate`` -- **Type:** ``Double`` - -- **Units:** ``$/kWh`` +- **Type:** ``String`` - **Required:** ``false`` @@ -4792,12 +4620,10 @@ The annual energy consumed by the clothes washer, as rated, obtained from the En **Clothes Washer: Label Gas Rate** -The annual energy consumed by the clothes washer, as rated, obtained from the EnergyGuide label. This includes both the appliance electricity consumption and the energy required for water heating. If not provided, the OS-HPXML default (see HPXML Clothes Washer) is used. +The annual energy consumed by the clothes washer, as rated, obtained from the EnergyGuide label. This includes both the appliance electricity consumption and the energy required for water heating. If auto or not provided, the OS-HPXML default (see HPXML Clothes Washer) is used. - **Name:** ``clothes_washer_label_gas_rate`` -- **Type:** ``Double`` - -- **Units:** ``$/therm`` +- **Type:** ``String`` - **Required:** ``false`` @@ -4805,12 +4631,10 @@ The annual energy consumed by the clothes washer, as rated, obtained from the En **Clothes Washer: Label Annual Cost with Gas DHW** -The annual cost of using the system under test conditions. Input is obtained from the EnergyGuide label. If not provided, the OS-HPXML default (see HPXML Clothes Washer) is used. +The annual cost of using the system under test conditions. Input is obtained from the EnergyGuide label. If auto or not provided, the OS-HPXML default (see HPXML Clothes Washer) is used. - **Name:** ``clothes_washer_label_annual_gas_cost`` -- **Type:** ``Double`` - -- **Units:** ``$`` +- **Type:** ``String`` - **Required:** ``false`` @@ -4818,12 +4642,10 @@ The annual cost of using the system under test conditions. Input is obtained fro **Clothes Washer: Label Usage** -The clothes washer loads per week. If not provided, the OS-HPXML default (see HPXML Clothes Washer) is used. +The clothes washer loads per week. If auto or not provided, the OS-HPXML default (see HPXML Clothes Washer) is used. - **Name:** ``clothes_washer_label_usage`` -- **Type:** ``Double`` - -- **Units:** ``cyc/wk`` +- **Type:** ``String`` - **Required:** ``false`` @@ -4831,12 +4653,10 @@ The clothes washer loads per week. If not provided, the OS-HPXML default (see HPXML Clothes Washer) is used. +Volume of the washer drum. Obtained from the EnergyStar website or the manufacturer's literature. If auto or not provided, the OS-HPXML default (see HPXML Clothes Washer) is used. - **Name:** ``clothes_washer_capacity`` -- **Type:** ``Double`` - -- **Units:** ``ft^3`` +- **Type:** ``String`` - **Required:** ``false`` @@ -4844,10 +4664,10 @@ Volume of the washer drum. Obtained from the EnergyStar website or the manufactu **Clothes Washer: Usage Multiplier** -Multiplier on the clothes washer energy and hot water usage that can reflect, e.g., high/low usage occupants. If not provided, the OS-HPXML default (see HPXML Clothes Washer) is used. +Multiplier on the clothes washer energy and hot water usage that can reflect, e.g., high/low usage occupants. If auto or not provided, the OS-HPXML default (see HPXML Clothes Washer) is used. - **Name:** ``clothes_washer_usage_multiplier`` -- **Type:** ``Double`` +- **Type:** ``String`` - **Required:** ``false`` @@ -4866,14 +4686,14 @@ Whether there is a clothes dryer present. **Clothes Dryer: Location** -The space type for the clothes dryer location. If not provided, the OS-HPXML default (see HPXML Clothes Dryer) is used. +The space type for the clothes dryer location. If auto or not provided, the OS-HPXML default (see HPXML Clothes Dryer) is used. - **Name:** ``clothes_dryer_location`` - **Type:** ``Choice`` - **Required:** ``false`` -- **Choices:** `conditioned space`, `basement - conditioned`, `basement - unconditioned`, `garage`, `other housing unit`, `other heated space`, `other multifamily buffer space`, `other non-freezing space` +- **Choices:** `auto`, `auto`, `conditioned space`, `basement - conditioned`, `basement - unconditioned`, `garage`, `other housing unit`, `other heated space`, `other multifamily buffer space`, `other non-freezing space`
@@ -4905,12 +4725,10 @@ The efficiency type of the clothes dryer. **Clothes Dryer: Efficiency** -The efficiency of the clothes dryer. If not provided, the OS-HPXML default (see HPXML Clothes Dryer) is used. +The efficiency of the clothes dryer. If auto or not provided, the OS-HPXML default (see HPXML Clothes Dryer) is used. - **Name:** ``clothes_dryer_efficiency`` -- **Type:** ``Double`` - -- **Units:** ``lb/kWh`` +- **Type:** ``String`` - **Required:** ``false`` @@ -4918,12 +4736,10 @@ The efficiency of the clothes dryer. If not provided, the OS-HPXML default (see **Clothes Dryer: Vented Flow Rate** -The exhaust flow rate of the vented clothes dryer. If not provided, the OS-HPXML default (see HPXML Clothes Dryer) is used. +The exhaust flow rate of the vented clothes dryer. If auto or not provided, the OS-HPXML default (see HPXML Clothes Dryer) is used. - **Name:** ``clothes_dryer_vented_flow_rate`` -- **Type:** ``Double`` - -- **Units:** ``CFM`` +- **Type:** ``String`` - **Required:** ``false`` @@ -4931,10 +4747,10 @@ The exhaust flow rate of the vented clothes dryer. If not provided, the OS-HPXML **Clothes Dryer: Usage Multiplier** -Multiplier on the clothes dryer energy usage that can reflect, e.g., high/low usage occupants. If not provided, the OS-HPXML default (see HPXML Clothes Dryer) is used. +Multiplier on the clothes dryer energy usage that can reflect, e.g., high/low usage occupants. If auto or not provided, the OS-HPXML default (see HPXML Clothes Dryer) is used. - **Name:** ``clothes_dryer_usage_multiplier`` -- **Type:** ``Double`` +- **Type:** ``String`` - **Required:** ``false`` @@ -4953,14 +4769,14 @@ Whether there is a dishwasher present. **Dishwasher: Location** -The space type for the dishwasher location. If not provided, the OS-HPXML default (see HPXML Dishwasher) is used. +The space type for the dishwasher location. If auto or not provided, the OS-HPXML default (see HPXML Dishwasher) is used. - **Name:** ``dishwasher_location`` - **Type:** ``Choice`` - **Required:** ``false`` -- **Choices:** `conditioned space`, `basement - conditioned`, `basement - unconditioned`, `garage`, `other housing unit`, `other heated space`, `other multifamily buffer space`, `other non-freezing space` +- **Choices:** `auto`, `auto`, `auto`, `conditioned space`, `basement - conditioned`, `basement - unconditioned`, `garage`, `other housing unit`, `other heated space`, `other multifamily buffer space`, `other non-freezing space`
@@ -4979,12 +4795,10 @@ The efficiency type of dishwasher. **Dishwasher: Efficiency** -The efficiency of the dishwasher. If not provided, the OS-HPXML default (see HPXML Dishwasher) is used. +The efficiency of the dishwasher. If auto or not provided, the OS-HPXML default (see HPXML Dishwasher) is used. - **Name:** ``dishwasher_efficiency`` -- **Type:** ``Double`` - -- **Units:** ``RatedAnnualkWh or EnergyFactor`` +- **Type:** ``String`` - **Required:** ``false`` @@ -4992,12 +4806,10 @@ The efficiency of the dishwasher. If not provided, the OS-HPXML default (see HPXML Dishwasher) is used. +The label electric rate of the dishwasher. If auto or not provided, the OS-HPXML default (see HPXML Dishwasher) is used. - **Name:** ``dishwasher_label_electric_rate`` -- **Type:** ``Double`` - -- **Units:** ``$/kWh`` +- **Type:** ``String`` - **Required:** ``false`` @@ -5005,12 +4817,10 @@ The label electric rate of the dishwasher. If not provided, the OS-HPXML default **Dishwasher: Label Gas Rate** -The label gas rate of the dishwasher. If not provided, the OS-HPXML default (see HPXML Dishwasher) is used. +The label gas rate of the dishwasher. If auto or not provided, the OS-HPXML default (see HPXML Dishwasher) is used. - **Name:** ``dishwasher_label_gas_rate`` -- **Type:** ``Double`` - -- **Units:** ``$/therm`` +- **Type:** ``String`` - **Required:** ``false`` @@ -5018,12 +4828,10 @@ The label gas rate of the dishwasher. If not provided, the OS-HPXML default (see **Dishwasher: Label Annual Gas Cost** -The label annual gas cost of the dishwasher. If not provided, the OS-HPXML default (see HPXML Dishwasher) is used. +The label annual gas cost of the dishwasher. If auto or not provided, the OS-HPXML default (see HPXML Dishwasher) is used. - **Name:** ``dishwasher_label_annual_gas_cost`` -- **Type:** ``Double`` - -- **Units:** ``$`` +- **Type:** ``String`` - **Required:** ``false`` @@ -5031,12 +4839,10 @@ The label annual gas cost of the dishwasher. If not provided, the OS-HPXML defau **Dishwasher: Label Usage** -The dishwasher loads per week. If not provided, the OS-HPXML default (see HPXML Dishwasher) is used. +The dishwasher loads per week. If auto or not provided, the OS-HPXML default (see HPXML Dishwasher) is used. - **Name:** ``dishwasher_label_usage`` -- **Type:** ``Double`` - -- **Units:** ``cyc/wk`` +- **Type:** ``String`` - **Required:** ``false`` @@ -5044,12 +4850,10 @@ The dishwasher loads per week. If not provided, the OS-HPXML default (see HPXML Dishwasher) is used. +The number of place settings for the unit. Data obtained from manufacturer's literature. If auto or not provided, the OS-HPXML default (see HPXML Dishwasher) is used. - **Name:** ``dishwasher_place_setting_capacity`` -- **Type:** ``Integer`` - -- **Units:** ``#`` +- **Type:** ``String`` - **Required:** ``false`` @@ -5057,10 +4861,10 @@ The number of place settings for the unit. Data obtained from manufacturer's lit **Dishwasher: Usage Multiplier** -Multiplier on the dishwasher energy usage that can reflect, e.g., high/low usage occupants. If not provided, the OS-HPXML default (see HPXML Dishwasher) is used. +Multiplier on the dishwasher energy usage that can reflect, e.g., high/low usage occupants. If auto or not provided, the OS-HPXML default (see HPXML Dishwasher) is used. - **Name:** ``dishwasher_usage_multiplier`` -- **Type:** ``Double`` +- **Type:** ``String`` - **Required:** ``false`` @@ -5079,25 +4883,23 @@ Whether there is a refrigerator present. **Refrigerator: Location** -The space type for the refrigerator location. If not provided, the OS-HPXML default (see HPXML Refrigerators) is used. +The space type for the refrigerator location. If auto or not provided, the OS-HPXML default (see HPXML Refrigerators) is used. - **Name:** ``refrigerator_location`` - **Type:** ``Choice`` - **Required:** ``false`` -- **Choices:** `conditioned space`, `basement - conditioned`, `basement - unconditioned`, `garage`, `other housing unit`, `other heated space`, `other multifamily buffer space`, `other non-freezing space` +- **Choices:** `auto`, `auto`, `auto`, `auto`, `conditioned space`, `basement - conditioned`, `basement - unconditioned`, `garage`, `other housing unit`, `other heated space`, `other multifamily buffer space`, `other non-freezing space`
**Refrigerator: Rated Annual Consumption** -The EnergyGuide rated annual energy consumption for a refrigerator. If not provided, the OS-HPXML default (see HPXML Refrigerators) is used. +The EnergyGuide rated annual energy consumption for a refrigerator. If auto or not provided, the OS-HPXML default (see HPXML Refrigerators) is used. - **Name:** ``refrigerator_rated_annual_kwh`` -- **Type:** ``Double`` - -- **Units:** ``kWh/yr`` +- **Type:** ``String`` - **Required:** ``false`` @@ -5105,10 +4907,10 @@ The EnergyGuide rated annual energy consumption for a refrigerator. If not provi **Refrigerator: Usage Multiplier** -Multiplier on the refrigerator energy usage that can reflect, e.g., high/low usage occupants. If not provided, the OS-HPXML default (see HPXML Refrigerators) is used. +Multiplier on the refrigerator energy usage that can reflect, e.g., high/low usage occupants. If auto or not provided, the OS-HPXML default (see HPXML Refrigerators) is used. - **Name:** ``refrigerator_usage_multiplier`` -- **Type:** ``Double`` +- **Type:** ``String`` - **Required:** ``false`` @@ -5127,25 +4929,23 @@ Whether there is an extra refrigerator present. If not provided, defaults to fal **Extra Refrigerator: Location** -The space type for the extra refrigerator location. If not provided, the OS-HPXML default (see HPXML Refrigerators) is used. +The space type for the extra refrigerator location. If auto or not provided, the OS-HPXML default (see HPXML Refrigerators) is used. - **Name:** ``extra_refrigerator_location`` - **Type:** ``Choice`` - **Required:** ``false`` -- **Choices:** `conditioned space`, `basement - conditioned`, `basement - unconditioned`, `garage`, `other housing unit`, `other heated space`, `other multifamily buffer space`, `other non-freezing space` +- **Choices:** `auto`, `auto`, `auto`, `auto`, `auto`, `conditioned space`, `basement - conditioned`, `basement - unconditioned`, `garage`, `other housing unit`, `other heated space`, `other multifamily buffer space`, `other non-freezing space`
**Extra Refrigerator: Rated Annual Consumption** -The EnergyGuide rated annual energy consumption for an extra refrigerator. If not provided, the OS-HPXML default (see HPXML Refrigerators) is used. +The EnergyGuide rated annual energy consumption for an extra refrigerator. If auto or not provided, the OS-HPXML default (see HPXML Refrigerators) is used. - **Name:** ``extra_refrigerator_rated_annual_kwh`` -- **Type:** ``Double`` - -- **Units:** ``kWh/yr`` +- **Type:** ``String`` - **Required:** ``false`` @@ -5153,10 +4953,10 @@ The EnergyGuide rated annual energy consumption for an extra refrigerator. If no **Extra Refrigerator: Usage Multiplier** -Multiplier on the extra refrigerator energy usage that can reflect, e.g., high/low usage occupants. If not provided, the OS-HPXML default (see HPXML Refrigerators) is used. +Multiplier on the extra refrigerator energy usage that can reflect, e.g., high/low usage occupants. If auto or not provided, the OS-HPXML default (see HPXML Refrigerators) is used. - **Name:** ``extra_refrigerator_usage_multiplier`` -- **Type:** ``Double`` +- **Type:** ``String`` - **Required:** ``false`` @@ -5175,25 +4975,23 @@ Whether there is a freezer present. If not provided, defaults to false. **Freezer: Location** -The space type for the freezer location. If not provided, the OS-HPXML default (see HPXML Freezers) is used. +The space type for the freezer location. If auto or not provided, the OS-HPXML default (see HPXML Freezers) is used. - **Name:** ``freezer_location`` - **Type:** ``Choice`` - **Required:** ``false`` -- **Choices:** `conditioned space`, `basement - conditioned`, `basement - unconditioned`, `garage`, `other housing unit`, `other heated space`, `other multifamily buffer space`, `other non-freezing space` +- **Choices:** `auto`, `auto`, `auto`, `auto`, `auto`, `auto`, `conditioned space`, `basement - conditioned`, `basement - unconditioned`, `garage`, `other housing unit`, `other heated space`, `other multifamily buffer space`, `other non-freezing space`
**Freezer: Rated Annual Consumption** -The EnergyGuide rated annual energy consumption for a freezer. If not provided, the OS-HPXML default (see HPXML Freezers) is used. +The EnergyGuide rated annual energy consumption for a freezer. If auto or not provided, the OS-HPXML default (see HPXML Freezers) is used. - **Name:** ``freezer_rated_annual_kwh`` -- **Type:** ``Double`` - -- **Units:** ``kWh/yr`` +- **Type:** ``String`` - **Required:** ``false`` @@ -5201,10 +4999,10 @@ The EnergyGuide rated annual energy consumption for a freezer. If not provided, **Freezer: Usage Multiplier** -Multiplier on the freezer energy usage that can reflect, e.g., high/low usage occupants. If not provided, the OS-HPXML default (see HPXML Freezers) is used. +Multiplier on the freezer energy usage that can reflect, e.g., high/low usage occupants. If auto or not provided, the OS-HPXML default (see HPXML Freezers) is used. - **Name:** ``freezer_usage_multiplier`` -- **Type:** ``Double`` +- **Type:** ``String`` - **Required:** ``false`` @@ -5223,14 +5021,14 @@ Whether there is a cooking range/oven present. **Cooking Range/Oven: Location** -The space type for the cooking range/oven location. If not provided, the OS-HPXML default (see HPXML Cooking Range/Oven) is used. +The space type for the cooking range/oven location. If auto or not provided, the OS-HPXML default (see HPXML Cooking Range/Oven) is used. - **Name:** ``cooking_range_oven_location`` - **Type:** ``Choice`` - **Required:** ``false`` -- **Choices:** `conditioned space`, `basement - conditioned`, `basement - unconditioned`, `garage`, `other housing unit`, `other heated space`, `other multifamily buffer space`, `other non-freezing space` +- **Choices:** `auto`, `auto`, `auto`, `auto`, `auto`, `auto`, `auto`, `conditioned space`, `basement - conditioned`, `basement - unconditioned`, `garage`, `other housing unit`, `other heated space`, `other multifamily buffer space`, `other non-freezing space`
@@ -5249,32 +5047,36 @@ Type of fuel used by the cooking range/oven. **Cooking Range/Oven: Is Induction** -Whether the cooking range is induction. If not provided, the OS-HPXML default (see HPXML Cooking Range/Oven) is used. +Whether the cooking range is induction. If auto or not provided, the OS-HPXML default (see HPXML Cooking Range/Oven) is used. - **Name:** ``cooking_range_oven_is_induction`` -- **Type:** ``Boolean`` +- **Type:** ``Choice`` - **Required:** ``false`` +- **Choices:** `auto`, `true`, `false` +
**Cooking Range/Oven: Is Convection** -Whether the oven is convection. If not provided, the OS-HPXML default (see HPXML Cooking Range/Oven) is used. +Whether the oven is convection. If auto or not provided, the OS-HPXML default (see HPXML Cooking Range/Oven) is used. - **Name:** ``cooking_range_oven_is_convection`` -- **Type:** ``Boolean`` +- **Type:** ``Choice`` - **Required:** ``false`` +- **Choices:** `auto`, `true`, `false` +
**Cooking Range/Oven: Usage Multiplier** -Multiplier on the cooking range/oven energy usage that can reflect, e.g., high/low usage occupants. If not provided, the OS-HPXML default (see HPXML Cooking Range/Oven) is used. +Multiplier on the cooking range/oven energy usage that can reflect, e.g., high/low usage occupants. If auto or not provided, the OS-HPXML default (see HPXML Cooking Range/Oven) is used. - **Name:** ``cooking_range_oven_usage_multiplier`` -- **Type:** ``Double`` +- **Type:** ``String`` - **Required:** ``false`` @@ -5293,12 +5095,10 @@ Whether there are any ceiling fans. **Ceiling Fan: Label Energy Use** -The label average energy use of the ceiling fan(s). If neither Efficiency nor Label Energy Use provided, the OS-HPXML default (see HPXML Ceiling Fans) is used. +The label average energy use of the ceiling fan(s). If auto or not provided, the OS-HPXML default (see HPXML Ceiling Fans) is used. - **Name:** ``ceiling_fan_label_energy_use`` -- **Type:** ``Double`` - -- **Units:** ``W`` +- **Type:** ``String`` - **Required:** ``false`` @@ -5306,12 +5106,10 @@ The label average energy use of the ceiling fan(s). If neither Efficiency nor La **Ceiling Fan: Efficiency** -The efficiency rating of the ceiling fan(s) at medium speed. Only used if Label Energy Use not provided. If neither Efficiency nor Label Energy Use provided, the OS-HPXML default (see HPXML Ceiling Fans) is used. +The efficiency rating of the ceiling fan(s) at medium speed. Only used if Label Energy Use not provided. If auto or not provided, the OS-HPXML default (see HPXML Ceiling Fans) is used. - **Name:** ``ceiling_fan_efficiency`` -- **Type:** ``Double`` - -- **Units:** ``CFM/W`` +- **Type:** ``String`` - **Required:** ``false`` @@ -5319,12 +5117,10 @@ The efficiency rating of the ceiling fan(s) at medium speed. Only used if Label **Ceiling Fan: Quantity** -Total number of ceiling fans. If not provided, the OS-HPXML default (see HPXML Ceiling Fans) is used. +Total number of ceiling fans. If auto or not provided, the OS-HPXML default (see HPXML Ceiling Fans) is used. - **Name:** ``ceiling_fan_quantity`` -- **Type:** ``Integer`` - -- **Units:** ``#`` +- **Type:** ``String`` - **Required:** ``false`` @@ -5332,12 +5128,10 @@ Total number of ceiling fans. If not provided, the OS-HPXML default (see HPXML Ceiling Fans) is used. +The cooling setpoint temperature offset during months when the ceiling fans are operating. Only applies if ceiling fan quantity is greater than zero. If auto or not provided, the OS-HPXML default (see HPXML Ceiling Fans) is used. - **Name:** ``ceiling_fan_cooling_setpoint_temp_offset`` -- **Type:** ``Double`` - -- **Units:** ``F`` +- **Type:** ``String`` - **Required:** ``false`` @@ -5356,12 +5150,10 @@ Whether there are televisions. **Misc Plug Loads: Television Annual kWh** -The annual energy consumption of the television plug loads. If not provided, the OS-HPXML default (see HPXML Plug Loads) is used. +The annual energy consumption of the television plug loads. If auto or not provided, the OS-HPXML default (see HPXML Plug Loads) is used. - **Name:** ``misc_plug_loads_television_annual_kwh`` -- **Type:** ``Double`` - -- **Units:** ``kWh/yr`` +- **Type:** ``String`` - **Required:** ``false`` @@ -5369,10 +5161,10 @@ The annual energy consumption of the television plug loads. If not provided, the **Misc Plug Loads: Television Usage Multiplier** -Multiplier on the television energy usage that can reflect, e.g., high/low usage occupants. If not provided, the OS-HPXML default (see HPXML Plug Loads) is used. +Multiplier on the television energy usage that can reflect, e.g., high/low usage occupants. If auto or not provided, the OS-HPXML default (see HPXML Plug Loads) is used. - **Name:** ``misc_plug_loads_television_usage_multiplier`` -- **Type:** ``Double`` +- **Type:** ``String`` - **Required:** ``false`` @@ -5380,12 +5172,10 @@ Multiplier on the television energy usage that can reflect, e.g., high/low usage **Misc Plug Loads: Other Annual kWh** -The annual energy consumption of the other residual plug loads. If not provided, the OS-HPXML default (see HPXML Plug Loads) is used. +The annual energy consumption of the other residual plug loads. If auto or not provided, the OS-HPXML default (see HPXML Plug Loads) is used. - **Name:** ``misc_plug_loads_other_annual_kwh`` -- **Type:** ``Double`` - -- **Units:** ``kWh/yr`` +- **Type:** ``String`` - **Required:** ``false`` @@ -5393,12 +5183,10 @@ The annual energy consumption of the other residual plug loads. If not provided, **Misc Plug Loads: Other Sensible Fraction** -Fraction of other residual plug loads' internal gains that are sensible. If not provided, the OS-HPXML default (see HPXML Plug Loads) is used. +Fraction of other residual plug loads' internal gains that are sensible. If auto or not provided, the OS-HPXML default (see HPXML Plug Loads) is used. - **Name:** ``misc_plug_loads_other_frac_sensible`` -- **Type:** ``Double`` - -- **Units:** ``Frac`` +- **Type:** ``String`` - **Required:** ``false`` @@ -5406,12 +5194,10 @@ Fraction of other residual plug loads' internal gains that are sensible. If not **Misc Plug Loads: Other Latent Fraction** -Fraction of other residual plug loads' internal gains that are latent. If not provided, the OS-HPXML default (see HPXML Plug Loads) is used. +Fraction of other residual plug loads' internal gains that are latent. If auto or not provided, the OS-HPXML default (see HPXML Plug Loads) is used. - **Name:** ``misc_plug_loads_other_frac_latent`` -- **Type:** ``Double`` - -- **Units:** ``Frac`` +- **Type:** ``String`` - **Required:** ``false`` @@ -5419,10 +5205,10 @@ Fraction of other residual plug loads' internal gains that are latent. If not pr **Misc Plug Loads: Other Usage Multiplier** -Multiplier on the other energy usage that can reflect, e.g., high/low usage occupants. If not provided, the OS-HPXML default (see HPXML Plug Loads) is used. +Multiplier on the other energy usage that can reflect, e.g., high/low usage occupants. If auto or not provided, the OS-HPXML default (see HPXML Plug Loads) is used. - **Name:** ``misc_plug_loads_other_usage_multiplier`` -- **Type:** ``Double`` +- **Type:** ``String`` - **Required:** ``false`` @@ -5441,12 +5227,10 @@ Whether there is a well pump. If not provided, defaults to false. **Misc Plug Loads: Well Pump Annual kWh** -The annual energy consumption of the well pump plug loads. If not provided, the OS-HPXML default (see HPXML Plug Loads) is used. +The annual energy consumption of the well pump plug loads. If auto or not provided, the OS-HPXML default (see HPXML Plug Loads) is used. - **Name:** ``misc_plug_loads_well_pump_annual_kwh`` -- **Type:** ``Double`` - -- **Units:** ``kWh/yr`` +- **Type:** ``String`` - **Required:** ``false`` @@ -5454,10 +5238,10 @@ The annual energy consumption of the well pump plug loads. If not provided, the **Misc Plug Loads: Well Pump Usage Multiplier** -Multiplier on the well pump energy usage that can reflect, e.g., high/low usage occupants. If not provided, the OS-HPXML default (see HPXML Plug Loads) is used. +Multiplier on the well pump energy usage that can reflect, e.g., high/low usage occupants. If auto or not provided, the OS-HPXML default (see HPXML Plug Loads) is used. - **Name:** ``misc_plug_loads_well_pump_usage_multiplier`` -- **Type:** ``Double`` +- **Type:** ``String`` - **Required:** ``false`` @@ -5476,12 +5260,10 @@ Whether there is an electric vehicle. If not provided, defaults to false. **Misc Plug Loads: Vehicle Annual kWh** -The annual energy consumption of the electric vehicle plug loads. If not provided, the OS-HPXML default (see HPXML Plug Loads) is used. +The annual energy consumption of the electric vehicle plug loads. If auto or not provided, the OS-HPXML default (see HPXML Plug Loads) is used. - **Name:** ``misc_plug_loads_vehicle_annual_kwh`` -- **Type:** ``Double`` - -- **Units:** ``kWh/yr`` +- **Type:** ``String`` - **Required:** ``false`` @@ -5489,10 +5271,10 @@ The annual energy consumption of the electric vehicle plug loads. If not provide **Misc Plug Loads: Vehicle Usage Multiplier** -Multiplier on the electric vehicle energy usage that can reflect, e.g., high/low usage occupants. If not provided, the OS-HPXML default (see HPXML Plug Loads) is used. +Multiplier on the electric vehicle energy usage that can reflect, e.g., high/low usage occupants. If auto or not provided, the OS-HPXML default (see HPXML Plug Loads) is used. - **Name:** ``misc_plug_loads_vehicle_usage_multiplier`` -- **Type:** ``Double`` +- **Type:** ``String`` - **Required:** ``false`` @@ -5524,12 +5306,10 @@ The fuel type of the fuel loads grill. **Misc Fuel Loads: Grill Annual therm** -The annual energy consumption of the fuel loads grill. If not provided, the OS-HPXML default (see HPXML Fuel Loads) is used. +The annual energy consumption of the fuel loads grill. If auto or not provided, the OS-HPXML default (see HPXML Fuel Loads) is used. - **Name:** ``misc_fuel_loads_grill_annual_therm`` -- **Type:** ``Double`` - -- **Units:** ``therm/yr`` +- **Type:** ``String`` - **Required:** ``false`` @@ -5537,10 +5317,10 @@ The annual energy consumption of the fuel loads grill. If not provided, the OS-H **Misc Fuel Loads: Grill Usage Multiplier** -Multiplier on the fuel loads grill energy usage that can reflect, e.g., high/low usage occupants. If not provided, the OS-HPXML default (see HPXML Fuel Loads) is used. +Multiplier on the fuel loads grill energy usage that can reflect, e.g., high/low usage occupants. If auto or not provided, the OS-HPXML default (see HPXML Fuel Loads) is used. - **Name:** ``misc_fuel_loads_grill_usage_multiplier`` -- **Type:** ``Double`` +- **Type:** ``String`` - **Required:** ``false`` @@ -5572,12 +5352,10 @@ The fuel type of the fuel loads lighting. **Misc Fuel Loads: Lighting Annual therm** -The annual energy consumption of the fuel loads lighting. If not provided, the OS-HPXML default (see HPXML Fuel Loads)is used. +The annual energy consumption of the fuel loads lighting. If auto or not provided, the OS-HPXML default (see HPXML Fuel Loads) is used. - **Name:** ``misc_fuel_loads_lighting_annual_therm`` -- **Type:** ``Double`` - -- **Units:** ``therm/yr`` +- **Type:** ``String`` - **Required:** ``false`` @@ -5585,10 +5363,10 @@ The annual energy consumption of the fuel loads lighting. If not provided, the O **Misc Fuel Loads: Lighting Usage Multiplier** -Multiplier on the fuel loads lighting energy usage that can reflect, e.g., high/low usage occupants. If not provided, the OS-HPXML default (see HPXML Fuel Loads) is used. +Multiplier on the fuel loads lighting energy usage that can reflect, e.g., high/low usage occupants. If auto or not provided, the OS-HPXML default (see HPXML Fuel Loads) is used. - **Name:** ``misc_fuel_loads_lighting_usage_multiplier`` -- **Type:** ``Double`` +- **Type:** ``String`` - **Required:** ``false`` @@ -5620,12 +5398,10 @@ The fuel type of the fuel loads fireplace. **Misc Fuel Loads: Fireplace Annual therm** -The annual energy consumption of the fuel loads fireplace. If not provided, the OS-HPXML default (see HPXML Fuel Loads) is used. +The annual energy consumption of the fuel loads fireplace. If auto or not provided, the OS-HPXML default (see HPXML Fuel Loads) is used. - **Name:** ``misc_fuel_loads_fireplace_annual_therm`` -- **Type:** ``Double`` - -- **Units:** ``therm/yr`` +- **Type:** ``String`` - **Required:** ``false`` @@ -5633,12 +5409,10 @@ The annual energy consumption of the fuel loads fireplace. If not provided, the **Misc Fuel Loads: Fireplace Sensible Fraction** -Fraction of fireplace residual fuel loads' internal gains that are sensible. If not provided, the OS-HPXML default (see HPXML Fuel Loads) is used. +Fraction of fireplace residual fuel loads' internal gains that are sensible. If auto or not provided, the OS-HPXML default (see HPXML Fuel Loads) is used. - **Name:** ``misc_fuel_loads_fireplace_frac_sensible`` -- **Type:** ``Double`` - -- **Units:** ``Frac`` +- **Type:** ``String`` - **Required:** ``false`` @@ -5646,12 +5420,10 @@ Fraction of fireplace residual fuel loads' internal gains that are sensible. If **Misc Fuel Loads: Fireplace Latent Fraction** -Fraction of fireplace residual fuel loads' internal gains that are latent. If not provided, the OS-HPXML default (see HPXML Fuel Loads) is used. +Fraction of fireplace residual fuel loads' internal gains that are latent. If auto or not provided, the OS-HPXML default (see HPXML Fuel Loads) is used. - **Name:** ``misc_fuel_loads_fireplace_frac_latent`` -- **Type:** ``Double`` - -- **Units:** ``Frac`` +- **Type:** ``String`` - **Required:** ``false`` @@ -5659,10 +5431,10 @@ Fraction of fireplace residual fuel loads' internal gains that are latent. If no **Misc Fuel Loads: Fireplace Usage Multiplier** -Multiplier on the fuel loads fireplace energy usage that can reflect, e.g., high/low usage occupants. If not provided, the OS-HPXML default (see HPXML Fuel Loads) is used. +Multiplier on the fuel loads fireplace energy usage that can reflect, e.g., high/low usage occupants. If auto or not provided, the OS-HPXML default (see HPXML Fuel Loads) is used. - **Name:** ``misc_fuel_loads_fireplace_usage_multiplier`` -- **Type:** ``Double`` +- **Type:** ``String`` - **Required:** ``false`` @@ -5681,12 +5453,10 @@ Whether there is a pool. If not provided, defaults to false. **Pool: Pump Annual kWh** -The annual energy consumption of the pool pump. If not provided, the OS-HPXML default (see Pool Pump) is used. +The annual energy consumption of the pool pump. If auto or not provided, the OS-HPXML default (see Pool Pump) is used. - **Name:** ``pool_pump_annual_kwh`` -- **Type:** ``Double`` - -- **Units:** ``kWh/yr`` +- **Type:** ``String`` - **Required:** ``false`` @@ -5694,10 +5464,10 @@ The annual energy consumption of the pool pump. If not provided, the OS-HPXML de **Pool: Pump Usage Multiplier** -Multiplier on the pool pump energy usage that can reflect, e.g., high/low usage occupants. If not provided, the OS-HPXML default (see Pool Pump) is used. +Multiplier on the pool pump energy usage that can reflect, e.g., high/low usage occupants. If auto or not provided, the OS-HPXML default (see Pool Pump) is used. - **Name:** ``pool_pump_usage_multiplier`` -- **Type:** ``Double`` +- **Type:** ``String`` - **Required:** ``false`` @@ -5718,12 +5488,10 @@ The type of pool heater. Use 'none' if there is no pool heater. **Pool: Heater Annual kWh** -The annual energy consumption of the electric resistance pool heater. If not provided, the OS-HPXML default (see Pool Heater) is used. +The annual energy consumption of the electric resistance pool heater. If auto or not provided, the OS-HPXML default (see Pool Heater) is used. - **Name:** ``pool_heater_annual_kwh`` -- **Type:** ``Double`` - -- **Units:** ``kWh/yr`` +- **Type:** ``String`` - **Required:** ``false`` @@ -5731,12 +5499,10 @@ The annual energy consumption of the electric resistance pool heater. If not pro **Pool: Heater Annual therm** -The annual energy consumption of the gas fired pool heater. If not provided, the OS-HPXML default (see Pool Heater) is used. +The annual energy consumption of the gas fired pool heater. If auto or not provided, the OS-HPXML default (see Pool Heater) is used. - **Name:** ``pool_heater_annual_therm`` -- **Type:** ``Double`` - -- **Units:** ``therm/yr`` +- **Type:** ``String`` - **Required:** ``false`` @@ -5744,10 +5510,10 @@ The annual energy consumption of the gas fired pool heater. If not provided, the **Pool: Heater Usage Multiplier** -Multiplier on the pool heater energy usage that can reflect, e.g., high/low usage occupants. If not provided, the OS-HPXML default (see Pool Heater) is used. +Multiplier on the pool heater energy usage that can reflect, e.g., high/low usage occupants. If auto or not provided, the OS-HPXML default (see Pool Heater) is used. - **Name:** ``pool_heater_usage_multiplier`` -- **Type:** ``Double`` +- **Type:** ``String`` - **Required:** ``false`` @@ -5766,12 +5532,10 @@ Whether there is a permanent spa. If not provided, defaults to false. **Permanent Spa: Pump Annual kWh** -The annual energy consumption of the permanent spa pump. If not provided, the OS-HPXML default (see Permanent Spa Pump) is used. +The annual energy consumption of the permanent spa pump. If auto or not provided, the OS-HPXML default (see Permanent Spa Pump) is used. - **Name:** ``permanent_spa_pump_annual_kwh`` -- **Type:** ``Double`` - -- **Units:** ``kWh/yr`` +- **Type:** ``String`` - **Required:** ``false`` @@ -5779,10 +5543,10 @@ The annual energy consumption of the permanent spa pump. If not provided, the OS **Permanent Spa: Pump Usage Multiplier** -Multiplier on the permanent spa pump energy usage that can reflect, e.g., high/low usage occupants. If not provided, the OS-HPXML default (see Permanent Spa Pump) is used. +Multiplier on the permanent spa pump energy usage that can reflect, e.g., high/low usage occupants. If auto or not provided, the OS-HPXML default (see Permanent Spa Pump) is used. - **Name:** ``permanent_spa_pump_usage_multiplier`` -- **Type:** ``Double`` +- **Type:** ``String`` - **Required:** ``false`` @@ -5803,12 +5567,10 @@ The type of permanent spa heater. Use 'none' if there is no permanent spa heater **Permanent Spa: Heater Annual kWh** -The annual energy consumption of the electric resistance permanent spa heater. If not provided, the OS-HPXML default (see Permanent Spa Heater) is used. +The annual energy consumption of the electric resistance permanent spa heater. If auto or not provided, the OS-HPXML default (see Permanent Spa Heater) is used. - **Name:** ``permanent_spa_heater_annual_kwh`` -- **Type:** ``Double`` - -- **Units:** ``kWh/yr`` +- **Type:** ``String`` - **Required:** ``false`` @@ -5816,12 +5578,10 @@ The annual energy consumption of the electric resistance permanent spa heater. I **Permanent Spa: Heater Annual therm** -The annual energy consumption of the gas fired permanent spa heater. If not provided, the OS-HPXML default (see Permanent Spa Heater) is used. +The annual energy consumption of the gas fired permanent spa heater. If auto or not provided, the OS-HPXML default (see Permanent Spa Heater) is used. - **Name:** ``permanent_spa_heater_annual_therm`` -- **Type:** ``Double`` - -- **Units:** ``therm/yr`` +- **Type:** ``String`` - **Required:** ``false`` @@ -5829,10 +5589,10 @@ The annual energy consumption of the gas fired permanent spa heater. If not prov **Permanent Spa: Heater Usage Multiplier** -Multiplier on the permanent spa heater energy usage that can reflect, e.g., high/low usage occupants. If not provided, the OS-HPXML default (see Permanent Spa Heater) is used. +Multiplier on the permanent spa heater energy usage that can reflect, e.g., high/low usage occupants. If auto or not provided, the OS-HPXML default (see Permanent Spa Heater) is used. - **Name:** ``permanent_spa_heater_usage_multiplier`` -- **Type:** ``Double`` +- **Type:** ``String`` - **Required:** ``false`` diff --git a/BuildResidentialHPXML/measure.rb b/BuildResidentialHPXML/measure.rb index f67ff6a832..9291912158 100644 --- a/BuildResidentialHPXML/measure.rb +++ b/BuildResidentialHPXML/measure.rb @@ -178,10 +178,10 @@ def makeArgument(name:, required: false, display_name: 'Simulation Control: Run Period Calendar Year', units: 'year', - description: "This numeric field should contain the calendar year that determines the start day of week. If you are running simulations using AMY weather files, the value entered for calendar year will not be used; it will be overridden by the actual year found in the AMY weather file.", + description: 'This numeric field should contain the calendar year that determines the start day of week. If you are running simulations using AMY weather files, the value entered for calendar year will not be used; it will be overridden by the actual year found in the AMY weather file.', default_href: "HPXML Simulation Control" ) - + args << makeArgument( name: 'simulation_control_daylight_saving_enabled', type: Argument::Boolean, @@ -193,19 +193,19 @@ def makeArgument(name:, args << makeArgument( name: 'simulation_control_daylight_saving_period', - type: Argument::String, + type: Argument::String, required: false, display_name: 'Simulation Control: Daylight Saving Period', description: "Enter a date range like 'Mar 15 - Dec 15'.", default_href: "HPXML Building Site" ) - + args << makeArgument( name: 'simulation_control_temperature_capacitance_multiplier', - type: Argument::Double, + type: Argument::Double, required: false, - display_name: 'Simulation Control: Temperature Capacitance Multiplier') - description: "Affects the transient calculation of indoor air temperatures.", + display_name: 'Simulation Control: Temperature Capacitance Multiplier', + description: 'Affects the transient calculation of indoor air temperatures.', default_href: "HPXML Simulation Control" ) @@ -240,7 +240,7 @@ def makeArgument(name:, description: "Research feature to model capacity increment of multi-stage heat pump backup systems with time-based staging. Only applies to air-source heat pumps where Backup Type is '#{HPXML::HeatPumpBackupTypeIntegrated}' and Backup Fuel Type is '#{HPXML::FuelTypeElectricity}'. Currently only supported with 1 min timestep.", units: 'Btu/hr' ) - + site_type_choices = OpenStudio::StringVector.new site_type_choices << HPXML::SiteTypeSuburban site_type_choices << HPXML::SiteTypeUrban @@ -252,10 +252,10 @@ def makeArgument(name:, choices: site_type_choices, required: false, display_name: 'Site: Type', - description: "The type of site.", + description: 'The type of site.', default_href: "HPXML Site" ) - + site_shielding_of_home_choices = OpenStudio::StringVector.new site_shielding_of_home_choices << HPXML::ShieldingExposed site_shielding_of_home_choices << HPXML::ShieldingNormal @@ -267,9 +267,9 @@ def makeArgument(name:, choices: site_shielding_of_home_choices, required: false, display_name: 'Site: Shielding of Home', - description: "Presence of nearby buildings, trees, obstructions for infiltration model.", + description: 'Presence of nearby buildings, trees, obstructions for infiltration model.', default_href: "HPXML Site" - ) + ) soil_types = [HPXML::SiteSoilTypeClay, HPXML::SiteSoilTypeGravel, @@ -295,7 +295,7 @@ def makeArgument(name:, choices: site_soil_and_moisture_type_choices, required: false, display_name: 'Site: Soil and Moisture Type', - description: "Type of soil and moisture. This is used to inform ground conductivity and diffusivity.", + description: 'Type of soil and moisture. This is used to inform ground conductivity and diffusivity.', default_href: "HPXML Site" ) @@ -307,7 +307,7 @@ def makeArgument(name:, description: 'Conductivity of the ground soil. If provided, overrides the previous site and moisture type input.', units: 'Btu/hr-ft-F' ) - + args << makeArgument( type: Argument::Double, name: 'site_ground_diffusivity', @@ -316,7 +316,7 @@ def makeArgument(name:, description: 'Diffusivity of the ground soil. If provided, overrides the previous site and moisture type input.', units: 'ft^2/hr' ) - + site_iecc_zone_choices = OpenStudio::StringVector.new Constants::IECCZones.each do |iz| site_iecc_zone_choices << iz @@ -330,7 +330,7 @@ def makeArgument(name:, display_name: 'Site: IECC Zone', description: 'IECC zone of the home address.' ) - + args << makeArgument( type: Argument::String, name: 'site_city', @@ -338,7 +338,7 @@ def makeArgument(name:, display_name: 'Site: City', description: 'City/municipality of the home address.' ) - + site_state_code_choices = OpenStudio::StringVector.new Constants::StateCodesMap.keys.each do |sc| site_state_code_choices << sc @@ -350,10 +350,10 @@ def makeArgument(name:, choices: site_state_code_choices, required: false, display_name: 'Site: State Code', - description: "State code of the home address.", + description: 'State code of the home address.', default_href: "HPXML Site" ) - + args << makeArgument( type: Argument::String, name: 'site_zip_code', @@ -361,7 +361,7 @@ def makeArgument(name:, display_name: 'Site: Zip Code', description: 'Zip code of the home address. Either this or the Weather Station: EnergyPlus Weather (EPW) Filepath input below must be provided.' ) - + args << makeArgument( name: 'site_time_zone_utc_offset', type: Argument::Double, @@ -377,31 +377,31 @@ def makeArgument(name:, name: 'site_elevation', required: false, display_name: 'Site: Elevation', - description: "Elevation of the home address.", + description: 'Elevation of the home address.', units: 'ft', default_href: "HPXML Site" ) - + args << makeArgument( type: Argument::Double, name: 'site_latitude', required: false, display_name: 'Site: Latitude', - description: "Latitude of the home address. Must be between -90 and 90. Use negative values for southern hemisphere.", + description: 'Latitude of the home address. Must be between -90 and 90. Use negative values for southern hemisphere.', units: 'deg', default_href: "HPXML Site" ) - + args << makeArgument( type: Argument::Double, name: 'site_longitude', required: false, display_name: 'Site: Longitude', - description: "Longitude of the home address. Must be between -180 and 180. Use negative values for the western hemisphere.", + description: 'Longitude of the home address. Must be between -180 and 180. Use negative values for the western hemisphere.', units: 'deg', default_href: "HPXML Site" ) - + args << makeArgument( type: Argument::String, name: 'weather_station_epw_filepath', @@ -409,7 +409,7 @@ def makeArgument(name:, display_name: 'Weather Station: EnergyPlus Weather (EPW) Filepath', description: 'Path of the EPW file. Either this or the Site: Zip Code input above must be provided.' ) - + args << makeArgument( name: 'year_built', type: Argument::Integer, @@ -431,7 +431,7 @@ def makeArgument(name:, display_name: 'Building Construction: Unit Multiplier', description: 'The number of similar dwelling units. EnergyPlus simulation results will be multiplied this value. If not provided, defaults to 1.' ) - + args << makeArgument( type: Argument::Choice, name: 'geometry_unit_type', @@ -440,7 +440,7 @@ def makeArgument(name:, display_name: 'Geometry: Unit Type', description: "The type of dwelling unit. Use #{HPXML::ResidentialTypeSFA} for a dwelling unit with 1 or more stories, attached units to one or both sides, and no units above/below. Use #{HPXML::ResidentialTypeApartment} for a dwelling unit with 1 story, attached units to one, two, or three sides, and units above and/or below." ) - + args << makeArgument( name: 'geometry_unit_left_wall_is_adiabatic', type: Argument::Boolean, @@ -481,7 +481,7 @@ def makeArgument(name:, units: '#', description: "The number of floors above grade in the unit. Attic type #{HPXML::AtticTypeConditioned} is included. Assumed to be 1 for #{HPXML::ResidentialTypeApartment}s." ) - + args << makeArgument( type: Argument::Double, name: 'geometry_unit_cfa', @@ -490,7 +490,7 @@ def makeArgument(name:, units: 'ft^2', description: "The total floor area of the unit's conditioned space (including any conditioned basement floor area)." ) - + args << makeArgument( type: Argument::Double, name: 'geometry_unit_aspect_ratio', @@ -499,7 +499,7 @@ def makeArgument(name:, units: 'Frac', description: 'The ratio of front/back wall length to left/right wall length for the unit, excluding any protruding garage wall area.' ) - + args << makeArgument( type: Argument::Double, name: 'geometry_unit_orientation', @@ -508,7 +508,7 @@ def makeArgument(name:, units: 'degrees', description: "The unit's orientation is measured clockwise from north (e.g., North=0, East=90, South=180, West=270)." ) - + args << makeArgument( type: Argument::Integer, name: 'geometry_unit_num_bedrooms', @@ -517,17 +517,17 @@ def makeArgument(name:, units: '#', description: 'The number of bedrooms in the unit.' ) - + args << makeArgument( type: Argument::Integer, name: 'geometry_unit_num_bathrooms', required: false, display_name: 'Geometry: Unit Number of Bathrooms', units: '#', - description: "The number of bathrooms in the unit.", + description: 'The number of bathrooms in the unit.', default_href: "HPXML Building Construction" ) - + args << makeArgument( type: Argument::Double, name: 'geometry_unit_num_occupants', @@ -536,7 +536,7 @@ def makeArgument(name:, units: '#', description: 'The number of occupants in the unit. If not provided, an *asset* calculation is performed assuming standard occupancy, in which various end use defaults (e.g., plug loads, appliances, and hot water usage) are calculated based on Number of Bedrooms and Conditioned Floor Area per ANSI/RESNET/ICC 301-2019. If provided, an *operational* calculation is instead performed in which the end use defaults are adjusted using the relationship between Number of Bedrooms and Number of Occupants from RECS 2015.' ) - + args << makeArgument( type: Argument::Integer, name: 'geometry_building_num_units', @@ -545,7 +545,7 @@ def makeArgument(name:, units: '#', description: "The number of units in the building. Required for #{HPXML::ResidentialTypeSFA} and #{HPXML::ResidentialTypeApartment}s." ) - + args << makeArgument( type: Argument::Double, name: 'geometry_average_ceiling_height', @@ -554,17 +554,17 @@ def makeArgument(name:, units: 'ft', description: 'Average distance from the floor to the ceiling.' ) - + args << makeArgument( type: Argument::Double, name: 'geometry_unit_height_above_grade', required: false, display_name: 'Geometry: Unit Height Above Grade', units: 'ft', - description: "Describes the above-grade height of apartment units on upper floors or homes above ambient or belly-and-wing foundations. It is defined as the height of the lowest conditioned floor above grade and is used to calculate the wind speed for the infiltration model.", + description: 'Describes the above-grade height of apartment units on upper floors or homes above ambient or belly-and-wing foundations. It is defined as the height of the lowest conditioned floor above grade and is used to calculate the wind speed for the infiltration model.', default_href: "HPXML Building Construction" ) - + args << makeArgument( type: Argument::Double, name: 'geometry_garage_width', @@ -573,7 +573,7 @@ def makeArgument(name:, units: 'ft', description: "The width of the garage. Only applies to #{HPXML::ResidentialTypeSFD} units. If not provided, defaults to zero (no garage)." ) - + args << makeArgument( type: Argument::Double, name: 'geometry_garage_depth', @@ -582,7 +582,7 @@ def makeArgument(name:, units: 'ft', description: "The depth of the garage. Only applies to #{HPXML::ResidentialTypeSFD} units." ) - + args << makeArgument( type: Argument::Double, name: 'geometry_garage_protrusion', @@ -603,7 +603,7 @@ def makeArgument(name:, required: false, display_name: 'Geometry: Garage Position', description: "The position of the garage. Only applies to #{HPXML::ResidentialTypeSFD} units." - ) + ) foundation_type_choices = OpenStudio::StringVector.new foundation_type_choices << HPXML::FoundationTypeSlab @@ -625,7 +625,7 @@ def makeArgument(name:, display_name: 'Geometry: Foundation Type', description: "The foundation type of the building. Foundation types #{HPXML::FoundationTypeBasementConditioned} and #{HPXML::FoundationTypeCrawlspaceConditioned} are not allowed for #{HPXML::ResidentialTypeApartment}s." ) - + args << makeArgument( type: Argument::Double, name: 'geometry_foundation_height', @@ -634,7 +634,7 @@ def makeArgument(name:, units: 'ft', description: 'The height of the foundation (e.g., 3ft for crawlspace, 8ft for basement). Only applies to basements/crawlspaces.' ) - + args << makeArgument( type: Argument::Double, name: 'geometry_foundation_height_above_grade', @@ -643,7 +643,7 @@ def makeArgument(name:, units: 'ft', description: 'The depth above grade of the foundation wall. Only applies to basements/crawlspaces.' ) - + args << makeArgument( type: Argument::Double, name: 'geometry_rim_joist_height', @@ -652,7 +652,7 @@ def makeArgument(name:, units: 'in', description: 'The height of the rim joists. Only applies to basements/crawlspaces.' ) - + attic_type_choices = OpenStudio::StringVector.new attic_type_choices << HPXML::AtticTypeFlatRoof attic_type_choices << HPXML::AtticTypeVented @@ -667,7 +667,7 @@ def makeArgument(name:, required: true, display_name: 'Geometry: Attic Type', description: "The attic type of the building. Attic type #{HPXML::AtticTypeConditioned} is not allowed for #{HPXML::ResidentialTypeApartment}s." - ) + ) roof_type_choices = OpenStudio::StringVector.new roof_type_choices << Constants::RoofTypeGable @@ -704,7 +704,7 @@ def makeArgument(name:, display_name: 'Geometry: Roof Pitch', description: 'The roof pitch of the attic. Ignored if the building has a flat roof.' ) - + args << makeArgument( type: Argument::Double, name: 'geometry_eaves_depth', @@ -713,7 +713,7 @@ def makeArgument(name:, units: 'ft', description: 'The eaves depth of the roof.' ) - + args << makeArgument( type: Argument::Double, name: 'neighbor_front_distance', @@ -722,7 +722,7 @@ def makeArgument(name:, units: 'ft', description: 'The distance between the unit and the neighboring building to the front (not including eaves). A value of zero indicates no neighbors. Used for shading.' ) - + args << makeArgument( type: Argument::Double, name: 'neighbor_back_distance', @@ -731,7 +731,7 @@ def makeArgument(name:, units: 'ft', description: 'The distance between the unit and the neighboring building to the back (not including eaves). A value of zero indicates no neighbors. Used for shading.' ) - + args << makeArgument( type: Argument::Double, name: 'neighbor_left_distance', @@ -740,7 +740,7 @@ def makeArgument(name:, units: 'ft', description: 'The distance between the unit and the neighboring building to the left (not including eaves). A value of zero indicates no neighbors. Used for shading.' ) - + args << makeArgument( type: Argument::Double, name: 'neighbor_right_distance', @@ -749,47 +749,47 @@ def makeArgument(name:, units: 'ft', description: 'The distance between the unit and the neighboring building to the right (not including eaves). A value of zero indicates no neighbors. Used for shading.' ) - + args << makeArgument( type: Argument::Double, name: 'neighbor_front_height', required: false, display_name: 'Neighbor: Front Height', units: 'ft', - description: "The height of the neighboring building to the front.", + description: 'The height of the neighboring building to the front.', default_href: "HPXML Neighbor Building" ) - + args << makeArgument( type: Argument::Double, name: 'neighbor_back_height', required: false, display_name: 'Neighbor: Back Height', units: 'ft', - description: "The height of the neighboring building to the back.", + description: 'The height of the neighboring building to the back.', default_href: "HPXML Neighbor Building" ) - + args << makeArgument( type: Argument::Double, name: 'neighbor_left_height', required: false, display_name: 'Neighbor: Left Height', units: 'ft', - description: "The height of the neighboring building to the left.", + description: 'The height of the neighboring building to the left.', default_href: "HPXML Neighbor Building" ) - + args << makeArgument( type: Argument::Double, name: 'neighbor_right_height', required: false, display_name: 'Neighbor: Right Height', units: 'ft', - description: "The height of the neighboring building to the right.", + description: 'The height of the neighboring building to the right.', default_href: "HPXML Neighbor Building" ) - + args << makeArgument( type: Argument::Double, name: 'floor_over_foundation_assembly_r', @@ -798,7 +798,7 @@ def makeArgument(name:, units: 'h-ft^2-R/Btu', description: 'Assembly R-value for the floor over the foundation. Ignored if the building has a slab-on-grade foundation.' ) - + args << makeArgument( type: Argument::Double, name: 'floor_over_garage_assembly_r', @@ -806,7 +806,7 @@ def makeArgument(name:, display_name: 'Floor: Over Garage Assembly R-value', units: 'h-ft^2-R/Btu', description: 'Assembly R-value for the floor over the garage. Ignored unless the building has a garage under conditioned space.' - ) + ) floor_type_choices = OpenStudio::StringVector.new floor_type_choices << HPXML::FloorTypeWoodFrame @@ -821,7 +821,7 @@ def makeArgument(name:, required: true, display_name: 'Floor: Type', description: 'The type of floors.' - ) + ) foundation_wall_type_choices = OpenStudio::StringVector.new foundation_wall_type_choices << HPXML::FoundationWallTypeSolidConcrete @@ -839,20 +839,20 @@ def makeArgument(name:, choices: foundation_wall_type_choices, required: false, display_name: 'Foundation Wall: Type', - description: "The material type of the foundation wall.", + description: 'The material type of the foundation wall.', default_href: "HPXML Foundation Walls" ) - + args << makeArgument( type: Argument::Double, name: 'foundation_wall_thickness', required: false, - display_name: 'Foundation Wall: Thickness') - units: 'in') - description: "The thickness of the foundation wall.", + display_name: 'Foundation Wall: Thickness', + units: 'in', + description: 'The thickness of the foundation wall.', default_href: "HPXML Foundation Walls" ) - + args << makeArgument( type: Argument::Double, name: 'foundation_wall_insulation_r', @@ -860,7 +860,7 @@ def makeArgument(name:, display_name: 'Foundation Wall: Insulation Nominal R-value', units: 'h-ft^2-R/Btu', description: 'Nominal R-value for the foundation wall insulation. Only applies to basements/crawlspaces.' - ) + ) wall_ins_location_choices = OpenStudio::StringVector.new wall_ins_location_choices << Constants::LocationInterior @@ -875,27 +875,27 @@ def makeArgument(name:, units: 'ft', description: 'Whether the insulation is on the interior or exterior of the foundation wall. Only applies to basements/crawlspaces.' ) - + args << makeArgument( type: Argument::Double, name: 'foundation_wall_insulation_distance_to_top', required: false, display_name: 'Foundation Wall: Insulation Distance To Top', units: 'ft', - description: "The distance from the top of the foundation wall to the top of the foundation wall insulation. Only applies to basements/crawlspaces.", + description: 'The distance from the top of the foundation wall to the top of the foundation wall insulation. Only applies to basements/crawlspaces.', default_href: "HPXML Foundation Walls" ) - + args << makeArgument( type: Argument::Double, name: 'foundation_wall_insulation_distance_to_bottom', required: false, display_name: 'Foundation Wall: Insulation Distance To Bottom', units: 'ft', - description: "The distance from the top of the foundation wall to the bottom of the foundation wall insulation. Only applies to basements/crawlspaces.", + description: 'The distance from the top of the foundation wall to the bottom of the foundation wall insulation. Only applies to basements/crawlspaces.', default_href: "HPXML Foundation Walls" ) - + args << makeArgument( type: Argument::Double, name: 'foundation_wall_assembly_r', @@ -904,7 +904,7 @@ def makeArgument(name:, units: 'h-ft^2-R/Btu', description: 'Assembly R-value for the foundation walls. Only applies to basements/crawlspaces. If provided, overrides the previous foundation wall insulation inputs. If not provided, it is ignored.' ) - + args << makeArgument( type: Argument::Double, name: 'rim_joist_assembly_r', @@ -913,7 +913,7 @@ def makeArgument(name:, units: 'h-ft^2-R/Btu', description: 'Assembly R-value for the rim joists. Only applies to basements/crawlspaces. Required if a rim joist height is provided.' ) - + args << makeArgument( type: Argument::Double, name: 'slab_perimeter_insulation_r', @@ -922,7 +922,7 @@ def makeArgument(name:, units: 'h-ft^2-R/Btu', description: 'Nominal R-value of the vertical slab perimeter insulation. Applies to slab-on-grade foundations and basement/crawlspace floors.' ) - + args << makeArgument( type: Argument::Double, name: 'slab_perimeter_insulation_depth', @@ -931,7 +931,7 @@ def makeArgument(name:, units: 'ft', description: 'Depth from grade to bottom of vertical slab perimeter insulation. Applies to slab-on-grade foundations and basement/crawlspace floors.' ) - + args << makeArgument( type: Argument::Double, name: 'slab_exterior_horizontal_insulation_r', @@ -940,7 +940,7 @@ def makeArgument(name:, units: 'h-ft^2-R/Btu', description: 'Nominal R-value of the slab exterior horizontal insulation. Applies to slab-on-grade foundations and basement/crawlspace floors.' ) - + args << makeArgument( type: Argument::Double, name: 'slab_exterior_horizontal_insulation_width', @@ -949,24 +949,25 @@ def makeArgument(name:, units: 'ft', description: 'Width of the slab exterior horizontal insulation measured from the exterior surface of the vertical slab perimeter insulation. Applies to slab-on-grade foundations and basement/crawlspace floors.' ) - + args << makeArgument( type: Argument::Double, name: 'slab_exterior_horizontal_insulation_depth_below_grade', required: false, display_name: 'Slab: Exterior Horizontal Insulation Depth Below Grade', - units: 'ft') - description: 'Depth of the slab exterior horizontal insulation measured from the top surface of the slab exterior horizontal insulation. Applies to slab-on-grade foundations and basement/crawlspace floors.') - + units: 'ft', + description: 'Depth of the slab exterior horizontal insulation measured from the top surface of the slab exterior horizontal insulation. Applies to slab-on-grade foundations and basement/crawlspace floors.' + ) + args << makeArgument( type: Argument::Double, - name: 'slab_under_insulation_r' + name: 'slab_under_insulation_r', required: false, - display_name: 'Slab: Under Slab Insulation Nominal R-value') + display_name: 'Slab: Under Slab Insulation Nominal R-value', units: 'h-ft^2-R/Btu', description: 'Nominal R-value of the horizontal under slab insulation. Applies to slab-on-grade foundations and basement/crawlspace floors.' ) - + args << makeArgument( type: Argument::Double, name: 'slab_under_insulation_width', @@ -975,37 +976,37 @@ def makeArgument(name:, units: 'ft', description: 'Width from slab edge inward of horizontal under-slab insulation. Enter 999 to specify that the under slab insulation spans the entire slab. Applies to slab-on-grade foundations and basement/crawlspace floors.' ) - + args << makeArgument( type: Argument::Double, name: 'slab_thickness', required: false, display_name: 'Slab: Thickness', units: 'in', - description: "The thickness of the slab. Zero can be entered if there is a dirt floor instead of a slab.", + description: 'The thickness of the slab. Zero can be entered if there is a dirt floor instead of a slab.', default_href: "HPXML Slabs" ) - + args << makeArgument( type: Argument::Double, name: 'slab_carpet_fraction', required: false, display_name: 'Slab: Carpet Fraction', units: 'Frac', - description: "Fraction of the slab floor area that is carpeted.", + description: 'Fraction of the slab floor area that is carpeted.', default_href: "HPXML Slabs" ) - + args << makeArgument( type: Argument::Double, name: 'slab_carpet_r', required: false, display_name: 'Slab: Carpet R-value', units: 'h-ft^2-R/Btu', - description: "R-value of the slab carpet.", + description: 'R-value of the slab carpet.', default_href: "HPXML Slabs" ) - + args << makeArgument( type: Argument::Double, name: 'ceiling_assembly_r', @@ -1032,10 +1033,10 @@ def makeArgument(name:, choices: roof_material_type_choices, required: false, display_name: 'Roof: Material Type', - description: "The material type of the roof.", + description: 'The material type of the roof.', default_href: "HPXML Roofs" ) - + color_choices = OpenStudio::StringVector.new color_choices << HPXML::ColorDark color_choices << HPXML::ColorLight @@ -1045,14 +1046,14 @@ def makeArgument(name:, args << makeArgument( type: Argument::Choice, - name: 'roof_color', + name: 'roof_color', choices: color_choices, required: false, display_name: 'Roof: Color', - description: "The color of the roof.", + description: 'The color of the roof.', default_href: "HPXML Roofs" ) - + args << makeArgument( type: Argument::Double, name: 'roof_assembly_r', @@ -1060,7 +1061,7 @@ def makeArgument(name:, display_name: 'Roof: Assembly R-value', units: 'h-ft^2-R/Btu', description: 'Assembly R-value of the roof.' - ) + ) radiant_barrier_attic_location_choices = OpenStudio::StringVector.new radiant_barrier_attic_location_choices << Constants::None @@ -1076,7 +1077,7 @@ def makeArgument(name:, display_name: 'Attic: Radiant Barrier Location', description: 'The location of the radiant barrier in the attic.' ) - + radiant_barrier_grade_choices = OpenStudio::StringVector.new radiant_barrier_grade_choices << '1' radiant_barrier_grade_choices << '2' @@ -1088,10 +1089,10 @@ def makeArgument(name:, choices: radiant_barrier_grade_choices, required: false, display_name: 'Attic: Radiant Barrier Grade', - description: "The grade of the radiant barrier in the attic.", + description: 'The grade of the radiant barrier in the attic.', default_href: "HPXML Roofs" ) - + wall_type_choices = OpenStudio::StringVector.new wall_type_choices << HPXML::WallTypeWoodStud wall_type_choices << HPXML::WallTypeCMU @@ -1129,24 +1130,24 @@ def makeArgument(name:, args << makeArgument( type: Argument::Choice, - name: 'wall_siding_type', + name: 'wall_siding_type', choices: wall_siding_type_choices, required: false, display_name: 'Wall: Siding Type', - description: "The siding type of the walls. Also applies to rim joists.", + description: 'The siding type of the walls. Also applies to rim joists.', default_href: "HPXML Walls" ) - + args << makeArgument( type: Argument::Choice, name: 'wall_color', choices: color_choices, required: false, display_name: 'Wall: Color', - description: "The color of the walls. Also applies to rim joists.", + description: 'The color of the walls. Also applies to rim joists.', default_href: "HPXML Walls" ) - + args << makeArgument( type: Argument::Double, name: 'wall_assembly_r', @@ -1155,7 +1156,7 @@ def makeArgument(name:, units: 'h-ft^2-R/Btu', description: 'Assembly R-value of the walls.' ) - + args << makeArgument( type: Argument::Double, name: 'window_area_front', @@ -1164,7 +1165,7 @@ def makeArgument(name:, units: 'ft^2', description: "The amount of window area on the unit's front facade. A value less than 1 will be treated as a window-to-wall ratio. If the front wall is adiabatic, the value will be ignored." ) - + args << makeArgument( type: Argument::Double, name: 'window_area_back', @@ -1173,7 +1174,7 @@ def makeArgument(name:, units: 'ft^2', description: "The amount of window area on the unit's back facade. A value less than 1 will be treated as a window-to-wall ratio. If the back wall is adiabatic, the value will be ignored." ) - + args << makeArgument( type: Argument::Double, name: 'window_area_left', @@ -1182,7 +1183,7 @@ def makeArgument(name:, units: 'ft^2', description: "The amount of window area on the unit's left facade (when viewed from the front). A value less than 1 will be treated as a window-to-wall ratio. If the left wall is adiabatic, the value will be ignored." ) - + args << makeArgument( type: Argument::Double, name: 'window_area_right', @@ -1191,7 +1192,7 @@ def makeArgument(name:, units: 'ft^2', description: "The amount of window area on the unit's right facade (when viewed from the front). A value less than 1 will be treated as a window-to-wall ratio. If the right wall is adiabatic, the value will be ignored." ) - + args << makeArgument( type: Argument::Double, name: 'window_aspect_ratio', @@ -1200,7 +1201,7 @@ def makeArgument(name:, units: 'Frac', description: 'Ratio of window height to width.' ) - + args << makeArgument( type: Argument::Double, name: 'window_ufactor', @@ -1209,7 +1210,7 @@ def makeArgument(name:, units: 'Btu/hr-ft^2-R', description: 'Full-assembly NFRC U-factor.' ) - + args << makeArgument( type: Argument::Double, name: 'window_shgc', @@ -1217,27 +1218,27 @@ def makeArgument(name:, display_name: 'Windows: SHGC', description: 'Full-assembly NFRC solar heat gain coefficient.' ) - + args << makeArgument( type: Argument::Double, name: 'window_fraction_operable', required: false, display_name: 'Windows: Fraction Operable', units: 'Frac', - description: "Fraction of windows that are operable.", + description: 'Fraction of windows that are operable.', default_href: "HPXML Windows" ) - + args << makeArgument( type: Argument::Integer, name: 'window_natvent_availability', required: false, display_name: 'Windows: Natural Ventilation Availability', units: 'Days/week', - description: "For operable windows, the number of days/week that windows can be opened by occupants for natural ventilation.", + description: 'For operable windows, the number of days/week that windows can be opened by occupants for natural ventilation.', default_href: "HPXML Windows" ) - + window_interior_shading_type_choices = OpenStudio::StringVector.new window_interior_shading_type_choices << HPXML::InteriorShadingTypeLightCurtains window_interior_shading_type_choices << HPXML::InteriorShadingTypeLightShades @@ -1257,30 +1258,30 @@ def makeArgument(name:, choices: window_interior_shading_type_choices, required: false, display_name: 'Windows: Interior Shading Type', - description: "Type of window interior shading. Summer/winter shading coefficients can be provided below instead.", + description: 'Type of window interior shading. Summer/winter shading coefficients can be provided below instead.', default_href: "HPXML Interior Shading" ) - + args << makeArgument( type: Argument::Double, name: 'window_interior_shading_winter', required: false, display_name: 'Windows: Winter Interior Shading Coefficient', units: 'Frac', - description: "Interior shading coefficient for the winter season, which if provided overrides the shading type input. 1.0 indicates no reduction in solar gain, 0.85 indicates 15% reduction, etc.", + description: 'Interior shading coefficient for the winter season, which if provided overrides the shading type input. 1.0 indicates no reduction in solar gain, 0.85 indicates 15% reduction, etc.', default_href: "HPXML Interior Shading" ) - + args << makeArgument( type: Argument::Double, name: 'window_interior_shading_summer', required: false, display_name: 'Windows: Summer Interior Shading Coefficient', units: 'Frac', - description: "Interior shading coefficient for the summer season, which if provided overrides the shading type input. 1.0 indicates no reduction in solar gain, 0.85 indicates 15% reduction, etc.", + description: 'Interior shading coefficient for the summer season, which if provided overrides the shading type input. 1.0 indicates no reduction in solar gain, 0.85 indicates 15% reduction, etc.', default_href: "HPXML Interior Shading" ) - + window_exterior_shading_type_choices = OpenStudio::StringVector.new window_exterior_shading_type_choices << HPXML::ExteriorShadingTypeSolarFilm window_exterior_shading_type_choices << HPXML::ExteriorShadingTypeSolarScreens @@ -1295,30 +1296,30 @@ def makeArgument(name:, choices: window_exterior_shading_type_choices, required: false, display_name: 'Windows: Exterior Shading Type', - description: "Type of window exterior shading. Summer/winter shading coefficients can be provided below instead.", + description: 'Type of window exterior shading. Summer/winter shading coefficients can be provided below instead.', default_href: "HPXML Exterior Shading" ) - + args << makeArgument( type: Argument::Double, name: 'window_exterior_shading_winter', required: false, display_name: 'Windows: Winter Exterior Shading Coefficient', units: 'Frac', - description: "Exterior shading coefficient for the winter season, which if provided overrides the shading type input. 1.0 indicates no reduction in solar gain, 0.85 indicates 15% reduction, etc.", + description: 'Exterior shading coefficient for the winter season, which if provided overrides the shading type input. 1.0 indicates no reduction in solar gain, 0.85 indicates 15% reduction, etc.', default_href: "HPXML Exterior Shading" ) - + args << makeArgument( type: Argument::Double, name: 'window_exterior_shading_summer', required: false, display_name: 'Windows: Summer Exterior Shading Coefficient', units: 'Frac', - description: "Exterior shading coefficient for the summer season, which if provided overrides the shading type input. 1.0 indicates no reduction in solar gain, 0.85 indicates 15% reduction, etc.", + description: 'Exterior shading coefficient for the summer season, which if provided overrides the shading type input. 1.0 indicates no reduction in solar gain, 0.85 indicates 15% reduction, etc.', default_href: "HPXML Exterior Shading" ) - + args << makeArgument( type: Argument::String, name: 'window_shading_summer_season', @@ -1327,7 +1328,7 @@ def makeArgument(name:, description: "Enter a date range like 'May 1 - Sep 30'. Defines the summer season for purposes of shading coefficients; the rest of the year is assumed to be winter.", default_href: "HPXML Windows" ) - + window_insect_screen_choices = OpenStudio::StringVector.new window_insect_screen_choices << Constants::None window_insect_screen_choices << HPXML::LocationExterior @@ -1341,7 +1342,7 @@ def makeArgument(name:, display_name: 'Windows: Insect Screens', description: 'The type of insect screens, if present. If not provided, assumes there are no insect screens.' ) - + storm_window_type_choices = OpenStudio::StringVector.new storm_window_type_choices << HPXML::WindowGlassTypeClear storm_window_type_choices << HPXML::WindowGlassTypeLowE @@ -1354,7 +1355,7 @@ def makeArgument(name:, display_name: 'Windows: Storm Type', description: 'The type of storm, if present. If not provided, assumes there is no storm.' ) - + args << makeArgument( type: Argument::Double, name: 'overhangs_front_depth', @@ -1363,7 +1364,7 @@ def makeArgument(name:, units: 'ft', description: 'The depth of overhangs for windows for the front facade.' ) - + args << makeArgument( type: Argument::Double, name: 'overhangs_front_distance_to_top_of_window', @@ -1372,7 +1373,7 @@ def makeArgument(name:, units: 'ft', description: 'The overhangs distance to the top of window for the front facade.' ) - + args << makeArgument( type: Argument::Double, name: 'overhangs_front_distance_to_bottom_of_window', @@ -1381,7 +1382,7 @@ def makeArgument(name:, units: 'ft', description: 'The overhangs distance to the bottom of window for the front facade.' ) - + args << makeArgument( type: Argument::Double, name: 'overhangs_back_depth', @@ -1390,7 +1391,7 @@ def makeArgument(name:, units: 'ft', description: 'The depth of overhangs for windows for the back facade.' ) - + args << makeArgument( type: Argument::Double, name: 'overhangs_back_distance_to_top_of_window', @@ -1399,7 +1400,7 @@ def makeArgument(name:, units: 'ft', description: 'The overhangs distance to the top of window for the back facade.' ) - + args << makeArgument( type: Argument::Double, name: 'overhangs_back_distance_to_bottom_of_window', @@ -1408,7 +1409,7 @@ def makeArgument(name:, units: 'ft', description: 'The overhangs distance to the bottom of window for the back facade.' ) - + args << makeArgument( type: Argument::Double, name: 'overhangs_left_depth', @@ -1417,7 +1418,7 @@ def makeArgument(name:, units: 'ft', description: 'The depth of overhangs for windows for the left facade.' ) - + args << makeArgument( type: Argument::Double, name: 'overhangs_left_distance_to_top_of_window', @@ -1426,7 +1427,7 @@ def makeArgument(name:, units: 'ft', description: 'The overhangs distance to the top of window for the left facade.' ) - + args << makeArgument( type: Argument::Double, name: 'overhangs_left_distance_to_bottom_of_window', @@ -1435,7 +1436,7 @@ def makeArgument(name:, units: 'ft', description: 'The overhangs distance to the bottom of window for the left facade.' ) - + args << makeArgument( type: Argument::Double, name: 'overhangs_right_depth', @@ -1444,7 +1445,7 @@ def makeArgument(name:, units: 'ft', description: 'The depth of overhangs for windows for the right facade.' ) - + args << makeArgument( type: Argument::Double, name: 'overhangs_right_distance_to_top_of_window', @@ -1453,7 +1454,7 @@ def makeArgument(name:, units: 'ft', description: 'The overhangs distance to the top of window for the right facade.' ) - + args << makeArgument( type: Argument::Double, name: 'overhangs_right_distance_to_bottom_of_window', @@ -1462,7 +1463,7 @@ def makeArgument(name:, units: 'ft', description: 'The overhangs distance to the bottom of window for the right facade.' ) - + args << makeArgument( type: Argument::Double, name: 'skylight_area_front', @@ -1471,7 +1472,7 @@ def makeArgument(name:, units: 'ft^2', description: "The amount of skylight area on the unit's front conditioned roof facade." ) - + args << makeArgument( type: Argument::Double, name: 'skylight_area_back', @@ -1480,7 +1481,7 @@ def makeArgument(name:, units: 'ft^2', description: "The amount of skylight area on the unit's back conditioned roof facade." ) - + args << makeArgument( type: Argument::Double, name: 'skylight_area_left', @@ -1489,7 +1490,7 @@ def makeArgument(name:, units: 'ft^2', description: "The amount of skylight area on the unit's left conditioned roof facade (when viewed from the front)." ) - + args << makeArgument( type: Argument::Double, name: 'skylight_area_right', @@ -1498,7 +1499,7 @@ def makeArgument(name:, units: 'ft^2', description: "The amount of skylight area on the unit's right conditioned roof facade (when viewed from the front)." ) - + args << makeArgument( type: Argument::Double, name: 'skylight_ufactor', @@ -1507,7 +1508,7 @@ def makeArgument(name:, units: 'Btu/hr-ft^2-R', description: 'Full-assembly NFRC U-factor.' ) - + args << makeArgument( name: 'skylight_shgc', type: Argument::Double, @@ -1515,7 +1516,7 @@ def makeArgument(name:, display_name: 'Skylights: SHGC', description: 'Full-assembly NFRC solar heat gain coefficient.' ) - + args << makeArgument( type: Argument::Choice, name: 'skylight_storm_type', @@ -1524,7 +1525,7 @@ def makeArgument(name:, display_name: 'Skylights: Storm Type', description: 'The type of storm, if present. If not provided, assumes there is no storm.' ) - + args << makeArgument( type: Argument::Double, name: 'door_area', @@ -1533,7 +1534,7 @@ def makeArgument(name:, units: 'ft^2', description: 'The area of the opaque door(s).' ) - + args << makeArgument( type: Argument::Double, name: 'door_rvalue', @@ -1542,7 +1543,7 @@ def makeArgument(name:, units: 'h-ft^2-R/Btu', description: 'R-value of the opaque door(s).' ) - + air_leakage_leakiness_description_choices = OpenStudio::StringVector.new air_leakage_leakiness_description_choices << HPXML::LeakinessVeryTight air_leakage_leakiness_description_choices << HPXML::LeakinessTight @@ -1557,8 +1558,8 @@ def makeArgument(name:, required: false, display_name: 'Air Leakage: Leakiness Description', description: 'Qualitative description of infiltration. If provided, the Year Built of the home is required. Either provide this input or provide a numeric air leakage value below.' - ) - + ) + air_leakage_units_choices = OpenStudio::StringVector.new air_leakage_units_choices << HPXML::UnitsACH air_leakage_units_choices << HPXML::UnitsCFM @@ -1568,22 +1569,22 @@ def makeArgument(name:, args << makeArgument( type: Argument::Choice, - name: 'air_leakage_units', + name: 'air_leakage_units', choices: air_leakage_units_choices, required: false, display_name: 'Air Leakage: Units', description: 'The unit of measure for the air leakage if providing a numeric air leakage value.' ) - + args << makeArgument( type: Argument::Double, - name: 'air_leakage_house_pressure' + name: 'air_leakage_house_pressure', required: false, display_name: 'Air Leakage: House Pressure', units: 'Pa', description: "The house pressure relative to outside if providing a numeric air leakage value. Required when units are #{HPXML::UnitsACH} or #{HPXML::UnitsCFM}." ) - + args << makeArgument( type: Argument::Double, name: 'air_leakage_value', @@ -1591,7 +1592,7 @@ def makeArgument(name:, display_name: 'Air Leakage: Value', description: "Numeric air leakage value. For '#{HPXML::UnitsELA}', provide value in sq. in. If provided, overrides Leakiness Description input." ) - + air_leakage_type_choices = OpenStudio::StringVector.new air_leakage_type_choices << HPXML::InfiltrationTypeUnitTotal air_leakage_type_choices << HPXML::InfiltrationTypeUnitExterior @@ -1604,7 +1605,7 @@ def makeArgument(name:, display_name: 'Air Leakage: Type', description: "Type of air leakage if providing a numeric air leakage value. If '#{HPXML::InfiltrationTypeUnitTotal}', represents the total infiltration to the unit as measured by a compartmentalization test, in which case the air leakage value will be adjusted by the ratio of exterior envelope surface area to total envelope surface area. Otherwise, if '#{HPXML::InfiltrationTypeUnitExterior}', represents the infiltration to the unit from outside only as measured by a guarded test. Required when unit type is #{HPXML::ResidentialTypeSFA} or #{HPXML::ResidentialTypeApartment}." ) - + args << makeArgument( name: 'air_leakage_has_flue_or_chimney_in_conditioned_space', type: Argument::Boolean, @@ -1663,7 +1664,7 @@ def makeArgument(name:, display_name: 'Heating System: Type', description: "The type of heating system. Use '#{Constants::None}' if there is no heating system or if there is a heat pump serving a heating load." ) - + args << makeArgument( type: Argument::Choice, name: 'heating_system_fuel', @@ -1672,7 +1673,7 @@ def makeArgument(name:, display_name: 'Heating System: Fuel Type', description: "The fuel type of the heating system. Ignored for #{HPXML::HVACTypeElectricResistance}." ) - + args << makeArgument( type: Argument::Double, name: 'heating_system_heating_efficiency', @@ -1681,17 +1682,17 @@ def makeArgument(name:, units: 'Frac', description: 'The rated heating efficiency value of the heating system.' ) - + args << makeArgument( type: Argument::Double, name: 'heating_system_heating_capacity', required: false, - display_name: 'Heating System: Heating Capacity') - description: "The output heating capacity of the heating system.", + display_name: 'Heating System: Heating Capacity', + description: 'The output heating capacity of the heating system.', units: 'Btu/hr', default_href: "HPXML Heating Systems" ) - + args << makeArgument( type: Argument::Double, name: 'heating_system_heating_autosizing_factor', @@ -1699,7 +1700,7 @@ def makeArgument(name:, display_name: 'Heating System: Heating Autosizing Factor', description: 'The capacity scaling factor applied to the auto-sizing methodology. If not provided, 1.0 is used.' ) - + args << makeArgument( type: Argument::Double, name: 'heating_system_heating_autosizing_limit', @@ -1708,7 +1709,7 @@ def makeArgument(name:, description: 'The maximum capacity limit applied to the auto-sizing methodology. If not provided, no limit is used.', units: 'Btu/hr' ) - + args << makeArgument( type: Argument::Double, name: 'heating_system_fraction_heat_load_served', @@ -1717,7 +1718,7 @@ def makeArgument(name:, description: 'The heating load served by the heating system.', units: 'Frac' ) - + args << makeArgument( type: Argument::Double, name: 'heating_system_pilot_light', @@ -1726,7 +1727,7 @@ def makeArgument(name:, description: "The fuel usage of the pilot light. Applies only to #{HPXML::HVACTypeFurnace}, #{HPXML::HVACTypeWallFurnace}, #{HPXML::HVACTypeFloorFurnace}, #{HPXML::HVACTypeStove}, #{HPXML::HVACTypeBoiler}, and #{HPXML::HVACTypeFireplace} with non-electric fuel type. If not provided, assumes no pilot light.", units: 'Btuh' ) - + args << makeArgument( type: Argument::Double, name: 'heating_system_airflow_defect_ratio', @@ -1735,25 +1736,25 @@ def makeArgument(name:, description: "The airflow defect ratio, defined as (InstalledAirflow - DesignAirflow) / DesignAirflow, of the heating system per ANSI/RESNET/ACCA Standard 310. A value of zero means no airflow defect. Applies only to #{HPXML::HVACTypeFurnace}. If not provided, assumes no defect.", units: 'Frac' ) - + args << makeArgument( type: Argument::Choice, name: 'cooling_system_type', - choices: cooling_system_type_choices, + choices: cooling_system_type_choices, required: true, display_name: 'Cooling System: Type', description: "The type of cooling system. Use '#{Constants::None}' if there is no cooling system or if there is a heat pump serving a cooling load." ) - + args << makeArgument( type: Argument::Choice, name: 'cooling_system_cooling_efficiency_type', - choices: cooling_efficiency_type_choices, + choices: cooling_efficiency_type_choices, required: false, display_name: 'Cooling System: Efficiency Type', description: "The efficiency type of the cooling system. System types #{HPXML::HVACTypeCentralAirConditioner} and #{HPXML::HVACTypeMiniSplitAirConditioner} use #{HPXML::UnitsSEER} or #{HPXML::UnitsSEER2}. System types #{HPXML::HVACTypeRoomAirConditioner} and #{HPXML::HVACTypePTAC} use #{HPXML::UnitsEER} or #{HPXML::UnitsCEER}. Ignored for system type #{HPXML::HVACTypeEvaporativeCooler}." ) - + args << makeArgument( type: Argument::Double, name: 'cooling_system_cooling_efficiency', @@ -1761,17 +1762,17 @@ def makeArgument(name:, display_name: 'Cooling System: Efficiency', description: "The rated efficiency value of the cooling system. Ignored for #{HPXML::HVACTypeEvaporativeCooler}." ) - + args << makeArgument( type: Argument::Choice, - name: 'cooling_system_cooling_compressor_type', - choices: compressor_type_choices, + name: 'cooling_system_cooling_compressor_type', + choices: compressor_type_choices, required: false, display_name: 'Cooling System: Cooling Compressor Type', description: "The compressor type of the cooling system. Only applies to #{HPXML::HVACTypeCentralAirConditioner} and #{HPXML::HVACTypeMiniSplitAirConditioner}.", default_href: "Central Air Conditioner, Mini-Split Air Conditioner" ) - + args << makeArgument( type: Argument::Double, name: 'cooling_system_cooling_sensible_heat_fraction', @@ -1781,17 +1782,17 @@ def makeArgument(name:, default_href: "Central Air Conditioner, Room Air Conditioner, Packaged Terminal Air Conditioner, Mini-Split Air Conditioner", units: 'Frac' ) - + args << makeArgument( type: Argument::Double, name: 'cooling_system_cooling_capacity', required: false, display_name: 'Cooling System: Cooling Capacity', - description: "The output cooling capacity of the cooling system.", + description: 'The output cooling capacity of the cooling system.', default_href: "Central Air Conditioner, Room Air Conditioner, Packaged Terminal Air Conditioner, Evaporative Cooler, Mini-Split Air Conditioner", units: 'Btu/hr' ) - + args << makeArgument( type: Argument::Double, name: 'cooling_system_cooling_autosizing_factor', @@ -1799,7 +1800,7 @@ def makeArgument(name:, display_name: 'Cooling System: Cooling Autosizing Factor', description: 'The capacity scaling factor applied to the auto-sizing methodology. If not provided, 1.0 is used.' ) - + args << makeArgument( type: Argument::Double, name: 'cooling_system_cooling_autosizing_limit', @@ -1808,7 +1809,7 @@ def makeArgument(name:, description: 'The maximum capacity limit applied to the auto-sizing methodology. If not provided, no limit is used.', units: 'Btu/hr' ) - + args << makeArgument( type: Argument::Double, name: 'cooling_system_fraction_cool_load_served', @@ -1817,7 +1818,7 @@ def makeArgument(name:, description: 'The cooling load served by the cooling system.', units: 'Frac' ) - + args << makeArgument( name: 'cooling_system_is_ducted', type: Argument::Boolean, @@ -1825,7 +1826,7 @@ def makeArgument(name:, display_name: 'Cooling System: Is Ducted', description: "Whether the cooling system is ducted or not. Only used for #{HPXML::HVACTypeMiniSplitAirConditioner} and #{HPXML::HVACTypeEvaporativeCooler}. It's assumed that #{HPXML::HVACTypeCentralAirConditioner} is ducted, and #{HPXML::HVACTypeRoomAirConditioner} and #{HPXML::HVACTypePTAC} are not ducted." ) - + args << makeArgument( type: Argument::Double, name: 'cooling_system_airflow_defect_ratio', @@ -1834,7 +1835,7 @@ def makeArgument(name:, description: "The airflow defect ratio, defined as (InstalledAirflow - DesignAirflow) / DesignAirflow, of the cooling system per ANSI/RESNET/ACCA Standard 310. A value of zero means no airflow defect. Applies only to #{HPXML::HVACTypeCentralAirConditioner} and ducted #{HPXML::HVACTypeMiniSplitAirConditioner}. If not provided, assumes no defect.", units: 'Frac' ) - + args << makeArgument( type: Argument::Double, name: 'cooling_system_charge_defect_ratio', @@ -1843,7 +1844,7 @@ def makeArgument(name:, description: "The refrigerant charge defect ratio, defined as (InstalledCharge - DesignCharge) / DesignCharge, of the cooling system per ANSI/RESNET/ACCA Standard 310. A value of zero means no refrigerant charge defect. Applies only to #{HPXML::HVACTypeCentralAirConditioner} and #{HPXML::HVACTypeMiniSplitAirConditioner}. If not provided, assumes no defect.", units: 'Frac' ) - + args << makeArgument( type: Argument::Double, name: 'cooling_system_crankcase_heater_watts', @@ -1853,16 +1854,16 @@ def makeArgument(name:, default_href: "Central Air Conditioner, Room Air Conditioner, Packaged Terminal Air Conditioner, Mini-Split Air Conditioner", units: 'W' ) - + args << makeArgument( type: Argument::Choice, - name: 'cooling_system_integrated_heating_system_fuel', - choices: heating_system_fuel_choices, + name: 'cooling_system_integrated_heating_system_fuel', + choices: heating_system_fuel_choices, required: false, display_name: 'Cooling System: Integrated Heating System Fuel Type', description: "The fuel type of the heating system integrated into cooling system. Only used for #{HPXML::HVACTypePTAC} and #{HPXML::HVACTypeRoomAirConditioner}." ) - + args << makeArgument( type: Argument::Double, name: 'cooling_system_integrated_heating_system_efficiency_percent', @@ -1871,7 +1872,7 @@ def makeArgument(name:, units: 'Frac', description: "The rated heating efficiency value of the heating system integrated into cooling system. Only used for #{HPXML::HVACTypePTAC} and #{HPXML::HVACTypeRoomAirConditioner}." ) - + args << makeArgument( type: Argument::Double, name: 'cooling_system_integrated_heating_system_capacity', @@ -1881,7 +1882,7 @@ def makeArgument(name:, default_href: "Room Air Conditioner, Packaged Terminal Air Conditioner", units: 'Btu/hr' ) - + args << makeArgument( type: Argument::Double, name: 'cooling_system_integrated_heating_system_fraction_heat_load_served', @@ -1890,7 +1891,7 @@ def makeArgument(name:, description: "The heating load served by the heating system integrated into cooling system. Only used for #{HPXML::HVACTypePTAC} and #{HPXML::HVACTypeRoomAirConditioner}.", units: 'Frac' ) - + heat_pump_type_choices = OpenStudio::StringVector.new heat_pump_type_choices << Constants::None heat_pump_type_choices << HPXML::HVACTypeHeatPumpAirToAir @@ -1926,22 +1927,22 @@ def makeArgument(name:, args << makeArgument( type: Argument::Choice, - name: 'heat_pump_type', - choices: heat_pump_type_choices, + name: 'heat_pump_type', + choices: heat_pump_type_choices, required: true, display_name: 'Heat Pump: Type', description: "The type of heat pump. Use '#{Constants::None}' if there is no heat pump." ) - + args << makeArgument( type: Argument::Choice, - name: 'heat_pump_heating_efficiency_type', - choices: heat_pump_heating_efficiency_type_choices, + name: 'heat_pump_heating_efficiency_type', + choices: heat_pump_heating_efficiency_type_choices, required: false, display_name: 'Heat Pump: Heating Efficiency Type', description: "The heating efficiency type of heat pump. System types #{HPXML::HVACTypeHeatPumpAirToAir} and #{HPXML::HVACTypeHeatPumpMiniSplit} use #{HPXML::UnitsHSPF} or #{HPXML::UnitsHSPF2}. System types #{HPXML::HVACTypeHeatPumpGroundToAir}, #{HPXML::HVACTypeHeatPumpPTHP} and #{HPXML::HVACTypeHeatPumpRoom} use #{HPXML::UnitsCOP}." ) - + args << makeArgument( type: Argument::Double, name: 'heat_pump_heating_efficiency', @@ -1949,16 +1950,16 @@ def makeArgument(name:, display_name: 'Heat Pump: Heating Efficiency', description: 'The rated heating efficiency value of the heat pump.' ) - + args << makeArgument( type: Argument::Choice, - name: 'heat_pump_cooling_efficiency_type', - choices: cooling_efficiency_type_choices, + name: 'heat_pump_cooling_efficiency_type', + choices: cooling_efficiency_type_choices, required: false, display_name: 'Heat Pump: Cooling Efficiency Type', description: "The cooling efficiency type of heat pump. System types #{HPXML::HVACTypeHeatPumpAirToAir} and #{HPXML::HVACTypeHeatPumpMiniSplit} use #{HPXML::UnitsSEER} or #{HPXML::UnitsSEER2}. System types #{HPXML::HVACTypeHeatPumpGroundToAir}, #{HPXML::HVACTypeHeatPumpPTHP} and #{HPXML::HVACTypeHeatPumpRoom} use #{HPXML::UnitsEER}." ) - + args << makeArgument( type: Argument::Double, name: 'heat_pump_cooling_efficiency', @@ -1966,37 +1967,37 @@ def makeArgument(name:, display_name: 'Heat Pump: Cooling Efficiency', description: 'The rated cooling efficiency value of the heat pump.' ) - + args << makeArgument( type: Argument::Choice, - name: 'heat_pump_cooling_compressor_type', - choices: compressor_type_choices, + name: 'heat_pump_cooling_compressor_type', + choices: compressor_type_choices, required: false, display_name: 'Heat Pump: Cooling Compressor Type', description: "The compressor type of the heat pump. Only applies to #{HPXML::HVACTypeHeatPumpAirToAir} and #{HPXML::HVACTypeHeatPumpMiniSplit}.", default_href: "Air-to-Air Heat Pump, Mini-Split Heat Pump" ) - + args << makeArgument( type: Argument::Double, name: 'heat_pump_cooling_sensible_heat_fraction', required: false, display_name: 'Heat Pump: Cooling Sensible Heat Fraction', - description: "The sensible heat fraction of the heat pump.", + description: 'The sensible heat fraction of the heat pump.', default_href: "Air-to-Air Heat Pump, Mini-Split Heat Pump, Packaged Terminal Heat Pump, Room Air Conditioner w/ Reverse Cycle, Ground-to-Air Heat Pump", units: 'Frac' ) - + args << makeArgument( type: Argument::Double, name: 'heat_pump_heating_capacity', required: false, display_name: 'Heat Pump: Heating Capacity', - description: "The output heating capacity of the heat pump.", + description: 'The output heating capacity of the heat pump.', default_href: "Air-to-Air Heat Pump, Mini-Split Heat Pump, Packaged Terminal Heat Pump, Room Air Conditioner w/ Reverse Cycle, Ground-to-Air Heat Pump", units: 'Btu/hr' ) - + args << makeArgument( type: Argument::Double, name: 'heat_pump_heating_autosizing_factor', @@ -2004,7 +2005,7 @@ def makeArgument(name:, display_name: 'Heat Pump: Heating Autosizing Factor', description: 'The capacity scaling factor applied to the auto-sizing methodology. If not provided, 1.0 is used.' ) - + args << makeArgument( type: Argument::Double, name: 'heat_pump_heating_autosizing_limit', @@ -2013,7 +2014,7 @@ def makeArgument(name:, description: 'The maximum capacity limit applied to the auto-sizing methodology. If not provided, no limit is used.', units: 'Btu/hr' ) - + args << makeArgument( type: Argument::Double, name: 'heat_pump_heating_capacity_retention_fraction', @@ -2023,7 +2024,7 @@ def makeArgument(name:, default_href: "Air-to-Air Heat Pump, Mini-Split Heat Pump, Packaged Terminal Heat Pump, Room Air Conditioner w/ Reverse Cycle", units: 'Frac' ) - + args << makeArgument( type: Argument::Double, name: 'heat_pump_heating_capacity_retention_temp', @@ -2032,17 +2033,17 @@ def makeArgument(name:, description: "The user-specified temperature (e.g., 17F or 5F) for the above heating capacity retention fraction. Applies to all heat pump types except #{HPXML::HVACTypeHeatPumpGroundToAir}. Required if the Heating Capacity Retention Fraction is provided.", units: 'F' ) - + args << makeArgument( type: Argument::Double, name: 'heat_pump_cooling_capacity', required: false, display_name: 'Heat Pump: Cooling Capacity', - description: "The output cooling capacity of the heat pump.", + description: 'The output cooling capacity of the heat pump.', default_href: "Air-to-Air Heat Pump, Mini-Split Heat Pump, Packaged Terminal Heat Pump, Room Air Conditioner w/ Reverse Cycle, Ground-to-Air Heat Pump", units: 'Btu/hr' ) - + args << makeArgument( type: Argument::Double, name: 'heat_pump_cooling_autosizing_factor', @@ -2050,7 +2051,7 @@ def makeArgument(name:, display_name: 'Heat Pump: Cooling Autosizing Factor', description: 'The capacity scaling factor applied to the auto-sizing methodology. If not provided, 1.0 is used.' ) - + args << makeArgument( type: Argument::Double, name: 'heat_pump_cooling_autosizing_limit', @@ -2059,7 +2060,7 @@ def makeArgument(name:, description: 'The maximum capacity limit applied to the auto-sizing methodology. If not provided, no limit is used.', units: 'Btu/hr' ) - + args << makeArgument( type: Argument::Double, name: 'heat_pump_fraction_heat_load_served', @@ -2068,7 +2069,7 @@ def makeArgument(name:, description: 'The heating load served by the heat pump.', units: 'Frac' ) - + args << makeArgument( type: Argument::Double, name: 'heat_pump_fraction_cool_load_served', @@ -2077,7 +2078,7 @@ def makeArgument(name:, description: 'The cooling load served by the heat pump.', units: 'Frac' ) - + args << makeArgument( type: Argument::Double, name: 'heat_pump_compressor_lockout_temp', @@ -2087,23 +2088,24 @@ def makeArgument(name:, default_href: "Air-to-Air Heat Pump, Mini-Split Heat Pump, Packaged Terminal Heat Pump, Room Air Conditioner w/ Reverse Cycle", units: 'F' ) - + args << makeArgument( type: Argument::Choice, - name: 'heat_pump_backup_type', - choices: heat_pump_backup_type_choices, + name: 'heat_pump_backup_type', + choices: heat_pump_backup_type_choices, required: false, display_name: 'Heat Pump: Backup Type', description: "The backup type of the heat pump. If '#{HPXML::HeatPumpBackupTypeIntegrated}', represents e.g. built-in electric strip heat or dual-fuel integrated furnace. If '#{HPXML::HeatPumpBackupTypeSeparate}', represents e.g. electric baseboard or boiler based on the Heating System 2 specified below. Use '#{Constants::None}' if there is no backup heating." ) - + args << makeArgument( type: Argument::Double, name: 'heat_pump_backup_heating_autosizing_factor', required: false, display_name: 'Heat Pump: Backup Heating Autosizing Factor', - description: "The capacity scaling factor applied to the auto-sizing methodology if Backup Type is '#{HPXML::HeatPumpBackupTypeIntegrated}'. If not provided, 1.0 is used. If Backup Type is '#{HPXML::HeatPumpBackupTypeSeparate}', use Heating System 2: Heating Autosizing Factor.") - + description: "The capacity scaling factor applied to the auto-sizing methodology if Backup Type is '#{HPXML::HeatPumpBackupTypeIntegrated}'. If not provided, 1.0 is used. If Backup Type is '#{HPXML::HeatPumpBackupTypeSeparate}', use Heating System 2: Heating Autosizing Factor." + ) + args << makeArgument( type: Argument::Double, name: 'heat_pump_backup_heating_autosizing_limit', @@ -2112,16 +2114,16 @@ def makeArgument(name:, description: "The maximum capacity limit applied to the auto-sizing methodology if Backup Type is '#{HPXML::HeatPumpBackupTypeIntegrated}'. If not provided, no limit is used. If Backup Type is '#{HPXML::HeatPumpBackupTypeSeparate}', use Heating System 2: Heating Autosizing Limit.", units: 'Btu/hr' ) - + args << makeArgument( type: Argument::Choice, - name: 'heat_pump_backup_fuel', - choices: heat_pump_backup_fuel_choices, + name: 'heat_pump_backup_fuel', + choices: heat_pump_backup_fuel_choices, required: false, display_name: 'Heat Pump: Backup Fuel Type', description: "The backup fuel type of the heat pump. Only applies if Backup Type is '#{HPXML::HeatPumpBackupTypeIntegrated}'." ) - + args << makeArgument( type: Argument::Double, name: 'heat_pump_backup_heating_efficiency', @@ -2129,7 +2131,7 @@ def makeArgument(name:, display_name: 'Heat Pump: Backup Rated Efficiency', description: "The backup rated efficiency value of the heat pump. Percent for electricity fuel type. AFUE otherwise. Only applies if Backup Type is '#{HPXML::HeatPumpBackupTypeIntegrated}'." ) - + args << makeArgument( type: Argument::Double, name: 'heat_pump_backup_heating_capacity', @@ -2139,7 +2141,7 @@ def makeArgument(name:, default_href: "Backup", units: 'Btu/hr' ) - + args << makeArgument( type: Argument::Double, name: 'heat_pump_backup_heating_lockout_temp', @@ -2149,27 +2151,27 @@ def makeArgument(name:, default_href: "Backup", units: 'F' ) - + args << makeArgument( type: Argument::Choice, - name: 'heat_pump_sizing_methodology', - choices: heat_pump_sizing_choices, + name: 'heat_pump_sizing_methodology', + choices: heat_pump_sizing_choices, required: false, display_name: 'Heat Pump: Sizing Methodology', - description: "The auto-sizing methodology to use when the heat pump capacity is not provided.", + description: 'The auto-sizing methodology to use when the heat pump capacity is not provided.', default_href: "HPXML HVAC Sizing Control" ) - + args << makeArgument( type: Argument::Choice, - name: 'heat_pump_backup_sizing_methodology', - choices: heat_pump_backup_sizing_choices, + name: 'heat_pump_backup_sizing_methodology', + choices: heat_pump_backup_sizing_choices, required: false, display_name: 'Heat Pump: Backup Sizing Methodology', - description: "The auto-sizing methodology to use when the heat pump backup capacity is not provided.", + description: 'The auto-sizing methodology to use when the heat pump backup capacity is not provided.', default_href: "HPXML HVAC Sizing Control" ) - + args << makeArgument( name: 'heat_pump_is_ducted', type: Argument::Boolean, @@ -2177,7 +2179,7 @@ def makeArgument(name:, display_name: 'Heat Pump: Is Ducted', description: "Whether the heat pump is ducted or not. Only used for #{HPXML::HVACTypeHeatPumpMiniSplit}. It's assumed that #{HPXML::HVACTypeHeatPumpAirToAir} and #{HPXML::HVACTypeHeatPumpGroundToAir} are ducted, and #{HPXML::HVACTypeHeatPumpPTHP} and #{HPXML::HVACTypeHeatPumpRoom} are not ducted. If not provided, assumes not ducted." ) - + args << makeArgument( type: Argument::Double, name: 'heat_pump_airflow_defect_ratio', @@ -2186,7 +2188,7 @@ def makeArgument(name:, description: "The airflow defect ratio, defined as (InstalledAirflow - DesignAirflow) / DesignAirflow, of the heat pump per ANSI/RESNET/ACCA Standard 310. A value of zero means no airflow defect. Applies only to #{HPXML::HVACTypeHeatPumpAirToAir}, ducted #{HPXML::HVACTypeHeatPumpMiniSplit}, and #{HPXML::HVACTypeHeatPumpGroundToAir}. If not provided, assumes no defect.", units: 'Frac' ) - + args << makeArgument( type: Argument::Double, name: 'heat_pump_charge_defect_ratio', @@ -2195,7 +2197,7 @@ def makeArgument(name:, description: 'The refrigerant charge defect ratio, defined as (InstalledCharge - DesignCharge) / DesignCharge, of the heat pump per ANSI/RESNET/ACCA Standard 310. A value of zero means no refrigerant charge defect. Applies to all heat pump types. If not provided, assumes no defect.', units: 'Frac' ) - + args << makeArgument( type: Argument::Double, name: 'heat_pump_crankcase_heater_watts', @@ -2205,20 +2207,20 @@ def makeArgument(name:, default_href: "Air-to-Air Heat Pump, Mini-Split Heat Pump, Packaged Terminal Heat Pump, Room Air Conditioner w/ Reverse Cycle", units: 'W' ) - + perf_data_capacity_type_choices = OpenStudio::StringVector.new perf_data_capacity_type_choices << 'Absolute capacities' perf_data_capacity_type_choices << 'Normalized capacity fractions' args << makeArgument( type: Argument::Choice, - name: 'hvac_perf_data_capacity_type', - choices: perf_data_capacity_type_choices, + name: 'hvac_perf_data_capacity_type', + choices: perf_data_capacity_type_choices, required: false, display_name: 'HVAC Detailed Performance Data: Capacity Type', description: 'Type of capacity values for detailed performance data if available. Applies only to variable-speed air-source HVAC systems (central air conditioners, mini-split air conditioners, air-to-air heat pumps, and mini-split heat pumps).' ) - + args << makeArgument( type: Argument::String, name: 'hvac_perf_data_heating_outdoor_temperatures', @@ -2227,7 +2229,7 @@ def makeArgument(name:, description: 'Outdoor temperatures of heating detailed performance data if available. Applies only to variable-speed air-source HVAC systems (central air conditioners, mini-split air conditioners, air-to-air heat pumps, and mini-split heat pumps). One of the outdoor temperatures must be 47 F. At least two performance data points are required using a comma-separated list.', units: 'F' ) - + args << makeArgument( type: Argument::String, name: 'hvac_perf_data_heating_min_speed_capacities', @@ -2236,7 +2238,7 @@ def makeArgument(name:, description: 'Minimum speed capacities of heating detailed performance data if available. Applies only to variable-speed air-source HVAC systems (central air conditioners, mini-split air conditioners, air-to-air heat pumps, and mini-split heat pumps). At least two performance data points are required using a comma-separated list.', units: 'Btu/hr or Frac' ) - + args << makeArgument( type: Argument::String, name: 'hvac_perf_data_heating_max_speed_capacities', @@ -2245,7 +2247,7 @@ def makeArgument(name:, description: 'Maximum speed capacities of heating detailed performance data if available. Applies only to variable-speed air-source HVAC systems (central air conditioners, mini-split air conditioners, air-to-air heat pumps, and mini-split heat pumps). At least two performance data points are required using a comma-separated list.', units: 'Btu/hr or Frac' ) - + args << makeArgument( type: Argument::String, name: 'hvac_perf_data_heating_min_speed_cops', @@ -2254,7 +2256,7 @@ def makeArgument(name:, description: 'Minimum speed efficiency COP values of heating detailed performance data if available. Applies only to variable-speed air-source HVAC systems (central air conditioners, mini-split air conditioners, air-to-air heat pumps, and mini-split heat pumps). At least two performance data points are required using a comma-separated list.', units: 'W/W' ) - + args << makeArgument( type: Argument::String, name: 'hvac_perf_data_heating_max_speed_cops', @@ -2263,7 +2265,7 @@ def makeArgument(name:, description: 'Maximum speed efficiency COP values of heating detailed performance data if available. Applies only to variable-speed air-source HVAC systems (central air conditioners, mini-split air conditioners, air-to-air heat pumps, and mini-split heat pumps). At least two performance data points are required using a comma-separated list.', units: 'W/W' ) - + args << makeArgument( type: Argument::String, name: 'hvac_perf_data_cooling_outdoor_temperatures', @@ -2272,7 +2274,7 @@ def makeArgument(name:, description: 'Outdoor temperatures of cooling detailed performance data if available. Applies only to variable-speed air-source HVAC systems (central air conditioners, mini-split air conditioners, air-to-air heat pumps, and mini-split heat pumps). One of the outdoor temperatures must be 95 F. At least two performance data points are required using a comma-separated list.', units: 'F' ) - + args << makeArgument( type: Argument::String, name: 'hvac_perf_data_cooling_min_speed_capacities', @@ -2281,7 +2283,7 @@ def makeArgument(name:, description: 'Minimum speed capacities of cooling detailed performance data if available. Applies only to variable-speed air-source HVAC systems (central air conditioners, mini-split air conditioners, air-to-air heat pumps, and mini-split heat pumps). At least two performance data points are required using a comma-separated list.', units: 'Btu/hr or Frac' ) - + args << makeArgument( type: Argument::String, name: 'hvac_perf_data_cooling_max_speed_capacities', @@ -2290,7 +2292,7 @@ def makeArgument(name:, description: 'Maximum speed capacities of cooling detailed performance data if available. Applies only to variable-speed air-source HVAC systems (central air conditioners, mini-split air conditioners, air-to-air heat pumps, and mini-split heat pumps). At least two performance data points are required using a comma-separated list.', units: 'Btu/hr or Frac' ) - + args << makeArgument( type: Argument::String, name: 'hvac_perf_data_cooling_min_speed_cops', @@ -2299,7 +2301,7 @@ def makeArgument(name:, description: 'Minimum speed efficiency COP values of cooling detailed performance data if available. Applies only to variable-speed air-source HVAC systems (central air conditioners, mini-split air conditioners, air-to-air heat pumps, and mini-split heat pumps). At least two performance data points are required using a comma-separated list.', units: 'W/W' ) - + args << makeArgument( type: Argument::String, name: 'hvac_perf_data_cooling_max_speed_cops', @@ -2308,7 +2310,7 @@ def makeArgument(name:, description: 'Maximum speed efficiency COP values of cooling detailed performance data if available. Applies only to variable-speed air-source HVAC systems (central air conditioners, mini-split air conditioners, air-to-air heat pumps, and mini-split heat pumps). At least two performance data points are required using a comma-separated list.', units: 'W/W' ) - + geothermal_loop_configuration_choices = OpenStudio::StringVector.new geothermal_loop_configuration_choices << Constants::None # geothermal_loop_configuration_choices << HPXML::GeothermalLoopLoopConfigurationDiagonal @@ -2318,14 +2320,14 @@ def makeArgument(name:, args << makeArgument( type: Argument::Choice, - name: 'geothermal_loop_configuration', - choices: geothermal_loop_configuration_choices, + name: 'geothermal_loop_configuration', + choices: geothermal_loop_configuration_choices, required: false, display_name: 'Geothermal Loop: Configuration', description: "Configuration of the geothermal loop. Only applies to #{HPXML::HVACTypeHeatPumpGroundToAir} heat pump type.", default_href: "Ground-to-Air Heat Pump" ) - + geothermal_loop_borefield_configuration_choices = OpenStudio::StringVector.new valid_bore_configs = HVACSizing.get_geothermal_loop_valid_configurations valid_bore_configs.keys.each do |valid_bore_config| @@ -2334,14 +2336,14 @@ def makeArgument(name:, args << makeArgument( type: Argument::Choice, - name: 'geothermal_loop_borefield_configuration', - choices: geothermal_loop_borefield_configuration_choices, + name: 'geothermal_loop_borefield_configuration', + choices: geothermal_loop_borefield_configuration_choices, required: false, display_name: 'Geothermal Loop: Borefield Configuration', description: "Borefield configuration of the geothermal loop. Only applies to #{HPXML::HVACTypeHeatPumpGroundToAir} heat pump type.", default_href: "HPXML Geothermal Loops" ) - + args << makeArgument( type: Argument::Double, name: 'geothermal_loop_loop_flow', @@ -2351,7 +2353,7 @@ def makeArgument(name:, default_href: "HPXML Geothermal Loops", units: 'gpm' ) - + args << makeArgument( type: Argument::Integer, name: 'geothermal_loop_boreholes_count', @@ -2361,7 +2363,7 @@ def makeArgument(name:, default_href: "HPXML Geothermal Loops", units: '#' ) - + args << makeArgument( type: Argument::Double, name: 'geothermal_loop_boreholes_length', @@ -2371,7 +2373,7 @@ def makeArgument(name:, default_href: "HPXML Geothermal Loops", units: 'ft' ) - + args << makeArgument( type: Argument::Double, name: 'geothermal_loop_boreholes_spacing', @@ -2381,7 +2383,7 @@ def makeArgument(name:, default_href: "HPXML Geothermal Loops", units: 'ft' ) - + args << makeArgument( type: Argument::Double, name: 'geothermal_loop_boreholes_diameter', @@ -2398,24 +2400,24 @@ def makeArgument(name:, args << makeArgument( type: Argument::Choice, - name: 'geothermal_loop_grout_type', - choices: geothermal_loop_grout_or_pipe_type_choices, + name: 'geothermal_loop_grout_type', + choices: geothermal_loop_grout_or_pipe_type_choices, required: false, display_name: 'Geothermal Loop: Grout Type', description: "Grout type of the geothermal loop. Only applies to #{HPXML::HVACTypeHeatPumpGroundToAir} heat pump type.", default_href: "HPXML Geothermal Loops" ) - + args << makeArgument( type: Argument::Choice, - name: 'geothermal_loop_pipe_type', - choices: geothermal_loop_grout_or_pipe_type_choices, + name: 'geothermal_loop_pipe_type', + choices: geothermal_loop_grout_or_pipe_type_choices, required: false, display_name: 'Geothermal Loop: Pipe Type', description: "Pipe type of the geothermal loop. Only applies to #{HPXML::HVACTypeHeatPumpGroundToAir} heat pump type.", default_href: "HPXML Geothermal Loops" ) - + geothermal_loop_pipe_diameter_choices = OpenStudio::StringVector.new geothermal_loop_pipe_diameter_choices << '3/4" pipe' geothermal_loop_pipe_diameter_choices << '1" pipe' @@ -2423,15 +2425,15 @@ def makeArgument(name:, args << makeArgument( type: Argument::Choice, - name: 'geothermal_loop_pipe_diameter', - choices: geothermal_loop_pipe_diameter_choices, + name: 'geothermal_loop_pipe_diameter', + choices: geothermal_loop_pipe_diameter_choices, required: false, display_name: 'Geothermal Loop: Pipe Diameter', description: "Pipe diameter of the geothermal loop. Only applies to #{HPXML::HVACTypeHeatPumpGroundToAir} heat pump type.", default_href: "HPXML Geothermal Loops", units: 'in' ) - + heating_system_2_type_choices = OpenStudio::StringVector.new heating_system_2_type_choices << Constants::None heating_system_2_type_choices << HPXML::HVACTypeFurnace @@ -2445,22 +2447,22 @@ def makeArgument(name:, args << makeArgument( type: Argument::Choice, - name: 'heating_system_2_type', - choices: heating_system_2_type_choices, + name: 'heating_system_2_type', + choices: heating_system_2_type_choices, required: false, display_name: 'Heating System 2: Type', description: "The type of the second heating system. If a heat pump is specified and the backup type is '#{HPXML::HeatPumpBackupTypeSeparate}', this heating system represents '#{HPXML::HeatPumpBackupTypeSeparate}' backup heating. For ducted heat pumps where the backup heating system is a '#{HPXML::HVACTypeFurnace}', the backup would typically be characterized as '#{HPXML::HeatPumpBackupTypeIntegrated}' in that the furnace and heat pump share the same distribution system and blower fan; a '#{HPXML::HVACTypeFurnace}' as '#{HPXML::HeatPumpBackupTypeSeparate}' backup to a ducted heat pump is not supported. If not provided, defaults to none." ) - + args << makeArgument( type: Argument::Choice, - name: 'heating_system_2_fuel', - choices: heating_system_fuel_choices, + name: 'heating_system_2_fuel', + choices: heating_system_fuel_choices, required: false, display_name: 'Heating System 2: Fuel Type', description: "The fuel type of the second heating system. Ignored for #{HPXML::HVACTypeElectricResistance}." ) - + args << makeArgument( type: Argument::Double, name: 'heating_system_2_heating_efficiency', @@ -2469,17 +2471,17 @@ def makeArgument(name:, units: 'Frac', description: 'The rated heating efficiency value of the second heating system.' ) - + args << makeArgument( type: Argument::Double, name: 'heating_system_2_heating_capacity', required: false, display_name: 'Heating System 2: Heating Capacity', - description: "The output heating capacity of the second heating system.", + description: 'The output heating capacity of the second heating system.', default_href: "HPXML Heating Systems", units: 'Btu/hr' ) - + args << makeArgument( type: Argument::Double, name: 'heating_system_2_heating_autosizing_factor', @@ -2487,7 +2489,7 @@ def makeArgument(name:, display_name: 'Heating System 2: Heating Autosizing Factor', description: 'The capacity scaling factor applied to the auto-sizing methodology. If not provided, 1.0 is used.' ) - + args << makeArgument( type: Argument::Double, name: 'heating_system_2_heating_autosizing_limit', @@ -2496,7 +2498,7 @@ def makeArgument(name:, description: 'The maximum capacity limit applied to the auto-sizing methodology. If not provided, no limit is used.', units: 'Btu/hr' ) - + args << makeArgument( type: Argument::Double, name: 'heating_system_2_fraction_heat_load_served', @@ -2505,7 +2507,7 @@ def makeArgument(name:, description: 'The heat load served fraction of the second heating system. Ignored if this heating system serves as a backup system for a heat pump.', units: 'Frac' ) - + args << makeArgument( type: Argument::String, name: 'hvac_control_heating_weekday_setpoint', @@ -2514,7 +2516,7 @@ def makeArgument(name:, description: 'Specify the constant or 24-hour comma-separated weekday heating setpoint schedule. Required unless a detailed CSV schedule is provided.', units: 'F' ) - + args << makeArgument( type: Argument::String, name: 'hvac_control_heating_weekend_setpoint', @@ -2523,7 +2525,7 @@ def makeArgument(name:, description: 'Specify the constant or 24-hour comma-separated weekend heating setpoint schedule. Required unless a detailed CSV schedule is provided.', units: 'F' ) - + args << makeArgument( type: Argument::String, name: 'hvac_control_cooling_weekday_setpoint', @@ -2532,7 +2534,7 @@ def makeArgument(name:, description: 'Specify the constant or 24-hour comma-separated weekday cooling setpoint schedule. Required unless a detailed CSV schedule is provided.', units: 'F' ) - + args << makeArgument( type: Argument::String, name: 'hvac_control_cooling_weekend_setpoint', @@ -2541,7 +2543,7 @@ def makeArgument(name:, description: 'Specify the constant or 24-hour comma-separated weekend cooling setpoint schedule. Required unless a detailed CSV schedule is provided.', units: 'F' ) - + args << makeArgument( type: Argument::String, name: 'hvac_control_heating_season_period', @@ -2550,7 +2552,7 @@ def makeArgument(name:, description: "Enter a date range like 'Nov 1 - Jun 30'. Can also provide '#{Constants::BuildingAmerica}' to use automatic seasons from the Building America House Simulation Protocols.", default_href: "HPXML HVAC Control" ) - + args << makeArgument( type: Argument::String, name: 'hvac_control_cooling_season_period', @@ -2559,7 +2561,7 @@ def makeArgument(name:, description: "Enter a date range like 'Jun 1 - Oct 31'. Can also provide '#{Constants::BuildingAmerica}' to use automatic seasons from the Building America House Simulation Protocols.", default_href: "HPXML HVAC Control" ) - + args << makeArgument( type: Argument::Double, name: 'hvac_blower_fan_watts_per_cfm', @@ -2569,7 +2571,7 @@ def makeArgument(name:, default_href: "HPXML Heating Systems, HPXML Cooling Systems, HPXML Heat Pumps", units: 'W/CFM' ) - + duct_leakage_units_choices = OpenStudio::StringVector.new duct_leakage_units_choices << HPXML::UnitsCFM25 duct_leakage_units_choices << HPXML::UnitsCFM50 @@ -2599,13 +2601,13 @@ def makeArgument(name:, args << makeArgument( type: Argument::Choice, - name: 'ducts_leakage_units', - choices: duct_leakage_units_choices, + name: 'ducts_leakage_units', + choices: duct_leakage_units_choices, required: false, display_name: 'Ducts: Leakage Units', description: 'The leakage units of the ducts.' ) - + args << makeArgument( type: Argument::Double, name: 'ducts_supply_leakage_to_outside_value', @@ -2613,17 +2615,17 @@ def makeArgument(name:, display_name: 'Ducts: Supply Leakage to Outside Value', description: 'The leakage value to outside for the supply ducts.' ) - + args << makeArgument( type: Argument::Choice, - name: 'ducts_supply_location', - choices: duct_location_choices, + name: 'ducts_supply_location', + choices: duct_location_choices, required: false, display_name: 'Ducts: Supply Location', - description: "The location of the supply ducts.", + description: 'The location of the supply ducts.', default_href: "Air Distribution" ) - + args << makeArgument( type: Argument::Double, name: 'ducts_supply_insulation_r', @@ -2632,7 +2634,7 @@ def makeArgument(name:, description: 'The nominal insulation r-value of the supply ducts excluding air films. Use 0 for uninsulated ducts.', units: 'h-ft^2-R/Btu' ) - + duct_buried_level_choices = OpenStudio::StringVector.new duct_buried_level_choices << HPXML::DuctBuriedInsulationNone duct_buried_level_choices << HPXML::DuctBuriedInsulationPartial @@ -2641,44 +2643,44 @@ def makeArgument(name:, args << makeArgument( type: Argument::Choice, - name: 'ducts_supply_buried_insulation_level', - choices: duct_buried_level_choices, + name: 'ducts_supply_buried_insulation_level', + choices: duct_buried_level_choices, required: false, display_name: 'Ducts: Supply Buried Insulation Level', - description: "Whether the supply ducts are buried in, e.g., attic loose-fill insulation. Partially buried ducts have insulation that does not cover the top of the ducts. Fully buried ducts have insulation that just covers the top of the ducts. Deeply buried ducts have insulation that continues above the top of the ducts.", + description: 'Whether the supply ducts are buried in, e.g., attic loose-fill insulation. Partially buried ducts have insulation that does not cover the top of the ducts. Fully buried ducts have insulation that just covers the top of the ducts. Deeply buried ducts have insulation that continues above the top of the ducts.', default_href: "Air Distribution" ) - + args << makeArgument( type: Argument::Double, name: 'ducts_supply_surface_area', required: false, display_name: 'Ducts: Supply Surface Area', - description: "The supply ducts surface area in the given location.", + description: 'The supply ducts surface area in the given location.', default_href: "Air Distribution", units: 'ft^2' ) - + args << makeArgument( type: Argument::Double, name: 'ducts_supply_surface_area_fraction', required: false, display_name: 'Ducts: Supply Area Fraction', - description: "The fraction of supply ducts surface area in the given location. Only used if Surface Area is not provided. If the fraction is less than 1, the remaining duct area is assumed to be in conditioned space.", + description: 'The fraction of supply ducts surface area in the given location. Only used if Surface Area is not provided. If the fraction is less than 1, the remaining duct area is assumed to be in conditioned space.', default_href: "Air Distribution", units: 'frac' ) - + args << makeArgument( type: Argument::Double, name: 'ducts_supply_fraction_rectangular', required: false, display_name: 'Ducts: Supply Fraction Rectangular', - description: "The fraction of supply ducts that are rectangular (as opposed to round); this affects the duct effective R-value used for modeling.", + description: 'The fraction of supply ducts that are rectangular (as opposed to round); this affects the duct effective R-value used for modeling.', default_href: "Air Distribution", units: 'frac' ) - + args << makeArgument( type: Argument::Double, name: 'ducts_return_leakage_to_outside_value', @@ -2686,17 +2688,17 @@ def makeArgument(name:, display_name: 'Ducts: Return Leakage to Outside Value', description: 'The leakage value to outside for the return ducts.' ) - + args << makeArgument( type: Argument::Choice, - name: 'ducts_return_location', - choices: duct_location_choices, + name: 'ducts_return_location', + choices: duct_location_choices, required: false, display_name: 'Ducts: Return Location', - description: "The location of the return ducts.", + description: 'The location of the return ducts.', default_href: "Air Distribution" ) - + args << makeArgument( type: Argument::Double, name: 'ducts_return_insulation_r', @@ -2705,57 +2707,57 @@ def makeArgument(name:, description: 'The nominal insulation r-value of the return ducts excluding air films. Use 0 for uninsulated ducts.', units: 'h-ft^2-R/Btu' ) - + args << makeArgument( type: Argument::Choice, - name: 'ducts_return_buried_insulation_level', - choices: duct_buried_level_choices, + name: 'ducts_return_buried_insulation_level', + choices: duct_buried_level_choices, required: false, display_name: 'Ducts: Return Buried Insulation Level', - description: "Whether the return ducts are buried in, e.g., attic loose-fill insulation. Partially buried ducts have insulation that does not cover the top of the ducts. Fully buried ducts have insulation that just covers the top of the ducts. Deeply buried ducts have insulation that continues above the top of the ducts.", + description: 'Whether the return ducts are buried in, e.g., attic loose-fill insulation. Partially buried ducts have insulation that does not cover the top of the ducts. Fully buried ducts have insulation that just covers the top of the ducts. Deeply buried ducts have insulation that continues above the top of the ducts.', default_href: "Air Distribution" ) - + args << makeArgument( type: Argument::Double, name: 'ducts_return_surface_area', required: false, display_name: 'Ducts: Return Surface Area', - description: "The return ducts surface area in the given location.", + description: 'The return ducts surface area in the given location.', default_href: "Air Distribution", units: 'ft^2' ) - + args << makeArgument( type: Argument::Double, name: 'ducts_return_surface_area_fraction', required: false, display_name: 'Ducts: Return Area Fraction', - description: "The fraction of return ducts surface area in the given location. Only used if Surface Area is not provided. If the fraction is less than 1, the remaining duct area is assumed to be in conditioned space.", + description: 'The fraction of return ducts surface area in the given location. Only used if Surface Area is not provided. If the fraction is less than 1, the remaining duct area is assumed to be in conditioned space.', default_href: "Air Distribution", units: 'frac' ) - + args << makeArgument( type: Argument::Integer, name: 'ducts_number_of_return_registers', required: false, display_name: 'Ducts: Number of Return Registers', - description: "The number of return registers of the ducts. Only used to calculate default return duct surface area.", + description: 'The number of return registers of the ducts. Only used to calculate default return duct surface area.', default_href: "Air Distribution", units: '#' ) - + args << makeArgument( type: Argument::Double, name: 'ducts_return_fraction_rectangular', required: false, display_name: 'Ducts: Return Fraction Rectangular', - description: "The fraction of return ducts that are rectangular (as opposed to round); this affects the duct effective R-value used for modeling.", + description: 'The fraction of return ducts that are rectangular (as opposed to round); this affects the duct effective R-value used for modeling.', default_href: "Air Distribution", units: 'frac' ) - + mech_vent_fan_type_choices = OpenStudio::StringVector.new mech_vent_fan_type_choices << Constants::None mech_vent_fan_type_choices << HPXML::MechVentTypeExhaust @@ -2771,42 +2773,42 @@ def makeArgument(name:, args << makeArgument( type: Argument::Choice, - name: 'mech_vent_fan_type', - choices: mech_vent_fan_type_choices, + name: 'mech_vent_fan_type', + choices: mech_vent_fan_type_choices, required: false, display_name: 'Mechanical Ventilation: Fan Type', description: "The type of the mechanical ventilation. Use '#{Constants::None}' if there is no mechanical ventilation system. If not provided, defaults to none." ) - + args << makeArgument( type: Argument::Double, name: 'mech_vent_flow_rate', required: false, display_name: 'Mechanical Ventilation: Flow Rate', - description: "The flow rate of the mechanical ventilation.", + description: 'The flow rate of the mechanical ventilation.', default_href: "HPXML Mechanical Ventilation Fans", units: 'CFM' ) - + args << makeArgument( type: Argument::Double, name: 'mech_vent_hours_in_operation', required: false, display_name: 'Mechanical Ventilation: Hours In Operation', - description: "The hours in operation of the mechanical ventilation.", + description: 'The hours in operation of the mechanical ventilation.', default_href: "HPXML Mechanical Ventilation Fans", units: 'hrs/day' ) - + args << makeArgument( type: Argument::Choice, - name: 'mech_vent_recovery_efficiency_type', - choices: mech_vent_recovery_efficiency_type_choices, + name: 'mech_vent_recovery_efficiency_type', + choices: mech_vent_recovery_efficiency_type_choices, required: false, display_name: 'Mechanical Ventilation: Total Recovery Efficiency Type', description: 'The total recovery efficiency type of the mechanical ventilation.' ) - + args << makeArgument( type: Argument::Double, name: 'mech_vent_total_recovery_efficiency', @@ -2815,7 +2817,7 @@ def makeArgument(name:, description: "The Unadjusted or Adjusted total recovery efficiency of the mechanical ventilation. Applies to #{HPXML::MechVentTypeERV}.", units: 'Frac' ) - + args << makeArgument( type: Argument::Double, name: 'mech_vent_sensible_recovery_efficiency', @@ -2824,17 +2826,17 @@ def makeArgument(name:, description: "The Unadjusted or Adjusted sensible recovery efficiency of the mechanical ventilation. Applies to #{HPXML::MechVentTypeERV} and #{HPXML::MechVentTypeHRV}.", units: 'Frac' ) - + args << makeArgument( type: Argument::Double, - name: 'mech_vent_fan_power' + name: 'mech_vent_fan_power', required: false, display_name: 'Mechanical Ventilation: Fan Power', - description: "The fan power of the mechanical ventilation.", + description: 'The fan power of the mechanical ventilation.', default_href: "HPXML Mechanical Ventilation Fans", units: 'W' ) - + args << makeArgument( type: Argument::Integer, name: 'mech_vent_num_units_served', @@ -2843,7 +2845,7 @@ def makeArgument(name:, description: "Number of dwelling units served by the mechanical ventilation system. Must be 1 if #{HPXML::ResidentialTypeSFD}. Used to apportion flow rate and fan power to the unit.", units: '#' ) - + args << makeArgument( type: Argument::Double, name: 'mech_vent_shared_frac_recirculation', @@ -2852,16 +2854,16 @@ def makeArgument(name:, description: 'Fraction of the total supply air that is recirculated, with the remainder assumed to be outdoor air. The value must be 0 for exhaust only systems. Required for a shared mechanical ventilation system.', units: 'Frac' ) - + args << makeArgument( type: Argument::Choice, - name: 'mech_vent_shared_preheating_fuel', - choices: heating_system_fuel_choices, + name: 'mech_vent_shared_preheating_fuel', + choices: heating_system_fuel_choices, required: false, display_name: 'Shared Mechanical Ventilation: Preheating Fuel', description: 'Fuel type of the preconditioning heating equipment. Only used for a shared mechanical ventilation system. If not provided, assumes no preheating.' ) - + args << makeArgument( type: Argument::Double, name: 'mech_vent_shared_preheating_efficiency', @@ -2870,7 +2872,7 @@ def makeArgument(name:, description: 'Efficiency of the preconditioning heating equipment. Only used for a shared mechanical ventilation system. If not provided, assumes no preheating.', units: 'COP' ) - + args << makeArgument( type: Argument::Double, name: 'mech_vent_shared_preheating_fraction_heat_load_served', @@ -2879,19 +2881,19 @@ def makeArgument(name:, description: 'Fraction of heating load introduced by the shared ventilation system that is met by the preconditioning heating equipment. If not provided, assumes no preheating.', units: 'Frac' ) - + cooling_system_fuel_choices = OpenStudio::StringVector.new cooling_system_fuel_choices << HPXML::FuelTypeElectricity args << makeArgument( type: Argument::Choice, - name: 'mech_vent_shared_precooling_fuel', - choices: cooling_system_fuel_choices, + name: 'mech_vent_shared_precooling_fuel', + choices: cooling_system_fuel_choices, required: false, display_name: 'Shared Mechanical Ventilation: Precooling Fuel', description: 'Fuel type of the preconditioning cooling equipment. Only used for a shared mechanical ventilation system. If not provided, assumes no precooling.' ) - + args << makeArgument( type: Argument::Double, name: 'mech_vent_shared_precooling_efficiency', @@ -2900,7 +2902,7 @@ def makeArgument(name:, description: 'Efficiency of the preconditioning cooling equipment. Only used for a shared mechanical ventilation system. If not provided, assumes no precooling.', units: 'COP' ) - + args << makeArgument( type: Argument::Double, name: 'mech_vent_shared_precooling_fraction_cool_load_served', @@ -2909,7 +2911,7 @@ def makeArgument(name:, description: 'Fraction of cooling load introduced by the shared ventilation system that is met by the preconditioning cooling equipment. If not provided, assumes no precooling.', units: 'Frac' ) - + mech_vent_2_fan_type_choices = OpenStudio::StringVector.new mech_vent_2_fan_type_choices << Constants::None mech_vent_2_fan_type_choices << HPXML::MechVentTypeExhaust @@ -2920,13 +2922,13 @@ def makeArgument(name:, args << makeArgument( type: Argument::Choice, - name: 'mech_vent_2_fan_type', - choices: mech_vent_2_fan_type_choices, + name: 'mech_vent_2_fan_type', + choices: mech_vent_2_fan_type_choices, required: false, display_name: 'Mechanical Ventilation 2: Fan Type', description: "The type of the second mechanical ventilation. Use '#{Constants::None}' if there is no second mechanical ventilation system. If not provided, defaults to none." ) - + args << makeArgument( type: Argument::Double, name: 'mech_vent_2_flow_rate', @@ -2935,7 +2937,7 @@ def makeArgument(name:, description: 'The flow rate of the second mechanical ventilation.', units: 'CFM' ) - + args << makeArgument( type: Argument::Double, name: 'mech_vent_2_hours_in_operation', @@ -2944,16 +2946,16 @@ def makeArgument(name:, description: 'The hours in operation of the second mechanical ventilation.', units: 'hrs/day' ) - + args << makeArgument( type: Argument::Choice, - name: 'mech_vent_2_recovery_efficiency_type', - choices: mech_vent_recovery_efficiency_type_choices, + name: 'mech_vent_2_recovery_efficiency_type', + choices: mech_vent_recovery_efficiency_type_choices, required: false, display_name: 'Mechanical Ventilation 2: Total Recovery Efficiency Type', description: 'The total recovery efficiency type of the second mechanical ventilation.' ) - + args << makeArgument( type: Argument::Double, name: 'mech_vent_2_total_recovery_efficiency', @@ -2962,7 +2964,7 @@ def makeArgument(name:, description: "The Unadjusted or Adjusted total recovery efficiency of the second mechanical ventilation. Applies to #{HPXML::MechVentTypeERV}.", units: 'Frac' ) - + args << makeArgument( type: Argument::Double, name: 'mech_vent_2_sensible_recovery_efficiency', @@ -2971,7 +2973,7 @@ def makeArgument(name:, description: "The Unadjusted or Adjusted sensible recovery efficiency of the second mechanical ventilation. Applies to #{HPXML::MechVentTypeERV} and #{HPXML::MechVentTypeHRV}.", units: 'Frac' ) - + args << makeArgument( type: Argument::Double, name: 'mech_vent_2_fan_power', @@ -2980,107 +2982,107 @@ def makeArgument(name:, description: 'The fan power of the second mechanical ventilation.', units: 'W' ) - + args << makeArgument( type: Argument::Integer, name: 'kitchen_fans_quantity', required: false, display_name: 'Kitchen Fans: Quantity', - description: "The quantity of the kitchen fans.", + description: 'The quantity of the kitchen fans.', default_href: "HPXML Local Ventilation Fans", units: '#' ) - + args << makeArgument( type: Argument::Double, name: 'kitchen_fans_flow_rate', required: false, display_name: 'Kitchen Fans: Flow Rate', - description: "The flow rate of the kitchen fan.", + description: 'The flow rate of the kitchen fan.', default_href: "HPXML Local Ventilation Fans", units: 'CFM' ) - + args << makeArgument( type: Argument::Double, name: 'kitchen_fans_hours_in_operation', required: false, display_name: 'Kitchen Fans: Hours In Operation', - description: "The hours in operation of the kitchen fan.", + description: 'The hours in operation of the kitchen fan.', default_href: "HPXML Local Ventilation Fans", units: 'hrs/day' ) - + args << makeArgument( type: Argument::Double, name: 'kitchen_fans_power', required: false, display_name: 'Kitchen Fans: Fan Power', - description: "The fan power of the kitchen fan.", + description: 'The fan power of the kitchen fan.', default_href: "HPXML Local Ventilation Fans", units: 'W' ) - + args << makeArgument( type: Argument::Integer, name: 'kitchen_fans_start_hour', required: false, display_name: 'Kitchen Fans: Start Hour', - description: "The start hour of the kitchen fan.", + description: 'The start hour of the kitchen fan.', default_href: "HPXML Local Ventilation Fans", units: 'hr' ) - + args << makeArgument( type: Argument::Integer, name: 'bathroom_fans_quantity', required: false, display_name: 'Bathroom Fans: Quantity', - description: "The quantity of the bathroom fans.", + description: 'The quantity of the bathroom fans.', default_href: "HPXML Local Ventilation Fans", units: '#' ) - + args << makeArgument( type: Argument::Double, name: 'bathroom_fans_flow_rate', required: false, display_name: 'Bathroom Fans: Flow Rate', - description: "The flow rate of the bathroom fans.", + description: 'The flow rate of the bathroom fans.', default_href: "HPXML Local Ventilation Fans", units: 'CFM' ) - + args << makeArgument( type: Argument::Double, name: 'bathroom_fans_hours_in_operation', required: false, display_name: 'Bathroom Fans: Hours In Operation', - description: "The hours in operation of the bathroom fans.", + description: 'The hours in operation of the bathroom fans.', default_href: "HPXML Local Ventilation Fans", units: 'hrs/day' ) - + args << makeArgument( type: Argument::Double, name: 'bathroom_fans_power', required: false, display_name: 'Bathroom Fans: Fan Power', - description: "The fan power of the bathroom fans.", + description: 'The fan power of the bathroom fans.', default_href: "HPXML Local Ventilation Fans", units: 'W' ) - + args << makeArgument( type: Argument::Integer, name: 'bathroom_fans_start_hour', required: false, display_name: 'Bathroom Fans: Start Hour', - description: "The start hour of the bathroom fans.", + description: 'The start hour of the bathroom fans.', default_href: "HPXML Local Ventilation Fans", units: 'hr' ) - + args << makeArgument( name: 'whole_house_fan_present', type: Argument::Boolean, @@ -3088,27 +3090,27 @@ def makeArgument(name:, display_name: 'Whole House Fan: Present', description: 'Whether there is a whole house fan.' ) - + args << makeArgument( type: Argument::Double, - name: 'whole_house_fan_flow_rate' + name: 'whole_house_fan_flow_rate', required: false, display_name: 'Whole House Fan: Flow Rate', - description: "The flow rate of the whole house fan.", + description: 'The flow rate of the whole house fan.', default_href: "HPXML Whole House Fans", units: 'CFM' ) - + args << makeArgument( type: Argument::Double, - name: 'whole_house_fan_power' + name: 'whole_house_fan_power', required: false, display_name: 'Whole House Fan: Fan Power', - description: "The fan power of the whole house fan.", + description: 'The fan power of the whole house fan.', default_href: "HPXML Whole House Fans", units: 'W' ) - + water_heater_type_choices = OpenStudio::StringVector.new water_heater_type_choices << Constants::None water_heater_type_choices << HPXML::WaterHeaterTypeStorage @@ -3155,78 +3157,79 @@ def makeArgument(name:, args << makeArgument( type: Argument::Choice, - name: 'water_heater_type', - choices: water_heater_type_choices, + name: 'water_heater_type', + choices: water_heater_type_choices, required: true, display_name: 'Water Heater: Type', description: "The type of water heater. Use '#{Constants::None}' if there is no water heater." ) - + args << makeArgument( type: Argument::Choice, - name: 'water_heater_fuel_type', - choices: water_heater_fuel_choices, + name: 'water_heater_fuel_type', + choices: water_heater_fuel_choices, required: false, display_name: 'Water Heater: Fuel Type', description: "The fuel type of water heater. Ignored for #{HPXML::WaterHeaterTypeHeatPump}." ) - + args << makeArgument( type: Argument::Choice, - name: 'water_heater_location', - choices: water_heater_location_choices, + name: 'water_heater_location', + choices: water_heater_location_choices, required: false, display_name: 'Water Heater: Location', - description: "The location of water heater.", + description: 'The location of water heater.', default_href: "HPXML Water Heating Systems" ) - + args << makeArgument( type: Argument::Double, name: 'water_heater_tank_volume', required: false, display_name: 'Water Heater: Tank Volume', - description: "Nominal volume of water heater tank.", + description: 'Nominal volume of water heater tank.', default_href: "Conventional Storage, Heat Pump, Combi Boiler w/ Storage", units: 'gal' ) - + args << makeArgument( type: Argument::Choice, - name: 'water_heater_efficiency_type', - choices: water_heater_efficiency_type_choices, + name: 'water_heater_efficiency_type', + choices: water_heater_efficiency_type_choices, required: false, display_name: 'Water Heater: Efficiency Type', description: 'The efficiency type of water heater. Does not apply to space-heating boilers.' ) - + args << makeArgument( type: Argument::Double, name: 'water_heater_efficiency', required: false, - display_name: 'Water Heater: Efficiency') - description: 'Rated Energy Factor or Uniform Energy Factor. Does not apply to space-heating boilers.') - + display_name: 'Water Heater: Efficiency', + description: 'Rated Energy Factor or Uniform Energy Factor. Does not apply to space-heating boilers.' + ) + args << makeArgument( type: Argument::Choice, - name: 'water_heater_usage_bin', - choices: water_heater_usage_bin_choices, + name: 'water_heater_usage_bin', + choices: water_heater_usage_bin_choices, required: false, display_name: 'Water Heater: Usage Bin', description: "The usage of the water heater. Only applies if Efficiency Type is UniformEnergyFactor and Type is not #{HPXML::WaterHeaterTypeTankless}. Does not apply to space-heating boilers.", default_href: "Conventional Storage, Heat Pump" ) - + args << makeArgument( type: Argument::Double, name: 'water_heater_recovery_efficiency', required: false, display_name: 'Water Heater: Recovery Efficiency', - description: "Ratio of energy delivered to water heater to the energy content of the fuel consumed by the water heater. Only used for non-electric storage water heaters.", + description: 'Ratio of energy delivered to water heater to the energy content of the fuel consumed by the water heater. Only used for non-electric storage water heaters.', default_href: "Conventional Storage", units: 'Frac' ) - + args << makeArgument( type: Argument::Double, name: 'water_heater_heating_capacity', @@ -3236,7 +3239,7 @@ def makeArgument(name:, default_href: "Conventional Storage, Heat Pump", units: 'Btu/hr' ) - + args << makeArgument( type: Argument::Double, name: 'water_heater_backup_heating_capacity', @@ -3246,17 +3249,17 @@ def makeArgument(name:, default_href: "Heat Pump", units: 'Btu/hr' ) - + args << makeArgument( type: Argument::Double, name: 'water_heater_standby_loss', required: false, display_name: 'Water Heater: Standby Loss', - description: "The standby loss of water heater. Only applies to space-heating boilers.", + description: 'The standby loss of water heater. Only applies to space-heating boilers.', default_href: "Combi Boiler w/ Storage", units: 'F/hr' ) - + args << makeArgument( type: Argument::Double, name: 'water_heater_jacket_rvalue', @@ -3265,17 +3268,17 @@ def makeArgument(name:, description: "The jacket R-value of water heater. Doesn't apply to #{HPXML::WaterHeaterTypeTankless} or #{HPXML::WaterHeaterTypeCombiTankless}. If not provided, defaults to no jacket insulation.", units: 'h-ft^2-R/Btu' ) - + args << makeArgument( type: Argument::Double, name: 'water_heater_setpoint_temperature', required: false, display_name: 'Water Heater: Setpoint Temperature', - description: "The setpoint temperature of water heater.", + description: 'The setpoint temperature of water heater.', default_href: "HPXML Water Heating Systems", units: 'F' ) - + args << makeArgument( type: Argument::Integer, name: 'water_heater_num_bedrooms_served', @@ -3284,7 +3287,7 @@ def makeArgument(name:, description: "Number of bedrooms served (directly or indirectly) by the water heater. Only needed if #{HPXML::ResidentialTypeSFA} or #{HPXML::ResidentialTypeApartment} and it is a shared water heater serving multiple dwelling units. Used to apportion water heater tank losses to the unit.", units: '#' ) - + args << makeArgument( name: 'water_heater_uses_desuperheater', type: Argument::Boolean, @@ -3292,48 +3295,48 @@ def makeArgument(name:, display_name: 'Water Heater: Uses Desuperheater', description: "Requires that the dwelling unit has a #{HPXML::HVACTypeHeatPumpAirToAir}, #{HPXML::HVACTypeHeatPumpMiniSplit}, or #{HPXML::HVACTypeHeatPumpGroundToAir} heat pump or a #{HPXML::HVACTypeCentralAirConditioner} or #{HPXML::HVACTypeMiniSplitAirConditioner} air conditioner. If not provided, assumes no desuperheater." ) - + water_heater_tank_model_type_choices = OpenStudio::StringVector.new water_heater_tank_model_type_choices << HPXML::WaterHeaterTankModelTypeMixed water_heater_tank_model_type_choices << HPXML::WaterHeaterTankModelTypeStratified args << makeArgument( type: Argument::Choice, - name: 'water_heater_tank_model_type', - choices: water_heater_tank_model_type_choices, + name: 'water_heater_tank_model_type', + choices: water_heater_tank_model_type_choices, required: false, display_name: 'Water Heater: Tank Type', description: "Type of tank model to use. The '#{HPXML::WaterHeaterTankModelTypeStratified}' tank generally provide more accurate results, but may significantly increase run time. Applies only to #{HPXML::WaterHeaterTypeStorage}.", default_href: "Conventional Storage" ) - + water_heater_operating_mode_choices = OpenStudio::StringVector.new water_heater_operating_mode_choices << HPXML::WaterHeaterOperatingModeHybridAuto water_heater_operating_mode_choices << HPXML::WaterHeaterOperatingModeHeatPumpOnly args << makeArgument( type: Argument::Choice, - name: 'water_heater_operating_mode', - choices: water_heater_operating_mode_choices, + name: 'water_heater_operating_mode', + choices: water_heater_operating_mode_choices, required: false, display_name: 'Water Heater: Operating Mode', description: "The water heater operating mode. The '#{HPXML::WaterHeaterOperatingModeHeatPumpOnly}' option only uses the heat pump, while '#{HPXML::WaterHeaterOperatingModeHybridAuto}' allows the backup electric resistance to come on in high demand situations. This is ignored if a scheduled operating mode type is selected. Applies only to #{HPXML::WaterHeaterTypeHeatPump}.", default_href: "Heat Pump" ) - + hot_water_distribution_system_type_choices = OpenStudio::StringVector.new hot_water_distribution_system_type_choices << HPXML::DHWDistTypeStandard hot_water_distribution_system_type_choices << HPXML::DHWDistTypeRecirc args << makeArgument( type: Argument::Choice, - name: 'hot_water_distribution_system_type', - choices: hot_water_distribution_system_type_choices, + name: 'hot_water_distribution_system_type', + choices: hot_water_distribution_system_type_choices, required: true, display_name: 'Hot Water Distribution: System Type', description: 'The type of the hot water distribution system.' ) - + args << makeArgument( type: Argument::Double, name: 'hot_water_distribution_standard_piping_length', @@ -3343,7 +3346,7 @@ def makeArgument(name:, description: "If the distribution system is #{HPXML::DHWDistTypeStandard}, the length of the piping.", default_href: "Standard" ) - + recirculation_control_type_choices = OpenStudio::StringVector.new recirculation_control_type_choices << HPXML::DHWRecircControlTypeNone recirculation_control_type_choices << HPXML::DHWRecircControlTypeTimer @@ -3353,13 +3356,13 @@ def makeArgument(name:, args << makeArgument( type: Argument::Choice, - name: 'hot_water_distribution_recirc_control_type', - choices: recirculation_control_type_choices, + name: 'hot_water_distribution_recirc_control_type', + choices: recirculation_control_type_choices, required: false, display_name: 'Hot Water Distribution: Recirculation Control Type', description: "If the distribution system is #{HPXML::DHWDistTypeRecirc}, the type of hot water recirculation control, if any." ) - + args << makeArgument( type: Argument::Double, name: 'hot_water_distribution_recirc_piping_length', @@ -3369,7 +3372,7 @@ def makeArgument(name:, description: "If the distribution system is #{HPXML::DHWDistTypeRecirc}, the length of the recirculation piping.", default_href: "Recirculation (In-Unit)" ) - + args << makeArgument( type: Argument::Double, name: 'hot_water_distribution_recirc_branch_piping_length', @@ -3379,7 +3382,7 @@ def makeArgument(name:, description: "If the distribution system is #{HPXML::DHWDistTypeRecirc}, the length of the recirculation branch piping.", default_href: "Recirculation (In-Unit)" ) - + args << makeArgument( type: Argument::Double, name: 'hot_water_distribution_recirc_pump_power', @@ -3389,17 +3392,17 @@ def makeArgument(name:, description: "If the distribution system is #{HPXML::DHWDistTypeRecirc}, the recirculation pump power.", default_href: "Recirculation (In-Unit)" ) - + args << makeArgument( type: Argument::Double, name: 'hot_water_distribution_pipe_r', required: false, display_name: 'Hot Water Distribution: Pipe Insulation Nominal R-Value', units: 'h-ft^2-R/Btu', - description: "Nominal R-value of the pipe insulation.", + description: 'Nominal R-value of the pipe insulation.', default_href: "HPXML Hot Water Distribution" ) - + dwhr_facilities_connected_choices = OpenStudio::StringVector.new dwhr_facilities_connected_choices << Constants::None dwhr_facilities_connected_choices << HPXML::DWHRFacilitiesConnectedOne @@ -3407,13 +3410,13 @@ def makeArgument(name:, args << makeArgument( type: Argument::Choice, - name: 'dwhr_facilities_connected', - choices: dwhr_facilities_connected_choices, + name: 'dwhr_facilities_connected', + choices: dwhr_facilities_connected_choices, required: false, display_name: 'Drain Water Heat Recovery: Facilities Connected', description: "Which facilities are connected for the drain water heat recovery. Use '#{Constants::None}' if there is no drain water heat recovery system." ) - + args << makeArgument( name: 'dwhr_equal_flow', type: Argument::Boolean, @@ -3421,7 +3424,7 @@ def makeArgument(name:, display_name: 'Drain Water Heat Recovery: Equal Flow', description: 'Whether the drain water heat recovery has equal flow.' ) - + args << makeArgument( type: Argument::Double, name: 'dwhr_efficiency', @@ -3430,7 +3433,7 @@ def makeArgument(name:, units: 'Frac', description: 'The efficiency of the drain water heat recovery.' ) - + args << makeArgument( name: 'water_fixtures_shower_low_flow', type: Argument::Boolean, @@ -3438,7 +3441,7 @@ def makeArgument(name:, display_name: 'Hot Water Fixtures: Is Shower Low Flow', description: 'Whether the shower fixture is low flow. If not provided, defaults to false.' ) - + args << makeArgument( name: 'water_fixtures_sink_low_flow', type: Argument::Boolean, @@ -3446,25 +3449,25 @@ def makeArgument(name:, display_name: 'Hot Water Fixtures: Is Sink Low Flow', description: 'Whether the sink fixture is low flow. If not provided, defaults to false.' ) - + args << makeArgument( type: Argument::Double, name: 'water_fixtures_usage_multiplier', required: false, display_name: 'Hot Water Fixtures: Usage Multiplier', - description: "Multiplier on the hot water usage that can reflect, e.g., high/low usage occupants.", + description: 'Multiplier on the hot water usage that can reflect, e.g., high/low usage occupants.', default_href: "HPXML Water Fixtures" ) - + args << makeArgument( type: Argument::Double, name: 'general_water_use_usage_multiplier', required: false, display_name: 'General Water Use: Usage Multiplier', - description: "Multiplier on internal gains from general water use (floor mopping, shower evaporation, water films on showers, tubs & sinks surfaces, plant watering, etc.) that can reflect, e.g., high/low usage occupants.", + description: 'Multiplier on internal gains from general water use (floor mopping, shower evaporation, water films on showers, tubs & sinks surfaces, plant watering, etc.) that can reflect, e.g., high/low usage occupants.', default_href: "HPXML Building Occupancy" ) - + solar_thermal_system_type_choices = OpenStudio::StringVector.new solar_thermal_system_type_choices << Constants::None solar_thermal_system_type_choices << HPXML::SolarThermalSystemTypeHotWater @@ -3482,13 +3485,13 @@ def makeArgument(name:, args << makeArgument( type: Argument::Choice, - name: 'solar_thermal_system_type', - choices: solar_thermal_system_type_choices, + name: 'solar_thermal_system_type', + choices: solar_thermal_system_type_choices, required: false, display_name: 'Solar Thermal: System Type', description: "The type of solar thermal system. Use '#{Constants::None}' if there is no solar thermal system." ) - + args << makeArgument( type: Argument::Double, name: 'solar_thermal_collector_area', @@ -3497,25 +3500,25 @@ def makeArgument(name:, units: 'ft^2', description: 'The collector area of the solar thermal system.' ) - + args << makeArgument( type: Argument::Choice, - name: 'solar_thermal_collector_loop_type', - choices: solar_thermal_collector_loop_type_choices, + name: 'solar_thermal_collector_loop_type', + choices: solar_thermal_collector_loop_type_choices, required: false, display_name: 'Solar Thermal: Collector Loop Type', description: 'The collector loop type of the solar thermal system.' ) - + args << makeArgument( type: Argument::Choice, - name: 'solar_thermal_collector_type', - choices: solar_thermal_collector_type_choices, + name: 'solar_thermal_collector_type', + choices: solar_thermal_collector_type_choices, required: false, display_name: 'Solar Thermal: Collector Type', description: 'The collector type of the solar thermal system.' ) - + args << makeArgument( type: Argument::Double, name: 'solar_thermal_collector_azimuth', @@ -3524,7 +3527,7 @@ def makeArgument(name:, units: 'degrees', description: 'The collector azimuth of the solar thermal system. Azimuth is measured clockwise from north (e.g., North=0, East=90, South=180, West=270).' ) - + args << makeArgument( type: Argument::String, name: 'solar_thermal_collector_tilt', @@ -3533,7 +3536,7 @@ def makeArgument(name:, units: 'degrees', description: 'The collector tilt of the solar thermal system. Can also enter, e.g., RoofPitch, RoofPitch+20, Latitude, Latitude-15, etc.' ) - + args << makeArgument( type: Argument::Double, name: 'solar_thermal_collector_rated_optical_efficiency', @@ -3542,7 +3545,7 @@ def makeArgument(name:, units: 'Frac', description: 'The collector rated optical efficiency of the solar thermal system.' ) - + args << makeArgument( type: Argument::Double, name: 'solar_thermal_collector_rated_thermal_losses', @@ -3551,17 +3554,17 @@ def makeArgument(name:, units: 'Btu/hr-ft^2-R', description: 'The collector rated thermal losses of the solar thermal system.' ) - + args << makeArgument( type: Argument::Double, name: 'solar_thermal_storage_volume', required: false, display_name: 'Solar Thermal: Storage Volume', units: 'gal', - description: "The storage volume of the solar thermal system.", + description: 'The storage volume of the solar thermal system.', default_href: "Detailed Inputs" ) - + args << makeArgument( type: Argument::Double, name: 'solar_thermal_solar_fraction', @@ -3570,7 +3573,7 @@ def makeArgument(name:, units: 'Frac', description: 'The solar fraction of the solar thermal system. If provided, overrides all other solar thermal inputs.' ) - + pv_system_module_type_choices = OpenStudio::StringVector.new pv_system_module_type_choices << HPXML::PVModuleTypeStandard pv_system_module_type_choices << HPXML::PVModuleTypePremium @@ -3588,42 +3591,42 @@ def makeArgument(name:, args << makeArgument( name: 'pv_system_present', - type:: Argument::Boolean, + type: Argument::Boolean, required: false, display_name: 'PV System: Present', description: 'Whether there is a PV system present. If not provided, defaults to false.' ) - + args << makeArgument( type: Argument::Choice, - name: 'pv_system_module_type', - choices: pv_system_module_type_choices, + name: 'pv_system_module_type', + choices: pv_system_module_type_choices, required: false, display_name: 'PV System: Module Type', - description: "Module type of the PV system.", + description: 'Module type of the PV system.', default_href: "HPXML Photovoltaics" ) - + args << makeArgument( type: Argument::Choice, - name: 'pv_system_location', - choices: pv_system_location_choices, + name: 'pv_system_location', + choices: pv_system_location_choices, required: false, display_name: 'PV System: Location', - description: "Location of the PV system.", + description: 'Location of the PV system.', default_href: "HPXML Photovoltaics" ) - + args << makeArgument( type: Argument::Choice, - name: 'pv_system_tracking', - choices: pv_system_tracking_choices, + name: 'pv_system_tracking', + choices: pv_system_tracking_choices, required: false, display_name: 'PV System: Tracking', - description: "Type of tracking for the PV system.", + description: 'Type of tracking for the PV system.', default_href: "HPXML Photovoltaics" ) - + args << makeArgument( type: Argument::Double, name: 'pv_system_array_azimuth', @@ -3632,7 +3635,7 @@ def makeArgument(name:, units: 'degrees', description: 'Array azimuth of the PV system. Azimuth is measured clockwise from north (e.g., North=0, East=90, South=180, West=270).' ) - + args << makeArgument( type: Argument::String, name: 'pv_system_array_tilt', @@ -3641,7 +3644,7 @@ def makeArgument(name:, units: 'degrees', description: 'Array tilt of the PV system. Can also enter, e.g., RoofPitch, RoofPitch+20, Latitude, Latitude-15, etc.' ) - + args << makeArgument( type: Argument::Double, name: 'pv_system_max_power_output', @@ -3650,27 +3653,27 @@ def makeArgument(name:, units: 'W', description: 'Maximum power output of the PV system. For a shared system, this is the total building maximum power output.' ) - + args << makeArgument( type: Argument::Double, name: 'pv_system_inverter_efficiency', required: false, display_name: 'PV System: Inverter Efficiency', units: 'Frac', - description: "Inverter efficiency of the PV system. If there are two PV systems, this will apply to both.", + description: 'Inverter efficiency of the PV system. If there are two PV systems, this will apply to both.', default_href: "HPXML Photovoltaics" ) - + args << makeArgument( type: Argument::Double, name: 'pv_system_system_losses_fraction', required: false, display_name: 'PV System: System Losses Fraction', units: 'Frac', - description: "System losses fraction of the PV system. If there are two PV systems, this will apply to both.", + description: 'System losses fraction of the PV system. If there are two PV systems, this will apply to both.', default_href: "HPXML Photovoltaics" ) - + args << makeArgument( type: Argument::Integer, name: 'pv_system_num_bedrooms_served', @@ -3679,7 +3682,7 @@ def makeArgument(name:, description: "Number of bedrooms served by PV system. Only needed if #{HPXML::ResidentialTypeSFA} or #{HPXML::ResidentialTypeApartment} and it is a shared PV system serving multiple dwelling units. Used to apportion PV generation to the unit of a SFA/MF building. If there are two PV systems, this will apply to both.", units: '#' ) - + args << makeArgument( name: 'pv_system_2_present', type: Argument::Boolean, @@ -3687,37 +3690,37 @@ def makeArgument(name:, display_name: 'PV System 2: Present', description: 'Whether there is a second PV system present. If not provided, defaults to false.' ) - + args << makeArgument( type: Argument::Choice, - name: 'pv_system_2_module_type', - choices: pv_system_module_type_choices, + name: 'pv_system_2_module_type', + choices: pv_system_module_type_choices, required: false, display_name: 'PV System 2: Module Type', - description: "Module type of the second PV system.", + description: 'Module type of the second PV system.', default_href: "HPXML Photovoltaics" ) - + args << makeArgument( type: Argument::Choice, - name: 'pv_system_2_location', - choices: pv_system_location_choices, + name: 'pv_system_2_location', + choices: pv_system_location_choices, required: false, display_name: 'PV System 2: Location', - description: "Location of the second PV system.", + description: 'Location of the second PV system.', default_href: "HPXML Photovoltaics" ) - + args << makeArgument( type: Argument::Choice, - name: 'pv_system_2_tracking', - choices: pv_system_tracking_choices, + name: 'pv_system_2_tracking', + choices: pv_system_tracking_choices, required: false, display_name: 'PV System 2: Tracking', - description: "Type of tracking for the second PV system.", + description: 'Type of tracking for the second PV system.', default_href: "HPXML Photovoltaics" ) - + args << makeArgument( type: Argument::Double, name: 'pv_system_2_array_azimuth', @@ -3726,7 +3729,7 @@ def makeArgument(name:, units: 'degrees', description: 'Array azimuth of the second PV system. Azimuth is measured clockwise from north (e.g., North=0, East=90, South=180, West=270).' ) - + args << makeArgument( type: Argument::String, name: 'pv_system_2_array_tilt', @@ -3735,7 +3738,7 @@ def makeArgument(name:, units: 'degrees', description: 'Array tilt of the second PV system. Can also enter, e.g., RoofPitch, RoofPitch+20, Latitude, Latitude-15, etc.' ) - + args << makeArgument( type: Argument::Double, name: 'pv_system_2_max_power_output', @@ -3766,57 +3769,57 @@ def makeArgument(name:, display_name: 'Battery: Present', description: 'Whether there is a lithium ion battery present. If not provided, defaults to false.' ) - + args << makeArgument( type: Argument::Choice, - name: 'battery_location', - choices: battery_location_choices, + name: 'battery_location', + choices: battery_location_choices, required: false, display_name: 'Battery: Location', - description: "The space type for the lithium ion battery location.", + description: 'The space type for the lithium ion battery location.', default_href: "HPXML Batteries" ) - + args << makeArgument( type: Argument::Double, name: 'battery_power', required: false, display_name: 'Battery: Rated Power Output', - description: "The rated power output of the lithium ion battery.", + description: 'The rated power output of the lithium ion battery.', default_href: "HPXML Batteries", units: 'W' ) - + args << makeArgument( type: Argument::Double, name: 'battery_capacity', required: false, display_name: 'Battery: Nominal Capacity', - description: "The nominal capacity of the lithium ion battery.", + description: 'The nominal capacity of the lithium ion battery.', default_href: "HPXML Batteries", units: 'kWh' ) - + args << makeArgument( type: Argument::Double, name: 'battery_usable_capacity', required: false, display_name: 'Battery: Usable Capacity', - description: "The usable capacity of the lithium ion battery.", + description: 'The usable capacity of the lithium ion battery.', default_href: "HPXML Batteries", units: 'kWh' ) - + args << makeArgument( type: Argument::Double, name: 'battery_round_trip_efficiency', required: false, display_name: 'Battery: Round Trip Efficiency', - description: "The round trip efficiency of the lithium ion battery.", + description: 'The round trip efficiency of the lithium ion battery.', default_href: "HPXML Batteries", units: 'Frac' ) - + args << makeArgument( type: Argument::Integer, name: 'battery_num_bedrooms_served', @@ -3825,7 +3828,7 @@ def makeArgument(name:, description: "Number of bedrooms served by the lithium ion battery. Only needed if #{HPXML::ResidentialTypeSFA} or #{HPXML::ResidentialTypeApartment} and it is a shared battery serving multiple dwelling units. Used to apportion battery charging/discharging to the unit of a SFA/MF building.", units: '#' ) - + args << makeArgument( name: 'lighting_present', type: Argument::Boolean, @@ -3833,7 +3836,7 @@ def makeArgument(name:, display_name: 'Lighting: Present', description: 'Whether there is lighting energy use.' ) - + args << makeArgument( type: Argument::Double, name: 'lighting_interior_fraction_cfl', @@ -3841,7 +3844,7 @@ def makeArgument(name:, display_name: 'Lighting: Interior Fraction CFL', description: 'Fraction of all lamps (interior) that are compact fluorescent. Lighting not specified as CFL, LFL, or LED is assumed to be incandescent.' ) - + args << makeArgument( type: Argument::Double, name: 'lighting_interior_fraction_lfl', @@ -3849,7 +3852,7 @@ def makeArgument(name:, display_name: 'Lighting: Interior Fraction LFL', description: 'Fraction of all lamps (interior) that are linear fluorescent. Lighting not specified as CFL, LFL, or LED is assumed to be incandescent.' ) - + args << makeArgument( type: Argument::Double, name: 'lighting_interior_fraction_led', @@ -3857,16 +3860,16 @@ def makeArgument(name:, display_name: 'Lighting: Interior Fraction LED', description: 'Fraction of all lamps (interior) that are light emitting diodes. Lighting not specified as CFL, LFL, or LED is assumed to be incandescent.' ) - + args << makeArgument( type: Argument::Double, name: 'lighting_interior_usage_multiplier', required: false, display_name: 'Lighting: Interior Usage Multiplier', - description: "Multiplier on the lighting energy usage (interior) that can reflect, e.g., high/low usage occupants.", + description: 'Multiplier on the lighting energy usage (interior) that can reflect, e.g., high/low usage occupants.', default_href: "HPXML Lighting" ) - + args << makeArgument( type: Argument::Double, name: 'lighting_exterior_fraction_cfl', @@ -3874,7 +3877,7 @@ def makeArgument(name:, display_name: 'Lighting: Exterior Fraction CFL', description: 'Fraction of all lamps (exterior) that are compact fluorescent. Lighting not specified as CFL, LFL, or LED is assumed to be incandescent.' ) - + args << makeArgument( type: Argument::Double, name: 'lighting_exterior_fraction_lfl', @@ -3882,7 +3885,7 @@ def makeArgument(name:, display_name: 'Lighting: Exterior Fraction LFL', description: 'Fraction of all lamps (exterior) that are linear fluorescent. Lighting not specified as CFL, LFL, or LED is assumed to be incandescent.' ) - + args << makeArgument( type: Argument::Double, name: 'lighting_exterior_fraction_led', @@ -3890,16 +3893,16 @@ def makeArgument(name:, display_name: 'Lighting: Exterior Fraction LED', description: 'Fraction of all lamps (exterior) that are light emitting diodes. Lighting not specified as CFL, LFL, or LED is assumed to be incandescent.' ) - + args << makeArgument( type: Argument::Double, name: 'lighting_exterior_usage_multiplier', required: false, display_name: 'Lighting: Exterior Usage Multiplier', - description: "Multiplier on the lighting energy usage (exterior) that can reflect, e.g., high/low usage occupants.", + description: 'Multiplier on the lighting energy usage (exterior) that can reflect, e.g., high/low usage occupants.', default_href: "HPXML Lighting" ) - + args << makeArgument( type: Argument::Double, name: 'lighting_garage_fraction_cfl', @@ -3907,7 +3910,7 @@ def makeArgument(name:, display_name: 'Lighting: Garage Fraction CFL', description: 'Fraction of all lamps (garage) that are compact fluorescent. Lighting not specified as CFL, LFL, or LED is assumed to be incandescent.' ) - + args << makeArgument( type: Argument::Double, name: 'lighting_garage_fraction_lfl', @@ -3915,7 +3918,7 @@ def makeArgument(name:, display_name: 'Lighting: Garage Fraction LFL', description: 'Fraction of all lamps (garage) that are linear fluorescent. Lighting not specified as CFL, LFL, or LED is assumed to be incandescent.' ) - + args << makeArgument( type: Argument::Double, name: 'lighting_garage_fraction_led', @@ -3923,16 +3926,16 @@ def makeArgument(name:, display_name: 'Lighting: Garage Fraction LED', description: 'Fraction of all lamps (garage) that are light emitting diodes. Lighting not specified as CFL, LFL, or LED is assumed to be incandescent.' ) - + args << makeArgument( type: Argument::Double, name: 'lighting_garage_usage_multiplier', required: false, display_name: 'Lighting: Garage Usage Multiplier', - description: "Multiplier on the lighting energy usage (garage) that can reflect, e.g., high/low usage occupants.", + description: 'Multiplier on the lighting energy usage (garage) that can reflect, e.g., high/low usage occupants.', default_href: "HPXML Lighting" ) - + args << makeArgument( name: 'holiday_lighting_present', type: Argument::Boolean, @@ -3940,17 +3943,17 @@ def makeArgument(name:, display_name: 'Holiday Lighting: Present', description: 'Whether there is holiday lighting. If not provided, defaults to false.' ) - + args << makeArgument( type: Argument::Double, name: 'holiday_lighting_daily_kwh', required: false, display_name: 'Holiday Lighting: Daily Consumption', units: 'kWh/day', - description: "The daily energy consumption for holiday lighting (exterior).", + description: 'The daily energy consumption for holiday lighting (exterior).', default_href: "HPXML Lighting" ) - + args << makeArgument( type: Argument::String, name: 'holiday_lighting_period', @@ -3959,7 +3962,7 @@ def makeArgument(name:, description: "Enter a date range like 'Nov 25 - Jan 5'.", default_href: "HPXML Lighting" ) - + dehumidifier_type_choices = OpenStudio::StringVector.new dehumidifier_type_choices << Constants::None dehumidifier_type_choices << HPXML::DehumidifierTypePortable @@ -3971,22 +3974,22 @@ def makeArgument(name:, args << makeArgument( type: Argument::Choice, - name: 'dehumidifier_type', - choices: dehumidifier_type_choices, + name: 'dehumidifier_type', + choices: dehumidifier_type_choices, required: false, display_name: 'Dehumidifier: Type', description: 'The type of dehumidifier. If not provided, defaults to none.' ) - + args << makeArgument( type: Argument::Choice, - name: 'dehumidifier_efficiency_type', - choices: dehumidifier_efficiency_type_choices, + name: 'dehumidifier_efficiency_type', + choices: dehumidifier_efficiency_type_choices, required: false, display_name: 'Dehumidifier: Efficiency Type', description: 'The efficiency type of dehumidifier.' ) - + args << makeArgument( type: Argument::Double, name: 'dehumidifier_efficiency', @@ -3995,7 +3998,7 @@ def makeArgument(name:, units: 'liters/kWh', description: 'The efficiency of the dehumidifier.' ) - + args << makeArgument( type: Argument::Double, name: 'dehumidifier_capacity', @@ -4004,7 +4007,7 @@ def makeArgument(name:, description: 'The capacity (water removal rate) of the dehumidifier.', units: 'pint/day' ) - + args << makeArgument( type: Argument::Double, name: 'dehumidifier_rh_setpoint', @@ -4013,7 +4016,7 @@ def makeArgument(name:, description: 'The relative humidity setpoint of the dehumidifier.', units: 'Frac' ) - + args << makeArgument( type: Argument::Double, name: 'dehumidifier_fraction_dehumidification_load_served', @@ -4044,86 +4047,86 @@ def makeArgument(name:, display_name: 'Clothes Washer: Present', description: 'Whether there is a clothes washer present.' ) - + args << makeArgument( type: Argument::Choice, - name: 'clothes_washer_location', - choices: appliance_location_choices, + name: 'clothes_washer_location', + choices: appliance_location_choices, required: false, display_name: 'Clothes Washer: Location', - description: "The space type for the clothes washer location.", + description: 'The space type for the clothes washer location.', default_href: "HPXML Clothes Washer" ) - + args << makeArgument( type: Argument::Choice, - name: 'clothes_washer_efficiency_type', - choices: clothes_washer_efficiency_type_choices, + name: 'clothes_washer_efficiency_type', + choices: clothes_washer_efficiency_type_choices, required: false, display_name: 'Clothes Washer: Efficiency Type', description: 'The efficiency type of the clothes washer.' ) - + args << makeArgument( type: Argument::Double, name: 'clothes_washer_efficiency', required: false, display_name: 'Clothes Washer: Efficiency', units: 'ft^3/kWh-cyc', - description: "The efficiency of the clothes washer.", + description: 'The efficiency of the clothes washer.', default_href: "HPXML Clothes Washer" ) - + args << makeArgument( type: Argument::Double, name: 'clothes_washer_rated_annual_kwh', required: false, display_name: 'Clothes Washer: Rated Annual Consumption', units: 'kWh/yr', - description: "The annual energy consumed by the clothes washer, as rated, obtained from the EnergyGuide label. This includes both the appliance electricity consumption and the energy required for water heating.", + description: 'The annual energy consumed by the clothes washer, as rated, obtained from the EnergyGuide label. This includes both the appliance electricity consumption and the energy required for water heating.', default_href: "HPXML Clothes Washer" ) - + args << makeArgument( type: Argument::Double, name: 'clothes_washer_label_electric_rate', required: false, display_name: 'Clothes Washer: Label Electric Rate', units: '$/kWh', - description: "The annual energy consumed by the clothes washer, as rated, obtained from the EnergyGuide label. This includes both the appliance electricity consumption and the energy required for water heating.", + description: 'The annual energy consumed by the clothes washer, as rated, obtained from the EnergyGuide label. This includes both the appliance electricity consumption and the energy required for water heating.', default_href: "HPXML Clothes Washer" ) - + args << makeArgument( type: Argument::Double, name: 'clothes_washer_label_gas_rate', required: false, display_name: 'Clothes Washer: Label Gas Rate', units: '$/therm', - description: "The annual energy consumed by the clothes washer, as rated, obtained from the EnergyGuide label. This includes both the appliance electricity consumption and the energy required for water heating.", + description: 'The annual energy consumed by the clothes washer, as rated, obtained from the EnergyGuide label. This includes both the appliance electricity consumption and the energy required for water heating.', default_href: "HPXML Clothes Washer" ) - + args << makeArgument( type: Argument::Double, name: 'clothes_washer_label_annual_gas_cost', required: false, display_name: 'Clothes Washer: Label Annual Cost with Gas DHW', units: '$', - description: "The annual cost of using the system under test conditions. Input is obtained from the EnergyGuide label.", + description: 'The annual cost of using the system under test conditions. Input is obtained from the EnergyGuide label.', default_href: "HPXML Clothes Washer" ) - + args << makeArgument( type: Argument::Double, name: 'clothes_washer_label_usage', required: false, display_name: 'Clothes Washer: Label Usage', units: 'cyc/wk', - description: "The clothes washer loads per week.", + description: 'The clothes washer loads per week.', default_href: "HPXML Clothes Washer" ) - + args << makeArgument( type: Argument::Double, name: 'clothes_washer_capacity', @@ -4133,16 +4136,16 @@ def makeArgument(name:, description: "Volume of the washer drum. Obtained from the EnergyStar website or the manufacturer's literature.", default_href: "HPXML Clothes Washer" ) - + args << makeArgument( type: Argument::Double, name: 'clothes_washer_usage_multiplier', required: false, display_name: 'Clothes Washer: Usage Multiplier', - description: "Multiplier on the clothes washer energy and hot water usage that can reflect, e.g., high/low usage occupants.", + description: 'Multiplier on the clothes washer energy and hot water usage that can reflect, e.g., high/low usage occupants.', default_href: "HPXML Clothes Washer" ) - + args << makeArgument( name: 'clothes_dryer_present', type: Argument::Boolean, @@ -4150,17 +4153,17 @@ def makeArgument(name:, display_name: 'Clothes Dryer: Present', description: 'Whether there is a clothes dryer present.' ) - + args << makeArgument( type: Argument::Choice, - name: 'clothes_dryer_location', - choices: appliance_location_choices, + name: 'clothes_dryer_location', + choices: appliance_location_choices, required: false, display_name: 'Clothes Dryer: Location', - description: "The space type for the clothes dryer location.", + description: 'The space type for the clothes dryer location.', default_href: "HPXML Clothes Dryer" ) - + clothes_dryer_fuel_choices = OpenStudio::StringVector.new clothes_dryer_fuel_choices << HPXML::FuelTypeElectricity clothes_dryer_fuel_choices << HPXML::FuelTypeNaturalGas @@ -4175,48 +4178,48 @@ def makeArgument(name:, args << makeArgument( type: Argument::Choice, - name: 'clothes_dryer_fuel_type', - choices: clothes_dryer_fuel_choices, + name: 'clothes_dryer_fuel_type', + choices: clothes_dryer_fuel_choices, required: false, display_name: 'Clothes Dryer: Fuel Type', description: 'Type of fuel used by the clothes dryer.' ) - + args << makeArgument( type: Argument::Choice, - name: 'clothes_dryer_efficiency_type', - choices: clothes_dryer_efficiency_type_choices, + name: 'clothes_dryer_efficiency_type', + choices: clothes_dryer_efficiency_type_choices, required: false, display_name: 'Clothes Dryer: Efficiency Type', description: 'The efficiency type of the clothes dryer.' ) - + args << makeArgument( type: Argument::Double, name: 'clothes_dryer_efficiency', required: false, display_name: 'Clothes Dryer: Efficiency', units: 'lb/kWh', - description: "The efficiency of the clothes dryer.", + description: 'The efficiency of the clothes dryer.', default_href: "HPXML Clothes Dryer" ) - + args << makeArgument( type: Argument::Double, name: 'clothes_dryer_vented_flow_rate', required: false, display_name: 'Clothes Dryer: Vented Flow Rate', - description: "The exhaust flow rate of the vented clothes dryer.", + description: 'The exhaust flow rate of the vented clothes dryer.', default_href: "HPXML Clothes Dryer", units: 'CFM' ) - + args << makeArgument( type: Argument::Double, name: 'clothes_dryer_usage_multiplier', required: false, display_name: 'Clothes Dryer: Usage Multiplier', - description: "Multiplier on the clothes dryer energy usage that can reflect, e.g., high/low usage occupants.", + description: 'Multiplier on the clothes dryer energy usage that can reflect, e.g., high/low usage occupants.', default_href: "HPXML Clothes Dryer" ) @@ -4227,14 +4230,14 @@ def makeArgument(name:, display_name: 'Dishwasher: Present', description: 'Whether there is a dishwasher present.' ) - + args << makeArgument( type: Argument::Choice, - name: 'dishwasher_location', - choices: appliance_location_choices, + name: 'dishwasher_location', + choices: appliance_location_choices, required: false, display_name: 'Dishwasher: Location', - description: "The space type for the dishwasher location.", + description: 'The space type for the dishwasher location.', default_href: "HPXML Dishwasher" ) @@ -4244,63 +4247,63 @@ def makeArgument(name:, args << makeArgument( type: Argument::Choice, - name: 'dishwasher_efficiency_type', - choices: dishwasher_efficiency_type_choices, + name: 'dishwasher_efficiency_type', + choices: dishwasher_efficiency_type_choices, required: false, display_name: 'Dishwasher: Efficiency Type', description: 'The efficiency type of dishwasher.' ) - + args << makeArgument( type: Argument::Double, name: 'dishwasher_efficiency', required: false, display_name: 'Dishwasher: Efficiency', units: 'RatedAnnualkWh or EnergyFactor', - description: "The efficiency of the dishwasher.", + description: 'The efficiency of the dishwasher.', default_href: "HPXML Dishwasher" ) - + args << makeArgument( type: Argument::Double, name: 'dishwasher_label_electric_rate', required: false, display_name: 'Dishwasher: Label Electric Rate', units: '$/kWh', - description: "The label electric rate of the dishwasher.", + description: 'The label electric rate of the dishwasher.', default_href: "HPXML Dishwasher" ) - + args << makeArgument( type: Argument::Double, name: 'dishwasher_label_gas_rate', required: false, display_name: 'Dishwasher: Label Gas Rate', units: '$/therm', - description: "The label gas rate of the dishwasher.", + description: 'The label gas rate of the dishwasher.', default_href: "HPXML Dishwasher" ) - + args << makeArgument( type: Argument::Double, name: 'dishwasher_label_annual_gas_cost', required: false, display_name: 'Dishwasher: Label Annual Gas Cost', units: '$', - description: "The label annual gas cost of the dishwasher.", + description: 'The label annual gas cost of the dishwasher.', default_href: "HPXML Dishwasher" ) - + args << makeArgument( type: Argument::Double, name: 'dishwasher_label_usage', required: false, display_name: 'Dishwasher: Label Usage', units: 'cyc/wk', - description: "The dishwasher loads per week.", + description: 'The dishwasher loads per week.', default_href: "HPXML Dishwasher" ) - + args << makeArgument( type: Argument::Integer, name: 'dishwasher_place_setting_capacity', @@ -4310,16 +4313,16 @@ def makeArgument(name:, description: "The number of place settings for the unit. Data obtained from manufacturer's literature.", default_href: "HPXML Dishwasher" ) - + args << makeArgument( type: Argument::Double, name: 'dishwasher_usage_multiplier', required: false, display_name: 'Dishwasher: Usage Multiplier', - description: "Multiplier on the dishwasher energy usage that can reflect, e.g., high/low usage occupants.", + description: 'Multiplier on the dishwasher energy usage that can reflect, e.g., high/low usage occupants.', default_href: "HPXML Dishwasher" ) - + args << makeArgument( name: 'refrigerator_present', type: Argument::Boolean, @@ -4327,36 +4330,36 @@ def makeArgument(name:, display_name: 'Refrigerator: Present', description: 'Whether there is a refrigerator present.' ) - + args << makeArgument( type: Argument::Choice, - name: 'refrigerator_location', - choices: appliance_location_choices, + name: 'refrigerator_location', + choices: appliance_location_choices, required: false, display_name: 'Refrigerator: Location', - description: "The space type for the refrigerator location.", + description: 'The space type for the refrigerator location.', default_href: "HPXML Refrigerators" ) - + args << makeArgument( type: Argument::Double, name: 'refrigerator_rated_annual_kwh', required: false, display_name: 'Refrigerator: Rated Annual Consumption', units: 'kWh/yr', - description: "The EnergyGuide rated annual energy consumption for a refrigerator.", + description: 'The EnergyGuide rated annual energy consumption for a refrigerator.', default_href: "HPXML Refrigerators" ) - + args << makeArgument( type: Argument::Double, name: 'refrigerator_usage_multiplier', required: false, display_name: 'Refrigerator: Usage Multiplier', - description: "Multiplier on the refrigerator energy usage that can reflect, e.g., high/low usage occupants.", + description: 'Multiplier on the refrigerator energy usage that can reflect, e.g., high/low usage occupants.', default_href: "HPXML Refrigerators" ) - + args << makeArgument( name: 'extra_refrigerator_present', type: Argument::Boolean, @@ -4364,36 +4367,36 @@ def makeArgument(name:, display_name: 'Extra Refrigerator: Present', description: 'Whether there is an extra refrigerator present. If not provided, defaults to false.' ) - + args << makeArgument( type: Argument::Choice, - name: 'extra_refrigerator_location', - choices: appliance_location_choices, + name: 'extra_refrigerator_location', + choices: appliance_location_choices, required: false, display_name: 'Extra Refrigerator: Location', - description: "The space type for the extra refrigerator location.", + description: 'The space type for the extra refrigerator location.', default_href: "HPXML Refrigerators" ) - + args << makeArgument( type: Argument::Double, name: 'extra_refrigerator_rated_annual_kwh', required: false, display_name: 'Extra Refrigerator: Rated Annual Consumption', units: 'kWh/yr', - description: "The EnergyGuide rated annual energy consumption for an extra refrigerator.", + description: 'The EnergyGuide rated annual energy consumption for an extra refrigerator.', default_href: "HPXML Refrigerators" ) - + args << makeArgument( type: Argument::Double, name: 'extra_refrigerator_usage_multiplier', required: false, display_name: 'Extra Refrigerator: Usage Multiplier', - description: "Multiplier on the extra refrigerator energy usage that can reflect, e.g., high/low usage occupants.", + description: 'Multiplier on the extra refrigerator energy usage that can reflect, e.g., high/low usage occupants.', default_href: "HPXML Refrigerators" ) - + args << makeArgument( name: 'freezer_present', type: Argument::Boolean, @@ -4401,36 +4404,36 @@ def makeArgument(name:, display_name: 'Freezer: Present', description: 'Whether there is a freezer present. If not provided, defaults to false.' ) - + args << makeArgument( type: Argument::Choice, - name: 'freezer_location', - choices: appliance_location_choices, + name: 'freezer_location', + choices: appliance_location_choices, required: false, display_name: 'Freezer: Location', - description: "The space type for the freezer location.", + description: 'The space type for the freezer location.', default_href: "HPXML Freezers" ) - + args << makeArgument( type: Argument::Double, name: 'freezer_rated_annual_kwh', required: false, display_name: 'Freezer: Rated Annual Consumption', units: 'kWh/yr', - description: "The EnergyGuide rated annual energy consumption for a freezer.", + description: 'The EnergyGuide rated annual energy consumption for a freezer.', default_href: "HPXML Freezers" ) - + args << makeArgument( type: Argument::Double, name: 'freezer_usage_multiplier', required: false, display_name: 'Freezer: Usage Multiplier', - description: "Multiplier on the freezer energy usage that can reflect, e.g., high/low usage occupants.", + description: 'Multiplier on the freezer energy usage that can reflect, e.g., high/low usage occupants.', default_href: "HPXML Freezers" ) - + cooking_range_oven_fuel_choices = OpenStudio::StringVector.new cooking_range_oven_fuel_choices << HPXML::FuelTypeElectricity cooking_range_oven_fuel_choices << HPXML::FuelTypeNaturalGas @@ -4446,53 +4449,53 @@ def makeArgument(name:, display_name: 'Cooking Range/Oven: Present', description: 'Whether there is a cooking range/oven present.' ) - + args << makeArgument( type: Argument::Choice, - name: 'cooking_range_oven_location', - choices: appliance_location_choices, + name: 'cooking_range_oven_location', + choices: appliance_location_choices, required: false, display_name: 'Cooking Range/Oven: Location', - description: "The space type for the cooking range/oven location.", + description: 'The space type for the cooking range/oven location.', default_href: "HPXML Cooking Range/Oven" ) - + args << makeArgument( type: Argument::Choice, - name: 'cooking_range_oven_fuel_type', - choices: cooking_range_oven_fuel_choices, + name: 'cooking_range_oven_fuel_type', + choices: cooking_range_oven_fuel_choices, required: false, display_name: 'Cooking Range/Oven: Fuel Type', description: 'Type of fuel used by the cooking range/oven.' ) - + args << makeArgument( name: 'cooking_range_oven_is_induction', type: Argument::Boolean, required: false, display_name: 'Cooking Range/Oven: Is Induction', - description: "Whether the cooking range is induction.", + description: 'Whether the cooking range is induction.', default_href: "HPXML Cooking Range/Oven" ) - + args << makeArgument( name: 'cooking_range_oven_is_convection', type: Argument::Boolean, required: false, display_name: 'Cooking Range/Oven: Is Convection', - description: "Whether the oven is convection.", + description: 'Whether the oven is convection.', default_href: "HPXML Cooking Range/Oven" ) - + args << makeArgument( type: Argument::Double, name: 'cooking_range_oven_usage_multiplier', required: false, display_name: 'Cooking Range/Oven: Usage Multiplier', - description: "Multiplier on the cooking range/oven energy usage that can reflect, e.g., high/low usage occupants.", + description: 'Multiplier on the cooking range/oven energy usage that can reflect, e.g., high/low usage occupants.', default_href: "HPXML Cooking Range/Oven" ) - + args << makeArgument( name: 'ceiling_fan_present', type: Argument::Boolean, @@ -4500,47 +4503,47 @@ def makeArgument(name:, display_name: 'Ceiling Fan: Present', description: 'Whether there are any ceiling fans.' ) - + args << makeArgument( type: Argument::Double, name: 'ceiling_fan_label_energy_use', required: false, display_name: 'Ceiling Fan: Label Energy Use', units: 'W', - description: "The label average energy use of the ceiling fan(s).", + description: 'The label average energy use of the ceiling fan(s).', default_href: "HPXML Ceiling Fans" ) - + args << makeArgument( type: Argument::Double, name: 'ceiling_fan_efficiency', required: false, display_name: 'Ceiling Fan: Efficiency', units: 'CFM/W', - description: "The efficiency rating of the ceiling fan(s) at medium speed. Only used if Label Energy Use not provided.", + description: 'The efficiency rating of the ceiling fan(s) at medium speed. Only used if Label Energy Use not provided.', default_href: "HPXML Ceiling Fans" ) - + args << makeArgument( type: Argument::Integer, name: 'ceiling_fan_quantity', required: false, display_name: 'Ceiling Fan: Quantity', units: '#', - description: "Total number of ceiling fans.", + description: 'Total number of ceiling fans.', default_href: "HPXML Ceiling Fans" ) - + args << makeArgument( type: Argument::Double, name: 'ceiling_fan_cooling_setpoint_temp_offset', required: false, display_name: 'Ceiling Fan: Cooling Setpoint Temperature Offset', units: 'F', - description: "The cooling setpoint temperature offset during months when the ceiling fans are operating. Only applies if ceiling fan quantity is greater than zero.", + description: 'The cooling setpoint temperature offset during months when the ceiling fans are operating. Only applies if ceiling fan quantity is greater than zero.', default_href: "HPXML Ceiling Fans" ) - + args << makeArgument( name: 'misc_plug_loads_television_present', type: Argument::Boolean, @@ -4548,36 +4551,36 @@ def makeArgument(name:, display_name: 'Misc Plug Loads: Television Present', description: 'Whether there are televisions.' ) - + args << makeArgument( type: Argument::Double, name: 'misc_plug_loads_television_annual_kwh', required: false, display_name: 'Misc Plug Loads: Television Annual kWh', - description: "The annual energy consumption of the television plug loads.", + description: 'The annual energy consumption of the television plug loads.', default_href: "HPXML Plug Loads", units: 'kWh/yr' ) - + args << makeArgument( type: Argument::Double, name: 'misc_plug_loads_television_usage_multiplier', required: false, display_name: 'Misc Plug Loads: Television Usage Multiplier', - description: "Multiplier on the television energy usage that can reflect, e.g., high/low usage occupants.", + description: 'Multiplier on the television energy usage that can reflect, e.g., high/low usage occupants.', default_href: "HPXML Plug Loads" ) - + args << makeArgument( type: Argument::Double, name: 'misc_plug_loads_other_annual_kwh', required: false, display_name: 'Misc Plug Loads: Other Annual kWh', - description: "The annual energy consumption of the other residual plug loads.", + description: 'The annual energy consumption of the other residual plug loads.', default_href: "HPXML Plug Loads", units: 'kWh/yr' ) - + args << makeArgument( type: Argument::Double, name: 'misc_plug_loads_other_frac_sensible', @@ -4587,7 +4590,7 @@ def makeArgument(name:, default_href: "HPXML Plug Loads", units: 'Frac' ) - + args << makeArgument( type: Argument::Double, name: 'misc_plug_loads_other_frac_latent', @@ -4597,16 +4600,16 @@ def makeArgument(name:, default_href: "HPXML Plug Loads", units: 'Frac' ) - + args << makeArgument( type: Argument::Double, name: 'misc_plug_loads_other_usage_multiplier', required: false, display_name: 'Misc Plug Loads: Other Usage Multiplier', - description: "Multiplier on the other energy usage that can reflect, e.g., high/low usage occupants.", + description: 'Multiplier on the other energy usage that can reflect, e.g., high/low usage occupants.', default_href: "HPXML Plug Loads" ) - + args << makeArgument( name: 'misc_plug_loads_well_pump_present', type: Argument::Boolean, @@ -4614,26 +4617,26 @@ def makeArgument(name:, display_name: 'Misc Plug Loads: Well Pump Present', description: 'Whether there is a well pump. If not provided, defaults to false.' ) - + args << makeArgument( type: Argument::Double, name: 'misc_plug_loads_well_pump_annual_kwh', required: false, display_name: 'Misc Plug Loads: Well Pump Annual kWh', - description: "The annual energy consumption of the well pump plug loads.", + description: 'The annual energy consumption of the well pump plug loads.', default_href: "HPXML Plug Loads", units: 'kWh/yr' ) - + args << makeArgument( type: Argument::Double, name: 'misc_plug_loads_well_pump_usage_multiplier', required: false, display_name: 'Misc Plug Loads: Well Pump Usage Multiplier', - description: "Multiplier on the well pump energy usage that can reflect, e.g., high/low usage occupants.", + description: 'Multiplier on the well pump energy usage that can reflect, e.g., high/low usage occupants.', default_href: "HPXML Plug Loads" ) - + args << makeArgument( name: 'misc_plug_loads_vehicle_present', type: Argument::Boolean, @@ -4641,26 +4644,26 @@ def makeArgument(name:, display_name: 'Misc Plug Loads: Vehicle Present', description: 'Whether there is an electric vehicle. If not provided, defaults to false.' ) - + args << makeArgument( type: Argument::Double, name: 'misc_plug_loads_vehicle_annual_kwh', required: false, display_name: 'Misc Plug Loads: Vehicle Annual kWh', - description: "The annual energy consumption of the electric vehicle plug loads.", + description: 'The annual energy consumption of the electric vehicle plug loads.', default_href: "HPXML Plug Loads", units: 'kWh/yr' ) - + args << makeArgument( type: Argument::Double, name: 'misc_plug_loads_vehicle_usage_multiplier', required: false, display_name: 'Misc Plug Loads: Vehicle Usage Multiplier', - description: "Multiplier on the electric vehicle energy usage that can reflect, e.g., high/low usage occupants.", + description: 'Multiplier on the electric vehicle energy usage that can reflect, e.g., high/low usage occupants.', default_href: "HPXML Plug Loads" ) - + misc_fuel_loads_fuel_choices = OpenStudio::StringVector.new misc_fuel_loads_fuel_choices << HPXML::FuelTypeNaturalGas misc_fuel_loads_fuel_choices << HPXML::FuelTypeOil @@ -4675,35 +4678,35 @@ def makeArgument(name:, display_name: 'Misc Fuel Loads: Grill Present', description: 'Whether there is a fuel loads grill. If not provided, defaults to false.' ) - + args << makeArgument( type: Argument::Choice, - name: 'misc_fuel_loads_grill_fuel_type', - choices: misc_fuel_loads_fuel_choices, + name: 'misc_fuel_loads_grill_fuel_type', + choices: misc_fuel_loads_fuel_choices, required: false, display_name: 'Misc Fuel Loads: Grill Fuel Type', description: 'The fuel type of the fuel loads grill.' ) - + args << makeArgument( type: Argument::Double, name: 'misc_fuel_loads_grill_annual_therm', required: false, display_name: 'Misc Fuel Loads: Grill Annual therm', - description: "The annual energy consumption of the fuel loads grill.", + description: 'The annual energy consumption of the fuel loads grill.', default_href: "HPXML Fuel Loads", units: 'therm/yr' ) - + args << makeArgument( type: Argument::Double, name: 'misc_fuel_loads_grill_usage_multiplier', required: false, display_name: 'Misc Fuel Loads: Grill Usage Multiplier', - description: "Multiplier on the fuel loads grill energy usage that can reflect, e.g., high/low usage occupants.", + description: 'Multiplier on the fuel loads grill energy usage that can reflect, e.g., high/low usage occupants.', default_href: "HPXML Fuel Loads" ) - + args << makeArgument( name: 'misc_fuel_loads_lighting_present', type: Argument::Boolean, @@ -4711,35 +4714,35 @@ def makeArgument(name:, display_name: 'Misc Fuel Loads: Lighting Present', description: 'Whether there is fuel loads lighting. If not provided, defaults to false.' ) - + args << makeArgument( type: Argument::Choice, - name: 'misc_fuel_loads_lighting_fuel_type', - choices: misc_fuel_loads_fuel_choices, + name: 'misc_fuel_loads_lighting_fuel_type', + choices: misc_fuel_loads_fuel_choices, required: false, display_name: 'Misc Fuel Loads: Lighting Fuel Type', description: 'The fuel type of the fuel loads lighting.' ) - + args << makeArgument( type: Argument::Double, name: 'misc_fuel_loads_lighting_annual_therm', required: false, display_name: 'Misc Fuel Loads: Lighting Annual therm', - description: "The annual energy consumption of the fuel loads lighting.", + description: 'The annual energy consumption of the fuel loads lighting.', default_href: "HPXML Fuel Loads", units: 'therm/yr' ) - + args << makeArgument( type: Argument::Double, name: 'misc_fuel_loads_lighting_usage_multiplier', required: false, display_name: 'Misc Fuel Loads: Lighting Usage Multiplier', - description: "Multiplier on the fuel loads lighting energy usage that can reflect, e.g., high/low usage occupants.", + description: 'Multiplier on the fuel loads lighting energy usage that can reflect, e.g., high/low usage occupants.', default_href: "HPXML Fuel Loads" ) - + args << makeArgument( name: 'misc_fuel_loads_fireplace_present', type: Argument::Boolean, @@ -4747,26 +4750,26 @@ def makeArgument(name:, display_name: 'Misc Fuel Loads: Fireplace Present', description: 'Whether there is fuel loads fireplace. If not provided, defaults to false.' ) - + args << makeArgument( type: Argument::Choice, - name: 'misc_fuel_loads_fireplace_fuel_type', - choices: misc_fuel_loads_fuel_choices, + name: 'misc_fuel_loads_fireplace_fuel_type', + choices: misc_fuel_loads_fuel_choices, required: false, display_name: 'Misc Fuel Loads: Fireplace Fuel Type', description: 'The fuel type of the fuel loads fireplace.' ) - + args << makeArgument( type: Argument::Double, name: 'misc_fuel_loads_fireplace_annual_therm', required: false, display_name: 'Misc Fuel Loads: Fireplace Annual therm', - description: "The annual energy consumption of the fuel loads fireplace.", + description: 'The annual energy consumption of the fuel loads fireplace.', default_href: "HPXML Fuel Loads", units: 'therm/yr' ) - + args << makeArgument( type: Argument::Double, name: 'misc_fuel_loads_fireplace_frac_sensible', @@ -4776,7 +4779,7 @@ def makeArgument(name:, default_href: "HPXML Fuel Loads", units: 'Frac' ) - + args << makeArgument( type: Argument::Double, name: 'misc_fuel_loads_fireplace_frac_latent', @@ -4786,16 +4789,16 @@ def makeArgument(name:, default_href: "HPXML Fuel Loads", units: 'Frac' ) - + args << makeArgument( type: Argument::Double, - name: 'misc_fuel_loads_fireplace_usage_multiplier' + name: 'misc_fuel_loads_fireplace_usage_multiplier', required: false, display_name: 'Misc Fuel Loads: Fireplace Usage Multiplier', - description: "Multiplier on the fuel loads fireplace energy usage that can reflect, e.g., high/low usage occupants.", + description: 'Multiplier on the fuel loads fireplace energy usage that can reflect, e.g., high/low usage occupants.', default_href: "HPXML Fuel Loads" ) - + heater_type_choices = OpenStudio::StringVector.new heater_type_choices << HPXML::TypeNone heater_type_choices << HPXML::HeaterTypeElectricResistance @@ -4809,35 +4812,35 @@ def makeArgument(name:, display_name: 'Pool: Present', description: 'Whether there is a pool. If not provided, defaults to false.' ) - + args << makeArgument( type: Argument::Double, name: 'pool_pump_annual_kwh', required: false, display_name: 'Pool: Pump Annual kWh', - description: "The annual energy consumption of the pool pump.", + description: 'The annual energy consumption of the pool pump.', default_href: "Pool Pump", units: 'kWh/yr' ) - + args << makeArgument( type: Argument::Double, name: 'pool_pump_usage_multiplier', required: false, display_name: 'Pool: Pump Usage Multiplier', - description: "Multiplier on the pool pump energy usage that can reflect, e.g., high/low usage occupants.", + description: 'Multiplier on the pool pump energy usage that can reflect, e.g., high/low usage occupants.', default_href: "Pool Pump" ) - + args << makeArgument( type: Argument::Choice, - name: 'pool_heater_type', - choices: heater_type_choices, + name: 'pool_heater_type', + choices: heater_type_choices, required: false, display_name: 'Pool: Heater Type', description: "The type of pool heater. Use '#{HPXML::TypeNone}' if there is no pool heater." ) - + args << makeArgument( type: Argument::Double, name: 'pool_heater_annual_kwh', @@ -4847,7 +4850,7 @@ def makeArgument(name:, default_href: "Pool Heater", units: 'kWh/yr' ) - + args << makeArgument( type: Argument::Double, name: 'pool_heater_annual_therm', @@ -4857,16 +4860,16 @@ def makeArgument(name:, default_href: "Pool Heater", units: 'therm/yr' ) - + args << makeArgument( type: Argument::Double, name: 'pool_heater_usage_multiplier', required: false, display_name: 'Pool: Heater Usage Multiplier', - description: "Multiplier on the pool heater energy usage that can reflect, e.g., high/low usage occupants.", + description: 'Multiplier on the pool heater energy usage that can reflect, e.g., high/low usage occupants.', default_href: "Pool Heater" ) - + args << makeArgument( name: 'permanent_spa_present', type: Argument::Boolean, @@ -4874,35 +4877,35 @@ def makeArgument(name:, display_name: 'Permanent Spa: Present', description: 'Whether there is a permanent spa. If not provided, defaults to false.' ) - + args << makeArgument( type: Argument::Double, name: 'permanent_spa_pump_annual_kwh', required: false, display_name: 'Permanent Spa: Pump Annual kWh', - description: "The annual energy consumption of the permanent spa pump.", + description: 'The annual energy consumption of the permanent spa pump.', default_href: "Permanent Spa Pump", units: 'kWh/yr' ) - + args << makeArgument( type: Argument::Double, name: 'permanent_spa_pump_usage_multiplier', required: false, display_name: 'Permanent Spa: Pump Usage Multiplier', - description: "Multiplier on the permanent spa pump energy usage that can reflect, e.g., high/low usage occupants.", + description: 'Multiplier on the permanent spa pump energy usage that can reflect, e.g., high/low usage occupants.', default_href: "Permanent Spa Pump" ) - + args << makeArgument( type: Argument::Choice, - name: 'permanent_spa_heater_type', - choices: heater_type_choices, + name: 'permanent_spa_heater_type', + choices: heater_type_choices, required: false, display_name: 'Permanent Spa: Heater Type', description: "The type of permanent spa heater. Use '#{HPXML::TypeNone}' if there is no permanent spa heater." ) - + args << makeArgument( type: Argument::Double, name: 'permanent_spa_heater_annual_kwh', @@ -4912,7 +4915,7 @@ def makeArgument(name:, default_href: "Permanent Spa Heater", units: 'kWh/yr' ) - + args << makeArgument( type: Argument::Double, name: 'permanent_spa_heater_annual_therm', @@ -4922,16 +4925,16 @@ def makeArgument(name:, default_href: "Permanent Spa Heater", units: 'therm/yr' ) - + args << makeArgument( type: Argument::Double, name: 'permanent_spa_heater_usage_multiplier', required: false, display_name: 'Permanent Spa: Heater Usage Multiplier', - description: "Multiplier on the permanent spa heater energy usage that can reflect, e.g., high/low usage occupants.", + description: 'Multiplier on the permanent spa heater energy usage that can reflect, e.g., high/low usage occupants.', default_href: "Permanent Spa Heater" ) - + args << makeArgument( type: Argument::String, name: 'emissions_scenario_names', @@ -4939,7 +4942,7 @@ def makeArgument(name:, display_name: 'Emissions: Scenario Names', description: 'Names of emissions scenarios. If multiple scenarios, use a comma-separated list. If not provided, no emissions scenarios are calculated.' ) - + args << makeArgument( type: Argument::String, name: 'emissions_types', @@ -4947,7 +4950,7 @@ def makeArgument(name:, display_name: 'Emissions: Types', description: 'Types of emissions (e.g., CO2e, NOx, etc.). If multiple scenarios, use a comma-separated list.' ) - + args << makeArgument( type: Argument::String, name: 'emissions_electricity_units', @@ -4955,7 +4958,7 @@ def makeArgument(name:, display_name: 'Emissions: Electricity Units', description: 'Electricity emissions factors units. If multiple scenarios, use a comma-separated list. Only lb/MWh and kg/MWh are allowed.' ) - + args << makeArgument( type: Argument::String, name: 'emissions_electricity_values_or_filepaths', @@ -4963,7 +4966,7 @@ def makeArgument(name:, display_name: 'Emissions: Electricity Values or File Paths', description: 'Electricity emissions factors values, specified as either an annual factor or an absolute/relative path to a file with hourly factors. If multiple scenarios, use a comma-separated list.' ) - + args << makeArgument( type: Argument::String, name: 'emissions_electricity_number_of_header_rows', @@ -4971,7 +4974,7 @@ def makeArgument(name:, display_name: 'Emissions: Electricity Files Number of Header Rows', description: 'The number of header rows in the electricity emissions factor file. Only applies when an electricity filepath is used. If multiple scenarios, use a comma-separated list.' ) - + args << makeArgument( type: Argument::String, name: 'emissions_electricity_column_numbers', @@ -4979,7 +4982,7 @@ def makeArgument(name:, display_name: 'Emissions: Electricity Files Column Numbers', description: 'The column number in the electricity emissions factor file. Only applies when an electricity filepath is used. If multiple scenarios, use a comma-separated list.' ) - + args << makeArgument( type: Argument::String, name: 'emissions_fossil_fuel_units', @@ -4987,7 +4990,7 @@ def makeArgument(name:, display_name: 'Emissions: Fossil Fuel Units', description: 'Fossil fuel emissions factors units. If multiple scenarios, use a comma-separated list. Only lb/MBtu and kg/MBtu are allowed.' ) - + HPXML::fossil_fuels.each do |fossil_fuel| underscore_case = OpenStudio::toUnderscoreCase(fossil_fuel) all_caps_case = fossil_fuel.split(' ').map(&:capitalize).join(' ') @@ -5009,7 +5012,7 @@ def makeArgument(name:, display_name: 'Utility Bills: Scenario Names', description: 'Names of utility bill scenarios. If multiple scenarios, use a comma-separated list. If not provided, no utility bills scenarios are calculated.' ) - + args << makeArgument( type: Argument::String, name: 'utility_bill_electricity_filepaths', @@ -5017,7 +5020,7 @@ def makeArgument(name:, display_name: 'Utility Bills: Electricity File Paths', description: 'Electricity tariff file specified as an absolute/relative path to a file with utility rate structure information. Tariff file must be formatted to OpenEI API version 7. If multiple scenarios, use a comma-separated list.' ) - + HPXML::all_fuels.each do |fuel| underscore_case = OpenStudio::toUnderscoreCase(fuel) @@ -5054,7 +5057,7 @@ def makeArgument(name:, display_name: 'Utility Bills: PV Compensation Types', description: 'Utility bill PV compensation types. If multiple scenarios, use a comma-separated list.' ) - + args << makeArgument( type: Argument::String, name: 'utility_bill_pv_net_metering_annual_excess_sellback_rate_types', @@ -5062,7 +5065,7 @@ def makeArgument(name:, display_name: 'Utility Bills: PV Net Metering Annual Excess Sellback Rate Types', description: "Utility bill PV net metering annual excess sellback rate types. Only applies if the PV compensation type is '#{HPXML::PVCompensationTypeNetMetering}'. If multiple scenarios, use a comma-separated list." ) - + args << makeArgument( type: Argument::String, name: 'utility_bill_pv_net_metering_annual_excess_sellback_rates', @@ -5070,7 +5073,7 @@ def makeArgument(name:, display_name: 'Utility Bills: PV Net Metering Annual Excess Sellback Rates', description: "Utility bill PV net metering annual excess sellback rates. Only applies if the PV compensation type is '#{HPXML::PVCompensationTypeNetMetering}' and the PV annual excess sellback rate type is '#{HPXML::PVAnnualExcessSellbackRateTypeUserSpecified}'. If multiple scenarios, use a comma-separated list." ) - + args << makeArgument( type: Argument::String, name: 'utility_bill_pv_feed_in_tariff_rates', @@ -5078,7 +5081,7 @@ def makeArgument(name:, display_name: 'Utility Bills: PV Feed-In Tariff Rates', description: "Utility bill PV annual full/gross feed-in tariff rates. Only applies if the PV compensation type is '#{HPXML::PVCompensationTypeFeedInTariff}'. If multiple scenarios, use a comma-separated list." ) - + args << makeArgument( type: Argument::String, name: 'utility_bill_pv_monthly_grid_connection_fee_units', @@ -5086,7 +5089,7 @@ def makeArgument(name:, display_name: 'Utility Bills: PV Monthly Grid Connection Fee Units', description: 'Utility bill PV monthly grid connection fee units. If multiple scenarios, use a comma-separated list.' ) - + args << makeArgument( type: Argument::String, name: 'utility_bill_pv_monthly_grid_connection_fees', @@ -5094,7 +5097,7 @@ def makeArgument(name:, display_name: 'Utility Bills: PV Monthly Grid Connection Fees', description: 'Utility bill PV monthly grid connection fees. If multiple scenarios, use a comma-separated list.' ) - + args << makeArgument( type: Argument::String, name: 'additional_properties', @@ -5102,7 +5105,7 @@ def makeArgument(name:, display_name: 'Additional Properties', description: "Additional properties specified as key-value pairs (i.e., key=value). If multiple additional properties, use a |-separated list. For example, 'LowIncome=false|Remodeled|Description=2-story home in Denver'. These properties will be stored in the HPXML file under /HPXML/SoftwareInfo/extension/AdditionalProperties." ) - + args << makeArgument( name: 'combine_like_surfaces', type: Argument::Boolean, @@ -5110,7 +5113,7 @@ def makeArgument(name:, display_name: 'Combine like surfaces?', description: 'If true, combines like surfaces to simplify the HPXML file generated.' ) - + args << makeArgument( name: 'apply_defaults', type: Argument::Boolean, @@ -5118,14 +5121,14 @@ def makeArgument(name:, display_name: 'Apply Default Values?', description: 'If true, applies OS-HPXML default values to the HPXML output file. Setting to true will also force validation of the HPXML output file before applying OS-HPXML default values.' ) - + args << makeArgument( name: 'apply_validation', type: Argument::Boolean, required: false, display_name: 'Apply Validation?', description: 'If true, validates the HPXML output file. Set to false for faster performance. Note that validation is not needed if the HPXML file will be validated downstream (e.g., via the HPXMLtoOpenStudio measure).' - ) + ) return args end @@ -8743,7 +8746,7 @@ def self.set_extra_refrigerator(hpxml_bldg, args) location: args[:extra_refrigerator_location], rated_annual_kwh: args[:extra_refrigerator_rated_annual_kwh], usage_multiplier: args[:extra_refrigerator_usage_multiplier], - primary_indicator: false, + primary_indicator: false) hpxml_bldg.refrigerators[0].primary_indicator = true end diff --git a/BuildResidentialHPXML/measure.xml b/BuildResidentialHPXML/measure.xml index dd8065b13d..7239c6cc8d 100644 --- a/BuildResidentialHPXML/measure.xml +++ b/BuildResidentialHPXML/measure.xml @@ -3,8 +3,8 @@ 3.1 build_residential_hpxml a13a8983-2b01-4930-8af2-42030b6e4233 - 2f5081a6-f6d3-4967-9f1e-eabe1b90d7c4 - 2024-11-01T19:54:32Z + a78e4b61-1f71-41a0-b581-2dd7577b3eca + 2024-11-02T20:35:16Z 2C38F48B BuildResidentialHPXML HPXML Builder @@ -113,8 +113,8 @@ simulation_control_run_period_calendar_year Simulation Control: Run Period Calendar Year - This numeric field should contain the calendar year that determines the start day of week. If you are running simulations using AMY weather files, the value entered for calendar year will not be used; it will be overridden by the actual year found in the AMY weather file. If not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.8.1/workflow_inputs.html#hpxml-simulation-control'>HPXML Simulation Control</a>) is used. - Integer + This numeric field should contain the calendar year that determines the start day of week. If you are running simulations using AMY weather files, the value entered for calendar year will not be used; it will be overridden by the actual year found in the AMY weather file. If auto or not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.8.1/workflow_inputs.html#hpxml-simulation-control'>HPXML Simulation Control</a>) is used. + String year false false @@ -144,7 +144,7 @@ simulation_control_daylight_saving_period Simulation Control: Daylight Saving Period - Enter a date range like 'Mar 15 - Dec 15'. If not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.8.1/workflow_inputs.html#hpxml-building-site'>HPXML Building Site</a>) is used. + Enter a date range like 'Mar 15 - Dec 15'. If auto or not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.8.1/workflow_inputs.html#hpxml-building-site'>HPXML Building Site</a>) is used. String false false @@ -152,7 +152,7 @@ simulation_control_temperature_capacitance_multiplier Simulation Control: Temperature Capacitance Multiplier - Affects the transient calculation of indoor air temperatures. If not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.8.1/workflow_inputs.html#hpxml-simulation-control'>HPXML Simulation Control</a>) is used. + Affects the transient calculation of indoor air temperatures. If auto or not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.8.1/workflow_inputs.html#hpxml-simulation-control'>HPXML Simulation Control</a>) is used. String false false @@ -200,11 +200,15 @@ site_type Site: Type - The type of site. If not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.8.1/workflow_inputs.html#hpxml-site'>HPXML Site</a>) is used. + The type of site. If auto or not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.8.1/workflow_inputs.html#hpxml-site'>HPXML Site</a>) is used. Choice false false + + auto + auto + suburban suburban @@ -222,11 +226,15 @@ site_shielding_of_home Site: Shielding of Home - Presence of nearby buildings, trees, obstructions for infiltration model. If not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.8.1/workflow_inputs.html#hpxml-site'>HPXML Site</a>) is used. + Presence of nearby buildings, trees, obstructions for infiltration model. If auto or not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.8.1/workflow_inputs.html#hpxml-site'>HPXML Site</a>) is used. Choice false false + + auto + auto + exposed exposed @@ -244,11 +252,15 @@ site_soil_and_moisture_type Site: Soil and Moisture Type - Type of soil and moisture. This is used to inform ground conductivity and diffusivity. If not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.8.1/workflow_inputs.html#hpxml-site'>HPXML Site</a>) is used. + Type of soil and moisture. This is used to inform ground conductivity and diffusivity. If auto or not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.8.1/workflow_inputs.html#hpxml-site'>HPXML Site</a>) is used. Choice false false + + auto + auto + clay, dry clay, dry @@ -442,11 +454,15 @@ site_state_code Site: State Code - State code of the home address. If not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.8.1/workflow_inputs.html#hpxml-site'>HPXML Site</a>) is used. + State code of the home address. If auto or not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.8.1/workflow_inputs.html#hpxml-site'>HPXML Site</a>) is used. Choice false false + + auto + auto + AK AK @@ -673,8 +689,8 @@ site_elevation Site: Elevation - Elevation of the home address. If not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.8.1/workflow_inputs.html#hpxml-site'>HPXML Site</a>) is used. - Double + Elevation of the home address. If auto or not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.8.1/workflow_inputs.html#hpxml-site'>HPXML Site</a>) is used. + String ft false false @@ -682,8 +698,8 @@ site_latitude Site: Latitude - Latitude of the home address. Must be between -90 and 90. Use negative values for southern hemisphere. If not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.8.1/workflow_inputs.html#hpxml-site'>HPXML Site</a>) is used. - Double + Latitude of the home address. Must be between -90 and 90. Use negative values for southern hemisphere. If auto or not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.8.1/workflow_inputs.html#hpxml-site'>HPXML Site</a>) is used. + String deg false false @@ -691,8 +707,8 @@ site_longitude Site: Longitude - Longitude of the home address. Must be between -180 and 180. Use negative values for the western hemisphere. If not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.8.1/workflow_inputs.html#hpxml-site'>HPXML Site</a>) is used. - Double + Longitude of the home address. Must be between -180 and 180. Use negative values for the western hemisphere. If auto or not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.8.1/workflow_inputs.html#hpxml-site'>HPXML Site</a>) is used. + String deg false false @@ -728,7 +744,6 @@ Choice true false - single-family detached single-family detached @@ -828,7 +843,6 @@ # true false - 2 geometry_unit_cfa @@ -838,7 +852,6 @@ ft^2 true false - 2000 geometry_unit_aspect_ratio @@ -848,7 +861,6 @@ Frac true false - 2 geometry_unit_orientation @@ -858,7 +870,6 @@ degrees true false - 180 geometry_unit_num_bedrooms @@ -868,13 +879,12 @@ # true false - 3 geometry_unit_num_bathrooms Geometry: Unit Number of Bathrooms - The number of bathrooms in the unit. If not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.8.1/workflow_inputs.html#hpxml-building-construction'>HPXML Building Construction</a>) is used. - Integer + The number of bathrooms in the unit. If auto or not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.8.1/workflow_inputs.html#hpxml-building-construction'>HPXML Building Construction</a>) is used. + String # false false @@ -905,13 +915,12 @@ ft true false - 8 geometry_unit_height_above_grade Geometry: Unit Height Above Grade - Describes the above-grade height of apartment units on upper floors or homes above ambient or belly-and-wing foundations. It is defined as the height of the lowest conditioned floor above grade and is used to calculate the wind speed for the infiltration model. If not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.8.1/workflow_inputs.html#hpxml-building-construction'>HPXML Building Construction</a>) is used. - Double + Describes the above-grade height of apartment units on upper floors or homes above ambient or belly-and-wing foundations. It is defined as the height of the lowest conditioned floor above grade and is used to calculate the wind speed for the infiltration model. If auto or not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.8.1/workflow_inputs.html#hpxml-building-construction'>HPXML Building Construction</a>) is used. + String ft false false @@ -924,7 +933,6 @@ ft false false - 0 geometry_garage_depth @@ -934,7 +942,6 @@ ft false false - 20 geometry_garage_protrusion @@ -944,7 +951,6 @@ Frac false false - 0 geometry_garage_position @@ -953,7 +959,6 @@ Choice false false - Right Right @@ -972,7 +977,6 @@ Choice true false - SlabOnGrade SlabOnGrade @@ -1024,7 +1028,6 @@ ft false false - 0 geometry_foundation_height_above_grade @@ -1034,7 +1037,6 @@ ft false false - 0 geometry_rim_joist_height @@ -1052,7 +1054,6 @@ Choice true false - VentedAttic FlatRoof @@ -1083,7 +1084,6 @@ Choice false false - gable gable @@ -1102,7 +1102,6 @@ Choice false false - 6:12 1:12 @@ -1162,7 +1161,6 @@ ft false false - 2 neighbor_front_distance @@ -1172,7 +1170,6 @@ ft false false - 0 neighbor_back_distance @@ -1182,7 +1179,6 @@ ft false false - 0 neighbor_left_distance @@ -1192,7 +1188,6 @@ ft false false - 10 neighbor_right_distance @@ -1202,13 +1197,12 @@ ft false false - 10 neighbor_front_height Neighbor: Front Height - The height of the neighboring building to the front. If not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.8.1/workflow_inputs.html#hpxml-neighbor-buildings'>HPXML Neighbor Building</a>) is used. - Double + The height of the neighboring building to the front. If auto or not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.8.1/workflow_inputs.html#hpxml-neighbor-buildings'>HPXML Neighbor Building</a>) is used. + String ft false false @@ -1216,8 +1210,8 @@ neighbor_back_height Neighbor: Back Height - The height of the neighboring building to the back. If not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.8.1/workflow_inputs.html#hpxml-neighbor-buildings'>HPXML Neighbor Building</a>) is used. - Double + The height of the neighboring building to the back. If auto or not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.8.1/workflow_inputs.html#hpxml-neighbor-buildings'>HPXML Neighbor Building</a>) is used. + String ft false false @@ -1225,8 +1219,8 @@ neighbor_left_height Neighbor: Left Height - The height of the neighboring building to the left. If not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.8.1/workflow_inputs.html#hpxml-neighbor-buildings'>HPXML Neighbor Building</a>) is used. - Double + The height of the neighboring building to the left. If auto or not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.8.1/workflow_inputs.html#hpxml-neighbor-buildings'>HPXML Neighbor Building</a>) is used. + String ft false false @@ -1234,8 +1228,8 @@ neighbor_right_height Neighbor: Right Height - The height of the neighboring building to the right. If not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.8.1/workflow_inputs.html#hpxml-neighbor-buildings'>HPXML Neighbor Building</a>) is used. - Double + The height of the neighboring building to the right. If auto or not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.8.1/workflow_inputs.html#hpxml-neighbor-buildings'>HPXML Neighbor Building</a>) is used. + String ft false false @@ -1248,7 +1242,6 @@ h-ft^2-R/Btu false false - 28.1 floor_over_garage_assembly_r @@ -1258,7 +1251,6 @@ h-ft^2-R/Btu false false - 28.1 floor_type @@ -1267,7 +1259,6 @@ Choice true false - WoodFrame WoodFrame @@ -1290,11 +1281,15 @@ foundation_wall_type Foundation Wall: Type - The material type of the foundation wall. If not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.8.1/workflow_inputs.html#hpxml-foundation-walls'>HPXML Foundation Walls</a>) is used. + The material type of the foundation wall. If auto or not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.8.1/workflow_inputs.html#hpxml-foundation-walls'>HPXML Foundation Walls</a>) is used. Choice false false + + auto + auto + solid concrete solid concrete @@ -1332,8 +1327,8 @@ foundation_wall_thickness Foundation Wall: Thickness - The thickness of the foundation wall. If not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.8.1/workflow_inputs.html#hpxml-foundation-walls'>HPXML Foundation Walls</a>) is used. - Double + The thickness of the foundation wall. If auto or not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.8.1/workflow_inputs.html#hpxml-foundation-walls'>HPXML Foundation Walls</a>) is used. + String in false false @@ -1346,7 +1341,6 @@ h-ft^2-R/Btu false false - 0 foundation_wall_insulation_location @@ -1356,7 +1350,6 @@ ft false false - exterior interior @@ -1371,8 +1364,8 @@ foundation_wall_insulation_distance_to_top Foundation Wall: Insulation Distance To Top - The distance from the top of the foundation wall to the top of the foundation wall insulation. Only applies to basements/crawlspaces. If not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.8.1/workflow_inputs.html#hpxml-foundation-walls'>HPXML Foundation Walls</a>) is used. - Double + The distance from the top of the foundation wall to the top of the foundation wall insulation. Only applies to basements/crawlspaces. If auto or not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.8.1/workflow_inputs.html#hpxml-foundation-walls'>HPXML Foundation Walls</a>) is used. + String ft false false @@ -1380,8 +1373,8 @@ foundation_wall_insulation_distance_to_bottom Foundation Wall: Insulation Distance To Bottom - The distance from the top of the foundation wall to the bottom of the foundation wall insulation. Only applies to basements/crawlspaces. If not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.8.1/workflow_inputs.html#hpxml-foundation-walls'>HPXML Foundation Walls</a>) is used. - Double + The distance from the top of the foundation wall to the bottom of the foundation wall insulation. Only applies to basements/crawlspaces. If auto or not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.8.1/workflow_inputs.html#hpxml-foundation-walls'>HPXML Foundation Walls</a>) is used. + String ft false false @@ -1412,7 +1405,6 @@ h-ft^2-R/Btu false false - 0 slab_perimeter_insulation_depth @@ -1422,7 +1414,6 @@ ft false false - 0 slab_exterior_horizontal_insulation_r @@ -1459,7 +1450,6 @@ h-ft^2-R/Btu false false - 0 slab_under_insulation_width @@ -1469,13 +1459,12 @@ ft false false - 0 slab_thickness Slab: Thickness - The thickness of the slab. Zero can be entered if there is a dirt floor instead of a slab. If not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.8.1/workflow_inputs.html#hpxml-slabs'>HPXML Slabs</a>) is used. - Double + The thickness of the slab. Zero can be entered if there is a dirt floor instead of a slab. If auto or not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.8.1/workflow_inputs.html#hpxml-slabs'>HPXML Slabs</a>) is used. + String in false false @@ -1483,8 +1472,8 @@ slab_carpet_fraction Slab: Carpet Fraction - Fraction of the slab floor area that is carpeted. If not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.8.1/workflow_inputs.html#hpxml-slabs'>HPXML Slabs</a>) is used. - Double + Fraction of the slab floor area that is carpeted. If auto or not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.8.1/workflow_inputs.html#hpxml-slabs'>HPXML Slabs</a>) is used. + String Frac false false @@ -1492,8 +1481,8 @@ slab_carpet_r Slab: Carpet R-value - R-value of the slab carpet. If not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.8.1/workflow_inputs.html#hpxml-slabs'>HPXML Slabs</a>) is used. - Double + R-value of the slab carpet. If auto or not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.8.1/workflow_inputs.html#hpxml-slabs'>HPXML Slabs</a>) is used. + String h-ft^2-R/Btu false false @@ -1506,16 +1495,19 @@ h-ft^2-R/Btu false false - 31.6 roof_material_type Roof: Material Type - The material type of the roof. If not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.8.1/workflow_inputs.html#hpxml-roofs'>HPXML Roofs</a>) is used. + The material type of the roof. If auto or not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.8.1/workflow_inputs.html#hpxml-roofs'>HPXML Roofs</a>) is used. Choice false false + + auto + auto + asphalt or fiberglass shingles asphalt or fiberglass shingles @@ -1557,11 +1549,15 @@ roof_color Roof: Color - The color of the roof. If not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.8.1/workflow_inputs.html#hpxml-roofs'>HPXML Roofs</a>) is used. + The color of the roof. If auto or not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.8.1/workflow_inputs.html#hpxml-roofs'>HPXML Roofs</a>) is used. Choice false false + + auto + auto + dark dark @@ -1592,7 +1588,6 @@ h-ft^2-R/Btu false false - 2.3 radiant_barrier_attic_location @@ -1623,11 +1618,15 @@ radiant_barrier_grade Attic: Radiant Barrier Grade - The grade of the radiant barrier in the attic. If not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.8.1/workflow_inputs.html#hpxml-roofs'>HPXML Roofs</a>) is used. + The grade of the radiant barrier in the attic. If auto or not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.8.1/workflow_inputs.html#hpxml-roofs'>HPXML Roofs</a>) is used. Choice false false + + auto + auto + 1 1 @@ -1649,7 +1648,6 @@ Choice true false - WoodStud WoodStud @@ -1700,11 +1698,15 @@ wall_siding_type Wall: Siding Type - The siding type of the walls. Also applies to rim joists. If not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.8.1/workflow_inputs.html#hpxml-walls'>HPXML Walls</a>) is used. + The siding type of the walls. Also applies to rim joists. If auto or not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.8.1/workflow_inputs.html#hpxml-walls'>HPXML Walls</a>) is used. Choice false false + + auto + auto + aluminum siding aluminum siding @@ -1754,11 +1756,19 @@ wall_color Wall: Color - The color of the walls. Also applies to rim joists. If not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.8.1/workflow_inputs.html#hpxml-walls'>HPXML Walls</a>) is used. + The color of the walls. Also applies to rim joists. If auto or not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.8.1/workflow_inputs.html#hpxml-walls'>HPXML Walls</a>) is used. Choice false false + + auto + auto + + + auto + auto + dark dark @@ -1789,7 +1799,6 @@ h-ft^2-R/Btu true false - 11.9 window_area_front @@ -1799,7 +1808,6 @@ ft^2 true false - 0 window_area_back @@ -1809,7 +1817,6 @@ ft^2 true false - 0 window_area_left @@ -1819,7 +1826,6 @@ ft^2 true false - 0 window_area_right @@ -1829,7 +1835,6 @@ ft^2 true false - 0 window_aspect_ratio @@ -1839,7 +1844,6 @@ Frac true false - 1.333 window_ufactor @@ -1849,7 +1853,6 @@ Btu/hr-ft^2-R true false - 0.37 window_shgc @@ -1858,13 +1861,12 @@ Double true false - 0.3 window_fraction_operable Windows: Fraction Operable - Fraction of windows that are operable. If not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.8.1/workflow_inputs.html#hpxml-windows'>HPXML Windows</a>) is used. - Double + Fraction of windows that are operable. If auto or not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.8.1/workflow_inputs.html#hpxml-windows'>HPXML Windows</a>) is used. + String Frac false false @@ -1872,8 +1874,8 @@ window_natvent_availability Windows: Natural Ventilation Availability - For operable windows, the number of days/week that windows can be opened by occupants for natural ventilation. If not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.8.1/workflow_inputs.html#hpxml-windows'>HPXML Windows</a>) is used. - Integer + For operable windows, the number of days/week that windows can be opened by occupants for natural ventilation. If auto or not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.8.1/workflow_inputs.html#hpxml-windows'>HPXML Windows</a>) is used. + String Days/week false false @@ -1881,11 +1883,15 @@ window_interior_shading_type Windows: Interior Shading Type - Type of window interior shading. Summer/winter shading coefficients can be provided below instead. If neither is provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.8.1/workflow_inputs.html#hpxml-interior-shading'>HPXML Interior Shading</a>) is used. + Type of window interior shading. Summer/winter shading coefficients can be provided below instead. If auto or not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.8.1/workflow_inputs.html#hpxml-interior-shading'>HPXML Interior Shading</a>) is used. Choice false false + + auto + auto + light curtains light curtains @@ -1931,8 +1937,8 @@ window_interior_shading_winter Windows: Winter Interior Shading Coefficient - Interior shading coefficient for the winter season, which if provided overrides the shading type input. 1.0 indicates no reduction in solar gain, 0.85 indicates 15% reduction, etc. If not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.8.1/workflow_inputs.html#hpxml-interior-shading'>HPXML Interior Shading</a>) is used. - Double + Interior shading coefficient for the winter season, which if provided overrides the shading type input. 1.0 indicates no reduction in solar gain, 0.85 indicates 15% reduction, etc. If auto or not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.8.1/workflow_inputs.html#hpxml-interior-shading'>HPXML Interior Shading</a>) is used. + String Frac false false @@ -1940,8 +1946,8 @@ window_interior_shading_summer Windows: Summer Interior Shading Coefficient - Interior shading coefficient for the summer season, which if provided overrides the shading type input. 1.0 indicates no reduction in solar gain, 0.85 indicates 15% reduction, etc. If not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.8.1/workflow_inputs.html#hpxml-interior-shading'>HPXML Interior Shading</a>) is used. - Double + Interior shading coefficient for the summer season, which if provided overrides the shading type input. 1.0 indicates no reduction in solar gain, 0.85 indicates 15% reduction, etc. If auto or not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.8.1/workflow_inputs.html#hpxml-interior-shading'>HPXML Interior Shading</a>) is used. + String Frac false false @@ -1949,11 +1955,15 @@ window_exterior_shading_type Windows: Exterior Shading Type - Type of window exterior shading. Summer/winter shading coefficients can be provided below instead. If neither is provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.8.1/workflow_inputs.html#hpxml-exterior-shading'>HPXML Exterior Shading</a>) is used. + Type of window exterior shading. Summer/winter shading coefficients can be provided below instead. If auto or not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.8.1/workflow_inputs.html#hpxml-exterior-shading'>HPXML Exterior Shading</a>) is used. Choice false false + + auto + auto + solar film solar film @@ -1971,8 +1981,8 @@ window_exterior_shading_winter Windows: Winter Exterior Shading Coefficient - Exterior shading coefficient for the winter season, which if provided overrides the shading type input. 1.0 indicates no reduction in solar gain, 0.85 indicates 15% reduction, etc. If not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.8.1/workflow_inputs.html#hpxml-exterior-shading'>HPXML Exterior Shading</a>) is used. - Double + Exterior shading coefficient for the winter season, which if provided overrides the shading type input. 1.0 indicates no reduction in solar gain, 0.85 indicates 15% reduction, etc. If auto or not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.8.1/workflow_inputs.html#hpxml-exterior-shading'>HPXML Exterior Shading</a>) is used. + String Frac false false @@ -1980,8 +1990,8 @@ window_exterior_shading_summer Windows: Summer Exterior Shading Coefficient - Exterior shading coefficient for the summer season, which if provided overrides the shading type input. 1.0 indicates no reduction in solar gain, 0.85 indicates 15% reduction, etc. If not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.8.1/workflow_inputs.html#hpxml-exterior-shading'>HPXML Exterior Shading</a>) is used. - Double + Exterior shading coefficient for the summer season, which if provided overrides the shading type input. 1.0 indicates no reduction in solar gain, 0.85 indicates 15% reduction, etc. If auto or not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.8.1/workflow_inputs.html#hpxml-exterior-shading'>HPXML Exterior Shading</a>) is used. + String Frac false false @@ -1989,7 +1999,7 @@ window_shading_summer_season Windows: Shading Summer Season - Enter a date range like 'May 1 - Sep 30'. Defines the summer season for purposes of shading coefficients; the rest of the year is assumed to be winter. If not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.8.1/workflow_inputs.html#hpxml-windows'>HPXML Windows</a>) is used. + Enter a date range like 'May 1 - Sep 30'. Defines the summer season for purposes of shading coefficients; the rest of the year is assumed to be winter. If auto or not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.8.1/workflow_inputs.html#hpxml-windows'>HPXML Windows</a>) is used. String false false @@ -2042,7 +2052,6 @@ ft false false - 0 overhangs_front_distance_to_top_of_window @@ -2052,7 +2061,6 @@ ft false false - 1 overhangs_front_distance_to_bottom_of_window @@ -2062,7 +2070,6 @@ ft false false - 5 overhangs_back_depth @@ -2072,7 +2079,6 @@ ft false false - 0 overhangs_back_distance_to_top_of_window @@ -2082,7 +2088,6 @@ ft false false - 1 overhangs_back_distance_to_bottom_of_window @@ -2092,7 +2097,6 @@ ft false false - 5 overhangs_left_depth @@ -2102,7 +2106,6 @@ ft false false - 0 overhangs_left_distance_to_top_of_window @@ -2112,7 +2115,6 @@ ft false false - 1 overhangs_left_distance_to_bottom_of_window @@ -2122,7 +2124,6 @@ ft false false - 5 overhangs_right_depth @@ -2132,7 +2133,6 @@ ft false false - 0 overhangs_right_distance_to_top_of_window @@ -2142,7 +2142,6 @@ ft false false - 1 overhangs_right_distance_to_bottom_of_window @@ -2152,7 +2151,6 @@ ft false false - 5 skylight_area_front @@ -2162,7 +2160,6 @@ ft^2 false false - 0 skylight_area_back @@ -2172,7 +2169,6 @@ ft^2 false false - 0 skylight_area_left @@ -2182,7 +2178,6 @@ ft^2 false false - 0 skylight_area_right @@ -2192,7 +2187,6 @@ ft^2 false false - 0 skylight_ufactor @@ -2202,7 +2196,6 @@ Btu/hr-ft^2-R false false - 0.33 skylight_shgc @@ -2211,7 +2204,6 @@ Double false false - 0.45 skylight_storm_type @@ -2239,7 +2231,6 @@ ft^2 true false - 20 door_rvalue @@ -2249,7 +2240,6 @@ h-ft^2-R/Btu true false - 4.4 air_leakage_leakiness_description @@ -2258,7 +2248,6 @@ Choice false false - average very tight @@ -2376,7 +2365,6 @@ Choice true false - Furnace none @@ -2431,7 +2419,6 @@ Choice false false - natural gas electricity @@ -2471,13 +2458,12 @@ Frac false false - 0.78 heating_system_heating_capacity Heating System: Heating Capacity - The output heating capacity of the heating system. If not provided, the OS-HPXML autosized default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.8.1/workflow_inputs.html#hpxml-heating-systems'>HPXML Heating Systems</a>) is used. - Double + The output heating capacity of the heating system. If auto or not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.8.1/workflow_inputs.html#hpxml-heating-systems'>HPXML Heating Systems</a>) is used. + String Btu/hr false false @@ -2507,7 +2493,6 @@ Frac false false - 1 heating_system_pilot_light @@ -2534,7 +2519,6 @@ Choice true false - central air conditioner none @@ -2569,7 +2553,6 @@ Choice false false - SEER SEER @@ -2596,16 +2579,19 @@ Double false false - 13 cooling_system_cooling_compressor_type Cooling System: Cooling Compressor Type - The compressor type of the cooling system. Only applies to central air conditioner and mini-split. If not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.8.1/workflow_inputs.html#central-air-conditioner'>Central Air Conditioner</a>, <a href='https://openstudio-hpxml.readthedocs.io/en/v1.8.1/workflow_inputs.html#mini-split-air-conditioner'>Mini-Split Air Conditioner</a>) is used. + The compressor type of the cooling system. Only applies to central air conditioner and mini-split. If auto or not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.8.1/workflow_inputs.html#central-air-conditioner'>Central Air Conditioner</a>, <a href='https://openstudio-hpxml.readthedocs.io/en/v1.8.1/workflow_inputs.html#mini-split-air-conditioner'>Mini-Split Air Conditioner</a>) is used. Choice false false + + auto + auto + single stage single stage @@ -2623,8 +2609,8 @@ cooling_system_cooling_sensible_heat_fraction Cooling System: Cooling Sensible Heat Fraction - The sensible heat fraction of the cooling system. Ignored for evaporative cooler. If not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.8.1/workflow_inputs.html#central-air-conditioner'>Central Air Conditioner</a>, <a href='https://openstudio-hpxml.readthedocs.io/en/v1.8.1/workflow_inputs.html#room-air-conditioner'>Room Air Conditioner</a>, <a href='https://openstudio-hpxml.readthedocs.io/en/v1.8.1/workflow_inputs.html#packaged-terminal-air-conditioner'>Packaged Terminal Air Conditioner</a>, <a href='https://openstudio-hpxml.readthedocs.io/en/v1.8.1/workflow_inputs.html#mini-split-air-conditioner'>Mini-Split Air Conditioner</a>) is used. - Double + The sensible heat fraction of the cooling system. Ignored for evaporative cooler. If auto or not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.8.1/workflow_inputs.html#central-air-conditioner'>Central Air Conditioner</a>, <a href='https://openstudio-hpxml.readthedocs.io/en/v1.8.1/workflow_inputs.html#room-air-conditioner'>Room Air Conditioner</a>, <a href='https://openstudio-hpxml.readthedocs.io/en/v1.8.1/workflow_inputs.html#packaged-terminal-air-conditioner'>Packaged Terminal Air Conditioner</a>, <a href='https://openstudio-hpxml.readthedocs.io/en/v1.8.1/workflow_inputs.html#mini-split-air-conditioner'>Mini-Split Air Conditioner</a>) is used. + String Frac false false @@ -2632,8 +2618,8 @@ cooling_system_cooling_capacity Cooling System: Cooling Capacity - The output cooling capacity of the cooling system. If not provided, the OS-HPXML autosized default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.8.1/workflow_inputs.html#central-air-conditioner'>Central Air Conditioner</a>, <a href='https://openstudio-hpxml.readthedocs.io/en/v1.8.1/workflow_inputs.html#room-air-conditioner'>Room Air Conditioner</a>, <a href='https://openstudio-hpxml.readthedocs.io/en/v1.8.1/workflow_inputs.html#packaged-terminal-air-conditioner'>Packaged Terminal Air Conditioner</a>, <a href='https://openstudio-hpxml.readthedocs.io/en/v1.8.1/workflow_inputs.html#evaporative-cooler'>Evaporative Cooler</a>, <a href='https://openstudio-hpxml.readthedocs.io/en/v1.8.1/workflow_inputs.html#mini-split-air-conditioner'>Mini-Split Air Conditioner</a>) is used. - Double + The output cooling capacity of the cooling system. If auto or not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.8.1/workflow_inputs.html#central-air-conditioner'>Central Air Conditioner</a>, <a href='https://openstudio-hpxml.readthedocs.io/en/v1.8.1/workflow_inputs.html#room-air-conditioner'>Room Air Conditioner</a>, <a href='https://openstudio-hpxml.readthedocs.io/en/v1.8.1/workflow_inputs.html#packaged-terminal-air-conditioner'>Packaged Terminal Air Conditioner</a>, <a href='https://openstudio-hpxml.readthedocs.io/en/v1.8.1/workflow_inputs.html#evaporative-cooler'>Evaporative Cooler</a>, <a href='https://openstudio-hpxml.readthedocs.io/en/v1.8.1/workflow_inputs.html#mini-split-air-conditioner'>Mini-Split Air Conditioner</a>) is used. + String Btu/hr false false @@ -2663,7 +2649,6 @@ Frac false false - 1 cooling_system_is_ducted @@ -2672,7 +2657,6 @@ Boolean false false - false true @@ -2705,8 +2689,8 @@ cooling_system_crankcase_heater_watts Cooling System: Crankcase Heater Power Watts - Cooling system crankcase heater power consumption in Watts. Applies only to central air conditioner, room air conditioner, packaged terminal air conditioner and mini-split. If not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.8.1/workflow_inputs.html#central-air-conditioner'>Central Air Conditioner</a>, <a href='https://openstudio-hpxml.readthedocs.io/en/v1.8.1/workflow_inputs.html#room-air-conditioner'>Room Air Conditioner</a>, <a href='https://openstudio-hpxml.readthedocs.io/en/v1.8.1/workflow_inputs.html#packaged-terminal-air-conditioner'>Packaged Terminal Air Conditioner</a>, <a href='https://openstudio-hpxml.readthedocs.io/en/v1.8.1/workflow_inputs.html#mini-split-air-conditioner'>Mini-Split Air Conditioner</a>) is used. - Double + Cooling system crankcase heater power consumption in Watts. Applies only to central air conditioner, room air conditioner, packaged terminal air conditioner and mini-split. If auto or not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.8.1/workflow_inputs.html#central-air-conditioner'>Central Air Conditioner</a>, <a href='https://openstudio-hpxml.readthedocs.io/en/v1.8.1/workflow_inputs.html#room-air-conditioner'>Room Air Conditioner</a>, <a href='https://openstudio-hpxml.readthedocs.io/en/v1.8.1/workflow_inputs.html#packaged-terminal-air-conditioner'>Packaged Terminal Air Conditioner</a>, <a href='https://openstudio-hpxml.readthedocs.io/en/v1.8.1/workflow_inputs.html#mini-split-air-conditioner'>Mini-Split Air Conditioner</a>) is used. + String W false false @@ -2761,8 +2745,8 @@ cooling_system_integrated_heating_system_capacity Cooling System: Integrated Heating System Heating Capacity - The output heating capacity of the heating system integrated into cooling system. If not provided, the OS-HPXML autosized default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.8.1/workflow_inputs.html#room-air-conditioner'>Room Air Conditioner</a>, <a href='https://openstudio-hpxml.readthedocs.io/en/v1.8.1/workflow_inputs.html#packaged-terminal-air-conditioner'>Packaged Terminal Air Conditioner</a>) is used. Only used for room air conditioner and packaged terminal air conditioner. - Double + The output heating capacity of the heating system integrated into cooling system. Only used for room air conditioner and packaged terminal air conditioner. If auto or not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.8.1/workflow_inputs.html#room-air-conditioner'>Room Air Conditioner</a>, <a href='https://openstudio-hpxml.readthedocs.io/en/v1.8.1/workflow_inputs.html#packaged-terminal-air-conditioner'>Packaged Terminal Air Conditioner</a>) is used. + String Btu/hr false false @@ -2783,7 +2767,6 @@ Choice true false - none none @@ -2818,7 +2801,6 @@ Choice false false - HSPF HSPF @@ -2841,7 +2823,6 @@ Double false false - 7.7 heat_pump_cooling_efficiency_type @@ -2850,7 +2831,6 @@ Choice false false - SEER SEER @@ -2877,16 +2857,23 @@ Double false false - 13 heat_pump_cooling_compressor_type Heat Pump: Cooling Compressor Type - The compressor type of the heat pump. Only applies to air-to-air and mini-split. If not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.8.1/workflow_inputs.html#air-to-air-heat-pump'>Air-to-Air Heat Pump</a>, <a href='https://openstudio-hpxml.readthedocs.io/en/v1.8.1/workflow_inputs.html#mini-split-heat-pump'>Mini-Split Heat Pump</a>) is used. + The compressor type of the heat pump. Only applies to air-to-air and mini-split. If auto or not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.8.1/workflow_inputs.html#air-to-air-heat-pump'>Air-to-Air Heat Pump</a>, <a href='https://openstudio-hpxml.readthedocs.io/en/v1.8.1/workflow_inputs.html#mini-split-heat-pump'>Mini-Split Heat Pump</a>) is used. Choice false false + + auto + auto + + + auto + auto + single stage single stage @@ -2904,8 +2891,8 @@ heat_pump_cooling_sensible_heat_fraction Heat Pump: Cooling Sensible Heat Fraction - The sensible heat fraction of the heat pump. If not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.8.1/workflow_inputs.html#air-to-air-heat-pump'>Air-to-Air Heat Pump</a>, <a href='https://openstudio-hpxml.readthedocs.io/en/v1.8.1/workflow_inputs.html#mini-split-heat-pump'>Mini-Split Heat Pump</a>, <a href='https://openstudio-hpxml.readthedocs.io/en/v1.8.1/workflow_inputs.html#packaged-terminal-heat-pump'>Packaged Terminal Heat Pump</a>, <a href='https://openstudio-hpxml.readthedocs.io/en/v1.8.1/workflow_inputs.html#room-air-conditioner-w-reverse-cycle'>Room Air Conditioner w/ Reverse Cycle</a>, <a href='https://openstudio-hpxml.readthedocs.io/en/v1.8.1/workflow_inputs.html#ground-to-air-heat-pump'>Ground-to-Air Heat Pump</a>) is used. - Double + The sensible heat fraction of the heat pump. If auto or not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.8.1/workflow_inputs.html#air-to-air-heat-pump'>Air-to-Air Heat Pump</a>, <a href='https://openstudio-hpxml.readthedocs.io/en/v1.8.1/workflow_inputs.html#mini-split-heat-pump'>Mini-Split Heat Pump</a>, <a href='https://openstudio-hpxml.readthedocs.io/en/v1.8.1/workflow_inputs.html#packaged-terminal-heat-pump'>Packaged Terminal Heat Pump</a>, <a href='https://openstudio-hpxml.readthedocs.io/en/v1.8.1/workflow_inputs.html#room-air-conditioner-w-reverse-cycle'>Room Air Conditioner w/ Reverse Cycle</a>, <a href='https://openstudio-hpxml.readthedocs.io/en/v1.8.1/workflow_inputs.html#ground-to-air-heat-pump'>Ground-to-Air Heat Pump</a>) is used. + String Frac false false @@ -2913,8 +2900,8 @@ heat_pump_heating_capacity Heat Pump: Heating Capacity - The output heating capacity of the heat pump. If not provided, the OS-HPXML autosized default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.8.1/workflow_inputs.html#air-to-air-heat-pump'>Air-to-Air Heat Pump</a>, <a href='https://openstudio-hpxml.readthedocs.io/en/v1.8.1/workflow_inputs.html#mini-split-heat-pump'>Mini-Split Heat Pump</a>, <a href='https://openstudio-hpxml.readthedocs.io/en/v1.8.1/workflow_inputs.html#packaged-terminal-heat-pump'>Packaged Terminal Heat Pump</a>, <a href='https://openstudio-hpxml.readthedocs.io/en/v1.8.1/workflow_inputs.html#room-air-conditioner-w-reverse-cycle'>Room Air Conditioner w/ Reverse Cycle</a>, <a href='https://openstudio-hpxml.readthedocs.io/en/v1.8.1/workflow_inputs.html#ground-to-air-heat-pump'>Ground-to-Air Heat Pump</a>) is used. - Double + The output heating capacity of the heat pump. If auto or not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.8.1/workflow_inputs.html#air-to-air-heat-pump'>Air-to-Air Heat Pump</a>, <a href='https://openstudio-hpxml.readthedocs.io/en/v1.8.1/workflow_inputs.html#mini-split-heat-pump'>Mini-Split Heat Pump</a>, <a href='https://openstudio-hpxml.readthedocs.io/en/v1.8.1/workflow_inputs.html#packaged-terminal-heat-pump'>Packaged Terminal Heat Pump</a>, <a href='https://openstudio-hpxml.readthedocs.io/en/v1.8.1/workflow_inputs.html#room-air-conditioner-w-reverse-cycle'>Room Air Conditioner w/ Reverse Cycle</a>, <a href='https://openstudio-hpxml.readthedocs.io/en/v1.8.1/workflow_inputs.html#ground-to-air-heat-pump'>Ground-to-Air Heat Pump</a>) is used. + String Btu/hr false false @@ -2939,8 +2926,8 @@ heat_pump_heating_capacity_retention_fraction Heat Pump: Heating Capacity Retention Fraction - The output heating capacity of the heat pump at a user-specified temperature (e.g., 17F or 5F) divided by the above nominal heating capacity. Applies to all heat pump types except ground-to-air. If not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.8.1/workflow_inputs.html#air-to-air-heat-pump'>Air-to-Air Heat Pump</a>, <a href='https://openstudio-hpxml.readthedocs.io/en/v1.8.1/workflow_inputs.html#mini-split-heat-pump'>Mini-Split Heat Pump</a>, <a href='https://openstudio-hpxml.readthedocs.io/en/v1.8.1/workflow_inputs.html#packaged-terminal-heat-pump'>Packaged Terminal Heat Pump</a>, <a href='https://openstudio-hpxml.readthedocs.io/en/v1.8.1/workflow_inputs.html#room-air-conditioner-w-reverse-cycle'>Room Air Conditioner w/ Reverse Cycle</a>) is used. - Double + The output heating capacity of the heat pump at a user-specified temperature (e.g., 17F or 5F) divided by the above nominal heating capacity. Applies to all heat pump types except ground-to-air. If auto or not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.8.1/workflow_inputs.html#air-to-air-heat-pump'>Air-to-Air Heat Pump</a>, <a href='https://openstudio-hpxml.readthedocs.io/en/v1.8.1/workflow_inputs.html#mini-split-heat-pump'>Mini-Split Heat Pump</a>, <a href='https://openstudio-hpxml.readthedocs.io/en/v1.8.1/workflow_inputs.html#packaged-terminal-heat-pump'>Packaged Terminal Heat Pump</a>, <a href='https://openstudio-hpxml.readthedocs.io/en/v1.8.1/workflow_inputs.html#room-air-conditioner-w-reverse-cycle'>Room Air Conditioner w/ Reverse Cycle</a>) is used. + String Frac false false @@ -2957,8 +2944,8 @@ heat_pump_cooling_capacity Heat Pump: Cooling Capacity - The output cooling capacity of the heat pump. If not provided, the OS-HPXML autosized default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.8.1/workflow_inputs.html#air-to-air-heat-pump'>Air-to-Air Heat Pump</a>, <a href='https://openstudio-hpxml.readthedocs.io/en/v1.8.1/workflow_inputs.html#mini-split-heat-pump'>Mini-Split Heat Pump</a>, <a href='https://openstudio-hpxml.readthedocs.io/en/v1.8.1/workflow_inputs.html#packaged-terminal-heat-pump'>Packaged Terminal Heat Pump</a>, <a href='https://openstudio-hpxml.readthedocs.io/en/v1.8.1/workflow_inputs.html#room-air-conditioner-w-reverse-cycle'>Room Air Conditioner w/ Reverse Cycle</a>, <a href='https://openstudio-hpxml.readthedocs.io/en/v1.8.1/workflow_inputs.html#ground-to-air-heat-pump'>Ground-to-Air Heat Pump</a>) is used. - Double + The output cooling capacity of the heat pump. If auto or not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.8.1/workflow_inputs.html#air-to-air-heat-pump'>Air-to-Air Heat Pump</a>, <a href='https://openstudio-hpxml.readthedocs.io/en/v1.8.1/workflow_inputs.html#mini-split-heat-pump'>Mini-Split Heat Pump</a>, <a href='https://openstudio-hpxml.readthedocs.io/en/v1.8.1/workflow_inputs.html#packaged-terminal-heat-pump'>Packaged Terminal Heat Pump</a>, <a href='https://openstudio-hpxml.readthedocs.io/en/v1.8.1/workflow_inputs.html#room-air-conditioner-w-reverse-cycle'>Room Air Conditioner w/ Reverse Cycle</a>, <a href='https://openstudio-hpxml.readthedocs.io/en/v1.8.1/workflow_inputs.html#ground-to-air-heat-pump'>Ground-to-Air Heat Pump</a>) is used. + String Btu/hr false false @@ -2988,7 +2975,6 @@ Frac false false - 1 heat_pump_fraction_cool_load_served @@ -2998,13 +2984,12 @@ Frac false false - 1 heat_pump_compressor_lockout_temp Heat Pump: Compressor Lockout Temperature - The temperature below which the heat pump compressor is disabled. If both this and Backup Heating Lockout Temperature are provided and use the same value, it essentially defines a switchover temperature (for, e.g., a dual-fuel heat pump). Applies to all heat pump types other than ground-to-air. If not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.8.1/workflow_inputs.html#air-to-air-heat-pump'>Air-to-Air Heat Pump</a>, <a href='https://openstudio-hpxml.readthedocs.io/en/v1.8.1/workflow_inputs.html#mini-split-heat-pump'>Mini-Split Heat Pump</a>, <a href='https://openstudio-hpxml.readthedocs.io/en/v1.8.1/workflow_inputs.html#packaged-terminal-heat-pump'>Packaged Terminal Heat Pump</a>, <a href='https://openstudio-hpxml.readthedocs.io/en/v1.8.1/workflow_inputs.html#room-air-conditioner-w-reverse-cycle'>Room Air Conditioner w/ Reverse Cycle</a>) is used. - Double + The temperature below which the heat pump compressor is disabled. If both this and Backup Heating Lockout Temperature are provided and use the same value, it essentially defines a switchover temperature (for, e.g., a dual-fuel heat pump). Applies to all heat pump types other than ground-to-air. If auto or not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.8.1/workflow_inputs.html#air-to-air-heat-pump'>Air-to-Air Heat Pump</a>, <a href='https://openstudio-hpxml.readthedocs.io/en/v1.8.1/workflow_inputs.html#mini-split-heat-pump'>Mini-Split Heat Pump</a>, <a href='https://openstudio-hpxml.readthedocs.io/en/v1.8.1/workflow_inputs.html#packaged-terminal-heat-pump'>Packaged Terminal Heat Pump</a>, <a href='https://openstudio-hpxml.readthedocs.io/en/v1.8.1/workflow_inputs.html#room-air-conditioner-w-reverse-cycle'>Room Air Conditioner w/ Reverse Cycle</a>) is used. + String F false false @@ -3016,7 +3001,6 @@ Choice false false - integrated none @@ -3056,7 +3040,6 @@ Choice false false - electricity electricity @@ -3083,13 +3066,12 @@ Double false false - 1 heat_pump_backup_heating_capacity Heat Pump: Backup Heating Capacity - The backup output heating capacity of the heat pump. If not provided, the OS-HPXML autosized default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.8.1/workflow_inputs.html#backup'>Backup</a>) is used. Only applies if Backup Type is 'integrated'. - Double + The backup output heating capacity of the heat pump. Only applies if Backup Type is 'integrated'. If auto or not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.8.1/workflow_inputs.html#backup'>Backup</a>) is used. + String Btu/hr false false @@ -3097,8 +3079,8 @@ heat_pump_backup_heating_lockout_temp Heat Pump: Backup Heating Lockout Temperature - The temperature above which the heat pump backup system is disabled. If both this and Compressor Lockout Temperature are provided and use the same value, it essentially defines a switchover temperature (for, e.g., a dual-fuel heat pump). Applies for both Backup Type of 'integrated' and 'separate'. If not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.8.1/workflow_inputs.html#backup'>Backup</a>) is used. - Double + The temperature above which the heat pump backup system is disabled. If both this and Compressor Lockout Temperature are provided and use the same value, it essentially defines a switchover temperature (for, e.g., a dual-fuel heat pump). Applies for both Backup Type of 'integrated' and 'separate'. If auto or not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.8.1/workflow_inputs.html#backup'>Backup</a>) is used. + String F false false @@ -3106,11 +3088,15 @@ heat_pump_sizing_methodology Heat Pump: Sizing Methodology - The auto-sizing methodology to use when the heat pump capacity is not provided. If not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.8.1/workflow_inputs.html#hpxml-hvac-sizing-control'>HPXML HVAC Sizing Control</a>) is used. + The auto-sizing methodology to use when the heat pump capacity is not provided. If auto or not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.8.1/workflow_inputs.html#hpxml-hvac-sizing-control'>HPXML HVAC Sizing Control</a>) is used. Choice false false + + auto + auto + ACCA ACCA @@ -3128,11 +3114,15 @@ heat_pump_backup_sizing_methodology Heat Pump: Backup Sizing Methodology - The auto-sizing methodology to use when the heat pump backup capacity is not provided. If not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.8.1/workflow_inputs.html#hpxml-hvac-sizing-control'>HPXML HVAC Sizing Control</a>) is used. + The auto-sizing methodology to use when the heat pump backup capacity is not provided. If auto or not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.8.1/workflow_inputs.html#hpxml-hvac-sizing-control'>HPXML HVAC Sizing Control</a>) is used. Choice false false + + auto + auto + emergency emergency @@ -3182,8 +3172,8 @@ heat_pump_crankcase_heater_watts Heat Pump: Crankcase Heater Power Watts - Heat Pump crankcase heater power consumption in Watts. Applies only to air-to-air, mini-split, packaged terminal heat pump and room air conditioner with reverse cycle. If not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.8.1/workflow_inputs.html#air-to-air-heat-pump'>Air-to-Air Heat Pump</a>, <a href='https://openstudio-hpxml.readthedocs.io/en/v1.8.1/workflow_inputs.html#mini-split-heat-pump'>Mini-Split Heat Pump</a>, <a href='https://openstudio-hpxml.readthedocs.io/en/v1.8.1/workflow_inputs.html#packaged-terminal-heat-pump'>Packaged Terminal Heat Pump</a>, <a href='https://openstudio-hpxml.readthedocs.io/en/v1.8.1/workflow_inputs.html#room-air-conditioner-w-reverse-cycle'>Room Air Conditioner w/ Reverse Cycle</a>) is used. - Double + Heat Pump crankcase heater power consumption in Watts. Applies only to air-to-air, mini-split, packaged terminal heat pump and room air conditioner with reverse cycle. If auto or not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.8.1/workflow_inputs.html#air-to-air-heat-pump'>Air-to-Air Heat Pump</a>, <a href='https://openstudio-hpxml.readthedocs.io/en/v1.8.1/workflow_inputs.html#mini-split-heat-pump'>Mini-Split Heat Pump</a>, <a href='https://openstudio-hpxml.readthedocs.io/en/v1.8.1/workflow_inputs.html#packaged-terminal-heat-pump'>Packaged Terminal Heat Pump</a>, <a href='https://openstudio-hpxml.readthedocs.io/en/v1.8.1/workflow_inputs.html#room-air-conditioner-w-reverse-cycle'>Room Air Conditioner w/ Reverse Cycle</a>) is used. + String W false false @@ -3195,7 +3185,6 @@ Choice false false - Absolute capacities Absolute capacities @@ -3300,11 +3289,15 @@ geothermal_loop_configuration Geothermal Loop: Configuration - Configuration of the geothermal loop. Only applies to ground-to-air heat pump type. If not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.8.1/workflow_inputs.html#ground-to-air-heat-pump'>Ground-to-Air Heat Pump</a>) is used. + Configuration of the geothermal loop. Only applies to ground-to-air heat pump type. If auto or not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.8.1/workflow_inputs.html#ground-to-air-heat-pump'>Ground-to-Air Heat Pump</a>) is used. Choice false false + + auto + auto + none none @@ -3318,11 +3311,15 @@ geothermal_loop_borefield_configuration Geothermal Loop: Borefield Configuration - Borefield configuration of the geothermal loop. Only applies to ground-to-air heat pump type. If not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.8.1/workflow_inputs.html#hpxml-geothermal-loops'>HPXML Geothermal Loops</a>) is used. + Borefield configuration of the geothermal loop. Only applies to ground-to-air heat pump type. If auto or not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.8.1/workflow_inputs.html#hpxml-geothermal-loops'>HPXML Geothermal Loops</a>) is used. Choice false false + + auto + auto + Rectangle Rectangle @@ -3352,8 +3349,8 @@ geothermal_loop_loop_flow Geothermal Loop: Loop Flow - Water flow rate through the geothermal loop. Only applies to ground-to-air heat pump type. If not provided, the OS-HPXML autosized default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.8.1/workflow_inputs.html#hpxml-geothermal-loops'>HPXML Geothermal Loops</a>) is used. - Double + Water flow rate through the geothermal loop. Only applies to ground-to-air heat pump type. If auto or not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.8.1/workflow_inputs.html#hpxml-geothermal-loops'>HPXML Geothermal Loops</a>) is used. + String gpm false false @@ -3361,8 +3358,8 @@ geothermal_loop_boreholes_count Geothermal Loop: Boreholes Count - Number of boreholes. Only applies to ground-to-air heat pump type. If not provided, the OS-HPXML autosized default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.8.1/workflow_inputs.html#hpxml-geothermal-loops'>HPXML Geothermal Loops</a>) is used. - Integer + Number of boreholes. Only applies to ground-to-air heat pump type. If auto or not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.8.1/workflow_inputs.html#hpxml-geothermal-loops'>HPXML Geothermal Loops</a>) is used. + String # false false @@ -3370,8 +3367,8 @@ geothermal_loop_boreholes_length Geothermal Loop: Boreholes Length - Average length of each borehole (vertical). Only applies to ground-to-air heat pump type. If not provided, the OS-HPXML autosized default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.8.1/workflow_inputs.html#hpxml-geothermal-loops'>HPXML Geothermal Loops</a>) is used. - Double + Average length of each borehole (vertical). Only applies to ground-to-air heat pump type. If auto or not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.8.1/workflow_inputs.html#hpxml-geothermal-loops'>HPXML Geothermal Loops</a>) is used. + String ft false false @@ -3379,8 +3376,8 @@ geothermal_loop_boreholes_spacing Geothermal Loop: Boreholes Spacing - Distance between bores. Only applies to ground-to-air heat pump type. If not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.8.1/workflow_inputs.html#hpxml-geothermal-loops'>HPXML Geothermal Loops</a>) is used. - Double + Distance between bores. Only applies to ground-to-air heat pump type. If auto or not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.8.1/workflow_inputs.html#hpxml-geothermal-loops'>HPXML Geothermal Loops</a>) is used. + String ft false false @@ -3388,8 +3385,8 @@ geothermal_loop_boreholes_diameter Geothermal Loop: Boreholes Diameter - Diameter of bores. Only applies to ground-to-air heat pump type. If not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.8.1/workflow_inputs.html#hpxml-geothermal-loops'>HPXML Geothermal Loops</a>) is used. - Double + Diameter of bores. Only applies to ground-to-air heat pump type. If auto or not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.8.1/workflow_inputs.html#hpxml-geothermal-loops'>HPXML Geothermal Loops</a>) is used. + String in false false @@ -3397,11 +3394,15 @@ geothermal_loop_grout_type Geothermal Loop: Grout Type - Grout type of the geothermal loop. Only applies to ground-to-air heat pump type. If not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.8.1/workflow_inputs.html#hpxml-geothermal-loops'>HPXML Geothermal Loops</a>) is used. + Grout type of the geothermal loop. Only applies to ground-to-air heat pump type. If auto or not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.8.1/workflow_inputs.html#hpxml-geothermal-loops'>HPXML Geothermal Loops</a>) is used. Choice false false + + auto + auto + standard standard @@ -3415,11 +3416,19 @@ geothermal_loop_pipe_type Geothermal Loop: Pipe Type - Pipe type of the geothermal loop. Only applies to ground-to-air heat pump type. If not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.8.1/workflow_inputs.html#hpxml-geothermal-loops'>HPXML Geothermal Loops</a>) is used. + Pipe type of the geothermal loop. Only applies to ground-to-air heat pump type. If auto or not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.8.1/workflow_inputs.html#hpxml-geothermal-loops'>HPXML Geothermal Loops</a>) is used. Choice false false + + auto + auto + + + auto + auto + standard standard @@ -3433,12 +3442,16 @@ geothermal_loop_pipe_diameter Geothermal Loop: Pipe Diameter - Pipe diameter of the geothermal loop. Only applies to ground-to-air heat pump type. If not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.8.1/workflow_inputs.html#hpxml-geothermal-loops'>HPXML Geothermal Loops</a>) is used. + Pipe diameter of the geothermal loop. Only applies to ground-to-air heat pump type. If auto or not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.8.1/workflow_inputs.html#hpxml-geothermal-loops'>HPXML Geothermal Loops</a>) is used. Choice in false false + + auto + auto + 3/4" pipe 3/4" pipe @@ -3460,7 +3473,6 @@ Choice false false - none none @@ -3507,7 +3519,6 @@ Choice false false - electricity electricity @@ -3547,13 +3558,12 @@ Frac false false - 1 heating_system_2_heating_capacity Heating System 2: Heating Capacity - The output heating capacity of the second heating system. If not provided, the OS-HPXML autosized default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.8.1/workflow_inputs.html#hpxml-heating-systems'>HPXML Heating Systems</a>) is used. - Double + The output heating capacity of the second heating system. If auto or not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.8.1/workflow_inputs.html#hpxml-heating-systems'>HPXML Heating Systems</a>) is used. + String Btu/hr false false @@ -3583,7 +3593,6 @@ Frac false false - 0.25 hvac_control_heating_weekday_setpoint @@ -3624,7 +3633,7 @@ hvac_control_heating_season_period HVAC Control: Heating Season Period - Enter a date range like 'Nov 1 - Jun 30'. If not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.8.1/workflow_inputs.html#hpxml-hvac-control'>HPXML HVAC Control</a>) is used. Can also provide 'BuildingAmerica' to use automatic seasons from the Building America House Simulation Protocols. + Enter a date range like 'Nov 1 - Jun 30'. Can also provide 'BuildingAmerica' to use automatic seasons from the Building America House Simulation Protocols. If auto or not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.8.1/workflow_inputs.html#hpxml-hvac-control'>HPXML HVAC Control</a>) is used. String false false @@ -3632,7 +3641,7 @@ hvac_control_cooling_season_period HVAC Control: Cooling Season Period - Enter a date range like 'Jun 1 - Oct 31'. If not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.8.1/workflow_inputs.html#hpxml-hvac-control'>HPXML HVAC Control</a>) is used. Can also provide 'BuildingAmerica' to use automatic seasons from the Building America House Simulation Protocols. + Enter a date range like 'Jun 1 - Oct 31'. Can also provide 'BuildingAmerica' to use automatic seasons from the Building America House Simulation Protocols. If auto or not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.8.1/workflow_inputs.html#hpxml-hvac-control'>HPXML HVAC Control</a>) is used. String false false @@ -3640,8 +3649,8 @@ hvac_blower_fan_watts_per_cfm HVAC Blower: Fan Efficiency - The blower fan efficiency at maximum fan speed. Applies only to split (not packaged) systems (i.e., applies to ducted systems as well as ductless mini-split systems). If not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.8.1/workflow_inputs.html#hpxml-heating-systems'>HPXML Heating Systems</a>, <a href='https://openstudio-hpxml.readthedocs.io/en/v1.8.1/workflow_inputs.html#hpxml-cooling-systems'>HPXML Cooling Systems</a>, <a href='https://openstudio-hpxml.readthedocs.io/en/v1.8.1/workflow_inputs.html#hpxml-heat-pumps'>HPXML Heat Pumps</a>) is used. - Double + The blower fan efficiency at maximum fan speed. Applies only to split (not packaged) systems (i.e., applies to ducted systems as well as ductless mini-split systems). If auto or not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.8.1/workflow_inputs.html#hpxml-heating-systems'>HPXML Heating Systems</a>, <a href='https://openstudio-hpxml.readthedocs.io/en/v1.8.1/workflow_inputs.html#hpxml-cooling-systems'>HPXML Cooling Systems</a>, <a href='https://openstudio-hpxml.readthedocs.io/en/v1.8.1/workflow_inputs.html#hpxml-heat-pumps'>HPXML Heat Pumps</a>) is used. + String W/CFM false false @@ -3653,7 +3662,6 @@ Choice false false - Percent CFM25 @@ -3676,16 +3684,19 @@ Double false false - 0.1 ducts_supply_location Ducts: Supply Location - The location of the supply ducts. If not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.8.1/workflow_inputs.html#air-distribution'>Air Distribution</a>) is used. + The location of the supply ducts. If auto or not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.8.1/workflow_inputs.html#air-distribution'>Air Distribution</a>) is used. Choice false false + + auto + auto + conditioned space conditioned space @@ -3776,16 +3787,19 @@ h-ft^2-R/Btu false false - 0 ducts_supply_buried_insulation_level Ducts: Supply Buried Insulation Level - Whether the supply ducts are buried in, e.g., attic loose-fill insulation. Partially buried ducts have insulation that does not cover the top of the ducts. Fully buried ducts have insulation that just covers the top of the ducts. Deeply buried ducts have insulation that continues above the top of the ducts. If not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.8.1/workflow_inputs.html#air-distribution'>Air Distribution</a>) is used. + Whether the supply ducts are buried in, e.g., attic loose-fill insulation. Partially buried ducts have insulation that does not cover the top of the ducts. Fully buried ducts have insulation that just covers the top of the ducts. Deeply buried ducts have insulation that continues above the top of the ducts. If auto or not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.8.1/workflow_inputs.html#air-distribution'>Air Distribution</a>) is used. Choice false false + + auto + auto + not buried not buried @@ -3807,8 +3821,8 @@ ducts_supply_surface_area Ducts: Supply Surface Area - The supply ducts surface area in the given location. If neither Surface Area nor Area Fraction provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.8.1/workflow_inputs.html#air-distribution'>Air Distribution</a>) is used. - Double + The supply ducts surface area in the given location. If auto or not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.8.1/workflow_inputs.html#air-distribution'>Air Distribution</a>) is used. + String ft^2 false false @@ -3816,8 +3830,8 @@ ducts_supply_surface_area_fraction Ducts: Supply Area Fraction - The fraction of supply ducts surface area in the given location. Only used if Surface Area is not provided. If the fraction is less than 1, the remaining duct area is assumed to be in conditioned space. If neither Surface Area nor Area Fraction provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.8.1/workflow_inputs.html#air-distribution'>Air Distribution</a>) is used. - Double + The fraction of supply ducts surface area in the given location. Only used if Surface Area is not provided. If the fraction is less than 1, the remaining duct area is assumed to be in conditioned space. If auto or not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.8.1/workflow_inputs.html#air-distribution'>Air Distribution</a>) is used. + String frac false false @@ -3825,8 +3839,8 @@ ducts_supply_fraction_rectangular Ducts: Supply Fraction Rectangular - The fraction of supply ducts that are rectangular (as opposed to round); this affects the duct effective R-value used for modeling. If not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.8.1/workflow_inputs.html#air-distribution'>Air Distribution</a>) is used. - Double + The fraction of supply ducts that are rectangular (as opposed to round); this affects the duct effective R-value used for modeling. If auto or not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.8.1/workflow_inputs.html#air-distribution'>Air Distribution</a>) is used. + String frac false false @@ -3838,16 +3852,23 @@ Double false false - 0.1 ducts_return_location Ducts: Return Location - The location of the return ducts. If not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.8.1/workflow_inputs.html#air-distribution'>Air Distribution</a>) is used. + The location of the return ducts. If auto or not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.8.1/workflow_inputs.html#air-distribution'>Air Distribution</a>) is used. Choice false false + + auto + auto + + + auto + auto + conditioned space conditioned space @@ -3938,16 +3959,23 @@ h-ft^2-R/Btu false false - 0 ducts_return_buried_insulation_level Ducts: Return Buried Insulation Level - Whether the return ducts are buried in, e.g., attic loose-fill insulation. Partially buried ducts have insulation that does not cover the top of the ducts. Fully buried ducts have insulation that just covers the top of the ducts. Deeply buried ducts have insulation that continues above the top of the ducts. If not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.8.1/workflow_inputs.html#air-distribution'>Air Distribution</a>) is used. + Whether the return ducts are buried in, e.g., attic loose-fill insulation. Partially buried ducts have insulation that does not cover the top of the ducts. Fully buried ducts have insulation that just covers the top of the ducts. Deeply buried ducts have insulation that continues above the top of the ducts. If auto or not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.8.1/workflow_inputs.html#air-distribution'>Air Distribution</a>) is used. Choice false false + + auto + auto + + + auto + auto + not buried not buried @@ -3969,8 +3997,8 @@ ducts_return_surface_area Ducts: Return Surface Area - The return ducts surface area in the given location. If neither Surface Area nor Area Fraction provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.8.1/workflow_inputs.html#air-distribution'>Air Distribution</a>) is used. - Double + The return ducts surface area in the given location. If auto or not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.8.1/workflow_inputs.html#air-distribution'>Air Distribution</a>) is used. + String ft^2 false false @@ -3978,8 +4006,8 @@ ducts_return_surface_area_fraction Ducts: Return Area Fraction - The fraction of return ducts surface area in the given location. Only used if Surface Area is not provided. If the fraction is less than 1, the remaining duct area is assumed to be in conditioned space. If neither Surface Area nor Area Fraction provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.8.1/workflow_inputs.html#air-distribution'>Air Distribution</a>) is used. - Double + The fraction of return ducts surface area in the given location. Only used if Surface Area is not provided. If the fraction is less than 1, the remaining duct area is assumed to be in conditioned space. If auto or not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.8.1/workflow_inputs.html#air-distribution'>Air Distribution</a>) is used. + String frac false false @@ -3987,8 +4015,8 @@ ducts_number_of_return_registers Ducts: Number of Return Registers - The number of return registers of the ducts. Only used to calculate default return duct surface area. If not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.8.1/workflow_inputs.html#air-distribution'>Air Distribution</a>) is used. - Integer + The number of return registers of the ducts. Only used to calculate default return duct surface area. If auto or not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.8.1/workflow_inputs.html#air-distribution'>Air Distribution</a>) is used. + String # false false @@ -3996,8 +4024,8 @@ ducts_return_fraction_rectangular Ducts: Return Fraction Rectangular - The fraction of return ducts that are rectangular (as opposed to round); this affects the duct effective R-value used for modeling. If not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.8.1/workflow_inputs.html#air-distribution'>Air Distribution</a>) is used. - Double + The fraction of return ducts that are rectangular (as opposed to round); this affects the duct effective R-value used for modeling. If auto or not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.8.1/workflow_inputs.html#air-distribution'>Air Distribution</a>) is used. + String frac false false @@ -4009,7 +4037,6 @@ Choice false false - none none @@ -4044,8 +4071,8 @@ mech_vent_flow_rate Mechanical Ventilation: Flow Rate - The flow rate of the mechanical ventilation. If not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.8.1/workflow_inputs.html#hpxml-mechanical-ventilation-fans'>HPXML Mechanical Ventilation Fans</a>) is used. - Double + The flow rate of the mechanical ventilation. If auto or not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.8.1/workflow_inputs.html#hpxml-mechanical-ventilation-fans'>HPXML Mechanical Ventilation Fans</a>) is used. + String CFM false false @@ -4053,8 +4080,8 @@ mech_vent_hours_in_operation Mechanical Ventilation: Hours In Operation - The hours in operation of the mechanical ventilation. If not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.8.1/workflow_inputs.html#hpxml-mechanical-ventilation-fans'>HPXML Mechanical Ventilation Fans</a>) is used. - Double + The hours in operation of the mechanical ventilation. If auto or not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.8.1/workflow_inputs.html#hpxml-mechanical-ventilation-fans'>HPXML Mechanical Ventilation Fans</a>) is used. + String hrs/day false false @@ -4066,7 +4093,6 @@ Choice false false - Unadjusted Unadjusted @@ -4086,7 +4112,6 @@ Frac false false - 0.48 mech_vent_sensible_recovery_efficiency @@ -4096,13 +4121,12 @@ Frac false false - 0.72 mech_vent_fan_power Mechanical Ventilation: Fan Power - The fan power of the mechanical ventilation. If not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.8.1/workflow_inputs.html#hpxml-mechanical-ventilation-fans'>HPXML Mechanical Ventilation Fans</a>) is used. - Double + The fan power of the mechanical ventilation. If auto or not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.8.1/workflow_inputs.html#hpxml-mechanical-ventilation-fans'>HPXML Mechanical Ventilation Fans</a>) is used. + String W false false @@ -4115,7 +4139,6 @@ # false false - 1 mech_vent_shared_frac_recirculation @@ -4221,7 +4244,6 @@ Choice false false - none none @@ -4257,7 +4279,6 @@ CFM false false - 110 mech_vent_2_hours_in_operation @@ -4267,7 +4288,6 @@ hrs/day false false - 24 mech_vent_2_recovery_efficiency_type @@ -4276,7 +4296,6 @@ Choice false false - Unadjusted Unadjusted @@ -4296,7 +4315,6 @@ Frac false false - 0.48 mech_vent_2_sensible_recovery_efficiency @@ -4306,7 +4324,6 @@ Frac false false - 0.72 mech_vent_2_fan_power @@ -4316,13 +4333,12 @@ W false false - 30 kitchen_fans_quantity Kitchen Fans: Quantity - The quantity of the kitchen fans. If not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.8.1/workflow_inputs.html#hpxml-local-ventilation-fans'>HPXML Local Ventilation Fans</a>) is used. - Integer + The quantity of the kitchen fans. If auto or not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.8.1/workflow_inputs.html#hpxml-local-ventilation-fans'>HPXML Local Ventilation Fans</a>) is used. + String # false false @@ -4330,8 +4346,8 @@ kitchen_fans_flow_rate Kitchen Fans: Flow Rate - The flow rate of the kitchen fan. If not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.8.1/workflow_inputs.html#hpxml-local-ventilation-fans'>HPXML Local Ventilation Fans</a>) is used. - Double + The flow rate of the kitchen fan. If auto or not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.8.1/workflow_inputs.html#hpxml-local-ventilation-fans'>HPXML Local Ventilation Fans</a>) is used. + String CFM false false @@ -4339,8 +4355,8 @@ kitchen_fans_hours_in_operation Kitchen Fans: Hours In Operation - The hours in operation of the kitchen fan. If not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.8.1/workflow_inputs.html#hpxml-local-ventilation-fans'>HPXML Local Ventilation Fans</a>) is used. - Double + The hours in operation of the kitchen fan. If auto or not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.8.1/workflow_inputs.html#hpxml-local-ventilation-fans'>HPXML Local Ventilation Fans</a>) is used. + String hrs/day false false @@ -4348,8 +4364,8 @@ kitchen_fans_power Kitchen Fans: Fan Power - The fan power of the kitchen fan. If not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.8.1/workflow_inputs.html#hpxml-local-ventilation-fans'>HPXML Local Ventilation Fans</a>) is used. - Double + The fan power of the kitchen fan. If auto or not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.8.1/workflow_inputs.html#hpxml-local-ventilation-fans'>HPXML Local Ventilation Fans</a>) is used. + String W false false @@ -4357,8 +4373,8 @@ kitchen_fans_start_hour Kitchen Fans: Start Hour - The start hour of the kitchen fan. If not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.8.1/workflow_inputs.html#hpxml-local-ventilation-fans'>HPXML Local Ventilation Fans</a>) is used. - Integer + The start hour of the kitchen fan. If auto or not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.8.1/workflow_inputs.html#hpxml-local-ventilation-fans'>HPXML Local Ventilation Fans</a>) is used. + String hr false false @@ -4366,8 +4382,8 @@ bathroom_fans_quantity Bathroom Fans: Quantity - The quantity of the bathroom fans. If not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.8.1/workflow_inputs.html#hpxml-local-ventilation-fans'>HPXML Local Ventilation Fans</a>) is used. - Integer + The quantity of the bathroom fans. If auto or not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.8.1/workflow_inputs.html#hpxml-local-ventilation-fans'>HPXML Local Ventilation Fans</a>) is used. + String # false false @@ -4375,8 +4391,8 @@ bathroom_fans_flow_rate Bathroom Fans: Flow Rate - The flow rate of the bathroom fans. If not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.8.1/workflow_inputs.html#hpxml-local-ventilation-fans'>HPXML Local Ventilation Fans</a>) is used. - Double + The flow rate of the bathroom fans. If auto or not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.8.1/workflow_inputs.html#hpxml-local-ventilation-fans'>HPXML Local Ventilation Fans</a>) is used. + String CFM false false @@ -4384,8 +4400,8 @@ bathroom_fans_hours_in_operation Bathroom Fans: Hours In Operation - The hours in operation of the bathroom fans. If not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.8.1/workflow_inputs.html#hpxml-local-ventilation-fans'>HPXML Local Ventilation Fans</a>) is used. - Double + The hours in operation of the bathroom fans. If auto or not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.8.1/workflow_inputs.html#hpxml-local-ventilation-fans'>HPXML Local Ventilation Fans</a>) is used. + String hrs/day false false @@ -4393,8 +4409,8 @@ bathroom_fans_power Bathroom Fans: Fan Power - The fan power of the bathroom fans. If not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.8.1/workflow_inputs.html#hpxml-local-ventilation-fans'>HPXML Local Ventilation Fans</a>) is used. - Double + The fan power of the bathroom fans. If auto or not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.8.1/workflow_inputs.html#hpxml-local-ventilation-fans'>HPXML Local Ventilation Fans</a>) is used. + String W false false @@ -4402,8 +4418,8 @@ bathroom_fans_start_hour Bathroom Fans: Start Hour - The start hour of the bathroom fans. If not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.8.1/workflow_inputs.html#hpxml-local-ventilation-fans'>HPXML Local Ventilation Fans</a>) is used. - Integer + The start hour of the bathroom fans. If auto or not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.8.1/workflow_inputs.html#hpxml-local-ventilation-fans'>HPXML Local Ventilation Fans</a>) is used. + String hr false false @@ -4415,7 +4431,6 @@ Boolean false false - false true @@ -4430,8 +4445,8 @@ whole_house_fan_flow_rate Whole House Fan: Flow Rate - The flow rate of the whole house fan. If not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.8.1/workflow_inputs.html#hpxml-whole-house-fans'>HPXML Whole House Fans</a>) is used. - Double + The flow rate of the whole house fan. If auto or not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.8.1/workflow_inputs.html#hpxml-whole-house-fans'>HPXML Whole House Fans</a>) is used. + String CFM false false @@ -4439,8 +4454,8 @@ whole_house_fan_power Whole House Fan: Fan Power - The fan power of the whole house fan. If not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.8.1/workflow_inputs.html#hpxml-whole-house-fans'>HPXML Whole House Fans</a>) is used. - Double + The fan power of the whole house fan. If auto or not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.8.1/workflow_inputs.html#hpxml-whole-house-fans'>HPXML Whole House Fans</a>) is used. + String W false false @@ -4452,7 +4467,6 @@ Choice true false - storage water heater none @@ -4487,7 +4501,6 @@ Choice false false - natural gas electricity @@ -4518,11 +4531,15 @@ water_heater_location Water Heater: Location - The location of water heater. If not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.8.1/workflow_inputs.html#hpxml-water-heating-systems'>HPXML Water Heating Systems</a>) is used. + The location of water heater. If auto or not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.8.1/workflow_inputs.html#hpxml-water-heating-systems'>HPXML Water Heating Systems</a>) is used. Choice false false + + auto + auto + conditioned space conditioned space @@ -4592,8 +4609,8 @@ water_heater_tank_volume Water Heater: Tank Volume - Nominal volume of water heater tank. If not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.8.1/workflow_inputs.html#conventional-storage'>Conventional Storage</a>, <a href='https://openstudio-hpxml.readthedocs.io/en/v1.8.1/workflow_inputs.html#heat-pump'>Heat Pump</a>, <a href='https://openstudio-hpxml.readthedocs.io/en/v1.8.1/workflow_inputs.html#combi-boiler-w-storage'>Combi Boiler w/ Storage</a>) is used. - Double + Nominal volume of water heater tank. If auto or not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.8.1/workflow_inputs.html#conventional-storage'>Conventional Storage</a>, <a href='https://openstudio-hpxml.readthedocs.io/en/v1.8.1/workflow_inputs.html#heat-pump'>Heat Pump</a>, <a href='https://openstudio-hpxml.readthedocs.io/en/v1.8.1/workflow_inputs.html#combi-boiler-w-storage'>Combi Boiler w/ Storage</a>) is used. + String gal false false @@ -4605,7 +4622,6 @@ Choice false false - EnergyFactor EnergyFactor @@ -4624,19 +4640,22 @@ Double false false - 0.67 water_heater_usage_bin Water Heater: Usage Bin - The usage of the water heater. Only applies if Efficiency Type is UniformEnergyFactor and Type is not instantaneous water heater. Does not apply to space-heating boilers. If not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.8.1/workflow_inputs.html#conventional-storage'>Conventional Storage</a>, <a href='https://openstudio-hpxml.readthedocs.io/en/v1.8.1/workflow_inputs.html#heat-pump'>Heat Pump</a>) is used. + The usage of the water heater. Only applies if Efficiency Type is UniformEnergyFactor and Type is not instantaneous water heater. Does not apply to space-heating boilers. If auto or not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.8.1/workflow_inputs.html#conventional-storage'>Conventional Storage</a>, <a href='https://openstudio-hpxml.readthedocs.io/en/v1.8.1/workflow_inputs.html#heat-pump'>Heat Pump</a>) is used. Choice false false - very small - very small + auto + auto + + + very small + very small low @@ -4655,8 +4674,8 @@ water_heater_recovery_efficiency Water Heater: Recovery Efficiency - Ratio of energy delivered to water heater to the energy content of the fuel consumed by the water heater. Only used for non-electric storage water heaters. If not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.8.1/workflow_inputs.html#conventional-storage'>Conventional Storage</a>) is used. - Double + Ratio of energy delivered to water heater to the energy content of the fuel consumed by the water heater. Only used for non-electric storage water heaters. If auto or not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.8.1/workflow_inputs.html#conventional-storage'>Conventional Storage</a>) is used. + String Frac false false @@ -4664,8 +4683,8 @@ water_heater_heating_capacity Water Heater: Heating Capacity - Heating capacity. Only applies to storage water heater and heat pump water heater (compressor). If not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.8.1/workflow_inputs.html#conventional-storage'>Conventional Storage</a>, <a href='https://openstudio-hpxml.readthedocs.io/en/v1.8.1/workflow_inputs.html#heat-pump'>Heat Pump</a>) is used. - Double + Heating capacity. Only applies to storage water heater and heat pump water heater (compressor). If auto or not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.8.1/workflow_inputs.html#conventional-storage'>Conventional Storage</a>, <a href='https://openstudio-hpxml.readthedocs.io/en/v1.8.1/workflow_inputs.html#heat-pump'>Heat Pump</a>) is used. + String Btu/hr false false @@ -4673,8 +4692,8 @@ water_heater_backup_heating_capacity Water Heater: Backup Heating Capacity - Backup heating capacity for a heat pump water heater. If not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.8.1/workflow_inputs.html#heat-pump'>Heat Pump</a>) is used. - Double + Backup heating capacity for a heat pump water heater. If auto or not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.8.1/workflow_inputs.html#heat-pump'>Heat Pump</a>) is used. + String Btu/hr false false @@ -4682,8 +4701,8 @@ water_heater_standby_loss Water Heater: Standby Loss - The standby loss of water heater. Only applies to space-heating boilers. If not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.8.1/workflow_inputs.html#combi-boiler-w-storage'>Combi Boiler w/ Storage</a>) is used. - Double + The standby loss of water heater. Only applies to space-heating boilers. If auto or not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.8.1/workflow_inputs.html#combi-boiler-w-storage'>Combi Boiler w/ Storage</a>) is used. + String F/hr false false @@ -4700,8 +4719,8 @@ water_heater_setpoint_temperature Water Heater: Setpoint Temperature - The setpoint temperature of water heater. If not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.8.1/workflow_inputs.html#hpxml-water-heating-systems'>HPXML Water Heating Systems</a>) is used. - Double + The setpoint temperature of water heater. If auto or not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.8.1/workflow_inputs.html#hpxml-water-heating-systems'>HPXML Water Heating Systems</a>) is used. + String F false false @@ -4736,11 +4755,15 @@ water_heater_tank_model_type Water Heater: Tank Type - Type of tank model to use. The 'stratified' tank generally provide more accurate results, but may significantly increase run time. Applies only to storage water heater. If not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.8.1/workflow_inputs.html#conventional-storage'>Conventional Storage</a>) is used. + Type of tank model to use. The 'stratified' tank generally provide more accurate results, but may significantly increase run time. Applies only to storage water heater. If auto or not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.8.1/workflow_inputs.html#conventional-storage'>Conventional Storage</a>) is used. Choice false false + + auto + auto + mixed mixed @@ -4754,11 +4777,15 @@ water_heater_operating_mode Water Heater: Operating Mode - The water heater operating mode. The 'heat pump only' option only uses the heat pump, while 'hybrid/auto' allows the backup electric resistance to come on in high demand situations. This is ignored if a scheduled operating mode type is selected. Applies only to heat pump water heater. If not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.8.1/workflow_inputs.html#heat-pump'>Heat Pump</a>) is used. + The water heater operating mode. The 'heat pump only' option only uses the heat pump, while 'hybrid/auto' allows the backup electric resistance to come on in high demand situations. This is ignored if a scheduled operating mode type is selected. Applies only to heat pump water heater. If auto or not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.8.1/workflow_inputs.html#heat-pump'>Heat Pump</a>) is used. Choice false false + + auto + auto + hybrid/auto hybrid/auto @@ -4776,7 +4803,6 @@ Choice true false - Standard Standard @@ -4791,8 +4817,8 @@ hot_water_distribution_standard_piping_length Hot Water Distribution: Standard Piping Length - If the distribution system is Standard, the length of the piping. If not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.8.1/workflow_inputs.html#standard'>Standard</a>) is used. - Double + If the distribution system is Standard, the length of the piping. If auto or not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.8.1/workflow_inputs.html#standard'>Standard</a>) is used. + String ft false false @@ -4804,7 +4830,6 @@ Choice false false - no control no control @@ -4831,8 +4856,8 @@ hot_water_distribution_recirc_piping_length Hot Water Distribution: Recirculation Piping Length - If the distribution system is Recirculation, the length of the recirculation piping. If not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.8.1/workflow_inputs.html#recirculation-in-unit'>Recirculation (In-Unit)</a>) is used. - Double + If the distribution system is Recirculation, the length of the recirculation piping. If auto or not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.8.1/workflow_inputs.html#recirculation-in-unit'>Recirculation (In-Unit)</a>) is used. + String ft false false @@ -4840,8 +4865,8 @@ hot_water_distribution_recirc_branch_piping_length Hot Water Distribution: Recirculation Branch Piping Length - If the distribution system is Recirculation, the length of the recirculation branch piping. If not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.8.1/workflow_inputs.html#recirculation-in-unit'>Recirculation (In-Unit)</a>) is used. - Double + If the distribution system is Recirculation, the length of the recirculation branch piping. If auto or not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.8.1/workflow_inputs.html#recirculation-in-unit'>Recirculation (In-Unit)</a>) is used. + String ft false false @@ -4849,8 +4874,8 @@ hot_water_distribution_recirc_pump_power Hot Water Distribution: Recirculation Pump Power - If the distribution system is Recirculation, the recirculation pump power. If not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.8.1/workflow_inputs.html#recirculation-in-unit'>Recirculation (In-Unit)</a>) is used. - Double + If the distribution system is Recirculation, the recirculation pump power. If auto or not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.8.1/workflow_inputs.html#recirculation-in-unit'>Recirculation (In-Unit)</a>) is used. + String W false false @@ -4858,8 +4883,8 @@ hot_water_distribution_pipe_r Hot Water Distribution: Pipe Insulation Nominal R-Value - Nominal R-value of the pipe insulation. If not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.8.1/workflow_inputs.html#hpxml-hot-water-distribution'>HPXML Hot Water Distribution</a>) is used. - Double + Nominal R-value of the pipe insulation. If auto or not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.8.1/workflow_inputs.html#hpxml-hot-water-distribution'>HPXML Hot Water Distribution</a>) is used. + String h-ft^2-R/Btu false false @@ -4871,7 +4896,6 @@ Choice false false - none none @@ -4894,7 +4918,6 @@ Boolean false false - true true @@ -4914,7 +4937,6 @@ Frac false false - 0.55 water_fixtures_shower_low_flow @@ -4923,7 +4945,6 @@ Boolean false false - false true @@ -4942,7 +4963,6 @@ Boolean false false - false true @@ -4957,16 +4977,16 @@ water_fixtures_usage_multiplier Hot Water Fixtures: Usage Multiplier - Multiplier on the hot water usage that can reflect, e.g., high/low usage occupants. If not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.8.1/workflow_inputs.html#hpxml-water-fixtures'>HPXML Water Fixtures</a>) is used. - Double + Multiplier on the hot water usage that can reflect, e.g., high/low usage occupants. If auto or not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.8.1/workflow_inputs.html#hpxml-water-fixtures'>HPXML Water Fixtures</a>) is used. + String false false general_water_use_usage_multiplier General Water Use: Usage Multiplier - Multiplier on internal gains from general water use (floor mopping, shower evaporation, water films on showers, tubs & sinks surfaces, plant watering, etc.) that can reflect, e.g., high/low usage occupants. If not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.8.1/workflow_inputs.html#hpxml-building-occupancy'>HPXML Building Occupancy</a>) is used. - Double + Multiplier on internal gains from general water use (floor mopping, shower evaporation, water films on showers, tubs & sinks surfaces, plant watering, etc.) that can reflect, e.g., high/low usage occupants. If auto or not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.8.1/workflow_inputs.html#hpxml-building-occupancy'>HPXML Building Occupancy</a>) is used. + String false false @@ -4977,7 +4997,6 @@ Choice false false - none none @@ -4997,7 +5016,6 @@ ft^2 false false - 40 solar_thermal_collector_loop_type @@ -5006,7 +5024,6 @@ Choice false false - liquid direct liquid direct @@ -5029,7 +5046,6 @@ Choice false false - evacuated tube evacuated tube @@ -5057,7 +5073,6 @@ degrees false false - 180 solar_thermal_collector_tilt @@ -5067,7 +5082,6 @@ degrees false false - RoofPitch solar_thermal_collector_rated_optical_efficiency @@ -5077,7 +5091,6 @@ Frac false false - 0.5 solar_thermal_collector_rated_thermal_losses @@ -5087,13 +5100,12 @@ Btu/hr-ft^2-R false false - 0.2799 solar_thermal_storage_volume Solar Thermal: Storage Volume - The storage volume of the solar thermal system. If not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.8.1/workflow_inputs.html#detailed-inputs'>Detailed Inputs</a>) is used. - Double + The storage volume of the solar thermal system. If auto or not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.8.1/workflow_inputs.html#detailed-inputs'>Detailed Inputs</a>) is used. + String gal false false @@ -5106,7 +5118,6 @@ Frac false false - 0 pv_system_present @@ -5115,7 +5126,6 @@ Boolean false false - false true @@ -5130,11 +5140,15 @@ pv_system_module_type PV System: Module Type - Module type of the PV system. If not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.8.1/workflow_inputs.html#hpxml-photovoltaics'>HPXML Photovoltaics</a>) is used. + Module type of the PV system. If auto or not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.8.1/workflow_inputs.html#hpxml-photovoltaics'>HPXML Photovoltaics</a>) is used. Choice false false + + auto + auto + standard standard @@ -5152,11 +5166,15 @@ pv_system_location PV System: Location - Location of the PV system. If not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.8.1/workflow_inputs.html#hpxml-photovoltaics'>HPXML Photovoltaics</a>) is used. + Location of the PV system. If auto or not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.8.1/workflow_inputs.html#hpxml-photovoltaics'>HPXML Photovoltaics</a>) is used. Choice false false + + auto + auto + roof roof @@ -5170,11 +5188,15 @@ pv_system_tracking PV System: Tracking - Type of tracking for the PV system. If not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.8.1/workflow_inputs.html#hpxml-photovoltaics'>HPXML Photovoltaics</a>) is used. + Type of tracking for the PV system. If auto or not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.8.1/workflow_inputs.html#hpxml-photovoltaics'>HPXML Photovoltaics</a>) is used. Choice false false + + auto + auto + fixed fixed @@ -5201,7 +5223,6 @@ degrees false false - 180 pv_system_array_tilt @@ -5211,7 +5232,6 @@ degrees false false - RoofPitch pv_system_max_power_output @@ -5221,13 +5241,12 @@ W false false - 4000 pv_system_inverter_efficiency PV System: Inverter Efficiency - Inverter efficiency of the PV system. If there are two PV systems, this will apply to both. If not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.8.1/workflow_inputs.html#hpxml-photovoltaics'>HPXML Photovoltaics</a>) is used. - Double + Inverter efficiency of the PV system. If there are two PV systems, this will apply to both. If auto or not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.8.1/workflow_inputs.html#hpxml-photovoltaics'>HPXML Photovoltaics</a>) is used. + String Frac false false @@ -5235,8 +5254,8 @@ pv_system_system_losses_fraction PV System: System Losses Fraction - System losses fraction of the PV system. If there are two PV systems, this will apply to both. If not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.8.1/workflow_inputs.html#hpxml-photovoltaics'>HPXML Photovoltaics</a>) is used. - Double + System losses fraction of the PV system. If there are two PV systems, this will apply to both. If auto or not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.8.1/workflow_inputs.html#hpxml-photovoltaics'>HPXML Photovoltaics</a>) is used. + String Frac false false @@ -5257,7 +5276,6 @@ Boolean false false - false true @@ -5272,11 +5290,19 @@ pv_system_2_module_type PV System 2: Module Type - Module type of the second PV system. If not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.8.1/workflow_inputs.html#hpxml-photovoltaics'>HPXML Photovoltaics</a>) is used. + Module type of the second PV system. If auto or not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.8.1/workflow_inputs.html#hpxml-photovoltaics'>HPXML Photovoltaics</a>) is used. Choice false false + + auto + auto + + + auto + auto + standard standard @@ -5294,11 +5320,19 @@ pv_system_2_location PV System 2: Location - Location of the second PV system. If not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.8.1/workflow_inputs.html#hpxml-photovoltaics'>HPXML Photovoltaics</a>) is used. + Location of the second PV system. If auto or not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.8.1/workflow_inputs.html#hpxml-photovoltaics'>HPXML Photovoltaics</a>) is used. Choice false false + + auto + auto + + + auto + auto + roof roof @@ -5312,11 +5346,19 @@ pv_system_2_tracking PV System 2: Tracking - Type of tracking for the second PV system. If not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.8.1/workflow_inputs.html#hpxml-photovoltaics'>HPXML Photovoltaics</a>) is used. + Type of tracking for the second PV system. If auto or not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.8.1/workflow_inputs.html#hpxml-photovoltaics'>HPXML Photovoltaics</a>) is used. Choice false false + + auto + auto + + + auto + auto + fixed fixed @@ -5343,7 +5385,6 @@ degrees false false - 180 pv_system_2_array_tilt @@ -5353,7 +5394,6 @@ degrees false false - RoofPitch pv_system_2_max_power_output @@ -5363,7 +5403,6 @@ W false false - 4000 battery_present @@ -5372,7 +5411,6 @@ Boolean false false - false true @@ -5387,11 +5425,15 @@ battery_location Battery: Location - The space type for the lithium ion battery location. If not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.8.1/workflow_inputs.html#hpxml-batteries'>HPXML Batteries</a>) is used. + The space type for the lithium ion battery location. If auto or not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.8.1/workflow_inputs.html#hpxml-batteries'>HPXML Batteries</a>) is used. Choice false false + + auto + auto + conditioned space conditioned space @@ -5445,8 +5487,8 @@ battery_power Battery: Rated Power Output - The rated power output of the lithium ion battery. If not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.8.1/workflow_inputs.html#hpxml-batteries'>HPXML Batteries</a>) is used. - Double + The rated power output of the lithium ion battery. If auto or not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.8.1/workflow_inputs.html#hpxml-batteries'>HPXML Batteries</a>) is used. + String W false false @@ -5454,8 +5496,8 @@ battery_capacity Battery: Nominal Capacity - The nominal capacity of the lithium ion battery. If not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.8.1/workflow_inputs.html#hpxml-batteries'>HPXML Batteries</a>) is used. - Double + The nominal capacity of the lithium ion battery. If auto or not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.8.1/workflow_inputs.html#hpxml-batteries'>HPXML Batteries</a>) is used. + String kWh false false @@ -5463,8 +5505,8 @@ battery_usable_capacity Battery: Usable Capacity - The usable capacity of the lithium ion battery. If not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.8.1/workflow_inputs.html#hpxml-batteries'>HPXML Batteries</a>) is used. - Double + The usable capacity of the lithium ion battery. If auto or not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.8.1/workflow_inputs.html#hpxml-batteries'>HPXML Batteries</a>) is used. + String kWh false false @@ -5472,8 +5514,8 @@ battery_round_trip_efficiency Battery: Round Trip Efficiency - The round trip efficiency of the lithium ion battery. If not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.8.1/workflow_inputs.html#hpxml-batteries'>HPXML Batteries</a>) is used. - Double + The round trip efficiency of the lithium ion battery. If auto or not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.8.1/workflow_inputs.html#hpxml-batteries'>HPXML Batteries</a>) is used. + String Frac false false @@ -5494,7 +5536,6 @@ Boolean true false - true true @@ -5513,7 +5554,6 @@ Double false false - 0.1 lighting_interior_fraction_lfl @@ -5522,7 +5562,6 @@ Double false false - 0 lighting_interior_fraction_led @@ -5531,13 +5570,12 @@ Double false false - 0 lighting_interior_usage_multiplier Lighting: Interior Usage Multiplier - Multiplier on the lighting energy usage (interior) that can reflect, e.g., high/low usage occupants. If not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.8.1/workflow_inputs.html#hpxml-lighting'>HPXML Lighting</a>) is used. - Double + Multiplier on the lighting energy usage (interior) that can reflect, e.g., high/low usage occupants. If auto or not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.8.1/workflow_inputs.html#hpxml-lighting'>HPXML Lighting</a>) is used. + String false false @@ -5548,7 +5586,6 @@ Double false false - 0 lighting_exterior_fraction_lfl @@ -5557,7 +5594,6 @@ Double false false - 0 lighting_exterior_fraction_led @@ -5566,13 +5602,12 @@ Double false false - 0 lighting_exterior_usage_multiplier Lighting: Exterior Usage Multiplier - Multiplier on the lighting energy usage (exterior) that can reflect, e.g., high/low usage occupants. If not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.8.1/workflow_inputs.html#hpxml-lighting'>HPXML Lighting</a>) is used. - Double + Multiplier on the lighting energy usage (exterior) that can reflect, e.g., high/low usage occupants. If auto or not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.8.1/workflow_inputs.html#hpxml-lighting'>HPXML Lighting</a>) is used. + String false false @@ -5583,7 +5618,6 @@ Double false false - 0 lighting_garage_fraction_lfl @@ -5592,7 +5626,6 @@ Double false false - 0 lighting_garage_fraction_led @@ -5601,13 +5634,12 @@ Double false false - 0 lighting_garage_usage_multiplier Lighting: Garage Usage Multiplier - Multiplier on the lighting energy usage (garage) that can reflect, e.g., high/low usage occupants. If not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.8.1/workflow_inputs.html#hpxml-lighting'>HPXML Lighting</a>) is used. - Double + Multiplier on the lighting energy usage (garage) that can reflect, e.g., high/low usage occupants. If auto or not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.8.1/workflow_inputs.html#hpxml-lighting'>HPXML Lighting</a>) is used. + String false false @@ -5618,7 +5650,6 @@ Boolean false false - false true @@ -5633,8 +5664,8 @@ holiday_lighting_daily_kwh Holiday Lighting: Daily Consumption - The daily energy consumption for holiday lighting (exterior). If not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.8.1/workflow_inputs.html#hpxml-lighting'>HPXML Lighting</a>) is used. - Double + The daily energy consumption for holiday lighting (exterior). If auto or not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.8.1/workflow_inputs.html#hpxml-lighting'>HPXML Lighting</a>) is used. + String kWh/day false false @@ -5642,7 +5673,7 @@ holiday_lighting_period Holiday Lighting: Period - Enter a date range like 'Nov 25 - Jan 5'. If not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.8.1/workflow_inputs.html#hpxml-lighting'>HPXML Lighting</a>) is used. + Enter a date range like 'Nov 25 - Jan 5'. If auto or not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.8.1/workflow_inputs.html#hpxml-lighting'>HPXML Lighting</a>) is used. String false false @@ -5654,7 +5685,6 @@ Choice false false - none none @@ -5677,7 +5707,6 @@ Choice false false - IntegratedEnergyFactor EnergyFactor @@ -5697,7 +5726,6 @@ liters/kWh false false - 1.5 dehumidifier_capacity @@ -5707,7 +5735,6 @@ pint/day false false - 40 dehumidifier_rh_setpoint @@ -5717,7 +5744,6 @@ Frac false false - 0.5 dehumidifier_fraction_dehumidification_load_served @@ -5727,7 +5753,6 @@ Frac false false - 1 clothes_washer_present @@ -5736,7 +5761,6 @@ Boolean true false - true true @@ -5751,11 +5775,15 @@ clothes_washer_location Clothes Washer: Location - The space type for the clothes washer location. If not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.8.1/workflow_inputs.html#hpxml-clothes-washer'>HPXML Clothes Washer</a>) is used. + The space type for the clothes washer location. If auto or not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.8.1/workflow_inputs.html#hpxml-clothes-washer'>HPXML Clothes Washer</a>) is used. Choice false false + + auto + auto + conditioned space conditioned space @@ -5797,7 +5825,6 @@ Choice false false - IntegratedModifiedEnergyFactor ModifiedEnergyFactor @@ -5812,8 +5839,8 @@ clothes_washer_efficiency Clothes Washer: Efficiency - The efficiency of the clothes washer. If not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.8.1/workflow_inputs.html#hpxml-clothes-washer'>HPXML Clothes Washer</a>) is used. - Double + The efficiency of the clothes washer. If auto or not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.8.1/workflow_inputs.html#hpxml-clothes-washer'>HPXML Clothes Washer</a>) is used. + String ft^3/kWh-cyc false false @@ -5821,8 +5848,8 @@ clothes_washer_rated_annual_kwh Clothes Washer: Rated Annual Consumption - The annual energy consumed by the clothes washer, as rated, obtained from the EnergyGuide label. This includes both the appliance electricity consumption and the energy required for water heating. If not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.8.1/workflow_inputs.html#hpxml-clothes-washer'>HPXML Clothes Washer</a>) is used. - Double + The annual energy consumed by the clothes washer, as rated, obtained from the EnergyGuide label. This includes both the appliance electricity consumption and the energy required for water heating. If auto or not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.8.1/workflow_inputs.html#hpxml-clothes-washer'>HPXML Clothes Washer</a>) is used. + String kWh/yr false false @@ -5830,8 +5857,8 @@ clothes_washer_label_electric_rate Clothes Washer: Label Electric Rate - The annual energy consumed by the clothes washer, as rated, obtained from the EnergyGuide label. This includes both the appliance electricity consumption and the energy required for water heating. If not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.8.1/workflow_inputs.html#hpxml-clothes-washer'>HPXML Clothes Washer</a>) is used. - Double + The annual energy consumed by the clothes washer, as rated, obtained from the EnergyGuide label. This includes both the appliance electricity consumption and the energy required for water heating. If auto or not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.8.1/workflow_inputs.html#hpxml-clothes-washer'>HPXML Clothes Washer</a>) is used. + String $/kWh false false @@ -5839,8 +5866,8 @@ clothes_washer_label_gas_rate Clothes Washer: Label Gas Rate - The annual energy consumed by the clothes washer, as rated, obtained from the EnergyGuide label. This includes both the appliance electricity consumption and the energy required for water heating. If not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.8.1/workflow_inputs.html#hpxml-clothes-washer'>HPXML Clothes Washer</a>) is used. - Double + The annual energy consumed by the clothes washer, as rated, obtained from the EnergyGuide label. This includes both the appliance electricity consumption and the energy required for water heating. If auto or not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.8.1/workflow_inputs.html#hpxml-clothes-washer'>HPXML Clothes Washer</a>) is used. + String $/therm false false @@ -5848,8 +5875,8 @@ clothes_washer_label_annual_gas_cost Clothes Washer: Label Annual Cost with Gas DHW - The annual cost of using the system under test conditions. Input is obtained from the EnergyGuide label. If not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.8.1/workflow_inputs.html#hpxml-clothes-washer'>HPXML Clothes Washer</a>) is used. - Double + The annual cost of using the system under test conditions. Input is obtained from the EnergyGuide label. If auto or not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.8.1/workflow_inputs.html#hpxml-clothes-washer'>HPXML Clothes Washer</a>) is used. + String $ false false @@ -5857,8 +5884,8 @@ clothes_washer_label_usage Clothes Washer: Label Usage - The clothes washer loads per week. If not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.8.1/workflow_inputs.html#hpxml-clothes-washer'>HPXML Clothes Washer</a>) is used. - Double + The clothes washer loads per week. If auto or not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.8.1/workflow_inputs.html#hpxml-clothes-washer'>HPXML Clothes Washer</a>) is used. + String cyc/wk false false @@ -5866,8 +5893,8 @@ clothes_washer_capacity Clothes Washer: Drum Volume - Volume of the washer drum. Obtained from the EnergyStar website or the manufacturer's literature. If not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.8.1/workflow_inputs.html#hpxml-clothes-washer'>HPXML Clothes Washer</a>) is used. - Double + Volume of the washer drum. Obtained from the EnergyStar website or the manufacturer's literature. If auto or not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.8.1/workflow_inputs.html#hpxml-clothes-washer'>HPXML Clothes Washer</a>) is used. + String ft^3 false false @@ -5875,8 +5902,8 @@ clothes_washer_usage_multiplier Clothes Washer: Usage Multiplier - Multiplier on the clothes washer energy and hot water usage that can reflect, e.g., high/low usage occupants. If not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.8.1/workflow_inputs.html#hpxml-clothes-washer'>HPXML Clothes Washer</a>) is used. - Double + Multiplier on the clothes washer energy and hot water usage that can reflect, e.g., high/low usage occupants. If auto or not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.8.1/workflow_inputs.html#hpxml-clothes-washer'>HPXML Clothes Washer</a>) is used. + String false false @@ -5887,7 +5914,6 @@ Boolean true false - true true @@ -5902,11 +5928,19 @@ clothes_dryer_location Clothes Dryer: Location - The space type for the clothes dryer location. If not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.8.1/workflow_inputs.html#hpxml-clothes-dryer'>HPXML Clothes Dryer</a>) is used. + The space type for the clothes dryer location. If auto or not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.8.1/workflow_inputs.html#hpxml-clothes-dryer'>HPXML Clothes Dryer</a>) is used. Choice false false + + auto + auto + + + auto + auto + conditioned space conditioned space @@ -5948,7 +5982,6 @@ Choice false false - natural gas electricity @@ -5983,7 +6016,6 @@ Choice false false - CombinedEnergyFactor EnergyFactor @@ -5998,8 +6030,8 @@ clothes_dryer_efficiency Clothes Dryer: Efficiency - The efficiency of the clothes dryer. If not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.8.1/workflow_inputs.html#hpxml-clothes-dryer'>HPXML Clothes Dryer</a>) is used. - Double + The efficiency of the clothes dryer. If auto or not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.8.1/workflow_inputs.html#hpxml-clothes-dryer'>HPXML Clothes Dryer</a>) is used. + String lb/kWh false false @@ -6007,8 +6039,8 @@ clothes_dryer_vented_flow_rate Clothes Dryer: Vented Flow Rate - The exhaust flow rate of the vented clothes dryer. If not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.8.1/workflow_inputs.html#hpxml-clothes-dryer'>HPXML Clothes Dryer</a>) is used. - Double + The exhaust flow rate of the vented clothes dryer. If auto or not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.8.1/workflow_inputs.html#hpxml-clothes-dryer'>HPXML Clothes Dryer</a>) is used. + String CFM false false @@ -6016,8 +6048,8 @@ clothes_dryer_usage_multiplier Clothes Dryer: Usage Multiplier - Multiplier on the clothes dryer energy usage that can reflect, e.g., high/low usage occupants. If not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.8.1/workflow_inputs.html#hpxml-clothes-dryer'>HPXML Clothes Dryer</a>) is used. - Double + Multiplier on the clothes dryer energy usage that can reflect, e.g., high/low usage occupants. If auto or not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.8.1/workflow_inputs.html#hpxml-clothes-dryer'>HPXML Clothes Dryer</a>) is used. + String false false @@ -6028,7 +6060,6 @@ Boolean true false - true true @@ -6043,11 +6074,23 @@ dishwasher_location Dishwasher: Location - The space type for the dishwasher location. If not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.8.1/workflow_inputs.html#hpxml-dishwasher'>HPXML Dishwasher</a>) is used. + The space type for the dishwasher location. If auto or not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.8.1/workflow_inputs.html#hpxml-dishwasher'>HPXML Dishwasher</a>) is used. Choice false false + + auto + auto + + + auto + auto + + + auto + auto + conditioned space conditioned space @@ -6089,7 +6132,6 @@ Choice false false - RatedAnnualkWh RatedAnnualkWh @@ -6104,8 +6146,8 @@ dishwasher_efficiency Dishwasher: Efficiency - The efficiency of the dishwasher. If not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.8.1/workflow_inputs.html#hpxml-dishwasher'>HPXML Dishwasher</a>) is used. - Double + The efficiency of the dishwasher. If auto or not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.8.1/workflow_inputs.html#hpxml-dishwasher'>HPXML Dishwasher</a>) is used. + String RatedAnnualkWh or EnergyFactor false false @@ -6113,8 +6155,8 @@ dishwasher_label_electric_rate Dishwasher: Label Electric Rate - The label electric rate of the dishwasher. If not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.8.1/workflow_inputs.html#hpxml-dishwasher'>HPXML Dishwasher</a>) is used. - Double + The label electric rate of the dishwasher. If auto or not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.8.1/workflow_inputs.html#hpxml-dishwasher'>HPXML Dishwasher</a>) is used. + String $/kWh false false @@ -6122,8 +6164,8 @@ dishwasher_label_gas_rate Dishwasher: Label Gas Rate - The label gas rate of the dishwasher. If not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.8.1/workflow_inputs.html#hpxml-dishwasher'>HPXML Dishwasher</a>) is used. - Double + The label gas rate of the dishwasher. If auto or not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.8.1/workflow_inputs.html#hpxml-dishwasher'>HPXML Dishwasher</a>) is used. + String $/therm false false @@ -6131,8 +6173,8 @@ dishwasher_label_annual_gas_cost Dishwasher: Label Annual Gas Cost - The label annual gas cost of the dishwasher. If not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.8.1/workflow_inputs.html#hpxml-dishwasher'>HPXML Dishwasher</a>) is used. - Double + The label annual gas cost of the dishwasher. If auto or not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.8.1/workflow_inputs.html#hpxml-dishwasher'>HPXML Dishwasher</a>) is used. + String $ false false @@ -6140,8 +6182,8 @@ dishwasher_label_usage Dishwasher: Label Usage - The dishwasher loads per week. If not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.8.1/workflow_inputs.html#hpxml-dishwasher'>HPXML Dishwasher</a>) is used. - Double + The dishwasher loads per week. If auto or not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.8.1/workflow_inputs.html#hpxml-dishwasher'>HPXML Dishwasher</a>) is used. + String cyc/wk false false @@ -6149,8 +6191,8 @@ dishwasher_place_setting_capacity Dishwasher: Number of Place Settings - The number of place settings for the unit. Data obtained from manufacturer's literature. If not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.8.1/workflow_inputs.html#hpxml-dishwasher'>HPXML Dishwasher</a>) is used. - Integer + The number of place settings for the unit. Data obtained from manufacturer's literature. If auto or not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.8.1/workflow_inputs.html#hpxml-dishwasher'>HPXML Dishwasher</a>) is used. + String # false false @@ -6158,8 +6200,8 @@ dishwasher_usage_multiplier Dishwasher: Usage Multiplier - Multiplier on the dishwasher energy usage that can reflect, e.g., high/low usage occupants. If not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.8.1/workflow_inputs.html#hpxml-dishwasher'>HPXML Dishwasher</a>) is used. - Double + Multiplier on the dishwasher energy usage that can reflect, e.g., high/low usage occupants. If auto or not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.8.1/workflow_inputs.html#hpxml-dishwasher'>HPXML Dishwasher</a>) is used. + String false false @@ -6170,7 +6212,6 @@ Boolean true false - true true @@ -6185,11 +6226,27 @@ refrigerator_location Refrigerator: Location - The space type for the refrigerator location. If not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.8.1/workflow_inputs.html#hpxml-refrigerators'>HPXML Refrigerators</a>) is used. + The space type for the refrigerator location. If auto or not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.8.1/workflow_inputs.html#hpxml-refrigerators'>HPXML Refrigerators</a>) is used. Choice false false + + auto + auto + + + auto + auto + + + auto + auto + + + auto + auto + conditioned space conditioned space @@ -6227,8 +6284,8 @@ refrigerator_rated_annual_kwh Refrigerator: Rated Annual Consumption - The EnergyGuide rated annual energy consumption for a refrigerator. If not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.8.1/workflow_inputs.html#hpxml-refrigerators'>HPXML Refrigerators</a>) is used. - Double + The EnergyGuide rated annual energy consumption for a refrigerator. If auto or not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.8.1/workflow_inputs.html#hpxml-refrigerators'>HPXML Refrigerators</a>) is used. + String kWh/yr false false @@ -6236,8 +6293,8 @@ refrigerator_usage_multiplier Refrigerator: Usage Multiplier - Multiplier on the refrigerator energy usage that can reflect, e.g., high/low usage occupants. If not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.8.1/workflow_inputs.html#hpxml-refrigerators'>HPXML Refrigerators</a>) is used. - Double + Multiplier on the refrigerator energy usage that can reflect, e.g., high/low usage occupants. If auto or not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.8.1/workflow_inputs.html#hpxml-refrigerators'>HPXML Refrigerators</a>) is used. + String false false @@ -6248,7 +6305,6 @@ Boolean false false - false true @@ -6263,11 +6319,31 @@ extra_refrigerator_location Extra Refrigerator: Location - The space type for the extra refrigerator location. If not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.8.1/workflow_inputs.html#hpxml-refrigerators'>HPXML Refrigerators</a>) is used. + The space type for the extra refrigerator location. If auto or not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.8.1/workflow_inputs.html#hpxml-refrigerators'>HPXML Refrigerators</a>) is used. Choice false false + + auto + auto + + + auto + auto + + + auto + auto + + + auto + auto + + + auto + auto + conditioned space conditioned space @@ -6305,8 +6381,8 @@ extra_refrigerator_rated_annual_kwh Extra Refrigerator: Rated Annual Consumption - The EnergyGuide rated annual energy consumption for an extra refrigerator. If not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.8.1/workflow_inputs.html#hpxml-refrigerators'>HPXML Refrigerators</a>) is used. - Double + The EnergyGuide rated annual energy consumption for an extra refrigerator. If auto or not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.8.1/workflow_inputs.html#hpxml-refrigerators'>HPXML Refrigerators</a>) is used. + String kWh/yr false false @@ -6314,8 +6390,8 @@ extra_refrigerator_usage_multiplier Extra Refrigerator: Usage Multiplier - Multiplier on the extra refrigerator energy usage that can reflect, e.g., high/low usage occupants. If not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.8.1/workflow_inputs.html#hpxml-refrigerators'>HPXML Refrigerators</a>) is used. - Double + Multiplier on the extra refrigerator energy usage that can reflect, e.g., high/low usage occupants. If auto or not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.8.1/workflow_inputs.html#hpxml-refrigerators'>HPXML Refrigerators</a>) is used. + String false false @@ -6326,7 +6402,6 @@ Boolean false false - false true @@ -6341,11 +6416,35 @@ freezer_location Freezer: Location - The space type for the freezer location. If not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.8.1/workflow_inputs.html#hpxml-freezers'>HPXML Freezers</a>) is used. + The space type for the freezer location. If auto or not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.8.1/workflow_inputs.html#hpxml-freezers'>HPXML Freezers</a>) is used. Choice false false + + auto + auto + + + auto + auto + + + auto + auto + + + auto + auto + + + auto + auto + + + auto + auto + conditioned space conditioned space @@ -6383,8 +6482,8 @@ freezer_rated_annual_kwh Freezer: Rated Annual Consumption - The EnergyGuide rated annual energy consumption for a freezer. If not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.8.1/workflow_inputs.html#hpxml-freezers'>HPXML Freezers</a>) is used. - Double + The EnergyGuide rated annual energy consumption for a freezer. If auto or not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.8.1/workflow_inputs.html#hpxml-freezers'>HPXML Freezers</a>) is used. + String kWh/yr false false @@ -6392,8 +6491,8 @@ freezer_usage_multiplier Freezer: Usage Multiplier - Multiplier on the freezer energy usage that can reflect, e.g., high/low usage occupants. If not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.8.1/workflow_inputs.html#hpxml-freezers'>HPXML Freezers</a>) is used. - Double + Multiplier on the freezer energy usage that can reflect, e.g., high/low usage occupants. If auto or not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.8.1/workflow_inputs.html#hpxml-freezers'>HPXML Freezers</a>) is used. + String false false @@ -6404,7 +6503,6 @@ Boolean true false - true true @@ -6419,11 +6517,39 @@ cooking_range_oven_location Cooking Range/Oven: Location - The space type for the cooking range/oven location. If not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.8.1/workflow_inputs.html#hpxml-cooking-range-oven'>HPXML Cooking Range/Oven</a>) is used. + The space type for the cooking range/oven location. If auto or not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.8.1/workflow_inputs.html#hpxml-cooking-range-oven'>HPXML Cooking Range/Oven</a>) is used. Choice false false + + auto + auto + + + auto + auto + + + auto + auto + + + auto + auto + + + auto + auto + + + auto + auto + + + auto + auto + conditioned space conditioned space @@ -6465,7 +6591,6 @@ Choice false false - natural gas electricity @@ -6496,11 +6621,15 @@ cooking_range_oven_is_induction Cooking Range/Oven: Is Induction - Whether the cooking range is induction. If not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.8.1/workflow_inputs.html#hpxml-cooking-range-oven'>HPXML Cooking Range/Oven</a>) is used. - Boolean + Whether the cooking range is induction. If auto or not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.8.1/workflow_inputs.html#hpxml-cooking-range-oven'>HPXML Cooking Range/Oven</a>) is used. + Choice false false + + auto + auto + true true @@ -6514,11 +6643,15 @@ cooking_range_oven_is_convection Cooking Range/Oven: Is Convection - Whether the oven is convection. If not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.8.1/workflow_inputs.html#hpxml-cooking-range-oven'>HPXML Cooking Range/Oven</a>) is used. - Boolean + Whether the oven is convection. If auto or not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.8.1/workflow_inputs.html#hpxml-cooking-range-oven'>HPXML Cooking Range/Oven</a>) is used. + Choice false false + + auto + auto + true true @@ -6532,8 +6665,8 @@ cooking_range_oven_usage_multiplier Cooking Range/Oven: Usage Multiplier - Multiplier on the cooking range/oven energy usage that can reflect, e.g., high/low usage occupants. If not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.8.1/workflow_inputs.html#hpxml-cooking-range-oven'>HPXML Cooking Range/Oven</a>) is used. - Double + Multiplier on the cooking range/oven energy usage that can reflect, e.g., high/low usage occupants. If auto or not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.8.1/workflow_inputs.html#hpxml-cooking-range-oven'>HPXML Cooking Range/Oven</a>) is used. + String false false @@ -6544,7 +6677,6 @@ Boolean true false - true true @@ -6559,8 +6691,8 @@ ceiling_fan_label_energy_use Ceiling Fan: Label Energy Use - The label average energy use of the ceiling fan(s). If neither Efficiency nor Label Energy Use provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.8.1/workflow_inputs.html#hpxml-ceiling-fans'>HPXML Ceiling Fans</a>) is used. - Double + The label average energy use of the ceiling fan(s). If auto or not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.8.1/workflow_inputs.html#hpxml-ceiling-fans'>HPXML Ceiling Fans</a>) is used. + String W false false @@ -6568,8 +6700,8 @@ ceiling_fan_efficiency Ceiling Fan: Efficiency - The efficiency rating of the ceiling fan(s) at medium speed. Only used if Label Energy Use not provided. If neither Efficiency nor Label Energy Use provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.8.1/workflow_inputs.html#hpxml-ceiling-fans'>HPXML Ceiling Fans</a>) is used. - Double + The efficiency rating of the ceiling fan(s) at medium speed. Only used if Label Energy Use not provided. If auto or not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.8.1/workflow_inputs.html#hpxml-ceiling-fans'>HPXML Ceiling Fans</a>) is used. + String CFM/W false false @@ -6577,8 +6709,8 @@ ceiling_fan_quantity Ceiling Fan: Quantity - Total number of ceiling fans. If not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.8.1/workflow_inputs.html#hpxml-ceiling-fans'>HPXML Ceiling Fans</a>) is used. - Integer + Total number of ceiling fans. If auto or not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.8.1/workflow_inputs.html#hpxml-ceiling-fans'>HPXML Ceiling Fans</a>) is used. + String # false false @@ -6586,8 +6718,8 @@ ceiling_fan_cooling_setpoint_temp_offset Ceiling Fan: Cooling Setpoint Temperature Offset - The cooling setpoint temperature offset during months when the ceiling fans are operating. Only applies if ceiling fan quantity is greater than zero. If not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.8.1/workflow_inputs.html#hpxml-ceiling-fans'>HPXML Ceiling Fans</a>) is used. - Double + The cooling setpoint temperature offset during months when the ceiling fans are operating. Only applies if ceiling fan quantity is greater than zero. If auto or not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.8.1/workflow_inputs.html#hpxml-ceiling-fans'>HPXML Ceiling Fans</a>) is used. + String F false false @@ -6599,7 +6731,6 @@ Boolean true false - true true @@ -6614,8 +6745,8 @@ misc_plug_loads_television_annual_kwh Misc Plug Loads: Television Annual kWh - The annual energy consumption of the television plug loads. If not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.8.1/workflow_inputs.html#hpxml-plug-loads'>HPXML Plug Loads</a>) is used. - Double + The annual energy consumption of the television plug loads. If auto or not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.8.1/workflow_inputs.html#hpxml-plug-loads'>HPXML Plug Loads</a>) is used. + String kWh/yr false false @@ -6623,16 +6754,16 @@ misc_plug_loads_television_usage_multiplier Misc Plug Loads: Television Usage Multiplier - Multiplier on the television energy usage that can reflect, e.g., high/low usage occupants. If not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.8.1/workflow_inputs.html#hpxml-plug-loads'>HPXML Plug Loads</a>) is used. - Double + Multiplier on the television energy usage that can reflect, e.g., high/low usage occupants. If auto or not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.8.1/workflow_inputs.html#hpxml-plug-loads'>HPXML Plug Loads</a>) is used. + String false false misc_plug_loads_other_annual_kwh Misc Plug Loads: Other Annual kWh - The annual energy consumption of the other residual plug loads. If not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.8.1/workflow_inputs.html#hpxml-plug-loads'>HPXML Plug Loads</a>) is used. - Double + The annual energy consumption of the other residual plug loads. If auto or not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.8.1/workflow_inputs.html#hpxml-plug-loads'>HPXML Plug Loads</a>) is used. + String kWh/yr false false @@ -6640,8 +6771,8 @@ misc_plug_loads_other_frac_sensible Misc Plug Loads: Other Sensible Fraction - Fraction of other residual plug loads' internal gains that are sensible. If not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.8.1/workflow_inputs.html#hpxml-plug-loads'>HPXML Plug Loads</a>) is used. - Double + Fraction of other residual plug loads' internal gains that are sensible. If auto or not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.8.1/workflow_inputs.html#hpxml-plug-loads'>HPXML Plug Loads</a>) is used. + String Frac false false @@ -6649,8 +6780,8 @@ misc_plug_loads_other_frac_latent Misc Plug Loads: Other Latent Fraction - Fraction of other residual plug loads' internal gains that are latent. If not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.8.1/workflow_inputs.html#hpxml-plug-loads'>HPXML Plug Loads</a>) is used. - Double + Fraction of other residual plug loads' internal gains that are latent. If auto or not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.8.1/workflow_inputs.html#hpxml-plug-loads'>HPXML Plug Loads</a>) is used. + String Frac false false @@ -6658,8 +6789,8 @@ misc_plug_loads_other_usage_multiplier Misc Plug Loads: Other Usage Multiplier - Multiplier on the other energy usage that can reflect, e.g., high/low usage occupants. If not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.8.1/workflow_inputs.html#hpxml-plug-loads'>HPXML Plug Loads</a>) is used. - Double + Multiplier on the other energy usage that can reflect, e.g., high/low usage occupants. If auto or not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.8.1/workflow_inputs.html#hpxml-plug-loads'>HPXML Plug Loads</a>) is used. + String false false @@ -6670,7 +6801,6 @@ Boolean false false - false true @@ -6685,8 +6815,8 @@ misc_plug_loads_well_pump_annual_kwh Misc Plug Loads: Well Pump Annual kWh - The annual energy consumption of the well pump plug loads. If not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.8.1/workflow_inputs.html#hpxml-plug-loads'>HPXML Plug Loads</a>) is used. - Double + The annual energy consumption of the well pump plug loads. If auto or not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.8.1/workflow_inputs.html#hpxml-plug-loads'>HPXML Plug Loads</a>) is used. + String kWh/yr false false @@ -6694,8 +6824,8 @@ misc_plug_loads_well_pump_usage_multiplier Misc Plug Loads: Well Pump Usage Multiplier - Multiplier on the well pump energy usage that can reflect, e.g., high/low usage occupants. If not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.8.1/workflow_inputs.html#hpxml-plug-loads'>HPXML Plug Loads</a>) is used. - Double + Multiplier on the well pump energy usage that can reflect, e.g., high/low usage occupants. If auto or not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.8.1/workflow_inputs.html#hpxml-plug-loads'>HPXML Plug Loads</a>) is used. + String false false @@ -6706,7 +6836,6 @@ Boolean false false - false true @@ -6721,8 +6850,8 @@ misc_plug_loads_vehicle_annual_kwh Misc Plug Loads: Vehicle Annual kWh - The annual energy consumption of the electric vehicle plug loads. If not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.8.1/workflow_inputs.html#hpxml-plug-loads'>HPXML Plug Loads</a>) is used. - Double + The annual energy consumption of the electric vehicle plug loads. If auto or not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.8.1/workflow_inputs.html#hpxml-plug-loads'>HPXML Plug Loads</a>) is used. + String kWh/yr false false @@ -6730,8 +6859,8 @@ misc_plug_loads_vehicle_usage_multiplier Misc Plug Loads: Vehicle Usage Multiplier - Multiplier on the electric vehicle energy usage that can reflect, e.g., high/low usage occupants. If not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.8.1/workflow_inputs.html#hpxml-plug-loads'>HPXML Plug Loads</a>) is used. - Double + Multiplier on the electric vehicle energy usage that can reflect, e.g., high/low usage occupants. If auto or not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.8.1/workflow_inputs.html#hpxml-plug-loads'>HPXML Plug Loads</a>) is used. + String false false @@ -6742,7 +6871,6 @@ Boolean false false - false true @@ -6761,7 +6889,6 @@ Choice false false - natural gas natural gas @@ -6788,8 +6915,8 @@ misc_fuel_loads_grill_annual_therm Misc Fuel Loads: Grill Annual therm - The annual energy consumption of the fuel loads grill. If not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.8.1/workflow_inputs.html#hpxml-fuel-loads'>HPXML Fuel Loads</a>) is used. - Double + The annual energy consumption of the fuel loads grill. If auto or not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.8.1/workflow_inputs.html#hpxml-fuel-loads'>HPXML Fuel Loads</a>) is used. + String therm/yr false false @@ -6797,8 +6924,8 @@ misc_fuel_loads_grill_usage_multiplier Misc Fuel Loads: Grill Usage Multiplier - Multiplier on the fuel loads grill energy usage that can reflect, e.g., high/low usage occupants. If not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.8.1/workflow_inputs.html#hpxml-fuel-loads'>HPXML Fuel Loads</a>) is used. - Double + Multiplier on the fuel loads grill energy usage that can reflect, e.g., high/low usage occupants. If auto or not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.8.1/workflow_inputs.html#hpxml-fuel-loads'>HPXML Fuel Loads</a>) is used. + String false false @@ -6809,7 +6936,6 @@ Boolean false false - false true @@ -6828,7 +6954,6 @@ Choice false false - natural gas natural gas @@ -6855,8 +6980,8 @@ misc_fuel_loads_lighting_annual_therm Misc Fuel Loads: Lighting Annual therm - The annual energy consumption of the fuel loads lighting. If not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.8.1/workflow_inputs.html#hpxml-fuel-loads'>HPXML Fuel Loads</a>)is used. - Double + The annual energy consumption of the fuel loads lighting. If auto or not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.8.1/workflow_inputs.html#hpxml-fuel-loads'>HPXML Fuel Loads</a>) is used. + String therm/yr false false @@ -6864,8 +6989,8 @@ misc_fuel_loads_lighting_usage_multiplier Misc Fuel Loads: Lighting Usage Multiplier - Multiplier on the fuel loads lighting energy usage that can reflect, e.g., high/low usage occupants. If not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.8.1/workflow_inputs.html#hpxml-fuel-loads'>HPXML Fuel Loads</a>) is used. - Double + Multiplier on the fuel loads lighting energy usage that can reflect, e.g., high/low usage occupants. If auto or not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.8.1/workflow_inputs.html#hpxml-fuel-loads'>HPXML Fuel Loads</a>) is used. + String false false @@ -6876,7 +7001,6 @@ Boolean false false - false true @@ -6895,7 +7019,6 @@ Choice false false - natural gas natural gas @@ -6922,8 +7045,8 @@ misc_fuel_loads_fireplace_annual_therm Misc Fuel Loads: Fireplace Annual therm - The annual energy consumption of the fuel loads fireplace. If not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.8.1/workflow_inputs.html#hpxml-fuel-loads'>HPXML Fuel Loads</a>) is used. - Double + The annual energy consumption of the fuel loads fireplace. If auto or not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.8.1/workflow_inputs.html#hpxml-fuel-loads'>HPXML Fuel Loads</a>) is used. + String therm/yr false false @@ -6931,8 +7054,8 @@ misc_fuel_loads_fireplace_frac_sensible Misc Fuel Loads: Fireplace Sensible Fraction - Fraction of fireplace residual fuel loads' internal gains that are sensible. If not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.8.1/workflow_inputs.html#hpxml-fuel-loads'>HPXML Fuel Loads</a>) is used. - Double + Fraction of fireplace residual fuel loads' internal gains that are sensible. If auto or not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.8.1/workflow_inputs.html#hpxml-fuel-loads'>HPXML Fuel Loads</a>) is used. + String Frac false false @@ -6940,8 +7063,8 @@ misc_fuel_loads_fireplace_frac_latent Misc Fuel Loads: Fireplace Latent Fraction - Fraction of fireplace residual fuel loads' internal gains that are latent. If not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.8.1/workflow_inputs.html#hpxml-fuel-loads'>HPXML Fuel Loads</a>) is used. - Double + Fraction of fireplace residual fuel loads' internal gains that are latent. If auto or not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.8.1/workflow_inputs.html#hpxml-fuel-loads'>HPXML Fuel Loads</a>) is used. + String Frac false false @@ -6949,8 +7072,8 @@ misc_fuel_loads_fireplace_usage_multiplier Misc Fuel Loads: Fireplace Usage Multiplier - Multiplier on the fuel loads fireplace energy usage that can reflect, e.g., high/low usage occupants. If not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.8.1/workflow_inputs.html#hpxml-fuel-loads'>HPXML Fuel Loads</a>) is used. - Double + Multiplier on the fuel loads fireplace energy usage that can reflect, e.g., high/low usage occupants. If auto or not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.8.1/workflow_inputs.html#hpxml-fuel-loads'>HPXML Fuel Loads</a>) is used. + String false false @@ -6961,7 +7084,6 @@ Boolean false false - false true @@ -6976,8 +7098,8 @@ pool_pump_annual_kwh Pool: Pump Annual kWh - The annual energy consumption of the pool pump. If not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.8.1/workflow_inputs.html#pool-pump'>Pool Pump</a>) is used. - Double + The annual energy consumption of the pool pump. If auto or not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.8.1/workflow_inputs.html#pool-pump'>Pool Pump</a>) is used. + String kWh/yr false false @@ -6985,8 +7107,8 @@ pool_pump_usage_multiplier Pool: Pump Usage Multiplier - Multiplier on the pool pump energy usage that can reflect, e.g., high/low usage occupants. If not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.8.1/workflow_inputs.html#pool-pump'>Pool Pump</a>) is used. - Double + Multiplier on the pool pump energy usage that can reflect, e.g., high/low usage occupants. If auto or not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.8.1/workflow_inputs.html#pool-pump'>Pool Pump</a>) is used. + String false false @@ -6997,7 +7119,6 @@ Choice false false - none none @@ -7020,8 +7141,8 @@ pool_heater_annual_kwh Pool: Heater Annual kWh - The annual energy consumption of the electric resistance pool heater. If not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.8.1/workflow_inputs.html#pool-heater'>Pool Heater</a>) is used. - Double + The annual energy consumption of the electric resistance pool heater. If auto or not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.8.1/workflow_inputs.html#pool-heater'>Pool Heater</a>) is used. + String kWh/yr false false @@ -7029,8 +7150,8 @@ pool_heater_annual_therm Pool: Heater Annual therm - The annual energy consumption of the gas fired pool heater. If not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.8.1/workflow_inputs.html#pool-heater'>Pool Heater</a>) is used. - Double + The annual energy consumption of the gas fired pool heater. If auto or not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.8.1/workflow_inputs.html#pool-heater'>Pool Heater</a>) is used. + String therm/yr false false @@ -7038,8 +7159,8 @@ pool_heater_usage_multiplier Pool: Heater Usage Multiplier - Multiplier on the pool heater energy usage that can reflect, e.g., high/low usage occupants. If not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.8.1/workflow_inputs.html#pool-heater'>Pool Heater</a>) is used. - Double + Multiplier on the pool heater energy usage that can reflect, e.g., high/low usage occupants. If auto or not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.8.1/workflow_inputs.html#pool-heater'>Pool Heater</a>) is used. + String false false @@ -7050,7 +7171,6 @@ Boolean false false - false true @@ -7065,8 +7185,8 @@ permanent_spa_pump_annual_kwh Permanent Spa: Pump Annual kWh - The annual energy consumption of the permanent spa pump. If not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.8.1/workflow_inputs.html#permanent-spa-pump'>Permanent Spa Pump</a>) is used. - Double + The annual energy consumption of the permanent spa pump. If auto or not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.8.1/workflow_inputs.html#permanent-spa-pump'>Permanent Spa Pump</a>) is used. + String kWh/yr false false @@ -7074,8 +7194,8 @@ permanent_spa_pump_usage_multiplier Permanent Spa: Pump Usage Multiplier - Multiplier on the permanent spa pump energy usage that can reflect, e.g., high/low usage occupants. If not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.8.1/workflow_inputs.html#permanent-spa-pump'>Permanent Spa Pump</a>) is used. - Double + Multiplier on the permanent spa pump energy usage that can reflect, e.g., high/low usage occupants. If auto or not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.8.1/workflow_inputs.html#permanent-spa-pump'>Permanent Spa Pump</a>) is used. + String false false @@ -7086,7 +7206,6 @@ Choice false false - none none @@ -7109,8 +7228,8 @@ permanent_spa_heater_annual_kwh Permanent Spa: Heater Annual kWh - The annual energy consumption of the electric resistance permanent spa heater. If not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.8.1/workflow_inputs.html#permanent-spa-heater'>Permanent Spa Heater</a>) is used. - Double + The annual energy consumption of the electric resistance permanent spa heater. If auto or not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.8.1/workflow_inputs.html#permanent-spa-heater'>Permanent Spa Heater</a>) is used. + String kWh/yr false false @@ -7118,8 +7237,8 @@ permanent_spa_heater_annual_therm Permanent Spa: Heater Annual therm - The annual energy consumption of the gas fired permanent spa heater. If not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.8.1/workflow_inputs.html#permanent-spa-heater'>Permanent Spa Heater</a>) is used. - Double + The annual energy consumption of the gas fired permanent spa heater. If auto or not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.8.1/workflow_inputs.html#permanent-spa-heater'>Permanent Spa Heater</a>) is used. + String therm/yr false false @@ -7127,8 +7246,8 @@ permanent_spa_heater_usage_multiplier Permanent Spa: Heater Usage Multiplier - Multiplier on the permanent spa heater energy usage that can reflect, e.g., high/low usage occupants. If not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.8.1/workflow_inputs.html#permanent-spa-heater'>Permanent Spa Heater</a>) is used. - Double + Multiplier on the permanent spa heater energy usage that can reflect, e.g., high/low usage occupants. If auto or not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.8.1/workflow_inputs.html#permanent-spa-heater'>Permanent Spa Heater</a>) is used. + String false false @@ -7427,7 +7546,6 @@ Boolean false false - false true @@ -7446,7 +7564,6 @@ Boolean false false - false true @@ -7465,7 +7582,6 @@ Boolean false false - false true @@ -7495,7 +7611,7 @@ README.md md readme - 6CF274BB + 83EBC2FD
README.md.erb @@ -7512,7 +7628,7 @@ measure.rb rb script - D18F7B80 + 630F13A3 constants.rb From 4790ba244afc0535495c23ae7b4693f11219fc3e Mon Sep 17 00:00:00 2001 From: Joe Robertson Date: Sat, 2 Nov 2024 14:18:13 -0700 Subject: [PATCH 21/33] Start method for defaulting optional argument values. --- BuildResidentialHPXML/measure.rb | 28 +++++++++++++++++++ BuildResidentialHPXML/measure.xml | 8 +++--- BuildResidentialHPXML/resources/geometry.rb | 8 +++--- ...ed-boiler-only-fan-coil-fireplace-elec.xml | 1 - .../base-enclosure-skylights-cathedral.xml | 4 --- .../base-enclosure-skylights-shading.xml | 4 --- .../base-enclosure-skylights-storms.xml | 2 -- .../sample_files/base-enclosure-skylights.xml | 4 --- ...-air-heat-pump-1-speed-autosize-factor.xml | 11 +------- ...-to-air-heat-pump-1-speed-cooling-only.xml | 8 ------ ...heat-pump-1-speed-heating-capacity-17f.xml | 11 +------- ...-to-air-heat-pump-1-speed-heating-only.xml | 11 +------- ...heat-pump-1-speed-lockout-temperatures.xml | 11 +------- ...ir-heat-pump-1-speed-research-features.xml | 11 +------- ...r-to-air-heat-pump-1-speed-seer2-hspf2.xml | 3 +- ...base-hvac-air-to-air-heat-pump-1-speed.xml | 11 +------- ...ir-heat-pump-2-speed-research-features.xml | 11 +------- ...base-hvac-air-to-air-heat-pump-2-speed.xml | 11 +------- ...r-heat-pump-var-speed-autosize-maxload.xml | 11 +------- ...r-speed-backup-boiler-advanced-defrost.xml | 8 ------ ...p-var-speed-backup-boiler-hvac-seasons.xml | 8 ------ ...d-backup-boiler-switchover-temperature.xml | 8 ------ ...-air-heat-pump-var-speed-backup-boiler.xml | 8 ------ ...r-speed-backup-furnace-autosize-factor.xml | 8 ------ ...air-heat-pump-var-speed-backup-furnace.xml | 8 ------ ...ar-speed-detailed-performance-autosize.xml | 11 +------- ...peed-detailed-performance-heating-only.xml | 11 +------- ...iled-performance-normalized-capacities.xml | 11 +------- ...etailed-performance-other-temperatures.xml | 11 +------- ...at-pump-var-speed-detailed-performance.xml | 11 +------- ...speed-max-power-ratio-schedule-10-mins.xml | 11 +------- ...d-max-power-ratio-schedule-two-systems.xml | 22 ++------------- ...-heat-pump-var-speed-research-features.xml | 11 +------- ...se-hvac-air-to-air-heat-pump-var-speed.xml | 11 +------- ...l-ac-plus-air-to-air-heat-pump-heating.xml | 11 +------- ...heat-pump-1-speed-lockout-temperatures.xml | 8 ------ ...dual-fuel-air-to-air-heat-pump-1-speed.xml | 8 ------ ...air-heat-pump-2-speed-advanced-defrost.xml | 8 ------ ...dual-fuel-air-to-air-heat-pump-2-speed.xml | 8 ------ ...al-fuel-air-to-air-heat-pump-var-speed.xml | 8 ------ ...-dual-fuel-mini-split-heat-pump-ducted.xml | 8 ------ .../sample_files/base-hvac-ducts-defaults.xml | 1 - ...-gas-plus-air-to-air-heat-pump-cooling.xml | 8 ------ ...und-to-air-heat-pump-backup-integrated.xml | 3 +- ...l-quality-air-to-air-heat-pump-1-speed.xml | 11 +------- ...l-quality-air-to-air-heat-pump-2-speed.xml | 11 +------- ...at-pump-var-speed-detailed-performance.xml | 11 +------- ...quality-air-to-air-heat-pump-var-speed.xml | 11 +------- ...ll-quality-mini-split-heat-pump-ducted.xml | 11 +------- ...ni-split-heat-pump-ducted-cooling-only.xml | 8 ------ ...p-ducted-detailed-performance-autosize.xml | 11 +------- ...-heat-pump-ducted-detailed-performance.xml | 11 +------- ...-heating-only-max-power-ratio-schedule.xml | 11 +------- ...ni-split-heat-pump-ducted-heating-only.xml | 11 +------- ...t-pump-ducted-max-power-ratio-schedule.xml | 11 +------- .../base-hvac-mini-split-heat-pump-ducted.xml | 11 +------- ...it-heat-pump-ductless-advanced-defrost.xml | 8 ------ ...lit-heat-pump-ductless-autosize-factor.xml | 8 ------ ...-pump-ductless-backup-advanced-defrost.xml | 11 +------- ...it-heat-pump-ductless-backup-baseboard.xml | 8 ------ ...ductless-backup-furnace-ducts-defaults.xml | 8 ------ ...plit-heat-pump-ductless-backup-furnace.xml | 8 ------ ...-split-heat-pump-ductless-backup-stove.xml | 8 ------ ...ductless-detailed-performance-autosize.xml | 8 ------ ...eat-pump-ductless-detailed-performance.xml | 8 ------ ...eat-pump-ductless-heating-capacity-17f.xml | 8 ------ ...ase-hvac-mini-split-heat-pump-ductless.xml | 8 ------ workflow/sample_files/base-hvac-pthp-cfis.xml | 3 +- .../base-hvac-pthp-heating-capacity-17f.xml | 3 +- workflow/sample_files/base-hvac-pthp.xml | 3 +- .../base-hvac-room-ac-with-reverse-cycle.xml | 3 +- workflow/sample_files/base-mechvent-erv.xml | 2 -- workflow/sample_files/base-mechvent-hrv.xml | 1 - .../base-misc-loads-large-uncommon.xml | 1 - .../base-misc-loads-large-uncommon2.xml | 1 - .../base-misc-usage-multiplier.xml | 1 - ...-residents-1-misc-loads-large-uncommon.xml | 1 - ...residents-1-misc-loads-large-uncommon2.xml | 1 - .../tests/HERS_Hot_Water/L100AD-HW-01.xml | 5 ---- .../tests/HERS_Hot_Water/L100AD-HW-02.xml | 5 ---- .../tests/HERS_Hot_Water/L100AD-HW-03.xml | 5 ---- .../tests/HERS_Hot_Water/L100AD-HW-04.xml | 5 ---- .../tests/HERS_Hot_Water/L100AD-HW-05.xml | 5 ---- .../tests/HERS_Hot_Water/L100AD-HW-06.xml | 5 ---- .../tests/HERS_Hot_Water/L100AD-HW-07.xml | 5 ---- .../tests/HERS_Hot_Water/L100AM-HW-01.xml | 5 ---- .../tests/HERS_Hot_Water/L100AM-HW-02.xml | 5 ---- .../tests/HERS_Hot_Water/L100AM-HW-03.xml | 5 ---- .../tests/HERS_Hot_Water/L100AM-HW-04.xml | 5 ---- .../tests/HERS_Hot_Water/L100AM-HW-05.xml | 5 ---- .../tests/HERS_Hot_Water/L100AM-HW-06.xml | 5 ---- .../tests/HERS_Hot_Water/L100AM-HW-07.xml | 5 ---- 92 files changed, 74 insertions(+), 634 deletions(-) diff --git a/BuildResidentialHPXML/measure.rb b/BuildResidentialHPXML/measure.rb index 9291912158..1a90e1aa95 100644 --- a/BuildResidentialHPXML/measure.rb +++ b/BuildResidentialHPXML/measure.rb @@ -5167,6 +5167,33 @@ def convertArgumentValues(arguments_model, args) return args end + # TODO + def defaultOptionalArgumentValues(args) + args[:floor_over_foundation_assembly_r] = 28.1 if args[:floor_over_foundation_assembly_r].nil? + args[:heating_system_2_type] = Constants::None if args[:heating_system_2_type].nil? + args[:mech_vent_fan_type] = Constants::None if args[:mech_vent_fan_type].nil? + args[:mech_vent_2_fan_type] = Constants::None if args[:mech_vent_2_fan_type].nil? + args[:water_heater_type] = HPXML::WaterHeaterTypeStorage if args[:water_heater_type].nil? + args[:water_heater_jacket_rvalue] = Constants::None if args[:water_heater_jacket_rvalue].nil? + args[:dehumidifier_type] = Constants::None if args[:dehumidifier_type].nil? + args[:solar_thermal_system_type] = Constants::None if args[:solar_thermal_system_type].nil? + args[:overhangs_front_depth] = 0 if args[:overhangs_front_depth].nil? + args[:overhangs_back_depth] = 0 if args[:overhangs_back_depth].nil? + args[:overhangs_left_depth] = 0 if args[:overhangs_left_depth].nil? + args[:overhangs_right_depth] = 0 if args[:overhangs_right_depth].nil? + args[:solar_thermal_solar_fraction] = 0 if args[:solar_thermal_solar_fraction].nil? + args[:geometry_roof_pitch] = '6:12' if args[:geometry_roof_pitch].nil? + args[:solar_thermal_collector_tilt] = 'RoofPitch' if args[:solar_thermal_collector_tilt].nil? + args[:water_fixtures_shower_low_flow] = false if args[:water_fixtures_shower_low_flow].nil? + args[:water_fixtures_sink_low_flow] = false if args[:water_fixtures_sink_low_flow].nil? + args[:skylight_ufactor] = 0.33 if args[:skylight_ufactor].nil? + args[:skylight_shgc] = 0.45 if args[:skylight_shgc].nil? + args[:mech_vent_total_recovery_efficiency] = 0.48 if args[:mech_vent_total_recovery_efficiency].nil? + args[:mech_vent_sensible_recovery_efficiency] = 0.72 if args[:mech_vent_sensible_recovery_efficiency].nil? + args[:heat_pump_backup_heating_efficiency] = 1 if args[:heat_pump_backup_heating_efficiency].nil? + return args + end + # Define what happens when the measure is run. # # @param model [OpenStudio::Model::Model] OpenStudio Model object @@ -5187,6 +5214,7 @@ def run(model, runner, user_arguments) args = runner.getArgumentValues(arguments(model), user_arguments) args = convertArgumentValues(arguments(model), args) + args = defaultOptionalArgumentValues(args) # Argument error checks warnings, errors = validate_arguments(args) diff --git a/BuildResidentialHPXML/measure.xml b/BuildResidentialHPXML/measure.xml index 7239c6cc8d..4b8d56a2d0 100644 --- a/BuildResidentialHPXML/measure.xml +++ b/BuildResidentialHPXML/measure.xml @@ -3,8 +3,8 @@ 3.1 build_residential_hpxml a13a8983-2b01-4930-8af2-42030b6e4233 - a78e4b61-1f71-41a0-b581-2dd7577b3eca - 2024-11-02T20:35:16Z + 85ce31a0-5e69-43d3-848e-fb9b6987cc31 + 2024-11-02T21:17:44Z 2C38F48B BuildResidentialHPXML HPXML Builder @@ -7628,7 +7628,7 @@ measure.rb rb script - 630F13A3 + B52896F2 constants.rb @@ -7640,7 +7640,7 @@ geometry.rb rb resource - 6F9D002F + 132765E2 test_build_residential_hpxml.rb diff --git a/BuildResidentialHPXML/resources/geometry.rb b/BuildResidentialHPXML/resources/geometry.rb index cdc0e1067f..0eba10e1e6 100644 --- a/BuildResidentialHPXML/resources/geometry.rb +++ b/BuildResidentialHPXML/resources/geometry.rb @@ -1392,10 +1392,10 @@ def self.create_windows_and_skylights(runner:, window_area_left:, window_area_right:, window_aspect_ratio:, - skylight_area_front:, - skylight_area_back:, - skylight_area_left:, - skylight_area_right:, + skylight_area_front: 0, + skylight_area_back: 0, + skylight_area_left: 0, + skylight_area_right: 0, **) facades = [Constants::FacadeBack, Constants::FacadeRight, Constants::FacadeFront, Constants::FacadeLeft] diff --git a/workflow/sample_files/base-bldgtype-mf-unit-shared-boiler-only-fan-coil-fireplace-elec.xml b/workflow/sample_files/base-bldgtype-mf-unit-shared-boiler-only-fan-coil-fireplace-elec.xml index 8695df7d2f..d8f90c52ac 100644 --- a/workflow/sample_files/base-bldgtype-mf-unit-shared-boiler-only-fan-coil-fireplace-elec.xml +++ b/workflow/sample_files/base-bldgtype-mf-unit-shared-boiler-only-fan-coil-fireplace-elec.xml @@ -252,7 +252,6 @@ - electricity Percent 1.0 diff --git a/workflow/sample_files/base-enclosure-skylights-cathedral.xml b/workflow/sample_files/base-enclosure-skylights-cathedral.xml index e4216f589c..07573ea354 100644 --- a/workflow/sample_files/base-enclosure-skylights-cathedral.xml +++ b/workflow/sample_files/base-enclosure-skylights-cathedral.xml @@ -272,8 +272,6 @@ 15.0 0 - 0.33 - 0.45 1.0 @@ -291,8 +289,6 @@ 15.0 180 - 0.33 - 0.45 1.0 diff --git a/workflow/sample_files/base-enclosure-skylights-shading.xml b/workflow/sample_files/base-enclosure-skylights-shading.xml index 1c7ced047e..3aca69ceec 100644 --- a/workflow/sample_files/base-enclosure-skylights-shading.xml +++ b/workflow/sample_files/base-enclosure-skylights-shading.xml @@ -308,8 +308,6 @@ 15.0 0 - 0.33 - 0.45 0.1 @@ -333,8 +331,6 @@ 15.0 180 - 0.33 - 0.45 0.5 diff --git a/workflow/sample_files/base-enclosure-skylights-storms.xml b/workflow/sample_files/base-enclosure-skylights-storms.xml index 957dddd2c4..6f816d302b 100644 --- a/workflow/sample_files/base-enclosure-skylights-storms.xml +++ b/workflow/sample_files/base-enclosure-skylights-storms.xml @@ -309,7 +309,6 @@ 15.0 0 0.6 - 0.45 1.0 @@ -333,7 +332,6 @@ 15.0 180 0.6 - 0.45 1.0 diff --git a/workflow/sample_files/base-enclosure-skylights.xml b/workflow/sample_files/base-enclosure-skylights.xml index a1738e7b8d..137336b1fb 100644 --- a/workflow/sample_files/base-enclosure-skylights.xml +++ b/workflow/sample_files/base-enclosure-skylights.xml @@ -308,8 +308,6 @@ 15.0 0 - 0.33 - 0.45 1.0 @@ -328,8 +326,6 @@ 15.0 180 - 0.33 - 0.45 1.0 diff --git a/workflow/sample_files/base-hvac-air-to-air-heat-pump-1-speed-autosize-factor.xml b/workflow/sample_files/base-hvac-air-to-air-heat-pump-1-speed-autosize-factor.xml index a7ed9a16ec..eeb02321a4 100644 --- a/workflow/sample_files/base-hvac-air-to-air-heat-pump-1-speed-autosize-factor.xml +++ b/workflow/sample_files/base-hvac-air-to-air-heat-pump-1-speed-autosize-factor.xml @@ -328,21 +328,12 @@ single stage 0.73 integrated - electricity - Percent + AFUE 1.0 1.0 1.0 - - SEER - 13.0 - - - HSPF - 7.7 - 0.6 diff --git a/workflow/sample_files/base-hvac-air-to-air-heat-pump-1-speed-cooling-only.xml b/workflow/sample_files/base-hvac-air-to-air-heat-pump-1-speed-cooling-only.xml index 3644a26885..652d116be2 100644 --- a/workflow/sample_files/base-hvac-air-to-air-heat-pump-1-speed-cooling-only.xml +++ b/workflow/sample_files/base-hvac-air-to-air-heat-pump-1-speed-cooling-only.xml @@ -330,14 +330,6 @@ 0.73 0.0 1.0 - - SEER - 13.0 - - - HSPF - 7.7 - 0.6 diff --git a/workflow/sample_files/base-hvac-air-to-air-heat-pump-1-speed-heating-capacity-17f.xml b/workflow/sample_files/base-hvac-air-to-air-heat-pump-1-speed-heating-capacity-17f.xml index 52e803dfd1..11a6b3ee3d 100644 --- a/workflow/sample_files/base-hvac-air-to-air-heat-pump-1-speed-heating-capacity-17f.xml +++ b/workflow/sample_files/base-hvac-air-to-air-heat-pump-1-speed-heating-capacity-17f.xml @@ -331,22 +331,13 @@ single stage 0.73 integrated - electricity - Percent + AFUE 1.0 36000.0 1.0 1.0 - - SEER - 13.0 - - - HSPF - 7.7 - diff --git a/workflow/sample_files/base-hvac-air-to-air-heat-pump-1-speed-heating-only.xml b/workflow/sample_files/base-hvac-air-to-air-heat-pump-1-speed-heating-only.xml index a5da337603..94a7e545b5 100644 --- a/workflow/sample_files/base-hvac-air-to-air-heat-pump-1-speed-heating-only.xml +++ b/workflow/sample_files/base-hvac-air-to-air-heat-pump-1-speed-heating-only.xml @@ -329,22 +329,13 @@ single stage 0.73 integrated - electricity - Percent + AFUE 1.0 36000.0 1.0 0.0 - - SEER - 13.0 - - - HSPF - 7.7 - 0.6 diff --git a/workflow/sample_files/base-hvac-air-to-air-heat-pump-1-speed-lockout-temperatures.xml b/workflow/sample_files/base-hvac-air-to-air-heat-pump-1-speed-lockout-temperatures.xml index 97ecc65306..7bcc9248ec 100644 --- a/workflow/sample_files/base-hvac-air-to-air-heat-pump-1-speed-lockout-temperatures.xml +++ b/workflow/sample_files/base-hvac-air-to-air-heat-pump-1-speed-lockout-temperatures.xml @@ -331,23 +331,14 @@ 5.0 0.73 integrated - electricity - Percent + AFUE 1.0 36000.0 35.0 1.0 1.0 - - SEER - 13.0 - - - HSPF - 7.7 - 0.6 diff --git a/workflow/sample_files/base-hvac-air-to-air-heat-pump-1-speed-research-features.xml b/workflow/sample_files/base-hvac-air-to-air-heat-pump-1-speed-research-features.xml index 75f2377337..2c38cb038d 100644 --- a/workflow/sample_files/base-hvac-air-to-air-heat-pump-1-speed-research-features.xml +++ b/workflow/sample_files/base-hvac-air-to-air-heat-pump-1-speed-research-features.xml @@ -336,23 +336,14 @@ 5.0 0.73 integrated - electricity - Percent + AFUE 1.0 34121.4 35.0 1.0 1.0 - - SEER - 13.0 - - - HSPF - 7.7 - 0.6 diff --git a/workflow/sample_files/base-hvac-air-to-air-heat-pump-1-speed-seer2-hspf2.xml b/workflow/sample_files/base-hvac-air-to-air-heat-pump-1-speed-seer2-hspf2.xml index aa7eabaa03..55bbeafce6 100644 --- a/workflow/sample_files/base-hvac-air-to-air-heat-pump-1-speed-seer2-hspf2.xml +++ b/workflow/sample_files/base-hvac-air-to-air-heat-pump-1-speed-seer2-hspf2.xml @@ -330,9 +330,8 @@ single stage 0.73 integrated - electricity - Percent + AFUE 1.0 36000.0 diff --git a/workflow/sample_files/base-hvac-air-to-air-heat-pump-1-speed.xml b/workflow/sample_files/base-hvac-air-to-air-heat-pump-1-speed.xml index 1587283b76..1747f60e40 100644 --- a/workflow/sample_files/base-hvac-air-to-air-heat-pump-1-speed.xml +++ b/workflow/sample_files/base-hvac-air-to-air-heat-pump-1-speed.xml @@ -330,22 +330,13 @@ single stage 0.73 integrated - electricity - Percent + AFUE 1.0 36000.0 1.0 1.0 - - SEER - 13.0 - - - HSPF - 7.7 - 0.6 diff --git a/workflow/sample_files/base-hvac-air-to-air-heat-pump-2-speed-research-features.xml b/workflow/sample_files/base-hvac-air-to-air-heat-pump-2-speed-research-features.xml index f0b3e7fac3..5cf960b18e 100644 --- a/workflow/sample_files/base-hvac-air-to-air-heat-pump-2-speed-research-features.xml +++ b/workflow/sample_files/base-hvac-air-to-air-heat-pump-2-speed-research-features.xml @@ -335,22 +335,13 @@ two stage 0.73 integrated - electricity - Percent + AFUE 1.0 34121.4 1.0 1.0 - - SEER - 18.0 - - - HSPF - 9.3 - 0.6 diff --git a/workflow/sample_files/base-hvac-air-to-air-heat-pump-2-speed.xml b/workflow/sample_files/base-hvac-air-to-air-heat-pump-2-speed.xml index 589b0e6145..ffca95c189 100644 --- a/workflow/sample_files/base-hvac-air-to-air-heat-pump-2-speed.xml +++ b/workflow/sample_files/base-hvac-air-to-air-heat-pump-2-speed.xml @@ -330,22 +330,13 @@ two stage 0.73 integrated - electricity - Percent + AFUE 1.0 36000.0 1.0 1.0 - - SEER - 18.0 - - - HSPF - 9.3 - 0.6 diff --git a/workflow/sample_files/base-hvac-air-to-air-heat-pump-var-speed-autosize-maxload.xml b/workflow/sample_files/base-hvac-air-to-air-heat-pump-var-speed-autosize-maxload.xml index ff367c4a1c..8a384033e8 100644 --- a/workflow/sample_files/base-hvac-air-to-air-heat-pump-var-speed-autosize-maxload.xml +++ b/workflow/sample_files/base-hvac-air-to-air-heat-pump-var-speed-autosize-maxload.xml @@ -334,21 +334,12 @@ variable speed 0.78 integrated - electricity - Percent + AFUE 1.0 1.0 1.0 - - SEER - 22.0 - - - HSPF - 10.0 - 0.6 diff --git a/workflow/sample_files/base-hvac-air-to-air-heat-pump-var-speed-backup-boiler-advanced-defrost.xml b/workflow/sample_files/base-hvac-air-to-air-heat-pump-var-speed-backup-boiler-advanced-defrost.xml index daeb180fd6..1f65dd9c7b 100644 --- a/workflow/sample_files/base-hvac-air-to-air-heat-pump-var-speed-backup-boiler-advanced-defrost.xml +++ b/workflow/sample_files/base-hvac-air-to-air-heat-pump-var-speed-backup-boiler-advanced-defrost.xml @@ -350,14 +350,6 @@ 1.0 1.0 - - SEER - 22.0 - - - HSPF - 10.0 - 0.6 diff --git a/workflow/sample_files/base-hvac-air-to-air-heat-pump-var-speed-backup-boiler-hvac-seasons.xml b/workflow/sample_files/base-hvac-air-to-air-heat-pump-var-speed-backup-boiler-hvac-seasons.xml index 52fa00a0a7..aa6c3efdda 100644 --- a/workflow/sample_files/base-hvac-air-to-air-heat-pump-var-speed-backup-boiler-hvac-seasons.xml +++ b/workflow/sample_files/base-hvac-air-to-air-heat-pump-var-speed-backup-boiler-hvac-seasons.xml @@ -347,14 +347,6 @@ 1.0 1.0 - - SEER - 22.0 - - - HSPF - 10.0 - 0.6 diff --git a/workflow/sample_files/base-hvac-air-to-air-heat-pump-var-speed-backup-boiler-switchover-temperature.xml b/workflow/sample_files/base-hvac-air-to-air-heat-pump-var-speed-backup-boiler-switchover-temperature.xml index ffa543996a..050052c595 100644 --- a/workflow/sample_files/base-hvac-air-to-air-heat-pump-var-speed-backup-boiler-switchover-temperature.xml +++ b/workflow/sample_files/base-hvac-air-to-air-heat-pump-var-speed-backup-boiler-switchover-temperature.xml @@ -348,14 +348,6 @@ 30.0 1.0 1.0 - - SEER - 22.0 - - - HSPF - 10.0 - 0.6 diff --git a/workflow/sample_files/base-hvac-air-to-air-heat-pump-var-speed-backup-boiler.xml b/workflow/sample_files/base-hvac-air-to-air-heat-pump-var-speed-backup-boiler.xml index 7f2c8ed4b7..d4d56b0e2e 100644 --- a/workflow/sample_files/base-hvac-air-to-air-heat-pump-var-speed-backup-boiler.xml +++ b/workflow/sample_files/base-hvac-air-to-air-heat-pump-var-speed-backup-boiler.xml @@ -347,14 +347,6 @@ 1.0 1.0 - - SEER - 22.0 - - - HSPF - 10.0 - 0.6 diff --git a/workflow/sample_files/base-hvac-air-to-air-heat-pump-var-speed-backup-furnace-autosize-factor.xml b/workflow/sample_files/base-hvac-air-to-air-heat-pump-var-speed-backup-furnace-autosize-factor.xml index 64298b058c..0f490e4e84 100644 --- a/workflow/sample_files/base-hvac-air-to-air-heat-pump-var-speed-backup-furnace-autosize-factor.xml +++ b/workflow/sample_files/base-hvac-air-to-air-heat-pump-var-speed-backup-furnace-autosize-factor.xml @@ -348,14 +348,6 @@ 1.0 1.0 - - SEER - 22.0 - - - HSPF - 10.0 - 0.6 diff --git a/workflow/sample_files/base-hvac-air-to-air-heat-pump-var-speed-backup-furnace.xml b/workflow/sample_files/base-hvac-air-to-air-heat-pump-var-speed-backup-furnace.xml index fb7c46b0c1..4aadf7544e 100644 --- a/workflow/sample_files/base-hvac-air-to-air-heat-pump-var-speed-backup-furnace.xml +++ b/workflow/sample_files/base-hvac-air-to-air-heat-pump-var-speed-backup-furnace.xml @@ -347,14 +347,6 @@ 1.0 1.0 - - SEER - 22.0 - - - HSPF - 10.0 - 0.6 diff --git a/workflow/sample_files/base-hvac-air-to-air-heat-pump-var-speed-detailed-performance-autosize.xml b/workflow/sample_files/base-hvac-air-to-air-heat-pump-var-speed-detailed-performance-autosize.xml index 6fa8d857ba..1c96e548dd 100644 --- a/workflow/sample_files/base-hvac-air-to-air-heat-pump-var-speed-detailed-performance-autosize.xml +++ b/workflow/sample_files/base-hvac-air-to-air-heat-pump-var-speed-detailed-performance-autosize.xml @@ -328,22 +328,13 @@ variable speed 0.78 integrated - electricity - Percent + AFUE 1.0 36000.0 1.0 1.0 - - SEER - 17.25 - - - HSPF - 10.0 - 95.0 diff --git a/workflow/sample_files/base-hvac-air-to-air-heat-pump-var-speed-detailed-performance-heating-only.xml b/workflow/sample_files/base-hvac-air-to-air-heat-pump-var-speed-detailed-performance-heating-only.xml index fe19bd50d7..8985ad71f3 100644 --- a/workflow/sample_files/base-hvac-air-to-air-heat-pump-var-speed-detailed-performance-heating-only.xml +++ b/workflow/sample_files/base-hvac-air-to-air-heat-pump-var-speed-detailed-performance-heating-only.xml @@ -330,22 +330,13 @@ variable speed 0.78 integrated - electricity - Percent + AFUE 1.0 36000.0 1.0 1.0 - - SEER - 17.25 - - - HSPF - 10.0 - 47.0 diff --git a/workflow/sample_files/base-hvac-air-to-air-heat-pump-var-speed-detailed-performance-normalized-capacities.xml b/workflow/sample_files/base-hvac-air-to-air-heat-pump-var-speed-detailed-performance-normalized-capacities.xml index 317806ca93..31b657c5fe 100644 --- a/workflow/sample_files/base-hvac-air-to-air-heat-pump-var-speed-detailed-performance-normalized-capacities.xml +++ b/workflow/sample_files/base-hvac-air-to-air-heat-pump-var-speed-detailed-performance-normalized-capacities.xml @@ -330,22 +330,13 @@ variable speed 0.78 integrated - electricity - Percent + AFUE 1.0 36000.0 1.0 1.0 - - SEER - 17.25 - - - HSPF - 10.0 - 95.0 diff --git a/workflow/sample_files/base-hvac-air-to-air-heat-pump-var-speed-detailed-performance-other-temperatures.xml b/workflow/sample_files/base-hvac-air-to-air-heat-pump-var-speed-detailed-performance-other-temperatures.xml index eab541e264..188bef9abb 100644 --- a/workflow/sample_files/base-hvac-air-to-air-heat-pump-var-speed-detailed-performance-other-temperatures.xml +++ b/workflow/sample_files/base-hvac-air-to-air-heat-pump-var-speed-detailed-performance-other-temperatures.xml @@ -330,22 +330,13 @@ variable speed 0.78 integrated - electricity - Percent + AFUE 1.0 36000.0 1.0 1.0 - - SEER - 17.25 - - - HSPF - 10.0 - 95.0 diff --git a/workflow/sample_files/base-hvac-air-to-air-heat-pump-var-speed-detailed-performance.xml b/workflow/sample_files/base-hvac-air-to-air-heat-pump-var-speed-detailed-performance.xml index 4b6d22ffce..e7391392c2 100644 --- a/workflow/sample_files/base-hvac-air-to-air-heat-pump-var-speed-detailed-performance.xml +++ b/workflow/sample_files/base-hvac-air-to-air-heat-pump-var-speed-detailed-performance.xml @@ -330,22 +330,13 @@ variable speed 0.78 integrated - electricity - Percent + AFUE 1.0 36000.0 1.0 1.0 - - SEER - 17.25 - - - HSPF - 10.0 - 95.0 diff --git a/workflow/sample_files/base-hvac-air-to-air-heat-pump-var-speed-max-power-ratio-schedule-10-mins.xml b/workflow/sample_files/base-hvac-air-to-air-heat-pump-var-speed-max-power-ratio-schedule-10-mins.xml index c5b02424ff..9fa8e04754 100644 --- a/workflow/sample_files/base-hvac-air-to-air-heat-pump-var-speed-max-power-ratio-schedule-10-mins.xml +++ b/workflow/sample_files/base-hvac-air-to-air-heat-pump-var-speed-max-power-ratio-schedule-10-mins.xml @@ -333,22 +333,13 @@ variable speed 0.78 integrated - electricity - Percent + AFUE 1.0 36000.0 1.0 1.0 - - SEER - 22.0 - - - HSPF - 10.0 - 0.6 diff --git a/workflow/sample_files/base-hvac-air-to-air-heat-pump-var-speed-max-power-ratio-schedule-two-systems.xml b/workflow/sample_files/base-hvac-air-to-air-heat-pump-var-speed-max-power-ratio-schedule-two-systems.xml index 70f1151998..cfbbeb46bf 100644 --- a/workflow/sample_files/base-hvac-air-to-air-heat-pump-var-speed-max-power-ratio-schedule-two-systems.xml +++ b/workflow/sample_files/base-hvac-air-to-air-heat-pump-var-speed-max-power-ratio-schedule-two-systems.xml @@ -333,22 +333,13 @@ variable speed 0.78 integrated - electricity - Percent + AFUE 1.0 36000.0 0.7 0.7 - - SEER - 22.0 - - - HSPF - 10.0 - 0.6 @@ -366,22 +357,13 @@ variable speed 0.78 integrated - electricity - Percent + AFUE 1.0 36000.0 0.3 0.3 - - SEER - 22.0 - - - HSPF - 10.0 - 0.6 diff --git a/workflow/sample_files/base-hvac-air-to-air-heat-pump-var-speed-research-features.xml b/workflow/sample_files/base-hvac-air-to-air-heat-pump-var-speed-research-features.xml index 6ac8cab1a6..95367ecbad 100644 --- a/workflow/sample_files/base-hvac-air-to-air-heat-pump-var-speed-research-features.xml +++ b/workflow/sample_files/base-hvac-air-to-air-heat-pump-var-speed-research-features.xml @@ -336,22 +336,13 @@ variable speed 0.78 integrated - electricity - Percent + AFUE 1.0 36000.0 1.0 1.0 - - SEER - 22.0 - - - HSPF - 10.0 - 0.6 diff --git a/workflow/sample_files/base-hvac-air-to-air-heat-pump-var-speed.xml b/workflow/sample_files/base-hvac-air-to-air-heat-pump-var-speed.xml index f7dd0c7ff4..444e3e830b 100644 --- a/workflow/sample_files/base-hvac-air-to-air-heat-pump-var-speed.xml +++ b/workflow/sample_files/base-hvac-air-to-air-heat-pump-var-speed.xml @@ -330,22 +330,13 @@ variable speed 0.78 integrated - electricity - Percent + AFUE 1.0 36000.0 1.0 1.0 - - SEER - 22.0 - - - HSPF - 10.0 - 0.6 diff --git a/workflow/sample_files/base-hvac-central-ac-plus-air-to-air-heat-pump-heating.xml b/workflow/sample_files/base-hvac-central-ac-plus-air-to-air-heat-pump-heating.xml index 8c4fd60e6e..8c17fbbd10 100644 --- a/workflow/sample_files/base-hvac-central-ac-plus-air-to-air-heat-pump-heating.xml +++ b/workflow/sample_files/base-hvac-central-ac-plus-air-to-air-heat-pump-heating.xml @@ -344,22 +344,13 @@ single stage 0.73 integrated - electricity - Percent + AFUE 1.0 36000.0 1.0 0.0 - - SEER - 13.0 - - - HSPF - 7.7 - 0.6 diff --git a/workflow/sample_files/base-hvac-dual-fuel-air-to-air-heat-pump-1-speed-lockout-temperatures.xml b/workflow/sample_files/base-hvac-dual-fuel-air-to-air-heat-pump-1-speed-lockout-temperatures.xml index 920f84c410..03847e79fc 100644 --- a/workflow/sample_files/base-hvac-dual-fuel-air-to-air-heat-pump-1-speed-lockout-temperatures.xml +++ b/workflow/sample_files/base-hvac-dual-fuel-air-to-air-heat-pump-1-speed-lockout-temperatures.xml @@ -340,14 +340,6 @@ 45.0 1.0 1.0 - - SEER - 13.0 - - - HSPF - 7.7 - 0.6 diff --git a/workflow/sample_files/base-hvac-dual-fuel-air-to-air-heat-pump-1-speed.xml b/workflow/sample_files/base-hvac-dual-fuel-air-to-air-heat-pump-1-speed.xml index ab4571e570..cfe5cd1783 100644 --- a/workflow/sample_files/base-hvac-dual-fuel-air-to-air-heat-pump-1-speed.xml +++ b/workflow/sample_files/base-hvac-dual-fuel-air-to-air-heat-pump-1-speed.xml @@ -339,14 +339,6 @@ 30.0 1.0 1.0 - - SEER - 13.0 - - - HSPF - 7.7 - 0.6 diff --git a/workflow/sample_files/base-hvac-dual-fuel-air-to-air-heat-pump-2-speed-advanced-defrost.xml b/workflow/sample_files/base-hvac-dual-fuel-air-to-air-heat-pump-2-speed-advanced-defrost.xml index 843ab7d2d9..e1e0ef94b3 100644 --- a/workflow/sample_files/base-hvac-dual-fuel-air-to-air-heat-pump-2-speed-advanced-defrost.xml +++ b/workflow/sample_files/base-hvac-dual-fuel-air-to-air-heat-pump-2-speed-advanced-defrost.xml @@ -342,14 +342,6 @@ 30.0 1.0 1.0 - - SEER - 18.0 - - - HSPF - 9.3 - 0.6 diff --git a/workflow/sample_files/base-hvac-dual-fuel-air-to-air-heat-pump-2-speed.xml b/workflow/sample_files/base-hvac-dual-fuel-air-to-air-heat-pump-2-speed.xml index bbabdb0397..ea44692c1a 100644 --- a/workflow/sample_files/base-hvac-dual-fuel-air-to-air-heat-pump-2-speed.xml +++ b/workflow/sample_files/base-hvac-dual-fuel-air-to-air-heat-pump-2-speed.xml @@ -339,14 +339,6 @@ 30.0 1.0 1.0 - - SEER - 18.0 - - - HSPF - 9.3 - 0.6 diff --git a/workflow/sample_files/base-hvac-dual-fuel-air-to-air-heat-pump-var-speed.xml b/workflow/sample_files/base-hvac-dual-fuel-air-to-air-heat-pump-var-speed.xml index fd763be4a7..b7ffa4d490 100644 --- a/workflow/sample_files/base-hvac-dual-fuel-air-to-air-heat-pump-var-speed.xml +++ b/workflow/sample_files/base-hvac-dual-fuel-air-to-air-heat-pump-var-speed.xml @@ -339,14 +339,6 @@ 30.0 1.0 1.0 - - SEER - 22.0 - - - HSPF - 10.0 - 0.6 diff --git a/workflow/sample_files/base-hvac-dual-fuel-mini-split-heat-pump-ducted.xml b/workflow/sample_files/base-hvac-dual-fuel-mini-split-heat-pump-ducted.xml index e429c086e7..540c20528f 100644 --- a/workflow/sample_files/base-hvac-dual-fuel-mini-split-heat-pump-ducted.xml +++ b/workflow/sample_files/base-hvac-dual-fuel-mini-split-heat-pump-ducted.xml @@ -338,14 +338,6 @@ 30.0 1.0 1.0 - - SEER - 19.0 - - - HSPF - 10.0 - 0.6 diff --git a/workflow/sample_files/base-hvac-ducts-defaults.xml b/workflow/sample_files/base-hvac-ducts-defaults.xml index 904f3d29d0..a1da8d3259 100644 --- a/workflow/sample_files/base-hvac-ducts-defaults.xml +++ b/workflow/sample_files/base-hvac-ducts-defaults.xml @@ -339,7 +339,6 @@ - electricity Percent 1.0 diff --git a/workflow/sample_files/base-hvac-furnace-gas-plus-air-to-air-heat-pump-cooling.xml b/workflow/sample_files/base-hvac-furnace-gas-plus-air-to-air-heat-pump-cooling.xml index deac55d512..4be9b06936 100644 --- a/workflow/sample_files/base-hvac-furnace-gas-plus-air-to-air-heat-pump-cooling.xml +++ b/workflow/sample_files/base-hvac-furnace-gas-plus-air-to-air-heat-pump-cooling.xml @@ -345,14 +345,6 @@ 0.73 0.0 1.0 - - SEER - 13.0 - - - HSPF - 7.7 - 0.6 diff --git a/workflow/sample_files/base-hvac-ground-to-air-heat-pump-backup-integrated.xml b/workflow/sample_files/base-hvac-ground-to-air-heat-pump-backup-integrated.xml index b086c3ac93..6b7602f781 100644 --- a/workflow/sample_files/base-hvac-ground-to-air-heat-pump-backup-integrated.xml +++ b/workflow/sample_files/base-hvac-ground-to-air-heat-pump-backup-integrated.xml @@ -329,9 +329,8 @@ 36000.0 0.73 integrated - electricity - Percent + AFUE 1.0 36000.0 diff --git a/workflow/sample_files/base-hvac-install-quality-air-to-air-heat-pump-1-speed.xml b/workflow/sample_files/base-hvac-install-quality-air-to-air-heat-pump-1-speed.xml index 92e3c1fe49..d3a5e1e4c4 100644 --- a/workflow/sample_files/base-hvac-install-quality-air-to-air-heat-pump-1-speed.xml +++ b/workflow/sample_files/base-hvac-install-quality-air-to-air-heat-pump-1-speed.xml @@ -330,22 +330,13 @@ single stage 0.73 integrated - electricity - Percent + AFUE 1.0 36000.0 1.0 1.0 - - SEER - 13.0 - - - HSPF - 7.7 - -0.25 -0.25 diff --git a/workflow/sample_files/base-hvac-install-quality-air-to-air-heat-pump-2-speed.xml b/workflow/sample_files/base-hvac-install-quality-air-to-air-heat-pump-2-speed.xml index 92ac58d90f..aa6ea75666 100644 --- a/workflow/sample_files/base-hvac-install-quality-air-to-air-heat-pump-2-speed.xml +++ b/workflow/sample_files/base-hvac-install-quality-air-to-air-heat-pump-2-speed.xml @@ -330,22 +330,13 @@ two stage 0.73 integrated - electricity - Percent + AFUE 1.0 36000.0 1.0 1.0 - - SEER - 18.0 - - - HSPF - 9.3 - -0.25 -0.25 diff --git a/workflow/sample_files/base-hvac-install-quality-air-to-air-heat-pump-var-speed-detailed-performance.xml b/workflow/sample_files/base-hvac-install-quality-air-to-air-heat-pump-var-speed-detailed-performance.xml index bf2e43bc92..1950f706e6 100644 --- a/workflow/sample_files/base-hvac-install-quality-air-to-air-heat-pump-var-speed-detailed-performance.xml +++ b/workflow/sample_files/base-hvac-install-quality-air-to-air-heat-pump-var-speed-detailed-performance.xml @@ -330,22 +330,13 @@ variable speed 0.78 integrated - electricity - Percent + AFUE 1.0 36000.0 1.0 1.0 - - SEER - 17.25 - - - HSPF - 10.0 - 95.0 diff --git a/workflow/sample_files/base-hvac-install-quality-air-to-air-heat-pump-var-speed.xml b/workflow/sample_files/base-hvac-install-quality-air-to-air-heat-pump-var-speed.xml index 3cefacf984..c66fab7a47 100644 --- a/workflow/sample_files/base-hvac-install-quality-air-to-air-heat-pump-var-speed.xml +++ b/workflow/sample_files/base-hvac-install-quality-air-to-air-heat-pump-var-speed.xml @@ -330,22 +330,13 @@ variable speed 0.78 integrated - electricity - Percent + AFUE 1.0 36000.0 1.0 1.0 - - SEER - 22.0 - - - HSPF - 10.0 - -0.25 -0.25 diff --git a/workflow/sample_files/base-hvac-install-quality-mini-split-heat-pump-ducted.xml b/workflow/sample_files/base-hvac-install-quality-mini-split-heat-pump-ducted.xml index 93786959c5..9009df6441 100644 --- a/workflow/sample_files/base-hvac-install-quality-mini-split-heat-pump-ducted.xml +++ b/workflow/sample_files/base-hvac-install-quality-mini-split-heat-pump-ducted.xml @@ -329,22 +329,13 @@ 36000.0 0.73 integrated - electricity - Percent + AFUE 1.0 36000.0 1.0 1.0 - - SEER - 19.0 - - - HSPF - 10.0 - -0.25 -0.25 diff --git a/workflow/sample_files/base-hvac-mini-split-heat-pump-ducted-cooling-only.xml b/workflow/sample_files/base-hvac-mini-split-heat-pump-ducted-cooling-only.xml index 5a336693f9..497e7c9c95 100644 --- a/workflow/sample_files/base-hvac-mini-split-heat-pump-ducted-cooling-only.xml +++ b/workflow/sample_files/base-hvac-mini-split-heat-pump-ducted-cooling-only.xml @@ -329,14 +329,6 @@ 0.73 0.0 1.0 - - SEER - 19.0 - - - HSPF - 10.0 - 0.6 diff --git a/workflow/sample_files/base-hvac-mini-split-heat-pump-ducted-detailed-performance-autosize.xml b/workflow/sample_files/base-hvac-mini-split-heat-pump-ducted-detailed-performance-autosize.xml index 72caad6eef..0e7a22fd5c 100644 --- a/workflow/sample_files/base-hvac-mini-split-heat-pump-ducted-detailed-performance-autosize.xml +++ b/workflow/sample_files/base-hvac-mini-split-heat-pump-ducted-detailed-performance-autosize.xml @@ -328,22 +328,13 @@ variable speed 0.73 integrated - electricity - Percent + AFUE 1.0 36000.0 1.0 1.0 - - SEER - 16.7 - - - HSPF - 11.3 - 95.0 diff --git a/workflow/sample_files/base-hvac-mini-split-heat-pump-ducted-detailed-performance.xml b/workflow/sample_files/base-hvac-mini-split-heat-pump-ducted-detailed-performance.xml index 4c6aaf3c0d..9dd5033528 100644 --- a/workflow/sample_files/base-hvac-mini-split-heat-pump-ducted-detailed-performance.xml +++ b/workflow/sample_files/base-hvac-mini-split-heat-pump-ducted-detailed-performance.xml @@ -330,22 +330,13 @@ variable speed 0.73 integrated - electricity - Percent + AFUE 1.0 36000.0 1.0 1.0 - - SEER - 16.7 - - - HSPF - 11.3 - 95.0 diff --git a/workflow/sample_files/base-hvac-mini-split-heat-pump-ducted-heating-only-max-power-ratio-schedule.xml b/workflow/sample_files/base-hvac-mini-split-heat-pump-ducted-heating-only-max-power-ratio-schedule.xml index 823d508910..d436709336 100644 --- a/workflow/sample_files/base-hvac-mini-split-heat-pump-ducted-heating-only-max-power-ratio-schedule.xml +++ b/workflow/sample_files/base-hvac-mini-split-heat-pump-ducted-heating-only-max-power-ratio-schedule.xml @@ -331,22 +331,13 @@ 0.0 0.73 integrated - electricity - Percent + AFUE 1.0 36000.0 1.0 0.0 - - SEER - 19.0 - - - HSPF - 10.0 - 0.6 diff --git a/workflow/sample_files/base-hvac-mini-split-heat-pump-ducted-heating-only.xml b/workflow/sample_files/base-hvac-mini-split-heat-pump-ducted-heating-only.xml index a58c7b93d8..b27ef24e4c 100644 --- a/workflow/sample_files/base-hvac-mini-split-heat-pump-ducted-heating-only.xml +++ b/workflow/sample_files/base-hvac-mini-split-heat-pump-ducted-heating-only.xml @@ -328,22 +328,13 @@ 0.0 0.73 integrated - electricity - Percent + AFUE 1.0 36000.0 1.0 0.0 - - SEER - 19.0 - - - HSPF - 10.0 - 0.6 diff --git a/workflow/sample_files/base-hvac-mini-split-heat-pump-ducted-max-power-ratio-schedule.xml b/workflow/sample_files/base-hvac-mini-split-heat-pump-ducted-max-power-ratio-schedule.xml index ce5328a7fd..8459f7d7c7 100644 --- a/workflow/sample_files/base-hvac-mini-split-heat-pump-ducted-max-power-ratio-schedule.xml +++ b/workflow/sample_files/base-hvac-mini-split-heat-pump-ducted-max-power-ratio-schedule.xml @@ -332,22 +332,13 @@ 36000.0 0.73 integrated - electricity - Percent + AFUE 1.0 36000.0 1.0 1.0 - - SEER - 19.0 - - - HSPF - 10.0 - 0.6 diff --git a/workflow/sample_files/base-hvac-mini-split-heat-pump-ducted.xml b/workflow/sample_files/base-hvac-mini-split-heat-pump-ducted.xml index 23740e724b..44537ac7ba 100644 --- a/workflow/sample_files/base-hvac-mini-split-heat-pump-ducted.xml +++ b/workflow/sample_files/base-hvac-mini-split-heat-pump-ducted.xml @@ -329,22 +329,13 @@ 36000.0 0.73 integrated - electricity - Percent + AFUE 1.0 36000.0 1.0 1.0 - - SEER - 19.0 - - - HSPF - 10.0 - 0.6 diff --git a/workflow/sample_files/base-hvac-mini-split-heat-pump-ductless-advanced-defrost.xml b/workflow/sample_files/base-hvac-mini-split-heat-pump-ductless-advanced-defrost.xml index aa2aff38e1..c781184430 100644 --- a/workflow/sample_files/base-hvac-mini-split-heat-pump-ductless-advanced-defrost.xml +++ b/workflow/sample_files/base-hvac-mini-split-heat-pump-ductless-advanced-defrost.xml @@ -332,14 +332,6 @@ 0.73 1.0 1.0 - - SEER - 19.0 - - - HSPF - 10.0 - 0.6 diff --git a/workflow/sample_files/base-hvac-mini-split-heat-pump-ductless-autosize-factor.xml b/workflow/sample_files/base-hvac-mini-split-heat-pump-ductless-autosize-factor.xml index f4fff28c42..4b6fff197a 100644 --- a/workflow/sample_files/base-hvac-mini-split-heat-pump-ductless-autosize-factor.xml +++ b/workflow/sample_files/base-hvac-mini-split-heat-pump-ductless-autosize-factor.xml @@ -327,14 +327,6 @@ 0.73 1.0 1.0 - - SEER - 19.0 - - - HSPF - 10.0 - 0.6 diff --git a/workflow/sample_files/base-hvac-mini-split-heat-pump-ductless-backup-advanced-defrost.xml b/workflow/sample_files/base-hvac-mini-split-heat-pump-ductless-backup-advanced-defrost.xml index a81ba952e9..58b17c4e4c 100644 --- a/workflow/sample_files/base-hvac-mini-split-heat-pump-ductless-backup-advanced-defrost.xml +++ b/workflow/sample_files/base-hvac-mini-split-heat-pump-ductless-backup-advanced-defrost.xml @@ -331,22 +331,13 @@ 36000.0 0.73 integrated - electricity - Percent + AFUE 1.0 36000.0 1.0 1.0 - - SEER - 19.0 - - - HSPF - 10.0 - 0.6 diff --git a/workflow/sample_files/base-hvac-mini-split-heat-pump-ductless-backup-baseboard.xml b/workflow/sample_files/base-hvac-mini-split-heat-pump-ductless-backup-baseboard.xml index d3d7b0f39b..5c0eb5a31f 100644 --- a/workflow/sample_files/base-hvac-mini-split-heat-pump-ductless-backup-baseboard.xml +++ b/workflow/sample_files/base-hvac-mini-split-heat-pump-ductless-backup-baseboard.xml @@ -343,14 +343,6 @@ 1.0 1.0 - - SEER - 19.0 - - - HSPF - 10.0 - 0.6 diff --git a/workflow/sample_files/base-hvac-mini-split-heat-pump-ductless-backup-furnace-ducts-defaults.xml b/workflow/sample_files/base-hvac-mini-split-heat-pump-ductless-backup-furnace-ducts-defaults.xml index e13fc8cad1..b29c93454b 100644 --- a/workflow/sample_files/base-hvac-mini-split-heat-pump-ductless-backup-furnace-ducts-defaults.xml +++ b/workflow/sample_files/base-hvac-mini-split-heat-pump-ductless-backup-furnace-ducts-defaults.xml @@ -344,14 +344,6 @@ 1.0 1.0 - - SEER - 19.0 - - - HSPF - 10.0 - 0.6 diff --git a/workflow/sample_files/base-hvac-mini-split-heat-pump-ductless-backup-furnace.xml b/workflow/sample_files/base-hvac-mini-split-heat-pump-ductless-backup-furnace.xml index 40eaf92716..26bad13c41 100644 --- a/workflow/sample_files/base-hvac-mini-split-heat-pump-ductless-backup-furnace.xml +++ b/workflow/sample_files/base-hvac-mini-split-heat-pump-ductless-backup-furnace.xml @@ -344,14 +344,6 @@ 1.0 1.0 - - SEER - 19.0 - - - HSPF - 10.0 - 0.6 diff --git a/workflow/sample_files/base-hvac-mini-split-heat-pump-ductless-backup-stove.xml b/workflow/sample_files/base-hvac-mini-split-heat-pump-ductless-backup-stove.xml index 139df10e53..cc0b53a92b 100644 --- a/workflow/sample_files/base-hvac-mini-split-heat-pump-ductless-backup-stove.xml +++ b/workflow/sample_files/base-hvac-mini-split-heat-pump-ductless-backup-stove.xml @@ -346,14 +346,6 @@ 1.0 1.0 - - SEER - 19.0 - - - HSPF - 10.0 - 0.6 diff --git a/workflow/sample_files/base-hvac-mini-split-heat-pump-ductless-detailed-performance-autosize.xml b/workflow/sample_files/base-hvac-mini-split-heat-pump-ductless-detailed-performance-autosize.xml index 347a37c78d..51d70b42f8 100644 --- a/workflow/sample_files/base-hvac-mini-split-heat-pump-ductless-detailed-performance-autosize.xml +++ b/workflow/sample_files/base-hvac-mini-split-heat-pump-ductless-detailed-performance-autosize.xml @@ -328,14 +328,6 @@ 0.73 1.0 1.0 - - SEER - 21.5 - - - HSPF - 10.5 - 95.0 diff --git a/workflow/sample_files/base-hvac-mini-split-heat-pump-ductless-detailed-performance.xml b/workflow/sample_files/base-hvac-mini-split-heat-pump-ductless-detailed-performance.xml index 275daaf950..2cac8cdd80 100644 --- a/workflow/sample_files/base-hvac-mini-split-heat-pump-ductless-detailed-performance.xml +++ b/workflow/sample_files/base-hvac-mini-split-heat-pump-ductless-detailed-performance.xml @@ -330,14 +330,6 @@ 0.73 1.0 1.0 - - SEER - 21.5 - - - HSPF - 10.5 - 95.0 diff --git a/workflow/sample_files/base-hvac-mini-split-heat-pump-ductless-heating-capacity-17f.xml b/workflow/sample_files/base-hvac-mini-split-heat-pump-ductless-heating-capacity-17f.xml index 64b82a7408..4f49f86e16 100644 --- a/workflow/sample_files/base-hvac-mini-split-heat-pump-ductless-heating-capacity-17f.xml +++ b/workflow/sample_files/base-hvac-mini-split-heat-pump-ductless-heating-capacity-17f.xml @@ -330,14 +330,6 @@ 0.73 1.0 1.0 - - SEER - 19.0 - - - HSPF - 10.0 - diff --git a/workflow/sample_files/base-hvac-mini-split-heat-pump-ductless.xml b/workflow/sample_files/base-hvac-mini-split-heat-pump-ductless.xml index 001d2f368b..3d9dbc8381 100644 --- a/workflow/sample_files/base-hvac-mini-split-heat-pump-ductless.xml +++ b/workflow/sample_files/base-hvac-mini-split-heat-pump-ductless.xml @@ -329,14 +329,6 @@ 0.73 1.0 1.0 - - SEER - 19.0 - - - HSPF - 10.0 - 0.6 diff --git a/workflow/sample_files/base-hvac-pthp-cfis.xml b/workflow/sample_files/base-hvac-pthp-cfis.xml index 9b59507a10..81302a6546 100644 --- a/workflow/sample_files/base-hvac-pthp-cfis.xml +++ b/workflow/sample_files/base-hvac-pthp-cfis.xml @@ -329,9 +329,8 @@ 36000.0 0.65 integrated - electricity - Percent + AFUE 1.0 36000.0 diff --git a/workflow/sample_files/base-hvac-pthp-heating-capacity-17f.xml b/workflow/sample_files/base-hvac-pthp-heating-capacity-17f.xml index fb8521bce8..d30730ea32 100644 --- a/workflow/sample_files/base-hvac-pthp-heating-capacity-17f.xml +++ b/workflow/sample_files/base-hvac-pthp-heating-capacity-17f.xml @@ -329,9 +329,8 @@ 36000.0 0.65 integrated - electricity - Percent + AFUE 1.0 36000.0 diff --git a/workflow/sample_files/base-hvac-pthp.xml b/workflow/sample_files/base-hvac-pthp.xml index 8e3d8e1e2c..a59a2f70e9 100644 --- a/workflow/sample_files/base-hvac-pthp.xml +++ b/workflow/sample_files/base-hvac-pthp.xml @@ -328,9 +328,8 @@ 36000.0 0.65 integrated - electricity - Percent + AFUE 1.0 36000.0 diff --git a/workflow/sample_files/base-hvac-room-ac-with-reverse-cycle.xml b/workflow/sample_files/base-hvac-room-ac-with-reverse-cycle.xml index 3b38d2f2ef..2f26104a48 100644 --- a/workflow/sample_files/base-hvac-room-ac-with-reverse-cycle.xml +++ b/workflow/sample_files/base-hvac-room-ac-with-reverse-cycle.xml @@ -328,9 +328,8 @@ 36000.0 0.65 integrated - electricity - Percent + AFUE 1.0 36000.0 diff --git a/workflow/sample_files/base-mechvent-erv.xml b/workflow/sample_files/base-mechvent-erv.xml index 3d8ec851b1..1e3e2fc61e 100644 --- a/workflow/sample_files/base-mechvent-erv.xml +++ b/workflow/sample_files/base-mechvent-erv.xml @@ -401,8 +401,6 @@ 110.0 24.0 true - 0.48 - 0.72 60.0 diff --git a/workflow/sample_files/base-mechvent-hrv.xml b/workflow/sample_files/base-mechvent-hrv.xml index 48317f9c2b..79e1b2ec4a 100644 --- a/workflow/sample_files/base-mechvent-hrv.xml +++ b/workflow/sample_files/base-mechvent-hrv.xml @@ -401,7 +401,6 @@ 110.0 24.0 true - 0.72 60.0 diff --git a/workflow/sample_files/base-misc-loads-large-uncommon.xml b/workflow/sample_files/base-misc-loads-large-uncommon.xml index c778817230..b8fe8b3e1a 100644 --- a/workflow/sample_files/base-misc-loads-large-uncommon.xml +++ b/workflow/sample_files/base-misc-loads-large-uncommon.xml @@ -760,7 +760,6 @@ therm/year 28.0 - natural gas 0.044, 0.023, 0.019, 0.015, 0.016, 0.018, 0.026, 0.033, 0.033, 0.032, 0.033, 0.033, 0.032, 0.032, 0.032, 0.033, 0.045, 0.057, 0.066, 0.076, 0.081, 0.086, 0.075, 0.065 0.044, 0.023, 0.019, 0.015, 0.016, 0.018, 0.026, 0.033, 0.033, 0.032, 0.033, 0.033, 0.032, 0.032, 0.032, 0.033, 0.045, 0.057, 0.066, 0.076, 0.081, 0.086, 0.075, 0.065 diff --git a/workflow/sample_files/base-misc-loads-large-uncommon2.xml b/workflow/sample_files/base-misc-loads-large-uncommon2.xml index 21a4890cca..700d8c7c43 100644 --- a/workflow/sample_files/base-misc-loads-large-uncommon2.xml +++ b/workflow/sample_files/base-misc-loads-large-uncommon2.xml @@ -751,7 +751,6 @@ therm/year 28.0 - natural gas 0.044, 0.023, 0.019, 0.015, 0.016, 0.018, 0.026, 0.033, 0.033, 0.032, 0.033, 0.033, 0.032, 0.032, 0.032, 0.033, 0.045, 0.057, 0.066, 0.076, 0.081, 0.086, 0.075, 0.065 0.044, 0.023, 0.019, 0.015, 0.016, 0.018, 0.026, 0.033, 0.033, 0.032, 0.033, 0.033, 0.032, 0.032, 0.032, 0.033, 0.045, 0.057, 0.066, 0.076, 0.081, 0.086, 0.075, 0.065 diff --git a/workflow/sample_files/base-misc-usage-multiplier.xml b/workflow/sample_files/base-misc-usage-multiplier.xml index 227fbe0d02..9607a458e2 100644 --- a/workflow/sample_files/base-misc-usage-multiplier.xml +++ b/workflow/sample_files/base-misc-usage-multiplier.xml @@ -692,7 +692,6 @@ therm/year 28.0 - natural gas 0.9 0.044, 0.023, 0.019, 0.015, 0.016, 0.018, 0.026, 0.033, 0.033, 0.032, 0.033, 0.033, 0.032, 0.032, 0.032, 0.033, 0.045, 0.057, 0.066, 0.076, 0.081, 0.086, 0.075, 0.065 diff --git a/workflow/sample_files/base-residents-1-misc-loads-large-uncommon.xml b/workflow/sample_files/base-residents-1-misc-loads-large-uncommon.xml index eecd18ab6a..3981965d44 100644 --- a/workflow/sample_files/base-residents-1-misc-loads-large-uncommon.xml +++ b/workflow/sample_files/base-residents-1-misc-loads-large-uncommon.xml @@ -599,7 +599,6 @@ lighting - natural gas diff --git a/workflow/sample_files/base-residents-1-misc-loads-large-uncommon2.xml b/workflow/sample_files/base-residents-1-misc-loads-large-uncommon2.xml index 34db0e8343..688a682225 100644 --- a/workflow/sample_files/base-residents-1-misc-loads-large-uncommon2.xml +++ b/workflow/sample_files/base-residents-1-misc-loads-large-uncommon2.xml @@ -599,7 +599,6 @@ lighting - natural gas diff --git a/workflow/tests/HERS_Hot_Water/L100AD-HW-01.xml b/workflow/tests/HERS_Hot_Water/L100AD-HW-01.xml index afeabc4ef5..5afb92d7b4 100644 --- a/workflow/tests/HERS_Hot_Water/L100AD-HW-01.xml +++ b/workflow/tests/HERS_Hot_Water/L100AD-HW-01.xml @@ -393,7 +393,6 @@ interior - 0.0 @@ -401,7 +400,6 @@ interior - 0.0 @@ -409,7 +407,6 @@ exterior - 0.0 @@ -417,7 +414,6 @@ exterior - 0.0 @@ -425,7 +421,6 @@ exterior - 0.0 diff --git a/workflow/tests/HERS_Hot_Water/L100AD-HW-02.xml b/workflow/tests/HERS_Hot_Water/L100AD-HW-02.xml index 561c75f12e..2e2d2cd4cd 100644 --- a/workflow/tests/HERS_Hot_Water/L100AD-HW-02.xml +++ b/workflow/tests/HERS_Hot_Water/L100AD-HW-02.xml @@ -393,7 +393,6 @@ interior - 0.0 @@ -401,7 +400,6 @@ interior - 0.0 @@ -409,7 +407,6 @@ exterior - 0.0 @@ -417,7 +414,6 @@ exterior - 0.0 @@ -425,7 +421,6 @@ exterior - 0.0 diff --git a/workflow/tests/HERS_Hot_Water/L100AD-HW-03.xml b/workflow/tests/HERS_Hot_Water/L100AD-HW-03.xml index 16487b354f..6f8b39da42 100644 --- a/workflow/tests/HERS_Hot_Water/L100AD-HW-03.xml +++ b/workflow/tests/HERS_Hot_Water/L100AD-HW-03.xml @@ -393,7 +393,6 @@ interior - 0.0 @@ -401,7 +400,6 @@ interior - 0.0 @@ -409,7 +407,6 @@ exterior - 0.0 @@ -417,7 +414,6 @@ exterior - 0.0 @@ -425,7 +421,6 @@ exterior - 0.0 diff --git a/workflow/tests/HERS_Hot_Water/L100AD-HW-04.xml b/workflow/tests/HERS_Hot_Water/L100AD-HW-04.xml index 07bdb8ed8e..b47c0cb376 100644 --- a/workflow/tests/HERS_Hot_Water/L100AD-HW-04.xml +++ b/workflow/tests/HERS_Hot_Water/L100AD-HW-04.xml @@ -393,7 +393,6 @@ interior - 0.0 @@ -401,7 +400,6 @@ interior - 0.0 @@ -409,7 +407,6 @@ exterior - 0.0 @@ -417,7 +414,6 @@ exterior - 0.0 @@ -425,7 +421,6 @@ exterior - 0.0 diff --git a/workflow/tests/HERS_Hot_Water/L100AD-HW-05.xml b/workflow/tests/HERS_Hot_Water/L100AD-HW-05.xml index d3ae829140..f29d8671f5 100644 --- a/workflow/tests/HERS_Hot_Water/L100AD-HW-05.xml +++ b/workflow/tests/HERS_Hot_Water/L100AD-HW-05.xml @@ -400,7 +400,6 @@ interior - 0.0 @@ -408,7 +407,6 @@ interior - 0.0 @@ -416,7 +414,6 @@ exterior - 0.0 @@ -424,7 +421,6 @@ exterior - 0.0 @@ -432,7 +428,6 @@ exterior - 0.0 diff --git a/workflow/tests/HERS_Hot_Water/L100AD-HW-06.xml b/workflow/tests/HERS_Hot_Water/L100AD-HW-06.xml index edbbe68e35..471eb360da 100644 --- a/workflow/tests/HERS_Hot_Water/L100AD-HW-06.xml +++ b/workflow/tests/HERS_Hot_Water/L100AD-HW-06.xml @@ -400,7 +400,6 @@ interior - 0.0 @@ -408,7 +407,6 @@ interior - 0.0 @@ -416,7 +414,6 @@ exterior - 0.0 @@ -424,7 +421,6 @@ exterior - 0.0 @@ -432,7 +428,6 @@ exterior - 0.0 diff --git a/workflow/tests/HERS_Hot_Water/L100AD-HW-07.xml b/workflow/tests/HERS_Hot_Water/L100AD-HW-07.xml index 494d3de6c9..0111b39805 100644 --- a/workflow/tests/HERS_Hot_Water/L100AD-HW-07.xml +++ b/workflow/tests/HERS_Hot_Water/L100AD-HW-07.xml @@ -398,7 +398,6 @@ interior - 0.0 @@ -406,7 +405,6 @@ interior - 0.0 @@ -414,7 +412,6 @@ exterior - 0.0 @@ -422,7 +419,6 @@ exterior - 0.0 @@ -430,7 +426,6 @@ exterior - 0.0 diff --git a/workflow/tests/HERS_Hot_Water/L100AM-HW-01.xml b/workflow/tests/HERS_Hot_Water/L100AM-HW-01.xml index 07f55f1a67..a3f3807966 100644 --- a/workflow/tests/HERS_Hot_Water/L100AM-HW-01.xml +++ b/workflow/tests/HERS_Hot_Water/L100AM-HW-01.xml @@ -393,7 +393,6 @@ interior - 0.0 @@ -401,7 +400,6 @@ interior - 0.0 @@ -409,7 +407,6 @@ exterior - 0.0 @@ -417,7 +414,6 @@ exterior - 0.0 @@ -425,7 +421,6 @@ exterior - 0.0 diff --git a/workflow/tests/HERS_Hot_Water/L100AM-HW-02.xml b/workflow/tests/HERS_Hot_Water/L100AM-HW-02.xml index 90a48c5e38..83081172d6 100644 --- a/workflow/tests/HERS_Hot_Water/L100AM-HW-02.xml +++ b/workflow/tests/HERS_Hot_Water/L100AM-HW-02.xml @@ -393,7 +393,6 @@ interior - 0.0 @@ -401,7 +400,6 @@ interior - 0.0 @@ -409,7 +407,6 @@ exterior - 0.0 @@ -417,7 +414,6 @@ exterior - 0.0 @@ -425,7 +421,6 @@ exterior - 0.0 diff --git a/workflow/tests/HERS_Hot_Water/L100AM-HW-03.xml b/workflow/tests/HERS_Hot_Water/L100AM-HW-03.xml index 6b59575d8f..2f24d37556 100644 --- a/workflow/tests/HERS_Hot_Water/L100AM-HW-03.xml +++ b/workflow/tests/HERS_Hot_Water/L100AM-HW-03.xml @@ -393,7 +393,6 @@ interior - 0.0 @@ -401,7 +400,6 @@ interior - 0.0 @@ -409,7 +407,6 @@ exterior - 0.0 @@ -417,7 +414,6 @@ exterior - 0.0 @@ -425,7 +421,6 @@ exterior - 0.0 diff --git a/workflow/tests/HERS_Hot_Water/L100AM-HW-04.xml b/workflow/tests/HERS_Hot_Water/L100AM-HW-04.xml index 6ce0b2acc0..422b62c3fb 100644 --- a/workflow/tests/HERS_Hot_Water/L100AM-HW-04.xml +++ b/workflow/tests/HERS_Hot_Water/L100AM-HW-04.xml @@ -393,7 +393,6 @@ interior - 0.0 @@ -401,7 +400,6 @@ interior - 0.0 @@ -409,7 +407,6 @@ exterior - 0.0 @@ -417,7 +414,6 @@ exterior - 0.0 @@ -425,7 +421,6 @@ exterior - 0.0 diff --git a/workflow/tests/HERS_Hot_Water/L100AM-HW-05.xml b/workflow/tests/HERS_Hot_Water/L100AM-HW-05.xml index b94288e812..7ede988927 100644 --- a/workflow/tests/HERS_Hot_Water/L100AM-HW-05.xml +++ b/workflow/tests/HERS_Hot_Water/L100AM-HW-05.xml @@ -400,7 +400,6 @@ interior - 0.0 @@ -408,7 +407,6 @@ interior - 0.0 @@ -416,7 +414,6 @@ exterior - 0.0 @@ -424,7 +421,6 @@ exterior - 0.0 @@ -432,7 +428,6 @@ exterior - 0.0 diff --git a/workflow/tests/HERS_Hot_Water/L100AM-HW-06.xml b/workflow/tests/HERS_Hot_Water/L100AM-HW-06.xml index e0f973da7c..0d294e6bee 100644 --- a/workflow/tests/HERS_Hot_Water/L100AM-HW-06.xml +++ b/workflow/tests/HERS_Hot_Water/L100AM-HW-06.xml @@ -400,7 +400,6 @@ interior - 0.0 @@ -408,7 +407,6 @@ interior - 0.0 @@ -416,7 +414,6 @@ exterior - 0.0 @@ -424,7 +421,6 @@ exterior - 0.0 @@ -432,7 +428,6 @@ exterior - 0.0 diff --git a/workflow/tests/HERS_Hot_Water/L100AM-HW-07.xml b/workflow/tests/HERS_Hot_Water/L100AM-HW-07.xml index c6fc7a3643..9c8f420898 100644 --- a/workflow/tests/HERS_Hot_Water/L100AM-HW-07.xml +++ b/workflow/tests/HERS_Hot_Water/L100AM-HW-07.xml @@ -398,7 +398,6 @@ interior - 0.0 @@ -406,7 +405,6 @@ interior - 0.0 @@ -414,7 +412,6 @@ exterior - 0.0 @@ -422,7 +419,6 @@ exterior - 0.0 @@ -430,7 +426,6 @@ exterior - 0.0 From 14a489618b3f1cc1fb3521a7e2f847161b7a2a16 Mon Sep 17 00:00:00 2001 From: Joe Robertson Date: Mon, 4 Nov 2024 09:17:45 -0700 Subject: [PATCH 22/33] More entries to defaultOptionalArgumentValues. --- BuildResidentialHPXML/measure.rb | 48 +++++++++++++------ BuildResidentialHPXML/measure.xml | 6 +-- ...ed-boiler-only-fan-coil-fireplace-elec.xml | 1 + .../base-enclosure-skylights-cathedral.xml | 4 ++ .../base-enclosure-skylights-shading.xml | 4 ++ .../base-enclosure-skylights-storms.xml | 2 + .../sample_files/base-enclosure-skylights.xml | 4 ++ ...-air-heat-pump-1-speed-autosize-factor.xml | 11 ++++- ...-to-air-heat-pump-1-speed-cooling-only.xml | 8 ++++ ...heat-pump-1-speed-heating-capacity-17f.xml | 11 ++++- ...-to-air-heat-pump-1-speed-heating-only.xml | 11 ++++- ...heat-pump-1-speed-lockout-temperatures.xml | 11 ++++- ...ir-heat-pump-1-speed-research-features.xml | 11 ++++- ...r-to-air-heat-pump-1-speed-seer2-hspf2.xml | 3 +- ...base-hvac-air-to-air-heat-pump-1-speed.xml | 11 ++++- ...ir-heat-pump-2-speed-research-features.xml | 11 ++++- ...base-hvac-air-to-air-heat-pump-2-speed.xml | 11 ++++- ...r-heat-pump-var-speed-autosize-maxload.xml | 11 ++++- ...r-speed-backup-boiler-advanced-defrost.xml | 8 ++++ ...p-var-speed-backup-boiler-hvac-seasons.xml | 8 ++++ ...d-backup-boiler-switchover-temperature.xml | 8 ++++ ...-air-heat-pump-var-speed-backup-boiler.xml | 8 ++++ ...r-speed-backup-furnace-autosize-factor.xml | 8 ++++ ...air-heat-pump-var-speed-backup-furnace.xml | 8 ++++ ...ar-speed-detailed-performance-autosize.xml | 11 ++++- ...peed-detailed-performance-heating-only.xml | 11 ++++- ...iled-performance-normalized-capacities.xml | 11 ++++- ...etailed-performance-other-temperatures.xml | 11 ++++- ...at-pump-var-speed-detailed-performance.xml | 11 ++++- ...speed-max-power-ratio-schedule-10-mins.xml | 11 ++++- ...d-max-power-ratio-schedule-two-systems.xml | 22 ++++++++- ...-heat-pump-var-speed-research-features.xml | 11 ++++- ...se-hvac-air-to-air-heat-pump-var-speed.xml | 11 ++++- ...l-ac-plus-air-to-air-heat-pump-heating.xml | 11 ++++- ...heat-pump-1-speed-lockout-temperatures.xml | 8 ++++ ...dual-fuel-air-to-air-heat-pump-1-speed.xml | 8 ++++ ...air-heat-pump-2-speed-advanced-defrost.xml | 8 ++++ ...dual-fuel-air-to-air-heat-pump-2-speed.xml | 8 ++++ ...al-fuel-air-to-air-heat-pump-var-speed.xml | 8 ++++ ...-dual-fuel-mini-split-heat-pump-ducted.xml | 8 ++++ .../sample_files/base-hvac-ducts-defaults.xml | 1 + ...-gas-plus-air-to-air-heat-pump-cooling.xml | 8 ++++ ...und-to-air-heat-pump-backup-integrated.xml | 3 +- ...l-quality-air-to-air-heat-pump-1-speed.xml | 11 ++++- ...l-quality-air-to-air-heat-pump-2-speed.xml | 11 ++++- ...at-pump-var-speed-detailed-performance.xml | 11 ++++- ...quality-air-to-air-heat-pump-var-speed.xml | 11 ++++- ...ll-quality-mini-split-heat-pump-ducted.xml | 11 ++++- ...ni-split-heat-pump-ducted-cooling-only.xml | 8 ++++ ...p-ducted-detailed-performance-autosize.xml | 11 ++++- ...-heat-pump-ducted-detailed-performance.xml | 11 ++++- ...-heating-only-max-power-ratio-schedule.xml | 11 ++++- ...ni-split-heat-pump-ducted-heating-only.xml | 11 ++++- ...t-pump-ducted-max-power-ratio-schedule.xml | 11 ++++- .../base-hvac-mini-split-heat-pump-ducted.xml | 11 ++++- ...it-heat-pump-ductless-advanced-defrost.xml | 8 ++++ ...lit-heat-pump-ductless-autosize-factor.xml | 8 ++++ ...-pump-ductless-backup-advanced-defrost.xml | 11 ++++- ...it-heat-pump-ductless-backup-baseboard.xml | 8 ++++ ...ductless-backup-furnace-ducts-defaults.xml | 8 ++++ ...plit-heat-pump-ductless-backup-furnace.xml | 8 ++++ ...-split-heat-pump-ductless-backup-stove.xml | 8 ++++ ...ductless-detailed-performance-autosize.xml | 8 ++++ ...eat-pump-ductless-detailed-performance.xml | 8 ++++ ...eat-pump-ductless-heating-capacity-17f.xml | 8 ++++ ...ase-hvac-mini-split-heat-pump-ductless.xml | 8 ++++ workflow/sample_files/base-hvac-pthp-cfis.xml | 3 +- .../base-hvac-pthp-heating-capacity-17f.xml | 3 +- workflow/sample_files/base-hvac-pthp.xml | 3 +- .../base-hvac-room-ac-with-reverse-cycle.xml | 3 +- workflow/sample_files/base-mechvent-erv.xml | 2 + workflow/sample_files/base-mechvent-hrv.xml | 1 + .../base-misc-loads-large-uncommon.xml | 1 + .../base-misc-loads-large-uncommon2.xml | 1 + .../base-misc-usage-multiplier.xml | 1 + ...-residents-1-misc-loads-large-uncommon.xml | 1 + ...residents-1-misc-loads-large-uncommon2.xml | 1 + .../tests/HERS_Hot_Water/L100AD-HW-01.xml | 5 ++ .../tests/HERS_Hot_Water/L100AD-HW-02.xml | 5 ++ .../tests/HERS_Hot_Water/L100AD-HW-03.xml | 5 ++ .../tests/HERS_Hot_Water/L100AD-HW-04.xml | 5 ++ .../tests/HERS_Hot_Water/L100AD-HW-05.xml | 5 ++ .../tests/HERS_Hot_Water/L100AD-HW-06.xml | 5 ++ .../tests/HERS_Hot_Water/L100AD-HW-07.xml | 5 ++ .../tests/HERS_Hot_Water/L100AM-HW-01.xml | 5 ++ .../tests/HERS_Hot_Water/L100AM-HW-02.xml | 5 ++ .../tests/HERS_Hot_Water/L100AM-HW-03.xml | 5 ++ .../tests/HERS_Hot_Water/L100AM-HW-04.xml | 5 ++ .../tests/HERS_Hot_Water/L100AM-HW-05.xml | 5 ++ .../tests/HERS_Hot_Water/L100AM-HW-06.xml | 5 ++ .../tests/HERS_Hot_Water/L100AM-HW-07.xml | 5 ++ 91 files changed, 663 insertions(+), 55 deletions(-) diff --git a/BuildResidentialHPXML/measure.rb b/BuildResidentialHPXML/measure.rb index 1a90e1aa95..1275089a4e 100644 --- a/BuildResidentialHPXML/measure.rb +++ b/BuildResidentialHPXML/measure.rb @@ -5170,27 +5170,47 @@ def convertArgumentValues(arguments_model, args) # TODO def defaultOptionalArgumentValues(args) args[:floor_over_foundation_assembly_r] = 28.1 if args[:floor_over_foundation_assembly_r].nil? - args[:heating_system_2_type] = Constants::None if args[:heating_system_2_type].nil? - args[:mech_vent_fan_type] = Constants::None if args[:mech_vent_fan_type].nil? - args[:mech_vent_2_fan_type] = Constants::None if args[:mech_vent_2_fan_type].nil? - args[:water_heater_type] = HPXML::WaterHeaterTypeStorage if args[:water_heater_type].nil? - args[:water_heater_jacket_rvalue] = Constants::None if args[:water_heater_jacket_rvalue].nil? - args[:dehumidifier_type] = Constants::None if args[:dehumidifier_type].nil? - args[:solar_thermal_system_type] = Constants::None if args[:solar_thermal_system_type].nil? + args[:geometry_roof_pitch] = '6:12' if args[:geometry_roof_pitch].nil? args[:overhangs_front_depth] = 0 if args[:overhangs_front_depth].nil? args[:overhangs_back_depth] = 0 if args[:overhangs_back_depth].nil? args[:overhangs_left_depth] = 0 if args[:overhangs_left_depth].nil? args[:overhangs_right_depth] = 0 if args[:overhangs_right_depth].nil? - args[:solar_thermal_solar_fraction] = 0 if args[:solar_thermal_solar_fraction].nil? - args[:geometry_roof_pitch] = '6:12' if args[:geometry_roof_pitch].nil? - args[:solar_thermal_collector_tilt] = 'RoofPitch' if args[:solar_thermal_collector_tilt].nil? - args[:water_fixtures_shower_low_flow] = false if args[:water_fixtures_shower_low_flow].nil? - args[:water_fixtures_sink_low_flow] = false if args[:water_fixtures_sink_low_flow].nil? args[:skylight_ufactor] = 0.33 if args[:skylight_ufactor].nil? args[:skylight_shgc] = 0.45 if args[:skylight_shgc].nil? + args[:heating_system_2_type] = Constants::None if args[:heating_system_2_type].nil? + args[:heating_system_2_fuel] = HPXML::FuelTypeElectricity if args[:heating_system_2_fuel].nil? + args[:heat_pump_heating_efficiency_type] = HPXML::UnitsHSPF if args[:heat_pump_heating_efficiency_type].nil? + args[:heat_pump_heating_efficiency] = 7.7 if args[:heat_pump_heating_efficiency].nil? + args[:heat_pump_cooling_efficiency_type] = HPXML::UnitsSEER if args[:heat_pump_cooling_efficiency_type].nil? + args[:heat_pump_cooling_efficiency] = 13.0 if args[:heat_pump_cooling_efficiency].nil? + args[:heat_pump_backup_type] = HPXML::HeatPumpBackupTypeIntegrated if args[:heat_pump_backup_type].nil? + args[:heat_pump_backup_fuel] = HPXML::FuelTypeElectricity if args[:heat_pump_backup_fuel].nil? + args[:heat_pump_backup_heating_efficiency] = 1 if args[:heat_pump_backup_heating_efficiency].nil? + args[:mech_vent_fan_type] = Constants::None if args[:mech_vent_fan_type].nil? + args[:mech_vent_recovery_efficiency_type] = 'Unadjusted' if args[:mech_vent_recovery_efficiency_type].nil? args[:mech_vent_total_recovery_efficiency] = 0.48 if args[:mech_vent_total_recovery_efficiency].nil? args[:mech_vent_sensible_recovery_efficiency] = 0.72 if args[:mech_vent_sensible_recovery_efficiency].nil? - args[:heat_pump_backup_heating_efficiency] = 1 if args[:heat_pump_backup_heating_efficiency].nil? + args[:mech_vent_2_fan_type] = Constants::None if args[:mech_vent_2_fan_type].nil? + args[:dehumidifier_type] = Constants::None if args[:dehumidifier_type].nil? + args[:water_heater_type] = HPXML::WaterHeaterTypeStorage if args[:water_heater_type].nil? + args[:water_heater_jacket_rvalue] = Constants::None if args[:water_heater_jacket_rvalue].nil? + args[:water_fixtures_shower_low_flow] = false if args[:water_fixtures_shower_low_flow].nil? + args[:water_fixtures_sink_low_flow] = false if args[:water_fixtures_sink_low_flow].nil? + args[:solar_thermal_system_type] = Constants::None if args[:solar_thermal_system_type].nil? + args[:solar_thermal_solar_fraction] = 0 if args[:solar_thermal_solar_fraction].nil? + args[:solar_thermal_collector_tilt] = 'RoofPitch' if args[:solar_thermal_collector_tilt].nil? + args[:misc_fuel_loads_grill_fuel_type] = HPXML::FuelTypeNaturalGas if args[:misc_fuel_loads_grill_fuel_type].nil? + args[:misc_fuel_loads_lighting_fuel_type] = HPXML::FuelTypeNaturalGas if args[:misc_fuel_loads_lighting_fuel_type].nil? + args[:misc_fuel_loads_fireplace_fuel_type] = HPXML::FuelTypeNaturalGas if args[:misc_fuel_loads_fireplace_fuel_type].nil? + args[:lighting_interior_fraction_cfl] = 0.1 if args[:lighting_interior_fraction_cfl].nil? + args[:lighting_interior_fraction_lfl] = 0.0 if args[:lighting_interior_fraction_lfl].nil? + args[:lighting_interior_fraction_led] = 0.0 if args[:lighting_interior_fraction_led].nil? + args[:lighting_exterior_fraction_cfl] = 0.0 if args[:lighting_exterior_fraction_cfl].nil? + args[:lighting_exterior_fraction_lfl] = 0.0 if args[:lighting_exterior_fraction_lfl].nil? + args[:lighting_exterior_fraction_led] = 0.0 if args[:lighting_exterior_fraction_led].nil? + args[:lighting_garage_fraction_cfl] = 0.0 if args[:lighting_garage_fraction_cfl].nil? + args[:lighting_garage_fraction_lfl] = 0.0 if args[:lighting_garage_fraction_lfl].nil? + args[:lighting_garage_fraction_led] = 0.0 if args[:lighting_garage_fraction_led].nil? return args end @@ -7629,7 +7649,7 @@ def self.set_secondary_heating_systems(hpxml_bldg, args) return if heating_system_type == Constants::None && (not heating_system_is_heatpump_backup) - if args[:heating_system_2_fuel] == HPXML::HVACTypeElectricResistance + if args[:heating_system_type] == HPXML::HVACTypeElectricResistance args[:heating_system_2_fuel] = HPXML::FuelTypeElectricity end diff --git a/BuildResidentialHPXML/measure.xml b/BuildResidentialHPXML/measure.xml index 4b8d56a2d0..99b0d5a5d7 100644 --- a/BuildResidentialHPXML/measure.xml +++ b/BuildResidentialHPXML/measure.xml @@ -3,8 +3,8 @@ 3.1 build_residential_hpxml a13a8983-2b01-4930-8af2-42030b6e4233 - 85ce31a0-5e69-43d3-848e-fb9b6987cc31 - 2024-11-02T21:17:44Z + 3ab3483f-4492-4b8e-9e83-b277f7198a2d + 2024-11-04T16:17:20Z 2C38F48B BuildResidentialHPXML HPXML Builder @@ -7628,7 +7628,7 @@ measure.rb rb script - B52896F2 + 1932949A constants.rb diff --git a/workflow/sample_files/base-bldgtype-mf-unit-shared-boiler-only-fan-coil-fireplace-elec.xml b/workflow/sample_files/base-bldgtype-mf-unit-shared-boiler-only-fan-coil-fireplace-elec.xml index d8f90c52ac..8695df7d2f 100644 --- a/workflow/sample_files/base-bldgtype-mf-unit-shared-boiler-only-fan-coil-fireplace-elec.xml +++ b/workflow/sample_files/base-bldgtype-mf-unit-shared-boiler-only-fan-coil-fireplace-elec.xml @@ -252,6 +252,7 @@ + electricity Percent 1.0 diff --git a/workflow/sample_files/base-enclosure-skylights-cathedral.xml b/workflow/sample_files/base-enclosure-skylights-cathedral.xml index 07573ea354..e4216f589c 100644 --- a/workflow/sample_files/base-enclosure-skylights-cathedral.xml +++ b/workflow/sample_files/base-enclosure-skylights-cathedral.xml @@ -272,6 +272,8 @@ 15.0 0 + 0.33 + 0.45 1.0 @@ -289,6 +291,8 @@ 15.0 180 + 0.33 + 0.45 1.0 diff --git a/workflow/sample_files/base-enclosure-skylights-shading.xml b/workflow/sample_files/base-enclosure-skylights-shading.xml index 3aca69ceec..1c7ced047e 100644 --- a/workflow/sample_files/base-enclosure-skylights-shading.xml +++ b/workflow/sample_files/base-enclosure-skylights-shading.xml @@ -308,6 +308,8 @@ 15.0 0 + 0.33 + 0.45 0.1 @@ -331,6 +333,8 @@ 15.0 180 + 0.33 + 0.45 0.5 diff --git a/workflow/sample_files/base-enclosure-skylights-storms.xml b/workflow/sample_files/base-enclosure-skylights-storms.xml index 6f816d302b..957dddd2c4 100644 --- a/workflow/sample_files/base-enclosure-skylights-storms.xml +++ b/workflow/sample_files/base-enclosure-skylights-storms.xml @@ -309,6 +309,7 @@ 15.0 0 0.6 + 0.45 1.0 @@ -332,6 +333,7 @@ 15.0 180 0.6 + 0.45 1.0 diff --git a/workflow/sample_files/base-enclosure-skylights.xml b/workflow/sample_files/base-enclosure-skylights.xml index 137336b1fb..a1738e7b8d 100644 --- a/workflow/sample_files/base-enclosure-skylights.xml +++ b/workflow/sample_files/base-enclosure-skylights.xml @@ -308,6 +308,8 @@ 15.0 0 + 0.33 + 0.45 1.0 @@ -326,6 +328,8 @@ 15.0 180 + 0.33 + 0.45 1.0 diff --git a/workflow/sample_files/base-hvac-air-to-air-heat-pump-1-speed-autosize-factor.xml b/workflow/sample_files/base-hvac-air-to-air-heat-pump-1-speed-autosize-factor.xml index eeb02321a4..a7ed9a16ec 100644 --- a/workflow/sample_files/base-hvac-air-to-air-heat-pump-1-speed-autosize-factor.xml +++ b/workflow/sample_files/base-hvac-air-to-air-heat-pump-1-speed-autosize-factor.xml @@ -328,12 +328,21 @@ single stage 0.73 integrated + electricity - AFUE + Percent 1.0 1.0 1.0 + + SEER + 13.0 + + + HSPF + 7.7 + 0.6 diff --git a/workflow/sample_files/base-hvac-air-to-air-heat-pump-1-speed-cooling-only.xml b/workflow/sample_files/base-hvac-air-to-air-heat-pump-1-speed-cooling-only.xml index 652d116be2..3644a26885 100644 --- a/workflow/sample_files/base-hvac-air-to-air-heat-pump-1-speed-cooling-only.xml +++ b/workflow/sample_files/base-hvac-air-to-air-heat-pump-1-speed-cooling-only.xml @@ -330,6 +330,14 @@ 0.73 0.0 1.0 + + SEER + 13.0 + + + HSPF + 7.7 + 0.6 diff --git a/workflow/sample_files/base-hvac-air-to-air-heat-pump-1-speed-heating-capacity-17f.xml b/workflow/sample_files/base-hvac-air-to-air-heat-pump-1-speed-heating-capacity-17f.xml index 11a6b3ee3d..52e803dfd1 100644 --- a/workflow/sample_files/base-hvac-air-to-air-heat-pump-1-speed-heating-capacity-17f.xml +++ b/workflow/sample_files/base-hvac-air-to-air-heat-pump-1-speed-heating-capacity-17f.xml @@ -331,13 +331,22 @@ single stage 0.73 integrated + electricity - AFUE + Percent 1.0 36000.0 1.0 1.0 + + SEER + 13.0 + + + HSPF + 7.7 + diff --git a/workflow/sample_files/base-hvac-air-to-air-heat-pump-1-speed-heating-only.xml b/workflow/sample_files/base-hvac-air-to-air-heat-pump-1-speed-heating-only.xml index 94a7e545b5..a5da337603 100644 --- a/workflow/sample_files/base-hvac-air-to-air-heat-pump-1-speed-heating-only.xml +++ b/workflow/sample_files/base-hvac-air-to-air-heat-pump-1-speed-heating-only.xml @@ -329,13 +329,22 @@ single stage 0.73 integrated + electricity - AFUE + Percent 1.0 36000.0 1.0 0.0 + + SEER + 13.0 + + + HSPF + 7.7 + 0.6 diff --git a/workflow/sample_files/base-hvac-air-to-air-heat-pump-1-speed-lockout-temperatures.xml b/workflow/sample_files/base-hvac-air-to-air-heat-pump-1-speed-lockout-temperatures.xml index 7bcc9248ec..97ecc65306 100644 --- a/workflow/sample_files/base-hvac-air-to-air-heat-pump-1-speed-lockout-temperatures.xml +++ b/workflow/sample_files/base-hvac-air-to-air-heat-pump-1-speed-lockout-temperatures.xml @@ -331,14 +331,23 @@ 5.0 0.73 integrated + electricity - AFUE + Percent 1.0 36000.0 35.0 1.0 1.0 + + SEER + 13.0 + + + HSPF + 7.7 + 0.6 diff --git a/workflow/sample_files/base-hvac-air-to-air-heat-pump-1-speed-research-features.xml b/workflow/sample_files/base-hvac-air-to-air-heat-pump-1-speed-research-features.xml index 2c38cb038d..75f2377337 100644 --- a/workflow/sample_files/base-hvac-air-to-air-heat-pump-1-speed-research-features.xml +++ b/workflow/sample_files/base-hvac-air-to-air-heat-pump-1-speed-research-features.xml @@ -336,14 +336,23 @@ 5.0 0.73 integrated + electricity - AFUE + Percent 1.0 34121.4 35.0 1.0 1.0 + + SEER + 13.0 + + + HSPF + 7.7 + 0.6 diff --git a/workflow/sample_files/base-hvac-air-to-air-heat-pump-1-speed-seer2-hspf2.xml b/workflow/sample_files/base-hvac-air-to-air-heat-pump-1-speed-seer2-hspf2.xml index 55bbeafce6..aa7eabaa03 100644 --- a/workflow/sample_files/base-hvac-air-to-air-heat-pump-1-speed-seer2-hspf2.xml +++ b/workflow/sample_files/base-hvac-air-to-air-heat-pump-1-speed-seer2-hspf2.xml @@ -330,8 +330,9 @@ single stage 0.73 integrated + electricity - AFUE + Percent 1.0 36000.0 diff --git a/workflow/sample_files/base-hvac-air-to-air-heat-pump-1-speed.xml b/workflow/sample_files/base-hvac-air-to-air-heat-pump-1-speed.xml index 1747f60e40..1587283b76 100644 --- a/workflow/sample_files/base-hvac-air-to-air-heat-pump-1-speed.xml +++ b/workflow/sample_files/base-hvac-air-to-air-heat-pump-1-speed.xml @@ -330,13 +330,22 @@ single stage 0.73 integrated + electricity - AFUE + Percent 1.0 36000.0 1.0 1.0 + + SEER + 13.0 + + + HSPF + 7.7 + 0.6 diff --git a/workflow/sample_files/base-hvac-air-to-air-heat-pump-2-speed-research-features.xml b/workflow/sample_files/base-hvac-air-to-air-heat-pump-2-speed-research-features.xml index 5cf960b18e..f0b3e7fac3 100644 --- a/workflow/sample_files/base-hvac-air-to-air-heat-pump-2-speed-research-features.xml +++ b/workflow/sample_files/base-hvac-air-to-air-heat-pump-2-speed-research-features.xml @@ -335,13 +335,22 @@ two stage 0.73 integrated + electricity - AFUE + Percent 1.0 34121.4 1.0 1.0 + + SEER + 18.0 + + + HSPF + 9.3 + 0.6 diff --git a/workflow/sample_files/base-hvac-air-to-air-heat-pump-2-speed.xml b/workflow/sample_files/base-hvac-air-to-air-heat-pump-2-speed.xml index ffca95c189..589b0e6145 100644 --- a/workflow/sample_files/base-hvac-air-to-air-heat-pump-2-speed.xml +++ b/workflow/sample_files/base-hvac-air-to-air-heat-pump-2-speed.xml @@ -330,13 +330,22 @@ two stage 0.73 integrated + electricity - AFUE + Percent 1.0 36000.0 1.0 1.0 + + SEER + 18.0 + + + HSPF + 9.3 + 0.6 diff --git a/workflow/sample_files/base-hvac-air-to-air-heat-pump-var-speed-autosize-maxload.xml b/workflow/sample_files/base-hvac-air-to-air-heat-pump-var-speed-autosize-maxload.xml index 8a384033e8..ff367c4a1c 100644 --- a/workflow/sample_files/base-hvac-air-to-air-heat-pump-var-speed-autosize-maxload.xml +++ b/workflow/sample_files/base-hvac-air-to-air-heat-pump-var-speed-autosize-maxload.xml @@ -334,12 +334,21 @@ variable speed 0.78 integrated + electricity - AFUE + Percent 1.0 1.0 1.0 + + SEER + 22.0 + + + HSPF + 10.0 + 0.6 diff --git a/workflow/sample_files/base-hvac-air-to-air-heat-pump-var-speed-backup-boiler-advanced-defrost.xml b/workflow/sample_files/base-hvac-air-to-air-heat-pump-var-speed-backup-boiler-advanced-defrost.xml index 1f65dd9c7b..daeb180fd6 100644 --- a/workflow/sample_files/base-hvac-air-to-air-heat-pump-var-speed-backup-boiler-advanced-defrost.xml +++ b/workflow/sample_files/base-hvac-air-to-air-heat-pump-var-speed-backup-boiler-advanced-defrost.xml @@ -350,6 +350,14 @@ 1.0 1.0 + + SEER + 22.0 + + + HSPF + 10.0 + 0.6 diff --git a/workflow/sample_files/base-hvac-air-to-air-heat-pump-var-speed-backup-boiler-hvac-seasons.xml b/workflow/sample_files/base-hvac-air-to-air-heat-pump-var-speed-backup-boiler-hvac-seasons.xml index aa6c3efdda..52fa00a0a7 100644 --- a/workflow/sample_files/base-hvac-air-to-air-heat-pump-var-speed-backup-boiler-hvac-seasons.xml +++ b/workflow/sample_files/base-hvac-air-to-air-heat-pump-var-speed-backup-boiler-hvac-seasons.xml @@ -347,6 +347,14 @@ 1.0 1.0 + + SEER + 22.0 + + + HSPF + 10.0 + 0.6 diff --git a/workflow/sample_files/base-hvac-air-to-air-heat-pump-var-speed-backup-boiler-switchover-temperature.xml b/workflow/sample_files/base-hvac-air-to-air-heat-pump-var-speed-backup-boiler-switchover-temperature.xml index 050052c595..ffa543996a 100644 --- a/workflow/sample_files/base-hvac-air-to-air-heat-pump-var-speed-backup-boiler-switchover-temperature.xml +++ b/workflow/sample_files/base-hvac-air-to-air-heat-pump-var-speed-backup-boiler-switchover-temperature.xml @@ -348,6 +348,14 @@ 30.0 1.0 1.0 + + SEER + 22.0 + + + HSPF + 10.0 + 0.6 diff --git a/workflow/sample_files/base-hvac-air-to-air-heat-pump-var-speed-backup-boiler.xml b/workflow/sample_files/base-hvac-air-to-air-heat-pump-var-speed-backup-boiler.xml index d4d56b0e2e..7f2c8ed4b7 100644 --- a/workflow/sample_files/base-hvac-air-to-air-heat-pump-var-speed-backup-boiler.xml +++ b/workflow/sample_files/base-hvac-air-to-air-heat-pump-var-speed-backup-boiler.xml @@ -347,6 +347,14 @@ 1.0 1.0 + + SEER + 22.0 + + + HSPF + 10.0 + 0.6 diff --git a/workflow/sample_files/base-hvac-air-to-air-heat-pump-var-speed-backup-furnace-autosize-factor.xml b/workflow/sample_files/base-hvac-air-to-air-heat-pump-var-speed-backup-furnace-autosize-factor.xml index 0f490e4e84..64298b058c 100644 --- a/workflow/sample_files/base-hvac-air-to-air-heat-pump-var-speed-backup-furnace-autosize-factor.xml +++ b/workflow/sample_files/base-hvac-air-to-air-heat-pump-var-speed-backup-furnace-autosize-factor.xml @@ -348,6 +348,14 @@ 1.0 1.0 + + SEER + 22.0 + + + HSPF + 10.0 + 0.6 diff --git a/workflow/sample_files/base-hvac-air-to-air-heat-pump-var-speed-backup-furnace.xml b/workflow/sample_files/base-hvac-air-to-air-heat-pump-var-speed-backup-furnace.xml index 4aadf7544e..fb7c46b0c1 100644 --- a/workflow/sample_files/base-hvac-air-to-air-heat-pump-var-speed-backup-furnace.xml +++ b/workflow/sample_files/base-hvac-air-to-air-heat-pump-var-speed-backup-furnace.xml @@ -347,6 +347,14 @@ 1.0 1.0 + + SEER + 22.0 + + + HSPF + 10.0 + 0.6 diff --git a/workflow/sample_files/base-hvac-air-to-air-heat-pump-var-speed-detailed-performance-autosize.xml b/workflow/sample_files/base-hvac-air-to-air-heat-pump-var-speed-detailed-performance-autosize.xml index 1c96e548dd..6fa8d857ba 100644 --- a/workflow/sample_files/base-hvac-air-to-air-heat-pump-var-speed-detailed-performance-autosize.xml +++ b/workflow/sample_files/base-hvac-air-to-air-heat-pump-var-speed-detailed-performance-autosize.xml @@ -328,13 +328,22 @@ variable speed 0.78 integrated + electricity - AFUE + Percent 1.0 36000.0 1.0 1.0 + + SEER + 17.25 + + + HSPF + 10.0 + 95.0 diff --git a/workflow/sample_files/base-hvac-air-to-air-heat-pump-var-speed-detailed-performance-heating-only.xml b/workflow/sample_files/base-hvac-air-to-air-heat-pump-var-speed-detailed-performance-heating-only.xml index 8985ad71f3..fe19bd50d7 100644 --- a/workflow/sample_files/base-hvac-air-to-air-heat-pump-var-speed-detailed-performance-heating-only.xml +++ b/workflow/sample_files/base-hvac-air-to-air-heat-pump-var-speed-detailed-performance-heating-only.xml @@ -330,13 +330,22 @@ variable speed 0.78 integrated + electricity - AFUE + Percent 1.0 36000.0 1.0 1.0 + + SEER + 17.25 + + + HSPF + 10.0 + 47.0 diff --git a/workflow/sample_files/base-hvac-air-to-air-heat-pump-var-speed-detailed-performance-normalized-capacities.xml b/workflow/sample_files/base-hvac-air-to-air-heat-pump-var-speed-detailed-performance-normalized-capacities.xml index 31b657c5fe..317806ca93 100644 --- a/workflow/sample_files/base-hvac-air-to-air-heat-pump-var-speed-detailed-performance-normalized-capacities.xml +++ b/workflow/sample_files/base-hvac-air-to-air-heat-pump-var-speed-detailed-performance-normalized-capacities.xml @@ -330,13 +330,22 @@ variable speed 0.78 integrated + electricity - AFUE + Percent 1.0 36000.0 1.0 1.0 + + SEER + 17.25 + + + HSPF + 10.0 + 95.0 diff --git a/workflow/sample_files/base-hvac-air-to-air-heat-pump-var-speed-detailed-performance-other-temperatures.xml b/workflow/sample_files/base-hvac-air-to-air-heat-pump-var-speed-detailed-performance-other-temperatures.xml index 188bef9abb..eab541e264 100644 --- a/workflow/sample_files/base-hvac-air-to-air-heat-pump-var-speed-detailed-performance-other-temperatures.xml +++ b/workflow/sample_files/base-hvac-air-to-air-heat-pump-var-speed-detailed-performance-other-temperatures.xml @@ -330,13 +330,22 @@ variable speed 0.78 integrated + electricity - AFUE + Percent 1.0 36000.0 1.0 1.0 + + SEER + 17.25 + + + HSPF + 10.0 + 95.0 diff --git a/workflow/sample_files/base-hvac-air-to-air-heat-pump-var-speed-detailed-performance.xml b/workflow/sample_files/base-hvac-air-to-air-heat-pump-var-speed-detailed-performance.xml index e7391392c2..4b6d22ffce 100644 --- a/workflow/sample_files/base-hvac-air-to-air-heat-pump-var-speed-detailed-performance.xml +++ b/workflow/sample_files/base-hvac-air-to-air-heat-pump-var-speed-detailed-performance.xml @@ -330,13 +330,22 @@ variable speed 0.78 integrated + electricity - AFUE + Percent 1.0 36000.0 1.0 1.0 + + SEER + 17.25 + + + HSPF + 10.0 + 95.0 diff --git a/workflow/sample_files/base-hvac-air-to-air-heat-pump-var-speed-max-power-ratio-schedule-10-mins.xml b/workflow/sample_files/base-hvac-air-to-air-heat-pump-var-speed-max-power-ratio-schedule-10-mins.xml index 9fa8e04754..c5b02424ff 100644 --- a/workflow/sample_files/base-hvac-air-to-air-heat-pump-var-speed-max-power-ratio-schedule-10-mins.xml +++ b/workflow/sample_files/base-hvac-air-to-air-heat-pump-var-speed-max-power-ratio-schedule-10-mins.xml @@ -333,13 +333,22 @@ variable speed 0.78 integrated + electricity - AFUE + Percent 1.0 36000.0 1.0 1.0 + + SEER + 22.0 + + + HSPF + 10.0 + 0.6 diff --git a/workflow/sample_files/base-hvac-air-to-air-heat-pump-var-speed-max-power-ratio-schedule-two-systems.xml b/workflow/sample_files/base-hvac-air-to-air-heat-pump-var-speed-max-power-ratio-schedule-two-systems.xml index cfbbeb46bf..70f1151998 100644 --- a/workflow/sample_files/base-hvac-air-to-air-heat-pump-var-speed-max-power-ratio-schedule-two-systems.xml +++ b/workflow/sample_files/base-hvac-air-to-air-heat-pump-var-speed-max-power-ratio-schedule-two-systems.xml @@ -333,13 +333,22 @@ variable speed 0.78 integrated + electricity - AFUE + Percent 1.0 36000.0 0.7 0.7 + + SEER + 22.0 + + + HSPF + 10.0 + 0.6 @@ -357,13 +366,22 @@ variable speed 0.78 integrated + electricity - AFUE + Percent 1.0 36000.0 0.3 0.3 + + SEER + 22.0 + + + HSPF + 10.0 + 0.6 diff --git a/workflow/sample_files/base-hvac-air-to-air-heat-pump-var-speed-research-features.xml b/workflow/sample_files/base-hvac-air-to-air-heat-pump-var-speed-research-features.xml index 95367ecbad..6ac8cab1a6 100644 --- a/workflow/sample_files/base-hvac-air-to-air-heat-pump-var-speed-research-features.xml +++ b/workflow/sample_files/base-hvac-air-to-air-heat-pump-var-speed-research-features.xml @@ -336,13 +336,22 @@ variable speed 0.78 integrated + electricity - AFUE + Percent 1.0 36000.0 1.0 1.0 + + SEER + 22.0 + + + HSPF + 10.0 + 0.6 diff --git a/workflow/sample_files/base-hvac-air-to-air-heat-pump-var-speed.xml b/workflow/sample_files/base-hvac-air-to-air-heat-pump-var-speed.xml index 444e3e830b..f7dd0c7ff4 100644 --- a/workflow/sample_files/base-hvac-air-to-air-heat-pump-var-speed.xml +++ b/workflow/sample_files/base-hvac-air-to-air-heat-pump-var-speed.xml @@ -330,13 +330,22 @@ variable speed 0.78 integrated + electricity - AFUE + Percent 1.0 36000.0 1.0 1.0 + + SEER + 22.0 + + + HSPF + 10.0 + 0.6 diff --git a/workflow/sample_files/base-hvac-central-ac-plus-air-to-air-heat-pump-heating.xml b/workflow/sample_files/base-hvac-central-ac-plus-air-to-air-heat-pump-heating.xml index 8c17fbbd10..8c4fd60e6e 100644 --- a/workflow/sample_files/base-hvac-central-ac-plus-air-to-air-heat-pump-heating.xml +++ b/workflow/sample_files/base-hvac-central-ac-plus-air-to-air-heat-pump-heating.xml @@ -344,13 +344,22 @@ single stage 0.73 integrated + electricity - AFUE + Percent 1.0 36000.0 1.0 0.0 + + SEER + 13.0 + + + HSPF + 7.7 + 0.6 diff --git a/workflow/sample_files/base-hvac-dual-fuel-air-to-air-heat-pump-1-speed-lockout-temperatures.xml b/workflow/sample_files/base-hvac-dual-fuel-air-to-air-heat-pump-1-speed-lockout-temperatures.xml index 03847e79fc..920f84c410 100644 --- a/workflow/sample_files/base-hvac-dual-fuel-air-to-air-heat-pump-1-speed-lockout-temperatures.xml +++ b/workflow/sample_files/base-hvac-dual-fuel-air-to-air-heat-pump-1-speed-lockout-temperatures.xml @@ -340,6 +340,14 @@ 45.0 1.0 1.0 + + SEER + 13.0 + + + HSPF + 7.7 + 0.6 diff --git a/workflow/sample_files/base-hvac-dual-fuel-air-to-air-heat-pump-1-speed.xml b/workflow/sample_files/base-hvac-dual-fuel-air-to-air-heat-pump-1-speed.xml index cfe5cd1783..ab4571e570 100644 --- a/workflow/sample_files/base-hvac-dual-fuel-air-to-air-heat-pump-1-speed.xml +++ b/workflow/sample_files/base-hvac-dual-fuel-air-to-air-heat-pump-1-speed.xml @@ -339,6 +339,14 @@ 30.0 1.0 1.0 + + SEER + 13.0 + + + HSPF + 7.7 + 0.6 diff --git a/workflow/sample_files/base-hvac-dual-fuel-air-to-air-heat-pump-2-speed-advanced-defrost.xml b/workflow/sample_files/base-hvac-dual-fuel-air-to-air-heat-pump-2-speed-advanced-defrost.xml index e1e0ef94b3..843ab7d2d9 100644 --- a/workflow/sample_files/base-hvac-dual-fuel-air-to-air-heat-pump-2-speed-advanced-defrost.xml +++ b/workflow/sample_files/base-hvac-dual-fuel-air-to-air-heat-pump-2-speed-advanced-defrost.xml @@ -342,6 +342,14 @@ 30.0 1.0 1.0 + + SEER + 18.0 + + + HSPF + 9.3 + 0.6 diff --git a/workflow/sample_files/base-hvac-dual-fuel-air-to-air-heat-pump-2-speed.xml b/workflow/sample_files/base-hvac-dual-fuel-air-to-air-heat-pump-2-speed.xml index ea44692c1a..bbabdb0397 100644 --- a/workflow/sample_files/base-hvac-dual-fuel-air-to-air-heat-pump-2-speed.xml +++ b/workflow/sample_files/base-hvac-dual-fuel-air-to-air-heat-pump-2-speed.xml @@ -339,6 +339,14 @@ 30.0 1.0 1.0 + + SEER + 18.0 + + + HSPF + 9.3 + 0.6 diff --git a/workflow/sample_files/base-hvac-dual-fuel-air-to-air-heat-pump-var-speed.xml b/workflow/sample_files/base-hvac-dual-fuel-air-to-air-heat-pump-var-speed.xml index b7ffa4d490..fd763be4a7 100644 --- a/workflow/sample_files/base-hvac-dual-fuel-air-to-air-heat-pump-var-speed.xml +++ b/workflow/sample_files/base-hvac-dual-fuel-air-to-air-heat-pump-var-speed.xml @@ -339,6 +339,14 @@ 30.0 1.0 1.0 + + SEER + 22.0 + + + HSPF + 10.0 + 0.6 diff --git a/workflow/sample_files/base-hvac-dual-fuel-mini-split-heat-pump-ducted.xml b/workflow/sample_files/base-hvac-dual-fuel-mini-split-heat-pump-ducted.xml index 540c20528f..e429c086e7 100644 --- a/workflow/sample_files/base-hvac-dual-fuel-mini-split-heat-pump-ducted.xml +++ b/workflow/sample_files/base-hvac-dual-fuel-mini-split-heat-pump-ducted.xml @@ -338,6 +338,14 @@ 30.0 1.0 1.0 + + SEER + 19.0 + + + HSPF + 10.0 + 0.6 diff --git a/workflow/sample_files/base-hvac-ducts-defaults.xml b/workflow/sample_files/base-hvac-ducts-defaults.xml index a1da8d3259..904f3d29d0 100644 --- a/workflow/sample_files/base-hvac-ducts-defaults.xml +++ b/workflow/sample_files/base-hvac-ducts-defaults.xml @@ -339,6 +339,7 @@ + electricity Percent 1.0 diff --git a/workflow/sample_files/base-hvac-furnace-gas-plus-air-to-air-heat-pump-cooling.xml b/workflow/sample_files/base-hvac-furnace-gas-plus-air-to-air-heat-pump-cooling.xml index 4be9b06936..deac55d512 100644 --- a/workflow/sample_files/base-hvac-furnace-gas-plus-air-to-air-heat-pump-cooling.xml +++ b/workflow/sample_files/base-hvac-furnace-gas-plus-air-to-air-heat-pump-cooling.xml @@ -345,6 +345,14 @@ 0.73 0.0 1.0 + + SEER + 13.0 + + + HSPF + 7.7 + 0.6 diff --git a/workflow/sample_files/base-hvac-ground-to-air-heat-pump-backup-integrated.xml b/workflow/sample_files/base-hvac-ground-to-air-heat-pump-backup-integrated.xml index 6b7602f781..b086c3ac93 100644 --- a/workflow/sample_files/base-hvac-ground-to-air-heat-pump-backup-integrated.xml +++ b/workflow/sample_files/base-hvac-ground-to-air-heat-pump-backup-integrated.xml @@ -329,8 +329,9 @@ 36000.0 0.73 integrated + electricity - AFUE + Percent 1.0 36000.0 diff --git a/workflow/sample_files/base-hvac-install-quality-air-to-air-heat-pump-1-speed.xml b/workflow/sample_files/base-hvac-install-quality-air-to-air-heat-pump-1-speed.xml index d3a5e1e4c4..92e3c1fe49 100644 --- a/workflow/sample_files/base-hvac-install-quality-air-to-air-heat-pump-1-speed.xml +++ b/workflow/sample_files/base-hvac-install-quality-air-to-air-heat-pump-1-speed.xml @@ -330,13 +330,22 @@ single stage 0.73 integrated + electricity - AFUE + Percent 1.0 36000.0 1.0 1.0 + + SEER + 13.0 + + + HSPF + 7.7 + -0.25 -0.25 diff --git a/workflow/sample_files/base-hvac-install-quality-air-to-air-heat-pump-2-speed.xml b/workflow/sample_files/base-hvac-install-quality-air-to-air-heat-pump-2-speed.xml index aa6ea75666..92ac58d90f 100644 --- a/workflow/sample_files/base-hvac-install-quality-air-to-air-heat-pump-2-speed.xml +++ b/workflow/sample_files/base-hvac-install-quality-air-to-air-heat-pump-2-speed.xml @@ -330,13 +330,22 @@ two stage 0.73 integrated + electricity - AFUE + Percent 1.0 36000.0 1.0 1.0 + + SEER + 18.0 + + + HSPF + 9.3 + -0.25 -0.25 diff --git a/workflow/sample_files/base-hvac-install-quality-air-to-air-heat-pump-var-speed-detailed-performance.xml b/workflow/sample_files/base-hvac-install-quality-air-to-air-heat-pump-var-speed-detailed-performance.xml index 1950f706e6..bf2e43bc92 100644 --- a/workflow/sample_files/base-hvac-install-quality-air-to-air-heat-pump-var-speed-detailed-performance.xml +++ b/workflow/sample_files/base-hvac-install-quality-air-to-air-heat-pump-var-speed-detailed-performance.xml @@ -330,13 +330,22 @@ variable speed 0.78 integrated + electricity - AFUE + Percent 1.0 36000.0 1.0 1.0 + + SEER + 17.25 + + + HSPF + 10.0 + 95.0 diff --git a/workflow/sample_files/base-hvac-install-quality-air-to-air-heat-pump-var-speed.xml b/workflow/sample_files/base-hvac-install-quality-air-to-air-heat-pump-var-speed.xml index c66fab7a47..3cefacf984 100644 --- a/workflow/sample_files/base-hvac-install-quality-air-to-air-heat-pump-var-speed.xml +++ b/workflow/sample_files/base-hvac-install-quality-air-to-air-heat-pump-var-speed.xml @@ -330,13 +330,22 @@ variable speed 0.78 integrated + electricity - AFUE + Percent 1.0 36000.0 1.0 1.0 + + SEER + 22.0 + + + HSPF + 10.0 + -0.25 -0.25 diff --git a/workflow/sample_files/base-hvac-install-quality-mini-split-heat-pump-ducted.xml b/workflow/sample_files/base-hvac-install-quality-mini-split-heat-pump-ducted.xml index 9009df6441..93786959c5 100644 --- a/workflow/sample_files/base-hvac-install-quality-mini-split-heat-pump-ducted.xml +++ b/workflow/sample_files/base-hvac-install-quality-mini-split-heat-pump-ducted.xml @@ -329,13 +329,22 @@ 36000.0 0.73 integrated + electricity - AFUE + Percent 1.0 36000.0 1.0 1.0 + + SEER + 19.0 + + + HSPF + 10.0 + -0.25 -0.25 diff --git a/workflow/sample_files/base-hvac-mini-split-heat-pump-ducted-cooling-only.xml b/workflow/sample_files/base-hvac-mini-split-heat-pump-ducted-cooling-only.xml index 497e7c9c95..5a336693f9 100644 --- a/workflow/sample_files/base-hvac-mini-split-heat-pump-ducted-cooling-only.xml +++ b/workflow/sample_files/base-hvac-mini-split-heat-pump-ducted-cooling-only.xml @@ -329,6 +329,14 @@ 0.73 0.0 1.0 + + SEER + 19.0 + + + HSPF + 10.0 + 0.6 diff --git a/workflow/sample_files/base-hvac-mini-split-heat-pump-ducted-detailed-performance-autosize.xml b/workflow/sample_files/base-hvac-mini-split-heat-pump-ducted-detailed-performance-autosize.xml index 0e7a22fd5c..72caad6eef 100644 --- a/workflow/sample_files/base-hvac-mini-split-heat-pump-ducted-detailed-performance-autosize.xml +++ b/workflow/sample_files/base-hvac-mini-split-heat-pump-ducted-detailed-performance-autosize.xml @@ -328,13 +328,22 @@ variable speed 0.73 integrated + electricity - AFUE + Percent 1.0 36000.0 1.0 1.0 + + SEER + 16.7 + + + HSPF + 11.3 + 95.0 diff --git a/workflow/sample_files/base-hvac-mini-split-heat-pump-ducted-detailed-performance.xml b/workflow/sample_files/base-hvac-mini-split-heat-pump-ducted-detailed-performance.xml index 9dd5033528..4c6aaf3c0d 100644 --- a/workflow/sample_files/base-hvac-mini-split-heat-pump-ducted-detailed-performance.xml +++ b/workflow/sample_files/base-hvac-mini-split-heat-pump-ducted-detailed-performance.xml @@ -330,13 +330,22 @@ variable speed 0.73 integrated + electricity - AFUE + Percent 1.0 36000.0 1.0 1.0 + + SEER + 16.7 + + + HSPF + 11.3 + 95.0 diff --git a/workflow/sample_files/base-hvac-mini-split-heat-pump-ducted-heating-only-max-power-ratio-schedule.xml b/workflow/sample_files/base-hvac-mini-split-heat-pump-ducted-heating-only-max-power-ratio-schedule.xml index d436709336..823d508910 100644 --- a/workflow/sample_files/base-hvac-mini-split-heat-pump-ducted-heating-only-max-power-ratio-schedule.xml +++ b/workflow/sample_files/base-hvac-mini-split-heat-pump-ducted-heating-only-max-power-ratio-schedule.xml @@ -331,13 +331,22 @@ 0.0 0.73 integrated + electricity - AFUE + Percent 1.0 36000.0 1.0 0.0 + + SEER + 19.0 + + + HSPF + 10.0 + 0.6 diff --git a/workflow/sample_files/base-hvac-mini-split-heat-pump-ducted-heating-only.xml b/workflow/sample_files/base-hvac-mini-split-heat-pump-ducted-heating-only.xml index b27ef24e4c..a58c7b93d8 100644 --- a/workflow/sample_files/base-hvac-mini-split-heat-pump-ducted-heating-only.xml +++ b/workflow/sample_files/base-hvac-mini-split-heat-pump-ducted-heating-only.xml @@ -328,13 +328,22 @@ 0.0 0.73 integrated + electricity - AFUE + Percent 1.0 36000.0 1.0 0.0 + + SEER + 19.0 + + + HSPF + 10.0 + 0.6 diff --git a/workflow/sample_files/base-hvac-mini-split-heat-pump-ducted-max-power-ratio-schedule.xml b/workflow/sample_files/base-hvac-mini-split-heat-pump-ducted-max-power-ratio-schedule.xml index 8459f7d7c7..ce5328a7fd 100644 --- a/workflow/sample_files/base-hvac-mini-split-heat-pump-ducted-max-power-ratio-schedule.xml +++ b/workflow/sample_files/base-hvac-mini-split-heat-pump-ducted-max-power-ratio-schedule.xml @@ -332,13 +332,22 @@ 36000.0 0.73 integrated + electricity - AFUE + Percent 1.0 36000.0 1.0 1.0 + + SEER + 19.0 + + + HSPF + 10.0 + 0.6 diff --git a/workflow/sample_files/base-hvac-mini-split-heat-pump-ducted.xml b/workflow/sample_files/base-hvac-mini-split-heat-pump-ducted.xml index 44537ac7ba..23740e724b 100644 --- a/workflow/sample_files/base-hvac-mini-split-heat-pump-ducted.xml +++ b/workflow/sample_files/base-hvac-mini-split-heat-pump-ducted.xml @@ -329,13 +329,22 @@ 36000.0 0.73 integrated + electricity - AFUE + Percent 1.0 36000.0 1.0 1.0 + + SEER + 19.0 + + + HSPF + 10.0 + 0.6 diff --git a/workflow/sample_files/base-hvac-mini-split-heat-pump-ductless-advanced-defrost.xml b/workflow/sample_files/base-hvac-mini-split-heat-pump-ductless-advanced-defrost.xml index c781184430..aa2aff38e1 100644 --- a/workflow/sample_files/base-hvac-mini-split-heat-pump-ductless-advanced-defrost.xml +++ b/workflow/sample_files/base-hvac-mini-split-heat-pump-ductless-advanced-defrost.xml @@ -332,6 +332,14 @@ 0.73 1.0 1.0 + + SEER + 19.0 + + + HSPF + 10.0 + 0.6 diff --git a/workflow/sample_files/base-hvac-mini-split-heat-pump-ductless-autosize-factor.xml b/workflow/sample_files/base-hvac-mini-split-heat-pump-ductless-autosize-factor.xml index 4b6fff197a..f4fff28c42 100644 --- a/workflow/sample_files/base-hvac-mini-split-heat-pump-ductless-autosize-factor.xml +++ b/workflow/sample_files/base-hvac-mini-split-heat-pump-ductless-autosize-factor.xml @@ -327,6 +327,14 @@ 0.73 1.0 1.0 + + SEER + 19.0 + + + HSPF + 10.0 + 0.6 diff --git a/workflow/sample_files/base-hvac-mini-split-heat-pump-ductless-backup-advanced-defrost.xml b/workflow/sample_files/base-hvac-mini-split-heat-pump-ductless-backup-advanced-defrost.xml index 58b17c4e4c..a81ba952e9 100644 --- a/workflow/sample_files/base-hvac-mini-split-heat-pump-ductless-backup-advanced-defrost.xml +++ b/workflow/sample_files/base-hvac-mini-split-heat-pump-ductless-backup-advanced-defrost.xml @@ -331,13 +331,22 @@ 36000.0 0.73 integrated + electricity - AFUE + Percent 1.0 36000.0 1.0 1.0 + + SEER + 19.0 + + + HSPF + 10.0 + 0.6 diff --git a/workflow/sample_files/base-hvac-mini-split-heat-pump-ductless-backup-baseboard.xml b/workflow/sample_files/base-hvac-mini-split-heat-pump-ductless-backup-baseboard.xml index 5c0eb5a31f..d3d7b0f39b 100644 --- a/workflow/sample_files/base-hvac-mini-split-heat-pump-ductless-backup-baseboard.xml +++ b/workflow/sample_files/base-hvac-mini-split-heat-pump-ductless-backup-baseboard.xml @@ -343,6 +343,14 @@ 1.0 1.0 + + SEER + 19.0 + + + HSPF + 10.0 + 0.6 diff --git a/workflow/sample_files/base-hvac-mini-split-heat-pump-ductless-backup-furnace-ducts-defaults.xml b/workflow/sample_files/base-hvac-mini-split-heat-pump-ductless-backup-furnace-ducts-defaults.xml index b29c93454b..e13fc8cad1 100644 --- a/workflow/sample_files/base-hvac-mini-split-heat-pump-ductless-backup-furnace-ducts-defaults.xml +++ b/workflow/sample_files/base-hvac-mini-split-heat-pump-ductless-backup-furnace-ducts-defaults.xml @@ -344,6 +344,14 @@ 1.0 1.0 + + SEER + 19.0 + + + HSPF + 10.0 + 0.6 diff --git a/workflow/sample_files/base-hvac-mini-split-heat-pump-ductless-backup-furnace.xml b/workflow/sample_files/base-hvac-mini-split-heat-pump-ductless-backup-furnace.xml index 26bad13c41..40eaf92716 100644 --- a/workflow/sample_files/base-hvac-mini-split-heat-pump-ductless-backup-furnace.xml +++ b/workflow/sample_files/base-hvac-mini-split-heat-pump-ductless-backup-furnace.xml @@ -344,6 +344,14 @@ 1.0 1.0 + + SEER + 19.0 + + + HSPF + 10.0 + 0.6 diff --git a/workflow/sample_files/base-hvac-mini-split-heat-pump-ductless-backup-stove.xml b/workflow/sample_files/base-hvac-mini-split-heat-pump-ductless-backup-stove.xml index cc0b53a92b..139df10e53 100644 --- a/workflow/sample_files/base-hvac-mini-split-heat-pump-ductless-backup-stove.xml +++ b/workflow/sample_files/base-hvac-mini-split-heat-pump-ductless-backup-stove.xml @@ -346,6 +346,14 @@ 1.0 1.0 + + SEER + 19.0 + + + HSPF + 10.0 + 0.6 diff --git a/workflow/sample_files/base-hvac-mini-split-heat-pump-ductless-detailed-performance-autosize.xml b/workflow/sample_files/base-hvac-mini-split-heat-pump-ductless-detailed-performance-autosize.xml index 51d70b42f8..347a37c78d 100644 --- a/workflow/sample_files/base-hvac-mini-split-heat-pump-ductless-detailed-performance-autosize.xml +++ b/workflow/sample_files/base-hvac-mini-split-heat-pump-ductless-detailed-performance-autosize.xml @@ -328,6 +328,14 @@ 0.73 1.0 1.0 + + SEER + 21.5 + + + HSPF + 10.5 + 95.0 diff --git a/workflow/sample_files/base-hvac-mini-split-heat-pump-ductless-detailed-performance.xml b/workflow/sample_files/base-hvac-mini-split-heat-pump-ductless-detailed-performance.xml index 2cac8cdd80..275daaf950 100644 --- a/workflow/sample_files/base-hvac-mini-split-heat-pump-ductless-detailed-performance.xml +++ b/workflow/sample_files/base-hvac-mini-split-heat-pump-ductless-detailed-performance.xml @@ -330,6 +330,14 @@ 0.73 1.0 1.0 + + SEER + 21.5 + + + HSPF + 10.5 + 95.0 diff --git a/workflow/sample_files/base-hvac-mini-split-heat-pump-ductless-heating-capacity-17f.xml b/workflow/sample_files/base-hvac-mini-split-heat-pump-ductless-heating-capacity-17f.xml index 4f49f86e16..64b82a7408 100644 --- a/workflow/sample_files/base-hvac-mini-split-heat-pump-ductless-heating-capacity-17f.xml +++ b/workflow/sample_files/base-hvac-mini-split-heat-pump-ductless-heating-capacity-17f.xml @@ -330,6 +330,14 @@ 0.73 1.0 1.0 + + SEER + 19.0 + + + HSPF + 10.0 + diff --git a/workflow/sample_files/base-hvac-mini-split-heat-pump-ductless.xml b/workflow/sample_files/base-hvac-mini-split-heat-pump-ductless.xml index 3d9dbc8381..001d2f368b 100644 --- a/workflow/sample_files/base-hvac-mini-split-heat-pump-ductless.xml +++ b/workflow/sample_files/base-hvac-mini-split-heat-pump-ductless.xml @@ -329,6 +329,14 @@ 0.73 1.0 1.0 + + SEER + 19.0 + + + HSPF + 10.0 + 0.6 diff --git a/workflow/sample_files/base-hvac-pthp-cfis.xml b/workflow/sample_files/base-hvac-pthp-cfis.xml index 81302a6546..9b59507a10 100644 --- a/workflow/sample_files/base-hvac-pthp-cfis.xml +++ b/workflow/sample_files/base-hvac-pthp-cfis.xml @@ -329,8 +329,9 @@ 36000.0 0.65 integrated + electricity - AFUE + Percent 1.0 36000.0 diff --git a/workflow/sample_files/base-hvac-pthp-heating-capacity-17f.xml b/workflow/sample_files/base-hvac-pthp-heating-capacity-17f.xml index d30730ea32..fb8521bce8 100644 --- a/workflow/sample_files/base-hvac-pthp-heating-capacity-17f.xml +++ b/workflow/sample_files/base-hvac-pthp-heating-capacity-17f.xml @@ -329,8 +329,9 @@ 36000.0 0.65 integrated + electricity - AFUE + Percent 1.0 36000.0 diff --git a/workflow/sample_files/base-hvac-pthp.xml b/workflow/sample_files/base-hvac-pthp.xml index a59a2f70e9..8e3d8e1e2c 100644 --- a/workflow/sample_files/base-hvac-pthp.xml +++ b/workflow/sample_files/base-hvac-pthp.xml @@ -328,8 +328,9 @@ 36000.0 0.65 integrated + electricity - AFUE + Percent 1.0 36000.0 diff --git a/workflow/sample_files/base-hvac-room-ac-with-reverse-cycle.xml b/workflow/sample_files/base-hvac-room-ac-with-reverse-cycle.xml index 2f26104a48..3b38d2f2ef 100644 --- a/workflow/sample_files/base-hvac-room-ac-with-reverse-cycle.xml +++ b/workflow/sample_files/base-hvac-room-ac-with-reverse-cycle.xml @@ -328,8 +328,9 @@ 36000.0 0.65 integrated + electricity - AFUE + Percent 1.0 36000.0 diff --git a/workflow/sample_files/base-mechvent-erv.xml b/workflow/sample_files/base-mechvent-erv.xml index 1e3e2fc61e..3d8ec851b1 100644 --- a/workflow/sample_files/base-mechvent-erv.xml +++ b/workflow/sample_files/base-mechvent-erv.xml @@ -401,6 +401,8 @@ 110.0 24.0 true + 0.48 + 0.72 60.0 diff --git a/workflow/sample_files/base-mechvent-hrv.xml b/workflow/sample_files/base-mechvent-hrv.xml index 79e1b2ec4a..48317f9c2b 100644 --- a/workflow/sample_files/base-mechvent-hrv.xml +++ b/workflow/sample_files/base-mechvent-hrv.xml @@ -401,6 +401,7 @@ 110.0 24.0 true + 0.72 60.0 diff --git a/workflow/sample_files/base-misc-loads-large-uncommon.xml b/workflow/sample_files/base-misc-loads-large-uncommon.xml index b8fe8b3e1a..c778817230 100644 --- a/workflow/sample_files/base-misc-loads-large-uncommon.xml +++ b/workflow/sample_files/base-misc-loads-large-uncommon.xml @@ -760,6 +760,7 @@ therm/year 28.0 + natural gas 0.044, 0.023, 0.019, 0.015, 0.016, 0.018, 0.026, 0.033, 0.033, 0.032, 0.033, 0.033, 0.032, 0.032, 0.032, 0.033, 0.045, 0.057, 0.066, 0.076, 0.081, 0.086, 0.075, 0.065 0.044, 0.023, 0.019, 0.015, 0.016, 0.018, 0.026, 0.033, 0.033, 0.032, 0.033, 0.033, 0.032, 0.032, 0.032, 0.033, 0.045, 0.057, 0.066, 0.076, 0.081, 0.086, 0.075, 0.065 diff --git a/workflow/sample_files/base-misc-loads-large-uncommon2.xml b/workflow/sample_files/base-misc-loads-large-uncommon2.xml index 700d8c7c43..21a4890cca 100644 --- a/workflow/sample_files/base-misc-loads-large-uncommon2.xml +++ b/workflow/sample_files/base-misc-loads-large-uncommon2.xml @@ -751,6 +751,7 @@ therm/year 28.0 + natural gas 0.044, 0.023, 0.019, 0.015, 0.016, 0.018, 0.026, 0.033, 0.033, 0.032, 0.033, 0.033, 0.032, 0.032, 0.032, 0.033, 0.045, 0.057, 0.066, 0.076, 0.081, 0.086, 0.075, 0.065 0.044, 0.023, 0.019, 0.015, 0.016, 0.018, 0.026, 0.033, 0.033, 0.032, 0.033, 0.033, 0.032, 0.032, 0.032, 0.033, 0.045, 0.057, 0.066, 0.076, 0.081, 0.086, 0.075, 0.065 diff --git a/workflow/sample_files/base-misc-usage-multiplier.xml b/workflow/sample_files/base-misc-usage-multiplier.xml index 9607a458e2..227fbe0d02 100644 --- a/workflow/sample_files/base-misc-usage-multiplier.xml +++ b/workflow/sample_files/base-misc-usage-multiplier.xml @@ -692,6 +692,7 @@ therm/year 28.0 + natural gas 0.9 0.044, 0.023, 0.019, 0.015, 0.016, 0.018, 0.026, 0.033, 0.033, 0.032, 0.033, 0.033, 0.032, 0.032, 0.032, 0.033, 0.045, 0.057, 0.066, 0.076, 0.081, 0.086, 0.075, 0.065 diff --git a/workflow/sample_files/base-residents-1-misc-loads-large-uncommon.xml b/workflow/sample_files/base-residents-1-misc-loads-large-uncommon.xml index 3981965d44..eecd18ab6a 100644 --- a/workflow/sample_files/base-residents-1-misc-loads-large-uncommon.xml +++ b/workflow/sample_files/base-residents-1-misc-loads-large-uncommon.xml @@ -599,6 +599,7 @@ lighting + natural gas diff --git a/workflow/sample_files/base-residents-1-misc-loads-large-uncommon2.xml b/workflow/sample_files/base-residents-1-misc-loads-large-uncommon2.xml index 688a682225..34db0e8343 100644 --- a/workflow/sample_files/base-residents-1-misc-loads-large-uncommon2.xml +++ b/workflow/sample_files/base-residents-1-misc-loads-large-uncommon2.xml @@ -599,6 +599,7 @@ lighting + natural gas diff --git a/workflow/tests/HERS_Hot_Water/L100AD-HW-01.xml b/workflow/tests/HERS_Hot_Water/L100AD-HW-01.xml index 5afb92d7b4..afeabc4ef5 100644 --- a/workflow/tests/HERS_Hot_Water/L100AD-HW-01.xml +++ b/workflow/tests/HERS_Hot_Water/L100AD-HW-01.xml @@ -393,6 +393,7 @@ interior + 0.0 @@ -400,6 +401,7 @@ interior + 0.0 @@ -407,6 +409,7 @@ exterior + 0.0 @@ -414,6 +417,7 @@ exterior + 0.0 @@ -421,6 +425,7 @@ exterior + 0.0 diff --git a/workflow/tests/HERS_Hot_Water/L100AD-HW-02.xml b/workflow/tests/HERS_Hot_Water/L100AD-HW-02.xml index 2e2d2cd4cd..561c75f12e 100644 --- a/workflow/tests/HERS_Hot_Water/L100AD-HW-02.xml +++ b/workflow/tests/HERS_Hot_Water/L100AD-HW-02.xml @@ -393,6 +393,7 @@ interior + 0.0 @@ -400,6 +401,7 @@ interior + 0.0 @@ -407,6 +409,7 @@ exterior + 0.0 @@ -414,6 +417,7 @@ exterior + 0.0 @@ -421,6 +425,7 @@ exterior + 0.0 diff --git a/workflow/tests/HERS_Hot_Water/L100AD-HW-03.xml b/workflow/tests/HERS_Hot_Water/L100AD-HW-03.xml index 6f8b39da42..16487b354f 100644 --- a/workflow/tests/HERS_Hot_Water/L100AD-HW-03.xml +++ b/workflow/tests/HERS_Hot_Water/L100AD-HW-03.xml @@ -393,6 +393,7 @@ interior + 0.0 @@ -400,6 +401,7 @@ interior + 0.0 @@ -407,6 +409,7 @@ exterior + 0.0 @@ -414,6 +417,7 @@ exterior + 0.0 @@ -421,6 +425,7 @@ exterior + 0.0 diff --git a/workflow/tests/HERS_Hot_Water/L100AD-HW-04.xml b/workflow/tests/HERS_Hot_Water/L100AD-HW-04.xml index b47c0cb376..07bdb8ed8e 100644 --- a/workflow/tests/HERS_Hot_Water/L100AD-HW-04.xml +++ b/workflow/tests/HERS_Hot_Water/L100AD-HW-04.xml @@ -393,6 +393,7 @@ interior + 0.0 @@ -400,6 +401,7 @@ interior + 0.0 @@ -407,6 +409,7 @@ exterior + 0.0 @@ -414,6 +417,7 @@ exterior + 0.0 @@ -421,6 +425,7 @@ exterior + 0.0 diff --git a/workflow/tests/HERS_Hot_Water/L100AD-HW-05.xml b/workflow/tests/HERS_Hot_Water/L100AD-HW-05.xml index f29d8671f5..d3ae829140 100644 --- a/workflow/tests/HERS_Hot_Water/L100AD-HW-05.xml +++ b/workflow/tests/HERS_Hot_Water/L100AD-HW-05.xml @@ -400,6 +400,7 @@ interior + 0.0 @@ -407,6 +408,7 @@ interior + 0.0 @@ -414,6 +416,7 @@ exterior + 0.0 @@ -421,6 +424,7 @@ exterior + 0.0 @@ -428,6 +432,7 @@ exterior + 0.0 diff --git a/workflow/tests/HERS_Hot_Water/L100AD-HW-06.xml b/workflow/tests/HERS_Hot_Water/L100AD-HW-06.xml index 471eb360da..edbbe68e35 100644 --- a/workflow/tests/HERS_Hot_Water/L100AD-HW-06.xml +++ b/workflow/tests/HERS_Hot_Water/L100AD-HW-06.xml @@ -400,6 +400,7 @@ interior + 0.0 @@ -407,6 +408,7 @@ interior + 0.0 @@ -414,6 +416,7 @@ exterior + 0.0 @@ -421,6 +424,7 @@ exterior + 0.0 @@ -428,6 +432,7 @@ exterior + 0.0 diff --git a/workflow/tests/HERS_Hot_Water/L100AD-HW-07.xml b/workflow/tests/HERS_Hot_Water/L100AD-HW-07.xml index 0111b39805..494d3de6c9 100644 --- a/workflow/tests/HERS_Hot_Water/L100AD-HW-07.xml +++ b/workflow/tests/HERS_Hot_Water/L100AD-HW-07.xml @@ -398,6 +398,7 @@ interior + 0.0 @@ -405,6 +406,7 @@ interior + 0.0 @@ -412,6 +414,7 @@ exterior + 0.0 @@ -419,6 +422,7 @@ exterior + 0.0 @@ -426,6 +430,7 @@ exterior + 0.0 diff --git a/workflow/tests/HERS_Hot_Water/L100AM-HW-01.xml b/workflow/tests/HERS_Hot_Water/L100AM-HW-01.xml index a3f3807966..07f55f1a67 100644 --- a/workflow/tests/HERS_Hot_Water/L100AM-HW-01.xml +++ b/workflow/tests/HERS_Hot_Water/L100AM-HW-01.xml @@ -393,6 +393,7 @@ interior + 0.0 @@ -400,6 +401,7 @@ interior + 0.0 @@ -407,6 +409,7 @@ exterior + 0.0 @@ -414,6 +417,7 @@ exterior + 0.0 @@ -421,6 +425,7 @@ exterior + 0.0 diff --git a/workflow/tests/HERS_Hot_Water/L100AM-HW-02.xml b/workflow/tests/HERS_Hot_Water/L100AM-HW-02.xml index 83081172d6..90a48c5e38 100644 --- a/workflow/tests/HERS_Hot_Water/L100AM-HW-02.xml +++ b/workflow/tests/HERS_Hot_Water/L100AM-HW-02.xml @@ -393,6 +393,7 @@ interior + 0.0 @@ -400,6 +401,7 @@ interior + 0.0 @@ -407,6 +409,7 @@ exterior + 0.0 @@ -414,6 +417,7 @@ exterior + 0.0 @@ -421,6 +425,7 @@ exterior + 0.0 diff --git a/workflow/tests/HERS_Hot_Water/L100AM-HW-03.xml b/workflow/tests/HERS_Hot_Water/L100AM-HW-03.xml index 2f24d37556..6b59575d8f 100644 --- a/workflow/tests/HERS_Hot_Water/L100AM-HW-03.xml +++ b/workflow/tests/HERS_Hot_Water/L100AM-HW-03.xml @@ -393,6 +393,7 @@ interior + 0.0 @@ -400,6 +401,7 @@ interior + 0.0 @@ -407,6 +409,7 @@ exterior + 0.0 @@ -414,6 +417,7 @@ exterior + 0.0 @@ -421,6 +425,7 @@ exterior + 0.0 diff --git a/workflow/tests/HERS_Hot_Water/L100AM-HW-04.xml b/workflow/tests/HERS_Hot_Water/L100AM-HW-04.xml index 422b62c3fb..6ce0b2acc0 100644 --- a/workflow/tests/HERS_Hot_Water/L100AM-HW-04.xml +++ b/workflow/tests/HERS_Hot_Water/L100AM-HW-04.xml @@ -393,6 +393,7 @@ interior + 0.0 @@ -400,6 +401,7 @@ interior + 0.0 @@ -407,6 +409,7 @@ exterior + 0.0 @@ -414,6 +417,7 @@ exterior + 0.0 @@ -421,6 +425,7 @@ exterior + 0.0 diff --git a/workflow/tests/HERS_Hot_Water/L100AM-HW-05.xml b/workflow/tests/HERS_Hot_Water/L100AM-HW-05.xml index 7ede988927..b94288e812 100644 --- a/workflow/tests/HERS_Hot_Water/L100AM-HW-05.xml +++ b/workflow/tests/HERS_Hot_Water/L100AM-HW-05.xml @@ -400,6 +400,7 @@ interior + 0.0 @@ -407,6 +408,7 @@ interior + 0.0 @@ -414,6 +416,7 @@ exterior + 0.0 @@ -421,6 +424,7 @@ exterior + 0.0 @@ -428,6 +432,7 @@ exterior + 0.0 diff --git a/workflow/tests/HERS_Hot_Water/L100AM-HW-06.xml b/workflow/tests/HERS_Hot_Water/L100AM-HW-06.xml index 0d294e6bee..e0f973da7c 100644 --- a/workflow/tests/HERS_Hot_Water/L100AM-HW-06.xml +++ b/workflow/tests/HERS_Hot_Water/L100AM-HW-06.xml @@ -400,6 +400,7 @@ interior + 0.0 @@ -407,6 +408,7 @@ interior + 0.0 @@ -414,6 +416,7 @@ exterior + 0.0 @@ -421,6 +424,7 @@ exterior + 0.0 @@ -428,6 +432,7 @@ exterior + 0.0 diff --git a/workflow/tests/HERS_Hot_Water/L100AM-HW-07.xml b/workflow/tests/HERS_Hot_Water/L100AM-HW-07.xml index 9c8f420898..c6fc7a3643 100644 --- a/workflow/tests/HERS_Hot_Water/L100AM-HW-07.xml +++ b/workflow/tests/HERS_Hot_Water/L100AM-HW-07.xml @@ -398,6 +398,7 @@ interior + 0.0 @@ -405,6 +406,7 @@ interior + 0.0 @@ -412,6 +414,7 @@ exterior + 0.0 @@ -419,6 +422,7 @@ exterior + 0.0 @@ -426,6 +430,7 @@ exterior + 0.0 From 9fc0362034ce3c7870ebca574c0093c49e37a9a5 Mon Sep 17 00:00:00 2001 From: Joe Robertson Date: Mon, 4 Nov 2024 09:28:41 -0700 Subject: [PATCH 23/33] Try a few more auto arguments in sample file. --- workflow/hpxml_inputs.json | 11 ++++++++++- workflow/sample_files/base-auto.xml | 7 ------- 2 files changed, 10 insertions(+), 8 deletions(-) diff --git a/workflow/hpxml_inputs.json b/workflow/hpxml_inputs.json index 57d336ce91..63be75c765 100644 --- a/workflow/hpxml_inputs.json +++ b/workflow/hpxml_inputs.json @@ -652,7 +652,16 @@ }, "sample_files/base-auto.xml": { "parent_hpxml": "sample_files/base.xml", - "simulation_control_timestep": "auto" + "simulation_control_timestep": "auto", + "simulation_control_run_period_calendar_year": "auto", + "simulation_control_daylight_saving_enabled": "auto", + "simulation_control_temperature_capacitance_multiplier": "auto", + "site_type": "auto", + "site_shielding_of_home": "auto", + "site_soil_and_moisture_type": "auto", + "site_state_code": "auto", + "site_time_zone_utc_offset": "auto", + "site_elevation": "auto" }, "sample_files/base-appliances-coal.xml": { "parent_hpxml": "sample_files/base-appliances-gas.xml", diff --git a/workflow/sample_files/base-auto.xml b/workflow/sample_files/base-auto.xml index d053f6c356..37fd6c03f9 100644 --- a/workflow/sample_files/base-auto.xml +++ b/workflow/sample_files/base-auto.xml @@ -17,19 +17,12 @@ - - -
- CO -
-
proposed workscope - suburban stand-alone no units above or below 180 From ca1885ec2476a6d09ac713276f7e787c1139f57c Mon Sep 17 00:00:00 2001 From: Joe Robertson Date: Mon, 4 Nov 2024 10:17:29 -0700 Subject: [PATCH 24/33] Defaults for optional garage arguments. --- BuildResidentialHPXML/measure.rb | 3 +++ BuildResidentialHPXML/measure.xml | 6 +++--- 2 files changed, 6 insertions(+), 3 deletions(-) diff --git a/BuildResidentialHPXML/measure.rb b/BuildResidentialHPXML/measure.rb index 1275089a4e..12e78cf040 100644 --- a/BuildResidentialHPXML/measure.rb +++ b/BuildResidentialHPXML/measure.rb @@ -5171,6 +5171,9 @@ def convertArgumentValues(arguments_model, args) def defaultOptionalArgumentValues(args) args[:floor_over_foundation_assembly_r] = 28.1 if args[:floor_over_foundation_assembly_r].nil? args[:geometry_roof_pitch] = '6:12' if args[:geometry_roof_pitch].nil? + args[:geometry_garage_width] = 0.0 if args[:geometry_garage_width].nil? + args[:geometry_garage_depth] = 20.0 if args[:geometry_garage_depth].nil? + args[:geometry_garage_protrusion] = 0.0 if args[:geometry_garage_protrusion].nil? args[:overhangs_front_depth] = 0 if args[:overhangs_front_depth].nil? args[:overhangs_back_depth] = 0 if args[:overhangs_back_depth].nil? args[:overhangs_left_depth] = 0 if args[:overhangs_left_depth].nil? diff --git a/BuildResidentialHPXML/measure.xml b/BuildResidentialHPXML/measure.xml index 99b0d5a5d7..0974464b7b 100644 --- a/BuildResidentialHPXML/measure.xml +++ b/BuildResidentialHPXML/measure.xml @@ -3,8 +3,8 @@ 3.1 build_residential_hpxml a13a8983-2b01-4930-8af2-42030b6e4233 - 3ab3483f-4492-4b8e-9e83-b277f7198a2d - 2024-11-04T16:17:20Z + e0310568-0b18-4bcf-a7b0-b3b494fa12da + 2024-11-04T17:16:56Z 2C38F48B BuildResidentialHPXML HPXML Builder @@ -7628,7 +7628,7 @@ measure.rb rb script - 1932949A + 4F540029
constants.rb From 2f31f5b41ea46fa12461188bd5890e85a822fff7 Mon Sep 17 00:00:00 2001 From: Joe Robertson Date: Mon, 4 Nov 2024 10:29:58 -0700 Subject: [PATCH 25/33] More default values for previously required arguments. --- BuildResidentialHPXML/measure.rb | 12 ++++++++++++ BuildResidentialHPXML/measure.xml | 6 +++--- 2 files changed, 15 insertions(+), 3 deletions(-) diff --git a/BuildResidentialHPXML/measure.rb b/BuildResidentialHPXML/measure.rb index 12e78cf040..96d11d1e4f 100644 --- a/BuildResidentialHPXML/measure.rb +++ b/BuildResidentialHPXML/measure.rb @@ -5169,11 +5169,23 @@ def convertArgumentValues(arguments_model, args) # TODO def defaultOptionalArgumentValues(args) + # these were previously required arguments with default values set args[:floor_over_foundation_assembly_r] = 28.1 if args[:floor_over_foundation_assembly_r].nil? + args[:floor_over_garage_assembly_r] = 28.1 if args[:floor_over_garage_assembly_r].nil? + args[:ceiling_assembly_r] = 31.6 if args[:ceiling_assembly_r].nil? args[:geometry_roof_pitch] = '6:12' if args[:geometry_roof_pitch].nil? args[:geometry_garage_width] = 0.0 if args[:geometry_garage_width].nil? args[:geometry_garage_depth] = 20.0 if args[:geometry_garage_depth].nil? args[:geometry_garage_protrusion] = 0.0 if args[:geometry_garage_protrusion].nil? + args[:geometry_garage_position] = Constants::PositionRight if args[:geometry_garage_position].nil? + args[:slab_perimeter_insulation_r] = 0 if args[:slab_perimeter_insulation_r].nil? + args[:slab_perimeter_insulation_depth] = 0 if args[:slab_perimeter_insulation_depth].nil? + args[:slab_under_insulation_r] = 0 if args[:slab_under_insulation_r].nil? + args[:slab_under_insulation_width] = 0 if args[:slab_under_insulation_width].nil? + args[:neighbor_front_distance] = 0.0 if args[:neighbor_front_distance].nil? + args[:neighbor_back_distance] = 0.0 if args[:neighbor_back_distance].nil? + args[:neighbor_left_distance] = 10.0 if args[:neighbor_left_distance].nil? + args[:neighbor_right_distance] = 10.0 if args[:neighbor_right_distance].nil? args[:overhangs_front_depth] = 0 if args[:overhangs_front_depth].nil? args[:overhangs_back_depth] = 0 if args[:overhangs_back_depth].nil? args[:overhangs_left_depth] = 0 if args[:overhangs_left_depth].nil? diff --git a/BuildResidentialHPXML/measure.xml b/BuildResidentialHPXML/measure.xml index 0974464b7b..f79e411d00 100644 --- a/BuildResidentialHPXML/measure.xml +++ b/BuildResidentialHPXML/measure.xml @@ -3,8 +3,8 @@ 3.1 build_residential_hpxml a13a8983-2b01-4930-8af2-42030b6e4233 - e0310568-0b18-4bcf-a7b0-b3b494fa12da - 2024-11-04T17:16:56Z + f395b10d-1835-4a9c-a974-84f065590fb2 + 2024-11-04T17:29:08Z 2C38F48B BuildResidentialHPXML HPXML Builder @@ -7628,7 +7628,7 @@ measure.rb rb script - 4F540029 + 4DE55017 constants.rb From 6e3bb515d4a3156e0d34a2074a78e3ef4ce3ffa7 Mon Sep 17 00:00:00 2001 From: Joe Robertson Date: Mon, 4 Nov 2024 11:08:54 -0700 Subject: [PATCH 26/33] Make convertArguments generic so we can use in resstock. --- BuildResidentialHPXML/measure.rb | 42 ++++----------------- BuildResidentialHPXML/measure.xml | 6 +-- HPXMLtoOpenStudio/measure.xml | 6 +-- HPXMLtoOpenStudio/resources/meta_measure.rb | 34 +++++++++++++++++ 4 files changed, 48 insertions(+), 40 deletions(-) diff --git a/BuildResidentialHPXML/measure.rb b/BuildResidentialHPXML/measure.rb index 96d11d1e4f..60366cbde9 100644 --- a/BuildResidentialHPXML/measure.rb +++ b/BuildResidentialHPXML/measure.rb @@ -5133,40 +5133,6 @@ def makeArgument(name:, return args end - # TODO - def convertArgumentValues(arguments_model, args) - args.each do |name, value| - if value == Constants::Auto - args.delete(name) - next - end - - arg = arguments_model.find { |a| name == a.name.to_sym } - type = arg.type - - if type == 'Choice'.to_OSArgumentType - choices = arg.choiceValues - if choices.include?(Constants::Auto) - if value.downcase.to_s == 'true' - args[name] = true - elsif value.downcase.to_s == 'false' - args[name] = false - end - end - elsif type == 'String'.to_OSArgumentType - begin - args[name] = Integer(value) - rescue - begin - args[name] = Float(value) - rescue - end - end - end - end - return args - end - # TODO def defaultOptionalArgumentValues(args) # these were previously required arguments with default values set @@ -5187,9 +5153,17 @@ def defaultOptionalArgumentValues(args) args[:neighbor_left_distance] = 10.0 if args[:neighbor_left_distance].nil? args[:neighbor_right_distance] = 10.0 if args[:neighbor_right_distance].nil? args[:overhangs_front_depth] = 0 if args[:overhangs_front_depth].nil? + args[:overhangs_front_distance_to_top_of_window] = 0 if args[:overhangs_front_distance_to_top_of_window].nil? + args[:overhangs_front_distance_to_bottom_of_window] = 4 if args[:overhangs_front_distance_to_bottom_of_window].nil? args[:overhangs_back_depth] = 0 if args[:overhangs_back_depth].nil? + args[:overhangs_back_distance_to_top_of_window] = 0 if args[:overhangs_back_distance_to_top_of_window].nil? + args[:overhangs_back_distance_to_bottom_of_window] = 4 if args[:overhangs_back_distance_to_bottom_of_window].nil? args[:overhangs_left_depth] = 0 if args[:overhangs_left_depth].nil? + args[:overhangs_left_distance_to_top_of_window] = 0 if args[:overhangs_left_distance_to_top_of_window].nil? + args[:overhangs_left_distance_to_bottom_of_window] = 4 if args[:overhangs_left_distance_to_bottom_of_window].nil? args[:overhangs_right_depth] = 0 if args[:overhangs_right_depth].nil? + args[:overhangs_right_distance_to_top_of_window] = 0 if args[:overhangs_right_distance_to_top_of_window].nil? + args[:overhangs_right_distance_to_bottom_of_window] = 4 if args[:overhangs_right_distance_to_bottom_of_window].nil? args[:skylight_ufactor] = 0.33 if args[:skylight_ufactor].nil? args[:skylight_shgc] = 0.45 if args[:skylight_shgc].nil? args[:heating_system_2_type] = Constants::None if args[:heating_system_2_type].nil? diff --git a/BuildResidentialHPXML/measure.xml b/BuildResidentialHPXML/measure.xml index f79e411d00..64dec1ae6e 100644 --- a/BuildResidentialHPXML/measure.xml +++ b/BuildResidentialHPXML/measure.xml @@ -3,8 +3,8 @@ 3.1 build_residential_hpxml a13a8983-2b01-4930-8af2-42030b6e4233 - f395b10d-1835-4a9c-a974-84f065590fb2 - 2024-11-04T17:29:08Z + 1f5d4f80-84aa-4782-a014-a377a70ea0d2 + 2024-11-04T18:08:10Z 2C38F48B BuildResidentialHPXML HPXML Builder @@ -7628,7 +7628,7 @@ measure.rb rb script - 4DE55017 + 44646A2C constants.rb diff --git a/HPXMLtoOpenStudio/measure.xml b/HPXMLtoOpenStudio/measure.xml index 59e6f0a7bc..0c97b92072 100644 --- a/HPXMLtoOpenStudio/measure.xml +++ b/HPXMLtoOpenStudio/measure.xml @@ -3,8 +3,8 @@ 3.1 hpxm_lto_openstudio b1543b30-9465-45ff-ba04-1d1f85e763bc - 5ba92132-b948-4d22-ba2f-2b01e874ee21 - 2024-11-01T16:22:35Z + 67aeb4d4-239a-428c-b4d5-3f56a8404f3d + 2024-11-04T18:08:12Z D8922A73 HPXMLtoOpenStudio HPXML to OpenStudio Translator @@ -429,7 +429,7 @@ meta_measure.rb rb resource - F335EDC8 + B5131E34 minitest_helper.rb diff --git a/HPXMLtoOpenStudio/resources/meta_measure.rb b/HPXMLtoOpenStudio/resources/meta_measure.rb index 22462098e1..2bcff0faa7 100644 --- a/HPXMLtoOpenStudio/resources/meta_measure.rb +++ b/HPXMLtoOpenStudio/resources/meta_measure.rb @@ -624,3 +624,37 @@ def is_integer? return true end end + +# TODO +def convertArgumentValues(arguments_model, args, delete_auto = true) + args.each do |name, value| + if delete_auto && value == Constants::Auto + args.delete(name) + next + end + + arg = arguments_model.find { |a| name == a.name.to_sym } + type = arg.type + + if type == 'Choice'.to_OSArgumentType + choices = arg.choiceValues + if choices.include?(Constants::Auto) + if value.downcase.to_s == 'true' + args[name] = true + elsif value.downcase.to_s == 'false' + args[name] = false + end + end + elsif type == 'String'.to_OSArgumentType + begin + args[name] = Integer(value) + rescue + begin + args[name] = Float(value) + rescue + end + end + end + end + return args +end From 2f4903e4dc03006963265351138623376047e1a4 Mon Sep 17 00:00:00 2001 From: Joe Robertson Date: Mon, 4 Nov 2024 13:05:17 -0700 Subject: [PATCH 27/33] More default values for previously required arguments. --- BuildResidentialHPXML/measure.rb | 26 ++++++++++++++++++++++---- BuildResidentialHPXML/measure.xml | 6 +++--- 2 files changed, 25 insertions(+), 7 deletions(-) diff --git a/BuildResidentialHPXML/measure.rb b/BuildResidentialHPXML/measure.rb index 60366cbde9..97e040dc97 100644 --- a/BuildResidentialHPXML/measure.rb +++ b/BuildResidentialHPXML/measure.rb @@ -5135,10 +5135,12 @@ def makeArgument(name:, # TODO def defaultOptionalArgumentValues(args) - # these were previously required arguments with default values set + # these were previously required arguments with default values set (i.e., arg.setDefaultValue(xxx)) args[:floor_over_foundation_assembly_r] = 28.1 if args[:floor_over_foundation_assembly_r].nil? args[:floor_over_garage_assembly_r] = 28.1 if args[:floor_over_garage_assembly_r].nil? args[:ceiling_assembly_r] = 31.6 if args[:ceiling_assembly_r].nil? + args[:geometry_foundation_height] = 0.0 if args[:geometry_foundation_height].nil? + args[:geometry_foundation_height_above_grade] = 0.0 if args[:geometry_foundation_height_above_grade].nil? args[:geometry_roof_pitch] = '6:12' if args[:geometry_roof_pitch].nil? args[:geometry_garage_width] = 0.0 if args[:geometry_garage_width].nil? args[:geometry_garage_depth] = 20.0 if args[:geometry_garage_depth].nil? @@ -5166,15 +5168,25 @@ def defaultOptionalArgumentValues(args) args[:overhangs_right_distance_to_bottom_of_window] = 4 if args[:overhangs_right_distance_to_bottom_of_window].nil? args[:skylight_ufactor] = 0.33 if args[:skylight_ufactor].nil? args[:skylight_shgc] = 0.45 if args[:skylight_shgc].nil? - args[:heating_system_2_type] = Constants::None if args[:heating_system_2_type].nil? - args[:heating_system_2_fuel] = HPXML::FuelTypeElectricity if args[:heating_system_2_fuel].nil? + args[:heating_system_fuel] = HPXML::FuelTypeNaturalGas if args[:heating_system_fuel].nil? + args[:heating_system_heating_efficiency] = 0.78 if args[:heating_system_heating_efficiency].nil? + args[:heating_system_fraction_heat_load_served] = 1 if args[:heating_system_fraction_heat_load_served].nil? + args[:cooling_system_cooling_efficiency_type] = HPXML::UnitsSEER if args[:cooling_system_cooling_efficiency_type].nil? + args[:cooling_system_cooling_efficiency] = 13.0 if args[:cooling_system_cooling_efficiency].nil? + args[:cooling_system_fraction_cool_load_served] = 1 if args[:cooling_system_fraction_cool_load_served].nil? args[:heat_pump_heating_efficiency_type] = HPXML::UnitsHSPF if args[:heat_pump_heating_efficiency_type].nil? args[:heat_pump_heating_efficiency] = 7.7 if args[:heat_pump_heating_efficiency].nil? args[:heat_pump_cooling_efficiency_type] = HPXML::UnitsSEER if args[:heat_pump_cooling_efficiency_type].nil? args[:heat_pump_cooling_efficiency] = 13.0 if args[:heat_pump_cooling_efficiency].nil? + args[:heat_pump_fraction_heat_load_served] = 1 if args[:heat_pump_fraction_heat_load_served].nil? + args[:heat_pump_fraction_cool_load_served] = 1 if args[:heat_pump_fraction_cool_load_served].nil? args[:heat_pump_backup_type] = HPXML::HeatPumpBackupTypeIntegrated if args[:heat_pump_backup_type].nil? args[:heat_pump_backup_fuel] = HPXML::FuelTypeElectricity if args[:heat_pump_backup_fuel].nil? args[:heat_pump_backup_heating_efficiency] = 1 if args[:heat_pump_backup_heating_efficiency].nil? + args[:heating_system_2_type] = Constants::None if args[:heating_system_2_type].nil? + args[:heating_system_2_fuel] = HPXML::FuelTypeElectricity if args[:heating_system_2_fuel].nil? + args[:heating_system_2_heating_efficiency] = 1.0 if args[:heating_system_2_heating_efficiency].nil? + args[:heating_system_2_fraction_heat_load_served] = 0.25 if args[:heating_system_2_fraction_heat_load_served].nil? args[:mech_vent_fan_type] = Constants::None if args[:mech_vent_fan_type].nil? args[:mech_vent_recovery_efficiency_type] = 'Unadjusted' if args[:mech_vent_recovery_efficiency_type].nil? args[:mech_vent_total_recovery_efficiency] = 0.48 if args[:mech_vent_total_recovery_efficiency].nil? @@ -5186,8 +5198,14 @@ def defaultOptionalArgumentValues(args) args[:water_fixtures_shower_low_flow] = false if args[:water_fixtures_shower_low_flow].nil? args[:water_fixtures_sink_low_flow] = false if args[:water_fixtures_sink_low_flow].nil? args[:solar_thermal_system_type] = Constants::None if args[:solar_thermal_system_type].nil? - args[:solar_thermal_solar_fraction] = 0 if args[:solar_thermal_solar_fraction].nil? + args[:solar_thermal_collector_area] = 40.0 if args[:solar_thermal_collector_area].nil? + args[:solar_thermal_collector_loop_type] = HPXML::SolarThermalLoopTypeDirect if args[:solar_thermal_collector_loop_type].nil? + args[:solar_thermal_collector_type] = HPXML::SolarThermalCollectorTypeEvacuatedTube if args[:solar_thermal_collector_type].nil? + args[:solar_thermal_collector_azimuth] = 180 if args[:solar_thermal_collector_azimuth].nil? args[:solar_thermal_collector_tilt] = 'RoofPitch' if args[:solar_thermal_collector_tilt].nil? + args[:solar_thermal_collector_rated_optical_efficiency] = 0.5 if args[:solar_thermal_collector_rated_optical_efficiency].nil? + args[:solar_thermal_collector_rated_thermal_losses] = 0.2799 if args[:solar_thermal_collector_rated_thermal_losses].nil? + args[:solar_thermal_solar_fraction] = 0 if args[:solar_thermal_solar_fraction].nil? args[:misc_fuel_loads_grill_fuel_type] = HPXML::FuelTypeNaturalGas if args[:misc_fuel_loads_grill_fuel_type].nil? args[:misc_fuel_loads_lighting_fuel_type] = HPXML::FuelTypeNaturalGas if args[:misc_fuel_loads_lighting_fuel_type].nil? args[:misc_fuel_loads_fireplace_fuel_type] = HPXML::FuelTypeNaturalGas if args[:misc_fuel_loads_fireplace_fuel_type].nil? diff --git a/BuildResidentialHPXML/measure.xml b/BuildResidentialHPXML/measure.xml index 64dec1ae6e..18b8f116d0 100644 --- a/BuildResidentialHPXML/measure.xml +++ b/BuildResidentialHPXML/measure.xml @@ -3,8 +3,8 @@ 3.1 build_residential_hpxml a13a8983-2b01-4930-8af2-42030b6e4233 - 1f5d4f80-84aa-4782-a014-a377a70ea0d2 - 2024-11-04T18:08:10Z + dd26f412-4785-48aa-8ac7-6fc64f3cd06b + 2024-11-04T20:04:51Z 2C38F48B BuildResidentialHPXML HPXML Builder @@ -7628,7 +7628,7 @@ measure.rb rb script - 44646A2C + 609BCF9D constants.rb From b03fd83572a703720692d2a46d83bd526114ed11 Mon Sep 17 00:00:00 2001 From: Joe Robertson Date: Mon, 4 Nov 2024 16:04:58 -0700 Subject: [PATCH 28/33] Update template osw file. --- ...nd-run-hpxml-with-stochastic-occupancy.osw | 24 +++++++++++++++---- 1 file changed, 19 insertions(+), 5 deletions(-) diff --git a/workflow/template-build-and-run-hpxml-with-stochastic-occupancy.osw b/workflow/template-build-and-run-hpxml-with-stochastic-occupancy.osw index 063041627d..e97edf4f2e 100644 --- a/workflow/template-build-and-run-hpxml-with-stochastic-occupancy.osw +++ b/workflow/template-build-and-run-hpxml-with-stochastic-occupancy.osw @@ -6,11 +6,25 @@ "steps": [ { "arguments": { + "floor_type": "WoodFrame", + "wall_type": "WoodStud", + "heat_pump_type": "none", + "hot_water_distribution_system_type": "Standard", + "lighting_present": true, + "clothes_washer_present": true, + "clothes_dryer_present": true, + "clothes_dryer_fuel_type": "natural gas", + "dishwasher_present": true, + "refrigerator_present": true, + "cooking_range_oven_present": true, + "cooking_range_oven_fuel_type": "natural gas", + "ceiling_fan_present": true, + "misc_plug_loads_television_present": true, "air_leakage_house_pressure": 50, "air_leakage_units": "ACH", "air_leakage_value": 3, "ceiling_assembly_r": 39.3, - "cooling_system_cooling_capacity": 24000.0, + "cooling_system_cooling_capacity": "24000.0", "cooling_system_cooling_compressor_type": "single stage", "cooling_system_cooling_efficiency": 13.0, "cooling_system_cooling_efficiency_type": "SEER", @@ -21,11 +35,11 @@ "ducts_return_insulation_r": 0.0, "ducts_return_leakage_to_outside_value": 25.0, "ducts_return_location": "attic - unvented", - "ducts_return_surface_area": 50.0, + "ducts_return_surface_area": "50.0", "ducts_supply_insulation_r": 4.0, "ducts_supply_leakage_to_outside_value": 75.0, "ducts_supply_location": "attic - unvented", - "ducts_supply_surface_area": 150.0, + "ducts_supply_surface_area": "150.0", "foundation_wall_insulation_r": 8.9, "geometry_attic_type": "UnventedAttic", "geometry_average_ceiling_height": 8.0, @@ -43,7 +57,7 @@ "geometry_unit_orientation": 180.0, "geometry_unit_type": "single-family detached", "heating_system_fuel": "natural gas", - "heating_system_heating_capacity": 36000.0, + "heating_system_heating_capacity": "36000.0", "heating_system_heating_efficiency": 0.92, "heating_system_type": "Furnace", "hpxml_path": "../built.xml", @@ -57,7 +71,7 @@ "water_heater_efficiency": 0.95, "water_heater_efficiency_type": "EnergyFactor", "water_heater_fuel_type": "electricity", - "water_heater_tank_volume": 40, + "water_heater_tank_volume": "40", "water_heater_type": "storage water heater", "weather_station_epw_filepath": "USA_CO_Denver.Intl.AP.725650_TMY3.epw", "window_area_back": 108.0, From 1ae24ade1875073f90f4d8566746cbee887e7511 Mon Sep 17 00:00:00 2001 From: Joe Robertson Date: Tue, 5 Nov 2024 09:29:00 -0700 Subject: [PATCH 29/33] Check zip code for lead zero. --- BuildResidentialHPXML/measure.rb | 7 ++++++- BuildResidentialHPXML/measure.xml | 6 +++--- 2 files changed, 9 insertions(+), 4 deletions(-) diff --git a/BuildResidentialHPXML/measure.rb b/BuildResidentialHPXML/measure.rb index 97e040dc97..18aed35365 100644 --- a/BuildResidentialHPXML/measure.rb +++ b/BuildResidentialHPXML/measure.rb @@ -6259,12 +6259,17 @@ def self.add_building(hpxml, args) dst_end_day = end_day end + zip_code = args[:site_zip_code] + if !zip_code.nil? + zip_code = zip_code.to_s.rjust(5, '0') + end + hpxml.buildings.add(building_id: 'MyBuilding', site_id: 'SiteID', event_type: 'proposed workscope', city: args[:site_city], state_code: args[:site_state_code], - zip_code: args[:site_zip_code], + zip_code: zip_code, time_zone_utc_offset: args[:site_time_zone_utc_offset], elevation: args[:site_elevation], latitude: args[:site_latitude], diff --git a/BuildResidentialHPXML/measure.xml b/BuildResidentialHPXML/measure.xml index 18b8f116d0..d1f2546815 100644 --- a/BuildResidentialHPXML/measure.xml +++ b/BuildResidentialHPXML/measure.xml @@ -3,8 +3,8 @@ 3.1 build_residential_hpxml a13a8983-2b01-4930-8af2-42030b6e4233 - dd26f412-4785-48aa-8ac7-6fc64f3cd06b - 2024-11-04T20:04:51Z + a5715ba9-b3af-487a-84b9-3a588db527e5 + 2024-11-05T16:27:43Z 2C38F48B BuildResidentialHPXML HPXML Builder @@ -7628,7 +7628,7 @@ measure.rb rb script - 609BCF9D + D6A2AB0F constants.rb From 103a8201d206de85c2bf5f4e22257c6b6d06f7f3 Mon Sep 17 00:00:00 2001 From: Joe Robertson Date: Tue, 5 Nov 2024 09:29:15 -0700 Subject: [PATCH 30/33] Fix integer conversion in new method. --- HPXMLtoOpenStudio/measure.xml | 6 +++--- HPXMLtoOpenStudio/resources/meta_measure.rb | 11 ++++++----- 2 files changed, 9 insertions(+), 8 deletions(-) diff --git a/HPXMLtoOpenStudio/measure.xml b/HPXMLtoOpenStudio/measure.xml index 0c97b92072..7d90563c85 100644 --- a/HPXMLtoOpenStudio/measure.xml +++ b/HPXMLtoOpenStudio/measure.xml @@ -3,8 +3,8 @@ 3.1 hpxm_lto_openstudio b1543b30-9465-45ff-ba04-1d1f85e763bc - 67aeb4d4-239a-428c-b4d5-3f56a8404f3d - 2024-11-04T18:08:12Z + 56e54072-3b71-4005-b3ce-802f1c22a968 + 2024-11-05T16:27:44Z D8922A73 HPXMLtoOpenStudio HPXML to OpenStudio Translator @@ -429,7 +429,7 @@ meta_measure.rb rb resource - B5131E34 + 92DBF142 minitest_helper.rb diff --git a/HPXMLtoOpenStudio/resources/meta_measure.rb b/HPXMLtoOpenStudio/resources/meta_measure.rb index 2bcff0faa7..438dd5477a 100644 --- a/HPXMLtoOpenStudio/resources/meta_measure.rb +++ b/HPXMLtoOpenStudio/resources/meta_measure.rb @@ -647,12 +647,13 @@ def convertArgumentValues(arguments_model, args, delete_auto = true) end elsif type == 'String'.to_OSArgumentType begin - args[name] = Integer(value) - rescue - begin - args[name] = Float(value) - rescue + value = Float(value) + if value % 1 == 0 + args[name] = Integer(value) + else + args[name] = value end + rescue end end end From 20ab04ffae072f2259269100af827c07770de82f Mon Sep 17 00:00:00 2001 From: Joe Robertson Date: Wed, 20 Nov 2024 16:02:09 -0700 Subject: [PATCH 31/33] Respond to review comments. --- BuildResidentialHPXML/README.md | 542 ++-- BuildResidentialHPXML/measure.rb | 2432 ++++++++--------- BuildResidentialHPXML/measure.xml | 552 ++-- .../tests/test_build_residential_hpxml.rb | 12 + Changelog.md | 3 +- HPXMLtoOpenStudio/measure.xml | 6 +- HPXMLtoOpenStudio/resources/meta_measure.rb | 24 +- 7 files changed, 1761 insertions(+), 1810 deletions(-) diff --git a/BuildResidentialHPXML/README.md b/BuildResidentialHPXML/README.md index 44fa638cb6..16753ba51f 100644 --- a/BuildResidentialHPXML/README.md +++ b/BuildResidentialHPXML/README.md @@ -24,7 +24,7 @@ Absolute/relative path of the HPXML file. **Existing HPXML File Path** -Absolute/relative path of the existing HPXML file. If not provided, a new HPXML file with one Building element is created. If provided, a new Building element will be appended to this HPXML file (e.g., to create a multifamily HPXML file describing multiple dwelling units). +Absolute/relative path of the existing HPXML file. If not provided, a new HPXML file with one Building element is created. If provided, a new Building element will be appended to this HPXML file (e.g., to create a multifamily HPXML file describing multiple dwelling units}. - **Name:** ``existing_hpxml_path`` - **Type:** ``String`` @@ -90,7 +90,7 @@ Specifies the unavailable period types. Possible types are column names defined **Schedules: Unavailable Period Dates** -Specifies the unavailable period date ranges. Enter a date range like "Dec 15 - Jan 15". Optionally, can enter hour of the day like "Dec 15 2 - Jan 15 20" (start hour can be 0 through 23 and end hour can be 1 through 24). If multiple periods, use a comma-separated list. +Specifies the unavailable period date ranges. Enter a date range like "Dec 15 - Jan 15". Optionally, can enter hour of the day like "Dec 15 2 - Jan 15 20" (start hour can be 0 through 23 and end hour can be 1 through 24}. If multiple periods, use a comma-separated list. - **Name:** ``schedules_unavailable_period_dates`` - **Type:** ``String`` @@ -101,7 +101,7 @@ Specifies the unavailable period date ranges. Enter a date range like "Dec 15 - **Schedules: Unavailable Period Window Natural Ventilation Availabilities** -The availability of the natural ventilation schedule during unavailable periods. Valid choices are: regular schedule, always available, always unavailable. If multiple periods, use a comma-separated list. If auto or not provided, the OS-HPXML default (see HPXML Unavailable Periods) is used. +The availability of the natural ventilation schedule during unavailable periods. Valid choices are: regular schedule, always available, always unavailable. If multiple periods, use a comma-separated list. If 'auto' or not provided, the OS-HPXML default (see HPXML Unavailable Periods) is used. - **Name:** ``schedules_unavailable_period_window_natvent_availabilities`` - **Type:** ``String`` @@ -112,7 +112,7 @@ The availability of the natural ventilation schedule during unavailable periods. **Simulation Control: Timestep** -Value must be a divisor of 60. If auto or not provided, the OS-HPXML default (see HPXML Simulation Control) is used. +Value must be a divisor of 60. If 'auto' or not provided, the OS-HPXML default (see HPXML Simulation Control) is used. - **Name:** ``simulation_control_timestep`` - **Type:** ``String`` @@ -123,7 +123,7 @@ Value must be a divisor of 60. If auto or not provided, the OS-HPXML default (se **Simulation Control: Run Period** -Enter a date range like 'Jan 1 - Dec 31'. If not provided, the OS-HPXML default (see HPXML Simulation Control) is used. +Enter a date range like 'Jan 1 - Dec 31'. If not provided, the OS-HPXML default (see HPXML Simulation Control) is used. - **Name:** ``simulation_control_run_period`` - **Type:** ``String`` @@ -134,7 +134,7 @@ Enter a date range like 'Jan 1 - Dec 31'. If not provided, the OS-HPXML default **Simulation Control: Run Period Calendar Year** -This numeric field should contain the calendar year that determines the start day of week. If you are running simulations using AMY weather files, the value entered for calendar year will not be used; it will be overridden by the actual year found in the AMY weather file. If auto or not provided, the OS-HPXML default (see HPXML Simulation Control) is used. +This numeric field should contain the calendar year that determines the start day of week. If you are running simulations using AMY weather files, the value entered for calendar year will not be used; it will be overridden by the actual year found in the AMY weather file. If 'auto' or not provided, the OS-HPXML default (see HPXML Simulation Control) is used. - **Name:** ``simulation_control_run_period_calendar_year`` - **Type:** ``String`` @@ -145,7 +145,7 @@ This numeric field should contain the calendar year that determines the start da **Simulation Control: Daylight Saving Enabled** -Whether to use daylight saving. If auto or not provided, the OS-HPXML default (see HPXML Building Site) is used. +Whether to use daylight saving. If 'auto' or not provided, the OS-HPXML default (see HPXML Building Site) is used. - **Name:** ``simulation_control_daylight_saving_enabled`` - **Type:** ``Choice`` @@ -158,7 +158,7 @@ Whether to use daylight saving. If auto or not provided, the OS-HPXML default (s **Simulation Control: Daylight Saving Period** -Enter a date range like 'Mar 15 - Dec 15'. If auto or not provided, the OS-HPXML default (see HPXML Building Site) is used. +Enter a date range like 'Mar 15 - Dec 15'. If 'auto' or not provided, the OS-HPXML default (see HPXML Building Site) is used. - **Name:** ``simulation_control_daylight_saving_period`` - **Type:** ``String`` @@ -169,7 +169,7 @@ Enter a date range like 'Mar 15 - Dec 15'. If auto or not provided, the OS-HPXML **Simulation Control: Temperature Capacitance Multiplier** -Affects the transient calculation of indoor air temperatures. If auto or not provided, the OS-HPXML default (see HPXML Simulation Control) is used. +Affects the transient calculation of indoor air temperatures. If 'auto' or not provided, the OS-HPXML default (see HPXML Simulation Control) is used. - **Name:** ``simulation_control_temperature_capacitance_multiplier`` - **Type:** ``String`` @@ -180,7 +180,7 @@ Affects the transient calculation of indoor air temperatures. If auto or not pro **Simulation Control: Defrost Model Type** -Research feature to select the type of defrost model. Use standard for default E+ defrost setting. Use advanced for an improved model that better accounts for load and energy use during defrost; using advanced may impact simulation runtime. If auto or not provided, the OS-HPXML default (see HPXML Simulation Control) is used. +Research feature to select the type of defrost model. Use standard for default E+ defrost setting. Use advanced for an improved model that better accounts for load and energy use during defrost; using advanced may impact simulation runtime. If 'auto' or not provided, the OS-HPXML default (see HPXML Simulation Control) is used. - **Name:** ``simulation_control_defrost_model_type`` - **Type:** ``Choice`` @@ -219,7 +219,7 @@ Research feature to model capacity increment of multi-stage heat pump backup sys **Site: Type** -The type of site. If auto or not provided, the OS-HPXML default (see HPXML Site) is used. +The type of site. If 'auto' or not provided, the OS-HPXML default (see HPXML Site) is used. - **Name:** ``site_type`` - **Type:** ``Choice`` @@ -232,7 +232,7 @@ The type of site. If auto or not provided, the OS-HPXML default (see HPXML Site) is used. +Presence of nearby buildings, trees, obstructions for infiltration model. If 'auto' or not provided, the OS-HPXML default (see HPXML Site) is used. - **Name:** ``site_shielding_of_home`` - **Type:** ``Choice`` @@ -245,7 +245,7 @@ Presence of nearby buildings, trees, obstructions for infiltration model. If aut **Site: Soil and Moisture Type** -Type of soil and moisture. This is used to inform ground conductivity and diffusivity. If auto or not provided, the OS-HPXML default (see HPXML Site) is used. +Type of soil and moisture. This is used to inform ground conductivity and diffusivity. If 'auto' or not provided, the OS-HPXML default (see HPXML Site) is used. - **Name:** ``site_soil_and_moisture_type`` - **Type:** ``Choice`` @@ -308,7 +308,7 @@ City/municipality of the home address. **Site: State Code** -State code of the home address. If auto or not provided, the OS-HPXML default (see HPXML Site) is used. +State code of the home address. If 'auto' or not provided, the OS-HPXML default (see HPXML Site) is used. - **Name:** ``site_state_code`` - **Type:** ``Choice`` @@ -321,7 +321,7 @@ State code of the home address. If auto or not provided, the OS-HPXML default (s **Site: Zip Code** -Zip code of the home address. Either this or the Weather Station: EnergyPlus Weather (EPW) Filepath input below must be provided. +Zip code of the home address. Either this or the Weather Station: EnergyPlus Weather (EPW} Filepath input below must be provided. - **Name:** ``site_zip_code`` - **Type:** ``String`` @@ -332,7 +332,7 @@ Zip code of the home address. Either this or the Weather Station: EnergyPlus Wea **Site: Time Zone UTC Offset** -Time zone UTC offset of the home address. Must be between -12 and 14. If auto or not provided, the OS-HPXML default (see HPXML Site) is used. +Time zone UTC offset of the home address. Must be between -12 and 14. If 'auto' or not provided, the OS-HPXML default (see HPXML Site) is used. - **Name:** ``site_time_zone_utc_offset`` - **Type:** ``String`` @@ -343,7 +343,7 @@ Time zone UTC offset of the home address. Must be between -12 and 14. If auto or **Site: Elevation** -Elevation of the home address. If auto or not provided, the OS-HPXML default (see HPXML Site) is used. +Elevation of the home address. If 'auto' or not provided, the OS-HPXML default (see HPXML Site) is used. - **Name:** ``site_elevation`` - **Type:** ``String`` @@ -354,7 +354,7 @@ Elevation of the home address. If auto or not provided, the OS-HPXML default (se **Site: Latitude** -Latitude of the home address. Must be between -90 and 90. Use negative values for southern hemisphere. If auto or not provided, the OS-HPXML default (see HPXML Site) is used. +Latitude of the home address. Must be between -90 and 90. Use negative values for southern hemisphere. If 'auto' or not provided, the OS-HPXML default (see HPXML Site) is used. - **Name:** ``site_latitude`` - **Type:** ``String`` @@ -365,7 +365,7 @@ Latitude of the home address. Must be between -90 and 90. Use negative values fo **Site: Longitude** -Longitude of the home address. Must be between -180 and 180. Use negative values for the western hemisphere. If auto or not provided, the OS-HPXML default (see HPXML Site) is used. +Longitude of the home address. Must be between -180 and 180. Use negative values for the western hemisphere. If 'auto' or not provided, the OS-HPXML default (see HPXML Site) is used. - **Name:** ``site_longitude`` - **Type:** ``String`` @@ -374,7 +374,7 @@ Longitude of the home address. Must be between -180 and 180. Use negative values
-**Weather Station: EnergyPlus Weather (EPW) Filepath** +**Weather Station: EnergyPlus Weather (EPW} Filepath** Path of the EPW file. Either this or the Site: Zip Code input above must be provided. @@ -479,7 +479,7 @@ The number of floors above grade in the unit. Attic type ConditionedAttic is inc **Geometry: Unit Conditioned Floor Area** -The total floor area of the unit's conditioned space (including any conditioned basement floor area). +The total floor area of the unit's conditioned space (including any conditioned basement floor area}. - **Name:** ``geometry_unit_cfa`` - **Type:** ``Double`` @@ -505,7 +505,7 @@ The ratio of front/back wall length to left/right wall length for the unit, excl **Geometry: Unit Orientation** -The unit's orientation is measured clockwise from north (e.g., North=0, East=90, South=180, West=270). +The unit's orientation is measured clockwise from north (e.g., North=0, East=90, South=180, West=270}. - **Name:** ``geometry_unit_orientation`` - **Type:** ``Double`` @@ -531,7 +531,7 @@ The number of bedrooms in the unit. **Geometry: Unit Number of Bathrooms** -The number of bathrooms in the unit. If auto or not provided, the OS-HPXML default (see HPXML Building Construction) is used. +The number of bathrooms in the unit. If 'auto' or not provided, the OS-HPXML default (see HPXML Building Construction) is used. - **Name:** ``geometry_unit_num_bathrooms`` - **Type:** ``String`` @@ -542,7 +542,7 @@ The number of bathrooms in the unit. If auto or not provided, the OS-HPXML defau **Geometry: Unit Number of Occupants** -The number of occupants in the unit. If not provided, an *asset* calculation is performed assuming standard occupancy, in which various end use defaults (e.g., plug loads, appliances, and hot water usage) are calculated based on Number of Bedrooms and Conditioned Floor Area per ANSI/RESNET/ICC 301-2019. If provided, an *operational* calculation is instead performed in which the end use defaults are adjusted using the relationship between Number of Bedrooms and Number of Occupants from RECS 2015. +The number of occupants in the unit. If not provided, an *asset* calculation is performed assuming standard occupancy, in which various end use defaults (e.g., plug loads, appliances, and hot water usage} are calculated based on Number of Bedrooms and Conditioned Floor Area per ANSI/RESNET/ICC 301-2019. If provided, an *operational* calculation is instead performed in which the end use defaults are adjusted using the relationship between Number of Bedrooms and Number of Occupants from RECS 2015. - **Name:** ``geometry_unit_num_occupants`` - **Type:** ``Double`` @@ -581,7 +581,7 @@ Average distance from the floor to the ceiling. **Geometry: Unit Height Above Grade** -Describes the above-grade height of apartment units on upper floors or homes above ambient or belly-and-wing foundations. It is defined as the height of the lowest conditioned floor above grade and is used to calculate the wind speed for the infiltration model. If auto or not provided, the OS-HPXML default (see HPXML Building Construction) is used. +Describes the above-grade height of apartment units on upper floors or homes above ambient or belly-and-wing foundations. It is defined as the height of the lowest conditioned floor above grade and is used to calculate the wind speed for the infiltration model. If 'auto' or not provided, the OS-HPXML default (see HPXML Building Construction) is used. - **Name:** ``geometry_unit_height_above_grade`` - **Type:** ``String`` @@ -592,7 +592,7 @@ Describes the above-grade height of apartment units on upper floors or homes abo **Geometry: Garage Width** -The width of the garage. Only applies to single-family detached units. If not provided, defaults to zero (no garage). +The width of the garage. Only applies to single-family detached units. If not provided, defaults to zero (no garage}. - **Name:** ``geometry_garage_width`` - **Type:** ``Double`` @@ -657,7 +657,7 @@ The foundation type of the building. Foundation types ConditionedBasement and Co **Geometry: Foundation Height** -The height of the foundation (e.g., 3ft for crawlspace, 8ft for basement). Only applies to basements/crawlspaces. +The height of the foundation (e.g., 3ft for crawlspace, 8ft for basement}. Only applies to basements/crawlspaces. - **Name:** ``geometry_foundation_height`` - **Type:** ``Double`` @@ -748,7 +748,7 @@ The eaves depth of the roof. **Neighbor: Front Distance** -The distance between the unit and the neighboring building to the front (not including eaves). A value of zero indicates no neighbors. Used for shading. +The distance between the unit and the neighboring building to the front (not including eaves}. A value of zero indicates no neighbors. Used for shading. - **Name:** ``neighbor_front_distance`` - **Type:** ``Double`` @@ -761,7 +761,7 @@ The distance between the unit and the neighboring building to the front (not inc **Neighbor: Back Distance** -The distance between the unit and the neighboring building to the back (not including eaves). A value of zero indicates no neighbors. Used for shading. +The distance between the unit and the neighboring building to the back (not including eaves}. A value of zero indicates no neighbors. Used for shading. - **Name:** ``neighbor_back_distance`` - **Type:** ``Double`` @@ -774,7 +774,7 @@ The distance between the unit and the neighboring building to the back (not incl **Neighbor: Left Distance** -The distance between the unit and the neighboring building to the left (not including eaves). A value of zero indicates no neighbors. Used for shading. +The distance between the unit and the neighboring building to the left (not including eaves}. A value of zero indicates no neighbors. Used for shading. - **Name:** ``neighbor_left_distance`` - **Type:** ``Double`` @@ -787,7 +787,7 @@ The distance between the unit and the neighboring building to the left (not incl **Neighbor: Right Distance** -The distance between the unit and the neighboring building to the right (not including eaves). A value of zero indicates no neighbors. Used for shading. +The distance between the unit and the neighboring building to the right (not including eaves}. A value of zero indicates no neighbors. Used for shading. - **Name:** ``neighbor_right_distance`` - **Type:** ``Double`` @@ -800,7 +800,7 @@ The distance between the unit and the neighboring building to the right (not inc **Neighbor: Front Height** -The height of the neighboring building to the front. If auto or not provided, the OS-HPXML default (see HPXML Neighbor Building) is used. +The height of the neighboring building to the front. If 'auto' or not provided, the OS-HPXML default (see HPXML Neighbor Building) is used. - **Name:** ``neighbor_front_height`` - **Type:** ``String`` @@ -811,7 +811,7 @@ The height of the neighboring building to the front. If auto or not provided, th **Neighbor: Back Height** -The height of the neighboring building to the back. If auto or not provided, the OS-HPXML default (see HPXML Neighbor Building) is used. +The height of the neighboring building to the back. If 'auto' or not provided, the OS-HPXML default (see HPXML Neighbor Building) is used. - **Name:** ``neighbor_back_height`` - **Type:** ``String`` @@ -822,7 +822,7 @@ The height of the neighboring building to the back. If auto or not provided, the **Neighbor: Left Height** -The height of the neighboring building to the left. If auto or not provided, the OS-HPXML default (see HPXML Neighbor Building) is used. +The height of the neighboring building to the left. If 'auto' or not provided, the OS-HPXML default (see HPXML Neighbor Building) is used. - **Name:** ``neighbor_left_height`` - **Type:** ``String`` @@ -833,7 +833,7 @@ The height of the neighboring building to the left. If auto or not provided, the **Neighbor: Right Height** -The height of the neighboring building to the right. If auto or not provided, the OS-HPXML default (see HPXML Neighbor Building) is used. +The height of the neighboring building to the right. If 'auto' or not provided, the OS-HPXML default (see HPXML Neighbor Building) is used. - **Name:** ``neighbor_right_height`` - **Type:** ``String`` @@ -883,7 +883,7 @@ The type of floors. **Foundation Wall: Type** -The material type of the foundation wall. If auto or not provided, the OS-HPXML default (see HPXML Foundation Walls) is used. +The material type of the foundation wall. If 'auto' or not provided, the OS-HPXML default (see HPXML Foundation Walls) is used. - **Name:** ``foundation_wall_type`` - **Type:** ``Choice`` @@ -896,7 +896,7 @@ The material type of the foundation wall. If auto or not provided, the OS-HPXML **Foundation Wall: Thickness** -The thickness of the foundation wall. If auto or not provided, the OS-HPXML default (see HPXML Foundation Walls) is used. +The thickness of the foundation wall. If 'auto' or not provided, the OS-HPXML default (see HPXML Foundation Walls) is used. - **Name:** ``foundation_wall_thickness`` - **Type:** ``String`` @@ -933,7 +933,7 @@ Whether the insulation is on the interior or exterior of the foundation wall. On **Foundation Wall: Insulation Distance To Top** -The distance from the top of the foundation wall to the top of the foundation wall insulation. Only applies to basements/crawlspaces. If auto or not provided, the OS-HPXML default (see HPXML Foundation Walls) is used. +The distance from the top of the foundation wall to the top of the foundation wall insulation. Only applies to basements/crawlspaces. If 'auto' or not provided, the OS-HPXML default (see HPXML Foundation Walls) is used. - **Name:** ``foundation_wall_insulation_distance_to_top`` - **Type:** ``String`` @@ -944,7 +944,7 @@ The distance from the top of the foundation wall to the top of the foundation wa **Foundation Wall: Insulation Distance To Bottom** -The distance from the top of the foundation wall to the bottom of the foundation wall insulation. Only applies to basements/crawlspaces. If auto or not provided, the OS-HPXML default (see HPXML Foundation Walls) is used. +The distance from the top of the foundation wall to the bottom of the foundation wall insulation. Only applies to basements/crawlspaces. If 'auto' or not provided, the OS-HPXML default (see HPXML Foundation Walls) is used. - **Name:** ``foundation_wall_insulation_distance_to_bottom`` - **Type:** ``String`` @@ -1072,7 +1072,7 @@ Width from slab edge inward of horizontal under-slab insulation. Enter 999 to sp **Slab: Thickness** -The thickness of the slab. Zero can be entered if there is a dirt floor instead of a slab. If auto or not provided, the OS-HPXML default (see HPXML Slabs) is used. +The thickness of the slab. Zero can be entered if there is a dirt floor instead of a slab. If 'auto' or not provided, the OS-HPXML default (see HPXML Slabs) is used. - **Name:** ``slab_thickness`` - **Type:** ``String`` @@ -1083,7 +1083,7 @@ The thickness of the slab. Zero can be entered if there is a dirt floor instead **Slab: Carpet Fraction** -Fraction of the slab floor area that is carpeted. If auto or not provided, the OS-HPXML default (see HPXML Slabs) is used. +Fraction of the slab floor area that is carpeted. If 'auto' or not provided, the OS-HPXML default (see HPXML Slabs) is used. - **Name:** ``slab_carpet_fraction`` - **Type:** ``String`` @@ -1094,7 +1094,7 @@ Fraction of the slab floor area that is carpeted. If auto or not provided, the O **Slab: Carpet R-value** -R-value of the slab carpet. If auto or not provided, the OS-HPXML default (see HPXML Slabs) is used. +R-value of the slab carpet. If 'auto' or not provided, the OS-HPXML default (see HPXML Slabs) is used. - **Name:** ``slab_carpet_r`` - **Type:** ``String`` @@ -1105,7 +1105,7 @@ R-value of the slab carpet. If auto or not provided, the OS-HPXML default (see < **Ceiling: Assembly R-value** -Assembly R-value for the ceiling (attic floor). +Assembly R-value for the ceiling (attic floor}. - **Name:** ``ceiling_assembly_r`` - **Type:** ``Double`` @@ -1118,7 +1118,7 @@ Assembly R-value for the ceiling (attic floor). **Roof: Material Type** -The material type of the roof. If auto or not provided, the OS-HPXML default (see HPXML Roofs) is used. +The material type of the roof. If 'auto' or not provided, the OS-HPXML default (see HPXML Roofs) is used. - **Name:** ``roof_material_type`` - **Type:** ``Choice`` @@ -1131,7 +1131,7 @@ The material type of the roof. If auto or not provided, the OS-HPXML default (se **Roof: Color** -The color of the roof. If auto or not provided, the OS-HPXML default (see HPXML Roofs) is used. +The color of the roof. If 'auto' or not provided, the OS-HPXML default (see HPXML Roofs) is used. - **Name:** ``roof_color`` - **Type:** ``Choice`` @@ -1170,7 +1170,7 @@ The location of the radiant barrier in the attic. **Attic: Radiant Barrier Grade** -The grade of the radiant barrier in the attic. If auto or not provided, the OS-HPXML default (see HPXML Roofs) is used. +The grade of the radiant barrier in the attic. If 'auto' or not provided, the OS-HPXML default (see HPXML Roofs) is used. - **Name:** ``radiant_barrier_grade`` - **Type:** ``Choice`` @@ -1196,7 +1196,7 @@ The type of walls. **Wall: Siding Type** -The siding type of the walls. Also applies to rim joists. If auto or not provided, the OS-HPXML default (see HPXML Walls) is used. +The siding type of the walls. Also applies to rim joists. If 'auto' or not provided, the OS-HPXML default (see HPXML Walls) is used. - **Name:** ``wall_siding_type`` - **Type:** ``Choice`` @@ -1209,7 +1209,7 @@ The siding type of the walls. Also applies to rim joists. If auto or not provide **Wall: Color** -The color of the walls. Also applies to rim joists. If auto or not provided, the OS-HPXML default (see HPXML Walls) is used. +The color of the walls. Also applies to rim joists. If 'auto' or not provided, the OS-HPXML default (see HPXML Walls) is used. - **Name:** ``wall_color`` - **Type:** ``Choice`` @@ -1261,7 +1261,7 @@ The amount of window area on the unit's back facade. A value less than 1 will be **Windows: Left Window Area** -The amount of window area on the unit's left facade (when viewed from the front). A value less than 1 will be treated as a window-to-wall ratio. If the left wall is adiabatic, the value will be ignored. +The amount of window area on the unit's left facade (when viewed from the front}. A value less than 1 will be treated as a window-to-wall ratio. If the left wall is adiabatic, the value will be ignored. - **Name:** ``window_area_left`` - **Type:** ``Double`` @@ -1274,7 +1274,7 @@ The amount of window area on the unit's left facade (when viewed from the front) **Windows: Right Window Area** -The amount of window area on the unit's right facade (when viewed from the front). A value less than 1 will be treated as a window-to-wall ratio. If the right wall is adiabatic, the value will be ignored. +The amount of window area on the unit's right facade (when viewed from the front}. A value less than 1 will be treated as a window-to-wall ratio. If the right wall is adiabatic, the value will be ignored. - **Name:** ``window_area_right`` - **Type:** ``Double`` @@ -1324,7 +1324,7 @@ Full-assembly NFRC solar heat gain coefficient. **Windows: Fraction Operable** -Fraction of windows that are operable. If auto or not provided, the OS-HPXML default (see HPXML Windows) is used. +Fraction of windows that are operable. If 'auto' or not provided, the OS-HPXML default (see HPXML Windows) is used. - **Name:** ``window_fraction_operable`` - **Type:** ``String`` @@ -1335,7 +1335,7 @@ Fraction of windows that are operable. If auto or not provided, the OS-HPXML def **Windows: Natural Ventilation Availability** -For operable windows, the number of days/week that windows can be opened by occupants for natural ventilation. If auto or not provided, the OS-HPXML default (see HPXML Windows) is used. +For operable windows, the number of days/week that windows can be opened by occupants for natural ventilation. If 'auto' or not provided, the OS-HPXML default (see HPXML Windows) is used. - **Name:** ``window_natvent_availability`` - **Type:** ``String`` @@ -1346,7 +1346,7 @@ For operable windows, the number of days/week that windows can be opened by occu **Windows: Interior Shading Type** -Type of window interior shading. Summer/winter shading coefficients can be provided below instead. If auto or not provided, the OS-HPXML default (see HPXML Interior Shading) is used. +Type of window interior shading. Summer/winter shading coefficients can be provided below instead. If 'auto' or not provided, the OS-HPXML default (see HPXML Interior Shading) is used. - **Name:** ``window_interior_shading_type`` - **Type:** ``Choice`` @@ -1359,7 +1359,7 @@ Type of window interior shading. Summer/winter shading coefficients can be provi **Windows: Winter Interior Shading Coefficient** -Interior shading coefficient for the winter season, which if provided overrides the shading type input. 1.0 indicates no reduction in solar gain, 0.85 indicates 15% reduction, etc. If auto or not provided, the OS-HPXML default (see HPXML Interior Shading) is used. +Interior shading coefficient for the winter season, which if provided overrides the shading type input. 1.0 indicates no reduction in solar gain, 0.85 indicates 15% reduction, etc. If 'auto' or not provided, the OS-HPXML default (see HPXML Interior Shading) is used. - **Name:** ``window_interior_shading_winter`` - **Type:** ``String`` @@ -1370,7 +1370,7 @@ Interior shading coefficient for the winter season, which if provided overrides **Windows: Summer Interior Shading Coefficient** -Interior shading coefficient for the summer season, which if provided overrides the shading type input. 1.0 indicates no reduction in solar gain, 0.85 indicates 15% reduction, etc. If auto or not provided, the OS-HPXML default (see HPXML Interior Shading) is used. +Interior shading coefficient for the summer season, which if provided overrides the shading type input. 1.0 indicates no reduction in solar gain, 0.85 indicates 15% reduction, etc. If 'auto' or not provided, the OS-HPXML default (see HPXML Interior Shading) is used. - **Name:** ``window_interior_shading_summer`` - **Type:** ``String`` @@ -1381,7 +1381,7 @@ Interior shading coefficient for the summer season, which if provided overrides **Windows: Exterior Shading Type** -Type of window exterior shading. Summer/winter shading coefficients can be provided below instead. If auto or not provided, the OS-HPXML default (see HPXML Exterior Shading) is used. +Type of window exterior shading. Summer/winter shading coefficients can be provided below instead. If 'auto' or not provided, the OS-HPXML default (see HPXML Exterior Shading) is used. - **Name:** ``window_exterior_shading_type`` - **Type:** ``Choice`` @@ -1394,7 +1394,7 @@ Type of window exterior shading. Summer/winter shading coefficients can be provi **Windows: Winter Exterior Shading Coefficient** -Exterior shading coefficient for the winter season, which if provided overrides the shading type input. 1.0 indicates no reduction in solar gain, 0.85 indicates 15% reduction, etc. If auto or not provided, the OS-HPXML default (see HPXML Exterior Shading) is used. +Exterior shading coefficient for the winter season, which if provided overrides the shading type input. 1.0 indicates no reduction in solar gain, 0.85 indicates 15% reduction, etc. If 'auto' or not provided, the OS-HPXML default (see HPXML Exterior Shading) is used. - **Name:** ``window_exterior_shading_winter`` - **Type:** ``String`` @@ -1405,7 +1405,7 @@ Exterior shading coefficient for the winter season, which if provided overrides **Windows: Summer Exterior Shading Coefficient** -Exterior shading coefficient for the summer season, which if provided overrides the shading type input. 1.0 indicates no reduction in solar gain, 0.85 indicates 15% reduction, etc. If auto or not provided, the OS-HPXML default (see HPXML Exterior Shading) is used. +Exterior shading coefficient for the summer season, which if provided overrides the shading type input. 1.0 indicates no reduction in solar gain, 0.85 indicates 15% reduction, etc. If 'auto' or not provided, the OS-HPXML default (see HPXML Exterior Shading) is used. - **Name:** ``window_exterior_shading_summer`` - **Type:** ``String`` @@ -1416,7 +1416,7 @@ Exterior shading coefficient for the summer season, which if provided overrides **Windows: Shading Summer Season** -Enter a date range like 'May 1 - Sep 30'. Defines the summer season for purposes of shading coefficients; the rest of the year is assumed to be winter. If auto or not provided, the OS-HPXML default (see HPXML Windows) is used. +Enter a date range like 'May 1 - Sep 30'. Defines the summer season for purposes of shading coefficients; the rest of the year is assumed to be winter. If 'auto' or not provided, the OS-HPXML default (see HPXML Windows) is used. - **Name:** ``window_shading_summer_season`` - **Type:** ``String`` @@ -1635,7 +1635,7 @@ The amount of skylight area on the unit's back conditioned roof facade. **Skylights: Left Roof Area** -The amount of skylight area on the unit's left conditioned roof facade (when viewed from the front). +The amount of skylight area on the unit's left conditioned roof facade (when viewed from the front}. - **Name:** ``skylight_area_left`` - **Type:** ``Double`` @@ -1648,7 +1648,7 @@ The amount of skylight area on the unit's left conditioned roof facade (when vie **Skylights: Right Roof Area** -The amount of skylight area on the unit's right conditioned roof facade (when viewed from the front). +The amount of skylight area on the unit's right conditioned roof facade (when viewed from the front}. - **Name:** ``skylight_area_right`` - **Type:** ``Double`` @@ -1661,7 +1661,7 @@ The amount of skylight area on the unit's right conditioned roof facade (when vi **Skylights: U-Factor** -Full-assembly NFRC U-factor. +Full-assembly NFRC U-factor. If not provided, defaults to 0.33. - **Name:** ``skylight_ufactor`` - **Type:** ``Double`` @@ -1674,7 +1674,7 @@ Full-assembly NFRC U-factor. **Skylights: SHGC** -Full-assembly NFRC solar heat gain coefficient. +Full-assembly NFRC solar heat gain coefficient. If not provided, defaults to 0.45. - **Name:** ``skylight_shgc`` - **Type:** ``Double`` @@ -1698,7 +1698,7 @@ The type of storm, if present. If not provided, assumes there is no storm. **Doors: Area** -The area of the opaque door(s). +The area of the opaque door(s}. - **Name:** ``door_area`` - **Type:** ``Double`` @@ -1711,7 +1711,7 @@ The area of the opaque door(s). **Doors: R-value** -R-value of the opaque door(s). +R-value of the opaque door(s}. - **Name:** ``door_rvalue`` - **Type:** ``Double`` @@ -1787,7 +1787,7 @@ Type of air leakage if providing a numeric air leakage value. If 'unit total', r **Air Leakage: Has Flue or Chimney in Conditioned Space** -Presence of flue or chimney with combustion air from conditioned space; used for infiltration model. If auto or not provided, the OS-HPXML default (see Flue or Chimney) is used. +Presence of flue or chimney with combustion air from conditioned space; used for infiltration model. If 'auto' or not provided, the OS-HPXML default (see Flue or Chimney) is used. - **Name:** ``air_leakage_has_flue_or_chimney_in_conditioned_space`` - **Type:** ``Choice`` @@ -1839,7 +1839,7 @@ The rated heating efficiency value of the heating system. **Heating System: Heating Capacity** -The output heating capacity of the heating system. If auto or not provided, the OS-HPXML default (see HPXML Heating Systems) is used. +The output heating capacity of the heating system. If 'auto' or not provided, the OS-HPXML default (see HPXML Heating Systems) is used. - **Name:** ``heating_system_heating_capacity`` - **Type:** ``String`` @@ -1900,7 +1900,7 @@ The fuel usage of the pilot light. Applies only to Furnace, WallFurnace, FloorFu **Heating System: Airflow Defect Ratio** -The airflow defect ratio, defined as (InstalledAirflow - DesignAirflow) / DesignAirflow, of the heating system per ANSI/RESNET/ACCA Standard 310. A value of zero means no airflow defect. Applies only to Furnace. If not provided, assumes no defect. +The airflow defect ratio, defined as (InstalledAirflow - DesignAirflow} / DesignAirflow, of the heating system per ANSI/RESNET/ACCA Standard 310. A value of zero means no airflow defect. Applies only to Furnace. If not provided, assumes no defect. - **Name:** ``heating_system_airflow_defect_ratio`` - **Type:** ``Double`` @@ -1926,7 +1926,7 @@ The type of cooling system. Use 'none' if there is no cooling system or if there **Cooling System: Efficiency Type** -The efficiency type of the cooling system. System types central air conditioner and mini-split use SEER or SEER2. System types room air conditioner and packaged terminal air conditioner use EER or CEER. Ignored for system type evaporative cooler. +The efficiency type of the cooling system. System types central air conditioner and mini-split use SEER or SEER2. System types room air conditioner and packaged terminal air conditioner use EER or CEER. Ignored for system type evaporative cooler. If not provided, defaults to SEER. - **Name:** ``cooling_system_cooling_efficiency_type`` - **Type:** ``Choice`` @@ -1950,7 +1950,7 @@ The rated efficiency value of the cooling system. Ignored for evaporative cooler **Cooling System: Cooling Compressor Type** -The compressor type of the cooling system. Only applies to central air conditioner and mini-split. If auto or not provided, the OS-HPXML default (see Central Air Conditioner, Mini-Split Air Conditioner) is used. +The compressor type of the cooling system. Only applies to central air conditioner and mini-split. If 'auto' or not provided, the OS-HPXML default (see Central Air Conditioner, Mini-Split Air Conditioner) is used. - **Name:** ``cooling_system_cooling_compressor_type`` - **Type:** ``Choice`` @@ -1963,7 +1963,7 @@ The compressor type of the cooling system. Only applies to central air condition **Cooling System: Cooling Sensible Heat Fraction** -The sensible heat fraction of the cooling system. Ignored for evaporative cooler. If auto or not provided, the OS-HPXML default (see Central Air Conditioner, Room Air Conditioner, Packaged Terminal Air Conditioner, Mini-Split Air Conditioner) is used. +The sensible heat fraction of the cooling system. Ignored for evaporative cooler. If 'auto' or not provided, the OS-HPXML default (see Central Air Conditioner, Room Air Conditioner, Packaged Terminal Air Conditioner, Mini-Split Air Conditioner) is used. - **Name:** ``cooling_system_cooling_sensible_heat_fraction`` - **Type:** ``String`` @@ -1974,7 +1974,7 @@ The sensible heat fraction of the cooling system. Ignored for evaporative cooler **Cooling System: Cooling Capacity** -The output cooling capacity of the cooling system. If auto or not provided, the OS-HPXML default (see Central Air Conditioner, Room Air Conditioner, Packaged Terminal Air Conditioner, Evaporative Cooler, Mini-Split Air Conditioner) is used. +The output cooling capacity of the cooling system. If 'auto' or not provided, the OS-HPXML default (see Central Air Conditioner, Room Air Conditioner, Packaged Terminal Air Conditioner, Evaporative Cooler, Mini-Split Air Conditioner) is used. - **Name:** ``cooling_system_cooling_capacity`` - **Type:** ``String`` @@ -2033,7 +2033,7 @@ Whether the cooling system is ducted or not. Only used for mini-split and evapor **Cooling System: Airflow Defect Ratio** -The airflow defect ratio, defined as (InstalledAirflow - DesignAirflow) / DesignAirflow, of the cooling system per ANSI/RESNET/ACCA Standard 310. A value of zero means no airflow defect. Applies only to central air conditioner and ducted mini-split. If not provided, assumes no defect. +The airflow defect ratio, defined as (InstalledAirflow - DesignAirflow} / DesignAirflow, of the cooling system per ANSI/RESNET/ACCA Standard 310. A value of zero means no airflow defect. Applies only to central air conditioner and ducted mini-split. If not provided, assumes no defect. - **Name:** ``cooling_system_airflow_defect_ratio`` - **Type:** ``Double`` @@ -2046,7 +2046,7 @@ The airflow defect ratio, defined as (InstalledAirflow - DesignAirflow) / Design **Cooling System: Charge Defect Ratio** -The refrigerant charge defect ratio, defined as (InstalledCharge - DesignCharge) / DesignCharge, of the cooling system per ANSI/RESNET/ACCA Standard 310. A value of zero means no refrigerant charge defect. Applies only to central air conditioner and mini-split. If not provided, assumes no defect. +The refrigerant charge defect ratio, defined as (InstalledCharge - DesignCharge} / DesignCharge, of the cooling system per ANSI/RESNET/ACCA Standard 310. A value of zero means no refrigerant charge defect. Applies only to central air conditioner and mini-split. If not provided, assumes no defect. - **Name:** ``cooling_system_charge_defect_ratio`` - **Type:** ``Double`` @@ -2059,7 +2059,7 @@ The refrigerant charge defect ratio, defined as (InstalledCharge - DesignCharge) **Cooling System: Crankcase Heater Power Watts** -Cooling system crankcase heater power consumption in Watts. Applies only to central air conditioner, room air conditioner, packaged terminal air conditioner and mini-split. If auto or not provided, the OS-HPXML default (see Central Air Conditioner, Room Air Conditioner, Packaged Terminal Air Conditioner, Mini-Split Air Conditioner) is used. +Cooling system crankcase heater power consumption in Watts. Applies only to central air conditioner, room air conditioner, packaged terminal air conditioner and mini-split. If 'auto' or not provided, the OS-HPXML default (see Central Air Conditioner, Room Air Conditioner, Packaged Terminal Air Conditioner, Mini-Split Air Conditioner) is used. - **Name:** ``cooling_system_crankcase_heater_watts`` - **Type:** ``String`` @@ -2096,7 +2096,7 @@ The rated heating efficiency value of the heating system integrated into cooling **Cooling System: Integrated Heating System Heating Capacity** -The output heating capacity of the heating system integrated into cooling system. Only used for room air conditioner and packaged terminal air conditioner. If auto or not provided, the OS-HPXML default (see Room Air Conditioner, Packaged Terminal Air Conditioner) is used. +The output heating capacity of the heating system integrated into cooling system. Only used for room air conditioner and packaged terminal air conditioner. If 'auto' or not provided, the OS-HPXML default (see Room Air Conditioner, Packaged Terminal Air Conditioner) is used. - **Name:** ``cooling_system_integrated_heating_system_capacity`` - **Type:** ``String`` @@ -2133,7 +2133,7 @@ The type of heat pump. Use 'none' if there is no heat pump. **Heat Pump: Heating Efficiency Type** -The heating efficiency type of heat pump. System types air-to-air and mini-split use HSPF or HSPF2. System types ground-to-air, packaged terminal heat pump and room air conditioner with reverse cycle use COP. +The heating efficiency type of heat pump. System types air-to-air and mini-split use HSPF or HSPF2. System types ground-to-air, packaged terminal heat pump and room air conditioner with reverse cycle use COP. If not provided, defaults to HSPF. - **Name:** ``heat_pump_heating_efficiency_type`` - **Type:** ``Choice`` @@ -2157,7 +2157,7 @@ The rated heating efficiency value of the heat pump. **Heat Pump: Cooling Efficiency Type** -The cooling efficiency type of heat pump. System types air-to-air and mini-split use SEER or SEER2. System types ground-to-air, packaged terminal heat pump and room air conditioner with reverse cycle use EER. +The cooling efficiency type of heat pump. System types air-to-air and mini-split use SEER or SEER2. System types ground-to-air, packaged terminal heat pump and room air conditioner with reverse cycle use EER. If not provided, defaults to SEER. - **Name:** ``heat_pump_cooling_efficiency_type`` - **Type:** ``Choice`` @@ -2181,7 +2181,7 @@ The rated cooling efficiency value of the heat pump. **Heat Pump: Cooling Compressor Type** -The compressor type of the heat pump. Only applies to air-to-air and mini-split. If auto or not provided, the OS-HPXML default (see Air-to-Air Heat Pump, Mini-Split Heat Pump) is used. +The compressor type of the heat pump. Only applies to air-to-air and mini-split. If 'auto' or not provided, the OS-HPXML default (see Air-to-Air Heat Pump, Mini-Split Heat Pump) is used. - **Name:** ``heat_pump_cooling_compressor_type`` - **Type:** ``Choice`` @@ -2194,7 +2194,7 @@ The compressor type of the heat pump. Only applies to air-to-air and mini-split. **Heat Pump: Cooling Sensible Heat Fraction** -The sensible heat fraction of the heat pump. If auto or not provided, the OS-HPXML default (see Air-to-Air Heat Pump, Mini-Split Heat Pump, Packaged Terminal Heat Pump, Room Air Conditioner w/ Reverse Cycle, Ground-to-Air Heat Pump) is used. +The sensible heat fraction of the heat pump. If 'auto' or not provided, the OS-HPXML default (see Air-to-Air Heat Pump, Mini-Split Heat Pump, Packaged Terminal Heat Pump, Room Air Conditioner w/ Reverse Cycle, Ground-to-Air Heat Pump) is used. - **Name:** ``heat_pump_cooling_sensible_heat_fraction`` - **Type:** ``String`` @@ -2205,7 +2205,7 @@ The sensible heat fraction of the heat pump. If auto or not provided, the OS-HPX **Heat Pump: Heating Capacity** -The output heating capacity of the heat pump. If auto or not provided, the OS-HPXML default (see Air-to-Air Heat Pump, Mini-Split Heat Pump, Packaged Terminal Heat Pump, Room Air Conditioner w/ Reverse Cycle, Ground-to-Air Heat Pump) is used. +The output heating capacity of the heat pump. If 'auto' or not provided, the OS-HPXML default (see Air-to-Air Heat Pump, Mini-Split Heat Pump, Packaged Terminal Heat Pump, Room Air Conditioner w/ Reverse Cycle, Ground-to-Air Heat Pump) is used. - **Name:** ``heat_pump_heating_capacity`` - **Type:** ``String`` @@ -2240,7 +2240,7 @@ The maximum capacity limit applied to the auto-sizing methodology. If not provid **Heat Pump: Heating Capacity Retention Fraction** -The output heating capacity of the heat pump at a user-specified temperature (e.g., 17F or 5F) divided by the above nominal heating capacity. Applies to all heat pump types except ground-to-air. If auto or not provided, the OS-HPXML default (see Air-to-Air Heat Pump, Mini-Split Heat Pump, Packaged Terminal Heat Pump, Room Air Conditioner w/ Reverse Cycle) is used. +The output heating capacity of the heat pump at a user-specified temperature (e.g., 17F or 5F} divided by the above nominal heating capacity. Applies to all heat pump types except ground-to-air. If 'auto' or not provided, the OS-HPXML default (see Air-to-Air Heat Pump, Mini-Split Heat Pump, Packaged Terminal Heat Pump, Room Air Conditioner w/ Reverse Cycle) is used. - **Name:** ``heat_pump_heating_capacity_retention_fraction`` - **Type:** ``String`` @@ -2251,7 +2251,7 @@ The output heating capacity of the heat pump at a user-specified temperature (e. **Heat Pump: Heating Capacity Retention Temperature** -The user-specified temperature (e.g., 17F or 5F) for the above heating capacity retention fraction. Applies to all heat pump types except ground-to-air. Required if the Heating Capacity Retention Fraction is provided. +The user-specified temperature (e.g., 17F or 5F} for the above heating capacity retention fraction. Applies to all heat pump types except ground-to-air. Required if the Heating Capacity Retention Fraction is provided. - **Name:** ``heat_pump_heating_capacity_retention_temp`` - **Type:** ``Double`` @@ -2264,7 +2264,7 @@ The user-specified temperature (e.g., 17F or 5F) for the above heating capacity **Heat Pump: Cooling Capacity** -The output cooling capacity of the heat pump. If auto or not provided, the OS-HPXML default (see Air-to-Air Heat Pump, Mini-Split Heat Pump, Packaged Terminal Heat Pump, Room Air Conditioner w/ Reverse Cycle, Ground-to-Air Heat Pump) is used. +The output cooling capacity of the heat pump. If 'auto' or not provided, the OS-HPXML default (see Air-to-Air Heat Pump, Mini-Split Heat Pump, Packaged Terminal Heat Pump, Room Air Conditioner w/ Reverse Cycle, Ground-to-Air Heat Pump) is used. - **Name:** ``heat_pump_cooling_capacity`` - **Type:** ``String`` @@ -2325,7 +2325,7 @@ The cooling load served by the heat pump. **Heat Pump: Compressor Lockout Temperature** -The temperature below which the heat pump compressor is disabled. If both this and Backup Heating Lockout Temperature are provided and use the same value, it essentially defines a switchover temperature (for, e.g., a dual-fuel heat pump). Applies to all heat pump types other than ground-to-air. If auto or not provided, the OS-HPXML default (see Air-to-Air Heat Pump, Mini-Split Heat Pump, Packaged Terminal Heat Pump, Room Air Conditioner w/ Reverse Cycle) is used. +The temperature below which the heat pump compressor is disabled. If both this and Backup Heating Lockout Temperature are provided and use the same value, it essentially defines a switchover temperature (for, e.g., a dual-fuel heat pump}. Applies to all heat pump types other than ground-to-air. If 'auto' or not provided, the OS-HPXML default (see Air-to-Air Heat Pump, Mini-Split Heat Pump, Packaged Terminal Heat Pump, Room Air Conditioner w/ Reverse Cycle) is used. - **Name:** ``heat_pump_compressor_lockout_temp`` - **Type:** ``String`` @@ -2373,7 +2373,7 @@ The maximum capacity limit applied to the auto-sizing methodology if Backup Type **Heat Pump: Backup Fuel Type** -The backup fuel type of the heat pump. Only applies if Backup Type is 'integrated'. +The backup fuel type of the heat pump. Only applies if Backup Type is 'integrated'. If not provided, defaults to electricity. - **Name:** ``heat_pump_backup_fuel`` - **Type:** ``Choice`` @@ -2386,7 +2386,7 @@ The backup fuel type of the heat pump. Only applies if Backup Type is 'integrate **Heat Pump: Backup Rated Efficiency** -The backup rated efficiency value of the heat pump. Percent for electricity fuel type. AFUE otherwise. Only applies if Backup Type is 'integrated'. +The backup rated efficiency value of the heat pump. Percent for electricity fuel type. AFUE otherwise. Only applies if Backup Type is 'integrated'. If not provided, defaults to 1. - **Name:** ``heat_pump_backup_heating_efficiency`` - **Type:** ``Double`` @@ -2397,7 +2397,7 @@ The backup rated efficiency value of the heat pump. Percent for electricity fuel **Heat Pump: Backup Heating Capacity** -The backup output heating capacity of the heat pump. Only applies if Backup Type is 'integrated'. If auto or not provided, the OS-HPXML default (see Backup) is used. +The backup output heating capacity of the heat pump. Only applies if Backup Type is 'integrated'. If 'auto' or not provided, the OS-HPXML default (see Backup) is used. - **Name:** ``heat_pump_backup_heating_capacity`` - **Type:** ``String`` @@ -2408,7 +2408,7 @@ The backup output heating capacity of the heat pump. Only applies if Backup Type **Heat Pump: Backup Heating Lockout Temperature** -The temperature above which the heat pump backup system is disabled. If both this and Compressor Lockout Temperature are provided and use the same value, it essentially defines a switchover temperature (for, e.g., a dual-fuel heat pump). Applies for both Backup Type of 'integrated' and 'separate'. If auto or not provided, the OS-HPXML default (see Backup) is used. +The temperature above which the heat pump backup system is disabled. If both this and Compressor Lockout Temperature are provided and use the same value, it essentially defines a switchover temperature (for, e.g., a dual-fuel heat pump}. Applies for both Backup Type of 'integrated' and 'separate'. If 'auto' or not provided, the OS-HPXML default (see Backup) is used. - **Name:** ``heat_pump_backup_heating_lockout_temp`` - **Type:** ``String`` @@ -2419,7 +2419,7 @@ The temperature above which the heat pump backup system is disabled. If both thi **Heat Pump: Sizing Methodology** -The auto-sizing methodology to use when the heat pump capacity is not provided. If auto or not provided, the OS-HPXML default (see HPXML HVAC Sizing Control) is used. +The auto-sizing methodology to use when the heat pump capacity is not provided. If 'auto' or not provided, the OS-HPXML default (see HPXML HVAC Sizing Control) is used. - **Name:** ``heat_pump_sizing_methodology`` - **Type:** ``Choice`` @@ -2432,7 +2432,7 @@ The auto-sizing methodology to use when the heat pump capacity is not provided. **Heat Pump: Backup Sizing Methodology** -The auto-sizing methodology to use when the heat pump backup capacity is not provided. If auto or not provided, the OS-HPXML default (see HPXML HVAC Sizing Control) is used. +The auto-sizing methodology to use when the heat pump backup capacity is not provided. If 'auto' or not provided, the OS-HPXML default (see HPXML HVAC Sizing Control) is used. - **Name:** ``heat_pump_backup_sizing_methodology`` - **Type:** ``Choice`` @@ -2456,7 +2456,7 @@ Whether the heat pump is ducted or not. Only used for mini-split. It's assumed t **Heat Pump: Airflow Defect Ratio** -The airflow defect ratio, defined as (InstalledAirflow - DesignAirflow) / DesignAirflow, of the heat pump per ANSI/RESNET/ACCA Standard 310. A value of zero means no airflow defect. Applies only to air-to-air, ducted mini-split, and ground-to-air. If not provided, assumes no defect. +The airflow defect ratio, defined as (InstalledAirflow - DesignAirflow} / DesignAirflow, of the heat pump per ANSI/RESNET/ACCA Standard 310. A value of zero means no airflow defect. Applies only to air-to-air, ducted mini-split, and ground-to-air. If not provided, assumes no defect. - **Name:** ``heat_pump_airflow_defect_ratio`` - **Type:** ``Double`` @@ -2469,7 +2469,7 @@ The airflow defect ratio, defined as (InstalledAirflow - DesignAirflow) / Design **Heat Pump: Charge Defect Ratio** -The refrigerant charge defect ratio, defined as (InstalledCharge - DesignCharge) / DesignCharge, of the heat pump per ANSI/RESNET/ACCA Standard 310. A value of zero means no refrigerant charge defect. Applies to all heat pump types. If not provided, assumes no defect. +The refrigerant charge defect ratio, defined as (InstalledCharge - DesignCharge} / DesignCharge, of the heat pump per ANSI/RESNET/ACCA Standard 310. A value of zero means no refrigerant charge defect. Applies to all heat pump types. If not provided, assumes no defect. - **Name:** ``heat_pump_charge_defect_ratio`` - **Type:** ``Double`` @@ -2482,7 +2482,7 @@ The refrigerant charge defect ratio, defined as (InstalledCharge - DesignCharge) **Heat Pump: Crankcase Heater Power Watts** -Heat Pump crankcase heater power consumption in Watts. Applies only to air-to-air, mini-split, packaged terminal heat pump and room air conditioner with reverse cycle. If auto or not provided, the OS-HPXML default (see Air-to-Air Heat Pump, Mini-Split Heat Pump, Packaged Terminal Heat Pump, Room Air Conditioner w/ Reverse Cycle) is used. +Heat Pump crankcase heater power consumption in Watts. Applies only to air-to-air, mini-split, packaged terminal heat pump and room air conditioner with reverse cycle. If 'auto' or not provided, the OS-HPXML default (see Air-to-Air Heat Pump, Mini-Split Heat Pump, Packaged Terminal Heat Pump, Room Air Conditioner w/ Reverse Cycle) is used. - **Name:** ``heat_pump_crankcase_heater_watts`` - **Type:** ``String`` @@ -2493,7 +2493,7 @@ Heat Pump crankcase heater power consumption in Watts. Applies only to air-to-ai **HVAC Detailed Performance Data: Capacity Type** -Type of capacity values for detailed performance data if available. Applies only to variable-speed air-source HVAC systems (central air conditioners, mini-split air conditioners, air-to-air heat pumps, and mini-split heat pumps). +Type of capacity values for detailed performance data if available. Applies only to variable-speed air-source HVAC systems (central air conditioners, mini-split air conditioners, air-to-air heat pumps, and mini-split heat pumps}. - **Name:** ``hvac_perf_data_capacity_type`` - **Type:** ``Choice`` @@ -2506,7 +2506,7 @@ Type of capacity values for detailed performance data if available. Applies only **HVAC Detailed Performance Data: Heating Outdoor Temperatures** -Outdoor temperatures of heating detailed performance data if available. Applies only to variable-speed air-source HVAC systems (central air conditioners, mini-split air conditioners, air-to-air heat pumps, and mini-split heat pumps). One of the outdoor temperatures must be 47 F. At least two performance data points are required using a comma-separated list. +Outdoor temperatures of heating detailed performance data if available. Applies only to variable-speed air-source HVAC systems (central air conditioners, mini-split air conditioners, air-to-air heat pumps, and mini-split heat pumps}. One of the outdoor temperatures must be 47 F. At least two performance data points are required using a comma-separated list. - **Name:** ``hvac_perf_data_heating_outdoor_temperatures`` - **Type:** ``String`` @@ -2517,7 +2517,7 @@ Outdoor temperatures of heating detailed performance data if available. Applies **HVAC Detailed Performance Data: Heating Minimum Speed Capacities** -Minimum speed capacities of heating detailed performance data if available. Applies only to variable-speed air-source HVAC systems (central air conditioners, mini-split air conditioners, air-to-air heat pumps, and mini-split heat pumps). At least two performance data points are required using a comma-separated list. +Minimum speed capacities of heating detailed performance data if available. Applies only to variable-speed air-source HVAC systems (central air conditioners, mini-split air conditioners, air-to-air heat pumps, and mini-split heat pumps}. At least two performance data points are required using a comma-separated list. - **Name:** ``hvac_perf_data_heating_min_speed_capacities`` - **Type:** ``String`` @@ -2528,7 +2528,7 @@ Minimum speed capacities of heating detailed performance data if available. Appl **HVAC Detailed Performance Data: Heating Maximum Speed Capacities** -Maximum speed capacities of heating detailed performance data if available. Applies only to variable-speed air-source HVAC systems (central air conditioners, mini-split air conditioners, air-to-air heat pumps, and mini-split heat pumps). At least two performance data points are required using a comma-separated list. +Maximum speed capacities of heating detailed performance data if available. Applies only to variable-speed air-source HVAC systems (central air conditioners, mini-split air conditioners, air-to-air heat pumps, and mini-split heat pumps}. At least two performance data points are required using a comma-separated list. - **Name:** ``hvac_perf_data_heating_max_speed_capacities`` - **Type:** ``String`` @@ -2539,7 +2539,7 @@ Maximum speed capacities of heating detailed performance data if available. Appl **HVAC Detailed Performance Data: Heating Minimum Speed COPs** -Minimum speed efficiency COP values of heating detailed performance data if available. Applies only to variable-speed air-source HVAC systems (central air conditioners, mini-split air conditioners, air-to-air heat pumps, and mini-split heat pumps). At least two performance data points are required using a comma-separated list. +Minimum speed efficiency COP values of heating detailed performance data if available. Applies only to variable-speed air-source HVAC systems (central air conditioners, mini-split air conditioners, air-to-air heat pumps, and mini-split heat pumps}. At least two performance data points are required using a comma-separated list. - **Name:** ``hvac_perf_data_heating_min_speed_cops`` - **Type:** ``String`` @@ -2550,7 +2550,7 @@ Minimum speed efficiency COP values of heating detailed performance data if avai **HVAC Detailed Performance Data: Heating Maximum Speed COPs** -Maximum speed efficiency COP values of heating detailed performance data if available. Applies only to variable-speed air-source HVAC systems (central air conditioners, mini-split air conditioners, air-to-air heat pumps, and mini-split heat pumps). At least two performance data points are required using a comma-separated list. +Maximum speed efficiency COP values of heating detailed performance data if available. Applies only to variable-speed air-source HVAC systems (central air conditioners, mini-split air conditioners, air-to-air heat pumps, and mini-split heat pumps}. At least two performance data points are required using a comma-separated list. - **Name:** ``hvac_perf_data_heating_max_speed_cops`` - **Type:** ``String`` @@ -2561,7 +2561,7 @@ Maximum speed efficiency COP values of heating detailed performance data if avai **HVAC Detailed Performance Data: Cooling Outdoor Temperatures** -Outdoor temperatures of cooling detailed performance data if available. Applies only to variable-speed air-source HVAC systems (central air conditioners, mini-split air conditioners, air-to-air heat pumps, and mini-split heat pumps). One of the outdoor temperatures must be 95 F. At least two performance data points are required using a comma-separated list. +Outdoor temperatures of cooling detailed performance data if available. Applies only to variable-speed air-source HVAC systems (central air conditioners, mini-split air conditioners, air-to-air heat pumps, and mini-split heat pumps}. One of the outdoor temperatures must be 95 F. At least two performance data points are required using a comma-separated list. - **Name:** ``hvac_perf_data_cooling_outdoor_temperatures`` - **Type:** ``String`` @@ -2572,7 +2572,7 @@ Outdoor temperatures of cooling detailed performance data if available. Applies **HVAC Detailed Performance Data: Cooling Minimum Speed Capacities** -Minimum speed capacities of cooling detailed performance data if available. Applies only to variable-speed air-source HVAC systems (central air conditioners, mini-split air conditioners, air-to-air heat pumps, and mini-split heat pumps). At least two performance data points are required using a comma-separated list. +Minimum speed capacities of cooling detailed performance data if available. Applies only to variable-speed air-source HVAC systems (central air conditioners, mini-split air conditioners, air-to-air heat pumps, and mini-split heat pumps}. At least two performance data points are required using a comma-separated list. - **Name:** ``hvac_perf_data_cooling_min_speed_capacities`` - **Type:** ``String`` @@ -2583,7 +2583,7 @@ Minimum speed capacities of cooling detailed performance data if available. Appl **HVAC Detailed Performance Data: Cooling Maximum Speed Capacities** -Maximum speed capacities of cooling detailed performance data if available. Applies only to variable-speed air-source HVAC systems (central air conditioners, mini-split air conditioners, air-to-air heat pumps, and mini-split heat pumps). At least two performance data points are required using a comma-separated list. +Maximum speed capacities of cooling detailed performance data if available. Applies only to variable-speed air-source HVAC systems (central air conditioners, mini-split air conditioners, air-to-air heat pumps, and mini-split heat pumps}. At least two performance data points are required using a comma-separated list. - **Name:** ``hvac_perf_data_cooling_max_speed_capacities`` - **Type:** ``String`` @@ -2594,7 +2594,7 @@ Maximum speed capacities of cooling detailed performance data if available. Appl **HVAC Detailed Performance Data: Cooling Minimum Speed COPs** -Minimum speed efficiency COP values of cooling detailed performance data if available. Applies only to variable-speed air-source HVAC systems (central air conditioners, mini-split air conditioners, air-to-air heat pumps, and mini-split heat pumps). At least two performance data points are required using a comma-separated list. +Minimum speed efficiency COP values of cooling detailed performance data if available. Applies only to variable-speed air-source HVAC systems (central air conditioners, mini-split air conditioners, air-to-air heat pumps, and mini-split heat pumps}. At least two performance data points are required using a comma-separated list. - **Name:** ``hvac_perf_data_cooling_min_speed_cops`` - **Type:** ``String`` @@ -2605,7 +2605,7 @@ Minimum speed efficiency COP values of cooling detailed performance data if avai **HVAC Detailed Performance Data: Cooling Maximum Speed COPs** -Maximum speed efficiency COP values of cooling detailed performance data if available. Applies only to variable-speed air-source HVAC systems (central air conditioners, mini-split air conditioners, air-to-air heat pumps, and mini-split heat pumps). At least two performance data points are required using a comma-separated list. +Maximum speed efficiency COP values of cooling detailed performance data if available. Applies only to variable-speed air-source HVAC systems (central air conditioners, mini-split air conditioners, air-to-air heat pumps, and mini-split heat pumps}. At least two performance data points are required using a comma-separated list. - **Name:** ``hvac_perf_data_cooling_max_speed_cops`` - **Type:** ``String`` @@ -2616,7 +2616,7 @@ Maximum speed efficiency COP values of cooling detailed performance data if avai **Geothermal Loop: Configuration** -Configuration of the geothermal loop. Only applies to ground-to-air heat pump type. If auto or not provided, the OS-HPXML default (see Ground-to-Air Heat Pump) is used. +Configuration of the geothermal loop. Only applies to ground-to-air heat pump type. If 'auto' or not provided, the OS-HPXML default (see Ground-to-Air Heat Pump) is used. - **Name:** ``geothermal_loop_configuration`` - **Type:** ``Choice`` @@ -2629,7 +2629,7 @@ Configuration of the geothermal loop. Only applies to ground-to-air heat pump ty **Geothermal Loop: Borefield Configuration** -Borefield configuration of the geothermal loop. Only applies to ground-to-air heat pump type. If auto or not provided, the OS-HPXML default (see HPXML Geothermal Loops) is used. +Borefield configuration of the geothermal loop. Only applies to ground-to-air heat pump type. If 'auto' or not provided, the OS-HPXML default (see HPXML Geothermal Loops) is used. - **Name:** ``geothermal_loop_borefield_configuration`` - **Type:** ``Choice`` @@ -2642,7 +2642,7 @@ Borefield configuration of the geothermal loop. Only applies to ground-to-air he **Geothermal Loop: Loop Flow** -Water flow rate through the geothermal loop. Only applies to ground-to-air heat pump type. If auto or not provided, the OS-HPXML default (see HPXML Geothermal Loops) is used. +Water flow rate through the geothermal loop. Only applies to ground-to-air heat pump type. If 'auto' or not provided, the OS-HPXML default (see HPXML Geothermal Loops) is used. - **Name:** ``geothermal_loop_loop_flow`` - **Type:** ``String`` @@ -2653,7 +2653,7 @@ Water flow rate through the geothermal loop. Only applies to ground-to-air heat **Geothermal Loop: Boreholes Count** -Number of boreholes. Only applies to ground-to-air heat pump type. If auto or not provided, the OS-HPXML default (see HPXML Geothermal Loops) is used. +Number of boreholes. Only applies to ground-to-air heat pump type. If 'auto' or not provided, the OS-HPXML default (see HPXML Geothermal Loops) is used. - **Name:** ``geothermal_loop_boreholes_count`` - **Type:** ``String`` @@ -2664,7 +2664,7 @@ Number of boreholes. Only applies to ground-to-air heat pump type. If auto or no **Geothermal Loop: Boreholes Length** -Average length of each borehole (vertical). Only applies to ground-to-air heat pump type. If auto or not provided, the OS-HPXML default (see HPXML Geothermal Loops) is used. +Average length of each borehole (vertical}. Only applies to ground-to-air heat pump type. If 'auto' or not provided, the OS-HPXML default (see HPXML Geothermal Loops) is used. - **Name:** ``geothermal_loop_boreholes_length`` - **Type:** ``String`` @@ -2675,7 +2675,7 @@ Average length of each borehole (vertical). Only applies to ground-to-air heat p **Geothermal Loop: Boreholes Spacing** -Distance between bores. Only applies to ground-to-air heat pump type. If auto or not provided, the OS-HPXML default (see HPXML Geothermal Loops) is used. +Distance between bores. Only applies to ground-to-air heat pump type. If 'auto' or not provided, the OS-HPXML default (see HPXML Geothermal Loops) is used. - **Name:** ``geothermal_loop_boreholes_spacing`` - **Type:** ``String`` @@ -2686,7 +2686,7 @@ Distance between bores. Only applies to ground-to-air heat pump type. If auto or **Geothermal Loop: Boreholes Diameter** -Diameter of bores. Only applies to ground-to-air heat pump type. If auto or not provided, the OS-HPXML default (see HPXML Geothermal Loops) is used. +Diameter of bores. Only applies to ground-to-air heat pump type. If 'auto' or not provided, the OS-HPXML default (see HPXML Geothermal Loops) is used. - **Name:** ``geothermal_loop_boreholes_diameter`` - **Type:** ``String`` @@ -2697,7 +2697,7 @@ Diameter of bores. Only applies to ground-to-air heat pump type. If auto or not **Geothermal Loop: Grout Type** -Grout type of the geothermal loop. Only applies to ground-to-air heat pump type. If auto or not provided, the OS-HPXML default (see HPXML Geothermal Loops) is used. +Grout type of the geothermal loop. Only applies to ground-to-air heat pump type. If 'auto' or not provided, the OS-HPXML default (see HPXML Geothermal Loops) is used. - **Name:** ``geothermal_loop_grout_type`` - **Type:** ``Choice`` @@ -2710,7 +2710,7 @@ Grout type of the geothermal loop. Only applies to ground-to-air heat pump type. **Geothermal Loop: Pipe Type** -Pipe type of the geothermal loop. Only applies to ground-to-air heat pump type. If auto or not provided, the OS-HPXML default (see HPXML Geothermal Loops) is used. +Pipe type of the geothermal loop. Only applies to ground-to-air heat pump type. If 'auto' or not provided, the OS-HPXML default (see HPXML Geothermal Loops) is used. - **Name:** ``geothermal_loop_pipe_type`` - **Type:** ``Choice`` @@ -2723,7 +2723,7 @@ Pipe type of the geothermal loop. Only applies to ground-to-air heat pump type. **Geothermal Loop: Pipe Diameter** -Pipe diameter of the geothermal loop. Only applies to ground-to-air heat pump type. If auto or not provided, the OS-HPXML default (see HPXML Geothermal Loops) is used. +Pipe diameter of the geothermal loop. Only applies to ground-to-air heat pump type. If 'auto' or not provided, the OS-HPXML default (see HPXML Geothermal Loops) is used. - **Name:** ``geothermal_loop_pipe_diameter`` - **Type:** ``Choice`` @@ -2749,7 +2749,7 @@ The type of the second heating system. If a heat pump is specified and the backu **Heating System 2: Fuel Type** -The fuel type of the second heating system. Ignored for ElectricResistance. +The fuel type of the second heating system. Ignored for ElectricResistance. If not provided, defaults to electricity. - **Name:** ``heating_system_2_fuel`` - **Type:** ``Choice`` @@ -2762,7 +2762,7 @@ The fuel type of the second heating system. Ignored for ElectricResistance. **Heating System 2: Rated AFUE or Percent** -The rated heating efficiency value of the second heating system. +The rated heating efficiency value of the second heating system. If not provided, defaults to 1. - **Name:** ``heating_system_2_heating_efficiency`` - **Type:** ``Double`` @@ -2775,7 +2775,7 @@ The rated heating efficiency value of the second heating system. **Heating System 2: Heating Capacity** -The output heating capacity of the second heating system. If auto or not provided, the OS-HPXML default (see HPXML Heating Systems) is used. +The output heating capacity of the second heating system. If 'auto' or not provided, the OS-HPXML default (see HPXML Heating Systems) is used. - **Name:** ``heating_system_2_heating_capacity`` - **Type:** ``String`` @@ -2810,7 +2810,7 @@ The maximum capacity limit applied to the auto-sizing methodology. If not provid **Heating System 2: Fraction Heat Load Served** -The heat load served fraction of the second heating system. Ignored if this heating system serves as a backup system for a heat pump. +The heat load served fraction of the second heating system. Ignored if this heating system serves as a backup system for a heat pump. If not provided, defaults to 0.25. - **Name:** ``heating_system_2_fraction_heat_load_served`` - **Type:** ``Double`` @@ -2867,7 +2867,7 @@ Specify the constant or 24-hour comma-separated weekend cooling setpoint schedul **HVAC Control: Heating Season Period** -Enter a date range like 'Nov 1 - Jun 30'. Can also provide 'BuildingAmerica' to use automatic seasons from the Building America House Simulation Protocols. If auto or not provided, the OS-HPXML default (see HPXML HVAC Control) is used. +Enter a date range like 'Nov 1 - Jun 30'. Can also provide 'BuildingAmerica' to use automatic seasons from the Building America House Simulation Protocols. If 'auto' or not provided, the OS-HPXML default (see HPXML HVAC Control) is used. - **Name:** ``hvac_control_heating_season_period`` - **Type:** ``String`` @@ -2878,7 +2878,7 @@ Enter a date range like 'Nov 1 - Jun 30'. Can also provide 'BuildingAmerica' to **HVAC Control: Cooling Season Period** -Enter a date range like 'Jun 1 - Oct 31'. Can also provide 'BuildingAmerica' to use automatic seasons from the Building America House Simulation Protocols. If auto or not provided, the OS-HPXML default (see HPXML HVAC Control) is used. +Enter a date range like 'Jun 1 - Oct 31'. Can also provide 'BuildingAmerica' to use automatic seasons from the Building America House Simulation Protocols. If 'auto' or not provided, the OS-HPXML default (see HPXML HVAC Control) is used. - **Name:** ``hvac_control_cooling_season_period`` - **Type:** ``String`` @@ -2889,7 +2889,7 @@ Enter a date range like 'Jun 1 - Oct 31'. Can also provide 'BuildingAmerica' to **HVAC Blower: Fan Efficiency** -The blower fan efficiency at maximum fan speed. Applies only to split (not packaged) systems (i.e., applies to ducted systems as well as ductless mini-split systems). If auto or not provided, the OS-HPXML default (see HPXML Heating Systems, HPXML Cooling Systems, HPXML Heat Pumps) is used. +The blower fan efficiency at maximum fan speed. Applies only to split (not packaged} systems (i.e., applies to ducted systems as well as ductless mini-split systems}. If 'auto' or not provided, the OS-HPXML default (see HPXML Heating Systems, HPXML Cooling Systems, HPXML Heat Pumps) is used. - **Name:** ``hvac_blower_fan_watts_per_cfm`` - **Type:** ``String`` @@ -2924,7 +2924,7 @@ The leakage value to outside for the supply ducts. **Ducts: Supply Location** -The location of the supply ducts. If auto or not provided, the OS-HPXML default (see Air Distribution) is used. +The location of the supply ducts. If 'auto' or not provided, the OS-HPXML default (see Air Distribution) is used. - **Name:** ``ducts_supply_location`` - **Type:** ``Choice`` @@ -2950,7 +2950,7 @@ The nominal insulation r-value of the supply ducts excluding air films. Use 0 fo **Ducts: Supply Buried Insulation Level** -Whether the supply ducts are buried in, e.g., attic loose-fill insulation. Partially buried ducts have insulation that does not cover the top of the ducts. Fully buried ducts have insulation that just covers the top of the ducts. Deeply buried ducts have insulation that continues above the top of the ducts. If auto or not provided, the OS-HPXML default (see Air Distribution) is used. +Whether the supply ducts are buried in, e.g., attic loose-fill insulation. Partially buried ducts have insulation that does not cover the top of the ducts. Fully buried ducts have insulation that just covers the top of the ducts. Deeply buried ducts have insulation that continues above the top of the ducts. If 'auto' or not provided, the OS-HPXML default (see Air Distribution) is used. - **Name:** ``ducts_supply_buried_insulation_level`` - **Type:** ``Choice`` @@ -2963,7 +2963,7 @@ Whether the supply ducts are buried in, e.g., attic loose-fill insulation. Parti **Ducts: Supply Surface Area** -The supply ducts surface area in the given location. If auto or not provided, the OS-HPXML default (see Air Distribution) is used. +The supply ducts surface area in the given location. If 'auto' or not provided, the OS-HPXML default (see Air Distribution) is used. - **Name:** ``ducts_supply_surface_area`` - **Type:** ``String`` @@ -2974,7 +2974,7 @@ The supply ducts surface area in the given location. If auto or not provided, th **Ducts: Supply Area Fraction** -The fraction of supply ducts surface area in the given location. Only used if Surface Area is not provided. If the fraction is less than 1, the remaining duct area is assumed to be in conditioned space. If auto or not provided, the OS-HPXML default (see Air Distribution) is used. +The fraction of supply ducts surface area in the given location. Only used if Surface Area is not provided. If the fraction is less than 1, the remaining duct area is assumed to be in conditioned space. If 'auto' or not provided, the OS-HPXML default (see Air Distribution) is used. - **Name:** ``ducts_supply_surface_area_fraction`` - **Type:** ``String`` @@ -2985,7 +2985,7 @@ The fraction of supply ducts surface area in the given location. Only used if Su **Ducts: Supply Fraction Rectangular** -The fraction of supply ducts that are rectangular (as opposed to round); this affects the duct effective R-value used for modeling. If auto or not provided, the OS-HPXML default (see Air Distribution) is used. +The fraction of supply ducts that are rectangular (as opposed to round}; this affects the duct effective R-value used for modeling. If 'auto' or not provided, the OS-HPXML default (see Air Distribution) is used. - **Name:** ``ducts_supply_fraction_rectangular`` - **Type:** ``String`` @@ -3007,7 +3007,7 @@ The leakage value to outside for the return ducts. **Ducts: Return Location** -The location of the return ducts. If auto or not provided, the OS-HPXML default (see Air Distribution) is used. +The location of the return ducts. If 'auto' or not provided, the OS-HPXML default (see Air Distribution) is used. - **Name:** ``ducts_return_location`` - **Type:** ``Choice`` @@ -3033,7 +3033,7 @@ The nominal insulation r-value of the return ducts excluding air films. Use 0 fo **Ducts: Return Buried Insulation Level** -Whether the return ducts are buried in, e.g., attic loose-fill insulation. Partially buried ducts have insulation that does not cover the top of the ducts. Fully buried ducts have insulation that just covers the top of the ducts. Deeply buried ducts have insulation that continues above the top of the ducts. If auto or not provided, the OS-HPXML default (see Air Distribution) is used. +Whether the return ducts are buried in, e.g., attic loose-fill insulation. Partially buried ducts have insulation that does not cover the top of the ducts. Fully buried ducts have insulation that just covers the top of the ducts. Deeply buried ducts have insulation that continues above the top of the ducts. If 'auto' or not provided, the OS-HPXML default (see Air Distribution) is used. - **Name:** ``ducts_return_buried_insulation_level`` - **Type:** ``Choice`` @@ -3046,7 +3046,7 @@ Whether the return ducts are buried in, e.g., attic loose-fill insulation. Parti **Ducts: Return Surface Area** -The return ducts surface area in the given location. If auto or not provided, the OS-HPXML default (see Air Distribution) is used. +The return ducts surface area in the given location. If 'auto' or not provided, the OS-HPXML default (see Air Distribution) is used. - **Name:** ``ducts_return_surface_area`` - **Type:** ``String`` @@ -3057,7 +3057,7 @@ The return ducts surface area in the given location. If auto or not provided, th **Ducts: Return Area Fraction** -The fraction of return ducts surface area in the given location. Only used if Surface Area is not provided. If the fraction is less than 1, the remaining duct area is assumed to be in conditioned space. If auto or not provided, the OS-HPXML default (see Air Distribution) is used. +The fraction of return ducts surface area in the given location. Only used if Surface Area is not provided. If the fraction is less than 1, the remaining duct area is assumed to be in conditioned space. If 'auto' or not provided, the OS-HPXML default (see Air Distribution) is used. - **Name:** ``ducts_return_surface_area_fraction`` - **Type:** ``String`` @@ -3068,7 +3068,7 @@ The fraction of return ducts surface area in the given location. Only used if Su **Ducts: Number of Return Registers** -The number of return registers of the ducts. Only used to calculate default return duct surface area. If auto or not provided, the OS-HPXML default (see Air Distribution) is used. +The number of return registers of the ducts. Only used to calculate default return duct surface area. If 'auto' or not provided, the OS-HPXML default (see Air Distribution) is used. - **Name:** ``ducts_number_of_return_registers`` - **Type:** ``String`` @@ -3079,7 +3079,7 @@ The number of return registers of the ducts. Only used to calculate default retu **Ducts: Return Fraction Rectangular** -The fraction of return ducts that are rectangular (as opposed to round); this affects the duct effective R-value used for modeling. If auto or not provided, the OS-HPXML default (see Air Distribution) is used. +The fraction of return ducts that are rectangular (as opposed to round}; this affects the duct effective R-value used for modeling. If 'auto' or not provided, the OS-HPXML default (see Air Distribution) is used. - **Name:** ``ducts_return_fraction_rectangular`` - **Type:** ``String`` @@ -3103,7 +3103,7 @@ The type of the mechanical ventilation. Use 'none' if there is no mechanical ven **Mechanical Ventilation: Flow Rate** -The flow rate of the mechanical ventilation. If auto or not provided, the OS-HPXML default (see HPXML Mechanical Ventilation Fans) is used. +The flow rate of the mechanical ventilation. If 'auto' or not provided, the OS-HPXML default (see HPXML Mechanical Ventilation Fans) is used. - **Name:** ``mech_vent_flow_rate`` - **Type:** ``String`` @@ -3114,7 +3114,7 @@ The flow rate of the mechanical ventilation. If auto or not provided, the OS-HPX **Mechanical Ventilation: Hours In Operation** -The hours in operation of the mechanical ventilation. If auto or not provided, the OS-HPXML default (see HPXML Mechanical Ventilation Fans) is used. +The hours in operation of the mechanical ventilation. If 'auto' or not provided, the OS-HPXML default (see HPXML Mechanical Ventilation Fans) is used. - **Name:** ``mech_vent_hours_in_operation`` - **Type:** ``String`` @@ -3138,7 +3138,7 @@ The total recovery efficiency type of the mechanical ventilation. **Mechanical Ventilation: Total Recovery Efficiency** -The Unadjusted or Adjusted total recovery efficiency of the mechanical ventilation. Applies to energy recovery ventilator. +The Unadjusted or Adjusted total recovery efficiency of the mechanical ventilation. Applies to energy recovery ventilator. If not provided, defaults to Unadjusted total recovery efficiency of 0.48. - **Name:** ``mech_vent_total_recovery_efficiency`` - **Type:** ``Double`` @@ -3151,7 +3151,7 @@ The Unadjusted or Adjusted total recovery efficiency of the mechanical ventilati **Mechanical Ventilation: Sensible Recovery Efficiency** -The Unadjusted or Adjusted sensible recovery efficiency of the mechanical ventilation. Applies to energy recovery ventilator and heat recovery ventilator. +The Unadjusted or Adjusted sensible recovery efficiency of the mechanical ventilation. Applies to energy recovery ventilator and heat recovery ventilator. If not provided, defaults to Unadjusted sensible recovery efficiency of 0.72. - **Name:** ``mech_vent_sensible_recovery_efficiency`` - **Type:** ``Double`` @@ -3164,7 +3164,7 @@ The Unadjusted or Adjusted sensible recovery efficiency of the mechanical ventil **Mechanical Ventilation: Fan Power** -The fan power of the mechanical ventilation. If auto or not provided, the OS-HPXML default (see HPXML Mechanical Ventilation Fans) is used. +The fan power of the mechanical ventilation. If 'auto' or not provided, the OS-HPXML default (see HPXML Mechanical Ventilation Fans) is used. - **Name:** ``mech_vent_fan_power`` - **Type:** ``String`` @@ -3370,7 +3370,7 @@ The fan power of the second mechanical ventilation. **Kitchen Fans: Quantity** -The quantity of the kitchen fans. If auto or not provided, the OS-HPXML default (see HPXML Local Ventilation Fans) is used. +The quantity of the kitchen fans. If 'auto' or not provided, the OS-HPXML default (see HPXML Local Ventilation Fans) is used. - **Name:** ``kitchen_fans_quantity`` - **Type:** ``String`` @@ -3381,7 +3381,7 @@ The quantity of the kitchen fans. If auto or not provided, the OS-HPXML default **Kitchen Fans: Flow Rate** -The flow rate of the kitchen fan. If auto or not provided, the OS-HPXML default (see HPXML Local Ventilation Fans) is used. +The flow rate of the kitchen fan. If 'auto' or not provided, the OS-HPXML default (see HPXML Local Ventilation Fans) is used. - **Name:** ``kitchen_fans_flow_rate`` - **Type:** ``String`` @@ -3392,7 +3392,7 @@ The flow rate of the kitchen fan. If auto or not provided, the OS-HPXML default **Kitchen Fans: Hours In Operation** -The hours in operation of the kitchen fan. If auto or not provided, the OS-HPXML default (see HPXML Local Ventilation Fans) is used. +The hours in operation of the kitchen fan. If 'auto' or not provided, the OS-HPXML default (see HPXML Local Ventilation Fans) is used. - **Name:** ``kitchen_fans_hours_in_operation`` - **Type:** ``String`` @@ -3403,7 +3403,7 @@ The hours in operation of the kitchen fan. If auto or not provided, the OS-HPXML **Kitchen Fans: Fan Power** -The fan power of the kitchen fan. If auto or not provided, the OS-HPXML default (see HPXML Local Ventilation Fans) is used. +The fan power of the kitchen fan. If 'auto' or not provided, the OS-HPXML default (see HPXML Local Ventilation Fans) is used. - **Name:** ``kitchen_fans_power`` - **Type:** ``String`` @@ -3414,7 +3414,7 @@ The fan power of the kitchen fan. If auto or not provided, the OS-HPXML default **Kitchen Fans: Start Hour** -The start hour of the kitchen fan. If auto or not provided, the OS-HPXML default (see HPXML Local Ventilation Fans) is used. +The start hour of the kitchen fan. If 'auto' or not provided, the OS-HPXML default (see HPXML Local Ventilation Fans) is used. - **Name:** ``kitchen_fans_start_hour`` - **Type:** ``String`` @@ -3425,7 +3425,7 @@ The start hour of the kitchen fan. If auto or not provided, the OS-HPXML default **Bathroom Fans: Quantity** -The quantity of the bathroom fans. If auto or not provided, the OS-HPXML default (see HPXML Local Ventilation Fans) is used. +The quantity of the bathroom fans. If 'auto' or not provided, the OS-HPXML default (see HPXML Local Ventilation Fans) is used. - **Name:** ``bathroom_fans_quantity`` - **Type:** ``String`` @@ -3436,7 +3436,7 @@ The quantity of the bathroom fans. If auto or not provided, the OS-HPXML default **Bathroom Fans: Flow Rate** -The flow rate of the bathroom fans. If auto or not provided, the OS-HPXML default (see HPXML Local Ventilation Fans) is used. +The flow rate of the bathroom fans. If 'auto' or not provided, the OS-HPXML default (see HPXML Local Ventilation Fans) is used. - **Name:** ``bathroom_fans_flow_rate`` - **Type:** ``String`` @@ -3447,7 +3447,7 @@ The flow rate of the bathroom fans. If auto or not provided, the OS-HPXML defaul **Bathroom Fans: Hours In Operation** -The hours in operation of the bathroom fans. If auto or not provided, the OS-HPXML default (see HPXML Local Ventilation Fans) is used. +The hours in operation of the bathroom fans. If 'auto' or not provided, the OS-HPXML default (see HPXML Local Ventilation Fans) is used. - **Name:** ``bathroom_fans_hours_in_operation`` - **Type:** ``String`` @@ -3458,7 +3458,7 @@ The hours in operation of the bathroom fans. If auto or not provided, the OS-HPX **Bathroom Fans: Fan Power** -The fan power of the bathroom fans. If auto or not provided, the OS-HPXML default (see HPXML Local Ventilation Fans) is used. +The fan power of the bathroom fans. If 'auto' or not provided, the OS-HPXML default (see HPXML Local Ventilation Fans) is used. - **Name:** ``bathroom_fans_power`` - **Type:** ``String`` @@ -3469,7 +3469,7 @@ The fan power of the bathroom fans. If auto or not provided, the OS-HPXML defaul **Bathroom Fans: Start Hour** -The start hour of the bathroom fans. If auto or not provided, the OS-HPXML default (see HPXML Local Ventilation Fans) is used. +The start hour of the bathroom fans. If 'auto' or not provided, the OS-HPXML default (see HPXML Local Ventilation Fans) is used. - **Name:** ``bathroom_fans_start_hour`` - **Type:** ``String`` @@ -3491,7 +3491,7 @@ Whether there is a whole house fan. **Whole House Fan: Flow Rate** -The flow rate of the whole house fan. If auto or not provided, the OS-HPXML default (see HPXML Whole House Fans) is used. +The flow rate of the whole house fan. If 'auto' or not provided, the OS-HPXML default (see HPXML Whole House Fans) is used. - **Name:** ``whole_house_fan_flow_rate`` - **Type:** ``String`` @@ -3502,7 +3502,7 @@ The flow rate of the whole house fan. If auto or not provided, the OS-HPXML defa **Whole House Fan: Fan Power** -The fan power of the whole house fan. If auto or not provided, the OS-HPXML default (see HPXML Whole House Fans) is used. +The fan power of the whole house fan. If 'auto' or not provided, the OS-HPXML default (see HPXML Whole House Fans) is used. - **Name:** ``whole_house_fan_power`` - **Type:** ``String`` @@ -3539,7 +3539,7 @@ The fuel type of water heater. Ignored for heat pump water heater. **Water Heater: Location** -The location of water heater. If auto or not provided, the OS-HPXML default (see HPXML Water Heating Systems) is used. +The location of water heater. If 'auto' or not provided, the OS-HPXML default (see HPXML Water Heating Systems) is used. - **Name:** ``water_heater_location`` - **Type:** ``Choice`` @@ -3552,7 +3552,7 @@ The location of water heater. If auto or not provided, the OS-HPXML default (see **Water Heater: Tank Volume** -Nominal volume of water heater tank. If auto or not provided, the OS-HPXML default (see Conventional Storage, Heat Pump, Combi Boiler w/ Storage) is used. +Nominal volume of water heater tank. If 'auto' or not provided, the OS-HPXML default (see Conventional Storage, Heat Pump, Combi Boiler w/ Storage) is used. - **Name:** ``water_heater_tank_volume`` - **Type:** ``String`` @@ -3587,7 +3587,7 @@ Rated Energy Factor or Uniform Energy Factor. Does not apply to space-heating bo **Water Heater: Usage Bin** -The usage of the water heater. Only applies if Efficiency Type is UniformEnergyFactor and Type is not instantaneous water heater. Does not apply to space-heating boilers. If auto or not provided, the OS-HPXML default (see Conventional Storage, Heat Pump) is used. +The usage of the water heater. Only applies if Efficiency Type is UniformEnergyFactor and Type is not instantaneous water heater. Does not apply to space-heating boilers. If 'auto' or not provided, the OS-HPXML default (see Conventional Storage, Heat Pump) is used. - **Name:** ``water_heater_usage_bin`` - **Type:** ``Choice`` @@ -3600,7 +3600,7 @@ The usage of the water heater. Only applies if Efficiency Type is UniformEnergyF **Water Heater: Recovery Efficiency** -Ratio of energy delivered to water heater to the energy content of the fuel consumed by the water heater. Only used for non-electric storage water heaters. If auto or not provided, the OS-HPXML default (see Conventional Storage) is used. +Ratio of energy delivered to water heater to the energy content of the fuel consumed by the water heater. Only used for non-electric storage water heaters. If 'auto' or not provided, the OS-HPXML default (see Conventional Storage) is used. - **Name:** ``water_heater_recovery_efficiency`` - **Type:** ``String`` @@ -3611,7 +3611,7 @@ Ratio of energy delivered to water heater to the energy content of the fuel cons **Water Heater: Heating Capacity** -Heating capacity. Only applies to storage water heater and heat pump water heater (compressor). If auto or not provided, the OS-HPXML default (see Conventional Storage, Heat Pump) is used. +Heating capacity. Only applies to storage water heater and heat pump water heater (compressor}. If 'auto' or not provided, the OS-HPXML default (see Conventional Storage, Heat Pump) is used. - **Name:** ``water_heater_heating_capacity`` - **Type:** ``String`` @@ -3622,7 +3622,7 @@ Heating capacity. Only applies to storage water heater and heat pump water heate **Water Heater: Backup Heating Capacity** -Backup heating capacity for a heat pump water heater. If auto or not provided, the OS-HPXML default (see Heat Pump) is used. +Backup heating capacity for a heat pump water heater. If 'auto' or not provided, the OS-HPXML default (see Heat Pump) is used. - **Name:** ``water_heater_backup_heating_capacity`` - **Type:** ``String`` @@ -3633,7 +3633,7 @@ Backup heating capacity for a heat pump water heater. If auto or not provided, t **Water Heater: Standby Loss** -The standby loss of water heater. Only applies to space-heating boilers. If auto or not provided, the OS-HPXML default (see Combi Boiler w/ Storage) is used. +The standby loss of water heater. Only applies to space-heating boilers. If 'auto' or not provided, the OS-HPXML default (see Combi Boiler w/ Storage) is used. - **Name:** ``water_heater_standby_loss`` - **Type:** ``String`` @@ -3657,7 +3657,7 @@ The jacket R-value of water heater. Doesn't apply to instantaneous water heater **Water Heater: Setpoint Temperature** -The setpoint temperature of water heater. If auto or not provided, the OS-HPXML default (see HPXML Water Heating Systems) is used. +The setpoint temperature of water heater. If 'auto' or not provided, the OS-HPXML default (see HPXML Water Heating Systems) is used. - **Name:** ``water_heater_setpoint_temperature`` - **Type:** ``String`` @@ -3668,7 +3668,7 @@ The setpoint temperature of water heater. If auto or not provided, the OS-HPXML **Water Heater: Number of Bedrooms Served** -Number of bedrooms served (directly or indirectly) by the water heater. Only needed if single-family attached or apartment unit and it is a shared water heater serving multiple dwelling units. Used to apportion water heater tank losses to the unit. +Number of bedrooms served (directly or indirectly} by the water heater. Only needed if single-family attached or apartment unit and it is a shared water heater serving multiple dwelling units. Used to apportion water heater tank losses to the unit. - **Name:** ``water_heater_num_bedrooms_served`` - **Type:** ``Integer`` @@ -3692,7 +3692,7 @@ Requires that the dwelling unit has a air-to-air, mini-split, or ground-to-air h **Water Heater: Tank Type** -Type of tank model to use. The 'stratified' tank generally provide more accurate results, but may significantly increase run time. Applies only to storage water heater. If auto or not provided, the OS-HPXML default (see Conventional Storage) is used. +Type of tank model to use. The 'stratified' tank generally provide more accurate results, but may significantly increase run time. Applies only to storage water heater. If 'auto' or not provided, the OS-HPXML default (see Conventional Storage) is used. - **Name:** ``water_heater_tank_model_type`` - **Type:** ``Choice`` @@ -3705,7 +3705,7 @@ Type of tank model to use. The 'stratified' tank generally provide more accurate **Water Heater: Operating Mode** -The water heater operating mode. The 'heat pump only' option only uses the heat pump, while 'hybrid/auto' allows the backup electric resistance to come on in high demand situations. This is ignored if a scheduled operating mode type is selected. Applies only to heat pump water heater. If auto or not provided, the OS-HPXML default (see Heat Pump) is used. +The water heater operating mode. The 'heat pump only' option only uses the heat pump, while 'hybrid/auto' allows the backup electric resistance to come on in high demand situations. This is ignored if a scheduled operating mode type is selected. Applies only to heat pump water heater. If 'auto' or not provided, the OS-HPXML default (see Heat Pump) is used. - **Name:** ``water_heater_operating_mode`` - **Type:** ``Choice`` @@ -3731,7 +3731,7 @@ The type of the hot water distribution system. **Hot Water Distribution: Standard Piping Length** -If the distribution system is Standard, the length of the piping. If auto or not provided, the OS-HPXML default (see Standard) is used. +If the distribution system is Standard, the length of the piping. If 'auto' or not provided, the OS-HPXML default (see Standard) is used. - **Name:** ``hot_water_distribution_standard_piping_length`` - **Type:** ``String`` @@ -3755,7 +3755,7 @@ If the distribution system is Recirculation, the type of hot water recirculation **Hot Water Distribution: Recirculation Piping Length** -If the distribution system is Recirculation, the length of the recirculation piping. If auto or not provided, the OS-HPXML default (see Recirculation (In-Unit)) is used. +If the distribution system is Recirculation, the length of the recirculation piping. If 'auto' or not provided, the OS-HPXML default (see Recirculation (In-Unit}) is used. - **Name:** ``hot_water_distribution_recirc_piping_length`` - **Type:** ``String`` @@ -3766,7 +3766,7 @@ If the distribution system is Recirculation, the length of the recirculation pip **Hot Water Distribution: Recirculation Branch Piping Length** -If the distribution system is Recirculation, the length of the recirculation branch piping. If auto or not provided, the OS-HPXML default (see Recirculation (In-Unit)) is used. +If the distribution system is Recirculation, the length of the recirculation branch piping. If 'auto' or not provided, the OS-HPXML default (see Recirculation (In-Unit}) is used. - **Name:** ``hot_water_distribution_recirc_branch_piping_length`` - **Type:** ``String`` @@ -3777,7 +3777,7 @@ If the distribution system is Recirculation, the length of the recirculation bra **Hot Water Distribution: Recirculation Pump Power** -If the distribution system is Recirculation, the recirculation pump power. If auto or not provided, the OS-HPXML default (see Recirculation (In-Unit)) is used. +If the distribution system is Recirculation, the recirculation pump power. If 'auto' or not provided, the OS-HPXML default (see Recirculation (In-Unit}) is used. - **Name:** ``hot_water_distribution_recirc_pump_power`` - **Type:** ``String`` @@ -3788,7 +3788,7 @@ If the distribution system is Recirculation, the recirculation pump power. If au **Hot Water Distribution: Pipe Insulation Nominal R-Value** -Nominal R-value of the pipe insulation. If auto or not provided, the OS-HPXML default (see HPXML Hot Water Distribution) is used. +Nominal R-value of the pipe insulation. If 'auto' or not provided, the OS-HPXML default (see HPXML Hot Water Distribution) is used. - **Name:** ``hot_water_distribution_pipe_r`` - **Type:** ``String`` @@ -3858,7 +3858,7 @@ Whether the sink fixture is low flow. If not provided, defaults to false. **Hot Water Fixtures: Usage Multiplier** -Multiplier on the hot water usage that can reflect, e.g., high/low usage occupants. If auto or not provided, the OS-HPXML default (see HPXML Water Fixtures) is used. +Multiplier on the hot water usage that can reflect, e.g., high/low usage occupants. If 'auto' or not provided, the OS-HPXML default (see HPXML Water Fixtures) is used. - **Name:** ``water_fixtures_usage_multiplier`` - **Type:** ``String`` @@ -3869,7 +3869,7 @@ Multiplier on the hot water usage that can reflect, e.g., high/low usage occupan **General Water Use: Usage Multiplier** -Multiplier on internal gains from general water use (floor mopping, shower evaporation, water films on showers, tubs & sinks surfaces, plant watering, etc.) that can reflect, e.g., high/low usage occupants. If auto or not provided, the OS-HPXML default (see HPXML Building Occupancy) is used. +Multiplier on internal gains from general water use (floor mopping, shower evaporation, water films on showers, tubs & sinks surfaces, plant watering, etc.} that can reflect, e.g., high/low usage occupants. If 'auto' or not provided, the OS-HPXML default (see HPXML Building Occupancy) is used. - **Name:** ``general_water_use_usage_multiplier`` - **Type:** ``String`` @@ -3932,7 +3932,7 @@ The collector type of the solar thermal system. **Solar Thermal: Collector Azimuth** -The collector azimuth of the solar thermal system. Azimuth is measured clockwise from north (e.g., North=0, East=90, South=180, West=270). +The collector azimuth of the solar thermal system. Azimuth is measured clockwise from north (e.g., North=0, East=90, South=180, West=270}. - **Name:** ``solar_thermal_collector_azimuth`` - **Type:** ``Double`` @@ -3982,7 +3982,7 @@ The collector rated thermal losses of the solar thermal system. **Solar Thermal: Storage Volume** -The storage volume of the solar thermal system. If auto or not provided, the OS-HPXML default (see Detailed Inputs) is used. +The storage volume of the solar thermal system. If 'auto' or not provided, the OS-HPXML default (see Detailed Inputs) is used. - **Name:** ``solar_thermal_storage_volume`` - **Type:** ``String`` @@ -4017,7 +4017,7 @@ Whether there is a PV system present. If not provided, defaults to false. **PV System: Module Type** -Module type of the PV system. If auto or not provided, the OS-HPXML default (see HPXML Photovoltaics) is used. +Module type of the PV system. If 'auto' or not provided, the OS-HPXML default (see HPXML Photovoltaics) is used. - **Name:** ``pv_system_module_type`` - **Type:** ``Choice`` @@ -4030,7 +4030,7 @@ Module type of the PV system. If auto or not provided, the OS-HPXML default (see **PV System: Location** -Location of the PV system. If auto or not provided, the OS-HPXML default (see HPXML Photovoltaics) is used. +Location of the PV system. If 'auto' or not provided, the OS-HPXML default (see HPXML Photovoltaics) is used. - **Name:** ``pv_system_location`` - **Type:** ``Choice`` @@ -4043,7 +4043,7 @@ Location of the PV system. If auto or not provided, the OS-HPXML default (see HPXML Photovoltaics) is used. +Type of tracking for the PV system. If 'auto' or not provided, the OS-HPXML default (see HPXML Photovoltaics) is used. - **Name:** ``pv_system_tracking`` - **Type:** ``Choice`` @@ -4056,7 +4056,7 @@ Type of tracking for the PV system. If auto or not provided, the OS-HPXML defaul **PV System: Array Azimuth** -Array azimuth of the PV system. Azimuth is measured clockwise from north (e.g., North=0, East=90, South=180, West=270). +Array azimuth of the PV system. Azimuth is measured clockwise from north (e.g., North=0, East=90, South=180, West=270}. - **Name:** ``pv_system_array_azimuth`` - **Type:** ``Double`` @@ -4093,7 +4093,7 @@ Maximum power output of the PV system. For a shared system, this is the total bu **PV System: Inverter Efficiency** -Inverter efficiency of the PV system. If there are two PV systems, this will apply to both. If auto or not provided, the OS-HPXML default (see HPXML Photovoltaics) is used. +Inverter efficiency of the PV system. If there are two PV systems, this will apply to both. If 'auto' or not provided, the OS-HPXML default (see HPXML Photovoltaics) is used. - **Name:** ``pv_system_inverter_efficiency`` - **Type:** ``String`` @@ -4104,7 +4104,7 @@ Inverter efficiency of the PV system. If there are two PV systems, this will app **PV System: System Losses Fraction** -System losses fraction of the PV system. If there are two PV systems, this will apply to both. If auto or not provided, the OS-HPXML default (see HPXML Photovoltaics) is used. +System losses fraction of the PV system. If there are two PV systems, this will apply to both. If 'auto' or not provided, the OS-HPXML default (see HPXML Photovoltaics) is used. - **Name:** ``pv_system_system_losses_fraction`` - **Type:** ``String`` @@ -4139,7 +4139,7 @@ Whether there is a second PV system present. If not provided, defaults to false. **PV System 2: Module Type** -Module type of the second PV system. If auto or not provided, the OS-HPXML default (see HPXML Photovoltaics) is used. +Module type of the second PV system. If 'auto' or not provided, the OS-HPXML default (see HPXML Photovoltaics) is used. - **Name:** ``pv_system_2_module_type`` - **Type:** ``Choice`` @@ -4152,7 +4152,7 @@ Module type of the second PV system. If auto or not provided, the OS-HPXML defau **PV System 2: Location** -Location of the second PV system. If auto or not provided, the OS-HPXML default (see HPXML Photovoltaics) is used. +Location of the second PV system. If 'auto' or not provided, the OS-HPXML default (see HPXML Photovoltaics) is used. - **Name:** ``pv_system_2_location`` - **Type:** ``Choice`` @@ -4165,7 +4165,7 @@ Location of the second PV system. If auto or not provided, the OS-HPXML default **PV System 2: Tracking** -Type of tracking for the second PV system. If auto or not provided, the OS-HPXML default (see HPXML Photovoltaics) is used. +Type of tracking for the second PV system. If 'auto' or not provided, the OS-HPXML default (see HPXML Photovoltaics) is used. - **Name:** ``pv_system_2_tracking`` - **Type:** ``Choice`` @@ -4178,7 +4178,7 @@ Type of tracking for the second PV system. If auto or not provided, the OS-HPXML **PV System 2: Array Azimuth** -Array azimuth of the second PV system. Azimuth is measured clockwise from north (e.g., North=0, East=90, South=180, West=270). +Array azimuth of the second PV system. Azimuth is measured clockwise from north (e.g., North=0, East=90, South=180, West=270}. - **Name:** ``pv_system_2_array_azimuth`` - **Type:** ``Double`` @@ -4226,7 +4226,7 @@ Whether there is a lithium ion battery present. If not provided, defaults to fal **Battery: Location** -The space type for the lithium ion battery location. If auto or not provided, the OS-HPXML default (see HPXML Batteries) is used. +The space type for the lithium ion battery location. If 'auto' or not provided, the OS-HPXML default (see HPXML Batteries) is used. - **Name:** ``battery_location`` - **Type:** ``Choice`` @@ -4239,7 +4239,7 @@ The space type for the lithium ion battery location. If auto or not provided, th **Battery: Rated Power Output** -The rated power output of the lithium ion battery. If auto or not provided, the OS-HPXML default (see HPXML Batteries) is used. +The rated power output of the lithium ion battery. If 'auto' or not provided, the OS-HPXML default (see HPXML Batteries) is used. - **Name:** ``battery_power`` - **Type:** ``String`` @@ -4250,7 +4250,7 @@ The rated power output of the lithium ion battery. If auto or not provided, the **Battery: Nominal Capacity** -The nominal capacity of the lithium ion battery. If auto or not provided, the OS-HPXML default (see HPXML Batteries) is used. +The nominal capacity of the lithium ion battery. If 'auto' or not provided, the OS-HPXML default (see HPXML Batteries) is used. - **Name:** ``battery_capacity`` - **Type:** ``String`` @@ -4261,7 +4261,7 @@ The nominal capacity of the lithium ion battery. If auto or not provided, the OS **Battery: Usable Capacity** -The usable capacity of the lithium ion battery. If auto or not provided, the OS-HPXML default (see HPXML Batteries) is used. +The usable capacity of the lithium ion battery. If 'auto' or not provided, the OS-HPXML default (see HPXML Batteries) is used. - **Name:** ``battery_usable_capacity`` - **Type:** ``String`` @@ -4272,7 +4272,7 @@ The usable capacity of the lithium ion battery. If auto or not provided, the OS- **Battery: Round Trip Efficiency** -The round trip efficiency of the lithium ion battery. If auto or not provided, the OS-HPXML default (see HPXML Batteries) is used. +The round trip efficiency of the lithium ion battery. If 'auto' or not provided, the OS-HPXML default (see HPXML Batteries) is used. - **Name:** ``battery_round_trip_efficiency`` - **Type:** ``String`` @@ -4307,7 +4307,7 @@ Whether there is lighting energy use. **Lighting: Interior Fraction CFL** -Fraction of all lamps (interior) that are compact fluorescent. Lighting not specified as CFL, LFL, or LED is assumed to be incandescent. +Fraction of all lamps (interior} that are compact fluorescent. Lighting not specified as CFL, LFL, or LED is assumed to be incandescent. If not provided, defaults to 0.1. - **Name:** ``lighting_interior_fraction_cfl`` - **Type:** ``Double`` @@ -4318,7 +4318,7 @@ Fraction of all lamps (interior) that are compact fluorescent. Lighting not spec **Lighting: Interior Fraction LFL** -Fraction of all lamps (interior) that are linear fluorescent. Lighting not specified as CFL, LFL, or LED is assumed to be incandescent. +Fraction of all lamps (interior} that are linear fluorescent. Lighting not specified as CFL, LFL, or LED is assumed to be incandescent. If not provided, defaults to 0.0. - **Name:** ``lighting_interior_fraction_lfl`` - **Type:** ``Double`` @@ -4329,7 +4329,7 @@ Fraction of all lamps (interior) that are linear fluorescent. Lighting not speci **Lighting: Interior Fraction LED** -Fraction of all lamps (interior) that are light emitting diodes. Lighting not specified as CFL, LFL, or LED is assumed to be incandescent. +Fraction of all lamps (interior} that are light emitting diodes. Lighting not specified as CFL, LFL, or LED is assumed to be incandescent. If not provided, defaults to 0.0. - **Name:** ``lighting_interior_fraction_led`` - **Type:** ``Double`` @@ -4340,7 +4340,7 @@ Fraction of all lamps (interior) that are light emitting diodes. Lighting not sp **Lighting: Interior Usage Multiplier** -Multiplier on the lighting energy usage (interior) that can reflect, e.g., high/low usage occupants. If auto or not provided, the OS-HPXML default (see HPXML Lighting) is used. +Multiplier on the lighting energy usage (interior} that can reflect, e.g., high/low usage occupants. If 'auto' or not provided, the OS-HPXML default (see HPXML Lighting) is used. - **Name:** ``lighting_interior_usage_multiplier`` - **Type:** ``String`` @@ -4351,7 +4351,7 @@ Multiplier on the lighting energy usage (interior) that can reflect, e.g., high/ **Lighting: Exterior Fraction CFL** -Fraction of all lamps (exterior) that are compact fluorescent. Lighting not specified as CFL, LFL, or LED is assumed to be incandescent. +Fraction of all lamps (exterior} that are compact fluorescent. Lighting not specified as CFL, LFL, or LED is assumed to be incandescent. If not provided, defaults to 0.0. - **Name:** ``lighting_exterior_fraction_cfl`` - **Type:** ``Double`` @@ -4362,7 +4362,7 @@ Fraction of all lamps (exterior) that are compact fluorescent. Lighting not spec **Lighting: Exterior Fraction LFL** -Fraction of all lamps (exterior) that are linear fluorescent. Lighting not specified as CFL, LFL, or LED is assumed to be incandescent. +Fraction of all lamps (exterior} that are linear fluorescent. Lighting not specified as CFL, LFL, or LED is assumed to be incandescent. If not provided, defaults to 0.0. - **Name:** ``lighting_exterior_fraction_lfl`` - **Type:** ``Double`` @@ -4373,7 +4373,7 @@ Fraction of all lamps (exterior) that are linear fluorescent. Lighting not speci **Lighting: Exterior Fraction LED** -Fraction of all lamps (exterior) that are light emitting diodes. Lighting not specified as CFL, LFL, or LED is assumed to be incandescent. +Fraction of all lamps (exterior} that are light emitting diodes. Lighting not specified as CFL, LFL, or LED is assumed to be incandescent. If not provided, defaults to 0.0. - **Name:** ``lighting_exterior_fraction_led`` - **Type:** ``Double`` @@ -4384,7 +4384,7 @@ Fraction of all lamps (exterior) that are light emitting diodes. Lighting not sp **Lighting: Exterior Usage Multiplier** -Multiplier on the lighting energy usage (exterior) that can reflect, e.g., high/low usage occupants. If auto or not provided, the OS-HPXML default (see HPXML Lighting) is used. +Multiplier on the lighting energy usage (exterior} that can reflect, e.g., high/low usage occupants. If 'auto' or not provided, the OS-HPXML default (see HPXML Lighting) is used. - **Name:** ``lighting_exterior_usage_multiplier`` - **Type:** ``String`` @@ -4395,7 +4395,7 @@ Multiplier on the lighting energy usage (exterior) that can reflect, e.g., high/ **Lighting: Garage Fraction CFL** -Fraction of all lamps (garage) that are compact fluorescent. Lighting not specified as CFL, LFL, or LED is assumed to be incandescent. +Fraction of all lamps (garage} that are compact fluorescent. Lighting not specified as CFL, LFL, or LED is assumed to be incandescent. If not provided, defaults to 0.0. - **Name:** ``lighting_garage_fraction_cfl`` - **Type:** ``Double`` @@ -4406,7 +4406,7 @@ Fraction of all lamps (garage) that are compact fluorescent. Lighting not specif **Lighting: Garage Fraction LFL** -Fraction of all lamps (garage) that are linear fluorescent. Lighting not specified as CFL, LFL, or LED is assumed to be incandescent. +Fraction of all lamps (garage} that are linear fluorescent. Lighting not specified as CFL, LFL, or LED is assumed to be incandescent. If not provided, defaults to 0.0. - **Name:** ``lighting_garage_fraction_lfl`` - **Type:** ``Double`` @@ -4417,7 +4417,7 @@ Fraction of all lamps (garage) that are linear fluorescent. Lighting not specifi **Lighting: Garage Fraction LED** -Fraction of all lamps (garage) that are light emitting diodes. Lighting not specified as CFL, LFL, or LED is assumed to be incandescent. +Fraction of all lamps (garage} that are light emitting diodes. Lighting not specified as CFL, LFL, or LED is assumed to be incandescent. If not provided, defaults to 0.0. - **Name:** ``lighting_garage_fraction_led`` - **Type:** ``Double`` @@ -4428,7 +4428,7 @@ Fraction of all lamps (garage) that are light emitting diodes. Lighting not spec **Lighting: Garage Usage Multiplier** -Multiplier on the lighting energy usage (garage) that can reflect, e.g., high/low usage occupants. If auto or not provided, the OS-HPXML default (see HPXML Lighting) is used. +Multiplier on the lighting energy usage (garage} that can reflect, e.g., high/low usage occupants. If 'auto' or not provided, the OS-HPXML default (see HPXML Lighting) is used. - **Name:** ``lighting_garage_usage_multiplier`` - **Type:** ``String`` @@ -4450,7 +4450,7 @@ Whether there is holiday lighting. If not provided, defaults to false. **Holiday Lighting: Daily Consumption** -The daily energy consumption for holiday lighting (exterior). If auto or not provided, the OS-HPXML default (see HPXML Lighting) is used. +The daily energy consumption for holiday lighting (exterior}. If 'auto' or not provided, the OS-HPXML default (see HPXML Lighting) is used. - **Name:** ``holiday_lighting_daily_kwh`` - **Type:** ``String`` @@ -4461,7 +4461,7 @@ The daily energy consumption for holiday lighting (exterior). If auto or not pro **Holiday Lighting: Period** -Enter a date range like 'Nov 25 - Jan 5'. If auto or not provided, the OS-HPXML default (see HPXML Lighting) is used. +Enter a date range like 'Nov 25 - Jan 5'. If 'auto' or not provided, the OS-HPXML default (see HPXML Lighting) is used. - **Name:** ``holiday_lighting_period`` - **Type:** ``String`` @@ -4511,7 +4511,7 @@ The efficiency of the dehumidifier. **Dehumidifier: Capacity** -The capacity (water removal rate) of the dehumidifier. +The capacity (water removal rate} of the dehumidifier. - **Name:** ``dehumidifier_capacity`` - **Type:** ``Double`` @@ -4561,7 +4561,7 @@ Whether there is a clothes washer present. **Clothes Washer: Location** -The space type for the clothes washer location. If auto or not provided, the OS-HPXML default (see HPXML Clothes Washer) is used. +The space type for the clothes washer location. If 'auto' or not provided, the OS-HPXML default (see HPXML Clothes Washer) is used. - **Name:** ``clothes_washer_location`` - **Type:** ``Choice`` @@ -4587,7 +4587,7 @@ The efficiency type of the clothes washer. **Clothes Washer: Efficiency** -The efficiency of the clothes washer. If auto or not provided, the OS-HPXML default (see HPXML Clothes Washer) is used. +The efficiency of the clothes washer. If 'auto' or not provided, the OS-HPXML default (see HPXML Clothes Washer) is used. - **Name:** ``clothes_washer_efficiency`` - **Type:** ``String`` @@ -4598,7 +4598,7 @@ The efficiency of the clothes washer. If auto or not provided, the OS-HPXML defa **Clothes Washer: Rated Annual Consumption** -The annual energy consumed by the clothes washer, as rated, obtained from the EnergyGuide label. This includes both the appliance electricity consumption and the energy required for water heating. If auto or not provided, the OS-HPXML default (see HPXML Clothes Washer) is used. +The annual energy consumed by the clothes washer, as rated, obtained from the EnergyGuide label. This includes both the appliance electricity consumption and the energy required for water heating. If 'auto' or not provided, the OS-HPXML default (see HPXML Clothes Washer) is used. - **Name:** ``clothes_washer_rated_annual_kwh`` - **Type:** ``String`` @@ -4609,7 +4609,7 @@ The annual energy consumed by the clothes washer, as rated, obtained from the En **Clothes Washer: Label Electric Rate** -The annual energy consumed by the clothes washer, as rated, obtained from the EnergyGuide label. This includes both the appliance electricity consumption and the energy required for water heating. If auto or not provided, the OS-HPXML default (see HPXML Clothes Washer) is used. +The annual energy consumed by the clothes washer, as rated, obtained from the EnergyGuide label. This includes both the appliance electricity consumption and the energy required for water heating. If 'auto' or not provided, the OS-HPXML default (see HPXML Clothes Washer) is used. - **Name:** ``clothes_washer_label_electric_rate`` - **Type:** ``String`` @@ -4620,7 +4620,7 @@ The annual energy consumed by the clothes washer, as rated, obtained from the En **Clothes Washer: Label Gas Rate** -The annual energy consumed by the clothes washer, as rated, obtained from the EnergyGuide label. This includes both the appliance electricity consumption and the energy required for water heating. If auto or not provided, the OS-HPXML default (see HPXML Clothes Washer) is used. +The annual energy consumed by the clothes washer, as rated, obtained from the EnergyGuide label. This includes both the appliance electricity consumption and the energy required for water heating. If 'auto' or not provided, the OS-HPXML default (see HPXML Clothes Washer) is used. - **Name:** ``clothes_washer_label_gas_rate`` - **Type:** ``String`` @@ -4631,7 +4631,7 @@ The annual energy consumed by the clothes washer, as rated, obtained from the En **Clothes Washer: Label Annual Cost with Gas DHW** -The annual cost of using the system under test conditions. Input is obtained from the EnergyGuide label. If auto or not provided, the OS-HPXML default (see HPXML Clothes Washer) is used. +The annual cost of using the system under test conditions. Input is obtained from the EnergyGuide label. If 'auto' or not provided, the OS-HPXML default (see HPXML Clothes Washer) is used. - **Name:** ``clothes_washer_label_annual_gas_cost`` - **Type:** ``String`` @@ -4642,7 +4642,7 @@ The annual cost of using the system under test conditions. Input is obtained fro **Clothes Washer: Label Usage** -The clothes washer loads per week. If auto or not provided, the OS-HPXML default (see HPXML Clothes Washer) is used. +The clothes washer loads per week. If 'auto' or not provided, the OS-HPXML default (see HPXML Clothes Washer) is used. - **Name:** ``clothes_washer_label_usage`` - **Type:** ``String`` @@ -4653,7 +4653,7 @@ The clothes washer loads per week. If auto or not provided, the OS-HPXML default **Clothes Washer: Drum Volume** -Volume of the washer drum. Obtained from the EnergyStar website or the manufacturer's literature. If auto or not provided, the OS-HPXML default (see HPXML Clothes Washer) is used. +Volume of the washer drum. Obtained from the EnergyStar website or the manufacturer's literature. If 'auto' or not provided, the OS-HPXML default (see HPXML Clothes Washer) is used. - **Name:** ``clothes_washer_capacity`` - **Type:** ``String`` @@ -4664,7 +4664,7 @@ Volume of the washer drum. Obtained from the EnergyStar website or the manufactu **Clothes Washer: Usage Multiplier** -Multiplier on the clothes washer energy and hot water usage that can reflect, e.g., high/low usage occupants. If auto or not provided, the OS-HPXML default (see HPXML Clothes Washer) is used. +Multiplier on the clothes washer energy and hot water usage that can reflect, e.g., high/low usage occupants. If 'auto' or not provided, the OS-HPXML default (see HPXML Clothes Washer) is used. - **Name:** ``clothes_washer_usage_multiplier`` - **Type:** ``String`` @@ -4686,7 +4686,7 @@ Whether there is a clothes dryer present. **Clothes Dryer: Location** -The space type for the clothes dryer location. If auto or not provided, the OS-HPXML default (see HPXML Clothes Dryer) is used. +The space type for the clothes dryer location. If 'auto' or not provided, the OS-HPXML default (see HPXML Clothes Dryer) is used. - **Name:** ``clothes_dryer_location`` - **Type:** ``Choice`` @@ -4725,7 +4725,7 @@ The efficiency type of the clothes dryer. **Clothes Dryer: Efficiency** -The efficiency of the clothes dryer. If auto or not provided, the OS-HPXML default (see HPXML Clothes Dryer) is used. +The efficiency of the clothes dryer. If 'auto' or not provided, the OS-HPXML default (see HPXML Clothes Dryer) is used. - **Name:** ``clothes_dryer_efficiency`` - **Type:** ``String`` @@ -4736,7 +4736,7 @@ The efficiency of the clothes dryer. If auto or not provided, the OS-HPXML defau **Clothes Dryer: Vented Flow Rate** -The exhaust flow rate of the vented clothes dryer. If auto or not provided, the OS-HPXML default (see HPXML Clothes Dryer) is used. +The exhaust flow rate of the vented clothes dryer. If 'auto' or not provided, the OS-HPXML default (see HPXML Clothes Dryer) is used. - **Name:** ``clothes_dryer_vented_flow_rate`` - **Type:** ``String`` @@ -4747,7 +4747,7 @@ The exhaust flow rate of the vented clothes dryer. If auto or not provided, the **Clothes Dryer: Usage Multiplier** -Multiplier on the clothes dryer energy usage that can reflect, e.g., high/low usage occupants. If auto or not provided, the OS-HPXML default (see HPXML Clothes Dryer) is used. +Multiplier on the clothes dryer energy usage that can reflect, e.g., high/low usage occupants. If 'auto' or not provided, the OS-HPXML default (see HPXML Clothes Dryer) is used. - **Name:** ``clothes_dryer_usage_multiplier`` - **Type:** ``String`` @@ -4769,7 +4769,7 @@ Whether there is a dishwasher present. **Dishwasher: Location** -The space type for the dishwasher location. If auto or not provided, the OS-HPXML default (see HPXML Dishwasher) is used. +The space type for the dishwasher location. If 'auto' or not provided, the OS-HPXML default (see HPXML Dishwasher) is used. - **Name:** ``dishwasher_location`` - **Type:** ``Choice`` @@ -4795,7 +4795,7 @@ The efficiency type of dishwasher. **Dishwasher: Efficiency** -The efficiency of the dishwasher. If auto or not provided, the OS-HPXML default (see HPXML Dishwasher) is used. +The efficiency of the dishwasher. If 'auto' or not provided, the OS-HPXML default (see HPXML Dishwasher) is used. - **Name:** ``dishwasher_efficiency`` - **Type:** ``String`` @@ -4806,7 +4806,7 @@ The efficiency of the dishwasher. If auto or not provided, the OS-HPXML default **Dishwasher: Label Electric Rate** -The label electric rate of the dishwasher. If auto or not provided, the OS-HPXML default (see HPXML Dishwasher) is used. +The label electric rate of the dishwasher. If 'auto' or not provided, the OS-HPXML default (see HPXML Dishwasher) is used. - **Name:** ``dishwasher_label_electric_rate`` - **Type:** ``String`` @@ -4817,7 +4817,7 @@ The label electric rate of the dishwasher. If auto or not provided, the OS-HPXML **Dishwasher: Label Gas Rate** -The label gas rate of the dishwasher. If auto or not provided, the OS-HPXML default (see HPXML Dishwasher) is used. +The label gas rate of the dishwasher. If 'auto' or not provided, the OS-HPXML default (see HPXML Dishwasher) is used. - **Name:** ``dishwasher_label_gas_rate`` - **Type:** ``String`` @@ -4828,7 +4828,7 @@ The label gas rate of the dishwasher. If auto or not provided, the OS-HPXML defa **Dishwasher: Label Annual Gas Cost** -The label annual gas cost of the dishwasher. If auto or not provided, the OS-HPXML default (see HPXML Dishwasher) is used. +The label annual gas cost of the dishwasher. If 'auto' or not provided, the OS-HPXML default (see HPXML Dishwasher) is used. - **Name:** ``dishwasher_label_annual_gas_cost`` - **Type:** ``String`` @@ -4839,7 +4839,7 @@ The label annual gas cost of the dishwasher. If auto or not provided, the OS-HPX **Dishwasher: Label Usage** -The dishwasher loads per week. If auto or not provided, the OS-HPXML default (see HPXML Dishwasher) is used. +The dishwasher loads per week. If 'auto' or not provided, the OS-HPXML default (see HPXML Dishwasher) is used. - **Name:** ``dishwasher_label_usage`` - **Type:** ``String`` @@ -4850,7 +4850,7 @@ The dishwasher loads per week. If auto or not provided, the OS-HPXML default (se **Dishwasher: Number of Place Settings** -The number of place settings for the unit. Data obtained from manufacturer's literature. If auto or not provided, the OS-HPXML default (see HPXML Dishwasher) is used. +The number of place settings for the unit. Data obtained from manufacturer's literature. If 'auto' or not provided, the OS-HPXML default (see HPXML Dishwasher) is used. - **Name:** ``dishwasher_place_setting_capacity`` - **Type:** ``String`` @@ -4861,7 +4861,7 @@ The number of place settings for the unit. Data obtained from manufacturer's lit **Dishwasher: Usage Multiplier** -Multiplier on the dishwasher energy usage that can reflect, e.g., high/low usage occupants. If auto or not provided, the OS-HPXML default (see HPXML Dishwasher) is used. +Multiplier on the dishwasher energy usage that can reflect, e.g., high/low usage occupants. If 'auto' or not provided, the OS-HPXML default (see HPXML Dishwasher) is used. - **Name:** ``dishwasher_usage_multiplier`` - **Type:** ``String`` @@ -4883,7 +4883,7 @@ Whether there is a refrigerator present. **Refrigerator: Location** -The space type for the refrigerator location. If auto or not provided, the OS-HPXML default (see HPXML Refrigerators) is used. +The space type for the refrigerator location. If 'auto' or not provided, the OS-HPXML default (see HPXML Refrigerators) is used. - **Name:** ``refrigerator_location`` - **Type:** ``Choice`` @@ -4896,7 +4896,7 @@ The space type for the refrigerator location. If auto or not provided, the OS-HP **Refrigerator: Rated Annual Consumption** -The EnergyGuide rated annual energy consumption for a refrigerator. If auto or not provided, the OS-HPXML default (see HPXML Refrigerators) is used. +The EnergyGuide rated annual energy consumption for a refrigerator. If 'auto' or not provided, the OS-HPXML default (see HPXML Refrigerators) is used. - **Name:** ``refrigerator_rated_annual_kwh`` - **Type:** ``String`` @@ -4907,7 +4907,7 @@ The EnergyGuide rated annual energy consumption for a refrigerator. If auto or n **Refrigerator: Usage Multiplier** -Multiplier on the refrigerator energy usage that can reflect, e.g., high/low usage occupants. If auto or not provided, the OS-HPXML default (see HPXML Refrigerators) is used. +Multiplier on the refrigerator energy usage that can reflect, e.g., high/low usage occupants. If 'auto' or not provided, the OS-HPXML default (see HPXML Refrigerators) is used. - **Name:** ``refrigerator_usage_multiplier`` - **Type:** ``String`` @@ -4929,7 +4929,7 @@ Whether there is an extra refrigerator present. If not provided, defaults to fal **Extra Refrigerator: Location** -The space type for the extra refrigerator location. If auto or not provided, the OS-HPXML default (see HPXML Refrigerators) is used. +The space type for the extra refrigerator location. If 'auto' or not provided, the OS-HPXML default (see HPXML Refrigerators) is used. - **Name:** ``extra_refrigerator_location`` - **Type:** ``Choice`` @@ -4942,7 +4942,7 @@ The space type for the extra refrigerator location. If auto or not provided, the **Extra Refrigerator: Rated Annual Consumption** -The EnergyGuide rated annual energy consumption for an extra refrigerator. If auto or not provided, the OS-HPXML default (see HPXML Refrigerators) is used. +The EnergyGuide rated annual energy consumption for an extra refrigerator. If 'auto' or not provided, the OS-HPXML default (see HPXML Refrigerators) is used. - **Name:** ``extra_refrigerator_rated_annual_kwh`` - **Type:** ``String`` @@ -4953,7 +4953,7 @@ The EnergyGuide rated annual energy consumption for an extra refrigerator. If au **Extra Refrigerator: Usage Multiplier** -Multiplier on the extra refrigerator energy usage that can reflect, e.g., high/low usage occupants. If auto or not provided, the OS-HPXML default (see HPXML Refrigerators) is used. +Multiplier on the extra refrigerator energy usage that can reflect, e.g., high/low usage occupants. If 'auto' or not provided, the OS-HPXML default (see HPXML Refrigerators) is used. - **Name:** ``extra_refrigerator_usage_multiplier`` - **Type:** ``String`` @@ -4975,7 +4975,7 @@ Whether there is a freezer present. If not provided, defaults to false. **Freezer: Location** -The space type for the freezer location. If auto or not provided, the OS-HPXML default (see HPXML Freezers) is used. +The space type for the freezer location. If 'auto' or not provided, the OS-HPXML default (see HPXML Freezers) is used. - **Name:** ``freezer_location`` - **Type:** ``Choice`` @@ -4988,7 +4988,7 @@ The space type for the freezer location. If auto or not provided, the OS-HPXML d **Freezer: Rated Annual Consumption** -The EnergyGuide rated annual energy consumption for a freezer. If auto or not provided, the OS-HPXML default (see HPXML Freezers) is used. +The EnergyGuide rated annual energy consumption for a freezer. If 'auto' or not provided, the OS-HPXML default (see HPXML Freezers) is used. - **Name:** ``freezer_rated_annual_kwh`` - **Type:** ``String`` @@ -4999,7 +4999,7 @@ The EnergyGuide rated annual energy consumption for a freezer. If auto or not pr **Freezer: Usage Multiplier** -Multiplier on the freezer energy usage that can reflect, e.g., high/low usage occupants. If auto or not provided, the OS-HPXML default (see HPXML Freezers) is used. +Multiplier on the freezer energy usage that can reflect, e.g., high/low usage occupants. If 'auto' or not provided, the OS-HPXML default (see HPXML Freezers) is used. - **Name:** ``freezer_usage_multiplier`` - **Type:** ``String`` @@ -5021,7 +5021,7 @@ Whether there is a cooking range/oven present. **Cooking Range/Oven: Location** -The space type for the cooking range/oven location. If auto or not provided, the OS-HPXML default (see HPXML Cooking Range/Oven) is used. +The space type for the cooking range/oven location. If 'auto' or not provided, the OS-HPXML default (see HPXML Cooking Range/Oven) is used. - **Name:** ``cooking_range_oven_location`` - **Type:** ``Choice`` @@ -5047,7 +5047,7 @@ Type of fuel used by the cooking range/oven. **Cooking Range/Oven: Is Induction** -Whether the cooking range is induction. If auto or not provided, the OS-HPXML default (see HPXML Cooking Range/Oven) is used. +Whether the cooking range is induction. If 'auto' or not provided, the OS-HPXML default (see HPXML Cooking Range/Oven) is used. - **Name:** ``cooking_range_oven_is_induction`` - **Type:** ``Choice`` @@ -5060,7 +5060,7 @@ Whether the cooking range is induction. If auto or not provided, the OS-HPXML de **Cooking Range/Oven: Is Convection** -Whether the oven is convection. If auto or not provided, the OS-HPXML default (see HPXML Cooking Range/Oven) is used. +Whether the oven is convection. If 'auto' or not provided, the OS-HPXML default (see HPXML Cooking Range/Oven) is used. - **Name:** ``cooking_range_oven_is_convection`` - **Type:** ``Choice`` @@ -5073,7 +5073,7 @@ Whether the oven is convection. If auto or not provided, the OS-HPXML default (s **Cooking Range/Oven: Usage Multiplier** -Multiplier on the cooking range/oven energy usage that can reflect, e.g., high/low usage occupants. If auto or not provided, the OS-HPXML default (see HPXML Cooking Range/Oven) is used. +Multiplier on the cooking range/oven energy usage that can reflect, e.g., high/low usage occupants. If 'auto' or not provided, the OS-HPXML default (see HPXML Cooking Range/Oven) is used. - **Name:** ``cooking_range_oven_usage_multiplier`` - **Type:** ``String`` @@ -5095,7 +5095,7 @@ Whether there are any ceiling fans. **Ceiling Fan: Label Energy Use** -The label average energy use of the ceiling fan(s). If auto or not provided, the OS-HPXML default (see HPXML Ceiling Fans) is used. +The label average energy use of the ceiling fan(s}. If 'auto' or not provided, the OS-HPXML default (see HPXML Ceiling Fans) is used. - **Name:** ``ceiling_fan_label_energy_use`` - **Type:** ``String`` @@ -5106,7 +5106,7 @@ The label average energy use of the ceiling fan(s). If auto or not provided, the **Ceiling Fan: Efficiency** -The efficiency rating of the ceiling fan(s) at medium speed. Only used if Label Energy Use not provided. If auto or not provided, the OS-HPXML default (see HPXML Ceiling Fans) is used. +The efficiency rating of the ceiling fan(s} at medium speed. Only used if Label Energy Use not provided. If 'auto' or not provided, the OS-HPXML default (see HPXML Ceiling Fans) is used. - **Name:** ``ceiling_fan_efficiency`` - **Type:** ``String`` @@ -5117,7 +5117,7 @@ The efficiency rating of the ceiling fan(s) at medium speed. Only used if Label **Ceiling Fan: Quantity** -Total number of ceiling fans. If auto or not provided, the OS-HPXML default (see HPXML Ceiling Fans) is used. +Total number of ceiling fans. If 'auto' or not provided, the OS-HPXML default (see HPXML Ceiling Fans) is used. - **Name:** ``ceiling_fan_quantity`` - **Type:** ``String`` @@ -5128,7 +5128,7 @@ Total number of ceiling fans. If auto or not provided, the OS-HPXML default (see **Ceiling Fan: Cooling Setpoint Temperature Offset** -The cooling setpoint temperature offset during months when the ceiling fans are operating. Only applies if ceiling fan quantity is greater than zero. If auto or not provided, the OS-HPXML default (see HPXML Ceiling Fans) is used. +The cooling setpoint temperature offset during months when the ceiling fans are operating. Only applies if ceiling fan quantity is greater than zero. If 'auto' or not provided, the OS-HPXML default (see HPXML Ceiling Fans) is used. - **Name:** ``ceiling_fan_cooling_setpoint_temp_offset`` - **Type:** ``String`` @@ -5150,7 +5150,7 @@ Whether there are televisions. **Misc Plug Loads: Television Annual kWh** -The annual energy consumption of the television plug loads. If auto or not provided, the OS-HPXML default (see HPXML Plug Loads) is used. +The annual energy consumption of the television plug loads. If 'auto' or not provided, the OS-HPXML default (see HPXML Plug Loads) is used. - **Name:** ``misc_plug_loads_television_annual_kwh`` - **Type:** ``String`` @@ -5161,7 +5161,7 @@ The annual energy consumption of the television plug loads. If auto or not provi **Misc Plug Loads: Television Usage Multiplier** -Multiplier on the television energy usage that can reflect, e.g., high/low usage occupants. If auto or not provided, the OS-HPXML default (see HPXML Plug Loads) is used. +Multiplier on the television energy usage that can reflect, e.g., high/low usage occupants. If 'auto' or not provided, the OS-HPXML default (see HPXML Plug Loads) is used. - **Name:** ``misc_plug_loads_television_usage_multiplier`` - **Type:** ``String`` @@ -5172,7 +5172,7 @@ Multiplier on the television energy usage that can reflect, e.g., high/low usage **Misc Plug Loads: Other Annual kWh** -The annual energy consumption of the other residual plug loads. If auto or not provided, the OS-HPXML default (see HPXML Plug Loads) is used. +The annual energy consumption of the other residual plug loads. If 'auto' or not provided, the OS-HPXML default (see HPXML Plug Loads) is used. - **Name:** ``misc_plug_loads_other_annual_kwh`` - **Type:** ``String`` @@ -5183,7 +5183,7 @@ The annual energy consumption of the other residual plug loads. If auto or not p **Misc Plug Loads: Other Sensible Fraction** -Fraction of other residual plug loads' internal gains that are sensible. If auto or not provided, the OS-HPXML default (see HPXML Plug Loads) is used. +Fraction of other residual plug loads' internal gains that are sensible. If 'auto' or not provided, the OS-HPXML default (see HPXML Plug Loads) is used. - **Name:** ``misc_plug_loads_other_frac_sensible`` - **Type:** ``String`` @@ -5194,7 +5194,7 @@ Fraction of other residual plug loads' internal gains that are sensible. If auto **Misc Plug Loads: Other Latent Fraction** -Fraction of other residual plug loads' internal gains that are latent. If auto or not provided, the OS-HPXML default (see HPXML Plug Loads) is used. +Fraction of other residual plug loads' internal gains that are latent. If 'auto' or not provided, the OS-HPXML default (see HPXML Plug Loads) is used. - **Name:** ``misc_plug_loads_other_frac_latent`` - **Type:** ``String`` @@ -5205,7 +5205,7 @@ Fraction of other residual plug loads' internal gains that are latent. If auto o **Misc Plug Loads: Other Usage Multiplier** -Multiplier on the other energy usage that can reflect, e.g., high/low usage occupants. If auto or not provided, the OS-HPXML default (see HPXML Plug Loads) is used. +Multiplier on the other energy usage that can reflect, e.g., high/low usage occupants. If 'auto' or not provided, the OS-HPXML default (see HPXML Plug Loads) is used. - **Name:** ``misc_plug_loads_other_usage_multiplier`` - **Type:** ``String`` @@ -5227,7 +5227,7 @@ Whether there is a well pump. If not provided, defaults to false. **Misc Plug Loads: Well Pump Annual kWh** -The annual energy consumption of the well pump plug loads. If auto or not provided, the OS-HPXML default (see HPXML Plug Loads) is used. +The annual energy consumption of the well pump plug loads. If 'auto' or not provided, the OS-HPXML default (see HPXML Plug Loads) is used. - **Name:** ``misc_plug_loads_well_pump_annual_kwh`` - **Type:** ``String`` @@ -5238,7 +5238,7 @@ The annual energy consumption of the well pump plug loads. If auto or not provid **Misc Plug Loads: Well Pump Usage Multiplier** -Multiplier on the well pump energy usage that can reflect, e.g., high/low usage occupants. If auto or not provided, the OS-HPXML default (see HPXML Plug Loads) is used. +Multiplier on the well pump energy usage that can reflect, e.g., high/low usage occupants. If 'auto' or not provided, the OS-HPXML default (see HPXML Plug Loads) is used. - **Name:** ``misc_plug_loads_well_pump_usage_multiplier`` - **Type:** ``String`` @@ -5260,7 +5260,7 @@ Whether there is an electric vehicle. If not provided, defaults to false. **Misc Plug Loads: Vehicle Annual kWh** -The annual energy consumption of the electric vehicle plug loads. If auto or not provided, the OS-HPXML default (see HPXML Plug Loads) is used. +The annual energy consumption of the electric vehicle plug loads. If 'auto' or not provided, the OS-HPXML default (see HPXML Plug Loads) is used. - **Name:** ``misc_plug_loads_vehicle_annual_kwh`` - **Type:** ``String`` @@ -5271,7 +5271,7 @@ The annual energy consumption of the electric vehicle plug loads. If auto or not **Misc Plug Loads: Vehicle Usage Multiplier** -Multiplier on the electric vehicle energy usage that can reflect, e.g., high/low usage occupants. If auto or not provided, the OS-HPXML default (see HPXML Plug Loads) is used. +Multiplier on the electric vehicle energy usage that can reflect, e.g., high/low usage occupants. If 'auto' or not provided, the OS-HPXML default (see HPXML Plug Loads) is used. - **Name:** ``misc_plug_loads_vehicle_usage_multiplier`` - **Type:** ``String`` @@ -5293,7 +5293,7 @@ Whether there is a fuel loads grill. If not provided, defaults to false. **Misc Fuel Loads: Grill Fuel Type** -The fuel type of the fuel loads grill. +The fuel type of the fuel loads grill. If not provided, defaults to natural gas. - **Name:** ``misc_fuel_loads_grill_fuel_type`` - **Type:** ``Choice`` @@ -5306,7 +5306,7 @@ The fuel type of the fuel loads grill. **Misc Fuel Loads: Grill Annual therm** -The annual energy consumption of the fuel loads grill. If auto or not provided, the OS-HPXML default (see HPXML Fuel Loads) is used. +The annual energy consumption of the fuel loads grill. If 'auto' or not provided, the OS-HPXML default (see HPXML Fuel Loads) is used. - **Name:** ``misc_fuel_loads_grill_annual_therm`` - **Type:** ``String`` @@ -5317,7 +5317,7 @@ The annual energy consumption of the fuel loads grill. If auto or not provided, **Misc Fuel Loads: Grill Usage Multiplier** -Multiplier on the fuel loads grill energy usage that can reflect, e.g., high/low usage occupants. If auto or not provided, the OS-HPXML default (see HPXML Fuel Loads) is used. +Multiplier on the fuel loads grill energy usage that can reflect, e.g., high/low usage occupants. If 'auto' or not provided, the OS-HPXML default (see HPXML Fuel Loads) is used. - **Name:** ``misc_fuel_loads_grill_usage_multiplier`` - **Type:** ``String`` @@ -5339,7 +5339,7 @@ Whether there is fuel loads lighting. If not provided, defaults to false. **Misc Fuel Loads: Lighting Fuel Type** -The fuel type of the fuel loads lighting. +The fuel type of the fuel loads lighting. If not provided, defaults to natural gas. - **Name:** ``misc_fuel_loads_lighting_fuel_type`` - **Type:** ``Choice`` @@ -5352,7 +5352,7 @@ The fuel type of the fuel loads lighting. **Misc Fuel Loads: Lighting Annual therm** -The annual energy consumption of the fuel loads lighting. If auto or not provided, the OS-HPXML default (see HPXML Fuel Loads) is used. +The annual energy consumption of the fuel loads lighting. If 'auto' or not provided, the OS-HPXML default (see HPXML Fuel Loads) is used. - **Name:** ``misc_fuel_loads_lighting_annual_therm`` - **Type:** ``String`` @@ -5363,7 +5363,7 @@ The annual energy consumption of the fuel loads lighting. If auto or not provide **Misc Fuel Loads: Lighting Usage Multiplier** -Multiplier on the fuel loads lighting energy usage that can reflect, e.g., high/low usage occupants. If auto or not provided, the OS-HPXML default (see HPXML Fuel Loads) is used. +Multiplier on the fuel loads lighting energy usage that can reflect, e.g., high/low usage occupants. If 'auto' or not provided, the OS-HPXML default (see HPXML Fuel Loads) is used. - **Name:** ``misc_fuel_loads_lighting_usage_multiplier`` - **Type:** ``String`` @@ -5385,7 +5385,7 @@ Whether there is fuel loads fireplace. If not provided, defaults to false. **Misc Fuel Loads: Fireplace Fuel Type** -The fuel type of the fuel loads fireplace. +The fuel type of the fuel loads fireplace. If not provided, defaults to natural gas. - **Name:** ``misc_fuel_loads_fireplace_fuel_type`` - **Type:** ``Choice`` @@ -5398,7 +5398,7 @@ The fuel type of the fuel loads fireplace. **Misc Fuel Loads: Fireplace Annual therm** -The annual energy consumption of the fuel loads fireplace. If auto or not provided, the OS-HPXML default (see HPXML Fuel Loads) is used. +The annual energy consumption of the fuel loads fireplace. If 'auto' or not provided, the OS-HPXML default (see HPXML Fuel Loads) is used. - **Name:** ``misc_fuel_loads_fireplace_annual_therm`` - **Type:** ``String`` @@ -5409,7 +5409,7 @@ The annual energy consumption of the fuel loads fireplace. If auto or not provid **Misc Fuel Loads: Fireplace Sensible Fraction** -Fraction of fireplace residual fuel loads' internal gains that are sensible. If auto or not provided, the OS-HPXML default (see HPXML Fuel Loads) is used. +Fraction of fireplace residual fuel loads' internal gains that are sensible. If 'auto' or not provided, the OS-HPXML default (see HPXML Fuel Loads) is used. - **Name:** ``misc_fuel_loads_fireplace_frac_sensible`` - **Type:** ``String`` @@ -5420,7 +5420,7 @@ Fraction of fireplace residual fuel loads' internal gains that are sensible. If **Misc Fuel Loads: Fireplace Latent Fraction** -Fraction of fireplace residual fuel loads' internal gains that are latent. If auto or not provided, the OS-HPXML default (see HPXML Fuel Loads) is used. +Fraction of fireplace residual fuel loads' internal gains that are latent. If 'auto' or not provided, the OS-HPXML default (see HPXML Fuel Loads) is used. - **Name:** ``misc_fuel_loads_fireplace_frac_latent`` - **Type:** ``String`` @@ -5431,7 +5431,7 @@ Fraction of fireplace residual fuel loads' internal gains that are latent. If au **Misc Fuel Loads: Fireplace Usage Multiplier** -Multiplier on the fuel loads fireplace energy usage that can reflect, e.g., high/low usage occupants. If auto or not provided, the OS-HPXML default (see HPXML Fuel Loads) is used. +Multiplier on the fuel loads fireplace energy usage that can reflect, e.g., high/low usage occupants. If 'auto' or not provided, the OS-HPXML default (see HPXML Fuel Loads) is used. - **Name:** ``misc_fuel_loads_fireplace_usage_multiplier`` - **Type:** ``String`` @@ -5453,7 +5453,7 @@ Whether there is a pool. If not provided, defaults to false. **Pool: Pump Annual kWh** -The annual energy consumption of the pool pump. If auto or not provided, the OS-HPXML default (see Pool Pump) is used. +The annual energy consumption of the pool pump. If 'auto' or not provided, the OS-HPXML default (see Pool Pump) is used. - **Name:** ``pool_pump_annual_kwh`` - **Type:** ``String`` @@ -5464,7 +5464,7 @@ The annual energy consumption of the pool pump. If auto or not provided, the OS- **Pool: Pump Usage Multiplier** -Multiplier on the pool pump energy usage that can reflect, e.g., high/low usage occupants. If auto or not provided, the OS-HPXML default (see Pool Pump) is used. +Multiplier on the pool pump energy usage that can reflect, e.g., high/low usage occupants. If 'auto' or not provided, the OS-HPXML default (see Pool Pump) is used. - **Name:** ``pool_pump_usage_multiplier`` - **Type:** ``String`` @@ -5488,7 +5488,7 @@ The type of pool heater. Use 'none' if there is no pool heater. **Pool: Heater Annual kWh** -The annual energy consumption of the electric resistance pool heater. If auto or not provided, the OS-HPXML default (see Pool Heater) is used. +The annual energy consumption of the electric resistance pool heater. If 'auto' or not provided, the OS-HPXML default (see Pool Heater) is used. - **Name:** ``pool_heater_annual_kwh`` - **Type:** ``String`` @@ -5499,7 +5499,7 @@ The annual energy consumption of the electric resistance pool heater. If auto or **Pool: Heater Annual therm** -The annual energy consumption of the gas fired pool heater. If auto or not provided, the OS-HPXML default (see Pool Heater) is used. +The annual energy consumption of the gas fired pool heater. If 'auto' or not provided, the OS-HPXML default (see Pool Heater) is used. - **Name:** ``pool_heater_annual_therm`` - **Type:** ``String`` @@ -5510,7 +5510,7 @@ The annual energy consumption of the gas fired pool heater. If auto or not provi **Pool: Heater Usage Multiplier** -Multiplier on the pool heater energy usage that can reflect, e.g., high/low usage occupants. If auto or not provided, the OS-HPXML default (see Pool Heater) is used. +Multiplier on the pool heater energy usage that can reflect, e.g., high/low usage occupants. If 'auto' or not provided, the OS-HPXML default (see Pool Heater) is used. - **Name:** ``pool_heater_usage_multiplier`` - **Type:** ``String`` @@ -5532,7 +5532,7 @@ Whether there is a permanent spa. If not provided, defaults to false. **Permanent Spa: Pump Annual kWh** -The annual energy consumption of the permanent spa pump. If auto or not provided, the OS-HPXML default (see Permanent Spa Pump) is used. +The annual energy consumption of the permanent spa pump. If 'auto' or not provided, the OS-HPXML default (see Permanent Spa Pump) is used. - **Name:** ``permanent_spa_pump_annual_kwh`` - **Type:** ``String`` @@ -5543,7 +5543,7 @@ The annual energy consumption of the permanent spa pump. If auto or not provided **Permanent Spa: Pump Usage Multiplier** -Multiplier on the permanent spa pump energy usage that can reflect, e.g., high/low usage occupants. If auto or not provided, the OS-HPXML default (see Permanent Spa Pump) is used. +Multiplier on the permanent spa pump energy usage that can reflect, e.g., high/low usage occupants. If 'auto' or not provided, the OS-HPXML default (see Permanent Spa Pump) is used. - **Name:** ``permanent_spa_pump_usage_multiplier`` - **Type:** ``String`` @@ -5567,7 +5567,7 @@ The type of permanent spa heater. Use 'none' if there is no permanent spa heater **Permanent Spa: Heater Annual kWh** -The annual energy consumption of the electric resistance permanent spa heater. If auto or not provided, the OS-HPXML default (see Permanent Spa Heater) is used. +The annual energy consumption of the electric resistance permanent spa heater. If 'auto' or not provided, the OS-HPXML default (see Permanent Spa Heater) is used. - **Name:** ``permanent_spa_heater_annual_kwh`` - **Type:** ``String`` @@ -5578,7 +5578,7 @@ The annual energy consumption of the electric resistance permanent spa heater. I **Permanent Spa: Heater Annual therm** -The annual energy consumption of the gas fired permanent spa heater. If auto or not provided, the OS-HPXML default (see Permanent Spa Heater) is used. +The annual energy consumption of the gas fired permanent spa heater. If 'auto' or not provided, the OS-HPXML default (see Permanent Spa Heater) is used. - **Name:** ``permanent_spa_heater_annual_therm`` - **Type:** ``String`` @@ -5589,7 +5589,7 @@ The annual energy consumption of the gas fired permanent spa heater. If auto or **Permanent Spa: Heater Usage Multiplier** -Multiplier on the permanent spa heater energy usage that can reflect, e.g., high/low usage occupants. If auto or not provided, the OS-HPXML default (see Permanent Spa Heater) is used. +Multiplier on the permanent spa heater energy usage that can reflect, e.g., high/low usage occupants. If 'auto' or not provided, the OS-HPXML default (see Permanent Spa Heater) is used. - **Name:** ``permanent_spa_heater_usage_multiplier`` - **Type:** ``String`` @@ -5611,7 +5611,7 @@ Names of emissions scenarios. If multiple scenarios, use a comma-separated list. **Emissions: Types** -Types of emissions (e.g., CO2e, NOx, etc.). If multiple scenarios, use a comma-separated list. +Types of emissions (e.g., CO2e, NOx, etc.}. If multiple scenarios, use a comma-separated list. - **Name:** ``emissions_types`` - **Type:** ``String`` @@ -5985,7 +5985,7 @@ Utility bill PV monthly grid connection fees. If multiple scenarios, use a comma **Additional Properties** -Additional properties specified as key-value pairs (i.e., key=value). If multiple additional properties, use a |-separated list. For example, 'LowIncome=false|Remodeled|Description=2-story home in Denver'. These properties will be stored in the HPXML file under /HPXML/SoftwareInfo/extension/AdditionalProperties. +Additional properties specified as key-value pairs (i.e., key=value}. If multiple additional properties, use a |-separated list. For example, 'LowIncome=false|Remodeled|Description=2-story home in Denver'. These properties will be stored in the HPXML file under /HPXML/SoftwareInfo/extension/AdditionalProperties. - **Name:** ``additional_properties`` - **Type:** ``String`` diff --git a/BuildResidentialHPXML/measure.rb b/BuildResidentialHPXML/measure.rb index 18aed35365..5c11bcc9ba 100644 --- a/BuildResidentialHPXML/measure.rb +++ b/BuildResidentialHPXML/measure.rb @@ -33,128 +33,137 @@ def modeler_description return "The measure handles geometry by 1) translating high-level geometry inputs (conditioned floor area, number of stories, etc.) to 3D closed-form geometry in an OpenStudio model and then 2) mapping the OpenStudio surfaces to HPXML surfaces (using surface type, boundary condition, area, orientation, etc.). Like surfaces are collapsed into a single surface with aggregate surface area. Note: OS-HPXML default values can be found in the documentation or can be seen by using the 'apply_defaults' argument." end - # Define the arguments that the user will input. - # - # @param model [OpenStudio::Model::Model] OpenStudio Model object - # @return [OpenStudio::Measure::OSArgumentVector] an OpenStudio::Measure::OSArgumentVector object - def arguments(model) # rubocop:disable Lint/UnusedMethodArgument - docs_base_url = "https://openstudio-hpxml.readthedocs.io/en/v#{Version::OS_HPXML_Version}/workflow_inputs.html" - - # TODO - def makeArgument(name:, - type:, - required:, - display_name:, - description:, - units: nil, - choices: [], - default_href: nil) + # TODO + def make_argument(name:, + type:, + required:, + display_name:, + description:, + units: nil, + choices: [], + default_href: nil) - fail "Specified #{type} argument with no choices." if type == Argument::Choice && choices.empty? - fail 'Specified required argument with indication of OS-HPXML default.' if required && !default_href.nil? + fail "Specified #{type} argument with no choices." if type == Argument::Choice && choices.empty? + fail 'Specified required argument with indication of OS-HPXML default.' if required && !default_href.nil? - if !default_href.nil? - if type == Argument::Boolean - choices = ['true', 'false'] - type = Argument::Choice - elsif [Argument::Double, Argument::Integer].include?(type) - type = Argument::String - end + if !default_href.nil? + if type == Argument::Boolean + choices = ['true', 'false'] + type = Argument::Choice + elsif [Argument::Double, Argument::Integer].include?(type) + type = Argument::String end + end - if choices.empty? - arg = OpenStudio::Measure::OSArgument.send(type, name, required) - else - if !default_href.nil? - choices.unshift(Constants::Auto) - end - arg = OpenStudio::Measure::OSArgument.send(type, name, choices, required) - end - arg.setDisplayName(display_name) - arg.setUnits(units) if !units.nil? + if choices.empty? + arg = OpenStudio::Measure::OSArgument.send(type, name, required) + else if !default_href.nil? - description += " If #{Constants::Auto} or not provided, the OS-HPXML default (see #{default_href}) is used." + choices.unshift(Constants::Auto) end - arg.setDescription(description) - return arg + arg = OpenStudio::Measure::OSArgument.send(type, name, choices, required) end + arg.setDisplayName(display_name) + arg.setUnits(units) if !units.nil? + if !default_href.nil? + description += " If '#{Constants::Auto}' or not provided, the OS-HPXML default (see #{default_href}) is used." + end + arg.setDescription(description) + return arg + end + # Define the arguments that the user will input. + # + # @param model [OpenStudio::Model::Model] OpenStudio Model object + # @return [OpenStudio::Measure::OSArgumentVector] an OpenStudio::Measure::OSArgumentVector object + def arguments(model) # rubocop:disable Lint/UnusedMethodArgument args = OpenStudio::Measure::OSArgumentVector.new + get_arguments.each do |arg| + args << make_argument(**arg) + end + return args + end - args << makeArgument( + # TODO + def get_arguments + docs_base_url = "https://openstudio-hpxml.readthedocs.io/en/v#{Version::OS_HPXML_Version}/workflow_inputs.html" + + args = [] + + args << { name: 'hpxml_path', type: Argument::String, required: true, display_name: 'HPXML File Path', description: 'Absolute/relative path of the HPXML file.' - ) + } - args << makeArgument( + args << { name: 'existing_hpxml_path', type: Argument::String, required: false, display_name: 'Existing HPXML File Path', - description: 'Absolute/relative path of the existing HPXML file. If not provided, a new HPXML file with one Building element is created. If provided, a new Building element will be appended to this HPXML file (e.g., to create a multifamily HPXML file describing multiple dwelling units).' - ) + description: 'Absolute/relative path of the existing HPXML file. If not provided, a new HPXML file with one Building element is created. If provided, a new Building element will be appended to this HPXML file (e.g., to create a multifamily HPXML file describing multiple dwelling units}.' + } - args << makeArgument( + args << { name: 'whole_sfa_or_mf_building_sim', type: Argument::Boolean, required: false, display_name: 'Whole SFA/MF Building Simulation?', description: 'If the HPXML file represents a single family-attached/multifamily building with multiple dwelling units defined, specifies whether to run the HPXML file as a single whole building model.' - ) + } - args << makeArgument( + args << { name: 'software_info_program_used', type: Argument::String, required: false, display_name: 'Software Info: Program Used', description: 'The name of the software program used.' - ) + } - args << makeArgument( + args << { name: 'software_info_program_version', type: Argument::String, required: false, display_name: 'Software Info: Program Version', description: 'The version of the software program used.' - ) + } - args << makeArgument( + args << { name: 'schedules_filepaths', type: Argument::String, required: false, display_name: 'Schedules: CSV File Paths', description: 'Absolute/relative paths of csv files containing user-specified detailed schedules. If multiple files, use a comma-separated list.' - ) + } - args << makeArgument( + args << { name: 'schedules_unavailable_period_types', type: Argument::String, required: false, display_name: 'Schedules: Unavailable Period Types', description: "Specifies the unavailable period types. Possible types are column names defined in unavailable_periods.csv: #{Schedule.unavailable_period_types.join(', ')}. If multiple periods, use a comma-separated list." - ) + } - args << makeArgument( + args << { name: 'schedules_unavailable_period_dates', type: Argument::String, required: false, display_name: 'Schedules: Unavailable Period Dates', - description: 'Specifies the unavailable period date ranges. Enter a date range like "Dec 15 - Jan 15". Optionally, can enter hour of the day like "Dec 15 2 - Jan 15 20" (start hour can be 0 through 23 and end hour can be 1 through 24). If multiple periods, use a comma-separated list.' - ) + description: 'Specifies the unavailable period date ranges. Enter a date range like "Dec 15 - Jan 15". Optionally, can enter hour of the day like "Dec 15 2 - Jan 15 20" (start hour can be 0 through 23 and end hour can be 1 through 24}. If multiple periods, use a comma-separated list.' + } - args << makeArgument( + args << { name: 'schedules_unavailable_period_window_natvent_availabilities', type: Argument::String, required: false, display_name: 'Schedules: Unavailable Period Window Natural Ventilation Availabilities', description: "The availability of the natural ventilation schedule during unavailable periods. Valid choices are: #{[HPXML::ScheduleRegular, HPXML::ScheduleAvailable, HPXML::ScheduleUnavailable].join(', ')}. If multiple periods, use a comma-separated list.", default_href: "HPXML Unavailable Periods" - ) + } - args << makeArgument( + args << { name: 'simulation_control_timestep', type: Argument::Integer, required: false, @@ -162,17 +171,17 @@ def makeArgument(name:, description: 'Value must be a divisor of 60.', units: 'min', default_href: "HPXML Simulation Control" - ) + } - args << makeArgument( + args << { name: 'simulation_control_run_period', type: Argument::String, required: false, display_name: 'Simulation Control: Run Period', description: "Enter a date range like 'Jan 1 - Dec 31'. If not provided, the OS-HPXML default (see HPXML Simulation Control) is used." - ) + } - args << makeArgument( + args << { name: 'simulation_control_run_period_calendar_year', type: Argument::Integer, required: false, @@ -180,40 +189,40 @@ def makeArgument(name:, units: 'year', description: 'This numeric field should contain the calendar year that determines the start day of week. If you are running simulations using AMY weather files, the value entered for calendar year will not be used; it will be overridden by the actual year found in the AMY weather file.', default_href: "HPXML Simulation Control" - ) + } - args << makeArgument( + args << { name: 'simulation_control_daylight_saving_enabled', type: Argument::Boolean, required: false, display_name: 'Simulation Control: Daylight Saving Enabled', description: 'Whether to use daylight saving.', default_href: "HPXML Building Site" - ) + } - args << makeArgument( + args << { name: 'simulation_control_daylight_saving_period', type: Argument::String, required: false, display_name: 'Simulation Control: Daylight Saving Period', description: "Enter a date range like 'Mar 15 - Dec 15'.", default_href: "HPXML Building Site" - ) + } - args << makeArgument( + args << { name: 'simulation_control_temperature_capacitance_multiplier', type: Argument::Double, required: false, display_name: 'Simulation Control: Temperature Capacitance Multiplier', description: 'Affects the transient calculation of indoor air temperatures.', default_href: "HPXML Simulation Control" - ) + } defrost_model_type_choices = OpenStudio::StringVector.new defrost_model_type_choices << HPXML::AdvancedResearchDefrostModelTypeStandard defrost_model_type_choices << HPXML::AdvancedResearchDefrostModelTypeAdvanced - args << makeArgument( + args << { name: 'simulation_control_defrost_model_type', type: Argument::Choice, required: false, @@ -221,32 +230,32 @@ def makeArgument(name:, description: "Research feature to select the type of defrost model. Use #{HPXML::AdvancedResearchDefrostModelTypeStandard} for default E+ defrost setting. Use #{HPXML::AdvancedResearchDefrostModelTypeAdvanced} for an improved model that better accounts for load and energy use during defrost; using #{HPXML::AdvancedResearchDefrostModelTypeAdvanced} may impact simulation runtime.", choices: defrost_model_type_choices, default_href: "HPXML Simulation Control" - ) + } - args << makeArgument( + args << { name: 'simulation_control_onoff_thermostat_deadband', type: Argument::Double, required: false, display_name: 'Simulation Control: HVAC On-Off Thermostat Deadband', description: 'Research feature to model on-off thermostat deadband and start-up degradation for single or two speed AC/ASHP systems, and realistic time-based staging for two speed AC/ASHP systems. Currently only supported with 1 min timestep.', units: 'deg-F' - ) + } - args << makeArgument( + args << { type: Argument::Double, name: 'simulation_control_heat_pump_backup_heating_capacity_increment', required: false, display_name: 'Simulation Control: Heat Pump Backup Heating Capacity Increment', description: "Research feature to model capacity increment of multi-stage heat pump backup systems with time-based staging. Only applies to air-source heat pumps where Backup Type is '#{HPXML::HeatPumpBackupTypeIntegrated}' and Backup Fuel Type is '#{HPXML::FuelTypeElectricity}'. Currently only supported with 1 min timestep.", units: 'Btu/hr' - ) + } site_type_choices = OpenStudio::StringVector.new site_type_choices << HPXML::SiteTypeSuburban site_type_choices << HPXML::SiteTypeUrban site_type_choices << HPXML::SiteTypeRural - args << makeArgument( + args << { type: Argument::Choice, name: 'site_type', choices: site_type_choices, @@ -254,14 +263,14 @@ def makeArgument(name:, display_name: 'Site: Type', description: 'The type of site.', default_href: "HPXML Site" - ) + } site_shielding_of_home_choices = OpenStudio::StringVector.new site_shielding_of_home_choices << HPXML::ShieldingExposed site_shielding_of_home_choices << HPXML::ShieldingNormal site_shielding_of_home_choices << HPXML::ShieldingWellShielded - args << makeArgument( + args << { type: Argument::Choice, name: 'site_shielding_of_home', choices: site_shielding_of_home_choices, @@ -269,7 +278,7 @@ def makeArgument(name:, display_name: 'Site: Shielding of Home', description: 'Presence of nearby buildings, trees, obstructions for infiltration model.', default_href: "HPXML Site" - ) + } soil_types = [HPXML::SiteSoilTypeClay, HPXML::SiteSoilTypeGravel, @@ -289,7 +298,7 @@ def makeArgument(name:, end end - args << makeArgument( + args << { type: Argument::Choice, name: 'site_soil_and_moisture_type', choices: site_soil_and_moisture_type_choices, @@ -297,54 +306,54 @@ def makeArgument(name:, display_name: 'Site: Soil and Moisture Type', description: 'Type of soil and moisture. This is used to inform ground conductivity and diffusivity.', default_href: "HPXML Site" - ) + } - args << makeArgument( + args << { type: Argument::Double, name: 'site_ground_conductivity', required: false, display_name: 'Site: Ground Conductivity', description: 'Conductivity of the ground soil. If provided, overrides the previous site and moisture type input.', units: 'Btu/hr-ft-F' - ) + } - args << makeArgument( + args << { type: Argument::Double, name: 'site_ground_diffusivity', required: false, display_name: 'Site: Ground Diffusivity', description: 'Diffusivity of the ground soil. If provided, overrides the previous site and moisture type input.', units: 'ft^2/hr' - ) + } site_iecc_zone_choices = OpenStudio::StringVector.new Constants::IECCZones.each do |iz| site_iecc_zone_choices << iz end - args << makeArgument( + args << { type: Argument::Choice, name: 'site_iecc_zone', choices: site_iecc_zone_choices, required: false, display_name: 'Site: IECC Zone', description: 'IECC zone of the home address.' - ) + } - args << makeArgument( + args << { type: Argument::String, name: 'site_city', required: false, display_name: 'Site: City', description: 'City/municipality of the home address.' - ) + } site_state_code_choices = OpenStudio::StringVector.new Constants::StateCodesMap.keys.each do |sc| site_state_code_choices << sc end - args << makeArgument( + args << { type: Argument::Choice, name: 'site_state_code', choices: site_state_code_choices, @@ -352,17 +361,17 @@ def makeArgument(name:, display_name: 'Site: State Code', description: 'State code of the home address.', default_href: "HPXML Site" - ) + } - args << makeArgument( + args << { type: Argument::String, name: 'site_zip_code', required: false, display_name: 'Site: Zip Code', - description: 'Zip code of the home address. Either this or the Weather Station: EnergyPlus Weather (EPW) Filepath input below must be provided.' - ) + description: 'Zip code of the home address. Either this or the Weather Station: EnergyPlus Weather (EPW} Filepath input below must be provided.' + } - args << makeArgument( + args << { name: 'site_time_zone_utc_offset', type: Argument::Double, required: false, @@ -370,9 +379,9 @@ def makeArgument(name:, description: 'Time zone UTC offset of the home address. Must be between -12 and 14.', units: 'hr', default_href: "HPXML Site" - ) + } - args << makeArgument( + args << { type: Argument::Double, name: 'site_elevation', required: false, @@ -380,9 +389,9 @@ def makeArgument(name:, description: 'Elevation of the home address.', units: 'ft', default_href: "HPXML Site" - ) + } - args << makeArgument( + args << { type: Argument::Double, name: 'site_latitude', required: false, @@ -390,9 +399,9 @@ def makeArgument(name:, description: 'Latitude of the home address. Must be between -90 and 90. Use negative values for southern hemisphere.', units: 'deg', default_href: "HPXML Site" - ) + } - args << makeArgument( + args << { type: Argument::Double, name: 'site_longitude', required: false, @@ -400,23 +409,23 @@ def makeArgument(name:, description: 'Longitude of the home address. Must be between -180 and 180. Use negative values for the western hemisphere.', units: 'deg', default_href: "HPXML Site" - ) + } - args << makeArgument( + args << { type: Argument::String, name: 'weather_station_epw_filepath', required: false, - display_name: 'Weather Station: EnergyPlus Weather (EPW) Filepath', + display_name: 'Weather Station: EnergyPlus Weather (EPW} Filepath', description: 'Path of the EPW file. Either this or the Site: Zip Code input above must be provided.' - ) + } - args << makeArgument( + args << { name: 'year_built', type: Argument::Integer, required: false, display_name: 'Building Construction: Year Built', description: 'The year the building was built.' - ) + } unit_type_choices = OpenStudio::StringVector.new unit_type_choices << HPXML::ResidentialTypeSFD @@ -424,101 +433,101 @@ def makeArgument(name:, unit_type_choices << HPXML::ResidentialTypeApartment unit_type_choices << HPXML::ResidentialTypeManufactured - args << makeArgument( + args << { type: Argument::Integer, name: 'unit_multiplier', required: false, display_name: 'Building Construction: Unit Multiplier', description: 'The number of similar dwelling units. EnergyPlus simulation results will be multiplied this value. If not provided, defaults to 1.' - ) + } - args << makeArgument( + args << { type: Argument::Choice, name: 'geometry_unit_type', choices: unit_type_choices, required: true, display_name: 'Geometry: Unit Type', description: "The type of dwelling unit. Use #{HPXML::ResidentialTypeSFA} for a dwelling unit with 1 or more stories, attached units to one or both sides, and no units above/below. Use #{HPXML::ResidentialTypeApartment} for a dwelling unit with 1 story, attached units to one, two, or three sides, and units above and/or below." - ) + } - args << makeArgument( + args << { name: 'geometry_unit_left_wall_is_adiabatic', type: Argument::Boolean, required: false, display_name: 'Geometry: Unit Left Wall Is Adiabatic', description: 'Presence of an adiabatic left wall.' - ) + } - args << makeArgument( + args << { name: 'geometry_unit_right_wall_is_adiabatic', type: Argument::Boolean, required: false, display_name: 'Geometry: Unit Right Wall Is Adiabatic', description: 'Presence of an adiabatic right wall.' - ) + } - args << makeArgument( + args << { name: 'geometry_unit_front_wall_is_adiabatic', type: Argument::Boolean, required: false, display_name: 'Geometry: Unit Front Wall Is Adiabatic', description: 'Presence of an adiabatic front wall, for example, the unit is adjacent to a conditioned corridor.' - ) + } - args << makeArgument( + args << { name: 'geometry_unit_back_wall_is_adiabatic', type: Argument::Boolean, required: false, display_name: 'Geometry: Unit Back Wall Is Adiabatic', description: 'Presence of an adiabatic back wall.' - ) + } - args << makeArgument( + args << { type: Argument::Integer, name: 'geometry_unit_num_floors_above_grade', required: true, display_name: 'Geometry: Unit Number of Floors Above Grade', units: '#', description: "The number of floors above grade in the unit. Attic type #{HPXML::AtticTypeConditioned} is included. Assumed to be 1 for #{HPXML::ResidentialTypeApartment}s." - ) + } - args << makeArgument( + args << { type: Argument::Double, name: 'geometry_unit_cfa', required: true, display_name: 'Geometry: Unit Conditioned Floor Area', units: 'ft^2', - description: "The total floor area of the unit's conditioned space (including any conditioned basement floor area)." - ) + description: "The total floor area of the unit's conditioned space (including any conditioned basement floor area}." + } - args << makeArgument( + args << { type: Argument::Double, name: 'geometry_unit_aspect_ratio', required: true, display_name: 'Geometry: Unit Aspect Ratio', units: 'Frac', description: 'The ratio of front/back wall length to left/right wall length for the unit, excluding any protruding garage wall area.' - ) + } - args << makeArgument( + args << { type: Argument::Double, name: 'geometry_unit_orientation', required: true, display_name: 'Geometry: Unit Orientation', units: 'degrees', - description: "The unit's orientation is measured clockwise from north (e.g., North=0, East=90, South=180, West=270)." - ) + description: "The unit's orientation is measured clockwise from north (e.g., North=0, East=90, South=180, West=270}." + } - args << makeArgument( + args << { type: Argument::Integer, name: 'geometry_unit_num_bedrooms', required: true, display_name: 'Geometry: Unit Number of Bedrooms', units: '#', description: 'The number of bedrooms in the unit.' - ) + } - args << makeArgument( + args << { type: Argument::Integer, name: 'geometry_unit_num_bathrooms', required: false, @@ -526,36 +535,36 @@ def makeArgument(name:, units: '#', description: 'The number of bathrooms in the unit.', default_href: "HPXML Building Construction" - ) + } - args << makeArgument( + args << { type: Argument::Double, name: 'geometry_unit_num_occupants', required: false, display_name: 'Geometry: Unit Number of Occupants', units: '#', - description: 'The number of occupants in the unit. If not provided, an *asset* calculation is performed assuming standard occupancy, in which various end use defaults (e.g., plug loads, appliances, and hot water usage) are calculated based on Number of Bedrooms and Conditioned Floor Area per ANSI/RESNET/ICC 301-2019. If provided, an *operational* calculation is instead performed in which the end use defaults are adjusted using the relationship between Number of Bedrooms and Number of Occupants from RECS 2015.' - ) + description: 'The number of occupants in the unit. If not provided, an *asset* calculation is performed assuming standard occupancy, in which various end use defaults (e.g., plug loads, appliances, and hot water usage} are calculated based on Number of Bedrooms and Conditioned Floor Area per ANSI/RESNET/ICC 301-2019. If provided, an *operational* calculation is instead performed in which the end use defaults are adjusted using the relationship between Number of Bedrooms and Number of Occupants from RECS 2015.' + } - args << makeArgument( + args << { type: Argument::Integer, name: 'geometry_building_num_units', required: false, display_name: 'Geometry: Building Number of Units', units: '#', description: "The number of units in the building. Required for #{HPXML::ResidentialTypeSFA} and #{HPXML::ResidentialTypeApartment}s." - ) + } - args << makeArgument( + args << { type: Argument::Double, name: 'geometry_average_ceiling_height', required: true, display_name: 'Geometry: Average Ceiling Height', units: 'ft', description: 'Average distance from the floor to the ceiling.' - ) + } - args << makeArgument( + args << { type: Argument::Double, name: 'geometry_unit_height_above_grade', required: false, @@ -563,47 +572,47 @@ def makeArgument(name:, units: 'ft', description: 'Describes the above-grade height of apartment units on upper floors or homes above ambient or belly-and-wing foundations. It is defined as the height of the lowest conditioned floor above grade and is used to calculate the wind speed for the infiltration model.', default_href: "HPXML Building Construction" - ) + } - args << makeArgument( + args << { type: Argument::Double, name: 'geometry_garage_width', required: false, display_name: 'Geometry: Garage Width', units: 'ft', - description: "The width of the garage. Only applies to #{HPXML::ResidentialTypeSFD} units. If not provided, defaults to zero (no garage)." - ) + description: "The width of the garage. Only applies to #{HPXML::ResidentialTypeSFD} units. If not provided, defaults to zero (no garage}." + } - args << makeArgument( + args << { type: Argument::Double, name: 'geometry_garage_depth', required: false, display_name: 'Geometry: Garage Depth', units: 'ft', description: "The depth of the garage. Only applies to #{HPXML::ResidentialTypeSFD} units." - ) + } - args << makeArgument( + args << { type: Argument::Double, name: 'geometry_garage_protrusion', required: false, display_name: 'Geometry: Garage Protrusion', units: 'Frac', description: "The fraction of the garage that is protruding from the conditioned space. Only applies to #{HPXML::ResidentialTypeSFD} units." - ) + } garage_position_choices = OpenStudio::StringVector.new garage_position_choices << Constants::PositionRight garage_position_choices << Constants::PositionLeft - args << makeArgument( + args << { type: Argument::Choice, name: 'geometry_garage_position', choices: garage_position_choices, required: false, display_name: 'Geometry: Garage Position', description: "The position of the garage. Only applies to #{HPXML::ResidentialTypeSFD} units." - ) + } foundation_type_choices = OpenStudio::StringVector.new foundation_type_choices << HPXML::FoundationTypeSlab @@ -617,41 +626,41 @@ def makeArgument(name:, foundation_type_choices << "#{HPXML::FoundationTypeBellyAndWing}WithSkirt" foundation_type_choices << "#{HPXML::FoundationTypeBellyAndWing}NoSkirt" - args << makeArgument( + args << { type: Argument::Choice, name: 'geometry_foundation_type', choices: foundation_type_choices, required: true, display_name: 'Geometry: Foundation Type', description: "The foundation type of the building. Foundation types #{HPXML::FoundationTypeBasementConditioned} and #{HPXML::FoundationTypeCrawlspaceConditioned} are not allowed for #{HPXML::ResidentialTypeApartment}s." - ) + } - args << makeArgument( + args << { type: Argument::Double, name: 'geometry_foundation_height', required: false, display_name: 'Geometry: Foundation Height', units: 'ft', - description: 'The height of the foundation (e.g., 3ft for crawlspace, 8ft for basement). Only applies to basements/crawlspaces.' - ) + description: 'The height of the foundation (e.g., 3ft for crawlspace, 8ft for basement}. Only applies to basements/crawlspaces.' + } - args << makeArgument( + args << { type: Argument::Double, name: 'geometry_foundation_height_above_grade', required: false, display_name: 'Geometry: Foundation Height Above Grade', units: 'ft', description: 'The depth above grade of the foundation wall. Only applies to basements/crawlspaces.' - ) + } - args << makeArgument( + args << { type: Argument::Double, name: 'geometry_rim_joist_height', required: false, display_name: 'Geometry: Rim Joist Height', units: 'in', description: 'The height of the rim joists. Only applies to basements/crawlspaces.' - ) + } attic_type_choices = OpenStudio::StringVector.new attic_type_choices << HPXML::AtticTypeFlatRoof @@ -660,27 +669,27 @@ def makeArgument(name:, attic_type_choices << HPXML::AtticTypeConditioned attic_type_choices << HPXML::AtticTypeBelowApartment # I.e., adiabatic - args << makeArgument( + args << { type: Argument::Choice, name: 'geometry_attic_type', choices: attic_type_choices, required: true, display_name: 'Geometry: Attic Type', description: "The attic type of the building. Attic type #{HPXML::AtticTypeConditioned} is not allowed for #{HPXML::ResidentialTypeApartment}s." - ) + } roof_type_choices = OpenStudio::StringVector.new roof_type_choices << Constants::RoofTypeGable roof_type_choices << Constants::RoofTypeHip - args << makeArgument( + args << { type: Argument::Choice, name: 'geometry_roof_type', choices: roof_type_choices, required: false, display_name: 'Geometry: Roof Type', description: 'The roof type of the building. Ignored if the building has a flat roof.' - ) + } roof_pitch_choices = OpenStudio::StringVector.new roof_pitch_choices << '1:12' @@ -696,61 +705,61 @@ def makeArgument(name:, roof_pitch_choices << '11:12' roof_pitch_choices << '12:12' - args << makeArgument( + args << { type: Argument::Choice, name: 'geometry_roof_pitch', choices: roof_pitch_choices, required: false, display_name: 'Geometry: Roof Pitch', description: 'The roof pitch of the attic. Ignored if the building has a flat roof.' - ) + } - args << makeArgument( + args << { type: Argument::Double, name: 'geometry_eaves_depth', required: false, display_name: 'Geometry: Eaves Depth', units: 'ft', description: 'The eaves depth of the roof.' - ) + } - args << makeArgument( + args << { type: Argument::Double, name: 'neighbor_front_distance', required: false, display_name: 'Neighbor: Front Distance', units: 'ft', - description: 'The distance between the unit and the neighboring building to the front (not including eaves). A value of zero indicates no neighbors. Used for shading.' - ) + description: 'The distance between the unit and the neighboring building to the front (not including eaves}. A value of zero indicates no neighbors. Used for shading.' + } - args << makeArgument( + args << { type: Argument::Double, name: 'neighbor_back_distance', required: false, display_name: 'Neighbor: Back Distance', units: 'ft', - description: 'The distance between the unit and the neighboring building to the back (not including eaves). A value of zero indicates no neighbors. Used for shading.' - ) + description: 'The distance between the unit and the neighboring building to the back (not including eaves}. A value of zero indicates no neighbors. Used for shading.' + } - args << makeArgument( + args << { type: Argument::Double, name: 'neighbor_left_distance', required: false, display_name: 'Neighbor: Left Distance', units: 'ft', - description: 'The distance between the unit and the neighboring building to the left (not including eaves). A value of zero indicates no neighbors. Used for shading.' - ) + description: 'The distance between the unit and the neighboring building to the left (not including eaves}. A value of zero indicates no neighbors. Used for shading.' + } - args << makeArgument( + args << { type: Argument::Double, name: 'neighbor_right_distance', required: false, display_name: 'Neighbor: Right Distance', units: 'ft', - description: 'The distance between the unit and the neighboring building to the right (not including eaves). A value of zero indicates no neighbors. Used for shading.' - ) + description: 'The distance between the unit and the neighboring building to the right (not including eaves}. A value of zero indicates no neighbors. Used for shading.' + } - args << makeArgument( + args << { type: Argument::Double, name: 'neighbor_front_height', required: false, @@ -758,9 +767,9 @@ def makeArgument(name:, units: 'ft', description: 'The height of the neighboring building to the front.', default_href: "HPXML Neighbor Building" - ) + } - args << makeArgument( + args << { type: Argument::Double, name: 'neighbor_back_height', required: false, @@ -768,9 +777,9 @@ def makeArgument(name:, units: 'ft', description: 'The height of the neighboring building to the back.', default_href: "HPXML Neighbor Building" - ) + } - args << makeArgument( + args << { type: Argument::Double, name: 'neighbor_left_height', required: false, @@ -778,9 +787,9 @@ def makeArgument(name:, units: 'ft', description: 'The height of the neighboring building to the left.', default_href: "HPXML Neighbor Building" - ) + } - args << makeArgument( + args << { type: Argument::Double, name: 'neighbor_right_height', required: false, @@ -788,25 +797,25 @@ def makeArgument(name:, units: 'ft', description: 'The height of the neighboring building to the right.', default_href: "HPXML Neighbor Building" - ) + } - args << makeArgument( + args << { type: Argument::Double, name: 'floor_over_foundation_assembly_r', required: false, display_name: 'Floor: Over Foundation Assembly R-value', units: 'h-ft^2-R/Btu', description: 'Assembly R-value for the floor over the foundation. Ignored if the building has a slab-on-grade foundation.' - ) + } - args << makeArgument( + args << { type: Argument::Double, name: 'floor_over_garage_assembly_r', required: false, display_name: 'Floor: Over Garage Assembly R-value', units: 'h-ft^2-R/Btu', description: 'Assembly R-value for the floor over the garage. Ignored unless the building has a garage under conditioned space.' - ) + } floor_type_choices = OpenStudio::StringVector.new floor_type_choices << HPXML::FloorTypeWoodFrame @@ -814,14 +823,14 @@ def makeArgument(name:, floor_type_choices << HPXML::FloorTypeConcrete floor_type_choices << HPXML::FloorTypeSteelFrame - args << makeArgument( + args << { type: Argument::Choice, name: 'floor_type', choices: floor_type_choices, required: true, display_name: 'Floor: Type', description: 'The type of floors.' - ) + } foundation_wall_type_choices = OpenStudio::StringVector.new foundation_wall_type_choices << HPXML::FoundationWallTypeSolidConcrete @@ -833,7 +842,7 @@ def makeArgument(name:, foundation_wall_type_choices << HPXML::FoundationWallTypeDoubleBrick foundation_wall_type_choices << HPXML::FoundationWallTypeWood - args << makeArgument( + args << { type: Argument::Choice, name: 'foundation_wall_type', choices: foundation_wall_type_choices, @@ -841,9 +850,9 @@ def makeArgument(name:, display_name: 'Foundation Wall: Type', description: 'The material type of the foundation wall.', default_href: "HPXML Foundation Walls" - ) + } - args << makeArgument( + args << { type: Argument::Double, name: 'foundation_wall_thickness', required: false, @@ -851,22 +860,22 @@ def makeArgument(name:, units: 'in', description: 'The thickness of the foundation wall.', default_href: "HPXML Foundation Walls" - ) + } - args << makeArgument( + args << { type: Argument::Double, name: 'foundation_wall_insulation_r', required: false, display_name: 'Foundation Wall: Insulation Nominal R-value', units: 'h-ft^2-R/Btu', description: 'Nominal R-value for the foundation wall insulation. Only applies to basements/crawlspaces.' - ) + } wall_ins_location_choices = OpenStudio::StringVector.new wall_ins_location_choices << Constants::LocationInterior wall_ins_location_choices << Constants::LocationExterior - args << makeArgument( + args << { type: Argument::Choice, name: 'foundation_wall_insulation_location', choices: wall_ins_location_choices, @@ -874,9 +883,9 @@ def makeArgument(name:, display_name: 'Foundation Wall: Insulation Location', units: 'ft', description: 'Whether the insulation is on the interior or exterior of the foundation wall. Only applies to basements/crawlspaces.' - ) + } - args << makeArgument( + args << { type: Argument::Double, name: 'foundation_wall_insulation_distance_to_top', required: false, @@ -884,9 +893,9 @@ def makeArgument(name:, units: 'ft', description: 'The distance from the top of the foundation wall to the top of the foundation wall insulation. Only applies to basements/crawlspaces.', default_href: "HPXML Foundation Walls" - ) + } - args << makeArgument( + args << { type: Argument::Double, name: 'foundation_wall_insulation_distance_to_bottom', required: false, @@ -894,90 +903,90 @@ def makeArgument(name:, units: 'ft', description: 'The distance from the top of the foundation wall to the bottom of the foundation wall insulation. Only applies to basements/crawlspaces.', default_href: "HPXML Foundation Walls" - ) + } - args << makeArgument( + args << { type: Argument::Double, name: 'foundation_wall_assembly_r', required: false, display_name: 'Foundation Wall: Assembly R-value', units: 'h-ft^2-R/Btu', description: 'Assembly R-value for the foundation walls. Only applies to basements/crawlspaces. If provided, overrides the previous foundation wall insulation inputs. If not provided, it is ignored.' - ) + } - args << makeArgument( + args << { type: Argument::Double, name: 'rim_joist_assembly_r', required: false, display_name: 'Rim Joist: Assembly R-value', units: 'h-ft^2-R/Btu', description: 'Assembly R-value for the rim joists. Only applies to basements/crawlspaces. Required if a rim joist height is provided.' - ) + } - args << makeArgument( + args << { type: Argument::Double, name: 'slab_perimeter_insulation_r', required: false, display_name: 'Slab: Perimeter Insulation Nominal R-value', units: 'h-ft^2-R/Btu', description: 'Nominal R-value of the vertical slab perimeter insulation. Applies to slab-on-grade foundations and basement/crawlspace floors.' - ) + } - args << makeArgument( + args << { type: Argument::Double, name: 'slab_perimeter_insulation_depth', required: false, display_name: 'Slab: Perimeter Insulation Depth', units: 'ft', description: 'Depth from grade to bottom of vertical slab perimeter insulation. Applies to slab-on-grade foundations and basement/crawlspace floors.' - ) + } - args << makeArgument( + args << { type: Argument::Double, name: 'slab_exterior_horizontal_insulation_r', required: false, display_name: 'Slab: Exterior Horizontal Insulation Nominal R-value', units: 'h-ft^2-R/Btu', description: 'Nominal R-value of the slab exterior horizontal insulation. Applies to slab-on-grade foundations and basement/crawlspace floors.' - ) + } - args << makeArgument( + args << { type: Argument::Double, name: 'slab_exterior_horizontal_insulation_width', required: false, display_name: 'Slab: Exterior Horizontal Insulation Width', units: 'ft', description: 'Width of the slab exterior horizontal insulation measured from the exterior surface of the vertical slab perimeter insulation. Applies to slab-on-grade foundations and basement/crawlspace floors.' - ) + } - args << makeArgument( + args << { type: Argument::Double, name: 'slab_exterior_horizontal_insulation_depth_below_grade', required: false, display_name: 'Slab: Exterior Horizontal Insulation Depth Below Grade', units: 'ft', description: 'Depth of the slab exterior horizontal insulation measured from the top surface of the slab exterior horizontal insulation. Applies to slab-on-grade foundations and basement/crawlspace floors.' - ) + } - args << makeArgument( + args << { type: Argument::Double, name: 'slab_under_insulation_r', required: false, display_name: 'Slab: Under Slab Insulation Nominal R-value', units: 'h-ft^2-R/Btu', description: 'Nominal R-value of the horizontal under slab insulation. Applies to slab-on-grade foundations and basement/crawlspace floors.' - ) + } - args << makeArgument( + args << { type: Argument::Double, name: 'slab_under_insulation_width', required: false, display_name: 'Slab: Under Slab Insulation Width', units: 'ft', description: 'Width from slab edge inward of horizontal under-slab insulation. Enter 999 to specify that the under slab insulation spans the entire slab. Applies to slab-on-grade foundations and basement/crawlspace floors.' - ) + } - args << makeArgument( + args << { type: Argument::Double, name: 'slab_thickness', required: false, @@ -985,9 +994,9 @@ def makeArgument(name:, units: 'in', description: 'The thickness of the slab. Zero can be entered if there is a dirt floor instead of a slab.', default_href: "HPXML Slabs" - ) + } - args << makeArgument( + args << { type: Argument::Double, name: 'slab_carpet_fraction', required: false, @@ -995,9 +1004,9 @@ def makeArgument(name:, units: 'Frac', description: 'Fraction of the slab floor area that is carpeted.', default_href: "HPXML Slabs" - ) + } - args << makeArgument( + args << { type: Argument::Double, name: 'slab_carpet_r', required: false, @@ -1005,16 +1014,16 @@ def makeArgument(name:, units: 'h-ft^2-R/Btu', description: 'R-value of the slab carpet.', default_href: "HPXML Slabs" - ) + } - args << makeArgument( + args << { type: Argument::Double, name: 'ceiling_assembly_r', required: false, display_name: 'Ceiling: Assembly R-value', units: 'h-ft^2-R/Btu', - description: 'Assembly R-value for the ceiling (attic floor).' - ) + description: 'Assembly R-value for the ceiling (attic floor}.' + } roof_material_type_choices = OpenStudio::StringVector.new roof_material_type_choices << HPXML::RoofTypeAsphaltShingles @@ -1027,7 +1036,7 @@ def makeArgument(name:, roof_material_type_choices << HPXML::RoofTypeShingles roof_material_type_choices << HPXML::RoofTypeWoodShingles - args << makeArgument( + args << { type: Argument::Choice, name: 'roof_material_type', choices: roof_material_type_choices, @@ -1035,7 +1044,7 @@ def makeArgument(name:, display_name: 'Roof: Material Type', description: 'The material type of the roof.', default_href: "HPXML Roofs" - ) + } color_choices = OpenStudio::StringVector.new color_choices << HPXML::ColorDark @@ -1044,7 +1053,7 @@ def makeArgument(name:, color_choices << HPXML::ColorMediumDark color_choices << HPXML::ColorReflective - args << makeArgument( + args << { type: Argument::Choice, name: 'roof_color', choices: color_choices, @@ -1052,16 +1061,16 @@ def makeArgument(name:, display_name: 'Roof: Color', description: 'The color of the roof.', default_href: "HPXML Roofs" - ) + } - args << makeArgument( + args << { type: Argument::Double, name: 'roof_assembly_r', required: false, display_name: 'Roof: Assembly R-value', units: 'h-ft^2-R/Btu', description: 'Assembly R-value of the roof.' - ) + } radiant_barrier_attic_location_choices = OpenStudio::StringVector.new radiant_barrier_attic_location_choices << Constants::None @@ -1069,21 +1078,21 @@ def makeArgument(name:, radiant_barrier_attic_location_choices << HPXML::RadiantBarrierLocationAtticRoofAndGableWalls radiant_barrier_attic_location_choices << HPXML::RadiantBarrierLocationAtticFloor - args << makeArgument( + args << { type: Argument::Choice, name: 'radiant_barrier_attic_location', choices: radiant_barrier_attic_location_choices, required: false, display_name: 'Attic: Radiant Barrier Location', description: 'The location of the radiant barrier in the attic.' - ) + } radiant_barrier_grade_choices = OpenStudio::StringVector.new radiant_barrier_grade_choices << '1' radiant_barrier_grade_choices << '2' radiant_barrier_grade_choices << '3' - args << makeArgument( + args << { type: Argument::Choice, name: 'radiant_barrier_grade', choices: radiant_barrier_grade_choices, @@ -1091,7 +1100,7 @@ def makeArgument(name:, display_name: 'Attic: Radiant Barrier Grade', description: 'The grade of the radiant barrier in the attic.', default_href: "HPXML Roofs" - ) + } wall_type_choices = OpenStudio::StringVector.new wall_type_choices << HPXML::WallTypeWoodStud @@ -1106,14 +1115,14 @@ def makeArgument(name:, wall_type_choices << HPXML::WallTypeStrawBale wall_type_choices << HPXML::WallTypeBrick - args << makeArgument( + args << { type: Argument::Choice, name: 'wall_type', choices: wall_type_choices, required: true, display_name: 'Wall: Type', description: 'The type of walls.' - ) + } wall_siding_type_choices = OpenStudio::StringVector.new wall_siding_type_choices << HPXML::SidingTypeAluminum @@ -1128,7 +1137,7 @@ def makeArgument(name:, wall_siding_type_choices << HPXML::SidingTypeVinyl wall_siding_type_choices << HPXML::SidingTypeWood - args << makeArgument( + args << { type: Argument::Choice, name: 'wall_siding_type', choices: wall_siding_type_choices, @@ -1136,9 +1145,9 @@ def makeArgument(name:, display_name: 'Wall: Siding Type', description: 'The siding type of the walls. Also applies to rim joists.', default_href: "HPXML Walls" - ) + } - args << makeArgument( + args << { type: Argument::Choice, name: 'wall_color', choices: color_choices, @@ -1146,80 +1155,80 @@ def makeArgument(name:, display_name: 'Wall: Color', description: 'The color of the walls. Also applies to rim joists.', default_href: "HPXML Walls" - ) + } - args << makeArgument( + args << { type: Argument::Double, name: 'wall_assembly_r', required: true, display_name: 'Wall: Assembly R-value', units: 'h-ft^2-R/Btu', description: 'Assembly R-value of the walls.' - ) + } - args << makeArgument( + args << { type: Argument::Double, name: 'window_area_front', required: true, display_name: 'Windows: Front Window Area', units: 'ft^2', description: "The amount of window area on the unit's front facade. A value less than 1 will be treated as a window-to-wall ratio. If the front wall is adiabatic, the value will be ignored." - ) + } - args << makeArgument( + args << { type: Argument::Double, name: 'window_area_back', required: true, display_name: 'Windows: Back Window Area', units: 'ft^2', description: "The amount of window area on the unit's back facade. A value less than 1 will be treated as a window-to-wall ratio. If the back wall is adiabatic, the value will be ignored." - ) + } - args << makeArgument( + args << { type: Argument::Double, name: 'window_area_left', required: true, display_name: 'Windows: Left Window Area', units: 'ft^2', - description: "The amount of window area on the unit's left facade (when viewed from the front). A value less than 1 will be treated as a window-to-wall ratio. If the left wall is adiabatic, the value will be ignored." - ) + description: "The amount of window area on the unit's left facade (when viewed from the front}. A value less than 1 will be treated as a window-to-wall ratio. If the left wall is adiabatic, the value will be ignored." + } - args << makeArgument( + args << { type: Argument::Double, name: 'window_area_right', required: true, display_name: 'Windows: Right Window Area', units: 'ft^2', - description: "The amount of window area on the unit's right facade (when viewed from the front). A value less than 1 will be treated as a window-to-wall ratio. If the right wall is adiabatic, the value will be ignored." - ) + description: "The amount of window area on the unit's right facade (when viewed from the front}. A value less than 1 will be treated as a window-to-wall ratio. If the right wall is adiabatic, the value will be ignored." + } - args << makeArgument( + args << { type: Argument::Double, name: 'window_aspect_ratio', required: true, display_name: 'Windows: Aspect Ratio', units: 'Frac', description: 'Ratio of window height to width.' - ) + } - args << makeArgument( + args << { type: Argument::Double, name: 'window_ufactor', required: true, display_name: 'Windows: U-Factor', units: 'Btu/hr-ft^2-R', description: 'Full-assembly NFRC U-factor.' - ) + } - args << makeArgument( + args << { type: Argument::Double, name: 'window_shgc', required: true, display_name: 'Windows: SHGC', description: 'Full-assembly NFRC solar heat gain coefficient.' - ) + } - args << makeArgument( + args << { type: Argument::Double, name: 'window_fraction_operable', required: false, @@ -1227,9 +1236,9 @@ def makeArgument(name:, units: 'Frac', description: 'Fraction of windows that are operable.', default_href: "HPXML Windows" - ) + } - args << makeArgument( + args << { type: Argument::Integer, name: 'window_natvent_availability', required: false, @@ -1237,7 +1246,7 @@ def makeArgument(name:, units: 'Days/week', description: 'For operable windows, the number of days/week that windows can be opened by occupants for natural ventilation.', default_href: "HPXML Windows" - ) + } window_interior_shading_type_choices = OpenStudio::StringVector.new window_interior_shading_type_choices << HPXML::InteriorShadingTypeLightCurtains @@ -1252,7 +1261,7 @@ def makeArgument(name:, window_interior_shading_type_choices << HPXML::InteriorShadingTypeNone # Not adding inputs for other because that can be anything - args << makeArgument( + args << { type: Argument::Choice, name: 'window_interior_shading_type', choices: window_interior_shading_type_choices, @@ -1260,9 +1269,9 @@ def makeArgument(name:, display_name: 'Windows: Interior Shading Type', description: 'Type of window interior shading. Summer/winter shading coefficients can be provided below instead.', default_href: "HPXML Interior Shading" - ) + } - args << makeArgument( + args << { type: Argument::Double, name: 'window_interior_shading_winter', required: false, @@ -1270,9 +1279,9 @@ def makeArgument(name:, units: 'Frac', description: 'Interior shading coefficient for the winter season, which if provided overrides the shading type input. 1.0 indicates no reduction in solar gain, 0.85 indicates 15% reduction, etc.', default_href: "HPXML Interior Shading" - ) + } - args << makeArgument( + args << { type: Argument::Double, name: 'window_interior_shading_summer', required: false, @@ -1280,17 +1289,17 @@ def makeArgument(name:, units: 'Frac', description: 'Interior shading coefficient for the summer season, which if provided overrides the shading type input. 1.0 indicates no reduction in solar gain, 0.85 indicates 15% reduction, etc.', default_href: "HPXML Interior Shading" - ) + } window_exterior_shading_type_choices = OpenStudio::StringVector.new window_exterior_shading_type_choices << HPXML::ExteriorShadingTypeSolarFilm window_exterior_shading_type_choices << HPXML::ExteriorShadingTypeSolarScreens window_exterior_shading_type_choices << HPXML::ExteriorShadingTypeNone # Not adding inputs for trees since that is more specific to select windows, whereas this will apply to every window - # Not adding inputs for overhangs/neighbors because there are other inputs to describe those (and in more detail) + # Not adding inputs for overhangs/neighbors because there are other inputs to describe those (and in more detail} # Not adding inputs for other because that can be anything - args << makeArgument( + args << { type: Argument::Choice, name: 'window_exterior_shading_type', choices: window_exterior_shading_type_choices, @@ -1298,9 +1307,9 @@ def makeArgument(name:, display_name: 'Windows: Exterior Shading Type', description: 'Type of window exterior shading. Summer/winter shading coefficients can be provided below instead.', default_href: "HPXML Exterior Shading" - ) + } - args << makeArgument( + args << { type: Argument::Double, name: 'window_exterior_shading_winter', required: false, @@ -1308,9 +1317,9 @@ def makeArgument(name:, units: 'Frac', description: 'Exterior shading coefficient for the winter season, which if provided overrides the shading type input. 1.0 indicates no reduction in solar gain, 0.85 indicates 15% reduction, etc.', default_href: "HPXML Exterior Shading" - ) + } - args << makeArgument( + args << { type: Argument::Double, name: 'window_exterior_shading_summer', required: false, @@ -1318,231 +1327,231 @@ def makeArgument(name:, units: 'Frac', description: 'Exterior shading coefficient for the summer season, which if provided overrides the shading type input. 1.0 indicates no reduction in solar gain, 0.85 indicates 15% reduction, etc.', default_href: "HPXML Exterior Shading" - ) + } - args << makeArgument( + args << { type: Argument::String, name: 'window_shading_summer_season', required: false, display_name: 'Windows: Shading Summer Season', description: "Enter a date range like 'May 1 - Sep 30'. Defines the summer season for purposes of shading coefficients; the rest of the year is assumed to be winter.", default_href: "HPXML Windows" - ) + } window_insect_screen_choices = OpenStudio::StringVector.new window_insect_screen_choices << Constants::None window_insect_screen_choices << HPXML::LocationExterior window_insect_screen_choices << HPXML::LocationInterior - args << makeArgument( + args << { type: Argument::Choice, name: 'window_insect_screens', choices: window_insect_screen_choices, required: false, display_name: 'Windows: Insect Screens', description: 'The type of insect screens, if present. If not provided, assumes there are no insect screens.' - ) + } storm_window_type_choices = OpenStudio::StringVector.new storm_window_type_choices << HPXML::WindowGlassTypeClear storm_window_type_choices << HPXML::WindowGlassTypeLowE - args << makeArgument( + args << { type: Argument::Choice, name: 'window_storm_type', choices: storm_window_type_choices, required: false, display_name: 'Windows: Storm Type', description: 'The type of storm, if present. If not provided, assumes there is no storm.' - ) + } - args << makeArgument( + args << { type: Argument::Double, name: 'overhangs_front_depth', required: false, display_name: 'Overhangs: Front Depth', units: 'ft', description: 'The depth of overhangs for windows for the front facade.' - ) + } - args << makeArgument( + args << { type: Argument::Double, name: 'overhangs_front_distance_to_top_of_window', required: false, display_name: 'Overhangs: Front Distance to Top of Window', units: 'ft', description: 'The overhangs distance to the top of window for the front facade.' - ) + } - args << makeArgument( + args << { type: Argument::Double, name: 'overhangs_front_distance_to_bottom_of_window', required: false, display_name: 'Overhangs: Front Distance to Bottom of Window', units: 'ft', description: 'The overhangs distance to the bottom of window for the front facade.' - ) + } - args << makeArgument( + args << { type: Argument::Double, name: 'overhangs_back_depth', required: false, display_name: 'Overhangs: Back Depth', units: 'ft', description: 'The depth of overhangs for windows for the back facade.' - ) + } - args << makeArgument( + args << { type: Argument::Double, name: 'overhangs_back_distance_to_top_of_window', required: false, display_name: 'Overhangs: Back Distance to Top of Window', units: 'ft', description: 'The overhangs distance to the top of window for the back facade.' - ) + } - args << makeArgument( + args << { type: Argument::Double, name: 'overhangs_back_distance_to_bottom_of_window', required: false, display_name: 'Overhangs: Back Distance to Bottom of Window', units: 'ft', description: 'The overhangs distance to the bottom of window for the back facade.' - ) + } - args << makeArgument( + args << { type: Argument::Double, name: 'overhangs_left_depth', required: false, display_name: 'Overhangs: Left Depth', units: 'ft', description: 'The depth of overhangs for windows for the left facade.' - ) + } - args << makeArgument( + args << { type: Argument::Double, name: 'overhangs_left_distance_to_top_of_window', required: false, display_name: 'Overhangs: Left Distance to Top of Window', units: 'ft', description: 'The overhangs distance to the top of window for the left facade.' - ) + } - args << makeArgument( + args << { type: Argument::Double, name: 'overhangs_left_distance_to_bottom_of_window', required: false, display_name: 'Overhangs: Left Distance to Bottom of Window', units: 'ft', description: 'The overhangs distance to the bottom of window for the left facade.' - ) + } - args << makeArgument( + args << { type: Argument::Double, name: 'overhangs_right_depth', required: false, display_name: 'Overhangs: Right Depth', units: 'ft', description: 'The depth of overhangs for windows for the right facade.' - ) + } - args << makeArgument( + args << { type: Argument::Double, name: 'overhangs_right_distance_to_top_of_window', required: false, display_name: 'Overhangs: Right Distance to Top of Window', units: 'ft', description: 'The overhangs distance to the top of window for the right facade.' - ) + } - args << makeArgument( + args << { type: Argument::Double, name: 'overhangs_right_distance_to_bottom_of_window', required: false, display_name: 'Overhangs: Right Distance to Bottom of Window', units: 'ft', description: 'The overhangs distance to the bottom of window for the right facade.' - ) + } - args << makeArgument( + args << { type: Argument::Double, name: 'skylight_area_front', required: false, display_name: 'Skylights: Front Roof Area', units: 'ft^2', description: "The amount of skylight area on the unit's front conditioned roof facade." - ) + } - args << makeArgument( + args << { type: Argument::Double, name: 'skylight_area_back', required: false, display_name: 'Skylights: Back Roof Area', units: 'ft^2', description: "The amount of skylight area on the unit's back conditioned roof facade." - ) + } - args << makeArgument( + args << { type: Argument::Double, name: 'skylight_area_left', required: false, display_name: 'Skylights: Left Roof Area', units: 'ft^2', - description: "The amount of skylight area on the unit's left conditioned roof facade (when viewed from the front)." - ) + description: "The amount of skylight area on the unit's left conditioned roof facade (when viewed from the front}." + } - args << makeArgument( + args << { type: Argument::Double, name: 'skylight_area_right', required: false, display_name: 'Skylights: Right Roof Area', units: 'ft^2', - description: "The amount of skylight area on the unit's right conditioned roof facade (when viewed from the front)." - ) + description: "The amount of skylight area on the unit's right conditioned roof facade (when viewed from the front}." + } - args << makeArgument( + args << { type: Argument::Double, name: 'skylight_ufactor', required: false, display_name: 'Skylights: U-Factor', units: 'Btu/hr-ft^2-R', - description: 'Full-assembly NFRC U-factor.' - ) + description: 'Full-assembly NFRC U-factor. If not provided, defaults to 0.33.' + } - args << makeArgument( + args << { name: 'skylight_shgc', type: Argument::Double, required: false, display_name: 'Skylights: SHGC', - description: 'Full-assembly NFRC solar heat gain coefficient.' - ) + description: 'Full-assembly NFRC solar heat gain coefficient. If not provided, defaults to 0.45.' + } - args << makeArgument( + args << { type: Argument::Choice, name: 'skylight_storm_type', choices: storm_window_type_choices, required: false, display_name: 'Skylights: Storm Type', description: 'The type of storm, if present. If not provided, assumes there is no storm.' - ) + } - args << makeArgument( + args << { type: Argument::Double, name: 'door_area', required: true, display_name: 'Doors: Area', units: 'ft^2', - description: 'The area of the opaque door(s).' - ) + description: 'The area of the opaque door(s}.' + } - args << makeArgument( + args << { type: Argument::Double, name: 'door_rvalue', required: true, display_name: 'Doors: R-value', units: 'h-ft^2-R/Btu', - description: 'R-value of the opaque door(s).' - ) + description: 'R-value of the opaque door(s}.' + } air_leakage_leakiness_description_choices = OpenStudio::StringVector.new air_leakage_leakiness_description_choices << HPXML::LeakinessVeryTight @@ -1551,14 +1560,14 @@ def makeArgument(name:, air_leakage_leakiness_description_choices << HPXML::LeakinessLeaky air_leakage_leakiness_description_choices << HPXML::LeakinessVeryLeaky - args << makeArgument( + args << { type: Argument::Choice, name: 'air_leakage_leakiness_description', choices: air_leakage_leakiness_description_choices, required: false, display_name: 'Air Leakage: Leakiness Description', description: 'Qualitative description of infiltration. If provided, the Year Built of the home is required. Either provide this input or provide a numeric air leakage value below.' - ) + } air_leakage_units_choices = OpenStudio::StringVector.new air_leakage_units_choices << HPXML::UnitsACH @@ -1567,53 +1576,53 @@ def makeArgument(name:, air_leakage_units_choices << HPXML::UnitsCFMNatural air_leakage_units_choices << HPXML::UnitsELA - args << makeArgument( + args << { type: Argument::Choice, name: 'air_leakage_units', choices: air_leakage_units_choices, required: false, display_name: 'Air Leakage: Units', description: 'The unit of measure for the air leakage if providing a numeric air leakage value.' - ) + } - args << makeArgument( + args << { type: Argument::Double, name: 'air_leakage_house_pressure', required: false, display_name: 'Air Leakage: House Pressure', units: 'Pa', description: "The house pressure relative to outside if providing a numeric air leakage value. Required when units are #{HPXML::UnitsACH} or #{HPXML::UnitsCFM}." - ) + } - args << makeArgument( + args << { type: Argument::Double, name: 'air_leakage_value', required: false, display_name: 'Air Leakage: Value', description: "Numeric air leakage value. For '#{HPXML::UnitsELA}', provide value in sq. in. If provided, overrides Leakiness Description input." - ) + } air_leakage_type_choices = OpenStudio::StringVector.new air_leakage_type_choices << HPXML::InfiltrationTypeUnitTotal air_leakage_type_choices << HPXML::InfiltrationTypeUnitExterior - args << makeArgument( + args << { type: Argument::Choice, name: 'air_leakage_type', choices: air_leakage_type_choices, required: false, display_name: 'Air Leakage: Type', description: "Type of air leakage if providing a numeric air leakage value. If '#{HPXML::InfiltrationTypeUnitTotal}', represents the total infiltration to the unit as measured by a compartmentalization test, in which case the air leakage value will be adjusted by the ratio of exterior envelope surface area to total envelope surface area. Otherwise, if '#{HPXML::InfiltrationTypeUnitExterior}', represents the infiltration to the unit from outside only as measured by a guarded test. Required when unit type is #{HPXML::ResidentialTypeSFA} or #{HPXML::ResidentialTypeApartment}." - ) + } - args << makeArgument( + args << { name: 'air_leakage_has_flue_or_chimney_in_conditioned_space', type: Argument::Boolean, required: false, display_name: 'Air Leakage: Has Flue or Chimney in Conditioned Space', description: 'Presence of flue or chimney with combustion air from conditioned space; used for infiltration model.', default_href: "Flue or Chimney" - ) + } heating_system_type_choices = OpenStudio::StringVector.new heating_system_type_choices << Constants::None @@ -1656,34 +1665,34 @@ def makeArgument(name:, compressor_type_choices << HPXML::HVACCompressorTypeTwoStage compressor_type_choices << HPXML::HVACCompressorTypeVariableSpeed - args << makeArgument( + args << { type: Argument::Choice, name: 'heating_system_type', choices: heating_system_type_choices, required: true, display_name: 'Heating System: Type', description: "The type of heating system. Use '#{Constants::None}' if there is no heating system or if there is a heat pump serving a heating load." - ) + } - args << makeArgument( + args << { type: Argument::Choice, name: 'heating_system_fuel', choices: heating_system_fuel_choices, required: false, display_name: 'Heating System: Fuel Type', description: "The fuel type of the heating system. Ignored for #{HPXML::HVACTypeElectricResistance}." - ) + } - args << makeArgument( + args << { type: Argument::Double, name: 'heating_system_heating_efficiency', required: false, display_name: 'Heating System: Rated AFUE or Percent', units: 'Frac', description: 'The rated heating efficiency value of the heating system.' - ) + } - args << makeArgument( + args << { type: Argument::Double, name: 'heating_system_heating_capacity', required: false, @@ -1691,79 +1700,79 @@ def makeArgument(name:, description: 'The output heating capacity of the heating system.', units: 'Btu/hr', default_href: "HPXML Heating Systems" - ) + } - args << makeArgument( + args << { type: Argument::Double, name: 'heating_system_heating_autosizing_factor', required: false, display_name: 'Heating System: Heating Autosizing Factor', description: 'The capacity scaling factor applied to the auto-sizing methodology. If not provided, 1.0 is used.' - ) + } - args << makeArgument( + args << { type: Argument::Double, name: 'heating_system_heating_autosizing_limit', required: false, display_name: 'Heating System: Heating Autosizing Limit', description: 'The maximum capacity limit applied to the auto-sizing methodology. If not provided, no limit is used.', units: 'Btu/hr' - ) + } - args << makeArgument( + args << { type: Argument::Double, name: 'heating_system_fraction_heat_load_served', required: false, display_name: 'Heating System: Fraction Heat Load Served', description: 'The heating load served by the heating system.', units: 'Frac' - ) + } - args << makeArgument( + args << { type: Argument::Double, name: 'heating_system_pilot_light', required: false, display_name: 'Heating System: Pilot Light', description: "The fuel usage of the pilot light. Applies only to #{HPXML::HVACTypeFurnace}, #{HPXML::HVACTypeWallFurnace}, #{HPXML::HVACTypeFloorFurnace}, #{HPXML::HVACTypeStove}, #{HPXML::HVACTypeBoiler}, and #{HPXML::HVACTypeFireplace} with non-electric fuel type. If not provided, assumes no pilot light.", units: 'Btuh' - ) + } - args << makeArgument( + args << { type: Argument::Double, name: 'heating_system_airflow_defect_ratio', required: false, display_name: 'Heating System: Airflow Defect Ratio', - description: "The airflow defect ratio, defined as (InstalledAirflow - DesignAirflow) / DesignAirflow, of the heating system per ANSI/RESNET/ACCA Standard 310. A value of zero means no airflow defect. Applies only to #{HPXML::HVACTypeFurnace}. If not provided, assumes no defect.", + description: "The airflow defect ratio, defined as (InstalledAirflow - DesignAirflow} / DesignAirflow, of the heating system per ANSI/RESNET/ACCA Standard 310. A value of zero means no airflow defect. Applies only to #{HPXML::HVACTypeFurnace}. If not provided, assumes no defect.", units: 'Frac' - ) + } - args << makeArgument( + args << { type: Argument::Choice, name: 'cooling_system_type', choices: cooling_system_type_choices, required: true, display_name: 'Cooling System: Type', description: "The type of cooling system. Use '#{Constants::None}' if there is no cooling system or if there is a heat pump serving a cooling load." - ) + } - args << makeArgument( + args << { type: Argument::Choice, name: 'cooling_system_cooling_efficiency_type', choices: cooling_efficiency_type_choices, required: false, display_name: 'Cooling System: Efficiency Type', - description: "The efficiency type of the cooling system. System types #{HPXML::HVACTypeCentralAirConditioner} and #{HPXML::HVACTypeMiniSplitAirConditioner} use #{HPXML::UnitsSEER} or #{HPXML::UnitsSEER2}. System types #{HPXML::HVACTypeRoomAirConditioner} and #{HPXML::HVACTypePTAC} use #{HPXML::UnitsEER} or #{HPXML::UnitsCEER}. Ignored for system type #{HPXML::HVACTypeEvaporativeCooler}." - ) + description: "The efficiency type of the cooling system. System types #{HPXML::HVACTypeCentralAirConditioner} and #{HPXML::HVACTypeMiniSplitAirConditioner} use #{HPXML::UnitsSEER} or #{HPXML::UnitsSEER2}. System types #{HPXML::HVACTypeRoomAirConditioner} and #{HPXML::HVACTypePTAC} use #{HPXML::UnitsEER} or #{HPXML::UnitsCEER}. Ignored for system type #{HPXML::HVACTypeEvaporativeCooler}. If not provided, defaults to #{HPXML::UnitsSEER}." + } - args << makeArgument( + args << { type: Argument::Double, name: 'cooling_system_cooling_efficiency', required: false, display_name: 'Cooling System: Efficiency', description: "The rated efficiency value of the cooling system. Ignored for #{HPXML::HVACTypeEvaporativeCooler}." - ) + } - args << makeArgument( + args << { type: Argument::Choice, name: 'cooling_system_cooling_compressor_type', choices: compressor_type_choices, @@ -1771,9 +1780,9 @@ def makeArgument(name:, display_name: 'Cooling System: Cooling Compressor Type', description: "The compressor type of the cooling system. Only applies to #{HPXML::HVACTypeCentralAirConditioner} and #{HPXML::HVACTypeMiniSplitAirConditioner}.", default_href: "Central Air Conditioner, Mini-Split Air Conditioner" - ) + } - args << makeArgument( + args << { type: Argument::Double, name: 'cooling_system_cooling_sensible_heat_fraction', required: false, @@ -1781,9 +1790,9 @@ def makeArgument(name:, description: "The sensible heat fraction of the cooling system. Ignored for #{HPXML::HVACTypeEvaporativeCooler}.", default_href: "Central Air Conditioner, Room Air Conditioner, Packaged Terminal Air Conditioner, Mini-Split Air Conditioner", units: 'Frac' - ) + } - args << makeArgument( + args << { type: Argument::Double, name: 'cooling_system_cooling_capacity', required: false, @@ -1791,61 +1800,61 @@ def makeArgument(name:, description: 'The output cooling capacity of the cooling system.', default_href: "Central Air Conditioner, Room Air Conditioner, Packaged Terminal Air Conditioner, Evaporative Cooler, Mini-Split Air Conditioner", units: 'Btu/hr' - ) + } - args << makeArgument( + args << { type: Argument::Double, name: 'cooling_system_cooling_autosizing_factor', required: false, display_name: 'Cooling System: Cooling Autosizing Factor', description: 'The capacity scaling factor applied to the auto-sizing methodology. If not provided, 1.0 is used.' - ) + } - args << makeArgument( + args << { type: Argument::Double, name: 'cooling_system_cooling_autosizing_limit', required: false, display_name: 'Cooling System: Cooling Autosizing Limit', description: 'The maximum capacity limit applied to the auto-sizing methodology. If not provided, no limit is used.', units: 'Btu/hr' - ) + } - args << makeArgument( + args << { type: Argument::Double, name: 'cooling_system_fraction_cool_load_served', required: false, display_name: 'Cooling System: Fraction Cool Load Served', description: 'The cooling load served by the cooling system.', units: 'Frac' - ) + } - args << makeArgument( + args << { name: 'cooling_system_is_ducted', type: Argument::Boolean, required: false, display_name: 'Cooling System: Is Ducted', description: "Whether the cooling system is ducted or not. Only used for #{HPXML::HVACTypeMiniSplitAirConditioner} and #{HPXML::HVACTypeEvaporativeCooler}. It's assumed that #{HPXML::HVACTypeCentralAirConditioner} is ducted, and #{HPXML::HVACTypeRoomAirConditioner} and #{HPXML::HVACTypePTAC} are not ducted." - ) + } - args << makeArgument( + args << { type: Argument::Double, name: 'cooling_system_airflow_defect_ratio', required: false, display_name: 'Cooling System: Airflow Defect Ratio', - description: "The airflow defect ratio, defined as (InstalledAirflow - DesignAirflow) / DesignAirflow, of the cooling system per ANSI/RESNET/ACCA Standard 310. A value of zero means no airflow defect. Applies only to #{HPXML::HVACTypeCentralAirConditioner} and ducted #{HPXML::HVACTypeMiniSplitAirConditioner}. If not provided, assumes no defect.", + description: "The airflow defect ratio, defined as (InstalledAirflow - DesignAirflow} / DesignAirflow, of the cooling system per ANSI/RESNET/ACCA Standard 310. A value of zero means no airflow defect. Applies only to #{HPXML::HVACTypeCentralAirConditioner} and ducted #{HPXML::HVACTypeMiniSplitAirConditioner}. If not provided, assumes no defect.", units: 'Frac' - ) + } - args << makeArgument( + args << { type: Argument::Double, name: 'cooling_system_charge_defect_ratio', required: false, display_name: 'Cooling System: Charge Defect Ratio', - description: "The refrigerant charge defect ratio, defined as (InstalledCharge - DesignCharge) / DesignCharge, of the cooling system per ANSI/RESNET/ACCA Standard 310. A value of zero means no refrigerant charge defect. Applies only to #{HPXML::HVACTypeCentralAirConditioner} and #{HPXML::HVACTypeMiniSplitAirConditioner}. If not provided, assumes no defect.", + description: "The refrigerant charge defect ratio, defined as (InstalledCharge - DesignCharge} / DesignCharge, of the cooling system per ANSI/RESNET/ACCA Standard 310. A value of zero means no refrigerant charge defect. Applies only to #{HPXML::HVACTypeCentralAirConditioner} and #{HPXML::HVACTypeMiniSplitAirConditioner}. If not provided, assumes no defect.", units: 'Frac' - ) + } - args << makeArgument( + args << { type: Argument::Double, name: 'cooling_system_crankcase_heater_watts', required: false, @@ -1853,27 +1862,27 @@ def makeArgument(name:, description: "Cooling system crankcase heater power consumption in Watts. Applies only to #{HPXML::HVACTypeCentralAirConditioner}, #{HPXML::HVACTypeRoomAirConditioner}, #{HPXML::HVACTypePTAC} and #{HPXML::HVACTypeMiniSplitAirConditioner}.", default_href: "Central Air Conditioner, Room Air Conditioner, Packaged Terminal Air Conditioner, Mini-Split Air Conditioner", units: 'W' - ) + } - args << makeArgument( + args << { type: Argument::Choice, name: 'cooling_system_integrated_heating_system_fuel', choices: heating_system_fuel_choices, required: false, display_name: 'Cooling System: Integrated Heating System Fuel Type', description: "The fuel type of the heating system integrated into cooling system. Only used for #{HPXML::HVACTypePTAC} and #{HPXML::HVACTypeRoomAirConditioner}." - ) + } - args << makeArgument( + args << { type: Argument::Double, name: 'cooling_system_integrated_heating_system_efficiency_percent', required: false, display_name: 'Cooling System: Integrated Heating System Efficiency', units: 'Frac', description: "The rated heating efficiency value of the heating system integrated into cooling system. Only used for #{HPXML::HVACTypePTAC} and #{HPXML::HVACTypeRoomAirConditioner}." - ) + } - args << makeArgument( + args << { type: Argument::Double, name: 'cooling_system_integrated_heating_system_capacity', required: false, @@ -1881,16 +1890,16 @@ def makeArgument(name:, description: "The output heating capacity of the heating system integrated into cooling system. Only used for #{HPXML::HVACTypeRoomAirConditioner} and #{HPXML::HVACTypePTAC}.", default_href: "Room Air Conditioner, Packaged Terminal Air Conditioner", units: 'Btu/hr' - ) + } - args << makeArgument( + args << { type: Argument::Double, name: 'cooling_system_integrated_heating_system_fraction_heat_load_served', required: false, display_name: 'Cooling System: Integrated Heating System Fraction Heat Load Served', description: "The heating load served by the heating system integrated into cooling system. Only used for #{HPXML::HVACTypePTAC} and #{HPXML::HVACTypeRoomAirConditioner}.", units: 'Frac' - ) + } heat_pump_type_choices = OpenStudio::StringVector.new heat_pump_type_choices << Constants::None @@ -1925,50 +1934,50 @@ def makeArgument(name:, heat_pump_backup_sizing_choices << HPXML::HeatPumpBackupSizingEmergency heat_pump_backup_sizing_choices << HPXML::HeatPumpBackupSizingSupplemental - args << makeArgument( + args << { type: Argument::Choice, name: 'heat_pump_type', choices: heat_pump_type_choices, required: true, display_name: 'Heat Pump: Type', description: "The type of heat pump. Use '#{Constants::None}' if there is no heat pump." - ) + } - args << makeArgument( + args << { type: Argument::Choice, name: 'heat_pump_heating_efficiency_type', choices: heat_pump_heating_efficiency_type_choices, required: false, display_name: 'Heat Pump: Heating Efficiency Type', - description: "The heating efficiency type of heat pump. System types #{HPXML::HVACTypeHeatPumpAirToAir} and #{HPXML::HVACTypeHeatPumpMiniSplit} use #{HPXML::UnitsHSPF} or #{HPXML::UnitsHSPF2}. System types #{HPXML::HVACTypeHeatPumpGroundToAir}, #{HPXML::HVACTypeHeatPumpPTHP} and #{HPXML::HVACTypeHeatPumpRoom} use #{HPXML::UnitsCOP}." - ) + description: "The heating efficiency type of heat pump. System types #{HPXML::HVACTypeHeatPumpAirToAir} and #{HPXML::HVACTypeHeatPumpMiniSplit} use #{HPXML::UnitsHSPF} or #{HPXML::UnitsHSPF2}. System types #{HPXML::HVACTypeHeatPumpGroundToAir}, #{HPXML::HVACTypeHeatPumpPTHP} and #{HPXML::HVACTypeHeatPumpRoom} use #{HPXML::UnitsCOP}. If not provided, defaults to #{HPXML::UnitsHSPF}." + } - args << makeArgument( + args << { type: Argument::Double, name: 'heat_pump_heating_efficiency', required: false, display_name: 'Heat Pump: Heating Efficiency', description: 'The rated heating efficiency value of the heat pump.' - ) + } - args << makeArgument( + args << { type: Argument::Choice, name: 'heat_pump_cooling_efficiency_type', choices: cooling_efficiency_type_choices, required: false, display_name: 'Heat Pump: Cooling Efficiency Type', - description: "The cooling efficiency type of heat pump. System types #{HPXML::HVACTypeHeatPumpAirToAir} and #{HPXML::HVACTypeHeatPumpMiniSplit} use #{HPXML::UnitsSEER} or #{HPXML::UnitsSEER2}. System types #{HPXML::HVACTypeHeatPumpGroundToAir}, #{HPXML::HVACTypeHeatPumpPTHP} and #{HPXML::HVACTypeHeatPumpRoom} use #{HPXML::UnitsEER}." - ) + description: "The cooling efficiency type of heat pump. System types #{HPXML::HVACTypeHeatPumpAirToAir} and #{HPXML::HVACTypeHeatPumpMiniSplit} use #{HPXML::UnitsSEER} or #{HPXML::UnitsSEER2}. System types #{HPXML::HVACTypeHeatPumpGroundToAir}, #{HPXML::HVACTypeHeatPumpPTHP} and #{HPXML::HVACTypeHeatPumpRoom} use #{HPXML::UnitsEER}. If not provided, defaults to #{HPXML::UnitsSEER}." + } - args << makeArgument( + args << { type: Argument::Double, name: 'heat_pump_cooling_efficiency', required: false, display_name: 'Heat Pump: Cooling Efficiency', description: 'The rated cooling efficiency value of the heat pump.' - ) + } - args << makeArgument( + args << { type: Argument::Choice, name: 'heat_pump_cooling_compressor_type', choices: compressor_type_choices, @@ -1976,9 +1985,9 @@ def makeArgument(name:, display_name: 'Heat Pump: Cooling Compressor Type', description: "The compressor type of the heat pump. Only applies to #{HPXML::HVACTypeHeatPumpAirToAir} and #{HPXML::HVACTypeHeatPumpMiniSplit}.", default_href: "Air-to-Air Heat Pump, Mini-Split Heat Pump" - ) + } - args << makeArgument( + args << { type: Argument::Double, name: 'heat_pump_cooling_sensible_heat_fraction', required: false, @@ -1986,9 +1995,9 @@ def makeArgument(name:, description: 'The sensible heat fraction of the heat pump.', default_href: "Air-to-Air Heat Pump, Mini-Split Heat Pump, Packaged Terminal Heat Pump, Room Air Conditioner w/ Reverse Cycle, Ground-to-Air Heat Pump", units: 'Frac' - ) + } - args << makeArgument( + args << { type: Argument::Double, name: 'heat_pump_heating_capacity', required: false, @@ -1996,45 +2005,45 @@ def makeArgument(name:, description: 'The output heating capacity of the heat pump.', default_href: "Air-to-Air Heat Pump, Mini-Split Heat Pump, Packaged Terminal Heat Pump, Room Air Conditioner w/ Reverse Cycle, Ground-to-Air Heat Pump", units: 'Btu/hr' - ) + } - args << makeArgument( + args << { type: Argument::Double, name: 'heat_pump_heating_autosizing_factor', required: false, display_name: 'Heat Pump: Heating Autosizing Factor', description: 'The capacity scaling factor applied to the auto-sizing methodology. If not provided, 1.0 is used.' - ) + } - args << makeArgument( + args << { type: Argument::Double, name: 'heat_pump_heating_autosizing_limit', required: false, display_name: 'Heat Pump: Heating Autosizing Limit', description: 'The maximum capacity limit applied to the auto-sizing methodology. If not provided, no limit is used.', units: 'Btu/hr' - ) + } - args << makeArgument( + args << { type: Argument::Double, name: 'heat_pump_heating_capacity_retention_fraction', required: false, display_name: 'Heat Pump: Heating Capacity Retention Fraction', - description: "The output heating capacity of the heat pump at a user-specified temperature (e.g., 17F or 5F) divided by the above nominal heating capacity. Applies to all heat pump types except #{HPXML::HVACTypeHeatPumpGroundToAir}.", + description: "The output heating capacity of the heat pump at a user-specified temperature (e.g., 17F or 5F} divided by the above nominal heating capacity. Applies to all heat pump types except #{HPXML::HVACTypeHeatPumpGroundToAir}.", default_href: "Air-to-Air Heat Pump, Mini-Split Heat Pump, Packaged Terminal Heat Pump, Room Air Conditioner w/ Reverse Cycle", units: 'Frac' - ) + } - args << makeArgument( + args << { type: Argument::Double, name: 'heat_pump_heating_capacity_retention_temp', required: false, display_name: 'Heat Pump: Heating Capacity Retention Temperature', - description: "The user-specified temperature (e.g., 17F or 5F) for the above heating capacity retention fraction. Applies to all heat pump types except #{HPXML::HVACTypeHeatPumpGroundToAir}. Required if the Heating Capacity Retention Fraction is provided.", + description: "The user-specified temperature (e.g., 17F or 5F} for the above heating capacity retention fraction. Applies to all heat pump types except #{HPXML::HVACTypeHeatPumpGroundToAir}. Required if the Heating Capacity Retention Fraction is provided.", units: 'F' - ) + } - args << makeArgument( + args << { type: Argument::Double, name: 'heat_pump_cooling_capacity', required: false, @@ -2042,97 +2051,97 @@ def makeArgument(name:, description: 'The output cooling capacity of the heat pump.', default_href: "Air-to-Air Heat Pump, Mini-Split Heat Pump, Packaged Terminal Heat Pump, Room Air Conditioner w/ Reverse Cycle, Ground-to-Air Heat Pump", units: 'Btu/hr' - ) + } - args << makeArgument( + args << { type: Argument::Double, name: 'heat_pump_cooling_autosizing_factor', required: false, display_name: 'Heat Pump: Cooling Autosizing Factor', description: 'The capacity scaling factor applied to the auto-sizing methodology. If not provided, 1.0 is used.' - ) + } - args << makeArgument( + args << { type: Argument::Double, name: 'heat_pump_cooling_autosizing_limit', required: false, display_name: 'Heat Pump: Cooling Autosizing Limit', description: 'The maximum capacity limit applied to the auto-sizing methodology. If not provided, no limit is used.', units: 'Btu/hr' - ) + } - args << makeArgument( + args << { type: Argument::Double, name: 'heat_pump_fraction_heat_load_served', required: false, display_name: 'Heat Pump: Fraction Heat Load Served', description: 'The heating load served by the heat pump.', units: 'Frac' - ) + } - args << makeArgument( + args << { type: Argument::Double, name: 'heat_pump_fraction_cool_load_served', required: false, display_name: 'Heat Pump: Fraction Cool Load Served', description: 'The cooling load served by the heat pump.', units: 'Frac' - ) + } - args << makeArgument( + args << { type: Argument::Double, name: 'heat_pump_compressor_lockout_temp', required: false, display_name: 'Heat Pump: Compressor Lockout Temperature', - description: "The temperature below which the heat pump compressor is disabled. If both this and Backup Heating Lockout Temperature are provided and use the same value, it essentially defines a switchover temperature (for, e.g., a dual-fuel heat pump). Applies to all heat pump types other than #{HPXML::HVACTypeHeatPumpGroundToAir}.", + description: "The temperature below which the heat pump compressor is disabled. If both this and Backup Heating Lockout Temperature are provided and use the same value, it essentially defines a switchover temperature (for, e.g., a dual-fuel heat pump}. Applies to all heat pump types other than #{HPXML::HVACTypeHeatPumpGroundToAir}.", default_href: "Air-to-Air Heat Pump, Mini-Split Heat Pump, Packaged Terminal Heat Pump, Room Air Conditioner w/ Reverse Cycle", units: 'F' - ) + } - args << makeArgument( + args << { type: Argument::Choice, name: 'heat_pump_backup_type', choices: heat_pump_backup_type_choices, required: false, display_name: 'Heat Pump: Backup Type', description: "The backup type of the heat pump. If '#{HPXML::HeatPumpBackupTypeIntegrated}', represents e.g. built-in electric strip heat or dual-fuel integrated furnace. If '#{HPXML::HeatPumpBackupTypeSeparate}', represents e.g. electric baseboard or boiler based on the Heating System 2 specified below. Use '#{Constants::None}' if there is no backup heating." - ) + } - args << makeArgument( + args << { type: Argument::Double, name: 'heat_pump_backup_heating_autosizing_factor', required: false, display_name: 'Heat Pump: Backup Heating Autosizing Factor', description: "The capacity scaling factor applied to the auto-sizing methodology if Backup Type is '#{HPXML::HeatPumpBackupTypeIntegrated}'. If not provided, 1.0 is used. If Backup Type is '#{HPXML::HeatPumpBackupTypeSeparate}', use Heating System 2: Heating Autosizing Factor." - ) + } - args << makeArgument( + args << { type: Argument::Double, name: 'heat_pump_backup_heating_autosizing_limit', required: false, display_name: 'Heat Pump: Backup Heating Autosizing Limit', description: "The maximum capacity limit applied to the auto-sizing methodology if Backup Type is '#{HPXML::HeatPumpBackupTypeIntegrated}'. If not provided, no limit is used. If Backup Type is '#{HPXML::HeatPumpBackupTypeSeparate}', use Heating System 2: Heating Autosizing Limit.", units: 'Btu/hr' - ) + } - args << makeArgument( + args << { type: Argument::Choice, name: 'heat_pump_backup_fuel', choices: heat_pump_backup_fuel_choices, required: false, display_name: 'Heat Pump: Backup Fuel Type', - description: "The backup fuel type of the heat pump. Only applies if Backup Type is '#{HPXML::HeatPumpBackupTypeIntegrated}'." - ) + description: "The backup fuel type of the heat pump. Only applies if Backup Type is '#{HPXML::HeatPumpBackupTypeIntegrated}'. If not provided, defaults to electricity." + } - args << makeArgument( + args << { type: Argument::Double, name: 'heat_pump_backup_heating_efficiency', required: false, display_name: 'Heat Pump: Backup Rated Efficiency', - description: "The backup rated efficiency value of the heat pump. Percent for electricity fuel type. AFUE otherwise. Only applies if Backup Type is '#{HPXML::HeatPumpBackupTypeIntegrated}'." - ) + description: "The backup rated efficiency value of the heat pump. Percent for electricity fuel type. AFUE otherwise. Only applies if Backup Type is '#{HPXML::HeatPumpBackupTypeIntegrated}'. If not provided, defaults to 1." + } - args << makeArgument( + args << { type: Argument::Double, name: 'heat_pump_backup_heating_capacity', required: false, @@ -2140,19 +2149,19 @@ def makeArgument(name:, description: "The backup output heating capacity of the heat pump. Only applies if Backup Type is '#{HPXML::HeatPumpBackupTypeIntegrated}'.", default_href: "Backup", units: 'Btu/hr' - ) + } - args << makeArgument( + args << { type: Argument::Double, name: 'heat_pump_backup_heating_lockout_temp', required: false, display_name: 'Heat Pump: Backup Heating Lockout Temperature', - description: "The temperature above which the heat pump backup system is disabled. If both this and Compressor Lockout Temperature are provided and use the same value, it essentially defines a switchover temperature (for, e.g., a dual-fuel heat pump). Applies for both Backup Type of '#{HPXML::HeatPumpBackupTypeIntegrated}' and '#{HPXML::HeatPumpBackupTypeSeparate}'.", + description: "The temperature above which the heat pump backup system is disabled. If both this and Compressor Lockout Temperature are provided and use the same value, it essentially defines a switchover temperature (for, e.g., a dual-fuel heat pump}. Applies for both Backup Type of '#{HPXML::HeatPumpBackupTypeIntegrated}' and '#{HPXML::HeatPumpBackupTypeSeparate}'.", default_href: "Backup", units: 'F' - ) + } - args << makeArgument( + args << { type: Argument::Choice, name: 'heat_pump_sizing_methodology', choices: heat_pump_sizing_choices, @@ -2160,9 +2169,9 @@ def makeArgument(name:, display_name: 'Heat Pump: Sizing Methodology', description: 'The auto-sizing methodology to use when the heat pump capacity is not provided.', default_href: "HPXML HVAC Sizing Control" - ) + } - args << makeArgument( + args << { type: Argument::Choice, name: 'heat_pump_backup_sizing_methodology', choices: heat_pump_backup_sizing_choices, @@ -2170,35 +2179,35 @@ def makeArgument(name:, display_name: 'Heat Pump: Backup Sizing Methodology', description: 'The auto-sizing methodology to use when the heat pump backup capacity is not provided.', default_href: "HPXML HVAC Sizing Control" - ) + } - args << makeArgument( + args << { name: 'heat_pump_is_ducted', type: Argument::Boolean, required: false, display_name: 'Heat Pump: Is Ducted', description: "Whether the heat pump is ducted or not. Only used for #{HPXML::HVACTypeHeatPumpMiniSplit}. It's assumed that #{HPXML::HVACTypeHeatPumpAirToAir} and #{HPXML::HVACTypeHeatPumpGroundToAir} are ducted, and #{HPXML::HVACTypeHeatPumpPTHP} and #{HPXML::HVACTypeHeatPumpRoom} are not ducted. If not provided, assumes not ducted." - ) + } - args << makeArgument( + args << { type: Argument::Double, name: 'heat_pump_airflow_defect_ratio', required: false, display_name: 'Heat Pump: Airflow Defect Ratio', - description: "The airflow defect ratio, defined as (InstalledAirflow - DesignAirflow) / DesignAirflow, of the heat pump per ANSI/RESNET/ACCA Standard 310. A value of zero means no airflow defect. Applies only to #{HPXML::HVACTypeHeatPumpAirToAir}, ducted #{HPXML::HVACTypeHeatPumpMiniSplit}, and #{HPXML::HVACTypeHeatPumpGroundToAir}. If not provided, assumes no defect.", + description: "The airflow defect ratio, defined as (InstalledAirflow - DesignAirflow} / DesignAirflow, of the heat pump per ANSI/RESNET/ACCA Standard 310. A value of zero means no airflow defect. Applies only to #{HPXML::HVACTypeHeatPumpAirToAir}, ducted #{HPXML::HVACTypeHeatPumpMiniSplit}, and #{HPXML::HVACTypeHeatPumpGroundToAir}. If not provided, assumes no defect.", units: 'Frac' - ) + } - args << makeArgument( + args << { type: Argument::Double, name: 'heat_pump_charge_defect_ratio', required: false, display_name: 'Heat Pump: Charge Defect Ratio', - description: 'The refrigerant charge defect ratio, defined as (InstalledCharge - DesignCharge) / DesignCharge, of the heat pump per ANSI/RESNET/ACCA Standard 310. A value of zero means no refrigerant charge defect. Applies to all heat pump types. If not provided, assumes no defect.', + description: 'The refrigerant charge defect ratio, defined as (InstalledCharge - DesignCharge} / DesignCharge, of the heat pump per ANSI/RESNET/ACCA Standard 310. A value of zero means no refrigerant charge defect. Applies to all heat pump types. If not provided, assumes no defect.', units: 'Frac' - ) + } - args << makeArgument( + args << { type: Argument::Double, name: 'heat_pump_crankcase_heater_watts', required: false, @@ -2206,110 +2215,110 @@ def makeArgument(name:, description: "Heat Pump crankcase heater power consumption in Watts. Applies only to #{HPXML::HVACTypeHeatPumpAirToAir}, #{HPXML::HVACTypeHeatPumpMiniSplit}, #{HPXML::HVACTypeHeatPumpPTHP} and #{HPXML::HVACTypeHeatPumpRoom}.", default_href: "Air-to-Air Heat Pump, Mini-Split Heat Pump, Packaged Terminal Heat Pump, Room Air Conditioner w/ Reverse Cycle", units: 'W' - ) + } perf_data_capacity_type_choices = OpenStudio::StringVector.new perf_data_capacity_type_choices << 'Absolute capacities' perf_data_capacity_type_choices << 'Normalized capacity fractions' - args << makeArgument( + args << { type: Argument::Choice, name: 'hvac_perf_data_capacity_type', choices: perf_data_capacity_type_choices, required: false, display_name: 'HVAC Detailed Performance Data: Capacity Type', - description: 'Type of capacity values for detailed performance data if available. Applies only to variable-speed air-source HVAC systems (central air conditioners, mini-split air conditioners, air-to-air heat pumps, and mini-split heat pumps).' - ) + description: 'Type of capacity values for detailed performance data if available. Applies only to variable-speed air-source HVAC systems (central air conditioners, mini-split air conditioners, air-to-air heat pumps, and mini-split heat pumps}.' + } - args << makeArgument( + args << { type: Argument::String, name: 'hvac_perf_data_heating_outdoor_temperatures', required: false, display_name: 'HVAC Detailed Performance Data: Heating Outdoor Temperatures', - description: 'Outdoor temperatures of heating detailed performance data if available. Applies only to variable-speed air-source HVAC systems (central air conditioners, mini-split air conditioners, air-to-air heat pumps, and mini-split heat pumps). One of the outdoor temperatures must be 47 F. At least two performance data points are required using a comma-separated list.', + description: 'Outdoor temperatures of heating detailed performance data if available. Applies only to variable-speed air-source HVAC systems (central air conditioners, mini-split air conditioners, air-to-air heat pumps, and mini-split heat pumps}. One of the outdoor temperatures must be 47 F. At least two performance data points are required using a comma-separated list.', units: 'F' - ) + } - args << makeArgument( + args << { type: Argument::String, name: 'hvac_perf_data_heating_min_speed_capacities', required: false, display_name: 'HVAC Detailed Performance Data: Heating Minimum Speed Capacities', - description: 'Minimum speed capacities of heating detailed performance data if available. Applies only to variable-speed air-source HVAC systems (central air conditioners, mini-split air conditioners, air-to-air heat pumps, and mini-split heat pumps). At least two performance data points are required using a comma-separated list.', + description: 'Minimum speed capacities of heating detailed performance data if available. Applies only to variable-speed air-source HVAC systems (central air conditioners, mini-split air conditioners, air-to-air heat pumps, and mini-split heat pumps}. At least two performance data points are required using a comma-separated list.', units: 'Btu/hr or Frac' - ) + } - args << makeArgument( + args << { type: Argument::String, name: 'hvac_perf_data_heating_max_speed_capacities', required: false, display_name: 'HVAC Detailed Performance Data: Heating Maximum Speed Capacities', - description: 'Maximum speed capacities of heating detailed performance data if available. Applies only to variable-speed air-source HVAC systems (central air conditioners, mini-split air conditioners, air-to-air heat pumps, and mini-split heat pumps). At least two performance data points are required using a comma-separated list.', + description: 'Maximum speed capacities of heating detailed performance data if available. Applies only to variable-speed air-source HVAC systems (central air conditioners, mini-split air conditioners, air-to-air heat pumps, and mini-split heat pumps}. At least two performance data points are required using a comma-separated list.', units: 'Btu/hr or Frac' - ) + } - args << makeArgument( + args << { type: Argument::String, name: 'hvac_perf_data_heating_min_speed_cops', required: false, display_name: 'HVAC Detailed Performance Data: Heating Minimum Speed COPs', - description: 'Minimum speed efficiency COP values of heating detailed performance data if available. Applies only to variable-speed air-source HVAC systems (central air conditioners, mini-split air conditioners, air-to-air heat pumps, and mini-split heat pumps). At least two performance data points are required using a comma-separated list.', + description: 'Minimum speed efficiency COP values of heating detailed performance data if available. Applies only to variable-speed air-source HVAC systems (central air conditioners, mini-split air conditioners, air-to-air heat pumps, and mini-split heat pumps}. At least two performance data points are required using a comma-separated list.', units: 'W/W' - ) + } - args << makeArgument( + args << { type: Argument::String, name: 'hvac_perf_data_heating_max_speed_cops', required: false, display_name: 'HVAC Detailed Performance Data: Heating Maximum Speed COPs', - description: 'Maximum speed efficiency COP values of heating detailed performance data if available. Applies only to variable-speed air-source HVAC systems (central air conditioners, mini-split air conditioners, air-to-air heat pumps, and mini-split heat pumps). At least two performance data points are required using a comma-separated list.', + description: 'Maximum speed efficiency COP values of heating detailed performance data if available. Applies only to variable-speed air-source HVAC systems (central air conditioners, mini-split air conditioners, air-to-air heat pumps, and mini-split heat pumps}. At least two performance data points are required using a comma-separated list.', units: 'W/W' - ) + } - args << makeArgument( + args << { type: Argument::String, name: 'hvac_perf_data_cooling_outdoor_temperatures', required: false, display_name: 'HVAC Detailed Performance Data: Cooling Outdoor Temperatures', - description: 'Outdoor temperatures of cooling detailed performance data if available. Applies only to variable-speed air-source HVAC systems (central air conditioners, mini-split air conditioners, air-to-air heat pumps, and mini-split heat pumps). One of the outdoor temperatures must be 95 F. At least two performance data points are required using a comma-separated list.', + description: 'Outdoor temperatures of cooling detailed performance data if available. Applies only to variable-speed air-source HVAC systems (central air conditioners, mini-split air conditioners, air-to-air heat pumps, and mini-split heat pumps}. One of the outdoor temperatures must be 95 F. At least two performance data points are required using a comma-separated list.', units: 'F' - ) + } - args << makeArgument( + args << { type: Argument::String, name: 'hvac_perf_data_cooling_min_speed_capacities', required: false, display_name: 'HVAC Detailed Performance Data: Cooling Minimum Speed Capacities', - description: 'Minimum speed capacities of cooling detailed performance data if available. Applies only to variable-speed air-source HVAC systems (central air conditioners, mini-split air conditioners, air-to-air heat pumps, and mini-split heat pumps). At least two performance data points are required using a comma-separated list.', + description: 'Minimum speed capacities of cooling detailed performance data if available. Applies only to variable-speed air-source HVAC systems (central air conditioners, mini-split air conditioners, air-to-air heat pumps, and mini-split heat pumps}. At least two performance data points are required using a comma-separated list.', units: 'Btu/hr or Frac' - ) + } - args << makeArgument( + args << { type: Argument::String, name: 'hvac_perf_data_cooling_max_speed_capacities', required: false, display_name: 'HVAC Detailed Performance Data: Cooling Maximum Speed Capacities', - description: 'Maximum speed capacities of cooling detailed performance data if available. Applies only to variable-speed air-source HVAC systems (central air conditioners, mini-split air conditioners, air-to-air heat pumps, and mini-split heat pumps). At least two performance data points are required using a comma-separated list.', + description: 'Maximum speed capacities of cooling detailed performance data if available. Applies only to variable-speed air-source HVAC systems (central air conditioners, mini-split air conditioners, air-to-air heat pumps, and mini-split heat pumps}. At least two performance data points are required using a comma-separated list.', units: 'Btu/hr or Frac' - ) + } - args << makeArgument( + args << { type: Argument::String, name: 'hvac_perf_data_cooling_min_speed_cops', required: false, display_name: 'HVAC Detailed Performance Data: Cooling Minimum Speed COPs', - description: 'Minimum speed efficiency COP values of cooling detailed performance data if available. Applies only to variable-speed air-source HVAC systems (central air conditioners, mini-split air conditioners, air-to-air heat pumps, and mini-split heat pumps). At least two performance data points are required using a comma-separated list.', + description: 'Minimum speed efficiency COP values of cooling detailed performance data if available. Applies only to variable-speed air-source HVAC systems (central air conditioners, mini-split air conditioners, air-to-air heat pumps, and mini-split heat pumps}. At least two performance data points are required using a comma-separated list.', units: 'W/W' - ) + } - args << makeArgument( + args << { type: Argument::String, name: 'hvac_perf_data_cooling_max_speed_cops', required: false, display_name: 'HVAC Detailed Performance Data: Cooling Maximum Speed COPs', - description: 'Maximum speed efficiency COP values of cooling detailed performance data if available. Applies only to variable-speed air-source HVAC systems (central air conditioners, mini-split air conditioners, air-to-air heat pumps, and mini-split heat pumps). At least two performance data points are required using a comma-separated list.', + description: 'Maximum speed efficiency COP values of cooling detailed performance data if available. Applies only to variable-speed air-source HVAC systems (central air conditioners, mini-split air conditioners, air-to-air heat pumps, and mini-split heat pumps}. At least two performance data points are required using a comma-separated list.', units: 'W/W' - ) + } geothermal_loop_configuration_choices = OpenStudio::StringVector.new geothermal_loop_configuration_choices << Constants::None @@ -2318,7 +2327,7 @@ def makeArgument(name:, # geothermal_loop_configuration_choices << HPXML::GeothermalLoopLoopConfigurationOther geothermal_loop_configuration_choices << HPXML::GeothermalLoopLoopConfigurationVertical - args << makeArgument( + args << { type: Argument::Choice, name: 'geothermal_loop_configuration', choices: geothermal_loop_configuration_choices, @@ -2326,7 +2335,7 @@ def makeArgument(name:, display_name: 'Geothermal Loop: Configuration', description: "Configuration of the geothermal loop. Only applies to #{HPXML::HVACTypeHeatPumpGroundToAir} heat pump type.", default_href: "Ground-to-Air Heat Pump" - ) + } geothermal_loop_borefield_configuration_choices = OpenStudio::StringVector.new valid_bore_configs = HVACSizing.get_geothermal_loop_valid_configurations @@ -2334,7 +2343,7 @@ def makeArgument(name:, geothermal_loop_borefield_configuration_choices << valid_bore_config end - args << makeArgument( + args << { type: Argument::Choice, name: 'geothermal_loop_borefield_configuration', choices: geothermal_loop_borefield_configuration_choices, @@ -2342,9 +2351,9 @@ def makeArgument(name:, display_name: 'Geothermal Loop: Borefield Configuration', description: "Borefield configuration of the geothermal loop. Only applies to #{HPXML::HVACTypeHeatPumpGroundToAir} heat pump type.", default_href: "HPXML Geothermal Loops" - ) + } - args << makeArgument( + args << { type: Argument::Double, name: 'geothermal_loop_loop_flow', required: false, @@ -2352,9 +2361,9 @@ def makeArgument(name:, description: "Water flow rate through the geothermal loop. Only applies to #{HPXML::HVACTypeHeatPumpGroundToAir} heat pump type.", default_href: "HPXML Geothermal Loops", units: 'gpm' - ) + } - args << makeArgument( + args << { type: Argument::Integer, name: 'geothermal_loop_boreholes_count', required: false, @@ -2362,19 +2371,19 @@ def makeArgument(name:, description: "Number of boreholes. Only applies to #{HPXML::HVACTypeHeatPumpGroundToAir} heat pump type.", default_href: "HPXML Geothermal Loops", units: '#' - ) + } - args << makeArgument( + args << { type: Argument::Double, name: 'geothermal_loop_boreholes_length', required: false, display_name: 'Geothermal Loop: Boreholes Length', - description: "Average length of each borehole (vertical). Only applies to #{HPXML::HVACTypeHeatPumpGroundToAir} heat pump type.", + description: "Average length of each borehole (vertical}. Only applies to #{HPXML::HVACTypeHeatPumpGroundToAir} heat pump type.", default_href: "HPXML Geothermal Loops", units: 'ft' - ) + } - args << makeArgument( + args << { type: Argument::Double, name: 'geothermal_loop_boreholes_spacing', required: false, @@ -2382,9 +2391,9 @@ def makeArgument(name:, description: "Distance between bores. Only applies to #{HPXML::HVACTypeHeatPumpGroundToAir} heat pump type.", default_href: "HPXML Geothermal Loops", units: 'ft' - ) + } - args << makeArgument( + args << { type: Argument::Double, name: 'geothermal_loop_boreholes_diameter', required: false, @@ -2392,13 +2401,13 @@ def makeArgument(name:, description: "Diameter of bores. Only applies to #{HPXML::HVACTypeHeatPumpGroundToAir} heat pump type.", default_href: "HPXML Geothermal Loops", units: 'in' - ) + } geothermal_loop_grout_or_pipe_type_choices = OpenStudio::StringVector.new geothermal_loop_grout_or_pipe_type_choices << HPXML::GeothermalLoopGroutOrPipeTypeStandard geothermal_loop_grout_or_pipe_type_choices << HPXML::GeothermalLoopGroutOrPipeTypeThermallyEnhanced - args << makeArgument( + args << { type: Argument::Choice, name: 'geothermal_loop_grout_type', choices: geothermal_loop_grout_or_pipe_type_choices, @@ -2406,9 +2415,9 @@ def makeArgument(name:, display_name: 'Geothermal Loop: Grout Type', description: "Grout type of the geothermal loop. Only applies to #{HPXML::HVACTypeHeatPumpGroundToAir} heat pump type.", default_href: "HPXML Geothermal Loops" - ) + } - args << makeArgument( + args << { type: Argument::Choice, name: 'geothermal_loop_pipe_type', choices: geothermal_loop_grout_or_pipe_type_choices, @@ -2416,14 +2425,14 @@ def makeArgument(name:, display_name: 'Geothermal Loop: Pipe Type', description: "Pipe type of the geothermal loop. Only applies to #{HPXML::HVACTypeHeatPumpGroundToAir} heat pump type.", default_href: "HPXML Geothermal Loops" - ) + } geothermal_loop_pipe_diameter_choices = OpenStudio::StringVector.new geothermal_loop_pipe_diameter_choices << '3/4" pipe' geothermal_loop_pipe_diameter_choices << '1" pipe' geothermal_loop_pipe_diameter_choices << '1-1/4" pipe' - args << makeArgument( + args << { type: Argument::Choice, name: 'geothermal_loop_pipe_diameter', choices: geothermal_loop_pipe_diameter_choices, @@ -2432,7 +2441,7 @@ def makeArgument(name:, description: "Pipe diameter of the geothermal loop. Only applies to #{HPXML::HVACTypeHeatPumpGroundToAir} heat pump type.", default_href: "HPXML Geothermal Loops", units: 'in' - ) + } heating_system_2_type_choices = OpenStudio::StringVector.new heating_system_2_type_choices << Constants::None @@ -2445,34 +2454,34 @@ def makeArgument(name:, heating_system_2_type_choices << HPXML::HVACTypeSpaceHeater heating_system_2_type_choices << HPXML::HVACTypeFireplace - args << makeArgument( + args << { type: Argument::Choice, name: 'heating_system_2_type', choices: heating_system_2_type_choices, required: false, display_name: 'Heating System 2: Type', description: "The type of the second heating system. If a heat pump is specified and the backup type is '#{HPXML::HeatPumpBackupTypeSeparate}', this heating system represents '#{HPXML::HeatPumpBackupTypeSeparate}' backup heating. For ducted heat pumps where the backup heating system is a '#{HPXML::HVACTypeFurnace}', the backup would typically be characterized as '#{HPXML::HeatPumpBackupTypeIntegrated}' in that the furnace and heat pump share the same distribution system and blower fan; a '#{HPXML::HVACTypeFurnace}' as '#{HPXML::HeatPumpBackupTypeSeparate}' backup to a ducted heat pump is not supported. If not provided, defaults to none." - ) + } - args << makeArgument( + args << { type: Argument::Choice, name: 'heating_system_2_fuel', choices: heating_system_fuel_choices, required: false, display_name: 'Heating System 2: Fuel Type', - description: "The fuel type of the second heating system. Ignored for #{HPXML::HVACTypeElectricResistance}." - ) + description: "The fuel type of the second heating system. Ignored for #{HPXML::HVACTypeElectricResistance}. If not provided, defaults to electricity." + } - args << makeArgument( + args << { type: Argument::Double, name: 'heating_system_2_heating_efficiency', required: false, display_name: 'Heating System 2: Rated AFUE or Percent', units: 'Frac', - description: 'The rated heating efficiency value of the second heating system.' - ) + description: 'The rated heating efficiency value of the second heating system. If not provided, defaults to 1.' + } - args << makeArgument( + args << { type: Argument::Double, name: 'heating_system_2_heating_capacity', required: false, @@ -2480,97 +2489,97 @@ def makeArgument(name:, description: 'The output heating capacity of the second heating system.', default_href: "HPXML Heating Systems", units: 'Btu/hr' - ) + } - args << makeArgument( + args << { type: Argument::Double, name: 'heating_system_2_heating_autosizing_factor', required: false, display_name: 'Heating System 2: Heating Autosizing Factor', description: 'The capacity scaling factor applied to the auto-sizing methodology. If not provided, 1.0 is used.' - ) + } - args << makeArgument( + args << { type: Argument::Double, name: 'heating_system_2_heating_autosizing_limit', required: false, display_name: 'Heating System 2: Heating Autosizing Limit', description: 'The maximum capacity limit applied to the auto-sizing methodology. If not provided, no limit is used.', units: 'Btu/hr' - ) + } - args << makeArgument( + args << { type: Argument::Double, name: 'heating_system_2_fraction_heat_load_served', required: false, display_name: 'Heating System 2: Fraction Heat Load Served', - description: 'The heat load served fraction of the second heating system. Ignored if this heating system serves as a backup system for a heat pump.', + description: 'The heat load served fraction of the second heating system. Ignored if this heating system serves as a backup system for a heat pump. If not provided, defaults to 0.25.', units: 'Frac' - ) + } - args << makeArgument( + args << { type: Argument::String, name: 'hvac_control_heating_weekday_setpoint', required: false, display_name: 'HVAC Control: Heating Weekday Setpoint Schedule', description: 'Specify the constant or 24-hour comma-separated weekday heating setpoint schedule. Required unless a detailed CSV schedule is provided.', units: 'F' - ) + } - args << makeArgument( + args << { type: Argument::String, name: 'hvac_control_heating_weekend_setpoint', required: false, display_name: 'HVAC Control: Heating Weekend Setpoint Schedule', description: 'Specify the constant or 24-hour comma-separated weekend heating setpoint schedule. Required unless a detailed CSV schedule is provided.', units: 'F' - ) + } - args << makeArgument( + args << { type: Argument::String, name: 'hvac_control_cooling_weekday_setpoint', required: false, display_name: 'HVAC Control: Cooling Weekday Setpoint Schedule', description: 'Specify the constant or 24-hour comma-separated weekday cooling setpoint schedule. Required unless a detailed CSV schedule is provided.', units: 'F' - ) + } - args << makeArgument( + args << { type: Argument::String, name: 'hvac_control_cooling_weekend_setpoint', required: false, display_name: 'HVAC Control: Cooling Weekend Setpoint Schedule', description: 'Specify the constant or 24-hour comma-separated weekend cooling setpoint schedule. Required unless a detailed CSV schedule is provided.', units: 'F' - ) + } - args << makeArgument( + args << { type: Argument::String, name: 'hvac_control_heating_season_period', required: false, display_name: 'HVAC Control: Heating Season Period', description: "Enter a date range like 'Nov 1 - Jun 30'. Can also provide '#{Constants::BuildingAmerica}' to use automatic seasons from the Building America House Simulation Protocols.", default_href: "HPXML HVAC Control" - ) + } - args << makeArgument( + args << { type: Argument::String, name: 'hvac_control_cooling_season_period', required: false, display_name: 'HVAC Control: Cooling Season Period', description: "Enter a date range like 'Jun 1 - Oct 31'. Can also provide '#{Constants::BuildingAmerica}' to use automatic seasons from the Building America House Simulation Protocols.", default_href: "HPXML HVAC Control" - ) + } - args << makeArgument( + args << { type: Argument::Double, name: 'hvac_blower_fan_watts_per_cfm', required: false, display_name: 'HVAC Blower: Fan Efficiency', - description: "The blower fan efficiency at maximum fan speed. Applies only to split (not packaged) systems (i.e., applies to ducted systems as well as ductless #{HPXML::HVACTypeHeatPumpMiniSplit} systems).", + description: "The blower fan efficiency at maximum fan speed. Applies only to split (not packaged} systems (i.e., applies to ducted systems as well as ductless #{HPXML::HVACTypeHeatPumpMiniSplit} systems}.", default_href: "HPXML Heating Systems, HPXML Cooling Systems, HPXML Heat Pumps", units: 'W/CFM' - ) + } duct_leakage_units_choices = OpenStudio::StringVector.new duct_leakage_units_choices << HPXML::UnitsCFM25 @@ -2599,24 +2608,24 @@ def makeArgument(name:, duct_location_choices << HPXML::LocationOtherNonFreezingSpace duct_location_choices << HPXML::LocationManufacturedHomeBelly - args << makeArgument( + args << { type: Argument::Choice, name: 'ducts_leakage_units', choices: duct_leakage_units_choices, required: false, display_name: 'Ducts: Leakage Units', description: 'The leakage units of the ducts.' - ) + } - args << makeArgument( + args << { type: Argument::Double, name: 'ducts_supply_leakage_to_outside_value', required: false, display_name: 'Ducts: Supply Leakage to Outside Value', description: 'The leakage value to outside for the supply ducts.' - ) + } - args << makeArgument( + args << { type: Argument::Choice, name: 'ducts_supply_location', choices: duct_location_choices, @@ -2624,16 +2633,16 @@ def makeArgument(name:, display_name: 'Ducts: Supply Location', description: 'The location of the supply ducts.', default_href: "Air Distribution" - ) + } - args << makeArgument( + args << { type: Argument::Double, name: 'ducts_supply_insulation_r', required: false, display_name: 'Ducts: Supply Insulation R-Value', description: 'The nominal insulation r-value of the supply ducts excluding air films. Use 0 for uninsulated ducts.', units: 'h-ft^2-R/Btu' - ) + } duct_buried_level_choices = OpenStudio::StringVector.new duct_buried_level_choices << HPXML::DuctBuriedInsulationNone @@ -2641,7 +2650,7 @@ def makeArgument(name:, duct_buried_level_choices << HPXML::DuctBuriedInsulationFull duct_buried_level_choices << HPXML::DuctBuriedInsulationDeep - args << makeArgument( + args << { type: Argument::Choice, name: 'ducts_supply_buried_insulation_level', choices: duct_buried_level_choices, @@ -2649,9 +2658,9 @@ def makeArgument(name:, display_name: 'Ducts: Supply Buried Insulation Level', description: 'Whether the supply ducts are buried in, e.g., attic loose-fill insulation. Partially buried ducts have insulation that does not cover the top of the ducts. Fully buried ducts have insulation that just covers the top of the ducts. Deeply buried ducts have insulation that continues above the top of the ducts.', default_href: "Air Distribution" - ) + } - args << makeArgument( + args << { type: Argument::Double, name: 'ducts_supply_surface_area', required: false, @@ -2659,9 +2668,9 @@ def makeArgument(name:, description: 'The supply ducts surface area in the given location.', default_href: "Air Distribution", units: 'ft^2' - ) + } - args << makeArgument( + args << { type: Argument::Double, name: 'ducts_supply_surface_area_fraction', required: false, @@ -2669,27 +2678,27 @@ def makeArgument(name:, description: 'The fraction of supply ducts surface area in the given location. Only used if Surface Area is not provided. If the fraction is less than 1, the remaining duct area is assumed to be in conditioned space.', default_href: "Air Distribution", units: 'frac' - ) + } - args << makeArgument( + args << { type: Argument::Double, name: 'ducts_supply_fraction_rectangular', required: false, display_name: 'Ducts: Supply Fraction Rectangular', - description: 'The fraction of supply ducts that are rectangular (as opposed to round); this affects the duct effective R-value used for modeling.', + description: 'The fraction of supply ducts that are rectangular (as opposed to round}; this affects the duct effective R-value used for modeling.', default_href: "Air Distribution", units: 'frac' - ) + } - args << makeArgument( + args << { type: Argument::Double, name: 'ducts_return_leakage_to_outside_value', required: false, display_name: 'Ducts: Return Leakage to Outside Value', description: 'The leakage value to outside for the return ducts.' - ) + } - args << makeArgument( + args << { type: Argument::Choice, name: 'ducts_return_location', choices: duct_location_choices, @@ -2697,18 +2706,18 @@ def makeArgument(name:, display_name: 'Ducts: Return Location', description: 'The location of the return ducts.', default_href: "Air Distribution" - ) + } - args << makeArgument( + args << { type: Argument::Double, name: 'ducts_return_insulation_r', required: false, display_name: 'Ducts: Return Insulation R-Value', description: 'The nominal insulation r-value of the return ducts excluding air films. Use 0 for uninsulated ducts.', units: 'h-ft^2-R/Btu' - ) + } - args << makeArgument( + args << { type: Argument::Choice, name: 'ducts_return_buried_insulation_level', choices: duct_buried_level_choices, @@ -2716,9 +2725,9 @@ def makeArgument(name:, display_name: 'Ducts: Return Buried Insulation Level', description: 'Whether the return ducts are buried in, e.g., attic loose-fill insulation. Partially buried ducts have insulation that does not cover the top of the ducts. Fully buried ducts have insulation that just covers the top of the ducts. Deeply buried ducts have insulation that continues above the top of the ducts.', default_href: "Air Distribution" - ) + } - args << makeArgument( + args << { type: Argument::Double, name: 'ducts_return_surface_area', required: false, @@ -2726,9 +2735,9 @@ def makeArgument(name:, description: 'The return ducts surface area in the given location.', default_href: "Air Distribution", units: 'ft^2' - ) + } - args << makeArgument( + args << { type: Argument::Double, name: 'ducts_return_surface_area_fraction', required: false, @@ -2736,9 +2745,9 @@ def makeArgument(name:, description: 'The fraction of return ducts surface area in the given location. Only used if Surface Area is not provided. If the fraction is less than 1, the remaining duct area is assumed to be in conditioned space.', default_href: "Air Distribution", units: 'frac' - ) + } - args << makeArgument( + args << { type: Argument::Integer, name: 'ducts_number_of_return_registers', required: false, @@ -2746,17 +2755,17 @@ def makeArgument(name:, description: 'The number of return registers of the ducts. Only used to calculate default return duct surface area.', default_href: "Air Distribution", units: '#' - ) + } - args << makeArgument( + args << { type: Argument::Double, name: 'ducts_return_fraction_rectangular', required: false, display_name: 'Ducts: Return Fraction Rectangular', - description: 'The fraction of return ducts that are rectangular (as opposed to round); this affects the duct effective R-value used for modeling.', + description: 'The fraction of return ducts that are rectangular (as opposed to round}; this affects the duct effective R-value used for modeling.', default_href: "Air Distribution", units: 'frac' - ) + } mech_vent_fan_type_choices = OpenStudio::StringVector.new mech_vent_fan_type_choices << Constants::None @@ -2771,16 +2780,16 @@ def makeArgument(name:, mech_vent_recovery_efficiency_type_choices << 'Unadjusted' mech_vent_recovery_efficiency_type_choices << 'Adjusted' - args << makeArgument( + args << { type: Argument::Choice, name: 'mech_vent_fan_type', choices: mech_vent_fan_type_choices, required: false, display_name: 'Mechanical Ventilation: Fan Type', description: "The type of the mechanical ventilation. Use '#{Constants::None}' if there is no mechanical ventilation system. If not provided, defaults to none." - ) + } - args << makeArgument( + args << { type: Argument::Double, name: 'mech_vent_flow_rate', required: false, @@ -2788,9 +2797,9 @@ def makeArgument(name:, description: 'The flow rate of the mechanical ventilation.', default_href: "HPXML Mechanical Ventilation Fans", units: 'CFM' - ) + } - args << makeArgument( + args << { type: Argument::Double, name: 'mech_vent_hours_in_operation', required: false, @@ -2798,36 +2807,36 @@ def makeArgument(name:, description: 'The hours in operation of the mechanical ventilation.', default_href: "HPXML Mechanical Ventilation Fans", units: 'hrs/day' - ) + } - args << makeArgument( + args << { type: Argument::Choice, name: 'mech_vent_recovery_efficiency_type', choices: mech_vent_recovery_efficiency_type_choices, required: false, display_name: 'Mechanical Ventilation: Total Recovery Efficiency Type', description: 'The total recovery efficiency type of the mechanical ventilation.' - ) + } - args << makeArgument( + args << { type: Argument::Double, name: 'mech_vent_total_recovery_efficiency', required: false, display_name: 'Mechanical Ventilation: Total Recovery Efficiency', - description: "The Unadjusted or Adjusted total recovery efficiency of the mechanical ventilation. Applies to #{HPXML::MechVentTypeERV}.", + description: "The Unadjusted or Adjusted total recovery efficiency of the mechanical ventilation. Applies to #{HPXML::MechVentTypeERV}. If not provided, defaults to Unadjusted total recovery efficiency of 0.48.", units: 'Frac' - ) + } - args << makeArgument( + args << { type: Argument::Double, name: 'mech_vent_sensible_recovery_efficiency', required: false, display_name: 'Mechanical Ventilation: Sensible Recovery Efficiency', - description: "The Unadjusted or Adjusted sensible recovery efficiency of the mechanical ventilation. Applies to #{HPXML::MechVentTypeERV} and #{HPXML::MechVentTypeHRV}.", + description: "The Unadjusted or Adjusted sensible recovery efficiency of the mechanical ventilation. Applies to #{HPXML::MechVentTypeERV} and #{HPXML::MechVentTypeHRV}. If not provided, defaults to Unadjusted sensible recovery efficiency of 0.72.", units: 'Frac' - ) + } - args << makeArgument( + args << { type: Argument::Double, name: 'mech_vent_fan_power', required: false, @@ -2835,82 +2844,82 @@ def makeArgument(name:, description: 'The fan power of the mechanical ventilation.', default_href: "HPXML Mechanical Ventilation Fans", units: 'W' - ) + } - args << makeArgument( + args << { type: Argument::Integer, name: 'mech_vent_num_units_served', required: false, display_name: 'Mechanical Ventilation: Number of Units Served', description: "Number of dwelling units served by the mechanical ventilation system. Must be 1 if #{HPXML::ResidentialTypeSFD}. Used to apportion flow rate and fan power to the unit.", units: '#' - ) + } - args << makeArgument( + args << { type: Argument::Double, name: 'mech_vent_shared_frac_recirculation', required: false, display_name: 'Shared Mechanical Ventilation: Fraction Recirculation', description: 'Fraction of the total supply air that is recirculated, with the remainder assumed to be outdoor air. The value must be 0 for exhaust only systems. Required for a shared mechanical ventilation system.', units: 'Frac' - ) + } - args << makeArgument( + args << { type: Argument::Choice, name: 'mech_vent_shared_preheating_fuel', choices: heating_system_fuel_choices, required: false, display_name: 'Shared Mechanical Ventilation: Preheating Fuel', description: 'Fuel type of the preconditioning heating equipment. Only used for a shared mechanical ventilation system. If not provided, assumes no preheating.' - ) + } - args << makeArgument( + args << { type: Argument::Double, name: 'mech_vent_shared_preheating_efficiency', required: false, display_name: 'Shared Mechanical Ventilation: Preheating Efficiency', description: 'Efficiency of the preconditioning heating equipment. Only used for a shared mechanical ventilation system. If not provided, assumes no preheating.', units: 'COP' - ) + } - args << makeArgument( + args << { type: Argument::Double, name: 'mech_vent_shared_preheating_fraction_heat_load_served', required: false, display_name: 'Shared Mechanical Ventilation: Preheating Fraction Ventilation Heat Load Served', description: 'Fraction of heating load introduced by the shared ventilation system that is met by the preconditioning heating equipment. If not provided, assumes no preheating.', units: 'Frac' - ) + } cooling_system_fuel_choices = OpenStudio::StringVector.new cooling_system_fuel_choices << HPXML::FuelTypeElectricity - args << makeArgument( + args << { type: Argument::Choice, name: 'mech_vent_shared_precooling_fuel', choices: cooling_system_fuel_choices, required: false, display_name: 'Shared Mechanical Ventilation: Precooling Fuel', description: 'Fuel type of the preconditioning cooling equipment. Only used for a shared mechanical ventilation system. If not provided, assumes no precooling.' - ) + } - args << makeArgument( + args << { type: Argument::Double, name: 'mech_vent_shared_precooling_efficiency', required: false, display_name: 'Shared Mechanical Ventilation: Precooling Efficiency', description: 'Efficiency of the preconditioning cooling equipment. Only used for a shared mechanical ventilation system. If not provided, assumes no precooling.', units: 'COP' - ) + } - args << makeArgument( + args << { type: Argument::Double, name: 'mech_vent_shared_precooling_fraction_cool_load_served', required: false, display_name: 'Shared Mechanical Ventilation: Precooling Fraction Ventilation Cool Load Served', description: 'Fraction of cooling load introduced by the shared ventilation system that is met by the preconditioning cooling equipment. If not provided, assumes no precooling.', units: 'Frac' - ) + } mech_vent_2_fan_type_choices = OpenStudio::StringVector.new mech_vent_2_fan_type_choices << Constants::None @@ -2920,70 +2929,70 @@ def makeArgument(name:, mech_vent_2_fan_type_choices << HPXML::MechVentTypeHRV mech_vent_2_fan_type_choices << HPXML::MechVentTypeBalanced - args << makeArgument( + args << { type: Argument::Choice, name: 'mech_vent_2_fan_type', choices: mech_vent_2_fan_type_choices, required: false, display_name: 'Mechanical Ventilation 2: Fan Type', description: "The type of the second mechanical ventilation. Use '#{Constants::None}' if there is no second mechanical ventilation system. If not provided, defaults to none." - ) + } - args << makeArgument( + args << { type: Argument::Double, name: 'mech_vent_2_flow_rate', required: false, display_name: 'Mechanical Ventilation 2: Flow Rate', description: 'The flow rate of the second mechanical ventilation.', units: 'CFM' - ) + } - args << makeArgument( + args << { type: Argument::Double, name: 'mech_vent_2_hours_in_operation', required: false, display_name: 'Mechanical Ventilation 2: Hours In Operation', description: 'The hours in operation of the second mechanical ventilation.', units: 'hrs/day' - ) + } - args << makeArgument( + args << { type: Argument::Choice, name: 'mech_vent_2_recovery_efficiency_type', choices: mech_vent_recovery_efficiency_type_choices, required: false, display_name: 'Mechanical Ventilation 2: Total Recovery Efficiency Type', description: 'The total recovery efficiency type of the second mechanical ventilation.' - ) + } - args << makeArgument( + args << { type: Argument::Double, name: 'mech_vent_2_total_recovery_efficiency', required: false, display_name: 'Mechanical Ventilation 2: Total Recovery Efficiency', description: "The Unadjusted or Adjusted total recovery efficiency of the second mechanical ventilation. Applies to #{HPXML::MechVentTypeERV}.", units: 'Frac' - ) + } - args << makeArgument( + args << { type: Argument::Double, name: 'mech_vent_2_sensible_recovery_efficiency', required: false, display_name: 'Mechanical Ventilation 2: Sensible Recovery Efficiency', description: "The Unadjusted or Adjusted sensible recovery efficiency of the second mechanical ventilation. Applies to #{HPXML::MechVentTypeERV} and #{HPXML::MechVentTypeHRV}.", units: 'Frac' - ) + } - args << makeArgument( + args << { type: Argument::Double, name: 'mech_vent_2_fan_power', required: false, display_name: 'Mechanical Ventilation 2: Fan Power', description: 'The fan power of the second mechanical ventilation.', units: 'W' - ) + } - args << makeArgument( + args << { type: Argument::Integer, name: 'kitchen_fans_quantity', required: false, @@ -2991,9 +3000,9 @@ def makeArgument(name:, description: 'The quantity of the kitchen fans.', default_href: "HPXML Local Ventilation Fans", units: '#' - ) + } - args << makeArgument( + args << { type: Argument::Double, name: 'kitchen_fans_flow_rate', required: false, @@ -3001,9 +3010,9 @@ def makeArgument(name:, description: 'The flow rate of the kitchen fan.', default_href: "HPXML Local Ventilation Fans", units: 'CFM' - ) + } - args << makeArgument( + args << { type: Argument::Double, name: 'kitchen_fans_hours_in_operation', required: false, @@ -3011,9 +3020,9 @@ def makeArgument(name:, description: 'The hours in operation of the kitchen fan.', default_href: "HPXML Local Ventilation Fans", units: 'hrs/day' - ) + } - args << makeArgument( + args << { type: Argument::Double, name: 'kitchen_fans_power', required: false, @@ -3021,9 +3030,9 @@ def makeArgument(name:, description: 'The fan power of the kitchen fan.', default_href: "HPXML Local Ventilation Fans", units: 'W' - ) + } - args << makeArgument( + args << { type: Argument::Integer, name: 'kitchen_fans_start_hour', required: false, @@ -3031,9 +3040,9 @@ def makeArgument(name:, description: 'The start hour of the kitchen fan.', default_href: "HPXML Local Ventilation Fans", units: 'hr' - ) + } - args << makeArgument( + args << { type: Argument::Integer, name: 'bathroom_fans_quantity', required: false, @@ -3041,9 +3050,9 @@ def makeArgument(name:, description: 'The quantity of the bathroom fans.', default_href: "HPXML Local Ventilation Fans", units: '#' - ) + } - args << makeArgument( + args << { type: Argument::Double, name: 'bathroom_fans_flow_rate', required: false, @@ -3051,9 +3060,9 @@ def makeArgument(name:, description: 'The flow rate of the bathroom fans.', default_href: "HPXML Local Ventilation Fans", units: 'CFM' - ) + } - args << makeArgument( + args << { type: Argument::Double, name: 'bathroom_fans_hours_in_operation', required: false, @@ -3061,9 +3070,9 @@ def makeArgument(name:, description: 'The hours in operation of the bathroom fans.', default_href: "HPXML Local Ventilation Fans", units: 'hrs/day' - ) + } - args << makeArgument( + args << { type: Argument::Double, name: 'bathroom_fans_power', required: false, @@ -3071,9 +3080,9 @@ def makeArgument(name:, description: 'The fan power of the bathroom fans.', default_href: "HPXML Local Ventilation Fans", units: 'W' - ) + } - args << makeArgument( + args << { type: Argument::Integer, name: 'bathroom_fans_start_hour', required: false, @@ -3081,17 +3090,17 @@ def makeArgument(name:, description: 'The start hour of the bathroom fans.', default_href: "HPXML Local Ventilation Fans", units: 'hr' - ) + } - args << makeArgument( + args << { name: 'whole_house_fan_present', type: Argument::Boolean, required: false, display_name: 'Whole House Fan: Present', description: 'Whether there is a whole house fan.' - ) + } - args << makeArgument( + args << { type: Argument::Double, name: 'whole_house_fan_flow_rate', required: false, @@ -3099,9 +3108,9 @@ def makeArgument(name:, description: 'The flow rate of the whole house fan.', default_href: "HPXML Whole House Fans", units: 'CFM' - ) + } - args << makeArgument( + args << { type: Argument::Double, name: 'whole_house_fan_power', required: false, @@ -3109,7 +3118,7 @@ def makeArgument(name:, description: 'The fan power of the whole house fan.', default_href: "HPXML Whole House Fans", units: 'W' - ) + } water_heater_type_choices = OpenStudio::StringVector.new water_heater_type_choices << Constants::None @@ -3155,25 +3164,25 @@ def makeArgument(name:, water_heater_usage_bin_choices << HPXML::WaterHeaterUsageBinMedium water_heater_usage_bin_choices << HPXML::WaterHeaterUsageBinHigh - args << makeArgument( + args << { type: Argument::Choice, name: 'water_heater_type', choices: water_heater_type_choices, required: true, display_name: 'Water Heater: Type', description: "The type of water heater. Use '#{Constants::None}' if there is no water heater." - ) + } - args << makeArgument( + args << { type: Argument::Choice, name: 'water_heater_fuel_type', choices: water_heater_fuel_choices, required: false, display_name: 'Water Heater: Fuel Type', description: "The fuel type of water heater. Ignored for #{HPXML::WaterHeaterTypeHeatPump}." - ) + } - args << makeArgument( + args << { type: Argument::Choice, name: 'water_heater_location', choices: water_heater_location_choices, @@ -3181,9 +3190,9 @@ def makeArgument(name:, display_name: 'Water Heater: Location', description: 'The location of water heater.', default_href: "HPXML Water Heating Systems" - ) + } - args << makeArgument( + args << { type: Argument::Double, name: 'water_heater_tank_volume', required: false, @@ -3191,26 +3200,26 @@ def makeArgument(name:, description: 'Nominal volume of water heater tank.', default_href: "Conventional Storage, Heat Pump, Combi Boiler w/ Storage", units: 'gal' - ) + } - args << makeArgument( + args << { type: Argument::Choice, name: 'water_heater_efficiency_type', choices: water_heater_efficiency_type_choices, required: false, display_name: 'Water Heater: Efficiency Type', description: 'The efficiency type of water heater. Does not apply to space-heating boilers.' - ) + } - args << makeArgument( + args << { type: Argument::Double, name: 'water_heater_efficiency', required: false, display_name: 'Water Heater: Efficiency', description: 'Rated Energy Factor or Uniform Energy Factor. Does not apply to space-heating boilers.' - ) + } - args << makeArgument( + args << { type: Argument::Choice, name: 'water_heater_usage_bin', choices: water_heater_usage_bin_choices, @@ -3218,9 +3227,9 @@ def makeArgument(name:, display_name: 'Water Heater: Usage Bin', description: "The usage of the water heater. Only applies if Efficiency Type is UniformEnergyFactor and Type is not #{HPXML::WaterHeaterTypeTankless}. Does not apply to space-heating boilers.", default_href: "Conventional Storage, Heat Pump" - ) + } - args << makeArgument( + args << { type: Argument::Double, name: 'water_heater_recovery_efficiency', required: false, @@ -3228,19 +3237,19 @@ def makeArgument(name:, description: 'Ratio of energy delivered to water heater to the energy content of the fuel consumed by the water heater. Only used for non-electric storage water heaters.', default_href: "Conventional Storage", units: 'Frac' - ) + } - args << makeArgument( + args << { type: Argument::Double, name: 'water_heater_heating_capacity', required: false, display_name: 'Water Heater: Heating Capacity', - description: "Heating capacity. Only applies to #{HPXML::WaterHeaterTypeStorage} and #{HPXML::WaterHeaterTypeHeatPump} (compressor).", + description: "Heating capacity. Only applies to #{HPXML::WaterHeaterTypeStorage} and #{HPXML::WaterHeaterTypeHeatPump} (compressor}.", default_href: "Conventional Storage, Heat Pump", units: 'Btu/hr' - ) + } - args << makeArgument( + args << { type: Argument::Double, name: 'water_heater_backup_heating_capacity', required: false, @@ -3248,9 +3257,9 @@ def makeArgument(name:, description: "Backup heating capacity for a #{HPXML::WaterHeaterTypeHeatPump}.", default_href: "Heat Pump", units: 'Btu/hr' - ) + } - args << makeArgument( + args << { type: Argument::Double, name: 'water_heater_standby_loss', required: false, @@ -3258,18 +3267,18 @@ def makeArgument(name:, description: 'The standby loss of water heater. Only applies to space-heating boilers.', default_href: "Combi Boiler w/ Storage", units: 'F/hr' - ) + } - args << makeArgument( + args << { type: Argument::Double, name: 'water_heater_jacket_rvalue', required: false, display_name: 'Water Heater: Jacket R-value', description: "The jacket R-value of water heater. Doesn't apply to #{HPXML::WaterHeaterTypeTankless} or #{HPXML::WaterHeaterTypeCombiTankless}. If not provided, defaults to no jacket insulation.", units: 'h-ft^2-R/Btu' - ) + } - args << makeArgument( + args << { type: Argument::Double, name: 'water_heater_setpoint_temperature', required: false, @@ -3277,30 +3286,30 @@ def makeArgument(name:, description: 'The setpoint temperature of water heater.', default_href: "HPXML Water Heating Systems", units: 'F' - ) + } - args << makeArgument( + args << { type: Argument::Integer, name: 'water_heater_num_bedrooms_served', required: false, display_name: 'Water Heater: Number of Bedrooms Served', - description: "Number of bedrooms served (directly or indirectly) by the water heater. Only needed if #{HPXML::ResidentialTypeSFA} or #{HPXML::ResidentialTypeApartment} and it is a shared water heater serving multiple dwelling units. Used to apportion water heater tank losses to the unit.", + description: "Number of bedrooms served (directly or indirectly} by the water heater. Only needed if #{HPXML::ResidentialTypeSFA} or #{HPXML::ResidentialTypeApartment} and it is a shared water heater serving multiple dwelling units. Used to apportion water heater tank losses to the unit.", units: '#' - ) + } - args << makeArgument( + args << { name: 'water_heater_uses_desuperheater', type: Argument::Boolean, required: false, display_name: 'Water Heater: Uses Desuperheater', description: "Requires that the dwelling unit has a #{HPXML::HVACTypeHeatPumpAirToAir}, #{HPXML::HVACTypeHeatPumpMiniSplit}, or #{HPXML::HVACTypeHeatPumpGroundToAir} heat pump or a #{HPXML::HVACTypeCentralAirConditioner} or #{HPXML::HVACTypeMiniSplitAirConditioner} air conditioner. If not provided, assumes no desuperheater." - ) + } water_heater_tank_model_type_choices = OpenStudio::StringVector.new water_heater_tank_model_type_choices << HPXML::WaterHeaterTankModelTypeMixed water_heater_tank_model_type_choices << HPXML::WaterHeaterTankModelTypeStratified - args << makeArgument( + args << { type: Argument::Choice, name: 'water_heater_tank_model_type', choices: water_heater_tank_model_type_choices, @@ -3308,13 +3317,13 @@ def makeArgument(name:, display_name: 'Water Heater: Tank Type', description: "Type of tank model to use. The '#{HPXML::WaterHeaterTankModelTypeStratified}' tank generally provide more accurate results, but may significantly increase run time. Applies only to #{HPXML::WaterHeaterTypeStorage}.", default_href: "Conventional Storage" - ) + } water_heater_operating_mode_choices = OpenStudio::StringVector.new water_heater_operating_mode_choices << HPXML::WaterHeaterOperatingModeHybridAuto water_heater_operating_mode_choices << HPXML::WaterHeaterOperatingModeHeatPumpOnly - args << makeArgument( + args << { type: Argument::Choice, name: 'water_heater_operating_mode', choices: water_heater_operating_mode_choices, @@ -3322,22 +3331,22 @@ def makeArgument(name:, display_name: 'Water Heater: Operating Mode', description: "The water heater operating mode. The '#{HPXML::WaterHeaterOperatingModeHeatPumpOnly}' option only uses the heat pump, while '#{HPXML::WaterHeaterOperatingModeHybridAuto}' allows the backup electric resistance to come on in high demand situations. This is ignored if a scheduled operating mode type is selected. Applies only to #{HPXML::WaterHeaterTypeHeatPump}.", default_href: "Heat Pump" - ) + } hot_water_distribution_system_type_choices = OpenStudio::StringVector.new hot_water_distribution_system_type_choices << HPXML::DHWDistTypeStandard hot_water_distribution_system_type_choices << HPXML::DHWDistTypeRecirc - args << makeArgument( + args << { type: Argument::Choice, name: 'hot_water_distribution_system_type', choices: hot_water_distribution_system_type_choices, required: true, display_name: 'Hot Water Distribution: System Type', description: 'The type of the hot water distribution system.' - ) + } - args << makeArgument( + args << { type: Argument::Double, name: 'hot_water_distribution_standard_piping_length', required: false, @@ -3345,7 +3354,7 @@ def makeArgument(name:, units: 'ft', description: "If the distribution system is #{HPXML::DHWDistTypeStandard}, the length of the piping.", default_href: "Standard" - ) + } recirculation_control_type_choices = OpenStudio::StringVector.new recirculation_control_type_choices << HPXML::DHWRecircControlTypeNone @@ -3354,46 +3363,46 @@ def makeArgument(name:, recirculation_control_type_choices << HPXML::DHWRecircControlTypeSensor recirculation_control_type_choices << HPXML::DHWRecircControlTypeManual - args << makeArgument( + args << { type: Argument::Choice, name: 'hot_water_distribution_recirc_control_type', choices: recirculation_control_type_choices, required: false, display_name: 'Hot Water Distribution: Recirculation Control Type', description: "If the distribution system is #{HPXML::DHWDistTypeRecirc}, the type of hot water recirculation control, if any." - ) + } - args << makeArgument( + args << { type: Argument::Double, name: 'hot_water_distribution_recirc_piping_length', required: false, display_name: 'Hot Water Distribution: Recirculation Piping Length', units: 'ft', description: "If the distribution system is #{HPXML::DHWDistTypeRecirc}, the length of the recirculation piping.", - default_href: "Recirculation (In-Unit)" - ) + default_href: "Recirculation (In-Unit}" + } - args << makeArgument( + args << { type: Argument::Double, name: 'hot_water_distribution_recirc_branch_piping_length', required: false, display_name: 'Hot Water Distribution: Recirculation Branch Piping Length', units: 'ft', description: "If the distribution system is #{HPXML::DHWDistTypeRecirc}, the length of the recirculation branch piping.", - default_href: "Recirculation (In-Unit)" - ) + default_href: "Recirculation (In-Unit}" + } - args << makeArgument( + args << { type: Argument::Double, name: 'hot_water_distribution_recirc_pump_power', required: false, display_name: 'Hot Water Distribution: Recirculation Pump Power', units: 'W', description: "If the distribution system is #{HPXML::DHWDistTypeRecirc}, the recirculation pump power.", - default_href: "Recirculation (In-Unit)" - ) + default_href: "Recirculation (In-Unit}" + } - args << makeArgument( + args << { type: Argument::Double, name: 'hot_water_distribution_pipe_r', required: false, @@ -3401,72 +3410,72 @@ def makeArgument(name:, units: 'h-ft^2-R/Btu', description: 'Nominal R-value of the pipe insulation.', default_href: "HPXML Hot Water Distribution" - ) + } dwhr_facilities_connected_choices = OpenStudio::StringVector.new dwhr_facilities_connected_choices << Constants::None dwhr_facilities_connected_choices << HPXML::DWHRFacilitiesConnectedOne dwhr_facilities_connected_choices << HPXML::DWHRFacilitiesConnectedAll - args << makeArgument( + args << { type: Argument::Choice, name: 'dwhr_facilities_connected', choices: dwhr_facilities_connected_choices, required: false, display_name: 'Drain Water Heat Recovery: Facilities Connected', description: "Which facilities are connected for the drain water heat recovery. Use '#{Constants::None}' if there is no drain water heat recovery system." - ) + } - args << makeArgument( + args << { name: 'dwhr_equal_flow', type: Argument::Boolean, required: false, display_name: 'Drain Water Heat Recovery: Equal Flow', description: 'Whether the drain water heat recovery has equal flow.' - ) + } - args << makeArgument( + args << { type: Argument::Double, name: 'dwhr_efficiency', required: false, display_name: 'Drain Water Heat Recovery: Efficiency', units: 'Frac', description: 'The efficiency of the drain water heat recovery.' - ) + } - args << makeArgument( + args << { name: 'water_fixtures_shower_low_flow', type: Argument::Boolean, required: false, display_name: 'Hot Water Fixtures: Is Shower Low Flow', description: 'Whether the shower fixture is low flow. If not provided, defaults to false.' - ) + } - args << makeArgument( + args << { name: 'water_fixtures_sink_low_flow', type: Argument::Boolean, required: false, display_name: 'Hot Water Fixtures: Is Sink Low Flow', description: 'Whether the sink fixture is low flow. If not provided, defaults to false.' - ) + } - args << makeArgument( + args << { type: Argument::Double, name: 'water_fixtures_usage_multiplier', required: false, display_name: 'Hot Water Fixtures: Usage Multiplier', description: 'Multiplier on the hot water usage that can reflect, e.g., high/low usage occupants.', default_href: "HPXML Water Fixtures" - ) + } - args << makeArgument( + args << { type: Argument::Double, name: 'general_water_use_usage_multiplier', required: false, display_name: 'General Water Use: Usage Multiplier', - description: 'Multiplier on internal gains from general water use (floor mopping, shower evaporation, water films on showers, tubs & sinks surfaces, plant watering, etc.) that can reflect, e.g., high/low usage occupants.', + description: 'Multiplier on internal gains from general water use (floor mopping, shower evaporation, water films on showers, tubs & sinks surfaces, plant watering, etc.} that can reflect, e.g., high/low usage occupants.', default_href: "HPXML Building Occupancy" - ) + } solar_thermal_system_type_choices = OpenStudio::StringVector.new solar_thermal_system_type_choices << Constants::None @@ -3483,79 +3492,79 @@ def makeArgument(name:, solar_thermal_collector_type_choices << HPXML::SolarThermalCollectorTypeDoubleGlazing solar_thermal_collector_type_choices << HPXML::SolarThermalCollectorTypeICS - args << makeArgument( + args << { type: Argument::Choice, name: 'solar_thermal_system_type', choices: solar_thermal_system_type_choices, required: false, display_name: 'Solar Thermal: System Type', description: "The type of solar thermal system. Use '#{Constants::None}' if there is no solar thermal system." - ) + } - args << makeArgument( + args << { type: Argument::Double, name: 'solar_thermal_collector_area', required: false, display_name: 'Solar Thermal: Collector Area', units: 'ft^2', description: 'The collector area of the solar thermal system.' - ) + } - args << makeArgument( + args << { type: Argument::Choice, name: 'solar_thermal_collector_loop_type', choices: solar_thermal_collector_loop_type_choices, required: false, display_name: 'Solar Thermal: Collector Loop Type', description: 'The collector loop type of the solar thermal system.' - ) + } - args << makeArgument( + args << { type: Argument::Choice, name: 'solar_thermal_collector_type', choices: solar_thermal_collector_type_choices, required: false, display_name: 'Solar Thermal: Collector Type', description: 'The collector type of the solar thermal system.' - ) + } - args << makeArgument( + args << { type: Argument::Double, name: 'solar_thermal_collector_azimuth', required: false, display_name: 'Solar Thermal: Collector Azimuth', units: 'degrees', - description: 'The collector azimuth of the solar thermal system. Azimuth is measured clockwise from north (e.g., North=0, East=90, South=180, West=270).' - ) + description: 'The collector azimuth of the solar thermal system. Azimuth is measured clockwise from north (e.g., North=0, East=90, South=180, West=270}.' + } - args << makeArgument( + args << { type: Argument::String, name: 'solar_thermal_collector_tilt', required: false, display_name: 'Solar Thermal: Collector Tilt', units: 'degrees', description: 'The collector tilt of the solar thermal system. Can also enter, e.g., RoofPitch, RoofPitch+20, Latitude, Latitude-15, etc.' - ) + } - args << makeArgument( + args << { type: Argument::Double, name: 'solar_thermal_collector_rated_optical_efficiency', required: false, display_name: 'Solar Thermal: Collector Rated Optical Efficiency', units: 'Frac', description: 'The collector rated optical efficiency of the solar thermal system.' - ) + } - args << makeArgument( + args << { type: Argument::Double, name: 'solar_thermal_collector_rated_thermal_losses', required: false, display_name: 'Solar Thermal: Collector Rated Thermal Losses', units: 'Btu/hr-ft^2-R', description: 'The collector rated thermal losses of the solar thermal system.' - ) + } - args << makeArgument( + args << { type: Argument::Double, name: 'solar_thermal_storage_volume', required: false, @@ -3563,16 +3572,16 @@ def makeArgument(name:, units: 'gal', description: 'The storage volume of the solar thermal system.', default_href: "Detailed Inputs" - ) + } - args << makeArgument( + args << { type: Argument::Double, name: 'solar_thermal_solar_fraction', required: false, display_name: 'Solar Thermal: Solar Fraction', units: 'Frac', description: 'The solar fraction of the solar thermal system. If provided, overrides all other solar thermal inputs.' - ) + } pv_system_module_type_choices = OpenStudio::StringVector.new pv_system_module_type_choices << HPXML::PVModuleTypeStandard @@ -3589,15 +3598,15 @@ def makeArgument(name:, pv_system_tracking_choices << HPXML::PVTrackingType1AxisBacktracked pv_system_tracking_choices << HPXML::PVTrackingType2Axis - args << makeArgument( + args << { name: 'pv_system_present', type: Argument::Boolean, required: false, display_name: 'PV System: Present', description: 'Whether there is a PV system present. If not provided, defaults to false.' - ) + } - args << makeArgument( + args << { type: Argument::Choice, name: 'pv_system_module_type', choices: pv_system_module_type_choices, @@ -3605,9 +3614,9 @@ def makeArgument(name:, display_name: 'PV System: Module Type', description: 'Module type of the PV system.', default_href: "HPXML Photovoltaics" - ) + } - args << makeArgument( + args << { type: Argument::Choice, name: 'pv_system_location', choices: pv_system_location_choices, @@ -3615,9 +3624,9 @@ def makeArgument(name:, display_name: 'PV System: Location', description: 'Location of the PV system.', default_href: "HPXML Photovoltaics" - ) + } - args << makeArgument( + args << { type: Argument::Choice, name: 'pv_system_tracking', choices: pv_system_tracking_choices, @@ -3625,36 +3634,36 @@ def makeArgument(name:, display_name: 'PV System: Tracking', description: 'Type of tracking for the PV system.', default_href: "HPXML Photovoltaics" - ) + } - args << makeArgument( + args << { type: Argument::Double, name: 'pv_system_array_azimuth', required: false, display_name: 'PV System: Array Azimuth', units: 'degrees', - description: 'Array azimuth of the PV system. Azimuth is measured clockwise from north (e.g., North=0, East=90, South=180, West=270).' - ) + description: 'Array azimuth of the PV system. Azimuth is measured clockwise from north (e.g., North=0, East=90, South=180, West=270}.' + } - args << makeArgument( + args << { type: Argument::String, name: 'pv_system_array_tilt', required: false, display_name: 'PV System: Array Tilt', units: 'degrees', description: 'Array tilt of the PV system. Can also enter, e.g., RoofPitch, RoofPitch+20, Latitude, Latitude-15, etc.' - ) + } - args << makeArgument( + args << { type: Argument::Double, name: 'pv_system_max_power_output', required: false, display_name: 'PV System: Maximum Power Output', units: 'W', description: 'Maximum power output of the PV system. For a shared system, this is the total building maximum power output.' - ) + } - args << makeArgument( + args << { type: Argument::Double, name: 'pv_system_inverter_efficiency', required: false, @@ -3662,9 +3671,9 @@ def makeArgument(name:, units: 'Frac', description: 'Inverter efficiency of the PV system. If there are two PV systems, this will apply to both.', default_href: "HPXML Photovoltaics" - ) + } - args << makeArgument( + args << { type: Argument::Double, name: 'pv_system_system_losses_fraction', required: false, @@ -3672,26 +3681,26 @@ def makeArgument(name:, units: 'Frac', description: 'System losses fraction of the PV system. If there are two PV systems, this will apply to both.', default_href: "HPXML Photovoltaics" - ) + } - args << makeArgument( + args << { type: Argument::Integer, name: 'pv_system_num_bedrooms_served', required: false, display_name: 'PV System: Number of Bedrooms Served', description: "Number of bedrooms served by PV system. Only needed if #{HPXML::ResidentialTypeSFA} or #{HPXML::ResidentialTypeApartment} and it is a shared PV system serving multiple dwelling units. Used to apportion PV generation to the unit of a SFA/MF building. If there are two PV systems, this will apply to both.", units: '#' - ) + } - args << makeArgument( + args << { name: 'pv_system_2_present', type: Argument::Boolean, required: false, display_name: 'PV System 2: Present', description: 'Whether there is a second PV system present. If not provided, defaults to false.' - ) + } - args << makeArgument( + args << { type: Argument::Choice, name: 'pv_system_2_module_type', choices: pv_system_module_type_choices, @@ -3699,9 +3708,9 @@ def makeArgument(name:, display_name: 'PV System 2: Module Type', description: 'Module type of the second PV system.', default_href: "HPXML Photovoltaics" - ) + } - args << makeArgument( + args << { type: Argument::Choice, name: 'pv_system_2_location', choices: pv_system_location_choices, @@ -3709,9 +3718,9 @@ def makeArgument(name:, display_name: 'PV System 2: Location', description: 'Location of the second PV system.', default_href: "HPXML Photovoltaics" - ) + } - args << makeArgument( + args << { type: Argument::Choice, name: 'pv_system_2_tracking', choices: pv_system_tracking_choices, @@ -3719,34 +3728,34 @@ def makeArgument(name:, display_name: 'PV System 2: Tracking', description: 'Type of tracking for the second PV system.', default_href: "HPXML Photovoltaics" - ) + } - args << makeArgument( + args << { type: Argument::Double, name: 'pv_system_2_array_azimuth', required: false, display_name: 'PV System 2: Array Azimuth', units: 'degrees', - description: 'Array azimuth of the second PV system. Azimuth is measured clockwise from north (e.g., North=0, East=90, South=180, West=270).' - ) + description: 'Array azimuth of the second PV system. Azimuth is measured clockwise from north (e.g., North=0, East=90, South=180, West=270}.' + } - args << makeArgument( + args << { type: Argument::String, name: 'pv_system_2_array_tilt', required: false, display_name: 'PV System 2: Array Tilt', units: 'degrees', description: 'Array tilt of the second PV system. Can also enter, e.g., RoofPitch, RoofPitch+20, Latitude, Latitude-15, etc.' - ) + } - args << makeArgument( + args << { type: Argument::Double, name: 'pv_system_2_max_power_output', required: false, display_name: 'PV System 2: Maximum Power Output', units: 'W', description: 'Maximum power output of the second PV system. For a shared system, this is the total building maximum power output.' - ) + } battery_location_choices = OpenStudio::StringVector.new battery_location_choices << HPXML::LocationConditionedSpace @@ -3762,15 +3771,15 @@ def makeArgument(name:, battery_location_choices << HPXML::LocationGarage battery_location_choices << HPXML::LocationOutside - args << makeArgument( + args << { name: 'battery_present', type: Argument::Boolean, required: false, display_name: 'Battery: Present', description: 'Whether there is a lithium ion battery present. If not provided, defaults to false.' - ) + } - args << makeArgument( + args << { type: Argument::Choice, name: 'battery_location', choices: battery_location_choices, @@ -3778,9 +3787,9 @@ def makeArgument(name:, display_name: 'Battery: Location', description: 'The space type for the lithium ion battery location.', default_href: "HPXML Batteries" - ) + } - args << makeArgument( + args << { type: Argument::Double, name: 'battery_power', required: false, @@ -3788,9 +3797,9 @@ def makeArgument(name:, description: 'The rated power output of the lithium ion battery.', default_href: "HPXML Batteries", units: 'W' - ) + } - args << makeArgument( + args << { type: Argument::Double, name: 'battery_capacity', required: false, @@ -3798,9 +3807,9 @@ def makeArgument(name:, description: 'The nominal capacity of the lithium ion battery.', default_href: "HPXML Batteries", units: 'kWh' - ) + } - args << makeArgument( + args << { type: Argument::Double, name: 'battery_usable_capacity', required: false, @@ -3808,9 +3817,9 @@ def makeArgument(name:, description: 'The usable capacity of the lithium ion battery.', default_href: "HPXML Batteries", units: 'kWh' - ) + } - args << makeArgument( + args << { type: Argument::Double, name: 'battery_round_trip_efficiency', required: false, @@ -3818,150 +3827,150 @@ def makeArgument(name:, description: 'The round trip efficiency of the lithium ion battery.', default_href: "HPXML Batteries", units: 'Frac' - ) + } - args << makeArgument( + args << { type: Argument::Integer, name: 'battery_num_bedrooms_served', required: false, display_name: 'Battery: Number of Bedrooms Served', description: "Number of bedrooms served by the lithium ion battery. Only needed if #{HPXML::ResidentialTypeSFA} or #{HPXML::ResidentialTypeApartment} and it is a shared battery serving multiple dwelling units. Used to apportion battery charging/discharging to the unit of a SFA/MF building.", units: '#' - ) + } - args << makeArgument( + args << { name: 'lighting_present', type: Argument::Boolean, required: true, display_name: 'Lighting: Present', description: 'Whether there is lighting energy use.' - ) + } - args << makeArgument( + args << { type: Argument::Double, name: 'lighting_interior_fraction_cfl', required: false, display_name: 'Lighting: Interior Fraction CFL', - description: 'Fraction of all lamps (interior) that are compact fluorescent. Lighting not specified as CFL, LFL, or LED is assumed to be incandescent.' - ) + description: 'Fraction of all lamps (interior} that are compact fluorescent. Lighting not specified as CFL, LFL, or LED is assumed to be incandescent. If not provided, defaults to 0.1.' + } - args << makeArgument( + args << { type: Argument::Double, name: 'lighting_interior_fraction_lfl', required: false, display_name: 'Lighting: Interior Fraction LFL', - description: 'Fraction of all lamps (interior) that are linear fluorescent. Lighting not specified as CFL, LFL, or LED is assumed to be incandescent.' - ) + description: 'Fraction of all lamps (interior} that are linear fluorescent. Lighting not specified as CFL, LFL, or LED is assumed to be incandescent. If not provided, defaults to 0.0.' + } - args << makeArgument( + args << { type: Argument::Double, name: 'lighting_interior_fraction_led', required: false, display_name: 'Lighting: Interior Fraction LED', - description: 'Fraction of all lamps (interior) that are light emitting diodes. Lighting not specified as CFL, LFL, or LED is assumed to be incandescent.' - ) + description: 'Fraction of all lamps (interior} that are light emitting diodes. Lighting not specified as CFL, LFL, or LED is assumed to be incandescent. If not provided, defaults to 0.0.' + } - args << makeArgument( + args << { type: Argument::Double, name: 'lighting_interior_usage_multiplier', required: false, display_name: 'Lighting: Interior Usage Multiplier', - description: 'Multiplier on the lighting energy usage (interior) that can reflect, e.g., high/low usage occupants.', + description: 'Multiplier on the lighting energy usage (interior} that can reflect, e.g., high/low usage occupants.', default_href: "HPXML Lighting" - ) + } - args << makeArgument( + args << { type: Argument::Double, name: 'lighting_exterior_fraction_cfl', required: false, display_name: 'Lighting: Exterior Fraction CFL', - description: 'Fraction of all lamps (exterior) that are compact fluorescent. Lighting not specified as CFL, LFL, or LED is assumed to be incandescent.' - ) + description: 'Fraction of all lamps (exterior} that are compact fluorescent. Lighting not specified as CFL, LFL, or LED is assumed to be incandescent. If not provided, defaults to 0.0.' + } - args << makeArgument( + args << { type: Argument::Double, name: 'lighting_exterior_fraction_lfl', required: false, display_name: 'Lighting: Exterior Fraction LFL', - description: 'Fraction of all lamps (exterior) that are linear fluorescent. Lighting not specified as CFL, LFL, or LED is assumed to be incandescent.' - ) + description: 'Fraction of all lamps (exterior} that are linear fluorescent. Lighting not specified as CFL, LFL, or LED is assumed to be incandescent. If not provided, defaults to 0.0.' + } - args << makeArgument( + args << { type: Argument::Double, name: 'lighting_exterior_fraction_led', required: false, display_name: 'Lighting: Exterior Fraction LED', - description: 'Fraction of all lamps (exterior) that are light emitting diodes. Lighting not specified as CFL, LFL, or LED is assumed to be incandescent.' - ) + description: 'Fraction of all lamps (exterior} that are light emitting diodes. Lighting not specified as CFL, LFL, or LED is assumed to be incandescent. If not provided, defaults to 0.0.' + } - args << makeArgument( + args << { type: Argument::Double, name: 'lighting_exterior_usage_multiplier', required: false, display_name: 'Lighting: Exterior Usage Multiplier', - description: 'Multiplier on the lighting energy usage (exterior) that can reflect, e.g., high/low usage occupants.', + description: 'Multiplier on the lighting energy usage (exterior} that can reflect, e.g., high/low usage occupants.', default_href: "HPXML Lighting" - ) + } - args << makeArgument( + args << { type: Argument::Double, name: 'lighting_garage_fraction_cfl', required: false, display_name: 'Lighting: Garage Fraction CFL', - description: 'Fraction of all lamps (garage) that are compact fluorescent. Lighting not specified as CFL, LFL, or LED is assumed to be incandescent.' - ) + description: 'Fraction of all lamps (garage} that are compact fluorescent. Lighting not specified as CFL, LFL, or LED is assumed to be incandescent. If not provided, defaults to 0.0.' + } - args << makeArgument( + args << { type: Argument::Double, name: 'lighting_garage_fraction_lfl', required: false, display_name: 'Lighting: Garage Fraction LFL', - description: 'Fraction of all lamps (garage) that are linear fluorescent. Lighting not specified as CFL, LFL, or LED is assumed to be incandescent.' - ) + description: 'Fraction of all lamps (garage} that are linear fluorescent. Lighting not specified as CFL, LFL, or LED is assumed to be incandescent. If not provided, defaults to 0.0.' + } - args << makeArgument( + args << { type: Argument::Double, name: 'lighting_garage_fraction_led', required: false, display_name: 'Lighting: Garage Fraction LED', - description: 'Fraction of all lamps (garage) that are light emitting diodes. Lighting not specified as CFL, LFL, or LED is assumed to be incandescent.' - ) + description: 'Fraction of all lamps (garage} that are light emitting diodes. Lighting not specified as CFL, LFL, or LED is assumed to be incandescent. If not provided, defaults to 0.0.' + } - args << makeArgument( + args << { type: Argument::Double, name: 'lighting_garage_usage_multiplier', required: false, display_name: 'Lighting: Garage Usage Multiplier', - description: 'Multiplier on the lighting energy usage (garage) that can reflect, e.g., high/low usage occupants.', + description: 'Multiplier on the lighting energy usage (garage} that can reflect, e.g., high/low usage occupants.', default_href: "HPXML Lighting" - ) + } - args << makeArgument( + args << { name: 'holiday_lighting_present', type: Argument::Boolean, required: false, display_name: 'Holiday Lighting: Present', description: 'Whether there is holiday lighting. If not provided, defaults to false.' - ) + } - args << makeArgument( + args << { type: Argument::Double, name: 'holiday_lighting_daily_kwh', required: false, display_name: 'Holiday Lighting: Daily Consumption', units: 'kWh/day', - description: 'The daily energy consumption for holiday lighting (exterior).', + description: 'The daily energy consumption for holiday lighting (exterior}.', default_href: "HPXML Lighting" - ) + } - args << makeArgument( + args << { type: Argument::String, name: 'holiday_lighting_period', required: false, display_name: 'Holiday Lighting: Period', description: "Enter a date range like 'Nov 25 - Jan 5'.", default_href: "HPXML Lighting" - ) + } dehumidifier_type_choices = OpenStudio::StringVector.new dehumidifier_type_choices << Constants::None @@ -3972,59 +3981,59 @@ def makeArgument(name:, dehumidifier_efficiency_type_choices << 'EnergyFactor' dehumidifier_efficiency_type_choices << 'IntegratedEnergyFactor' - args << makeArgument( + args << { type: Argument::Choice, name: 'dehumidifier_type', choices: dehumidifier_type_choices, required: false, display_name: 'Dehumidifier: Type', description: 'The type of dehumidifier. If not provided, defaults to none.' - ) + } - args << makeArgument( + args << { type: Argument::Choice, name: 'dehumidifier_efficiency_type', choices: dehumidifier_efficiency_type_choices, required: false, display_name: 'Dehumidifier: Efficiency Type', description: 'The efficiency type of dehumidifier.' - ) + } - args << makeArgument( + args << { type: Argument::Double, name: 'dehumidifier_efficiency', required: false, display_name: 'Dehumidifier: Efficiency', units: 'liters/kWh', description: 'The efficiency of the dehumidifier.' - ) + } - args << makeArgument( + args << { type: Argument::Double, name: 'dehumidifier_capacity', required: false, display_name: 'Dehumidifier: Capacity', - description: 'The capacity (water removal rate) of the dehumidifier.', + description: 'The capacity (water removal rate} of the dehumidifier.', units: 'pint/day' - ) + } - args << makeArgument( + args << { type: Argument::Double, name: 'dehumidifier_rh_setpoint', required: false, display_name: 'Dehumidifier: Relative Humidity Setpoint', description: 'The relative humidity setpoint of the dehumidifier.', units: 'Frac' - ) + } - args << makeArgument( + args << { type: Argument::Double, name: 'dehumidifier_fraction_dehumidification_load_served', required: false, display_name: 'Dehumidifier: Fraction Dehumidification Load Served', description: 'The dehumidification load served fraction of the dehumidifier.', units: 'Frac' - ) + } appliance_location_choices = OpenStudio::StringVector.new appliance_location_choices << HPXML::LocationConditionedSpace @@ -4040,15 +4049,15 @@ def makeArgument(name:, clothes_washer_efficiency_type_choices << 'ModifiedEnergyFactor' clothes_washer_efficiency_type_choices << 'IntegratedModifiedEnergyFactor' - args << makeArgument( + args << { name: 'clothes_washer_present', type: Argument::Boolean, required: true, display_name: 'Clothes Washer: Present', description: 'Whether there is a clothes washer present.' - ) + } - args << makeArgument( + args << { type: Argument::Choice, name: 'clothes_washer_location', choices: appliance_location_choices, @@ -4056,18 +4065,18 @@ def makeArgument(name:, display_name: 'Clothes Washer: Location', description: 'The space type for the clothes washer location.', default_href: "HPXML Clothes Washer" - ) + } - args << makeArgument( + args << { type: Argument::Choice, name: 'clothes_washer_efficiency_type', choices: clothes_washer_efficiency_type_choices, required: false, display_name: 'Clothes Washer: Efficiency Type', description: 'The efficiency type of the clothes washer.' - ) + } - args << makeArgument( + args << { type: Argument::Double, name: 'clothes_washer_efficiency', required: false, @@ -4075,9 +4084,9 @@ def makeArgument(name:, units: 'ft^3/kWh-cyc', description: 'The efficiency of the clothes washer.', default_href: "HPXML Clothes Washer" - ) + } - args << makeArgument( + args << { type: Argument::Double, name: 'clothes_washer_rated_annual_kwh', required: false, @@ -4085,9 +4094,9 @@ def makeArgument(name:, units: 'kWh/yr', description: 'The annual energy consumed by the clothes washer, as rated, obtained from the EnergyGuide label. This includes both the appliance electricity consumption and the energy required for water heating.', default_href: "HPXML Clothes Washer" - ) + } - args << makeArgument( + args << { type: Argument::Double, name: 'clothes_washer_label_electric_rate', required: false, @@ -4095,9 +4104,9 @@ def makeArgument(name:, units: '$/kWh', description: 'The annual energy consumed by the clothes washer, as rated, obtained from the EnergyGuide label. This includes both the appliance electricity consumption and the energy required for water heating.', default_href: "HPXML Clothes Washer" - ) + } - args << makeArgument( + args << { type: Argument::Double, name: 'clothes_washer_label_gas_rate', required: false, @@ -4105,9 +4114,9 @@ def makeArgument(name:, units: '$/therm', description: 'The annual energy consumed by the clothes washer, as rated, obtained from the EnergyGuide label. This includes both the appliance electricity consumption and the energy required for water heating.', default_href: "HPXML Clothes Washer" - ) + } - args << makeArgument( + args << { type: Argument::Double, name: 'clothes_washer_label_annual_gas_cost', required: false, @@ -4115,9 +4124,9 @@ def makeArgument(name:, units: '$', description: 'The annual cost of using the system under test conditions. Input is obtained from the EnergyGuide label.', default_href: "HPXML Clothes Washer" - ) + } - args << makeArgument( + args << { type: Argument::Double, name: 'clothes_washer_label_usage', required: false, @@ -4125,9 +4134,9 @@ def makeArgument(name:, units: 'cyc/wk', description: 'The clothes washer loads per week.', default_href: "HPXML Clothes Washer" - ) + } - args << makeArgument( + args << { type: Argument::Double, name: 'clothes_washer_capacity', required: false, @@ -4135,26 +4144,26 @@ def makeArgument(name:, units: 'ft^3', description: "Volume of the washer drum. Obtained from the EnergyStar website or the manufacturer's literature.", default_href: "HPXML Clothes Washer" - ) + } - args << makeArgument( + args << { type: Argument::Double, name: 'clothes_washer_usage_multiplier', required: false, display_name: 'Clothes Washer: Usage Multiplier', description: 'Multiplier on the clothes washer energy and hot water usage that can reflect, e.g., high/low usage occupants.', default_href: "HPXML Clothes Washer" - ) + } - args << makeArgument( + args << { name: 'clothes_dryer_present', type: Argument::Boolean, required: true, display_name: 'Clothes Dryer: Present', description: 'Whether there is a clothes dryer present.' - ) + } - args << makeArgument( + args << { type: Argument::Choice, name: 'clothes_dryer_location', choices: appliance_location_choices, @@ -4162,7 +4171,7 @@ def makeArgument(name:, display_name: 'Clothes Dryer: Location', description: 'The space type for the clothes dryer location.', default_href: "HPXML Clothes Dryer" - ) + } clothes_dryer_fuel_choices = OpenStudio::StringVector.new clothes_dryer_fuel_choices << HPXML::FuelTypeElectricity @@ -4176,25 +4185,25 @@ def makeArgument(name:, clothes_dryer_efficiency_type_choices << 'EnergyFactor' clothes_dryer_efficiency_type_choices << 'CombinedEnergyFactor' - args << makeArgument( + args << { type: Argument::Choice, name: 'clothes_dryer_fuel_type', choices: clothes_dryer_fuel_choices, required: false, display_name: 'Clothes Dryer: Fuel Type', description: 'Type of fuel used by the clothes dryer.' - ) + } - args << makeArgument( + args << { type: Argument::Choice, name: 'clothes_dryer_efficiency_type', choices: clothes_dryer_efficiency_type_choices, required: false, display_name: 'Clothes Dryer: Efficiency Type', description: 'The efficiency type of the clothes dryer.' - ) + } - args << makeArgument( + args << { type: Argument::Double, name: 'clothes_dryer_efficiency', required: false, @@ -4202,9 +4211,9 @@ def makeArgument(name:, units: 'lb/kWh', description: 'The efficiency of the clothes dryer.', default_href: "HPXML Clothes Dryer" - ) + } - args << makeArgument( + args << { type: Argument::Double, name: 'clothes_dryer_vented_flow_rate', required: false, @@ -4212,26 +4221,26 @@ def makeArgument(name:, description: 'The exhaust flow rate of the vented clothes dryer.', default_href: "HPXML Clothes Dryer", units: 'CFM' - ) + } - args << makeArgument( + args << { type: Argument::Double, name: 'clothes_dryer_usage_multiplier', required: false, display_name: 'Clothes Dryer: Usage Multiplier', description: 'Multiplier on the clothes dryer energy usage that can reflect, e.g., high/low usage occupants.', default_href: "HPXML Clothes Dryer" - ) + } - args << makeArgument( + args << { name: 'dishwasher_present', type: Argument::Boolean, required: true, display_name: 'Dishwasher: Present', description: 'Whether there is a dishwasher present.' - ) + } - args << makeArgument( + args << { type: Argument::Choice, name: 'dishwasher_location', choices: appliance_location_choices, @@ -4239,22 +4248,22 @@ def makeArgument(name:, display_name: 'Dishwasher: Location', description: 'The space type for the dishwasher location.', default_href: "HPXML Dishwasher" - ) + } dishwasher_efficiency_type_choices = OpenStudio::StringVector.new dishwasher_efficiency_type_choices << 'RatedAnnualkWh' dishwasher_efficiency_type_choices << 'EnergyFactor' - args << makeArgument( + args << { type: Argument::Choice, name: 'dishwasher_efficiency_type', choices: dishwasher_efficiency_type_choices, required: false, display_name: 'Dishwasher: Efficiency Type', description: 'The efficiency type of dishwasher.' - ) + } - args << makeArgument( + args << { type: Argument::Double, name: 'dishwasher_efficiency', required: false, @@ -4262,9 +4271,9 @@ def makeArgument(name:, units: 'RatedAnnualkWh or EnergyFactor', description: 'The efficiency of the dishwasher.', default_href: "HPXML Dishwasher" - ) + } - args << makeArgument( + args << { type: Argument::Double, name: 'dishwasher_label_electric_rate', required: false, @@ -4272,9 +4281,9 @@ def makeArgument(name:, units: '$/kWh', description: 'The label electric rate of the dishwasher.', default_href: "HPXML Dishwasher" - ) + } - args << makeArgument( + args << { type: Argument::Double, name: 'dishwasher_label_gas_rate', required: false, @@ -4282,9 +4291,9 @@ def makeArgument(name:, units: '$/therm', description: 'The label gas rate of the dishwasher.', default_href: "HPXML Dishwasher" - ) + } - args << makeArgument( + args << { type: Argument::Double, name: 'dishwasher_label_annual_gas_cost', required: false, @@ -4292,9 +4301,9 @@ def makeArgument(name:, units: '$', description: 'The label annual gas cost of the dishwasher.', default_href: "HPXML Dishwasher" - ) + } - args << makeArgument( + args << { type: Argument::Double, name: 'dishwasher_label_usage', required: false, @@ -4302,9 +4311,9 @@ def makeArgument(name:, units: 'cyc/wk', description: 'The dishwasher loads per week.', default_href: "HPXML Dishwasher" - ) + } - args << makeArgument( + args << { type: Argument::Integer, name: 'dishwasher_place_setting_capacity', required: false, @@ -4312,26 +4321,26 @@ def makeArgument(name:, units: '#', description: "The number of place settings for the unit. Data obtained from manufacturer's literature.", default_href: "HPXML Dishwasher" - ) + } - args << makeArgument( + args << { type: Argument::Double, name: 'dishwasher_usage_multiplier', required: false, display_name: 'Dishwasher: Usage Multiplier', description: 'Multiplier on the dishwasher energy usage that can reflect, e.g., high/low usage occupants.', default_href: "HPXML Dishwasher" - ) + } - args << makeArgument( + args << { name: 'refrigerator_present', type: Argument::Boolean, required: true, display_name: 'Refrigerator: Present', description: 'Whether there is a refrigerator present.' - ) + } - args << makeArgument( + args << { type: Argument::Choice, name: 'refrigerator_location', choices: appliance_location_choices, @@ -4339,9 +4348,9 @@ def makeArgument(name:, display_name: 'Refrigerator: Location', description: 'The space type for the refrigerator location.', default_href: "HPXML Refrigerators" - ) + } - args << makeArgument( + args << { type: Argument::Double, name: 'refrigerator_rated_annual_kwh', required: false, @@ -4349,26 +4358,26 @@ def makeArgument(name:, units: 'kWh/yr', description: 'The EnergyGuide rated annual energy consumption for a refrigerator.', default_href: "HPXML Refrigerators" - ) + } - args << makeArgument( + args << { type: Argument::Double, name: 'refrigerator_usage_multiplier', required: false, display_name: 'Refrigerator: Usage Multiplier', description: 'Multiplier on the refrigerator energy usage that can reflect, e.g., high/low usage occupants.', default_href: "HPXML Refrigerators" - ) + } - args << makeArgument( + args << { name: 'extra_refrigerator_present', type: Argument::Boolean, required: false, display_name: 'Extra Refrigerator: Present', description: 'Whether there is an extra refrigerator present. If not provided, defaults to false.' - ) + } - args << makeArgument( + args << { type: Argument::Choice, name: 'extra_refrigerator_location', choices: appliance_location_choices, @@ -4376,9 +4385,9 @@ def makeArgument(name:, display_name: 'Extra Refrigerator: Location', description: 'The space type for the extra refrigerator location.', default_href: "HPXML Refrigerators" - ) + } - args << makeArgument( + args << { type: Argument::Double, name: 'extra_refrigerator_rated_annual_kwh', required: false, @@ -4386,26 +4395,26 @@ def makeArgument(name:, units: 'kWh/yr', description: 'The EnergyGuide rated annual energy consumption for an extra refrigerator.', default_href: "HPXML Refrigerators" - ) + } - args << makeArgument( + args << { type: Argument::Double, name: 'extra_refrigerator_usage_multiplier', required: false, display_name: 'Extra Refrigerator: Usage Multiplier', description: 'Multiplier on the extra refrigerator energy usage that can reflect, e.g., high/low usage occupants.', default_href: "HPXML Refrigerators" - ) + } - args << makeArgument( + args << { name: 'freezer_present', type: Argument::Boolean, required: false, display_name: 'Freezer: Present', description: 'Whether there is a freezer present. If not provided, defaults to false.' - ) + } - args << makeArgument( + args << { type: Argument::Choice, name: 'freezer_location', choices: appliance_location_choices, @@ -4413,9 +4422,9 @@ def makeArgument(name:, display_name: 'Freezer: Location', description: 'The space type for the freezer location.', default_href: "HPXML Freezers" - ) + } - args << makeArgument( + args << { type: Argument::Double, name: 'freezer_rated_annual_kwh', required: false, @@ -4423,16 +4432,16 @@ def makeArgument(name:, units: 'kWh/yr', description: 'The EnergyGuide rated annual energy consumption for a freezer.', default_href: "HPXML Freezers" - ) + } - args << makeArgument( + args << { type: Argument::Double, name: 'freezer_usage_multiplier', required: false, display_name: 'Freezer: Usage Multiplier', description: 'Multiplier on the freezer energy usage that can reflect, e.g., high/low usage occupants.', default_href: "HPXML Freezers" - ) + } cooking_range_oven_fuel_choices = OpenStudio::StringVector.new cooking_range_oven_fuel_choices << HPXML::FuelTypeElectricity @@ -4442,15 +4451,15 @@ def makeArgument(name:, cooking_range_oven_fuel_choices << HPXML::FuelTypeWoodCord cooking_range_oven_fuel_choices << HPXML::FuelTypeCoal - args << makeArgument( + args << { name: 'cooking_range_oven_present', type: Argument::Boolean, required: true, display_name: 'Cooking Range/Oven: Present', description: 'Whether there is a cooking range/oven present.' - ) + } - args << makeArgument( + args << { type: Argument::Choice, name: 'cooking_range_oven_location', choices: appliance_location_choices, @@ -4458,73 +4467,73 @@ def makeArgument(name:, display_name: 'Cooking Range/Oven: Location', description: 'The space type for the cooking range/oven location.', default_href: "HPXML Cooking Range/Oven" - ) + } - args << makeArgument( + args << { type: Argument::Choice, name: 'cooking_range_oven_fuel_type', choices: cooking_range_oven_fuel_choices, required: false, display_name: 'Cooking Range/Oven: Fuel Type', description: 'Type of fuel used by the cooking range/oven.' - ) + } - args << makeArgument( + args << { name: 'cooking_range_oven_is_induction', type: Argument::Boolean, required: false, display_name: 'Cooking Range/Oven: Is Induction', description: 'Whether the cooking range is induction.', default_href: "HPXML Cooking Range/Oven" - ) + } - args << makeArgument( + args << { name: 'cooking_range_oven_is_convection', type: Argument::Boolean, required: false, display_name: 'Cooking Range/Oven: Is Convection', description: 'Whether the oven is convection.', default_href: "HPXML Cooking Range/Oven" - ) + } - args << makeArgument( + args << { type: Argument::Double, name: 'cooking_range_oven_usage_multiplier', required: false, display_name: 'Cooking Range/Oven: Usage Multiplier', description: 'Multiplier on the cooking range/oven energy usage that can reflect, e.g., high/low usage occupants.', default_href: "HPXML Cooking Range/Oven" - ) + } - args << makeArgument( + args << { name: 'ceiling_fan_present', type: Argument::Boolean, required: true, display_name: 'Ceiling Fan: Present', description: 'Whether there are any ceiling fans.' - ) + } - args << makeArgument( + args << { type: Argument::Double, name: 'ceiling_fan_label_energy_use', required: false, display_name: 'Ceiling Fan: Label Energy Use', units: 'W', - description: 'The label average energy use of the ceiling fan(s).', + description: 'The label average energy use of the ceiling fan(s}.', default_href: "HPXML Ceiling Fans" - ) + } - args << makeArgument( + args << { type: Argument::Double, name: 'ceiling_fan_efficiency', required: false, display_name: 'Ceiling Fan: Efficiency', units: 'CFM/W', - description: 'The efficiency rating of the ceiling fan(s) at medium speed. Only used if Label Energy Use not provided.', + description: 'The efficiency rating of the ceiling fan(s} at medium speed. Only used if Label Energy Use not provided.', default_href: "HPXML Ceiling Fans" - ) + } - args << makeArgument( + args << { type: Argument::Integer, name: 'ceiling_fan_quantity', required: false, @@ -4532,9 +4541,9 @@ def makeArgument(name:, units: '#', description: 'Total number of ceiling fans.', default_href: "HPXML Ceiling Fans" - ) + } - args << makeArgument( + args << { type: Argument::Double, name: 'ceiling_fan_cooling_setpoint_temp_offset', required: false, @@ -4542,17 +4551,17 @@ def makeArgument(name:, units: 'F', description: 'The cooling setpoint temperature offset during months when the ceiling fans are operating. Only applies if ceiling fan quantity is greater than zero.', default_href: "HPXML Ceiling Fans" - ) + } - args << makeArgument( + args << { name: 'misc_plug_loads_television_present', type: Argument::Boolean, required: true, display_name: 'Misc Plug Loads: Television Present', description: 'Whether there are televisions.' - ) + } - args << makeArgument( + args << { type: Argument::Double, name: 'misc_plug_loads_television_annual_kwh', required: false, @@ -4560,18 +4569,18 @@ def makeArgument(name:, description: 'The annual energy consumption of the television plug loads.', default_href: "HPXML Plug Loads", units: 'kWh/yr' - ) + } - args << makeArgument( + args << { type: Argument::Double, name: 'misc_plug_loads_television_usage_multiplier', required: false, display_name: 'Misc Plug Loads: Television Usage Multiplier', description: 'Multiplier on the television energy usage that can reflect, e.g., high/low usage occupants.', default_href: "HPXML Plug Loads" - ) + } - args << makeArgument( + args << { type: Argument::Double, name: 'misc_plug_loads_other_annual_kwh', required: false, @@ -4579,9 +4588,9 @@ def makeArgument(name:, description: 'The annual energy consumption of the other residual plug loads.', default_href: "HPXML Plug Loads", units: 'kWh/yr' - ) + } - args << makeArgument( + args << { type: Argument::Double, name: 'misc_plug_loads_other_frac_sensible', required: false, @@ -4589,9 +4598,9 @@ def makeArgument(name:, description: "Fraction of other residual plug loads' internal gains that are sensible.", default_href: "HPXML Plug Loads", units: 'Frac' - ) + } - args << makeArgument( + args << { type: Argument::Double, name: 'misc_plug_loads_other_frac_latent', required: false, @@ -4599,26 +4608,26 @@ def makeArgument(name:, description: "Fraction of other residual plug loads' internal gains that are latent.", default_href: "HPXML Plug Loads", units: 'Frac' - ) + } - args << makeArgument( + args << { type: Argument::Double, name: 'misc_plug_loads_other_usage_multiplier', required: false, display_name: 'Misc Plug Loads: Other Usage Multiplier', description: 'Multiplier on the other energy usage that can reflect, e.g., high/low usage occupants.', default_href: "HPXML Plug Loads" - ) + } - args << makeArgument( + args << { name: 'misc_plug_loads_well_pump_present', type: Argument::Boolean, required: false, display_name: 'Misc Plug Loads: Well Pump Present', description: 'Whether there is a well pump. If not provided, defaults to false.' - ) + } - args << makeArgument( + args << { type: Argument::Double, name: 'misc_plug_loads_well_pump_annual_kwh', required: false, @@ -4626,26 +4635,26 @@ def makeArgument(name:, description: 'The annual energy consumption of the well pump plug loads.', default_href: "HPXML Plug Loads", units: 'kWh/yr' - ) + } - args << makeArgument( + args << { type: Argument::Double, name: 'misc_plug_loads_well_pump_usage_multiplier', required: false, display_name: 'Misc Plug Loads: Well Pump Usage Multiplier', description: 'Multiplier on the well pump energy usage that can reflect, e.g., high/low usage occupants.', default_href: "HPXML Plug Loads" - ) + } - args << makeArgument( + args << { name: 'misc_plug_loads_vehicle_present', type: Argument::Boolean, required: false, display_name: 'Misc Plug Loads: Vehicle Present', description: 'Whether there is an electric vehicle. If not provided, defaults to false.' - ) + } - args << makeArgument( + args << { type: Argument::Double, name: 'misc_plug_loads_vehicle_annual_kwh', required: false, @@ -4653,16 +4662,16 @@ def makeArgument(name:, description: 'The annual energy consumption of the electric vehicle plug loads.', default_href: "HPXML Plug Loads", units: 'kWh/yr' - ) + } - args << makeArgument( + args << { type: Argument::Double, name: 'misc_plug_loads_vehicle_usage_multiplier', required: false, display_name: 'Misc Plug Loads: Vehicle Usage Multiplier', description: 'Multiplier on the electric vehicle energy usage that can reflect, e.g., high/low usage occupants.', default_href: "HPXML Plug Loads" - ) + } misc_fuel_loads_fuel_choices = OpenStudio::StringVector.new misc_fuel_loads_fuel_choices << HPXML::FuelTypeNaturalGas @@ -4671,24 +4680,24 @@ def makeArgument(name:, misc_fuel_loads_fuel_choices << HPXML::FuelTypeWoodCord misc_fuel_loads_fuel_choices << HPXML::FuelTypeWoodPellets - args << makeArgument( + args << { name: 'misc_fuel_loads_grill_present', type: Argument::Boolean, required: false, display_name: 'Misc Fuel Loads: Grill Present', description: 'Whether there is a fuel loads grill. If not provided, defaults to false.' - ) + } - args << makeArgument( + args << { type: Argument::Choice, name: 'misc_fuel_loads_grill_fuel_type', choices: misc_fuel_loads_fuel_choices, required: false, display_name: 'Misc Fuel Loads: Grill Fuel Type', - description: 'The fuel type of the fuel loads grill.' - ) + description: 'The fuel type of the fuel loads grill. If not provided, defaults to natural gas.' + } - args << makeArgument( + args << { type: Argument::Double, name: 'misc_fuel_loads_grill_annual_therm', required: false, @@ -4696,35 +4705,35 @@ def makeArgument(name:, description: 'The annual energy consumption of the fuel loads grill.', default_href: "HPXML Fuel Loads", units: 'therm/yr' - ) + } - args << makeArgument( + args << { type: Argument::Double, name: 'misc_fuel_loads_grill_usage_multiplier', required: false, display_name: 'Misc Fuel Loads: Grill Usage Multiplier', description: 'Multiplier on the fuel loads grill energy usage that can reflect, e.g., high/low usage occupants.', default_href: "HPXML Fuel Loads" - ) + } - args << makeArgument( + args << { name: 'misc_fuel_loads_lighting_present', type: Argument::Boolean, required: false, display_name: 'Misc Fuel Loads: Lighting Present', description: 'Whether there is fuel loads lighting. If not provided, defaults to false.' - ) + } - args << makeArgument( + args << { type: Argument::Choice, name: 'misc_fuel_loads_lighting_fuel_type', choices: misc_fuel_loads_fuel_choices, required: false, display_name: 'Misc Fuel Loads: Lighting Fuel Type', - description: 'The fuel type of the fuel loads lighting.' - ) + description: 'The fuel type of the fuel loads lighting. If not provided, defaults to natural gas.' + } - args << makeArgument( + args << { type: Argument::Double, name: 'misc_fuel_loads_lighting_annual_therm', required: false, @@ -4732,35 +4741,35 @@ def makeArgument(name:, description: 'The annual energy consumption of the fuel loads lighting.', default_href: "HPXML Fuel Loads", units: 'therm/yr' - ) + } - args << makeArgument( + args << { type: Argument::Double, name: 'misc_fuel_loads_lighting_usage_multiplier', required: false, display_name: 'Misc Fuel Loads: Lighting Usage Multiplier', description: 'Multiplier on the fuel loads lighting energy usage that can reflect, e.g., high/low usage occupants.', default_href: "HPXML Fuel Loads" - ) + } - args << makeArgument( + args << { name: 'misc_fuel_loads_fireplace_present', type: Argument::Boolean, required: false, display_name: 'Misc Fuel Loads: Fireplace Present', description: 'Whether there is fuel loads fireplace. If not provided, defaults to false.' - ) + } - args << makeArgument( + args << { type: Argument::Choice, name: 'misc_fuel_loads_fireplace_fuel_type', choices: misc_fuel_loads_fuel_choices, required: false, display_name: 'Misc Fuel Loads: Fireplace Fuel Type', - description: 'The fuel type of the fuel loads fireplace.' - ) + description: 'The fuel type of the fuel loads fireplace. If not provided, defaults to natural gas.' + } - args << makeArgument( + args << { type: Argument::Double, name: 'misc_fuel_loads_fireplace_annual_therm', required: false, @@ -4768,9 +4777,9 @@ def makeArgument(name:, description: 'The annual energy consumption of the fuel loads fireplace.', default_href: "HPXML Fuel Loads", units: 'therm/yr' - ) + } - args << makeArgument( + args << { type: Argument::Double, name: 'misc_fuel_loads_fireplace_frac_sensible', required: false, @@ -4778,9 +4787,9 @@ def makeArgument(name:, description: "Fraction of fireplace residual fuel loads' internal gains that are sensible.", default_href: "HPXML Fuel Loads", units: 'Frac' - ) + } - args << makeArgument( + args << { type: Argument::Double, name: 'misc_fuel_loads_fireplace_frac_latent', required: false, @@ -4788,16 +4797,16 @@ def makeArgument(name:, description: "Fraction of fireplace residual fuel loads' internal gains that are latent.", default_href: "HPXML Fuel Loads", units: 'Frac' - ) + } - args << makeArgument( + args << { type: Argument::Double, name: 'misc_fuel_loads_fireplace_usage_multiplier', required: false, display_name: 'Misc Fuel Loads: Fireplace Usage Multiplier', description: 'Multiplier on the fuel loads fireplace energy usage that can reflect, e.g., high/low usage occupants.', default_href: "HPXML Fuel Loads" - ) + } heater_type_choices = OpenStudio::StringVector.new heater_type_choices << HPXML::TypeNone @@ -4805,15 +4814,15 @@ def makeArgument(name:, heater_type_choices << HPXML::HeaterTypeGas heater_type_choices << HPXML::HeaterTypeHeatPump - args << makeArgument( + args << { name: 'pool_present', type: Argument::Boolean, required: false, display_name: 'Pool: Present', description: 'Whether there is a pool. If not provided, defaults to false.' - ) + } - args << makeArgument( + args << { type: Argument::Double, name: 'pool_pump_annual_kwh', required: false, @@ -4821,27 +4830,27 @@ def makeArgument(name:, description: 'The annual energy consumption of the pool pump.', default_href: "Pool Pump", units: 'kWh/yr' - ) + } - args << makeArgument( + args << { type: Argument::Double, name: 'pool_pump_usage_multiplier', required: false, display_name: 'Pool: Pump Usage Multiplier', description: 'Multiplier on the pool pump energy usage that can reflect, e.g., high/low usage occupants.', default_href: "Pool Pump" - ) + } - args << makeArgument( + args << { type: Argument::Choice, name: 'pool_heater_type', choices: heater_type_choices, required: false, display_name: 'Pool: Heater Type', description: "The type of pool heater. Use '#{HPXML::TypeNone}' if there is no pool heater." - ) + } - args << makeArgument( + args << { type: Argument::Double, name: 'pool_heater_annual_kwh', required: false, @@ -4849,9 +4858,9 @@ def makeArgument(name:, description: "The annual energy consumption of the #{HPXML::HeaterTypeElectricResistance} pool heater.", default_href: "Pool Heater", units: 'kWh/yr' - ) + } - args << makeArgument( + args << { type: Argument::Double, name: 'pool_heater_annual_therm', required: false, @@ -4859,26 +4868,26 @@ def makeArgument(name:, description: "The annual energy consumption of the #{HPXML::HeaterTypeGas} pool heater.", default_href: "Pool Heater", units: 'therm/yr' - ) + } - args << makeArgument( + args << { type: Argument::Double, name: 'pool_heater_usage_multiplier', required: false, display_name: 'Pool: Heater Usage Multiplier', description: 'Multiplier on the pool heater energy usage that can reflect, e.g., high/low usage occupants.', default_href: "Pool Heater" - ) + } - args << makeArgument( + args << { name: 'permanent_spa_present', type: Argument::Boolean, required: false, display_name: 'Permanent Spa: Present', description: 'Whether there is a permanent spa. If not provided, defaults to false.' - ) + } - args << makeArgument( + args << { type: Argument::Double, name: 'permanent_spa_pump_annual_kwh', required: false, @@ -4886,27 +4895,27 @@ def makeArgument(name:, description: 'The annual energy consumption of the permanent spa pump.', default_href: "Permanent Spa Pump", units: 'kWh/yr' - ) + } - args << makeArgument( + args << { type: Argument::Double, name: 'permanent_spa_pump_usage_multiplier', required: false, display_name: 'Permanent Spa: Pump Usage Multiplier', description: 'Multiplier on the permanent spa pump energy usage that can reflect, e.g., high/low usage occupants.', default_href: "Permanent Spa Pump" - ) + } - args << makeArgument( + args << { type: Argument::Choice, name: 'permanent_spa_heater_type', choices: heater_type_choices, required: false, display_name: 'Permanent Spa: Heater Type', description: "The type of permanent spa heater. Use '#{HPXML::TypeNone}' if there is no permanent spa heater." - ) + } - args << makeArgument( + args << { type: Argument::Double, name: 'permanent_spa_heater_annual_kwh', required: false, @@ -4914,9 +4923,9 @@ def makeArgument(name:, description: "The annual energy consumption of the #{HPXML::HeaterTypeElectricResistance} permanent spa heater.", default_href: "Permanent Spa Heater", units: 'kWh/yr' - ) + } - args << makeArgument( + args << { type: Argument::Double, name: 'permanent_spa_heater_annual_therm', required: false, @@ -4924,102 +4933,102 @@ def makeArgument(name:, description: "The annual energy consumption of the #{HPXML::HeaterTypeGas} permanent spa heater.", default_href: "Permanent Spa Heater", units: 'therm/yr' - ) + } - args << makeArgument( + args << { type: Argument::Double, name: 'permanent_spa_heater_usage_multiplier', required: false, display_name: 'Permanent Spa: Heater Usage Multiplier', description: 'Multiplier on the permanent spa heater energy usage that can reflect, e.g., high/low usage occupants.', default_href: "Permanent Spa Heater" - ) + } - args << makeArgument( + args << { type: Argument::String, name: 'emissions_scenario_names', required: false, display_name: 'Emissions: Scenario Names', description: 'Names of emissions scenarios. If multiple scenarios, use a comma-separated list. If not provided, no emissions scenarios are calculated.' - ) + } - args << makeArgument( + args << { type: Argument::String, name: 'emissions_types', required: false, display_name: 'Emissions: Types', - description: 'Types of emissions (e.g., CO2e, NOx, etc.). If multiple scenarios, use a comma-separated list.' - ) + description: 'Types of emissions (e.g., CO2e, NOx, etc.}. If multiple scenarios, use a comma-separated list.' + } - args << makeArgument( + args << { type: Argument::String, name: 'emissions_electricity_units', required: false, display_name: 'Emissions: Electricity Units', description: 'Electricity emissions factors units. If multiple scenarios, use a comma-separated list. Only lb/MWh and kg/MWh are allowed.' - ) + } - args << makeArgument( + args << { type: Argument::String, name: 'emissions_electricity_values_or_filepaths', required: false, display_name: 'Emissions: Electricity Values or File Paths', description: 'Electricity emissions factors values, specified as either an annual factor or an absolute/relative path to a file with hourly factors. If multiple scenarios, use a comma-separated list.' - ) + } - args << makeArgument( + args << { type: Argument::String, name: 'emissions_electricity_number_of_header_rows', required: false, display_name: 'Emissions: Electricity Files Number of Header Rows', description: 'The number of header rows in the electricity emissions factor file. Only applies when an electricity filepath is used. If multiple scenarios, use a comma-separated list.' - ) + } - args << makeArgument( + args << { type: Argument::String, name: 'emissions_electricity_column_numbers', required: false, display_name: 'Emissions: Electricity Files Column Numbers', description: 'The column number in the electricity emissions factor file. Only applies when an electricity filepath is used. If multiple scenarios, use a comma-separated list.' - ) + } - args << makeArgument( + args << { type: Argument::String, name: 'emissions_fossil_fuel_units', required: false, display_name: 'Emissions: Fossil Fuel Units', description: 'Fossil fuel emissions factors units. If multiple scenarios, use a comma-separated list. Only lb/MBtu and kg/MBtu are allowed.' - ) + } HPXML::fossil_fuels.each do |fossil_fuel| underscore_case = OpenStudio::toUnderscoreCase(fossil_fuel) all_caps_case = fossil_fuel.split(' ').map(&:capitalize).join(' ') cap_case = fossil_fuel.capitalize - args << makeArgument( + args << { type: Argument::String, name: "emissions_#{underscore_case}_values", required: false, display_name: "Emissions: #{all_caps_case} Values", description: "#{cap_case} emissions factors values, specified as an annual factor. If multiple scenarios, use a comma-separated list." - ) + } end - args << makeArgument( + args << { type: Argument::String, name: 'utility_bill_scenario_names', required: false, display_name: 'Utility Bills: Scenario Names', description: 'Names of utility bill scenarios. If multiple scenarios, use a comma-separated list. If not provided, no utility bills scenarios are calculated.' - ) + } - args << makeArgument( + args << { type: Argument::String, name: 'utility_bill_electricity_filepaths', required: false, display_name: 'Utility Bills: Electricity File Paths', description: 'Electricity tariff file specified as an absolute/relative path to a file with utility rate structure information. Tariff file must be formatted to OpenEI API version 7. If multiple scenarios, use a comma-separated list.' - ) + } HPXML::all_fuels.each do |fuel| @@ -5027,13 +5036,13 @@ def makeArgument(name:, all_caps_case = fuel.split(' ').map(&:capitalize).join(' ') cap_case = fuel.capitalize - args << makeArgument( + args << { type: Argument::String, name: "utility_bill_#{underscore_case}_fixed_charges", required: false, display_name: "Utility Bills: #{all_caps_case} Fixed Charges", description: "#{cap_case} utility bill monthly fixed charges. If multiple scenarios, use a comma-separated list." - ) + } end HPXML::all_fuels.each do |fuel| @@ -5041,186 +5050,98 @@ def makeArgument(name:, all_caps_case = fuel.split(' ').map(&:capitalize).join(' ') cap_case = fuel.capitalize - args << makeArgument( + args << { type: Argument::String, name: "utility_bill_#{underscore_case}_marginal_rates", required: false, display_name: "Utility Bills: #{all_caps_case} Marginal Rates", description: "#{cap_case} utility bill marginal rates. If multiple scenarios, use a comma-separated list." - ) + } end - args << makeArgument( + args << { type: Argument::String, name: 'utility_bill_pv_compensation_types', required: false, display_name: 'Utility Bills: PV Compensation Types', description: 'Utility bill PV compensation types. If multiple scenarios, use a comma-separated list.' - ) + } - args << makeArgument( + args << { type: Argument::String, name: 'utility_bill_pv_net_metering_annual_excess_sellback_rate_types', required: false, display_name: 'Utility Bills: PV Net Metering Annual Excess Sellback Rate Types', description: "Utility bill PV net metering annual excess sellback rate types. Only applies if the PV compensation type is '#{HPXML::PVCompensationTypeNetMetering}'. If multiple scenarios, use a comma-separated list." - ) + } - args << makeArgument( + args << { type: Argument::String, name: 'utility_bill_pv_net_metering_annual_excess_sellback_rates', required: false, display_name: 'Utility Bills: PV Net Metering Annual Excess Sellback Rates', description: "Utility bill PV net metering annual excess sellback rates. Only applies if the PV compensation type is '#{HPXML::PVCompensationTypeNetMetering}' and the PV annual excess sellback rate type is '#{HPXML::PVAnnualExcessSellbackRateTypeUserSpecified}'. If multiple scenarios, use a comma-separated list." - ) + } - args << makeArgument( + args << { type: Argument::String, name: 'utility_bill_pv_feed_in_tariff_rates', required: false, display_name: 'Utility Bills: PV Feed-In Tariff Rates', description: "Utility bill PV annual full/gross feed-in tariff rates. Only applies if the PV compensation type is '#{HPXML::PVCompensationTypeFeedInTariff}'. If multiple scenarios, use a comma-separated list." - ) + } - args << makeArgument( + args << { type: Argument::String, name: 'utility_bill_pv_monthly_grid_connection_fee_units', required: false, display_name: 'Utility Bills: PV Monthly Grid Connection Fee Units', description: 'Utility bill PV monthly grid connection fee units. If multiple scenarios, use a comma-separated list.' - ) + } - args << makeArgument( + args << { type: Argument::String, name: 'utility_bill_pv_monthly_grid_connection_fees', required: false, display_name: 'Utility Bills: PV Monthly Grid Connection Fees', description: 'Utility bill PV monthly grid connection fees. If multiple scenarios, use a comma-separated list.' - ) + } - args << makeArgument( + args << { type: Argument::String, name: 'additional_properties', required: false, display_name: 'Additional Properties', - description: "Additional properties specified as key-value pairs (i.e., key=value). If multiple additional properties, use a |-separated list. For example, 'LowIncome=false|Remodeled|Description=2-story home in Denver'. These properties will be stored in the HPXML file under /HPXML/SoftwareInfo/extension/AdditionalProperties." - ) + description: "Additional properties specified as key-value pairs (i.e., key=value}. If multiple additional properties, use a |-separated list. For example, 'LowIncome=false|Remodeled|Description=2-story home in Denver'. These properties will be stored in the HPXML file under /HPXML/SoftwareInfo/extension/AdditionalProperties." + } - args << makeArgument( + args << { name: 'combine_like_surfaces', type: Argument::Boolean, required: false, display_name: 'Combine like surfaces?', description: 'If true, combines like surfaces to simplify the HPXML file generated.' - ) + } - args << makeArgument( + args << { name: 'apply_defaults', type: Argument::Boolean, required: false, display_name: 'Apply Default Values?', description: 'If true, applies OS-HPXML default values to the HPXML output file. Setting to true will also force validation of the HPXML output file before applying OS-HPXML default values.' - ) + } - args << makeArgument( + args << { name: 'apply_validation', type: Argument::Boolean, required: false, display_name: 'Apply Validation?', description: 'If true, validates the HPXML output file. Set to false for faster performance. Note that validation is not needed if the HPXML file will be validated downstream (e.g., via the HPXMLtoOpenStudio measure).' - ) + } return args end - # TODO - def defaultOptionalArgumentValues(args) - # these were previously required arguments with default values set (i.e., arg.setDefaultValue(xxx)) - args[:floor_over_foundation_assembly_r] = 28.1 if args[:floor_over_foundation_assembly_r].nil? - args[:floor_over_garage_assembly_r] = 28.1 if args[:floor_over_garage_assembly_r].nil? - args[:ceiling_assembly_r] = 31.6 if args[:ceiling_assembly_r].nil? - args[:geometry_foundation_height] = 0.0 if args[:geometry_foundation_height].nil? - args[:geometry_foundation_height_above_grade] = 0.0 if args[:geometry_foundation_height_above_grade].nil? - args[:geometry_roof_pitch] = '6:12' if args[:geometry_roof_pitch].nil? - args[:geometry_garage_width] = 0.0 if args[:geometry_garage_width].nil? - args[:geometry_garage_depth] = 20.0 if args[:geometry_garage_depth].nil? - args[:geometry_garage_protrusion] = 0.0 if args[:geometry_garage_protrusion].nil? - args[:geometry_garage_position] = Constants::PositionRight if args[:geometry_garage_position].nil? - args[:slab_perimeter_insulation_r] = 0 if args[:slab_perimeter_insulation_r].nil? - args[:slab_perimeter_insulation_depth] = 0 if args[:slab_perimeter_insulation_depth].nil? - args[:slab_under_insulation_r] = 0 if args[:slab_under_insulation_r].nil? - args[:slab_under_insulation_width] = 0 if args[:slab_under_insulation_width].nil? - args[:neighbor_front_distance] = 0.0 if args[:neighbor_front_distance].nil? - args[:neighbor_back_distance] = 0.0 if args[:neighbor_back_distance].nil? - args[:neighbor_left_distance] = 10.0 if args[:neighbor_left_distance].nil? - args[:neighbor_right_distance] = 10.0 if args[:neighbor_right_distance].nil? - args[:overhangs_front_depth] = 0 if args[:overhangs_front_depth].nil? - args[:overhangs_front_distance_to_top_of_window] = 0 if args[:overhangs_front_distance_to_top_of_window].nil? - args[:overhangs_front_distance_to_bottom_of_window] = 4 if args[:overhangs_front_distance_to_bottom_of_window].nil? - args[:overhangs_back_depth] = 0 if args[:overhangs_back_depth].nil? - args[:overhangs_back_distance_to_top_of_window] = 0 if args[:overhangs_back_distance_to_top_of_window].nil? - args[:overhangs_back_distance_to_bottom_of_window] = 4 if args[:overhangs_back_distance_to_bottom_of_window].nil? - args[:overhangs_left_depth] = 0 if args[:overhangs_left_depth].nil? - args[:overhangs_left_distance_to_top_of_window] = 0 if args[:overhangs_left_distance_to_top_of_window].nil? - args[:overhangs_left_distance_to_bottom_of_window] = 4 if args[:overhangs_left_distance_to_bottom_of_window].nil? - args[:overhangs_right_depth] = 0 if args[:overhangs_right_depth].nil? - args[:overhangs_right_distance_to_top_of_window] = 0 if args[:overhangs_right_distance_to_top_of_window].nil? - args[:overhangs_right_distance_to_bottom_of_window] = 4 if args[:overhangs_right_distance_to_bottom_of_window].nil? - args[:skylight_ufactor] = 0.33 if args[:skylight_ufactor].nil? - args[:skylight_shgc] = 0.45 if args[:skylight_shgc].nil? - args[:heating_system_fuel] = HPXML::FuelTypeNaturalGas if args[:heating_system_fuel].nil? - args[:heating_system_heating_efficiency] = 0.78 if args[:heating_system_heating_efficiency].nil? - args[:heating_system_fraction_heat_load_served] = 1 if args[:heating_system_fraction_heat_load_served].nil? - args[:cooling_system_cooling_efficiency_type] = HPXML::UnitsSEER if args[:cooling_system_cooling_efficiency_type].nil? - args[:cooling_system_cooling_efficiency] = 13.0 if args[:cooling_system_cooling_efficiency].nil? - args[:cooling_system_fraction_cool_load_served] = 1 if args[:cooling_system_fraction_cool_load_served].nil? - args[:heat_pump_heating_efficiency_type] = HPXML::UnitsHSPF if args[:heat_pump_heating_efficiency_type].nil? - args[:heat_pump_heating_efficiency] = 7.7 if args[:heat_pump_heating_efficiency].nil? - args[:heat_pump_cooling_efficiency_type] = HPXML::UnitsSEER if args[:heat_pump_cooling_efficiency_type].nil? - args[:heat_pump_cooling_efficiency] = 13.0 if args[:heat_pump_cooling_efficiency].nil? - args[:heat_pump_fraction_heat_load_served] = 1 if args[:heat_pump_fraction_heat_load_served].nil? - args[:heat_pump_fraction_cool_load_served] = 1 if args[:heat_pump_fraction_cool_load_served].nil? - args[:heat_pump_backup_type] = HPXML::HeatPumpBackupTypeIntegrated if args[:heat_pump_backup_type].nil? - args[:heat_pump_backup_fuel] = HPXML::FuelTypeElectricity if args[:heat_pump_backup_fuel].nil? - args[:heat_pump_backup_heating_efficiency] = 1 if args[:heat_pump_backup_heating_efficiency].nil? - args[:heating_system_2_type] = Constants::None if args[:heating_system_2_type].nil? - args[:heating_system_2_fuel] = HPXML::FuelTypeElectricity if args[:heating_system_2_fuel].nil? - args[:heating_system_2_heating_efficiency] = 1.0 if args[:heating_system_2_heating_efficiency].nil? - args[:heating_system_2_fraction_heat_load_served] = 0.25 if args[:heating_system_2_fraction_heat_load_served].nil? - args[:mech_vent_fan_type] = Constants::None if args[:mech_vent_fan_type].nil? - args[:mech_vent_recovery_efficiency_type] = 'Unadjusted' if args[:mech_vent_recovery_efficiency_type].nil? - args[:mech_vent_total_recovery_efficiency] = 0.48 if args[:mech_vent_total_recovery_efficiency].nil? - args[:mech_vent_sensible_recovery_efficiency] = 0.72 if args[:mech_vent_sensible_recovery_efficiency].nil? - args[:mech_vent_2_fan_type] = Constants::None if args[:mech_vent_2_fan_type].nil? - args[:dehumidifier_type] = Constants::None if args[:dehumidifier_type].nil? - args[:water_heater_type] = HPXML::WaterHeaterTypeStorage if args[:water_heater_type].nil? - args[:water_heater_jacket_rvalue] = Constants::None if args[:water_heater_jacket_rvalue].nil? - args[:water_fixtures_shower_low_flow] = false if args[:water_fixtures_shower_low_flow].nil? - args[:water_fixtures_sink_low_flow] = false if args[:water_fixtures_sink_low_flow].nil? - args[:solar_thermal_system_type] = Constants::None if args[:solar_thermal_system_type].nil? - args[:solar_thermal_collector_area] = 40.0 if args[:solar_thermal_collector_area].nil? - args[:solar_thermal_collector_loop_type] = HPXML::SolarThermalLoopTypeDirect if args[:solar_thermal_collector_loop_type].nil? - args[:solar_thermal_collector_type] = HPXML::SolarThermalCollectorTypeEvacuatedTube if args[:solar_thermal_collector_type].nil? - args[:solar_thermal_collector_azimuth] = 180 if args[:solar_thermal_collector_azimuth].nil? - args[:solar_thermal_collector_tilt] = 'RoofPitch' if args[:solar_thermal_collector_tilt].nil? - args[:solar_thermal_collector_rated_optical_efficiency] = 0.5 if args[:solar_thermal_collector_rated_optical_efficiency].nil? - args[:solar_thermal_collector_rated_thermal_losses] = 0.2799 if args[:solar_thermal_collector_rated_thermal_losses].nil? - args[:solar_thermal_solar_fraction] = 0 if args[:solar_thermal_solar_fraction].nil? - args[:misc_fuel_loads_grill_fuel_type] = HPXML::FuelTypeNaturalGas if args[:misc_fuel_loads_grill_fuel_type].nil? - args[:misc_fuel_loads_lighting_fuel_type] = HPXML::FuelTypeNaturalGas if args[:misc_fuel_loads_lighting_fuel_type].nil? - args[:misc_fuel_loads_fireplace_fuel_type] = HPXML::FuelTypeNaturalGas if args[:misc_fuel_loads_fireplace_fuel_type].nil? - args[:lighting_interior_fraction_cfl] = 0.1 if args[:lighting_interior_fraction_cfl].nil? - args[:lighting_interior_fraction_lfl] = 0.0 if args[:lighting_interior_fraction_lfl].nil? - args[:lighting_interior_fraction_led] = 0.0 if args[:lighting_interior_fraction_led].nil? - args[:lighting_exterior_fraction_cfl] = 0.0 if args[:lighting_exterior_fraction_cfl].nil? - args[:lighting_exterior_fraction_lfl] = 0.0 if args[:lighting_exterior_fraction_lfl].nil? - args[:lighting_exterior_fraction_led] = 0.0 if args[:lighting_exterior_fraction_led].nil? - args[:lighting_garage_fraction_cfl] = 0.0 if args[:lighting_garage_fraction_cfl].nil? - args[:lighting_garage_fraction_lfl] = 0.0 if args[:lighting_garage_fraction_lfl].nil? - args[:lighting_garage_fraction_led] = 0.0 if args[:lighting_garage_fraction_led].nil? - return args - end - # Define what happens when the measure is run. # # @param model [OpenStudio::Model::Model] OpenStudio Model object @@ -5240,8 +5161,7 @@ def run(model, runner, user_arguments) Version.check_openstudio_version() args = runner.getArgumentValues(arguments(model), user_arguments) - args = convertArgumentValues(arguments(model), args) - args = defaultOptionalArgumentValues(args) + args = convertArgumentValues(get_arguments, args) # Argument error checks warnings, errors = validate_arguments(args) @@ -5265,7 +5185,7 @@ def run(model, runner, user_arguments) epw_path = args[:weather_station_epw_filepath] if epw_path.nil? # Get EPW path from zip code - epw_path = Defaults.lookup_weather_data_from_zipcode("#{args[:site_zip_code]}")[:station_filename] + epw_path = Defaults.lookup_weather_data_from_zipcode(args[:site_zip_code])[:station_filename] end # Create EpwFile object @@ -5337,13 +5257,13 @@ def argument_warnings(args) warning = (args[:geometry_foundation_type] == HPXML::FoundationTypeSlab) && (args[:geometry_foundation_height_above_grade] > 0) warnings << 'Specified a slab foundation type with a non-zero height above grade.' if warning - warning = [HPXML::FoundationTypeCrawlspaceVented, HPXML::FoundationTypeCrawlspaceUnvented, HPXML::FoundationTypeBasementUnconditioned].include?(args[:geometry_foundation_type]) && ((args[:foundation_wall_insulation_r] > 0) || !args[:foundation_wall_assembly_r].nil?) && (args[:floor_over_foundation_assembly_r] > max_uninsulated_floor_rvalue) + warning = [HPXML::FoundationTypeCrawlspaceVented, HPXML::FoundationTypeCrawlspaceUnvented, HPXML::FoundationTypeBasementUnconditioned].include?(args[:geometry_foundation_type]) && ((args[:foundation_wall_insulation_r] > 0) || !args[:foundation_wall_assembly_r].nil?) && (!args[:floor_over_foundation_assembly_r].nil? && args[:floor_over_foundation_assembly_r] > max_uninsulated_floor_rvalue) warnings << 'Home with unconditioned basement/crawlspace foundation type has both foundation wall insulation and floor insulation.' if warning warning = [HPXML::AtticTypeVented, HPXML::AtticTypeUnvented].include?(args[:geometry_attic_type]) && (args[:ceiling_assembly_r] > max_uninsulated_ceiling_rvalue) && (args[:roof_assembly_r] > max_uninsulated_roof_rvalue) warnings << 'Home with unconditioned attic type has both ceiling insulation and roof insulation.' if warning - warning = (args[:geometry_foundation_type] == HPXML::FoundationTypeBasementConditioned) && (args[:floor_over_foundation_assembly_r] > max_uninsulated_floor_rvalue) + warning = (args[:geometry_foundation_type] == HPXML::FoundationTypeBasementConditioned) && (!args[:floor_over_foundation_assembly_r].nil? && args[:floor_over_foundation_assembly_r] > max_uninsulated_floor_rvalue) warnings << 'Home with conditioned basement has floor insulation.' if warning warning = (args[:geometry_attic_type] == HPXML::AtticTypeConditioned) && (args[:ceiling_assembly_r] > max_uninsulated_ceiling_rvalue) @@ -5375,7 +5295,7 @@ def argument_errors(args) error = (args[:geometry_unit_type] == HPXML::ResidentialTypeApartment) && ([HPXML::FoundationTypeBasementConditioned, HPXML::FoundationTypeCrawlspaceConditioned].include? args[:geometry_foundation_type]) errors << 'Conditioned basement/crawlspace foundation type for apartment units is not currently supported.' if error - error = (args[:heating_system_type] == Constants::None) && (args[:heat_pump_type] == Constants::None) && (args[:heating_system_2_type] != Constants::None) + error = (args[:heating_system_type] == Constants::None) && (args[:heat_pump_type] == Constants::None) && (!args[:heating_system_2_type].nil? && args[:heating_system_2_type] != Constants::None) errors << 'A second heating system was specified without a primary heating system.' if error if ((args[:heat_pump_backup_type] == HPXML::HeatPumpBackupTypeSeparate) && (args[:heating_system_2_type] == HPXML::HVACTypeFurnace)) # separate ducted backup @@ -5448,11 +5368,11 @@ def argument_errors(args) errors << 'Did not specify all required heating detailed performance data arguments.' if error if hvac_perf_data_heating_args_initialized.uniq.size == 1 && hvac_perf_data_heating_args_initialized.uniq[0] - heating_data_points_lengths = ["#{args[:hvac_perf_data_heating_outdoor_temperatures]}".count(','), - "#{args[:hvac_perf_data_heating_min_speed_capacities]}".count(','), - "#{args[:hvac_perf_data_heating_max_speed_capacities]}".count(','), - "#{args[:hvac_perf_data_heating_min_speed_cops]}".count(','), - "#{args[:hvac_perf_data_heating_max_speed_cops]}".count(',')] + heating_data_points_lengths = [args[:hvac_perf_data_heating_outdoor_temperatures].count(','), + args[:hvac_perf_data_heating_min_speed_capacities].count(','), + args[:hvac_perf_data_heating_max_speed_capacities].count(','), + args[:hvac_perf_data_heating_min_speed_cops].count(','), + args[:hvac_perf_data_heating_max_speed_cops].count(',')] error = (heating_data_points_lengths.uniq.size != 1) errors << 'One or more detailed heating performance data arguments does not have enough comma-separated elements specified.' if error @@ -5467,11 +5387,11 @@ def argument_errors(args) errors << 'Did not specify all required cooling detailed performance data arguments.' if error if hvac_perf_data_cooling_args_initialized.uniq.size == 1 && hvac_perf_data_cooling_args_initialized.uniq[0] - cooling_data_points_lengths = ["#{args[:hvac_perf_data_cooling_outdoor_temperatures]}".count(','), - "#{args[:hvac_perf_data_cooling_min_speed_capacities]}".count(','), - "#{args[:hvac_perf_data_cooling_max_speed_capacities]}".count(','), - "#{args[:hvac_perf_data_cooling_min_speed_cops]}".count(','), - "#{args[:hvac_perf_data_cooling_max_speed_cops]}".count(',')] + cooling_data_points_lengths = [args[:hvac_perf_data_cooling_outdoor_temperatures].count(','), + args[:hvac_perf_data_cooling_min_speed_capacities].count(','), + args[:hvac_perf_data_cooling_max_speed_capacities].count(','), + args[:hvac_perf_data_cooling_min_speed_cops].count(','), + args[:hvac_perf_data_cooling_max_speed_cops].count(',')] error = (cooling_data_points_lengths.uniq.size != 1) errors << 'One or more detailed cooling performance data arguments does not have enough comma-separated elements specified.' if error @@ -5505,7 +5425,7 @@ def argument_errors(args) HPXML::fossil_fuels.each do |fossil_fuel| underscore_case = OpenStudio::toUnderscoreCase(fossil_fuel) - emissions_scenario_lengths += ["#{args["emissions_#{underscore_case}_values".to_sym]}".count(',')] unless args["emissions_#{underscore_case}_values".to_sym].nil? + emissions_scenario_lengths += [args["emissions_#{underscore_case}_values".to_sym].count(',')] unless args["emissions_#{underscore_case}_values".to_sym].nil? end error = (emissions_scenario_lengths.uniq.size != 1) @@ -5518,8 +5438,8 @@ def argument_errors(args) HPXML::all_fuels.each do |fuel| underscore_case = OpenStudio::toUnderscoreCase(fuel) - bills_scenario_lengths += ["#{args["utility_bill_#{underscore_case}_fixed_charges".to_sym]}".count(',')] unless args["utility_bill_#{underscore_case}_fixed_charges".to_sym].nil? - bills_scenario_lengths += ["#{args["utility_bill_#{underscore_case}_marginal_rates".to_sym]}".count(',')] unless args["utility_bill_#{underscore_case}_marginal_rates".to_sym].nil? + bills_scenario_lengths += [args["utility_bill_#{underscore_case}_fixed_charges".to_sym].count(',')] unless args["utility_bill_#{underscore_case}_fixed_charges".to_sym].nil? + bills_scenario_lengths += [args["utility_bill_#{underscore_case}_marginal_rates".to_sym].count(',')] unless args["utility_bill_#{underscore_case}_marginal_rates".to_sym].nil? end error = (bills_scenario_lengths.uniq.size != 1) @@ -5686,9 +5606,9 @@ def self.create(runner, model, args, epw_path, hpxml_path, existing_hpxml_path) def self.need_weather_based_on_args(args) if (args[:hvac_control_heating_season_period].to_s == Constants::BuildingAmerica) || (args[:hvac_control_cooling_season_period].to_s == Constants::BuildingAmerica) || - (args[:solar_thermal_system_type] != Constants::None && "#{args[:solar_thermal_collector_tilt]}".start_with?('latitude')) || - (args[:pv_system_present] && "#{args[:pv_system_array_tilt]}".start_with?('latitude')) || - (args[:pv_system_2_present] && "#{args[:pv_system_2_array_tilt]}".start_with?('latitude')) || + (!args[:solar_thermal_system_type].nil? && args[:solar_thermal_system_type] != Constants::None && !args[:solar_thermal_collector_tilt].nil? && args[:solar_thermal_collector_tilt].start_with?('latitude')) || + (args[:pv_system_present] && !args[:pv_system_array_tilt].nil? && args[:pv_system_array_tilt].start_with?('latitude')) || + (args[:pv_system_2_present] && !args[:pv_system_2_array_tilt].nil? && args[:pv_system_2_array_tilt].start_with?('latitude')) || (args[:apply_defaults]) return true end @@ -5876,7 +5796,7 @@ def self.set_header(runner, hpxml, args) hpxml.header.software_program_used = args[:software_info_program_used] end if not args[:software_info_program_version].nil? - if (not hpxml.header.software_program_version.nil?) && (hpxml.header.software_program_version != "#{args[:software_info_program_version]}") + if (not hpxml.header.software_program_version.nil?) && (hpxml.header.software_program_version != args[:software_info_program_version]) errors << "'Software Info: Program Version' cannot vary across dwelling units." end hpxml.header.software_program_version = "#{args[:software_info_program_version]}" @@ -5942,7 +5862,7 @@ def self.set_header(runner, hpxml, args) emissions_scenario_names = args[:emissions_scenario_names].split(',').map(&:strip) emissions_types = args[:emissions_types].split(',').map(&:strip) emissions_electricity_units = args[:emissions_electricity_units].split(',').map(&:strip) - emissions_electricity_values_or_filepaths = "#{args[:emissions_electricity_values_or_filepaths]}".split(',').map(&:strip) + emissions_electricity_values_or_filepaths = args[:emissions_electricity_values_or_filepaths].split(',').map(&:strip) if not args[:emissions_electricity_number_of_header_rows].nil? emissions_electricity_number_of_header_rows = args[:emissions_electricity_number_of_header_rows].split(',').map(&:strip) @@ -5965,7 +5885,7 @@ def self.set_header(runner, hpxml, args) underscore_case = OpenStudio::toUnderscoreCase(fossil_fuel) if not args["emissions_#{underscore_case}_values".to_sym].nil? - fuel_values[fossil_fuel] = "#{args["emissions_#{underscore_case}_values".to_sym]}".split(',').map(&:strip) + fuel_values[fossil_fuel] = args["emissions_#{underscore_case}_values".to_sym].split(',').map(&:strip) else fuel_values[fossil_fuel] = [nil] * emissions_scenario_names.size end @@ -6067,7 +5987,7 @@ def self.set_header(runner, hpxml, args) underscore_case = OpenStudio::toUnderscoreCase(fuel) if not args["utility_bill_#{underscore_case}_fixed_charges".to_sym].nil? - fixed_charges[fuel] = "#{args["utility_bill_#{underscore_case}_fixed_charges".to_sym]}".split(',').map(&:strip) + fixed_charges[fuel] = args["utility_bill_#{underscore_case}_fixed_charges".to_sym].split(',').map(&:strip) else fixed_charges[fuel] = [nil] * bills_scenario_names.size end @@ -6078,7 +5998,7 @@ def self.set_header(runner, hpxml, args) underscore_case = OpenStudio::toUnderscoreCase(fuel) if not args["utility_bill_#{underscore_case}_marginal_rates".to_sym].nil? - marginal_rates[fuel] = "#{args["utility_bill_#{underscore_case}_marginal_rates".to_sym]}".split(',').map(&:strip) + marginal_rates[fuel] = args["utility_bill_#{underscore_case}_marginal_rates".to_sym].split(',').map(&:strip) else marginal_rates[fuel] = [nil] * bills_scenario_names.size end @@ -6097,13 +6017,13 @@ def self.set_header(runner, hpxml, args) end if not args[:utility_bill_pv_net_metering_annual_excess_sellback_rates].nil? - bills_pv_net_metering_annual_excess_sellback_rates = "#{args[:utility_bill_pv_net_metering_annual_excess_sellback_rates]}".split(',').map(&:strip) + bills_pv_net_metering_annual_excess_sellback_rates = args[:utility_bill_pv_net_metering_annual_excess_sellback_rates].split(',').map(&:strip) else bills_pv_net_metering_annual_excess_sellback_rates = [nil] * bills_scenario_names.size end if not args[:utility_bill_pv_feed_in_tariff_rates].nil? - bills_pv_feed_in_tariff_rates = "#{args[:utility_bill_pv_feed_in_tariff_rates]}".split(',').map(&:strip) + bills_pv_feed_in_tariff_rates = args[:utility_bill_pv_feed_in_tariff_rates].split(',').map(&:strip) else bills_pv_feed_in_tariff_rates = [nil] * bills_scenario_names.size end @@ -6115,7 +6035,7 @@ def self.set_header(runner, hpxml, args) end if not args[:utility_bill_pv_monthly_grid_connection_fees].nil? - bills_pv_monthly_grid_connection_fees = "#{args[:utility_bill_pv_monthly_grid_connection_fees]}".split(',').map(&:strip) + bills_pv_monthly_grid_connection_fees = args[:utility_bill_pv_monthly_grid_connection_fees].split(',').map(&:strip) else bills_pv_monthly_grid_connection_fees = [nil] * bills_scenario_names.size end @@ -6259,17 +6179,12 @@ def self.add_building(hpxml, args) dst_end_day = end_day end - zip_code = args[:site_zip_code] - if !zip_code.nil? - zip_code = zip_code.to_s.rjust(5, '0') - end - hpxml.buildings.add(building_id: 'MyBuilding', site_id: 'SiteID', event_type: 'proposed workscope', city: args[:site_city], state_code: args[:site_state_code], - zip_code: zip_code, + zip_code: args[:site_zip_code], time_zone_utc_offset: args[:site_time_zone_utc_offset], elevation: args[:site_elevation], latitude: args[:site_latitude], @@ -6824,7 +6739,7 @@ def self.set_foundation_walls(hpxml_bldg, model, args, sorted_surfaces) # @return [nil] def self.set_floors(hpxml_bldg, args, sorted_surfaces) if [HPXML::FoundationTypeBasementConditioned, - HPXML::FoundationTypeCrawlspaceConditioned].include?(args[:geometry_foundation_type]) && (args[:floor_over_foundation_assembly_r] > 2.1) + HPXML::FoundationTypeCrawlspaceConditioned].include?(args[:geometry_foundation_type]) && (!args[:floor_over_foundation_assembly_r].nil? && args[:floor_over_foundation_assembly_r] > 2.1) args[:floor_over_foundation_assembly_r] = 2.1 # Uninsulated end @@ -6988,19 +6903,19 @@ def self.set_windows(hpxml_bldg, model, args, sorted_subsurfaces) sub_surface_height = Geometry.get_surface_height(surface: sub_surface) sub_surface_facade = Geometry.get_facade_for_surface(surface: sub_surface) - if (sub_surface_facade == Constants::FacadeFront) && (args[:overhangs_front_depth] > 0) + if (sub_surface_facade == Constants::FacadeFront) && (!args[:overhangs_front_depth].nil? && args[:overhangs_front_depth] > 0) overhangs_depth = args[:overhangs_front_depth] overhangs_distance_to_top_of_window = args[:overhangs_front_distance_to_top_of_window] overhangs_distance_to_bottom_of_window = args[:overhangs_front_distance_to_bottom_of_window] - elsif (sub_surface_facade == Constants::FacadeBack) && (args[:overhangs_back_depth] > 0) + elsif (sub_surface_facade == Constants::FacadeBack) && (!args[:overhangs_back_depth].nil? && args[:overhangs_back_depth] > 0) overhangs_depth = args[:overhangs_back_depth] overhangs_distance_to_top_of_window = args[:overhangs_back_distance_to_top_of_window] overhangs_distance_to_bottom_of_window = args[:overhangs_back_distance_to_bottom_of_window] - elsif (sub_surface_facade == Constants::FacadeLeft) && (args[:overhangs_left_depth] > 0) + elsif (sub_surface_facade == Constants::FacadeLeft) && (!args[:overhangs_left_depth].nil? && args[:overhangs_left_depth] > 0) overhangs_depth = args[:overhangs_left_depth] overhangs_distance_to_top_of_window = args[:overhangs_left_distance_to_top_of_window] overhangs_distance_to_bottom_of_window = args[:overhangs_left_distance_to_bottom_of_window] - elsif (sub_surface_facade == Constants::FacadeRight) && (args[:overhangs_right_depth] > 0) + elsif (sub_surface_facade == Constants::FacadeRight) && (!args[:overhangs_right_depth].nil? && args[:overhangs_right_depth] > 0) overhangs_depth = args[:overhangs_right_depth] overhangs_distance_to_top_of_window = args[:overhangs_right_distance_to_top_of_window] overhangs_distance_to_bottom_of_window = args[:overhangs_right_distance_to_bottom_of_window] @@ -7066,6 +6981,8 @@ def self.set_windows(hpxml_bldg, model, args, sorted_subsurfaces) # @param sorted_subsurfaces [Array] subsurfaces sorted by deterministically assigned Index # @return [nil] def self.set_skylights(hpxml_bldg, args, sorted_subsurfaces) + args[:skylight_ufactor] = 0.33 if args[:skylight_ufactor].nil? + args[:skylight_shgc] = 0.45 if args[:skylight_shgc].nil? sorted_subsurfaces.each do |sub_surface| next if sub_surface.subSurfaceType != 'Skylight' @@ -7322,6 +7239,7 @@ def self.set_cooling_systems(hpxml_bldg, args) end if cooling_system_type != HPXML::HVACTypeEvaporativeCooler + args[:cooling_system_cooling_efficiency_type] = HPXML::UnitsSEER if args[:cooling_system_cooling_efficiency_type].nil? if args[:cooling_system_cooling_efficiency_type] == HPXML::UnitsSEER cooling_efficiency_seer = args[:cooling_system_cooling_efficiency] elsif args[:cooling_system_cooling_efficiency_type] == HPXML::UnitsSEER2 @@ -7432,7 +7350,9 @@ def self.set_heat_pumps(hpxml_bldg, args) return if heat_pump_type == Constants::None - if args[:heat_pump_backup_type] == HPXML::HeatPumpBackupTypeIntegrated + args[:heat_pump_backup_fuel] = HPXML::FuelTypeElectricity if args[:heat_pump_backup_fuel].nil? + args[:heat_pump_backup_heating_efficiency] = 1 if args[:heat_pump_backup_heating_efficiency].nil? + if (args[:heat_pump_backup_type].nil? || args[:heat_pump_backup_type] == HPXML::HeatPumpBackupTypeIntegrated) backup_type = args[:heat_pump_backup_type] backup_heating_fuel = args[:heat_pump_backup_fuel] backup_heating_capacity = args[:heat_pump_backup_heating_capacity] @@ -7464,6 +7384,7 @@ def self.set_heat_pumps(hpxml_bldg, args) compressor_type = args[:heat_pump_cooling_compressor_type] end + args[:heat_pump_heating_efficiency_type] = HPXML::UnitsHSPF if args[:heat_pump_heating_efficiency_type].nil? if args[:heat_pump_heating_efficiency_type] == HPXML::UnitsHSPF heating_efficiency_hspf = args[:heat_pump_heating_efficiency] elsif args[:heat_pump_heating_efficiency_type] == HPXML::UnitsHSPF2 @@ -7472,6 +7393,7 @@ def self.set_heat_pumps(hpxml_bldg, args) heating_efficiency_cop = args[:heat_pump_heating_efficiency] end + args[:heat_pump_cooling_efficiency_type] = HPXML::UnitsSEER if args[:heat_pump_cooling_efficiency_type].nil? if args[:heat_pump_cooling_efficiency_type] == HPXML::UnitsSEER cooling_efficiency_seer = args[:heat_pump_cooling_efficiency] elsif args[:heat_pump_cooling_efficiency_type] == HPXML::UnitsSEER2 @@ -7659,7 +7581,11 @@ def self.set_secondary_heating_systems(hpxml_bldg, args) heating_system_type = args[:heating_system_2_type] heating_system_is_heatpump_backup = (args[:heat_pump_type] != Constants::None && args[:heat_pump_backup_type] == HPXML::HeatPumpBackupTypeSeparate) - return if heating_system_type == Constants::None && (not heating_system_is_heatpump_backup) + return if (heating_system_type.nil? || heating_system_type == Constants::None) && (not heating_system_is_heatpump_backup) + + args[:heating_system_2_fuel] = HPXML::FuelTypeElectricity if args[:heating_system_2_fuel].nil? + args[:heating_system_2_heating_efficiency] = 1.0 if args[:heating_system_2_heating_efficiency].nil? + args[:heating_system_2_fraction_heat_load_served] = 0.25 if args[:heating_system_2_fraction_heat_load_served].nil? if args[:heating_system_type] == HPXML::HVACTypeElectricResistance args[:heating_system_2_fuel] = HPXML::FuelTypeElectricity @@ -7993,7 +7919,7 @@ def self.set_hvac_control(hpxml, hpxml_bldg, args, weather) if hpxml_bldg.total_fraction_heat_load_served > 0 if (not args[:hvac_control_heating_weekday_setpoint].nil?) && (not args[:hvac_control_heating_weekend_setpoint].nil?) - if args[:hvac_control_heating_weekday_setpoint] == args[:hvac_control_heating_weekend_setpoint] && !"#{args[:hvac_control_heating_weekday_setpoint]}".include?(',') + if args[:hvac_control_heating_weekday_setpoint] == args[:hvac_control_heating_weekend_setpoint] && !args[:hvac_control_heating_weekday_setpoint].include?(',') heating_setpoint_temp = Float(args[:hvac_control_heating_weekday_setpoint]) else weekday_heating_setpoints = args[:hvac_control_heating_weekday_setpoint] @@ -8022,7 +7948,7 @@ def self.set_hvac_control(hpxml, hpxml_bldg, args, weather) if hpxml_bldg.total_fraction_cool_load_served > 0 if (not args[:hvac_control_cooling_weekday_setpoint].nil?) && (not args[:hvac_control_cooling_weekend_setpoint].nil?) - if args[:hvac_control_cooling_weekday_setpoint] == args[:hvac_control_cooling_weekend_setpoint] && !args[:hvac_control_cooling_weekday_setpoint].is_a?(String) + if args[:hvac_control_cooling_weekday_setpoint] == args[:hvac_control_cooling_weekend_setpoint] && !args[:hvac_control_cooling_weekday_setpoint].include?(',') cooling_setpoint_temp = Float(args[:hvac_control_cooling_weekday_setpoint]) else weekday_cooling_setpoints = args[:hvac_control_cooling_weekday_setpoint] @@ -8086,8 +8012,11 @@ def self.set_hvac_control(hpxml, hpxml_bldg, args, weather) # @param args [Hash] Map of :argument_name => value # @return [nil] def self.set_ventilation_fans(hpxml_bldg, args) - if args[:mech_vent_fan_type] != Constants::None + if (!args[:mech_vent_fan_type].nil? && args[:mech_vent_fan_type] != Constants::None) + args[:mech_vent_recovery_efficiency_type] = 'Unadjusted' if args[:mech_vent_recovery_efficiency_type].nil? + args[:mech_vent_total_recovery_efficiency] = 0.48 if args[:mech_vent_total_recovery_efficiency].nil? + args[:mech_vent_sensible_recovery_efficiency] = 0.72 if args[:mech_vent_sensible_recovery_efficiency].nil? if [HPXML::MechVentTypeERV].include?(args[:mech_vent_fan_type]) if args[:mech_vent_recovery_efficiency_type] == 'Unadjusted' total_recovery_efficiency = args[:mech_vent_total_recovery_efficiency] @@ -8167,7 +8096,7 @@ def self.set_ventilation_fans(hpxml_bldg, args) precooling_fraction_load_served: precooling_fraction_load_served) end - if args[:mech_vent_2_fan_type] != Constants::None + if (!args[:mech_vent_2_fan_type].nil? && args[:mech_vent_2_fan_type] != Constants::None) if [HPXML::MechVentTypeERV].include?(args[:mech_vent_2_fan_type]) @@ -8406,10 +8335,12 @@ def self.set_hot_water_distribution(hpxml_bldg, args) def self.set_water_fixtures(hpxml_bldg, args) return if args[:water_heater_type] == Constants::None + args[:water_fixtures_shower_low_flow] = false if args[:water_fixtures_shower_low_flow].nil? hpxml_bldg.water_fixtures.add(id: "WaterFixture#{hpxml_bldg.water_fixtures.size + 1}", water_fixture_type: HPXML::WaterFixtureTypeShowerhead, low_flow: args[:water_fixtures_shower_low_flow]) + args[:water_fixtures_sink_low_flow] = false if args[:water_fixtures_sink_low_flow].nil? hpxml_bldg.water_fixtures.add(id: "WaterFixture#{hpxml_bldg.water_fixtures.size + 1}", water_fixture_type: HPXML::WaterFixtureTypeFaucet, low_flow: args[:water_fixtures_sink_low_flow]) @@ -8428,9 +8359,9 @@ def self.set_water_fixtures(hpxml_bldg, args) # @param weather [WeatherFile] Weather object containing EPW information # @return [nil] def self.set_solar_thermal(hpxml_bldg, args, weather) - return if args[:solar_thermal_system_type] == Constants::None + return if (args[:solar_thermal_system_type].nil? || args[:solar_thermal_system_type] == Constants::None) - if args[:solar_thermal_solar_fraction] > 0 + if (!args[:solar_thermal_solar_fraction].nil? && args[:solar_thermal_solar_fraction] > 0) solar_fraction = args[:solar_thermal_solar_fraction] else collector_area = args[:solar_thermal_collector_area] @@ -8438,7 +8369,7 @@ def self.set_solar_thermal(hpxml_bldg, args, weather) collector_type = args[:solar_thermal_collector_type] collector_azimuth = args[:solar_thermal_collector_azimuth] latitude = Defaults.get_latitude(args[:site_latitude], weather) unless weather.nil? - collector_tilt = Geometry.get_absolute_tilt(tilt_str: "#{args[:solar_thermal_collector_tilt]}", roof_pitch: args[:geometry_roof_pitch], latitude: latitude) + collector_tilt = Geometry.get_absolute_tilt(tilt_str: args[:solar_thermal_collector_tilt], roof_pitch: args[:geometry_roof_pitch], latitude: latitude) collector_rated_optical_efficiency = args[:solar_thermal_collector_rated_optical_efficiency] collector_rated_thermal_losses = args[:solar_thermal_collector_rated_thermal_losses] storage_volume = args[:solar_thermal_storage_volume] @@ -8494,7 +8425,7 @@ def self.set_pv_systems(hpxml_bldg, args, weather) module_type: args[:pv_system_module_type], tracking: args[:pv_system_tracking], array_azimuth: args[:pv_system_array_azimuth], - array_tilt: Geometry.get_absolute_tilt(tilt_str: "#{args[:pv_system_array_tilt]}", roof_pitch: args[:geometry_roof_pitch], latitude: latitude), + array_tilt: Geometry.get_absolute_tilt(tilt_str: args[:pv_system_array_tilt], roof_pitch: args[:geometry_roof_pitch], latitude: latitude), max_power_output: args[:pv_system_max_power_output], system_losses_fraction: args[:pv_system_system_losses_fraction], is_shared_system: is_shared_system, @@ -8506,7 +8437,7 @@ def self.set_pv_systems(hpxml_bldg, args, weather) module_type: args[:pv_system_2_module_type], tracking: args[:pv_system_2_tracking], array_azimuth: args[:pv_system_2_array_azimuth], - array_tilt: Geometry.get_absolute_tilt(tilt_str: "#{args[:pv_system_2_array_tilt]}", roof_pitch: args[:geometry_roof_pitch], latitude: latitude), + array_tilt: Geometry.get_absolute_tilt(tilt_str: args[:pv_system_2_array_tilt], roof_pitch: args[:geometry_roof_pitch], latitude: latitude), max_power_output: args[:pv_system_2_max_power_output], system_losses_fraction: args[:pv_system_system_losses_fraction], is_shared_system: is_shared_system, @@ -8564,6 +8495,16 @@ def self.set_battery(hpxml_bldg, args) # @return [nil] def self.set_lighting(hpxml_bldg, args) if args[:lighting_present] + args[:lighting_interior_fraction_cfl] = 0.1 if args[:lighting_interior_fraction_cfl].nil? + args[:lighting_interior_fraction_lfl] = 0.0 if args[:lighting_interior_fraction_lfl].nil? + args[:lighting_interior_fraction_led] = 0.0 if args[:lighting_interior_fraction_led].nil? + args[:lighting_exterior_fraction_cfl] = 0.0 if args[:lighting_exterior_fraction_cfl].nil? + args[:lighting_exterior_fraction_lfl] = 0.0 if args[:lighting_exterior_fraction_lfl].nil? + args[:lighting_exterior_fraction_led] = 0.0 if args[:lighting_exterior_fraction_led].nil? + args[:lighting_garage_fraction_cfl] = 0.0 if args[:lighting_garage_fraction_cfl].nil? + args[:lighting_garage_fraction_lfl] = 0.0 if args[:lighting_garage_fraction_lfl].nil? + args[:lighting_garage_fraction_led] = 0.0 if args[:lighting_garage_fraction_led].nil? + has_garage = (args[:geometry_garage_width] * args[:geometry_garage_depth] > 0) # Interior @@ -8648,7 +8589,7 @@ def self.set_lighting(hpxml_bldg, args) # @param args [Hash] Map of :argument_name => value # @return [nil] def self.set_dehumidifier(hpxml_bldg, args) - return if args[:dehumidifier_type] == Constants::None + return if (args[:dehumidifier_type].nil? || args[:dehumidifier_type] == Constants::None) if args[:dehumidifier_efficiency_type] == 'EnergyFactor' energy_factor = args[:dehumidifier_efficiency] @@ -8941,6 +8882,7 @@ def self.set_misc_plug_loads_vehicle(hpxml_bldg, args) def self.set_misc_fuel_loads_grill(hpxml_bldg, args) return unless args[:misc_fuel_loads_grill_present] + args[:misc_fuel_loads_grill_fuel_type] = HPXML::FuelTypeNaturalGas if args[:misc_fuel_loads_grill_fuel_type].nil? hpxml_bldg.fuel_loads.add(id: "FuelLoad#{hpxml_bldg.fuel_loads.size + 1}", fuel_load_type: HPXML::FuelLoadTypeGrill, fuel_type: args[:misc_fuel_loads_grill_fuel_type], @@ -8959,6 +8901,7 @@ def self.set_misc_fuel_loads_grill(hpxml_bldg, args) def self.set_misc_fuel_loads_lighting(hpxml_bldg, args) return unless args[:misc_fuel_loads_lighting_present] + args[:misc_fuel_loads_lighting_fuel_type] = HPXML::FuelTypeNaturalGas if args[:misc_fuel_loads_lighting_fuel_type].nil? hpxml_bldg.fuel_loads.add(id: "FuelLoad#{hpxml_bldg.fuel_loads.size + 1}", fuel_load_type: HPXML::FuelLoadTypeLighting, fuel_type: args[:misc_fuel_loads_lighting_fuel_type], @@ -8978,6 +8921,7 @@ def self.set_misc_fuel_loads_lighting(hpxml_bldg, args) def self.set_misc_fuel_loads_fireplace(hpxml_bldg, args) return unless args[:misc_fuel_loads_fireplace_present] + args[:misc_fuel_loads_fireplace_fuel_type] = HPXML::FuelTypeNaturalGas if args[:misc_fuel_loads_fireplace_fuel_type].nil? hpxml_bldg.fuel_loads.add(id: "FuelLoad#{hpxml_bldg.fuel_loads.size + 1}", fuel_load_type: HPXML::FuelLoadTypeFireplace, fuel_type: args[:misc_fuel_loads_fireplace_fuel_type], diff --git a/BuildResidentialHPXML/measure.xml b/BuildResidentialHPXML/measure.xml index d1f2546815..e646f68749 100644 --- a/BuildResidentialHPXML/measure.xml +++ b/BuildResidentialHPXML/measure.xml @@ -3,8 +3,8 @@ 3.1 build_residential_hpxml a13a8983-2b01-4930-8af2-42030b6e4233 - a5715ba9-b3af-487a-84b9-3a588db527e5 - 2024-11-05T16:27:43Z + 9565ae97-b46b-4ee5-824d-a93c31f1d307 + 2024-11-20T23:01:37Z 2C38F48B BuildResidentialHPXML HPXML Builder @@ -22,7 +22,7 @@ existing_hpxml_path Existing HPXML File Path - Absolute/relative path of the existing HPXML file. If not provided, a new HPXML file with one Building element is created. If provided, a new Building element will be appended to this HPXML file (e.g., to create a multifamily HPXML file describing multiple dwelling units). + Absolute/relative path of the existing HPXML file. If not provided, a new HPXML file with one Building element is created. If provided, a new Building element will be appended to this HPXML file (e.g., to create a multifamily HPXML file describing multiple dwelling units}. String false false @@ -80,7 +80,7 @@ schedules_unavailable_period_dates Schedules: Unavailable Period Dates - Specifies the unavailable period date ranges. Enter a date range like "Dec 15 - Jan 15". Optionally, can enter hour of the day like "Dec 15 2 - Jan 15 20" (start hour can be 0 through 23 and end hour can be 1 through 24). If multiple periods, use a comma-separated list. + Specifies the unavailable period date ranges. Enter a date range like "Dec 15 - Jan 15". Optionally, can enter hour of the day like "Dec 15 2 - Jan 15 20" (start hour can be 0 through 23 and end hour can be 1 through 24}. If multiple periods, use a comma-separated list. String false false @@ -88,7 +88,7 @@ schedules_unavailable_period_window_natvent_availabilities Schedules: Unavailable Period Window Natural Ventilation Availabilities - The availability of the natural ventilation schedule during unavailable periods. Valid choices are: regular schedule, always available, always unavailable. If multiple periods, use a comma-separated list. If auto or not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.8.1/workflow_inputs.html#hpxml-unavailable-periods'>HPXML Unavailable Periods</a>) is used. + The availability of the natural ventilation schedule during unavailable periods. Valid choices are: regular schedule, always available, always unavailable. If multiple periods, use a comma-separated list. If 'auto' or not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.10.0/workflow_inputs.html#hpxml-unavailable-periods'>HPXML Unavailable Periods</a>) is used. String false false @@ -96,7 +96,7 @@ simulation_control_timestep Simulation Control: Timestep - Value must be a divisor of 60. If auto or not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.8.1/workflow_inputs.html#hpxml-simulation-control'>HPXML Simulation Control</a>) is used. + Value must be a divisor of 60. If 'auto' or not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.10.0/workflow_inputs.html#hpxml-simulation-control'>HPXML Simulation Control</a>) is used. String min false @@ -105,7 +105,7 @@ simulation_control_run_period Simulation Control: Run Period - Enter a date range like 'Jan 1 - Dec 31'. If not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.8.1/workflow_inputs.html#hpxml-simulation-control'>HPXML Simulation Control</a>) is used. + Enter a date range like 'Jan 1 - Dec 31'. If not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.10.0/workflow_inputs.html#hpxml-simulation-control'>HPXML Simulation Control</a>) is used. String false false @@ -113,7 +113,7 @@ simulation_control_run_period_calendar_year Simulation Control: Run Period Calendar Year - This numeric field should contain the calendar year that determines the start day of week. If you are running simulations using AMY weather files, the value entered for calendar year will not be used; it will be overridden by the actual year found in the AMY weather file. If auto or not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.8.1/workflow_inputs.html#hpxml-simulation-control'>HPXML Simulation Control</a>) is used. + This numeric field should contain the calendar year that determines the start day of week. If you are running simulations using AMY weather files, the value entered for calendar year will not be used; it will be overridden by the actual year found in the AMY weather file. If 'auto' or not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.10.0/workflow_inputs.html#hpxml-simulation-control'>HPXML Simulation Control</a>) is used. String year false @@ -122,7 +122,7 @@ simulation_control_daylight_saving_enabled Simulation Control: Daylight Saving Enabled - Whether to use daylight saving. If auto or not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.8.1/workflow_inputs.html#hpxml-building-site'>HPXML Building Site</a>) is used. + Whether to use daylight saving. If 'auto' or not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.10.0/workflow_inputs.html#hpxml-building-site'>HPXML Building Site</a>) is used. Choice false false @@ -144,7 +144,7 @@ simulation_control_daylight_saving_period Simulation Control: Daylight Saving Period - Enter a date range like 'Mar 15 - Dec 15'. If auto or not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.8.1/workflow_inputs.html#hpxml-building-site'>HPXML Building Site</a>) is used. + Enter a date range like 'Mar 15 - Dec 15'. If 'auto' or not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.10.0/workflow_inputs.html#hpxml-building-site'>HPXML Building Site</a>) is used. String false false @@ -152,7 +152,7 @@ simulation_control_temperature_capacitance_multiplier Simulation Control: Temperature Capacitance Multiplier - Affects the transient calculation of indoor air temperatures. If auto or not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.8.1/workflow_inputs.html#hpxml-simulation-control'>HPXML Simulation Control</a>) is used. + Affects the transient calculation of indoor air temperatures. If 'auto' or not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.10.0/workflow_inputs.html#hpxml-simulation-control'>HPXML Simulation Control</a>) is used. String false false @@ -160,7 +160,7 @@ simulation_control_defrost_model_type Simulation Control: Defrost Model Type - Research feature to select the type of defrost model. Use standard for default E+ defrost setting. Use advanced for an improved model that better accounts for load and energy use during defrost; using advanced may impact simulation runtime. If auto or not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.8.1/workflow_inputs.html#hpxml-simulation-control'>HPXML Simulation Control</a>) is used. + Research feature to select the type of defrost model. Use standard for default E+ defrost setting. Use advanced for an improved model that better accounts for load and energy use during defrost; using advanced may impact simulation runtime. If 'auto' or not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.10.0/workflow_inputs.html#hpxml-simulation-control'>HPXML Simulation Control</a>) is used. Choice false false @@ -200,7 +200,7 @@ site_type Site: Type - The type of site. If auto or not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.8.1/workflow_inputs.html#hpxml-site'>HPXML Site</a>) is used. + The type of site. If 'auto' or not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.10.0/workflow_inputs.html#hpxml-site'>HPXML Site</a>) is used. Choice false false @@ -226,7 +226,7 @@ site_shielding_of_home Site: Shielding of Home - Presence of nearby buildings, trees, obstructions for infiltration model. If auto or not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.8.1/workflow_inputs.html#hpxml-site'>HPXML Site</a>) is used. + Presence of nearby buildings, trees, obstructions for infiltration model. If 'auto' or not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.10.0/workflow_inputs.html#hpxml-site'>HPXML Site</a>) is used. Choice false false @@ -252,7 +252,7 @@ site_soil_and_moisture_type Site: Soil and Moisture Type - Type of soil and moisture. This is used to inform ground conductivity and diffusivity. If auto or not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.8.1/workflow_inputs.html#hpxml-site'>HPXML Site</a>) is used. + Type of soil and moisture. This is used to inform ground conductivity and diffusivity. If 'auto' or not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.10.0/workflow_inputs.html#hpxml-site'>HPXML Site</a>) is used. Choice false false @@ -454,7 +454,7 @@ site_state_code Site: State Code - State code of the home address. If auto or not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.8.1/workflow_inputs.html#hpxml-site'>HPXML Site</a>) is used. + State code of the home address. If 'auto' or not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.10.0/workflow_inputs.html#hpxml-site'>HPXML Site</a>) is used. Choice false false @@ -672,7 +672,7 @@ site_zip_code Site: Zip Code - Zip code of the home address. Either this or the Weather Station: EnergyPlus Weather (EPW) Filepath input below must be provided. + Zip code of the home address. Either this or the Weather Station: EnergyPlus Weather (EPW} Filepath input below must be provided. String false false @@ -680,7 +680,7 @@ site_time_zone_utc_offset Site: Time Zone UTC Offset - Time zone UTC offset of the home address. Must be between -12 and 14. If auto or not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.8.1/workflow_inputs.html#hpxml-site'>HPXML Site</a>) is used. + Time zone UTC offset of the home address. Must be between -12 and 14. If 'auto' or not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.10.0/workflow_inputs.html#hpxml-site'>HPXML Site</a>) is used. String hr false @@ -689,7 +689,7 @@ site_elevation Site: Elevation - Elevation of the home address. If auto or not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.8.1/workflow_inputs.html#hpxml-site'>HPXML Site</a>) is used. + Elevation of the home address. If 'auto' or not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.10.0/workflow_inputs.html#hpxml-site'>HPXML Site</a>) is used. String ft false @@ -698,7 +698,7 @@ site_latitude Site: Latitude - Latitude of the home address. Must be between -90 and 90. Use negative values for southern hemisphere. If auto or not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.8.1/workflow_inputs.html#hpxml-site'>HPXML Site</a>) is used. + Latitude of the home address. Must be between -90 and 90. Use negative values for southern hemisphere. If 'auto' or not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.10.0/workflow_inputs.html#hpxml-site'>HPXML Site</a>) is used. String deg false @@ -707,7 +707,7 @@ site_longitude Site: Longitude - Longitude of the home address. Must be between -180 and 180. Use negative values for the western hemisphere. If auto or not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.8.1/workflow_inputs.html#hpxml-site'>HPXML Site</a>) is used. + Longitude of the home address. Must be between -180 and 180. Use negative values for the western hemisphere. If 'auto' or not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.10.0/workflow_inputs.html#hpxml-site'>HPXML Site</a>) is used. String deg false @@ -715,7 +715,7 @@ weather_station_epw_filepath - Weather Station: EnergyPlus Weather (EPW) Filepath + Weather Station: EnergyPlus Weather (EPW} Filepath Path of the EPW file. Either this or the Site: Zip Code input above must be provided. String false @@ -847,7 +847,7 @@ geometry_unit_cfa Geometry: Unit Conditioned Floor Area - The total floor area of the unit's conditioned space (including any conditioned basement floor area). + The total floor area of the unit's conditioned space (including any conditioned basement floor area}. Double ft^2 true @@ -865,7 +865,7 @@ geometry_unit_orientation Geometry: Unit Orientation - The unit's orientation is measured clockwise from north (e.g., North=0, East=90, South=180, West=270). + The unit's orientation is measured clockwise from north (e.g., North=0, East=90, South=180, West=270}. Double degrees true @@ -883,7 +883,7 @@ geometry_unit_num_bathrooms Geometry: Unit Number of Bathrooms - The number of bathrooms in the unit. If auto or not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.8.1/workflow_inputs.html#hpxml-building-construction'>HPXML Building Construction</a>) is used. + The number of bathrooms in the unit. If 'auto' or not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.10.0/workflow_inputs.html#hpxml-building-construction'>HPXML Building Construction</a>) is used. String # false @@ -892,7 +892,7 @@ geometry_unit_num_occupants Geometry: Unit Number of Occupants - The number of occupants in the unit. If not provided, an *asset* calculation is performed assuming standard occupancy, in which various end use defaults (e.g., plug loads, appliances, and hot water usage) are calculated based on Number of Bedrooms and Conditioned Floor Area per ANSI/RESNET/ICC 301-2019. If provided, an *operational* calculation is instead performed in which the end use defaults are adjusted using the relationship between Number of Bedrooms and Number of Occupants from RECS 2015. + The number of occupants in the unit. If not provided, an *asset* calculation is performed assuming standard occupancy, in which various end use defaults (e.g., plug loads, appliances, and hot water usage} are calculated based on Number of Bedrooms and Conditioned Floor Area per ANSI/RESNET/ICC 301-2019. If provided, an *operational* calculation is instead performed in which the end use defaults are adjusted using the relationship between Number of Bedrooms and Number of Occupants from RECS 2015. Double # false @@ -919,7 +919,7 @@ geometry_unit_height_above_grade Geometry: Unit Height Above Grade - Describes the above-grade height of apartment units on upper floors or homes above ambient or belly-and-wing foundations. It is defined as the height of the lowest conditioned floor above grade and is used to calculate the wind speed for the infiltration model. If auto or not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.8.1/workflow_inputs.html#hpxml-building-construction'>HPXML Building Construction</a>) is used. + Describes the above-grade height of apartment units on upper floors or homes above ambient or belly-and-wing foundations. It is defined as the height of the lowest conditioned floor above grade and is used to calculate the wind speed for the infiltration model. If 'auto' or not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.10.0/workflow_inputs.html#hpxml-building-construction'>HPXML Building Construction</a>) is used. String ft false @@ -928,7 +928,7 @@ geometry_garage_width Geometry: Garage Width - The width of the garage. Only applies to single-family detached units. If not provided, defaults to zero (no garage). + The width of the garage. Only applies to single-family detached units. If not provided, defaults to zero (no garage}. Double ft false @@ -1023,7 +1023,7 @@ geometry_foundation_height Geometry: Foundation Height - The height of the foundation (e.g., 3ft for crawlspace, 8ft for basement). Only applies to basements/crawlspaces. + The height of the foundation (e.g., 3ft for crawlspace, 8ft for basement}. Only applies to basements/crawlspaces. Double ft false @@ -1165,7 +1165,7 @@ neighbor_front_distance Neighbor: Front Distance - The distance between the unit and the neighboring building to the front (not including eaves). A value of zero indicates no neighbors. Used for shading. + The distance between the unit and the neighboring building to the front (not including eaves}. A value of zero indicates no neighbors. Used for shading. Double ft false @@ -1174,7 +1174,7 @@ neighbor_back_distance Neighbor: Back Distance - The distance between the unit and the neighboring building to the back (not including eaves). A value of zero indicates no neighbors. Used for shading. + The distance between the unit and the neighboring building to the back (not including eaves}. A value of zero indicates no neighbors. Used for shading. Double ft false @@ -1183,7 +1183,7 @@ neighbor_left_distance Neighbor: Left Distance - The distance between the unit and the neighboring building to the left (not including eaves). A value of zero indicates no neighbors. Used for shading. + The distance between the unit and the neighboring building to the left (not including eaves}. A value of zero indicates no neighbors. Used for shading. Double ft false @@ -1192,7 +1192,7 @@ neighbor_right_distance Neighbor: Right Distance - The distance between the unit and the neighboring building to the right (not including eaves). A value of zero indicates no neighbors. Used for shading. + The distance between the unit and the neighboring building to the right (not including eaves}. A value of zero indicates no neighbors. Used for shading. Double ft false @@ -1201,7 +1201,7 @@ neighbor_front_height Neighbor: Front Height - The height of the neighboring building to the front. If auto or not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.8.1/workflow_inputs.html#hpxml-neighbor-buildings'>HPXML Neighbor Building</a>) is used. + The height of the neighboring building to the front. If 'auto' or not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.10.0/workflow_inputs.html#hpxml-neighbor-buildings'>HPXML Neighbor Building</a>) is used. String ft false @@ -1210,7 +1210,7 @@ neighbor_back_height Neighbor: Back Height - The height of the neighboring building to the back. If auto or not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.8.1/workflow_inputs.html#hpxml-neighbor-buildings'>HPXML Neighbor Building</a>) is used. + The height of the neighboring building to the back. If 'auto' or not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.10.0/workflow_inputs.html#hpxml-neighbor-buildings'>HPXML Neighbor Building</a>) is used. String ft false @@ -1219,7 +1219,7 @@ neighbor_left_height Neighbor: Left Height - The height of the neighboring building to the left. If auto or not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.8.1/workflow_inputs.html#hpxml-neighbor-buildings'>HPXML Neighbor Building</a>) is used. + The height of the neighboring building to the left. If 'auto' or not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.10.0/workflow_inputs.html#hpxml-neighbor-buildings'>HPXML Neighbor Building</a>) is used. String ft false @@ -1228,7 +1228,7 @@ neighbor_right_height Neighbor: Right Height - The height of the neighboring building to the right. If auto or not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.8.1/workflow_inputs.html#hpxml-neighbor-buildings'>HPXML Neighbor Building</a>) is used. + The height of the neighboring building to the right. If 'auto' or not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.10.0/workflow_inputs.html#hpxml-neighbor-buildings'>HPXML Neighbor Building</a>) is used. String ft false @@ -1281,7 +1281,7 @@ foundation_wall_type Foundation Wall: Type - The material type of the foundation wall. If auto or not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.8.1/workflow_inputs.html#hpxml-foundation-walls'>HPXML Foundation Walls</a>) is used. + The material type of the foundation wall. If 'auto' or not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.10.0/workflow_inputs.html#hpxml-foundation-walls'>HPXML Foundation Walls</a>) is used. Choice false false @@ -1327,7 +1327,7 @@ foundation_wall_thickness Foundation Wall: Thickness - The thickness of the foundation wall. If auto or not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.8.1/workflow_inputs.html#hpxml-foundation-walls'>HPXML Foundation Walls</a>) is used. + The thickness of the foundation wall. If 'auto' or not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.10.0/workflow_inputs.html#hpxml-foundation-walls'>HPXML Foundation Walls</a>) is used. String in false @@ -1364,7 +1364,7 @@ foundation_wall_insulation_distance_to_top Foundation Wall: Insulation Distance To Top - The distance from the top of the foundation wall to the top of the foundation wall insulation. Only applies to basements/crawlspaces. If auto or not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.8.1/workflow_inputs.html#hpxml-foundation-walls'>HPXML Foundation Walls</a>) is used. + The distance from the top of the foundation wall to the top of the foundation wall insulation. Only applies to basements/crawlspaces. If 'auto' or not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.10.0/workflow_inputs.html#hpxml-foundation-walls'>HPXML Foundation Walls</a>) is used. String ft false @@ -1373,7 +1373,7 @@ foundation_wall_insulation_distance_to_bottom Foundation Wall: Insulation Distance To Bottom - The distance from the top of the foundation wall to the bottom of the foundation wall insulation. Only applies to basements/crawlspaces. If auto or not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.8.1/workflow_inputs.html#hpxml-foundation-walls'>HPXML Foundation Walls</a>) is used. + The distance from the top of the foundation wall to the bottom of the foundation wall insulation. Only applies to basements/crawlspaces. If 'auto' or not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.10.0/workflow_inputs.html#hpxml-foundation-walls'>HPXML Foundation Walls</a>) is used. String ft false @@ -1463,7 +1463,7 @@ slab_thickness Slab: Thickness - The thickness of the slab. Zero can be entered if there is a dirt floor instead of a slab. If auto or not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.8.1/workflow_inputs.html#hpxml-slabs'>HPXML Slabs</a>) is used. + The thickness of the slab. Zero can be entered if there is a dirt floor instead of a slab. If 'auto' or not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.10.0/workflow_inputs.html#hpxml-slabs'>HPXML Slabs</a>) is used. String in false @@ -1472,7 +1472,7 @@ slab_carpet_fraction Slab: Carpet Fraction - Fraction of the slab floor area that is carpeted. If auto or not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.8.1/workflow_inputs.html#hpxml-slabs'>HPXML Slabs</a>) is used. + Fraction of the slab floor area that is carpeted. If 'auto' or not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.10.0/workflow_inputs.html#hpxml-slabs'>HPXML Slabs</a>) is used. String Frac false @@ -1481,7 +1481,7 @@ slab_carpet_r Slab: Carpet R-value - R-value of the slab carpet. If auto or not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.8.1/workflow_inputs.html#hpxml-slabs'>HPXML Slabs</a>) is used. + R-value of the slab carpet. If 'auto' or not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.10.0/workflow_inputs.html#hpxml-slabs'>HPXML Slabs</a>) is used. String h-ft^2-R/Btu false @@ -1490,7 +1490,7 @@ ceiling_assembly_r Ceiling: Assembly R-value - Assembly R-value for the ceiling (attic floor). + Assembly R-value for the ceiling (attic floor}. Double h-ft^2-R/Btu false @@ -1499,7 +1499,7 @@ roof_material_type Roof: Material Type - The material type of the roof. If auto or not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.8.1/workflow_inputs.html#hpxml-roofs'>HPXML Roofs</a>) is used. + The material type of the roof. If 'auto' or not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.10.0/workflow_inputs.html#hpxml-roofs'>HPXML Roofs</a>) is used. Choice false false @@ -1549,7 +1549,7 @@ roof_color Roof: Color - The color of the roof. If auto or not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.8.1/workflow_inputs.html#hpxml-roofs'>HPXML Roofs</a>) is used. + The color of the roof. If 'auto' or not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.10.0/workflow_inputs.html#hpxml-roofs'>HPXML Roofs</a>) is used. Choice false false @@ -1618,7 +1618,7 @@ radiant_barrier_grade Attic: Radiant Barrier Grade - The grade of the radiant barrier in the attic. If auto or not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.8.1/workflow_inputs.html#hpxml-roofs'>HPXML Roofs</a>) is used. + The grade of the radiant barrier in the attic. If 'auto' or not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.10.0/workflow_inputs.html#hpxml-roofs'>HPXML Roofs</a>) is used. Choice false false @@ -1698,7 +1698,7 @@ wall_siding_type Wall: Siding Type - The siding type of the walls. Also applies to rim joists. If auto or not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.8.1/workflow_inputs.html#hpxml-walls'>HPXML Walls</a>) is used. + The siding type of the walls. Also applies to rim joists. If 'auto' or not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.10.0/workflow_inputs.html#hpxml-walls'>HPXML Walls</a>) is used. Choice false false @@ -1756,7 +1756,7 @@ wall_color Wall: Color - The color of the walls. Also applies to rim joists. If auto or not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.8.1/workflow_inputs.html#hpxml-walls'>HPXML Walls</a>) is used. + The color of the walls. Also applies to rim joists. If 'auto' or not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.10.0/workflow_inputs.html#hpxml-walls'>HPXML Walls</a>) is used. Choice false false @@ -1821,7 +1821,7 @@ window_area_left Windows: Left Window Area - The amount of window area on the unit's left facade (when viewed from the front). A value less than 1 will be treated as a window-to-wall ratio. If the left wall is adiabatic, the value will be ignored. + The amount of window area on the unit's left facade (when viewed from the front}. A value less than 1 will be treated as a window-to-wall ratio. If the left wall is adiabatic, the value will be ignored. Double ft^2 true @@ -1830,7 +1830,7 @@ window_area_right Windows: Right Window Area - The amount of window area on the unit's right facade (when viewed from the front). A value less than 1 will be treated as a window-to-wall ratio. If the right wall is adiabatic, the value will be ignored. + The amount of window area on the unit's right facade (when viewed from the front}. A value less than 1 will be treated as a window-to-wall ratio. If the right wall is adiabatic, the value will be ignored. Double ft^2 true @@ -1865,7 +1865,7 @@ window_fraction_operable Windows: Fraction Operable - Fraction of windows that are operable. If auto or not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.8.1/workflow_inputs.html#hpxml-windows'>HPXML Windows</a>) is used. + Fraction of windows that are operable. If 'auto' or not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.10.0/workflow_inputs.html#hpxml-windows'>HPXML Windows</a>) is used. String Frac false @@ -1874,7 +1874,7 @@ window_natvent_availability Windows: Natural Ventilation Availability - For operable windows, the number of days/week that windows can be opened by occupants for natural ventilation. If auto or not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.8.1/workflow_inputs.html#hpxml-windows'>HPXML Windows</a>) is used. + For operable windows, the number of days/week that windows can be opened by occupants for natural ventilation. If 'auto' or not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.10.0/workflow_inputs.html#hpxml-windows'>HPXML Windows</a>) is used. String Days/week false @@ -1883,7 +1883,7 @@ window_interior_shading_type Windows: Interior Shading Type - Type of window interior shading. Summer/winter shading coefficients can be provided below instead. If auto or not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.8.1/workflow_inputs.html#hpxml-interior-shading'>HPXML Interior Shading</a>) is used. + Type of window interior shading. Summer/winter shading coefficients can be provided below instead. If 'auto' or not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.10.0/workflow_inputs.html#hpxml-interior-shading'>HPXML Interior Shading</a>) is used. Choice false false @@ -1937,7 +1937,7 @@ window_interior_shading_winter Windows: Winter Interior Shading Coefficient - Interior shading coefficient for the winter season, which if provided overrides the shading type input. 1.0 indicates no reduction in solar gain, 0.85 indicates 15% reduction, etc. If auto or not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.8.1/workflow_inputs.html#hpxml-interior-shading'>HPXML Interior Shading</a>) is used. + Interior shading coefficient for the winter season, which if provided overrides the shading type input. 1.0 indicates no reduction in solar gain, 0.85 indicates 15% reduction, etc. If 'auto' or not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.10.0/workflow_inputs.html#hpxml-interior-shading'>HPXML Interior Shading</a>) is used. String Frac false @@ -1946,7 +1946,7 @@ window_interior_shading_summer Windows: Summer Interior Shading Coefficient - Interior shading coefficient for the summer season, which if provided overrides the shading type input. 1.0 indicates no reduction in solar gain, 0.85 indicates 15% reduction, etc. If auto or not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.8.1/workflow_inputs.html#hpxml-interior-shading'>HPXML Interior Shading</a>) is used. + Interior shading coefficient for the summer season, which if provided overrides the shading type input. 1.0 indicates no reduction in solar gain, 0.85 indicates 15% reduction, etc. If 'auto' or not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.10.0/workflow_inputs.html#hpxml-interior-shading'>HPXML Interior Shading</a>) is used. String Frac false @@ -1955,7 +1955,7 @@ window_exterior_shading_type Windows: Exterior Shading Type - Type of window exterior shading. Summer/winter shading coefficients can be provided below instead. If auto or not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.8.1/workflow_inputs.html#hpxml-exterior-shading'>HPXML Exterior Shading</a>) is used. + Type of window exterior shading. Summer/winter shading coefficients can be provided below instead. If 'auto' or not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.10.0/workflow_inputs.html#hpxml-exterior-shading'>HPXML Exterior Shading</a>) is used. Choice false false @@ -1981,7 +1981,7 @@ window_exterior_shading_winter Windows: Winter Exterior Shading Coefficient - Exterior shading coefficient for the winter season, which if provided overrides the shading type input. 1.0 indicates no reduction in solar gain, 0.85 indicates 15% reduction, etc. If auto or not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.8.1/workflow_inputs.html#hpxml-exterior-shading'>HPXML Exterior Shading</a>) is used. + Exterior shading coefficient for the winter season, which if provided overrides the shading type input. 1.0 indicates no reduction in solar gain, 0.85 indicates 15% reduction, etc. If 'auto' or not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.10.0/workflow_inputs.html#hpxml-exterior-shading'>HPXML Exterior Shading</a>) is used. String Frac false @@ -1990,7 +1990,7 @@ window_exterior_shading_summer Windows: Summer Exterior Shading Coefficient - Exterior shading coefficient for the summer season, which if provided overrides the shading type input. 1.0 indicates no reduction in solar gain, 0.85 indicates 15% reduction, etc. If auto or not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.8.1/workflow_inputs.html#hpxml-exterior-shading'>HPXML Exterior Shading</a>) is used. + Exterior shading coefficient for the summer season, which if provided overrides the shading type input. 1.0 indicates no reduction in solar gain, 0.85 indicates 15% reduction, etc. If 'auto' or not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.10.0/workflow_inputs.html#hpxml-exterior-shading'>HPXML Exterior Shading</a>) is used. String Frac false @@ -1999,7 +1999,7 @@ window_shading_summer_season Windows: Shading Summer Season - Enter a date range like 'May 1 - Sep 30'. Defines the summer season for purposes of shading coefficients; the rest of the year is assumed to be winter. If auto or not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.8.1/workflow_inputs.html#hpxml-windows'>HPXML Windows</a>) is used. + Enter a date range like 'May 1 - Sep 30'. Defines the summer season for purposes of shading coefficients; the rest of the year is assumed to be winter. If 'auto' or not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.10.0/workflow_inputs.html#hpxml-windows'>HPXML Windows</a>) is used. String false false @@ -2173,7 +2173,7 @@ skylight_area_left Skylights: Left Roof Area - The amount of skylight area on the unit's left conditioned roof facade (when viewed from the front). + The amount of skylight area on the unit's left conditioned roof facade (when viewed from the front}. Double ft^2 false @@ -2182,7 +2182,7 @@ skylight_area_right Skylights: Right Roof Area - The amount of skylight area on the unit's right conditioned roof facade (when viewed from the front). + The amount of skylight area on the unit's right conditioned roof facade (when viewed from the front}. Double ft^2 false @@ -2191,7 +2191,7 @@ skylight_ufactor Skylights: U-Factor - Full-assembly NFRC U-factor. + Full-assembly NFRC U-factor. If not provided, defaults to 0.33. Double Btu/hr-ft^2-R false @@ -2200,7 +2200,7 @@ skylight_shgc Skylights: SHGC - Full-assembly NFRC solar heat gain coefficient. + Full-assembly NFRC solar heat gain coefficient. If not provided, defaults to 0.45. Double false false @@ -2226,7 +2226,7 @@ door_area Doors: Area - The area of the opaque door(s). + The area of the opaque door(s}. Double ft^2 true @@ -2235,7 +2235,7 @@ door_rvalue Doors: R-value - R-value of the opaque door(s). + R-value of the opaque door(s}. Double h-ft^2-R/Btu true @@ -2339,7 +2339,7 @@ air_leakage_has_flue_or_chimney_in_conditioned_space Air Leakage: Has Flue or Chimney in Conditioned Space - Presence of flue or chimney with combustion air from conditioned space; used for infiltration model. If auto or not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.8.1/workflow_inputs.html#flue-or-chimney'>Flue or Chimney</a>) is used. + Presence of flue or chimney with combustion air from conditioned space; used for infiltration model. If 'auto' or not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.10.0/workflow_inputs.html#flue-or-chimney'>Flue or Chimney</a>) is used. Choice false false @@ -2462,7 +2462,7 @@ heating_system_heating_capacity Heating System: Heating Capacity - The output heating capacity of the heating system. If auto or not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.8.1/workflow_inputs.html#hpxml-heating-systems'>HPXML Heating Systems</a>) is used. + The output heating capacity of the heating system. If 'auto' or not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.10.0/workflow_inputs.html#hpxml-heating-systems'>HPXML Heating Systems</a>) is used. String Btu/hr false @@ -2506,7 +2506,7 @@ heating_system_airflow_defect_ratio Heating System: Airflow Defect Ratio - The airflow defect ratio, defined as (InstalledAirflow - DesignAirflow) / DesignAirflow, of the heating system per ANSI/RESNET/ACCA Standard 310. A value of zero means no airflow defect. Applies only to Furnace. If not provided, assumes no defect. + The airflow defect ratio, defined as (InstalledAirflow - DesignAirflow} / DesignAirflow, of the heating system per ANSI/RESNET/ACCA Standard 310. A value of zero means no airflow defect. Applies only to Furnace. If not provided, assumes no defect. Double Frac false @@ -2549,7 +2549,7 @@ cooling_system_cooling_efficiency_type Cooling System: Efficiency Type - The efficiency type of the cooling system. System types central air conditioner and mini-split use SEER or SEER2. System types room air conditioner and packaged terminal air conditioner use EER or CEER. Ignored for system type evaporative cooler. + The efficiency type of the cooling system. System types central air conditioner and mini-split use SEER or SEER2. System types room air conditioner and packaged terminal air conditioner use EER or CEER. Ignored for system type evaporative cooler. If not provided, defaults to SEER. Choice false false @@ -2583,7 +2583,7 @@ cooling_system_cooling_compressor_type Cooling System: Cooling Compressor Type - The compressor type of the cooling system. Only applies to central air conditioner and mini-split. If auto or not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.8.1/workflow_inputs.html#central-air-conditioner'>Central Air Conditioner</a>, <a href='https://openstudio-hpxml.readthedocs.io/en/v1.8.1/workflow_inputs.html#mini-split-air-conditioner'>Mini-Split Air Conditioner</a>) is used. + The compressor type of the cooling system. Only applies to central air conditioner and mini-split. If 'auto' or not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.10.0/workflow_inputs.html#central-air-conditioner'>Central Air Conditioner</a>, <a href='https://openstudio-hpxml.readthedocs.io/en/v1.10.0/workflow_inputs.html#mini-split-air-conditioner'>Mini-Split Air Conditioner</a>) is used. Choice false false @@ -2609,7 +2609,7 @@ cooling_system_cooling_sensible_heat_fraction Cooling System: Cooling Sensible Heat Fraction - The sensible heat fraction of the cooling system. Ignored for evaporative cooler. If auto or not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.8.1/workflow_inputs.html#central-air-conditioner'>Central Air Conditioner</a>, <a href='https://openstudio-hpxml.readthedocs.io/en/v1.8.1/workflow_inputs.html#room-air-conditioner'>Room Air Conditioner</a>, <a href='https://openstudio-hpxml.readthedocs.io/en/v1.8.1/workflow_inputs.html#packaged-terminal-air-conditioner'>Packaged Terminal Air Conditioner</a>, <a href='https://openstudio-hpxml.readthedocs.io/en/v1.8.1/workflow_inputs.html#mini-split-air-conditioner'>Mini-Split Air Conditioner</a>) is used. + The sensible heat fraction of the cooling system. Ignored for evaporative cooler. If 'auto' or not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.10.0/workflow_inputs.html#central-air-conditioner'>Central Air Conditioner</a>, <a href='https://openstudio-hpxml.readthedocs.io/en/v1.10.0/workflow_inputs.html#room-air-conditioner'>Room Air Conditioner</a>, <a href='https://openstudio-hpxml.readthedocs.io/en/v1.10.0/workflow_inputs.html#packaged-terminal-air-conditioner'>Packaged Terminal Air Conditioner</a>, <a href='https://openstudio-hpxml.readthedocs.io/en/v1.10.0/workflow_inputs.html#mini-split-air-conditioner'>Mini-Split Air Conditioner</a>) is used. String Frac false @@ -2618,7 +2618,7 @@ cooling_system_cooling_capacity Cooling System: Cooling Capacity - The output cooling capacity of the cooling system. If auto or not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.8.1/workflow_inputs.html#central-air-conditioner'>Central Air Conditioner</a>, <a href='https://openstudio-hpxml.readthedocs.io/en/v1.8.1/workflow_inputs.html#room-air-conditioner'>Room Air Conditioner</a>, <a href='https://openstudio-hpxml.readthedocs.io/en/v1.8.1/workflow_inputs.html#packaged-terminal-air-conditioner'>Packaged Terminal Air Conditioner</a>, <a href='https://openstudio-hpxml.readthedocs.io/en/v1.8.1/workflow_inputs.html#evaporative-cooler'>Evaporative Cooler</a>, <a href='https://openstudio-hpxml.readthedocs.io/en/v1.8.1/workflow_inputs.html#mini-split-air-conditioner'>Mini-Split Air Conditioner</a>) is used. + The output cooling capacity of the cooling system. If 'auto' or not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.10.0/workflow_inputs.html#central-air-conditioner'>Central Air Conditioner</a>, <a href='https://openstudio-hpxml.readthedocs.io/en/v1.10.0/workflow_inputs.html#room-air-conditioner'>Room Air Conditioner</a>, <a href='https://openstudio-hpxml.readthedocs.io/en/v1.10.0/workflow_inputs.html#packaged-terminal-air-conditioner'>Packaged Terminal Air Conditioner</a>, <a href='https://openstudio-hpxml.readthedocs.io/en/v1.10.0/workflow_inputs.html#evaporative-cooler'>Evaporative Cooler</a>, <a href='https://openstudio-hpxml.readthedocs.io/en/v1.10.0/workflow_inputs.html#mini-split-air-conditioner'>Mini-Split Air Conditioner</a>) is used. String Btu/hr false @@ -2671,7 +2671,7 @@ cooling_system_airflow_defect_ratio Cooling System: Airflow Defect Ratio - The airflow defect ratio, defined as (InstalledAirflow - DesignAirflow) / DesignAirflow, of the cooling system per ANSI/RESNET/ACCA Standard 310. A value of zero means no airflow defect. Applies only to central air conditioner and ducted mini-split. If not provided, assumes no defect. + The airflow defect ratio, defined as (InstalledAirflow - DesignAirflow} / DesignAirflow, of the cooling system per ANSI/RESNET/ACCA Standard 310. A value of zero means no airflow defect. Applies only to central air conditioner and ducted mini-split. If not provided, assumes no defect. Double Frac false @@ -2680,7 +2680,7 @@ cooling_system_charge_defect_ratio Cooling System: Charge Defect Ratio - The refrigerant charge defect ratio, defined as (InstalledCharge - DesignCharge) / DesignCharge, of the cooling system per ANSI/RESNET/ACCA Standard 310. A value of zero means no refrigerant charge defect. Applies only to central air conditioner and mini-split. If not provided, assumes no defect. + The refrigerant charge defect ratio, defined as (InstalledCharge - DesignCharge} / DesignCharge, of the cooling system per ANSI/RESNET/ACCA Standard 310. A value of zero means no refrigerant charge defect. Applies only to central air conditioner and mini-split. If not provided, assumes no defect. Double Frac false @@ -2689,7 +2689,7 @@ cooling_system_crankcase_heater_watts Cooling System: Crankcase Heater Power Watts - Cooling system crankcase heater power consumption in Watts. Applies only to central air conditioner, room air conditioner, packaged terminal air conditioner and mini-split. If auto or not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.8.1/workflow_inputs.html#central-air-conditioner'>Central Air Conditioner</a>, <a href='https://openstudio-hpxml.readthedocs.io/en/v1.8.1/workflow_inputs.html#room-air-conditioner'>Room Air Conditioner</a>, <a href='https://openstudio-hpxml.readthedocs.io/en/v1.8.1/workflow_inputs.html#packaged-terminal-air-conditioner'>Packaged Terminal Air Conditioner</a>, <a href='https://openstudio-hpxml.readthedocs.io/en/v1.8.1/workflow_inputs.html#mini-split-air-conditioner'>Mini-Split Air Conditioner</a>) is used. + Cooling system crankcase heater power consumption in Watts. Applies only to central air conditioner, room air conditioner, packaged terminal air conditioner and mini-split. If 'auto' or not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.10.0/workflow_inputs.html#central-air-conditioner'>Central Air Conditioner</a>, <a href='https://openstudio-hpxml.readthedocs.io/en/v1.10.0/workflow_inputs.html#room-air-conditioner'>Room Air Conditioner</a>, <a href='https://openstudio-hpxml.readthedocs.io/en/v1.10.0/workflow_inputs.html#packaged-terminal-air-conditioner'>Packaged Terminal Air Conditioner</a>, <a href='https://openstudio-hpxml.readthedocs.io/en/v1.10.0/workflow_inputs.html#mini-split-air-conditioner'>Mini-Split Air Conditioner</a>) is used. String W false @@ -2745,7 +2745,7 @@ cooling_system_integrated_heating_system_capacity Cooling System: Integrated Heating System Heating Capacity - The output heating capacity of the heating system integrated into cooling system. Only used for room air conditioner and packaged terminal air conditioner. If auto or not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.8.1/workflow_inputs.html#room-air-conditioner'>Room Air Conditioner</a>, <a href='https://openstudio-hpxml.readthedocs.io/en/v1.8.1/workflow_inputs.html#packaged-terminal-air-conditioner'>Packaged Terminal Air Conditioner</a>) is used. + The output heating capacity of the heating system integrated into cooling system. Only used for room air conditioner and packaged terminal air conditioner. If 'auto' or not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.10.0/workflow_inputs.html#room-air-conditioner'>Room Air Conditioner</a>, <a href='https://openstudio-hpxml.readthedocs.io/en/v1.10.0/workflow_inputs.html#packaged-terminal-air-conditioner'>Packaged Terminal Air Conditioner</a>) is used. String Btu/hr false @@ -2797,7 +2797,7 @@ heat_pump_heating_efficiency_type Heat Pump: Heating Efficiency Type - The heating efficiency type of heat pump. System types air-to-air and mini-split use HSPF or HSPF2. System types ground-to-air, packaged terminal heat pump and room air conditioner with reverse cycle use COP. + The heating efficiency type of heat pump. System types air-to-air and mini-split use HSPF or HSPF2. System types ground-to-air, packaged terminal heat pump and room air conditioner with reverse cycle use COP. If not provided, defaults to HSPF. Choice false false @@ -2827,7 +2827,7 @@ heat_pump_cooling_efficiency_type Heat Pump: Cooling Efficiency Type - The cooling efficiency type of heat pump. System types air-to-air and mini-split use SEER or SEER2. System types ground-to-air, packaged terminal heat pump and room air conditioner with reverse cycle use EER. + The cooling efficiency type of heat pump. System types air-to-air and mini-split use SEER or SEER2. System types ground-to-air, packaged terminal heat pump and room air conditioner with reverse cycle use EER. If not provided, defaults to SEER. Choice false false @@ -2861,7 +2861,7 @@ heat_pump_cooling_compressor_type Heat Pump: Cooling Compressor Type - The compressor type of the heat pump. Only applies to air-to-air and mini-split. If auto or not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.8.1/workflow_inputs.html#air-to-air-heat-pump'>Air-to-Air Heat Pump</a>, <a href='https://openstudio-hpxml.readthedocs.io/en/v1.8.1/workflow_inputs.html#mini-split-heat-pump'>Mini-Split Heat Pump</a>) is used. + The compressor type of the heat pump. Only applies to air-to-air and mini-split. If 'auto' or not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.10.0/workflow_inputs.html#air-to-air-heat-pump'>Air-to-Air Heat Pump</a>, <a href='https://openstudio-hpxml.readthedocs.io/en/v1.10.0/workflow_inputs.html#mini-split-heat-pump'>Mini-Split Heat Pump</a>) is used. Choice false false @@ -2891,7 +2891,7 @@ heat_pump_cooling_sensible_heat_fraction Heat Pump: Cooling Sensible Heat Fraction - The sensible heat fraction of the heat pump. If auto or not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.8.1/workflow_inputs.html#air-to-air-heat-pump'>Air-to-Air Heat Pump</a>, <a href='https://openstudio-hpxml.readthedocs.io/en/v1.8.1/workflow_inputs.html#mini-split-heat-pump'>Mini-Split Heat Pump</a>, <a href='https://openstudio-hpxml.readthedocs.io/en/v1.8.1/workflow_inputs.html#packaged-terminal-heat-pump'>Packaged Terminal Heat Pump</a>, <a href='https://openstudio-hpxml.readthedocs.io/en/v1.8.1/workflow_inputs.html#room-air-conditioner-w-reverse-cycle'>Room Air Conditioner w/ Reverse Cycle</a>, <a href='https://openstudio-hpxml.readthedocs.io/en/v1.8.1/workflow_inputs.html#ground-to-air-heat-pump'>Ground-to-Air Heat Pump</a>) is used. + The sensible heat fraction of the heat pump. If 'auto' or not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.10.0/workflow_inputs.html#air-to-air-heat-pump'>Air-to-Air Heat Pump</a>, <a href='https://openstudio-hpxml.readthedocs.io/en/v1.10.0/workflow_inputs.html#mini-split-heat-pump'>Mini-Split Heat Pump</a>, <a href='https://openstudio-hpxml.readthedocs.io/en/v1.10.0/workflow_inputs.html#packaged-terminal-heat-pump'>Packaged Terminal Heat Pump</a>, <a href='https://openstudio-hpxml.readthedocs.io/en/v1.10.0/workflow_inputs.html#room-air-conditioner-w-reverse-cycle'>Room Air Conditioner w/ Reverse Cycle</a>, <a href='https://openstudio-hpxml.readthedocs.io/en/v1.10.0/workflow_inputs.html#ground-to-air-heat-pump'>Ground-to-Air Heat Pump</a>) is used. String Frac false @@ -2900,7 +2900,7 @@ heat_pump_heating_capacity Heat Pump: Heating Capacity - The output heating capacity of the heat pump. If auto or not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.8.1/workflow_inputs.html#air-to-air-heat-pump'>Air-to-Air Heat Pump</a>, <a href='https://openstudio-hpxml.readthedocs.io/en/v1.8.1/workflow_inputs.html#mini-split-heat-pump'>Mini-Split Heat Pump</a>, <a href='https://openstudio-hpxml.readthedocs.io/en/v1.8.1/workflow_inputs.html#packaged-terminal-heat-pump'>Packaged Terminal Heat Pump</a>, <a href='https://openstudio-hpxml.readthedocs.io/en/v1.8.1/workflow_inputs.html#room-air-conditioner-w-reverse-cycle'>Room Air Conditioner w/ Reverse Cycle</a>, <a href='https://openstudio-hpxml.readthedocs.io/en/v1.8.1/workflow_inputs.html#ground-to-air-heat-pump'>Ground-to-Air Heat Pump</a>) is used. + The output heating capacity of the heat pump. If 'auto' or not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.10.0/workflow_inputs.html#air-to-air-heat-pump'>Air-to-Air Heat Pump</a>, <a href='https://openstudio-hpxml.readthedocs.io/en/v1.10.0/workflow_inputs.html#mini-split-heat-pump'>Mini-Split Heat Pump</a>, <a href='https://openstudio-hpxml.readthedocs.io/en/v1.10.0/workflow_inputs.html#packaged-terminal-heat-pump'>Packaged Terminal Heat Pump</a>, <a href='https://openstudio-hpxml.readthedocs.io/en/v1.10.0/workflow_inputs.html#room-air-conditioner-w-reverse-cycle'>Room Air Conditioner w/ Reverse Cycle</a>, <a href='https://openstudio-hpxml.readthedocs.io/en/v1.10.0/workflow_inputs.html#ground-to-air-heat-pump'>Ground-to-Air Heat Pump</a>) is used. String Btu/hr false @@ -2926,7 +2926,7 @@ heat_pump_heating_capacity_retention_fraction Heat Pump: Heating Capacity Retention Fraction - The output heating capacity of the heat pump at a user-specified temperature (e.g., 17F or 5F) divided by the above nominal heating capacity. Applies to all heat pump types except ground-to-air. If auto or not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.8.1/workflow_inputs.html#air-to-air-heat-pump'>Air-to-Air Heat Pump</a>, <a href='https://openstudio-hpxml.readthedocs.io/en/v1.8.1/workflow_inputs.html#mini-split-heat-pump'>Mini-Split Heat Pump</a>, <a href='https://openstudio-hpxml.readthedocs.io/en/v1.8.1/workflow_inputs.html#packaged-terminal-heat-pump'>Packaged Terminal Heat Pump</a>, <a href='https://openstudio-hpxml.readthedocs.io/en/v1.8.1/workflow_inputs.html#room-air-conditioner-w-reverse-cycle'>Room Air Conditioner w/ Reverse Cycle</a>) is used. + The output heating capacity of the heat pump at a user-specified temperature (e.g., 17F or 5F} divided by the above nominal heating capacity. Applies to all heat pump types except ground-to-air. If 'auto' or not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.10.0/workflow_inputs.html#air-to-air-heat-pump'>Air-to-Air Heat Pump</a>, <a href='https://openstudio-hpxml.readthedocs.io/en/v1.10.0/workflow_inputs.html#mini-split-heat-pump'>Mini-Split Heat Pump</a>, <a href='https://openstudio-hpxml.readthedocs.io/en/v1.10.0/workflow_inputs.html#packaged-terminal-heat-pump'>Packaged Terminal Heat Pump</a>, <a href='https://openstudio-hpxml.readthedocs.io/en/v1.10.0/workflow_inputs.html#room-air-conditioner-w-reverse-cycle'>Room Air Conditioner w/ Reverse Cycle</a>) is used. String Frac false @@ -2935,7 +2935,7 @@ heat_pump_heating_capacity_retention_temp Heat Pump: Heating Capacity Retention Temperature - The user-specified temperature (e.g., 17F or 5F) for the above heating capacity retention fraction. Applies to all heat pump types except ground-to-air. Required if the Heating Capacity Retention Fraction is provided. + The user-specified temperature (e.g., 17F or 5F} for the above heating capacity retention fraction. Applies to all heat pump types except ground-to-air. Required if the Heating Capacity Retention Fraction is provided. Double F false @@ -2944,7 +2944,7 @@ heat_pump_cooling_capacity Heat Pump: Cooling Capacity - The output cooling capacity of the heat pump. If auto or not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.8.1/workflow_inputs.html#air-to-air-heat-pump'>Air-to-Air Heat Pump</a>, <a href='https://openstudio-hpxml.readthedocs.io/en/v1.8.1/workflow_inputs.html#mini-split-heat-pump'>Mini-Split Heat Pump</a>, <a href='https://openstudio-hpxml.readthedocs.io/en/v1.8.1/workflow_inputs.html#packaged-terminal-heat-pump'>Packaged Terminal Heat Pump</a>, <a href='https://openstudio-hpxml.readthedocs.io/en/v1.8.1/workflow_inputs.html#room-air-conditioner-w-reverse-cycle'>Room Air Conditioner w/ Reverse Cycle</a>, <a href='https://openstudio-hpxml.readthedocs.io/en/v1.8.1/workflow_inputs.html#ground-to-air-heat-pump'>Ground-to-Air Heat Pump</a>) is used. + The output cooling capacity of the heat pump. If 'auto' or not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.10.0/workflow_inputs.html#air-to-air-heat-pump'>Air-to-Air Heat Pump</a>, <a href='https://openstudio-hpxml.readthedocs.io/en/v1.10.0/workflow_inputs.html#mini-split-heat-pump'>Mini-Split Heat Pump</a>, <a href='https://openstudio-hpxml.readthedocs.io/en/v1.10.0/workflow_inputs.html#packaged-terminal-heat-pump'>Packaged Terminal Heat Pump</a>, <a href='https://openstudio-hpxml.readthedocs.io/en/v1.10.0/workflow_inputs.html#room-air-conditioner-w-reverse-cycle'>Room Air Conditioner w/ Reverse Cycle</a>, <a href='https://openstudio-hpxml.readthedocs.io/en/v1.10.0/workflow_inputs.html#ground-to-air-heat-pump'>Ground-to-Air Heat Pump</a>) is used. String Btu/hr false @@ -2988,7 +2988,7 @@ heat_pump_compressor_lockout_temp Heat Pump: Compressor Lockout Temperature - The temperature below which the heat pump compressor is disabled. If both this and Backup Heating Lockout Temperature are provided and use the same value, it essentially defines a switchover temperature (for, e.g., a dual-fuel heat pump). Applies to all heat pump types other than ground-to-air. If auto or not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.8.1/workflow_inputs.html#air-to-air-heat-pump'>Air-to-Air Heat Pump</a>, <a href='https://openstudio-hpxml.readthedocs.io/en/v1.8.1/workflow_inputs.html#mini-split-heat-pump'>Mini-Split Heat Pump</a>, <a href='https://openstudio-hpxml.readthedocs.io/en/v1.8.1/workflow_inputs.html#packaged-terminal-heat-pump'>Packaged Terminal Heat Pump</a>, <a href='https://openstudio-hpxml.readthedocs.io/en/v1.8.1/workflow_inputs.html#room-air-conditioner-w-reverse-cycle'>Room Air Conditioner w/ Reverse Cycle</a>) is used. + The temperature below which the heat pump compressor is disabled. If both this and Backup Heating Lockout Temperature are provided and use the same value, it essentially defines a switchover temperature (for, e.g., a dual-fuel heat pump}. Applies to all heat pump types other than ground-to-air. If 'auto' or not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.10.0/workflow_inputs.html#air-to-air-heat-pump'>Air-to-Air Heat Pump</a>, <a href='https://openstudio-hpxml.readthedocs.io/en/v1.10.0/workflow_inputs.html#mini-split-heat-pump'>Mini-Split Heat Pump</a>, <a href='https://openstudio-hpxml.readthedocs.io/en/v1.10.0/workflow_inputs.html#packaged-terminal-heat-pump'>Packaged Terminal Heat Pump</a>, <a href='https://openstudio-hpxml.readthedocs.io/en/v1.10.0/workflow_inputs.html#room-air-conditioner-w-reverse-cycle'>Room Air Conditioner w/ Reverse Cycle</a>) is used. String F false @@ -3036,7 +3036,7 @@ heat_pump_backup_fuel Heat Pump: Backup Fuel Type - The backup fuel type of the heat pump. Only applies if Backup Type is 'integrated'. + The backup fuel type of the heat pump. Only applies if Backup Type is 'integrated'. If not provided, defaults to electricity. Choice false false @@ -3062,7 +3062,7 @@ heat_pump_backup_heating_efficiency Heat Pump: Backup Rated Efficiency - The backup rated efficiency value of the heat pump. Percent for electricity fuel type. AFUE otherwise. Only applies if Backup Type is 'integrated'. + The backup rated efficiency value of the heat pump. Percent for electricity fuel type. AFUE otherwise. Only applies if Backup Type is 'integrated'. If not provided, defaults to 1. Double false false @@ -3070,7 +3070,7 @@ heat_pump_backup_heating_capacity Heat Pump: Backup Heating Capacity - The backup output heating capacity of the heat pump. Only applies if Backup Type is 'integrated'. If auto or not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.8.1/workflow_inputs.html#backup'>Backup</a>) is used. + The backup output heating capacity of the heat pump. Only applies if Backup Type is 'integrated'. If 'auto' or not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.10.0/workflow_inputs.html#backup'>Backup</a>) is used. String Btu/hr false @@ -3079,7 +3079,7 @@ heat_pump_backup_heating_lockout_temp Heat Pump: Backup Heating Lockout Temperature - The temperature above which the heat pump backup system is disabled. If both this and Compressor Lockout Temperature are provided and use the same value, it essentially defines a switchover temperature (for, e.g., a dual-fuel heat pump). Applies for both Backup Type of 'integrated' and 'separate'. If auto or not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.8.1/workflow_inputs.html#backup'>Backup</a>) is used. + The temperature above which the heat pump backup system is disabled. If both this and Compressor Lockout Temperature are provided and use the same value, it essentially defines a switchover temperature (for, e.g., a dual-fuel heat pump}. Applies for both Backup Type of 'integrated' and 'separate'. If 'auto' or not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.10.0/workflow_inputs.html#backup'>Backup</a>) is used. String F false @@ -3088,7 +3088,7 @@ heat_pump_sizing_methodology Heat Pump: Sizing Methodology - The auto-sizing methodology to use when the heat pump capacity is not provided. If auto or not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.8.1/workflow_inputs.html#hpxml-hvac-sizing-control'>HPXML HVAC Sizing Control</a>) is used. + The auto-sizing methodology to use when the heat pump capacity is not provided. If 'auto' or not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.10.0/workflow_inputs.html#hpxml-hvac-sizing-control'>HPXML HVAC Sizing Control</a>) is used. Choice false false @@ -3114,7 +3114,7 @@ heat_pump_backup_sizing_methodology Heat Pump: Backup Sizing Methodology - The auto-sizing methodology to use when the heat pump backup capacity is not provided. If auto or not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.8.1/workflow_inputs.html#hpxml-hvac-sizing-control'>HPXML HVAC Sizing Control</a>) is used. + The auto-sizing methodology to use when the heat pump backup capacity is not provided. If 'auto' or not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.10.0/workflow_inputs.html#hpxml-hvac-sizing-control'>HPXML HVAC Sizing Control</a>) is used. Choice false false @@ -3154,7 +3154,7 @@ heat_pump_airflow_defect_ratio Heat Pump: Airflow Defect Ratio - The airflow defect ratio, defined as (InstalledAirflow - DesignAirflow) / DesignAirflow, of the heat pump per ANSI/RESNET/ACCA Standard 310. A value of zero means no airflow defect. Applies only to air-to-air, ducted mini-split, and ground-to-air. If not provided, assumes no defect. + The airflow defect ratio, defined as (InstalledAirflow - DesignAirflow} / DesignAirflow, of the heat pump per ANSI/RESNET/ACCA Standard 310. A value of zero means no airflow defect. Applies only to air-to-air, ducted mini-split, and ground-to-air. If not provided, assumes no defect. Double Frac false @@ -3163,7 +3163,7 @@ heat_pump_charge_defect_ratio Heat Pump: Charge Defect Ratio - The refrigerant charge defect ratio, defined as (InstalledCharge - DesignCharge) / DesignCharge, of the heat pump per ANSI/RESNET/ACCA Standard 310. A value of zero means no refrigerant charge defect. Applies to all heat pump types. If not provided, assumes no defect. + The refrigerant charge defect ratio, defined as (InstalledCharge - DesignCharge} / DesignCharge, of the heat pump per ANSI/RESNET/ACCA Standard 310. A value of zero means no refrigerant charge defect. Applies to all heat pump types. If not provided, assumes no defect. Double Frac false @@ -3172,7 +3172,7 @@ heat_pump_crankcase_heater_watts Heat Pump: Crankcase Heater Power Watts - Heat Pump crankcase heater power consumption in Watts. Applies only to air-to-air, mini-split, packaged terminal heat pump and room air conditioner with reverse cycle. If auto or not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.8.1/workflow_inputs.html#air-to-air-heat-pump'>Air-to-Air Heat Pump</a>, <a href='https://openstudio-hpxml.readthedocs.io/en/v1.8.1/workflow_inputs.html#mini-split-heat-pump'>Mini-Split Heat Pump</a>, <a href='https://openstudio-hpxml.readthedocs.io/en/v1.8.1/workflow_inputs.html#packaged-terminal-heat-pump'>Packaged Terminal Heat Pump</a>, <a href='https://openstudio-hpxml.readthedocs.io/en/v1.8.1/workflow_inputs.html#room-air-conditioner-w-reverse-cycle'>Room Air Conditioner w/ Reverse Cycle</a>) is used. + Heat Pump crankcase heater power consumption in Watts. Applies only to air-to-air, mini-split, packaged terminal heat pump and room air conditioner with reverse cycle. If 'auto' or not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.10.0/workflow_inputs.html#air-to-air-heat-pump'>Air-to-Air Heat Pump</a>, <a href='https://openstudio-hpxml.readthedocs.io/en/v1.10.0/workflow_inputs.html#mini-split-heat-pump'>Mini-Split Heat Pump</a>, <a href='https://openstudio-hpxml.readthedocs.io/en/v1.10.0/workflow_inputs.html#packaged-terminal-heat-pump'>Packaged Terminal Heat Pump</a>, <a href='https://openstudio-hpxml.readthedocs.io/en/v1.10.0/workflow_inputs.html#room-air-conditioner-w-reverse-cycle'>Room Air Conditioner w/ Reverse Cycle</a>) is used. String W false @@ -3181,7 +3181,7 @@ hvac_perf_data_capacity_type HVAC Detailed Performance Data: Capacity Type - Type of capacity values for detailed performance data if available. Applies only to variable-speed air-source HVAC systems (central air conditioners, mini-split air conditioners, air-to-air heat pumps, and mini-split heat pumps). + Type of capacity values for detailed performance data if available. Applies only to variable-speed air-source HVAC systems (central air conditioners, mini-split air conditioners, air-to-air heat pumps, and mini-split heat pumps}. Choice false false @@ -3199,7 +3199,7 @@ hvac_perf_data_heating_outdoor_temperatures HVAC Detailed Performance Data: Heating Outdoor Temperatures - Outdoor temperatures of heating detailed performance data if available. Applies only to variable-speed air-source HVAC systems (central air conditioners, mini-split air conditioners, air-to-air heat pumps, and mini-split heat pumps). One of the outdoor temperatures must be 47 F. At least two performance data points are required using a comma-separated list. + Outdoor temperatures of heating detailed performance data if available. Applies only to variable-speed air-source HVAC systems (central air conditioners, mini-split air conditioners, air-to-air heat pumps, and mini-split heat pumps}. One of the outdoor temperatures must be 47 F. At least two performance data points are required using a comma-separated list. String F false @@ -3208,7 +3208,7 @@ hvac_perf_data_heating_min_speed_capacities HVAC Detailed Performance Data: Heating Minimum Speed Capacities - Minimum speed capacities of heating detailed performance data if available. Applies only to variable-speed air-source HVAC systems (central air conditioners, mini-split air conditioners, air-to-air heat pumps, and mini-split heat pumps). At least two performance data points are required using a comma-separated list. + Minimum speed capacities of heating detailed performance data if available. Applies only to variable-speed air-source HVAC systems (central air conditioners, mini-split air conditioners, air-to-air heat pumps, and mini-split heat pumps}. At least two performance data points are required using a comma-separated list. String Btu/hr or Frac false @@ -3217,7 +3217,7 @@ hvac_perf_data_heating_max_speed_capacities HVAC Detailed Performance Data: Heating Maximum Speed Capacities - Maximum speed capacities of heating detailed performance data if available. Applies only to variable-speed air-source HVAC systems (central air conditioners, mini-split air conditioners, air-to-air heat pumps, and mini-split heat pumps). At least two performance data points are required using a comma-separated list. + Maximum speed capacities of heating detailed performance data if available. Applies only to variable-speed air-source HVAC systems (central air conditioners, mini-split air conditioners, air-to-air heat pumps, and mini-split heat pumps}. At least two performance data points are required using a comma-separated list. String Btu/hr or Frac false @@ -3226,7 +3226,7 @@ hvac_perf_data_heating_min_speed_cops HVAC Detailed Performance Data: Heating Minimum Speed COPs - Minimum speed efficiency COP values of heating detailed performance data if available. Applies only to variable-speed air-source HVAC systems (central air conditioners, mini-split air conditioners, air-to-air heat pumps, and mini-split heat pumps). At least two performance data points are required using a comma-separated list. + Minimum speed efficiency COP values of heating detailed performance data if available. Applies only to variable-speed air-source HVAC systems (central air conditioners, mini-split air conditioners, air-to-air heat pumps, and mini-split heat pumps}. At least two performance data points are required using a comma-separated list. String W/W false @@ -3235,7 +3235,7 @@ hvac_perf_data_heating_max_speed_cops HVAC Detailed Performance Data: Heating Maximum Speed COPs - Maximum speed efficiency COP values of heating detailed performance data if available. Applies only to variable-speed air-source HVAC systems (central air conditioners, mini-split air conditioners, air-to-air heat pumps, and mini-split heat pumps). At least two performance data points are required using a comma-separated list. + Maximum speed efficiency COP values of heating detailed performance data if available. Applies only to variable-speed air-source HVAC systems (central air conditioners, mini-split air conditioners, air-to-air heat pumps, and mini-split heat pumps}. At least two performance data points are required using a comma-separated list. String W/W false @@ -3244,7 +3244,7 @@ hvac_perf_data_cooling_outdoor_temperatures HVAC Detailed Performance Data: Cooling Outdoor Temperatures - Outdoor temperatures of cooling detailed performance data if available. Applies only to variable-speed air-source HVAC systems (central air conditioners, mini-split air conditioners, air-to-air heat pumps, and mini-split heat pumps). One of the outdoor temperatures must be 95 F. At least two performance data points are required using a comma-separated list. + Outdoor temperatures of cooling detailed performance data if available. Applies only to variable-speed air-source HVAC systems (central air conditioners, mini-split air conditioners, air-to-air heat pumps, and mini-split heat pumps}. One of the outdoor temperatures must be 95 F. At least two performance data points are required using a comma-separated list. String F false @@ -3253,7 +3253,7 @@ hvac_perf_data_cooling_min_speed_capacities HVAC Detailed Performance Data: Cooling Minimum Speed Capacities - Minimum speed capacities of cooling detailed performance data if available. Applies only to variable-speed air-source HVAC systems (central air conditioners, mini-split air conditioners, air-to-air heat pumps, and mini-split heat pumps). At least two performance data points are required using a comma-separated list. + Minimum speed capacities of cooling detailed performance data if available. Applies only to variable-speed air-source HVAC systems (central air conditioners, mini-split air conditioners, air-to-air heat pumps, and mini-split heat pumps}. At least two performance data points are required using a comma-separated list. String Btu/hr or Frac false @@ -3262,7 +3262,7 @@ hvac_perf_data_cooling_max_speed_capacities HVAC Detailed Performance Data: Cooling Maximum Speed Capacities - Maximum speed capacities of cooling detailed performance data if available. Applies only to variable-speed air-source HVAC systems (central air conditioners, mini-split air conditioners, air-to-air heat pumps, and mini-split heat pumps). At least two performance data points are required using a comma-separated list. + Maximum speed capacities of cooling detailed performance data if available. Applies only to variable-speed air-source HVAC systems (central air conditioners, mini-split air conditioners, air-to-air heat pumps, and mini-split heat pumps}. At least two performance data points are required using a comma-separated list. String Btu/hr or Frac false @@ -3271,7 +3271,7 @@ hvac_perf_data_cooling_min_speed_cops HVAC Detailed Performance Data: Cooling Minimum Speed COPs - Minimum speed efficiency COP values of cooling detailed performance data if available. Applies only to variable-speed air-source HVAC systems (central air conditioners, mini-split air conditioners, air-to-air heat pumps, and mini-split heat pumps). At least two performance data points are required using a comma-separated list. + Minimum speed efficiency COP values of cooling detailed performance data if available. Applies only to variable-speed air-source HVAC systems (central air conditioners, mini-split air conditioners, air-to-air heat pumps, and mini-split heat pumps}. At least two performance data points are required using a comma-separated list. String W/W false @@ -3280,7 +3280,7 @@ hvac_perf_data_cooling_max_speed_cops HVAC Detailed Performance Data: Cooling Maximum Speed COPs - Maximum speed efficiency COP values of cooling detailed performance data if available. Applies only to variable-speed air-source HVAC systems (central air conditioners, mini-split air conditioners, air-to-air heat pumps, and mini-split heat pumps). At least two performance data points are required using a comma-separated list. + Maximum speed efficiency COP values of cooling detailed performance data if available. Applies only to variable-speed air-source HVAC systems (central air conditioners, mini-split air conditioners, air-to-air heat pumps, and mini-split heat pumps}. At least two performance data points are required using a comma-separated list. String W/W false @@ -3289,7 +3289,7 @@ geothermal_loop_configuration Geothermal Loop: Configuration - Configuration of the geothermal loop. Only applies to ground-to-air heat pump type. If auto or not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.8.1/workflow_inputs.html#ground-to-air-heat-pump'>Ground-to-Air Heat Pump</a>) is used. + Configuration of the geothermal loop. Only applies to ground-to-air heat pump type. If 'auto' or not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.10.0/workflow_inputs.html#ground-to-air-heat-pump'>Ground-to-Air Heat Pump</a>) is used. Choice false false @@ -3311,7 +3311,7 @@ geothermal_loop_borefield_configuration Geothermal Loop: Borefield Configuration - Borefield configuration of the geothermal loop. Only applies to ground-to-air heat pump type. If auto or not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.8.1/workflow_inputs.html#hpxml-geothermal-loops'>HPXML Geothermal Loops</a>) is used. + Borefield configuration of the geothermal loop. Only applies to ground-to-air heat pump type. If 'auto' or not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.10.0/workflow_inputs.html#hpxml-geothermal-loops'>HPXML Geothermal Loops</a>) is used. Choice false false @@ -3349,7 +3349,7 @@ geothermal_loop_loop_flow Geothermal Loop: Loop Flow - Water flow rate through the geothermal loop. Only applies to ground-to-air heat pump type. If auto or not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.8.1/workflow_inputs.html#hpxml-geothermal-loops'>HPXML Geothermal Loops</a>) is used. + Water flow rate through the geothermal loop. Only applies to ground-to-air heat pump type. If 'auto' or not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.10.0/workflow_inputs.html#hpxml-geothermal-loops'>HPXML Geothermal Loops</a>) is used. String gpm false @@ -3358,7 +3358,7 @@ geothermal_loop_boreholes_count Geothermal Loop: Boreholes Count - Number of boreholes. Only applies to ground-to-air heat pump type. If auto or not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.8.1/workflow_inputs.html#hpxml-geothermal-loops'>HPXML Geothermal Loops</a>) is used. + Number of boreholes. Only applies to ground-to-air heat pump type. If 'auto' or not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.10.0/workflow_inputs.html#hpxml-geothermal-loops'>HPXML Geothermal Loops</a>) is used. String # false @@ -3367,7 +3367,7 @@ geothermal_loop_boreholes_length Geothermal Loop: Boreholes Length - Average length of each borehole (vertical). Only applies to ground-to-air heat pump type. If auto or not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.8.1/workflow_inputs.html#hpxml-geothermal-loops'>HPXML Geothermal Loops</a>) is used. + Average length of each borehole (vertical}. Only applies to ground-to-air heat pump type. If 'auto' or not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.10.0/workflow_inputs.html#hpxml-geothermal-loops'>HPXML Geothermal Loops</a>) is used. String ft false @@ -3376,7 +3376,7 @@ geothermal_loop_boreholes_spacing Geothermal Loop: Boreholes Spacing - Distance between bores. Only applies to ground-to-air heat pump type. If auto or not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.8.1/workflow_inputs.html#hpxml-geothermal-loops'>HPXML Geothermal Loops</a>) is used. + Distance between bores. Only applies to ground-to-air heat pump type. If 'auto' or not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.10.0/workflow_inputs.html#hpxml-geothermal-loops'>HPXML Geothermal Loops</a>) is used. String ft false @@ -3385,7 +3385,7 @@ geothermal_loop_boreholes_diameter Geothermal Loop: Boreholes Diameter - Diameter of bores. Only applies to ground-to-air heat pump type. If auto or not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.8.1/workflow_inputs.html#hpxml-geothermal-loops'>HPXML Geothermal Loops</a>) is used. + Diameter of bores. Only applies to ground-to-air heat pump type. If 'auto' or not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.10.0/workflow_inputs.html#hpxml-geothermal-loops'>HPXML Geothermal Loops</a>) is used. String in false @@ -3394,7 +3394,7 @@ geothermal_loop_grout_type Geothermal Loop: Grout Type - Grout type of the geothermal loop. Only applies to ground-to-air heat pump type. If auto or not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.8.1/workflow_inputs.html#hpxml-geothermal-loops'>HPXML Geothermal Loops</a>) is used. + Grout type of the geothermal loop. Only applies to ground-to-air heat pump type. If 'auto' or not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.10.0/workflow_inputs.html#hpxml-geothermal-loops'>HPXML Geothermal Loops</a>) is used. Choice false false @@ -3416,7 +3416,7 @@ geothermal_loop_pipe_type Geothermal Loop: Pipe Type - Pipe type of the geothermal loop. Only applies to ground-to-air heat pump type. If auto or not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.8.1/workflow_inputs.html#hpxml-geothermal-loops'>HPXML Geothermal Loops</a>) is used. + Pipe type of the geothermal loop. Only applies to ground-to-air heat pump type. If 'auto' or not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.10.0/workflow_inputs.html#hpxml-geothermal-loops'>HPXML Geothermal Loops</a>) is used. Choice false false @@ -3442,7 +3442,7 @@ geothermal_loop_pipe_diameter Geothermal Loop: Pipe Diameter - Pipe diameter of the geothermal loop. Only applies to ground-to-air heat pump type. If auto or not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.8.1/workflow_inputs.html#hpxml-geothermal-loops'>HPXML Geothermal Loops</a>) is used. + Pipe diameter of the geothermal loop. Only applies to ground-to-air heat pump type. If 'auto' or not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.10.0/workflow_inputs.html#hpxml-geothermal-loops'>HPXML Geothermal Loops</a>) is used. Choice in false @@ -3515,7 +3515,7 @@ heating_system_2_fuel Heating System 2: Fuel Type - The fuel type of the second heating system. Ignored for ElectricResistance. + The fuel type of the second heating system. Ignored for ElectricResistance. If not provided, defaults to electricity. Choice false false @@ -3553,7 +3553,7 @@ heating_system_2_heating_efficiency Heating System 2: Rated AFUE or Percent - The rated heating efficiency value of the second heating system. + The rated heating efficiency value of the second heating system. If not provided, defaults to 1. Double Frac false @@ -3562,7 +3562,7 @@ heating_system_2_heating_capacity Heating System 2: Heating Capacity - The output heating capacity of the second heating system. If auto or not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.8.1/workflow_inputs.html#hpxml-heating-systems'>HPXML Heating Systems</a>) is used. + The output heating capacity of the second heating system. If 'auto' or not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.10.0/workflow_inputs.html#hpxml-heating-systems'>HPXML Heating Systems</a>) is used. String Btu/hr false @@ -3588,7 +3588,7 @@ heating_system_2_fraction_heat_load_served Heating System 2: Fraction Heat Load Served - The heat load served fraction of the second heating system. Ignored if this heating system serves as a backup system for a heat pump. + The heat load served fraction of the second heating system. Ignored if this heating system serves as a backup system for a heat pump. If not provided, defaults to 0.25. Double Frac false @@ -3633,7 +3633,7 @@ hvac_control_heating_season_period HVAC Control: Heating Season Period - Enter a date range like 'Nov 1 - Jun 30'. Can also provide 'BuildingAmerica' to use automatic seasons from the Building America House Simulation Protocols. If auto or not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.8.1/workflow_inputs.html#hpxml-hvac-control'>HPXML HVAC Control</a>) is used. + Enter a date range like 'Nov 1 - Jun 30'. Can also provide 'BuildingAmerica' to use automatic seasons from the Building America House Simulation Protocols. If 'auto' or not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.10.0/workflow_inputs.html#hpxml-hvac-control'>HPXML HVAC Control</a>) is used. String false false @@ -3641,7 +3641,7 @@ hvac_control_cooling_season_period HVAC Control: Cooling Season Period - Enter a date range like 'Jun 1 - Oct 31'. Can also provide 'BuildingAmerica' to use automatic seasons from the Building America House Simulation Protocols. If auto or not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.8.1/workflow_inputs.html#hpxml-hvac-control'>HPXML HVAC Control</a>) is used. + Enter a date range like 'Jun 1 - Oct 31'. Can also provide 'BuildingAmerica' to use automatic seasons from the Building America House Simulation Protocols. If 'auto' or not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.10.0/workflow_inputs.html#hpxml-hvac-control'>HPXML HVAC Control</a>) is used. String false false @@ -3649,7 +3649,7 @@ hvac_blower_fan_watts_per_cfm HVAC Blower: Fan Efficiency - The blower fan efficiency at maximum fan speed. Applies only to split (not packaged) systems (i.e., applies to ducted systems as well as ductless mini-split systems). If auto or not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.8.1/workflow_inputs.html#hpxml-heating-systems'>HPXML Heating Systems</a>, <a href='https://openstudio-hpxml.readthedocs.io/en/v1.8.1/workflow_inputs.html#hpxml-cooling-systems'>HPXML Cooling Systems</a>, <a href='https://openstudio-hpxml.readthedocs.io/en/v1.8.1/workflow_inputs.html#hpxml-heat-pumps'>HPXML Heat Pumps</a>) is used. + The blower fan efficiency at maximum fan speed. Applies only to split (not packaged} systems (i.e., applies to ducted systems as well as ductless mini-split systems}. If 'auto' or not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.10.0/workflow_inputs.html#hpxml-heating-systems'>HPXML Heating Systems</a>, <a href='https://openstudio-hpxml.readthedocs.io/en/v1.10.0/workflow_inputs.html#hpxml-cooling-systems'>HPXML Cooling Systems</a>, <a href='https://openstudio-hpxml.readthedocs.io/en/v1.10.0/workflow_inputs.html#hpxml-heat-pumps'>HPXML Heat Pumps</a>) is used. String W/CFM false @@ -3688,7 +3688,7 @@ ducts_supply_location Ducts: Supply Location - The location of the supply ducts. If auto or not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.8.1/workflow_inputs.html#air-distribution'>Air Distribution</a>) is used. + The location of the supply ducts. If 'auto' or not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.10.0/workflow_inputs.html#air-distribution'>Air Distribution</a>) is used. Choice false false @@ -3791,7 +3791,7 @@ ducts_supply_buried_insulation_level Ducts: Supply Buried Insulation Level - Whether the supply ducts are buried in, e.g., attic loose-fill insulation. Partially buried ducts have insulation that does not cover the top of the ducts. Fully buried ducts have insulation that just covers the top of the ducts. Deeply buried ducts have insulation that continues above the top of the ducts. If auto or not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.8.1/workflow_inputs.html#air-distribution'>Air Distribution</a>) is used. + Whether the supply ducts are buried in, e.g., attic loose-fill insulation. Partially buried ducts have insulation that does not cover the top of the ducts. Fully buried ducts have insulation that just covers the top of the ducts. Deeply buried ducts have insulation that continues above the top of the ducts. If 'auto' or not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.10.0/workflow_inputs.html#air-distribution'>Air Distribution</a>) is used. Choice false false @@ -3821,7 +3821,7 @@ ducts_supply_surface_area Ducts: Supply Surface Area - The supply ducts surface area in the given location. If auto or not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.8.1/workflow_inputs.html#air-distribution'>Air Distribution</a>) is used. + The supply ducts surface area in the given location. If 'auto' or not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.10.0/workflow_inputs.html#air-distribution'>Air Distribution</a>) is used. String ft^2 false @@ -3830,7 +3830,7 @@ ducts_supply_surface_area_fraction Ducts: Supply Area Fraction - The fraction of supply ducts surface area in the given location. Only used if Surface Area is not provided. If the fraction is less than 1, the remaining duct area is assumed to be in conditioned space. If auto or not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.8.1/workflow_inputs.html#air-distribution'>Air Distribution</a>) is used. + The fraction of supply ducts surface area in the given location. Only used if Surface Area is not provided. If the fraction is less than 1, the remaining duct area is assumed to be in conditioned space. If 'auto' or not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.10.0/workflow_inputs.html#air-distribution'>Air Distribution</a>) is used. String frac false @@ -3839,7 +3839,7 @@ ducts_supply_fraction_rectangular Ducts: Supply Fraction Rectangular - The fraction of supply ducts that are rectangular (as opposed to round); this affects the duct effective R-value used for modeling. If auto or not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.8.1/workflow_inputs.html#air-distribution'>Air Distribution</a>) is used. + The fraction of supply ducts that are rectangular (as opposed to round}; this affects the duct effective R-value used for modeling. If 'auto' or not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.10.0/workflow_inputs.html#air-distribution'>Air Distribution</a>) is used. String frac false @@ -3856,7 +3856,7 @@ ducts_return_location Ducts: Return Location - The location of the return ducts. If auto or not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.8.1/workflow_inputs.html#air-distribution'>Air Distribution</a>) is used. + The location of the return ducts. If 'auto' or not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.10.0/workflow_inputs.html#air-distribution'>Air Distribution</a>) is used. Choice false false @@ -3963,7 +3963,7 @@ ducts_return_buried_insulation_level Ducts: Return Buried Insulation Level - Whether the return ducts are buried in, e.g., attic loose-fill insulation. Partially buried ducts have insulation that does not cover the top of the ducts. Fully buried ducts have insulation that just covers the top of the ducts. Deeply buried ducts have insulation that continues above the top of the ducts. If auto or not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.8.1/workflow_inputs.html#air-distribution'>Air Distribution</a>) is used. + Whether the return ducts are buried in, e.g., attic loose-fill insulation. Partially buried ducts have insulation that does not cover the top of the ducts. Fully buried ducts have insulation that just covers the top of the ducts. Deeply buried ducts have insulation that continues above the top of the ducts. If 'auto' or not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.10.0/workflow_inputs.html#air-distribution'>Air Distribution</a>) is used. Choice false false @@ -3997,7 +3997,7 @@ ducts_return_surface_area Ducts: Return Surface Area - The return ducts surface area in the given location. If auto or not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.8.1/workflow_inputs.html#air-distribution'>Air Distribution</a>) is used. + The return ducts surface area in the given location. If 'auto' or not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.10.0/workflow_inputs.html#air-distribution'>Air Distribution</a>) is used. String ft^2 false @@ -4006,7 +4006,7 @@ ducts_return_surface_area_fraction Ducts: Return Area Fraction - The fraction of return ducts surface area in the given location. Only used if Surface Area is not provided. If the fraction is less than 1, the remaining duct area is assumed to be in conditioned space. If auto or not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.8.1/workflow_inputs.html#air-distribution'>Air Distribution</a>) is used. + The fraction of return ducts surface area in the given location. Only used if Surface Area is not provided. If the fraction is less than 1, the remaining duct area is assumed to be in conditioned space. If 'auto' or not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.10.0/workflow_inputs.html#air-distribution'>Air Distribution</a>) is used. String frac false @@ -4015,7 +4015,7 @@ ducts_number_of_return_registers Ducts: Number of Return Registers - The number of return registers of the ducts. Only used to calculate default return duct surface area. If auto or not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.8.1/workflow_inputs.html#air-distribution'>Air Distribution</a>) is used. + The number of return registers of the ducts. Only used to calculate default return duct surface area. If 'auto' or not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.10.0/workflow_inputs.html#air-distribution'>Air Distribution</a>) is used. String # false @@ -4024,7 +4024,7 @@ ducts_return_fraction_rectangular Ducts: Return Fraction Rectangular - The fraction of return ducts that are rectangular (as opposed to round); this affects the duct effective R-value used for modeling. If auto or not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.8.1/workflow_inputs.html#air-distribution'>Air Distribution</a>) is used. + The fraction of return ducts that are rectangular (as opposed to round}; this affects the duct effective R-value used for modeling. If 'auto' or not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.10.0/workflow_inputs.html#air-distribution'>Air Distribution</a>) is used. String frac false @@ -4071,7 +4071,7 @@ mech_vent_flow_rate Mechanical Ventilation: Flow Rate - The flow rate of the mechanical ventilation. If auto or not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.8.1/workflow_inputs.html#hpxml-mechanical-ventilation-fans'>HPXML Mechanical Ventilation Fans</a>) is used. + The flow rate of the mechanical ventilation. If 'auto' or not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.10.0/workflow_inputs.html#hpxml-mechanical-ventilation-fans'>HPXML Mechanical Ventilation Fans</a>) is used. String CFM false @@ -4080,7 +4080,7 @@ mech_vent_hours_in_operation Mechanical Ventilation: Hours In Operation - The hours in operation of the mechanical ventilation. If auto or not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.8.1/workflow_inputs.html#hpxml-mechanical-ventilation-fans'>HPXML Mechanical Ventilation Fans</a>) is used. + The hours in operation of the mechanical ventilation. If 'auto' or not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.10.0/workflow_inputs.html#hpxml-mechanical-ventilation-fans'>HPXML Mechanical Ventilation Fans</a>) is used. String hrs/day false @@ -4107,7 +4107,7 @@ mech_vent_total_recovery_efficiency Mechanical Ventilation: Total Recovery Efficiency - The Unadjusted or Adjusted total recovery efficiency of the mechanical ventilation. Applies to energy recovery ventilator. + The Unadjusted or Adjusted total recovery efficiency of the mechanical ventilation. Applies to energy recovery ventilator. If not provided, defaults to Unadjusted total recovery efficiency of 0.48. Double Frac false @@ -4116,7 +4116,7 @@ mech_vent_sensible_recovery_efficiency Mechanical Ventilation: Sensible Recovery Efficiency - The Unadjusted or Adjusted sensible recovery efficiency of the mechanical ventilation. Applies to energy recovery ventilator and heat recovery ventilator. + The Unadjusted or Adjusted sensible recovery efficiency of the mechanical ventilation. Applies to energy recovery ventilator and heat recovery ventilator. If not provided, defaults to Unadjusted sensible recovery efficiency of 0.72. Double Frac false @@ -4125,7 +4125,7 @@ mech_vent_fan_power Mechanical Ventilation: Fan Power - The fan power of the mechanical ventilation. If auto or not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.8.1/workflow_inputs.html#hpxml-mechanical-ventilation-fans'>HPXML Mechanical Ventilation Fans</a>) is used. + The fan power of the mechanical ventilation. If 'auto' or not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.10.0/workflow_inputs.html#hpxml-mechanical-ventilation-fans'>HPXML Mechanical Ventilation Fans</a>) is used. String W false @@ -4337,7 +4337,7 @@ kitchen_fans_quantity Kitchen Fans: Quantity - The quantity of the kitchen fans. If auto or not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.8.1/workflow_inputs.html#hpxml-local-ventilation-fans'>HPXML Local Ventilation Fans</a>) is used. + The quantity of the kitchen fans. If 'auto' or not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.10.0/workflow_inputs.html#hpxml-local-ventilation-fans'>HPXML Local Ventilation Fans</a>) is used. String # false @@ -4346,7 +4346,7 @@ kitchen_fans_flow_rate Kitchen Fans: Flow Rate - The flow rate of the kitchen fan. If auto or not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.8.1/workflow_inputs.html#hpxml-local-ventilation-fans'>HPXML Local Ventilation Fans</a>) is used. + The flow rate of the kitchen fan. If 'auto' or not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.10.0/workflow_inputs.html#hpxml-local-ventilation-fans'>HPXML Local Ventilation Fans</a>) is used. String CFM false @@ -4355,7 +4355,7 @@ kitchen_fans_hours_in_operation Kitchen Fans: Hours In Operation - The hours in operation of the kitchen fan. If auto or not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.8.1/workflow_inputs.html#hpxml-local-ventilation-fans'>HPXML Local Ventilation Fans</a>) is used. + The hours in operation of the kitchen fan. If 'auto' or not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.10.0/workflow_inputs.html#hpxml-local-ventilation-fans'>HPXML Local Ventilation Fans</a>) is used. String hrs/day false @@ -4364,7 +4364,7 @@ kitchen_fans_power Kitchen Fans: Fan Power - The fan power of the kitchen fan. If auto or not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.8.1/workflow_inputs.html#hpxml-local-ventilation-fans'>HPXML Local Ventilation Fans</a>) is used. + The fan power of the kitchen fan. If 'auto' or not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.10.0/workflow_inputs.html#hpxml-local-ventilation-fans'>HPXML Local Ventilation Fans</a>) is used. String W false @@ -4373,7 +4373,7 @@ kitchen_fans_start_hour Kitchen Fans: Start Hour - The start hour of the kitchen fan. If auto or not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.8.1/workflow_inputs.html#hpxml-local-ventilation-fans'>HPXML Local Ventilation Fans</a>) is used. + The start hour of the kitchen fan. If 'auto' or not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.10.0/workflow_inputs.html#hpxml-local-ventilation-fans'>HPXML Local Ventilation Fans</a>) is used. String hr false @@ -4382,7 +4382,7 @@ bathroom_fans_quantity Bathroom Fans: Quantity - The quantity of the bathroom fans. If auto or not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.8.1/workflow_inputs.html#hpxml-local-ventilation-fans'>HPXML Local Ventilation Fans</a>) is used. + The quantity of the bathroom fans. If 'auto' or not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.10.0/workflow_inputs.html#hpxml-local-ventilation-fans'>HPXML Local Ventilation Fans</a>) is used. String # false @@ -4391,7 +4391,7 @@ bathroom_fans_flow_rate Bathroom Fans: Flow Rate - The flow rate of the bathroom fans. If auto or not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.8.1/workflow_inputs.html#hpxml-local-ventilation-fans'>HPXML Local Ventilation Fans</a>) is used. + The flow rate of the bathroom fans. If 'auto' or not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.10.0/workflow_inputs.html#hpxml-local-ventilation-fans'>HPXML Local Ventilation Fans</a>) is used. String CFM false @@ -4400,7 +4400,7 @@ bathroom_fans_hours_in_operation Bathroom Fans: Hours In Operation - The hours in operation of the bathroom fans. If auto or not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.8.1/workflow_inputs.html#hpxml-local-ventilation-fans'>HPXML Local Ventilation Fans</a>) is used. + The hours in operation of the bathroom fans. If 'auto' or not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.10.0/workflow_inputs.html#hpxml-local-ventilation-fans'>HPXML Local Ventilation Fans</a>) is used. String hrs/day false @@ -4409,7 +4409,7 @@ bathroom_fans_power Bathroom Fans: Fan Power - The fan power of the bathroom fans. If auto or not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.8.1/workflow_inputs.html#hpxml-local-ventilation-fans'>HPXML Local Ventilation Fans</a>) is used. + The fan power of the bathroom fans. If 'auto' or not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.10.0/workflow_inputs.html#hpxml-local-ventilation-fans'>HPXML Local Ventilation Fans</a>) is used. String W false @@ -4418,7 +4418,7 @@ bathroom_fans_start_hour Bathroom Fans: Start Hour - The start hour of the bathroom fans. If auto or not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.8.1/workflow_inputs.html#hpxml-local-ventilation-fans'>HPXML Local Ventilation Fans</a>) is used. + The start hour of the bathroom fans. If 'auto' or not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.10.0/workflow_inputs.html#hpxml-local-ventilation-fans'>HPXML Local Ventilation Fans</a>) is used. String hr false @@ -4445,7 +4445,7 @@ whole_house_fan_flow_rate Whole House Fan: Flow Rate - The flow rate of the whole house fan. If auto or not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.8.1/workflow_inputs.html#hpxml-whole-house-fans'>HPXML Whole House Fans</a>) is used. + The flow rate of the whole house fan. If 'auto' or not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.10.0/workflow_inputs.html#hpxml-whole-house-fans'>HPXML Whole House Fans</a>) is used. String CFM false @@ -4454,7 +4454,7 @@ whole_house_fan_power Whole House Fan: Fan Power - The fan power of the whole house fan. If auto or not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.8.1/workflow_inputs.html#hpxml-whole-house-fans'>HPXML Whole House Fans</a>) is used. + The fan power of the whole house fan. If 'auto' or not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.10.0/workflow_inputs.html#hpxml-whole-house-fans'>HPXML Whole House Fans</a>) is used. String W false @@ -4531,7 +4531,7 @@ water_heater_location Water Heater: Location - The location of water heater. If auto or not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.8.1/workflow_inputs.html#hpxml-water-heating-systems'>HPXML Water Heating Systems</a>) is used. + The location of water heater. If 'auto' or not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.10.0/workflow_inputs.html#hpxml-water-heating-systems'>HPXML Water Heating Systems</a>) is used. Choice false false @@ -4609,7 +4609,7 @@ water_heater_tank_volume Water Heater: Tank Volume - Nominal volume of water heater tank. If auto or not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.8.1/workflow_inputs.html#conventional-storage'>Conventional Storage</a>, <a href='https://openstudio-hpxml.readthedocs.io/en/v1.8.1/workflow_inputs.html#heat-pump'>Heat Pump</a>, <a href='https://openstudio-hpxml.readthedocs.io/en/v1.8.1/workflow_inputs.html#combi-boiler-w-storage'>Combi Boiler w/ Storage</a>) is used. + Nominal volume of water heater tank. If 'auto' or not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.10.0/workflow_inputs.html#conventional-storage'>Conventional Storage</a>, <a href='https://openstudio-hpxml.readthedocs.io/en/v1.10.0/workflow_inputs.html#heat-pump'>Heat Pump</a>, <a href='https://openstudio-hpxml.readthedocs.io/en/v1.10.0/workflow_inputs.html#combi-boiler-w-storage'>Combi Boiler w/ Storage</a>) is used. String gal false @@ -4644,7 +4644,7 @@ water_heater_usage_bin Water Heater: Usage Bin - The usage of the water heater. Only applies if Efficiency Type is UniformEnergyFactor and Type is not instantaneous water heater. Does not apply to space-heating boilers. If auto or not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.8.1/workflow_inputs.html#conventional-storage'>Conventional Storage</a>, <a href='https://openstudio-hpxml.readthedocs.io/en/v1.8.1/workflow_inputs.html#heat-pump'>Heat Pump</a>) is used. + The usage of the water heater. Only applies if Efficiency Type is UniformEnergyFactor and Type is not instantaneous water heater. Does not apply to space-heating boilers. If 'auto' or not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.10.0/workflow_inputs.html#conventional-storage'>Conventional Storage</a>, <a href='https://openstudio-hpxml.readthedocs.io/en/v1.10.0/workflow_inputs.html#heat-pump'>Heat Pump</a>) is used. Choice false false @@ -4674,7 +4674,7 @@ water_heater_recovery_efficiency Water Heater: Recovery Efficiency - Ratio of energy delivered to water heater to the energy content of the fuel consumed by the water heater. Only used for non-electric storage water heaters. If auto or not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.8.1/workflow_inputs.html#conventional-storage'>Conventional Storage</a>) is used. + Ratio of energy delivered to water heater to the energy content of the fuel consumed by the water heater. Only used for non-electric storage water heaters. If 'auto' or not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.10.0/workflow_inputs.html#conventional-storage'>Conventional Storage</a>) is used. String Frac false @@ -4683,7 +4683,7 @@ water_heater_heating_capacity Water Heater: Heating Capacity - Heating capacity. Only applies to storage water heater and heat pump water heater (compressor). If auto or not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.8.1/workflow_inputs.html#conventional-storage'>Conventional Storage</a>, <a href='https://openstudio-hpxml.readthedocs.io/en/v1.8.1/workflow_inputs.html#heat-pump'>Heat Pump</a>) is used. + Heating capacity. Only applies to storage water heater and heat pump water heater (compressor}. If 'auto' or not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.10.0/workflow_inputs.html#conventional-storage'>Conventional Storage</a>, <a href='https://openstudio-hpxml.readthedocs.io/en/v1.10.0/workflow_inputs.html#heat-pump'>Heat Pump</a>) is used. String Btu/hr false @@ -4692,7 +4692,7 @@ water_heater_backup_heating_capacity Water Heater: Backup Heating Capacity - Backup heating capacity for a heat pump water heater. If auto or not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.8.1/workflow_inputs.html#heat-pump'>Heat Pump</a>) is used. + Backup heating capacity for a heat pump water heater. If 'auto' or not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.10.0/workflow_inputs.html#heat-pump'>Heat Pump</a>) is used. String Btu/hr false @@ -4701,7 +4701,7 @@ water_heater_standby_loss Water Heater: Standby Loss - The standby loss of water heater. Only applies to space-heating boilers. If auto or not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.8.1/workflow_inputs.html#combi-boiler-w-storage'>Combi Boiler w/ Storage</a>) is used. + The standby loss of water heater. Only applies to space-heating boilers. If 'auto' or not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.10.0/workflow_inputs.html#combi-boiler-w-storage'>Combi Boiler w/ Storage</a>) is used. String F/hr false @@ -4719,7 +4719,7 @@ water_heater_setpoint_temperature Water Heater: Setpoint Temperature - The setpoint temperature of water heater. If auto or not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.8.1/workflow_inputs.html#hpxml-water-heating-systems'>HPXML Water Heating Systems</a>) is used. + The setpoint temperature of water heater. If 'auto' or not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.10.0/workflow_inputs.html#hpxml-water-heating-systems'>HPXML Water Heating Systems</a>) is used. String F false @@ -4728,7 +4728,7 @@ water_heater_num_bedrooms_served Water Heater: Number of Bedrooms Served - Number of bedrooms served (directly or indirectly) by the water heater. Only needed if single-family attached or apartment unit and it is a shared water heater serving multiple dwelling units. Used to apportion water heater tank losses to the unit. + Number of bedrooms served (directly or indirectly} by the water heater. Only needed if single-family attached or apartment unit and it is a shared water heater serving multiple dwelling units. Used to apportion water heater tank losses to the unit. Integer # false @@ -4755,7 +4755,7 @@ water_heater_tank_model_type Water Heater: Tank Type - Type of tank model to use. The 'stratified' tank generally provide more accurate results, but may significantly increase run time. Applies only to storage water heater. If auto or not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.8.1/workflow_inputs.html#conventional-storage'>Conventional Storage</a>) is used. + Type of tank model to use. The 'stratified' tank generally provide more accurate results, but may significantly increase run time. Applies only to storage water heater. If 'auto' or not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.10.0/workflow_inputs.html#conventional-storage'>Conventional Storage</a>) is used. Choice false false @@ -4777,7 +4777,7 @@ water_heater_operating_mode Water Heater: Operating Mode - The water heater operating mode. The 'heat pump only' option only uses the heat pump, while 'hybrid/auto' allows the backup electric resistance to come on in high demand situations. This is ignored if a scheduled operating mode type is selected. Applies only to heat pump water heater. If auto or not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.8.1/workflow_inputs.html#heat-pump'>Heat Pump</a>) is used. + The water heater operating mode. The 'heat pump only' option only uses the heat pump, while 'hybrid/auto' allows the backup electric resistance to come on in high demand situations. This is ignored if a scheduled operating mode type is selected. Applies only to heat pump water heater. If 'auto' or not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.10.0/workflow_inputs.html#heat-pump'>Heat Pump</a>) is used. Choice false false @@ -4817,7 +4817,7 @@ hot_water_distribution_standard_piping_length Hot Water Distribution: Standard Piping Length - If the distribution system is Standard, the length of the piping. If auto or not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.8.1/workflow_inputs.html#standard'>Standard</a>) is used. + If the distribution system is Standard, the length of the piping. If 'auto' or not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.10.0/workflow_inputs.html#standard'>Standard</a>) is used. String ft false @@ -4856,7 +4856,7 @@ hot_water_distribution_recirc_piping_length Hot Water Distribution: Recirculation Piping Length - If the distribution system is Recirculation, the length of the recirculation piping. If auto or not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.8.1/workflow_inputs.html#recirculation-in-unit'>Recirculation (In-Unit)</a>) is used. + If the distribution system is Recirculation, the length of the recirculation piping. If 'auto' or not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.10.0/workflow_inputs.html#recirculation-in-unit'>Recirculation (In-Unit}</a>) is used. String ft false @@ -4865,7 +4865,7 @@ hot_water_distribution_recirc_branch_piping_length Hot Water Distribution: Recirculation Branch Piping Length - If the distribution system is Recirculation, the length of the recirculation branch piping. If auto or not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.8.1/workflow_inputs.html#recirculation-in-unit'>Recirculation (In-Unit)</a>) is used. + If the distribution system is Recirculation, the length of the recirculation branch piping. If 'auto' or not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.10.0/workflow_inputs.html#recirculation-in-unit'>Recirculation (In-Unit}</a>) is used. String ft false @@ -4874,7 +4874,7 @@ hot_water_distribution_recirc_pump_power Hot Water Distribution: Recirculation Pump Power - If the distribution system is Recirculation, the recirculation pump power. If auto or not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.8.1/workflow_inputs.html#recirculation-in-unit'>Recirculation (In-Unit)</a>) is used. + If the distribution system is Recirculation, the recirculation pump power. If 'auto' or not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.10.0/workflow_inputs.html#recirculation-in-unit'>Recirculation (In-Unit}</a>) is used. String W false @@ -4883,7 +4883,7 @@ hot_water_distribution_pipe_r Hot Water Distribution: Pipe Insulation Nominal R-Value - Nominal R-value of the pipe insulation. If auto or not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.8.1/workflow_inputs.html#hpxml-hot-water-distribution'>HPXML Hot Water Distribution</a>) is used. + Nominal R-value of the pipe insulation. If 'auto' or not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.10.0/workflow_inputs.html#hpxml-hot-water-distribution'>HPXML Hot Water Distribution</a>) is used. String h-ft^2-R/Btu false @@ -4977,7 +4977,7 @@ water_fixtures_usage_multiplier Hot Water Fixtures: Usage Multiplier - Multiplier on the hot water usage that can reflect, e.g., high/low usage occupants. If auto or not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.8.1/workflow_inputs.html#hpxml-water-fixtures'>HPXML Water Fixtures</a>) is used. + Multiplier on the hot water usage that can reflect, e.g., high/low usage occupants. If 'auto' or not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.10.0/workflow_inputs.html#hpxml-water-fixtures'>HPXML Water Fixtures</a>) is used. String false false @@ -4985,7 +4985,7 @@ general_water_use_usage_multiplier General Water Use: Usage Multiplier - Multiplier on internal gains from general water use (floor mopping, shower evaporation, water films on showers, tubs & sinks surfaces, plant watering, etc.) that can reflect, e.g., high/low usage occupants. If auto or not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.8.1/workflow_inputs.html#hpxml-building-occupancy'>HPXML Building Occupancy</a>) is used. + Multiplier on internal gains from general water use (floor mopping, shower evaporation, water films on showers, tubs & sinks surfaces, plant watering, etc.} that can reflect, e.g., high/low usage occupants. If 'auto' or not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.10.0/workflow_inputs.html#hpxml-building-occupancy'>HPXML Building Occupancy</a>) is used. String false false @@ -5068,7 +5068,7 @@ solar_thermal_collector_azimuth Solar Thermal: Collector Azimuth - The collector azimuth of the solar thermal system. Azimuth is measured clockwise from north (e.g., North=0, East=90, South=180, West=270). + The collector azimuth of the solar thermal system. Azimuth is measured clockwise from north (e.g., North=0, East=90, South=180, West=270}. Double degrees false @@ -5104,7 +5104,7 @@ solar_thermal_storage_volume Solar Thermal: Storage Volume - The storage volume of the solar thermal system. If auto or not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.8.1/workflow_inputs.html#detailed-inputs'>Detailed Inputs</a>) is used. + The storage volume of the solar thermal system. If 'auto' or not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.10.0/workflow_inputs.html#detailed-inputs'>Detailed Inputs</a>) is used. String gal false @@ -5140,7 +5140,7 @@ pv_system_module_type PV System: Module Type - Module type of the PV system. If auto or not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.8.1/workflow_inputs.html#hpxml-photovoltaics'>HPXML Photovoltaics</a>) is used. + Module type of the PV system. If 'auto' or not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.10.0/workflow_inputs.html#hpxml-photovoltaics'>HPXML Photovoltaics</a>) is used. Choice false false @@ -5166,7 +5166,7 @@ pv_system_location PV System: Location - Location of the PV system. If auto or not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.8.1/workflow_inputs.html#hpxml-photovoltaics'>HPXML Photovoltaics</a>) is used. + Location of the PV system. If 'auto' or not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.10.0/workflow_inputs.html#hpxml-photovoltaics'>HPXML Photovoltaics</a>) is used. Choice false false @@ -5188,7 +5188,7 @@ pv_system_tracking PV System: Tracking - Type of tracking for the PV system. If auto or not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.8.1/workflow_inputs.html#hpxml-photovoltaics'>HPXML Photovoltaics</a>) is used. + Type of tracking for the PV system. If 'auto' or not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.10.0/workflow_inputs.html#hpxml-photovoltaics'>HPXML Photovoltaics</a>) is used. Choice false false @@ -5218,7 +5218,7 @@ pv_system_array_azimuth PV System: Array Azimuth - Array azimuth of the PV system. Azimuth is measured clockwise from north (e.g., North=0, East=90, South=180, West=270). + Array azimuth of the PV system. Azimuth is measured clockwise from north (e.g., North=0, East=90, South=180, West=270}. Double degrees false @@ -5245,7 +5245,7 @@ pv_system_inverter_efficiency PV System: Inverter Efficiency - Inverter efficiency of the PV system. If there are two PV systems, this will apply to both. If auto or not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.8.1/workflow_inputs.html#hpxml-photovoltaics'>HPXML Photovoltaics</a>) is used. + Inverter efficiency of the PV system. If there are two PV systems, this will apply to both. If 'auto' or not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.10.0/workflow_inputs.html#hpxml-photovoltaics'>HPXML Photovoltaics</a>) is used. String Frac false @@ -5254,7 +5254,7 @@ pv_system_system_losses_fraction PV System: System Losses Fraction - System losses fraction of the PV system. If there are two PV systems, this will apply to both. If auto or not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.8.1/workflow_inputs.html#hpxml-photovoltaics'>HPXML Photovoltaics</a>) is used. + System losses fraction of the PV system. If there are two PV systems, this will apply to both. If 'auto' or not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.10.0/workflow_inputs.html#hpxml-photovoltaics'>HPXML Photovoltaics</a>) is used. String Frac false @@ -5290,7 +5290,7 @@ pv_system_2_module_type PV System 2: Module Type - Module type of the second PV system. If auto or not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.8.1/workflow_inputs.html#hpxml-photovoltaics'>HPXML Photovoltaics</a>) is used. + Module type of the second PV system. If 'auto' or not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.10.0/workflow_inputs.html#hpxml-photovoltaics'>HPXML Photovoltaics</a>) is used. Choice false false @@ -5320,7 +5320,7 @@ pv_system_2_location PV System 2: Location - Location of the second PV system. If auto or not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.8.1/workflow_inputs.html#hpxml-photovoltaics'>HPXML Photovoltaics</a>) is used. + Location of the second PV system. If 'auto' or not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.10.0/workflow_inputs.html#hpxml-photovoltaics'>HPXML Photovoltaics</a>) is used. Choice false false @@ -5346,7 +5346,7 @@ pv_system_2_tracking PV System 2: Tracking - Type of tracking for the second PV system. If auto or not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.8.1/workflow_inputs.html#hpxml-photovoltaics'>HPXML Photovoltaics</a>) is used. + Type of tracking for the second PV system. If 'auto' or not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.10.0/workflow_inputs.html#hpxml-photovoltaics'>HPXML Photovoltaics</a>) is used. Choice false false @@ -5380,7 +5380,7 @@ pv_system_2_array_azimuth PV System 2: Array Azimuth - Array azimuth of the second PV system. Azimuth is measured clockwise from north (e.g., North=0, East=90, South=180, West=270). + Array azimuth of the second PV system. Azimuth is measured clockwise from north (e.g., North=0, East=90, South=180, West=270}. Double degrees false @@ -5425,7 +5425,7 @@ battery_location Battery: Location - The space type for the lithium ion battery location. If auto or not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.8.1/workflow_inputs.html#hpxml-batteries'>HPXML Batteries</a>) is used. + The space type for the lithium ion battery location. If 'auto' or not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.10.0/workflow_inputs.html#hpxml-batteries'>HPXML Batteries</a>) is used. Choice false false @@ -5487,7 +5487,7 @@ battery_power Battery: Rated Power Output - The rated power output of the lithium ion battery. If auto or not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.8.1/workflow_inputs.html#hpxml-batteries'>HPXML Batteries</a>) is used. + The rated power output of the lithium ion battery. If 'auto' or not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.10.0/workflow_inputs.html#hpxml-batteries'>HPXML Batteries</a>) is used. String W false @@ -5496,7 +5496,7 @@ battery_capacity Battery: Nominal Capacity - The nominal capacity of the lithium ion battery. If auto or not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.8.1/workflow_inputs.html#hpxml-batteries'>HPXML Batteries</a>) is used. + The nominal capacity of the lithium ion battery. If 'auto' or not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.10.0/workflow_inputs.html#hpxml-batteries'>HPXML Batteries</a>) is used. String kWh false @@ -5505,7 +5505,7 @@ battery_usable_capacity Battery: Usable Capacity - The usable capacity of the lithium ion battery. If auto or not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.8.1/workflow_inputs.html#hpxml-batteries'>HPXML Batteries</a>) is used. + The usable capacity of the lithium ion battery. If 'auto' or not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.10.0/workflow_inputs.html#hpxml-batteries'>HPXML Batteries</a>) is used. String kWh false @@ -5514,7 +5514,7 @@ battery_round_trip_efficiency Battery: Round Trip Efficiency - The round trip efficiency of the lithium ion battery. If auto or not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.8.1/workflow_inputs.html#hpxml-batteries'>HPXML Batteries</a>) is used. + The round trip efficiency of the lithium ion battery. If 'auto' or not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.10.0/workflow_inputs.html#hpxml-batteries'>HPXML Batteries</a>) is used. String Frac false @@ -5550,7 +5550,7 @@ lighting_interior_fraction_cfl Lighting: Interior Fraction CFL - Fraction of all lamps (interior) that are compact fluorescent. Lighting not specified as CFL, LFL, or LED is assumed to be incandescent. + Fraction of all lamps (interior} that are compact fluorescent. Lighting not specified as CFL, LFL, or LED is assumed to be incandescent. If not provided, defaults to 0.1. Double false false @@ -5558,7 +5558,7 @@ lighting_interior_fraction_lfl Lighting: Interior Fraction LFL - Fraction of all lamps (interior) that are linear fluorescent. Lighting not specified as CFL, LFL, or LED is assumed to be incandescent. + Fraction of all lamps (interior} that are linear fluorescent. Lighting not specified as CFL, LFL, or LED is assumed to be incandescent. If not provided, defaults to 0.0. Double false false @@ -5566,7 +5566,7 @@ lighting_interior_fraction_led Lighting: Interior Fraction LED - Fraction of all lamps (interior) that are light emitting diodes. Lighting not specified as CFL, LFL, or LED is assumed to be incandescent. + Fraction of all lamps (interior} that are light emitting diodes. Lighting not specified as CFL, LFL, or LED is assumed to be incandescent. If not provided, defaults to 0.0. Double false false @@ -5574,7 +5574,7 @@ lighting_interior_usage_multiplier Lighting: Interior Usage Multiplier - Multiplier on the lighting energy usage (interior) that can reflect, e.g., high/low usage occupants. If auto or not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.8.1/workflow_inputs.html#hpxml-lighting'>HPXML Lighting</a>) is used. + Multiplier on the lighting energy usage (interior} that can reflect, e.g., high/low usage occupants. If 'auto' or not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.10.0/workflow_inputs.html#hpxml-lighting'>HPXML Lighting</a>) is used. String false false @@ -5582,7 +5582,7 @@ lighting_exterior_fraction_cfl Lighting: Exterior Fraction CFL - Fraction of all lamps (exterior) that are compact fluorescent. Lighting not specified as CFL, LFL, or LED is assumed to be incandescent. + Fraction of all lamps (exterior} that are compact fluorescent. Lighting not specified as CFL, LFL, or LED is assumed to be incandescent. If not provided, defaults to 0.0. Double false false @@ -5590,7 +5590,7 @@ lighting_exterior_fraction_lfl Lighting: Exterior Fraction LFL - Fraction of all lamps (exterior) that are linear fluorescent. Lighting not specified as CFL, LFL, or LED is assumed to be incandescent. + Fraction of all lamps (exterior} that are linear fluorescent. Lighting not specified as CFL, LFL, or LED is assumed to be incandescent. If not provided, defaults to 0.0. Double false false @@ -5598,7 +5598,7 @@ lighting_exterior_fraction_led Lighting: Exterior Fraction LED - Fraction of all lamps (exterior) that are light emitting diodes. Lighting not specified as CFL, LFL, or LED is assumed to be incandescent. + Fraction of all lamps (exterior} that are light emitting diodes. Lighting not specified as CFL, LFL, or LED is assumed to be incandescent. If not provided, defaults to 0.0. Double false false @@ -5606,7 +5606,7 @@ lighting_exterior_usage_multiplier Lighting: Exterior Usage Multiplier - Multiplier on the lighting energy usage (exterior) that can reflect, e.g., high/low usage occupants. If auto or not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.8.1/workflow_inputs.html#hpxml-lighting'>HPXML Lighting</a>) is used. + Multiplier on the lighting energy usage (exterior} that can reflect, e.g., high/low usage occupants. If 'auto' or not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.10.0/workflow_inputs.html#hpxml-lighting'>HPXML Lighting</a>) is used. String false false @@ -5614,7 +5614,7 @@ lighting_garage_fraction_cfl Lighting: Garage Fraction CFL - Fraction of all lamps (garage) that are compact fluorescent. Lighting not specified as CFL, LFL, or LED is assumed to be incandescent. + Fraction of all lamps (garage} that are compact fluorescent. Lighting not specified as CFL, LFL, or LED is assumed to be incandescent. If not provided, defaults to 0.0. Double false false @@ -5622,7 +5622,7 @@ lighting_garage_fraction_lfl Lighting: Garage Fraction LFL - Fraction of all lamps (garage) that are linear fluorescent. Lighting not specified as CFL, LFL, or LED is assumed to be incandescent. + Fraction of all lamps (garage} that are linear fluorescent. Lighting not specified as CFL, LFL, or LED is assumed to be incandescent. If not provided, defaults to 0.0. Double false false @@ -5630,7 +5630,7 @@ lighting_garage_fraction_led Lighting: Garage Fraction LED - Fraction of all lamps (garage) that are light emitting diodes. Lighting not specified as CFL, LFL, or LED is assumed to be incandescent. + Fraction of all lamps (garage} that are light emitting diodes. Lighting not specified as CFL, LFL, or LED is assumed to be incandescent. If not provided, defaults to 0.0. Double false false @@ -5638,7 +5638,7 @@ lighting_garage_usage_multiplier Lighting: Garage Usage Multiplier - Multiplier on the lighting energy usage (garage) that can reflect, e.g., high/low usage occupants. If auto or not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.8.1/workflow_inputs.html#hpxml-lighting'>HPXML Lighting</a>) is used. + Multiplier on the lighting energy usage (garage} that can reflect, e.g., high/low usage occupants. If 'auto' or not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.10.0/workflow_inputs.html#hpxml-lighting'>HPXML Lighting</a>) is used. String false false @@ -5664,7 +5664,7 @@ holiday_lighting_daily_kwh Holiday Lighting: Daily Consumption - The daily energy consumption for holiday lighting (exterior). If auto or not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.8.1/workflow_inputs.html#hpxml-lighting'>HPXML Lighting</a>) is used. + The daily energy consumption for holiday lighting (exterior}. If 'auto' or not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.10.0/workflow_inputs.html#hpxml-lighting'>HPXML Lighting</a>) is used. String kWh/day false @@ -5673,7 +5673,7 @@ holiday_lighting_period Holiday Lighting: Period - Enter a date range like 'Nov 25 - Jan 5'. If auto or not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.8.1/workflow_inputs.html#hpxml-lighting'>HPXML Lighting</a>) is used. + Enter a date range like 'Nov 25 - Jan 5'. If 'auto' or not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.10.0/workflow_inputs.html#hpxml-lighting'>HPXML Lighting</a>) is used. String false false @@ -5730,7 +5730,7 @@ dehumidifier_capacity Dehumidifier: Capacity - The capacity (water removal rate) of the dehumidifier. + The capacity (water removal rate} of the dehumidifier. Double pint/day false @@ -5775,7 +5775,7 @@ clothes_washer_location Clothes Washer: Location - The space type for the clothes washer location. If auto or not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.8.1/workflow_inputs.html#hpxml-clothes-washer'>HPXML Clothes Washer</a>) is used. + The space type for the clothes washer location. If 'auto' or not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.10.0/workflow_inputs.html#hpxml-clothes-washer'>HPXML Clothes Washer</a>) is used. Choice false false @@ -5839,7 +5839,7 @@ clothes_washer_efficiency Clothes Washer: Efficiency - The efficiency of the clothes washer. If auto or not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.8.1/workflow_inputs.html#hpxml-clothes-washer'>HPXML Clothes Washer</a>) is used. + The efficiency of the clothes washer. If 'auto' or not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.10.0/workflow_inputs.html#hpxml-clothes-washer'>HPXML Clothes Washer</a>) is used. String ft^3/kWh-cyc false @@ -5848,7 +5848,7 @@ clothes_washer_rated_annual_kwh Clothes Washer: Rated Annual Consumption - The annual energy consumed by the clothes washer, as rated, obtained from the EnergyGuide label. This includes both the appliance electricity consumption and the energy required for water heating. If auto or not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.8.1/workflow_inputs.html#hpxml-clothes-washer'>HPXML Clothes Washer</a>) is used. + The annual energy consumed by the clothes washer, as rated, obtained from the EnergyGuide label. This includes both the appliance electricity consumption and the energy required for water heating. If 'auto' or not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.10.0/workflow_inputs.html#hpxml-clothes-washer'>HPXML Clothes Washer</a>) is used. String kWh/yr false @@ -5857,7 +5857,7 @@ clothes_washer_label_electric_rate Clothes Washer: Label Electric Rate - The annual energy consumed by the clothes washer, as rated, obtained from the EnergyGuide label. This includes both the appliance electricity consumption and the energy required for water heating. If auto or not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.8.1/workflow_inputs.html#hpxml-clothes-washer'>HPXML Clothes Washer</a>) is used. + The annual energy consumed by the clothes washer, as rated, obtained from the EnergyGuide label. This includes both the appliance electricity consumption and the energy required for water heating. If 'auto' or not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.10.0/workflow_inputs.html#hpxml-clothes-washer'>HPXML Clothes Washer</a>) is used. String $/kWh false @@ -5866,7 +5866,7 @@ clothes_washer_label_gas_rate Clothes Washer: Label Gas Rate - The annual energy consumed by the clothes washer, as rated, obtained from the EnergyGuide label. This includes both the appliance electricity consumption and the energy required for water heating. If auto or not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.8.1/workflow_inputs.html#hpxml-clothes-washer'>HPXML Clothes Washer</a>) is used. + The annual energy consumed by the clothes washer, as rated, obtained from the EnergyGuide label. This includes both the appliance electricity consumption and the energy required for water heating. If 'auto' or not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.10.0/workflow_inputs.html#hpxml-clothes-washer'>HPXML Clothes Washer</a>) is used. String $/therm false @@ -5875,7 +5875,7 @@ clothes_washer_label_annual_gas_cost Clothes Washer: Label Annual Cost with Gas DHW - The annual cost of using the system under test conditions. Input is obtained from the EnergyGuide label. If auto or not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.8.1/workflow_inputs.html#hpxml-clothes-washer'>HPXML Clothes Washer</a>) is used. + The annual cost of using the system under test conditions. Input is obtained from the EnergyGuide label. If 'auto' or not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.10.0/workflow_inputs.html#hpxml-clothes-washer'>HPXML Clothes Washer</a>) is used. String $ false @@ -5884,7 +5884,7 @@ clothes_washer_label_usage Clothes Washer: Label Usage - The clothes washer loads per week. If auto or not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.8.1/workflow_inputs.html#hpxml-clothes-washer'>HPXML Clothes Washer</a>) is used. + The clothes washer loads per week. If 'auto' or not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.10.0/workflow_inputs.html#hpxml-clothes-washer'>HPXML Clothes Washer</a>) is used. String cyc/wk false @@ -5893,7 +5893,7 @@ clothes_washer_capacity Clothes Washer: Drum Volume - Volume of the washer drum. Obtained from the EnergyStar website or the manufacturer's literature. If auto or not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.8.1/workflow_inputs.html#hpxml-clothes-washer'>HPXML Clothes Washer</a>) is used. + Volume of the washer drum. Obtained from the EnergyStar website or the manufacturer's literature. If 'auto' or not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.10.0/workflow_inputs.html#hpxml-clothes-washer'>HPXML Clothes Washer</a>) is used. String ft^3 false @@ -5902,7 +5902,7 @@ clothes_washer_usage_multiplier Clothes Washer: Usage Multiplier - Multiplier on the clothes washer energy and hot water usage that can reflect, e.g., high/low usage occupants. If auto or not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.8.1/workflow_inputs.html#hpxml-clothes-washer'>HPXML Clothes Washer</a>) is used. + Multiplier on the clothes washer energy and hot water usage that can reflect, e.g., high/low usage occupants. If 'auto' or not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.10.0/workflow_inputs.html#hpxml-clothes-washer'>HPXML Clothes Washer</a>) is used. String false false @@ -5928,7 +5928,7 @@ clothes_dryer_location Clothes Dryer: Location - The space type for the clothes dryer location. If auto or not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.8.1/workflow_inputs.html#hpxml-clothes-dryer'>HPXML Clothes Dryer</a>) is used. + The space type for the clothes dryer location. If 'auto' or not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.10.0/workflow_inputs.html#hpxml-clothes-dryer'>HPXML Clothes Dryer</a>) is used. Choice false false @@ -6030,7 +6030,7 @@ clothes_dryer_efficiency Clothes Dryer: Efficiency - The efficiency of the clothes dryer. If auto or not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.8.1/workflow_inputs.html#hpxml-clothes-dryer'>HPXML Clothes Dryer</a>) is used. + The efficiency of the clothes dryer. If 'auto' or not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.10.0/workflow_inputs.html#hpxml-clothes-dryer'>HPXML Clothes Dryer</a>) is used. String lb/kWh false @@ -6039,7 +6039,7 @@ clothes_dryer_vented_flow_rate Clothes Dryer: Vented Flow Rate - The exhaust flow rate of the vented clothes dryer. If auto or not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.8.1/workflow_inputs.html#hpxml-clothes-dryer'>HPXML Clothes Dryer</a>) is used. + The exhaust flow rate of the vented clothes dryer. If 'auto' or not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.10.0/workflow_inputs.html#hpxml-clothes-dryer'>HPXML Clothes Dryer</a>) is used. String CFM false @@ -6048,7 +6048,7 @@ clothes_dryer_usage_multiplier Clothes Dryer: Usage Multiplier - Multiplier on the clothes dryer energy usage that can reflect, e.g., high/low usage occupants. If auto or not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.8.1/workflow_inputs.html#hpxml-clothes-dryer'>HPXML Clothes Dryer</a>) is used. + Multiplier on the clothes dryer energy usage that can reflect, e.g., high/low usage occupants. If 'auto' or not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.10.0/workflow_inputs.html#hpxml-clothes-dryer'>HPXML Clothes Dryer</a>) is used. String false false @@ -6074,7 +6074,7 @@ dishwasher_location Dishwasher: Location - The space type for the dishwasher location. If auto or not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.8.1/workflow_inputs.html#hpxml-dishwasher'>HPXML Dishwasher</a>) is used. + The space type for the dishwasher location. If 'auto' or not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.10.0/workflow_inputs.html#hpxml-dishwasher'>HPXML Dishwasher</a>) is used. Choice false false @@ -6146,7 +6146,7 @@ dishwasher_efficiency Dishwasher: Efficiency - The efficiency of the dishwasher. If auto or not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.8.1/workflow_inputs.html#hpxml-dishwasher'>HPXML Dishwasher</a>) is used. + The efficiency of the dishwasher. If 'auto' or not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.10.0/workflow_inputs.html#hpxml-dishwasher'>HPXML Dishwasher</a>) is used. String RatedAnnualkWh or EnergyFactor false @@ -6155,7 +6155,7 @@ dishwasher_label_electric_rate Dishwasher: Label Electric Rate - The label electric rate of the dishwasher. If auto or not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.8.1/workflow_inputs.html#hpxml-dishwasher'>HPXML Dishwasher</a>) is used. + The label electric rate of the dishwasher. If 'auto' or not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.10.0/workflow_inputs.html#hpxml-dishwasher'>HPXML Dishwasher</a>) is used. String $/kWh false @@ -6164,7 +6164,7 @@ dishwasher_label_gas_rate Dishwasher: Label Gas Rate - The label gas rate of the dishwasher. If auto or not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.8.1/workflow_inputs.html#hpxml-dishwasher'>HPXML Dishwasher</a>) is used. + The label gas rate of the dishwasher. If 'auto' or not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.10.0/workflow_inputs.html#hpxml-dishwasher'>HPXML Dishwasher</a>) is used. String $/therm false @@ -6173,7 +6173,7 @@ dishwasher_label_annual_gas_cost Dishwasher: Label Annual Gas Cost - The label annual gas cost of the dishwasher. If auto or not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.8.1/workflow_inputs.html#hpxml-dishwasher'>HPXML Dishwasher</a>) is used. + The label annual gas cost of the dishwasher. If 'auto' or not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.10.0/workflow_inputs.html#hpxml-dishwasher'>HPXML Dishwasher</a>) is used. String $ false @@ -6182,7 +6182,7 @@ dishwasher_label_usage Dishwasher: Label Usage - The dishwasher loads per week. If auto or not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.8.1/workflow_inputs.html#hpxml-dishwasher'>HPXML Dishwasher</a>) is used. + The dishwasher loads per week. If 'auto' or not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.10.0/workflow_inputs.html#hpxml-dishwasher'>HPXML Dishwasher</a>) is used. String cyc/wk false @@ -6191,7 +6191,7 @@ dishwasher_place_setting_capacity Dishwasher: Number of Place Settings - The number of place settings for the unit. Data obtained from manufacturer's literature. If auto or not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.8.1/workflow_inputs.html#hpxml-dishwasher'>HPXML Dishwasher</a>) is used. + The number of place settings for the unit. Data obtained from manufacturer's literature. If 'auto' or not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.10.0/workflow_inputs.html#hpxml-dishwasher'>HPXML Dishwasher</a>) is used. String # false @@ -6200,7 +6200,7 @@ dishwasher_usage_multiplier Dishwasher: Usage Multiplier - Multiplier on the dishwasher energy usage that can reflect, e.g., high/low usage occupants. If auto or not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.8.1/workflow_inputs.html#hpxml-dishwasher'>HPXML Dishwasher</a>) is used. + Multiplier on the dishwasher energy usage that can reflect, e.g., high/low usage occupants. If 'auto' or not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.10.0/workflow_inputs.html#hpxml-dishwasher'>HPXML Dishwasher</a>) is used. String false false @@ -6226,7 +6226,7 @@ refrigerator_location Refrigerator: Location - The space type for the refrigerator location. If auto or not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.8.1/workflow_inputs.html#hpxml-refrigerators'>HPXML Refrigerators</a>) is used. + The space type for the refrigerator location. If 'auto' or not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.10.0/workflow_inputs.html#hpxml-refrigerators'>HPXML Refrigerators</a>) is used. Choice false false @@ -6284,7 +6284,7 @@ refrigerator_rated_annual_kwh Refrigerator: Rated Annual Consumption - The EnergyGuide rated annual energy consumption for a refrigerator. If auto or not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.8.1/workflow_inputs.html#hpxml-refrigerators'>HPXML Refrigerators</a>) is used. + The EnergyGuide rated annual energy consumption for a refrigerator. If 'auto' or not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.10.0/workflow_inputs.html#hpxml-refrigerators'>HPXML Refrigerators</a>) is used. String kWh/yr false @@ -6293,7 +6293,7 @@ refrigerator_usage_multiplier Refrigerator: Usage Multiplier - Multiplier on the refrigerator energy usage that can reflect, e.g., high/low usage occupants. If auto or not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.8.1/workflow_inputs.html#hpxml-refrigerators'>HPXML Refrigerators</a>) is used. + Multiplier on the refrigerator energy usage that can reflect, e.g., high/low usage occupants. If 'auto' or not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.10.0/workflow_inputs.html#hpxml-refrigerators'>HPXML Refrigerators</a>) is used. String false false @@ -6319,7 +6319,7 @@ extra_refrigerator_location Extra Refrigerator: Location - The space type for the extra refrigerator location. If auto or not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.8.1/workflow_inputs.html#hpxml-refrigerators'>HPXML Refrigerators</a>) is used. + The space type for the extra refrigerator location. If 'auto' or not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.10.0/workflow_inputs.html#hpxml-refrigerators'>HPXML Refrigerators</a>) is used. Choice false false @@ -6381,7 +6381,7 @@ extra_refrigerator_rated_annual_kwh Extra Refrigerator: Rated Annual Consumption - The EnergyGuide rated annual energy consumption for an extra refrigerator. If auto or not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.8.1/workflow_inputs.html#hpxml-refrigerators'>HPXML Refrigerators</a>) is used. + The EnergyGuide rated annual energy consumption for an extra refrigerator. If 'auto' or not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.10.0/workflow_inputs.html#hpxml-refrigerators'>HPXML Refrigerators</a>) is used. String kWh/yr false @@ -6390,7 +6390,7 @@ extra_refrigerator_usage_multiplier Extra Refrigerator: Usage Multiplier - Multiplier on the extra refrigerator energy usage that can reflect, e.g., high/low usage occupants. If auto or not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.8.1/workflow_inputs.html#hpxml-refrigerators'>HPXML Refrigerators</a>) is used. + Multiplier on the extra refrigerator energy usage that can reflect, e.g., high/low usage occupants. If 'auto' or not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.10.0/workflow_inputs.html#hpxml-refrigerators'>HPXML Refrigerators</a>) is used. String false false @@ -6416,7 +6416,7 @@ freezer_location Freezer: Location - The space type for the freezer location. If auto or not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.8.1/workflow_inputs.html#hpxml-freezers'>HPXML Freezers</a>) is used. + The space type for the freezer location. If 'auto' or not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.10.0/workflow_inputs.html#hpxml-freezers'>HPXML Freezers</a>) is used. Choice false false @@ -6482,7 +6482,7 @@ freezer_rated_annual_kwh Freezer: Rated Annual Consumption - The EnergyGuide rated annual energy consumption for a freezer. If auto or not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.8.1/workflow_inputs.html#hpxml-freezers'>HPXML Freezers</a>) is used. + The EnergyGuide rated annual energy consumption for a freezer. If 'auto' or not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.10.0/workflow_inputs.html#hpxml-freezers'>HPXML Freezers</a>) is used. String kWh/yr false @@ -6491,7 +6491,7 @@ freezer_usage_multiplier Freezer: Usage Multiplier - Multiplier on the freezer energy usage that can reflect, e.g., high/low usage occupants. If auto or not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.8.1/workflow_inputs.html#hpxml-freezers'>HPXML Freezers</a>) is used. + Multiplier on the freezer energy usage that can reflect, e.g., high/low usage occupants. If 'auto' or not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.10.0/workflow_inputs.html#hpxml-freezers'>HPXML Freezers</a>) is used. String false false @@ -6517,7 +6517,7 @@ cooking_range_oven_location Cooking Range/Oven: Location - The space type for the cooking range/oven location. If auto or not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.8.1/workflow_inputs.html#hpxml-cooking-range-oven'>HPXML Cooking Range/Oven</a>) is used. + The space type for the cooking range/oven location. If 'auto' or not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.10.0/workflow_inputs.html#hpxml-cooking-range-oven'>HPXML Cooking Range/Oven</a>) is used. Choice false false @@ -6621,7 +6621,7 @@ cooking_range_oven_is_induction Cooking Range/Oven: Is Induction - Whether the cooking range is induction. If auto or not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.8.1/workflow_inputs.html#hpxml-cooking-range-oven'>HPXML Cooking Range/Oven</a>) is used. + Whether the cooking range is induction. If 'auto' or not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.10.0/workflow_inputs.html#hpxml-cooking-range-oven'>HPXML Cooking Range/Oven</a>) is used. Choice false false @@ -6643,7 +6643,7 @@ cooking_range_oven_is_convection Cooking Range/Oven: Is Convection - Whether the oven is convection. If auto or not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.8.1/workflow_inputs.html#hpxml-cooking-range-oven'>HPXML Cooking Range/Oven</a>) is used. + Whether the oven is convection. If 'auto' or not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.10.0/workflow_inputs.html#hpxml-cooking-range-oven'>HPXML Cooking Range/Oven</a>) is used. Choice false false @@ -6665,7 +6665,7 @@ cooking_range_oven_usage_multiplier Cooking Range/Oven: Usage Multiplier - Multiplier on the cooking range/oven energy usage that can reflect, e.g., high/low usage occupants. If auto or not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.8.1/workflow_inputs.html#hpxml-cooking-range-oven'>HPXML Cooking Range/Oven</a>) is used. + Multiplier on the cooking range/oven energy usage that can reflect, e.g., high/low usage occupants. If 'auto' or not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.10.0/workflow_inputs.html#hpxml-cooking-range-oven'>HPXML Cooking Range/Oven</a>) is used. String false false @@ -6691,7 +6691,7 @@ ceiling_fan_label_energy_use Ceiling Fan: Label Energy Use - The label average energy use of the ceiling fan(s). If auto or not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.8.1/workflow_inputs.html#hpxml-ceiling-fans'>HPXML Ceiling Fans</a>) is used. + The label average energy use of the ceiling fan(s}. If 'auto' or not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.10.0/workflow_inputs.html#hpxml-ceiling-fans'>HPXML Ceiling Fans</a>) is used. String W false @@ -6700,7 +6700,7 @@ ceiling_fan_efficiency Ceiling Fan: Efficiency - The efficiency rating of the ceiling fan(s) at medium speed. Only used if Label Energy Use not provided. If auto or not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.8.1/workflow_inputs.html#hpxml-ceiling-fans'>HPXML Ceiling Fans</a>) is used. + The efficiency rating of the ceiling fan(s} at medium speed. Only used if Label Energy Use not provided. If 'auto' or not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.10.0/workflow_inputs.html#hpxml-ceiling-fans'>HPXML Ceiling Fans</a>) is used. String CFM/W false @@ -6709,7 +6709,7 @@ ceiling_fan_quantity Ceiling Fan: Quantity - Total number of ceiling fans. If auto or not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.8.1/workflow_inputs.html#hpxml-ceiling-fans'>HPXML Ceiling Fans</a>) is used. + Total number of ceiling fans. If 'auto' or not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.10.0/workflow_inputs.html#hpxml-ceiling-fans'>HPXML Ceiling Fans</a>) is used. String # false @@ -6718,7 +6718,7 @@ ceiling_fan_cooling_setpoint_temp_offset Ceiling Fan: Cooling Setpoint Temperature Offset - The cooling setpoint temperature offset during months when the ceiling fans are operating. Only applies if ceiling fan quantity is greater than zero. If auto or not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.8.1/workflow_inputs.html#hpxml-ceiling-fans'>HPXML Ceiling Fans</a>) is used. + The cooling setpoint temperature offset during months when the ceiling fans are operating. Only applies if ceiling fan quantity is greater than zero. If 'auto' or not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.10.0/workflow_inputs.html#hpxml-ceiling-fans'>HPXML Ceiling Fans</a>) is used. String F false @@ -6745,7 +6745,7 @@ misc_plug_loads_television_annual_kwh Misc Plug Loads: Television Annual kWh - The annual energy consumption of the television plug loads. If auto or not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.8.1/workflow_inputs.html#hpxml-plug-loads'>HPXML Plug Loads</a>) is used. + The annual energy consumption of the television plug loads. If 'auto' or not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.10.0/workflow_inputs.html#hpxml-plug-loads'>HPXML Plug Loads</a>) is used. String kWh/yr false @@ -6754,7 +6754,7 @@ misc_plug_loads_television_usage_multiplier Misc Plug Loads: Television Usage Multiplier - Multiplier on the television energy usage that can reflect, e.g., high/low usage occupants. If auto or not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.8.1/workflow_inputs.html#hpxml-plug-loads'>HPXML Plug Loads</a>) is used. + Multiplier on the television energy usage that can reflect, e.g., high/low usage occupants. If 'auto' or not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.10.0/workflow_inputs.html#hpxml-plug-loads'>HPXML Plug Loads</a>) is used. String false false @@ -6762,7 +6762,7 @@ misc_plug_loads_other_annual_kwh Misc Plug Loads: Other Annual kWh - The annual energy consumption of the other residual plug loads. If auto or not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.8.1/workflow_inputs.html#hpxml-plug-loads'>HPXML Plug Loads</a>) is used. + The annual energy consumption of the other residual plug loads. If 'auto' or not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.10.0/workflow_inputs.html#hpxml-plug-loads'>HPXML Plug Loads</a>) is used. String kWh/yr false @@ -6771,7 +6771,7 @@ misc_plug_loads_other_frac_sensible Misc Plug Loads: Other Sensible Fraction - Fraction of other residual plug loads' internal gains that are sensible. If auto or not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.8.1/workflow_inputs.html#hpxml-plug-loads'>HPXML Plug Loads</a>) is used. + Fraction of other residual plug loads' internal gains that are sensible. If 'auto' or not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.10.0/workflow_inputs.html#hpxml-plug-loads'>HPXML Plug Loads</a>) is used. String Frac false @@ -6780,7 +6780,7 @@ misc_plug_loads_other_frac_latent Misc Plug Loads: Other Latent Fraction - Fraction of other residual plug loads' internal gains that are latent. If auto or not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.8.1/workflow_inputs.html#hpxml-plug-loads'>HPXML Plug Loads</a>) is used. + Fraction of other residual plug loads' internal gains that are latent. If 'auto' or not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.10.0/workflow_inputs.html#hpxml-plug-loads'>HPXML Plug Loads</a>) is used. String Frac false @@ -6789,7 +6789,7 @@ misc_plug_loads_other_usage_multiplier Misc Plug Loads: Other Usage Multiplier - Multiplier on the other energy usage that can reflect, e.g., high/low usage occupants. If auto or not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.8.1/workflow_inputs.html#hpxml-plug-loads'>HPXML Plug Loads</a>) is used. + Multiplier on the other energy usage that can reflect, e.g., high/low usage occupants. If 'auto' or not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.10.0/workflow_inputs.html#hpxml-plug-loads'>HPXML Plug Loads</a>) is used. String false false @@ -6815,7 +6815,7 @@ misc_plug_loads_well_pump_annual_kwh Misc Plug Loads: Well Pump Annual kWh - The annual energy consumption of the well pump plug loads. If auto or not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.8.1/workflow_inputs.html#hpxml-plug-loads'>HPXML Plug Loads</a>) is used. + The annual energy consumption of the well pump plug loads. If 'auto' or not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.10.0/workflow_inputs.html#hpxml-plug-loads'>HPXML Plug Loads</a>) is used. String kWh/yr false @@ -6824,7 +6824,7 @@ misc_plug_loads_well_pump_usage_multiplier Misc Plug Loads: Well Pump Usage Multiplier - Multiplier on the well pump energy usage that can reflect, e.g., high/low usage occupants. If auto or not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.8.1/workflow_inputs.html#hpxml-plug-loads'>HPXML Plug Loads</a>) is used. + Multiplier on the well pump energy usage that can reflect, e.g., high/low usage occupants. If 'auto' or not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.10.0/workflow_inputs.html#hpxml-plug-loads'>HPXML Plug Loads</a>) is used. String false false @@ -6850,7 +6850,7 @@ misc_plug_loads_vehicle_annual_kwh Misc Plug Loads: Vehicle Annual kWh - The annual energy consumption of the electric vehicle plug loads. If auto or not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.8.1/workflow_inputs.html#hpxml-plug-loads'>HPXML Plug Loads</a>) is used. + The annual energy consumption of the electric vehicle plug loads. If 'auto' or not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.10.0/workflow_inputs.html#hpxml-plug-loads'>HPXML Plug Loads</a>) is used. String kWh/yr false @@ -6859,7 +6859,7 @@ misc_plug_loads_vehicle_usage_multiplier Misc Plug Loads: Vehicle Usage Multiplier - Multiplier on the electric vehicle energy usage that can reflect, e.g., high/low usage occupants. If auto or not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.8.1/workflow_inputs.html#hpxml-plug-loads'>HPXML Plug Loads</a>) is used. + Multiplier on the electric vehicle energy usage that can reflect, e.g., high/low usage occupants. If 'auto' or not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.10.0/workflow_inputs.html#hpxml-plug-loads'>HPXML Plug Loads</a>) is used. String false false @@ -6885,7 +6885,7 @@ misc_fuel_loads_grill_fuel_type Misc Fuel Loads: Grill Fuel Type - The fuel type of the fuel loads grill. + The fuel type of the fuel loads grill. If not provided, defaults to natural gas. Choice false false @@ -6915,7 +6915,7 @@ misc_fuel_loads_grill_annual_therm Misc Fuel Loads: Grill Annual therm - The annual energy consumption of the fuel loads grill. If auto or not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.8.1/workflow_inputs.html#hpxml-fuel-loads'>HPXML Fuel Loads</a>) is used. + The annual energy consumption of the fuel loads grill. If 'auto' or not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.10.0/workflow_inputs.html#hpxml-fuel-loads'>HPXML Fuel Loads</a>) is used. String therm/yr false @@ -6924,7 +6924,7 @@ misc_fuel_loads_grill_usage_multiplier Misc Fuel Loads: Grill Usage Multiplier - Multiplier on the fuel loads grill energy usage that can reflect, e.g., high/low usage occupants. If auto or not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.8.1/workflow_inputs.html#hpxml-fuel-loads'>HPXML Fuel Loads</a>) is used. + Multiplier on the fuel loads grill energy usage that can reflect, e.g., high/low usage occupants. If 'auto' or not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.10.0/workflow_inputs.html#hpxml-fuel-loads'>HPXML Fuel Loads</a>) is used. String false false @@ -6950,7 +6950,7 @@ misc_fuel_loads_lighting_fuel_type Misc Fuel Loads: Lighting Fuel Type - The fuel type of the fuel loads lighting. + The fuel type of the fuel loads lighting. If not provided, defaults to natural gas. Choice false false @@ -6980,7 +6980,7 @@ misc_fuel_loads_lighting_annual_therm Misc Fuel Loads: Lighting Annual therm - The annual energy consumption of the fuel loads lighting. If auto or not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.8.1/workflow_inputs.html#hpxml-fuel-loads'>HPXML Fuel Loads</a>) is used. + The annual energy consumption of the fuel loads lighting. If 'auto' or not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.10.0/workflow_inputs.html#hpxml-fuel-loads'>HPXML Fuel Loads</a>) is used. String therm/yr false @@ -6989,7 +6989,7 @@ misc_fuel_loads_lighting_usage_multiplier Misc Fuel Loads: Lighting Usage Multiplier - Multiplier on the fuel loads lighting energy usage that can reflect, e.g., high/low usage occupants. If auto or not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.8.1/workflow_inputs.html#hpxml-fuel-loads'>HPXML Fuel Loads</a>) is used. + Multiplier on the fuel loads lighting energy usage that can reflect, e.g., high/low usage occupants. If 'auto' or not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.10.0/workflow_inputs.html#hpxml-fuel-loads'>HPXML Fuel Loads</a>) is used. String false false @@ -7015,7 +7015,7 @@ misc_fuel_loads_fireplace_fuel_type Misc Fuel Loads: Fireplace Fuel Type - The fuel type of the fuel loads fireplace. + The fuel type of the fuel loads fireplace. If not provided, defaults to natural gas. Choice false false @@ -7045,7 +7045,7 @@ misc_fuel_loads_fireplace_annual_therm Misc Fuel Loads: Fireplace Annual therm - The annual energy consumption of the fuel loads fireplace. If auto or not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.8.1/workflow_inputs.html#hpxml-fuel-loads'>HPXML Fuel Loads</a>) is used. + The annual energy consumption of the fuel loads fireplace. If 'auto' or not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.10.0/workflow_inputs.html#hpxml-fuel-loads'>HPXML Fuel Loads</a>) is used. String therm/yr false @@ -7054,7 +7054,7 @@ misc_fuel_loads_fireplace_frac_sensible Misc Fuel Loads: Fireplace Sensible Fraction - Fraction of fireplace residual fuel loads' internal gains that are sensible. If auto or not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.8.1/workflow_inputs.html#hpxml-fuel-loads'>HPXML Fuel Loads</a>) is used. + Fraction of fireplace residual fuel loads' internal gains that are sensible. If 'auto' or not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.10.0/workflow_inputs.html#hpxml-fuel-loads'>HPXML Fuel Loads</a>) is used. String Frac false @@ -7063,7 +7063,7 @@ misc_fuel_loads_fireplace_frac_latent Misc Fuel Loads: Fireplace Latent Fraction - Fraction of fireplace residual fuel loads' internal gains that are latent. If auto or not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.8.1/workflow_inputs.html#hpxml-fuel-loads'>HPXML Fuel Loads</a>) is used. + Fraction of fireplace residual fuel loads' internal gains that are latent. If 'auto' or not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.10.0/workflow_inputs.html#hpxml-fuel-loads'>HPXML Fuel Loads</a>) is used. String Frac false @@ -7072,7 +7072,7 @@ misc_fuel_loads_fireplace_usage_multiplier Misc Fuel Loads: Fireplace Usage Multiplier - Multiplier on the fuel loads fireplace energy usage that can reflect, e.g., high/low usage occupants. If auto or not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.8.1/workflow_inputs.html#hpxml-fuel-loads'>HPXML Fuel Loads</a>) is used. + Multiplier on the fuel loads fireplace energy usage that can reflect, e.g., high/low usage occupants. If 'auto' or not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.10.0/workflow_inputs.html#hpxml-fuel-loads'>HPXML Fuel Loads</a>) is used. String false false @@ -7098,7 +7098,7 @@ pool_pump_annual_kwh Pool: Pump Annual kWh - The annual energy consumption of the pool pump. If auto or not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.8.1/workflow_inputs.html#pool-pump'>Pool Pump</a>) is used. + The annual energy consumption of the pool pump. If 'auto' or not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.10.0/workflow_inputs.html#pool-pump'>Pool Pump</a>) is used. String kWh/yr false @@ -7107,7 +7107,7 @@ pool_pump_usage_multiplier Pool: Pump Usage Multiplier - Multiplier on the pool pump energy usage that can reflect, e.g., high/low usage occupants. If auto or not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.8.1/workflow_inputs.html#pool-pump'>Pool Pump</a>) is used. + Multiplier on the pool pump energy usage that can reflect, e.g., high/low usage occupants. If 'auto' or not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.10.0/workflow_inputs.html#pool-pump'>Pool Pump</a>) is used. String false false @@ -7141,7 +7141,7 @@ pool_heater_annual_kwh Pool: Heater Annual kWh - The annual energy consumption of the electric resistance pool heater. If auto or not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.8.1/workflow_inputs.html#pool-heater'>Pool Heater</a>) is used. + The annual energy consumption of the electric resistance pool heater. If 'auto' or not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.10.0/workflow_inputs.html#pool-heater'>Pool Heater</a>) is used. String kWh/yr false @@ -7150,7 +7150,7 @@ pool_heater_annual_therm Pool: Heater Annual therm - The annual energy consumption of the gas fired pool heater. If auto or not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.8.1/workflow_inputs.html#pool-heater'>Pool Heater</a>) is used. + The annual energy consumption of the gas fired pool heater. If 'auto' or not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.10.0/workflow_inputs.html#pool-heater'>Pool Heater</a>) is used. String therm/yr false @@ -7159,7 +7159,7 @@ pool_heater_usage_multiplier Pool: Heater Usage Multiplier - Multiplier on the pool heater energy usage that can reflect, e.g., high/low usage occupants. If auto or not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.8.1/workflow_inputs.html#pool-heater'>Pool Heater</a>) is used. + Multiplier on the pool heater energy usage that can reflect, e.g., high/low usage occupants. If 'auto' or not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.10.0/workflow_inputs.html#pool-heater'>Pool Heater</a>) is used. String false false @@ -7185,7 +7185,7 @@ permanent_spa_pump_annual_kwh Permanent Spa: Pump Annual kWh - The annual energy consumption of the permanent spa pump. If auto or not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.8.1/workflow_inputs.html#permanent-spa-pump'>Permanent Spa Pump</a>) is used. + The annual energy consumption of the permanent spa pump. If 'auto' or not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.10.0/workflow_inputs.html#permanent-spa-pump'>Permanent Spa Pump</a>) is used. String kWh/yr false @@ -7194,7 +7194,7 @@ permanent_spa_pump_usage_multiplier Permanent Spa: Pump Usage Multiplier - Multiplier on the permanent spa pump energy usage that can reflect, e.g., high/low usage occupants. If auto or not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.8.1/workflow_inputs.html#permanent-spa-pump'>Permanent Spa Pump</a>) is used. + Multiplier on the permanent spa pump energy usage that can reflect, e.g., high/low usage occupants. If 'auto' or not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.10.0/workflow_inputs.html#permanent-spa-pump'>Permanent Spa Pump</a>) is used. String false false @@ -7228,7 +7228,7 @@ permanent_spa_heater_annual_kwh Permanent Spa: Heater Annual kWh - The annual energy consumption of the electric resistance permanent spa heater. If auto or not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.8.1/workflow_inputs.html#permanent-spa-heater'>Permanent Spa Heater</a>) is used. + The annual energy consumption of the electric resistance permanent spa heater. If 'auto' or not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.10.0/workflow_inputs.html#permanent-spa-heater'>Permanent Spa Heater</a>) is used. String kWh/yr false @@ -7237,7 +7237,7 @@ permanent_spa_heater_annual_therm Permanent Spa: Heater Annual therm - The annual energy consumption of the gas fired permanent spa heater. If auto or not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.8.1/workflow_inputs.html#permanent-spa-heater'>Permanent Spa Heater</a>) is used. + The annual energy consumption of the gas fired permanent spa heater. If 'auto' or not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.10.0/workflow_inputs.html#permanent-spa-heater'>Permanent Spa Heater</a>) is used. String therm/yr false @@ -7246,7 +7246,7 @@ permanent_spa_heater_usage_multiplier Permanent Spa: Heater Usage Multiplier - Multiplier on the permanent spa heater energy usage that can reflect, e.g., high/low usage occupants. If auto or not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.8.1/workflow_inputs.html#permanent-spa-heater'>Permanent Spa Heater</a>) is used. + Multiplier on the permanent spa heater energy usage that can reflect, e.g., high/low usage occupants. If 'auto' or not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.10.0/workflow_inputs.html#permanent-spa-heater'>Permanent Spa Heater</a>) is used. String false false @@ -7262,7 +7262,7 @@ emissions_types Emissions: Types - Types of emissions (e.g., CO2e, NOx, etc.). If multiple scenarios, use a comma-separated list. + Types of emissions (e.g., CO2e, NOx, etc.}. If multiple scenarios, use a comma-separated list. String false false @@ -7534,7 +7534,7 @@ additional_properties Additional Properties - Additional properties specified as key-value pairs (i.e., key=value). If multiple additional properties, use a |-separated list. For example, 'LowIncome=false|Remodeled|Description=2-story home in Denver'. These properties will be stored in the HPXML file under /HPXML/SoftwareInfo/extension/AdditionalProperties. + Additional properties specified as key-value pairs (i.e., key=value}. If multiple additional properties, use a |-separated list. For example, 'LowIncome=false|Remodeled|Description=2-story home in Denver'. These properties will be stored in the HPXML file under /HPXML/SoftwareInfo/extension/AdditionalProperties. String false false @@ -7611,7 +7611,7 @@ README.md md readme - 83EBC2FD + 1998674F
README.md.erb @@ -7628,7 +7628,7 @@ measure.rb rb script - D6A2AB0F + 31BB2EF7 constants.rb @@ -7646,7 +7646,7 @@ test_build_residential_hpxml.rb rb test - 670D5829 + E6A1CBCB diff --git a/BuildResidentialHPXML/tests/test_build_residential_hpxml.rb b/BuildResidentialHPXML/tests/test_build_residential_hpxml.rb index e3b2d5bd97..302fa5b5a8 100644 --- a/BuildResidentialHPXML/tests/test_build_residential_hpxml.rb +++ b/BuildResidentialHPXML/tests/test_build_residential_hpxml.rb @@ -35,6 +35,7 @@ def test_workflows 'base-sfd-header.xml' => 'base-sfd.xml', 'base-sfd-header-no-duplicates.xml' => 'base-sfd-header.xml', + 'base-auto.xml' => 'base-sfd.xml', # Extra files to test 'extra-auto.xml' => 'base-sfd.xml', @@ -610,6 +611,17 @@ def _set_measure_argument_values(hpxml_file, args) elsif ['base-sfd-header-no-duplicates.xml'].include? hpxml_file args['existing_hpxml_path'] = File.join(File.dirname(__FILE__), 'extra_files/base-sfd-header.xml') args['whole_sfa_or_mf_building_sim'] = true + elsif ['base-auto.xml'].include? hpxml_file + args['simulation_control_timestep'] = Constants::Auto + args['simulation_control_run_period_calendar_year'] = Constants::Auto + args['simulation_control_daylight_saving_enabled'] = Constants::Auto + args['simulation_control_temperature_capacitance_multiplier'] = Constants::Auto + args['site_type'] = Constants::Auto + args['site_shielding_of_home'] = Constants::Auto + args['site_soil_and_moisture_type'] = Constants::Auto + args['site_state_code'] = Constants::Auto + args['site_time_zone_utc_offset'] = Constants::Auto + args['site_elevation'] = Constants::Auto end # Extras diff --git a/Changelog.md b/Changelog.md index d43ad2f80c..7be8d6a0c4 100644 --- a/Changelog.md +++ b/Changelog.md @@ -1,6 +1,8 @@ ## OpenStudio-HPXML v1.10.0 __New Features__ +- BuildResidentialHPXML measure: + - **Breaking change**: Removed `window__wwr` argument; a value less than 1 can be provided to the `window_area_` and will be treated as a window-to-wall ratio. __Bugfixes__ @@ -45,7 +47,6 @@ __New Features__ - BuildResidentialHPXML measure: - **Breaking change**: Replaced `slab_under_width` and `slab_perimeter_depth` arguments with `slab_under_insulation_width` and `slab_perimeter_insulation_depth` - **Breaking change**: Replaced `schedules_vacancy_periods`, `schedules_power_outage_periods`, and `schedules_power_outage_periods_window_natvent_availability` arguments with `schedules_unavailable_period_types`, `schedules_unavailable_period_dates`, and `schedules_unavailable_period_window_natvent_availabilities`; this improves flexibility for handling more unavailable period types. - - **Breaking change**: Removed `window__wwr` argument; a value less than 1 can be provided to the `window_area_` and will be treated as a window-to-wall ratio. - Utility bill calculations: - Allows OpenEI URDB tariffs that have $/day fixed charges. - Updates `openei_rates.zip` with the latest residential utility rates from the [OpenEI U.S. Utility Rate database](https://apps.openei.org/USURDB/). diff --git a/HPXMLtoOpenStudio/measure.xml b/HPXMLtoOpenStudio/measure.xml index 98445a9167..f682ff2ed3 100644 --- a/HPXMLtoOpenStudio/measure.xml +++ b/HPXMLtoOpenStudio/measure.xml @@ -3,8 +3,8 @@ 3.1 hpxm_lto_openstudio b1543b30-9465-45ff-ba04-1d1f85e763bc - e3b218a4-1df6-4ad6-99e5-84d8c491ea17 - 2024-11-20T20:05:20Z + 2863569c-638c-426f-a280-a94e5e877c86 + 2024-11-20T23:01:39Z D8922A73 HPXMLtoOpenStudio HPXML to OpenStudio Translator @@ -429,7 +429,7 @@ meta_measure.rb rb resource - 92DBF142 + CE2B7F88 minitest_helper.rb diff --git a/HPXMLtoOpenStudio/resources/meta_measure.rb b/HPXMLtoOpenStudio/resources/meta_measure.rb index 438dd5477a..37dd183940 100644 --- a/HPXMLtoOpenStudio/resources/meta_measure.rb +++ b/HPXMLtoOpenStudio/resources/meta_measure.rb @@ -626,18 +626,18 @@ def is_integer? end # TODO -def convertArgumentValues(arguments_model, args, delete_auto = true) +def convertArgumentValues(get_arguments, args, delete_auto = true) args.each do |name, value| if delete_auto && value == Constants::Auto args.delete(name) next end - arg = arguments_model.find { |a| name == a.name.to_sym } - type = arg.type + arg = get_arguments.find { |a| name.to_s == a[:name] } + type = arg[:type] - if type == 'Choice'.to_OSArgumentType - choices = arg.choiceValues + if type == Argument::Choice + choices = arg[:choices] if choices.include?(Constants::Auto) if value.downcase.to_s == 'true' args[name] = true @@ -645,16 +645,10 @@ def convertArgumentValues(arguments_model, args, delete_auto = true) args[name] = false end end - elsif type == 'String'.to_OSArgumentType - begin - value = Float(value) - if value % 1 == 0 - args[name] = Integer(value) - else - args[name] = value - end - rescue - end + elsif type == Argument::Double + args[name] = Float(value) + elsif type == Argument::Integer + args[name] = Integer(value) end end return args From a763f642ba52abd897969f45faca88116392f135 Mon Sep 17 00:00:00 2001 From: Joe Robertson Date: Thu, 21 Nov 2024 12:45:13 -0700 Subject: [PATCH 32/33] Update argument descriptions, defaults, tests, etc. --- BuildResidentialHPXML/README.md | 24 ++++---- BuildResidentialHPXML/measure.rb | 57 +++++++++++-------- BuildResidentialHPXML/measure.xml | 36 ++++++------ BuildResidentialHPXML/resources/geometry.rb | 14 ++--- .../tests/test_build_residential_hpxml.rb | 14 +++++ 5 files changed, 83 insertions(+), 62 deletions(-) diff --git a/BuildResidentialHPXML/README.md b/BuildResidentialHPXML/README.md index 16753ba51f..a1cacbca12 100644 --- a/BuildResidentialHPXML/README.md +++ b/BuildResidentialHPXML/README.md @@ -605,7 +605,7 @@ The width of the garage. Only applies to single-family detached units. If not pr **Geometry: Garage Depth** -The depth of the garage. Only applies to single-family detached units. +The depth of the garage. Only applies to single-family detached units. If not provided, defaults to zero (no garage}. - **Name:** ``geometry_garage_depth`` - **Type:** ``Double`` @@ -618,7 +618,7 @@ The depth of the garage. Only applies to single-family detached units. **Geometry: Garage Protrusion** -The fraction of the garage that is protruding from the conditioned space. Only applies to single-family detached units. +The fraction of the garage that is protruding from the conditioned space. Only applies to single-family detached units. If not provided, defaults to zero (no protrusion). - **Name:** ``geometry_garage_protrusion`` - **Type:** ``Double`` @@ -631,7 +631,7 @@ The fraction of the garage that is protruding from the conditioned space. Only a **Geometry: Garage Position** -The position of the garage. Only applies to single-family detached units. +The position of the garage. Only applies to single-family detached units. If not provided, defaults to Right. - **Name:** ``geometry_garage_position`` - **Type:** ``Choice`` @@ -981,7 +981,7 @@ Assembly R-value for the rim joists. Only applies to basements/crawlspaces. Requ **Slab: Perimeter Insulation Nominal R-value** -Nominal R-value of the vertical slab perimeter insulation. Applies to slab-on-grade foundations and basement/crawlspace floors. +Nominal R-value of the vertical slab perimeter insulation. Applies to slab-on-grade foundations and basement/crawlspace floors. If not provided, defaults to zero. - **Name:** ``slab_perimeter_insulation_r`` - **Type:** ``Double`` @@ -994,7 +994,7 @@ Nominal R-value of the vertical slab perimeter insulation. Applies to slab-on-gr **Slab: Perimeter Insulation Depth** -Depth from grade to bottom of vertical slab perimeter insulation. Applies to slab-on-grade foundations and basement/crawlspace floors. +Depth from grade to bottom of vertical slab perimeter insulation. Applies to slab-on-grade foundations and basement/crawlspace floors. If not provided, defaults to zero. - **Name:** ``slab_perimeter_insulation_depth`` - **Type:** ``Double`` @@ -1046,7 +1046,7 @@ Depth of the slab exterior horizontal insulation measured from the top surface o **Slab: Under Slab Insulation Nominal R-value** -Nominal R-value of the horizontal under slab insulation. Applies to slab-on-grade foundations and basement/crawlspace floors. +Nominal R-value of the horizontal under slab insulation. Applies to slab-on-grade foundations and basement/crawlspace floors. If not provided, defaults to zero. - **Name:** ``slab_under_insulation_r`` - **Type:** ``Double`` @@ -1059,7 +1059,7 @@ Nominal R-value of the horizontal under slab insulation. Applies to slab-on-grad **Slab: Under Slab Insulation Width** -Width from slab edge inward of horizontal under-slab insulation. Enter 999 to specify that the under slab insulation spans the entire slab. Applies to slab-on-grade foundations and basement/crawlspace floors. +Width from slab edge inward of horizontal under-slab insulation. Enter 999 to specify that the under slab insulation spans the entire slab. Applies to slab-on-grade foundations and basement/crawlspace floors. If not provided, defaults to zero. - **Name:** ``slab_under_insulation_width`` - **Type:** ``Double`` @@ -1874,7 +1874,7 @@ The maximum capacity limit applied to the auto-sizing methodology. If not provid **Heating System: Fraction Heat Load Served** -The heating load served by the heating system. +The heating load served by the heating system. If not provided, defaults to 1. - **Name:** ``heating_system_fraction_heat_load_served`` - **Type:** ``Double`` @@ -2009,7 +2009,7 @@ The maximum capacity limit applied to the auto-sizing methodology. If not provid **Cooling System: Fraction Cool Load Served** -The cooling load served by the cooling system. +The cooling load served by the cooling system. If not provided, defaults to 1. - **Name:** ``cooling_system_fraction_cool_load_served`` - **Type:** ``Double`` @@ -2299,7 +2299,7 @@ The maximum capacity limit applied to the auto-sizing methodology. If not provid **Heat Pump: Fraction Heat Load Served** -The heating load served by the heat pump. +The heating load served by the heat pump. If not provided, defaults to 1. - **Name:** ``heat_pump_fraction_heat_load_served`` - **Type:** ``Double`` @@ -2312,7 +2312,7 @@ The heating load served by the heat pump. **Heat Pump: Fraction Cool Load Served** -The cooling load served by the heat pump. +The cooling load served by the heat pump. If not provided, defaults to 1. - **Name:** ``heat_pump_fraction_cool_load_served`` - **Type:** ``Double`` @@ -2336,7 +2336,7 @@ The temperature below which the heat pump compressor is disabled. If both this a **Heat Pump: Backup Type** -The backup type of the heat pump. If 'integrated', represents e.g. built-in electric strip heat or dual-fuel integrated furnace. If 'separate', represents e.g. electric baseboard or boiler based on the Heating System 2 specified below. Use 'none' if there is no backup heating. +The backup type of the heat pump. If 'integrated', represents e.g. built-in electric strip heat or dual-fuel integrated furnace. If 'separate', represents e.g. electric baseboard or boiler based on the Heating System 2 specified below. Use 'none' if there is no backup heating. If not provided, defaults to 'integrated'. - **Name:** ``heat_pump_backup_type`` - **Type:** ``Choice`` diff --git a/BuildResidentialHPXML/measure.rb b/BuildResidentialHPXML/measure.rb index 5c11bcc9ba..bb33f9fdc2 100644 --- a/BuildResidentialHPXML/measure.rb +++ b/BuildResidentialHPXML/measure.rb @@ -589,7 +589,7 @@ def get_arguments required: false, display_name: 'Geometry: Garage Depth', units: 'ft', - description: "The depth of the garage. Only applies to #{HPXML::ResidentialTypeSFD} units." + description: "The depth of the garage. Only applies to #{HPXML::ResidentialTypeSFD} units. If not provided, defaults to zero (no garage}." } args << { @@ -598,7 +598,7 @@ def get_arguments required: false, display_name: 'Geometry: Garage Protrusion', units: 'Frac', - description: "The fraction of the garage that is protruding from the conditioned space. Only applies to #{HPXML::ResidentialTypeSFD} units." + description: "The fraction of the garage that is protruding from the conditioned space. Only applies to #{HPXML::ResidentialTypeSFD} units. If not provided, defaults to zero (no protrusion)." } garage_position_choices = OpenStudio::StringVector.new @@ -611,7 +611,7 @@ def get_arguments choices: garage_position_choices, required: false, display_name: 'Geometry: Garage Position', - description: "The position of the garage. Only applies to #{HPXML::ResidentialTypeSFD} units." + description: "The position of the garage. Only applies to #{HPXML::ResidentialTypeSFD} units. If not provided, defaults to #{Constants::PositionRight}." } foundation_type_choices = OpenStudio::StringVector.new @@ -929,7 +929,7 @@ def get_arguments required: false, display_name: 'Slab: Perimeter Insulation Nominal R-value', units: 'h-ft^2-R/Btu', - description: 'Nominal R-value of the vertical slab perimeter insulation. Applies to slab-on-grade foundations and basement/crawlspace floors.' + description: 'Nominal R-value of the vertical slab perimeter insulation. Applies to slab-on-grade foundations and basement/crawlspace floors. If not provided, defaults to zero.' } args << { @@ -938,7 +938,7 @@ def get_arguments required: false, display_name: 'Slab: Perimeter Insulation Depth', units: 'ft', - description: 'Depth from grade to bottom of vertical slab perimeter insulation. Applies to slab-on-grade foundations and basement/crawlspace floors.' + description: 'Depth from grade to bottom of vertical slab perimeter insulation. Applies to slab-on-grade foundations and basement/crawlspace floors. If not provided, defaults to zero.' } args << { @@ -974,7 +974,7 @@ def get_arguments required: false, display_name: 'Slab: Under Slab Insulation Nominal R-value', units: 'h-ft^2-R/Btu', - description: 'Nominal R-value of the horizontal under slab insulation. Applies to slab-on-grade foundations and basement/crawlspace floors.' + description: 'Nominal R-value of the horizontal under slab insulation. Applies to slab-on-grade foundations and basement/crawlspace floors. If not provided, defaults to zero.' } args << { @@ -983,7 +983,7 @@ def get_arguments required: false, display_name: 'Slab: Under Slab Insulation Width', units: 'ft', - description: 'Width from slab edge inward of horizontal under-slab insulation. Enter 999 to specify that the under slab insulation spans the entire slab. Applies to slab-on-grade foundations and basement/crawlspace floors.' + description: 'Width from slab edge inward of horizontal under-slab insulation. Enter 999 to specify that the under slab insulation spans the entire slab. Applies to slab-on-grade foundations and basement/crawlspace floors. If not provided, defaults to zero.' } args << { @@ -1724,7 +1724,7 @@ def get_arguments name: 'heating_system_fraction_heat_load_served', required: false, display_name: 'Heating System: Fraction Heat Load Served', - description: 'The heating load served by the heating system.', + description: 'The heating load served by the heating system. If not provided, defaults to 1.', units: 'Frac' } @@ -1824,7 +1824,7 @@ def get_arguments name: 'cooling_system_fraction_cool_load_served', required: false, display_name: 'Cooling System: Fraction Cool Load Served', - description: 'The cooling load served by the cooling system.', + description: 'The cooling load served by the cooling system. If not provided, defaults to 1.', units: 'Frac' } @@ -2075,7 +2075,7 @@ def get_arguments name: 'heat_pump_fraction_heat_load_served', required: false, display_name: 'Heat Pump: Fraction Heat Load Served', - description: 'The heating load served by the heat pump.', + description: 'The heating load served by the heat pump. If not provided, defaults to 1.', units: 'Frac' } @@ -2084,7 +2084,7 @@ def get_arguments name: 'heat_pump_fraction_cool_load_served', required: false, display_name: 'Heat Pump: Fraction Cool Load Served', - description: 'The cooling load served by the heat pump.', + description: 'The cooling load served by the heat pump. If not provided, defaults to 1.', units: 'Frac' } @@ -2104,7 +2104,7 @@ def get_arguments choices: heat_pump_backup_type_choices, required: false, display_name: 'Heat Pump: Backup Type', - description: "The backup type of the heat pump. If '#{HPXML::HeatPumpBackupTypeIntegrated}', represents e.g. built-in electric strip heat or dual-fuel integrated furnace. If '#{HPXML::HeatPumpBackupTypeSeparate}', represents e.g. electric baseboard or boiler based on the Heating System 2 specified below. Use '#{Constants::None}' if there is no backup heating." + description: "The backup type of the heat pump. If '#{HPXML::HeatPumpBackupTypeIntegrated}', represents e.g. built-in electric strip heat or dual-fuel integrated furnace. If '#{HPXML::HeatPumpBackupTypeSeparate}', represents e.g. electric baseboard or boiler based on the Heating System 2 specified below. Use '#{Constants::None}' if there is no backup heating. If not provided, defaults to '#{HPXML::HeatPumpBackupTypeIntegrated}'." } args << { @@ -5283,10 +5283,10 @@ def argument_warnings(args) def argument_errors(args) errors = [] - error = (args[:heating_system_type] != Constants::None) && (args[:heat_pump_type] != Constants::None) && (args[:heating_system_fraction_heat_load_served] > 0) && (args[:heat_pump_fraction_heat_load_served] > 0) + error = (args[:heating_system_type] != Constants::None) && (args[:heat_pump_type] != Constants::None) && (args[:heating_system_fraction_heat_load_served].nil? || args[:heating_system_fraction_heat_load_served] > 0) && (args[:heat_pump_fraction_heat_load_served].nil? || args[:heat_pump_fraction_heat_load_served] > 0) errors << 'Multiple central heating systems are not currently supported.' if error - error = (args[:cooling_system_type] != Constants::None) && (args[:heat_pump_type] != Constants::None) && (args[:cooling_system_fraction_cool_load_served] > 0) && (args[:heat_pump_fraction_cool_load_served] > 0) + error = (args[:cooling_system_type] != Constants::None) && (args[:heat_pump_type] != Constants::None) && (args[:cooling_system_fraction_cool_load_served].nil? || args[:cooling_system_fraction_cool_load_served] > 0) && (args[:heat_pump_fraction_cool_load_served].nil? || args[:heat_pump_fraction_cool_load_served] > 0) errors << 'Multiple central cooling systems are not currently supported.' if error error = ![HPXML::FoundationTypeSlab, HPXML::FoundationTypeAboveApartment].include?(args[:geometry_foundation_type]) && (args[:geometry_foundation_height] == 0) @@ -5455,7 +5455,7 @@ def argument_errors(args) error = (args[:geometry_unit_num_floors_above_grade] > 6) errors << 'Number of above-grade floors must be six or less.' if error - error = (args[:geometry_garage_protrusion] < 0) || (args[:geometry_garage_protrusion] > 1) + error = !args[:geometry_garage_protrusion].nil? && ((args[:geometry_garage_protrusion] < 0) || (args[:geometry_garage_protrusion] > 1)) errors << 'Garage protrusion fraction must be between zero and one.' if error error = (args[:geometry_unit_left_wall_is_adiabatic] && args[:geometry_unit_right_wall_is_adiabatic] && args[:geometry_unit_front_wall_is_adiabatic] && args[:geometry_unit_back_wall_is_adiabatic]) @@ -5467,13 +5467,13 @@ def argument_errors(args) error = (args[:geometry_unit_type] == HPXML::ResidentialTypeSFA) && (args[:geometry_attic_type] == HPXML::AtticTypeBelowApartment) errors << 'Single-family attached units cannot be below another unit.' if error - error = (args[:geometry_garage_protrusion] > 0) && (args[:geometry_roof_type] == Constants::RoofTypeHip) && (args[:geometry_garage_width] * args[:geometry_garage_depth] > 0) + error = (!args[:geometry_garage_protrusion].nil? && args[:geometry_garage_protrusion] > 0) && (args[:geometry_roof_type] == Constants::RoofTypeHip) && !args[:geometry_garage_width].nil? && !args[:geometry_garage_depth].nil? && (args[:geometry_garage_width] * args[:geometry_garage_depth] > 0) errors << 'Cannot handle protruding garage and hip roof.' if error - error = (args[:geometry_garage_protrusion] > 0) && (args[:geometry_unit_aspect_ratio] < 1) && (args[:geometry_garage_width] * args[:geometry_garage_depth] > 0) && (args[:geometry_roof_type] == Constants::RoofTypeGable) + error = (!args[:geometry_garage_protrusion].nil? && args[:geometry_garage_protrusion] > 0) && (args[:geometry_unit_aspect_ratio] < 1) & !args[:geometry_garage_width].nil? && !args[:geometry_garage_depth].nil? && (args[:geometry_garage_width] * args[:geometry_garage_depth] > 0) && (args[:geometry_roof_type] == Constants::RoofTypeGable) errors << 'Cannot handle protruding garage and attic ridge running from front to back.' if error - error = (args[:geometry_foundation_type] == HPXML::FoundationTypeAmbient) && (args[:geometry_garage_width] * args[:geometry_garage_depth] > 0) + error = (args[:geometry_foundation_type] == HPXML::FoundationTypeAmbient) && !args[:geometry_garage_width].nil? && !args[:geometry_garage_depth].nil? && (args[:geometry_garage_width] * args[:geometry_garage_depth] > 0) errors << 'Cannot handle garages with an ambient foundation type.' if error error = (args[:door_area] < 0) @@ -6270,7 +6270,7 @@ def self.set_neighbor_buildings(hpxml_bldg, args) nbr_map.each do |facade, data| distance, neighbor_height = data - next if distance == 0 + next if distance.nil? || distance == 0 azimuth = Geometry.get_azimuth_from_facade(facade: facade, orientation: args[:geometry_unit_orientation]) @@ -6821,6 +6821,10 @@ def self.set_floors(hpxml_bldg, args, sorted_surfaces) # @param sorted_surfaces [Array] surfaces sorted by deterministically assigned Index # @return [nil] def self.set_slabs(hpxml_bldg, model, args, sorted_surfaces) + args[:slab_perimeter_insulation_r] = 0 if args[:slab_perimeter_insulation_r].nil? + args[:slab_perimeter_insulation_depth] = 0 if args[:slab_perimeter_insulation_depth].nil? + args[:slab_under_insulation_r] = 0 if args[:slab_under_insulation_r].nil? + args[:slab_under_insulation_width] = 0 if args[:slab_under_insulation_width].nil? sorted_surfaces.each do |surface| next unless [EPlus::BoundaryConditionFoundation].include? surface.outsideBoundaryCondition next if surface.surfaceType != EPlus::SurfaceTypeFloor @@ -6847,7 +6851,7 @@ def self.set_slabs(hpxml_bldg, model, args, sorted_surfaces) exposed_perimeter -= Geometry.get_unexposed_garage_perimeter(**args) end - if args[:slab_under_insulation_width] >= 999 + if !args[:slab_under_insulation_width].nil? && args[:slab_under_insulation_width] >= 999 under_slab_insulation_spans_entire_slab = true else under_slab_insulation_width = args[:slab_under_insulation_width] @@ -7182,8 +7186,6 @@ def self.set_heating_systems(hpxml_bldg, args) end end - fraction_heat_load_served = args[:heating_system_fraction_heat_load_served] - if heating_system_type.include?('Shared') is_shared_system = true number_of_units_served = args[:geometry_building_num_units] @@ -7194,13 +7196,14 @@ def self.set_heating_systems(hpxml_bldg, args) heating_system_type = HPXML::HVACTypeBoiler end + args[:heating_system_fraction_heat_load_served] = 1 if args[:heating_system_fraction_heat_load_served].nil? hpxml_bldg.heating_systems.add(id: "HeatingSystem#{hpxml_bldg.heating_systems.size + 1}", heating_system_type: heating_system_type, heating_system_fuel: args[:heating_system_fuel], heating_capacity: args[:heating_system_heating_capacity], heating_autosizing_factor: args[:heating_system_heating_autosizing_factor], heating_autosizing_limit: args[:heating_system_heating_autosizing_limit], - fraction_heat_load_served: fraction_heat_load_served, + fraction_heat_load_served: args[:heating_system_fraction_heat_load_served], heating_efficiency_afue: heating_efficiency_afue, heating_efficiency_percent: heating_efficiency_percent, airflow_defect_ratio: airflow_defect_ratio, @@ -7270,6 +7273,7 @@ def self.set_cooling_systems(hpxml_bldg, args) integrated_heating_system_efficiency_percent = args[:cooling_system_integrated_heating_system_efficiency_percent] end + args[:cooling_system_fraction_cool_load_served] = 1 if args[:cooling_system_fraction_cool_load_served].nil? hpxml_bldg.cooling_systems.add(id: "CoolingSystem#{hpxml_bldg.cooling_systems.size + 1}", cooling_system_type: cooling_system_type, cooling_system_fuel: HPXML::FuelTypeElectricity, @@ -7350,9 +7354,10 @@ def self.set_heat_pumps(hpxml_bldg, args) return if heat_pump_type == Constants::None + args[:heat_pump_backup_type] = HPXML::HeatPumpBackupTypeIntegrated if args[:heat_pump_backup_type].nil? args[:heat_pump_backup_fuel] = HPXML::FuelTypeElectricity if args[:heat_pump_backup_fuel].nil? args[:heat_pump_backup_heating_efficiency] = 1 if args[:heat_pump_backup_heating_efficiency].nil? - if (args[:heat_pump_backup_type].nil? || args[:heat_pump_backup_type] == HPXML::HeatPumpBackupTypeIntegrated) + if (args[:heat_pump_backup_type] == HPXML::HeatPumpBackupTypeIntegrated) backup_type = args[:heat_pump_backup_type] backup_heating_fuel = args[:heat_pump_backup_fuel] backup_heating_capacity = args[:heat_pump_backup_heating_capacity] @@ -7410,6 +7415,8 @@ def self.set_heat_pumps(hpxml_bldg, args) heat_pump_crankcase_heater_watts = args[:heat_pump_crankcase_heater_watts] end + args[:heat_pump_fraction_heat_load_served] = 1 if args[:heat_pump_fraction_heat_load_served].nil? + args[:heat_pump_fraction_cool_load_served] = 1 if args[:heat_pump_fraction_cool_load_served].nil? hpxml_bldg.heat_pumps.add(id: "HeatPump#{hpxml_bldg.heat_pumps.size + 1}", heat_pump_type: heat_pump_type, heat_pump_fuel: HPXML::FuelTypeElectricity, @@ -8505,7 +8512,7 @@ def self.set_lighting(hpxml_bldg, args) args[:lighting_garage_fraction_lfl] = 0.0 if args[:lighting_garage_fraction_lfl].nil? args[:lighting_garage_fraction_led] = 0.0 if args[:lighting_garage_fraction_led].nil? - has_garage = (args[:geometry_garage_width] * args[:geometry_garage_depth] > 0) + has_garage = !args[:geometry_garage_width].nil? && !args[:geometry_garage_depth].nil? && (args[:geometry_garage_width] * args[:geometry_garage_depth] > 0) # Interior interior_usage_multiplier = args[:lighting_interior_usage_multiplier] diff --git a/BuildResidentialHPXML/measure.xml b/BuildResidentialHPXML/measure.xml index e646f68749..2ca46c481a 100644 --- a/BuildResidentialHPXML/measure.xml +++ b/BuildResidentialHPXML/measure.xml @@ -3,8 +3,8 @@ 3.1 build_residential_hpxml a13a8983-2b01-4930-8af2-42030b6e4233 - 9565ae97-b46b-4ee5-824d-a93c31f1d307 - 2024-11-20T23:01:37Z + 21ddd6a5-4c7d-4e55-838e-1180d9555e6a + 2024-11-21T19:44:59Z 2C38F48B BuildResidentialHPXML HPXML Builder @@ -937,7 +937,7 @@ geometry_garage_depth Geometry: Garage Depth - The depth of the garage. Only applies to single-family detached units. + The depth of the garage. Only applies to single-family detached units. If not provided, defaults to zero (no garage}. Double ft false @@ -946,7 +946,7 @@ geometry_garage_protrusion Geometry: Garage Protrusion - The fraction of the garage that is protruding from the conditioned space. Only applies to single-family detached units. + The fraction of the garage that is protruding from the conditioned space. Only applies to single-family detached units. If not provided, defaults to zero (no protrusion). Double Frac false @@ -955,7 +955,7 @@ geometry_garage_position Geometry: Garage Position - The position of the garage. Only applies to single-family detached units. + The position of the garage. Only applies to single-family detached units. If not provided, defaults to Right. Choice false false @@ -1400,7 +1400,7 @@ slab_perimeter_insulation_r Slab: Perimeter Insulation Nominal R-value - Nominal R-value of the vertical slab perimeter insulation. Applies to slab-on-grade foundations and basement/crawlspace floors. + Nominal R-value of the vertical slab perimeter insulation. Applies to slab-on-grade foundations and basement/crawlspace floors. If not provided, defaults to zero. Double h-ft^2-R/Btu false @@ -1409,7 +1409,7 @@ slab_perimeter_insulation_depth Slab: Perimeter Insulation Depth - Depth from grade to bottom of vertical slab perimeter insulation. Applies to slab-on-grade foundations and basement/crawlspace floors. + Depth from grade to bottom of vertical slab perimeter insulation. Applies to slab-on-grade foundations and basement/crawlspace floors. If not provided, defaults to zero. Double ft false @@ -1445,7 +1445,7 @@ slab_under_insulation_r Slab: Under Slab Insulation Nominal R-value - Nominal R-value of the horizontal under slab insulation. Applies to slab-on-grade foundations and basement/crawlspace floors. + Nominal R-value of the horizontal under slab insulation. Applies to slab-on-grade foundations and basement/crawlspace floors. If not provided, defaults to zero. Double h-ft^2-R/Btu false @@ -1454,7 +1454,7 @@ slab_under_insulation_width Slab: Under Slab Insulation Width - Width from slab edge inward of horizontal under-slab insulation. Enter 999 to specify that the under slab insulation spans the entire slab. Applies to slab-on-grade foundations and basement/crawlspace floors. + Width from slab edge inward of horizontal under-slab insulation. Enter 999 to specify that the under slab insulation spans the entire slab. Applies to slab-on-grade foundations and basement/crawlspace floors. If not provided, defaults to zero. Double ft false @@ -2488,7 +2488,7 @@ heating_system_fraction_heat_load_served Heating System: Fraction Heat Load Served - The heating load served by the heating system. + The heating load served by the heating system. If not provided, defaults to 1. Double Frac false @@ -2644,7 +2644,7 @@ cooling_system_fraction_cool_load_served Cooling System: Fraction Cool Load Served - The cooling load served by the cooling system. + The cooling load served by the cooling system. If not provided, defaults to 1. Double Frac false @@ -2970,7 +2970,7 @@ heat_pump_fraction_heat_load_served Heat Pump: Fraction Heat Load Served - The heating load served by the heat pump. + The heating load served by the heat pump. If not provided, defaults to 1. Double Frac false @@ -2979,7 +2979,7 @@ heat_pump_fraction_cool_load_served Heat Pump: Fraction Cool Load Served - The cooling load served by the heat pump. + The cooling load served by the heat pump. If not provided, defaults to 1. Double Frac false @@ -2997,7 +2997,7 @@ heat_pump_backup_type Heat Pump: Backup Type - The backup type of the heat pump. If 'integrated', represents e.g. built-in electric strip heat or dual-fuel integrated furnace. If 'separate', represents e.g. electric baseboard or boiler based on the Heating System 2 specified below. Use 'none' if there is no backup heating. + The backup type of the heat pump. If 'integrated', represents e.g. built-in electric strip heat or dual-fuel integrated furnace. If 'separate', represents e.g. electric baseboard or boiler based on the Heating System 2 specified below. Use 'none' if there is no backup heating. If not provided, defaults to 'integrated'. Choice false false @@ -7611,7 +7611,7 @@ README.md md readme - 1998674F + 76B35F66 README.md.erb @@ -7628,7 +7628,7 @@ measure.rb rb script - 31BB2EF7 + 64BB8292 constants.rb @@ -7640,13 +7640,13 @@ geometry.rb rb resource - 132765E2 + 4C8EDD7B test_build_residential_hpxml.rb rb test - E6A1CBCB + FCE5E0F0 diff --git a/BuildResidentialHPXML/resources/geometry.rb b/BuildResidentialHPXML/resources/geometry.rb index 0eba10e1e6..020c848f60 100644 --- a/BuildResidentialHPXML/resources/geometry.rb +++ b/BuildResidentialHPXML/resources/geometry.rb @@ -27,10 +27,10 @@ def self.create_single_family_detached(runner:, geometry_average_ceiling_height:, geometry_unit_num_floors_above_grade:, geometry_unit_aspect_ratio:, - geometry_garage_width:, - geometry_garage_depth:, - geometry_garage_protrusion:, - geometry_garage_position:, + geometry_garage_width: 0.0, + geometry_garage_depth: 0.0, + geometry_garage_protrusion: 0.0, + geometry_garage_position: Constants::PositionRight, geometry_foundation_type:, geometry_foundation_height:, geometry_rim_joist_height:, @@ -1740,9 +1740,9 @@ def self.calculate_exposed_perimeter(model:, # @param geometry_garage_width [Double] width of the garage (ft) # @param geometry_garage_depth [Double] depth of the garage (ft) # @return [Double] the unexposed garage perimeter - def self.get_unexposed_garage_perimeter(geometry_garage_protrusion:, - geometry_garage_width:, - geometry_garage_depth:, + def self.get_unexposed_garage_perimeter(geometry_garage_protrusion: 0.0, + geometry_garage_width: 0.0, + geometry_garage_depth: 0.0, **) protrusion = geometry_garage_protrusion width = geometry_garage_width diff --git a/BuildResidentialHPXML/tests/test_build_residential_hpxml.rb b/BuildResidentialHPXML/tests/test_build_residential_hpxml.rb index 302fa5b5a8..fbcbbdc997 100644 --- a/BuildResidentialHPXML/tests/test_build_residential_hpxml.rb +++ b/BuildResidentialHPXML/tests/test_build_residential_hpxml.rb @@ -647,7 +647,13 @@ def _set_measure_argument_values(hpxml_file, args) args['pv_system_2_array_tilt'] = 'roofpitch+15' elsif ['extra-dhw-solar-latitude.xml'].include? hpxml_file args['solar_thermal_system_type'] = HPXML::SolarThermalSystemTypeHotWater + args['solar_thermal_collector_area'] = 40.0 + args['solar_thermal_collector_loop_type'] = HPXML::SolarThermalLoopTypeDirect + args['solar_thermal_collector_type'] = HPXML::SolarThermalCollectorTypeEvacuatedTube + args['solar_thermal_collector_azimuth'] = 180 args['solar_thermal_collector_tilt'] = 'Latitude-15' + args['solar_thermal_collector_rated_optical_efficiency'] = 0.5 + args['solar_thermal_collector_rated_thermal_losses'] = 0.2799 elsif ['extra-second-refrigerator.xml'].include? hpxml_file args['extra_refrigerator_location'] = HPXML::LocationConditionedSpace elsif ['extra-second-heating-system-portable-heater-to-heating-system.xml'].include? hpxml_file @@ -677,6 +683,8 @@ def _set_measure_argument_values(hpxml_file, args) args['heating_system_type'] = Constants::None args['cooling_system_type'] = Constants::None args['heat_pump_type'] = HPXML::HVACTypeHeatPumpAirToAir + args['heat_pump_heating_efficiency'] = 7.7 + args['heat_pump_cooling_efficiency'] = 13.0 args['heat_pump_backup_type'] = HPXML::HeatPumpBackupTypeIntegrated args['heat_pump_backup_fuel'] = HPXML::FuelTypeElectricity args['heat_pump_heating_capacity'] = 48000.0 @@ -694,6 +702,7 @@ def _set_measure_argument_values(hpxml_file, args) args.delete('heat_pump_cooling_compressor_type') args['heat_pump_heating_efficiency'] = 10.0 args['heat_pump_cooling_efficiency'] = 19.0 + args['heat_pump_backup_type'] = HPXML::HeatPumpBackupTypeIntegrated args['heat_pump_heating_capacity'] = 48000.0 args['heat_pump_is_ducted'] = true args['heat_pump_fraction_heat_load_served'] = 0.75 @@ -721,6 +730,7 @@ def _set_measure_argument_values(hpxml_file, args) args['geometry_garage_protrusion'] = 0.5 elsif ['extra-enclosure-garage-atticroof-conditioned.xml'].include? hpxml_file args['geometry_garage_width'] = 30.0 + args['geometry_garage_depth'] = 20.0 args['geometry_garage_protrusion'] = 1.0 args['window_area_front'] = 12.0 args['window_aspect_ratio'] = 5.0 / 1.5 @@ -1136,13 +1146,16 @@ def _set_measure_argument_values(hpxml_file, args) elsif ['error-hip-roof-and-protruding-garage.xml'].include? hpxml_file args['geometry_roof_type'] = Constants::RoofTypeHip args['geometry_garage_width'] = 12 + args['geometry_garage_depth'] = 20 args['geometry_garage_protrusion'] = 0.5 elsif ['error-protruding-garage-under-gable-roof.xml'].include? hpxml_file args['geometry_unit_aspect_ratio'] = 0.5 args['geometry_garage_width'] = 12 + args['geometry_garage_depth'] = 20 args['geometry_garage_protrusion'] = 0.5 elsif ['error-ambient-with-garage.xml'].include? hpxml_file args['geometry_garage_width'] = 12 + args['geometry_garage_depth'] = 20 args['geometry_foundation_type'] = HPXML::FoundationTypeAmbient elsif ['error-invalid-door-area.xml'].include? hpxml_file args['door_area'] = -10 @@ -1150,6 +1163,7 @@ def _set_measure_argument_values(hpxml_file, args) args['window_aspect_ratio'] = 0 elsif ['error-garage-too-wide.xml'].include? hpxml_file args['geometry_garage_width'] = 72 + args['geometry_garage_depth'] = 20 elsif ['error-garage-too-deep.xml'].include? hpxml_file args['geometry_garage_width'] = 12 args['geometry_garage_depth'] = 40 From bbad3f75c0db6209ffdd189abf520b61377342e7 Mon Sep 17 00:00:00 2001 From: Joe Robertson Date: Thu, 21 Nov 2024 14:19:46 -0700 Subject: [PATCH 33/33] Change all build osw values to strings. --- ...nd-run-hpxml-with-stochastic-occupancy.osw | 80 +++++++++---------- 1 file changed, 40 insertions(+), 40 deletions(-) diff --git a/workflow/template-build-and-run-hpxml-with-stochastic-occupancy.osw b/workflow/template-build-and-run-hpxml-with-stochastic-occupancy.osw index e97edf4f2e..c91ab11a0e 100644 --- a/workflow/template-build-and-run-hpxml-with-stochastic-occupancy.osw +++ b/workflow/template-build-and-run-hpxml-with-stochastic-occupancy.osw @@ -10,77 +10,77 @@ "wall_type": "WoodStud", "heat_pump_type": "none", "hot_water_distribution_system_type": "Standard", - "lighting_present": true, - "clothes_washer_present": true, - "clothes_dryer_present": true, + "lighting_present": "true", + "clothes_washer_present": "true", + "clothes_dryer_present": "true", "clothes_dryer_fuel_type": "natural gas", - "dishwasher_present": true, - "refrigerator_present": true, - "cooking_range_oven_present": true, + "dishwasher_present": "true", + "refrigerator_present": "true", + "cooking_range_oven_present": "true", "cooking_range_oven_fuel_type": "natural gas", - "ceiling_fan_present": true, - "misc_plug_loads_television_present": true, - "air_leakage_house_pressure": 50, + "ceiling_fan_present": "true", + "misc_plug_loads_television_present": "true", + "air_leakage_house_pressure": "50", "air_leakage_units": "ACH", - "air_leakage_value": 3, - "ceiling_assembly_r": 39.3, + "air_leakage_value": "3", + "ceiling_assembly_r": "39.3", "cooling_system_cooling_capacity": "24000.0", "cooling_system_cooling_compressor_type": "single stage", - "cooling_system_cooling_efficiency": 13.0, + "cooling_system_cooling_efficiency": "13.0", "cooling_system_cooling_efficiency_type": "SEER", "cooling_system_type": "central air conditioner", - "door_area": 40.0, - "door_rvalue": 4.4, + "door_area": "40.0", + "door_rvalue": "4.4", "ducts_leakage_units": "CFM25", - "ducts_return_insulation_r": 0.0, - "ducts_return_leakage_to_outside_value": 25.0, + "ducts_return_insulation_r": "0.0", + "ducts_return_leakage_to_outside_value": "25.0", "ducts_return_location": "attic - unvented", "ducts_return_surface_area": "50.0", - "ducts_supply_insulation_r": 4.0, - "ducts_supply_leakage_to_outside_value": 75.0, + "ducts_supply_insulation_r": "4.0", + "ducts_supply_leakage_to_outside_value": "75.0", "ducts_supply_location": "attic - unvented", "ducts_supply_surface_area": "150.0", - "foundation_wall_insulation_r": 8.9, + "foundation_wall_insulation_r": "8.9", "geometry_attic_type": "UnventedAttic", - "geometry_average_ceiling_height": 8.0, - "geometry_eaves_depth": 0, - "geometry_foundation_height": 8.0, - "geometry_foundation_height_above_grade": 1.0, + "geometry_average_ceiling_height": "8.0", + "geometry_eaves_depth": "0", + "geometry_foundation_height": "8.0", + "geometry_foundation_height_above_grade": "1.0", "geometry_foundation_type": "ConditionedBasement", - "geometry_rim_joist_height": 9.25, + "geometry_rim_joist_height": "9.25", "geometry_roof_pitch": "6:12", "geometry_roof_type": "gable", - "geometry_unit_aspect_ratio": 1.5, - "geometry_unit_cfa": 2700.0, - "geometry_unit_num_bedrooms": 3, + "geometry_unit_aspect_ratio": "1.5", + "geometry_unit_cfa": "2700.0", + "geometry_unit_num_bedrooms": "3", "geometry_unit_num_floors_above_grade": 1, - "geometry_unit_orientation": 180.0, + "geometry_unit_orientation": "180.0", "geometry_unit_type": "single-family detached", "heating_system_fuel": "natural gas", "heating_system_heating_capacity": "36000.0", - "heating_system_heating_efficiency": 0.92, + "heating_system_heating_efficiency": "0.92", "heating_system_type": "Furnace", "hpxml_path": "../built.xml", "hvac_control_cooling_weekday_setpoint": "78", "hvac_control_cooling_weekend_setpoint": "78", "hvac_control_heating_weekday_setpoint": "68", "hvac_control_heating_weekend_setpoint": "68", - "rim_joist_assembly_r": 23.0, - "roof_assembly_r": 2.3, - "wall_assembly_r": 23, - "water_heater_efficiency": 0.95, + "rim_joist_assembly_r": "23.0", + "roof_assembly_r": "2.3", + "wall_assembly_r": "23", + "water_heater_efficiency": "0.95", "water_heater_efficiency_type": "EnergyFactor", "water_heater_fuel_type": "electricity", "water_heater_tank_volume": "40", "water_heater_type": "storage water heater", "weather_station_epw_filepath": "USA_CO_Denver.Intl.AP.725650_TMY3.epw", - "window_area_back": 108.0, - "window_area_front": 108.0, - "window_area_left": 72.0, - "window_area_right": 72.0, - "window_aspect_ratio": 1.333, - "window_shgc": 0.45, - "window_ufactor": 0.33 + "window_area_back": "108.0", + "window_area_front": "108.0", + "window_area_left": "72.0", + "window_area_right": "72.0", + "window_aspect_ratio": "1.333", + "window_shgc": "0.45", + "window_ufactor": "0.33" }, "measure_dir_name": "BuildResidentialHPXML" },