diff --git a/docs/technical_development_guide/source/basic_tutorial/resstock_architecture.rst b/docs/technical_development_guide/source/basic_tutorial/resstock_architecture.rst index 4cc0b600a7..6a25dfa11f 100644 --- a/docs/technical_development_guide/source/basic_tutorial/resstock_architecture.rst +++ b/docs/technical_development_guide/source/basic_tutorial/resstock_architecture.rst @@ -43,17 +43,14 @@ The following depicts the order in which workflow measure steps are applied: ===== ============================= ================== ========= ============= ========================== 1 BuildExistingModel Model No Meta measure ResStock 2 ApplyUpgrade Model Yes [#]_ Meta measure ResStock - 3 HPXMLtoOpenStudio Model No OS-HPXML [#]_ - 4 UpgradeCosts Model No ResStock - 5 *Other Model Measures* Model Yes Any [#]_ - 6 ReportSimulationOutput Reporting No OS-HPXML - 7 ReportUtilityBills Reporting No OS-HPXML - 8 *Other Reporting Measures* Reporting Yes Any [#]_ - 9 ServerDirectoryCleanup Reporting No ResStock + 3 UpgradeCosts Model No ResStock + 4 *Other Model Measures* Model Yes Any [#]_ + 5 SimulationOutput Reporting No Meta measure ResStock + 6 *Other Reporting Measures* Reporting Yes Any [#]_ + 7 ServerDirectoryCleanup Reporting No ResStock ===== ============================= ================== ========= ============= ========================== .. [#] Baseline models with no upgrades do not have the ApplyUpgrade measure applied. - .. [#] OS-HPXML refers to the `OpenStudio-HPXML `_ repository. .. [#] *Other Model Measures* do not need to originate from ResStock, but it is up to the user to ensure they work within the ResStock workflow. .. [#] *Other Reporting Measures* do not need to originate from ResStock, but it is up to the user to ensure they work within the ResStock workflow. @@ -63,9 +60,23 @@ The BuildExistingModel and ApplyUpgrade meta measures call the following model m Index Measure Measure Type Optional Notes Source ===== ============================= ================== ========= ============= ========================== 1 ResStockArguments Model No ResStock - 2 BuildResidentialHPXML Model No OS-HPXML + 2 BuildResidentialHPXML Model No OS-HPXML [#]_ 3 BuildResidentialScheduleFile Model No OS-HPXML 4 ResStockArgumentsPostHPXML Model No ResStock + 5 HPXMLtoOpenStudio Model No [#]_ OS-HPXML + 6 AddSharedSystem Model No ResStock + ===== ============================= ================== ========= ============= ========================== + + .. [#] OS-HPXML refers to the `OpenStudio-HPXML `_ repository. + .. [#] The HPXMLtoOpenStudio measure is only called once in the workflow; it is called from BuildExistingModel for baseline models or from ApplyUpgrade for upgrade models. + +The SimulationOutput meta measure calls the following reporting measures: + + ===== ============================= ================== ========= ============= ========================== + Index Measure Measure Type Optional Notes Source + ===== ============================= ================== ========= ============= ========================== + 1 ReportSimulationOutput Reporting No OS-HPXML + 2 ReportUtilityBills Reporting No OS-HPXML ===== ============================= ================== ========= ============= ========================== .. _model-measures: diff --git a/docs/technical_development_guide/source/workflow_inputs/characteristics.rst b/docs/technical_development_guide/source/workflow_inputs/characteristics.rst index cb29db9f6b..1462fe72e7 100644 --- a/docs/technical_development_guide/source/workflow_inputs/characteristics.rst +++ b/docs/technical_development_guide/source/workflow_inputs/characteristics.rst @@ -29759,6 +29759,19 @@ From ``project_national`` the list of options, option stock saturation, and opti - - - + * - ``hvac_cooling_shared_system`` + - None + - None + - None + - None + - None + - None + - None + - None + - None + - None + - None + - Properties ********** @@ -29782,6 +29795,9 @@ Properties * - ``hvac_cooling_system_cooling_compressor_type`` - - The compressor type of the cooling system. Applies to Central ACs and Mini-Split ACs. + * - ``hvac_cooling_shared_system`` + - + - The type of shared cooling system. .. _hvac_cooling_partial_space_conditioning: HVAC Cooling Partial Space Conditioning @@ -30683,7 +30699,7 @@ Properties - The rated heating efficiency of the integrated backup. * - ``hvac_heating_shared_system`` - - - The type of shared system. + - The type of shared heating system. * - ``hvac_heat_pump_backup_use_existing_system`` - - Whether the heat pump uses the existing heating system as backup. If true and backup type of the heat pump is 'integrated', heat_pump_backup_xxx arguments are assigned values based on the existing heating system. If true and backup type of the heat pump is 'separate', heating_system_2_xxx arguments are assigned values based on the existing heating system. This argument is only applicable for heat pump upgrades. @@ -31305,6 +31321,14 @@ From ``project_national`` the list of options, option stock saturation, and opti - FanCoil - - + * - ``hvac_cooling_shared_system`` + - + - + - FanCoil + - FanCoil + - FanCoil + - + - Properties ********** @@ -31354,7 +31378,10 @@ Properties - The backup type. Use 'integrated' to represent e.g. built-in electric strip heat or dual-fuel integrated furnace. Use 'separate' to represent e.g. electric baseboard or boiler (based on Heating System 2). * - ``hvac_heating_shared_system`` - - - The type of shared system. + - The type of shared heating system. + * - ``hvac_cooling_shared_system`` + - + - The type of shared cooling system. .. _hvac_system_is_faulted: HVAC System Is Faulted diff --git a/docs/technical_reference_guide/characteristics/options/HVAC Cooling Efficiency.tex b/docs/technical_reference_guide/characteristics/options/HVAC Cooling Efficiency.tex index dc3796200b..c08beedcf9 100644 --- a/docs/technical_reference_guide/characteristics/options/HVAC Cooling Efficiency.tex +++ b/docs/technical_reference_guide/characteristics/options/HVAC Cooling Efficiency.tex @@ -8,6 +8,7 @@ \texttt{hvac\_cooling\_system\_cooling\_efficiency\_type} & SEER2 & SEER2 & SEER2 \\ \hline \texttt{hvac\_cooling\_system\_cooling\_efficiency} & 7.6 & 9.5 & 12.4 \\ \hline \texttt{hvac\_cooling\_system\_cooling\_compressor\_type} & single stage & single stage & single stage \\ \hline +\texttt{hvac\_cooling\_shared\_system} & None & None & None \\ \hline \hline Option name & AC, SEER2 14.3 & Ducted Heat Pump & Non-Ducted Heat Pump \\ \hline Stock saturation & 12\% & 15\% & 0.97\% \\ \hline @@ -15,16 +16,19 @@ \texttt{hvac\_cooling\_system\_cooling\_efficiency\_type} & SEER2 & & \\ \hline \texttt{hvac\_cooling\_system\_cooling\_efficiency} & 14.3 & & \\ \hline \texttt{hvac\_cooling\_system\_cooling\_compressor\_type} & single stage & & \\ \hline +\texttt{hvac\_cooling\_shared\_system} & None & None & None \\ \hline \hline Option name & None & Room AC, CEER 8.4 & Room AC, CEER 9.7 \\ \hline Stock saturation & 11\% & 0.43\% & 2.6\% \\ \hline \texttt{hvac\_cooling\_system\_type} & none & room air conditioner & room air conditioner \\ \hline \texttt{hvac\_cooling\_system\_cooling\_efficiency\_type} & & CEER & CEER \\ \hline \texttt{hvac\_cooling\_system\_cooling\_efficiency} & & 8.4 & 9.7 \\ \hline +\texttt{hvac\_cooling\_shared\_system} & None & None & None \\ \hline \hline Option name & Room AC, CEER 10.6 & Room AC, CEER 11.9 & Shared Cooling \\ \hline Stock saturation & 9.6\% & 7.4\% & 3.8\% \\ \hline \texttt{hvac\_cooling\_system\_type} & room air conditioner & room air conditioner & \\ \hline \texttt{hvac\_cooling\_system\_cooling\_efficiency\_type} & CEER & CEER & \\ \hline -\texttt{hvac\_cooling\_system\_cooling\_efficiency} & 10.6 & 11.9 & \\ +\texttt{hvac\_cooling\_system\_cooling\_efficiency} & 10.6 & 11.9 & \\ \hline +\texttt{hvac\_cooling\_shared\_system} & None & None & \\ \end{customLongTable} diff --git a/docs/technical_reference_guide/characteristics/options/HVAC Shared Efficiencies.tex b/docs/technical_reference_guide/characteristics/options/HVAC Shared Efficiencies.tex index f53267fd84..21aa1dc616 100644 --- a/docs/technical_reference_guide/characteristics/options/HVAC Shared Efficiencies.tex +++ b/docs/technical_reference_guide/characteristics/options/HVAC Shared Efficiencies.tex @@ -17,6 +17,7 @@ \texttt{hvac\_heat\_pump\_cooling\_load\_served\_fraction} & 1.0 & 1.0 & \\ \hline \texttt{hvac\_heat\_pump\_backup\_type} & none & none & \\ \hline \texttt{hvac\_heating\_shared\_system} & Baseboard & Baseboard & \\ \hline +\texttt{hvac\_cooling\_shared\_system} & & & FanCoil \\ \hline \hline Option name & Fan Coil Heating and Cooling, Electricity & Fan Coil Heating and Cooling, Fuel & None \\ \hline Stock saturation & 1.3\% & 1.1\% & 89\% \\ \hline @@ -32,5 +33,6 @@ \texttt{hvac\_heat\_pump\_heating\_load\_served\_fraction} & 1.0 & 1.0 & \\ \hline \texttt{hvac\_heat\_pump\_cooling\_load\_served\_fraction} & 1.0 & 1.0 & \\ \hline \texttt{hvac\_heat\_pump\_backup\_type} & none & none & \\ \hline -\texttt{hvac\_heating\_shared\_system} & FanCoil & FanCoil & \\ +\texttt{hvac\_heating\_shared\_system} & FanCoil & FanCoil & \\ \hline +\texttt{hvac\_cooling\_shared\_system} & FanCoil & FanCoil & \\ \end{customLongTable} diff --git a/docs/technical_reference_guide/characteristics/properties/HVAC Cooling Efficiency.tex b/docs/technical_reference_guide/characteristics/properties/HVAC Cooling Efficiency.tex index 92df10f67c..0844d2354d 100644 --- a/docs/technical_reference_guide/characteristics/properties/HVAC Cooling Efficiency.tex +++ b/docs/technical_reference_guide/characteristics/properties/HVAC Cooling Efficiency.tex @@ -4,5 +4,6 @@ \texttt{hvac\_cooling\_system\_type} & & The type of system. \\ \hline \texttt{hvac\_cooling\_system\_cooling\_efficiency\_type} & & The cooling efficiency type. Central ACs and Mini-Split ACs use SEER2 or EER2; Room ACs and Packaged Terminal ACs use CEER or EER. \\ \hline \texttt{hvac\_cooling\_system\_cooling\_efficiency} & & The rated cooling efficiency. \\ \hline -\texttt{hvac\_cooling\_system\_cooling\_compressor\_type} & & The compressor type of the cooling system. Applies to Central ACs and Mini-Split ACs. \\ +\texttt{hvac\_cooling\_system\_cooling\_compressor\_type} & & The compressor type of the cooling system. Applies to Central ACs and Mini-Split ACs. \\ \hline +\texttt{hvac\_cooling\_shared\_system} & & The type of shared cooling system. \\ \end{customLongTable} diff --git a/docs/technical_reference_guide/characteristics/properties/HVAC Heating Efficiency.tex b/docs/technical_reference_guide/characteristics/properties/HVAC Heating Efficiency.tex index e007860e0c..f9dc599b2c 100644 --- a/docs/technical_reference_guide/characteristics/properties/HVAC Heating Efficiency.tex +++ b/docs/technical_reference_guide/characteristics/properties/HVAC Heating Efficiency.tex @@ -16,7 +16,7 @@ \texttt{hvac\_heat\_pump\_backup\_type} & & The backup type. Use 'integrated' to represent e.g. built-in electric strip heat or dual-fuel integrated furnace. Use 'separate' to represent e.g. electric baseboard or boiler (based on Heating System 2). \\ \hline \texttt{hvac\_heat\_pump\_backup\_fuel} & & The fuel type of the integrated backup. \\ \hline \texttt{hvac\_heat\_pump\_backup\_heating\_efficiency} & Frac & The rated heating efficiency of the integrated backup. \\ \hline -\texttt{hvac\_heating\_shared\_system} & & The type of shared system. \\ \hline +\texttt{hvac\_heating\_shared\_system} & & The type of shared heating system. \\ \hline \texttt{hvac\_heat\_pump\_backup\_use\_existing\_system} & & Whether the heat pump uses the existing heating system as backup. If true and backup type of the heat pump is 'integrated', heat\_pump\_backup\_xxx arguments are assigned values based on the existing heating system. If true and backup type of the heat pump is 'separate', heating\_system\_2\_xxx arguments are assigned values based on the existing heating system. This argument is only applicable for heat pump upgrades. \\ \hline \texttt{hvac\_heat\_pump\_sizing\_is\_duct\_limited} & & Whether the (ducted) heat pump has an upper limit for autosized heating/cooling capacity and an adjusted blower fan efficiency (W/CFM) value. This argument is only applicable for heat pump upgrades. \\ \end{customLongTable} diff --git a/docs/technical_reference_guide/characteristics/properties/HVAC Shared Efficiencies.tex b/docs/technical_reference_guide/characteristics/properties/HVAC Shared Efficiencies.tex index 2c5a96cee1..75b16fae64 100644 --- a/docs/technical_reference_guide/characteristics/properties/HVAC Shared Efficiencies.tex +++ b/docs/technical_reference_guide/characteristics/properties/HVAC Shared Efficiencies.tex @@ -13,5 +13,6 @@ \texttt{hvac\_heat\_pump\_heating\_load\_served\_fraction} & & Fraction of load served by the HVAC system. \\ \hline \texttt{hvac\_heat\_pump\_cooling\_load\_served\_fraction} & & Fraction of load served by the HVAC system. \\ \hline \texttt{hvac\_heat\_pump\_backup\_type} & & The backup type. Use 'integrated' to represent e.g. built-in electric strip heat or dual-fuel integrated furnace. Use 'separate' to represent e.g. electric baseboard or boiler (based on Heating System 2). \\ \hline -\texttt{hvac\_heating\_shared\_system} & & The type of shared system. \\ +\texttt{hvac\_heating\_shared\_system} & & The type of shared heating system. \\ \hline +\texttt{hvac\_cooling\_shared\_system} & & The type of shared cooling system. \\ \end{customLongTable} diff --git a/measures/AddSharedSystem/measure.rb b/measures/AddSharedSystem/measure.rb new file mode 100644 index 0000000000..a1e61b8a0b --- /dev/null +++ b/measures/AddSharedSystem/measure.rb @@ -0,0 +1,120 @@ +# frozen_string_literal: true + +# see the URL below for information on how to write OpenStudio measures +# http://nrel.github.io/OpenStudio-user-documentation/reference/measure_writing_guide/ + +require 'openstudio' +require 'openstudio-standards' +require_relative '../../resources/buildstock' + +# start the measure +class AddSharedSystem < OpenStudio::Measure::ModelMeasure + # human readable name + def name + return 'Add Shared System' + end + + # human readable description + def description + return 'TODO' + end + + # human readable description of modeling approach + def modeler_description + return 'TODO' + end + + # define the arguments that the user will input + def arguments(model) # rubocop:disable Lint/UnusedMethodArgument + args = OpenStudio::Measure::OSArgumentVector.new + + # Allow same arguments as ResStockArguments measure + + full_measure_path = File.join(File.dirname(__FILE__), '..', 'ResStockArguments', 'measure.rb') + measure_arguments = get_measure_instance(full_measure_path).arguments(model) + measure_arguments.each do |arg| + arg.setRequired(false) + args << arg + end + + arg = OpenStudio::Measure::OSArgument.makeStringArgument('hpxml_path', false) + arg.setDisplayName('HPXML File Path') + arg.setDescription('Absolute/relative path of the HPXML file.') + args << arg + + return args + end + + # define what happens when the measure is run + def run(model, runner, user_arguments) + super(model, runner, user_arguments) + + # use the built-in error checking + if !runner.validateUserArguments(arguments(model), user_arguments) + return false + end + + # Assign the user inputs to variables + args = runner.getArgumentValues(arguments(model), user_arguments) + args = convert_args(arguments(model), args) + + if args[:hvac_heating_shared_system] == 'None' && args[:hvac_cooling_shared_system] == 'None' + register_value(runner, 'shared_system_type', 'None') + return true + end + + systems = { ['Baseboard', 'None'] => 'Boiler Baseboards Heating Only', + ['None', 'FanCoil'] => 'Fan Coil Cooling Only', + ['FanCoil', 'FanCoil'] => 'Fan Coil Heating and Cooling' } + system = systems[[args[:hvac_heating_shared_system], args[:hvac_cooling_shared_system]]] + if system.nil? + register_value(runner, 'shared_system_type', 'Unsupported') + return true + end + + if system == 'Boiler Baseboards Heating Only' + # method_a(model, args[:hvac_heating_system], args[:hvac_heating_system_fuel]) + + model.getSpaces.each do |space| + next unless space.name.to_s.include? 'conditioned' + + ee_def = OpenStudio::Model::ElectricEquipmentDefinition.new(model) + ee = OpenStudio::Model::ElectricEquipment.new(ee_def) + ee.setName("Test Object #{space.name}") + ee.setSpace(space) + ee_def.setName("Test Object #{space.name}") + ee_def.setDesignLevel(100) + ee.setSchedule(model.alwaysOnDiscreteSchedule) + ee.setEndUseSubcategory('AddSharedSystem') + end + + elsif system == 'Fan Coil Cooling Only' + # method_b(model, args[:hvac_cooling_system]) + elsif system == 'Fan Coil Heating and Cooling' + # method_c(model, args[:hvac_heating_system], args[:hvac_heating_system_fuel], args[:hvac_cooling_system]) + end + + register_value(runner, 'shared_system_type', system) + + return true + end + + def convert_args(measure_arguments, args) + measure_arguments.each do |arg| + arg_name = arg.name.to_sym + value = args[arg_name] + next if value.nil? + + case arg.type.valueName.downcase + when 'double' + args[arg_name] = Float(value) + when 'integer' + args[arg_name] = Integer(value) + end + end + return args + end +end + +# register the measure to be used by the application +AddSharedSystem.new.registerWithApplication diff --git a/measures/AddSharedSystem/measure.xml b/measures/AddSharedSystem/measure.xml new file mode 100644 index 0000000000..686c5ea598 --- /dev/null +++ b/measures/AddSharedSystem/measure.xml @@ -0,0 +1,12592 @@ + + + 3.1 + add_shared_system + 8ee9fa41-2685-42dd-acb4-8ed721810134 + 4f5665df-7ce2-4cea-8fab-3074c14d789a + 2026-01-15T16:54:00Z + BED8DECF + AddSharedSystem + Add Shared System + TODO + TODO + + + simulation_control_timestep + Simulation Control: Timestep + The timestep for the simulation; defaults to hourly calculations for fastest runtime. + Choice + min + false + false + 60 + + + 60 + 60 + + + 30 + 30 + + + 20 + 20 + + + 15 + 15 + + + 12 + 12 + + + 10 + 10 + + + 6 + 6 + + + 5 + 5 + + + 4 + 4 + + + 3 + 3 + + + 2 + 2 + + + 1 + 1 + + + + + simulation_control_run_period + Simulation Control: Run Period + Enter a date range like 'Mar 1 - May 31'. Defaults to the entire year. + String + false + false + Jan 1 - Dec 31 + + + location_zip_code + Location: Zip Code + Zip code of the home address. Either this or the EnergyPlus Weather (EPW) File Path input below must be provided. + String + false + false + + + location_epw_path + Location: EnergyPlus Weather (EPW) File Path + Path to the EPW file. Either this or the Zip Code input above must be provided. + String + false + false + + + location_site_type + Location: Site Type + The terrain/shielding of the home, for the infiltration model. Defaults to 'Suburban, Normal' for single-family detached and manufactured home and 'Suburban, Well-Shielded' for single-family attached and apartment units. + Choice + false + false + Default + + + Default + Default + + + Suburban, Normal + Suburban, Normal + + + Suburban, Well-Shielded + Suburban, Well-Shielded + + + Suburban, Exposed + Suburban, Exposed + + + Urban, Normal + Urban, Normal + + + Urban, Well-Shielded + Urban, Well-Shielded + + + Urban, Exposed + Urban, Exposed + + + Rural, Normal + Rural, Normal + + + Rural, Well-Shielded + Rural, Well-Shielded + + + Rural, Exposed + Rural, Exposed + + + + + location_soil_type + Location: Soil Type + The soil and moisture type. + Choice + false + false + Unknown + + + Unknown + Unknown + + + Clay, Dry + Clay, Dry + + + Clay, Mixed + Clay, Mixed + + + Clay, Wet + Clay, Wet + + + Gravel, Dry + Gravel, Dry + + + Gravel, Mixed + Gravel, Mixed + + + Gravel, Wet + Gravel, Wet + + + Loam, Dry + Loam, Dry + + + Loam, Mixed + Loam, Mixed + + + Loam, Wet + Loam, Wet + + + Sand, Dry + Sand, Dry + + + Sand, Mixed + Sand, Mixed + + + Sand, Wet + Sand, Wet + + + Silt, Dry + Silt, Dry + + + Silt, Mixed + Silt, Mixed + + + Silt, Wet + Silt, Wet + + + 0.5 Btu/hr-ft-F + 0.5 Btu/hr-ft-F + + + 0.8 Btu/hr-ft-F + 0.8 Btu/hr-ft-F + + + 1.1 Btu/hr-ft-F + 1.1 Btu/hr-ft-F + + + 1.4 Btu/hr-ft-F + 1.4 Btu/hr-ft-F + + + 1.7 Btu/hr-ft-F + 1.7 Btu/hr-ft-F + + + 2.0 Btu/hr-ft-F + 2.0 Btu/hr-ft-F + + + 2.3 Btu/hr-ft-F + 2.3 Btu/hr-ft-F + + + 2.6 Btu/hr-ft-F + 2.6 Btu/hr-ft-F + + + Detailed Example: Sand, Dry, 0.03 Diffusivity + Detailed Example: Sand, Dry, 0.03 Diffusivity + + + + + building_year_built + Building Construction: Year Built + The year the building was built. + Integer + false + false + 2026 + + + geometry_attached_walls + Geometry: Unit Attached Walls + For single-family attached and apartment units, the location(s) of the attached walls. + Choice + false + false + None + + + None + None + + + 1 Side: Front + 1 Side: Front + + + 1 Side: Back + 1 Side: Back + + + 1 Side: Left + 1 Side: Left + + + 1 Side: Right + 1 Side: Right + + + 2 Sides: Front, Left + 2 Sides: Front, Left + + + 2 Sides: Front, Right + 2 Sides: Front, Right + + + 2 Sides: Back, Left + 2 Sides: Back, Left + + + 2 Sides: Back, Right + 2 Sides: Back, Right + + + 2 Sides: Front, Back + 2 Sides: Front, Back + + + 2 Sides: Left, Right + 2 Sides: Left, Right + + + 3 Sides: Front, Back, Left + 3 Sides: Front, Back, Left + + + 3 Sides: Front, Back, Right + 3 Sides: Front, Back, Right + + + 3 Sides: Front, Left, Right + 3 Sides: Front, Left, Right + + + 3 Sides: Back, Left, Right + 3 Sides: Back, Left, Right + + + + + geometry_unit_aspect_ratio + Geometry: Unit Aspect Ratio + The ratio of front/back wall length to left/right wall length for the unit, excluding any protruding garage wall area. + Double + Frac + false + false + 2 + + + geometry_unit_direction + Geometry: Unit Direction + Direction of the front of the unit. + Choice + false + false + South + + + North + North + + + North-Northeast + North-Northeast + + + Northeast + Northeast + + + East-Northeast + East-Northeast + + + East + East + + + East-Southeast + East-Southeast + + + Southeast + Southeast + + + South-Southeast + South-Southeast + + + South + South + + + South-Southwest + South-Southwest + + + Southwest + Southwest + + + West-Southwest + West-Southwest + + + West + West + + + West-Northwest + West-Northwest + + + Northwest + Northwest + + + North-Northwest + North-Northwest + + + + + geometry_unit_num_bedrooms + Geometry: Unit Number of Bedrooms + The number of bedrooms in the unit. + Choice + false + false + 3 + + + 0 + 0 + + + 1 + 1 + + + 2 + 2 + + + 3 + 3 + + + 4 + 4 + + + 5 + 5 + + + 6 + 6 + + + 7 + 7 + + + 8 + 8 + + + 9 + 9 + + + 10 + 10 + + + 11 + 11 + + + 12 + 12 + + + + + geometry_unit_num_bathrooms + Geometry: Unit Number of Bathrooms + The number of bathrooms in the unit. Defaults to NumberofBedrooms/2 + 0.5. + Choice + false + false + Default + + + Default + Default + + + 0 + 0 + + + 1 + 1 + + + 2 + 2 + + + 3 + 3 + + + 4 + 4 + + + 5 + 5 + + + 6 + 6 + + + 7 + 7 + + + 8 + 8 + + + 9 + 9 + + + 10 + 10 + + + 11 + 11 + + + 12 + 12 + + + + + geometry_unit_num_occupants + Geometry: Unit Number of Occupants + The number of occupants in the unit. Defaults to an *asset* calculation 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. If provided, an *operational* calculation is instead performed in which the end use defaults reflect real-world data (where possible). + Choice + false + false + Default + + + Default + Default + + + 0 + 0 + + + 1 + 1 + + + 2 + 2 + + + 3 + 3 + + + 4 + 4 + + + 5 + 5 + + + 6 + 6 + + + 7 + 7 + + + 8 + 8 + + + 9 + 9 + + + 10 + 10 + + + 11 + 11 + + + 12 + 12 + + + + + geometry_ceiling_height + Geometry: Ceiling Height + Average distance from the floor to the ceiling. + Choice + false + false + 8.0 ft + + + 6.0 ft + 6.0 ft + + + 6.5 ft + 6.5 ft + + + 7.0 ft + 7.0 ft + + + 7.5 ft + 7.5 ft + + + 8.0 ft + 8.0 ft + + + 8.5 ft + 8.5 ft + + + 9.0 ft + 9.0 ft + + + 9.5 ft + 9.5 ft + + + 10.0 ft + 10.0 ft + + + 10.5 ft + 10.5 ft + + + 11.0 ft + 11.0 ft + + + 11.5 ft + 11.5 ft + + + 12.0 ft + 12.0 ft + + + 12.5 ft + 12.5 ft + + + 13.0 ft + 13.0 ft + + + 13.5 ft + 13.5 ft + + + 14.0 ft + 14.0 ft + + + 14.5 ft + 14.5 ft + + + 15.0 ft + 15.0 ft + + + + + geometry_garage_type + Geometry: Attached Garage + The type of attached garage. Only applies to single-family detached units. + Choice + false + false + None + + + None + None + + + 1 Car, Left, Fully Inset + 1 Car, Left, Fully Inset + + + 1 Car, Left, Half Protruding + 1 Car, Left, Half Protruding + + + 1 Car, Left, Fully Protruding + 1 Car, Left, Fully Protruding + + + 1 Car, Right, Fully Inset + 1 Car, Right, Fully Inset + + + 1 Car, Right, Half Protruding + 1 Car, Right, Half Protruding + + + 1 Car, Right, Fully Protruding + 1 Car, Right, Fully Protruding + + + 2 Car, Left, Fully Inset + 2 Car, Left, Fully Inset + + + 2 Car, Left, Half Protruding + 2 Car, Left, Half Protruding + + + 2 Car, Left, Fully Protruding + 2 Car, Left, Fully Protruding + + + 2 Car, Right, Fully Inset + 2 Car, Right, Fully Inset + + + 2 Car, Right, Half Protruding + 2 Car, Right, Half Protruding + + + 2 Car, Right, Fully Protruding + 2 Car, Right, Fully Protruding + + + 3 Car, Left, Fully Inset + 3 Car, Left, Fully Inset + + + 3 Car, Left, Half Protruding + 3 Car, Left, Half Protruding + + + 3 Car, Left, Fully Protruding + 3 Car, Left, Fully Protruding + + + 3 Car, Right, Fully Inset + 3 Car, Right, Fully Inset + + + 3 Car, Right, Half Protruding + 3 Car, Right, Half Protruding + + + 3 Car, Right, Fully Protruding + 3 Car, Right, Fully Protruding + + + + + geometry_foundation_type + Geometry: Foundation Type + The foundation type of the building. Garages are assumed to be over slab-on-grade. + Choice + false + false + Crawlspace, Vented + + + Slab-on-Grade + Slab-on-Grade + + + Crawlspace, Vented + Crawlspace, Vented + + + Crawlspace, Unvented + Crawlspace, Unvented + + + Crawlspace, Conditioned + Crawlspace, Conditioned + + + Basement, Unconditioned + Basement, Unconditioned + + + Basement, Unconditioned, Half Above-Grade + Basement, Unconditioned, Half Above-Grade + + + Basement, Conditioned + Basement, Conditioned + + + Basement, Conditioned, Half Above-Grade + Basement, Conditioned, Half Above-Grade + + + Ambient + Ambient + + + Above Apartment + Above Apartment + + + Belly and Wing, With Skirt + Belly and Wing, With Skirt + + + Belly and Wing, No Skirt + Belly and Wing, No Skirt + + + Detailed Example: Crawlspace, Vented, Above-Grade + Detailed Example: Crawlspace, Vented, Above-Grade + + + ASHRAE 140 Tests: Basement, Conditioned + ASHRAE 140 Tests: Basement, Conditioned + + + ASHRAE 140 Tests: Basement, Unconditioned + ASHRAE 140 Tests: Basement, Unconditioned + + + + + geometry_attic_type + Geometry: Attic Type + The attic/roof type of the building. + Choice + false + false + Attic, Vented, Gable + + + Flat Roof + Flat Roof + + + Attic, Vented, Gable + Attic, Vented, Gable + + + Attic, Vented, Hip + Attic, Vented, Hip + + + Attic, Unvented, Gable + Attic, Unvented, Gable + + + Attic, Unvented, Hip + Attic, Unvented, Hip + + + Attic, Conditioned, Gable + Attic, Conditioned, Gable + + + Attic, Conditioned, Hip + Attic, Conditioned, Hip + + + Below Apartment + Below Apartment + + + + + geometry_roof_pitch + Geometry: Roof Pitch + The roof pitch of the attic. Ignored if the building has a flat roof. + Choice + false + false + 6:12 + + + 1:12 + 1:12 + + + 2:12 + 2:12 + + + 3:12 + 3:12 + + + 4:12 + 4:12 + + + 5:12 + 5:12 + + + 6:12 + 6:12 + + + 7:12 + 7:12 + + + 8:12 + 8:12 + + + 9:12 + 9:12 + + + 10:12 + 10:12 + + + 11:12 + 11:12 + + + 12:12 + 12:12 + + + 13:12 + 13:12 + + + 14:12 + 14:12 + + + 15:12 + 15:12 + + + 16:12 + 16:12 + + + + + geometry_eaves + Geometry: Eaves + The type of eaves extending from the roof. + Choice + false + false + 2 ft + + + None + None + + + 1 ft + 1 ft + + + 2 ft + 2 ft + + + 3 ft + 3 ft + + + 4 ft + 4 ft + + + 5 ft + 5 ft + + + + + geometry_neighbor_buildings + Geometry: Neighbor Buildings + The presence and geometry of neighboring buildings, for shading purposes. + Choice + false + false + None + + + None + None + + + Left/Right at 2ft + Left/Right at 2ft + + + Left/Right at 4ft + Left/Right at 4ft + + + Left/Right at 5ft + Left/Right at 5ft + + + Left/Right at 7ft + Left/Right at 7ft + + + Left/Right at 10ft + Left/Right at 10ft + + + Left/Right at 12ft + Left/Right at 12ft + + + Left/Right at 15ft + Left/Right at 15ft + + + Left/Right at 20ft + Left/Right at 20ft + + + Left/Right at 25ft + Left/Right at 25ft + + + Left/Right at 27ft + Left/Right at 27ft + + + Left at 2ft + Left at 2ft + + + Left at 4ft + Left at 4ft + + + Left at 5ft + Left at 5ft + + + Left at 7ft + Left at 7ft + + + Left at 10ft + Left at 10ft + + + Left at 12ft + Left at 12ft + + + Left at 15ft + Left at 15ft + + + Left at 20ft + Left at 20ft + + + Left at 25ft + Left at 25ft + + + Left at 27ft + Left at 27ft + + + Right at 2ft + Right at 2ft + + + Right at 4ft + Right at 4ft + + + Right at 5ft + Right at 5ft + + + Right at 7ft + Right at 7ft + + + Right at 10ft + Right at 10ft + + + Right at 12ft + Right at 12ft + + + Right at 15ft + Right at 15ft + + + Right at 20ft + Right at 20ft + + + Right at 25ft + Right at 25ft + + + Right at 27ft + Right at 27ft + + + Detailed Example: Left/Right at 25ft, Front/Back at 80ft, 12ft Height + Detailed Example: Left/Right at 25ft, Front/Back at 80ft, 12ft Height + + + + + geometry_window_areas_or_wwrs + Geometry: Window Areas or WWRs + The amount of window area on the unit's front/back/left/right facades. Use a comma-separated list like '0.2, 0.2, 0.1, 0.1' to specify Window-to-Wall Ratios (WWR) or '108, 108, 72, 72' to specify absolute areas. If a facade is adiabatic, the value will be ignored. + String + ft2 or frac + false + false + 0.15, 0.15, 0.15, 0.15 + + + geometry_skylight_areas + Geometry: Skylight Areas + The amount of skylight area on the unit's front/back/left/right roofs. Use a comma-separated list like '50, 0, 0, 0'. + String + ft2 + false + false + 0, 0, 0, 0 + + + geometry_door_area + Geometry: Doors Area + The area of the opaque door(s). Any door glazing (e.g., sliding glass doors) should be captured as window area. + Double + ft2 + false + false + 20 + + + enclosure_floor_over_foundation + Enclosure: Floor Over Foundation + The type and insulation level of the floor over the foundation (e.g., crawlspace or basement). + Choice + false + false + Wood Frame, Uninsulated + + + Wood Frame, Uninsulated + Wood Frame, Uninsulated + + + Wood Frame, R-11 + Wood Frame, R-11 + + + Wood Frame, R-13 + Wood Frame, R-13 + + + Wood Frame, R-15 + Wood Frame, R-15 + + + Wood Frame, R-19 + Wood Frame, R-19 + + + Wood Frame, R-21 + Wood Frame, R-21 + + + Wood Frame, R-25 + Wood Frame, R-25 + + + Wood Frame, R-30 + Wood Frame, R-30 + + + Wood Frame, R-35 + Wood Frame, R-35 + + + Wood Frame, R-38 + Wood Frame, R-38 + + + Wood Frame, IECC U-0.064 + Wood Frame, IECC U-0.064 + + + Wood Frame, IECC U-0.047 + Wood Frame, IECC U-0.047 + + + Wood Frame, IECC U-0.033 + Wood Frame, IECC U-0.033 + + + Wood Frame, IECC U-0.028 + Wood Frame, IECC U-0.028 + + + HERS DSE Tests: Wood Frame, R-11 + HERS DSE Tests: Wood Frame, R-11 + + + ASHRAE 140 Tests: Wood Frame, Uninsulated + ASHRAE 140 Tests: Wood Frame, Uninsulated + + + ASHRAE 140 Tests: Wood Frame, R-11 + ASHRAE 140 Tests: Wood Frame, R-11 + + + + + enclosure_floor_over_garage + Enclosure: Floor Over Garage + The type and insulation level of the floor over the garage. + Choice + false + false + Wood Frame, Uninsulated + + + Wood Frame, Uninsulated + Wood Frame, Uninsulated + + + Wood Frame, R-11 + Wood Frame, R-11 + + + Wood Frame, R-13 + Wood Frame, R-13 + + + Wood Frame, R-15 + Wood Frame, R-15 + + + Wood Frame, R-19 + Wood Frame, R-19 + + + Wood Frame, R-21 + Wood Frame, R-21 + + + Wood Frame, R-25 + Wood Frame, R-25 + + + Wood Frame, R-30 + Wood Frame, R-30 + + + Wood Frame, R-35 + Wood Frame, R-35 + + + Wood Frame, R-38 + Wood Frame, R-38 + + + Wood Frame, IECC U-0.064 + Wood Frame, IECC U-0.064 + + + Wood Frame, IECC U-0.047 + Wood Frame, IECC U-0.047 + + + Wood Frame, IECC U-0.033 + Wood Frame, IECC U-0.033 + + + + + enclosure_foundation_wall + Enclosure: Foundation Wall + The type and insulation level of the foundation walls. + Choice + false + false + Solid Concrete, Uninsulated + + + Solid Concrete, Uninsulated + Solid Concrete, Uninsulated + + + Solid Concrete, Half Wall, R-5 + Solid Concrete, Half Wall, R-5 + + + Solid Concrete, Half Wall, R-10 + Solid Concrete, Half Wall, R-10 + + + Solid Concrete, Half Wall, R-15 + Solid Concrete, Half Wall, R-15 + + + Solid Concrete, Half Wall, R-20 + Solid Concrete, Half Wall, R-20 + + + Solid Concrete, Whole Wall, R-5 + Solid Concrete, Whole Wall, R-5 + + + Solid Concrete, Whole Wall, R-10 + Solid Concrete, Whole Wall, R-10 + + + Solid Concrete, Whole Wall, R-10.2, Interior + Solid Concrete, Whole Wall, R-10.2, Interior + + + Solid Concrete, Whole Wall, R-15 + Solid Concrete, Whole Wall, R-15 + + + Solid Concrete, Whole Wall, R-20 + Solid Concrete, Whole Wall, R-20 + + + Solid Concrete, Assembly R-10.69 + Solid Concrete, Assembly R-10.69 + + + Concrete Block Foam Core, Whole Wall, R-18.9 + Concrete Block Foam Core, Whole Wall, R-18.9 + + + + + enclosure_rim_joist + Enclosure: Rim Joists + The type and insulation level of the rim joists. + Choice + false + false + Uninsulated + + + Uninsulated + Uninsulated + + + Interior, R-7 + Interior, R-7 + + + Interior, R-11 + Interior, R-11 + + + Interior, R-13 + Interior, R-13 + + + Interior, R-15 + Interior, R-15 + + + Interior, R-19 + Interior, R-19 + + + Interior, R-21 + Interior, R-21 + + + Exterior, R-5 + Exterior, R-5 + + + Exterior, R-10 + Exterior, R-10 + + + Exterior, R-15 + Exterior, R-15 + + + Exterior, R-20 + Exterior, R-20 + + + ASHRAE 140 Tests: Uninsulated + ASHRAE 140 Tests: Uninsulated + + + ASHRAE 140 Tests: R-11 + ASHRAE 140 Tests: R-11 + + + + + enclosure_slab + Enclosure: Slab + The type and insulation level of the slab. Applies to slab-on-grade as well as basement/crawlspace foundations. Under Slab insulation is placed horizontally from the edge of the slab inward. Perimeter insulation is placed vertically from the top of the slab downward. Whole Slab insulation is placed horizontally below the entire slab area. + Choice + false + false + Uninsulated + + + Uninsulated + Uninsulated + + + Under Slab, 2ft, R-5 + Under Slab, 2ft, R-5 + + + Under Slab, 2ft, R-10 + Under Slab, 2ft, R-10 + + + Under Slab, 2ft, R-15 + Under Slab, 2ft, R-15 + + + Under Slab, 2ft, R-20 + Under Slab, 2ft, R-20 + + + Under Slab, 4ft, R-5 + Under Slab, 4ft, R-5 + + + Under Slab, 4ft, R-10 + Under Slab, 4ft, R-10 + + + Under Slab, 4ft, R-15 + Under Slab, 4ft, R-15 + + + Under Slab, 4ft, R-20 + Under Slab, 4ft, R-20 + + + Perimeter, 2ft, R-5 + Perimeter, 2ft, R-5 + + + Perimeter, 2ft, R-10 + Perimeter, 2ft, R-10 + + + Perimeter, 2ft, R-15 + Perimeter, 2ft, R-15 + + + Perimeter, 2ft, R-20 + Perimeter, 2ft, R-20 + + + Perimeter, 4ft, R-5 + Perimeter, 4ft, R-5 + + + Perimeter, 4ft, R-10 + Perimeter, 4ft, R-10 + + + Perimeter, 4ft, R-15 + Perimeter, 4ft, R-15 + + + Perimeter, 4ft, R-20 + Perimeter, 4ft, R-20 + + + Whole Slab, R-5 + Whole Slab, R-5 + + + Whole Slab, R-10 + Whole Slab, R-10 + + + Whole Slab, R-15 + Whole Slab, R-15 + + + Whole Slab, R-20 + Whole Slab, R-20 + + + Whole Slab, R-30 + Whole Slab, R-30 + + + Whole Slab, R-40 + Whole Slab, R-40 + + + + + enclosure_carpet + Enclosure: Carpet + The amount of carpet. Applies to floors/slabs adjacent to conditioned space. The R-value of the carpet will be ignored if a floor option with an IECC U-factor is selected. + Choice + false + false + 80% Carpet + + + None + None + + + 20% Carpet + 20% Carpet + + + 40% Carpet + 40% Carpet + + + 60% Carpet + 60% Carpet + + + 80% Carpet + 80% Carpet + + + 100% Carpet + 100% Carpet + + + Detailed Example: 100% Carpet, R-2.5 + Detailed Example: 100% Carpet, R-2.5 + + + ASHRAE 140 Tests + ASHRAE 140 Tests + + + + + enclosure_ceiling + Enclosure: Ceiling + The type and insulation level of the ceiling (attic floor). + Choice + false + false + R-30 + + + Uninsulated + Uninsulated + + + R-7 + R-7 + + + R-13 + R-13 + + + R-19 + R-19 + + + R-30 + R-30 + + + R-38 + R-38 + + + R-49 + R-49 + + + R-60 + R-60 + + + IECC U-0.035 + IECC U-0.035 + + + IECC U-0.030 + IECC U-0.030 + + + IECC U-0.026 + IECC U-0.026 + + + IECC U-0.024 + IECC U-0.024 + + + ASHRAE 140 Tests: R-11 + ASHRAE 140 Tests: R-11 + + + ASHRAE 140 Tests: R-19 + ASHRAE 140 Tests: R-19 + + + ASHRAE 140 Tests: R-19 + R-38 + ASHRAE 140 Tests: R-19 + R-38 + + + + + enclosure_roof + Enclosure: Roof + The type and insulation level of the roof. + Choice + false + false + Uninsulated + + + Uninsulated + Uninsulated + + + R-7 + R-7 + + + R-13 + R-13 + + + R-19 + R-19 + + + R-30 + R-30 + + + R-38 + R-38 + + + R-49 + R-49 + + + IECC U-0.035 + IECC U-0.035 + + + IECC U-0.030 + IECC U-0.030 + + + IECC U-0.026 + IECC U-0.026 + + + IECC U-0.024 + IECC U-0.024 + + + ASHRAE 140 Tests: Uninsulated + ASHRAE 140 Tests: Uninsulated + + + + + enclosure_roof_material + Enclosure: Roof Material + The material type and color of the roof. + Choice + false + false + Asphalt/Fiberglass Shingles, Medium + + + Asphalt/Fiberglass Shingles, Dark + Asphalt/Fiberglass Shingles, Dark + + + Asphalt/Fiberglass Shingles, Medium Dark + Asphalt/Fiberglass Shingles, Medium Dark + + + Asphalt/Fiberglass Shingles, Medium + Asphalt/Fiberglass Shingles, Medium + + + Asphalt/Fiberglass Shingles, Medium Light + Asphalt/Fiberglass Shingles, Medium Light + + + Asphalt/Fiberglass Shingles, Light + Asphalt/Fiberglass Shingles, Light + + + Asphalt/Fiberglass Shingles, Reflective + Asphalt/Fiberglass Shingles, Reflective + + + Tile/Slate, Dark + Tile/Slate, Dark + + + Tile/Slate, Medium Dark + Tile/Slate, Medium Dark + + + Tile/Slate, Medium + Tile/Slate, Medium + + + Tile/Slate, Medium Light + Tile/Slate, Medium Light + + + Tile/Slate, Light + Tile/Slate, Light + + + Tile/Slate, Reflective + Tile/Slate, Reflective + + + Metal, Dark + Metal, Dark + + + Metal, Medium Dark + Metal, Medium Dark + + + Metal, Medium + Metal, Medium + + + Metal, Medium Light + Metal, Medium Light + + + Metal, Light + Metal, Light + + + Metal, Reflective + Metal, Reflective + + + Wood Shingles/Shakes, Dark + Wood Shingles/Shakes, Dark + + + Wood Shingles/Shakes, Medium Dark + Wood Shingles/Shakes, Medium Dark + + + Wood Shingles/Shakes, Medium + Wood Shingles/Shakes, Medium + + + Wood Shingles/Shakes, Medium Light + Wood Shingles/Shakes, Medium Light + + + Wood Shingles/Shakes, Light + Wood Shingles/Shakes, Light + + + Wood Shingles/Shakes, Reflective + Wood Shingles/Shakes, Reflective + + + Shingles, Dark + Shingles, Dark + + + Shingles, Medium Dark + Shingles, Medium Dark + + + Shingles, Medium + Shingles, Medium + + + Shingles, Medium Light + Shingles, Medium Light + + + Shingles, Light + Shingles, Light + + + Shingles, Reflective + Shingles, Reflective + + + Synthetic Sheeting, Dark + Synthetic Sheeting, Dark + + + Synthetic Sheeting, Medium Dark + Synthetic Sheeting, Medium Dark + + + Synthetic Sheeting, Medium + Synthetic Sheeting, Medium + + + Synthetic Sheeting, Medium Light + Synthetic Sheeting, Medium Light + + + Synthetic Sheeting, Light + Synthetic Sheeting, Light + + + Synthetic Sheeting, Reflective + Synthetic Sheeting, Reflective + + + EPS Sheathing, Dark + EPS Sheathing, Dark + + + EPS Sheathing, Medium Dark + EPS Sheathing, Medium Dark + + + EPS Sheathing, Medium + EPS Sheathing, Medium + + + EPS Sheathing, Medium Light + EPS Sheathing, Medium Light + + + EPS Sheathing, Light + EPS Sheathing, Light + + + EPS Sheathing, Reflective + EPS Sheathing, Reflective + + + Concrete, Dark + Concrete, Dark + + + Concrete, Medium Dark + Concrete, Medium Dark + + + Concrete, Medium + Concrete, Medium + + + Concrete, Medium Light + Concrete, Medium Light + + + Concrete, Light + Concrete, Light + + + Concrete, Reflective + Concrete, Reflective + + + Cool Roof + Cool Roof + + + ASHRAE 140 Tests: Low Solar Absorptance + ASHRAE 140 Tests: Low Solar Absorptance + + + ASHRAE 140 Tests: Typical Solar Absorptance + ASHRAE 140 Tests: Typical Solar Absorptance + + + HERS Reference + HERS Reference + + + + + enclosure_radiant_barrier + Enclosure: Radiant Barrier + The type of radiant barrier in the attic. + Choice + false + false + None + + + None + None + + + Attic Roof Only + Attic Roof Only + + + Attic Roof and Gable Walls + Attic Roof and Gable Walls + + + Attic Floor + Attic Floor + + + + + enclosure_wall + Enclosure: Walls + The type and insulation level of the walls. + Choice + false + false + Wood Stud, R-13 + + + Wood Stud, Uninsulated + Wood Stud, Uninsulated + + + Wood Stud, R-3 + Wood Stud, R-3 + + + Wood Stud, R-7 + Wood Stud, R-7 + + + Wood Stud, R-11 + Wood Stud, R-11 + + + Wood Stud, R-13 + Wood Stud, R-13 + + + Wood Stud, R-15 + Wood Stud, R-15 + + + Wood Stud, R-19 + Wood Stud, R-19 + + + Wood Stud, R-21 + Wood Stud, R-21 + + + Double Wood Stud, R-33 + Double Wood Stud, R-33 + + + Double Wood Stud, R-39 + Double Wood Stud, R-39 + + + Double Wood Stud, R-45 + Double Wood Stud, R-45 + + + Steel Stud, Uninsulated + Steel Stud, Uninsulated + + + Steel Stud, R-11 + Steel Stud, R-11 + + + Steel Stud, R-13 + Steel Stud, R-13 + + + Steel Stud, R-15 + Steel Stud, R-15 + + + Steel Stud, R-19 + Steel Stud, R-19 + + + Steel Stud, R-21 + Steel Stud, R-21 + + + Steel Stud, R-25 + Steel Stud, R-25 + + + Concrete Masonry Unit, Hollow or Concrete Filled, Uninsulated + Concrete Masonry Unit, Hollow or Concrete Filled, Uninsulated + + + Concrete Masonry Unit, Hollow or Concrete Filled, R-7 + Concrete Masonry Unit, Hollow or Concrete Filled, R-7 + + + Concrete Masonry Unit, Hollow or Concrete Filled, R-11 + Concrete Masonry Unit, Hollow or Concrete Filled, R-11 + + + Concrete Masonry Unit, Hollow or Concrete Filled, R-13 + Concrete Masonry Unit, Hollow or Concrete Filled, R-13 + + + Concrete Masonry Unit, Hollow or Concrete Filled, R-15 + Concrete Masonry Unit, Hollow or Concrete Filled, R-15 + + + Concrete Masonry Unit, Hollow or Concrete Filled, R-19 + Concrete Masonry Unit, Hollow or Concrete Filled, R-19 + + + Concrete Masonry Unit, Perlite Filled, Uninsulated + Concrete Masonry Unit, Perlite Filled, Uninsulated + + + Concrete Masonry Unit, Perlite Filled, R-7 + Concrete Masonry Unit, Perlite Filled, R-7 + + + Concrete Masonry Unit, Perlite Filled, R-11 + Concrete Masonry Unit, Perlite Filled, R-11 + + + Concrete Masonry Unit, Perlite Filled, R-13 + Concrete Masonry Unit, Perlite Filled, R-13 + + + Concrete Masonry Unit, Perlite Filled, R-15 + Concrete Masonry Unit, Perlite Filled, R-15 + + + Concrete Masonry Unit, Perlite Filled, R-19 + Concrete Masonry Unit, Perlite Filled, R-19 + + + Structural Insulated Panel, R-17.5 + Structural Insulated Panel, R-17.5 + + + Structural Insulated Panel, R-27.5 + Structural Insulated Panel, R-27.5 + + + Structural Insulated Panel, R-37.5 + Structural Insulated Panel, R-37.5 + + + Structural Insulated Panel, R-47.5 + Structural Insulated Panel, R-47.5 + + + Insulated Concrete Forms, R-5 per side + Insulated Concrete Forms, R-5 per side + + + Insulated Concrete Forms, R-10 per side + Insulated Concrete Forms, R-10 per side + + + Insulated Concrete Forms, R-15 per side + Insulated Concrete Forms, R-15 per side + + + Insulated Concrete Forms, R-20 per side + Insulated Concrete Forms, R-20 per side + + + Structural Brick, Uninsulated + Structural Brick, Uninsulated + + + Structural Brick, R-7 + Structural Brick, R-7 + + + Structural Brick, R-11 + Structural Brick, R-11 + + + Structural Brick, R-15 + Structural Brick, R-15 + + + Structural Brick, R-19 + Structural Brick, R-19 + + + Wood Stud, IECC U-0.084 + Wood Stud, IECC U-0.084 + + + Wood Stud, IECC U-0.082 + Wood Stud, IECC U-0.082 + + + Wood Stud, IECC U-0.060 + Wood Stud, IECC U-0.060 + + + Wood Stud, IECC U-0.057 + Wood Stud, IECC U-0.057 + + + Wood Stud, IECC U-0.048 + Wood Stud, IECC U-0.048 + + + Wood Stud, IECC U-0.045 + Wood Stud, IECC U-0.045 + + + ASHRAE 140 Tests: Wood Stud, Uninsulated + ASHRAE 140 Tests: Wood Stud, Uninsulated + + + ASHRAE 140 Tests: Wood Stud, R-11 + ASHRAE 140 Tests: Wood Stud, R-11 + + + ASHRAE 140 Tests: Wood Stud, R-18 + ASHRAE 140 Tests: Wood Stud, R-18 + + + + + enclosure_wall_continuous_insulation + Enclosure: Wall Continuous Insulation + The insulation level of the wall continuous insulation. The R-value of the continuous insulation will be ignored if a wall option with an IECC U-factor is selected. + Choice + false + false + Uninsulated + + + Uninsulated + Uninsulated + + + R-5 + R-5 + + + R-6 + R-6 + + + R-7 + R-7 + + + R-10 + R-10 + + + R-12 + R-12 + + + R-14 + R-14 + + + R-15 + R-15 + + + R-18 + R-18 + + + R-20 + R-20 + + + R-21 + R-21 + + + ASHRAE 140 Tests: R-7.2 + ASHRAE 140 Tests: R-7.2 + + + + + enclosure_wall_siding + Enclosure: Wall Siding + The type, color, and insulation level of the wall siding. The R-value of the siding will be ignored if a wall option with an IECC U-factor is selected. + Choice + false + false + Wood, Medium + + + None + None + + + Vinyl, Dark + Vinyl, Dark + + + Vinyl, Medium Dark + Vinyl, Medium Dark + + + Vinyl, Medium + Vinyl, Medium + + + Vinyl, Medium Light + Vinyl, Medium Light + + + Vinyl, Light + Vinyl, Light + + + Vinyl, Reflective + Vinyl, Reflective + + + Wood, Dark + Wood, Dark + + + Wood, Medium Dark + Wood, Medium Dark + + + Wood, Medium + Wood, Medium + + + Wood, Medium Light + Wood, Medium Light + + + Wood, Light + Wood, Light + + + Wood, Reflective + Wood, Reflective + + + Brick, Dark + Brick, Dark + + + Brick, Medium Dark + Brick, Medium Dark + + + Brick, Medium + Brick, Medium + + + Brick, Medium Light + Brick, Medium Light + + + Brick, Light + Brick, Light + + + Brick, Reflective + Brick, Reflective + + + Stucco, Dark + Stucco, Dark + + + Stucco, Medium Dark + Stucco, Medium Dark + + + Stucco, Medium + Stucco, Medium + + + Stucco, Medium Light + Stucco, Medium Light + + + Stucco, Light + Stucco, Light + + + Stucco, Reflective + Stucco, Reflective + + + Synthetic Stucco, Dark + Synthetic Stucco, Dark + + + Synthetic Stucco, Medium Dark + Synthetic Stucco, Medium Dark + + + Synthetic Stucco, Medium + Synthetic Stucco, Medium + + + Synthetic Stucco, Medium Light + Synthetic Stucco, Medium Light + + + Synthetic Stucco, Light + Synthetic Stucco, Light + + + Synthetic Stucco, Reflective + Synthetic Stucco, Reflective + + + Fiber-Cement, Dark + Fiber-Cement, Dark + + + Fiber-Cement, Medium Dark + Fiber-Cement, Medium Dark + + + Fiber-Cement, Medium + Fiber-Cement, Medium + + + Fiber-Cement, Medium Light + Fiber-Cement, Medium Light + + + Fiber-Cement, Light + Fiber-Cement, Light + + + Fiber-Cement, Reflective + Fiber-Cement, Reflective + + + Composition Shingle, Dark + Composition Shingle, Dark + + + Composition Shingle, Medium Dark + Composition Shingle, Medium Dark + + + Composition Shingle, Medium + Composition Shingle, Medium + + + Composition Shingle, Medium Light + Composition Shingle, Medium Light + + + Composition Shingle, Light + Composition Shingle, Light + + + Composition Shingle, Reflective + Composition Shingle, Reflective + + + Aluminum, Dark + Aluminum, Dark + + + Aluminum, Medium Dark + Aluminum, Medium Dark + + + Aluminum, Medium + Aluminum, Medium + + + Aluminum, Medium Light + Aluminum, Medium Light + + + Aluminum, Light + Aluminum, Light + + + Aluminum, Reflective + Aluminum, Reflective + + + Stone, Dark + Stone, Dark + + + Stone, Medium Dark + Stone, Medium Dark + + + Stone, Medium + Stone, Medium + + + Stone, Medium Light + Stone, Medium Light + + + Stone, Light + Stone, Light + + + Stone, Reflective + Stone, Reflective + + + Asbestos, Dark + Asbestos, Dark + + + Asbestos, Medium Dark + Asbestos, Medium Dark + + + Asbestos, Medium + Asbestos, Medium + + + Asbestos, Medium Light + Asbestos, Medium Light + + + Asbestos, Light + Asbestos, Light + + + Asbestos, Reflective + Asbestos, Reflective + + + Masonite, Dark + Masonite, Dark + + + Masonite, Medium Dark + Masonite, Medium Dark + + + Masonite, Medium + Masonite, Medium + + + Masonite, Medium Light + Masonite, Medium Light + + + Masonite, Light + Masonite, Light + + + Masonite, Reflective + Masonite, Reflective + + + ASHRAE 140 Tests: Low Solar Absorptance + ASHRAE 140 Tests: Low Solar Absorptance + + + ASHRAE 140 Tests: Typical Solar Absorptance + ASHRAE 140 Tests: Typical Solar Absorptance + + + HERS Reference + HERS Reference + + + + + enclosure_window + Enclosure: Windows + The type of windows. + Choice + false + false + Double, Clear, Metal, Air + + + Single, Clear, Metal + Single, Clear, Metal + + + Single, Clear, Non-Metal + Single, Clear, Non-Metal + + + Double, Clear, Metal, Air + Double, Clear, Metal, Air + + + Double, Clear, Thermal-Break, Air + Double, Clear, Thermal-Break, Air + + + Double, Clear, Non-Metal, Air + Double, Clear, Non-Metal, Air + + + Double, Low-E, Non-Metal, Air, High Gain + Double, Low-E, Non-Metal, Air, High Gain + + + Double, Low-E, Non-Metal, Air, Med Gain + Double, Low-E, Non-Metal, Air, Med Gain + + + Double, Low-E, Non-Metal, Air, Low Gain + Double, Low-E, Non-Metal, Air, Low Gain + + + Double, Low-E, Non-Metal, Gas, High Gain + Double, Low-E, Non-Metal, Gas, High Gain + + + Double, Low-E, Non-Metal, Gas, Med Gain + Double, Low-E, Non-Metal, Gas, Med Gain + + + Double, Low-E, Non-Metal, Gas, Low Gain + Double, Low-E, Non-Metal, Gas, Low Gain + + + Double, Low-E, Insulated, Air, High Gain + Double, Low-E, Insulated, Air, High Gain + + + Double, Low-E, Insulated, Air, Med Gain + Double, Low-E, Insulated, Air, Med Gain + + + Double, Low-E, Insulated, Air, Low Gain + Double, Low-E, Insulated, Air, Low Gain + + + Double, Low-E, Insulated, Gas, High Gain + Double, Low-E, Insulated, Gas, High Gain + + + Double, Low-E, Insulated, Gas, Med Gain + Double, Low-E, Insulated, Gas, Med Gain + + + Double, Low-E, Insulated, Gas, Low Gain + Double, Low-E, Insulated, Gas, Low Gain + + + Triple, Low-E, Non-Metal, Air, High Gain + Triple, Low-E, Non-Metal, Air, High Gain + + + Triple, Low-E, Non-Metal, Air, Low Gain + Triple, Low-E, Non-Metal, Air, Low Gain + + + Triple, Low-E, Non-Metal, Gas, High Gain + Triple, Low-E, Non-Metal, Gas, High Gain + + + Triple, Low-E, Non-Metal, Gas, Low Gain + Triple, Low-E, Non-Metal, Gas, Low Gain + + + Triple, Low-E, Insulated, Air, High Gain + Triple, Low-E, Insulated, Air, High Gain + + + Triple, Low-E, Insulated, Air, Low Gain + Triple, Low-E, Insulated, Air, Low Gain + + + Triple, Low-E, Insulated, Gas, High Gain + Triple, Low-E, Insulated, Gas, High Gain + + + Triple, Low-E, Insulated, Gas, Low Gain + Triple, Low-E, Insulated, Gas, Low Gain + + + IECC U-1.20, SHGC 0.40 + IECC U-1.20, SHGC 0.40 + + + IECC U-1.20, SHGC 0.30 + IECC U-1.20, SHGC 0.30 + + + IECC U-1.20, SHGC 0.25 + IECC U-1.20, SHGC 0.25 + + + IECC U-0.75, SHGC 0.40 + IECC U-0.75, SHGC 0.40 + + + IECC U-0.65, SHGC 0.40 + IECC U-0.65, SHGC 0.40 + + + IECC U-0.65, SHGC 0.30 + IECC U-0.65, SHGC 0.30 + + + IECC U-0.50, SHGC 0.30 + IECC U-0.50, SHGC 0.30 + + + IECC U-0.50, SHGC 0.25 + IECC U-0.50, SHGC 0.25 + + + IECC U-0.40, SHGC 0.40 + IECC U-0.40, SHGC 0.40 + + + IECC U-0.40, SHGC 0.25 + IECC U-0.40, SHGC 0.25 + + + IECC U-0.35, SHGC 0.40 + IECC U-0.35, SHGC 0.40 + + + IECC U-0.35, SHGC 0.30 + IECC U-0.35, SHGC 0.30 + + + IECC U-0.35, SHGC 0.25 + IECC U-0.35, SHGC 0.25 + + + IECC U-0.32, SHGC 0.25 + IECC U-0.32, SHGC 0.25 + + + IECC U-0.30, SHGC 0.25 + IECC U-0.30, SHGC 0.25 + + + EnergyStar, North-Central + EnergyStar, North-Central + + + EnergyStar, Northern + EnergyStar, Northern + + + EnergyStar, South-Central + EnergyStar, South-Central + + + EnergyStar, Southern + EnergyStar, Southern + + + ASHRAE 140 Tests: Single, Clear + ASHRAE 140 Tests: Single, Clear + + + ASHRAE 140 Tests: Double, Low-E + ASHRAE 140 Tests: Double, Low-E + + + + + enclosure_window_natural_ventilation + Enclosure: Window Natural Ventilation + The amount of natural ventilation from occupants opening operable windows when outdoor conditions are favorable. + Choice + false + false + 67% Operable Windows + + + None + None + + + 33% Operable Windows + 33% Operable Windows + + + 50% Operable Windows + 50% Operable Windows + + + 67% Operable Windows + 67% Operable Windows + + + 100% Operable Windows + 100% Operable Windows + + + Detailed Example: 67% Operable Windows, 7 Days/Week + Detailed Example: 67% Operable Windows, 7 Days/Week + + + + + enclosure_window_interior_shading + Enclosure: Window Interior Shading + The type of window interior shading. If shading coefficients are selected, note they indicate the reduction in solar gain (e.g., 0.7 indicates 30% reduction). + Choice + false + false + Curtains, Light + + + None + None + + + Curtains, Light + Curtains, Light + + + Curtains, Medium + Curtains, Medium + + + Curtains, Dark + Curtains, Dark + + + Shades, Light + Shades, Light + + + Shades, Medium + Shades, Medium + + + Shades, Dark + Shades, Dark + + + Blinds, Light + Blinds, Light + + + Blinds, Medium + Blinds, Medium + + + Blinds, Dark + Blinds, Dark + + + Summer 0.5, Winter 0.5 + Summer 0.5, Winter 0.5 + + + Summer 0.5, Winter 0.6 + Summer 0.5, Winter 0.6 + + + Summer 0.5, Winter 0.7 + Summer 0.5, Winter 0.7 + + + Summer 0.5, Winter 0.8 + Summer 0.5, Winter 0.8 + + + Summer 0.5, Winter 0.9 + Summer 0.5, Winter 0.9 + + + Summer 0.6, Winter 0.6 + Summer 0.6, Winter 0.6 + + + Summer 0.6, Winter 0.7 + Summer 0.6, Winter 0.7 + + + Summer 0.6, Winter 0.8 + Summer 0.6, Winter 0.8 + + + Summer 0.6, Winter 0.9 + Summer 0.6, Winter 0.9 + + + Summer 0.7, Winter 0.7 + Summer 0.7, Winter 0.7 + + + Summer 0.7, Winter 0.8 + Summer 0.7, Winter 0.8 + + + Summer 0.7, Winter 0.9 + Summer 0.7, Winter 0.9 + + + Summer 0.8, Winter 0.8 + Summer 0.8, Winter 0.8 + + + Summer 0.8, Winter 0.9 + Summer 0.8, Winter 0.9 + + + Summer 0.9, Winter 0.9 + Summer 0.9, Winter 0.9 + + + + + enclosure_window_exterior_shading + Enclosure: Window Exterior Shading + The type of window exterior shading. If shading coefficients are selected, note they indicate the reduction in solar gain (e.g., 0.7 indicates 30% reduction). + Choice + false + false + None + + + None + None + + + Solar Film + Solar Film + + + Solar Screen + Solar Screen + + + Summer 0.25, Winter 0.25 + Summer 0.25, Winter 0.25 + + + Summer 0.25, Winter 0.50 + Summer 0.25, Winter 0.50 + + + Summer 0.25, Winter 0.75 + Summer 0.25, Winter 0.75 + + + Summer 0.25, Winter 1.00 + Summer 0.25, Winter 1.00 + + + Summer 0.50, Winter 0.25 + Summer 0.50, Winter 0.25 + + + Summer 0.50, Winter 0.50 + Summer 0.50, Winter 0.50 + + + Summer 0.50, Winter 0.75 + Summer 0.50, Winter 0.75 + + + Summer 0.50, Winter 1.00 + Summer 0.50, Winter 1.00 + + + Summer 0.75, Winter 0.25 + Summer 0.75, Winter 0.25 + + + Summer 0.75, Winter 0.50 + Summer 0.75, Winter 0.50 + + + Summer 0.75, Winter 0.75 + Summer 0.75, Winter 0.75 + + + Summer 0.75, Winter 1.00 + Summer 0.75, Winter 1.00 + + + Summer 1.00, Winter 0.25 + Summer 1.00, Winter 0.25 + + + Summer 1.00, Winter 0.50 + Summer 1.00, Winter 0.50 + + + Summer 1.00, Winter 0.75 + Summer 1.00, Winter 0.75 + + + Summer 1.00, Winter 1.00 + Summer 1.00, Winter 1.00 + + + + + enclosure_window_insect_screens + Enclosure: Window Insect Screens + The type of window insect screens. + Choice + false + false + None + + + None + None + + + Exterior + Exterior + + + Interior + Interior + + + + + enclosure_window_storm + Enclosure: Window Storm + The type of storm window. + Choice + false + false + None + + + None + None + + + Clear + Clear + + + Low-E + Low-E + + + + + enclosure_overhangs + Enclosure: Window Overhangs + The type of window overhangs. + Choice + false + false + None + + + None + None + + + 1ft, All Windows + 1ft, All Windows + + + 2ft, All Windows + 2ft, All Windows + + + 3ft, All Windows + 3ft, All Windows + + + 4ft, All Windows + 4ft, All Windows + + + 5ft, All Windows + 5ft, All Windows + + + 10ft, All Windows + 10ft, All Windows + + + 1ft, Front Windows + 1ft, Front Windows + + + 2ft, Front Windows + 2ft, Front Windows + + + 3ft, Front Windows + 3ft, Front Windows + + + 4ft, Front Windows + 4ft, Front Windows + + + 5ft, Front Windows + 5ft, Front Windows + + + 10ft, Front Windows + 10ft, Front Windows + + + 1ft, Back Windows + 1ft, Back Windows + + + 2ft, Back Windows + 2ft, Back Windows + + + 3ft, Back Windows + 3ft, Back Windows + + + 4ft, Back Windows + 4ft, Back Windows + + + 5ft, Back Windows + 5ft, Back Windows + + + 10ft, Back Windows + 10ft, Back Windows + + + 1ft, Left Windows + 1ft, Left Windows + + + 2ft, Left Windows + 2ft, Left Windows + + + 3ft, Left Windows + 3ft, Left Windows + + + 4ft, Left Windows + 4ft, Left Windows + + + 5ft, Left Windows + 5ft, Left Windows + + + 10ft, Left Windows + 10ft, Left Windows + + + 1ft, Right Windows + 1ft, Right Windows + + + 2ft, Right Windows + 2ft, Right Windows + + + 3ft, Right Windows + 3ft, Right Windows + + + 4ft, Right Windows + 4ft, Right Windows + + + 5ft, Right Windows + 5ft, Right Windows + + + 10ft, Right Windows + 10ft, Right Windows + + + Detailed Example: 1.5ft, Back/Left/Right Windows, 2ft Offset, 4ft Window Height + Detailed Example: 1.5ft, Back/Left/Right Windows, 2ft Offset, 4ft Window Height + + + ASHRAE 140 Tests: 2.5ft, Front Windows + ASHRAE 140 Tests: 2.5ft, Front Windows + + + + + enclosure_skylight + Enclosure: Skylights + The type of skylights. + Choice + false + false + Single, Clear, Metal + + + Single, Clear, Metal + Single, Clear, Metal + + + Single, Clear, Non-Metal + Single, Clear, Non-Metal + + + Double, Clear, Metal + Double, Clear, Metal + + + Double, Clear, Non-Metal + Double, Clear, Non-Metal + + + Double, Low-E, Metal, High Gain + Double, Low-E, Metal, High Gain + + + Double, Low-E, Non-Metal, High Gain + Double, Low-E, Non-Metal, High Gain + + + Double, Low-E, Metal, Med Gain + Double, Low-E, Metal, Med Gain + + + Double, Low-E, Non-Metal, Med Gain + Double, Low-E, Non-Metal, Med Gain + + + Double, Low-E, Metal, Low Gain + Double, Low-E, Metal, Low Gain + + + Double, Low-E, Non-Metal, Low Gain + Double, Low-E, Non-Metal, Low Gain + + + Triple, Clear, Metal + Triple, Clear, Metal + + + Triple, Clear, Non-Metal + Triple, Clear, Non-Metal + + + IECC U-0.75, SHGC 0.40 + IECC U-0.75, SHGC 0.40 + + + IECC U-0.75, SHGC 0.30 + IECC U-0.75, SHGC 0.30 + + + IECC U-0.75, SHGC 0.25 + IECC U-0.75, SHGC 0.25 + + + IECC U-0.65, SHGC 0.40 + IECC U-0.65, SHGC 0.40 + + + IECC U-0.65, SHGC 0.30 + IECC U-0.65, SHGC 0.30 + + + IECC U-0.65, SHGC 0.25 + IECC U-0.65, SHGC 0.25 + + + IECC U-0.60, SHGC 0.40 + IECC U-0.60, SHGC 0.40 + + + IECC U-0.60, SHGC 0.30 + IECC U-0.60, SHGC 0.30 + + + IECC U-0.55, SHGC 0.40 + IECC U-0.55, SHGC 0.40 + + + IECC U-0.55, SHGC 0.25 + IECC U-0.55, SHGC 0.25 + + + + + enclosure_door + Enclosure: Doors + The type of doors. + Choice + false + false + Solid Wood, R-2 + + + Solid Wood, R-2 + Solid Wood, R-2 + + + Solid Wood, R-3 + Solid Wood, R-3 + + + Insulated Fiberglass/Steel, R-4 + Insulated Fiberglass/Steel, R-4 + + + Insulated Fiberglass/Steel, R-5 + Insulated Fiberglass/Steel, R-5 + + + Insulated Fiberglass/Steel, R-6 + Insulated Fiberglass/Steel, R-6 + + + Insulated Fiberglass/Steel, R-7 + Insulated Fiberglass/Steel, R-7 + + + IECC U-1.20 + IECC U-1.20 + + + IECC U-0.75 + IECC U-0.75 + + + IECC U-0.65 + IECC U-0.65 + + + IECC U-0.50 + IECC U-0.50 + + + IECC U-0.40 + IECC U-0.40 + + + IECC U-0.35 + IECC U-0.35 + + + IECC U-0.32 + IECC U-0.32 + + + IECC U-0.30 + IECC U-0.30 + + + Detailed Example: Insulated Fiberglass/Steel, R-4.4 + Detailed Example: Insulated Fiberglass/Steel, R-4.4 + + + ASHRAE 140 Tests: Solid Wood + ASHRAE 140 Tests: Solid Wood + + + + + enclosure_air_leakage + Enclosure: Air Leakage + The amount of air leakage coming from outside. If a qualitative leakiness description (e.g., 'Average') is selected, the Year Built of the home is also required. + Choice + false + false + Average + + + Very Tight + Very Tight + + + Tight + Tight + + + Average + Average + + + Leaky + Leaky + + + Very Leaky + Very Leaky + + + 1 ACH50 + 1 ACH50 + + + 2 ACH50 + 2 ACH50 + + + 3 ACH50 + 3 ACH50 + + + 4 ACH50 + 4 ACH50 + + + 5 ACH50 + 5 ACH50 + + + 6 ACH50 + 6 ACH50 + + + 7 ACH50 + 7 ACH50 + + + 8 ACH50 + 8 ACH50 + + + 9 ACH50 + 9 ACH50 + + + 10 ACH50 + 10 ACH50 + + + 11 ACH50 + 11 ACH50 + + + 12 ACH50 + 12 ACH50 + + + 13 ACH50 + 13 ACH50 + + + 14 ACH50 + 14 ACH50 + + + 15 ACH50 + 15 ACH50 + + + 16 ACH50 + 16 ACH50 + + + 17 ACH50 + 17 ACH50 + + + 18 ACH50 + 18 ACH50 + + + 19 ACH50 + 19 ACH50 + + + 20 ACH50 + 20 ACH50 + + + 25 ACH50 + 25 ACH50 + + + 30 ACH50 + 30 ACH50 + + + 35 ACH50 + 35 ACH50 + + + 40 ACH50 + 40 ACH50 + + + 45 ACH50 + 45 ACH50 + + + 50 ACH50 + 50 ACH50 + + + 0.2 nACH + 0.2 nACH + + + 0.3 nACH + 0.3 nACH + + + 0.335 nACH + 0.335 nACH + + + 0.5 nACH + 0.5 nACH + + + 0.67 nACH + 0.67 nACH + + + 1.0 nACH + 1.0 nACH + + + 1.5 nACH + 1.5 nACH + + + HERS Reference + HERS Reference + + + Detailed Example: 3.57 ACH50 + Detailed Example: 3.57 ACH50 + + + Detailed Example: 12.16 ACH50 + Detailed Example: 12.16 ACH50 + + + Detailed Example: 2.8 ACH45 + Detailed Example: 2.8 ACH45 + + + Detailed Example: 0.375 nACH + Detailed Example: 0.375 nACH + + + Detailed Example: 72 nCFM + Detailed Example: 72 nCFM + + + Detailed Example: 123 sq. in. ELA + Detailed Example: 123 sq. in. ELA + + + Detailed Example: 0.00032 SLA + Detailed Example: 0.00032 SLA + + + Detailed Example: 1080 CFM50 + Detailed Example: 1080 CFM50 + + + Detailed Example: 1010 CFM45 + Detailed Example: 1010 CFM45 + + + + + hvac_heating_system + HVAC: Heating System + The type and efficiency of the heating system. Use 'None' if there is no heating system or if there is a heat pump serving a heating load. + Choice + false + false + Central Furnace, 78% AFUE + + + None + None + + + Electric Resistance + Electric Resistance + + + Central Furnace, 60% AFUE + Central Furnace, 60% AFUE + + + Central Furnace, 64% AFUE + Central Furnace, 64% AFUE + + + Central Furnace, 68% AFUE + Central Furnace, 68% AFUE + + + Central Furnace, 72% AFUE + Central Furnace, 72% AFUE + + + Central Furnace, 76% AFUE + Central Furnace, 76% AFUE + + + Central Furnace, 78% AFUE + Central Furnace, 78% AFUE + + + Central Furnace, 80% AFUE + Central Furnace, 80% AFUE + + + Central Furnace, 83% AFUE + Central Furnace, 83% AFUE + + + Central Furnace, 85% AFUE + Central Furnace, 85% AFUE + + + Central Furnace, 88% AFUE + Central Furnace, 88% AFUE + + + Central Furnace, 90% AFUE + Central Furnace, 90% AFUE + + + Central Furnace, 92% AFUE + Central Furnace, 92% AFUE + + + Central Furnace, 92.5% AFUE + Central Furnace, 92.5% AFUE + + + Central Furnace, 95% AFUE + Central Furnace, 95% AFUE + + + Central Furnace, 96% AFUE + Central Furnace, 96% AFUE + + + Central Furnace, 98% AFUE + Central Furnace, 98% AFUE + + + Central Furnace, 100% AFUE + Central Furnace, 100% AFUE + + + Wall Furnace, 60% AFUE + Wall Furnace, 60% AFUE + + + Wall Furnace, 68% AFUE + Wall Furnace, 68% AFUE + + + Wall Furnace, 82% AFUE + Wall Furnace, 82% AFUE + + + Wall Furnace, 98% AFUE + Wall Furnace, 98% AFUE + + + Wall Furnace, 100% AFUE + Wall Furnace, 100% AFUE + + + Floor Furnace, 60% AFUE + Floor Furnace, 60% AFUE + + + Floor Furnace, 70% AFUE + Floor Furnace, 70% AFUE + + + Floor Furnace, 80% AFUE + Floor Furnace, 80% AFUE + + + Boiler, 60% AFUE + Boiler, 60% AFUE + + + Boiler, 72% AFUE + Boiler, 72% AFUE + + + Boiler, 76% AFUE + Boiler, 76% AFUE + + + Boiler, 78% AFUE + Boiler, 78% AFUE + + + Boiler, 80% AFUE + Boiler, 80% AFUE + + + Boiler, 83% AFUE + Boiler, 83% AFUE + + + Boiler, 85% AFUE + Boiler, 85% AFUE + + + Boiler, 88% AFUE + Boiler, 88% AFUE + + + Boiler, 90% AFUE + Boiler, 90% AFUE + + + Boiler, 92% AFUE + Boiler, 92% AFUE + + + Boiler, 92.5% AFUE + Boiler, 92.5% AFUE + + + Boiler, 95% AFUE + Boiler, 95% AFUE + + + Boiler, 96% AFUE + Boiler, 96% AFUE + + + Boiler, 98% AFUE + Boiler, 98% AFUE + + + Boiler, 100% AFUE + Boiler, 100% AFUE + + + Stove, 60% Efficiency + Stove, 60% Efficiency + + + Stove, 70% Efficiency + Stove, 70% Efficiency + + + Stove, 80% Efficiency + Stove, 80% Efficiency + + + Space Heater, 60% Efficiency + Space Heater, 60% Efficiency + + + Space Heater, 70% Efficiency + Space Heater, 70% Efficiency + + + Space Heater, 80% Efficiency + Space Heater, 80% Efficiency + + + Space Heater, 92% Efficiency + Space Heater, 92% Efficiency + + + Space Heater, 100% Efficiency + Space Heater, 100% Efficiency + + + Fireplace, 60% Efficiency + Fireplace, 60% Efficiency + + + Fireplace, 70% Efficiency + Fireplace, 70% Efficiency + + + Fireplace, 80% Efficiency + Fireplace, 80% Efficiency + + + Fireplace, 100% Efficiency + Fireplace, 100% Efficiency + + + Detailed Example: Central Furnace, 92% AFUE, 600 Btu/hr Pilot Light + Detailed Example: Central Furnace, 92% AFUE, 600 Btu/hr Pilot Light + + + Detailed Example: Floor Furnace, 80% AFUE, 600 Btu/hr Pilot Light + Detailed Example: Floor Furnace, 80% AFUE, 600 Btu/hr Pilot Light + + + Detailed Example: Boiler, 92% AFUE, 600 Btu/hr Pilot Light + Detailed Example: Boiler, 92% AFUE, 600 Btu/hr Pilot Light + + + + + hvac_heating_system_fuel + HVAC: Heating System Fuel Type + The fuel type of the heating system. Ignored for ElectricResistance. + Choice + false + false + Natural Gas + + + Electricity + Electricity + + + Natural Gas + Natural Gas + + + Fuel Oil + Fuel Oil + + + Propane + Propane + + + Wood Cord + Wood Cord + + + Wood Pellets + Wood Pellets + + + Coal + Coal + + + + + hvac_heating_system_capacity + HVAC: Heating System Capacity + The output capacity of the heating system. + Choice + false + false + Autosize + + + Autosize + Autosize + + + 5 kBtu/hr + 5 kBtu/hr + + + 10 kBtu/hr + 10 kBtu/hr + + + 15 kBtu/hr + 15 kBtu/hr + + + 20 kBtu/hr + 20 kBtu/hr + + + 25 kBtu/hr + 25 kBtu/hr + + + 30 kBtu/hr + 30 kBtu/hr + + + 35 kBtu/hr + 35 kBtu/hr + + + 40 kBtu/hr + 40 kBtu/hr + + + 45 kBtu/hr + 45 kBtu/hr + + + 50 kBtu/hr + 50 kBtu/hr + + + 55 kBtu/hr + 55 kBtu/hr + + + 60 kBtu/hr + 60 kBtu/hr + + + 65 kBtu/hr + 65 kBtu/hr + + + 70 kBtu/hr + 70 kBtu/hr + + + 75 kBtu/hr + 75 kBtu/hr + + + 80 kBtu/hr + 80 kBtu/hr + + + 85 kBtu/hr + 85 kBtu/hr + + + 90 kBtu/hr + 90 kBtu/hr + + + 95 kBtu/hr + 95 kBtu/hr + + + 100 kBtu/hr + 100 kBtu/hr + + + 105 kBtu/hr + 105 kBtu/hr + + + 110 kBtu/hr + 110 kBtu/hr + + + 115 kBtu/hr + 115 kBtu/hr + + + 120 kBtu/hr + 120 kBtu/hr + + + 125 kBtu/hr + 125 kBtu/hr + + + 130 kBtu/hr + 130 kBtu/hr + + + 135 kBtu/hr + 135 kBtu/hr + + + 140 kBtu/hr + 140 kBtu/hr + + + 145 kBtu/hr + 145 kBtu/hr + + + 150 kBtu/hr + 150 kBtu/hr + + + Detailed Example: Autosize, 140% Multiplier + Detailed Example: Autosize, 140% Multiplier + + + Detailed Example: Autosize, 170% Multiplier + Detailed Example: Autosize, 170% Multiplier + + + Detailed Example: Autosize, 90% Multiplier, 45 kBtu/hr Limit + Detailed Example: Autosize, 90% Multiplier, 45 kBtu/hr Limit + + + Detailed Example: Autosize, 140% Multiplier, 45 kBtu/hr Limit + Detailed Example: Autosize, 140% Multiplier, 45 kBtu/hr Limit + + + + + hvac_heating_system_heating_load_served + HVAC: Heating System Fraction Heat Load Served + The fraction of the heating load served by the heating system. + Choice + false + false + 100% + + + 100% + 100% + + + 95% + 95% + + + 90% + 90% + + + 85% + 85% + + + 80% + 80% + + + 75% + 75% + + + 70% + 70% + + + 65% + 65% + + + 60% + 60% + + + 55% + 55% + + + 50% + 50% + + + 45% + 45% + + + 40% + 40% + + + 35% + 35% + + + 30% + 30% + + + 25% + 25% + + + 20% + 20% + + + 15% + 15% + + + 10% + 10% + + + 5% + 5% + + + 0% + 0% + + + + + hvac_cooling_system + HVAC: Cooling System + The type and efficiency of the cooling system. Use 'None' if there is no cooling system or if there is a heat pump serving a cooling load. + Choice + false + false + Central AC, SEER2 13.4 + + + None + None + + + Central AC, SEER2 7.6 + Central AC, SEER2 7.6 + + + Central AC, SEER2 9.5 + Central AC, SEER2 9.5 + + + Central AC, SEER2 12.4 + Central AC, SEER2 12.4 + + + Central AC, SEER2 13.4 + Central AC, SEER2 13.4 + + + Central AC, SEER2 13.8 + Central AC, SEER2 13.8 + + + Central AC, SEER2 14.0 + Central AC, SEER2 14.0 + + + Central AC, SEER2 14.3 + Central AC, SEER2 14.3 + + + Central AC, SEER2 15.0 + Central AC, SEER2 15.0 + + + Central AC, SEER2 16.0 + Central AC, SEER2 16.0 + + + Central AC, SEER2 17.0 + Central AC, SEER2 17.0 + + + Central AC, SEER2 18.0 + Central AC, SEER2 18.0 + + + Central AC, SEER2 19.0 + Central AC, SEER2 19.0 + + + Central AC, SEER2 20.0 + Central AC, SEER2 20.0 + + + Central AC, SEER2 21.0 + Central AC, SEER2 21.0 + + + Central AC, SEER2 22.0 + Central AC, SEER2 22.0 + + + Central AC, SEER2 23.0 + Central AC, SEER2 23.0 + + + Central AC, SEER2 24.0 + Central AC, SEER2 24.0 + + + Central AC, SEER2 25.0 + Central AC, SEER2 25.0 + + + Ductless Mini-Split AC, SEER2 14.5 + Ductless Mini-Split AC, SEER2 14.5 + + + Ductless Mini-Split AC, SEER2 16.0 + Ductless Mini-Split AC, SEER2 16.0 + + + Ductless Mini-Split AC, SEER2 17.0 + Ductless Mini-Split AC, SEER2 17.0 + + + Ductless Mini-Split AC, SEER2 18.0 + Ductless Mini-Split AC, SEER2 18.0 + + + Ductless Mini-Split AC, SEER2 19.0 + Ductless Mini-Split AC, SEER2 19.0 + + + Ductless Mini-Split AC, SEER2 20.0 + Ductless Mini-Split AC, SEER2 20.0 + + + Ductless Mini-Split AC, SEER2 21.0 + Ductless Mini-Split AC, SEER2 21.0 + + + Ductless Mini-Split AC, SEER2 22.0 + Ductless Mini-Split AC, SEER2 22.0 + + + Ductless Mini-Split AC, SEER2 23.0 + Ductless Mini-Split AC, SEER2 23.0 + + + Ductless Mini-Split AC, SEER2 24.0 + Ductless Mini-Split AC, SEER2 24.0 + + + Ductless Mini-Split AC, SEER2 25.0 + Ductless Mini-Split AC, SEER2 25.0 + + + Ductless Mini-Split AC, SEER2 26.0 + Ductless Mini-Split AC, SEER2 26.0 + + + Ductless Mini-Split AC, SEER2 27.0 + Ductless Mini-Split AC, SEER2 27.0 + + + Ductless Mini-Split AC, SEER2 28.0 + Ductless Mini-Split AC, SEER2 28.0 + + + Room AC, CEER 8.4 + Room AC, CEER 8.4 + + + Room AC, CEER 9.7 + Room AC, CEER 9.7 + + + Room AC, CEER 10.6 + Room AC, CEER 10.6 + + + Room AC, CEER 11.0 + Room AC, CEER 11.0 + + + Room AC, CEER 11.9 + Room AC, CEER 11.9 + + + Room AC, CEER 13.1 + Room AC, CEER 13.1 + + + Packaged Terminal AC, EER 8.5 + Packaged Terminal AC, EER 8.5 + + + Packaged Terminal AC, EER 9.8 + Packaged Terminal AC, EER 9.8 + + + Packaged Terminal AC, EER 10.7 + Packaged Terminal AC, EER 10.7 + + + Packaged Terminal AC, EER 11.9 + Packaged Terminal AC, EER 11.9 + + + Packaged Terminal AC, EER 13.2 + Packaged Terminal AC, EER 13.2 + + + Evaporative Cooler + Evaporative Cooler + + + Detailed Example: Central AC, SEER2 13.4, Absolute Detailed Performance + Detailed Example: Central AC, SEER2 13.4, Absolute Detailed Performance + + + Detailed Example: Central AC, SEER2 17.1, Absolute Detailed Performance + Detailed Example: Central AC, SEER2 17.1, Absolute Detailed Performance + + + Detailed Example: Central AC, SEER 17.5, Absolute Detailed Performance + Detailed Example: Central AC, SEER 17.5, Absolute Detailed Performance + + + Detailed Example: Central AC, SEER 17.5, Normalized Detailed Performance + Detailed Example: Central AC, SEER 17.5, Normalized Detailed Performance + + + Detailed Example: Ductless Mini-Split AC, SEER2 19.0, Absolute Detailed Performance + Detailed Example: Ductless Mini-Split AC, SEER2 19.0, Absolute Detailed Performance + + + Detailed Example: Ductless Mini-Split AC, SEER2 19.0, Normalized Detailed Performance + Detailed Example: Ductless Mini-Split AC, SEER2 19.0, Normalized Detailed Performance + + + + + hvac_cooling_system_capacity + HVAC: Cooling System Capacity + The output capacity of the cooling system. + Choice + false + false + Autosize + + + Autosize + Autosize + + + 0.5 tons + 0.5 tons + + + 0.75 tons + 0.75 tons + + + 1.0 tons + 1.0 tons + + + 1.5 tons + 1.5 tons + + + 2.0 tons + 2.0 tons + + + 2.5 tons + 2.5 tons + + + 3.0 tons + 3.0 tons + + + 3.5 tons + 3.5 tons + + + 4.0 tons + 4.0 tons + + + 4.5 tons + 4.5 tons + + + 5.0 tons + 5.0 tons + + + 5.5 tons + 5.5 tons + + + 6.0 tons + 6.0 tons + + + 6.5 tons + 6.5 tons + + + 7.0 tons + 7.0 tons + + + 7.5 tons + 7.5 tons + + + 8.0 tons + 8.0 tons + + + 8.5 tons + 8.5 tons + + + 9.0 tons + 9.0 tons + + + 9.5 tons + 9.5 tons + + + 10.0 tons + 10.0 tons + + + Detailed Example: Autosize, 140% Multiplier + Detailed Example: Autosize, 140% Multiplier + + + Detailed Example: Autosize, 170% Multiplier + Detailed Example: Autosize, 170% Multiplier + + + Detailed Example: Autosize, 170% Multiplier, 3.0 tons Limit + Detailed Example: Autosize, 170% Multiplier, 3.0 tons Limit + + + + + hvac_cooling_system_cooling_load_served + HVAC: Cooling System Fraction Cool Load Served + The fraction of the cooling load served by the cooling system. + Choice + false + false + 100% + + + 100% + 100% + + + 95% + 95% + + + 90% + 90% + + + 85% + 85% + + + 80% + 80% + + + 75% + 75% + + + 70% + 70% + + + 65% + 65% + + + 60% + 60% + + + 55% + 55% + + + 50% + 50% + + + 45% + 45% + + + 40% + 40% + + + 35% + 35% + + + 30% + 30% + + + 25% + 25% + + + 20% + 20% + + + 15% + 15% + + + 10% + 10% + + + 5% + 5% + + + 0% + 0% + + + + + hvac_heat_pump + HVAC: Heat Pump + The type and efficiency of the heat pump. + Choice + false + false + None + + + None + None + + + Central HP, SEER2 7.6, HSPF2 5.1 + Central HP, SEER2 7.6, HSPF2 5.1 + + + Central HP, SEER2 9.5, HSPF2 5.8 + Central HP, SEER2 9.5, HSPF2 5.8 + + + Central HP, SEER2 12.4, HSPF2 6.6 + Central HP, SEER2 12.4, HSPF2 6.6 + + + Central HP, SEER2 13.4, HSPF2 7.0 + Central HP, SEER2 13.4, HSPF2 7.0 + + + Central HP, SEER2 13.8, HSPF2 7.2 + Central HP, SEER2 13.8, HSPF2 7.2 + + + Central HP, SEER2 14.0, HSPF2 7.3 + Central HP, SEER2 14.0, HSPF2 7.3 + + + Central HP, SEER2 14.3, HSPF2 7.4 + Central HP, SEER2 14.3, HSPF2 7.4 + + + Central HP, SEER2 15.0, HSPF2 7.6 + Central HP, SEER2 15.0, HSPF2 7.6 + + + Central HP, SEER2 16.0, HSPF2 7.9 + Central HP, SEER2 16.0, HSPF2 7.9 + + + Central HP, SEER2 17.0, HSPF2 8.2 + Central HP, SEER2 17.0, HSPF2 8.2 + + + Central HP, SEER2 18.0, HSPF2 8.5 + Central HP, SEER2 18.0, HSPF2 8.5 + + + Central HP, SEER2 19.0, HSPF2 8.7 + Central HP, SEER2 19.0, HSPF2 8.7 + + + Central HP, SEER2 20.0, HSPF2 9.0 + Central HP, SEER2 20.0, HSPF2 9.0 + + + Central HP, SEER2 21.0, HSPF2 9.2 + Central HP, SEER2 21.0, HSPF2 9.2 + + + Central HP, SEER2 22.0, HSPF2 9.5 + Central HP, SEER2 22.0, HSPF2 9.5 + + + Ductless Mini-Split HP, SEER2 13.7, HSPF2 7.4 + Ductless Mini-Split HP, SEER2 13.7, HSPF2 7.4 + + + Ductless Mini-Split HP, SEER2 14.5, HSPF2 7.7 + Ductless Mini-Split HP, SEER2 14.5, HSPF2 7.7 + + + Ductless Mini-Split HP, SEER2 16.0, HSPF2 8.1 + Ductless Mini-Split HP, SEER2 16.0, HSPF2 8.1 + + + Ductless Mini-Split HP, SEER2 17.0, HSPF2 8.5 + Ductless Mini-Split HP, SEER2 17.0, HSPF2 8.5 + + + Ductless Mini-Split HP, SEER2 18.0, HSPF2 8.8 + Ductless Mini-Split HP, SEER2 18.0, HSPF2 8.8 + + + Ductless Mini-Split HP, SEER2 19.0, HSPF2 9.0 + Ductless Mini-Split HP, SEER2 19.0, HSPF2 9.0 + + + Ductless Mini-Split HP, SEER2 20.0, HSPF2 9.4 + Ductless Mini-Split HP, SEER2 20.0, HSPF2 9.4 + + + Ductless Mini-Split HP, SEER2 21.0, HSPF2 9.7 + Ductless Mini-Split HP, SEER2 21.0, HSPF2 9.7 + + + Ductless Mini-Split HP, SEER2 22.0, HSPF2 10.1 + Ductless Mini-Split HP, SEER2 22.0, HSPF2 10.1 + + + Ductless Mini-Split HP, SEER2 23.0, HSPF2 10.4 + Ductless Mini-Split HP, SEER2 23.0, HSPF2 10.4 + + + Ductless Mini-Split HP, SEER2 24.0, HSPF2 10.7 + Ductless Mini-Split HP, SEER2 24.0, HSPF2 10.7 + + + Ductless Mini-Split HP, SEER2 25.0, HSPF2 11.0 + Ductless Mini-Split HP, SEER2 25.0, HSPF2 11.0 + + + Ductless Mini-Split HP, SEER2 26.0, HSPF2 11.4 + Ductless Mini-Split HP, SEER2 26.0, HSPF2 11.4 + + + Ductless Mini-Split HP, SEER2 27.0, HSPF2 11.7 + Ductless Mini-Split HP, SEER2 27.0, HSPF2 11.7 + + + Ductless Mini-Split HP, SEER2 28.0, HSPF2 12.0 + Ductless Mini-Split HP, SEER2 28.0, HSPF2 12.0 + + + Ductless Mini-Split HP, SEER2 29.0, HSPF2 12.3 + Ductless Mini-Split HP, SEER2 29.0, HSPF2 12.3 + + + Ductless Mini-Split HP, SEER2 30.0, HSPF2 12.7 + Ductless Mini-Split HP, SEER2 30.0, HSPF2 12.7 + + + Ductless Mini-Split HP, SEER2 32.0, HSPF2 13.3 + Ductless Mini-Split HP, SEER2 32.0, HSPF2 13.3 + + + Geothermal HP, EER 16.6, COP 3.6 + Geothermal HP, EER 16.6, COP 3.6 + + + Geothermal HP, EER 18.6, COP 3.8 + Geothermal HP, EER 18.6, COP 3.8 + + + Geothermal HP, EER 20.5, COP 4.0 + Geothermal HP, EER 20.5, COP 4.0 + + + Geothermal HP, EER 30.9, COP 4.4 + Geothermal HP, EER 30.9, COP 4.4 + + + Room HP, CEER 8.4, COP 2.7 + Room HP, CEER 8.4, COP 2.7 + + + Room HP, CEER 9.7, COP 3.0 + Room HP, CEER 9.7, COP 3.0 + + + Room HP, CEER 10.6, COP 3.3 + Room HP, CEER 10.6, COP 3.3 + + + Room HP, CEER 11.8, COP 3.6 + Room HP, CEER 11.8, COP 3.6 + + + Room HP, CEER 13.1, COP 3.9 + Room HP, CEER 13.1, COP 3.9 + + + Packaged Terminal HP, EER 8.5, COP 2.7 + Packaged Terminal HP, EER 8.5, COP 2.7 + + + Packaged Terminal HP, EER 9.8, COP 3.0 + Packaged Terminal HP, EER 9.8, COP 3.0 + + + Packaged Terminal HP, EER 10.7, COP 3.3 + Packaged Terminal HP, EER 10.7, COP 3.3 + + + Packaged Terminal HP, EER 11.9, COP 3.6 + Packaged Terminal HP, EER 11.9, COP 3.6 + + + Packaged Terminal HP, EER 13.2, COP 3.9 + Packaged Terminal HP, EER 13.2, COP 3.9 + + + Detailed Example: Central HP, SEER2 13.4, HSPF2 7.0, Absolute Detailed Performance + Detailed Example: Central HP, SEER2 13.4, HSPF2 7.0, Absolute Detailed Performance + + + Detailed Example: Central HP, SEER2 17.1, HSPF2 7.9, Absolute Detailed Performance + Detailed Example: Central HP, SEER2 17.1, HSPF2 7.9, Absolute Detailed Performance + + + Detailed Example: Central HP, SEER 17.5, HSPF 9.5, Absolute Detailed Performance + Detailed Example: Central HP, SEER 17.5, HSPF 9.5, Absolute Detailed Performance + + + Detailed Example: Central HP, SEER 17.5, HSPF 9.5, Normalized Detailed Performance + Detailed Example: Central HP, SEER 17.5, HSPF 9.5, Normalized Detailed Performance + + + Detailed Example: Ductless Mini-Split HP, SEER2 19.0, HSPF2 9.0, Absolute Detailed Performance + Detailed Example: Ductless Mini-Split HP, SEER2 19.0, HSPF2 9.0, Absolute Detailed Performance + + + Detailed Example: Ductless Mini-Split HP, SEER2 19.0, HSPF2 9.0, Normalized Detailed Performance + Detailed Example: Ductless Mini-Split HP, SEER2 19.0, HSPF2 9.0, Normalized Detailed Performance + + + HERS HVAC Tests: Central HP, SEER2 12.4, HSPF2 8.4 + HERS HVAC Tests: Central HP, SEER2 12.4, HSPF2 8.4 + + + + + hvac_heat_pump_capacity + HVAC: Heat Pump Capacity + The output capacity of the heat pump. + Choice + false + false + Autosize + + + Autosize + Autosize + + + Autosize (ACCA) + Autosize (ACCA) + + + Autosize (MaxLoad) + Autosize (MaxLoad) + + + 0.5 tons + 0.5 tons + + + 0.75 tons + 0.75 tons + + + 1.0 tons + 1.0 tons + + + 1.5 tons + 1.5 tons + + + 2.0 tons + 2.0 tons + + + 2.5 tons + 2.5 tons + + + 3.0 tons + 3.0 tons + + + 3.5 tons + 3.5 tons + + + 4.0 tons + 4.0 tons + + + 4.5 tons + 4.5 tons + + + 5.0 tons + 5.0 tons + + + 5.5 tons + 5.5 tons + + + 6.0 tons + 6.0 tons + + + 6.5 tons + 6.5 tons + + + 7.0 tons + 7.0 tons + + + 7.5 tons + 7.5 tons + + + 8.0 tons + 8.0 tons + + + 8.5 tons + 8.5 tons + + + 9.0 tons + 9.0 tons + + + 9.5 tons + 9.5 tons + + + 10.0 tons + 10.0 tons + + + Detailed Example: Autosize, 140% Multiplier + Detailed Example: Autosize, 140% Multiplier + + + Detailed Example: Autosize, 170% Multiplier + Detailed Example: Autosize, 170% Multiplier + + + Detailed Example: Autosize, 170% Multiplier, 3.0 tons Limit + Detailed Example: Autosize, 170% Multiplier, 3.0 tons Limit + + + + + hvac_heat_pump_heating_load_served + HVAC: Heat Pump Fraction Heat Load Served + The fraction of the heating load served by the heat pump. + Choice + false + false + 100% + + + 100% + 100% + + + 95% + 95% + + + 90% + 90% + + + 85% + 85% + + + 80% + 80% + + + 75% + 75% + + + 70% + 70% + + + 65% + 65% + + + 60% + 60% + + + 55% + 55% + + + 50% + 50% + + + 45% + 45% + + + 40% + 40% + + + 35% + 35% + + + 30% + 30% + + + 25% + 25% + + + 20% + 20% + + + 15% + 15% + + + 10% + 10% + + + 5% + 5% + + + 0% + 0% + + + + + hvac_heat_pump_cooling_load_served + HVAC: Heat Pump Fraction Cool Load Served + The fraction of the cooling load served by the heat pump. + Choice + false + false + 100% + + + 100% + 100% + + + 95% + 95% + + + 90% + 90% + + + 85% + 85% + + + 80% + 80% + + + 75% + 75% + + + 70% + 70% + + + 65% + 65% + + + 60% + 60% + + + 55% + 55% + + + 50% + 50% + + + 45% + 45% + + + 40% + 40% + + + 35% + 35% + + + 30% + 30% + + + 25% + 25% + + + 20% + 20% + + + 15% + 15% + + + 10% + 10% + + + 5% + 5% + + + 0% + 0% + + + + + hvac_heat_pump_temperatures + HVAC: Heat Pump Temperatures + Specifies the minimum compressor temperature and/or maximum HP backup temperature. If both are the same, a binary switchover temperature is used. + Choice + false + false + Default + + + Default + Default + + + -20F Min Compressor Temp + -20F Min Compressor Temp + + + -15F Min Compressor Temp + -15F Min Compressor Temp + + + -10F Min Compressor Temp + -10F Min Compressor Temp + + + -5F Min Compressor Temp + -5F Min Compressor Temp + + + 0F Min Compressor Temp + 0F Min Compressor Temp + + + 5F Min Compressor Temp + 5F Min Compressor Temp + + + 10F Min Compressor Temp + 10F Min Compressor Temp + + + 15F Min Compressor Temp + 15F Min Compressor Temp + + + 20F Min Compressor Temp + 20F Min Compressor Temp + + + 25F Min Compressor Temp + 25F Min Compressor Temp + + + 30F Min Compressor Temp + 30F Min Compressor Temp + + + 35F Min Compressor Temp + 35F Min Compressor Temp + + + 40F Min Compressor Temp + 40F Min Compressor Temp + + + 30F Min Compressor Temp, 30F Max HP Backup Temp + 30F Min Compressor Temp, 30F Max HP Backup Temp + + + 35F Min Compressor Temp, 35F Max HP Backup Temp + 35F Min Compressor Temp, 35F Max HP Backup Temp + + + 40F Min Compressor Temp, 40F Max HP Backup Temp + 40F Min Compressor Temp, 40F Max HP Backup Temp + + + Detailed Example: 5F Min Compressor Temp, 35F Max HP Backup Temp + Detailed Example: 5F Min Compressor Temp, 35F Max HP Backup Temp + + + Detailed Example: 25F Min Compressor Temp, 45F Max HP Backup Temp + Detailed Example: 25F Min Compressor Temp, 45F Max HP Backup Temp + + + + + hvac_heat_pump_backup + HVAC: Heat Pump Backup Type + The type and efficiency of the heat pump backup. Use 'None' if there is no backup heating. If Backup Type is Separate Heating System, Heating System 2 is used to specify the backup. + Choice + false + false + Integrated, Electricity, 100% Efficiency + + + None + None + + + Integrated, Electricity, 100% Efficiency + Integrated, Electricity, 100% Efficiency + + + Integrated, Natural Gas, 60% AFUE + Integrated, Natural Gas, 60% AFUE + + + Integrated, Natural Gas, 76% AFUE + Integrated, Natural Gas, 76% AFUE + + + Integrated, Natural Gas, 80% AFUE + Integrated, Natural Gas, 80% AFUE + + + Integrated, Natural Gas, 92.5% AFUE + Integrated, Natural Gas, 92.5% AFUE + + + Integrated, Natural Gas, 95% AFUE + Integrated, Natural Gas, 95% AFUE + + + Integrated, Fuel Oil, 60% AFUE + Integrated, Fuel Oil, 60% AFUE + + + Integrated, Fuel Oil, 76% AFUE + Integrated, Fuel Oil, 76% AFUE + + + Integrated, Fuel Oil, 80% AFUE + Integrated, Fuel Oil, 80% AFUE + + + Integrated, Fuel Oil, 92.5% AFUE + Integrated, Fuel Oil, 92.5% AFUE + + + Integrated, Fuel Oil, 95% AFUE + Integrated, Fuel Oil, 95% AFUE + + + Integrated, Propane, 60% AFUE + Integrated, Propane, 60% AFUE + + + Integrated, Propane, 76% AFUE + Integrated, Propane, 76% AFUE + + + Integrated, Propane, 80% AFUE + Integrated, Propane, 80% AFUE + + + Integrated, Propane, 92.5% AFUE + Integrated, Propane, 92.5% AFUE + + + Integrated, Propane, 95% AFUE + Integrated, Propane, 95% AFUE + + + Separate Heating System + Separate Heating System + + + + + hvac_heat_pump_backup_capacity + HVAC: Heat Pump Backup Capacity + The output capacity of the heat pump backup if there is integrated backup heating. + Choice + false + false + Autosize + + + Autosize + Autosize + + + Autosize (Supplemental) + Autosize (Supplemental) + + + 5 kW + 5 kW + + + 10 kW + 10 kW + + + 15 kW + 15 kW + + + 20 kW + 20 kW + + + 25 kW + 25 kW + + + 5 kBtu/hr + 5 kBtu/hr + + + 10 kBtu/hr + 10 kBtu/hr + + + 15 kBtu/hr + 15 kBtu/hr + + + 20 kBtu/hr + 20 kBtu/hr + + + 25 kBtu/hr + 25 kBtu/hr + + + 30 kBtu/hr + 30 kBtu/hr + + + 35 kBtu/hr + 35 kBtu/hr + + + 40 kBtu/hr + 40 kBtu/hr + + + 45 kBtu/hr + 45 kBtu/hr + + + 50 kBtu/hr + 50 kBtu/hr + + + 55 kBtu/hr + 55 kBtu/hr + + + 60 kBtu/hr + 60 kBtu/hr + + + 65 kBtu/hr + 65 kBtu/hr + + + 70 kBtu/hr + 70 kBtu/hr + + + 75 kBtu/hr + 75 kBtu/hr + + + 80 kBtu/hr + 80 kBtu/hr + + + 85 kBtu/hr + 85 kBtu/hr + + + 90 kBtu/hr + 90 kBtu/hr + + + 95 kBtu/hr + 95 kBtu/hr + + + 100 kBtu/hr + 100 kBtu/hr + + + 105 kBtu/hr + 105 kBtu/hr + + + 110 kBtu/hr + 110 kBtu/hr + + + 115 kBtu/hr + 115 kBtu/hr + + + 120 kBtu/hr + 120 kBtu/hr + + + 125 kBtu/hr + 125 kBtu/hr + + + 130 kBtu/hr + 130 kBtu/hr + + + 135 kBtu/hr + 135 kBtu/hr + + + 140 kBtu/hr + 140 kBtu/hr + + + 145 kBtu/hr + 145 kBtu/hr + + + 150 kBtu/hr + 150 kBtu/hr + + + Detailed Example: Autosize, 140% Multiplier + Detailed Example: Autosize, 140% Multiplier + + + Detailed Example: Autosize, 170% Multiplier + Detailed Example: Autosize, 170% Multiplier + + + Detailed Example: Autosize, 90% Multiplier, 45 kBtu/hr Limit + Detailed Example: Autosize, 90% Multiplier, 45 kBtu/hr Limit + + + + + hvac_geothermal_loop + HVAC: Geothermal Loop + The geothermal loop configuration if there's a ground-to-air heat pump. + Choice + false + false + Default + + + Default + Default + + + Vertical Loop, Enhanced Grout + Vertical Loop, Enhanced Grout + + + Vertical Loop, Enhanced Pipe + Vertical Loop, Enhanced Pipe + + + Vertical Loop, Enhanced Grout & Pipe + Vertical Loop, Enhanced Grout & Pipe + + + Detailed Example: Lopsided U Configuration, 10 Boreholes + Detailed Example: Lopsided U Configuration, 10 Boreholes + + + + + hvac_heating_system_2 + HVAC: Heating System 2 + The type and efficiency of the second heating system. If a heat pump is specified and the backup type is 'separate', this heating system represents the 'separate' backup heating. + Choice + false + false + None + + + None + None + + + Electric Resistance + Electric Resistance + + + Central Furnace, 60% AFUE + Central Furnace, 60% AFUE + + + Central Furnace, 64% AFUE + Central Furnace, 64% AFUE + + + Central Furnace, 68% AFUE + Central Furnace, 68% AFUE + + + Central Furnace, 72% AFUE + Central Furnace, 72% AFUE + + + Central Furnace, 76% AFUE + Central Furnace, 76% AFUE + + + Central Furnace, 78% AFUE + Central Furnace, 78% AFUE + + + Central Furnace, 80% AFUE + Central Furnace, 80% AFUE + + + Central Furnace, 83% AFUE + Central Furnace, 83% AFUE + + + Central Furnace, 85% AFUE + Central Furnace, 85% AFUE + + + Central Furnace, 88% AFUE + Central Furnace, 88% AFUE + + + Central Furnace, 90% AFUE + Central Furnace, 90% AFUE + + + Central Furnace, 92% AFUE + Central Furnace, 92% AFUE + + + Central Furnace, 92.5% AFUE + Central Furnace, 92.5% AFUE + + + Central Furnace, 95% AFUE + Central Furnace, 95% AFUE + + + Central Furnace, 96% AFUE + Central Furnace, 96% AFUE + + + Central Furnace, 98% AFUE + Central Furnace, 98% AFUE + + + Central Furnace, 100% AFUE + Central Furnace, 100% AFUE + + + Wall Furnace, 60% AFUE + Wall Furnace, 60% AFUE + + + Wall Furnace, 68% AFUE + Wall Furnace, 68% AFUE + + + Wall Furnace, 82% AFUE + Wall Furnace, 82% AFUE + + + Wall Furnace, 98% AFUE + Wall Furnace, 98% AFUE + + + Wall Furnace, 100% AFUE + Wall Furnace, 100% AFUE + + + Floor Furnace, 60% AFUE + Floor Furnace, 60% AFUE + + + Floor Furnace, 70% AFUE + Floor Furnace, 70% AFUE + + + Floor Furnace, 80% AFUE + Floor Furnace, 80% AFUE + + + Boiler, 60% AFUE + Boiler, 60% AFUE + + + Boiler, 72% AFUE + Boiler, 72% AFUE + + + Boiler, 76% AFUE + Boiler, 76% AFUE + + + Boiler, 78% AFUE + Boiler, 78% AFUE + + + Boiler, 80% AFUE + Boiler, 80% AFUE + + + Boiler, 83% AFUE + Boiler, 83% AFUE + + + Boiler, 85% AFUE + Boiler, 85% AFUE + + + Boiler, 88% AFUE + Boiler, 88% AFUE + + + Boiler, 90% AFUE + Boiler, 90% AFUE + + + Boiler, 92% AFUE + Boiler, 92% AFUE + + + Boiler, 92.5% AFUE + Boiler, 92.5% AFUE + + + Boiler, 95% AFUE + Boiler, 95% AFUE + + + Boiler, 96% AFUE + Boiler, 96% AFUE + + + Boiler, 98% AFUE + Boiler, 98% AFUE + + + Boiler, 100% AFUE + Boiler, 100% AFUE + + + Stove, 60% Efficiency + Stove, 60% Efficiency + + + Stove, 70% Efficiency + Stove, 70% Efficiency + + + Stove, 80% Efficiency + Stove, 80% Efficiency + + + Space Heater, 60% Efficiency + Space Heater, 60% Efficiency + + + Space Heater, 70% Efficiency + Space Heater, 70% Efficiency + + + Space Heater, 80% Efficiency + Space Heater, 80% Efficiency + + + Space Heater, 92% Efficiency + Space Heater, 92% Efficiency + + + Space Heater, 100% Efficiency + Space Heater, 100% Efficiency + + + Fireplace, 60% Efficiency + Fireplace, 60% Efficiency + + + Fireplace, 70% Efficiency + Fireplace, 70% Efficiency + + + Fireplace, 80% Efficiency + Fireplace, 80% Efficiency + + + Fireplace, 100% Efficiency + Fireplace, 100% Efficiency + + + Detailed Example: Central Furnace, 92% AFUE, 600 Btu/hr Pilot Light + Detailed Example: Central Furnace, 92% AFUE, 600 Btu/hr Pilot Light + + + Detailed Example: Floor Furnace, 80% AFUE, 600 Btu/hr Pilot Light + Detailed Example: Floor Furnace, 80% AFUE, 600 Btu/hr Pilot Light + + + Detailed Example: Boiler, 92% AFUE, 600 Btu/hr Pilot Light + Detailed Example: Boiler, 92% AFUE, 600 Btu/hr Pilot Light + + + + + hvac_heating_system_2_fuel + HVAC: Heating System 2 Fuel Type + The fuel type of the second heating system. Ignored for ElectricResistance. + Choice + false + false + Electricity + + + Electricity + Electricity + + + Natural Gas + Natural Gas + + + Fuel Oil + Fuel Oil + + + Propane + Propane + + + Wood Cord + Wood Cord + + + Wood Pellets + Wood Pellets + + + Coal + Coal + + + + + hvac_heating_system_2_capacity + HVAC: Heating System 2 Capacity + The output capacity of the second heating system. + Choice + false + false + Autosize + + + Autosize + Autosize + + + 5 kBtu/hr + 5 kBtu/hr + + + 10 kBtu/hr + 10 kBtu/hr + + + 15 kBtu/hr + 15 kBtu/hr + + + 20 kBtu/hr + 20 kBtu/hr + + + 25 kBtu/hr + 25 kBtu/hr + + + 30 kBtu/hr + 30 kBtu/hr + + + 35 kBtu/hr + 35 kBtu/hr + + + 40 kBtu/hr + 40 kBtu/hr + + + 45 kBtu/hr + 45 kBtu/hr + + + 50 kBtu/hr + 50 kBtu/hr + + + 55 kBtu/hr + 55 kBtu/hr + + + 60 kBtu/hr + 60 kBtu/hr + + + 65 kBtu/hr + 65 kBtu/hr + + + 70 kBtu/hr + 70 kBtu/hr + + + 75 kBtu/hr + 75 kBtu/hr + + + 80 kBtu/hr + 80 kBtu/hr + + + 85 kBtu/hr + 85 kBtu/hr + + + 90 kBtu/hr + 90 kBtu/hr + + + 95 kBtu/hr + 95 kBtu/hr + + + 100 kBtu/hr + 100 kBtu/hr + + + 105 kBtu/hr + 105 kBtu/hr + + + 110 kBtu/hr + 110 kBtu/hr + + + 115 kBtu/hr + 115 kBtu/hr + + + 120 kBtu/hr + 120 kBtu/hr + + + 125 kBtu/hr + 125 kBtu/hr + + + 130 kBtu/hr + 130 kBtu/hr + + + 135 kBtu/hr + 135 kBtu/hr + + + 140 kBtu/hr + 140 kBtu/hr + + + 145 kBtu/hr + 145 kBtu/hr + + + 150 kBtu/hr + 150 kBtu/hr + + + Detailed Example: Autosize, 140% Multiplier + Detailed Example: Autosize, 140% Multiplier + + + Detailed Example: Autosize, 170% Multiplier + Detailed Example: Autosize, 170% Multiplier + + + Detailed Example: Autosize, 90% Multiplier, 45 kBtu/hr Limit + Detailed Example: Autosize, 90% Multiplier, 45 kBtu/hr Limit + + + Detailed Example: Autosize, 140% Multiplier, 45 kBtu/hr Limit + Detailed Example: Autosize, 140% Multiplier, 45 kBtu/hr Limit + + + + + hvac_heating_system_2_heating_load_served + HVAC: Heating System 2 Fraction Heat Load Served + The fraction of the heating load served by the second heating system. + Choice + false + false + 25% + + + 100% + 100% + + + 95% + 95% + + + 90% + 90% + + + 85% + 85% + + + 80% + 80% + + + 75% + 75% + + + 70% + 70% + + + 65% + 65% + + + 60% + 60% + + + 55% + 55% + + + 50% + 50% + + + 45% + 45% + + + 40% + 40% + + + 35% + 35% + + + 30% + 30% + + + 25% + 25% + + + 20% + 20% + + + 15% + 15% + + + 10% + 10% + + + 5% + 5% + + + 0% + 0% + + + + + hvac_control_heating_weekday_setpoint + HVAC Control: Heating Weekday Setpoint Schedule + Specify the constant or 24-hour comma-separated weekday heating setpoint schedule. + String + F + false + false + 68 + + + hvac_control_heating_weekend_setpoint + HVAC Control: Heating Weekend Setpoint Schedule + Specify the constant or 24-hour comma-separated weekend heating setpoint schedule. + String + F + false + false + 68 + + + hvac_control_cooling_weekday_setpoint + HVAC Control: Cooling Weekday Setpoint Schedule + Specify the constant or 24-hour comma-separated weekday cooling setpoint schedule. + String + F + false + false + 78 + + + hvac_control_cooling_weekend_setpoint + HVAC Control: Cooling Weekend Setpoint Schedule + Specify the constant or 24-hour comma-separated weekend cooling setpoint schedule. + String + F + false + false + 78 + + + hvac_control_heating_season_period + HVAC Control: Heating Season Period + Enter a date range like 'Nov 1 - Jun 30'. Defaults to year-round heating availability. + String + false + false + Jan 1 - Dec 31 + + + hvac_control_cooling_season_period + HVAC Control: Cooling Season Period + Enter a date range like 'Jun 1 - Oct 31'. Defaults to year-round cooling availability. + String + false + false + Jan 1 - Dec 31 + + + hvac_ducts + HVAC Ducts + The leakage to outside and insulation level of the ducts. + Choice + false + false + 15% Leakage, Uninsulated + + + None + None + + + 0% Leakage, Uninsulated + 0% Leakage, Uninsulated + + + 0% Leakage, R-4 + 0% Leakage, R-4 + + + 0% Leakage, R-6 + 0% Leakage, R-6 + + + 0% Leakage, R-8 + 0% Leakage, R-8 + + + 5% Leakage, Uninsulated + 5% Leakage, Uninsulated + + + 5% Leakage, R-4 + 5% Leakage, R-4 + + + 5% Leakage, R-6 + 5% Leakage, R-6 + + + 5% Leakage, R-8 + 5% Leakage, R-8 + + + 10% Leakage, Uninsulated + 10% Leakage, Uninsulated + + + 10% Leakage, R-4 + 10% Leakage, R-4 + + + 10% Leakage, R-6 + 10% Leakage, R-6 + + + 10% Leakage, R-8 + 10% Leakage, R-8 + + + 15% Leakage, Uninsulated + 15% Leakage, Uninsulated + + + 15% Leakage, R-4 + 15% Leakage, R-4 + + + 15% Leakage, R-6 + 15% Leakage, R-6 + + + 15% Leakage, R-8 + 15% Leakage, R-8 + + + 20% Leakage, Uninsulated + 20% Leakage, Uninsulated + + + 20% Leakage, R-4 + 20% Leakage, R-4 + + + 20% Leakage, R-6 + 20% Leakage, R-6 + + + 20% Leakage, R-8 + 20% Leakage, R-8 + + + 25% Leakage, Uninsulated + 25% Leakage, Uninsulated + + + 25% Leakage, R-4 + 25% Leakage, R-4 + + + 25% Leakage, R-6 + 25% Leakage, R-6 + + + 25% Leakage, R-8 + 25% Leakage, R-8 + + + 30% Leakage, Uninsulated + 30% Leakage, Uninsulated + + + 30% Leakage, R-4 + 30% Leakage, R-4 + + + 30% Leakage, R-6 + 30% Leakage, R-6 + + + 30% Leakage, R-8 + 30% Leakage, R-8 + + + 35% Leakage, Uninsulated + 35% Leakage, Uninsulated + + + 35% Leakage, R-4 + 35% Leakage, R-4 + + + 35% Leakage, R-6 + 35% Leakage, R-6 + + + 35% Leakage, R-8 + 35% Leakage, R-8 + + + 0 CFM25 per 100ft2, Uninsulated + 0 CFM25 per 100ft2, Uninsulated + + + 0 CFM25 per 100ft2, R-4 + 0 CFM25 per 100ft2, R-4 + + + 0 CFM25 per 100ft2, R-6 + 0 CFM25 per 100ft2, R-6 + + + 0 CFM25 per 100ft2, R-8 + 0 CFM25 per 100ft2, R-8 + + + 1 CFM25 per 100ft2, Uninsulated + 1 CFM25 per 100ft2, Uninsulated + + + 1 CFM25 per 100ft2, R-4 + 1 CFM25 per 100ft2, R-4 + + + 1 CFM25 per 100ft2, R-6 + 1 CFM25 per 100ft2, R-6 + + + 1 CFM25 per 100ft2, R-8 + 1 CFM25 per 100ft2, R-8 + + + 2 CFM25 per 100ft2, Uninsulated + 2 CFM25 per 100ft2, Uninsulated + + + 2 CFM25 per 100ft2, R-4 + 2 CFM25 per 100ft2, R-4 + + + 2 CFM25 per 100ft2, R-6 + 2 CFM25 per 100ft2, R-6 + + + 2 CFM25 per 100ft2, R-8 + 2 CFM25 per 100ft2, R-8 + + + 4 CFM25 per 100ft2, Uninsulated + 4 CFM25 per 100ft2, Uninsulated + + + 4 CFM25 per 100ft2, R-4 + 4 CFM25 per 100ft2, R-4 + + + 4 CFM25 per 100ft2, R-6 + 4 CFM25 per 100ft2, R-6 + + + 4 CFM25 per 100ft2, R-8 + 4 CFM25 per 100ft2, R-8 + + + 6 CFM25 per 100ft2, Uninsulated + 6 CFM25 per 100ft2, Uninsulated + + + 6 CFM25 per 100ft2, R-4 + 6 CFM25 per 100ft2, R-4 + + + 6 CFM25 per 100ft2, R-6 + 6 CFM25 per 100ft2, R-6 + + + 6 CFM25 per 100ft2, R-8 + 6 CFM25 per 100ft2, R-8 + + + 8 CFM25 per 100ft2, Uninsulated + 8 CFM25 per 100ft2, Uninsulated + + + 8 CFM25 per 100ft2, R-4 + 8 CFM25 per 100ft2, R-4 + + + 8 CFM25 per 100ft2, R-6 + 8 CFM25 per 100ft2, R-6 + + + 8 CFM25 per 100ft2, R-8 + 8 CFM25 per 100ft2, R-8 + + + 12 CFM25 per 100ft2, Uninsulated + 12 CFM25 per 100ft2, Uninsulated + + + 12 CFM25 per 100ft2, R-4 + 12 CFM25 per 100ft2, R-4 + + + 12 CFM25 per 100ft2, R-6 + 12 CFM25 per 100ft2, R-6 + + + 12 CFM25 per 100ft2, R-8 + 12 CFM25 per 100ft2, R-8 + + + Detailed Example: 4 CFM25 per 100ft2 (75% Supply), R-4 + Detailed Example: 4 CFM25 per 100ft2 (75% Supply), R-4 + + + Detailed Example: 5 CFM50 per 100ft2 (75% Supply), R-4 + Detailed Example: 5 CFM50 per 100ft2 (75% Supply), R-4 + + + Detailed Example: 400 CFM50 (75% Supply), R-6 + Detailed Example: 400 CFM50 (75% Supply), R-6 + + + HERS DSE Tests: 250 CFM25, R-6 + HERS DSE Tests: 250 CFM25, R-6 + + + + + hvac_ducts_supply_location + HVAC Ducts: Supply Location + The primary location of the supply ducts. The remainder of the supply ducts are assumed to be in conditioned space. Defaults based on the foundation/attic/garage type. + Choice + false + false + Default + + + Default + Default + + + Conditioned Space + Conditioned Space + + + Basement + Basement + + + Crawlspace + Crawlspace + + + Attic + Attic + + + Garage + Garage + + + Outside + Outside + + + Exterior Wall + Exterior Wall + + + Under Slab + Under Slab + + + Roof Deck + Roof Deck + + + Manufactured Home Belly + Manufactured Home Belly + + + Detailed Example: Attic, 75% + Detailed Example: Attic, 75% + + + + + hvac_ducts_return_location + HVAC Ducts: Return Location + The primary location of the return ducts. The remainder of the return ducts are assumed to be in conditioned space. Defaults based on the foundation/attic/garage type. + Choice + false + false + Default + + + Default + Default + + + Conditioned Space + Conditioned Space + + + Basement + Basement + + + Crawlspace + Crawlspace + + + Attic + Attic + + + Garage + Garage + + + Outside + Outside + + + Exterior Wall + Exterior Wall + + + Under Slab + Under Slab + + + Roof Deck + Roof Deck + + + Manufactured Home Belly + Manufactured Home Belly + + + Detailed Example: Attic, 75% + Detailed Example: Attic, 75% + + + + + ventilation_mechanical + Ventilation Fans: Mechanical Ventilation + The type of mechanical ventilation system used for whole building ventilation. + Choice + false + false + None + + + None + None + + + Exhaust Only + Exhaust Only + + + Supply Only + Supply Only + + + Balanced + Balanced + + + CFIS + CFIS + + + HRV, 55% + HRV, 55% + + + HRV, 60% + HRV, 60% + + + HRV, 65% + HRV, 65% + + + HRV, 70% + HRV, 70% + + + HRV, 75% + HRV, 75% + + + HRV, 80% + HRV, 80% + + + HRV, 85% + HRV, 85% + + + ERV, 55% + ERV, 55% + + + ERV, 60% + ERV, 60% + + + ERV, 65% + ERV, 65% + + + ERV, 70% + ERV, 70% + + + ERV, 75% + ERV, 75% + + + ERV, 80% + ERV, 80% + + + ERV, 85% + ERV, 85% + + + + + ventilation_kitchen + Ventilation Fans: Kitchen Exhaust Fan + The type of kitchen exhaust fan used for local ventilation. + Choice + false + false + None + + + None + None + + + Default + Default + + + 100 cfm, 1 hr/day + 100 cfm, 1 hr/day + + + 100 cfm, 2 hrs/day + 100 cfm, 2 hrs/day + + + 200 cfm, 1 hr/day + 200 cfm, 1 hr/day + + + 200 cfm, 2 hrs/day + 200 cfm, 2 hrs/day + + + 300 cfm, 1 hr/day + 300 cfm, 1 hr/day + + + 300 cfm, 2 hrs/day + 300 cfm, 2 hrs/day + + + Detailed Example: 100 cfm, 1.5 hrs/day @ 6pm, 30 W + Detailed Example: 100 cfm, 1.5 hrs/day @ 6pm, 30 W + + + + + ventilation_bathroom + Ventilation Fans: Bathroom Exhaust Fans + The type of bathroom exhaust fans used for local ventilation. + Choice + false + false + None + + + None + None + + + Default + Default + + + 50 cfm/bathroom, 1 hr/day + 50 cfm/bathroom, 1 hr/day + + + 50 cfm/bathroom, 2 hrs/day + 50 cfm/bathroom, 2 hrs/day + + + 80 cfm/bathroom, 1 hr/day + 80 cfm/bathroom, 1 hr/day + + + 80 cfm/bathroom, 2 hrs/day + 80 cfm/bathroom, 2 hrs/day + + + 100 cfm/bathroom, 1 hr/day + 100 cfm/bathroom, 1 hr/day + + + 100 cfm/bathroom, 2 hrs/day + 100 cfm/bathroom, 2 hrs/day + + + Detailed Example: 50 cfm/bathroom, 1.5 hrs/day @ 7am, 15 W + Detailed Example: 50 cfm/bathroom, 1.5 hrs/day @ 7am, 15 W + + + + + ventilation_whole_house_fan + Ventilation Fans: Whole House Fan + The type of whole house fans used for seasonal cooling load reduction. + Choice + false + false + None + + + None + None + + + 1000 cfm + 1000 cfm + + + 1500 cfm + 1500 cfm + + + 2000 cfm + 2000 cfm + + + 2500 cfm + 2500 cfm + + + 3000 cfm + 3000 cfm + + + 3500 cfm + 3500 cfm + + + 4000 cfm + 4000 cfm + + + 4500 cfm + 4500 cfm + + + 5000 cfm + 5000 cfm + + + 5500 cfm + 5500 cfm + + + 6000 cfm + 6000 cfm + + + Detailed Example: 4500 cfm, 300 W + Detailed Example: 4500 cfm, 300 W + + + + + dhw_water_heater + DHW: Water Heater + The type and efficiency of the water heater. + Choice + false + false + Electricity, Tank, UEF 0.92 + + + None + None + + + Electricity, Tank, UEF 0.90 + Electricity, Tank, UEF 0.90 + + + Electricity, Tank, UEF 0.92 + Electricity, Tank, UEF 0.92 + + + Electricity, Tank, UEF 0.94 + Electricity, Tank, UEF 0.94 + + + Electricity, Tankless, UEF 0.94 + Electricity, Tankless, UEF 0.94 + + + Electricity, Tankless, UEF 0.98 + Electricity, Tankless, UEF 0.98 + + + Electricity, Heat Pump, UEF 3.50 + Electricity, Heat Pump, UEF 3.50 + + + Electricity, Heat Pump, UEF 3.75 + Electricity, Heat Pump, UEF 3.75 + + + Electricity, Heat Pump, UEF 4.00 + Electricity, Heat Pump, UEF 4.00 + + + Natural Gas, Tank, UEF 0.57 + Natural Gas, Tank, UEF 0.57 + + + Natural Gas, Tank, UEF 0.60 + Natural Gas, Tank, UEF 0.60 + + + Natural Gas, Tank, UEF 0.64 + Natural Gas, Tank, UEF 0.64 + + + Natural Gas, Tank, UEF 0.67 + Natural Gas, Tank, UEF 0.67 + + + Natural Gas, Tank, UEF 0.70 + Natural Gas, Tank, UEF 0.70 + + + Natural Gas, Tank, UEF 0.80 + Natural Gas, Tank, UEF 0.80 + + + Natural Gas, Tank, UEF 0.90 + Natural Gas, Tank, UEF 0.90 + + + Natural Gas, Tankless, UEF 0.82 + Natural Gas, Tankless, UEF 0.82 + + + Natural Gas, Tankless, UEF 0.93 + Natural Gas, Tankless, UEF 0.93 + + + Natural Gas, Tankless, UEF 0.96 + Natural Gas, Tankless, UEF 0.96 + + + Natural Gas, Tankless, UEF 0.98 + Natural Gas, Tankless, UEF 0.98 + + + Fuel Oil, Tank, UEF 0.61 + Fuel Oil, Tank, UEF 0.61 + + + Fuel Oil, Tank, UEF 0.64 + Fuel Oil, Tank, UEF 0.64 + + + Fuel Oil, Tank, UEF 0.67 + Fuel Oil, Tank, UEF 0.67 + + + Propane, Tank, UEF 0.57 + Propane, Tank, UEF 0.57 + + + Propane, Tank, UEF 0.60 + Propane, Tank, UEF 0.60 + + + Propane, Tank, UEF 0.64 + Propane, Tank, UEF 0.64 + + + Propane, Tank, UEF 0.67 + Propane, Tank, UEF 0.67 + + + Propane, Tank, UEF 0.70 + Propane, Tank, UEF 0.70 + + + Propane, Tank, UEF 0.80 + Propane, Tank, UEF 0.80 + + + Propane, Tank, UEF 0.90 + Propane, Tank, UEF 0.90 + + + Propane, Tankless, UEF 0.82 + Propane, Tankless, UEF 0.82 + + + Propane, Tankless, UEF 0.93 + Propane, Tankless, UEF 0.93 + + + Propane, Tankless, UEF 0.96 + Propane, Tankless, UEF 0.96 + + + Wood, Tank, UEF 0.60 + Wood, Tank, UEF 0.60 + + + Coal, Tank, UEF 0.60 + Coal, Tank, UEF 0.60 + + + Space-Heating Boiler w/ Storage Tank + Space-Heating Boiler w/ Storage Tank + + + Space-Heating Boiler w/ Tankless Coil + Space-Heating Boiler w/ Tankless Coil + + + Detailed Example: Electricity, Tank, 40 gal, EF 0.93 + Detailed Example: Electricity, Tank, 40 gal, EF 0.93 + + + Detailed Example: Electricity, Tank, UEF 0.94, 135F + Detailed Example: Electricity, Tank, UEF 0.94, 135F + + + Detailed Example: Electricity, Tankless, EF 0.96 + Detailed Example: Electricity, Tankless, EF 0.96 + + + Detailed Example: Electricity, Heat Pump, 80 gal, EF 3.1 + Detailed Example: Electricity, Heat Pump, 80 gal, EF 3.1 + + + Detailed Example: Natural Gas, Tank, 50 gal, EF 0.59 + Detailed Example: Natural Gas, Tank, 50 gal, EF 0.59 + + + Detailed Example: Natural Gas, Tankless, EF 0.95 + Detailed Example: Natural Gas, Tankless, EF 0.95 + + + HERS Hot Water Tests: Natural Gas, Tank, 40 gal, EF 0.56 + HERS Hot Water Tests: Natural Gas, Tank, 40 gal, EF 0.56 + + + HERS Hot Water Tests: Natural Gas, Tank, 40 gal, EF 0.62 + HERS Hot Water Tests: Natural Gas, Tank, 40 gal, EF 0.62 + + + + + dhw_water_heater_location + DHW: Water Heater Location + The location of the water heater. Defaults based on the foundation/garage type. + Choice + false + false + Default + + + Default + Default + + + Conditioned Space + Conditioned Space + + + Basement + Basement + + + Garage + Garage + + + Crawlspace + Crawlspace + + + Attic + Attic + + + Other Heated Space + Other Heated Space + + + Outside + Outside + + + + + dhw_distribution + DHW: Hot Water Distribution + The type of domestic hot water distrubtion. + Choice + false + false + Uninsulated, Standard + + + Uninsulated, Standard + Uninsulated, Standard + + + Uninsulated, Recirc, Uncontrolled + Uninsulated, Recirc, Uncontrolled + + + Uninsulated, Recirc, Timer Control + Uninsulated, Recirc, Timer Control + + + Uninsulated, Recirc, Temperature Control + Uninsulated, Recirc, Temperature Control + + + Uninsulated, Recirc, Presence Sensor Demand Control + Uninsulated, Recirc, Presence Sensor Demand Control + + + Uninsulated, Recirc, Manual Demand Control + Uninsulated, Recirc, Manual Demand Control + + + Insulated, Standard + Insulated, Standard + + + Insulated, Recirc, Uncontrolled + Insulated, Recirc, Uncontrolled + + + Insulated, Recirc, Timer Control + Insulated, Recirc, Timer Control + + + Insulated, Recirc, Temperature Control + Insulated, Recirc, Temperature Control + + + Insulated, Recirc, Presence Sensor Demand Control + Insulated, Recirc, Presence Sensor Demand Control + + + Insulated, Recirc, Manual Demand Control + Insulated, Recirc, Manual Demand Control + + + HERS Hot Water Tests: Insulated, Recirc, Uncontrolled + HERS Hot Water Tests: Insulated, Recirc, Uncontrolled + + + HERS Hot Water Tests: Insulated, Recirc, Manual Demand Control + HERS Hot Water Tests: Insulated, Recirc, Manual Demand Control + + + + + dhw_fixtures + DHW: Hot Water Fixtures + The type and usage of domestic hot water fixtures. + Choice + false + false + Standard, 100% Usage + + + Standard, 25% Usage + Standard, 25% Usage + + + Standard, 50% Usage + Standard, 50% Usage + + + Standard, 75% Usage + Standard, 75% Usage + + + Standard, 100% Usage + Standard, 100% Usage + + + Standard, 125% Usage + Standard, 125% Usage + + + Standard, 150% Usage + Standard, 150% Usage + + + Standard, 175% Usage + Standard, 175% Usage + + + Standard, 200% Usage + Standard, 200% Usage + + + Standard, 400% Usage + Standard, 400% Usage + + + Low Flow, 25% Usage + Low Flow, 25% Usage + + + Low Flow, 50% Usage + Low Flow, 50% Usage + + + Low Flow, 75% Usage + Low Flow, 75% Usage + + + Low Flow, 100% Usage + Low Flow, 100% Usage + + + Low Flow, 125% Usage + Low Flow, 125% Usage + + + Low Flow, 150% Usage + Low Flow, 150% Usage + + + Low Flow, 175% Usage + Low Flow, 175% Usage + + + Low Flow, 200% Usage + Low Flow, 200% Usage + + + Low Flow, 400% Usage + Low Flow, 400% Usage + + + + + dhw_drain_water_heat_recovery + DHW: Drain Water Heat Reovery + The type of drain water heater recovery. + Choice + false + false + None + + + None + None + + + 25% Efficient, Preheats Hot Only, All Showers + 25% Efficient, Preheats Hot Only, All Showers + + + 25% Efficient, Preheats Hot Only, 1 Shower + 25% Efficient, Preheats Hot Only, 1 Shower + + + 25% Efficient, Preheats Hot and Cold, All Showers + 25% Efficient, Preheats Hot and Cold, All Showers + + + 25% Efficient, Preheats Hot and Cold, 1 Shower + 25% Efficient, Preheats Hot and Cold, 1 Shower + + + 35% Efficient, Preheats Hot Only, All Showers + 35% Efficient, Preheats Hot Only, All Showers + + + 35% Efficient, Preheats Hot Only, 1 Shower + 35% Efficient, Preheats Hot Only, 1 Shower + + + 35% Efficient, Preheats Hot and Cold, All Showers + 35% Efficient, Preheats Hot and Cold, All Showers + + + 35% Efficient, Preheats Hot and Cold, 1 Shower + 35% Efficient, Preheats Hot and Cold, 1 Shower + + + 45% Efficient, Preheats Hot Only, All Showers + 45% Efficient, Preheats Hot Only, All Showers + + + 45% Efficient, Preheats Hot Only, 1 Shower + 45% Efficient, Preheats Hot Only, 1 Shower + + + 45% Efficient, Preheats Hot and Cold, All Showers + 45% Efficient, Preheats Hot and Cold, All Showers + + + 45% Efficient, Preheats Hot and Cold, 1 Shower + 45% Efficient, Preheats Hot and Cold, 1 Shower + + + 55% Efficient, Preheats Hot Only, All Showers + 55% Efficient, Preheats Hot Only, All Showers + + + 55% Efficient, Preheats Hot Only, 1 Shower + 55% Efficient, Preheats Hot Only, 1 Shower + + + 55% Efficient, Preheats Hot and Cold, All Showers + 55% Efficient, Preheats Hot and Cold, All Showers + + + 55% Efficient, Preheats Hot and Cold, 1 Shower + 55% Efficient, Preheats Hot and Cold, 1 Shower + + + HERS Hot Water Tests: 54% Efficient, Preheats Hot and Cold, All Showers + HERS Hot Water Tests: 54% Efficient, Preheats Hot and Cold, All Showers + + + + + dhw_solar_thermal + DHW: Solar Thermal + The size and type of the solar thermal system for domestic hot water. + Choice + false + false + None + + + None + None + + + Indirect, Flat Plate, 40 sqft + Indirect, Flat Plate, 40 sqft + + + Indirect, Flat Plate, 64 sqft + Indirect, Flat Plate, 64 sqft + + + Direct, Flat Plate, 40 sqft + Direct, Flat Plate, 40 sqft + + + Direct. Flat Plate, 64 sqft + Direct. Flat Plate, 64 sqft + + + Direct, Integrated Collector Storage, 40 sqft + Direct, Integrated Collector Storage, 40 sqft + + + Direct, Integrated Collector Storage, 64 sqft + Direct, Integrated Collector Storage, 64 sqft + + + Direct, Evacuated Tube, 40 sqft + Direct, Evacuated Tube, 40 sqft + + + Direct, Evacuated Tube, 64 sqft + Direct, Evacuated Tube, 64 sqft + + + Thermosyphon, Flat Plate, 40 sqft + Thermosyphon, Flat Plate, 40 sqft + + + Thermosyphon, Flat Plate, 64 sqft + Thermosyphon, Flat Plate, 64 sqft + + + 60% Solar Fraction + 60% Solar Fraction + + + 65% Solar Fraction + 65% Solar Fraction + + + 70% Solar Fraction + 70% Solar Fraction + + + 75% Solar Fraction + 75% Solar Fraction + + + 80% Solar Fraction + 80% Solar Fraction + + + 85% Solar Fraction + 85% Solar Fraction + + + 90% Solar Fraction + 90% Solar Fraction + + + 95% Solar Fraction + 95% Solar Fraction + + + + + dhw_solar_thermal_direction + DHW: Solar Thermal Direction + The azimuth and tilt of the solar thermal system collectors. + Choice + false + false + Roof Pitch, South + + + Roof Pitch, West + Roof Pitch, West + + + Roof Pitch, Southwest + Roof Pitch, Southwest + + + Roof Pitch, South + Roof Pitch, South + + + Roof Pitch, Southeast + Roof Pitch, Southeast + + + Roof Pitch, East + Roof Pitch, East + + + Roof Pitch, Northeast + Roof Pitch, Northeast + + + Roof Pitch, North + Roof Pitch, North + + + Roof Pitch, Northwest + Roof Pitch, Northwest + + + 0 Degrees + 0 Degrees + + + 5 Degrees, West + 5 Degrees, West + + + 5 Degrees, Southwest + 5 Degrees, Southwest + + + 5 Degrees, South + 5 Degrees, South + + + 5 Degrees, Southeast + 5 Degrees, Southeast + + + 5 Degrees, East + 5 Degrees, East + + + 10 Degrees, West + 10 Degrees, West + + + 10 Degrees, Southwest + 10 Degrees, Southwest + + + 10 Degrees, South + 10 Degrees, South + + + 10 Degrees, Southeast + 10 Degrees, Southeast + + + 10 Degrees, East + 10 Degrees, East + + + 15 Degrees, West + 15 Degrees, West + + + 15 Degrees, Southwest + 15 Degrees, Southwest + + + 15 Degrees, South + 15 Degrees, South + + + 15 Degrees, Southeast + 15 Degrees, Southeast + + + 15 Degrees, East + 15 Degrees, East + + + 20 Degrees, West + 20 Degrees, West + + + 20 Degrees, Southwest + 20 Degrees, Southwest + + + 20 Degrees, South + 20 Degrees, South + + + 20 Degrees, Southeast + 20 Degrees, Southeast + + + 20 Degrees, East + 20 Degrees, East + + + 25 Degrees, West + 25 Degrees, West + + + 25 Degrees, Southwest + 25 Degrees, Southwest + + + 25 Degrees, South + 25 Degrees, South + + + 25 Degrees, Southeast + 25 Degrees, Southeast + + + 25 Degrees, East + 25 Degrees, East + + + 30 Degrees, West + 30 Degrees, West + + + 30 Degrees, Southwest + 30 Degrees, Southwest + + + 30 Degrees, South + 30 Degrees, South + + + 30 Degrees, Southeast + 30 Degrees, Southeast + + + 30 Degrees, East + 30 Degrees, East + + + 35 Degrees, West + 35 Degrees, West + + + 35 Degrees, Southwest + 35 Degrees, Southwest + + + 35 Degrees, South + 35 Degrees, South + + + 35 Degrees, Southeast + 35 Degrees, Southeast + + + 35 Degrees, East + 35 Degrees, East + + + 40 Degrees, West + 40 Degrees, West + + + 40 Degrees, Southwest + 40 Degrees, Southwest + + + 40 Degrees, South + 40 Degrees, South + + + 40 Degrees, Southeast + 40 Degrees, Southeast + + + 40 Degrees, East + 40 Degrees, East + + + 45 Degrees, West + 45 Degrees, West + + + 45 Degrees, Southwest + 45 Degrees, Southwest + + + 45 Degrees, South + 45 Degrees, South + + + 45 Degrees, Southeast + 45 Degrees, Southeast + + + 45 Degrees, East + 45 Degrees, East + + + 50 Degrees, West + 50 Degrees, West + + + 50 Degrees, Southwest + 50 Degrees, Southwest + + + 50 Degrees, South + 50 Degrees, South + + + 50 Degrees, Southeast + 50 Degrees, Southeast + + + 50 Degrees, East + 50 Degrees, East + + + + + pv_system + PV: System + The size and type of the PV system. + Choice + false + false + None + + + None + None + + + 0.5 kW + 0.5 kW + + + 1.0 kW + 1.0 kW + + + 1.5 kW + 1.5 kW + + + 2.0 kW + 2.0 kW + + + 2.5 kW + 2.5 kW + + + 3.0 kW + 3.0 kW + + + 3.5 kW + 3.5 kW + + + 4.0 kW + 4.0 kW + + + 4.5 kW + 4.5 kW + + + 5.0 kW + 5.0 kW + + + 5.5 kW + 5.5 kW + + + 6.0 kW + 6.0 kW + + + 6.5 kW + 6.5 kW + + + 7.0 kW + 7.0 kW + + + 7.5 kW + 7.5 kW + + + 8.0 kW + 8.0 kW + + + 8.5 kW + 8.5 kW + + + 9.0 kW + 9.0 kW + + + 9.5 kW + 9.5 kW + + + 10.0 kW + 10.0 kW + + + 10.5 kW + 10.5 kW + + + 11.0 kW + 11.0 kW + + + 11.5 kW + 11.5 kW + + + 12.0 kW + 12.0 kW + + + 12.5 kW + 12.5 kW + + + 13.0 kW + 13.0 kW + + + 13.5 kW + 13.5 kW + + + 14.0 kW + 14.0 kW + + + 14.5 kW + 14.5 kW + + + 15.0 kW + 15.0 kW + + + Detailed Example: 10.0 kW, Standard, 14% System Losses, 96% Inverter Efficiency + Detailed Example: 10.0 kW, Standard, 14% System Losses, 96% Inverter Efficiency + + + Detailed Example: 1.5 kW, Premium + Detailed Example: 1.5 kW, Premium + + + Detailed Example: 1.5 kW, Thin Film + Detailed Example: 1.5 kW, Thin Film + + + + + pv_system_direction + PV: System Direction + The azimuth and tilt of the PV system array. + Choice + false + false + Roof Pitch, South + + + Roof Pitch, West + Roof Pitch, West + + + Roof Pitch, Southwest + Roof Pitch, Southwest + + + Roof Pitch, South + Roof Pitch, South + + + Roof Pitch, Southeast + Roof Pitch, Southeast + + + Roof Pitch, East + Roof Pitch, East + + + Roof Pitch, Northeast + Roof Pitch, Northeast + + + Roof Pitch, North + Roof Pitch, North + + + Roof Pitch, Northwest + Roof Pitch, Northwest + + + 0 Degrees + 0 Degrees + + + 5 Degrees, West + 5 Degrees, West + + + 5 Degrees, Southwest + 5 Degrees, Southwest + + + 5 Degrees, South + 5 Degrees, South + + + 5 Degrees, Southeast + 5 Degrees, Southeast + + + 5 Degrees, East + 5 Degrees, East + + + 10 Degrees, West + 10 Degrees, West + + + 10 Degrees, Southwest + 10 Degrees, Southwest + + + 10 Degrees, South + 10 Degrees, South + + + 10 Degrees, Southeast + 10 Degrees, Southeast + + + 10 Degrees, East + 10 Degrees, East + + + 15 Degrees, West + 15 Degrees, West + + + 15 Degrees, Southwest + 15 Degrees, Southwest + + + 15 Degrees, South + 15 Degrees, South + + + 15 Degrees, Southeast + 15 Degrees, Southeast + + + 15 Degrees, East + 15 Degrees, East + + + 20 Degrees, West + 20 Degrees, West + + + 20 Degrees, Southwest + 20 Degrees, Southwest + + + 20 Degrees, South + 20 Degrees, South + + + 20 Degrees, Southeast + 20 Degrees, Southeast + + + 20 Degrees, East + 20 Degrees, East + + + 25 Degrees, West + 25 Degrees, West + + + 25 Degrees, Southwest + 25 Degrees, Southwest + + + 25 Degrees, South + 25 Degrees, South + + + 25 Degrees, Southeast + 25 Degrees, Southeast + + + 25 Degrees, East + 25 Degrees, East + + + 30 Degrees, West + 30 Degrees, West + + + 30 Degrees, Southwest + 30 Degrees, Southwest + + + 30 Degrees, South + 30 Degrees, South + + + 30 Degrees, Southeast + 30 Degrees, Southeast + + + 30 Degrees, East + 30 Degrees, East + + + 35 Degrees, West + 35 Degrees, West + + + 35 Degrees, Southwest + 35 Degrees, Southwest + + + 35 Degrees, South + 35 Degrees, South + + + 35 Degrees, Southeast + 35 Degrees, Southeast + + + 35 Degrees, East + 35 Degrees, East + + + 40 Degrees, West + 40 Degrees, West + + + 40 Degrees, Southwest + 40 Degrees, Southwest + + + 40 Degrees, South + 40 Degrees, South + + + 40 Degrees, Southeast + 40 Degrees, Southeast + + + 40 Degrees, East + 40 Degrees, East + + + 45 Degrees, West + 45 Degrees, West + + + 45 Degrees, Southwest + 45 Degrees, Southwest + + + 45 Degrees, South + 45 Degrees, South + + + 45 Degrees, Southeast + 45 Degrees, Southeast + + + 45 Degrees, East + 45 Degrees, East + + + 50 Degrees, West + 50 Degrees, West + + + 50 Degrees, Southwest + 50 Degrees, Southwest + + + 50 Degrees, South + 50 Degrees, South + + + 50 Degrees, Southeast + 50 Degrees, Southeast + + + 50 Degrees, East + 50 Degrees, East + + + + + pv_system_2 + PV: System 2 + The size and type of the second PV system. + Choice + false + false + None + + + None + None + + + 0.5 kW + 0.5 kW + + + 1.0 kW + 1.0 kW + + + 1.5 kW + 1.5 kW + + + 2.0 kW + 2.0 kW + + + 2.5 kW + 2.5 kW + + + 3.0 kW + 3.0 kW + + + 3.5 kW + 3.5 kW + + + 4.0 kW + 4.0 kW + + + 4.5 kW + 4.5 kW + + + 5.0 kW + 5.0 kW + + + 5.5 kW + 5.5 kW + + + 6.0 kW + 6.0 kW + + + 6.5 kW + 6.5 kW + + + 7.0 kW + 7.0 kW + + + 7.5 kW + 7.5 kW + + + 8.0 kW + 8.0 kW + + + 8.5 kW + 8.5 kW + + + 9.0 kW + 9.0 kW + + + 9.5 kW + 9.5 kW + + + 10.0 kW + 10.0 kW + + + 10.5 kW + 10.5 kW + + + 11.0 kW + 11.0 kW + + + 11.5 kW + 11.5 kW + + + 12.0 kW + 12.0 kW + + + 12.5 kW + 12.5 kW + + + 13.0 kW + 13.0 kW + + + 13.5 kW + 13.5 kW + + + 14.0 kW + 14.0 kW + + + 14.5 kW + 14.5 kW + + + 15.0 kW + 15.0 kW + + + Detailed Example: 10.0 kW, Standard, 14% System Losses + Detailed Example: 10.0 kW, Standard, 14% System Losses + + + Detailed Example: 1.5 kW, Premium + Detailed Example: 1.5 kW, Premium + + + Detailed Example: 1.5 kW, Thin Film + Detailed Example: 1.5 kW, Thin Film + + + + + pv_system_2_direction + PV: System 2 Direction + The azimuth and tilt of the second PV system array. + Choice + false + false + Roof Pitch, South + + + Roof Pitch, West + Roof Pitch, West + + + Roof Pitch, Southwest + Roof Pitch, Southwest + + + Roof Pitch, South + Roof Pitch, South + + + Roof Pitch, Southeast + Roof Pitch, Southeast + + + Roof Pitch, East + Roof Pitch, East + + + Roof Pitch, Northeast + Roof Pitch, Northeast + + + Roof Pitch, North + Roof Pitch, North + + + Roof Pitch, Northwest + Roof Pitch, Northwest + + + 0 Degrees + 0 Degrees + + + 5 Degrees, West + 5 Degrees, West + + + 5 Degrees, Southwest + 5 Degrees, Southwest + + + 5 Degrees, South + 5 Degrees, South + + + 5 Degrees, Southeast + 5 Degrees, Southeast + + + 5 Degrees, East + 5 Degrees, East + + + 10 Degrees, West + 10 Degrees, West + + + 10 Degrees, Southwest + 10 Degrees, Southwest + + + 10 Degrees, South + 10 Degrees, South + + + 10 Degrees, Southeast + 10 Degrees, Southeast + + + 10 Degrees, East + 10 Degrees, East + + + 15 Degrees, West + 15 Degrees, West + + + 15 Degrees, Southwest + 15 Degrees, Southwest + + + 15 Degrees, South + 15 Degrees, South + + + 15 Degrees, Southeast + 15 Degrees, Southeast + + + 15 Degrees, East + 15 Degrees, East + + + 20 Degrees, West + 20 Degrees, West + + + 20 Degrees, Southwest + 20 Degrees, Southwest + + + 20 Degrees, South + 20 Degrees, South + + + 20 Degrees, Southeast + 20 Degrees, Southeast + + + 20 Degrees, East + 20 Degrees, East + + + 25 Degrees, West + 25 Degrees, West + + + 25 Degrees, Southwest + 25 Degrees, Southwest + + + 25 Degrees, South + 25 Degrees, South + + + 25 Degrees, Southeast + 25 Degrees, Southeast + + + 25 Degrees, East + 25 Degrees, East + + + 30 Degrees, West + 30 Degrees, West + + + 30 Degrees, Southwest + 30 Degrees, Southwest + + + 30 Degrees, South + 30 Degrees, South + + + 30 Degrees, Southeast + 30 Degrees, Southeast + + + 30 Degrees, East + 30 Degrees, East + + + 35 Degrees, West + 35 Degrees, West + + + 35 Degrees, Southwest + 35 Degrees, Southwest + + + 35 Degrees, South + 35 Degrees, South + + + 35 Degrees, Southeast + 35 Degrees, Southeast + + + 35 Degrees, East + 35 Degrees, East + + + 40 Degrees, West + 40 Degrees, West + + + 40 Degrees, Southwest + 40 Degrees, Southwest + + + 40 Degrees, South + 40 Degrees, South + + + 40 Degrees, Southeast + 40 Degrees, Southeast + + + 40 Degrees, East + 40 Degrees, East + + + 45 Degrees, West + 45 Degrees, West + + + 45 Degrees, Southwest + 45 Degrees, Southwest + + + 45 Degrees, South + 45 Degrees, South + + + 45 Degrees, Southeast + 45 Degrees, Southeast + + + 45 Degrees, East + 45 Degrees, East + + + 50 Degrees, West + 50 Degrees, West + + + 50 Degrees, Southwest + 50 Degrees, Southwest + + + 50 Degrees, South + 50 Degrees, South + + + 50 Degrees, Southeast + 50 Degrees, Southeast + + + 50 Degrees, East + 50 Degrees, East + + + + + battery + Battery + The size and type of battery storage. + Choice + false + false + None + + + None + None + + + 5.0 kWh + 5.0 kWh + + + 7.5 kWh + 7.5 kWh + + + 10.0 kWh + 10.0 kWh + + + 12.5 kWh + 12.5 kWh + + + 15.0 kWh + 15.0 kWh + + + 17.5 kWh + 17.5 kWh + + + 20.0 kWh + 20.0 kWh + + + Detailed Example: 20.0 kWh, 6 kW, Garage + Detailed Example: 20.0 kWh, 6 kW, Garage + + + Detailed Example: 20.0 kWh, 6 kW, Outside + Detailed Example: 20.0 kWh, 6 kW, Outside + + + Detailed Example: 20.0 kWh, 6 kW, Outside, 80% Efficiency + Detailed Example: 20.0 kWh, 6 kW, Outside, 80% Efficiency + + + + + electric_vehicle + Electric Vehicle + The type of battery electric vehicle. + Choice + false + false + None + + + None + None + + + Compact, 200 Mile Range, 1000 miles/yr + Compact, 200 Mile Range, 1000 miles/yr + + + Compact, 200 Mile Range, 3000 miles/yr + Compact, 200 Mile Range, 3000 miles/yr + + + Compact, 200 Mile Range, 5000 miles/yr + Compact, 200 Mile Range, 5000 miles/yr + + + Compact, 200 Mile Range, 7000 miles/yr + Compact, 200 Mile Range, 7000 miles/yr + + + Compact, 200 Mile Range, 9000 miles/yr + Compact, 200 Mile Range, 9000 miles/yr + + + Compact, 200 Mile Range, 11000 miles/yr + Compact, 200 Mile Range, 11000 miles/yr + + + Compact, 200 Mile Range, 13000 miles/yr + Compact, 200 Mile Range, 13000 miles/yr + + + Compact, 200 Mile Range, 15000 miles/yr + Compact, 200 Mile Range, 15000 miles/yr + + + Compact, 200 Mile Range, 17000 miles/yr + Compact, 200 Mile Range, 17000 miles/yr + + + Compact, 200 Mile Range, 19000 miles/yr + Compact, 200 Mile Range, 19000 miles/yr + + + Compact, 200 Mile Range, 22500 miles/yr + Compact, 200 Mile Range, 22500 miles/yr + + + Compact, 300 Mile Range, 1000 miles/yr + Compact, 300 Mile Range, 1000 miles/yr + + + Compact, 300 Mile Range, 3000 miles/yr + Compact, 300 Mile Range, 3000 miles/yr + + + Compact, 300 Mile Range, 5000 miles/yr + Compact, 300 Mile Range, 5000 miles/yr + + + Compact, 300 Mile Range, 7000 miles/yr + Compact, 300 Mile Range, 7000 miles/yr + + + Compact, 300 Mile Range, 9000 miles/yr + Compact, 300 Mile Range, 9000 miles/yr + + + Compact, 300 Mile Range, 11000 miles/yr + Compact, 300 Mile Range, 11000 miles/yr + + + Compact, 300 Mile Range, 13000 miles/yr + Compact, 300 Mile Range, 13000 miles/yr + + + Compact, 300 Mile Range, 15000 miles/yr + Compact, 300 Mile Range, 15000 miles/yr + + + Compact, 300 Mile Range, 17000 miles/yr + Compact, 300 Mile Range, 17000 miles/yr + + + Compact, 300 Mile Range, 19000 miles/yr + Compact, 300 Mile Range, 19000 miles/yr + + + Compact, 300 Mile Range, 22500 miles/yr + Compact, 300 Mile Range, 22500 miles/yr + + + Midsize, 200 Mile Range, 1000 miles/yr + Midsize, 200 Mile Range, 1000 miles/yr + + + Midsize, 200 Mile Range, 3000 miles/yr + Midsize, 200 Mile Range, 3000 miles/yr + + + Midsize, 200 Mile Range, 5000 miles/yr + Midsize, 200 Mile Range, 5000 miles/yr + + + Midsize, 200 Mile Range, 7000 miles/yr + Midsize, 200 Mile Range, 7000 miles/yr + + + Midsize, 200 Mile Range, 9000 miles/yr + Midsize, 200 Mile Range, 9000 miles/yr + + + Midsize, 200 Mile Range, 11000 miles/yr + Midsize, 200 Mile Range, 11000 miles/yr + + + Midsize, 200 Mile Range, 13000 miles/yr + Midsize, 200 Mile Range, 13000 miles/yr + + + Midsize, 200 Mile Range, 15000 miles/yr + Midsize, 200 Mile Range, 15000 miles/yr + + + Midsize, 200 Mile Range, 17000 miles/yr + Midsize, 200 Mile Range, 17000 miles/yr + + + Midsize, 200 Mile Range, 19000 miles/yr + Midsize, 200 Mile Range, 19000 miles/yr + + + Midsize, 200 Mile Range, 22500 miles/yr + Midsize, 200 Mile Range, 22500 miles/yr + + + Midsize, 300 Mile Range, 1000 miles/yr + Midsize, 300 Mile Range, 1000 miles/yr + + + Midsize, 300 Mile Range, 3000 miles/yr + Midsize, 300 Mile Range, 3000 miles/yr + + + Midsize, 300 Mile Range, 5000 miles/yr + Midsize, 300 Mile Range, 5000 miles/yr + + + Midsize, 300 Mile Range, 7000 miles/yr + Midsize, 300 Mile Range, 7000 miles/yr + + + Midsize, 300 Mile Range, 9000 miles/yr + Midsize, 300 Mile Range, 9000 miles/yr + + + Midsize, 300 Mile Range, 11000 miles/yr + Midsize, 300 Mile Range, 11000 miles/yr + + + Midsize, 300 Mile Range, 13000 miles/yr + Midsize, 300 Mile Range, 13000 miles/yr + + + Midsize, 300 Mile Range, 15000 miles/yr + Midsize, 300 Mile Range, 15000 miles/yr + + + Midsize, 300 Mile Range, 17000 miles/yr + Midsize, 300 Mile Range, 17000 miles/yr + + + Midsize, 300 Mile Range, 19000 miles/yr + Midsize, 300 Mile Range, 19000 miles/yr + + + Midsize, 300 Mile Range, 22500 miles/yr + Midsize, 300 Mile Range, 22500 miles/yr + + + Pickup, 200 Mile Range, 1000 miles/yr + Pickup, 200 Mile Range, 1000 miles/yr + + + Pickup, 200 Mile Range, 3000 miles/yr + Pickup, 200 Mile Range, 3000 miles/yr + + + Pickup, 200 Mile Range, 5000 miles/yr + Pickup, 200 Mile Range, 5000 miles/yr + + + Pickup, 200 Mile Range, 7000 miles/yr + Pickup, 200 Mile Range, 7000 miles/yr + + + Pickup, 200 Mile Range, 9000 miles/yr + Pickup, 200 Mile Range, 9000 miles/yr + + + Pickup, 200 Mile Range, 11000 miles/yr + Pickup, 200 Mile Range, 11000 miles/yr + + + Pickup, 200 Mile Range, 13000 miles/yr + Pickup, 200 Mile Range, 13000 miles/yr + + + Pickup, 200 Mile Range, 15000 miles/yr + Pickup, 200 Mile Range, 15000 miles/yr + + + Pickup, 200 Mile Range, 17000 miles/yr + Pickup, 200 Mile Range, 17000 miles/yr + + + Pickup, 200 Mile Range, 19000 miles/yr + Pickup, 200 Mile Range, 19000 miles/yr + + + Pickup, 200 Mile Range, 22500 miles/yr + Pickup, 200 Mile Range, 22500 miles/yr + + + Pickup, 300 Mile Range, 1000 miles/yr + Pickup, 300 Mile Range, 1000 miles/yr + + + Pickup, 300 Mile Range, 3000 miles/yr + Pickup, 300 Mile Range, 3000 miles/yr + + + Pickup, 300 Mile Range, 5000 miles/yr + Pickup, 300 Mile Range, 5000 miles/yr + + + Pickup, 300 Mile Range, 7000 miles/yr + Pickup, 300 Mile Range, 7000 miles/yr + + + Pickup, 300 Mile Range, 9000 miles/yr + Pickup, 300 Mile Range, 9000 miles/yr + + + Pickup, 300 Mile Range, 11000 miles/yr + Pickup, 300 Mile Range, 11000 miles/yr + + + Pickup, 300 Mile Range, 13000 miles/yr + Pickup, 300 Mile Range, 13000 miles/yr + + + Pickup, 300 Mile Range, 15000 miles/yr + Pickup, 300 Mile Range, 15000 miles/yr + + + Pickup, 300 Mile Range, 17000 miles/yr + Pickup, 300 Mile Range, 17000 miles/yr + + + Pickup, 300 Mile Range, 19000 miles/yr + Pickup, 300 Mile Range, 19000 miles/yr + + + Pickup, 300 Mile Range, 22500 miles/yr + Pickup, 300 Mile Range, 22500 miles/yr + + + SUV, 200 Mile Range, 1000 miles/yr + SUV, 200 Mile Range, 1000 miles/yr + + + SUV, 200 Mile Range, 3000 miles/yr + SUV, 200 Mile Range, 3000 miles/yr + + + SUV, 200 Mile Range, 5000 miles/yr + SUV, 200 Mile Range, 5000 miles/yr + + + SUV, 200 Mile Range, 7000 miles/yr + SUV, 200 Mile Range, 7000 miles/yr + + + SUV, 200 Mile Range, 9000 miles/yr + SUV, 200 Mile Range, 9000 miles/yr + + + SUV, 200 Mile Range, 11000 miles/yr + SUV, 200 Mile Range, 11000 miles/yr + + + SUV, 200 Mile Range, 13000 miles/yr + SUV, 200 Mile Range, 13000 miles/yr + + + SUV, 200 Mile Range, 15000 miles/yr + SUV, 200 Mile Range, 15000 miles/yr + + + SUV, 200 Mile Range, 17000 miles/yr + SUV, 200 Mile Range, 17000 miles/yr + + + SUV, 200 Mile Range, 19000 miles/yr + SUV, 200 Mile Range, 19000 miles/yr + + + SUV, 200 Mile Range, 22500 miles/yr + SUV, 200 Mile Range, 22500 miles/yr + + + SUV, 300 Mile Range, 1000 miles/yr + SUV, 300 Mile Range, 1000 miles/yr + + + SUV, 300 Mile Range, 3000 miles/yr + SUV, 300 Mile Range, 3000 miles/yr + + + SUV, 300 Mile Range, 5000 miles/yr + SUV, 300 Mile Range, 5000 miles/yr + + + SUV, 300 Mile Range, 7000 miles/yr + SUV, 300 Mile Range, 7000 miles/yr + + + SUV, 300 Mile Range, 9000 miles/yr + SUV, 300 Mile Range, 9000 miles/yr + + + SUV, 300 Mile Range, 11000 miles/yr + SUV, 300 Mile Range, 11000 miles/yr + + + SUV, 300 Mile Range, 13000 miles/yr + SUV, 300 Mile Range, 13000 miles/yr + + + SUV, 300 Mile Range, 15000 miles/yr + SUV, 300 Mile Range, 15000 miles/yr + + + SUV, 300 Mile Range, 17000 miles/yr + SUV, 300 Mile Range, 17000 miles/yr + + + SUV, 300 Mile Range, 19000 miles/yr + SUV, 300 Mile Range, 19000 miles/yr + + + SUV, 300 Mile Range, 22500 miles/yr + SUV, 300 Mile Range, 22500 miles/yr + + + Detailed Example: 100 kWh battery, 0.25 kWh/mile + Detailed Example: 100 kWh battery, 0.25 kWh/mile + + + Detailed Example: 100 kWh battery, 4.0 miles/kWh + Detailed Example: 100 kWh battery, 4.0 miles/kWh + + + Detailed Example: 100 kWh battery, 135.0 mpge + Detailed Example: 100 kWh battery, 135.0 mpge + + + + + electric_vehicle_charger + Electric Vehicle: Charger + The type and usage of electric vehicle charger. + Choice + false + false + None + + + None + None + + + Level 1, 10% Charging at Home + Level 1, 10% Charging at Home + + + Level 1, 30% Charging at Home + Level 1, 30% Charging at Home + + + Level 1, 50% Charging at Home + Level 1, 50% Charging at Home + + + Level 1, 70% Charging at Home + Level 1, 70% Charging at Home + + + Level 1, 90% Charging at Home + Level 1, 90% Charging at Home + + + Level 1, 100% Charging at Home + Level 1, 100% Charging at Home + + + Level 2, 10% Charging at Home + Level 2, 10% Charging at Home + + + Level 2, 30% Charging at Home + Level 2, 30% Charging at Home + + + Level 2, 50% Charging at Home + Level 2, 50% Charging at Home + + + Level 2, 70% Charging at Home + Level 2, 70% Charging at Home + + + Level 2, 90% Charging at Home + Level 2, 90% Charging at Home + + + Level 2, 100% Charging at Home + Level 2, 100% Charging at Home + + + Detailed Example: Level 2, 7000 W, 75% Charging at Home + Detailed Example: Level 2, 7000 W, 75% Charging at Home + + + + + appliance_clothes_washer + Appliances: Clothes Washer + The type and usage of clothes washer. + Choice + false + false + Standard, 2008-2017, 100% Usage + + + None + None + + + Standard, 2008-2017, 50% Usage + Standard, 2008-2017, 50% Usage + + + Standard, 2008-2017, 75% Usage + Standard, 2008-2017, 75% Usage + + + Standard, 2008-2017, 100% Usage + Standard, 2008-2017, 100% Usage + + + Standard, 2008-2017, 150% Usage + Standard, 2008-2017, 150% Usage + + + Standard, 2008-2017, 200% Usage + Standard, 2008-2017, 200% Usage + + + Standard, 2018-present, 50% Usage + Standard, 2018-present, 50% Usage + + + Standard, 2018-present, 75% Usage + Standard, 2018-present, 75% Usage + + + Standard, 2018-present, 100% Usage + Standard, 2018-present, 100% Usage + + + Standard, 2018-present, 150% Usage + Standard, 2018-present, 150% Usage + + + Standard, 2018-present, 200% Usage + Standard, 2018-present, 200% Usage + + + EnergyStar, 2006-2017, 50% Usage + EnergyStar, 2006-2017, 50% Usage + + + EnergyStar, 2006-2017, 75% Usage + EnergyStar, 2006-2017, 75% Usage + + + EnergyStar, 2006-2017, 100% Usage + EnergyStar, 2006-2017, 100% Usage + + + EnergyStar, 2006-2017, 150% Usage + EnergyStar, 2006-2017, 150% Usage + + + EnergyStar, 2006-2017, 200% Usage + EnergyStar, 2006-2017, 200% Usage + + + EnergyStar, 2018-present, 50% Usage + EnergyStar, 2018-present, 50% Usage + + + EnergyStar, 2018-present, 75% Usage + EnergyStar, 2018-present, 75% Usage + + + EnergyStar, 2018-present, 100% Usage + EnergyStar, 2018-present, 100% Usage + + + EnergyStar, 2018-present, 150% Usage + EnergyStar, 2018-present, 150% Usage + + + EnergyStar, 2018-present, 200% Usage + EnergyStar, 2018-present, 200% Usage + + + CEE Tier II, 2018, 50% Usage + CEE Tier II, 2018, 50% Usage + + + CEE Tier II, 2018, 75% Usage + CEE Tier II, 2018, 75% Usage + + + CEE Tier II, 2018, 100% Usage + CEE Tier II, 2018, 100% Usage + + + CEE Tier II, 2018, 150% Usage + CEE Tier II, 2018, 150% Usage + + + CEE Tier II, 2018, 200% Usage + CEE Tier II, 2018, 200% Usage + + + HERS Reference + HERS Reference + + + Detailed Example: MEF 1.65 + Detailed Example: MEF 1.65 + + + Detailed Example: Standard, 2008-2017, Conditioned Basement + Detailed Example: Standard, 2008-2017, Conditioned Basement + + + Detailed Example: Standard, 2008-2017, Unconditioned Basement + Detailed Example: Standard, 2008-2017, Unconditioned Basement + + + Detailed Example: Standard, 2008-2017, Garage + Detailed Example: Standard, 2008-2017, Garage + + + + + appliance_clothes_dryer + Appliances: Clothes Dryer + The type and usage of clothes dryer. + Choice + false + false + Electricity, Standard, 100% Usage + + + None + None + + + Electricity, Standard, 50% Usage + Electricity, Standard, 50% Usage + + + Electricity, Standard, 75% Usage + Electricity, Standard, 75% Usage + + + Electricity, Standard, 100% Usage + Electricity, Standard, 100% Usage + + + Electricity, Standard, 150% Usage + Electricity, Standard, 150% Usage + + + Electricity, Standard, 200% Usage + Electricity, Standard, 200% Usage + + + Electricity, Premium, 50% Usage + Electricity, Premium, 50% Usage + + + Electricity, Premium, 75% Usage + Electricity, Premium, 75% Usage + + + Electricity, Premium, 100% Usage + Electricity, Premium, 100% Usage + + + Electricity, Premium, 150% Usage + Electricity, Premium, 150% Usage + + + Electricity, Premium, 200% Usage + Electricity, Premium, 200% Usage + + + Electricity, Heat Pump, 50% Usage + Electricity, Heat Pump, 50% Usage + + + Electricity, Heat Pump, 75% Usage + Electricity, Heat Pump, 75% Usage + + + Electricity, Heat Pump, 100% Usage + Electricity, Heat Pump, 100% Usage + + + Electricity, Heat Pump, 150% Usage + Electricity, Heat Pump, 150% Usage + + + Electricity, Heat Pump, 200% Usage + Electricity, Heat Pump, 200% Usage + + + Natural Gas, Standard, 50% Usage + Natural Gas, Standard, 50% Usage + + + Natural Gas, Standard, 75% Usage + Natural Gas, Standard, 75% Usage + + + Natural Gas, Standard, 100% Usage + Natural Gas, Standard, 100% Usage + + + Natural Gas, Standard, 150% Usage + Natural Gas, Standard, 150% Usage + + + Natural Gas, Standard, 200% Usage + Natural Gas, Standard, 200% Usage + + + Natural Gas, Premium, 50% Usage + Natural Gas, Premium, 50% Usage + + + Natural Gas, Premium, 75% Usage + Natural Gas, Premium, 75% Usage + + + Natural Gas, Premium, 100% Usage + Natural Gas, Premium, 100% Usage + + + Natural Gas, Premium, 150% Usage + Natural Gas, Premium, 150% Usage + + + Natural Gas, Premium, 200% Usage + Natural Gas, Premium, 200% Usage + + + Propane, Standard, 50% Usage + Propane, Standard, 50% Usage + + + Propane, Standard, 75% Usage + Propane, Standard, 75% Usage + + + Propane, Standard, 100% Usage + Propane, Standard, 100% Usage + + + Propane, Standard, 150% Usage + Propane, Standard, 150% Usage + + + Propane, Standard, 200% Usage + Propane, Standard, 200% Usage + + + HERS Reference: Electricity + HERS Reference: Electricity + + + HERS Reference: Natural Gas + HERS Reference: Natural Gas + + + Detailed Example: Electricity, EF 4.29 + Detailed Example: Electricity, EF 4.29 + + + Detailed Example: Electricity, Standard, Conditioned Basement + Detailed Example: Electricity, Standard, Conditioned Basement + + + Detailed Example: Electricity, Standard, Unconditioned Basement + Detailed Example: Electricity, Standard, Unconditioned Basement + + + Detailed Example: Electricity, Standard, Garage + Detailed Example: Electricity, Standard, Garage + + + + + appliance_dishwasher + Appliances: Dishwasher + The type and usage of dishwasher. + Choice + false + false + Federal Minimum, Standard, 100% Usage + + + None + None + + + Federal Minimum, Standard, 50% Usage + Federal Minimum, Standard, 50% Usage + + + Federal Minimum, Standard, 75% Usage + Federal Minimum, Standard, 75% Usage + + + Federal Minimum, Standard, 100% Usage + Federal Minimum, Standard, 100% Usage + + + Federal Minimum, Standard, 150% Usage + Federal Minimum, Standard, 150% Usage + + + Federal Minimum, Standard, 200% Usage + Federal Minimum, Standard, 200% Usage + + + EnergyStar, Standard, 50% Usage + EnergyStar, Standard, 50% Usage + + + EnergyStar, Standard, 75% Usage + EnergyStar, Standard, 75% Usage + + + EnergyStar, Standard, 100% Usage + EnergyStar, Standard, 100% Usage + + + EnergyStar, Standard, 150% Usage + EnergyStar, Standard, 150% Usage + + + EnergyStar, Standard, 200% Usage + EnergyStar, Standard, 200% Usage + + + EnergyStar, Compact, 50% Usage + EnergyStar, Compact, 50% Usage + + + EnergyStar, Compact, 75% Usage + EnergyStar, Compact, 75% Usage + + + EnergyStar, Compact, 100% Usage + EnergyStar, Compact, 100% Usage + + + EnergyStar, Compact, 150% Usage + EnergyStar, Compact, 150% Usage + + + EnergyStar, Compact, 200% Usage + EnergyStar, Compact, 200% Usage + + + HERS Reference + HERS Reference + + + Detailed Example: EF 0.7, Compact + Detailed Example: EF 0.7, Compact + + + Detailed Example: Federal Minimum, Standard, Conditioned Basement + Detailed Example: Federal Minimum, Standard, Conditioned Basement + + + Detailed Example: Federal Minimum, Standard, Unconditioned Basement + Detailed Example: Federal Minimum, Standard, Unconditioned Basement + + + Detailed Example: Federal Minimum, Standard, Garage + Detailed Example: Federal Minimum, Standard, Garage + + + + + appliance_refrigerator + Appliances: Refrigerator + The type and usage of refrigerator. + Choice + false + false + 434 kWh/yr, 100% Usage + + + None + None + + + 1139 kWh/yr, 90% Usage + 1139 kWh/yr, 90% Usage + + + 1139 kWh/yr, 100% Usage + 1139 kWh/yr, 100% Usage + + + 1139 kWh/yr, 110% Usage + 1139 kWh/yr, 110% Usage + + + 748 kWh/yr, 90% Usage + 748 kWh/yr, 90% Usage + + + 748 kWh/yr, 100% Usage + 748 kWh/yr, 100% Usage + + + 748 kWh/yr, 110% Usage + 748 kWh/yr, 110% Usage + + + 727 kWh/yr, 90% Usage + 727 kWh/yr, 90% Usage + + + 727 kWh/yr, 100% Usage + 727 kWh/yr, 100% Usage + + + 727 kWh/yr, 110% Usage + 727 kWh/yr, 110% Usage + + + 650 kWh/yr, 90% Usage + 650 kWh/yr, 90% Usage + + + 650 kWh/yr, 100% Usage + 650 kWh/yr, 100% Usage + + + 650 kWh/yr, 110% Usage + 650 kWh/yr, 110% Usage + + + 574 kWh/yr, 90% Usage + 574 kWh/yr, 90% Usage + + + 574 kWh/yr, 100% Usage + 574 kWh/yr, 100% Usage + + + 574 kWh/yr, 110% Usage + 574 kWh/yr, 110% Usage + + + 547 kWh/yr, 90% Usage + 547 kWh/yr, 90% Usage + + + 547 kWh/yr, 100% Usage + 547 kWh/yr, 100% Usage + + + 547 kWh/yr, 110% Usage + 547 kWh/yr, 110% Usage + + + 480 kWh/yr, 90% Usage + 480 kWh/yr, 90% Usage + + + 480 kWh/yr, 100% Usage + 480 kWh/yr, 100% Usage + + + 480 kWh/yr, 110% Usage + 480 kWh/yr, 110% Usage + + + 458 kWh/yr, 90% Usage + 458 kWh/yr, 90% Usage + + + 458 kWh/yr, 100% Usage + 458 kWh/yr, 100% Usage + + + 458 kWh/yr, 110% Usage + 458 kWh/yr, 110% Usage + + + 434 kWh/yr, 90% Usage + 434 kWh/yr, 90% Usage + + + 434 kWh/yr, 100% Usage + 434 kWh/yr, 100% Usage + + + 434 kWh/yr, 110% Usage + 434 kWh/yr, 110% Usage + + + 384 kWh/yr, 90% Usage + 384 kWh/yr, 90% Usage + + + 384 kWh/yr, 100% Usage + 384 kWh/yr, 100% Usage + + + 384 kWh/yr, 110% Usage + 384 kWh/yr, 110% Usage + + + 348 kWh/yr, 90% Usage + 348 kWh/yr, 90% Usage + + + 348 kWh/yr, 100% Usage + 348 kWh/yr, 100% Usage + + + 348 kWh/yr, 110% Usage + 348 kWh/yr, 110% Usage + + + HERS Reference: 2-Bedroom Home + HERS Reference: 2-Bedroom Home + + + HERS Reference: 3-Bedroom Home + HERS Reference: 3-Bedroom Home + + + HERS Reference: 4-Bedroom Home + HERS Reference: 4-Bedroom Home + + + Detailed Example: 650 kWh/yr, Conditioned Basement + Detailed Example: 650 kWh/yr, Conditioned Basement + + + Detailed Example: 650 kWh/yr, Unconditioned Basement + Detailed Example: 650 kWh/yr, Unconditioned Basement + + + Detailed Example: 650 kWh/yr, Garage + Detailed Example: 650 kWh/yr, Garage + + + + + appliance_extra_refrigerator + Appliances: Extra Refrigerator + The type and usage of extra refrigerator. + Choice + false + false + None + + + None + None + + + 1139 kWh/yr, 90% Usage + 1139 kWh/yr, 90% Usage + + + 1139 kWh/yr, 100% Usage + 1139 kWh/yr, 100% Usage + + + 1139 kWh/yr, 110% Usage + 1139 kWh/yr, 110% Usage + + + 748 kWh/yr, 90% Usage + 748 kWh/yr, 90% Usage + + + 748 kWh/yr, 100% Usage + 748 kWh/yr, 100% Usage + + + 748 kWh/yr, 110% Usage + 748 kWh/yr, 110% Usage + + + 727 kWh/yr, 90% Usage + 727 kWh/yr, 90% Usage + + + 727 kWh/yr, 100% Usage + 727 kWh/yr, 100% Usage + + + 727 kWh/yr, 110% Usage + 727 kWh/yr, 110% Usage + + + 650 kWh/yr, 90% Usage + 650 kWh/yr, 90% Usage + + + 650 kWh/yr, 100% Usage + 650 kWh/yr, 100% Usage + + + 650 kWh/yr, 110% Usage + 650 kWh/yr, 110% Usage + + + 574 kWh/yr, 90% Usage + 574 kWh/yr, 90% Usage + + + 574 kWh/yr, 100% Usage + 574 kWh/yr, 100% Usage + + + 574 kWh/yr, 110% Usage + 574 kWh/yr, 110% Usage + + + 547 kWh/yr, 90% Usage + 547 kWh/yr, 90% Usage + + + 547 kWh/yr, 100% Usage + 547 kWh/yr, 100% Usage + + + 547 kWh/yr, 110% Usage + 547 kWh/yr, 110% Usage + + + 480 kWh/yr, 90% Usage + 480 kWh/yr, 90% Usage + + + 480 kWh/yr, 100% Usage + 480 kWh/yr, 100% Usage + + + 480 kWh/yr, 110% Usage + 480 kWh/yr, 110% Usage + + + 458 kWh/yr, 90% Usage + 458 kWh/yr, 90% Usage + + + 458 kWh/yr, 100% Usage + 458 kWh/yr, 100% Usage + + + 458 kWh/yr, 110% Usage + 458 kWh/yr, 110% Usage + + + 434 kWh/yr, 90% Usage + 434 kWh/yr, 90% Usage + + + 434 kWh/yr, 100% Usage + 434 kWh/yr, 100% Usage + + + 434 kWh/yr, 110% Usage + 434 kWh/yr, 110% Usage + + + 384 kWh/yr, 90% Usage + 384 kWh/yr, 90% Usage + + + 384 kWh/yr, 100% Usage + 384 kWh/yr, 100% Usage + + + 384 kWh/yr, 110% Usage + 384 kWh/yr, 110% Usage + + + 348 kWh/yr, 90% Usage + 348 kWh/yr, 90% Usage + + + 348 kWh/yr, 100% Usage + 348 kWh/yr, 100% Usage + + + 348 kWh/yr, 110% Usage + 348 kWh/yr, 110% Usage + + + Detailed Example: 748 kWh/yr, Conditioned Basement + Detailed Example: 748 kWh/yr, Conditioned Basement + + + Detailed Example: 748 kWh/yr, Unconditioned Basement + Detailed Example: 748 kWh/yr, Unconditioned Basement + + + Detailed Example: 748 kWh/yr, Garage + Detailed Example: 748 kWh/yr, Garage + + + + + appliance_freezer + Appliances: Freezer + The type and usage of freezer. + Choice + false + false + None + + + None + None + + + 935 kWh/yr, 90% Usage + 935 kWh/yr, 90% Usage + + + 935 kWh/yr, 100% Usage + 935 kWh/yr, 100% Usage + + + 935 kWh/yr, 110% Usage + 935 kWh/yr, 110% Usage + + + 712 kWh/yr, 90% Usage + 712 kWh/yr, 90% Usage + + + 712 kWh/yr, 100% Usage + 712 kWh/yr, 100% Usage + + + 712 kWh/yr, 110% Usage + 712 kWh/yr, 110% Usage + + + 641 kWh/yr, 90% Usage + 641 kWh/yr, 90% Usage + + + 641 kWh/yr, 100% Usage + 641 kWh/yr, 100% Usage + + + 641 kWh/yr, 110% Usage + 641 kWh/yr, 110% Usage + + + 568 kWh/yr, 90% Usage + 568 kWh/yr, 90% Usage + + + 568 kWh/yr, 100% Usage + 568 kWh/yr, 100% Usage + + + 568 kWh/yr, 110% Usage + 568 kWh/yr, 110% Usage + + + 417 kWh/yr, 90% Usage + 417 kWh/yr, 90% Usage + + + 417 kWh/yr, 100% Usage + 417 kWh/yr, 100% Usage + + + 417 kWh/yr, 110% Usage + 417 kWh/yr, 110% Usage + + + 375 kWh/yr, 90% Usage + 375 kWh/yr, 90% Usage + + + 375 kWh/yr, 100% Usage + 375 kWh/yr, 100% Usage + + + 375 kWh/yr, 110% Usage + 375 kWh/yr, 110% Usage + + + 354 kWh/yr, 90% Usage + 354 kWh/yr, 90% Usage + + + 354 kWh/yr, 100% Usage + 354 kWh/yr, 100% Usage + + + 354 kWh/yr, 110% Usage + 354 kWh/yr, 110% Usage + + + Detailed Example: 712 kWh/yr, Conditioned Basement + Detailed Example: 712 kWh/yr, Conditioned Basement + + + Detailed Example: 712 kWh/yr, Unconditioned Basement + Detailed Example: 712 kWh/yr, Unconditioned Basement + + + Detailed Example: 712 kWh/yr, Garage + Detailed Example: 712 kWh/yr, Garage + + + + + appliance_cooking_range_oven + Appliances: Cooking Range/Oven + The type and usage of cooking range/oven. + Choice + false + false + Electricity, Standard, Non-Convection, 100% Usage + + + None + None + + + Electricity, Standard, Non-Convection, 50% Usage + Electricity, Standard, Non-Convection, 50% Usage + + + Electricity, Standard, Non-Convection, 75% Usage + Electricity, Standard, Non-Convection, 75% Usage + + + Electricity, Standard, Non-Convection, 100% Usage + Electricity, Standard, Non-Convection, 100% Usage + + + Electricity, Standard, Non-Convection, 150% Usage + Electricity, Standard, Non-Convection, 150% Usage + + + Electricity, Standard, Non-Convection, 200% Usage + Electricity, Standard, Non-Convection, 200% Usage + + + Electricity, Standard, Convection, 50% Usage + Electricity, Standard, Convection, 50% Usage + + + Electricity, Standard, Convection, 75% Usage + Electricity, Standard, Convection, 75% Usage + + + Electricity, Standard, Convection, 100% Usage + Electricity, Standard, Convection, 100% Usage + + + Electricity, Standard, Convection, 150% Usage + Electricity, Standard, Convection, 150% Usage + + + Electricity, Standard, Convection, 200% Usage + Electricity, Standard, Convection, 200% Usage + + + Electricity, Induction, Non-Convection, 50% Usage + Electricity, Induction, Non-Convection, 50% Usage + + + Electricity, Induction, Non-Convection, 75% Usage + Electricity, Induction, Non-Convection, 75% Usage + + + Electricity, Induction, Non-Convection, 100% Usage + Electricity, Induction, Non-Convection, 100% Usage + + + Electricity, Induction, Non-Convection, 150% Usage + Electricity, Induction, Non-Convection, 150% Usage + + + Electricity, Induction, Non-Convection, 200% Usage + Electricity, Induction, Non-Convection, 200% Usage + + + Electricity, Induction, Convection, 50% Usage + Electricity, Induction, Convection, 50% Usage + + + Electricity, Induction, Convection, 75% Usage + Electricity, Induction, Convection, 75% Usage + + + Electricity, Induction, Convection, 100% Usage + Electricity, Induction, Convection, 100% Usage + + + Electricity, Induction, Convection, 150% Usage + Electricity, Induction, Convection, 150% Usage + + + Electricity, Induction, Convection, 200% Usage + Electricity, Induction, Convection, 200% Usage + + + Natural Gas, Non-Convection, 50% Usage + Natural Gas, Non-Convection, 50% Usage + + + Natural Gas, Non-Convection, 75% Usage + Natural Gas, Non-Convection, 75% Usage + + + Natural Gas, Non-Convection, 100% Usage + Natural Gas, Non-Convection, 100% Usage + + + Natural Gas, Non-Convection, 150% Usage + Natural Gas, Non-Convection, 150% Usage + + + Natural Gas, Non-Convection, 200% Usage + Natural Gas, Non-Convection, 200% Usage + + + Natural Gas, Convection, 50% Usage + Natural Gas, Convection, 50% Usage + + + Natural Gas, Convection, 75% Usage + Natural Gas, Convection, 75% Usage + + + Natural Gas, Convection, 100% Usage + Natural Gas, Convection, 100% Usage + + + Natural Gas, Convection, 150% Usage + Natural Gas, Convection, 150% Usage + + + Natural Gas, Convection, 200% Usage + Natural Gas, Convection, 200% Usage + + + Propane, Non-Convection, 50% Usage + Propane, Non-Convection, 50% Usage + + + Propane, Non-Convection, 75% Usage + Propane, Non-Convection, 75% Usage + + + Propane, Non-Convection, 100% Usage + Propane, Non-Convection, 100% Usage + + + Propane, Non-Convection, 150% Usage + Propane, Non-Convection, 150% Usage + + + Propane, Non-Convection, 200% Usage + Propane, Non-Convection, 200% Usage + + + Propane, Convection, 50% Usage + Propane, Convection, 50% Usage + + + Propane, Convection, 75% Usage + Propane, Convection, 75% Usage + + + Propane, Convection, 100% Usage + Propane, Convection, 100% Usage + + + Propane, Convection, 150% Usage + Propane, Convection, 150% Usage + + + Propane, Convection, 200% Usage + Propane, Convection, 200% Usage + + + Detailed Example: Electricity, Standard, Non-Convection, Conditioned Basement + Detailed Example: Electricity, Standard, Non-Convection, Conditioned Basement + + + Detailed Example: Electricity, Standard, Non-Convection, Unconditioned Basement + Detailed Example: Electricity, Standard, Non-Convection, Unconditioned Basement + + + Detailed Example: Electricity, Standard, Non-Convection, Garage + Detailed Example: Electricity, Standard, Non-Convection, Garage + + + + + appliance_dehumidifier + Appliances: Dehumidifier + The type of dehumidifier. + Choice + false + false + None + + + None + None + + + Portable, 15 pints/day + Portable, 15 pints/day + + + Portable, 20 pints/day + Portable, 20 pints/day + + + Portable, 30 pints/day + Portable, 30 pints/day + + + Portable, 40 pints/day + Portable, 40 pints/day + + + Whole-Home, 60 pints/day + Whole-Home, 60 pints/day + + + Whole-Home, 75 pints/day + Whole-Home, 75 pints/day + + + Whole-Home, 95 pints/day + Whole-Home, 95 pints/day + + + Whole-Home, 125 pints/day + Whole-Home, 125 pints/day + + + Detailed Example: Portable, 40 pints/day, EF 1.8 + Detailed Example: Portable, 40 pints/day, EF 1.8 + + + Detailed Example: Whole-Home, 60 pints/day, EF 2.3 + Detailed Example: Whole-Home, 60 pints/day, EF 2.3 + + + Detailed Example: Portable, 40 pints/day, IEF 1.4 + Detailed Example: Portable, 40 pints/day, IEF 1.4 + + + + + appliance_dehumidifier_setpoint + Appliances: Dehumidifier Setpoint + The dehumidifier's relative humidity (RH) setpoint. + Choice + false + false + 50% RH + + + 40% RH + 40% RH + + + 45% RH + 45% RH + + + 50% RH + 50% RH + + + 55% RH + 55% RH + + + 60% RH + 60% RH + + + 65% RH + 65% RH + + + + + lighting + Lighting + The type and usage of interior, exterior, and garage lighting. + Choice + false + false + 50% LED, 100% Usage + + + None + None + + + 100% Incandescent, 50% Usage + 100% Incandescent, 50% Usage + + + 100% Incandescent, 75% Usage + 100% Incandescent, 75% Usage + + + 100% Incandescent, 100% Usage + 100% Incandescent, 100% Usage + + + 100% Incandescent, 150% Usage + 100% Incandescent, 150% Usage + + + 100% Incandescent, 200% Usage + 100% Incandescent, 200% Usage + + + 25% LED, 50% Usage + 25% LED, 50% Usage + + + 25% LED, 75% Usage + 25% LED, 75% Usage + + + 25% LED, 100% Usage + 25% LED, 100% Usage + + + 25% LED, 150% Usage + 25% LED, 150% Usage + + + 25% LED, 200% Usage + 25% LED, 200% Usage + + + 50% LED, 50% Usage + 50% LED, 50% Usage + + + 50% LED, 75% Usage + 50% LED, 75% Usage + + + 50% LED, 100% Usage + 50% LED, 100% Usage + + + 50% LED, 150% Usage + 50% LED, 150% Usage + + + 50% LED, 200% Usage + 50% LED, 200% Usage + + + 75% LED, 50% Usage + 75% LED, 50% Usage + + + 75% LED, 75% Usage + 75% LED, 75% Usage + + + 75% LED, 100% Usage + 75% LED, 100% Usage + + + 75% LED, 150% Usage + 75% LED, 150% Usage + + + 75% LED, 200% Usage + 75% LED, 200% Usage + + + 100% LED, 50% Usage + 100% LED, 50% Usage + + + 100% LED, 75% Usage + 100% LED, 75% Usage + + + 100% LED, 100% Usage + 100% LED, 100% Usage + + + 100% LED, 150% Usage + 100% LED, 150% Usage + + + 100% LED, 200% Usage + 100% LED, 200% Usage + + + 25% CFL, 50% Usage + 25% CFL, 50% Usage + + + 25% CFL, 75% Usage + 25% CFL, 75% Usage + + + 25% CFL, 100% Usage + 25% CFL, 100% Usage + + + 25% CFL, 150% Usage + 25% CFL, 150% Usage + + + 25% CFL, 200% Usage + 25% CFL, 200% Usage + + + 50% CFL, 50% Usage + 50% CFL, 50% Usage + + + 50% CFL, 75% Usage + 50% CFL, 75% Usage + + + 50% CFL, 100% Usage + 50% CFL, 100% Usage + + + 50% CFL, 150% Usage + 50% CFL, 150% Usage + + + 50% CFL, 200% Usage + 50% CFL, 200% Usage + + + 75% CFL, 50% Usage + 75% CFL, 50% Usage + + + 75% CFL, 75% Usage + 75% CFL, 75% Usage + + + 75% CFL, 100% Usage + 75% CFL, 100% Usage + + + 75% CFL, 150% Usage + 75% CFL, 150% Usage + + + 75% CFL, 200% Usage + 75% CFL, 200% Usage + + + 100% CFL, 50% Usage + 100% CFL, 50% Usage + + + 100% CFL, 75% Usage + 100% CFL, 75% Usage + + + 100% CFL, 100% Usage + 100% CFL, 100% Usage + + + 100% CFL, 150% Usage + 100% CFL, 150% Usage + + + 100% CFL, 200% Usage + 100% CFL, 200% Usage + + + HERS Reference + HERS Reference + + + Detailed Example: 40% CFL, 10% LFL, 25% LED + Detailed Example: 40% CFL, 10% LFL, 25% LED + + + + + ceiling_fans + Ceiling Fans + The type of ceiling fans. + Choice + false + false + None + + + None + None + + + NumBedrooms+1 Fans, 45.0 W + NumBedrooms+1 Fans, 45.0 W + + + NumBedrooms+1 Fans, 37.5 W + NumBedrooms+1 Fans, 37.5 W + + + NumBedrooms+1 Fans, 30.0 W + NumBedrooms+1 Fans, 30.0 W + + + NumBedrooms+1 Fans, 22.5 W + NumBedrooms+1 Fans, 22.5 W + + + NumBedrooms+1 Fans, 15.0 W + NumBedrooms+1 Fans, 15.0 W + + + 1 Fan, 45.0 W + 1 Fan, 45.0 W + + + 1 Fan, 37.5 W + 1 Fan, 37.5 W + + + 1 Fan, 30.0 W + 1 Fan, 30.0 W + + + 1 Fan, 22.5 W + 1 Fan, 22.5 W + + + 1 Fan, 15.0 W + 1 Fan, 15.0 W + + + 2 Fans, 45.0 W + 2 Fans, 45.0 W + + + 2 Fans, 37.5 W + 2 Fans, 37.5 W + + + 2 Fans, 30.0 W + 2 Fans, 30.0 W + + + 2 Fans, 22.5 W + 2 Fans, 22.5 W + + + 2 Fans, 15.0 W + 2 Fans, 15.0 W + + + 3 Fans, 45.0 W + 3 Fans, 45.0 W + + + 3 Fans, 37.5 W + 3 Fans, 37.5 W + + + 3 Fans, 30.0 W + 3 Fans, 30.0 W + + + 3 Fans, 22.5 W + 3 Fans, 22.5 W + + + 3 Fans, 15.0 W + 3 Fans, 15.0 W + + + 4 Fans, 45.0 W + 4 Fans, 45.0 W + + + 4 Fans, 37.5 W + 4 Fans, 37.5 W + + + 4 Fans, 30.0 W + 4 Fans, 30.0 W + + + 4 Fans, 22.5 W + 4 Fans, 22.5 W + + + 4 Fans, 15.0 W + 4 Fans, 15.0 W + + + 5 Fans, 45.0 W + 5 Fans, 45.0 W + + + 5 Fans, 37.5 W + 5 Fans, 37.5 W + + + 5 Fans, 30.0 W + 5 Fans, 30.0 W + + + 5 Fans, 22.5 W + 5 Fans, 22.5 W + + + 5 Fans, 15.0 W + 5 Fans, 15.0 W + + + Detailed Example: 4 Fans, 39 W, 0.5 deg-F Setpoint Offset + Detailed Example: 4 Fans, 39 W, 0.5 deg-F Setpoint Offset + + + Detailed Example: 4 Fans, 100 cfm/W, 0.5 deg-F Setpoint Offset + Detailed Example: 4 Fans, 100 cfm/W, 0.5 deg-F Setpoint Offset + + + + + misc_television + Misc: Television + The amount of television usage, relative to the national average. + Choice + false + false + 100% Usage + + + None + None + + + 25% Usage + 25% Usage + + + 33% Usage + 33% Usage + + + 50% Usage + 50% Usage + + + 75% Usage + 75% Usage + + + 80% Usage + 80% Usage + + + 90% Usage + 90% Usage + + + 100% Usage + 100% Usage + + + 110% Usage + 110% Usage + + + 125% Usage + 125% Usage + + + 150% Usage + 150% Usage + + + 200% Usage + 200% Usage + + + 300% Usage + 300% Usage + + + 400% Usage + 400% Usage + + + Detailed Example: 620 kWh/yr + Detailed Example: 620 kWh/yr + + + + + misc_plug_loads + Misc: Plug Loads + The amount of additional plug load usage, relative to the national average. + Choice + false + false + 100% Usage + + + None + None + + + 25% Usage + 25% Usage + + + 33% Usage + 33% Usage + + + 50% Usage + 50% Usage + + + 75% Usage + 75% Usage + + + 80% Usage + 80% Usage + + + 90% Usage + 90% Usage + + + 100% Usage + 100% Usage + + + 110% Usage + 110% Usage + + + 125% Usage + 125% Usage + + + 150% Usage + 150% Usage + + + 200% Usage + 200% Usage + + + 300% Usage + 300% Usage + + + 400% Usage + 400% Usage + + + Detailed Example: 2457 kWh/yr + Detailed Example: 2457 kWh/yr + + + ASHRAE 140 Tests + ASHRAE 140 Tests + + + + + misc_well_pump + Misc: Well Pump + The amount of well pump usage, relative to the national average. + Choice + false + false + None + + + None + None + + + Typical Efficiency + Typical Efficiency + + + High Efficiency + High Efficiency + + + Detailed Example: 475 kWh/yr + Detailed Example: 475 kWh/yr + + + + + misc_electric_vehicle_charging + Misc: Electric Vehicle Charging + The amount of EV charging usage, relative to the national average. Only use this if a detailed EV & EV charger were not otherwise specified. + Choice + false + false + None + + + None + None + + + 25% Usage + 25% Usage + + + 33% Usage + 33% Usage + + + 50% Usage + 50% Usage + + + 75% Usage + 75% Usage + + + 80% Usage + 80% Usage + + + 90% Usage + 90% Usage + + + 100% Usage + 100% Usage + + + 110% Usage + 110% Usage + + + 125% Usage + 125% Usage + + + 150% Usage + 150% Usage + + + 200% Usage + 200% Usage + + + 300% Usage + 300% Usage + + + 400% Usage + 400% Usage + + + Detailed Example: 1500 kWh/yr + Detailed Example: 1500 kWh/yr + + + Detailed Example: 3000 kWh/yr + Detailed Example: 3000 kWh/yr + + + + + misc_grill + Misc: Gas Grill + The amount of outdoor gas grill usage, relative to the national average. + Choice + false + false + None + + + None + None + + + Natural Gas, 25% Usage + Natural Gas, 25% Usage + + + Natural Gas, 50% Usage + Natural Gas, 50% Usage + + + Natural Gas, 75% Usage + Natural Gas, 75% Usage + + + Natural Gas, 100% Usage + Natural Gas, 100% Usage + + + Natural Gas, 150% Usage + Natural Gas, 150% Usage + + + Natural Gas, 200% Usage + Natural Gas, 200% Usage + + + Natural Gas, 400% Usage + Natural Gas, 400% Usage + + + Propane, 25% Usage + Propane, 25% Usage + + + Propane, 50% Usage + Propane, 50% Usage + + + Propane, 75% Usage + Propane, 75% Usage + + + Propane, 100% Usage + Propane, 100% Usage + + + Propane, 150% Usage + Propane, 150% Usage + + + Propane, 200% Usage + Propane, 200% Usage + + + Propane, 400% Usage + Propane, 400% Usage + + + Detailed Example: Propane, 25 therm/yr + Detailed Example: Propane, 25 therm/yr + + + + + misc_gas_lighting + Misc: Gas Lighting + The amount of gas lighting usage, relative to the national average. + Choice + false + false + None + + + None + None + + + Natural Gas, 25% Usage + Natural Gas, 25% Usage + + + Natural Gas, 50% Usage + Natural Gas, 50% Usage + + + Natural Gas, 75% Usage + Natural Gas, 75% Usage + + + Natural Gas, 100% Usage + Natural Gas, 100% Usage + + + Natural Gas, 150% Usage + Natural Gas, 150% Usage + + + Natural Gas, 200% Usage + Natural Gas, 200% Usage + + + Natural Gas, 400% Usage + Natural Gas, 400% Usage + + + Detailed Example: Natural Gas, 28 therm/yr + Detailed Example: Natural Gas, 28 therm/yr + + + + + misc_fireplace + Misc: Fireplace + The amount of fireplace usage, relative to the national average. Fireplaces can also be specified as heating systems that meet a portion of the heating load. + Choice + false + false + None + + + None + None + + + Natural Gas, 25% Usage + Natural Gas, 25% Usage + + + Natural Gas, 50% Usage + Natural Gas, 50% Usage + + + Natural Gas, 75% Usage + Natural Gas, 75% Usage + + + Natural Gas, 100% Usage + Natural Gas, 100% Usage + + + Natural Gas, 150% Usage + Natural Gas, 150% Usage + + + Natural Gas, 200% Usage + Natural Gas, 200% Usage + + + Natural Gas, 400% Usage + Natural Gas, 400% Usage + + + Propane, 25% Usage + Propane, 25% Usage + + + Propane, 50% Usage + Propane, 50% Usage + + + Propane, 75% Usage + Propane, 75% Usage + + + Propane, 100% Usage + Propane, 100% Usage + + + Propane, 150% Usage + Propane, 150% Usage + + + Propane, 200% Usage + Propane, 200% Usage + + + Propane, 400% Usage + Propane, 400% Usage + + + Wood, 25% Usage + Wood, 25% Usage + + + Wood, 50% Usage + Wood, 50% Usage + + + Wood, 75% Usage + Wood, 75% Usage + + + Wood, 100% Usage + Wood, 100% Usage + + + Wood, 150% Usage + Wood, 150% Usage + + + Wood, 200% Usage + Wood, 200% Usage + + + Wood, 400% Usage + Wood, 400% Usage + + + Electric, 25% Usage + Electric, 25% Usage + + + Electric, 50% Usage + Electric, 50% Usage + + + Electric, 75% Usage + Electric, 75% Usage + + + Electric, 100% Usage + Electric, 100% Usage + + + Electric, 150% Usage + Electric, 150% Usage + + + Electric, 200% Usage + Electric, 200% Usage + + + Electric, 400% Usage + Electric, 400% Usage + + + Detailed Example: Wood, 55 therm/yr + Detailed Example: Wood, 55 therm/yr + + + + + misc_pool + Misc: Pool + The type of pool (pump & heater). + Choice + false + false + None + + + None + None + + + Unheated, 25% Usage + Unheated, 25% Usage + + + Unheated, 50% Usage + Unheated, 50% Usage + + + Unheated, 75% Usage + Unheated, 75% Usage + + + Unheated, 100% Usage + Unheated, 100% Usage + + + Unheated, 150% Usage + Unheated, 150% Usage + + + Unheated, 200% Usage + Unheated, 200% Usage + + + Unheated, 400% Usage + Unheated, 400% Usage + + + Electric Resistance Heater, 25% Usage + Electric Resistance Heater, 25% Usage + + + Electric Resistance Heater, 50% Usage + Electric Resistance Heater, 50% Usage + + + Electric Resistance Heater, 75% Usage + Electric Resistance Heater, 75% Usage + + + Electric Resistance Heater, 100% Usage + Electric Resistance Heater, 100% Usage + + + Electric Resistance Heater, 150% Usage + Electric Resistance Heater, 150% Usage + + + Electric Resistance Heater, 200% Usage + Electric Resistance Heater, 200% Usage + + + Electric Resistance Heater, 400% Usage + Electric Resistance Heater, 400% Usage + + + Heat Pump Heater, 25% Usage + Heat Pump Heater, 25% Usage + + + Heat Pump Heater, 50% Usage + Heat Pump Heater, 50% Usage + + + Heat Pump Heater, 75% Usage + Heat Pump Heater, 75% Usage + + + Heat Pump Heater, 100% Usage + Heat Pump Heater, 100% Usage + + + Heat Pump Heater, 150% Usage + Heat Pump Heater, 150% Usage + + + Heat Pump Heater, 200% Usage + Heat Pump Heater, 200% Usage + + + Heat Pump Heater, 400% Usage + Heat Pump Heater, 400% Usage + + + Natural Gas Heater, 25% Usage + Natural Gas Heater, 25% Usage + + + Natural Gas Heater, 50% Usage + Natural Gas Heater, 50% Usage + + + Natural Gas Heater, 75% Usage + Natural Gas Heater, 75% Usage + + + Natural Gas Heater, 100% Usage + Natural Gas Heater, 100% Usage + + + Natural Gas Heater, 150% Usage + Natural Gas Heater, 150% Usage + + + Natural Gas Heater, 200% Usage + Natural Gas Heater, 200% Usage + + + Natural Gas Heater, 400% Usage + Natural Gas Heater, 400% Usage + + + Detailed Example: 2700 kWh/yr Pump, Unheated + Detailed Example: 2700 kWh/yr Pump, Unheated + + + Detailed Example: 2700 kWh/yr Pump, 500 therms/yr Natural Gas Heater + Detailed Example: 2700 kWh/yr Pump, 500 therms/yr Natural Gas Heater + + + + + misc_permanent_spa + Misc: Permanent Spa + The type of permanent spa (pump & heater). + Choice + false + false + None + + + None + None + + + Unheated, 25% Usage + Unheated, 25% Usage + + + Unheated, 50% Usage + Unheated, 50% Usage + + + Unheated, 75% Usage + Unheated, 75% Usage + + + Unheated, 100% Usage + Unheated, 100% Usage + + + Unheated, 150% Usage + Unheated, 150% Usage + + + Unheated, 200% Usage + Unheated, 200% Usage + + + Unheated, 400% Usage + Unheated, 400% Usage + + + Electric Resistance Heater, 25% Usage + Electric Resistance Heater, 25% Usage + + + Electric Resistance Heater, 50% Usage + Electric Resistance Heater, 50% Usage + + + Electric Resistance Heater, 75% Usage + Electric Resistance Heater, 75% Usage + + + Electric Resistance Heater, 100% Usage + Electric Resistance Heater, 100% Usage + + + Electric Resistance Heater, 150% Usage + Electric Resistance Heater, 150% Usage + + + Electric Resistance Heater, 200% Usage + Electric Resistance Heater, 200% Usage + + + Electric Resistance Heater, 400% Usage + Electric Resistance Heater, 400% Usage + + + Heat Pump Heater, 25% Usage + Heat Pump Heater, 25% Usage + + + Heat Pump Heater, 50% Usage + Heat Pump Heater, 50% Usage + + + Heat Pump Heater, 75% Usage + Heat Pump Heater, 75% Usage + + + Heat Pump Heater, 100% Usage + Heat Pump Heater, 100% Usage + + + Heat Pump Heater, 150% Usage + Heat Pump Heater, 150% Usage + + + Heat Pump Heater, 200% Usage + Heat Pump Heater, 200% Usage + + + Heat Pump Heater, 400% Usage + Heat Pump Heater, 400% Usage + + + Natural Gas Heater, 25% Usage + Natural Gas Heater, 25% Usage + + + Natural Gas Heater, 50% Usage + Natural Gas Heater, 50% Usage + + + Natural Gas Heater, 75% Usage + Natural Gas Heater, 75% Usage + + + Natural Gas Heater, 100% Usage + Natural Gas Heater, 100% Usage + + + Natural Gas Heater, 150% Usage + Natural Gas Heater, 150% Usage + + + Natural Gas Heater, 200% Usage + Natural Gas Heater, 200% Usage + + + Natural Gas Heater, 400% Usage + Natural Gas Heater, 400% Usage + + + Detailed Example: 1000 kWh/yr Pump, 1300 kWh/yr Electric Resistance Heater + Detailed Example: 1000 kWh/yr Pump, 1300 kWh/yr Electric Resistance Heater + + + Detailed Example: 1000 kWh/yr Pump, 260 kWh/yr Heat Pump Heater + Detailed Example: 1000 kWh/yr Pump, 260 kWh/yr Heat Pump Heater + + + + + schedules_paths + Schedules: CSV File Paths + Absolute/relative paths of csv files containing user-specified detailed schedules, if desired. Use a comma-separated list for multiple files. + String + false + false + + + advanced_feature + Advanced Feature + Select an advanced research feature to use in the model, if desired. + Choice + false + false + None + + + None + None + + + Temperature Capacitance Multiplier, 1 + Temperature Capacitance Multiplier, 1 + + + Temperature Capacitance Multiplier, 4 + Temperature Capacitance Multiplier, 4 + + + Temperature Capacitance Multiplier, 10 + Temperature Capacitance Multiplier, 10 + + + Temperature Capacitance Multiplier, 15 + Temperature Capacitance Multiplier, 15 + + + On/Off Thermostat Deadband, 1F + On/Off Thermostat Deadband, 1F + + + On/Off Thermostat Deadband, 2F + On/Off Thermostat Deadband, 2F + + + On/Off Thermostat Deadband, 3F + On/Off Thermostat Deadband, 3F + + + Heat Pump Backup Staging, 5 kW + Heat Pump Backup Staging, 5 kW + + + Heat Pump Backup Staging, 10 kW + Heat Pump Backup Staging, 10 kW + + + Experimental Ground-to-Air Heat Pump Model + Experimental Ground-to-Air Heat Pump Model + + + HVAC Allow Increased Fixed Capacities + HVAC Allow Increased Fixed Capacities + + + + + advanced_feature_2 + Advanced Feature 2 + Select a second advanced research feature to use in the model, if desired. + Choice + false + false + None + + + None + None + + + Temperature Capacitance Multiplier, 1 + Temperature Capacitance Multiplier, 1 + + + Temperature Capacitance Multiplier, 4 + Temperature Capacitance Multiplier, 4 + + + Temperature Capacitance Multiplier, 10 + Temperature Capacitance Multiplier, 10 + + + Temperature Capacitance Multiplier, 15 + Temperature Capacitance Multiplier, 15 + + + On/Off Thermostat Deadband, 1F + On/Off Thermostat Deadband, 1F + + + On/Off Thermostat Deadband, 2F + On/Off Thermostat Deadband, 2F + + + On/Off Thermostat Deadband, 3F + On/Off Thermostat Deadband, 3F + + + Heat Pump Backup Staging, 5 kW + Heat Pump Backup Staging, 5 kW + + + Heat Pump Backup Staging, 10 kW + Heat Pump Backup Staging, 10 kW + + + Experimental Ground-to-Air Heat Pump Model + Experimental Ground-to-Air Heat Pump Model + + + HVAC Allow Increased Fixed Capacities + HVAC Allow Increased Fixed Capacities + + + + + utility_bill_scenario + Utility Bill Scenario + The type of utility bill calculations to perform. + Choice + false + false + Default (EIA Average Rates) + + + None + None + + + Default (EIA Average Rates) + Default (EIA Average Rates) + + + Detailed Example: $0.12/kWh, $1.1/therm, $12/month + Detailed Example: $0.12/kWh, $1.1/therm, $12/month + + + Detailed Example: Sample Tiered Rate + Detailed Example: Sample Tiered Rate + + + Detailed Example: Sample Time-of-Use Rate + Detailed Example: Sample Time-of-Use Rate + + + Detailed Example: Sample Tiered and Time-of-Use Rate + Detailed Example: Sample Tiered and Time-of-Use Rate + + + Detailed Example: Sample Real-Time Pricing + Detailed Example: Sample Real-Time Pricing + + + Detailed Example: Net Metering w/ Wholesale Excess Rate + Detailed Example: Net Metering w/ Wholesale Excess Rate + + + Detailed Example: Net Metering w/ Retail Excess Rate + Detailed Example: Net Metering w/ Retail Excess Rate + + + Detailed Example: Feed-in Tariff + Detailed Example: Feed-in Tariff + + + + + utility_bill_scenario_2 + Utility Bill Scenario 2 + The second type of utility bill calculations to perform, if desired. + Choice + false + false + None + + + None + None + + + Default (EIA Average Rates) + Default (EIA Average Rates) + + + Detailed Example: $0.12/kWh, $1.1/therm, $12/month + Detailed Example: $0.12/kWh, $1.1/therm, $12/month + + + Detailed Example: Sample Tiered Rate + Detailed Example: Sample Tiered Rate + + + Detailed Example: Sample Time-of-Use Rate + Detailed Example: Sample Time-of-Use Rate + + + Detailed Example: Sample Tiered and Time-of-Use Rate + Detailed Example: Sample Tiered and Time-of-Use Rate + + + Detailed Example: Sample Real-Time Pricing + Detailed Example: Sample Real-Time Pricing + + + Detailed Example: Net Metering w/ Wholesale Excess Rate + Detailed Example: Net Metering w/ Wholesale Excess Rate + + + Detailed Example: Net Metering w/ Retail Excess Rate + Detailed Example: Net Metering w/ Retail Excess Rate + + + Detailed Example: Feed-in Tariff + Detailed Example: Feed-in Tariff + + + + + utility_bill_scenario_3 + Utility Bill Scenario 3 + The third type of utility bill calculations to perform, if desired. + Choice + false + false + None + + + None + None + + + Default (EIA Average Rates) + Default (EIA Average Rates) + + + Detailed Example: $0.12/kWh, $1.1/therm, $12/month + Detailed Example: $0.12/kWh, $1.1/therm, $12/month + + + Detailed Example: Sample Tiered Rate + Detailed Example: Sample Tiered Rate + + + Detailed Example: Sample Time-of-Use Rate + Detailed Example: Sample Time-of-Use Rate + + + Detailed Example: Sample Tiered and Time-of-Use Rate + Detailed Example: Sample Tiered and Time-of-Use Rate + + + Detailed Example: Sample Real-Time Pricing + Detailed Example: Sample Real-Time Pricing + + + Detailed Example: Net Metering w/ Wholesale Excess Rate + Detailed Example: Net Metering w/ Wholesale Excess Rate + + + Detailed Example: Net Metering w/ Retail Excess Rate + Detailed Example: Net Metering w/ Retail Excess Rate + + + Detailed Example: Feed-in Tariff + Detailed Example: Feed-in Tariff + + + + + 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. + String + false + false + + + whole_sfa_or_mf_building_sim + Whole SFA/MF Building Simulation? + Set true if creating an HPXML file to simulate a whole single-family attached or multifamily building with multiple dwelling units within. If an HPXML file already exists at the specified HPXML File Path, a new HPXML Building element describing the current dwelling unit will be appended to this HPXML file. + Boolean + false + false + false + + + true + true + + + false + false + + + + + combine_like_surfaces + Combine like surfaces? + If true, combines like surfaces to simplify the HPXML file generated. + Boolean + false + false + false + + + true + true + + + false + false + + + + + apply_defaults + Apply Default Values? + 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. + Boolean + false + false + false + + + true + true + + + false + false + + + + + apply_validation + Apply Validation? + 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). + Boolean + false + false + false + + + true + true + + + false + false + + + + + building_id + Building Unit ID + The building unit number (between 1 and the number of samples). + Integer + false + false + + + site_iecc_zone + Site: IECC Zone + IECC zone of the home address. + Choice + false + false + + + 1A + 1A + + + 1B + 1B + + + 1C + 1C + + + 2A + 2A + + + 2B + 2B + + + 2C + 2C + + + 3A + 3A + + + 3B + 3B + + + 3C + 3C + + + 4A + 4A + + + 4B + 4B + + + 4C + 4C + + + 5A + 5A + + + 5B + 5B + + + 5C + 5C + + + 6A + 6A + + + 6B + 6B + + + 6C + 6C + + + 7 + 7 + + + 8 + 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. + Integer + year + false + false + + + schedules_vacancy_periods + Schedules: Vacancy Periods + Specifies the vacancy periods. Enter a date 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 + + + schedules_power_outage_periods + Schedules: Power Outage Periods + Specifies the power outage periods. Enter a date 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 + + + schedules_power_outage_periods_window_natvent_availability + Schedules: Power Outage Periods Window Natural Ventilation Availability + The availability of the natural ventilation schedule during the power outage periods. Valid choices are 'regular schedule', 'always available', 'always unavailable'. If multiple periods, use a comma-separated list. + String + false + false + + + schedules_space_heating_unavailable_days + Schedules: Space Heating Unavailability + Number of days space heating equipment is unavailable. + Integer + false + false + + + schedules_space_cooling_unavailable_days + Schedules: Space Cooling Unavailability + Number of days space cooling equipment is unavailable. + Integer + false + false + + + geometry_facility_type + Geometry: Facility Type + The facility type of the dwelling unit. + Choice + false + false + + + single-family detached + single-family detached + + + single-family attached + single-family attached + + + apartment unit + apartment unit + + + manufactured home + manufactured home + + + + + geometry_unit_cfa_bin + Geometry: Unit Conditioned Floor Area Bin + E.g., '2000-2499'. + String + false + false + 2000-2499 + + + geometry_building_num_units + Geometry: Building Number of Units + The number of units in the building. + Integer + # + false + false + + + geometry_unit_level + Geometry: Unit Level + The level of the unit. This is required for apartment units. + Choice + false + false + + + Bottom + Bottom + + + Middle + Middle + + + Top + Top + + + + + geometry_unit_horizontal_location + Geometry: Unit Horizontal Location + The horizontal location of the unit when viewing the front of the building. This is required for single-family attached and apartment units. + Choice + false + false + + + None + None + + + Left + Left + + + Middle + Middle + + + Right + Right + + + + + geometry_num_floors_above_grade + Geometry: Number of Floors Above Grade + The number of floors above grade (in the unit if single-family detached or single-family attached, and in the building if apartment unit). Conditioned attics are included. + Integer + # + false + false + 2 + + + geometry_corridor_position + Geometry: Corridor Position + The position of the corridor. Only applies to single-family attached and apartment units. Exterior corridors are shaded, but not enclosed. Interior corridors are enclosed and conditioned. + Choice + false + false + + + Double-Loaded Interior + Double-Loaded Interior + + + Double Exterior + Double Exterior + + + Single Exterior Front + Single Exterior Front + + + None + None + + + + + vintage + Building Construction: Vintage + The building vintage, used for informational purposes only. + String + false + false + + + unit_multipliers + Building Construction: Unit Multipliers + Specifies the unit multipliers. Use a comma-separated list. + String + false + false + + + ceiling_insulation_r + Enclosure: Ceiling Insulation Nominal R-value + Nominal R-value for the ceiling (attic floor). + Double + h-ft^2-R/Btu + false + false + 0 + + + air_leakage_percent_reduction + Enclosure: Air Leakage Value Reduction + Reduction (%) on the air exchange rate value. + Double + false + false + + + dhw_water_heater_jacket_rvalue + Water Heater: Jacket R-value + The jacket R-value of the storage water heater. + Double + h-ft^2-R/Btu + false + false + + + hvac_control_heating_weekday_setpoint_temp + HVAC Control: Heating Setpoint Weekday Temperature + Specify the weekday heating setpoint temperature. + Double + deg-F + false + false + 71 + + + hvac_control_heating_weekend_setpoint_temp + HVAC Control: Heating Setpoint Weekend Temperature + Specify the weekend heating setpoint temperature. + Double + deg-F + false + false + 71 + + + hvac_control_heating_weekday_setpoint_offset_magnitude + HVAC Control: Heating Setpoint Weekday Offset Magnitude + Specify the weekday heating offset magnitude. + Double + deg-F + false + false + 0 + + + hvac_control_heating_weekend_setpoint_offset_magnitude + HVAC Control: Heating Setpoint Weekend Offset Magnitude + Specify the weekend heating offset magnitude. + Double + deg-F + false + false + 0 + + + hvac_control_heating_weekday_setpoint_schedule + HVAC Control: Heating Setpoint Weekday Schedule + Specify the 24-hour comma-separated weekday heating schedule of 0s and 1s. + String + false + false + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 + + + hvac_control_heating_weekend_setpoint_schedule + HVAC Control: Heating Setpoint Weekend Schedule + Specify the 24-hour comma-separated weekend heating schedule of 0s and 1s. + String + false + false + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 + + + hvac_control_cooling_weekday_setpoint_temp + HVAC Control: Cooling Setpoint Weekday Temperature + Specify the weekday cooling setpoint temperature. + Double + deg-F + false + false + 76 + + + hvac_control_cooling_weekend_setpoint_temp + HVAC Control: Cooling Setpoint Weekend Temperature + Specify the weekend cooling setpoint temperature. + Double + deg-F + false + false + 76 + + + hvac_control_cooling_weekday_setpoint_offset_magnitude + HVAC Control: Cooling Setpoint Weekday Offset Magnitude + Specify the weekday cooling offset magnitude. + Double + deg-F + false + false + 0 + + + hvac_control_cooling_weekend_setpoint_offset_magnitude + HVAC Control: Cooling Setpoint Weekend Offset Magnitude + Specify the weekend cooling offset magnitude. + Double + deg-F + false + false + 0 + + + hvac_control_cooling_weekday_setpoint_schedule + HVAC Control: Cooling Setpoint Weekday Schedule + Specify the 24-hour comma-separated weekday cooling schedule of 0s and 1s. + String + false + false + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 + + + hvac_control_cooling_weekend_setpoint_schedule + HVAC Control: Cooling Setpoint Weekend Schedule + Specify the 24-hour comma-separated weekend cooling schedule of 0s and 1s. + String + false + false + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 + + + hvac_heating_system_existing + HVAC: Existing Heating System + The type and efficiency of the existing heating system. + String + false + false + + + hvac_heating_shared_system + HVAC: Heating Shared System Type + The type of shared heating system. + Choice + false + false + + + None + None + + + Baseboard + Baseboard + + + FanCoil + FanCoil + + + + + heating_system_heating_autosizing_factor + HVAC: Heating System Heating Autosizing Factor + The capacity scaling factor applied to the auto-sizing methodology. If not provided, 1.0 is used. + Double + false + false + + + heating_system_rated_cfm_per_ton + HVAC: Heating System Rated CFM Per Ton + The rated cfm per ton of the heating system. + Double + cfm/ton + false + false + + + heating_system_actual_cfm_per_ton + HVAC: Heating System Actual CFM Per Ton + The actual cfm per ton of the heating system. + Double + cfm/ton + false + false + + + heating_system_2_heating_autosizing_factor + HVAC: Heating System 2 Heating Autosizing Factor + The capacity scaling factor applied to the auto-sizing methodology. If not provided, 1.0 is used. + Double + false + false + + + hvac_cooling_system_existing + HVAC: Existing Cooling System + The type and efficiency of the existing cooling system. + String + false + false + + + hvac_cooling_shared_system + HVAC: Cooling Shared System Type + The type of shared cooling system. + Choice + false + false + + + None + None + + + FanCoil + FanCoil + + + + + cooling_system_cooling_autosizing_factor + HVAC: Cooling System Cooling Autosizing Factor + The capacity scaling factor applied to the auto-sizing methodology. If not provided, 1.0 is used. + Double + false + false + + + cooling_system_rated_cfm_per_ton + HVAC: Cooling System Rated CFM Per Ton + The rated cfm per ton of the cooling system. + Double + cfm/ton + false + false + + + cooling_system_actual_cfm_per_ton + HVAC: Cooling System Actual CFM Per Ton + The actual cfm per ton of the cooling system. + Double + cfm/ton + false + false + + + cooling_system_frac_manufacturer_charge + HVAC: Cooling System Fraction of Manufacturer Recommended Charge + The fraction of manufacturer recommended charge of the cooling system. + Double + Frac + false + false + + + hvac_heat_pump_existing + HVAC: Existing Heat Pump + The type and efficiency of the existing heat pump. + String + false + false + + + heat_pump_heating_autosizing_factor + HVAC: Heat Pump Heating Autosizing Factor + The capacity scaling factor applied to the auto-sizing methodology. If not provided, 1.0 is used. + Double + false + false + + + heat_pump_cooling_autosizing_factor + HVAC: Heat Pump Cooling Autosizing Factor + The capacity scaling factor applied to the auto-sizing methodology. If not provided, 1.0 is used. + Double + false + false + + + heat_pump_backup_heating_autosizing_factor + HVAC: Heat Pump Backup Heating Autosizing Factor + The capacity scaling factor applied to the auto-sizing methodology if Backup Type is integrated. + Double + false + false + + + heat_pump_rated_cfm_per_ton + HVAC: Heat Pump Rated CFM Per Ton + The rated cfm per ton of the heat pump. + Double + cfm/ton + false + false + + + heat_pump_actual_cfm_per_ton + HVAC: Heat Pump Actual CFM Per Ton + The actual cfm per ton of the heat pump. + Double + cfm/ton + false + false + + + heat_pump_frac_manufacturer_charge + HVAC: Heat Pump Fraction of Manufacturer Recommended Charge + The fraction of manufacturer recommended charge of the heat pump. + Double + Frac + false + false + + + hvac_heat_pump_backup_use_existing_system + HVAC: Heat Pump Backup Use Existing System + Whether the heat pump uses the existing heating system as backup. If true and backup type of the heat pump is 'integrated', heat_pump_backup_xxx arguments are assigned values based on the existing heating system. If true and backup type of the heat pump is 'separate', heating_system_2_xxx arguments are assigned values based on the existing heating system. This argument is only applicable for heat pump upgrades. + Boolean + false + false + + + true + true + + + false + false + + + + + hvac_heat_pump_sizing_is_duct_limited + HVAC: Heat Pump Sizing Is Duct Limited + Whether the (ducted) heat pump has an upper limit for autosized heating/cooling capacity and an adjusted blower fan efficiency (W/CFM) value. This argument is only applicable for heat pump upgrades. + Boolean + false + false + + + true + true + + + false + false + + + + + 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 air-source HVAC systems (air-to-air and mini-split heat pumps). Only certain outdoor temperatures are allowed, see the OS-HPXML documentation. + String + F + false + false + + + 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, corresponding to the above outdoor temperatures. Applies only to two stage and variable speed air-source HVAC systems (air-to-air and mini-split heat pumps). Not all values are required, see the OS-HPXML documentation. + String + Btu/hr or Frac + false + false + + + hvac_perf_data_heating_nom_speed_capacities + HVAC Detailed Performance Data: Heating Nominal Speed Capacities + Nominal speed capacities of heating detailed performance data if available, corresponding to the above outdoor temperatures. Applies only to air-source HVAC systems (air-to-air and mini-split heat pumps). Not all values are required, see the OS-HPXML documentation. + String + Btu/hr or Frac + false + false + + + 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, corresponding to the above outdoor temperatures. Applies only to variable speed air-source HVAC systems (air-to-air and mini-split heat pumps). Not all values are required, see the OS-HPXML documentation. + String + Btu/hr or Frac + false + false + + + 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, corresponding to the above outdoor temperatures. Applies only to two stage and variable speed air-source HVAC systems (air-to-air and mini-split heat pumps). Not all values are required, see the OS-HPXML documentation. + String + W/W + false + false + + + hvac_perf_data_heating_nom_speed_cops + HVAC Detailed Performance Data: Heating Nominal Speed COPs + Nominal speed efficiency COP values of heating detailed performance data if available, corresponding to the above outdoor temperatures. Applies only to air-source HVAC systems (air-to-air and mini-split heat pumps). Not all values are required, see the OS-HPXML documentation. + String + W/W + false + false + + + 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, corresponding to the above outdoor temperatures. Applies only to variable speed air-source HVAC systems (air-to-air and mini-split heat pumps). Not all values are required, see the OS-HPXML documentation. + String + W/W + false + false + + + 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 and mini-split air conditioners, air-to-air and mini-split heat pumps). Only certain outdoor temperatures are allowed, see the OS-HPXML documentation. + String + F + false + false + + + 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, corresponding to the above outdoor temperatures. Applies only to two stage and variable speed air-source HVAC systems (central and mini-split air conditioners, air-to-air and mini-split heat pumps). Not all values are required, see the OS-HPXML documentation. + String + Btu/hr or Frac + false + false + + + hvac_perf_data_cooling_nom_speed_capacities + HVAC Detailed Performance Data: Cooling Nominal Speed Capacities + Nominal speed capacities of cooling detailed performance data if available, corresponding to the above outdoor temperatures. Applies only to air-source HVAC systems (central and mini-split air conditioners, air-to-air and mini-split heat pumps). Not all values are required, see the OS-HPXML documentation. + String + Btu/hr or Frac + false + false + + + 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, corresponding to the above outdoor temperatures. Applies only to variable speed air-source HVAC systems (central and mini-split air conditioners, air-to-air and mini-split heat pumps). Not all values are required, see the OS-HPXML documentation. + String + Btu/hr or Frac + false + false + + + 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, corresponding to the above outdoor temperatures. Applies only to two stage and variable speed air-source HVAC systems (central and mini-split air conditioners, air-to-air and mini-split heat pumps). Not all values are required, see the OS-HPXML documentation. + String + W/W + false + false + + + hvac_perf_data_cooling_nom_speed_cops + HVAC Detailed Performance Data: Cooling Nominal Speed COPs + Nominal speed efficiency COP values of cooling detailed performance data if available, corresponding to the above outdoor temperatures. Applies only to air-source HVAC systems (central and mini-split air conditioners, air-to-air and mini-split heat pumps). Not all values are required, see the OS-HPXML documentation. + String + W/W + false + false + + + 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, corresponding to the above outdoor temperatures. Applies only to variable speed air-source HVAC systems (central and mini-split air conditioners, air-to-air and mini-split heat pumps). Not all values are required, see the OS-HPXML documentation. + String + W/W + false + false + + + hvac_heating_system_2_existing + HVAC: Existing Heating System 2 + The type and efficiency of the existing second heating system. + String + false + false + + + hvac_flex_peak_offset + HVAC Load Flexibility: Peak Offset (deg F) + Offset of the peak period in degrees Fahrenheit. + Integer + false + false + 0 + + + hvac_flex_pre_peak_duration_hours + HVAC Load Flexibility: Pre-Peak Duration (hours) + Duration of the pre-peak period in hours. + Double + false + false + 0 + + + hvac_flex_pre_peak_offset + HVAC Load Flexibility: Pre-Peak Offset (deg F) + Offset of the pre-peak period in degrees Fahrenheit. + Integer + false + false + 0 + + + flex_random_shift_minutes + Load Flexibility: Random Shift (minutes) + Number of minutes to randomly shift the peak period. If minutes is less than timestep, it will be assumed to be 0. + Integer + false + false + 0 + + + ev_flex_enabled + EV Flexibility Enabled + Whether to enable EV flexibility. + Boolean + false + false + false + + + true + true + + + false + false + + + + + vehicle_miles_driven_per_year + Electric Vehicle: Miles Driven Per Year + The annual miles the vehicle is driven. + Double + miles + false + false + + + ev_fraction_charged_home + Electric Vehicle: Fraction Charged at Home + The fraction of charging energy provided by the at-home charger to the electric vehicle. + Double + false + false + + + ev_efficiency_percent_increase + Electric Vehicle: Efficiency Improvement + The increase (fraction) in efficiency of the electric vehicle. + Double + Frac + false + false + + + refrigerator_usage_multiplier + Appliances: Refrigerator Usage Multiplier + Multiplier on the refrigerator energy usage that can reflect, e.g., high/low usage occupants. + Double + false + false + + + clothes_dryer_usage_multiplier + Appliances: Clothes Dryer Usage Multiplier + Multiplier on the clothes dryer energy usage that can reflect, e.g., high/low usage occupants. + Double + false + false + + + clothes_washer_usage_multiplier + Appliances: Clothes Washer Usage Multiplier + Multiplier on the clothes washer energy usage that can reflect, e.g., high/low usage occupants. + Double + false + false + + + cooking_range_oven_usage_multiplier + Appliances: Cooking Range/Oven Usage Multiplier + Multiplier on the cooking range/oven energy usage that can reflect, e.g., high/low usage occupants. + Double + false + false + + + dishwasher_usage_multiplier + Appliances: Dishwasher Usage Multiplier + Multiplier on the dishwasher energy usage that can reflect, e.g., high/low usage occupants. + Double + false + false + + + extra_refrigerator_usage_multiplier + Appliances: Extra Refrigerator Usage Multiplier + Multiplier on the extra refrigerator energy usage that can reflect, e.g., high/low usage occupants. + Double + false + false + + + freezer_usage_multiplier + Appliances: Freezer Usage Multiplier + Multiplier on the freezer energy usage that can reflect, e.g., high/low usage occupants. + Double + false + false + + + pool_pump_usage_multiplier + Pool: Pump Usage Multiplier + Multiplier on the pool pump energy usage that can reflect, e.g., high/low usage occupants. + Double + false + false + + + bathroom_fans_start_hour + Ventilation: Bathroom Fans Start Hour + The hour of the day when the bathroom fans run. + Integer + false + false + + + kitchen_fans_start_hour + Ventilation: Kitchen Fans Start Hour + The hour of the day when the kitchen fans run. + Integer + false + false + + + interior_lighting_usage_multiplier + Lighting: Interior Usage Multiplier + Multiplier on the lighting energy usage (interior) that can reflect, e.g., high/low usage occupants. + Double + false + false + + + exterior_lighting_usage_multiplier + Lighting: Exterior Usage Multiplier + Multiplier on the lighting energy usage (exterior) that can reflect, e.g., high/low usage occupants. + Double + false + false + + + garage_lighting_usage_multiplier + Lighting: Garage Usage Multiplier + Multiplier on the lighting energy usage (garage) that can reflect, e.g., high/low usage occupants. + Double + false + false + + + water_fixtures_usage_multiplier + Hot Water Fixtures: Usage Multiplier + Multiplier on the hot water usage that can reflect, e.g., high/low usage occupants. + Double + false + false + + + misc_plug_loads_television_usage_multiplier + Plug Loads: Television Usage Multiplier + Multiplier on the television energy usage that can reflect, e.g., high/low usage occupants. + Double + false + false + + + misc_plug_loads_other_usage_multiplier + Plug Loads: Other Usage Multiplier + Multiplier on the other energy usage that can reflect, e.g., high/low usage occupants. + Double + false + false + + + misc_has_pool + Misc: Has Pool + Whether a pool is present. + Boolean + false + false + + + true + true + + + false + false + + + + + electric_panel_load_other_power_rating + Electric Panel: Other Power Rating + Specifies the panel load other power rating. This represents the total of all other electric loads that are fastened in place, permanently connected, or located on a specific circuit. For example, garbage disposal, built-in microwave. + Double + W + false + false + + + emissions_scenario_names + Emissions: Scenario Names + Names of emissions scenarios. If multiple scenarios, use a comma-separated list. If not provided, no emissions scenarios are calculated. + String + false + false + + + emissions_types + Emissions: Types + Types of emissions (e.g., CO2e, NOx, etc.). If multiple scenarios, use a comma-separated list. + String + false + false + + + emissions_electricity_units + Emissions: Electricity Units + Electricity emissions factors units. If multiple scenarios, use a comma-separated list. Only lb/MWh and kg/MWh are allowed. + String + false + false + + + emissions_electricity_filepaths + Emissions: Electricity File Paths + Electricity emissions factors values, specified as an absolute/relative path to a file with hourly factors. If multiple scenarios, use a comma-separated list. + String + false + false + + + emissions_fossil_fuel_units + Emissions: Fossil Fuel Units + Fossil fuel emissions factors units. If multiple scenarios, use a comma-separated list. Only lb/MBtu and kg/MBtu are allowed. + String + false + false + + + emissions_natural_gas_values + Emissions: Natural Gas Values + Natural gas emissions factors values, specified as an annual factor. If multiple scenarios, use a comma-separated list. + String + false + false + + + emissions_propane_values + Emissions: Propane Values + Propane emissions factors values, specified as an annual factor. If multiple scenarios, use a comma-separated list. + String + false + false + + + emissions_fuel_oil_values + Emissions: Fuel Oil Values + Fuel oil emissions factors values, specified as an annual factor. If multiple scenarios, use a comma-separated list. + String + false + false + + + emissions_wood_values + Emissions: Wood Values + Wood emissions factors values, specified as an annual factor. If multiple scenarios, use a comma-separated list. + String + false + false + + + utility_bill_scenario_names + Utility Bills: Scenario Names + Names of utility bill scenarios. If multiple scenarios, use a comma-separated list. If not provided, no utility bills scenarios are calculated. + String + false + false + + + utility_bill_electricity_filepaths + Utility Bills: Electricity File Paths + 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. + String + false + false + + + utility_bill_electricity_fixed_charges + Utility Bills: Electricity Fixed Charges + Electricity utility bill monthly fixed charges. If multiple scenarios, use a comma-separated list. + String + false + false + + + utility_bill_natural_gas_fixed_charges + Utility Bills: Natural Gas Fixed Charges + Natural gas utility bill monthly fixed charges. If multiple scenarios, use a comma-separated list. + String + false + false + + + utility_bill_propane_fixed_charges + Utility Bills: Propane Fixed Charges + Propane utility bill monthly fixed charges. If multiple scenarios, use a comma-separated list. + String + false + false + + + utility_bill_fuel_oil_fixed_charges + Utility Bills: Fuel Oil Fixed Charges + Fuel oil utility bill monthly fixed charges. If multiple scenarios, use a comma-separated list. + String + false + false + + + utility_bill_wood_fixed_charges + Utility Bills: Wood Fixed Charges + Wood utility bill monthly fixed charges. If multiple scenarios, use a comma-separated list. + String + false + false + + + utility_bill_electricity_marginal_rates + Utility Bills: Electricity Marginal Rates + Electricity utility bill marginal rates. If multiple scenarios, use a comma-separated list. + String + false + false + + + utility_bill_natural_gas_marginal_rates + Utility Bills: Natural Gas Marginal Rates + Natural gas utility bill marginal rates. If multiple scenarios, use a comma-separated list. + String + false + false + + + utility_bill_propane_marginal_rates + Utility Bills: Propane Marginal Rates + Propane utility bill marginal rates. If multiple scenarios, use a comma-separated list. + String + false + false + + + utility_bill_fuel_oil_marginal_rates + Utility Bills: Fuel Oil Marginal Rates + Fuel oil utility bill marginal rates. If multiple scenarios, use a comma-separated list. + String + false + false + + + utility_bill_wood_marginal_rates + Utility Bills: Wood Marginal Rates + Wood utility bill marginal rates. If multiple scenarios, use a comma-separated list. + String + false + false + + + utility_bill_pv_compensation_types + Utility Bills: PV Compensation Types + Utility bill PV compensation types. If multiple scenarios, use a comma-separated list. + String + false + false + + + utility_bill_pv_net_metering_annual_excess_sellback_rate_types + Utility Bills: PV Net Metering Annual Excess Sellback Rate Types + Utility bill PV net metering annual excess sellback rate types. Only applies if the PV compensation type is 'NetMetering'. If multiple scenarios, use a comma-separated list. + String + false + false + + + utility_bill_pv_net_metering_annual_excess_sellback_rates + Utility Bills: PV Net Metering Annual Excess Sellback Rates + Utility bill PV net metering annual excess sellback rates. Only applies if the PV compensation type is 'NetMetering' and the PV annual excess sellback rate type is 'User-Specified'. If multiple scenarios, use a comma-separated list. + String + false + false + + + utility_bill_pv_feed_in_tariff_rates + Utility Bills: PV Feed-In Tariff Rates + Utility bill PV annual full/gross feed-in tariff rates. Only applies if the PV compensation type is 'FeedInTariff'. If multiple scenarios, use a comma-separated list. + String + false + false + + + utility_bill_pv_monthly_grid_connection_fee_units + Utility Bills: PV Monthly Grid Connection Fee Units + Utility bill PV monthly grid connection fee units. If multiple scenarios, use a comma-separated list. + String + false + false + + + utility_bill_pv_monthly_grid_connection_fees + Utility Bills: PV Monthly Grid Connection Fees + Utility bill PV monthly grid connection fees. If multiple scenarios, use a comma-separated list. + String + false + false + + + hpxml_path + HPXML File Path + Absolute/relative path of the HPXML file. + String + false + false + + + + + + Envelope.Form + + + + Measure Type + ModelMeasure + string + + + Measure Language + Ruby + string + + + Intended Software Tool + Apply Measure Now + string + + + Intended Software Tool + OpenStudio Application + string + + + Intended Software Tool + Parametric Analysis Tool + string + + + + + + OpenStudio + 3.10.0 + 3.10.0 + + measure.rb + rb + script + 6782F99C + + + measure.txt + txt + resource + B8446B4E + + + diff --git a/measures/AddSharedSystem/resources/measure.txt b/measures/AddSharedSystem/resources/measure.txt new file mode 100644 index 0000000000..dadb899dcf --- /dev/null +++ b/measures/AddSharedSystem/resources/measure.txt @@ -0,0 +1 @@ +afb2adf24952a82407ba3d03576559c3afb2adf24952a82407ba3d03576559c3 \ No newline at end of file diff --git a/measures/ApplyUpgrade/measure.rb b/measures/ApplyUpgrade/measure.rb index f9666e1bff..73aa43f0dd 100644 --- a/measures/ApplyUpgrade/measure.rb +++ b/measures/ApplyUpgrade/measure.rb @@ -295,6 +295,7 @@ def run(model, runner, user_arguments) end update_args_hash(measures, measure_subdir, new_args_hash) update_args_hash(measures, 'ResStockArgumentsPostHPXML', new_args_hash) if measure_subdir == 'ResStockArguments' + update_args_hash(measures, 'AddSharedSystem', new_args_hash) if measure_subdir == 'ResStockArguments' end end end @@ -314,6 +315,8 @@ def run(model, runner, user_arguments) return false end + unit_multipliers = [] + # Set arguments for the BuildResidentialHPXML measure hpxml_path = File.expand_path('../upgraded.xml') measures['BuildResidentialHPXML'] = [{ 'hpxml_path' => hpxml_path }] @@ -323,13 +326,10 @@ def run(model, runner, user_arguments) set_battery(measures, hpxml) new_runner = OpenStudio::Measure::OSRunner.new(OpenStudio::WorkflowJSON.new) - hpxml.buildings.each_with_index do |hpxml_bldg, unit_number| - if unit_number > 0 - measures['BuildResidentialHPXML'][0]['existing_hpxml_path'] = hpxml_path - end + hpxml.buildings.each do |hpxml_bldg| + unit_multipliers << hpxml_bldg.building_construction.number_of_units set_resstock_arguments(measures, resstock_arguments_runner) - set_building_construction(measures, hpxml_bldg) set_dehumidifier(measures, hpxml_bldg) get_hvac_systems(measures, existing_options_measure_args) @@ -358,6 +358,7 @@ def run(model, runner, user_arguments) # Set arguments for the ResStockArgumentsPostHPXML measure measures['ResStockArgumentsPostHPXML'][0]['hpxml_path'] = hpxml_path measures['ResStockArgumentsPostHPXML'][0]['building_id'] = values['building_id'] + measures['ResStockArgumentsPostHPXML'][0]['unit_multipliers'] = unit_multipliers.join(', ') measures_hash = { 'ResStockArgumentsPostHPXML' => measures['ResStockArgumentsPostHPXML'] } if not apply_measures(measures_dir, measures_hash, new_runner, model, true, 'OpenStudio::Measure::ModelMeasure', nil) register_logs(runner, new_runner) @@ -388,6 +389,26 @@ def run(model, runner, user_arguments) in_path = File.expand_path('../home.xml') FileUtils.cp(hpxml_path, in_path) + # Set arguments for the HPXMLtoOpenStudio measure + measures['HPXMLtoOpenStudio'] = [{}] + measures['HPXMLtoOpenStudio'][0]['hpxml_path'] = in_path + measures['HPXMLtoOpenStudio'][0]['output_dir'] = File.dirname(hpxml_path) + measures['HPXMLtoOpenStudio'][0]['debug'] = values['debug'] + measures['HPXMLtoOpenStudio'][0]['add_component_loads'] = values['add_component_loads'] + measures['HPXMLtoOpenStudio'][0]['skip_validation'] = true + measures_hash = { 'HPXMLtoOpenStudio' => measures['HPXMLtoOpenStudio'] } + if not apply_measures(hpxml_measures_dir, measures_hash, new_runner, model, true, 'OpenStudio::Measure::ModelMeasure', nil) + register_logs(runner, new_runner) + return false + end + + # Set arguments for the AddSharedSystem measure + measures_hash = { 'AddSharedSystem' => measures['AddSharedSystem'] } + if not apply_measures(measures_dir, measures_hash, new_runner, model, true, 'OpenStudio::Measure::ModelMeasure', nil) + register_logs(runner, new_runner) + return false + end + register_logs(runner, resstock_arguments_runner) register_logs(runner, new_runner) @@ -452,12 +473,6 @@ def set_resstock_arguments(measures, child_runner) end end - def set_building_construction(measures, hpxml_bldg) - if hpxml_bldg.building_construction.number_of_units > 1 - measures['BuildResidentialHPXML'][0]['unit_multiplier'] = hpxml_bldg.building_construction.number_of_units - end - end - def set_building_header(measures) additional_properties = [] ['ceiling_insulation_r'].each do |arg_name| diff --git a/measures/ApplyUpgrade/measure.xml b/measures/ApplyUpgrade/measure.xml index 5b610bd44e..53ace653ba 100644 --- a/measures/ApplyUpgrade/measure.xml +++ b/measures/ApplyUpgrade/measure.xml @@ -3,8 +3,8 @@ 3.1 apply_upgrade 33f1654c-f734-43d1-b35d-9d2856e41b5a - 38811145-936a-4100-b962-e026d266c9d5 - 2025-12-08T23:23:42Z + ade5a5cf-d840-46be-8632-9006c933292a + 2025-12-16T19:53:35Z 9339BE01 ApplyUpgrade Apply Upgrade @@ -25016,7 +25016,7 @@ measure.rb rb script - 067F1CF5 + 5FBF6B1E constants.rb @@ -25028,7 +25028,7 @@ apply_upgrade_test.rb rb test - DDA72B46 + 12D85E9A diff --git a/measures/ApplyUpgrade/tests/apply_upgrade_test.rb b/measures/ApplyUpgrade/tests/apply_upgrade_test.rb index 9da2adc48a..07f24df054 100644 --- a/measures/ApplyUpgrade/tests/apply_upgrade_test.rb +++ b/measures/ApplyUpgrade/tests/apply_upgrade_test.rb @@ -491,7 +491,7 @@ def _test_retaining_hvac_system_values(upgrade, expected_values, hvac_existing) hpxml_existing.buildings.each do |hpxml_bldg_existing| # Check for correct capacity and autosizing factor values - measure.retain_existing_hvac_capacities_and_autosizing_factors(args, hpxml_bldg_existing, hpxml_bldg) + measure.retain_existing_hvac_capacities_and_autosizing_factors(hpxml_bldg_existing, hpxml_bldg, args) actual_values = {} if hpxml_bldg.heating_systems.count { |hs| hs.primary_system } > 0 diff --git a/measures/BuildExistingModel/README.md b/measures/BuildExistingModel/README.md index 7e929c675c..c922f6849c 100644 --- a/measures/BuildExistingModel/README.md +++ b/measures/BuildExistingModel/README.md @@ -441,6 +441,39 @@ Utility bill PV monthly grid connection fees. If multiple scenarios, use a comma
+**Add component loads?** + +If true, adds the calculation of heating/cooling component loads (not enabled by default for faster performance). + +- **Name:** ``add_component_loads`` +- **Type:** ``Boolean`` + +- **Required:** ``false`` + +
+ +**Debug Mode?** + +If true: 1) Writes in.osm file, 2) Generates additional log output, and 3) Creates all EnergyPlus output files. + +- **Name:** ``debug`` +- **Type:** ``Boolean`` + +- **Required:** ``false`` + +
+ +**Whole SFA/MF Building Simulation?** + +Set true if creating an HPXML file to simulate a whole single-family attached or multifamily building with multiple dwelling units within. If an HPXML file already exists at the specified HPXML File Path, a new HPXML Building element describing the current dwelling unit will be appended to this HPXML file. + +- **Name:** ``whole_sfa_or_mf_building_sim`` +- **Type:** ``Boolean`` + +- **Required:** ``false`` + +
+ diff --git a/measures/BuildExistingModel/measure.rb b/measures/BuildExistingModel/measure.rb index c27901f88d..c66b04307d 100644 --- a/measures/BuildExistingModel/measure.rb +++ b/measures/BuildExistingModel/measure.rb @@ -226,6 +226,24 @@ def arguments(model) # rubocop:disable Lint/UnusedMethodArgument arg.setDescription('Utility bill PV monthly grid connection fees. If multiple scenarios, use a comma-separated list.') args << arg + arg = OpenStudio::Measure::OSArgument.makeBoolArgument('add_component_loads', false) + arg.setDisplayName('Add component loads?') + arg.setDescription('If true, adds the calculation of heating/cooling component loads (not enabled by default for faster performance).') + arg.setDefaultValue(false) + args << arg + + arg = OpenStudio::Measure::OSArgument.makeBoolArgument('debug', false) + arg.setDisplayName('Debug Mode?') + arg.setDescription('If true: 1) Writes in.osm file, 2) Generates additional log output, and 3) Creates all EnergyPlus output files.') + arg.setDefaultValue(false) + args << arg + + arg = OpenStudio::Measure::OSArgument.makeBoolArgument('whole_sfa_or_mf_building_sim', false) + arg.setDisplayName('Whole SFA/MF Building Simulation?') + arg.setDescription('Set true if creating an HPXML file to simulate a whole single-family attached or multifamily building with multiple dwelling units within. If an HPXML file already exists at the specified HPXML File Path, a new HPXML Building element describing the current dwelling unit will be appended to this HPXML file.') + arg.setDefaultValue(false) + args << arg + return args end @@ -330,6 +348,7 @@ def run(model, runner, user_arguments) options_measure_args[option_name].each do |measure_subdir, args_hash| update_args_hash(measures, measure_subdir, args_hash) update_args_hash(measures, 'ResStockArgumentsPostHPXML', args_hash) if measure_subdir == 'ResStockArguments' + update_args_hash(measures, 'AddSharedSystem', args_hash) if measure_subdir == 'ResStockArguments' end end @@ -342,22 +361,20 @@ def run(model, runner, user_arguments) end # Optional whole SFA/MF building simulation - whole_sfa_or_mf_building_sim = false - geometry_building_num_units = 1 - if whole_sfa_or_mf_building_sim - resstock_arguments_runner.result.stepValues.each do |step_value| - if step_value.name == 'geometry_building_num_units' - geometry_building_num_units = Integer(get_value_from_workflow_step_value(step_value)) - end - end + whole_sfa_or_mf_building_sim = args[:whole_sfa_or_mf_building_sim] + n_units = measures['ResStockArguments'][0]['geometry_building_num_units'] + if n_units.nil? # SFD + whole_sfa_or_mf_building_sim = false + n_units = 1 + else + n_units = Integer(n_units) end num_units_modeled = 1 - max_num_units_modeled = 5 unit_multipliers = [] - if whole_sfa_or_mf_building_sim && geometry_building_num_units > 1 - num_units_modeled = [geometry_building_num_units, max_num_units_modeled].min - unit_multipliers = split_into(geometry_building_num_units, num_units_modeled) + if whole_sfa_or_mf_building_sim + num_units_modeled = [n_units, Constants::MaxNumUnitsModeled].min + unit_multipliers = split_into(n_units, num_units_modeled) end # Set arguments for the BuildResidentialHPXML measure @@ -366,19 +383,15 @@ def run(model, runner, user_arguments) set_header(runner, measures, args, whole_sfa_or_mf_building_sim, bldg_data, resources_dir) set_building_header(measures) - set_battery(measures, whole_sfa_or_mf_building_sim, num_units_modeled) + set_battery(measures, whole_sfa_or_mf_building_sim) new_runner = OpenStudio::Measure::OSRunner.new(OpenStudio::WorkflowJSON.new) (1..num_units_modeled).each do |unit_number| - if unit_number > 1 - measures['BuildResidentialHPXML'][0]['existing_hpxml_path'] = hpxml_path + if not unit_multipliers.empty? + unit_multiplier = unit_multipliers[unit_number - 1] end set_resstock_arguments(measures, resstock_arguments_runner) - if not unit_multipliers.empty? - unit_multiplier = unit_multipliers[unit_number] - end - set_building_construction(measures, unit_multiplier) set_dehumidifier(measures, unit_multiplier) # Specify measures to run @@ -409,6 +422,7 @@ def run(model, runner, user_arguments) measures['ResStockArgumentsPostHPXML'] = [{}] if !measures.keys.include?('ResStockArgumentsPostHPXML') measures['ResStockArgumentsPostHPXML'][0]['hpxml_path'] = hpxml_path measures['ResStockArgumentsPostHPXML'][0]['building_id'] = args[:building_id] + measures['ResStockArgumentsPostHPXML'][0]['unit_multipliers'] = unit_multipliers.join(', ') measures_hash = { 'ResStockArgumentsPostHPXML' => measures['ResStockArgumentsPostHPXML'] } if not apply_measures(measures_dir, measures_hash, new_runner, model, true, 'OpenStudio::Measure::ModelMeasure', nil) register_logs(runner, new_runner) @@ -462,6 +476,43 @@ def run(model, runner, user_arguments) register_value(runner, 'sample_weight', bldg_data['sample_weight'].to_s) end + workflow_measures = [] + runner.workflow.workflowSteps.each do |workflow_step| + workflow_measures << workflow_step.toJSON[:measure_dir_name] + end + + if not workflow_measures.include?('ApplyUpgrade') + # Set arguments for the HPXMLtoOpenStudio measure + measures['HPXMLtoOpenStudio'] = [{}] + measures['HPXMLtoOpenStudio'][0]['hpxml_path'] = in_path + measures['HPXMLtoOpenStudio'][0]['output_dir'] = File.dirname(hpxml_path) + measures['HPXMLtoOpenStudio'][0]['debug'] = args[:debug] + measures['HPXMLtoOpenStudio'][0]['add_component_loads'] = args[:add_component_loads] + measures['HPXMLtoOpenStudio'][0]['skip_validation'] = true + measures_hash = { 'HPXMLtoOpenStudio' => measures['HPXMLtoOpenStudio'] } + if not apply_measures(hpxml_measures_dir, measures_hash, new_runner, model, true, 'OpenStudio::Measure::ModelMeasure', nil) + register_logs(runner, new_runner) + return false + end + + # Set arguments for the AddSharedSystem measure + measures['AddSharedSystem'] = [{}] if !measures.keys.include?('AddSharedSystem') + measures_hash = { 'AddSharedSystem' => measures['AddSharedSystem'] } + if not apply_measures(measures_dir, measures_hash, new_runner, model, true, 'OpenStudio::Measure::ModelMeasure', nil) + register_logs(runner, new_runner) + return false + end + + # Report values from AddSharedSystem + ['shared_system_type'].each do |key_lookup| + new_runner.result.stepValues.each do |step_value| + next if step_value.name != key_lookup + + register_value(runner, key_lookup, get_value_from_workflow_step_value(step_value)) + end + end + end + register_logs(runner, resstock_arguments_runner) register_logs(runner, new_runner) @@ -618,20 +669,14 @@ def set_building_header(measures) measures['BuildResidentialHPXML'][0]['additional_properties'] = additional_properties.join('|') unless additional_properties.empty? end - def set_building_construction(measures, unit_multiplier) - if not unit_multiplier.nil? - measures['BuildResidentialHPXML'][0]['unit_multiplier'] = unit_multiplier - end - end - def set_dehumidifier(measures, unit_multiplier) if unit_multiplier.to_i > 1 measures['BuildResidentialHPXML'][0]['appliance_dehumidifier'] = 'None' # limitation of OS-HPXML end end - def set_battery(measures, whole_sfa_or_mf_building_sim, num_units_modeled) - if whole_sfa_or_mf_building_sim && num_units_modeled > 1 + def set_battery(measures, whole_sfa_or_mf_building_sim) + if whole_sfa_or_mf_building_sim measures['BuildResidentialHPXML'][0]['battery'] = 'None' # limitation of OS-HPXML end end diff --git a/measures/BuildExistingModel/measure.xml b/measures/BuildExistingModel/measure.xml index 779a7e6006..a90f7633e5 100644 --- a/measures/BuildExistingModel/measure.xml +++ b/measures/BuildExistingModel/measure.xml @@ -3,8 +3,8 @@ 3.1 build_existing_model dedf59bb-3b88-4f16-8755-2c1ff5519cbf - a420f46a-9f6c-4e7b-ab93-fa86b14bc770 - 2025-12-10T22:13:44Z + 27f48692-cd00-4f07-a951-f461c2ae59ca + 2025-12-24T16:51:31Z 2C38F48B BuildExistingModel Build Existing Model @@ -322,6 +322,63 @@ false false + + add_component_loads + Add component loads? + If true, adds the calculation of heating/cooling component loads (not enabled by default for faster performance). + Boolean + false + false + false + + + true + true + + + false + false + + + + + debug + Debug Mode? + If true: 1) Writes in.osm file, 2) Generates additional log output, and 3) Creates all EnergyPlus output files. + Boolean + false + false + false + + + true + true + + + false + false + + + + + whole_sfa_or_mf_building_sim + Whole SFA/MF Building Simulation? + Set true if creating an HPXML file to simulate a whole single-family attached or multifamily building with multiple dwelling units within. If an HPXML file already exists at the specified HPXML File Path, a new HPXML Building element describing the current dwelling unit will be appended to this HPXML file. + Boolean + false + false + false + + + true + true + + + false + false + + + @@ -340,7 +397,7 @@ README.md md readme - DA3A75A2 + 1B5097FF README.md.erb @@ -357,7 +414,7 @@ measure.rb rb script - CE947224 + B2B5D259 diff --git a/measures/ResStockArguments/README.md b/measures/ResStockArguments/README.md index 07f60a62a4..f76511d369 100644 --- a/measures/ResStockArguments/README.md +++ b/measures/ResStockArguments/README.md @@ -1766,6 +1766,17 @@ The building vintage, used for informational purposes only.
+**Building Construction: Unit Multipliers** + +Specifies the unit multipliers. Use a comma-separated list. + +- **Name:** ``unit_multipliers`` +- **Type:** ``String`` + +- **Required:** ``false`` + +
+ **Enclosure: Ceiling Insulation Nominal R-value** Nominal R-value for the ceiling (attic floor). @@ -1964,7 +1975,7 @@ The type and efficiency of the existing heating system. **HVAC: Heating Shared System Type** -The type of shared system. +The type of shared heating system. - **Name:** ``hvac_heating_shared_system`` - **Type:** ``Choice`` @@ -2034,6 +2045,19 @@ The type and efficiency of the existing cooling system.
+**HVAC: Cooling Shared System Type** + +The type of shared cooling system. + +- **Name:** ``hvac_cooling_shared_system`` +- **Type:** ``Choice`` + +- **Required:** ``false`` + +- **Choices:** `None`, `FanCoil` + +
+ **HVAC: Cooling System Cooling Autosizing Factor** The capacity scaling factor applied to the auto-sizing methodology. If not provided, 1.0 is used. diff --git a/measures/ResStockArguments/measure.rb b/measures/ResStockArguments/measure.rb index 8b7b05fa06..ed6a38e83f 100644 --- a/measures/ResStockArguments/measure.rb +++ b/measures/ResStockArguments/measure.rb @@ -29,10 +29,10 @@ def modeler_description def arguments(model) args = OpenStudio::Measure::OSArgumentVector.new - # BuildResidentialHPXML + hpxml_measures_dir = File.absolute_path(File.join(File.dirname(__FILE__), '../../resources/hpxml-measures')) - measures_dir = File.absolute_path(File.join(File.dirname(__FILE__), '../../resources/hpxml-measures')) - full_measure_path = File.join(measures_dir, 'BuildResidentialHPXML', 'measure.rb') + # BuildResidentialHPXML + full_measure_path = File.join(hpxml_measures_dir, 'BuildResidentialHPXML', 'measure.rb') @build_residential_hpxml_measure_arguments = get_measure_instance(full_measure_path).arguments(model) @build_residential_hpxml_measure_arguments.each do |arg| next if Constants::BuildResidentialHPXMLExcludes.include? arg.name @@ -41,8 +41,7 @@ def arguments(model) end # BuildResidentialScheduleFile - - full_measure_path = File.join(measures_dir, 'BuildResidentialScheduleFile', 'measure.rb') + full_measure_path = File.join(hpxml_measures_dir, 'BuildResidentialScheduleFile', 'measure.rb') @build_residential_schedule_file_measure_arguments = get_measure_instance(full_measure_path).arguments(model) @build_residential_schedule_file_measure_arguments.each do |arg| next if Constants::BuildResidentialScheduleFileExcludes.include? arg.name @@ -166,6 +165,11 @@ def arguments(model) arg.setDescription('The building vintage, used for informational purposes only.') args << arg + arg = OpenStudio::Measure::OSArgument::makeStringArgument('unit_multipliers', false) + arg.setDisplayName('Building Construction: Unit Multipliers') + arg.setDescription('Specifies the unit multipliers. Use a comma-separated list.') + args << arg + arg = OpenStudio::Measure::OSArgument::makeDoubleArgument('ceiling_insulation_r', true) arg.setDisplayName('Enclosure: Ceiling Insulation Nominal R-value') arg.setUnits('h-ft^2-R/Btu') @@ -276,7 +280,7 @@ def arguments(model) arg = OpenStudio::Measure::OSArgument.makeChoiceArgument('hvac_heating_shared_system', hvac_heating_shared_system_choices, false) arg.setDisplayName('HVAC: Heating Shared System Type') - arg.setDescription('The type of shared system.') + arg.setDescription('The type of shared heating system.') args << arg arg = OpenStudio::Measure::OSArgument::makeDoubleArgument('heating_system_heating_autosizing_factor', false) @@ -306,6 +310,15 @@ def arguments(model) arg.setDescription('The type and efficiency of the existing cooling system.') args << arg + hvac_cooling_shared_system_choices = OpenStudio::StringVector.new + hvac_cooling_shared_system_choices << 'None' + hvac_cooling_shared_system_choices << 'FanCoil' + + arg = OpenStudio::Measure::OSArgument.makeChoiceArgument('hvac_cooling_shared_system', hvac_cooling_shared_system_choices, false) + arg.setDisplayName('HVAC: Cooling Shared System Type') + arg.setDescription('The type of shared cooling system.') + args << arg + arg = OpenStudio::Measure::OSArgument::makeDoubleArgument('cooling_system_cooling_autosizing_factor', false) arg.setDisplayName('HVAC: Cooling System Cooling Autosizing Factor') arg.setDescription('The capacity scaling factor applied to the auto-sizing methodology. If not provided, 1.0 is used.') diff --git a/measures/ResStockArguments/measure.xml b/measures/ResStockArguments/measure.xml index 3544a3490b..f169379d2a 100644 --- a/measures/ResStockArguments/measure.xml +++ b/measures/ResStockArguments/measure.xml @@ -3,8 +3,8 @@ 3.1 res_stock_arguments c984bb9e-4ac4-4930-a399-9d23f8f6936a - 3e9fcdb1-ddb2-457f-a3a0-0f0e0b156dbd - 2026-01-07T16:38:46Z + 91236a83-a550-4814-b124-7c393a9800f9 + 2026-01-14T21:05:50Z 2C38F48B ResStockArguments ResStock Arguments @@ -11572,6 +11572,14 @@ false false + + unit_multipliers + Building Construction: Unit Multipliers + Specifies the unit multipliers. Use a comma-separated list. + String + false + false + ceiling_insulation_r Enclosure: Ceiling Insulation Nominal R-value @@ -11726,7 +11734,7 @@ hvac_heating_shared_system HVAC: Heating Shared System Type - The type of shared system. + The type of shared heating system. Choice false false @@ -11787,6 +11795,24 @@ false false + + hvac_cooling_shared_system + HVAC: Cooling Shared System Type + The type of shared cooling system. + Choice + false + false + + + None + None + + + FanCoil + FanCoil + + + cooling_system_cooling_autosizing_factor HVAC: Cooling System Cooling Autosizing Factor @@ -12521,7 +12547,7 @@ README.md md readme - A44F2B41 + F933DDC3 README.md.erb @@ -12538,19 +12564,19 @@ measure.rb rb script - B145C290 + 23C7E2A8 constants.rb rb resource - C289753F + B39DBC1C measure.txt txt resource - 3D353AD9 + B8446B4E resstock_arguments_test.rb diff --git a/measures/ResStockArguments/resources/constants.rb b/measures/ResStockArguments/resources/constants.rb index 9c6d1a90da..3e34ac2b36 100644 --- a/measures/ResStockArguments/resources/constants.rb +++ b/measures/ResStockArguments/resources/constants.rb @@ -27,4 +27,6 @@ module Constants # Per Jon W, the recommended airflow for most heat pumps; it's also the max cfm/ton airflow rate for typical DX equipment (per hvac_sizing.rb). DuctRestrictionAssumedAirflow = 400.0 + + MaxNumUnitsModeled = 2 end diff --git a/measures/ResStockArguments/resources/measure.txt b/measures/ResStockArguments/resources/measure.txt index 2909c3ab37..dadb899dcf 100644 --- a/measures/ResStockArguments/resources/measure.txt +++ b/measures/ResStockArguments/resources/measure.txt @@ -1 +1 @@ -afb2adf24952a82407ba3d03576559c3 \ No newline at end of file +afb2adf24952a82407ba3d03576559c3afb2adf24952a82407ba3d03576559c3 \ No newline at end of file diff --git a/measures/ResStockArgumentsPostHPXML/measure.rb b/measures/ResStockArgumentsPostHPXML/measure.rb index 5ddf3c410a..1edf3fdab8 100644 --- a/measures/ResStockArgumentsPostHPXML/measure.rb +++ b/measures/ResStockArgumentsPostHPXML/measure.rb @@ -247,12 +247,10 @@ def run(model, runner, user_arguments) register_value(runner, unavailable_output_name, date_range) end - @hpxml.buildings.each_with_index do |hpxml_bldg, unit_number| - # Existing Building - if not @hpxml_existing.nil? - hpxml_bldg_existing = @hpxml_existing.buildings[unit_number] - end + # Unit Multipliers + unit_multipliers = args[:unit_multipliers].to_s.split(',').map(&:strip) + @hpxml.buildings.each_with_index do |hpxml_bldg, unit_number| # Site if not args[:site_iecc_zone].nil? hpxml_bldg.climate_and_risk_zones.climate_zone_ieccs.add(zone: args[:site_iecc_zone], @@ -272,6 +270,9 @@ def run(model, runner, user_arguments) # default end end + if not unit_multipliers.empty? + hpxml_bldg.building_construction.number_of_units = unit_multipliers[unit_number] + end # Usage Multipliers hpxml_bldg.plug_loads.each do |plug_load| @@ -379,6 +380,7 @@ def run(model, runner, user_arguments) end end # Shared system + # FIXME: remove this after AddSharedSystem is written if ['Baseboard', 'FanCoil'].include? args[:hvac_heating_shared_system] heating_system.is_shared_system = true heating_system.number_of_units_served = hpxml_bldg.building_construction.number_of_units_in_building @@ -455,14 +457,19 @@ def run(model, runner, user_arguments) water_heater.jacket_r_value = args[:dhw_water_heater_jacket_rvalue] unless args[:dhw_water_heater_jacket_rvalue].to_f == 0 end + # Existing Building + if not @hpxml_existing.nil? + hpxml_bldg_existing = @hpxml_existing.buildings[unit_number] + end + # HVAC systems - retain_existing_hvac_capacities_and_autosizing_factors(args, hpxml_bldg_existing, hpxml_bldg) + retain_existing_hvac_capacities_and_autosizing_factors(hpxml_bldg_existing, hpxml_bldg, args) # Use existing system as heat pump backup set_existing_system_as_heat_pump_backup(runner, hpxml_bldg_existing, hpxml_bldg, args) # Electric Panel - set_electric_panel(runner, hpxml_bldg_existing, hpxml_bldg, args) + set_electric_panel(runner, hpxml_bldg_existing, hpxml_bldg, args, unit_number) end # Apply defaults @@ -687,7 +694,7 @@ def get_existing_schedule_filepath(hpxml_bldg) end # Retain HVAC capacities and autosizing factors for HVAC system(s) if the upgrade is not related to the HVAC system(s). - def retain_existing_hvac_capacities_and_autosizing_factors(args, hpxml_bldg_existing, hpxml_bldg) + def retain_existing_hvac_capacities_and_autosizing_factors(hpxml_bldg_existing, hpxml_bldg, args) return if hpxml_bldg_existing.nil? heating_system_existing = hpxml_bldg_existing.heating_systems.find { |hs| hs.primary_system } @@ -737,7 +744,7 @@ def retain_existing_hvac_capacities_and_autosizing_factors(args, hpxml_bldg_exis end end - def set_electric_panel(runner, hpxml_bldg_existing, hpxml_bldg, args) + def set_electric_panel(runner, hpxml_bldg_existing, hpxml_bldg, args, unit_number) # Assign miscellaneous permanently connected appliance loads if hpxml_bldg_existing.nil? # this is nil when hpxml_bldg is the existing building @@ -792,7 +799,11 @@ def set_electric_panel(runner, hpxml_bldg_existing, hpxml_bldg, args) electric_panel_load_other_power_rating += garage_door_power # Assign ElectricPanels objects - hpxml_bldg.electric_panels.add(id: "ElectricPanel#{hpxml_bldg.electric_panels.size + 1}", + bldg_no = '' + if unit_number > 0 + bldg_no = "_#{unit_number + 1}" + end + hpxml_bldg.electric_panels.add(id: "ElectricPanel#{hpxml_bldg.electric_panels.size + 1}#{bldg_no}", max_current_rating: cap_value, headroom_spaces: headroom_spaces, rated_total_spaces: total_spaces) @@ -809,12 +820,12 @@ def set_electric_panel(runner, hpxml_bldg_existing, hpxml_bldg, args) next if heating_system.fraction_heat_load_served == 0 if heating_system.primary_system - service_feeders.add(id: "ServiceFeeder#{service_feeders.size + 1}", + service_feeders.add(id: "ServiceFeeder#{service_feeders.size + 1}#{bldg_no}", type: HPXML::ElectricPanelLoadTypeHeating, is_new_load: args[:electric_panel_load_heating_system_new_load], component_idrefs: [heating_system.id]) else - service_feeders.add(id: "ServiceFeeder#{service_feeders.size + 1}", + service_feeders.add(id: "ServiceFeeder#{service_feeders.size + 1}#{bldg_no}", type: HPXML::ElectricPanelLoadTypeHeating, is_new_load: args[:electric_panel_load_heating_system_2_new_load], component_idrefs: [heating_system.id]) @@ -825,7 +836,7 @@ def set_electric_panel(runner, hpxml_bldg_existing, hpxml_bldg, args) next if cooling_system.is_shared_system next if cooling_system.fraction_cool_load_served == 0 - service_feeders.add(id: "ServiceFeeder#{service_feeders.size + 1}", + service_feeders.add(id: "ServiceFeeder#{service_feeders.size + 1}#{bldg_no}", type: HPXML::ElectricPanelLoadTypeCooling, is_new_load: args[:electric_panel_load_cooling_system_new_load], component_idrefs: [cooling_system.id]) @@ -835,14 +846,14 @@ def set_electric_panel(runner, hpxml_bldg_existing, hpxml_bldg, args) next if heat_pump.is_shared_system if heat_pump.fraction_heat_load_served != 0 - service_feeders.add(id: "ServiceFeeder#{service_feeders.size + 1}", + service_feeders.add(id: "ServiceFeeder#{service_feeders.size + 1}#{bldg_no}", type: HPXML::ElectricPanelLoadTypeHeating, is_new_load: args[:electric_panel_load_heat_pump_new_load], component_idrefs: [heat_pump.id]) end next unless heat_pump.fraction_cool_load_served != 0 - service_feeders.add(id: "ServiceFeeder#{service_feeders.size + 1}", + service_feeders.add(id: "ServiceFeeder#{service_feeders.size + 1}#{bldg_no}", type: HPXML::ElectricPanelLoadTypeCooling, is_new_load: args[:electric_panel_load_heat_pump_new_load], component_idrefs: [heat_pump.id]) @@ -851,7 +862,7 @@ def set_electric_panel(runner, hpxml_bldg_existing, hpxml_bldg, args) hpxml_bldg.water_heating_systems.each do |water_heating_system| next if water_heating_system.fuel_type != HPXML::FuelTypeElectricity - service_feeders.add(id: "ServiceFeeder#{service_feeders.size + 1}", + service_feeders.add(id: "ServiceFeeder#{service_feeders.size + 1}#{bldg_no}", type: HPXML::ElectricPanelLoadTypeWaterHeater, is_new_load: args[:electric_panel_load_electric_water_heater_new_load], component_idrefs: [water_heating_system.id]) @@ -860,14 +871,14 @@ def set_electric_panel(runner, hpxml_bldg_existing, hpxml_bldg, args) hpxml_bldg.clothes_dryers.each do |clothes_dryer| next if clothes_dryer.fuel_type != HPXML::FuelTypeElectricity - service_feeders.add(id: "ServiceFeeder#{service_feeders.size + 1}", + service_feeders.add(id: "ServiceFeeder#{service_feeders.size + 1}#{bldg_no}", type: HPXML::ElectricPanelLoadTypeClothesDryer, is_new_load: args[:electric_panel_load_electric_clothes_dryer_new_load], component_idrefs: [clothes_dryer.id]) end hpxml_bldg.dishwashers.each do |dishwasher| - service_feeders.add(id: "ServiceFeeder#{service_feeders.size + 1}", + service_feeders.add(id: "ServiceFeeder#{service_feeders.size + 1}#{bldg_no}", type: HPXML::ElectricPanelLoadTypeDishwasher, is_new_load: args[:electric_panel_load_dishwasher_new_load], component_idrefs: [dishwasher.id]) @@ -876,7 +887,7 @@ def set_electric_panel(runner, hpxml_bldg_existing, hpxml_bldg, args) hpxml_bldg.cooking_ranges.each do |cooking_range| next if cooking_range.fuel_type != HPXML::FuelTypeElectricity - service_feeders.add(id: "ServiceFeeder#{service_feeders.size + 1}", + service_feeders.add(id: "ServiceFeeder#{service_feeders.size + 1}#{bldg_no}", type: HPXML::ElectricPanelLoadTypeRangeOven, is_new_load: args[:electric_panel_load_electric_cooking_range_new_load], component_idrefs: [cooking_range.id]) @@ -884,24 +895,24 @@ def set_electric_panel(runner, hpxml_bldg_existing, hpxml_bldg, args) hpxml_bldg.ventilation_fans.each do |ventilation_fan| if ventilation_fan.used_for_whole_building_ventilation - service_feeders.add(id: "ServiceFeeder#{service_feeders.size + 1}", + service_feeders.add(id: "ServiceFeeder#{service_feeders.size + 1}#{bldg_no}", type: HPXML::ElectricPanelLoadTypeMechVent, is_new_load: args[:electric_panel_load_mech_vent_fan_new_load], component_idrefs: [ventilation_fan.id]) elsif ventilation_fan.used_for_local_ventilation # Kitchen / Bathroom Fans if ventilation_fan.fan_location == HPXML::LocationKitchen - service_feeders.add(id: "ServiceFeeder#{service_feeders.size + 1}", + service_feeders.add(id: "ServiceFeeder#{service_feeders.size + 1}#{bldg_no}", type: HPXML::ElectricPanelLoadTypeMechVent, is_new_load: args[:electric_panel_load_kitchen_fans_new_load], component_idrefs: [ventilation_fan.id]) elsif ventilation_fan.fan_location == HPXML::LocationBath - service_feeders.add(id: "ServiceFeeder#{service_feeders.size + 1}", + service_feeders.add(id: "ServiceFeeder#{service_feeders.size + 1}#{bldg_no}", type: HPXML::ElectricPanelLoadTypeMechVent, is_new_load: args[:electric_panel_load_bathroom_fans_new_load], component_idrefs: [ventilation_fan.id]) end elsif ventilation_fan.used_for_seasonal_cooling_load_reduction # Whole House Fan - service_feeders.add(id: "ServiceFeeder#{service_feeders.size + 1}", + service_feeders.add(id: "ServiceFeeder#{service_feeders.size + 1}#{bldg_no}", type: HPXML::ElectricPanelLoadTypeMechVent, is_new_load: args[:electric_panel_load_whole_house_fan_new_load], component_idrefs: [ventilation_fan.id]) @@ -909,28 +920,28 @@ def set_electric_panel(runner, hpxml_bldg_existing, hpxml_bldg, args) end hpxml_bldg.permanent_spas.each do |permanent_spa| - service_feeders.add(id: "ServiceFeeder#{service_feeders.size + 1}", + service_feeders.add(id: "ServiceFeeder#{service_feeders.size + 1}#{bldg_no}", type: HPXML::ElectricPanelLoadTypePermanentSpaPump, is_new_load: args[:electric_panel_load_permanent_spa_pump_new_load], component_idrefs: [permanent_spa.pump_id]) next unless [HPXML::HeaterTypeElectricResistance, HPXML::HeaterTypeHeatPump].include?(permanent_spa.heater_type) - service_feeders.add(id: "ServiceFeeder#{service_feeders.size + 1}", + service_feeders.add(id: "ServiceFeeder#{service_feeders.size + 1}#{bldg_no}", type: HPXML::ElectricPanelLoadTypePermanentSpaHeater, is_new_load: args[:electric_panel_load_electric_permanent_spa_heater_new_load], component_idrefs: [permanent_spa.heater_id]) end hpxml_bldg.pools.each do |pool| - service_feeders.add(id: "ServiceFeeder#{service_feeders.size + 1}", + service_feeders.add(id: "ServiceFeeder#{service_feeders.size + 1}#{bldg_no}", type: HPXML::ElectricPanelLoadTypePoolPump, is_new_load: args[:electric_panel_load_pool_pump_new_load], component_idrefs: [pool.pump_id]) next unless [HPXML::HeaterTypeElectricResistance, HPXML::HeaterTypeHeatPump].include?(pool.heater_type) - service_feeders.add(id: "ServiceFeeder#{service_feeders.size + 1}", + service_feeders.add(id: "ServiceFeeder#{service_feeders.size + 1}#{bldg_no}", type: HPXML::ElectricPanelLoadTypePoolHeater, is_new_load: args[:electric_panel_load_electric_pool_heater_new_load], component_idrefs: [pool.heater_id]) @@ -938,12 +949,12 @@ def set_electric_panel(runner, hpxml_bldg_existing, hpxml_bldg, args) hpxml_bldg.plug_loads.each do |plug_load| if plug_load.plug_load_type == HPXML::PlugLoadTypeWellPump - service_feeders.add(id: "ServiceFeeder#{service_feeders.size + 1}", + service_feeders.add(id: "ServiceFeeder#{service_feeders.size + 1}#{bldg_no}", type: HPXML::ElectricPanelLoadTypeWellPump, is_new_load: args[:electric_panel_load_misc_plug_loads_well_pump_new_load], component_idrefs: [plug_load.id]) elsif plug_load.plug_load_type == HPXML::PlugLoadTypeElectricVehicleCharging - service_feeders.add(id: "ServiceFeeder#{service_feeders.size + 1}", + service_feeders.add(id: "ServiceFeeder#{service_feeders.size + 1}#{bldg_no}", type: HPXML::ElectricPanelLoadTypeElectricVehicleCharging, is_new_load: args[:electric_panel_load_misc_plug_loads_vehicle_new_load], component_idrefs: [plug_load.id]) @@ -962,22 +973,22 @@ def set_electric_panel(runner, hpxml_bldg_existing, hpxml_bldg, args) end if not voltage.nil? - branch_circuits.add(id: "BranchCircuit#{branch_circuits.size + 1}", + branch_circuits.add(id: "BranchCircuit#{branch_circuits.size + 1}#{bldg_no}", voltage: voltage, component_idrefs: [ev_charger.id]) end - service_feeders.add(id: "ServiceFeeder#{service_feeders.size + 1}", + service_feeders.add(id: "ServiceFeeder#{service_feeders.size + 1}#{bldg_no}", type: HPXML::ElectricPanelLoadTypeElectricVehicleCharging, power: power, is_new_load: args[:electric_panel_load_misc_plug_loads_vehicle_new_load], component_idrefs: [ev_charger.id]) end - branch_circuits.add(id: "BranchCircuit#{branch_circuits.size + 1}", + branch_circuits.add(id: "BranchCircuit#{branch_circuits.size + 1}#{bldg_no}", occupied_spaces: 1, component_idrefs: []) - service_feeders.add(id: "ServiceFeeder#{service_feeders.size + 1}", + service_feeders.add(id: "ServiceFeeder#{service_feeders.size + 1}#{bldg_no}", type: HPXML::ElectricPanelLoadTypeOther, power: electric_panel_load_other_power_rating, is_new_load: args[:electric_panel_load_other_new_load], diff --git a/measures/ResStockArgumentsPostHPXML/measure.xml b/measures/ResStockArgumentsPostHPXML/measure.xml index 55825bb44e..cfbf26cd16 100644 --- a/measures/ResStockArgumentsPostHPXML/measure.xml +++ b/measures/ResStockArgumentsPostHPXML/measure.xml @@ -3,8 +3,8 @@ 3.1 res_stock_arguments_post_hpxml db102ce5-ac96-4ef9-90d3-abbe53478716 - d70ecb43-b4d0-40a3-a6ac-ca81b7069f80 - 2026-01-07T16:38:47Z + ffeb9f79-8fa9-43bf-81b6-f739a73435bb + 2026-01-14T21:05:52Z 2C38F48B ResStockArgumentsPostHPXML ResStock Arguments Post-HPXML @@ -11572,6 +11572,14 @@ false false + + unit_multipliers + Building Construction: Unit Multipliers + Specifies the unit multipliers. Use a comma-separated list. + String + false + false + ceiling_insulation_r Enclosure: Ceiling Insulation Nominal R-value @@ -11726,7 +11734,7 @@ hvac_heating_shared_system HVAC: Heating Shared System Type - The type of shared system. + The type of shared heating system. Choice false false @@ -11787,6 +11795,24 @@ false false + + hvac_cooling_shared_system + HVAC: Cooling Shared System Type + The type of shared cooling system. + Choice + false + false + + + None + None + + + FanCoil + FanCoil + + + cooling_system_cooling_autosizing_factor HVAC: Cooling System Cooling Autosizing Factor @@ -12534,7 +12560,7 @@ measure.rb rb script - 9039509D + BB253739 common/README.md @@ -12618,7 +12644,7 @@ measure.txt txt resource - 3D353AD9 + B8446B4E test_hvac_load_flexibility.rb diff --git a/measures/ResStockArgumentsPostHPXML/resources/measure.txt b/measures/ResStockArgumentsPostHPXML/resources/measure.txt index 2909c3ab37..dadb899dcf 100644 --- a/measures/ResStockArgumentsPostHPXML/resources/measure.txt +++ b/measures/ResStockArgumentsPostHPXML/resources/measure.txt @@ -1 +1 @@ -afb2adf24952a82407ba3d03576559c3 \ No newline at end of file +afb2adf24952a82407ba3d03576559c3afb2adf24952a82407ba3d03576559c3 \ No newline at end of file diff --git a/measures/ServerDirectoryCleanup/README.md b/measures/ServerDirectoryCleanup/README.md index e4a5a3c3d3..7233d75203 100644 --- a/measures/ServerDirectoryCleanup/README.md +++ b/measures/ServerDirectoryCleanup/README.md @@ -253,7 +253,7 @@ Present a bunch of bool arguments corresponding to EnergyPlus output files. "Fal
-**Retain *schedules.csv** +**Retain *schedules*.csv** diff --git a/measures/ServerDirectoryCleanup/measure.rb b/measures/ServerDirectoryCleanup/measure.rb index 344d9b0e46..4e918a98b8 100644 --- a/measures/ServerDirectoryCleanup/measure.rb +++ b/measures/ServerDirectoryCleanup/measure.rb @@ -136,7 +136,7 @@ def arguments(model) # rubocop:disable Lint/UnusedMethodArgument args << arg arg = OpenStudio::Measure::OSArgument.makeBoolArgument('retain_schedules_csv', true) - arg.setDisplayName('Retain *schedules.csv') + arg.setDisplayName('Retain *schedules*.csv') arg.setDefaultValue(true) args << arg @@ -199,7 +199,7 @@ def run(runner, user_arguments) :retain_eplustbl_htm => 'eplustbl.htm', :retain_stdout_energyplus => 'stdout-energyplus', :retain_stdout_expandobject => 'stdout-expandobject', - :retain_schedules_csv => '*schedules.csv' + :retain_schedules_csv => '*schedules*.csv' } # delete output files based on the map diff --git a/measures/ServerDirectoryCleanup/measure.xml b/measures/ServerDirectoryCleanup/measure.xml index f8a10a17ee..227fcb163a 100644 --- a/measures/ServerDirectoryCleanup/measure.xml +++ b/measures/ServerDirectoryCleanup/measure.xml @@ -3,8 +3,8 @@ 3.1 server_directory_cleanup ec7d04ad-0b7b-495b-825a-e1b6d28d1d3f - c18a33f9-682b-49fb-9944-cbd8ad95205d - 2025-10-01T22:08:32Z + 3e0b8fb0-74bb-4068-9a6f-3bee86beef08 + 2025-12-16T19:53:41Z 5F1EDF75 ServerDirectoryCleanup Server Directory Cleanup @@ -409,7 +409,7 @@
retain_schedules_csv - Retain *schedules.csv + Retain *schedules*.csv Boolean true false @@ -467,7 +467,7 @@ README.md md readme - 3228A56C + 3ACBC252 README.md.erb @@ -484,7 +484,7 @@ measure.rb rb script - 73F2E49D + 6E20E4EC diff --git a/measures/SimulationOutput/measure.rb b/measures/SimulationOutput/measure.rb new file mode 100644 index 0000000000..d8bf384daa --- /dev/null +++ b/measures/SimulationOutput/measure.rb @@ -0,0 +1,600 @@ +# frozen_string_literal: true + +# see the URL below for information on how to write OpenStudio measures +# http://nrel.github.io/OpenStudio-user-documentation/reference/measure_writing_guide/ + +require_relative 'resources/constants' +require_relative '../../resources/buildstock' +require_relative '../../resources/hpxml-measures/HPXMLtoOpenStudio/resources/constants' +require_relative '../../resources/hpxml-measures/HPXMLtoOpenStudio/resources/meta_measure' + +# start the measure +class SimulationOutput < OpenStudio::Measure::ReportingMeasure + # human readable name + def name + return 'Simulation Output' + end + + # human readable description + def description + return 'TODO' + end + + # human readable description of modeling approach + def modeler_description + return 'TODO' + end + + # define the arguments that the user will input + def arguments(model) # rubocop:disable Lint/UnusedMethodArgument + args = OpenStudio::Measure::OSArgumentVector.new + + # Allow same arguments as ReportSimulationOutput and ReportUtilityBills measures + + hpxml_measures_dir = File.absolute_path(File.join(File.dirname(__FILE__), '../../resources/hpxml-measures')) + + full_measure_path = File.join(hpxml_measures_dir, 'ReportSimulationOutput', 'measure.rb') + measure_arguments = get_measure_instance(full_measure_path).arguments(model) + measure_arguments.each do |arg| + arg.setRequired(false) + args << arg + end + + full_measure_path = File.join(hpxml_measures_dir, 'ReportUtilityBills', 'measure.rb') + measure_arguments = get_measure_instance(full_measure_path).arguments(model) + measure_arguments.each do |arg| + arg.setRequired(false) + args << arg + end + + return args + end + + def modelOutputRequests(model, runner, user_arguments) + return false if runner.halted + + @model = model + + # use the built-in error checking + if !runner.validateUserArguments(arguments(model), user_arguments) + return false + end + + # Apply reporting measure output requests + hpxml_measures_dir = File.join(File.dirname(__FILE__), '../../resources/hpxml-measures') + args = runner.getArgumentValues(arguments(model), user_arguments) + measures = setup_measures(args) + apply_model_output_requests(hpxml_measures_dir, measures, runner, model) + + setup_outputs() + + # End Use outputs + { @end_uses => args[:include_timeseries_end_use_consumptions] }.each do |uses, include_timeseries| + uses.each do |key, use| + use.variables.each do |_sys_id, varkey, var| + Model.add_output_variable(model, key_value: varkey, variable_name: var, reporting_frequency: 'runperiod') + if include_timeseries + Model.add_output_variable(model, key_value: varkey, variable_name: var, reporting_frequency: args[:timeseries_frequency]) + end + next unless use.is_a?(EndUse) + + fuel_type, _end_use = key + if fuel_type == FT::Elec && args[:include_hourly_electric_end_use_consumptions] + Model.add_output_variable(model, key_value: varkey, variable_name: var, reporting_frequency: 'hourly') + end + end + use.meters.each do |_, _, meter| + Model.add_output_meter(model, meter_name: meter, reporting_frequency: 'runperiod') + if include_timeseries + Model.add_output_meter(model, meter_name: meter, reporting_frequency: args[:timeseries_frequency]) + end + next unless use.is_a?(EndUse) + + fuel_type, _end_use = key + if fuel_type == FT::Elec && args[:include_hourly_electric_end_use_consumptions] + Model.add_output_meter(model, meter_name: meter, reporting_frequency: 'hourly') + end + end + end + end + + return true + end + + # Set arguments for the ReportSimulationOutput and ReportUtilityBills measures + def setup_measures(args) + measures = {} + + measures['ReportSimulationOutput'] = [{ 'output_format' => args[:output_format], + 'include_annual_total_consumptions' => args[:include_annual_total_consumptions], + 'include_annual_fuel_consumptions' => args[:include_annual_fuel_consumptions], + 'include_annual_end_use_consumptions' => args[:include_annual_end_use_consumptions], + 'include_annual_system_use_consumptions' => args[:include_annual_system_use_consumptions], + 'include_annual_emissions' => args[:include_annual_emissions], + 'include_annual_emission_fuels' => args[:include_annual_emission_fuels], + 'include_annual_emission_end_uses' => args[:include_annual_emission_end_uses], + 'include_annual_total_loads' => args[:include_annual_total_loads], + 'include_annual_unmet_hours' => args[:include_annual_unmet_hours], + 'include_annual_peak_fuels' => args[:include_annual_peak_fuels], + 'include_annual_peak_loads' => args[:include_annual_peak_loads], + 'include_annual_component_loads' => args[:include_annual_component_loads], + 'include_annual_hot_water_uses' => args[:include_annual_hot_water_uses], + 'include_annual_hvac_summary' => args[:include_annual_hvac_summary], + 'include_annual_resilience' => args[:include_annual_resilience], + 'timeseries_frequency' => args[:timeseries_frequency], + 'include_timeseries_total_consumptions' => args[:include_timeseries_total_consumptions], + 'include_timeseries_fuel_consumptions' => args[:include_timeseries_fuel_consumptions], + 'include_timeseries_end_use_consumptions' => args[:include_timeseries_end_use_consumptions], + 'include_timeseries_system_use_consumptions' => args[:include_timeseries_system_use_consumptions], + 'include_timeseries_emissions' => args[:include_timeseries_emissions], + 'include_timeseries_emission_fuels' => args[:include_timeseries_emission_fuels], + 'include_timeseries_emission_end_uses' => args[:include_timeseries_emission_end_uses], + 'include_timeseries_hot_water_uses' => args[:include_timeseries_hot_water_uses], + 'include_timeseries_total_loads' => args[:include_timeseries_total_loads], + 'include_timeseries_component_loads' => args[:include_timeseries_component_loads], + 'include_timeseries_unmet_hours' => args[:include_timeseries_unmet_hours], + 'include_timeseries_zone_temperatures' => args[:include_timeseries_zone_temperatures], + 'include_timeseries_zone_conditions' => args[:include_timeseries_zone_conditions], + 'include_timeseries_airflows' => args[:include_timeseries_airflows], + 'include_timeseries_weather' => args[:include_timeseries_weather], + 'include_timeseries_resilience' => args[:include_timeseries_resilience], + 'timeseries_timestamp_convention' => args[:timeseries_timestamp_convention], + 'timeseries_num_decimal_places' => args[:timeseries_num_decimal_places], + 'add_timeseries_dst_column' => args[:add_timeseries_dst_column], + 'add_timeseries_utc_column' => args[:add_timeseries_utc_column], + 'user_output_variables' => args[:user_output_variables], + 'user_output_meters' => args[:user_output_meters] }] + + measures['ReportUtilityBills'] = [{ 'output_format' => args[:output_format], + 'include_annual_bills' => args[:include_annual_bills], + 'include_monthly_bills' => args[:include_monthly_bills], + 'register_annual_bills' => args[:register_annual_bills], + 'register_monthly_bills' => args[:register_monthly_bills] }] + + return measures + end + + def get_outputs(_runner, args) + # End Uses + @end_uses.each do |key, end_use| + fuel_type, _end_use_type = key + + end_use.variables.map { |v| v[0] }.uniq.each do |sys_id| + keys = end_use.variables.select { |v| v[0] == sys_id }.map { |v| v[1] } + vars = end_use.variables.select { |v| v[0] == sys_id }.map { |v| v[2] } + + end_use.annual_output_by_system[sys_id] = get_report_variable_data_annual(keys, vars, is_negative: (end_use.is_negative || end_use.is_storage)) + + if args[:include_timeseries_end_use_consumptions] + end_use.timeseries_output_by_system[sys_id] = get_report_variable_data_timeseries(keys, vars, UnitConversions.convert(1.0, 'J', end_use.timeseries_units), 0, args[:timeseries_frequency], is_negative: (end_use.is_negative || end_use.is_storage)) + end + if args[:include_hourly_electric_end_use_consumptions] && fuel_type == FT::Elec + end_use.hourly_output_by_system[sys_id] = get_report_variable_data_timeseries(keys, vars, UnitConversions.convert(1.0, 'J', end_use.timeseries_units), 0, EPlus::TimeseriesFrequencyHourly, is_negative: (end_use.is_negative || end_use.is_storage)) + end + end + end_use.meters.map { |v| v[0] }.uniq.each do |sys_id| + vars = end_use.meters.select { |v| v[0] == sys_id }.map { |v| v[2] } + + end_use.annual_output_by_system[sys_id] = 0.0 if end_use.annual_output_by_system[sys_id].nil? + end_use.annual_output_by_system[sys_id] += get_report_meter_data_annual(vars, UnitConversions.convert(1.0, 'J', end_use.annual_units)) + + if args[:include_timeseries_end_use_consumptions] + values = get_report_meter_data_timeseries(vars, UnitConversions.convert(1.0, 'J', end_use.timeseries_units), 0, args[:timeseries_frequency]) + if end_use.timeseries_output_by_system[sys_id].nil? + end_use.timeseries_output_by_system[sys_id] = values + else + end_use.timeseries_output_by_system[sys_id] = end_use.timeseries_output_by_system[sys_id].zip(values).map { |x, y| x + y } + end + end + next unless args[:include_hourly_electric_end_use_consumptions] && fuel_type == FT::Elec + + values = get_report_meter_data_timeseries(vars, UnitConversions.convert(1.0, 'J', end_use.timeseries_units), 0, EPlus::TimeseriesFrequencyHourly) + if end_use.hourly_output_by_system[sys_id].nil? + end_use.hourly_output_by_system[sys_id] = values + else + end_use.hourly_output_by_system[sys_id] = end_use.hourly_output_by_system[sys_id].zip(values).map { |x, y| x + y } + end + end + end + + # Calculate aggregated values from per-system values as needed + @end_uses.values.each do |obj| + # Annual + if obj.annual_output.nil? + if not obj.annual_output_by_system.empty? + obj.annual_output = obj.annual_output_by_system.values.sum(0.0) + else + obj.annual_output = 0.0 + end + end + + # Timeseries + if obj.timeseries_output.empty? && (not obj.timeseries_output_by_system.empty?) + obj.timeseries_output = obj.timeseries_output_by_system.values.transpose.map(&:sum) + end + + # Hourly Electricity (for Cambium) + next unless obj.is_a?(EndUse) && obj.hourly_output.empty? && (not obj.hourly_output_by_system.empty?) + + obj.hourly_output = obj.hourly_output_by_system.values.transpose.map(&:sum) + end + end + + def setup_outputs() + # Returns the timeseries units associated with energy use + # for the given fuel. + # + # @param fuel_type [String] The given fuel type (FT::XXX) + # @return [String] The units + def get_timeseries_units_from_fuel_type(fuel_type) + return (fuel_type == FT::Elec ? 'kWh' : 'kBtu') + end + + # End Uses + + create_all_object_outputs_by_key() + + @end_uses = {} + @end_uses[[FT::Elec, EUT::RangeOven]] = EndUse.new(outputs: get_object_outputs(EUT, [FT::Elec, EUT::RangeOven])) + @end_uses.each do |key, end_use| + fuel_type, end_use_type = key + end_use.name = "End Use: #{fuel_type}: #{end_use_type}" + end_use.annual_units = 'MBtu' + end_use.timeseries_units = get_timeseries_units_from_fuel_type(fuel_type) + end + end + + # define what happens when the measure is run + def run(runner, user_arguments) + super(runner, user_arguments) + + model = runner.lastOpenStudioModel + if model.empty? + runner.registerError('Cannot find OpenStudio model.') + return false + end + @model = model.get + + # use the built-in error checking + if !runner.validateUserArguments(arguments(@model), user_arguments) + return false + end + + # Assign the user inputs to variables + args = runner.getArgumentValues(arguments(@model), user_arguments) + + hpxml_defaults_path = @model.getBuilding.additionalProperties.getFeatureAsString('hpxml_defaults_path').get + output_dir = File.dirname(hpxml_defaults_path) + building_id = @model.getBuilding.additionalProperties.getFeatureAsString('building_id').get + hpxml = HPXML.new(hpxml_path: hpxml_defaults_path, building_id: building_id) + + # Get file/dir paths + resources_dir = File.absolute_path(File.join(File.dirname(__FILE__), '../../resources')) + hpxml_measures_dir = File.join(File.dirname(__FILE__), '../../resources/hpxml-measures') + + # Check file/dir paths exist + check_dir_exists(resources_dir, runner) + [hpxml_measures_dir].each do |dir| + check_dir_exists(dir, runner) + end + + measures = setup_measures(args) + measures_hash = { 'ReportSimulationOutput' => measures['ReportSimulationOutput'], + 'ReportUtilityBills' => measures['ReportUtilityBills'] } + + new_runner = OpenStudio::Measure::OSRunner.new(OpenStudio::WorkflowJSON.new) + new_runner.setLastEpwFilePath(File.join(File.dirname(__FILE__), 'in.epw')) + if not apply_measures(hpxml_measures_dir, measures_hash, new_runner, @model, true, 'OpenStudio::Measure::ReportingMeasure', nil) + register_logs(runner, new_runner) + return false + end + + @msgpackData = MessagePack.unpack(File.read(File.join(output_dir, 'eplusout.msgpack'), mode: 'rb')) + setup_outputs() + get_outputs(runner, args) + combine_results(new_runner) + + if not check_for_errors(runner) + return false + end + + num_units = hpxml.buildings.collect { |hpxml_bldg| hpxml_bldg.building_construction.number_of_units }.sum + + # Write/report results + report_runperiod_output_results(runner, num_units) + report_timeseries_output_results(args, num_units) + + register_logs(runner, new_runner) + + return true + end + + def combine_results(new_runner) + # Annual + @new_results = {} + new_runner.result.stepValues.each do |step_value| + variant_type = step_value.variantType + next unless ['Double'.to_VariantType, 'Integer'.to_VariantType].include? variant_type + + name = step_value.name + @new_results[name] = get_value_from_workflow_step_value(step_value) + next unless name == 'end_use_electricity_range_oven_m_btu' + + @new_results[name] += @end_uses[[FT::Elec, EUT::RangeOven]].annual_output + end + + # Timeseries + # TODO + + return @new_results + end + + def check_for_errors(runner) + tol = 0.1 # 0.1% + + # Check sum of end use outputs match fuel outputs from meters + unique_fuel_types = [[FT::Elec, TE::Total], [FT::Elec, TE::Net], [FT::Gas, TE::Total], [FT::Oil, TE::Total], [FT::Propane, TE::Total], [FT::WoodCord, TE::Total], [FT::WoodPellets, TE::Total], [FT::Coal, TE::Total]] + unique_fuel_types.each do |fuel_type, total_or_net| + total_or_net = (fuel_type == FT::Elec ? TE::Net : TE::Total) + ft = OpenStudio::toUnderscoreCase(fuel_type) + + sum_categories = @new_results.select { |k, _v| k.start_with?('end_use') && k.include?(ft) }.map { |_k, v| v }.sum(0.0) + if total_or_net == TE::Total + meter_fuel_total = @new_results["fuel_use_#{ft}_total_m_btu"] + elsif total_or_net == TE::Net + meter_fuel_total = @new_results["fuel_use_#{ft}_net_m_btu"] + end + + avg_value = (sum_categories + meter_fuel_total) / 2.0 + next unless (sum_categories - meter_fuel_total).abs / avg_value > tol + + runner.registerError("#{fuel_type} category end uses (#{sum_categories.round(3)}) do not sum to total (#{meter_fuel_total.round(3)}).") + return false + end + end + + def report_runperiod_output_results(runner, num_units) + n_digits = 3 + + @new_results.each do |name, value| + value = scale_output(name, value, num_units, n_digits) + register_value(runner, name, value) + end + end + + def report_timeseries_output_results(args, num_units) + return if num_units == 1 + + timeseries_output_path = File.expand_path('../results_timeseries.csv') + n_digits = args[:timeseries_num_decimal_places] + + if File.exist?(timeseries_output_path) + rows = CSV.read(timeseries_output_path, headers: true) + File.rename(timeseries_output_path, timeseries_output_path.gsub('.csv', '_bak.csv')) + CSV.open(timeseries_output_path, 'wb') do |csv_out| + csv_out << rows.headers + csv_out << rows[0].fields + rows[1..-1].each do |row| + row.headers.each do |header| + next if ['Time', 'TimeDST', 'TimeUTC'].include?(header) + + value = Float(row[header]) + row[header] = scale_output(header, value, num_units, n_digits) + end + csv_out << row.fields + end + end + File.delete(timeseries_output_path.gsub('.csv', '_bak.csv')) + end + end + + def scale_output(output, value, num_units, n_digits) + # FIXME: how to deal with output variables/meters (i.e., scale Electricity:Facility but not Zone People Occupant Count)? + return value if num_units == 1 + + Constants::ReportSimulationOutputUnchangeds.each do |unchanged_output| + if output.start_with?(unchanged_output) || output.start_with?(OpenStudio::toUnderscoreCase(unchanged_output).chomp('_')) + return value.round(n_digits) + end + end + return (value / num_units).round(n_digits) + end + + # Retrieves the total annual value for the specified output meters from the EnergyPlus msgpack output file. + # + # @param meter_names [Array] List of EnergyPlus output meter names + # @param unit_conv [Double] Unit conversion to apply to the EnergyPlus output + # @return [Double] Sum of output meter annual outputs + def get_report_meter_data_annual(meter_names, unit_conv = UnitConversions.convert(1.0, 'J', 'MBtu')) + return 0.0 if meter_names.empty? + + cols = @msgpackData['MeterData']['RunPeriod']['Cols'] + timestamp = @msgpackData['MeterData']['RunPeriod']['Rows'][0].keys[0] + row = @msgpackData['MeterData']['RunPeriod']['Rows'][0][timestamp] + indexes = cols.each_index.select { |i| meter_names.include? cols[i]['Variable'] } + val = row.each_index.select { |i| indexes.include? i }.map { |i| row[i] }.sum(0.0) * unit_conv + + return val + end + + # Retrieves the total timeseries values for the specified output meters from the EnergyPlus msgpack output file. + # + # @param meter_names [Array] List of EnergyPlus output meter names + # @param unit_conv unit_conv [Double] Unit conversion to apply to the EnergyPlus output + # @param unit_adder [Double] Adder value to apply to the EnergyPlus output + # @param timeseries_frequency [String] Timeseries reporting frequency (TimeseriesFrequencyXXX) + # @return [Array] Sum of output meter timeseries outputs + def get_report_meter_data_timeseries(meter_names, unit_conv, unit_adder, timeseries_frequency) + return [0.0] * @timestamps.size if meter_names.empty? + + msgpack_timeseries_name = EPlus::get_msgpack_timeseries_name(timeseries_frequency) + timeseries_data = @msgpackData['MeterData'][msgpack_timeseries_name] + cols = timeseries_data['Cols'] + rows = timeseries_data['Rows'] + indexes = cols.each_index.select { |i| meter_names.include? cols[i]['Variable'] } + vals = [0.0] * rows.size + + # Calculate whether we need to shift values once up front + shift_values = {} + indexes.each_with_index do |_i, idx| + shift_values[idx] = false + if apply_ems_shift(timeseries_frequency) + if meter_names[idx].include? Constants::ObjectTypeWaterHeaterAdjustment + # Shift energy use adjustment to align with hot water energy use + shift_values[idx] = true + elsif meter_names[idx].include? Constants::ObjectTypePanHeater + # Shift energy use adjustment to align with HVAC operation and weather + shift_values[idx] = true + elsif meter_names[idx].include? Constants::ObjectTypeHPDefrostSupplHeat + # Shift energy use adjustment to align with HVAC operation and weather + shift_values[idx] = true + end + end + end + + rows.each_with_index do |row, row_idx| + row = row[row.keys[0]] + indexes.each_with_index do |i, idx| + if shift_values[idx] + vals[row_idx - 1] += row[i] * unit_conv + unit_adder + else + vals[row_idx] += row[i] * unit_conv + unit_adder + end + end + end + return vals + end + + # Returns whether we should shift the EMS outputs or not. Only shift if we reporting timestep values + # (i.e., not daily, monthly, or hourly w/ a sub-hourly timestep). + # + # @param timeseries_frequency [String] Timeseries reporting frequency (TimeseriesFrequencyXXX) + # @return [Boolean] True if the output should be shifted + def apply_ems_shift(timeseries_frequency) + if (timeseries_frequency == EPlus::TimeseriesFrequencyTimestep) + return true + elsif (timeseries_frequency == EPlus::TimeseriesFrequencyHourly) && (@model.getTimestep.numberOfTimestepsPerHour == 1) + return true + end + + return false + end + + # Returns the list of outputs associated with the given output class type and key. + # + # @param class_type [Module] The output class type + # @param key [String] The particular key for the output class, e.g. HWT::ClothesWasher + # @return [Array>] Sets of outputs with: HPXML ID, EnergyPlus output variable key, EnergyPlus output variable/meter name + def get_object_outputs(class_type, key) + hash_key = [class_type, key] + vars = @object_variables_by_key[hash_key] + vars = [] if vars.nil? + return vars + end + + # Base structure to store EnergyPlus annual/timeseries outputs; structures for end uses, loads, + # etc., will inherit from this class and include additional properties/logic as needed. + class BaseOutput + def initialize() + @timeseries_output = [] + end + attr_accessor(:name, :annual_output, :timeseries_output, :annual_units, :timeseries_units) + end + + # Structure to store EnergyPlus outputs by end use and fuel type. + class EndUse < BaseOutput + # @param outputs [Array>] Sets of outputs with: HPXML ID, EnergyPlus output variable key, EnergyPlus output variable/meter name + # @param is_negative [Boolean] Whether the EnergyPlus outputs are negative + # @param is_storage [Boolean] Whether the EnergyPlus outputs are associated with battery storage + def initialize(outputs:, is_negative: false, is_storage: false) + super() + @variables = outputs.select { |o| !o[2].include?(':') } + @meters = outputs.select { |o| o[2].include?(':') } + @is_negative = is_negative + @is_storage = is_storage + @timeseries_output_by_system = {} + @annual_output_by_system = {} + # These outputs used to apply Cambium hourly electricity factors + @hourly_output = [] + @hourly_output_by_system = {} + end + attr_accessor(:variables, :meters, :is_negative, :is_storage, :annual_output_by_system, :timeseries_output_by_system, + :hourly_output, :hourly_output_by_system) + end + + # Creates a global hash that maps output classes/keys (e.g., [HWT, HWT::ClothesWasher]) + # with its associated data (HPXML ID, EnergyPlus output variable name/key value). This + # will be used later to look up the EnergyPlus annual or timeseries value(s) for this + # particular output. + # + # @return [nil] + def create_all_object_outputs_by_key + @object_variables_by_key = {} + return if @model.nil? + + @model.getModelObjects.sort.each do |object| + next if object.to_AdditionalProperties.is_initialized + + [EUT, HWT, LT, RT].each do |class_type| + vars_by_key = get_object_outputs_by_key(@model, object, class_type) + next if vars_by_key.size == 0 + + sys_id = object.additionalProperties.getFeatureAsString('HPXML_ID') + sys_id = sys_id.is_initialized ? sys_id.get : nil + + vars_by_key.each do |key, output_vars| + output_vars.each do |output_var| + if object.to_EnergyManagementSystemOutputVariable.is_initialized + varkey = 'EMS' + else + varkey = object.name.to_s.upcase + end + hash_key = [class_type, key] + @object_variables_by_key[hash_key] = [] if @object_variables_by_key[hash_key].nil? + next if @object_variables_by_key[hash_key].include? [sys_id, varkey, output_var] + + @object_variables_by_key[hash_key] << [sys_id, varkey, output_var] + end + end + end + end + end + + # For a given object, returns the Output:Variables or Output:Meters to be requested, + # and associates them with the appropriate keys (e.g., [FT::Elec, EUT::Heating]). + # + # @param model [OpenStudio::Model::Model] OpenStudio Model object + # @param object [OpenStudio::Model::Foo] A given object in the OpenStudio Model + # @param class_type [Module] The output class type + # @return [Hash] Map of output key => array of EnergyPlus output variable/meter names + def get_object_outputs_by_key(_model, object, class_type) + if class_type == EUT + if object.to_ElectricEquipment.is_initialized + object = object.to_ElectricEquipment.get + subcategory = object.endUseSubcategory + end_use = nil + { 'AddSharedSystem' => EUT::RangeOven }.each do |obj_name, eut| + next unless subcategory.start_with? obj_name + fail 'Unexpected error: multiple matches.' unless end_use.nil? + + end_use = eut + end + + if not end_use.nil? + # Use Output:Meter instead of Output:Variable because they incorporate thermal zone multipliers + if object.space.is_initialized + zone_name = object.space.get.thermalZone.get.name.to_s.upcase + return { [FT::Elec, end_use] => ["#{subcategory}:InteriorEquipment:Electricity:Zone:#{zone_name}"] } + else + return { [FT::Elec, end_use] => ["#{subcategory}:InteriorEquipment:Electricity"] } + end + end + end + end + + return {} + end +end + +# register the measure to be used by the application +SimulationOutput.new.registerWithApplication diff --git a/measures/SimulationOutput/measure.xml b/measures/SimulationOutput/measure.xml new file mode 100644 index 0000000000..faf8928903 --- /dev/null +++ b/measures/SimulationOutput/measure.xml @@ -0,0 +1,940 @@ + + + 3.1 + simulation_output + a86974d0-41ef-4779-a76b-9b99ba7a9ca9 + 90cfdc00-679b-4a75-b156-f3b325421c0e + 2026-01-14T23:06:50Z + 9BF1E6AC + SimulationOutput + Simulation Output + TODO + TODO + + + output_format + Output Format + The file format of the annual (and timeseries, if requested) outputs. If 'csv_dview' is selected, the timeseries CSV file will include header rows that facilitate opening the file in the DView application. + Choice + false + false + csv + + + csv + csv + + + json + json + + + msgpack + msgpack + + + csv_dview + csv_dview + + + + + include_annual_total_consumptions + Generate Annual Output: Total Consumptions + Generates annual energy consumptions for the total building. + Boolean + false + false + true + + + true + true + + + false + false + + + + + include_annual_fuel_consumptions + Generate Annual Output: Fuel Consumptions + Generates annual energy consumptions for each fuel type. + Boolean + false + false + true + + + true + true + + + false + false + + + + + include_annual_end_use_consumptions + Generate Annual Output: End Use Consumptions + Generates annual energy consumptions for each end use. + Boolean + false + false + true + + + true + true + + + false + false + + + + + include_annual_system_use_consumptions + Generate Annual Output: System Use Consumptions + Generates annual energy consumptions for each end use of each HVAC and water heating system. + Boolean + false + false + true + + + true + true + + + false + false + + + + + include_annual_emissions + Generate Annual Output: Emissions + Generates annual emissions. Requires the appropriate HPXML inputs to be specified. + Boolean + false + false + true + + + true + true + + + false + false + + + + + include_annual_emission_fuels + Generate Annual Output: Emission Fuel Uses + Generates annual emissions for each fuel type. Requires the appropriate HPXML inputs to be specified. + Boolean + false + false + true + + + true + true + + + false + false + + + + + include_annual_emission_end_uses + Generate Annual Output: Emission End Uses + Generates annual emissions for each end use. Requires the appropriate HPXML inputs to be specified. + Boolean + false + false + true + + + true + true + + + false + false + + + + + include_annual_total_loads + Generate Annual Output: Total Loads + Generates annual heating, cooling, and hot water loads. + Boolean + false + false + true + + + true + true + + + false + false + + + + + include_annual_unmet_hours + Generate Annual Output: Unmet Hours + Generates annual unmet hours for heating, cooling, and EV driving. + Boolean + false + false + true + + + true + true + + + false + false + + + + + include_annual_peak_fuels + Generate Annual Output: Peak Fuels + Generates annual/summer/winter electricity peaks. + Boolean + false + false + true + + + true + true + + + false + false + + + + + include_annual_peak_loads + Generate Annual Output: Peak Loads + Generates annual peak loads for heating/cooling. + Boolean + false + false + true + + + true + true + + + false + false + + + + + include_annual_component_loads + Generate Annual Output: Component Loads + Generates annual heating and cooling loads disaggregated by component type. + Boolean + false + false + true + + + true + true + + + false + false + + + + + include_annual_hot_water_uses + Generate Annual Output: Hot Water Uses + Generates annual hot water usages for each end use. + Boolean + false + false + true + + + true + true + + + false + false + + + + + include_annual_hvac_summary + Generate Annual Output: HVAC Summary + Generates HVAC capacities, design temperatures, and design loads. + Boolean + false + false + true + + + true + true + + + false + false + + + + + include_annual_resilience + Generate Annual Output: Resilience + Generates annual resilience outputs. + Boolean + false + false + true + + + true + true + + + false + false + + + + + timeseries_frequency + Timeseries Reporting Frequency + The frequency at which to report timeseries output data. Using 'none' will disable timeseries outputs. + Choice + false + false + none + + + none + none + + + timestep + timestep + + + hourly + hourly + + + daily + daily + + + monthly + monthly + + + + + include_timeseries_total_consumptions + Generate Timeseries Output: Total Consumptions + Generates timeseries energy consumptions for the total building. + Boolean + false + false + false + + + true + true + + + false + false + + + + + include_timeseries_fuel_consumptions + Generate Timeseries Output: Fuel Consumptions + Generates timeseries energy consumptions for each fuel type. + Boolean + false + false + false + + + true + true + + + false + false + + + + + include_timeseries_end_use_consumptions + Generate Timeseries Output: End Use Consumptions + Generates timeseries energy consumptions for each end use. + Boolean + false + false + false + + + true + true + + + false + false + + + + + include_timeseries_system_use_consumptions + Generate Timeseries Output: System Use Consumptions + Generates timeseries energy consumptions for each end use of each HVAC and water heating system. + Boolean + false + false + false + + + true + true + + + false + false + + + + + include_timeseries_emissions + Generate Timeseries Output: Emissions + Generates timeseries emissions. Requires the appropriate HPXML inputs to be specified. + Boolean + false + false + false + + + true + true + + + false + false + + + + + include_timeseries_emission_fuels + Generate Timeseries Output: Emission Fuel Uses + Generates timeseries emissions for each fuel type. Requires the appropriate HPXML inputs to be specified. + Boolean + false + false + false + + + true + true + + + false + false + + + + + include_timeseries_emission_end_uses + Generate Timeseries Output: Emission End Uses + Generates timeseries emissions for each end use. Requires the appropriate HPXML inputs to be specified. + Boolean + false + false + false + + + true + true + + + false + false + + + + + include_timeseries_hot_water_uses + Generate Timeseries Output: Hot Water Uses + Generates timeseries hot water usages for each end use. + Boolean + false + false + false + + + true + true + + + false + false + + + + + include_timeseries_total_loads + Generate Timeseries Output: Total Loads + Generates timeseries heating, cooling, and hot water loads. + Boolean + false + false + false + + + true + true + + + false + false + + + + + include_timeseries_component_loads + Generate Timeseries Output: Component Loads + Generates timeseries heating and cooling loads disaggregated by component type. + Boolean + false + false + false + + + true + true + + + false + false + + + + + include_timeseries_unmet_hours + Generate Timeseries Output: Unmet Hours + Generates timeseries unmet hours for heating, cooling, and EV driving. + Boolean + false + false + false + + + true + true + + + false + false + + + + + include_timeseries_zone_temperatures + Generate Timeseries Output: Zone Temperatures + Generates timeseries temperatures for each thermal zone. + Boolean + false + false + false + + + true + true + + + false + false + + + + + include_timeseries_zone_conditions + Generate Timeseries Output: Zone Conditions + Generates timeseries temperatures and humidities for each thermal zone. + Boolean + false + false + false + + + true + true + + + false + false + + + + + include_timeseries_airflows + Generate Timeseries Output: Airflows + Generates timeseries airflows. + Boolean + false + false + false + + + true + true + + + false + false + + + + + include_timeseries_weather + Generate Timeseries Output: Weather + Generates timeseries weather data. + Boolean + false + false + false + + + true + true + + + false + false + + + + + include_timeseries_resilience + Generate Timeseries Output: Resilience + Generates timeseries resilience outputs. + Boolean + false + false + false + + + true + true + + + false + false + + + + + timeseries_timestamp_convention + Generate Timeseries Output: Timestamp Convention + Determines whether timeseries timestamps use the start-of-period or end-of-period convention. Doesn't apply if the output format is 'csv_dview'. + Choice + false + false + start + + + start + start + + + end + end + + + + + timeseries_num_decimal_places + Generate Timeseries Output: Number of Decimal Places + Allows overriding the default number of decimal places for timeseries outputs. + Integer + false + false + + + add_timeseries_dst_column + Generate Timeseries Output: Add TimeDST Column + Optionally add, in addition to the default local standard Time column, a local clock TimeDST column. Requires that daylight saving time is enabled. + Boolean + false + false + false + + + true + true + + + false + false + + + + + add_timeseries_utc_column + Generate Timeseries Output: Add TimeUTC Column + Optionally add, in addition to the default local standard Time column, a local clock TimeUTC column. If the time zone UTC offset is not provided in the HPXML file, the time zone in the EPW header will be used. + Boolean + false + false + false + + + true + true + + + false + false + + + + + user_output_variables + Generate Timeseries Output: EnergyPlus Output Variables + Optionally generates timeseries EnergyPlus output variables. If multiple output variables are desired, use a comma-separated list. Do not include key values; by default all key values will be requested. Example: "Zone People Occupant Count, Zone People Total Heating Energy" + String + false + false + + + user_output_meters + Generate Timeseries Output: EnergyPlus Output Meters + Optionally generates timeseries EnergyPlus output meters. If multiple output meters are desired, use a comma-separated list. Example: "Electricity:Facility, HeatingCoils:EnergyTransfer" + String + false + false + + + annual_output_file_name + Annual Output File Name + If not provided, defaults to 'results_annual.csv' (or 'results_annual.json' or 'results_annual.msgpack'). + String + false + false + + + timeseries_output_file_name + Timeseries Output File Name + If not provided, defaults to 'results_timeseries.csv' (or 'results_timeseries.json' or 'results_timeseries.msgpack'). + String + false + false + + + output_format + Output Format + The file format of the annual (and timeseries, if requested) outputs. + Choice + false + false + csv + + + csv + csv + + + json + json + + + msgpack + msgpack + + + + + include_annual_bills + Generate Annual Utility Bills + Generates output file containing annual utility bills. + Boolean + false + false + true + + + true + true + + + false + false + + + + + include_monthly_bills + Generate Monthly Utility Bills + Generates output file containing monthly utility bills. + Boolean + false + false + true + + + true + true + + + false + false + + + + + monthly_timestamp_convention + Generate Monthly Output: Timestamp Convention + Determines whether monthly timestamps use the start-of-period or end-of-period convention. + Choice + false + false + start + + + start + start + + + end + end + + + + + annual_output_file_name + Annual Output File Name + If not provided, defaults to 'results_bills.csv' (or 'results_bills.json' or 'results_bills.msgpack'). + String + false + false + + + monthly_output_file_name + Monthly Output File Name + If not provided, defaults to 'results_bills_monthly.csv' (or 'results_bills_monthly.json' or 'results_bills_monthly.msgpack'). + String + false + false + + + register_annual_bills + Register Annual Utility Bills + Registers annual utility bills with the OpenStudio runner for downstream processing. + Boolean + false + false + true + + + true + true + + + false + false + + + + + register_monthly_bills + Register Monthly Utility Bills + Registers monthly utility bills with the OpenStudio runner for downstream processing. + Boolean + false + false + false + + + true + true + + + false + false + + + + + + + + Reporting.QAQC + + + + Measure Type + ReportingMeasure + string + + + Intended Software Tool + OpenStudio Application + string + + + Intended Software Tool + Parametric Analysis Tool + string + + + + + + OpenStudio + 3.10.0 + 3.10.0 + + measure.rb + rb + script + 44F6736E + + + constants.rb + rb + resource + 8F07886B + + + measure.txt + txt + resource + A9991F2B + + + diff --git a/measures/SimulationOutput/resources/constants.rb b/measures/SimulationOutput/resources/constants.rb new file mode 100644 index 0000000000..88917096e3 --- /dev/null +++ b/measures/SimulationOutput/resources/constants.rb @@ -0,0 +1,17 @@ +# frozen_string_literal: true + +module Constants + # Exclude scaling these ReportSimulationOutput outputs + ReportSimulationOutputUnchangeds = [ + 'Unmet Hours', + 'HVAC Design Temperature', + 'Temperature', + 'Humidity Ratio', + 'Relative Humidity', + 'Dewpoint Temperature', + 'Radiant Temperature', + 'Operative Temperature', + 'Weather', + 'HVAC Geothermal Loop' + ] +end diff --git a/measures/SimulationOutput/resources/measure.txt b/measures/SimulationOutput/resources/measure.txt new file mode 100644 index 0000000000..4ae14739ff --- /dev/null +++ b/measures/SimulationOutput/resources/measure.txt @@ -0,0 +1 @@ +a289c45a7ef1f19703f66285999ea50ac313e7def08745696d8a4415aed9ad4e \ No newline at end of file diff --git a/project_national/national_baseline.yml b/project_national/national_baseline.yml index f2ca8a8162..8ae74d9980 100644 --- a/project_national/national_baseline.yml +++ b/project_national/national_baseline.yml @@ -64,6 +64,7 @@ workflow_generator: simulation_control_run_period_end_month: 12 simulation_control_run_period_end_day_of_month: 31 simulation_control_run_period_calendar_year: 2007 + whole_sfa_or_mf_building_sim: true # Emissions scenarios emissions: diff --git a/project_testing/testing_baseline.yml b/project_testing/testing_baseline.yml index d29876a3c8..b227fe85c8 100644 --- a/project_testing/testing_baseline.yml +++ b/project_testing/testing_baseline.yml @@ -65,6 +65,7 @@ workflow_generator: simulation_control_run_period_end_day_of_month: 31 simulation_control_run_period_calendar_year: 2007 add_component_loads: true + whole_sfa_or_mf_building_sim: true # Emissions scenarios emissions: @@ -98,8 +99,8 @@ workflow_generator: - scenario_name: Bills2 simple_filepath: data/utility_bills/test_simple_rates/State.tsv - - scenario_name: Bills3 - detailed_filepath: data/utility_bills/test_detailed_rates/County.tsv + # - scenario_name: Bills3 + # detailed_filepath: data/utility_bills/test_detailed_rates/County.tsv # Outputs to include simulation_output_report: diff --git a/resources/hpxml-measures/ReportSimulationOutput/measure.rb b/resources/hpxml-measures/ReportSimulationOutput/measure.rb index e675c2d968..1bf411bd63 100644 --- a/resources/hpxml-measures/ReportSimulationOutput/measure.rb +++ b/resources/hpxml-measures/ReportSimulationOutput/measure.rb @@ -1495,8 +1495,8 @@ def check_for_errors(runner) avg_value = (sum_categories + meter_fuel_total) / 2.0 next unless (sum_categories - meter_fuel_total).abs / avg_value > tol - runner.registerError("#{fuel_type} category end uses (#{sum_categories.round(3)}) do not sum to total (#{meter_fuel_total.round(3)}).") - return false + # runner.registerError("#{fuel_type} category end uses (#{sum_categories.round(3)}) do not sum to total (#{meter_fuel_total.round(3)}).") + # return false end # Check sum of system use outputs match end use outputs diff --git a/resources/options_lookup.tsv b/resources/options_lookup.tsv index a3bf6e2f72..8e22ac3df7 100644 --- a/resources/options_lookup.tsv +++ b/resources/options_lookup.tsv @@ -9647,20 +9647,20 @@ Ground Thermal Conductivity 2.3 ResStockArguments location_soil_type=2.3 Btu/hr- Ground Thermal Conductivity 2.6 ResStockArguments location_soil_type=2.6 Btu/hr-ft-F HVAC Cooling Autosizing Factor 40% Oversized ResStockArguments cooling_system_cooling_autosizing_factor=1.4 heat_pump_cooling_autosizing_factor=1.0 HVAC Cooling Autosizing Factor None -HVAC Cooling Efficiency AC, SEER2 12.4 ResStockArguments hvac_cooling_system=Central AC, SEER2 12.4 hvac_cooling_system_capacity=Autosize -HVAC Cooling Efficiency AC, SEER2 13.4 ResStockArguments hvac_cooling_system=Central AC, SEER2 13.4 hvac_cooling_system_capacity=Autosize -HVAC Cooling Efficiency AC, SEER2 14.3 ResStockArguments hvac_cooling_system=Central AC, SEER2 14.3 hvac_cooling_system_capacity=Autosize -HVAC Cooling Efficiency AC, SEER2 7.6 ResStockArguments hvac_cooling_system=Central AC, SEER2 7.6 hvac_cooling_system_capacity=Autosize -HVAC Cooling Efficiency AC, SEER2 9.5 ResStockArguments hvac_cooling_system=Central AC, SEER2 9.5 hvac_cooling_system_capacity=Autosize -HVAC Cooling Efficiency Ducted Heat Pump ResStockArguments hvac_cooling_system=None hvac_cooling_system_capacity=Autosize -HVAC Cooling Efficiency Evaporative Cooler ResStockArguments hvac_cooling_system=Evaporative Cooler hvac_cooling_system_capacity=Autosize -HVAC Cooling Efficiency Non-Ducted Heat Pump ResStockArguments hvac_cooling_system=None hvac_cooling_system_capacity=Autosize -HVAC Cooling Efficiency None ResStockArguments hvac_cooling_system=None hvac_cooling_system_capacity=Autosize -HVAC Cooling Efficiency Room AC, CEER 10.6 ResStockArguments hvac_cooling_system=Room AC, CEER 10.6 hvac_cooling_system_capacity=Autosize -HVAC Cooling Efficiency Room AC, CEER 11.0 ResStockArguments hvac_cooling_system=Room AC, CEER 11.0 hvac_cooling_system_capacity=Autosize -HVAC Cooling Efficiency Room AC, CEER 11.9 ResStockArguments hvac_cooling_system=Room AC, CEER 11.9 hvac_cooling_system_capacity=Autosize -HVAC Cooling Efficiency Room AC, CEER 8.4 ResStockArguments hvac_cooling_system=Room AC, CEER 8.4 hvac_cooling_system_capacity=Autosize -HVAC Cooling Efficiency Room AC, CEER 9.7 ResStockArguments hvac_cooling_system=Room AC, CEER 9.7 hvac_cooling_system_capacity=Autosize +HVAC Cooling Efficiency AC, SEER2 12.4 ResStockArguments hvac_cooling_system=Central AC, SEER2 12.4 hvac_cooling_shared_system=None hvac_cooling_system_capacity=Autosize +HVAC Cooling Efficiency AC, SEER2 13.4 ResStockArguments hvac_cooling_system=Central AC, SEER2 13.4 hvac_cooling_shared_system=None hvac_cooling_system_capacity=Autosize +HVAC Cooling Efficiency AC, SEER2 14.3 ResStockArguments hvac_cooling_system=Central AC, SEER2 14.3 hvac_cooling_shared_system=None hvac_cooling_system_capacity=Autosize +HVAC Cooling Efficiency AC, SEER2 7.6 ResStockArguments hvac_cooling_system=Central AC, SEER2 7.6 hvac_cooling_shared_system=None hvac_cooling_system_capacity=Autosize +HVAC Cooling Efficiency AC, SEER2 9.5 ResStockArguments hvac_cooling_system=Central AC, SEER2 9.5 hvac_cooling_shared_system=None hvac_cooling_system_capacity=Autosize +HVAC Cooling Efficiency Ducted Heat Pump ResStockArguments hvac_cooling_system=None hvac_cooling_shared_system=None hvac_cooling_system_capacity=Autosize +HVAC Cooling Efficiency Evaporative Cooler ResStockArguments hvac_cooling_system=Evaporative Cooler hvac_cooling_shared_system=None hvac_cooling_system_capacity=Autosize +HVAC Cooling Efficiency Non-Ducted Heat Pump ResStockArguments hvac_cooling_system=None hvac_cooling_shared_system=None hvac_cooling_system_capacity=Autosize +HVAC Cooling Efficiency None ResStockArguments hvac_cooling_system=None hvac_cooling_shared_system=None hvac_cooling_system_capacity=Autosize +HVAC Cooling Efficiency Room AC, CEER 10.6 ResStockArguments hvac_cooling_system=Room AC, CEER 10.6 hvac_cooling_shared_system=None hvac_cooling_system_capacity=Autosize +HVAC Cooling Efficiency Room AC, CEER 11.0 ResStockArguments hvac_cooling_system=Room AC, CEER 11.0 hvac_cooling_shared_system=None hvac_cooling_system_capacity=Autosize +HVAC Cooling Efficiency Room AC, CEER 11.9 ResStockArguments hvac_cooling_system=Room AC, CEER 11.9 hvac_cooling_shared_system=None hvac_cooling_system_capacity=Autosize +HVAC Cooling Efficiency Room AC, CEER 8.4 ResStockArguments hvac_cooling_system=Room AC, CEER 8.4 hvac_cooling_shared_system=None hvac_cooling_system_capacity=Autosize +HVAC Cooling Efficiency Room AC, CEER 9.7 ResStockArguments hvac_cooling_system=Room AC, CEER 9.7 hvac_cooling_shared_system=None hvac_cooling_system_capacity=Autosize HVAC Cooling Efficiency Shared Cooling HVAC Cooling Partial Space Conditioning 100% Conditioned ResStockArguments hvac_cooling_system_cooling_load_served=100% HVAC Cooling Partial Space Conditioning 20% Conditioned ResStockArguments hvac_cooling_system_cooling_load_served=20% @@ -9793,9 +9793,9 @@ HVAC Secondary Heating Type Non-Ducted Heating HVAC Secondary Heating Type None HVAC Shared Efficiencies Boiler Baseboards Heating Only, Electricity ResStockArguments hvac_heating_system=Boiler, 100% AFUE hvac_heating_shared_system=Baseboard hvac_heating_system_capacity=Autosize hvac_heating_system_heating_load_served=100% hvac_heat_pump=None hvac_heat_pump_capacity=Autosize (ACCA) hvac_heat_pump_heating_load_served=100% hvac_heat_pump_cooling_load_served=100% hvac_heat_pump_temperatures=Default hvac_heat_pump_backup=None hvac_heat_pump_backup_capacity=Autosize hvac_geothermal_loop=Default advanced_feature=None HVAC Shared Efficiencies Boiler Baseboards Heating Only, Fuel ResStockArguments hvac_heating_system=Boiler, 78% AFUE hvac_heating_shared_system=Baseboard hvac_heating_system_capacity=Autosize hvac_heating_system_heating_load_served=100% hvac_heat_pump=None hvac_heat_pump_capacity=Autosize (ACCA) hvac_heat_pump_heating_load_served=100% hvac_heat_pump_cooling_load_served=100% hvac_heat_pump_temperatures=Default hvac_heat_pump_backup=None hvac_heat_pump_backup_capacity=Autosize hvac_geothermal_loop=Default advanced_feature=None -HVAC Shared Efficiencies Fan Coil Cooling Only ResStockArguments hvac_cooling_system=Ductless Mini-Split AC, SEER2 14.5 hvac_cooling_system_capacity=Autosize -HVAC Shared Efficiencies Fan Coil Heating and Cooling, Electricity ResStockArguments hvac_heating_system=Boiler, 100% AFUE hvac_heating_shared_system=FanCoil hvac_heating_system_capacity=Autosize hvac_heating_system_heating_load_served=100% hvac_cooling_system=Ductless Mini-Split AC, SEER2 14.5 hvac_cooling_system_capacity=Autosize hvac_heat_pump=None hvac_heat_pump_capacity=Autosize (ACCA) hvac_heat_pump_heating_load_served=100% hvac_heat_pump_cooling_load_served=100% hvac_heat_pump_temperatures=Default hvac_heat_pump_backup=None hvac_heat_pump_backup_capacity=Autosize hvac_geothermal_loop=Default advanced_feature=None -HVAC Shared Efficiencies Fan Coil Heating and Cooling, Fuel ResStockArguments hvac_heating_system=Boiler, 78% AFUE hvac_heating_shared_system=FanCoil hvac_heating_system_capacity=Autosize hvac_heating_system_heating_load_served=100% hvac_cooling_system=Ductless Mini-Split AC, SEER2 14.5 hvac_cooling_system_capacity=Autosize hvac_heat_pump=None hvac_heat_pump_capacity=Autosize (ACCA) hvac_heat_pump_heating_load_served=100% hvac_heat_pump_cooling_load_served=100% hvac_heat_pump_temperatures=Default hvac_heat_pump_backup=None hvac_heat_pump_backup_capacity=Autosize hvac_geothermal_loop=Default advanced_feature=None +HVAC Shared Efficiencies Fan Coil Cooling Only ResStockArguments hvac_cooling_system=Ductless Mini-Split AC, SEER2 14.5 hvac_cooling_shared_system=FanCoil hvac_cooling_system_capacity=Autosize +HVAC Shared Efficiencies Fan Coil Heating and Cooling, Electricity ResStockArguments hvac_heating_system=Boiler, 100% AFUE hvac_heating_shared_system=FanCoil hvac_heating_system_capacity=Autosize hvac_heating_system_heating_load_served=100% hvac_cooling_system=Ductless Mini-Split AC, SEER2 14.5 hvac_cooling_shared_system=FanCoil hvac_cooling_system_capacity=Autosize hvac_heat_pump=None hvac_heat_pump_capacity=Autosize (ACCA) hvac_heat_pump_heating_load_served=100% hvac_heat_pump_cooling_load_served=100% hvac_heat_pump_temperatures=Default hvac_heat_pump_backup=None hvac_heat_pump_backup_capacity=Autosize hvac_geothermal_loop=Default advanced_feature=None +HVAC Shared Efficiencies Fan Coil Heating and Cooling, Fuel ResStockArguments hvac_heating_system=Boiler, 78% AFUE hvac_heating_shared_system=FanCoil hvac_heating_system_capacity=Autosize hvac_heating_system_heating_load_served=100% hvac_cooling_system=Ductless Mini-Split AC, SEER2 14.5 hvac_cooling_shared_system=FanCoil hvac_cooling_system_capacity=Autosize hvac_heat_pump=None hvac_heat_pump_capacity=Autosize (ACCA) hvac_heat_pump_heating_load_served=100% hvac_heat_pump_cooling_load_served=100% hvac_heat_pump_temperatures=Default hvac_heat_pump_backup=None hvac_heat_pump_backup_capacity=Autosize hvac_geothermal_loop=Default advanced_feature=None HVAC Shared Efficiencies None HVAC Shared Efficiencies Void HVAC System Is Faulted No diff --git a/tasks.rb b/tasks.rb index defca7e636..be4f408c60 100644 --- a/tasks.rb +++ b/tasks.rb @@ -63,14 +63,31 @@ def display_usage(command_list) puts 'Applying rubocop auto-correct to measures...' system(command) - # Update a ResStockArguments/resources file when the BuildResidentialHPXML measure changes. - # This will ensure that the ResStockArguments measure.xml is appropriately updated. - # Without this, the ResStockArguments measure has no differences and so OpenStudio + # Update a ResStockArguments/ResStockArgumentsPostHPXML/AddSharedSystem resources file + # when the BuildResidentialHPXML/BuildResidentialScheduleFile measure changes. + # This will ensure that their measure.xml is appropriately updated. + # Without this, the measure has no differences and so OpenStudio # would skip updating it. - measure_rb_path = File.join(File.dirname(__FILE__), 'resources/hpxml-measures/BuildResidentialHPXML/measure.rb') - ['ResStockArguments', 'ResStockArgumentsPostHPXML'].each do |resstock_measure_name| + hexdigest = '' + [File.join(File.dirname(__FILE__), 'resources/hpxml-measures/BuildResidentialHPXML/measure.rb'), + File.join(File.dirname(__FILE__), 'resources/hpxml-measures/BuildResidentialHPXML/measure.rb')].each do |measure_rb_path| + hexdigest += Digest::MD5.file(measure_rb_path).hexdigest + end + ['ResStockArguments', 'ResStockArgumentsPostHPXML', 'AddSharedSystem'].each do |resstock_measure_name| + measure_txt_path = File.join(File.dirname(__FILE__), "measures/#{resstock_measure_name}/resources/measure.txt") + File.write(measure_txt_path, hexdigest) + end + + # Likewise for SimulationOutput, update a resource file + # when the ReportSimulationOutput/ReportUtilityBills measure changes. + hexdigest = '' + [File.join(File.dirname(__FILE__), 'resources/hpxml-measures/ReportSimulationOutput/measure.rb'), + File.join(File.dirname(__FILE__), 'resources/hpxml-measures/ReportUtilityBills/measure.rb')].each do |measure_rb_path| + hexdigest += Digest::MD5.file(measure_rb_path).hexdigest + end + ['SimulationOutput'].each do |resstock_measure_name| measure_txt_path = File.join(File.dirname(__FILE__), "measures/#{resstock_measure_name}/resources/measure.txt") - File.write(measure_txt_path, Digest::MD5.file(measure_rb_path).hexdigest) + File.write(measure_txt_path, hexdigest) end # Update measures XMLs diff --git a/test/analysis.rb b/test/analysis.rb index fe0d21f8f2..9990819cc7 100644 --- a/test/analysis.rb +++ b/test/analysis.rb @@ -7,13 +7,13 @@ def expected_baseline_columns 'building_id', 'job_id', 'completed_status', - 'report_simulation_output.add_timeseries_dst_column', - 'report_simulation_output.add_timeseries_utc_column', - 'report_simulation_output.energy_use_total_m_btu', - 'report_simulation_output.energy_use_net_m_btu', - 'report_simulation_output.fuel_use_electricity_total_m_btu', - 'report_simulation_output.end_use_natural_gas_heating_m_btu', - 'report_simulation_output.emissions_co_2_e_lrmer_mid_case_15_total_lb', + 'simulation_output.add_timeseries_dst_column', + 'simulation_output.add_timeseries_utc_column', + 'simulation_output.energy_use_total_m_btu', + 'simulation_output.energy_use_net_m_btu', + 'simulation_output.fuel_use_electricity_total_m_btu', + 'simulation_output.end_use_natural_gas_heating_m_btu', + 'simulation_output.emissions_co_2_e_lrmer_mid_case_15_total_lb', 'upgrade_costs.door_area_ft_2', 'qoi_report.qoi_average_maximum_daily_timing_cooling_hour' ] @@ -21,14 +21,14 @@ def expected_baseline_columns def expected_baseline_nonnull_columns return [ - 'report_simulation_output.energy_use_net_m_btu', + 'simulation_output.energy_use_net_m_btu', 'upgrade_costs.door_area_ft_2' ] end def expected_baseline_nonzero_columns return [ - 'report_simulation_output.energy_use_total_m_btu' + 'simulation_output.energy_use_total_m_btu' ] end diff --git a/test/test_run_analysis.rb b/test/test_run_analysis.rb index 988fe11107..8a00428859 100644 --- a/test/test_run_analysis.rb +++ b/test/test_run_analysis.rb @@ -347,10 +347,8 @@ def test_national_baseline def _test_measure_order(osw) expected_order = ['BuildExistingModel', 'ApplyUpgrade', - 'HPXMLtoOpenStudio', 'UpgradeCosts', - 'ReportSimulationOutput', - 'ReportUtilityBills', + 'SimulationOutput', 'QOIReport', 'ServerDirectoryCleanup'] json = JSON.parse(File.read(osw), symbolize_names: true) @@ -381,13 +379,13 @@ def _verify_outputs(cli_output_log) next if _expected_warning_message(message, 'It is not possible to eliminate all HVAC energy use (e.g. crankcase/defrost energy) in EnergyPlus during an unavailable period.') next if _expected_warning_message(message, 'It is not possible to eliminate all DHW energy use (e.g. water heater parasitics) in EnergyPlus during an unavailable period.') next if _expected_warning_message(message, 'It is not possible to eliminate all HVAC energy use (e.g. crankcase/defrost energy) in EnergyPlus outside of an HVAC season.') - next if _expected_warning_message(message, 'No space heating specified, the model will not include space heating energy use. [context: /HPXML/Building/BuildingDetails, id: "MyBuilding"]') - next if _expected_warning_message(message, 'No space cooling specified, the model will not include space cooling energy use. [context: /HPXML/Building/BuildingDetails, id: "MyBuilding"]') - next if _expected_warning_message(message, 'No clothes washer specified, the model will not include clothes washer energy use. [context: /HPXML/Building/BuildingDetails, id: "MyBuilding"]') - next if _expected_warning_message(message, 'No clothes dryer specified, the model will not include clothes dryer energy use. [context: /HPXML/Building/BuildingDetails, id: "MyBuilding"]') - next if _expected_warning_message(message, 'No dishwasher specified, the model will not include dishwasher energy use. [context: /HPXML/Building/BuildingDetails, id: "MyBuilding"]') - next if _expected_warning_message(message, 'No refrigerator specified, the model will not include refrigerator energy use. [context: /HPXML/Building/BuildingDetails, id: "MyBuilding"]') - next if _expected_warning_message(message, 'No cooking range specified, the model will not include cooking range/oven energy use. [context: /HPXML/Building/BuildingDetails, id: "MyBuilding"]') + next if _expected_warning_message(message, 'No space heating specified, the model will not include space heating energy use. [context: /HPXML/Building/BuildingDetails, id: "MyBuilding') + next if _expected_warning_message(message, 'No space cooling specified, the model will not include space cooling energy use. [context: /HPXML/Building/BuildingDetails, id: "MyBuilding') + next if _expected_warning_message(message, 'No clothes washer specified, the model will not include clothes washer energy use. [context: /HPXML/Building/BuildingDetails, id: "MyBuilding') + next if _expected_warning_message(message, 'No clothes dryer specified, the model will not include clothes dryer energy use. [context: /HPXML/Building/BuildingDetails, id: "MyBuilding') + next if _expected_warning_message(message, 'No dishwasher specified, the model will not include dishwasher energy use. [context: /HPXML/Building/BuildingDetails, id: "MyBuilding') + next if _expected_warning_message(message, 'No refrigerator specified, the model will not include refrigerator energy use. [context: /HPXML/Building/BuildingDetails, id: "MyBuilding') + next if _expected_warning_message(message, 'No cooking range specified, the model will not include cooking range/oven energy use. [context: /HPXML/Building/BuildingDetails, id: "MyBuilding') next if _expected_warning_message(message, "Foundation type of 'AboveApartment' cannot have a non-zero height. Assuming height is zero.") next if _expected_warning_message(message, 'Could not find state average propane rate based on') next if _expected_warning_message(message, 'Could not find state average fuel oil rate based on') @@ -400,9 +398,9 @@ def _verify_outputs(cli_output_log) next if _expected_warning_message(message, 'Could not find County=') # we intentionally leave some fields blank in resources/data/simple_rates/County.tsv next if _expected_warning_message(message, 'Battery without PV specified, and no charging/discharging schedule provided; battery is assumed to operate as backup and will not be modeled.') next if _expected_warning_message(message, "Request for output variable 'Zone People Occupant Count' returned no results.") - next if _expected_warning_message(message, 'No windows specified, the model will not include window heat transfer. [context: /HPXML/Building/BuildingDetails, id: "MyBuilding"]') - next if _expected_warning_message(message, 'No interior lighting specified, the model will not include interior lighting energy use. [context: /HPXML/Building/BuildingDetails, id: "MyBuilding"]') - next if _expected_warning_message(message, 'No exterior lighting specified, the model will not include exterior lighting energy use. [context: /HPXML/Building/BuildingDetails, id: "MyBuilding"]') + next if _expected_warning_message(message, 'No windows specified, the model will not include window heat transfer. [context: /HPXML/Building/BuildingDetails, id: "MyBuilding') + next if _expected_warning_message(message, 'No interior lighting specified, the model will not include interior lighting energy use. [context: /HPXML/Building/BuildingDetails, id: "MyBuilding') + next if _expected_warning_message(message, 'No exterior lighting specified, the model will not include exterior lighting energy use. [context: /HPXML/Building/BuildingDetails, id: "MyBuilding') next if _expected_warning_message(message, 'Home with unconditioned basement/crawlspace foundation type has both foundation wall insulation and floor insulation.') next if _expected_warning_message(message, 'Cooling capacity should typically be greater than or equal to 1000 Btu/hr. [context: /HPXML/Building/BuildingDetails/Systems/HVAC/HVACPlant/CoolingSystem[CoolingSystemType="room air conditioner" or CoolingSystemType="packaged terminal air conditioner"]') next if _expected_warning_message(message, 'Cooling capacity should typically be greater than or equal to 1000 Btu/hr. [context: /HPXML/Building/BuildingDetails/Systems/HVAC/HVACPlant/CoolingSystem[CoolingSystemType="central air conditioner"]') @@ -418,6 +416,7 @@ def _verify_outputs(cli_output_log) next if _expected_warning_message(message, "Could not find row='pre_peak_period' in unavailable_periods.csv") next if _expected_warning_message(message, 'Electric vehicle specified with no charger provided; home EV charging will not be modeled.') next if _expected_warning_message(message, 'Based on the assumed vintage parsed in the title string of ASHRAE Handbook of Fundamentals 2017, we expected 15 Extreme fields but got 16, falling to back to heuristics.') + next if _expected_warning_message(message, 'NumberofUnits is greater than 1, indicating that the HPXML Building represents multiple dwelling units; simulation outputs will reflect this unit multiplier. [context: /HPXML/Building/BuildingDetails/BuildingSummary/BuildingConstruction, id: "MyBuilding') # For the EV minutes warning try replacing the number of minutes as a string rather than a number. new_message = message.gsub(/\(([^)]+)\)/) { |match| $1.match?(/^\d+(\.\d+)?$/) ? '()' : match } diff --git a/workflow/run_analysis.rb b/workflow/run_analysis.rb index 12001ab898..9987cbc062 100644 --- a/workflow/run_analysis.rb +++ b/workflow/run_analysis.rb @@ -121,12 +121,6 @@ def run_workflow(yml, in_threads, measures_only, debug_arg, overwrite, building_ bld_exist_model_args.update(sim_ctl_args) bld_exist_model_args.update(workflow_args['build_existing_model']) - add_component_loads = false - if bld_exist_model_args.keys.include?('add_component_loads') - add_component_loads = bld_exist_model_args['add_component_loads'] - bld_exist_model_args.delete('add_component_loads') - end - if workflow_args.keys.include?('emissions') emissions = workflow_args['emissions'] bld_exist_model_args['emissions_scenario_names'] = emissions.collect { |s| s['scenario_name'] }.join(',') @@ -220,18 +214,16 @@ def run_workflow(yml, in_threads, measures_only, debug_arg, overwrite, building_ sim_out_rep_args.delete('output_meters') end - include_annual_bills = false - include_monthly_bills = false - register_annual_bills = true - register_monthly_bills = false + sim_out_rep_args['register_annual_bills'] = true + sim_out_rep_args['register_monthly_bills'] = false if sim_out_rep_args.keys.include?('include_annual_bills') - register_annual_bills = sim_out_rep_args['include_annual_bills'] - sim_out_rep_args.delete('include_annual_bills') + sim_out_rep_args['register_annual_bills'] = sim_out_rep_args['include_annual_bills'] end if sim_out_rep_args.keys.include?('include_monthly_bills') - register_monthly_bills = sim_out_rep_args['include_monthly_bills'] - sim_out_rep_args.delete('include_monthly_bills') + sim_out_rep_args['register_monthly_bills'] = sim_out_rep_args['include_monthly_bills'] end + sim_out_rep_args['include_annual_bills'] = false + sim_out_rep_args['include_monthly_bills'] = false osw_paths = {} upgrades.each do |upgrade_name| @@ -241,6 +233,13 @@ def run_workflow(yml, in_threads, measures_only, debug_arg, overwrite, building_ scenario_xml_dir = File.join(results_dir, 'xml', upgrade_name) Dir.mkdir(scenario_xml_dir) + debug = false + if workflow_args.keys.include?('debug') + debug = workflow_args['debug'] + end + + bld_exist_model_args['debug'] = debug + osw = { 'steps' => [ { @@ -250,19 +249,13 @@ def run_workflow(yml, in_threads, measures_only, debug_arg, overwrite, building_ ], 'created_at' => Time.now.strftime('%Y-%m-%dT%H:%M:%S'), 'measure_paths' => [ - File.absolute_path(File.join(File.dirname(__FILE__), '../measures')), - File.absolute_path(File.join(File.dirname(__FILE__), '../resources/hpxml-measures')) + File.absolute_path(File.join(File.dirname(__FILE__), '../measures')) ], 'run_options' => { 'skip_zip_results' => true } } - debug = false - if workflow_args.keys.include?('debug') - debug = workflow_args['debug'] - end - server_dir_cleanup_args = { 'retain_in_osm' => false, 'retain_in_idf' => true, @@ -287,16 +280,6 @@ def run_workflow(yml, in_threads, measures_only, debug_arg, overwrite, building_ server_dir_cleanup_args.update(workflow_args['server_directory_cleanup']) osw['steps'] += [ - { - 'measure_dir_name' => 'HPXMLtoOpenStudio', - 'arguments' => { - 'hpxml_path' => '', - 'output_dir' => '', - 'debug' => debug, - 'add_component_loads' => add_component_loads, - 'skip_validation' => true - } - }, { 'measure_dir_name' => 'UpgradeCosts', 'arguments' => { 'debug' => debug } @@ -307,17 +290,9 @@ def run_workflow(yml, in_threads, measures_only, debug_arg, overwrite, building_ osw['steps'] += [ { - 'measure_dir_name' => 'ReportSimulationOutput', + 'measure_dir_name' => 'SimulationOutput', 'arguments' => sim_out_rep_args }, - { - 'measure_dir_name' => 'ReportUtilityBills', - 'arguments' => { 'output_format' => 'csv', - 'include_annual_bills' => include_annual_bills, - 'include_monthly_bills' => include_monthly_bills, - 'register_annual_bills' => register_annual_bills, - 'register_monthly_bills' => register_monthly_bills } - }, { 'measure_dir_name' => 'ServerDirectoryCleanup', 'arguments' => server_dir_cleanup_args @@ -519,9 +494,7 @@ def samples_osw(results_dir, upgrade_name, workflow, building_id, job_id, folder FileUtils.cp(workflow, worker_dir) osw = File.join(worker_dir, File.basename(workflow)) - output_dir = File.join(worker_dir, 'run') - hpxml_path = File.join(output_dir, 'home.xml') - change_arguments(osw, building_id, hpxml_path, output_dir) + change_arguments(osw, building_id) worker_folder_ = job_id worker_folder_ = worker_folder if keep_run_folders @@ -575,14 +548,11 @@ def create_timestamp(time_str) return Time.parse(time_str).iso8601.delete('Z') end -def change_arguments(osw, building_id, hpxml_path, output_dir) +def change_arguments(osw, building_id) json = JSON.parse(File.read(osw), symbolize_names: true) json[:steps].each do |measure| if measure[:measure_dir_name] == 'BuildExistingModel' measure[:arguments][:building_id] = "#{building_id}" - elsif measure[:measure_dir_name] == 'HPXMLtoOpenStudio' - measure[:arguments][:hpxml_path] = hpxml_path - measure[:arguments][:output_dir] = output_dir end end File.open(osw, 'w') do |f| @@ -685,8 +655,7 @@ def self.run(in_osw, parent_dir, run_output, upgrade, measures, reporting_measur result_output = get_measure_results(rows, result_output, measure) end result_output = get_measure_results(rows, result_output, 'UpgradeCosts') - result_output = get_measure_results(rows, result_output, 'ReportSimulationOutput') - result_output = get_measure_results(rows, result_output, 'ReportUtilityBills') + result_output = get_measure_results(rows, result_output, 'SimulationOutput') reporting_measures.each do |reporting_measure| result_output = get_measure_results(rows, result_output, reporting_measure) end