diff --git a/hpxml-measures/BuildResidentialHPXML/README.md b/hpxml-measures/BuildResidentialHPXML/README.md index 2f7d79059..03b5e246a 100644 --- a/hpxml-measures/BuildResidentialHPXML/README.md +++ b/hpxml-measures/BuildResidentialHPXML/README.md @@ -77,39 +77,37 @@ Absolute/relative paths of csv files containing user-specified detailed schedule
-**Schedules: Vacancy Period** +**Schedules: Vacancy Periods** -Specifies the vacancy period. 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). +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. -- **Name:** ``schedules_vacancy_period`` +- **Name:** ``schedules_vacancy_periods`` - **Type:** ``String`` - **Required:** ``false``
-**Schedules: Power Outage Period** +**Schedules: Power Outage Periods** -Specifies the power outage period. 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). +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. -- **Name:** ``schedules_power_outage_period`` +- **Name:** ``schedules_power_outage_periods`` - **Type:** ``String`` - **Required:** ``false``
-**Schedules: Power Outage Period Window Natural Ventilation Availability** +**Schedules: Power Outage Periods Window Natural Ventilation Availability** -The availability of the natural ventilation schedule during the outage period. +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. -- **Name:** ``schedules_power_outage_window_natvent_availability`` -- **Type:** ``Choice`` +- **Name:** ``schedules_power_outage_periods_window_natvent_availability`` +- **Type:** ``String`` - **Required:** ``false`` -- **Choices:** `regular schedule`, `always available`, `always unavailable` -
**Simulation Control: Timestep** @@ -4956,9 +4954,22 @@ Whether there are any ceiling fans.
+**Ceiling Fan: Label Energy Use** + +The label average energy use of the ceiling fan(s). If neither Efficiency nor Label Energy Use provided, the OS-HPXML default (see HPXML Ceiling Fans) is used. + +- **Name:** ``ceiling_fan_label_energy_use`` +- **Type:** ``Double`` + +- **Units:** ``W`` + +- **Required:** ``false`` + +
+ **Ceiling Fan: Efficiency** -The efficiency rating of the ceiling fan(s) at medium speed. If not provided, the OS-HPXML default (see HPXML Ceiling Fans) is used. +The efficiency rating of the ceiling fan(s) at medium speed. Only used if Label Energy Use not provided. If neither Efficiency nor Label Energy Use provided, the OS-HPXML default (see HPXML Ceiling Fans) is used. - **Name:** ``ceiling_fan_efficiency`` - **Type:** ``Double`` diff --git a/hpxml-measures/BuildResidentialHPXML/measure.rb b/hpxml-measures/BuildResidentialHPXML/measure.rb index ff59400d8..2784b8a28 100644 --- a/hpxml-measures/BuildResidentialHPXML/measure.rb +++ b/hpxml-measures/BuildResidentialHPXML/measure.rb @@ -69,24 +69,19 @@ def arguments(model) # rubocop:disable Lint/UnusedMethodArgument arg.setDescription('Absolute/relative paths of csv files containing user-specified detailed schedules. If multiple files, use a comma-separated list.') args << arg - arg = OpenStudio::Measure::OSArgument.makeStringArgument('schedules_vacancy_period', false) - arg.setDisplayName('Schedules: Vacancy Period') - arg.setDescription('Specifies the vacancy period. 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).') + arg = OpenStudio::Measure::OSArgument.makeStringArgument('schedules_vacancy_periods', false) + arg.setDisplayName('Schedules: Vacancy Periods') + arg.setDescription('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.') args << arg - arg = OpenStudio::Measure::OSArgument.makeStringArgument('schedules_power_outage_period', false) - arg.setDisplayName('Schedules: Power Outage Period') - arg.setDescription('Specifies the power outage period. 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).') + arg = OpenStudio::Measure::OSArgument.makeStringArgument('schedules_power_outage_periods', false) + arg.setDisplayName('Schedules: Power Outage Periods') + arg.setDescription('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.') args << arg - natvent_availability_choices = OpenStudio::StringVector.new - natvent_availability_choices << HPXML::ScheduleRegular - natvent_availability_choices << HPXML::ScheduleAvailable - natvent_availability_choices << HPXML::ScheduleUnavailable - - arg = OpenStudio::Measure::OSArgument.makeChoiceArgument('schedules_power_outage_window_natvent_availability', natvent_availability_choices, false) - arg.setDisplayName('Schedules: Power Outage Period Window Natural Ventilation Availability') - arg.setDescription('The availability of the natural ventilation schedule during the outage period.') + arg = OpenStudio::Measure::OSArgument.makeStringArgument('schedules_power_outage_periods_window_natvent_availability', false) + arg.setDisplayName('Schedules: Power Outage Periods Window Natural Ventilation Availability') + arg.setDescription("The availability of the natural ventilation schedule during the power outage periods. Valid choices are '#{[HPXML::ScheduleRegular, HPXML::ScheduleAvailable, HPXML::ScheduleUnavailable].join("', '")}'. If multiple periods, use a comma-separated list.") args << arg arg = OpenStudio::Measure::OSArgument::makeIntegerArgument('simulation_control_timestep', false) @@ -2917,10 +2912,16 @@ def arguments(model) # rubocop:disable Lint/UnusedMethodArgument arg.setDefaultValue(true) args << arg + arg = OpenStudio::Measure::OSArgument::makeDoubleArgument('ceiling_fan_label_energy_use', false) + arg.setDisplayName('Ceiling Fan: Label Energy Use') + arg.setUnits('W') + arg.setDescription("The label average energy use of the ceiling fan(s). If neither Efficiency nor Label Energy Use provided, the OS-HPXML default (see HPXML Ceiling Fans) is used.") + args << arg + arg = OpenStudio::Measure::OSArgument::makeDoubleArgument('ceiling_fan_efficiency', false) arg.setDisplayName('Ceiling Fan: Efficiency') arg.setUnits('CFM/W') - arg.setDescription("The efficiency rating of the ceiling fan(s) at medium speed. If not provided, the OS-HPXML default (see HPXML Ceiling Fans) is used.") + arg.setDescription("The efficiency rating of the ceiling fan(s) at medium speed. Only used if Label Energy Use not provided. If neither Efficiency nor Label Energy Use provided, the OS-HPXML default (see HPXML Ceiling Fans) is used.") args << arg arg = OpenStudio::Measure::OSArgument::makeIntegerArgument('ceiling_fan_quantity', false) @@ -3490,6 +3491,22 @@ def argument_errors(args) error = args[:rim_joist_assembly_r].is_initialized && !args[:geometry_rim_joist_height].is_initialized errors << 'Specified a rim joist assembly R-value but no rim joist height.' if error + if args[:schedules_power_outage_periods].is_initialized && args[:schedules_power_outage_periods_window_natvent_availability].is_initialized + schedules_power_outage_periods_lengths = [args[:schedules_power_outage_periods].get.count(','), + args[:schedules_power_outage_periods_window_natvent_availability].get.count(',')] + + error = (schedules_power_outage_periods_lengths.uniq.size != 1) + errors << 'One power outage periods schedule argument does not have enough comma-separated elements specified.' if error + end + + if args[:schedules_power_outage_periods_window_natvent_availability].is_initialized + natvent_availabilities = args[:schedules_power_outage_periods_window_natvent_availability].get.split(',').map(&:strip) + natvent_availabilities.each do |natvent_availability| + error = ![HPXML::ScheduleRegular, HPXML::ScheduleAvailable, HPXML::ScheduleUnavailable].include?(natvent_availability) + errors << "Window natural ventilation availability '#{natvent_availability}' during a power outage is invalid." if error + end + end + hvac_perf_data_heating_args_initialized = [args[:hvac_perf_data_heating_outdoor_temperatures].is_initialized, args[:hvac_perf_data_heating_min_speed_capacities].is_initialized, args[:hvac_perf_data_heating_max_speed_capacities].is_initialized, @@ -3840,22 +3857,32 @@ def self.set_header(runner, hpxml, args) hpxml.header.whole_sfa_or_mf_building_sim = args[:whole_sfa_or_mf_building_sim].get end - if args[:schedules_vacancy_period].is_initialized - begin_month, begin_day, begin_hour, end_month, end_day, end_hour = Schedule.parse_date_time_range(args[:schedules_vacancy_period].get) + if args[:schedules_vacancy_periods].is_initialized + schedules_vacancy_periods = args[:schedules_vacancy_periods].get.split(',').map(&:strip) + schedules_vacancy_periods.each do |schedules_vacancy_period| + begin_month, begin_day, begin_hour, end_month, end_day, end_hour = Schedule.parse_date_time_range(schedules_vacancy_period) - if not unavailable_period_exists(hpxml, 'Vacancy', begin_month, begin_day, begin_hour, end_month, end_day, end_hour) - hpxml.header.unavailable_periods.add(column_name: 'Vacancy', begin_month: begin_month, begin_day: begin_day, begin_hour: begin_hour, end_month: end_month, end_day: end_day, end_hour: end_hour, natvent_availability: HPXML::ScheduleUnavailable) + if not unavailable_period_exists(hpxml, 'Vacancy', begin_month, begin_day, begin_hour, end_month, end_day, end_hour) + hpxml.header.unavailable_periods.add(column_name: 'Vacancy', begin_month: begin_month, begin_day: begin_day, begin_hour: begin_hour, end_month: end_month, end_day: end_day, end_hour: end_hour, natvent_availability: HPXML::ScheduleUnavailable) + end end end - if args[:schedules_power_outage_period].is_initialized - begin_month, begin_day, begin_hour, end_month, end_day, end_hour = Schedule.parse_date_time_range(args[:schedules_power_outage_period].get) + if args[:schedules_power_outage_periods].is_initialized + schedules_power_outage_periods = args[:schedules_power_outage_periods].get.split(',').map(&:strip) - if args[:schedules_power_outage_window_natvent_availability].is_initialized - natvent_availability = args[:schedules_power_outage_window_natvent_availability].get + natvent_availabilities = [] + if args[:schedules_power_outage_periods_window_natvent_availability].is_initialized + natvent_availabilities = args[:schedules_power_outage_periods_window_natvent_availability].get.split(',').map(&:strip) end - if not unavailable_period_exists(hpxml, 'Power Outage', begin_month, begin_day, begin_hour, end_month, end_day, end_hour, natvent_availability) - hpxml.header.unavailable_periods.add(column_name: 'Power Outage', begin_month: begin_month, begin_day: begin_day, begin_hour: begin_hour, end_month: end_month, end_day: end_day, end_hour: end_hour, natvent_availability: natvent_availability) + schedules_power_outage_periods = schedules_power_outage_periods.zip(natvent_availabilities) + schedules_power_outage_periods.each do |schedules_power_outage_period| + outage_period, natvent_availability = schedules_power_outage_period + begin_month, begin_day, begin_hour, end_month, end_day, end_hour = Schedule.parse_date_time_range(outage_period) + + if not unavailable_period_exists(hpxml, 'Power Outage', begin_month, begin_day, begin_hour, end_month, end_day, end_hour, natvent_availability) + hpxml.header.unavailable_periods.add(column_name: 'Power Outage', begin_month: begin_month, begin_day: begin_day, begin_hour: begin_hour, end_month: end_month, end_day: end_day, end_hour: end_hour, natvent_availability: natvent_availability) + end end end @@ -6796,6 +6823,10 @@ def self.set_cooking_range_oven(hpxml_bldg, args) def self.set_ceiling_fans(hpxml_bldg, args) return unless args[:ceiling_fan_present] + if args[:ceiling_fan_label_energy_use].is_initialized + label_energy_use = args[:ceiling_fan_label_energy_use].get + end + if args[:ceiling_fan_efficiency].is_initialized efficiency = args[:ceiling_fan_efficiency].get end @@ -6806,6 +6837,7 @@ def self.set_ceiling_fans(hpxml_bldg, args) hpxml_bldg.ceiling_fans.add(id: "CeilingFan#{hpxml_bldg.ceiling_fans.size + 1}", efficiency: efficiency, + label_energy_use: label_energy_use, count: quantity) end diff --git a/hpxml-measures/BuildResidentialHPXML/measure.xml b/hpxml-measures/BuildResidentialHPXML/measure.xml index 3c21717b7..70d15159f 100644 --- a/hpxml-measures/BuildResidentialHPXML/measure.xml +++ b/hpxml-measures/BuildResidentialHPXML/measure.xml @@ -3,8 +3,8 @@ 3.1 build_residential_hpxml a13a8983-2b01-4930-8af2-42030b6e4233 - c8848d28-0d8b-41e8-91f1-abec125fca07 - 2024-02-19T20:13:13Z + de0e30ab-3bb4-41e5-ad00-abf50a094dc5 + 2024-02-22T18:12:31Z 2C38F48B BuildResidentialHPXML HPXML Builder @@ -70,42 +70,28 @@ false - schedules_vacancy_period - Schedules: Vacancy Period - Specifies the vacancy period. 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). + 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_period - Schedules: Power Outage Period - Specifies the power outage period. 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). + 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_window_natvent_availability - Schedules: Power Outage Period Window Natural Ventilation Availability - The availability of the natural ventilation schedule during the outage period. - Choice + 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 - - - regular schedule - regular schedule - - - always available - always available - - - always unavailable - always unavailable - - simulation_control_timestep @@ -6237,10 +6223,19 @@ + + ceiling_fan_label_energy_use + Ceiling Fan: Label Energy Use + The label average energy use of the ceiling fan(s). If neither Efficiency nor Label Energy Use provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.7.0/workflow_inputs.html#hpxml-ceiling-fans'>HPXML Ceiling Fans</a>) is used. + Double + W + false + false + ceiling_fan_efficiency Ceiling Fan: Efficiency - The efficiency rating of the ceiling fan(s) at medium speed. If not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.7.0/workflow_inputs.html#hpxml-ceiling-fans'>HPXML Ceiling Fans</a>) is used. + The efficiency rating of the ceiling fan(s) at medium speed. Only used if Label Energy Use not provided. If neither Efficiency nor Label Energy Use provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.7.0/workflow_inputs.html#hpxml-ceiling-fans'>HPXML Ceiling Fans</a>) is used. Double CFM/W false @@ -7167,7 +7162,7 @@ README.md md readme - 58E2B548 + BD2232F1 README.md.erb @@ -7184,7 +7179,7 @@ measure.rb rb script - 4E5B7CEC + 776E5EEC geometry.rb @@ -7196,7 +7191,7 @@ test_build_residential_hpxml.rb rb test - 63FD5BD3 + 15E37B7A diff --git a/hpxml-measures/BuildResidentialHPXML/tests/test_build_residential_hpxml.rb b/hpxml-measures/BuildResidentialHPXML/tests/test_build_residential_hpxml.rb index 210848bd3..7dfa47d23 100644 --- a/hpxml-measures/BuildResidentialHPXML/tests/test_build_residential_hpxml.rb +++ b/hpxml-measures/BuildResidentialHPXML/tests/test_build_residential_hpxml.rb @@ -69,6 +69,7 @@ def test_workflows 'extra-battery-crawlspace.xml' => 'base-sfd.xml', 'extra-battery-attic.xml' => 'base-sfd.xml', 'extra-detailed-performance-autosize.xml' => 'base-sfd.xml', + 'extra-power-outage-periods.xml' => 'base-sfd.xml', 'extra-sfa-atticroof-flat.xml' => 'base-sfa.xml', 'extra-sfa-atticroof-conditioned-eaves-gable.xml' => 'extra-sfa-slab.xml', @@ -185,6 +186,8 @@ def test_workflows 'error-sfd-with-shared-system.xml' => 'base-sfd.xml', 'error-rim-joist-height-but-no-assembly-r.xml' => 'base-sfd.xml', 'error-rim-joist-assembly-r-but-no-height.xml' => 'base-sfd.xml', + 'error-power-outage-args-not-all-same-size.xml' => 'base-sfd.xml', + 'error-power-outage-window-natvent-invalid.xml' => 'base-sfd.xml', 'error-heating-perf-data-not-all-specified.xml' => 'base-sfd.xml', 'error-heating-perf-data-not-all-same-size.xml' => 'base-sfd.xml', 'error-cooling-perf-data-not-all-specified.xml' => 'base-sfd.xml', @@ -249,6 +252,8 @@ def test_workflows 'error-sfd-with-shared-system.xml' => ['Specified a shared system for a single-family detached unit.'], 'error-rim-joist-height-but-no-assembly-r.xml' => ['Specified a rim joist height but no rim joist assembly R-value.'], 'error-rim-joist-assembly-r-but-no-height.xml' => ['Specified a rim joist assembly R-value but no rim joist height.'], + 'error-power-outage-args-not-all-same-size.xml' => ['One power outage periods schedule argument does not have enough comma-separated elements specified.'], + 'error-power-outage-window-natvent-invalid.xml' => ["Window natural ventilation availability 'invalid' during a power outage is invalid."], 'error-heating-perf-data-not-all-specified.xml' => ['Did not specify all required heating detailed performance data arguments.'], 'error-heating-perf-data-not-all-same-size.xml' => ['One or more detailed heating performance data arguments does not have enough comma-separated elements specified.'], 'error-cooling-perf-data-not-all-specified.xml' => ['Did not specify all required cooling detailed performance data arguments.'], @@ -720,9 +725,9 @@ def _set_measure_argument_values(hpxml_file, args) elsif ['base-sfd-header.xml'].include? hpxml_file args['software_info_program_used'] = 'Program' args['software_info_program_version'] = '1' - args['schedules_vacancy_period'] = 'Jan 2 - Jan 5' - args['schedules_power_outage_period'] = 'Feb 10 - Feb 12' - args['schedules_power_outage_window_natvent_availability'] = HPXML::ScheduleAvailable + args['schedules_vacancy_periods'] = 'Jan 2 - Jan 5' + args['schedules_power_outage_periods'] = 'Feb 10 - Feb 12' + args['schedules_power_outage_periods_window_natvent_availability'] = HPXML::ScheduleAvailable args['simulation_control_run_period'] = 'Jan 1 - Dec 31' args['simulation_control_run_period_calendar_year'] = 2007 args['simulation_control_temperature_capacitance_multiplier'] = 1.0 @@ -949,6 +954,9 @@ def _set_measure_argument_values(hpxml_file, args) args['hvac_perf_data_cooling_max_speed_capacities'] = '1.0, 1.11' args['hvac_perf_data_cooling_min_speed_cops'] = '4.47, 6.34' args['hvac_perf_data_cooling_max_speed_cops'] = '2.71, 3.53' + elsif ['extra-power-outage-periods.xml'].include? hpxml_file + args['schedules_power_outage_periods'] = 'Jan 1 - Jan 5, Jan 7 - Jan 9' + args['schedules_power_outage_periods_window_natvent_availability'] = "#{HPXML::ScheduleRegular}, #{HPXML::ScheduleAvailable}" elsif ['extra-sfa-atticroof-flat.xml'].include? hpxml_file args['geometry_attic_type'] = HPXML::AtticTypeFlatRoof args['ducts_supply_leakage_to_outside_value'] = 0.0 @@ -1196,6 +1204,11 @@ def _set_measure_argument_values(hpxml_file, args) args.delete('rim_joist_assembly_r') elsif ['error-rim-joist-assembly-r-but-no-height.xml'].include? hpxml_file args.delete('geometry_rim_joist_height') + elsif ['error-power-outage-args-not-all-same-size.xml'].include? hpxml_file + args['schedules_power_outage_periods'] = 'Jan 1 - Jan 5, Jan 7 - Jan 9' + args['schedules_power_outage_periods_window_natvent_availability'] = HPXML::ScheduleRegular + elsif ['error-power-outage-window-natvent-invalid.xml'].include? hpxml_file + args['schedules_power_outage_periods_window_natvent_availability'] = 'invalid' elsif ['error-heating-perf-data-not-all-specified.xml'].include? hpxml_file args['hvac_perf_data_heating_outdoor_temperatures'] = '47.0' elsif ['error-heating-perf-data-not-all-same-size.xml'].include? hpxml_file diff --git a/hpxml-measures/BuildResidentialScheduleFile/measure.xml b/hpxml-measures/BuildResidentialScheduleFile/measure.xml index 240ea53b7..59955630b 100644 --- a/hpxml-measures/BuildResidentialScheduleFile/measure.xml +++ b/hpxml-measures/BuildResidentialScheduleFile/measure.xml @@ -3,8 +3,8 @@ 3.1 build_residential_schedule_file f770b2db-1a9f-4e99-99a7-7f3161a594b1 - 2302dda7-e4bb-4acd-9d56-7d33c175f30f - 2024-02-07T22:56:16Z + 7b1409ae-fd42-438f-b83a-f7f398becd3b + 2024-02-23T00:22:14Z 03F02484 BuildResidentialScheduleFile Schedule File Builder @@ -204,7 +204,7 @@ schedules.rb rb resource - B2F4A689 + 4F823EDF schedules_config.md @@ -912,7 +912,7 @@ test_build_residential_schedule_file.rb rb test - 2F6E6374 + B0C9AC80 diff --git a/hpxml-measures/BuildResidentialScheduleFile/resources/schedules.rb b/hpxml-measures/BuildResidentialScheduleFile/resources/schedules.rb index 8db1d23fb..68fb3bfb9 100644 --- a/hpxml-measures/BuildResidentialScheduleFile/resources/schedules.rb +++ b/hpxml-measures/BuildResidentialScheduleFile/resources/schedules.rb @@ -34,19 +34,7 @@ def initialize(runner:, end def self.export_columns - return [SchedulesFile::ColumnOccupants, - SchedulesFile::ColumnLightingInterior, - SchedulesFile::ColumnLightingGarage, - SchedulesFile::ColumnCookingRange, - SchedulesFile::ColumnDishwasher, - SchedulesFile::ColumnClothesWasher, - SchedulesFile::ColumnClothesDryer, - SchedulesFile::ColumnCeilingFan, - SchedulesFile::ColumnPlugLoadsOther, - SchedulesFile::ColumnPlugLoadsTV, - SchedulesFile::ColumnHotWaterDishwasher, - SchedulesFile::ColumnHotWaterClothesWasher, - SchedulesFile::ColumnHotWaterFixtures] + return SchedulesFile::Columns.values.select { |c| c.can_be_stochastic }.map { |c| c.name } end def schedules @@ -61,10 +49,10 @@ def create(args:) end if @column_names.nil? - @column_names = SchedulesFile.ColumnNames + @column_names = SchedulesFile::Columns.values.map { |c| c.name } end - invalid_columns = (@column_names - SchedulesFile.ColumnNames) + invalid_columns = (@column_names - SchedulesFile::Columns.values.map { |c| c.name }) invalid_columns.each do |invalid_column| @runner.registerError("Invalid column name specified: '#{invalid_column}'.") end @@ -185,16 +173,16 @@ def create_stochastic_schedules(args:) away_schedule << sum_across_occupants(all_simulated_values, 5, index_15).to_f / args[:geometry_num_occupants] idle_schedule << sum_across_occupants(all_simulated_values, 6, index_15).to_f / args[:geometry_num_occupants] active_occupancy_percentage = 1 - (away_schedule[-1] + sleep_schedule[-1]) - @schedules[SchedulesFile::ColumnPlugLoadsOther][day * @steps_in_day + step] = get_value_from_daily_sch(plugload_weekday_sch, plugload_weekend_sch, plugload_monthly_multiplier, month, is_weekday, minute, active_occupancy_percentage) - @schedules[SchedulesFile::ColumnLightingInterior][day * @steps_in_day + step] = scale_lighting_by_occupancy(interior_lighting_schedule, minute, active_occupancy_percentage) - @schedules[SchedulesFile::ColumnCeilingFan][day * @steps_in_day + step] = get_value_from_daily_sch(ceiling_fan_weekday_sch, ceiling_fan_weekend_sch, ceiling_fan_monthly_multiplier, month, is_weekday, minute, active_occupancy_percentage) + @schedules[SchedulesFile::Columns[:PlugLoadsOther].name][day * @steps_in_day + step] = get_value_from_daily_sch(plugload_weekday_sch, plugload_weekend_sch, plugload_monthly_multiplier, month, is_weekday, minute, active_occupancy_percentage) + @schedules[SchedulesFile::Columns[:LightingInterior].name][day * @steps_in_day + step] = scale_lighting_by_occupancy(interior_lighting_schedule, minute, active_occupancy_percentage) + @schedules[SchedulesFile::Columns[:CeilingFan].name][day * @steps_in_day + step] = get_value_from_daily_sch(ceiling_fan_weekday_sch, ceiling_fan_weekend_sch, ceiling_fan_monthly_multiplier, month, is_weekday, minute, active_occupancy_percentage) end end - @schedules[SchedulesFile::ColumnPlugLoadsOther] = normalize(@schedules[SchedulesFile::ColumnPlugLoadsOther]) - @schedules[SchedulesFile::ColumnPlugLoadsTV] = @schedules[SchedulesFile::ColumnPlugLoadsOther] - @schedules[SchedulesFile::ColumnLightingInterior] = normalize(@schedules[SchedulesFile::ColumnLightingInterior]) - @schedules[SchedulesFile::ColumnLightingGarage] = @schedules[SchedulesFile::ColumnLightingInterior] - @schedules[SchedulesFile::ColumnCeilingFan] = normalize(@schedules[SchedulesFile::ColumnCeilingFan]) + @schedules[SchedulesFile::Columns[:PlugLoadsOther].name] = normalize(@schedules[SchedulesFile::Columns[:PlugLoadsOther].name]) + @schedules[SchedulesFile::Columns[:PlugLoadsTV].name] = @schedules[SchedulesFile::Columns[:PlugLoadsOther].name] + @schedules[SchedulesFile::Columns[:LightingInterior].name] = normalize(@schedules[SchedulesFile::Columns[:LightingInterior].name]) + @schedules[SchedulesFile::Columns[:LightingGarage].name] = @schedules[SchedulesFile::Columns[:LightingInterior].name] + @schedules[SchedulesFile::Columns[:CeilingFan].name] = normalize(@schedules[SchedulesFile::Columns[:CeilingFan].name]) # Generate the Sink Schedule # 1. Find indexes (minutes) when at least one occupant can have sink event (they aren't sleeping or absent) @@ -542,52 +530,52 @@ def create_stochastic_schedules(args:) dw_activity_sch = apply_monthly_offsets(array: dw_activity_sch, weekday_monthly_shift_dict: weekday_monthly_shift_dict, weekend_monthly_shift_dict: weekend_monthly_shift_dict) dw_activity_sch = aggregate_array(dw_activity_sch, @minutes_per_step) dw_peak_flow = dw_activity_sch.max - @schedules[SchedulesFile::ColumnHotWaterDishwasher] = dw_activity_sch.map { |flow| flow / dw_peak_flow } + @schedules[SchedulesFile::Columns[:HotWaterDishwasher].name] = dw_activity_sch.map { |flow| flow / dw_peak_flow } random_offset = (prng.rand * 2 * offset_range).to_i - offset_range cw_activity_sch = cw_activity_sch.rotate(random_offset) cw_activity_sch = apply_monthly_offsets(array: cw_activity_sch, weekday_monthly_shift_dict: weekday_monthly_shift_dict, weekend_monthly_shift_dict: weekend_monthly_shift_dict) cw_activity_sch = aggregate_array(cw_activity_sch, @minutes_per_step) cw_peak_flow = cw_activity_sch.max - @schedules[SchedulesFile::ColumnHotWaterClothesWasher] = cw_activity_sch.map { |flow| flow / cw_peak_flow } + @schedules[SchedulesFile::Columns[:HotWaterClothesWasher].name] = cw_activity_sch.map { |flow| flow / cw_peak_flow } random_offset = (prng.rand * 2 * offset_range).to_i - offset_range cooking_power_sch = cooking_power_sch.rotate(random_offset) cooking_power_sch = apply_monthly_offsets(array: cooking_power_sch, weekday_monthly_shift_dict: weekday_monthly_shift_dict, weekend_monthly_shift_dict: weekend_monthly_shift_dict) cooking_power_sch = aggregate_array(cooking_power_sch, @minutes_per_step) cooking_peak_power = cooking_power_sch.max - @schedules[SchedulesFile::ColumnCookingRange] = cooking_power_sch.map { |power| power / cooking_peak_power } + @schedules[SchedulesFile::Columns[:CookingRange].name] = cooking_power_sch.map { |power| power / cooking_peak_power } random_offset = (prng.rand * 2 * offset_range).to_i - offset_range cw_power_sch = cw_power_sch.rotate(random_offset) cw_power_sch = apply_monthly_offsets(array: cw_power_sch, weekday_monthly_shift_dict: weekday_monthly_shift_dict, weekend_monthly_shift_dict: weekend_monthly_shift_dict) cw_power_sch = aggregate_array(cw_power_sch, @minutes_per_step) cw_peak_power = cw_power_sch.max - @schedules[SchedulesFile::ColumnClothesWasher] = cw_power_sch.map { |power| power / cw_peak_power } + @schedules[SchedulesFile::Columns[:ClothesWasher].name] = cw_power_sch.map { |power| power / cw_peak_power } random_offset = (prng.rand * 2 * offset_range).to_i - offset_range cd_power_sch = cd_power_sch.rotate(random_offset) cd_power_sch = apply_monthly_offsets(array: cd_power_sch, weekday_monthly_shift_dict: weekday_monthly_shift_dict, weekend_monthly_shift_dict: weekend_monthly_shift_dict) cd_power_sch = aggregate_array(cd_power_sch, @minutes_per_step) cd_peak_power = cd_power_sch.max - @schedules[SchedulesFile::ColumnClothesDryer] = cd_power_sch.map { |power| power / cd_peak_power } + @schedules[SchedulesFile::Columns[:ClothesDryer].name] = cd_power_sch.map { |power| power / cd_peak_power } random_offset = (prng.rand * 2 * offset_range).to_i - offset_range dw_power_sch = dw_power_sch.rotate(random_offset) dw_power_sch = apply_monthly_offsets(array: dw_power_sch, weekday_monthly_shift_dict: weekday_monthly_shift_dict, weekend_monthly_shift_dict: weekend_monthly_shift_dict) dw_power_sch = aggregate_array(dw_power_sch, @minutes_per_step) dw_peak_power = dw_power_sch.max - @schedules[SchedulesFile::ColumnDishwasher] = dw_power_sch.map { |power| power / dw_peak_power } + @schedules[SchedulesFile::Columns[:Dishwasher].name] = dw_power_sch.map { |power| power / dw_peak_power } - @schedules[SchedulesFile::ColumnOccupants] = away_schedule.map { |i| 1.0 - i } + @schedules[SchedulesFile::Columns[:Occupants].name] = away_schedule.map { |i| 1.0 - i } if @debug - @schedules[SchedulesFile::ColumnSleeping] = sleep_schedule + @schedules[SchedulesFile::Columns[:Sleeping].name] = sleep_schedule end - @schedules[SchedulesFile::ColumnHotWaterFixtures] = [showers, sinks, baths].transpose.map { |flow| flow.reduce(:+) } - fixtures_peak_flow = @schedules[SchedulesFile::ColumnHotWaterFixtures].max - @schedules[SchedulesFile::ColumnHotWaterFixtures] = @schedules[SchedulesFile::ColumnHotWaterFixtures].map { |flow| flow / fixtures_peak_flow } + @schedules[SchedulesFile::Columns[:HotWaterFixtures].name] = [showers, sinks, baths].transpose.map { |flow| flow.reduce(:+) } + fixtures_peak_flow = @schedules[SchedulesFile::Columns[:HotWaterFixtures].name].max + @schedules[SchedulesFile::Columns[:HotWaterFixtures].name] = @schedules[SchedulesFile::Columns[:HotWaterFixtures].name].map { |flow| flow / fixtures_peak_flow } return true end @@ -754,7 +742,7 @@ def sample_activity_duration(prng, activity_duration_prob_map, occ_type_id, acti end def export(schedules_path:) - (SchedulesFile.ColumnNames - @column_names).each do |col_to_remove| + (SchedulesFile::Columns.values.map { |c| c.name } - @column_names).each do |col_to_remove| @schedules.delete(col_to_remove) end CSV.open(schedules_path, 'w') do |csv| diff --git a/hpxml-measures/BuildResidentialScheduleFile/tests/test_build_residential_schedule_file.rb b/hpxml-measures/BuildResidentialScheduleFile/tests/test_build_residential_schedule_file.rb index 051b7c1d1..c23b0a354 100644 --- a/hpxml-measures/BuildResidentialScheduleFile/tests/test_build_residential_schedule_file.rb +++ b/hpxml-measures/BuildResidentialScheduleFile/tests/test_build_residential_schedule_file.rb @@ -49,33 +49,33 @@ def test_stochastic year: @year, output_path: @tmp_schedule_file_path) - assert_in_epsilon(6689, sf.annual_equivalent_full_load_hrs(col_name: SchedulesFile::ColumnOccupants, schedules: sf.tmp_schedules), @tol) - assert_in_epsilon(2086, sf.annual_equivalent_full_load_hrs(col_name: SchedulesFile::ColumnLightingInterior, schedules: sf.tmp_schedules), @tol) - assert_in_epsilon(2086, sf.annual_equivalent_full_load_hrs(col_name: SchedulesFile::ColumnLightingGarage, schedules: sf.tmp_schedules), @tol) - assert_in_epsilon(534, sf.annual_equivalent_full_load_hrs(col_name: SchedulesFile::ColumnCookingRange, schedules: sf.tmp_schedules), @tol) - assert_in_epsilon(213, sf.annual_equivalent_full_load_hrs(col_name: SchedulesFile::ColumnDishwasher, schedules: sf.tmp_schedules), @tol) - assert_in_epsilon(134, sf.annual_equivalent_full_load_hrs(col_name: SchedulesFile::ColumnClothesWasher, schedules: sf.tmp_schedules), @tol) - assert_in_epsilon(151, sf.annual_equivalent_full_load_hrs(col_name: SchedulesFile::ColumnClothesDryer, schedules: sf.tmp_schedules), @tol) - assert_in_epsilon(3250, sf.annual_equivalent_full_load_hrs(col_name: SchedulesFile::ColumnCeilingFan, schedules: sf.tmp_schedules), @tol) - assert_in_epsilon(4840, sf.annual_equivalent_full_load_hrs(col_name: SchedulesFile::ColumnPlugLoadsOther, schedules: sf.tmp_schedules), @tol) - assert_in_epsilon(4840, sf.annual_equivalent_full_load_hrs(col_name: SchedulesFile::ColumnPlugLoadsTV, schedules: sf.tmp_schedules), @tol) - assert_in_epsilon(273, sf.annual_equivalent_full_load_hrs(col_name: SchedulesFile::ColumnHotWaterDishwasher, schedules: sf.tmp_schedules), @tol) - assert_in_epsilon(346, sf.annual_equivalent_full_load_hrs(col_name: SchedulesFile::ColumnHotWaterClothesWasher, schedules: sf.tmp_schedules), @tol) - assert_in_epsilon(887, sf.annual_equivalent_full_load_hrs(col_name: SchedulesFile::ColumnHotWaterFixtures, schedules: sf.tmp_schedules), @tol) - assert(!sf.schedules.keys.include?(SchedulesFile::ColumnSleeping)) + assert_in_epsilon(6689, sf.annual_equivalent_full_load_hrs(col_name: SchedulesFile::Columns[:Occupants].name, schedules: sf.tmp_schedules), @tol) + assert_in_epsilon(2086, sf.annual_equivalent_full_load_hrs(col_name: SchedulesFile::Columns[:LightingInterior].name, schedules: sf.tmp_schedules), @tol) + assert_in_epsilon(2086, sf.annual_equivalent_full_load_hrs(col_name: SchedulesFile::Columns[:LightingGarage].name, schedules: sf.tmp_schedules), @tol) + assert_in_epsilon(534, sf.annual_equivalent_full_load_hrs(col_name: SchedulesFile::Columns[:CookingRange].name, schedules: sf.tmp_schedules), @tol) + assert_in_epsilon(213, sf.annual_equivalent_full_load_hrs(col_name: SchedulesFile::Columns[:Dishwasher].name, schedules: sf.tmp_schedules), @tol) + assert_in_epsilon(134, sf.annual_equivalent_full_load_hrs(col_name: SchedulesFile::Columns[:ClothesWasher].name, schedules: sf.tmp_schedules), @tol) + assert_in_epsilon(151, sf.annual_equivalent_full_load_hrs(col_name: SchedulesFile::Columns[:ClothesDryer].name, schedules: sf.tmp_schedules), @tol) + assert_in_epsilon(3250, sf.annual_equivalent_full_load_hrs(col_name: SchedulesFile::Columns[:CeilingFan].name, schedules: sf.tmp_schedules), @tol) + assert_in_epsilon(4840, sf.annual_equivalent_full_load_hrs(col_name: SchedulesFile::Columns[:PlugLoadsOther].name, schedules: sf.tmp_schedules), @tol) + assert_in_epsilon(4840, sf.annual_equivalent_full_load_hrs(col_name: SchedulesFile::Columns[:PlugLoadsTV].name, schedules: sf.tmp_schedules), @tol) + assert_in_epsilon(273, sf.annual_equivalent_full_load_hrs(col_name: SchedulesFile::Columns[:HotWaterDishwasher].name, schedules: sf.tmp_schedules), @tol) + assert_in_epsilon(346, sf.annual_equivalent_full_load_hrs(col_name: SchedulesFile::Columns[:HotWaterClothesWasher].name, schedules: sf.tmp_schedules), @tol) + assert_in_epsilon(887, sf.annual_equivalent_full_load_hrs(col_name: SchedulesFile::Columns[:HotWaterFixtures].name, schedules: sf.tmp_schedules), @tol) + assert(!sf.schedules.keys.include?(SchedulesFile::Columns[:Sleeping].name)) end def test_stochastic_subset_of_columns hpxml = _create_hpxml('base.xml') XMLHelper.write_file(hpxml.to_doc, @tmp_hpxml_path) - columns = [SchedulesFile::ColumnCookingRange, - SchedulesFile::ColumnDishwasher, - SchedulesFile::ColumnHotWaterDishwasher, - SchedulesFile::ColumnClothesWasher, - SchedulesFile::ColumnHotWaterClothesWasher, - SchedulesFile::ColumnClothesDryer, - SchedulesFile::ColumnHotWaterFixtures] + columns = [SchedulesFile::Columns[:CookingRange].name, + SchedulesFile::Columns[:Dishwasher].name, + SchedulesFile::Columns[:HotWaterDishwasher].name, + SchedulesFile::Columns[:ClothesWasher].name, + SchedulesFile::Columns[:HotWaterClothesWasher].name, + SchedulesFile::Columns[:ClothesDryer].name, + SchedulesFile::Columns[:HotWaterFixtures].name] @args_hash['schedules_type'] = 'stochastic' @args_hash['output_csv_path'] = File.absolute_path(File.join(@tmp_output_path, 'occupancy-stochastic.csv')) @@ -92,7 +92,7 @@ def test_stochastic_subset_of_columns columns.each do |column| assert(sf.schedules.keys.include?(column)) end - (SchedulesFile.ColumnNames - columns).each do |column| + (SchedulesFile::Columns.values.map { |c| c.name } - columns).each do |column| assert(!sf.schedules.keys.include?(column)) end end @@ -103,7 +103,7 @@ def test_stochastic_subset_of_columns_invalid_name @args_hash['schedules_type'] = 'stochastic' @args_hash['output_csv_path'] = File.absolute_path(File.join(@tmp_output_path, 'occupancy-stochastic.csv')) - @args_hash['schedules_column_names'] = "foobar, #{SchedulesFile::ColumnCookingRange}, foobar2" + @args_hash['schedules_column_names'] = "foobar, #{SchedulesFile::Columns[:CookingRange].name}, foobar2" _hpxml, result = _test_measure(expect_fail: true) error_msgs = result.errors.map { |x| x.logMessage } @@ -131,20 +131,20 @@ def test_stochastic_debug year: @year, output_path: @tmp_schedule_file_path) - assert_in_epsilon(6689, sf.annual_equivalent_full_load_hrs(col_name: SchedulesFile::ColumnOccupants, schedules: sf.tmp_schedules), @tol) - assert_in_epsilon(2086, sf.annual_equivalent_full_load_hrs(col_name: SchedulesFile::ColumnLightingInterior, schedules: sf.tmp_schedules), @tol) - assert_in_epsilon(2086, sf.annual_equivalent_full_load_hrs(col_name: SchedulesFile::ColumnLightingGarage, schedules: sf.tmp_schedules), @tol) - assert_in_epsilon(534, sf.annual_equivalent_full_load_hrs(col_name: SchedulesFile::ColumnCookingRange, schedules: sf.tmp_schedules), @tol) - assert_in_epsilon(213, sf.annual_equivalent_full_load_hrs(col_name: SchedulesFile::ColumnDishwasher, schedules: sf.tmp_schedules), @tol) - assert_in_epsilon(134, sf.annual_equivalent_full_load_hrs(col_name: SchedulesFile::ColumnClothesWasher, schedules: sf.tmp_schedules), @tol) - assert_in_epsilon(151, sf.annual_equivalent_full_load_hrs(col_name: SchedulesFile::ColumnClothesDryer, schedules: sf.tmp_schedules), @tol) - assert_in_epsilon(3250, sf.annual_equivalent_full_load_hrs(col_name: SchedulesFile::ColumnCeilingFan, schedules: sf.tmp_schedules), @tol) - assert_in_epsilon(4840, sf.annual_equivalent_full_load_hrs(col_name: SchedulesFile::ColumnPlugLoadsOther, schedules: sf.tmp_schedules), @tol) - assert_in_epsilon(4840, sf.annual_equivalent_full_load_hrs(col_name: SchedulesFile::ColumnPlugLoadsTV, schedules: sf.tmp_schedules), @tol) - assert_in_epsilon(273, sf.annual_equivalent_full_load_hrs(col_name: SchedulesFile::ColumnHotWaterDishwasher, schedules: sf.tmp_schedules), @tol) - assert_in_epsilon(346, sf.annual_equivalent_full_load_hrs(col_name: SchedulesFile::ColumnHotWaterClothesWasher, schedules: sf.tmp_schedules), @tol) - assert_in_epsilon(887, sf.annual_equivalent_full_load_hrs(col_name: SchedulesFile::ColumnHotWaterFixtures, schedules: sf.tmp_schedules), @tol) - assert_in_epsilon(3067, sf.annual_equivalent_full_load_hrs(col_name: SchedulesFile::ColumnSleeping, schedules: sf.tmp_schedules), @tol) + assert_in_epsilon(6689, sf.annual_equivalent_full_load_hrs(col_name: SchedulesFile::Columns[:Occupants].name, schedules: sf.tmp_schedules), @tol) + assert_in_epsilon(2086, sf.annual_equivalent_full_load_hrs(col_name: SchedulesFile::Columns[:LightingInterior].name, schedules: sf.tmp_schedules), @tol) + assert_in_epsilon(2086, sf.annual_equivalent_full_load_hrs(col_name: SchedulesFile::Columns[:LightingGarage].name, schedules: sf.tmp_schedules), @tol) + assert_in_epsilon(534, sf.annual_equivalent_full_load_hrs(col_name: SchedulesFile::Columns[:CookingRange].name, schedules: sf.tmp_schedules), @tol) + assert_in_epsilon(213, sf.annual_equivalent_full_load_hrs(col_name: SchedulesFile::Columns[:Dishwasher].name, schedules: sf.tmp_schedules), @tol) + assert_in_epsilon(134, sf.annual_equivalent_full_load_hrs(col_name: SchedulesFile::Columns[:ClothesWasher].name, schedules: sf.tmp_schedules), @tol) + assert_in_epsilon(151, sf.annual_equivalent_full_load_hrs(col_name: SchedulesFile::Columns[:ClothesDryer].name, schedules: sf.tmp_schedules), @tol) + assert_in_epsilon(3250, sf.annual_equivalent_full_load_hrs(col_name: SchedulesFile::Columns[:CeilingFan].name, schedules: sf.tmp_schedules), @tol) + assert_in_epsilon(4840, sf.annual_equivalent_full_load_hrs(col_name: SchedulesFile::Columns[:PlugLoadsOther].name, schedules: sf.tmp_schedules), @tol) + assert_in_epsilon(4840, sf.annual_equivalent_full_load_hrs(col_name: SchedulesFile::Columns[:PlugLoadsTV].name, schedules: sf.tmp_schedules), @tol) + assert_in_epsilon(273, sf.annual_equivalent_full_load_hrs(col_name: SchedulesFile::Columns[:HotWaterDishwasher].name, schedules: sf.tmp_schedules), @tol) + assert_in_epsilon(346, sf.annual_equivalent_full_load_hrs(col_name: SchedulesFile::Columns[:HotWaterClothesWasher].name, schedules: sf.tmp_schedules), @tol) + assert_in_epsilon(887, sf.annual_equivalent_full_load_hrs(col_name: SchedulesFile::Columns[:HotWaterFixtures].name, schedules: sf.tmp_schedules), @tol) + assert_in_epsilon(3067, sf.annual_equivalent_full_load_hrs(col_name: SchedulesFile::Columns[:Sleeping].name, schedules: sf.tmp_schedules), @tol) end def test_random_seed @@ -167,20 +167,20 @@ def test_random_seed year: @year, output_path: @tmp_schedule_file_path) - assert_in_epsilon(6689, sf.annual_equivalent_full_load_hrs(col_name: SchedulesFile::ColumnOccupants, schedules: sf.tmp_schedules), @tol) - assert_in_epsilon(2070, sf.annual_equivalent_full_load_hrs(col_name: SchedulesFile::ColumnLightingInterior, schedules: sf.tmp_schedules), @tol) - assert_in_epsilon(2070, sf.annual_equivalent_full_load_hrs(col_name: SchedulesFile::ColumnLightingGarage, schedules: sf.tmp_schedules), @tol) - assert_in_epsilon(534, sf.annual_equivalent_full_load_hrs(col_name: SchedulesFile::ColumnCookingRange, schedules: sf.tmp_schedules), @tol) - assert_in_epsilon(233, sf.annual_equivalent_full_load_hrs(col_name: SchedulesFile::ColumnDishwasher, schedules: sf.tmp_schedules), @tol) - assert_in_epsilon(134, sf.annual_equivalent_full_load_hrs(col_name: SchedulesFile::ColumnClothesWasher, schedules: sf.tmp_schedules), @tol) - assert_in_epsilon(151, sf.annual_equivalent_full_load_hrs(col_name: SchedulesFile::ColumnClothesDryer, schedules: sf.tmp_schedules), @tol) - assert_in_epsilon(3250, sf.annual_equivalent_full_load_hrs(col_name: SchedulesFile::ColumnCeilingFan, schedules: sf.tmp_schedules), @tol) - assert_in_epsilon(4840, sf.annual_equivalent_full_load_hrs(col_name: SchedulesFile::ColumnPlugLoadsOther, schedules: sf.tmp_schedules), @tol) - assert_in_epsilon(4840, sf.annual_equivalent_full_load_hrs(col_name: SchedulesFile::ColumnPlugLoadsTV, schedules: sf.tmp_schedules), @tol) - assert_in_epsilon(288, sf.annual_equivalent_full_load_hrs(col_name: SchedulesFile::ColumnHotWaterDishwasher, schedules: sf.tmp_schedules), @tol) - assert_in_epsilon(320, sf.annual_equivalent_full_load_hrs(col_name: SchedulesFile::ColumnHotWaterClothesWasher, schedules: sf.tmp_schedules), @tol) - assert_in_epsilon(889, sf.annual_equivalent_full_load_hrs(col_name: SchedulesFile::ColumnHotWaterFixtures, schedules: sf.tmp_schedules), @tol) - assert(!sf.schedules.keys.include?(SchedulesFile::ColumnSleeping)) + assert_in_epsilon(6689, sf.annual_equivalent_full_load_hrs(col_name: SchedulesFile::Columns[:Occupants].name, schedules: sf.tmp_schedules), @tol) + assert_in_epsilon(2070, sf.annual_equivalent_full_load_hrs(col_name: SchedulesFile::Columns[:LightingInterior].name, schedules: sf.tmp_schedules), @tol) + assert_in_epsilon(2070, sf.annual_equivalent_full_load_hrs(col_name: SchedulesFile::Columns[:LightingGarage].name, schedules: sf.tmp_schedules), @tol) + assert_in_epsilon(534, sf.annual_equivalent_full_load_hrs(col_name: SchedulesFile::Columns[:CookingRange].name, schedules: sf.tmp_schedules), @tol) + assert_in_epsilon(233, sf.annual_equivalent_full_load_hrs(col_name: SchedulesFile::Columns[:Dishwasher].name, schedules: sf.tmp_schedules), @tol) + assert_in_epsilon(134, sf.annual_equivalent_full_load_hrs(col_name: SchedulesFile::Columns[:ClothesWasher].name, schedules: sf.tmp_schedules), @tol) + assert_in_epsilon(151, sf.annual_equivalent_full_load_hrs(col_name: SchedulesFile::Columns[:ClothesDryer].name, schedules: sf.tmp_schedules), @tol) + assert_in_epsilon(3250, sf.annual_equivalent_full_load_hrs(col_name: SchedulesFile::Columns[:CeilingFan].name, schedules: sf.tmp_schedules), @tol) + assert_in_epsilon(4840, sf.annual_equivalent_full_load_hrs(col_name: SchedulesFile::Columns[:PlugLoadsOther].name, schedules: sf.tmp_schedules), @tol) + assert_in_epsilon(4840, sf.annual_equivalent_full_load_hrs(col_name: SchedulesFile::Columns[:PlugLoadsTV].name, schedules: sf.tmp_schedules), @tol) + assert_in_epsilon(288, sf.annual_equivalent_full_load_hrs(col_name: SchedulesFile::Columns[:HotWaterDishwasher].name, schedules: sf.tmp_schedules), @tol) + assert_in_epsilon(320, sf.annual_equivalent_full_load_hrs(col_name: SchedulesFile::Columns[:HotWaterClothesWasher].name, schedules: sf.tmp_schedules), @tol) + assert_in_epsilon(889, sf.annual_equivalent_full_load_hrs(col_name: SchedulesFile::Columns[:HotWaterFixtures].name, schedules: sf.tmp_schedules), @tol) + assert(!sf.schedules.keys.include?(SchedulesFile::Columns[:Sleeping].name)) @args_hash['schedules_random_seed'] = 2 hpxml, result = _test_measure() @@ -197,20 +197,20 @@ def test_random_seed year: @year, output_path: @tmp_schedule_file_path) - assert_in_epsilon(6072, sf.annual_equivalent_full_load_hrs(col_name: SchedulesFile::ColumnOccupants, schedules: sf.tmp_schedules), @tol) - assert_in_epsilon(1753, sf.annual_equivalent_full_load_hrs(col_name: SchedulesFile::ColumnLightingInterior, schedules: sf.tmp_schedules), @tol) - assert_in_epsilon(1753, sf.annual_equivalent_full_load_hrs(col_name: SchedulesFile::ColumnLightingGarage, schedules: sf.tmp_schedules), @tol) - assert_in_epsilon(356, sf.annual_equivalent_full_load_hrs(col_name: SchedulesFile::ColumnCookingRange, schedules: sf.tmp_schedules), @tol) - assert_in_epsilon(174, sf.annual_equivalent_full_load_hrs(col_name: SchedulesFile::ColumnDishwasher, schedules: sf.tmp_schedules), @tol) - assert_in_epsilon(101, sf.annual_equivalent_full_load_hrs(col_name: SchedulesFile::ColumnClothesWasher, schedules: sf.tmp_schedules), @tol) - assert_in_epsilon(166, sf.annual_equivalent_full_load_hrs(col_name: SchedulesFile::ColumnClothesDryer, schedules: sf.tmp_schedules), @tol) - assert_in_epsilon(3029, sf.annual_equivalent_full_load_hrs(col_name: SchedulesFile::ColumnCeilingFan, schedules: sf.tmp_schedules), @tol) - assert_in_epsilon(4700, sf.annual_equivalent_full_load_hrs(col_name: SchedulesFile::ColumnPlugLoadsOther, schedules: sf.tmp_schedules), @tol) - assert_in_epsilon(4700, sf.annual_equivalent_full_load_hrs(col_name: SchedulesFile::ColumnPlugLoadsTV, schedules: sf.tmp_schedules), @tol) - assert_in_epsilon(233, sf.annual_equivalent_full_load_hrs(col_name: SchedulesFile::ColumnHotWaterDishwasher, schedules: sf.tmp_schedules), @tol) - assert_in_epsilon(244, sf.annual_equivalent_full_load_hrs(col_name: SchedulesFile::ColumnHotWaterClothesWasher, schedules: sf.tmp_schedules), @tol) - assert_in_epsilon(1077, sf.annual_equivalent_full_load_hrs(col_name: SchedulesFile::ColumnHotWaterFixtures, schedules: sf.tmp_schedules), @tol) - assert(!sf.schedules.keys.include?(SchedulesFile::ColumnSleeping)) + assert_in_epsilon(6072, sf.annual_equivalent_full_load_hrs(col_name: SchedulesFile::Columns[:Occupants].name, schedules: sf.tmp_schedules), @tol) + assert_in_epsilon(1753, sf.annual_equivalent_full_load_hrs(col_name: SchedulesFile::Columns[:LightingInterior].name, schedules: sf.tmp_schedules), @tol) + assert_in_epsilon(1753, sf.annual_equivalent_full_load_hrs(col_name: SchedulesFile::Columns[:LightingGarage].name, schedules: sf.tmp_schedules), @tol) + assert_in_epsilon(356, sf.annual_equivalent_full_load_hrs(col_name: SchedulesFile::Columns[:CookingRange].name, schedules: sf.tmp_schedules), @tol) + assert_in_epsilon(174, sf.annual_equivalent_full_load_hrs(col_name: SchedulesFile::Columns[:Dishwasher].name, schedules: sf.tmp_schedules), @tol) + assert_in_epsilon(101, sf.annual_equivalent_full_load_hrs(col_name: SchedulesFile::Columns[:ClothesWasher].name, schedules: sf.tmp_schedules), @tol) + assert_in_epsilon(166, sf.annual_equivalent_full_load_hrs(col_name: SchedulesFile::Columns[:ClothesDryer].name, schedules: sf.tmp_schedules), @tol) + assert_in_epsilon(3029, sf.annual_equivalent_full_load_hrs(col_name: SchedulesFile::Columns[:CeilingFan].name, schedules: sf.tmp_schedules), @tol) + assert_in_epsilon(4700, sf.annual_equivalent_full_load_hrs(col_name: SchedulesFile::Columns[:PlugLoadsOther].name, schedules: sf.tmp_schedules), @tol) + assert_in_epsilon(4700, sf.annual_equivalent_full_load_hrs(col_name: SchedulesFile::Columns[:PlugLoadsTV].name, schedules: sf.tmp_schedules), @tol) + assert_in_epsilon(233, sf.annual_equivalent_full_load_hrs(col_name: SchedulesFile::Columns[:HotWaterDishwasher].name, schedules: sf.tmp_schedules), @tol) + assert_in_epsilon(244, sf.annual_equivalent_full_load_hrs(col_name: SchedulesFile::Columns[:HotWaterClothesWasher].name, schedules: sf.tmp_schedules), @tol) + assert_in_epsilon(1077, sf.annual_equivalent_full_load_hrs(col_name: SchedulesFile::Columns[:HotWaterFixtures].name, schedules: sf.tmp_schedules), @tol) + assert(!sf.schedules.keys.include?(SchedulesFile::Columns[:Sleeping].name)) end def test_10_min_timestep @@ -232,20 +232,20 @@ def test_10_min_timestep year: @year, output_path: @tmp_schedule_file_path) - assert_in_epsilon(6707, sf.annual_equivalent_full_load_hrs(col_name: SchedulesFile::ColumnOccupants, schedules: sf.tmp_schedules), @tol) - assert_in_epsilon(2077, sf.annual_equivalent_full_load_hrs(col_name: SchedulesFile::ColumnLightingInterior, schedules: sf.tmp_schedules), @tol) - assert_in_epsilon(2077, sf.annual_equivalent_full_load_hrs(col_name: SchedulesFile::ColumnLightingGarage, schedules: sf.tmp_schedules), @tol) - assert_in_epsilon(534, sf.annual_equivalent_full_load_hrs(col_name: SchedulesFile::ColumnCookingRange, schedules: sf.tmp_schedules), @tol) - assert_in_epsilon(213, sf.annual_equivalent_full_load_hrs(col_name: SchedulesFile::ColumnDishwasher, schedules: sf.tmp_schedules), @tol) - assert_in_epsilon(105, sf.annual_equivalent_full_load_hrs(col_name: SchedulesFile::ColumnClothesWasher, schedules: sf.tmp_schedules), @tol) - assert_in_epsilon(151, sf.annual_equivalent_full_load_hrs(col_name: SchedulesFile::ColumnClothesDryer, schedules: sf.tmp_schedules), @tol) - assert_in_epsilon(3237, sf.annual_equivalent_full_load_hrs(col_name: SchedulesFile::ColumnCeilingFan, schedules: sf.tmp_schedules), @tol) - assert_in_epsilon(4845, sf.annual_equivalent_full_load_hrs(col_name: SchedulesFile::ColumnPlugLoadsOther, schedules: sf.tmp_schedules), @tol) - assert_in_epsilon(4845, sf.annual_equivalent_full_load_hrs(col_name: SchedulesFile::ColumnPlugLoadsTV, schedules: sf.tmp_schedules), @tol) - assert_in_epsilon(146, sf.annual_equivalent_full_load_hrs(col_name: SchedulesFile::ColumnHotWaterDishwasher, schedules: sf.tmp_schedules), @tol) - assert_in_epsilon(154, sf.annual_equivalent_full_load_hrs(col_name: SchedulesFile::ColumnHotWaterClothesWasher, schedules: sf.tmp_schedules), @tol) - assert_in_epsilon(397, sf.annual_equivalent_full_load_hrs(col_name: SchedulesFile::ColumnHotWaterFixtures, schedules: sf.tmp_schedules), @tol) - assert(!sf.schedules.keys.include?(SchedulesFile::ColumnSleeping)) + assert_in_epsilon(6707, sf.annual_equivalent_full_load_hrs(col_name: SchedulesFile::Columns[:Occupants].name, schedules: sf.tmp_schedules), @tol) + assert_in_epsilon(2077, sf.annual_equivalent_full_load_hrs(col_name: SchedulesFile::Columns[:LightingInterior].name, schedules: sf.tmp_schedules), @tol) + assert_in_epsilon(2077, sf.annual_equivalent_full_load_hrs(col_name: SchedulesFile::Columns[:LightingGarage].name, schedules: sf.tmp_schedules), @tol) + assert_in_epsilon(534, sf.annual_equivalent_full_load_hrs(col_name: SchedulesFile::Columns[:CookingRange].name, schedules: sf.tmp_schedules), @tol) + assert_in_epsilon(213, sf.annual_equivalent_full_load_hrs(col_name: SchedulesFile::Columns[:Dishwasher].name, schedules: sf.tmp_schedules), @tol) + assert_in_epsilon(105, sf.annual_equivalent_full_load_hrs(col_name: SchedulesFile::Columns[:ClothesWasher].name, schedules: sf.tmp_schedules), @tol) + assert_in_epsilon(151, sf.annual_equivalent_full_load_hrs(col_name: SchedulesFile::Columns[:ClothesDryer].name, schedules: sf.tmp_schedules), @tol) + assert_in_epsilon(3237, sf.annual_equivalent_full_load_hrs(col_name: SchedulesFile::Columns[:CeilingFan].name, schedules: sf.tmp_schedules), @tol) + assert_in_epsilon(4845, sf.annual_equivalent_full_load_hrs(col_name: SchedulesFile::Columns[:PlugLoadsOther].name, schedules: sf.tmp_schedules), @tol) + assert_in_epsilon(4845, sf.annual_equivalent_full_load_hrs(col_name: SchedulesFile::Columns[:PlugLoadsTV].name, schedules: sf.tmp_schedules), @tol) + assert_in_epsilon(146, sf.annual_equivalent_full_load_hrs(col_name: SchedulesFile::Columns[:HotWaterDishwasher].name, schedules: sf.tmp_schedules), @tol) + assert_in_epsilon(154, sf.annual_equivalent_full_load_hrs(col_name: SchedulesFile::Columns[:HotWaterClothesWasher].name, schedules: sf.tmp_schedules), @tol) + assert_in_epsilon(397, sf.annual_equivalent_full_load_hrs(col_name: SchedulesFile::Columns[:HotWaterFixtures].name, schedules: sf.tmp_schedules), @tol) + assert(!sf.schedules.keys.include?(SchedulesFile::Columns[:Sleeping].name)) end def test_non_integer_number_of_occupants @@ -306,54 +306,54 @@ def test_multiple_buildings if hpxml_bldg.building_id == 'MyBuilding' assert_equal(1, hpxml_bldg.header.schedules_filepaths.size) assert(hpxml_bldg.header.schedules_filepaths[0].include? 'occupancy-stochastic.csv') - assert_in_epsilon(6689, sf.annual_equivalent_full_load_hrs(col_name: SchedulesFile::ColumnOccupants, schedules: sf.tmp_schedules), @tol) - assert_in_epsilon(2086, sf.annual_equivalent_full_load_hrs(col_name: SchedulesFile::ColumnLightingInterior, schedules: sf.tmp_schedules), @tol) - assert_in_epsilon(2086, sf.annual_equivalent_full_load_hrs(col_name: SchedulesFile::ColumnLightingGarage, schedules: sf.tmp_schedules), @tol) - assert_in_epsilon(534, sf.annual_equivalent_full_load_hrs(col_name: SchedulesFile::ColumnCookingRange, schedules: sf.tmp_schedules), @tol) - assert_in_epsilon(213, sf.annual_equivalent_full_load_hrs(col_name: SchedulesFile::ColumnDishwasher, schedules: sf.tmp_schedules), @tol) - assert_in_epsilon(134, sf.annual_equivalent_full_load_hrs(col_name: SchedulesFile::ColumnClothesWasher, schedules: sf.tmp_schedules), @tol) - assert_in_epsilon(151, sf.annual_equivalent_full_load_hrs(col_name: SchedulesFile::ColumnClothesDryer, schedules: sf.tmp_schedules), @tol) - assert_in_epsilon(3250, sf.annual_equivalent_full_load_hrs(col_name: SchedulesFile::ColumnCeilingFan, schedules: sf.tmp_schedules), @tol) - assert_in_epsilon(4840, sf.annual_equivalent_full_load_hrs(col_name: SchedulesFile::ColumnPlugLoadsOther, schedules: sf.tmp_schedules), @tol) - assert_in_epsilon(4840, sf.annual_equivalent_full_load_hrs(col_name: SchedulesFile::ColumnPlugLoadsTV, schedules: sf.tmp_schedules), @tol) - assert_in_epsilon(273, sf.annual_equivalent_full_load_hrs(col_name: SchedulesFile::ColumnHotWaterDishwasher, schedules: sf.tmp_schedules), @tol) - assert_in_epsilon(346, sf.annual_equivalent_full_load_hrs(col_name: SchedulesFile::ColumnHotWaterClothesWasher, schedules: sf.tmp_schedules), @tol) - assert_in_epsilon(887, sf.annual_equivalent_full_load_hrs(col_name: SchedulesFile::ColumnHotWaterFixtures, schedules: sf.tmp_schedules), @tol) - assert(!sf.schedules.keys.include?(SchedulesFile::ColumnSleeping)) + assert_in_epsilon(6689, sf.annual_equivalent_full_load_hrs(col_name: SchedulesFile::Columns[:Occupants].name, schedules: sf.tmp_schedules), @tol) + assert_in_epsilon(2086, sf.annual_equivalent_full_load_hrs(col_name: SchedulesFile::Columns[:LightingInterior].name, schedules: sf.tmp_schedules), @tol) + assert_in_epsilon(2086, sf.annual_equivalent_full_load_hrs(col_name: SchedulesFile::Columns[:LightingGarage].name, schedules: sf.tmp_schedules), @tol) + assert_in_epsilon(534, sf.annual_equivalent_full_load_hrs(col_name: SchedulesFile::Columns[:CookingRange].name, schedules: sf.tmp_schedules), @tol) + assert_in_epsilon(213, sf.annual_equivalent_full_load_hrs(col_name: SchedulesFile::Columns[:Dishwasher].name, schedules: sf.tmp_schedules), @tol) + assert_in_epsilon(134, sf.annual_equivalent_full_load_hrs(col_name: SchedulesFile::Columns[:ClothesWasher].name, schedules: sf.tmp_schedules), @tol) + assert_in_epsilon(151, sf.annual_equivalent_full_load_hrs(col_name: SchedulesFile::Columns[:ClothesDryer].name, schedules: sf.tmp_schedules), @tol) + assert_in_epsilon(3250, sf.annual_equivalent_full_load_hrs(col_name: SchedulesFile::Columns[:CeilingFan].name, schedules: sf.tmp_schedules), @tol) + assert_in_epsilon(4840, sf.annual_equivalent_full_load_hrs(col_name: SchedulesFile::Columns[:PlugLoadsOther].name, schedules: sf.tmp_schedules), @tol) + assert_in_epsilon(4840, sf.annual_equivalent_full_load_hrs(col_name: SchedulesFile::Columns[:PlugLoadsTV].name, schedules: sf.tmp_schedules), @tol) + assert_in_epsilon(273, sf.annual_equivalent_full_load_hrs(col_name: SchedulesFile::Columns[:HotWaterDishwasher].name, schedules: sf.tmp_schedules), @tol) + assert_in_epsilon(346, sf.annual_equivalent_full_load_hrs(col_name: SchedulesFile::Columns[:HotWaterClothesWasher].name, schedules: sf.tmp_schedules), @tol) + assert_in_epsilon(887, sf.annual_equivalent_full_load_hrs(col_name: SchedulesFile::Columns[:HotWaterFixtures].name, schedules: sf.tmp_schedules), @tol) + assert(!sf.schedules.keys.include?(SchedulesFile::Columns[:Sleeping].name)) elsif hpxml_bldg.building_id == 'MyBuilding_2' assert_equal(1, hpxml_bldg.header.schedules_filepaths.size) assert(hpxml_bldg.header.schedules_filepaths[0].include? 'occupancy-stochastic_2.csv') - assert_in_epsilon(6072, sf.annual_equivalent_full_load_hrs(col_name: SchedulesFile::ColumnOccupants, schedules: sf.tmp_schedules), @tol) - assert_in_epsilon(1765, sf.annual_equivalent_full_load_hrs(col_name: SchedulesFile::ColumnLightingInterior, schedules: sf.tmp_schedules), @tol) - assert_in_epsilon(1765, sf.annual_equivalent_full_load_hrs(col_name: SchedulesFile::ColumnLightingGarage, schedules: sf.tmp_schedules), @tol) - assert_in_epsilon(356, sf.annual_equivalent_full_load_hrs(col_name: SchedulesFile::ColumnCookingRange, schedules: sf.tmp_schedules), @tol) - assert_in_epsilon(165, sf.annual_equivalent_full_load_hrs(col_name: SchedulesFile::ColumnDishwasher, schedules: sf.tmp_schedules), @tol) - assert_in_epsilon(101, sf.annual_equivalent_full_load_hrs(col_name: SchedulesFile::ColumnClothesWasher, schedules: sf.tmp_schedules), @tol) - assert_in_epsilon(166, sf.annual_equivalent_full_load_hrs(col_name: SchedulesFile::ColumnClothesDryer, schedules: sf.tmp_schedules), @tol) - assert_in_epsilon(3029, sf.annual_equivalent_full_load_hrs(col_name: SchedulesFile::ColumnCeilingFan, schedules: sf.tmp_schedules), @tol) - assert_in_epsilon(4700, sf.annual_equivalent_full_load_hrs(col_name: SchedulesFile::ColumnPlugLoadsOther, schedules: sf.tmp_schedules), @tol) - assert_in_epsilon(4700, sf.annual_equivalent_full_load_hrs(col_name: SchedulesFile::ColumnPlugLoadsTV, schedules: sf.tmp_schedules), @tol) - assert_in_epsilon(221, sf.annual_equivalent_full_load_hrs(col_name: SchedulesFile::ColumnHotWaterDishwasher, schedules: sf.tmp_schedules), @tol) - assert_in_epsilon(266, sf.annual_equivalent_full_load_hrs(col_name: SchedulesFile::ColumnHotWaterClothesWasher, schedules: sf.tmp_schedules), @tol) - assert_in_epsilon(894, sf.annual_equivalent_full_load_hrs(col_name: SchedulesFile::ColumnHotWaterFixtures, schedules: sf.tmp_schedules), @tol) - assert(!sf.schedules.keys.include?(SchedulesFile::ColumnSleeping)) + assert_in_epsilon(6072, sf.annual_equivalent_full_load_hrs(col_name: SchedulesFile::Columns[:Occupants].name, schedules: sf.tmp_schedules), @tol) + assert_in_epsilon(1765, sf.annual_equivalent_full_load_hrs(col_name: SchedulesFile::Columns[:LightingInterior].name, schedules: sf.tmp_schedules), @tol) + assert_in_epsilon(1765, sf.annual_equivalent_full_load_hrs(col_name: SchedulesFile::Columns[:LightingGarage].name, schedules: sf.tmp_schedules), @tol) + assert_in_epsilon(356, sf.annual_equivalent_full_load_hrs(col_name: SchedulesFile::Columns[:CookingRange].name, schedules: sf.tmp_schedules), @tol) + assert_in_epsilon(165, sf.annual_equivalent_full_load_hrs(col_name: SchedulesFile::Columns[:Dishwasher].name, schedules: sf.tmp_schedules), @tol) + assert_in_epsilon(101, sf.annual_equivalent_full_load_hrs(col_name: SchedulesFile::Columns[:ClothesWasher].name, schedules: sf.tmp_schedules), @tol) + assert_in_epsilon(166, sf.annual_equivalent_full_load_hrs(col_name: SchedulesFile::Columns[:ClothesDryer].name, schedules: sf.tmp_schedules), @tol) + assert_in_epsilon(3029, sf.annual_equivalent_full_load_hrs(col_name: SchedulesFile::Columns[:CeilingFan].name, schedules: sf.tmp_schedules), @tol) + assert_in_epsilon(4700, sf.annual_equivalent_full_load_hrs(col_name: SchedulesFile::Columns[:PlugLoadsOther].name, schedules: sf.tmp_schedules), @tol) + assert_in_epsilon(4700, sf.annual_equivalent_full_load_hrs(col_name: SchedulesFile::Columns[:PlugLoadsTV].name, schedules: sf.tmp_schedules), @tol) + assert_in_epsilon(221, sf.annual_equivalent_full_load_hrs(col_name: SchedulesFile::Columns[:HotWaterDishwasher].name, schedules: sf.tmp_schedules), @tol) + assert_in_epsilon(266, sf.annual_equivalent_full_load_hrs(col_name: SchedulesFile::Columns[:HotWaterClothesWasher].name, schedules: sf.tmp_schedules), @tol) + assert_in_epsilon(894, sf.annual_equivalent_full_load_hrs(col_name: SchedulesFile::Columns[:HotWaterFixtures].name, schedules: sf.tmp_schedules), @tol) + assert(!sf.schedules.keys.include?(SchedulesFile::Columns[:Sleeping].name)) elsif hpxml_bldg.building_id == 'MyBuilding_3' assert_equal(1, hpxml_bldg.header.schedules_filepaths.size) assert(hpxml_bldg.header.schedules_filepaths[0].include? 'occupancy-stochastic_3.csv') - assert_in_epsilon(6045, sf.annual_equivalent_full_load_hrs(col_name: SchedulesFile::ColumnOccupants, schedules: sf.tmp_schedules), @tol) - assert_in_epsilon(1745, sf.annual_equivalent_full_load_hrs(col_name: SchedulesFile::ColumnLightingInterior, schedules: sf.tmp_schedules), @tol) - assert_in_epsilon(1745, sf.annual_equivalent_full_load_hrs(col_name: SchedulesFile::ColumnLightingGarage, schedules: sf.tmp_schedules), @tol) - assert_in_epsilon(421, sf.annual_equivalent_full_load_hrs(col_name: SchedulesFile::ColumnCookingRange, schedules: sf.tmp_schedules), @tol) - assert_in_epsilon(239, sf.annual_equivalent_full_load_hrs(col_name: SchedulesFile::ColumnDishwasher, schedules: sf.tmp_schedules), @tol) - assert_in_epsilon(81, sf.annual_equivalent_full_load_hrs(col_name: SchedulesFile::ColumnClothesWasher, schedules: sf.tmp_schedules), @tol) - assert_in_epsilon(127, sf.annual_equivalent_full_load_hrs(col_name: SchedulesFile::ColumnClothesDryer, schedules: sf.tmp_schedules), @tol) - assert_in_epsilon(2984, sf.annual_equivalent_full_load_hrs(col_name: SchedulesFile::ColumnCeilingFan, schedules: sf.tmp_schedules), @tol) - assert_in_epsilon(4716, sf.annual_equivalent_full_load_hrs(col_name: SchedulesFile::ColumnPlugLoadsOther, schedules: sf.tmp_schedules), @tol) - assert_in_epsilon(4716, sf.annual_equivalent_full_load_hrs(col_name: SchedulesFile::ColumnPlugLoadsTV, schedules: sf.tmp_schedules), @tol) - assert_in_epsilon(224, sf.annual_equivalent_full_load_hrs(col_name: SchedulesFile::ColumnHotWaterDishwasher, schedules: sf.tmp_schedules), @tol) - assert_in_epsilon(209, sf.annual_equivalent_full_load_hrs(col_name: SchedulesFile::ColumnHotWaterClothesWasher, schedules: sf.tmp_schedules), @tol) - assert_in_epsilon(970, sf.annual_equivalent_full_load_hrs(col_name: SchedulesFile::ColumnHotWaterFixtures, schedules: sf.tmp_schedules), @tol) - assert(!sf.schedules.keys.include?(SchedulesFile::ColumnSleeping)) + assert_in_epsilon(6045, sf.annual_equivalent_full_load_hrs(col_name: SchedulesFile::Columns[:Occupants].name, schedules: sf.tmp_schedules), @tol) + assert_in_epsilon(1745, sf.annual_equivalent_full_load_hrs(col_name: SchedulesFile::Columns[:LightingInterior].name, schedules: sf.tmp_schedules), @tol) + assert_in_epsilon(1745, sf.annual_equivalent_full_load_hrs(col_name: SchedulesFile::Columns[:LightingGarage].name, schedules: sf.tmp_schedules), @tol) + assert_in_epsilon(421, sf.annual_equivalent_full_load_hrs(col_name: SchedulesFile::Columns[:CookingRange].name, schedules: sf.tmp_schedules), @tol) + assert_in_epsilon(239, sf.annual_equivalent_full_load_hrs(col_name: SchedulesFile::Columns[:Dishwasher].name, schedules: sf.tmp_schedules), @tol) + assert_in_epsilon(81, sf.annual_equivalent_full_load_hrs(col_name: SchedulesFile::Columns[:ClothesWasher].name, schedules: sf.tmp_schedules), @tol) + assert_in_epsilon(127, sf.annual_equivalent_full_load_hrs(col_name: SchedulesFile::Columns[:ClothesDryer].name, schedules: sf.tmp_schedules), @tol) + assert_in_epsilon(2984, sf.annual_equivalent_full_load_hrs(col_name: SchedulesFile::Columns[:CeilingFan].name, schedules: sf.tmp_schedules), @tol) + assert_in_epsilon(4716, sf.annual_equivalent_full_load_hrs(col_name: SchedulesFile::Columns[:PlugLoadsOther].name, schedules: sf.tmp_schedules), @tol) + assert_in_epsilon(4716, sf.annual_equivalent_full_load_hrs(col_name: SchedulesFile::Columns[:PlugLoadsTV].name, schedules: sf.tmp_schedules), @tol) + assert_in_epsilon(224, sf.annual_equivalent_full_load_hrs(col_name: SchedulesFile::Columns[:HotWaterDishwasher].name, schedules: sf.tmp_schedules), @tol) + assert_in_epsilon(209, sf.annual_equivalent_full_load_hrs(col_name: SchedulesFile::Columns[:HotWaterClothesWasher].name, schedules: sf.tmp_schedules), @tol) + assert_in_epsilon(970, sf.annual_equivalent_full_load_hrs(col_name: SchedulesFile::Columns[:HotWaterFixtures].name, schedules: sf.tmp_schedules), @tol) + assert(!sf.schedules.keys.include?(SchedulesFile::Columns[:Sleeping].name)) end end end @@ -387,20 +387,20 @@ def test_multiple_buildings_id assert_equal(1, hpxml_bldg.header.schedules_filepaths.size) assert(hpxml_bldg.header.schedules_filepaths[0].include? 'occupancy-stochastic_2.csv') - assert_in_epsilon(6072, sf.annual_equivalent_full_load_hrs(col_name: SchedulesFile::ColumnOccupants, schedules: sf.tmp_schedules), @tol) - assert_in_epsilon(1765, sf.annual_equivalent_full_load_hrs(col_name: SchedulesFile::ColumnLightingInterior, schedules: sf.tmp_schedules), @tol) - assert_in_epsilon(1765, sf.annual_equivalent_full_load_hrs(col_name: SchedulesFile::ColumnLightingGarage, schedules: sf.tmp_schedules), @tol) - assert_in_epsilon(356, sf.annual_equivalent_full_load_hrs(col_name: SchedulesFile::ColumnCookingRange, schedules: sf.tmp_schedules), @tol) - assert_in_epsilon(165, sf.annual_equivalent_full_load_hrs(col_name: SchedulesFile::ColumnDishwasher, schedules: sf.tmp_schedules), @tol) - assert_in_epsilon(101, sf.annual_equivalent_full_load_hrs(col_name: SchedulesFile::ColumnClothesWasher, schedules: sf.tmp_schedules), @tol) - assert_in_epsilon(166, sf.annual_equivalent_full_load_hrs(col_name: SchedulesFile::ColumnClothesDryer, schedules: sf.tmp_schedules), @tol) - assert_in_epsilon(3029, sf.annual_equivalent_full_load_hrs(col_name: SchedulesFile::ColumnCeilingFan, schedules: sf.tmp_schedules), @tol) - assert_in_epsilon(4700, sf.annual_equivalent_full_load_hrs(col_name: SchedulesFile::ColumnPlugLoadsOther, schedules: sf.tmp_schedules), @tol) - assert_in_epsilon(4700, sf.annual_equivalent_full_load_hrs(col_name: SchedulesFile::ColumnPlugLoadsTV, schedules: sf.tmp_schedules), @tol) - assert_in_epsilon(221, sf.annual_equivalent_full_load_hrs(col_name: SchedulesFile::ColumnHotWaterDishwasher, schedules: sf.tmp_schedules), @tol) - assert_in_epsilon(266, sf.annual_equivalent_full_load_hrs(col_name: SchedulesFile::ColumnHotWaterClothesWasher, schedules: sf.tmp_schedules), @tol) - assert_in_epsilon(894, sf.annual_equivalent_full_load_hrs(col_name: SchedulesFile::ColumnHotWaterFixtures, schedules: sf.tmp_schedules), @tol) - assert(!sf.schedules.keys.include?(SchedulesFile::ColumnSleeping)) + assert_in_epsilon(6072, sf.annual_equivalent_full_load_hrs(col_name: SchedulesFile::Columns[:Occupants].name, schedules: sf.tmp_schedules), @tol) + assert_in_epsilon(1765, sf.annual_equivalent_full_load_hrs(col_name: SchedulesFile::Columns[:LightingInterior].name, schedules: sf.tmp_schedules), @tol) + assert_in_epsilon(1765, sf.annual_equivalent_full_load_hrs(col_name: SchedulesFile::Columns[:LightingGarage].name, schedules: sf.tmp_schedules), @tol) + assert_in_epsilon(356, sf.annual_equivalent_full_load_hrs(col_name: SchedulesFile::Columns[:CookingRange].name, schedules: sf.tmp_schedules), @tol) + assert_in_epsilon(165, sf.annual_equivalent_full_load_hrs(col_name: SchedulesFile::Columns[:Dishwasher].name, schedules: sf.tmp_schedules), @tol) + assert_in_epsilon(101, sf.annual_equivalent_full_load_hrs(col_name: SchedulesFile::Columns[:ClothesWasher].name, schedules: sf.tmp_schedules), @tol) + assert_in_epsilon(166, sf.annual_equivalent_full_load_hrs(col_name: SchedulesFile::Columns[:ClothesDryer].name, schedules: sf.tmp_schedules), @tol) + assert_in_epsilon(3029, sf.annual_equivalent_full_load_hrs(col_name: SchedulesFile::Columns[:CeilingFan].name, schedules: sf.tmp_schedules), @tol) + assert_in_epsilon(4700, sf.annual_equivalent_full_load_hrs(col_name: SchedulesFile::Columns[:PlugLoadsOther].name, schedules: sf.tmp_schedules), @tol) + assert_in_epsilon(4700, sf.annual_equivalent_full_load_hrs(col_name: SchedulesFile::Columns[:PlugLoadsTV].name, schedules: sf.tmp_schedules), @tol) + assert_in_epsilon(221, sf.annual_equivalent_full_load_hrs(col_name: SchedulesFile::Columns[:HotWaterDishwasher].name, schedules: sf.tmp_schedules), @tol) + assert_in_epsilon(266, sf.annual_equivalent_full_load_hrs(col_name: SchedulesFile::Columns[:HotWaterClothesWasher].name, schedules: sf.tmp_schedules), @tol) + assert_in_epsilon(894, sf.annual_equivalent_full_load_hrs(col_name: SchedulesFile::Columns[:HotWaterFixtures].name, schedules: sf.tmp_schedules), @tol) + assert(!sf.schedules.keys.include?(SchedulesFile::Columns[:Sleeping].name)) else assert_empty(hpxml_bldg.header.schedules_filepaths) end diff --git a/hpxml-measures/Changelog.md b/hpxml-measures/Changelog.md index 837868dc3..482ee2da2 100644 --- a/hpxml-measures/Changelog.md +++ b/hpxml-measures/Changelog.md @@ -3,7 +3,6 @@ __New Features__ - Updates to HPXML v4.0-rc3. - Updates per ANSI/RESNET/ICC 301-2022 w/ Addendum C: - - **Breaking change**: Shared boilers require `SharedLoopWatts` (and `FanCoilWatts` if a fan coil system) inputs; removed EAE input/defaults. - Allows shared batteries (batteries serving multiple dwelling units). - Updated default CFIS fan power to 0.58 W/cfm. - Removed natural ventilation availability RH constraint; HR constraint remains. @@ -12,6 +11,7 @@ __New Features__ - Adds schedule inputs for hot water recirculation pumps and general water use internal gains. - Updated water heater installation location defaulting to match ANSI 301-2022 - Updated calculation of hot water piping length for buildings with both conditioned and unconditioned basements to avoid double counting. + - `AverageCeilingHeight` now used in natural ACH/CFM infiltration calculations. - **Breaking change**: Replaces `BuildingSummary/Site/extension/GroundConductivity` with `BuildingSummary/Site/Soil/Conductivity`. - **Breaking change**: Modeling whole SFA/MF buildings is now specified using a `SoftwareInfo/extension/WholeSFAorMFBuildingSimulation=true` element instead of `building-id=ALL` argument. - Air source heat pump enhancements: @@ -27,18 +27,21 @@ __New Features__ - Adds window and skylight `GlassType` options of "low-e, high-solar-gain" and "low-e, low-solar-gain"; updates U-factor/SHGC lookup tables. - BuildResidentialHPXML measure: - **Breaking change**: Replaces `roof_radiant_barrier`/`roof_radiant_barrier_grade` arguments with `radiant_barrier_attic_location`/`radiant_barrier_grade`. + - Allows defining multiple unavailable periods; **Breaking change**: arguments renamed to `schedules_vacancy_periods`, `schedules_power_outage_periods`, and `schedules_power_outage_periods_window_natvent_availability`. - Adds detailed performance data inputs for variable-speed air source HVAC systems. - Adds heat pump backup sizing methodology input. - Add soil and moisture type arguments (for determining ground conductivity and diffusivity) and optional geothermal loop arguments for ground source heat pumps. - The "Geometry: Building Number of Units" input is now written to the HPXML `NumberofUnitsInBuilding` element. - Miscellaneous Manual J improvements. - Adds more error-checking for inappropriate inputs (e.g., HVAC SHR=0 or clothes washer IMEF=0). +- Allow alternative label energy use (W) input for ceiling fans. __Bugfixes__ - Fixes error if using AllowIncreasedFixedCapacities=true w/ HP detailed performance data. - Prevents mains water temperature from going below freezing (0 C). - Fixes error if HPXML has emissions scenario and abbreviated run period. - Fixes detailed schedule error-checking where schedules with MAX < 1 were incorrectly allowed. +- Fixes error if using MF space types (e.g., "other heated space") and the building has no HVAC equipment. ## OpenStudio-HPXML v1.7.0 diff --git a/hpxml-measures/HPXMLtoOpenStudio/measure.rb b/hpxml-measures/HPXMLtoOpenStudio/measure.rb index e112db6bd..98ffc45e2 100644 --- a/hpxml-measures/HPXMLtoOpenStudio/measure.rb +++ b/hpxml-measures/HPXMLtoOpenStudio/measure.rb @@ -445,7 +445,7 @@ def create_unit_model(hpxml, hpxml_bldg, runner, model, epw_path, epw_file, weat add_num_occupants(model, runner, spaces) # HVAC - @hvac_unavailable_periods = Schedule.get_unavailable_periods(runner, SchedulesFile::ColumnHVAC, @hpxml_header.unavailable_periods) + @hvac_unavailable_periods = Schedule.get_unavailable_periods(runner, SchedulesFile::Columns[:HVAC].name, @hpxml_header.unavailable_periods) airloop_map = {} # Map of HPXML System ID -> AirLoopHVAC (or ZoneHVACFourPipeFanCoil) add_ideal_system(model, spaces, epw_path) add_cooling_system(model, weather, spaces, airloop_map) @@ -1530,7 +1530,7 @@ def add_hot_water_and_appliances(runner, model, weather, spaces) end # Water Heater - unavailable_periods = Schedule.get_unavailable_periods(runner, SchedulesFile::ColumnWaterHeater, @hpxml_header.unavailable_periods) + unavailable_periods = Schedule.get_unavailable_periods(runner, SchedulesFile::Columns[:WaterHeater].name, @hpxml_header.unavailable_periods) unit_multiplier = @hpxml_bldg.building_construction.number_of_units has_uncond_bsmnt = @hpxml_bldg.has_location(HPXML::LocationBasementUnconditioned) has_cond_bsmnt = @hpxml_bldg.has_location(HPXML::LocationBasementConditioned) @@ -1938,7 +1938,7 @@ def add_airflow(runner, model, weather, spaces, airloop_map) # Create HVAC availability sensor hvac_availability_sensor = nil if not @hvac_unavailable_periods.empty? - avail_sch = ScheduleConstant.new(model, SchedulesFile::ColumnHVAC, 1.0, Constants.ScheduleTypeLimitsFraction, unavailable_periods: @hvac_unavailable_periods) + avail_sch = ScheduleConstant.new(model, SchedulesFile::Columns[:HVAC].name, 1.0, Constants.ScheduleTypeLimitsFraction, unavailable_periods: @hvac_unavailable_periods) hvac_availability_sensor = OpenStudio::Model::EnergyManagementSystemSensor.new(model, 'Schedule Value') hvac_availability_sensor.setName('hvac availability s') @@ -2744,13 +2744,32 @@ def get_space_temperature_schedule(model, location, spaces) space_values = Geometry.get_temperature_scheduled_space_values(location) + htg_weekday_setpoints, htg_weekend_setpoints = HVAC.get_default_heating_setpoint(HPXML::HVACControlTypeManual, @eri_version) + if htg_weekday_setpoints.split(', ').uniq.size == 1 && htg_weekend_setpoints.split(', ').uniq.size == 1 && htg_weekday_setpoints.split(', ').uniq == htg_weekend_setpoints.split(', ').uniq + default_htg_sp = htg_weekend_setpoints.split(', ').uniq[0].to_f # F + else + fail 'Unexpected heating setpoints.' + end + + clg_weekday_setpoints, clg_weekend_setpoints = HVAC.get_default_cooling_setpoint(HPXML::HVACControlTypeManual, @eri_version) + if clg_weekday_setpoints.split(', ').uniq.size == 1 && clg_weekend_setpoints.split(', ').uniq.size == 1 && clg_weekday_setpoints.split(', ').uniq == clg_weekend_setpoints.split(', ').uniq + default_clg_sp = clg_weekend_setpoints.split(', ').uniq[0].to_f # F + else + fail 'Unexpected cooling setpoints.' + end + if location == HPXML::LocationOtherHeatedSpace - # Create a sensor to get dynamic heating setpoint - htg_sch = spaces[HPXML::LocationConditionedSpace].thermalZone.get.thermostatSetpointDualSetpoint.get.heatingSetpointTemperatureSchedule.get - sensor_htg_spt = OpenStudio::Model::EnergyManagementSystemSensor.new(model, 'Schedule Value') - sensor_htg_spt.setName('htg_spt') - sensor_htg_spt.setKeyName(htg_sch.name.to_s) - space_values[:temp_min] = sensor_htg_spt.name.to_s + if spaces[HPXML::LocationConditionedSpace].thermalZone.get.thermostatSetpointDualSetpoint.is_initialized + # Create a sensor to get dynamic heating setpoint + htg_sch = spaces[HPXML::LocationConditionedSpace].thermalZone.get.thermostatSetpointDualSetpoint.get.heatingSetpointTemperatureSchedule.get + sensor_htg_spt = OpenStudio::Model::EnergyManagementSystemSensor.new(model, 'Schedule Value') + sensor_htg_spt.setName('htg_spt') + sensor_htg_spt.setKeyName(htg_sch.name.to_s) + space_values[:temp_min] = sensor_htg_spt.name.to_s + else + # No HVAC system; use the defaulted heating setpoint. + space_values[:temp_min] = default_htg_sp # F + end end # Schedule type limits compatible @@ -2760,9 +2779,15 @@ def get_space_temperature_schedule(model, location, spaces) # Sensors if space_values[:indoor_weight] > 0 - sensor_ia = OpenStudio::Model::EnergyManagementSystemSensor.new(model, 'Zone Air Temperature') - sensor_ia.setName('cond_zone_temp') - sensor_ia.setKeyName(spaces[HPXML::LocationConditionedSpace].thermalZone.get.name.to_s) + if not spaces[HPXML::LocationConditionedSpace].thermalZone.get.thermostatSetpointDualSetpoint.is_initialized + # No HVAC system; use the average of defaulted heating/cooling setpoints. + sensor_ia = UnitConversions.convert((default_htg_sp + default_clg_sp) / 2.0, 'F', 'C') + else + sensor_ia = OpenStudio::Model::EnergyManagementSystemSensor.new(model, 'Zone Air Temperature') + sensor_ia.setName('cond_zone_temp') + sensor_ia.setKeyName(spaces[HPXML::LocationConditionedSpace].thermalZone.get.name.to_s) + sensor_ia = sensor_ia.name + end end if space_values[:outdoor_weight] > 0 @@ -2783,7 +2808,7 @@ def get_space_temperature_schedule(model, location, spaces) program.setName("#{location.gsub('-', '_')} Temperature Program") program.addLine("Set #{actuator.name} = 0.0") if not sensor_ia.nil? - program.addLine("Set #{actuator.name} = #{actuator.name} + (#{sensor_ia.name} * #{space_values[:indoor_weight]})") + program.addLine("Set #{actuator.name} = #{actuator.name} + (#{sensor_ia} * #{space_values[:indoor_weight]})") end if not sensor_oa.nil? program.addLine("Set #{actuator.name} = #{actuator.name} + (#{sensor_oa.name} * #{space_values[:outdoor_weight]})") diff --git a/hpxml-measures/HPXMLtoOpenStudio/measure.xml b/hpxml-measures/HPXMLtoOpenStudio/measure.xml index 1c64e4a84..64740bd2f 100644 --- a/hpxml-measures/HPXMLtoOpenStudio/measure.xml +++ b/hpxml-measures/HPXMLtoOpenStudio/measure.xml @@ -3,8 +3,8 @@ 3.1 hpxm_lto_openstudio b1543b30-9465-45ff-ba04-1d1f85e763bc - 53efd403-5c1e-4f5d-b000-ed28eb726d8f - 2024-02-20T01:03:31Z + b928f262-09fb-4a7e-97e3-e2710a1ed202 + 2024-02-23T15:43:54Z D8922A73 HPXMLtoOpenStudio HPXML to OpenStudio Translator @@ -142,19 +142,19 @@ measure.rb rb script - EFD8076F + 3913AEF2 airflow.rb rb resource - 8D63CEED + 19AA9E9B battery.rb rb resource - 464DA35E + E8ED081B constants.rb @@ -166,7 +166,7 @@ constructions.rb rb resource - AD88328B + D9C85C3D data/Xing_okstate_0664D_13659_Table_A-3.csv @@ -274,7 +274,7 @@ data/unavailable_periods.csv csv resource - 24CC1590 + 73BFECE2 energyplus.rb @@ -292,31 +292,31 @@ geometry.rb rb resource - 866708CF + 21C2553F hotwater_appliances.rb rb resource - 86B64E18 + 525FB9DB hpxml.rb rb resource - 48D38B28 + A6AA9F53 hpxml_defaults.rb rb resource - 6232FAF8 + C00A2695 hpxml_schema/HPXML.xsd xsd resource - 572286DE + CAF0E2AF hpxml_schema/README.md @@ -328,7 +328,7 @@ hpxml_schematron/EPvalidator.xml xml resource - E48E2E8F + B3C7FBCD hpxml_schematron/iso-schematron.xsd @@ -340,19 +340,19 @@ hvac.rb rb resource - 57E1DCDA + BE071714 hvac_sizing.rb rb resource - 7D95EA72 + C8E9BF7D lighting.rb rb resource - 71625827 + 720F24C6 location.rb @@ -382,7 +382,7 @@ misc_loads.rb rb resource - 7D800940 + 8BDAA188 output.rb @@ -520,7 +520,7 @@ schedules.rb rb resource - 42581FB2 + 0E227CE5 simcontrols.rb @@ -556,7 +556,7 @@ waterheater.rb rb resource - EFED6196 + 2A86DD12 weather.rb @@ -580,13 +580,13 @@ in.schedules.csv csv test - 6244F711 + 615A7F1F test_airflow.rb rb test - 2C8BEE99 + AA475DBF test_battery.rb @@ -598,7 +598,7 @@ test_defaults.rb rb test - 0C0D8F7B + 53041605 test_enclosure.rb @@ -622,7 +622,7 @@ test_hvac.rb rb test - B582B9C9 + 5AD597FF test_hvac_sizing.rb @@ -634,7 +634,7 @@ test_lighting.rb rb test - 5FDDE1AD + A15B8208 test_location.rb @@ -658,7 +658,7 @@ test_schedules.rb rb test - 92D61DDA + A34141EE test_simcontrols.rb diff --git a/hpxml-measures/HPXMLtoOpenStudio/resources/airflow.rb b/hpxml-measures/HPXMLtoOpenStudio/resources/airflow.rb index 8233246df..6a697cd23 100644 --- a/hpxml-measures/HPXMLtoOpenStudio/resources/airflow.rb +++ b/hpxml-measures/HPXMLtoOpenStudio/resources/airflow.rb @@ -103,7 +103,7 @@ def self.apply(model, runner, weather, spaces, hpxml_header, hpxml_bldg, cfa, nb vented_attic = hpxml_bldg.attics.find { |attic| attic.attic_type == HPXML::AtticTypeVented } vented_crawl = hpxml_bldg.foundations.find { |foundation| foundation.foundation_type == HPXML::FoundationTypeCrawlspaceVented } - _sla, conditioned_ach50, nach, infil_volume, infil_height, a_ext = get_values_from_air_infiltration_measurements(hpxml_bldg, cfa, weather) + _, conditioned_ach50, nach, infil_volume, infil_height, a_ext = get_values_from_air_infiltration_measurements(hpxml_bldg, cfa, weather) if @apply_ashrae140_assumptions conditioned_const_ach = nach conditioned_ach50 = nil @@ -177,10 +177,10 @@ def self.get_infiltration_measurement_of_interest(infil_measurements) def self.get_values_from_air_infiltration_measurements(hpxml_bldg, cfa, weather) measurement = get_infiltration_measurement_of_interest(hpxml_bldg.air_infiltration_measurements) - volume = measurement.infiltration_volume - height = measurement.infiltration_height - if height.nil? - height = hpxml_bldg.inferred_infiltration_height(volume) + infil_volume = measurement.infiltration_volume + infil_height = measurement.infiltration_height + if infil_height.nil? + infil_height = hpxml_bldg.inferred_infiltration_height(infil_volume) end sla, ach50, nach = nil @@ -188,23 +188,24 @@ def self.get_values_from_air_infiltration_measurements(hpxml_bldg, cfa, weather) if measurement.unit_of_measure == HPXML::UnitsACH ach50 = calc_air_leakage_at_diff_pressure(InfilPressureExponent, measurement.air_leakage, measurement.house_pressure, 50.0) elsif measurement.unit_of_measure == HPXML::UnitsCFM - achXX = measurement.air_leakage * 60.0 / volume # Convert CFM to ACH + achXX = measurement.air_leakage * 60.0 / infil_volume # Convert CFM to ACH ach50 = calc_air_leakage_at_diff_pressure(InfilPressureExponent, achXX, measurement.house_pressure, 50.0) end - sla = get_infiltration_SLA_from_ACH50(ach50, InfilPressureExponent, cfa, volume) - nach = get_infiltration_ACH_from_SLA(sla, height, weather) + sla = get_infiltration_SLA_from_ACH50(ach50, InfilPressureExponent, cfa, infil_volume) + nach = get_infiltration_ACH_from_SLA(sla, infil_height, weather) elsif [HPXML::UnitsACHNatural, HPXML::UnitsCFMNatural].include? measurement.unit_of_measure if measurement.unit_of_measure == HPXML::UnitsACHNatural nach = measurement.air_leakage elsif measurement.unit_of_measure == HPXML::UnitsCFMNatural - nach = measurement.air_leakage * 60.0 / volume # Convert CFM to ACH + nach = measurement.air_leakage * 60.0 / infil_volume # Convert CFM to ACH end - sla = get_infiltration_SLA_from_ACH(nach, height, weather) - ach50 = get_infiltration_ACH50_from_SLA(sla, InfilPressureExponent, cfa, volume) + avg_ceiling_height = hpxml_bldg.building_construction.average_ceiling_height + sla = get_infiltration_SLA_from_ACH(nach, infil_height, avg_ceiling_height, weather) + ach50 = get_infiltration_ACH50_from_SLA(sla, InfilPressureExponent, cfa, infil_volume) elsif !measurement.effective_leakage_area.nil? sla = UnitConversions.convert(measurement.effective_leakage_area, 'in^2', 'ft^2') / cfa - ach50 = get_infiltration_ACH50_from_SLA(sla, InfilPressureExponent, cfa, volume) - nach = get_infiltration_ACH_from_SLA(sla, height, weather) + ach50 = get_infiltration_ACH50_from_SLA(sla, InfilPressureExponent, cfa, infil_volume) + nach = get_infiltration_ACH_from_SLA(sla, infil_height, weather) else fail 'Unexpected error.' end @@ -214,14 +215,14 @@ def self.get_values_from_air_infiltration_measurements(hpxml_bldg, cfa, weather) end a_ext = 1.0 if a_ext.nil? - return sla, ach50, nach, volume, height, a_ext + return sla, ach50, nach, infil_volume, infil_height, a_ext end def self.get_default_mech_vent_flow_rate(hpxml_bldg, vent_fan, weather, cfa, nbeds) # Calculates Qfan cfm requirement per ASHRAE 62.2-2019 - sla, _ach50, _nach, _volume, height, a_ext = get_values_from_air_infiltration_measurements(hpxml_bldg, cfa, weather) + sla, _, _, _, infil_height, a_ext = get_values_from_air_infiltration_measurements(hpxml_bldg, cfa, weather) - nl = get_infiltration_NL_from_SLA(sla, height) + nl = get_infiltration_NL_from_SLA(sla, infil_height) q_inf = get_infiltration_Qinf_from_NL(nl, weather, cfa) q_tot = get_mech_vent_qtot_cfm(nbeds, cfa) @@ -334,7 +335,7 @@ def self.apply_natural_ventilation_and_whole_house_fan(model, site, vent_fans_wh vent_fans_whf.each_with_index do |vent_whf, index| whf_num_days_per_week = 7 # FUTURE: Expose via HPXML? obj_name = "#{Constants.ObjectNameWholeHouseFan} #{index}" - whf_unavailable_periods = Schedule.get_unavailable_periods(@runner, SchedulesFile::ColumnWholeHouseFan, unavailable_periods) + whf_unavailable_periods = Schedule.get_unavailable_periods(@runner, SchedulesFile::Columns[:WholeHouseFan].name, unavailable_periods) whf_avail_sch = create_nv_and_whf_avail_sch(model, obj_name, whf_num_days_per_week, whf_unavailable_periods) whf_avail_sensor = OpenStudio::Model::EnergyManagementSystemSensor.new(model, 'Schedule Value') @@ -1250,7 +1251,7 @@ def self.apply_infiltration_to_vented_attic(model, weather, site, vented_attic) if @apply_ashrae140_assumptions vented_attic_const_ach = vented_attic.vented_attic_ach else - vented_attic_sla = get_infiltration_SLA_from_ACH(vented_attic.vented_attic_ach, 8.202, weather) + vented_attic_sla = get_infiltration_SLA_from_ACH(vented_attic.vented_attic_ach, 8.202, 8.202, weather) end end @@ -1315,7 +1316,7 @@ def self.apply_dryer_exhaust(model, vented_dryer, schedules_file, index, unavail # Create schedule obj_sch = nil if not schedules_file.nil? - obj_sch_name = SchedulesFile::ColumnClothesDryer + obj_sch_name = SchedulesFile::Columns[:ClothesDryer].name obj_sch = schedules_file.create_schedule_file(model, col_name: obj_sch_name) full_load_hrs = schedules_file.annual_equivalent_full_load_hrs(col_name: obj_sch_name) end @@ -1600,7 +1601,7 @@ def self.apply_infiltration_adjustment_to_conditioned(model, infil_program, vent infil_program.addLine('Set Qrange = 0') vent_fans_kitchen.each_with_index do |vent_kitchen, index| # Electricity impact - vent_kitchen_unavailable_periods = Schedule.get_unavailable_periods(@runner, SchedulesFile::ColumnKitchenFan, unavailable_periods) + vent_kitchen_unavailable_periods = Schedule.get_unavailable_periods(@runner, SchedulesFile::Columns[:KitchenFan].name, unavailable_periods) obj_sch_sensor = apply_local_ventilation(model, vent_kitchen, Constants.ObjectNameMechanicalVentilationRangeFan, index, vent_kitchen_unavailable_periods) next unless @cooking_range_in_cond_space @@ -1611,7 +1612,7 @@ def self.apply_infiltration_adjustment_to_conditioned(model, infil_program, vent infil_program.addLine('Set Qbath = 0') vent_fans_bath.each_with_index do |vent_bath, index| # Electricity impact - vent_bath_unavailable_periods = Schedule.get_unavailable_periods(@runner, SchedulesFile::ColumnBathFan, unavailable_periods) + vent_bath_unavailable_periods = Schedule.get_unavailable_periods(@runner, SchedulesFile::Columns[:BathFan].name, unavailable_periods) obj_sch_sensor = apply_local_ventilation(model, vent_bath, Constants.ObjectNameMechanicalVentilationBathFan, index, vent_bath_unavailable_periods) # Infiltration impact infil_program.addLine("Set Qbath = Qbath + #{UnitConversions.convert(vent_bath.flow_rate * vent_bath.count, 'cfm', 'm^3/s').round(5)} * #{obj_sch_sensor.name}") @@ -1622,7 +1623,7 @@ def self.apply_infiltration_adjustment_to_conditioned(model, infil_program, vent next unless @clothes_dryer_in_cond_space # Infiltration impact - vented_dryer_unavailable_periods = Schedule.get_unavailable_periods(@runner, SchedulesFile::ColumnClothesDryer, unavailable_periods) + vented_dryer_unavailable_periods = Schedule.get_unavailable_periods(@runner, SchedulesFile::Columns[:ClothesDryer].name, unavailable_periods) obj_sch_sensor, cfm_mult = apply_dryer_exhaust(model, vented_dryer, schedules_file, index, vented_dryer_unavailable_periods) infil_program.addLine("Set Qdryer = Qdryer + #{UnitConversions.convert(vented_dryer.vented_flow_rate * cfm_mult, 'cfm', 'm^3/s').round(5)} * #{obj_sch_sensor.name}") end @@ -1788,7 +1789,7 @@ def self.apply_infiltration_ventilation_to_conditioned(model, site, vent_fans_me vent_mech_erv_hrv_tot = vent_fans_mech.select { |vent_mech| [HPXML::MechVentTypeERV, HPXML::MechVentTypeHRV].include? vent_mech.fan_type } # Non-CFIS fan power - house_fan_unavailable_periods = Schedule.get_unavailable_periods(@runner, SchedulesFile::ColumnHouseFan, unavailable_periods) + house_fan_unavailable_periods = Schedule.get_unavailable_periods(@runner, SchedulesFile::Columns[:HouseFan].name, unavailable_periods) add_ee_for_vent_fan_power(model, Constants.ObjectNameMechanicalVentilationHouseFan, vent_mech_sup_tot, vent_mech_exh_tot, vent_mech_bal_tot, vent_mech_erv_hrv_tot, house_fan_unavailable_periods) @@ -2009,9 +2010,9 @@ def self.get_infiltration_ACH_from_SLA(sla, infil_height, weather) return norm_leakage * weather.data.WSF end - def self.get_infiltration_SLA_from_ACH(ach, infil_height, weather) + def self.get_infiltration_SLA_from_ACH(ach, infil_height, avg_ceiling_height, weather) # Returns the infiltration SLA given an annual average ACH. - return ach / (weather.data.WSF * 1000 * (infil_height / 8.202)**0.4) + return ach * (avg_ceiling_height / 8.202) / (weather.data.WSF * 1000 * (infil_height / 8.202)**0.4) end def self.get_infiltration_SLA_from_ACH50(ach50, n_i, floor_area, volume) diff --git a/hpxml-measures/HPXMLtoOpenStudio/resources/battery.rb b/hpxml-measures/HPXMLtoOpenStudio/resources/battery.rb index c981dbe22..1cd154cd7 100644 --- a/hpxml-measures/HPXMLtoOpenStudio/resources/battery.rb +++ b/hpxml-measures/HPXMLtoOpenStudio/resources/battery.rb @@ -5,8 +5,8 @@ def self.apply(runner, model, nbeds, pv_systems, battery, schedules_file, unit_m charging_schedule = nil discharging_schedule = nil if not schedules_file.nil? - charging_schedule = schedules_file.create_schedule_file(model, col_name: SchedulesFile::ColumnBatteryCharging) - discharging_schedule = schedules_file.create_schedule_file(model, col_name: SchedulesFile::ColumnBatteryDischarging) + charging_schedule = schedules_file.create_schedule_file(model, col_name: SchedulesFile::Columns[:BatteryCharging].name) + discharging_schedule = schedules_file.create_schedule_file(model, col_name: SchedulesFile::Columns[:BatteryDischarging].name) end if pv_systems.empty? && charging_schedule.nil? && discharging_schedule.nil? diff --git a/hpxml-measures/HPXMLtoOpenStudio/resources/constructions.rb b/hpxml-measures/HPXMLtoOpenStudio/resources/constructions.rb index 9bf45ea11..8b79387d8 100644 --- a/hpxml-measures/HPXMLtoOpenStudio/resources/constructions.rb +++ b/hpxml-measures/HPXMLtoOpenStudio/resources/constructions.rb @@ -1699,14 +1699,14 @@ def self.apply_kiva_initial_temp(foundation, slab, weather, conditioned_zone, htg_day_sch = htg_setpoint_sch.to_ScheduleRuleset.get.getDaySchedules(sim_begin_date, sim_begin_date)[0] heat_setpoint = UnitConversions.convert(htg_day_sch.values[0], 'C', 'F') else - heat_setpoint = schedules_file.schedules[SchedulesFile::ColumnHeatingSetpoint][sim_begin_hour] + heat_setpoint = schedules_file.schedules[SchedulesFile::Columns[:HeatingSetpoint].name][sim_begin_hour] end clg_setpoint_sch = setpoint_sch.coolingSetpointTemperatureSchedule.get if clg_setpoint_sch.to_ScheduleRuleset.is_initialized clg_day_sch = clg_setpoint_sch.to_ScheduleRuleset.get.getDaySchedules(sim_begin_date, sim_begin_date)[0] cool_setpoint = UnitConversions.convert(clg_day_sch.values[0], 'C', 'F') else - cool_setpoint = schedules_file.schedules[SchedulesFile::ColumnCoolingSetpoint][sim_begin_hour] + cool_setpoint = schedules_file.schedules[SchedulesFile::Columns[:CoolingSetpoint].name][sim_begin_hour] end # Methodology adapted from https://github.com/NREL/EnergyPlus/blob/b18a2733c3131db808feac44bc278a14b05d8e1f/src/EnergyPlus/HeatBalanceKivaManager.cc#L303-L313 diff --git a/hpxml-measures/HPXMLtoOpenStudio/resources/data/unavailable_periods.csv b/hpxml-measures/HPXMLtoOpenStudio/resources/data/unavailable_periods.csv index 4175dcb70..c8ba7e242 100644 --- a/hpxml-measures/HPXMLtoOpenStudio/resources/data/unavailable_periods.csv +++ b/hpxml-measures/HPXMLtoOpenStudio/resources/data/unavailable_periods.csv @@ -24,7 +24,8 @@ pool_heater,0,1 permanent_spa_pump,0,1 permanent_spa_heater,0,1 hot_water_fixtures,1,1 -general_water_use,1,1 +hot_water_recirculation_pump,1,1 +general_water_use,1,0 hvac,0,1 water_heater,0,1 dehumidifier,0,1 diff --git a/hpxml-measures/HPXMLtoOpenStudio/resources/geometry.rb b/hpxml-measures/HPXMLtoOpenStudio/resources/geometry.rb index b9305efb4..ad2e57a79 100644 --- a/hpxml-measures/HPXMLtoOpenStudio/resources/geometry.rb +++ b/hpxml-measures/HPXMLtoOpenStudio/resources/geometry.rb @@ -528,7 +528,7 @@ def self.apply_occupants(model, runner, hpxml_bldg, num_occ, space, schedules_fi # Create schedule people_sch = nil - people_col_name = SchedulesFile::ColumnOccupants + people_col_name = SchedulesFile::Columns[:Occupants].name if not schedules_file.nil? people_sch = schedules_file.create_schedule_file(model, col_name: people_col_name) end diff --git a/hpxml-measures/HPXMLtoOpenStudio/resources/hotwater_appliances.rb b/hpxml-measures/HPXMLtoOpenStudio/resources/hotwater_appliances.rb index 8225f8c31..c7069a67a 100644 --- a/hpxml-measures/HPXMLtoOpenStudio/resources/hotwater_appliances.rb +++ b/hpxml-measures/HPXMLtoOpenStudio/resources/hotwater_appliances.rb @@ -48,7 +48,7 @@ def self.apply(model, runner, hpxml_header, hpxml_bldg, weather, spaces, hot_wat # Create schedule cw_power_schedule = nil - cw_col_name = SchedulesFile::ColumnClothesWasher + cw_col_name = SchedulesFile::Columns[:ClothesWasher].name cw_object_name = Constants.ObjectNameClothesWasher if not schedules_file.nil? cw_design_level_w = schedules_file.calc_design_level_from_daily_kwh(col_name: cw_col_name, daily_kwh: cw_annual_kwh / 365.0) @@ -79,7 +79,7 @@ def self.apply(model, runner, hpxml_header, hpxml_bldg, weather, spaces, hot_wat # Create schedule cd_schedule = nil - cd_col_name = SchedulesFile::ColumnClothesDryer + cd_col_name = SchedulesFile::Columns[:ClothesDryer].name cd_obj_name = Constants.ObjectNameClothesDryer if not schedules_file.nil? cd_design_level_e = schedules_file.calc_design_level_from_annual_kwh(col_name: cd_col_name, annual_kwh: cd_annual_kwh) @@ -113,7 +113,7 @@ def self.apply(model, runner, hpxml_header, hpxml_bldg, weather, spaces, hot_wat # Create schedule dw_power_schedule = nil - dw_col_name = SchedulesFile::ColumnDishwasher + dw_col_name = SchedulesFile::Columns[:Dishwasher].name dw_obj_name = Constants.ObjectNameDishwasher if not schedules_file.nil? dw_design_level_w = schedules_file.calc_design_level_from_daily_kwh(col_name: dw_col_name, daily_kwh: dw_annual_kwh / 365.0) @@ -144,7 +144,7 @@ def self.apply(model, runner, hpxml_header, hpxml_bldg, weather, spaces, hot_wat # Create schedule fridge_schedule = nil - fridge_col_name = refrigerator.primary_indicator ? SchedulesFile::ColumnRefrigerator : SchedulesFile::ColumnExtraRefrigerator + fridge_col_name = refrigerator.primary_indicator ? SchedulesFile::Columns[:Refrigerator].name : SchedulesFile::Columns[:ExtraRefrigerator].name fridge_obj_name = Constants.ObjectNameRefrigerator if not schedules_file.nil? fridge_design_level = schedules_file.calc_design_level_from_annual_kwh(col_name: fridge_col_name, annual_kwh: rf_annual_kwh) @@ -186,7 +186,7 @@ def self.apply(model, runner, hpxml_header, hpxml_bldg, weather, spaces, hot_wat # Create schedule freezer_schedule = nil - freezer_col_name = SchedulesFile::ColumnFreezer + freezer_col_name = SchedulesFile::Columns[:Freezer].name freezer_obj_name = Constants.ObjectNameFreezer if not schedules_file.nil? freezer_design_level = schedules_file.calc_design_level_from_annual_kwh(col_name: freezer_col_name, annual_kwh: fz_annual_kwh) @@ -228,7 +228,7 @@ def self.apply(model, runner, hpxml_header, hpxml_bldg, weather, spaces, hot_wat # Create schedule cook_schedule = nil - cook_col_name = SchedulesFile::ColumnCookingRange + cook_col_name = SchedulesFile::Columns[:CookingRange].name cook_obj_name = Constants.ObjectNameCookingRange if not schedules_file.nil? cook_design_level_e = schedules_file.calc_design_level_from_annual_kwh(col_name: cook_col_name, annual_kwh: cook_annual_kwh) @@ -310,7 +310,7 @@ def self.apply(model, runner, hpxml_header, hpxml_bldg, weather, spaces, hot_wat # Create schedule fixtures_schedule = nil - fixtures_col_name = SchedulesFile::ColumnHotWaterFixtures + fixtures_col_name = SchedulesFile::Columns[:HotWaterFixtures].name fixtures_obj_name = Constants.ObjectNameFixtures if not schedules_file.nil? fixtures_schedule = schedules_file.create_schedule_file(model, col_name: fixtures_col_name, schedule_type_limits_name: Constants.ScheduleTypeLimitsFraction) @@ -340,8 +340,8 @@ def self.apply(model, runner, hpxml_header, hpxml_bldg, weather, spaces, hot_wat fx_peak_flow = nil if not schedules_file.nil? - fx_peak_flow = schedules_file.calc_peak_flow_from_daily_gpm(col_name: SchedulesFile::ColumnHotWaterFixtures, daily_water: fx_gpd) - dist_water_peak_flow = schedules_file.calc_peak_flow_from_daily_gpm(col_name: SchedulesFile::ColumnHotWaterFixtures, daily_water: w_gpd) + fx_peak_flow = schedules_file.calc_peak_flow_from_daily_gpm(col_name: SchedulesFile::Columns[:HotWaterFixtures].name, daily_water: fx_gpd) + dist_water_peak_flow = schedules_file.calc_peak_flow_from_daily_gpm(col_name: SchedulesFile::Columns[:HotWaterFixtures].name, daily_water: w_gpd) end if fx_peak_flow.nil? fx_peak_flow = fixtures_schedule_obj.calc_design_level_from_daily_gpm(fx_gpd) @@ -361,7 +361,7 @@ def self.apply(model, runner, hpxml_header, hpxml_bldg, weather, spaces, hot_wat # Create schedule recirc_pump_sch = nil - recirc_pump_col_name = SchedulesFile::ColumnHotWaterRecirculationPump + recirc_pump_col_name = SchedulesFile::Columns[:HotWaterRecirculationPump].name recirc_pump_obj_name = Constants.ObjectNameHotWaterRecircPump if not schedules_file.nil? recirc_pump_design_level = schedules_file.calc_design_level_from_daily_kwh(col_name: recirc_pump_col_name, daily_kwh: recirc_pump_annual_kwh / 365.0) @@ -402,8 +402,8 @@ def self.apply(model, runner, hpxml_header, hpxml_bldg, weather, spaces, hot_wat # Create schedule water_cw_schedule = nil if not schedules_file.nil? - cw_peak_flow = schedules_file.calc_peak_flow_from_daily_gpm(col_name: SchedulesFile::ColumnHotWaterClothesWasher, daily_water: cw_gpd) - water_cw_schedule = schedules_file.create_schedule_file(model, col_name: SchedulesFile::ColumnHotWaterClothesWasher, schedule_type_limits_name: Constants.ScheduleTypeLimitsFraction) + cw_peak_flow = schedules_file.calc_peak_flow_from_daily_gpm(col_name: SchedulesFile::Columns[:HotWaterClothesWasher].name, daily_water: cw_gpd) + water_cw_schedule = schedules_file.create_schedule_file(model, col_name: SchedulesFile::Columns[:HotWaterClothesWasher].name, schedule_type_limits_name: Constants.ScheduleTypeLimitsFraction) end if water_cw_schedule.nil? cw_peak_flow = cw_schedule_obj.calc_design_level_from_daily_gpm(cw_gpd) @@ -429,8 +429,8 @@ def self.apply(model, runner, hpxml_header, hpxml_bldg, weather, spaces, hot_wat # Create schedule water_dw_schedule = nil if not schedules_file.nil? - dw_peak_flow = schedules_file.calc_peak_flow_from_daily_gpm(col_name: SchedulesFile::ColumnHotWaterDishwasher, daily_water: dw_gpd) - water_dw_schedule = schedules_file.create_schedule_file(model, col_name: SchedulesFile::ColumnHotWaterDishwasher, schedule_type_limits_name: Constants.ScheduleTypeLimitsFraction) + dw_peak_flow = schedules_file.calc_peak_flow_from_daily_gpm(col_name: SchedulesFile::Columns[:HotWaterDishwasher].name, daily_water: dw_gpd) + water_dw_schedule = schedules_file.create_schedule_file(model, col_name: SchedulesFile::Columns[:HotWaterDishwasher].name, schedule_type_limits_name: Constants.ScheduleTypeLimitsFraction) end if water_dw_schedule.nil? dw_peak_flow = dw_schedule_obj.calc_design_level_from_daily_gpm(dw_gpd) @@ -446,11 +446,11 @@ def self.apply(model, runner, hpxml_header, hpxml_bldg, weather, spaces, hot_wat # Create schedule water_schedule = nil - water_col_name = SchedulesFile::ColumnGeneralWaterUse + water_col_name = SchedulesFile::Columns[:GeneralWaterUse].name water_obj_name = Constants.ObjectNameGeneralWaterUse if not schedules_file.nil? - water_design_level_sens = schedules_file.calc_design_level_from_daily_kwh(col_name: SchedulesFile::ColumnGeneralWaterUse, daily_kwh: UnitConversions.convert(water_sens_btu, 'Btu', 'kWh') / 365.0) - water_design_level_lat = schedules_file.calc_design_level_from_daily_kwh(col_name: SchedulesFile::ColumnGeneralWaterUse, daily_kwh: UnitConversions.convert(water_lat_btu, 'Btu', 'kWh') / 365.0) + water_design_level_sens = schedules_file.calc_design_level_from_daily_kwh(col_name: SchedulesFile::Columns[:GeneralWaterUse].name, daily_kwh: UnitConversions.convert(water_sens_btu, 'Btu', 'kWh') / 365.0) + water_design_level_lat = schedules_file.calc_design_level_from_daily_kwh(col_name: SchedulesFile::Columns[:GeneralWaterUse].name, daily_kwh: UnitConversions.convert(water_lat_btu, 'Btu', 'kWh') / 365.0) water_schedule = schedules_file.create_schedule_file(model, col_name: water_col_name, schedule_type_limits_name: Constants.ScheduleTypeLimitsFraction) end if water_schedule.nil? diff --git a/hpxml-measures/HPXMLtoOpenStudio/resources/hpxml.rb b/hpxml-measures/HPXMLtoOpenStudio/resources/hpxml.rb index da43f5e12..d335e8b66 100644 --- a/hpxml-measures/HPXMLtoOpenStudio/resources/hpxml.rb +++ b/hpxml-measures/HPXMLtoOpenStudio/resources/hpxml.rb @@ -7025,7 +7025,7 @@ def from_doc(building) end class CeilingFan < BaseElement - ATTRS = [:id, :efficiency, :count, :weekday_fractions, :weekend_fractions, :monthly_multipliers] + ATTRS = [:id, :efficiency, :label_energy_use, :count, :weekday_fractions, :weekend_fractions, :monthly_multipliers] attr_accessor(*ATTRS) def delete @@ -7050,6 +7050,7 @@ def to_doc(building) XMLHelper.add_element(airflow, 'Efficiency', @efficiency, :float, @efficiency_isdefaulted) end XMLHelper.add_element(ceiling_fan, 'Count', @count, :integer, @count_isdefaulted) unless @count.nil? + XMLHelper.add_element(ceiling_fan, 'LabelEnergyUse', @label_energy_use, :float, @label_energy_use_isdefaulted) unless @label_energy_use.nil? XMLHelper.add_extension(ceiling_fan, 'WeekdayScheduleFractions', @weekday_fractions, :string, @weekday_fractions_isdefaulted) unless @weekday_fractions.nil? XMLHelper.add_extension(ceiling_fan, 'WeekendScheduleFractions', @weekend_fractions, :string, @weekend_fractions_isdefaulted) unless @weekend_fractions.nil? XMLHelper.add_extension(ceiling_fan, 'MonthlyScheduleMultipliers', @monthly_multipliers, :string, @monthly_multipliers_isdefaulted) unless @monthly_multipliers.nil? @@ -7058,6 +7059,7 @@ def to_doc(building) def from_doc(ceiling_fan) @id = HPXML::get_id(ceiling_fan) @efficiency = XMLHelper.get_value(ceiling_fan, "Airflow[FanSpeed='medium']/Efficiency", :float) + @label_energy_use = XMLHelper.get_value(ceiling_fan, 'LabelEnergyUse', :float) @count = XMLHelper.get_value(ceiling_fan, 'Count', :integer) @weekday_fractions = XMLHelper.get_value(ceiling_fan, 'extension/WeekdayScheduleFractions', :string) @weekend_fractions = XMLHelper.get_value(ceiling_fan, 'extension/WeekendScheduleFractions', :string) diff --git a/hpxml-measures/HPXMLtoOpenStudio/resources/hpxml_defaults.rb b/hpxml-measures/HPXMLtoOpenStudio/resources/hpxml_defaults.rb index 6e47eeaa2..74ea4aee8 100644 --- a/hpxml-measures/HPXMLtoOpenStudio/resources/hpxml_defaults.rb +++ b/hpxml-measures/HPXMLtoOpenStudio/resources/hpxml_defaults.rb @@ -13,7 +13,6 @@ def self.apply(runner, hpxml, hpxml_bldg, eri_version, weather, epw_file: nil, s ncfl_ag = hpxml_bldg.building_construction.number_of_conditioned_floors_above_grade has_uncond_bsmnt = hpxml_bldg.has_location(HPXML::LocationBasementUnconditioned) has_cond_bsmnt = hpxml_bldg.has_location(HPXML::LocationBasementConditioned) - infil_measurement = Airflow.get_infiltration_measurement_of_interest(hpxml_bldg.air_infiltration_measurements) # Check for presence of fuels once has_fuel = hpxml_bldg.has_fuels(Constants.FossilFuels, hpxml.to_doc) @@ -27,9 +26,9 @@ def self.apply(runner, hpxml, hpxml_bldg, eri_version, weather, epw_file: nil, s apply_site(hpxml_bldg) apply_neighbor_buildings(hpxml_bldg) apply_building_occupancy(hpxml_bldg, schedules_file) - apply_building_construction(hpxml_bldg, cfa, nbeds, infil_measurement) + apply_building_construction(hpxml_bldg, cfa, nbeds) apply_climate_and_risk_zones(hpxml_bldg, epw_file) - apply_infiltration(hpxml_bldg, infil_measurement) + apply_infiltration(hpxml_bldg) apply_attics(hpxml_bldg) apply_foundations(hpxml_bldg) apply_roofs(hpxml_bldg) @@ -597,7 +596,7 @@ def self.apply_building_occupancy(hpxml_bldg, schedules_file) # ANSI 301 or Building America equations, which are based on number of bedrooms. hpxml_bldg.building_construction.additional_properties.adjusted_number_of_bedrooms = get_nbeds_adjusted_for_operational_calculation(hpxml_bldg) end - schedules_file_includes_occupants = (schedules_file.nil? ? false : schedules_file.includes_col_name(SchedulesFile::ColumnOccupants)) + schedules_file_includes_occupants = (schedules_file.nil? ? false : schedules_file.includes_col_name(SchedulesFile::Columns[:Occupants].name)) if hpxml_bldg.building_occupancy.weekday_fractions.nil? && !schedules_file_includes_occupants hpxml_bldg.building_occupancy.weekday_fractions = Schedule.OccupantsWeekdayFractions hpxml_bldg.building_occupancy.weekday_fractions_isdefaulted = true @@ -614,7 +613,7 @@ def self.apply_building_occupancy(hpxml_bldg, schedules_file) hpxml_bldg.building_occupancy.general_water_use_usage_multiplier = 1.0 hpxml_bldg.building_occupancy.general_water_use_usage_multiplier_isdefaulted = true end - schedules_file_includes_water = (schedules_file.nil? ? false : schedules_file.includes_col_name(SchedulesFile::ColumnGeneralWaterUse)) + schedules_file_includes_water = (schedules_file.nil? ? false : schedules_file.includes_col_name(SchedulesFile::Columns[:GeneralWaterUse].name)) if hpxml_bldg.building_occupancy.general_water_use_weekday_fractions.nil? && !schedules_file_includes_water hpxml_bldg.building_occupancy.general_water_use_weekday_fractions = Schedule.GeneralWaterUseWeekdayFractions hpxml_bldg.building_occupancy.general_water_use_weekday_fractions_isdefaulted = true @@ -629,22 +628,18 @@ def self.apply_building_occupancy(hpxml_bldg, schedules_file) end end - def self.apply_building_construction(hpxml_bldg, cfa, nbeds, infil_measurement) + def self.apply_building_construction(hpxml_bldg, cfa, nbeds) cond_crawl_volume = hpxml_bldg.inferred_conditioned_crawlspace_volume() if hpxml_bldg.building_construction.conditioned_building_volume.nil? && hpxml_bldg.building_construction.average_ceiling_height.nil? - if not infil_measurement.infiltration_volume.nil? - hpxml_bldg.building_construction.average_ceiling_height = [infil_measurement.infiltration_volume / cfa, 8.0].min - else - hpxml_bldg.building_construction.average_ceiling_height = 8.0 - end + hpxml_bldg.building_construction.average_ceiling_height = 8.0 hpxml_bldg.building_construction.average_ceiling_height_isdefaulted = true - hpxml_bldg.building_construction.conditioned_building_volume = cfa * hpxml_bldg.building_construction.average_ceiling_height + cond_crawl_volume + hpxml_bldg.building_construction.conditioned_building_volume = (cfa * hpxml_bldg.building_construction.average_ceiling_height + cond_crawl_volume).round hpxml_bldg.building_construction.conditioned_building_volume_isdefaulted = true elsif hpxml_bldg.building_construction.conditioned_building_volume.nil? - hpxml_bldg.building_construction.conditioned_building_volume = cfa * hpxml_bldg.building_construction.average_ceiling_height + cond_crawl_volume + hpxml_bldg.building_construction.conditioned_building_volume = (cfa * hpxml_bldg.building_construction.average_ceiling_height + cond_crawl_volume).round hpxml_bldg.building_construction.conditioned_building_volume_isdefaulted = true elsif hpxml_bldg.building_construction.average_ceiling_height.nil? - hpxml_bldg.building_construction.average_ceiling_height = (hpxml_bldg.building_construction.conditioned_building_volume - cond_crawl_volume) / cfa + hpxml_bldg.building_construction.average_ceiling_height = ((hpxml_bldg.building_construction.conditioned_building_volume - cond_crawl_volume) / cfa).round(2) hpxml_bldg.building_construction.average_ceiling_height_isdefaulted = true end if hpxml_bldg.building_construction.number_of_bathrooms.nil? @@ -669,7 +664,8 @@ def self.apply_climate_and_risk_zones(hpxml_bldg, epw_file) end end - def self.apply_infiltration(hpxml_bldg, infil_measurement) + def self.apply_infiltration(hpxml_bldg) + infil_measurement = Airflow.get_infiltration_measurement_of_interest(hpxml_bldg.air_infiltration_measurements) if infil_measurement.infiltration_volume.nil? infil_measurement.infiltration_volume = hpxml_bldg.building_construction.conditioned_building_volume infil_measurement.infiltration_volume_isdefaulted = true @@ -1340,14 +1336,15 @@ def self.apply_hvac(runner, hpxml, hpxml_bldg, weather, convert_shared_systems) heating_system.electric_resistance_distribution_isdefaulted = true end - # Default in-unit boiler EAE + # Default boiler EAE hpxml_bldg.heating_systems.each do |heating_system| next unless heating_system.electric_auxiliary_energy.nil? - next unless heating_system.heating_system_type == HPXML::HVACTypeBoiler - next if heating_system.is_shared_system heating_system.electric_auxiliary_energy_isdefaulted = true - heating_system.electric_auxiliary_energy = HVAC.get_default_in_unit_boiler_eae(heating_system.heating_system_fuel) + heating_system.electric_auxiliary_energy = HVAC.get_default_boiler_eae(heating_system) + heating_system.shared_loop_watts = nil + heating_system.shared_loop_motor_efficiency = nil + heating_system.fan_coil_watts = nil end # Default AC/HP sensible heat ratio @@ -1761,7 +1758,7 @@ def self.apply_detailed_performance_data_for_var_speed_systems(hpxml_bldg) def self.apply_hvac_control(hpxml_bldg, schedules_file, eri_version) hpxml_bldg.hvac_controls.each do |hvac_control| - schedules_file_includes_heating_setpoint_temp = (schedules_file.nil? ? false : schedules_file.includes_col_name(SchedulesFile::ColumnHeatingSetpoint)) + schedules_file_includes_heating_setpoint_temp = (schedules_file.nil? ? false : schedules_file.includes_col_name(SchedulesFile::Columns[:HeatingSetpoint].name)) if hvac_control.heating_setpoint_temp.nil? && hvac_control.weekday_heating_setpoints.nil? && !schedules_file_includes_heating_setpoint_temp # No heating setpoints; set a default heating setpoint for, e.g., natural ventilation htg_weekday_setpoints, htg_weekend_setpoints = HVAC.get_default_heating_setpoint(HPXML::HVACControlTypeManual, eri_version) @@ -1773,7 +1770,7 @@ def self.apply_hvac_control(hpxml_bldg, schedules_file, eri_version) hvac_control.heating_setpoint_temp_isdefaulted = true end - schedules_file_includes_cooling_setpoint_temp = (schedules_file.nil? ? false : schedules_file.includes_col_name(SchedulesFile::ColumnCoolingSetpoint)) + schedules_file_includes_cooling_setpoint_temp = (schedules_file.nil? ? false : schedules_file.includes_col_name(SchedulesFile::Columns[:CoolingSetpoint].name)) if hvac_control.cooling_setpoint_temp.nil? && hvac_control.weekday_cooling_setpoints.nil? && !schedules_file_includes_cooling_setpoint_temp # No cooling setpoints; set a default cooling setpoint for, e.g., natural ventilation clg_weekday_setpoints, clg_weekend_setpoints = HVAC.get_default_cooling_setpoint(HPXML::HVACControlTypeManual, eri_version) @@ -2093,7 +2090,7 @@ def self.apply_water_heaters(hpxml_bldg, nbeds, eri_version, schedules_file) water_heating_system.is_shared_system = false water_heating_system.is_shared_system_isdefaulted = true end - schedules_file_includes_water_heater_setpoint_temp = (schedules_file.nil? ? false : schedules_file.includes_col_name(SchedulesFile::ColumnWaterHeaterSetpoint)) + schedules_file_includes_water_heater_setpoint_temp = (schedules_file.nil? ? false : schedules_file.includes_col_name(SchedulesFile::Columns[:WaterHeaterSetpoint].name)) if water_heating_system.temperature.nil? && !schedules_file_includes_water_heater_setpoint_temp water_heating_system.temperature = Waterheater.get_default_hot_water_temperature(eri_version) water_heating_system.temperature_isdefaulted = true @@ -2132,7 +2129,7 @@ def self.apply_water_heaters(hpxml_bldg, nbeds, eri_version, schedules_file) end end if (water_heating_system.water_heater_type == HPXML::WaterHeaterTypeHeatPump) - schedules_file_includes_water_heater_operating_mode = (schedules_file.nil? ? false : schedules_file.includes_col_name(SchedulesFile::ColumnWaterHeaterOperatingMode)) + schedules_file_includes_water_heater_operating_mode = (schedules_file.nil? ? false : schedules_file.includes_col_name(SchedulesFile::Columns[:WaterHeaterOperatingMode].name)) if water_heating_system.operating_mode.nil? && !schedules_file_includes_water_heater_operating_mode water_heating_system.operating_mode = HPXML::WaterHeaterOperatingModeHybridAuto water_heating_system.operating_mode_isdefaulted = true @@ -2199,7 +2196,7 @@ def self.apply_hot_water_distribution(hpxml_bldg, cfa, ncfl, has_uncond_bsmnt, h end if hot_water_distribution.system_type == HPXML::DHWDistTypeRecirc || hot_water_distribution.has_shared_recirculation - schedules_file_includes_recirculation_pump = (schedules_file.nil? ? false : schedules_file.includes_col_name(SchedulesFile::ColumnHotWaterRecirculationPump)) + schedules_file_includes_recirculation_pump = (schedules_file.nil? ? false : schedules_file.includes_col_name(SchedulesFile::Columns[:HotWaterRecirculationPump].name)) recirc_control_type = hot_water_distribution.has_shared_recirculation ? hot_water_distribution.shared_recirculation_control_type : hot_water_distribution.recirculation_control_type if [HPXML::DHWRecircControlTypeNone, HPXML::DHWRecircControlTypeTimer].include?(recirc_control_type) if hot_water_distribution.recirculation_pump_weekday_fractions.nil? && !schedules_file_includes_recirculation_pump @@ -2252,7 +2249,7 @@ def self.apply_water_fixtures(hpxml_bldg, schedules_file) hpxml_bldg.water_heating.water_fixtures_usage_multiplier = 1.0 hpxml_bldg.water_heating.water_fixtures_usage_multiplier_isdefaulted = true end - schedules_file_includes_fixtures = (schedules_file.nil? ? false : schedules_file.includes_col_name(SchedulesFile::ColumnHotWaterFixtures)) + schedules_file_includes_fixtures = (schedules_file.nil? ? false : schedules_file.includes_col_name(SchedulesFile::Columns[:HotWaterFixtures].name)) if hpxml_bldg.water_heating.water_fixtures_weekday_fractions.nil? && !schedules_file_includes_fixtures hpxml_bldg.water_heating.water_fixtures_weekday_fractions = Schedule.FixturesWeekdayFractions hpxml_bldg.water_heating.water_fixtures_weekday_fractions_isdefaulted = true @@ -2426,7 +2423,7 @@ def self.apply_appliances(hpxml_bldg, nbeds, eri_version, schedules_file) clothes_washer.usage_multiplier = 1.0 clothes_washer.usage_multiplier_isdefaulted = true end - schedules_file_includes_cw = (schedules_file.nil? ? false : schedules_file.includes_col_name(SchedulesFile::ColumnClothesWasher)) + schedules_file_includes_cw = (schedules_file.nil? ? false : schedules_file.includes_col_name(SchedulesFile::Columns[:ClothesWasher].name)) if clothes_washer.weekday_fractions.nil? && !schedules_file_includes_cw clothes_washer.weekday_fractions = Schedule.ClothesWasherWeekdayFractions clothes_washer.weekday_fractions_isdefaulted = true @@ -2474,7 +2471,7 @@ def self.apply_appliances(hpxml_bldg, nbeds, eri_version, schedules_file) clothes_dryer.vented_flow_rate = 100.0 clothes_dryer.vented_flow_rate_isdefaulted = true end - schedules_file_includes_cd = (schedules_file.nil? ? false : schedules_file.includes_col_name(SchedulesFile::ColumnClothesDryer)) + schedules_file_includes_cd = (schedules_file.nil? ? false : schedules_file.includes_col_name(SchedulesFile::Columns[:ClothesDryer].name)) if clothes_dryer.weekday_fractions.nil? && !schedules_file_includes_cd clothes_dryer.weekday_fractions = Schedule.ClothesDryerWeekdayFractions clothes_dryer.weekday_fractions_isdefaulted = true @@ -2519,7 +2516,7 @@ def self.apply_appliances(hpxml_bldg, nbeds, eri_version, schedules_file) dishwasher.usage_multiplier = 1.0 dishwasher.usage_multiplier_isdefaulted = true end - schedules_file_includes_dw = (schedules_file.nil? ? false : schedules_file.includes_col_name(SchedulesFile::ColumnDishwasher)) + schedules_file_includes_dw = (schedules_file.nil? ? false : schedules_file.includes_col_name(SchedulesFile::Columns[:Dishwasher].name)) if dishwasher.weekday_fractions.nil? && !schedules_file_includes_dw dishwasher.weekday_fractions = Schedule.DishwasherWeekdayFractions dishwasher.weekday_fractions_isdefaulted = true @@ -2551,7 +2548,7 @@ def self.apply_appliances(hpxml_bldg, nbeds, eri_version, schedules_file) refrigerator.rated_annual_kwh = default_values[:rated_annual_kwh] refrigerator.rated_annual_kwh_isdefaulted = true end - schedules_file_includes_extrafridge = (schedules_file.nil? ? false : schedules_file.includes_col_name(SchedulesFile::ColumnExtraRefrigerator)) + schedules_file_includes_extrafridge = (schedules_file.nil? ? false : schedules_file.includes_col_name(SchedulesFile::Columns[:ExtraRefrigerator].name)) if !schedules_file_includes_extrafridge if schedules_includes_fractions_multipliers if refrigerator.weekday_fractions.nil? @@ -2587,7 +2584,7 @@ def self.apply_appliances(hpxml_bldg, nbeds, eri_version, schedules_file) refrigerator.rated_annual_kwh = default_values[:rated_annual_kwh] refrigerator.rated_annual_kwh_isdefaulted = true end - schedules_file_includes_fridge = (schedules_file.nil? ? false : schedules_file.includes_col_name(SchedulesFile::ColumnRefrigerator)) + schedules_file_includes_fridge = (schedules_file.nil? ? false : schedules_file.includes_col_name(SchedulesFile::Columns[:Refrigerator].name)) if !schedules_file_includes_fridge if schedules_includes_fractions_multipliers if refrigerator.weekday_fractions.nil? @@ -2636,7 +2633,7 @@ def self.apply_appliances(hpxml_bldg, nbeds, eri_version, schedules_file) freezer.usage_multiplier_isdefaulted = true end schedules_includes_schedule_coefficients = (!freezer.constant_coefficients.nil? || !freezer.temperature_coefficients.nil?) - schedules_file_includes_freezer = (schedules_file.nil? ? false : schedules_file.includes_col_name(SchedulesFile::ColumnFreezer)) + schedules_file_includes_freezer = (schedules_file.nil? ? false : schedules_file.includes_col_name(SchedulesFile::Columns[:Freezer].name)) next unless !schedules_includes_schedule_coefficients if freezer.weekday_fractions.nil? && !schedules_file_includes_freezer @@ -2669,7 +2666,7 @@ def self.apply_appliances(hpxml_bldg, nbeds, eri_version, schedules_file) cooking_range.usage_multiplier = 1.0 cooking_range.usage_multiplier_isdefaulted = true end - schedules_file_includes_range = (schedules_file.nil? ? false : schedules_file.includes_col_name(SchedulesFile::ColumnCookingRange)) + schedules_file_includes_range = (schedules_file.nil? ? false : schedules_file.includes_col_name(SchedulesFile::Columns[:CookingRange].name)) if cooking_range.weekday_fractions.nil? && !schedules_file_includes_range cooking_range.weekday_fractions = Schedule.CookingRangeWeekdayFractions cooking_range.weekday_fractions_isdefaulted = true @@ -2711,7 +2708,7 @@ def self.apply_lighting(hpxml_bldg, schedules_file) hpxml_bldg.lighting.exterior_usage_multiplier_isdefaulted = true end default_lighting_monthly_multipliers = Schedule.LightingMonthlyMultipliers - schedules_file_includes_lighting_interior = (schedules_file.nil? ? false : schedules_file.includes_col_name(SchedulesFile::ColumnLightingInterior)) + schedules_file_includes_lighting_interior = (schedules_file.nil? ? false : schedules_file.includes_col_name(SchedulesFile::Columns[:LightingInterior].name)) if hpxml_bldg.lighting.interior_weekday_fractions.nil? && !schedules_file_includes_lighting_interior hpxml_bldg.lighting.interior_weekday_fractions = Schedule.LightingInteriorWeekdayFractions hpxml_bldg.lighting.interior_weekday_fractions_isdefaulted = true @@ -2725,7 +2722,7 @@ def self.apply_lighting(hpxml_bldg, schedules_file) hpxml_bldg.lighting.interior_monthly_multipliers_isdefaulted = true end if hpxml_bldg.has_location(HPXML::LocationGarage) - schedules_file_includes_lighting_garage = (schedules_file.nil? ? false : schedules_file.includes_col_name(SchedulesFile::ColumnLightingGarage)) + schedules_file_includes_lighting_garage = (schedules_file.nil? ? false : schedules_file.includes_col_name(SchedulesFile::Columns[:LightingGarage].name)) if hpxml_bldg.lighting.garage_weekday_fractions.nil? && !schedules_file_includes_lighting_garage hpxml_bldg.lighting.garage_weekday_fractions = Schedule.LightingGarageWeekdayFractions hpxml_bldg.lighting.garage_weekday_fractions_isdefaulted = true @@ -2739,7 +2736,7 @@ def self.apply_lighting(hpxml_bldg, schedules_file) hpxml_bldg.lighting.garage_monthly_multipliers_isdefaulted = true end end - schedules_file_includes_lighting_exterior = (schedules_file.nil? ? false : schedules_file.includes_col_name(SchedulesFile::ColumnLightingExterior)) + schedules_file_includes_lighting_exterior = (schedules_file.nil? ? false : schedules_file.includes_col_name(SchedulesFile::Columns[:LightingExterior].name)) if hpxml_bldg.lighting.exterior_weekday_fractions.nil? && !schedules_file_includes_lighting_exterior hpxml_bldg.lighting.exterior_weekday_fractions = Schedule.LightingExteriorWeekdayFractions hpxml_bldg.lighting.exterior_weekday_fractions_isdefaulted = true @@ -2774,7 +2771,7 @@ def self.apply_lighting(hpxml_bldg, schedules_file) hpxml_bldg.lighting.holiday_period_end_day = 6 hpxml_bldg.lighting.holiday_period_end_day_isdefaulted = true end - schedules_file_includes_lighting_holiday_exterior = (schedules_file.nil? ? false : schedules_file.includes_col_name(SchedulesFile::ColumnLightingExteriorHoliday)) + schedules_file_includes_lighting_holiday_exterior = (schedules_file.nil? ? false : schedules_file.includes_col_name(SchedulesFile::Columns[:LightingExteriorHoliday].name)) if hpxml_bldg.lighting.holiday_weekday_fractions.nil? && !schedules_file_includes_lighting_holiday_exterior hpxml_bldg.lighting.holiday_weekday_fractions = Schedule.LightingExteriorHolidayWeekdayFractions hpxml_bldg.lighting.holiday_weekday_fractions_isdefaulted = true @@ -2790,16 +2787,15 @@ def self.apply_ceiling_fans(hpxml_bldg, nbeds, weather, schedules_file) return if hpxml_bldg.ceiling_fans.size == 0 ceiling_fan = hpxml_bldg.ceiling_fans[0] - if ceiling_fan.efficiency.nil? - medium_cfm = 3000.0 - ceiling_fan.efficiency = medium_cfm / HVAC.get_default_ceiling_fan_power() - ceiling_fan.efficiency_isdefaulted = true + if ceiling_fan.efficiency.nil? && ceiling_fan.label_energy_use.nil? + ceiling_fan.label_energy_use = HVAC.get_default_ceiling_fan_power() + ceiling_fan.label_energy_use_isdefaulted = true end if ceiling_fan.count.nil? ceiling_fan.count = HVAC.get_default_ceiling_fan_quantity(nbeds) ceiling_fan.count_isdefaulted = true end - schedules_file_includes_ceiling_fan = (schedules_file.nil? ? false : schedules_file.includes_col_name(SchedulesFile::ColumnCeilingFan)) + schedules_file_includes_ceiling_fan = (schedules_file.nil? ? false : schedules_file.includes_col_name(SchedulesFile::Columns[:CeilingFan].name)) if ceiling_fan.weekday_fractions.nil? && !schedules_file_includes_ceiling_fan ceiling_fan.weekday_fractions = Schedule.CeilingFanWeekdayFractions ceiling_fan.weekday_fractions_isdefaulted = true @@ -2829,7 +2825,7 @@ def self.apply_pools_and_permanent_spas(hpxml_bldg, cfa, schedules_file) pool.pump_usage_multiplier = 1.0 pool.pump_usage_multiplier_isdefaulted = true end - schedules_file_includes_pool_pump = (schedules_file.nil? ? false : schedules_file.includes_col_name(SchedulesFile::ColumnPoolPump)) + schedules_file_includes_pool_pump = (schedules_file.nil? ? false : schedules_file.includes_col_name(SchedulesFile::Columns[:PoolPump].name)) if pool.pump_weekday_fractions.nil? && !schedules_file_includes_pool_pump pool.pump_weekday_fractions = Schedule.PoolPumpWeekdayFractions pool.pump_weekday_fractions_isdefaulted = true @@ -2857,7 +2853,7 @@ def self.apply_pools_and_permanent_spas(hpxml_bldg, cfa, schedules_file) pool.heater_usage_multiplier = 1.0 pool.heater_usage_multiplier_isdefaulted = true end - schedules_file_includes_pool_heater = (schedules_file.nil? ? false : schedules_file.includes_col_name(SchedulesFile::ColumnPoolHeater)) + schedules_file_includes_pool_heater = (schedules_file.nil? ? false : schedules_file.includes_col_name(SchedulesFile::Columns[:PoolHeater].name)) if pool.heater_weekday_fractions.nil? && !schedules_file_includes_pool_heater pool.heater_weekday_fractions = Schedule.PoolHeaterWeekdayFractions pool.heater_weekday_fractions_isdefaulted = true @@ -2885,7 +2881,7 @@ def self.apply_pools_and_permanent_spas(hpxml_bldg, cfa, schedules_file) spa.pump_usage_multiplier = 1.0 spa.pump_usage_multiplier_isdefaulted = true end - schedules_file_includes_permanent_spa_pump = (schedules_file.nil? ? false : schedules_file.includes_col_name(SchedulesFile::ColumnPermanentSpaPump)) + schedules_file_includes_permanent_spa_pump = (schedules_file.nil? ? false : schedules_file.includes_col_name(SchedulesFile::Columns[:PermanentSpaPump].name)) if spa.pump_weekday_fractions.nil? && !schedules_file_includes_permanent_spa_pump spa.pump_weekday_fractions = Schedule.PermanentSpaPumpWeekdayFractions spa.pump_weekday_fractions_isdefaulted = true @@ -2913,7 +2909,7 @@ def self.apply_pools_and_permanent_spas(hpxml_bldg, cfa, schedules_file) spa.heater_usage_multiplier = 1.0 spa.heater_usage_multiplier_isdefaulted = true end - schedules_file_includes_permanent_spa_heater = (schedules_file.nil? ? false : schedules_file.includes_col_name(SchedulesFile::ColumnPermanentSpaHeater)) + schedules_file_includes_permanent_spa_heater = (schedules_file.nil? ? false : schedules_file.includes_col_name(SchedulesFile::Columns[:PermanentSpaHeater].name)) if spa.heater_weekday_fractions.nil? && !schedules_file_includes_permanent_spa_heater spa.heater_weekday_fractions = Schedule.PermanentSpaHeaterWeekdayFractions spa.heater_weekday_fractions_isdefaulted = true @@ -2946,7 +2942,7 @@ def self.apply_plug_loads(hpxml_bldg, cfa, schedules_file) plug_load.frac_latent = default_lat_frac plug_load.frac_latent_isdefaulted = true end - schedules_file_includes_plug_loads_other = (schedules_file.nil? ? false : schedules_file.includes_col_name(SchedulesFile::ColumnPlugLoadsOther)) + schedules_file_includes_plug_loads_other = (schedules_file.nil? ? false : schedules_file.includes_col_name(SchedulesFile::Columns[:PlugLoadsOther].name)) if plug_load.weekday_fractions.nil? && !schedules_file_includes_plug_loads_other plug_load.weekday_fractions = Schedule.PlugLoadsOtherWeekdayFractions plug_load.weekday_fractions_isdefaulted = true @@ -2973,7 +2969,7 @@ def self.apply_plug_loads(hpxml_bldg, cfa, schedules_file) plug_load.frac_latent = default_lat_frac plug_load.frac_latent_isdefaulted = true end - schedules_file_includes_plug_loads_tv = (schedules_file.nil? ? false : schedules_file.includes_col_name(SchedulesFile::ColumnPlugLoadsTV)) + schedules_file_includes_plug_loads_tv = (schedules_file.nil? ? false : schedules_file.includes_col_name(SchedulesFile::Columns[:PlugLoadsTV].name)) if plug_load.weekday_fractions.nil? && !schedules_file_includes_plug_loads_tv plug_load.weekday_fractions = Schedule.PlugLoadsTVWeekdayFractions plug_load.weekday_fractions_isdefaulted = true @@ -3000,7 +2996,7 @@ def self.apply_plug_loads(hpxml_bldg, cfa, schedules_file) plug_load.frac_latent = 0.0 plug_load.frac_latent_isdefaulted = true end - schedules_file_includes_plug_loads_vehicle = (schedules_file.nil? ? false : schedules_file.includes_col_name(SchedulesFile::ColumnPlugLoadsVehicle)) + schedules_file_includes_plug_loads_vehicle = (schedules_file.nil? ? false : schedules_file.includes_col_name(SchedulesFile::Columns[:PlugLoadsVehicle].name)) if plug_load.weekday_fractions.nil? && !schedules_file_includes_plug_loads_vehicle plug_load.weekday_fractions = Schedule.PlugLoadsVehicleWeekdayFractions plug_load.weekday_fractions_isdefaulted = true @@ -3027,7 +3023,7 @@ def self.apply_plug_loads(hpxml_bldg, cfa, schedules_file) plug_load.frac_latent = 0.0 plug_load.frac_latent_isdefaulted = true end - schedules_file_includes_plug_loads_well_pump = (schedules_file.nil? ? false : schedules_file.includes_col_name(SchedulesFile::ColumnPlugLoadsWellPump)) + schedules_file_includes_plug_loads_well_pump = (schedules_file.nil? ? false : schedules_file.includes_col_name(SchedulesFile::Columns[:PlugLoadsWellPump].name)) if plug_load.weekday_fractions.nil? && !schedules_file_includes_plug_loads_well_pump plug_load.weekday_fractions = Schedule.PlugLoadsWellPumpWeekdayFractions plug_load.weekday_fractions_isdefaulted = true @@ -3064,7 +3060,7 @@ def self.apply_fuel_loads(hpxml_bldg, cfa, schedules_file) fuel_load.frac_latent = 0.0 fuel_load.frac_latent_isdefaulted = true end - schedules_file_includes_fuel_loads_grill = (schedules_file.nil? ? false : schedules_file.includes_col_name(SchedulesFile::ColumnFuelLoadsGrill)) + schedules_file_includes_fuel_loads_grill = (schedules_file.nil? ? false : schedules_file.includes_col_name(SchedulesFile::Columns[:FuelLoadsGrill].name)) if fuel_load.weekday_fractions.nil? && !schedules_file_includes_fuel_loads_grill fuel_load.weekday_fractions = Schedule.FuelLoadsGrillWeekdayFractions fuel_load.weekday_fractions_isdefaulted = true @@ -3090,7 +3086,7 @@ def self.apply_fuel_loads(hpxml_bldg, cfa, schedules_file) fuel_load.frac_latent = 0.0 fuel_load.frac_latent_isdefaulted = true end - schedules_file_includes_fuel_loads_lighting = (schedules_file.nil? ? false : schedules_file.includes_col_name(SchedulesFile::ColumnFuelLoadsLighting)) + schedules_file_includes_fuel_loads_lighting = (schedules_file.nil? ? false : schedules_file.includes_col_name(SchedulesFile::Columns[:FuelLoadsLighting].name)) if fuel_load.weekday_fractions.nil? && !schedules_file_includes_fuel_loads_lighting fuel_load.weekday_fractions = Schedule.FuelLoadsLightingWeekdayFractions fuel_load.weekday_fractions_isdefaulted = true @@ -3116,7 +3112,7 @@ def self.apply_fuel_loads(hpxml_bldg, cfa, schedules_file) fuel_load.frac_latent = 0.1 fuel_load.frac_latent_isdefaulted = true end - schedules_file_includes_fuel_loads_fireplace = (schedules_file.nil? ? false : schedules_file.includes_col_name(SchedulesFile::ColumnFuelLoadsFireplace)) + schedules_file_includes_fuel_loads_fireplace = (schedules_file.nil? ? false : schedules_file.includes_col_name(SchedulesFile::Columns[:FuelLoadsFireplace].name)) if fuel_load.weekday_fractions.nil? && !schedules_file_includes_fuel_loads_fireplace fuel_load.weekday_fractions = Schedule.FuelLoadsFireplaceWeekdayFractions fuel_load.weekday_fractions_isdefaulted = true diff --git a/hpxml-measures/HPXMLtoOpenStudio/resources/hpxml_schema/HPXML.xsd b/hpxml-measures/HPXMLtoOpenStudio/resources/hpxml_schema/HPXML.xsd index 9eec7c6e3..a43ffdadb 100644 --- a/hpxml-measures/HPXMLtoOpenStudio/resources/hpxml_schema/HPXML.xsd +++ b/hpxml-measures/HPXMLtoOpenStudio/resources/hpxml_schema/HPXML.xsd @@ -2463,6 +2463,26 @@ Number of similar ceiling fans. + + + [W] Energy use per the EnergyGuide label + + + + + [$] Estimated yearly energy cost per the EnergyGuide label + + + + + [$/kWh] Electric rate per the EnergyGuide label + + + + + [hrs/day] Hours use per day per the EnergyGuide label + + diff --git a/hpxml-measures/HPXMLtoOpenStudio/resources/hpxml_schematron/EPvalidator.xml b/hpxml-measures/HPXMLtoOpenStudio/resources/hpxml_schematron/EPvalidator.xml index 186a63bd0..b8ecbcf6a 100644 --- a/hpxml-measures/HPXMLtoOpenStudio/resources/hpxml_schematron/EPvalidator.xml +++ b/hpxml-measures/HPXMLtoOpenStudio/resources/hpxml_schematron/EPvalidator.xml @@ -911,7 +911,7 @@ Expected 1 element(s) for xpath: AnnualHeatingEfficiency[Units="AFUE"]/Value Expected AnnualHeatingEfficiency[Units="AFUE"]/Value to be less than or equal to 1 Expected 1 element(s) for xpath: FractionHeatLoadServed - Expected 1 element(s) for xpath: extension/SharedLoopWatts + Expected 0 or 1 element(s) for xpath: ElectricAuxiliaryEnergy | extension/SharedLoopWatts Expected extension/SharedLoopWatts to be greater than or equal to 0 AFUE should typically be greater than or equal to 0.5. @@ -921,7 +921,7 @@ [HeatingSystemType=SharedBoilerWthFanCoil] - Expected 1 element(s) for xpath: extension/FanCoilWatts + Expected 0 or 1 element(s) for xpath: ElectricAuxiliaryEnergy | extension/FanCoilWatts Expected extension/FanCoilWatts to be greater than or equal to 0 @@ -2439,6 +2439,7 @@ Expected 0 or 1 element(s) for xpath: Airflow[FanSpeed="medium"]/Efficiency Expected 0 or 1 element(s) for xpath: Count + Expected 0 or 1 element(s) for xpath: LabelEnergyUse Expected 0 or 1 element(s) for xpath: extension/WeekdayScheduleFractions Expected 0 or 1 element(s) for xpath: extension/WeekendScheduleFractions Expected 0 or 1 element(s) for xpath: extension/MonthlyScheduleMultipliers diff --git a/hpxml-measures/HPXMLtoOpenStudio/resources/hvac.rb b/hpxml-measures/HPXMLtoOpenStudio/resources/hvac.rb index c6310a350..9f39d6c55 100644 --- a/hpxml-measures/HPXMLtoOpenStudio/resources/hvac.rb +++ b/hpxml-measures/HPXMLtoOpenStudio/resources/hvac.rb @@ -823,7 +823,7 @@ def self.apply_dehumidifiers(runner, model, dehumidifiers, conditioned_space, un control_zone.setZoneControlHumidistat(humidistat) # Availability Schedule - dehum_unavailable_periods = Schedule.get_unavailable_periods(runner, SchedulesFile::ColumnDehumidifier, unavailable_periods) + dehum_unavailable_periods = Schedule.get_unavailable_periods(runner, SchedulesFile::Columns[:Dehumidifier].name, unavailable_periods) avail_sch = ScheduleConstant.new(model, obj_name + ' schedule', 1.0, Constants.ScheduleTypeLimitsFraction, unavailable_periods: dehum_unavailable_periods) avail_sch = avail_sch.schedule @@ -847,15 +847,20 @@ def self.apply_dehumidifiers(runner, model, dehumidifiers, conditioned_space, un def self.apply_ceiling_fans(model, runner, weather, ceiling_fan, conditioned_space, schedules_file, unavailable_periods) obj_name = Constants.ObjectNameCeilingFan - medium_cfm = 3000.0 # From ANSI 301-2019 hrs_per_day = 10.5 # From ANSI 301-2019 cfm_per_w = ceiling_fan.efficiency + label_energy_use = ceiling_fan.label_energy_use count = ceiling_fan.count - annual_kwh = UnitConversions.convert(count * medium_cfm / cfm_per_w * hrs_per_day * 365.0, 'Wh', 'kWh') + if !label_energy_use.nil? # priority if both provided + annual_kwh = UnitConversions.convert(count * label_energy_use * hrs_per_day * 365.0, 'Wh', 'kWh') + elsif !cfm_per_w.nil? + medium_cfm = get_default_ceiling_fan_medium_cfm() + annual_kwh = UnitConversions.convert(count * medium_cfm / cfm_per_w * hrs_per_day * 365.0, 'Wh', 'kWh') + end # Create schedule ceiling_fan_sch = nil - ceiling_fan_col_name = SchedulesFile::ColumnCeilingFan + ceiling_fan_col_name = SchedulesFile::Columns[:CeilingFan].name if not schedules_file.nil? annual_kwh *= Schedule.CeilingFanMonthlyMultipliers(weather: weather).split(',').map(&:to_f).sum(0.0) / 12.0 ceiling_fan_design_level = schedules_file.calc_design_level_from_annual_kwh(col_name: ceiling_fan_col_name, annual_kwh: annual_kwh) @@ -893,23 +898,23 @@ def self.apply_setpoints(model, runner, weather, hvac_control, conditioned_zone, heating_sch = nil cooling_sch = nil if not schedules_file.nil? - heating_sch = schedules_file.create_schedule_file(model, col_name: SchedulesFile::ColumnHeatingSetpoint) + heating_sch = schedules_file.create_schedule_file(model, col_name: SchedulesFile::Columns[:HeatingSetpoint].name) end if not schedules_file.nil? - cooling_sch = schedules_file.create_schedule_file(model, col_name: SchedulesFile::ColumnCoolingSetpoint) + cooling_sch = schedules_file.create_schedule_file(model, col_name: SchedulesFile::Columns[:CoolingSetpoint].name) end # permit mixing detailed schedules with simple schedules if heating_sch.nil? htg_weekday_setpoints, htg_weekend_setpoints = get_heating_setpoints(hvac_control, year) else - runner.registerWarning("Both '#{SchedulesFile::ColumnHeatingSetpoint}' schedule file and heating setpoint temperature provided; the latter will be ignored.") if !hvac_control.heating_setpoint_temp.nil? + runner.registerWarning("Both '#{SchedulesFile::Columns[:HeatingSetpoint].name}' schedule file and heating setpoint temperature provided; the latter will be ignored.") if !hvac_control.heating_setpoint_temp.nil? end if cooling_sch.nil? clg_weekday_setpoints, clg_weekend_setpoints = get_cooling_setpoints(hvac_control, has_ceiling_fan, year, weather) else - runner.registerWarning("Both '#{SchedulesFile::ColumnCoolingSetpoint}' schedule file and cooling setpoint temperature provided; the latter will be ignored.") if !hvac_control.cooling_setpoint_temp.nil? + runner.registerWarning("Both '#{SchedulesFile::Columns[:CoolingSetpoint].name}' schedule file and cooling setpoint temperature provided; the latter will be ignored.") if !hvac_control.cooling_setpoint_temp.nil? end # only deal with deadband issue if both schedules are simple @@ -1514,6 +1519,11 @@ def self.get_default_ceiling_fan_power() return 42.6 # W end + def self.get_default_ceiling_fan_medium_cfm() + # From ANSI 301-2019 + return 3000.0 # cfm + end + def self.get_default_ceiling_fan_quantity(nbeds) # Per ANSI/RESNET/ICC 301 return nbeds + 1 @@ -2002,16 +2012,65 @@ def self.apply_dehumidifier_ief_to_ef_inputs(dh_type, w_coeff, ef_coeff, ief, wa return ef_input, water_removal_rate_input end - def self.get_default_in_unit_boiler_eae(boiler_fuel) - # Electric auxiliary energy, from ANSI/RESNET/ICC 301-2022 Addendum C Standard - if [HPXML::FuelTypeNaturalGas, - HPXML::FuelTypePropane, - HPXML::FuelTypeElectricity, - HPXML::FuelTypeWoodCord, - HPXML::FuelTypeWoodPellets].include? boiler_fuel - return 170.0 # kWh/yr - else - return 330.0 # kWh/yr + def self.get_default_boiler_eae(heating_system) + if heating_system.heating_system_type != HPXML::HVACTypeBoiler + return + end + if not heating_system.electric_auxiliary_energy.nil? + return heating_system.electric_auxiliary_energy + end + + # From ANSI/RESNET/ICC 301-2019 Standard + fuel = heating_system.heating_system_fuel + + if heating_system.is_shared_system + distribution_system = heating_system.distribution_system + distribution_type = distribution_system.distribution_system_type + + if not heating_system.shared_loop_watts.nil? + sp_kw = UnitConversions.convert(heating_system.shared_loop_watts, 'W', 'kW') + n_dweq = heating_system.number_of_units_served.to_f + if distribution_system.air_type == HPXML::AirTypeFanCoil + aux_in = UnitConversions.convert(heating_system.fan_coil_watts, 'W', 'kW') + else + aux_in = 0.0 # ANSI/RESNET/ICC 301-2019 Section 4.4.7.2 + end + # ANSI/RESNET/ICC 301-2019 Equation 4.4-5 + return (((sp_kw / n_dweq) + aux_in) * 2080.0).round(2) # kWh/yr + elsif distribution_type == HPXML::HVACDistributionTypeHydronic + # kWh/yr, per ANSI/RESNET/ICC 301-2019 Table 4.5.2(5) + if distribution_system.hydronic_type == HPXML::HydronicTypeWaterLoop # Shared boiler w/ WLHP + return 265.0 + else # Shared boiler w/ baseboard/radiators/etc + return 220.0 + end + elsif distribution_type == HPXML::HVACDistributionTypeAir + if distribution_system.air_type == HPXML::AirTypeFanCoil # Shared boiler w/ fan coil + return 438.0 + end + end + + else # In-unit boilers + + if [HPXML::FuelTypeNaturalGas, + HPXML::FuelTypePropane, + HPXML::FuelTypeElectricity, + HPXML::FuelTypeWoodCord, + HPXML::FuelTypeWoodPellets].include? fuel + return 170.0 # kWh/yr + elsif [HPXML::FuelTypeOil, + HPXML::FuelTypeOil1, + HPXML::FuelTypeOil2, + HPXML::FuelTypeOil4, + HPXML::FuelTypeOil5or6, + HPXML::FuelTypeDiesel, + HPXML::FuelTypeKerosene, + HPXML::FuelTypeCoal, + HPXML::FuelTypeCoalAnthracite, + HPXML::FuelTypeCoalBituminous, + HPXML::FuelTypeCoke].include? fuel + return 330.0 # kWh/yr + end end end @@ -3402,17 +3461,6 @@ def self.apply_shared_heating_systems(hpxml_bldg) distribution_system = heating_system.distribution_system hydronic_type = distribution_system.hydronic_type - if heating_system.heating_system_type == HPXML::HVACTypeBoiler - sp_kw = UnitConversions.convert(heating_system.shared_loop_watts, 'W', 'kW') - n_dweq = heating_system.number_of_units_served.to_f - if distribution_system.air_type == HPXML::AirTypeFanCoil - aux_in = UnitConversions.convert(heating_system.fan_coil_watts, 'W', 'kW') - else - aux_in = 0.0 - end - heating_system.electric_auxiliary_energy = (((sp_kw / n_dweq) + aux_in) * 2080.0).round(2) # kWh/yr - end - if heating_system.heating_system_type == HPXML::HVACTypeBoiler && hydronic_type.to_s == HPXML::HydronicTypeWaterLoop # Shared boiler w/ water loop heat pump diff --git a/hpxml-measures/HPXMLtoOpenStudio/resources/hvac_sizing.rb b/hpxml-measures/HPXMLtoOpenStudio/resources/hvac_sizing.rb index 4eb2a3f71..e62610034 100644 --- a/hpxml-measures/HPXMLtoOpenStudio/resources/hvac_sizing.rb +++ b/hpxml-measures/HPXMLtoOpenStudio/resources/hvac_sizing.rb @@ -933,7 +933,7 @@ def self.process_load_infiltration_ventilation(mj, bldg_design_loads, weather) Heating and Cooling Loads: Infiltration & Ventilation ''' - sla, _ach50, _nach, _volume, _height, a_ext = Airflow.get_values_from_air_infiltration_measurements(@hpxml_bldg, @cfa, weather) + sla, _, _, _, _, a_ext = Airflow.get_values_from_air_infiltration_measurements(@hpxml_bldg, @cfa, weather) sla *= a_ext ela = sla * @cfa diff --git a/hpxml-measures/HPXMLtoOpenStudio/resources/lighting.rb b/hpxml-measures/HPXMLtoOpenStudio/resources/lighting.rb index 1cc4a88c6..2cccc6643 100644 --- a/hpxml-measures/HPXMLtoOpenStudio/resources/lighting.rb +++ b/hpxml-measures/HPXMLtoOpenStudio/resources/lighting.rb @@ -62,7 +62,7 @@ def self.apply(runner, model, spaces, lighting_groups, lighting, eri_version, sc # Create schedule interior_sch = nil - interior_col_name = SchedulesFile::ColumnLightingInterior + interior_col_name = SchedulesFile::Columns[:LightingInterior].name interior_obj_name = Constants.ObjectNameLightingInterior if not schedules_file.nil? design_level = schedules_file.calc_design_level_from_annual_kwh(col_name: interior_col_name, annual_kwh: int_kwh) @@ -101,7 +101,7 @@ def self.apply(runner, model, spaces, lighting_groups, lighting, eri_version, sc # Create schedule garage_sch = nil - garage_col_name = SchedulesFile::ColumnLightingGarage + garage_col_name = SchedulesFile::Columns[:LightingGarage].name garage_obj_name = Constants.ObjectNameLightingGarage if not schedules_file.nil? design_level = schedules_file.calc_design_level_from_annual_kwh(col_name: garage_col_name, annual_kwh: grg_kwh) @@ -137,7 +137,7 @@ def self.apply(runner, model, spaces, lighting_groups, lighting, eri_version, sc # Create schedule exterior_sch = nil - exterior_col_name = SchedulesFile::ColumnLightingExterior + exterior_col_name = SchedulesFile::Columns[:LightingExterior].name exterior_obj_name = Constants.ObjectNameLightingExterior if not schedules_file.nil? design_level = schedules_file.calc_design_level_from_annual_kwh(col_name: exterior_col_name, annual_kwh: ext_kwh) @@ -169,7 +169,7 @@ def self.apply(runner, model, spaces, lighting_groups, lighting, eri_version, sc # Create schedule exterior_holiday_sch = nil - exterior_holiday_col_name = SchedulesFile::ColumnLightingExteriorHoliday + exterior_holiday_col_name = SchedulesFile::Columns[:LightingExteriorHoliday].name exterior_holiday_obj_name = Constants.ObjectNameLightingExteriorHoliday exterior_holiday_kwh_per_day = lighting.holiday_kwh_per_day * unit_multiplier if not schedules_file.nil? diff --git a/hpxml-measures/HPXMLtoOpenStudio/resources/misc_loads.rb b/hpxml-measures/HPXMLtoOpenStudio/resources/misc_loads.rb index 3eadb2255..c323f5ed8 100644 --- a/hpxml-measures/HPXMLtoOpenStudio/resources/misc_loads.rb +++ b/hpxml-measures/HPXMLtoOpenStudio/resources/misc_loads.rb @@ -12,13 +12,13 @@ def self.apply_plug(model, runner, plug_load, obj_name, conditioned_space, apply # Create schedule sch = nil if plug_load.plug_load_type == HPXML::PlugLoadTypeOther - col_name = SchedulesFile::ColumnPlugLoadsOther + col_name = SchedulesFile::Columns[:PlugLoadsOther].name elsif plug_load.plug_load_type == HPXML::PlugLoadTypeTelevision - col_name = SchedulesFile::ColumnPlugLoadsTV + col_name = SchedulesFile::Columns[:PlugLoadsTV].name elsif plug_load.plug_load_type == HPXML::PlugLoadTypeElectricVehicleCharging - col_name = SchedulesFile::ColumnPlugLoadsVehicle + col_name = SchedulesFile::Columns[:PlugLoadsVehicle].name elsif plug_load.plug_load_type == HPXML::PlugLoadTypeWellPump - col_name = SchedulesFile::ColumnPlugLoadsWellPump + col_name = SchedulesFile::Columns[:PlugLoadsWellPump].name end if not schedules_file.nil? space_design_level = schedules_file.calc_design_level_from_annual_kwh(col_name: col_name, annual_kwh: kwh) @@ -70,11 +70,11 @@ def self.apply_fuel(model, runner, fuel_load, obj_name, conditioned_space, sched # Create schedule sch = nil if fuel_load.fuel_load_type == HPXML::FuelLoadTypeGrill - col_name = SchedulesFile::ColumnFuelLoadsGrill + col_name = SchedulesFile::Columns[:FuelLoadsGrill].name elsif fuel_load.fuel_load_type == HPXML::FuelLoadTypeLighting - col_name = SchedulesFile::ColumnFuelLoadsLighting + col_name = SchedulesFile::Columns[:FuelLoadsLighting].name elsif fuel_load.fuel_load_type == HPXML::FuelLoadTypeFireplace - col_name = SchedulesFile::ColumnFuelLoadsFireplace + col_name = SchedulesFile::Columns[:FuelLoadsFireplace].name end if not schedules_file.nil? space_design_level = schedules_file.calc_design_level_from_annual_therm(col_name: col_name, annual_therm: therm) diff --git a/hpxml-measures/HPXMLtoOpenStudio/resources/schedules.rb b/hpxml-measures/HPXMLtoOpenStudio/resources/schedules.rb index 902778b52..5b860c065 100644 --- a/hpxml-measures/HPXMLtoOpenStudio/resources/schedules.rb +++ b/hpxml-measures/HPXMLtoOpenStudio/resources/schedules.rb @@ -1310,7 +1310,6 @@ def self.get_unavailable_periods_csv_data def self.unavailable_period_applies(runner, schedule_name, col_name) if @unavailable_periods_csv_data.nil? @unavailable_periods_csv_data = get_unavailable_periods_csv_data - end @unavailable_periods_csv_data.each do |csv_row| next if csv_row['Schedule Name'] != schedule_name @@ -1326,9 +1325,9 @@ def self.unavailable_period_applies(runner, schedule_name, col_name) end if applies == 1 if not runner.nil? - if schedule_name == SchedulesFile::ColumnHVAC + if schedule_name == SchedulesFile::Columns[:HVAC].name runner.registerWarning('It is not possible to eliminate all HVAC energy use (e.g. crankcase/defrost energy) in EnergyPlus during an unavailable period.') - elsif schedule_name == SchedulesFile::ColumnWaterHeater + elsif schedule_name == SchedulesFile::Columns[:WaterHeater].name runner.registerWarning('It is not possible to eliminate all water heater energy use (e.g. parasitics) in EnergyPlus during an unavailable period.') end end @@ -1381,51 +1380,65 @@ def self.valid_float?(str) end class SchedulesFile - # Constants - ColumnOccupants = 'occupants' - ColumnLightingInterior = 'lighting_interior' - ColumnLightingExterior = 'lighting_exterior' - ColumnLightingGarage = 'lighting_garage' - ColumnLightingExteriorHoliday = 'lighting_exterior_holiday' - ColumnCookingRange = 'cooking_range' - ColumnRefrigerator = 'refrigerator' - ColumnExtraRefrigerator = 'extra_refrigerator' - ColumnFreezer = 'freezer' - ColumnDishwasher = 'dishwasher' - ColumnClothesWasher = 'clothes_washer' - ColumnClothesDryer = 'clothes_dryer' - ColumnCeilingFan = 'ceiling_fan' - ColumnPlugLoadsOther = 'plug_loads_other' - ColumnPlugLoadsTV = 'plug_loads_tv' - ColumnPlugLoadsVehicle = 'plug_loads_vehicle' - ColumnPlugLoadsWellPump = 'plug_loads_well_pump' - ColumnFuelLoadsGrill = 'fuel_loads_grill' - ColumnFuelLoadsLighting = 'fuel_loads_lighting' - ColumnFuelLoadsFireplace = 'fuel_loads_fireplace' - ColumnPoolPump = 'pool_pump' - ColumnPoolHeater = 'pool_heater' - ColumnPermanentSpaPump = 'permanent_spa_pump' - ColumnPermanentSpaHeater = 'permanent_spa_heater' - ColumnHotWaterDishwasher = 'hot_water_dishwasher' - ColumnHotWaterClothesWasher = 'hot_water_clothes_washer' - ColumnHotWaterFixtures = 'hot_water_fixtures' - ColumnGeneralWaterUse = 'general_water_use' - ColumnHotWaterRecirculationPump = 'hot_water_recirculation_pump' - ColumnSleeping = 'sleeping' - ColumnHeatingSetpoint = 'heating_setpoint' - ColumnCoolingSetpoint = 'cooling_setpoint' - ColumnWaterHeaterSetpoint = 'water_heater_setpoint' - ColumnWaterHeaterOperatingMode = 'water_heater_operating_mode' - ColumnBattery = 'battery' - ColumnBatteryCharging = 'battery_charging' - ColumnBatteryDischarging = 'battery_discharging' - ColumnHVAC = 'hvac' - ColumnWaterHeater = 'water_heater' - ColumnDehumidifier = 'dehumidifier' - ColumnKitchenFan = 'kitchen_fan' - ColumnBathFan = 'bath_fan' - ColumnHouseFan = 'house_fan' - ColumnWholeHouseFan = 'whole_house_fan' + class Column + def initialize(name, used_by_unavailable_periods, can_be_stochastic, type) + @name = name + @used_by_unavailable_periods = used_by_unavailable_periods + @can_be_stochastic = can_be_stochastic + @type = type + end + attr_accessor(:name, :used_by_unavailable_periods, :can_be_stochastic, :type) + end + + # Define all schedule columns + # Columns may be used for A) detailed schedule CSVs (e.g., occupants), B) unavailable + # periods CSV (e.g., hvac), and/or C) EnergyPlus-specific schedules (e.g., battery_charging). + Columns = { + Occupants: Column.new('occupants', true, true, :frac), + LightingInterior: Column.new('lighting_interior', true, true, :frac), + LightingExterior: Column.new('lighting_exterior', true, false, :frac), + LightingGarage: Column.new('lighting_garage', true, true, :frac), + LightingExteriorHoliday: Column.new('lighting_exterior_holiday', true, false, :frac), + CookingRange: Column.new('cooking_range', true, true, :frac), + Refrigerator: Column.new('refrigerator', true, false, :frac), + ExtraRefrigerator: Column.new('extra_refrigerator', true, false, :frac), + Freezer: Column.new('freezer', true, false, :frac), + Dishwasher: Column.new('dishwasher', true, true, :frac), + ClothesWasher: Column.new('clothes_washer', true, true, :frac), + ClothesDryer: Column.new('clothes_dryer', true, true, :frac), + CeilingFan: Column.new('ceiling_fan', true, true, :frac), + PlugLoadsOther: Column.new('plug_loads_other', true, true, :frac), + PlugLoadsTV: Column.new('plug_loads_tv', true, true, :frac), + PlugLoadsVehicle: Column.new('plug_loads_vehicle', true, false, :frac), + PlugLoadsWellPump: Column.new('plug_loads_well_pump', true, false, :frac), + FuelLoadsGrill: Column.new('fuel_loads_grill', true, false, :frac), + FuelLoadsLighting: Column.new('fuel_loads_lighting', true, false, :frac), + FuelLoadsFireplace: Column.new('fuel_loads_fireplace', true, false, :frac), + PoolPump: Column.new('pool_pump', true, false, :frac), + PoolHeater: Column.new('pool_heater', true, false, :frac), + PermanentSpaPump: Column.new('permanent_spa_pump', true, false, :frac), + PermanentSpaHeater: Column.new('permanent_spa_heater', true, false, :frac), + HotWaterDishwasher: Column.new('hot_water_dishwasher', false, true, :frac), + HotWaterClothesWasher: Column.new('hot_water_clothes_washer', false, true, :frac), + HotWaterFixtures: Column.new('hot_water_fixtures', true, true, :frac), + HotWaterRecirculationPump: Column.new('hot_water_recirculation_pump', true, false, :frac), + GeneralWaterUse: Column.new('general_water_use', true, false, :frac), + Sleeping: Column.new('sleeping', false, false, nil), + HeatingSetpoint: Column.new('heating_setpoint', false, false, :setpoint), + CoolingSetpoint: Column.new('cooling_setpoint', false, false, :setpoint), + WaterHeaterSetpoint: Column.new('water_heater_setpoint', false, false, :setpoint), + WaterHeaterOperatingMode: Column.new('water_heater_operating_mode', false, false, :zero_or_one), + Battery: Column.new('battery', false, false, :neg_one_to_one), + BatteryCharging: Column.new('battery_charging', false, false, nil), + BatteryDischarging: Column.new('battery_discharging', false, false, nil), + HVAC: Column.new('hvac', true, false, nil), + WaterHeater: Column.new('water_heater', true, false, nil), + Dehumidifier: Column.new('dehumidifier', true, false, nil), + KitchenFan: Column.new('kitchen_fan', true, false, nil), + BathFan: Column.new('bath_fan', true, false, nil), + HouseFan: Column.new('house_fan', true, false, nil), + WholeHouseFan: Column.new('whole_house_fan', true, false, nil), + } def initialize(runner: nil, schedules_paths:, @@ -1436,7 +1449,7 @@ def initialize(runner: nil, @year = year import(schedules_paths) - battery_schedules + create_battery_charging_discharging_schedules expand_schedules @tmp_schedules = Marshal.load(Marshal.dump(@schedules)) set_unavailable_periods(runner, unavailable_periods) @@ -1468,6 +1481,7 @@ def import(schedules_paths) columns = CSV.read(schedules_path).transpose columns.each do |col| col_name = col[0] + column = Columns.values.find { |c| c.name == col_name } values = col[1..-1].reject { |v| v.nil? } @@ -1481,19 +1495,19 @@ def import(schedules_paths) fail "Schedule column name '#{col_name}' is duplicated. [context: #{schedules_path}]" end - if max_value_one[col_name] + if column.type == :frac if values.max > 1.01 || values.max < 0.99 # Allow some imprecision fail "Schedule max value for column '#{col_name}' must be 1. [context: #{schedules_path}]" end end - if min_value_zero[col_name] + if column.type == :frac if values.min < 0 fail "Schedule min value for column '#{col_name}' must be non-negative. [context: #{schedules_path}]" end end - if value_neg_one_to_one[col_name] + if column.type == :neg_one_to_one if values.min < -1 fail "Schedule value for column '#{col_name}' must be greater than or equal to -1. [context: #{schedules_path}]" end @@ -1502,7 +1516,7 @@ def import(schedules_paths) end end - if only_zeros_and_ones[col_name] + if column.type == :zero_or_one if values.any? { |v| v != 0 && v != 1 } fail "Schedule value for column '#{col_name}' must be either 0 or 1. [context: #{schedules_path}]" end @@ -1761,28 +1775,26 @@ def set_unavailable_periods(runner, unavailable_periods) @tmp_schedules.keys.each do |schedule_name| next if column_names.include? schedule_name - next if SchedulesFile.OperatingModeColumnNames.include?(schedule_name) - next if SchedulesFile.BatteryColumnNames.include?(schedule_name) schedule_name2 = schedule_name - if [SchedulesFile::ColumnHotWaterDishwasher].include?(schedule_name) - schedule_name2 = SchedulesFile::ColumnDishwasher - elsif [SchedulesFile::ColumnHotWaterClothesWasher].include?(schedule_name) - schedule_name2 = SchedulesFile::ColumnClothesWasher - elsif [SchedulesFile::ColumnHeatingSetpoint, SchedulesFile::ColumnCoolingSetpoint].include?(schedule_name) - schedule_name2 = SchedulesFile::ColumnHVAC - elsif [SchedulesFile::ColumnWaterHeaterSetpoint].include?(schedule_name) - schedule_name2 = SchedulesFile::ColumnWaterHeater + if [SchedulesFile::Columns[:HotWaterDishwasher].name].include?(schedule_name) + schedule_name2 = SchedulesFile::Columns[:Dishwasher].name + elsif [SchedulesFile::Columns[:HotWaterClothesWasher].name].include?(schedule_name) + schedule_name2 = SchedulesFile::Columns[:ClothesWasher].name + elsif [SchedulesFile::Columns[:HeatingSetpoint].name, SchedulesFile::Columns[:CoolingSetpoint].name].include?(schedule_name) + schedule_name2 = SchedulesFile::Columns[:HVAC].name + elsif [SchedulesFile::Columns[:WaterHeaterSetpoint].name].include?(schedule_name) + schedule_name2 = SchedulesFile::Columns[:WaterHeater].name end # Skip those unaffected next unless Schedule.unavailable_period_applies(runner, schedule_name2, column_name) @tmp_schedules[column_name].each_with_index do |_ts, i| - if schedule_name == ColumnWaterHeaterSetpoint + if schedule_name == SchedulesFile::Columns[:WaterHeaterSetpoint].name # Temperature of tank < 2C indicates of possibility of freeze. @tmp_schedules[schedule_name][i] = UnitConversions.convert(2.0, 'C', 'F') if @tmp_schedules[column_name][i] == 1.0 - elsif ![SchedulesFile::ColumnHeatingSetpoint, SchedulesFile::ColumnCoolingSetpoint].include?(schedule_name) + elsif ![SchedulesFile::Columns[:HeatingSetpoint].name, SchedulesFile::Columns[:CoolingSetpoint].name].include?(schedule_name) @tmp_schedules[schedule_name][i] *= (1.0 - @tmp_schedules[column_name][i]) end end @@ -1791,12 +1803,13 @@ def set_unavailable_periods(runner, unavailable_periods) end def convert_setpoints - return if @tmp_schedules.keys.none? { |k| SchedulesFile.SetpointColumnNames.include?(k) } + setpoint_col_names = Columns.values.select { |c| c.type == :setpoint }.map { |c| c.name } + return if @tmp_schedules.keys.none? { |k| setpoint_col_names.include?(k) } col_names = @tmp_schedules.keys @tmp_schedules[col_names[0]].each_with_index do |_ts, i| - SchedulesFile.SetpointColumnNames.each do |setpoint_col_name| + setpoint_col_names.each do |setpoint_col_name| next unless col_names.include?(setpoint_col_name) @tmp_schedules[setpoint_col_name][i] = UnitConversions.convert(@tmp_schedules[setpoint_col_name][i], 'f', 'c').round(4) @@ -1804,139 +1817,19 @@ def convert_setpoints end end - def battery_schedules - return if !@schedules.keys.include?(SchedulesFile::ColumnBattery) - - @schedules[SchedulesFile::ColumnBatteryCharging] = Array.new(@schedules[SchedulesFile::ColumnBattery].size, 0) - @schedules[SchedulesFile::ColumnBatteryDischarging] = Array.new(@schedules[SchedulesFile::ColumnBattery].size, 0) - @schedules[SchedulesFile::ColumnBattery].each_with_index do |_ts, i| - if @schedules[SchedulesFile::ColumnBattery][i] > 0 - @schedules[SchedulesFile::ColumnBatteryCharging][i] = @schedules[SchedulesFile::ColumnBattery][i] - elsif @schedules[SchedulesFile::ColumnBattery][i] < 0 - @schedules[SchedulesFile::ColumnBatteryDischarging][i] = -1 * @schedules[SchedulesFile::ColumnBattery][i] - end - end - @schedules.delete(SchedulesFile::ColumnBattery) - end - - def self.ColumnNames - return SchedulesFile.OccupancyColumnNames + SchedulesFile.HVACSetpointColumnNames + SchedulesFile.WaterHeaterColumnNames + SchedulesFile.BatteryColumnNames - end - - def self.OccupancyColumnNames - return [ - ColumnOccupants, - ColumnLightingInterior, - ColumnLightingExterior, - ColumnLightingGarage, - ColumnLightingExteriorHoliday, - ColumnCookingRange, - ColumnRefrigerator, - ColumnExtraRefrigerator, - ColumnFreezer, - ColumnDishwasher, - ColumnClothesWasher, - ColumnClothesDryer, - ColumnCeilingFan, - ColumnPlugLoadsOther, - ColumnPlugLoadsTV, - ColumnPlugLoadsVehicle, - ColumnPlugLoadsWellPump, - ColumnFuelLoadsGrill, - ColumnFuelLoadsLighting, - ColumnFuelLoadsFireplace, - ColumnPoolPump, - ColumnPoolHeater, - ColumnPermanentSpaPump, - ColumnPermanentSpaHeater, - ColumnHotWaterDishwasher, - ColumnHotWaterClothesWasher, - ColumnHotWaterFixtures, - ColumnHotWaterRecirculationPump - ] - end - - def self.HVACSetpointColumnNames - return [ - ColumnHeatingSetpoint, - ColumnCoolingSetpoint - ] - end - - def self.WaterHeaterColumnNames - return [ - ColumnWaterHeaterSetpoint, - ColumnWaterHeaterOperatingMode - ] - end - - def self.SetpointColumnNames - return [ - ColumnHeatingSetpoint, - ColumnCoolingSetpoint, - ColumnWaterHeaterSetpoint - ] - end - - def self.OperatingModeColumnNames - return [ - ColumnWaterHeaterOperatingMode - ] - end - - def self.BatteryColumnNames - return [ - ColumnBattery, - ColumnBatteryCharging, - ColumnBatteryDischarging - ] - end - - def max_value_one - max_value_one = {} - column_names = SchedulesFile.ColumnNames - column_names.each do |column_name| - max_value_one[column_name] = true - if SchedulesFile.SetpointColumnNames.include?(column_name) || SchedulesFile.OperatingModeColumnNames.include?(column_name) || SchedulesFile.BatteryColumnNames.include?(column_name) - max_value_one[column_name] = false - end - end - return max_value_one - end + def create_battery_charging_discharging_schedules + battery_col_name = Columns[:Battery].name + return if !@schedules.keys.include?(battery_col_name) - def min_value_zero - min_value_zero = {} - column_names = SchedulesFile.ColumnNames - column_names.each do |column_name| - min_value_zero[column_name] = true - if SchedulesFile.SetpointColumnNames.include?(column_name) || SchedulesFile.OperatingModeColumnNames.include?(column_name) || SchedulesFile.BatteryColumnNames.include?(column_name) - min_value_zero[column_name] = false - end - end - return min_value_zero - end - - def value_neg_one_to_one - value_neg_one_to_one = {} - column_names = SchedulesFile.ColumnNames - column_names.each do |column_name| - value_neg_one_to_one[column_name] = false - if column_name == SchedulesFile::ColumnBattery - value_neg_one_to_one[column_name] = true - end - end - return value_neg_one_to_one - end - - def only_zeros_and_ones - only_zeros_and_ones = {} - column_names = SchedulesFile.ColumnNames - column_names.each do |column_name| - only_zeros_and_ones[column_name] = false - if SchedulesFile.OperatingModeColumnNames.include?(column_name) - only_zeros_and_ones[column_name] = true + @schedules[SchedulesFile::Columns[:BatteryCharging].name] = Array.new(@schedules[battery_col_name].size, 0) + @schedules[SchedulesFile::Columns[:BatteryDischarging].name] = Array.new(@schedules[battery_col_name].size, 0) + @schedules[battery_col_name].each_with_index do |_ts, i| + if @schedules[battery_col_name][i] > 0 + @schedules[SchedulesFile::Columns[:BatteryCharging].name][i] = @schedules[battery_col_name][i] + elsif @schedules[battery_col_name][i] < 0 + @schedules[SchedulesFile::Columns[:BatteryDischarging].name][i] = -1 * @schedules[battery_col_name][i] end end - return only_zeros_and_ones + @schedules.delete(battery_col_name) end end diff --git a/hpxml-measures/HPXMLtoOpenStudio/resources/waterheater.rb b/hpxml-measures/HPXMLtoOpenStudio/resources/waterheater.rb index 1a2e8a3f2..e1c8befd1 100644 --- a/hpxml-measures/HPXMLtoOpenStudio/resources/waterheater.rb +++ b/hpxml-measures/HPXMLtoOpenStudio/resources/waterheater.rb @@ -87,7 +87,7 @@ def self.apply_heatpump(model, runner, loc_space, loc_schedule, weather, water_h if not schedules_file.nil? # To handle variable setpoints, need one schedule that gets sensed and a new schedule that gets actuated # Sensed schedule - setpoint_schedule = schedules_file.create_schedule_file(model, col_name: SchedulesFile::ColumnWaterHeaterSetpoint) + setpoint_schedule = schedules_file.create_schedule_file(model, col_name: SchedulesFile::Columns[:WaterHeaterSetpoint].name) if not setpoint_schedule.nil? Schedule.set_schedule_type_limits(model, setpoint_schedule, Constants.ScheduleTypeLimitsTemperature) @@ -102,7 +102,7 @@ def self.apply_heatpump(model, runner, loc_space, loc_schedule, weather, water_h control_setpoint_schedule = setpoint_schedule else - runner.registerWarning("Both '#{SchedulesFile::ColumnWaterHeaterSetpoint}' schedule file and setpoint temperature provided; the latter will be ignored.") if !t_set_c.nil? + runner.registerWarning("Both '#{SchedulesFile::Columns[:WaterHeaterSetpoint].name}' schedule file and setpoint temperature provided; the latter will be ignored.") if !t_set_c.nil? end airflow_rate = 181.0 # cfm @@ -970,7 +970,7 @@ def self.add_hpwh_control_program(model, runner, obj_name_hpwh, amb_temp_sensor, op_mode_schedule = nil if not schedules_file.nil? - op_mode_schedule = schedules_file.create_schedule_file(model, col_name: SchedulesFile::ColumnWaterHeaterOperatingMode) + op_mode_schedule = schedules_file.create_schedule_file(model, col_name: SchedulesFile::Columns[:WaterHeaterOperatingMode].name) end # Sensor on op_mode_schedule @@ -981,7 +981,7 @@ def self.add_hpwh_control_program(model, runner, obj_name_hpwh, amb_temp_sensor, op_mode_sensor.setName("#{obj_name_hpwh} op_mode") op_mode_sensor.setKeyName(op_mode_schedule.name.to_s) - runner.registerWarning("Both '#{SchedulesFile::ColumnWaterHeaterOperatingMode}' schedule file and operating mode provided; the latter will be ignored.") if !op_mode.nil? + runner.registerWarning("Both '#{SchedulesFile::Columns[:WaterHeaterOperatingMode].name}' schedule file and operating mode provided; the latter will be ignored.") if !op_mode.nil? end t_offset = 9.0 # deg-C @@ -1753,13 +1753,13 @@ def self.set_wh_ambient(loc_space, loc_schedule, wh_obj) def self.configure_mixed_tank_setpoint_schedule(new_heater, schedules_file, t_set_c, model, runner, unavailable_periods) new_schedule = nil if not schedules_file.nil? - new_schedule = schedules_file.create_schedule_file(model, col_name: SchedulesFile::ColumnWaterHeaterSetpoint) + new_schedule = schedules_file.create_schedule_file(model, col_name: SchedulesFile::Columns[:WaterHeaterSetpoint].name) end if new_schedule.nil? # constant new_schedule = ScheduleConstant.new(model, Constants.ObjectNameWaterHeaterSetpoint, t_set_c, Constants.ScheduleTypeLimitsTemperature, unavailable_periods: unavailable_periods) new_schedule = new_schedule.schedule else - runner.registerWarning("Both '#{SchedulesFile::ColumnWaterHeaterSetpoint}' schedule file and setpoint temperature provided; the latter will be ignored.") if !t_set_c.nil? + runner.registerWarning("Both '#{SchedulesFile::Columns[:WaterHeaterSetpoint].name}' schedule file and setpoint temperature provided; the latter will be ignored.") if !t_set_c.nil? end if new_heater.setpointTemperatureSchedule.is_initialized new_heater.setpointTemperatureSchedule.get.remove @@ -1770,13 +1770,13 @@ def self.configure_mixed_tank_setpoint_schedule(new_heater, schedules_file, t_se def self.configure_stratified_tank_setpoint_schedules(new_heater, schedules_file, t_set_c, model, runner, unavailable_periods) new_schedule = nil if not schedules_file.nil? - new_schedule = schedules_file.create_schedule_file(model, col_name: SchedulesFile::ColumnWaterHeaterSetpoint) + new_schedule = schedules_file.create_schedule_file(model, col_name: SchedulesFile::Columns[:WaterHeaterSetpoint].name) end if new_schedule.nil? # constant new_schedule = ScheduleConstant.new(model, Constants.ObjectNameWaterHeaterSetpoint, t_set_c, Constants.ScheduleTypeLimitsTemperature, unavailable_periods: unavailable_periods) new_schedule = new_schedule.schedule else - runner.registerWarning("Both '#{SchedulesFile::ColumnWaterHeaterSetpoint}' schedule file and setpoint temperature provided; the latter will be ignored.") if !t_set_c.nil? + runner.registerWarning("Both '#{SchedulesFile::Columns[:WaterHeaterSetpoint].name}' schedule file and setpoint temperature provided; the latter will be ignored.") if !t_set_c.nil? end new_heater.heater1SetpointTemperatureSchedule.remove new_heater.heater2SetpointTemperatureSchedule.remove diff --git a/hpxml-measures/HPXMLtoOpenStudio/tests/test_airflow.rb b/hpxml-measures/HPXMLtoOpenStudio/tests/test_airflow.rb index fa6e0c5f2..3f617efeb 100644 --- a/hpxml-measures/HPXMLtoOpenStudio/tests/test_airflow.rb +++ b/hpxml-measures/HPXMLtoOpenStudio/tests/test_airflow.rb @@ -102,7 +102,7 @@ def test_infiltration_natural_ach # Check infiltration/ventilation program program_values = get_ems_values(model.getEnergyManagementSystemPrograms, "#{Constants.ObjectNameInfiltration} program") - assert_in_epsilon(0.0904, program_values['c'].sum, 0.01) + assert_in_epsilon(0.0881, program_values['c'].sum, 0.01) assert_in_epsilon(0.0573, program_values['Cs'].sum, 0.01) assert_in_epsilon(0.1446, program_values['Cw'].sum, 0.01) end @@ -114,7 +114,7 @@ def test_infiltration_natural_cfm # Check infiltration/ventilation program program_values = get_ems_values(model.getEnergyManagementSystemPrograms, "#{Constants.ObjectNameInfiltration} program") - assert_in_epsilon(0.0904, program_values['c'].sum, 0.01) + assert_in_epsilon(0.0881, program_values['c'].sum, 0.01) assert_in_epsilon(0.0573, program_values['Cs'].sum, 0.01) assert_in_epsilon(0.1446, program_values['Cw'].sum, 0.01) end diff --git a/hpxml-measures/HPXMLtoOpenStudio/tests/test_defaults.rb b/hpxml-measures/HPXMLtoOpenStudio/tests/test_defaults.rb index 83d13fcb5..29e583352 100644 --- a/hpxml-measures/HPXMLtoOpenStudio/tests/test_defaults.rb +++ b/hpxml-measures/HPXMLtoOpenStudio/tests/test_defaults.rb @@ -442,20 +442,6 @@ def test_building_construction _default_hpxml, default_hpxml_bldg = _test_measure() _test_default_building_construction_values(default_hpxml_bldg, 20000, 7.4, 2, 1) - # Test defaults w/ infiltration volume - hpxml_bldg.building_construction.conditioned_building_volume = nil - hpxml_bldg.air_infiltration_measurements[0].infiltration_volume = 25650 - XMLHelper.write_file(hpxml.to_doc, @tmp_hpxml_path) - _default_hpxml, default_hpxml_bldg = _test_measure() - _test_default_building_construction_values(default_hpxml_bldg, 21600, 8, 2, 1) - - # Test defaults w/ infiltration volume - hpxml_bldg.building_construction.conditioned_building_volume = nil - hpxml_bldg.air_infiltration_measurements[0].infiltration_volume = 18000 - XMLHelper.write_file(hpxml.to_doc, @tmp_hpxml_path) - _default_hpxml, default_hpxml_bldg = _test_measure() - _test_default_building_construction_values(default_hpxml_bldg, 18000, 6.67, 2, 1) - # Test defaults w/ conditioned crawlspace hpxml, hpxml_bldg = _create_hpxml('base-foundation-conditioned-crawlspace.xml') hpxml_bldg.building_construction.conditioned_building_volume = nil @@ -1389,7 +1375,7 @@ def test_electric_resistance end def test_boilers - # Test inputs not overridden by defaults + # Test inputs not overridden by defaults (in-unit boiler) hpxml, hpxml_bldg = _create_hpxml('base-hvac-boiler-gas-only.xml') hpxml_bldg.heating_systems[0].electric_auxiliary_energy = 99.9 hpxml_bldg.heating_systems[0].heating_capacity = 12345 @@ -1399,13 +1385,21 @@ def test_boilers _default_hpxml, default_hpxml_bldg = _test_measure() _test_default_boiler_values(default_hpxml_bldg.heating_systems[0], 99.9, 12345, true, 999) - # Test defaults + # Test defaults w/ in-unit boiler hpxml_bldg.heating_systems[0].electric_auxiliary_energy = nil hpxml_bldg.heating_systems[0].heating_capacity = nil hpxml_bldg.heating_systems[0].pilot_light_btuh = nil XMLHelper.write_file(hpxml.to_doc, @tmp_hpxml_path) _default_hpxml, default_hpxml_bldg = _test_measure() _test_default_boiler_values(default_hpxml_bldg.heating_systems[0], 170.0, nil, true, 500) + + # Test inputs not overridden by defaults (shared boiler) + hpxml, hpxml_bldg = _create_hpxml('base-bldgtype-mf-unit-shared-boiler-only-baseboard.xml') + hpxml_bldg.heating_systems[0].shared_loop_watts = nil + hpxml_bldg.heating_systems[0].electric_auxiliary_energy = 99.9 + XMLHelper.write_file(hpxml.to_doc, @tmp_hpxml_path) + _default_hpxml, default_hpxml_bldg = _test_measure() + _test_default_boiler_values(default_hpxml_bldg.heating_systems[0], 99.9, nil, false, nil) end def test_stoves @@ -2391,7 +2385,7 @@ def test_mech_ventilation_fans used_for_whole_building_ventilation: true) XMLHelper.write_file(hpxml.to_doc, @tmp_hpxml_path) _default_hpxml, default_hpxml_bldg = _test_measure() - _test_default_mech_vent_values(default_hpxml_bldg, false, 24.0, 21.7, 61.9) + _test_default_mech_vent_values(default_hpxml_bldg, false, 24.0, 22.5, 64.3) # Test defaults w/ CFM50 infiltration hpxml, hpxml_bldg = _create_hpxml('base-enclosure-infil-cfm50.xml') @@ -3513,24 +3507,39 @@ def test_ceiling_fans hpxml, hpxml_bldg = _create_hpxml('base-lighting-ceiling-fans.xml') hpxml_bldg.ceiling_fans[0].count = 2 hpxml_bldg.ceiling_fans[0].efficiency = 100 + hpxml_bldg.ceiling_fans[0].label_energy_use = 39 hpxml_bldg.ceiling_fans[0].weekday_fractions = ConstantDaySchedule hpxml_bldg.ceiling_fans[0].weekend_fractions = ConstantDaySchedule hpxml_bldg.ceiling_fans[0].monthly_multipliers = ConstantMonthSchedule XMLHelper.write_file(hpxml.to_doc, @tmp_hpxml_path) _default_hpxml, default_hpxml_bldg = _test_measure() - _test_default_ceiling_fan_values(default_hpxml_bldg.ceiling_fans[0], 2, 100, ConstantDaySchedule, ConstantDaySchedule, ConstantMonthSchedule) + _test_default_ceiling_fan_values(default_hpxml_bldg.ceiling_fans[0], 2, 100, 39, ConstantDaySchedule, ConstantDaySchedule, ConstantMonthSchedule) + + # Test inputs not overridden by defaults 2 + hpxml_bldg.ceiling_fans[0].label_energy_use = nil + XMLHelper.write_file(hpxml.to_doc, @tmp_hpxml_path) + _default_hpxml, default_hpxml_bldg = _test_measure() + _test_default_ceiling_fan_values(default_hpxml_bldg.ceiling_fans[0], 2, 100, nil, ConstantDaySchedule, ConstantDaySchedule, ConstantMonthSchedule) + + # Test inputs not overridden by defaults 3 + hpxml_bldg.ceiling_fans[0].efficiency = nil + hpxml_bldg.ceiling_fans[0].label_energy_use = 39 + XMLHelper.write_file(hpxml.to_doc, @tmp_hpxml_path) + _default_hpxml, default_hpxml_bldg = _test_measure() + _test_default_ceiling_fan_values(default_hpxml_bldg.ceiling_fans[0], 2, nil, 39, ConstantDaySchedule, ConstantDaySchedule, ConstantMonthSchedule) # Test defaults hpxml_bldg.ceiling_fans.each do |ceiling_fan| ceiling_fan.count = nil ceiling_fan.efficiency = nil + ceiling_fan.label_energy_use = nil ceiling_fan.weekday_fractions = nil ceiling_fan.weekend_fractions = nil ceiling_fan.monthly_multipliers = nil end XMLHelper.write_file(hpxml.to_doc, @tmp_hpxml_path) _default_hpxml, default_hpxml_bldg = _test_measure() - _test_default_ceiling_fan_values(default_hpxml_bldg.ceiling_fans[0], 4, 70.4, Schedule.CeilingFanWeekdayFractions, Schedule.CeilingFanWeekendFractions, '0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0') + _test_default_ceiling_fan_values(default_hpxml_bldg.ceiling_fans[0], 4, nil, 42.6, Schedule.CeilingFanWeekdayFractions, Schedule.CeilingFanWeekendFractions, '0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0') end def test_pools @@ -5196,9 +5205,18 @@ def _test_default_lighting_values(hpxml_bldg, interior_usage_multiplier, garage_ end end - def _test_default_ceiling_fan_values(ceiling_fan, count, efficiency, weekday_sch, weekend_sch, monthly_mults) + def _test_default_ceiling_fan_values(ceiling_fan, count, efficiency, label_energy_use, weekday_sch, weekend_sch, monthly_mults) assert_equal(count, ceiling_fan.count) - assert_in_epsilon(efficiency, ceiling_fan.efficiency, 0.01) + if efficiency.nil? + assert_nil(ceiling_fan.efficiency) + else + assert_in_epsilon(efficiency, ceiling_fan.efficiency, 0.01) + end + if label_energy_use.nil? + assert_nil(ceiling_fan.label_energy_use) + else + assert_in_epsilon(label_energy_use, ceiling_fan.label_energy_use, 0.01) + end if weekday_sch.nil? assert_nil(ceiling_fan.weekday_fractions) else diff --git a/hpxml-measures/HPXMLtoOpenStudio/tests/test_hvac.rb b/hpxml-measures/HPXMLtoOpenStudio/tests/test_hvac.rb index 54d39f60f..c52e4d603 100644 --- a/hpxml-measures/HPXMLtoOpenStudio/tests/test_hvac.rb +++ b/hpxml-measures/HPXMLtoOpenStudio/tests/test_hvac.rb @@ -1304,6 +1304,34 @@ def test_crankcase_heater_watts assert_in_epsilon(crankcase_heater_watts, clg_coil.crankcaseHeaterCapacity, 0.01) end + def test_ceiling_fan + args_hash = {} + args_hash['hpxml_path'] = File.absolute_path(File.join(@sample_files_path, 'base-lighting-ceiling-fans.xml')) + model, _hpxml, hpxml_bldg = _test_measure(args_hash) + + # Get HPXML values + hvac_control = hpxml_bldg.hvac_controls[0] + cooling_setpoint_temp = hvac_control.cooling_setpoint_temp + ceiling_fan_cooling_setpoint_temp_offset = hvac_control.ceiling_fan_cooling_setpoint_temp_offset + + # Check ceiling fan months + assert_equal(1, model.getThermostatSetpointDualSetpoints.size) + thermostat = model.getThermostatSetpointDualSetpoints[0] + + cooling_schedule = thermostat.coolingSetpointTemperatureSchedule.get.to_ScheduleRuleset.get + assert_equal(3, cooling_schedule.scheduleRules.size) + + rule = cooling_schedule.scheduleRules[1] # cooling months + assert_equal(6, rule.startDate.get.monthOfYear.value) + assert_equal(1, rule.startDate.get.dayOfMonth) + assert_equal(9, rule.endDate.get.monthOfYear.value) + assert_equal(30, rule.endDate.get.dayOfMonth) + day_schedule = rule.daySchedule + values = day_schedule.values + assert_equal(1, values.size) + assert_in_epsilon(cooling_setpoint_temp + ceiling_fan_cooling_setpoint_temp_offset, UnitConversions.convert(values[0], 'C', 'F'), 0.01) + end + def _test_measure(args_hash) # create an instance of the measure measure = HPXMLtoOpenStudio.new diff --git a/hpxml-measures/HPXMLtoOpenStudio/tests/test_lighting.rb b/hpxml-measures/HPXMLtoOpenStudio/tests/test_lighting.rb index 9b64807ef..26704181e 100644 --- a/hpxml-measures/HPXMLtoOpenStudio/tests/test_lighting.rb +++ b/hpxml-measures/HPXMLtoOpenStudio/tests/test_lighting.rb @@ -27,6 +27,13 @@ def get_kwh_per_year(model, name) kwh_yr = UnitConversions.convert(hrs * ltg.exteriorLightsDefinition.designLevel * ltg.multiplier, 'Wh', 'kWh') return kwh_yr end + model.getElectricEquipments.each do |ee| + next unless ee.name.to_s.include?(name) + + hrs = Schedule.annual_equivalent_full_load_hrs(model.yearDescription.get.assumedYear, ee.schedule.get) + kwh_yr = UnitConversions.convert(hrs * ee.designLevel.get * ee.multiplier * ee.space.get.multiplier, 'Wh', 'kWh') + return kwh_yr + end return 0.0 end @@ -105,6 +112,22 @@ def test_lighting_none assert_equal(0.0, get_kwh_per_year(model, Constants.ObjectNameLightingExterior)) end + def test_ceiling_fan + # Efficiency + args_hash = {} + args_hash['hpxml_path'] = File.absolute_path(File.join(sample_files_dir, 'base-lighting-ceiling-fans.xml')) + model, _hpxml, _hpxml_bldg = _test_measure(args_hash) + + assert_in_delta(154, get_kwh_per_year(model, Constants.ObjectNameCeilingFan), 1.0) + + # Label energy use + args_hash = {} + args_hash['hpxml_path'] = File.absolute_path(File.join(sample_files_dir, 'base-lighting-ceiling-fans-label-energy-use.xml')) + model, _hpxml, _hpxml_bldg = _test_measure(args_hash) + + assert_in_delta(200, get_kwh_per_year(model, Constants.ObjectNameCeilingFan), 1.0) + end + def _test_measure(args_hash) # create an instance of the measure measure = HPXMLtoOpenStudio.new diff --git a/hpxml-measures/HPXMLtoOpenStudio/tests/test_schedules.rb b/hpxml-measures/HPXMLtoOpenStudio/tests/test_schedules.rb index 2633fcdd8..da989a868 100644 --- a/hpxml-measures/HPXMLtoOpenStudio/tests/test_schedules.rb +++ b/hpxml-measures/HPXMLtoOpenStudio/tests/test_schedules.rb @@ -72,6 +72,7 @@ def test_default_schedules assert_in_epsilon(7157, get_annual_equivalent_full_load_hrs(model, Constants.ObjectNameMiscPlugLoads + ' schedule'), @tol) assert_in_epsilon(2765, get_annual_equivalent_full_load_hrs(model, Constants.ObjectNameMiscTelevision + ' schedule'), @tol) assert_in_epsilon(4244, get_annual_equivalent_full_load_hrs(model, Constants.ObjectNameFixtures + ' schedule'), @tol) + assert_in_epsilon(5000, get_annual_equivalent_full_load_hrs(model, Constants.ObjectNameGeneralWaterUse + ' schedule'), @tol) assert_in_epsilon(8760, get_annual_equivalent_full_load_hrs(model, Constants.ObjectNameMechanicalVentilationHouseFan + ' schedule'), @tol) end @@ -81,7 +82,7 @@ def test_simple_schedules model, _hpxml, _hpxml_bldg = _test_measure(args_hash) schedule_constants = 11 - schedule_rulesets = 18 + schedule_rulesets = 19 schedule_fixed_intervals = 1 schedule_files = 0 @@ -102,6 +103,8 @@ def test_simple_schedules assert_in_epsilon(6880, get_annual_equivalent_full_load_hrs(model, Constants.ObjectNameMiscPlugLoads + ' schedule'), @tol) assert_in_epsilon(3373, get_annual_equivalent_full_load_hrs(model, Constants.ObjectNameMiscTelevision + ' schedule'), @tol) assert_in_epsilon(4204, get_annual_equivalent_full_load_hrs(model, Constants.ObjectNameFixtures + ' schedule'), @tol) + assert_in_epsilon(4244, get_annual_equivalent_full_load_hrs(model, Constants.ObjectNameHotWaterRecircPump + ' schedule'), @tol) + assert_in_epsilon(5000, get_annual_equivalent_full_load_hrs(model, Constants.ObjectNameGeneralWaterUse + ' schedule'), @tol) assert_in_epsilon(8760, get_annual_equivalent_full_load_hrs(model, Constants.ObjectNameMechanicalVentilationHouseFan + ' schedule'), @tol) end @@ -123,6 +126,8 @@ def test_simple_vacancy_schedules assert_in_epsilon(6880 * get_available_hrs_ratio(unavailable_month_hrs, Schedule.PlugLoadsOtherMonthlyMultipliers), get_annual_equivalent_full_load_hrs(model, Constants.ObjectNameMiscPlugLoads + ' schedule'), @tol) assert_in_epsilon(3373 * get_available_hrs_ratio(unavailable_month_hrs, Schedule.PlugLoadsTVMonthlyMultipliers), get_annual_equivalent_full_load_hrs(model, Constants.ObjectNameMiscTelevision + ' schedule'), @tol) assert_in_epsilon(4204 * get_available_hrs_ratio(unavailable_month_hrs, Schedule.FixturesMonthlyMultipliers), get_annual_equivalent_full_load_hrs(model, Constants.ObjectNameFixtures + ' schedule'), @tol) + assert_in_epsilon(4244 * get_available_hrs_ratio(unavailable_month_hrs, Schedule.RecirculationPumpMonthlyMultipliers), get_annual_equivalent_full_load_hrs(model, Constants.ObjectNameHotWaterRecircPump + ' schedule'), @tol) + assert_in_epsilon(5000 * get_available_hrs_ratio(unavailable_month_hrs, Schedule.GeneralWaterUseMonthlyMultipliers), get_annual_equivalent_full_load_hrs(model, Constants.ObjectNameGeneralWaterUse + ' schedule'), @tol) assert_in_epsilon(8760, get_annual_equivalent_full_load_hrs(model, Constants.ObjectNameMechanicalVentilationHouseFan + ' schedule'), @tol) end @@ -149,6 +154,8 @@ def test_simple_vacancy_year_round_schedules assert_equal(0, get_annual_equivalent_full_load_hrs(model, Constants.ObjectNameMiscPlugLoads + ' schedule')) assert_equal(0, get_annual_equivalent_full_load_hrs(model, Constants.ObjectNameMiscTelevision + ' schedule')) assert_equal(0, get_annual_equivalent_full_load_hrs(model, Constants.ObjectNameFixtures + ' schedule')) + assert_equal(0, get_annual_equivalent_full_load_hrs(model, Constants.ObjectNameHotWaterRecircPump + ' schedule')) + assert_equal(0, get_annual_equivalent_full_load_hrs(model, Constants.ObjectNameGeneralWaterUse + ' schedule')) assert_in_epsilon(8760, get_annual_equivalent_full_load_hrs(model, Constants.ObjectNameMechanicalVentilationHouseFan + ' schedule'), @tol) end @@ -170,6 +177,8 @@ def test_simple_power_outage_schedules assert_in_epsilon(6880 * get_available_hrs_ratio(unavailable_month_hrs, Schedule.PlugLoadsOtherMonthlyMultipliers), get_annual_equivalent_full_load_hrs(model, Constants.ObjectNameMiscPlugLoads + ' schedule'), @tol) assert_in_epsilon(3373 * get_available_hrs_ratio(unavailable_month_hrs, Schedule.PlugLoadsTVMonthlyMultipliers), get_annual_equivalent_full_load_hrs(model, Constants.ObjectNameMiscTelevision + ' schedule'), @tol) assert_in_epsilon(4204 * get_available_hrs_ratio(unavailable_month_hrs, Schedule.FixturesMonthlyMultipliers), get_annual_equivalent_full_load_hrs(model, Constants.ObjectNameFixtures + ' schedule'), @tol) + assert_in_epsilon(4244 * get_available_hrs_ratio(unavailable_month_hrs, Schedule.RecirculationPumpMonthlyMultipliers), get_annual_equivalent_full_load_hrs(model, Constants.ObjectNameHotWaterRecircPump + ' schedule'), @tol) + assert_in_epsilon(5000, get_annual_equivalent_full_load_hrs(model, Constants.ObjectNameGeneralWaterUse + ' schedule'), @tol) assert_in_epsilon(8760 * get_available_hrs_ratio(unavailable_month_hrs), get_annual_equivalent_full_load_hrs(model, Constants.ObjectNameMechanicalVentilationHouseFan + ' schedule'), @tol) end @@ -195,38 +204,39 @@ def test_stochastic_schedules unavailable_periods: hpxml.header.unavailable_periods, output_path: @tmp_schedule_file_path) - assert(schedule_file_names.include?(SchedulesFile::ColumnOccupants)) - assert_in_epsilon(6689, sf.annual_equivalent_full_load_hrs(col_name: SchedulesFile::ColumnOccupants, schedules: sf.tmp_schedules), @tol) - assert(schedule_file_names.include?(SchedulesFile::ColumnLightingInterior)) - assert_in_epsilon(2086, sf.annual_equivalent_full_load_hrs(col_name: SchedulesFile::ColumnLightingInterior, schedules: sf.tmp_schedules), @tol) - assert(!schedule_file_names.include?(SchedulesFile::ColumnLightingGarage)) - assert_in_epsilon(2086, sf.annual_equivalent_full_load_hrs(col_name: SchedulesFile::ColumnLightingGarage, schedules: sf.tmp_schedules), @tol) - assert(!schedule_file_names.include?(SchedulesFile::ColumnLightingExterior)) + assert(schedule_file_names.include?(SchedulesFile::Columns[:Occupants].name)) + assert_in_epsilon(6689, sf.annual_equivalent_full_load_hrs(col_name: SchedulesFile::Columns[:Occupants].name, schedules: sf.tmp_schedules), @tol) + assert(schedule_file_names.include?(SchedulesFile::Columns[:LightingInterior].name)) + assert_in_epsilon(2086, sf.annual_equivalent_full_load_hrs(col_name: SchedulesFile::Columns[:LightingInterior].name, schedules: sf.tmp_schedules), @tol) + assert(!schedule_file_names.include?(SchedulesFile::Columns[:LightingGarage].name)) + assert_in_epsilon(2086, sf.annual_equivalent_full_load_hrs(col_name: SchedulesFile::Columns[:LightingGarage].name, schedules: sf.tmp_schedules), @tol) + assert(!schedule_file_names.include?(SchedulesFile::Columns[:LightingExterior].name)) assert_in_epsilon(4342, get_annual_equivalent_full_load_hrs(model, Constants.ObjectNameLightingExterior + ' schedule'), @tol) - assert(!schedule_file_names.include?(SchedulesFile::ColumnLightingExteriorHoliday)) - assert(!schedule_file_names.include?(SchedulesFile::ColumnRefrigerator)) - assert(schedule_file_names.include?(SchedulesFile::ColumnCookingRange)) - assert_in_epsilon(534, sf.annual_equivalent_full_load_hrs(col_name: SchedulesFile::ColumnCookingRange, schedules: sf.tmp_schedules), @tol) - assert(schedule_file_names.include?(SchedulesFile::ColumnDishwasher)) - assert_in_epsilon(213, sf.annual_equivalent_full_load_hrs(col_name: SchedulesFile::ColumnDishwasher, schedules: sf.tmp_schedules), @tol) - assert(schedule_file_names.include?(SchedulesFile::ColumnClothesWasher)) - assert_in_epsilon(134, sf.annual_equivalent_full_load_hrs(col_name: SchedulesFile::ColumnClothesWasher, schedules: sf.tmp_schedules), @tol) - assert(schedule_file_names.include?(SchedulesFile::ColumnClothesDryer)) - assert_in_epsilon(151, sf.annual_equivalent_full_load_hrs(col_name: SchedulesFile::ColumnClothesDryer, schedules: sf.tmp_schedules), @tol) - assert(!schedule_file_names.include?(SchedulesFile::ColumnCeilingFan)) - assert_in_epsilon(3250, sf.annual_equivalent_full_load_hrs(col_name: SchedulesFile::ColumnCeilingFan, schedules: sf.tmp_schedules), @tol) - assert(schedule_file_names.include?(SchedulesFile::ColumnPlugLoadsOther)) - assert_in_epsilon(4840, sf.annual_equivalent_full_load_hrs(col_name: SchedulesFile::ColumnPlugLoadsOther, schedules: sf.tmp_schedules), @tol) - assert(schedule_file_names.include?(SchedulesFile::ColumnPlugLoadsTV)) - assert_in_epsilon(4840, sf.annual_equivalent_full_load_hrs(col_name: SchedulesFile::ColumnPlugLoadsTV, schedules: sf.tmp_schedules), @tol) - assert(schedule_file_names.include?(SchedulesFile::ColumnHotWaterDishwasher)) - assert_in_epsilon(273, sf.annual_equivalent_full_load_hrs(col_name: SchedulesFile::ColumnHotWaterDishwasher, schedules: sf.tmp_schedules), @tol) - assert(schedule_file_names.include?(SchedulesFile::ColumnHotWaterClothesWasher)) - assert_in_epsilon(346, sf.annual_equivalent_full_load_hrs(col_name: SchedulesFile::ColumnHotWaterClothesWasher, schedules: sf.tmp_schedules), @tol) - assert(schedule_file_names.include?(SchedulesFile::ColumnHotWaterFixtures)) - assert_in_epsilon(887, sf.annual_equivalent_full_load_hrs(col_name: SchedulesFile::ColumnHotWaterFixtures, schedules: sf.tmp_schedules), @tol) + assert(!schedule_file_names.include?(SchedulesFile::Columns[:LightingExteriorHoliday].name)) + assert(!schedule_file_names.include?(SchedulesFile::Columns[:Refrigerator].name)) + assert(schedule_file_names.include?(SchedulesFile::Columns[:CookingRange].name)) + assert_in_epsilon(534, sf.annual_equivalent_full_load_hrs(col_name: SchedulesFile::Columns[:CookingRange].name, schedules: sf.tmp_schedules), @tol) + assert(schedule_file_names.include?(SchedulesFile::Columns[:Dishwasher].name)) + assert_in_epsilon(213, sf.annual_equivalent_full_load_hrs(col_name: SchedulesFile::Columns[:Dishwasher].name, schedules: sf.tmp_schedules), @tol) + assert(schedule_file_names.include?(SchedulesFile::Columns[:ClothesWasher].name)) + assert_in_epsilon(134, sf.annual_equivalent_full_load_hrs(col_name: SchedulesFile::Columns[:ClothesWasher].name, schedules: sf.tmp_schedules), @tol) + assert(schedule_file_names.include?(SchedulesFile::Columns[:ClothesDryer].name)) + assert_in_epsilon(151, sf.annual_equivalent_full_load_hrs(col_name: SchedulesFile::Columns[:ClothesDryer].name, schedules: sf.tmp_schedules), @tol) + assert(!schedule_file_names.include?(SchedulesFile::Columns[:CeilingFan].name)) + assert_in_epsilon(3250, sf.annual_equivalent_full_load_hrs(col_name: SchedulesFile::Columns[:CeilingFan].name, schedules: sf.tmp_schedules), @tol) + assert(schedule_file_names.include?(SchedulesFile::Columns[:PlugLoadsOther].name)) + assert_in_epsilon(4840, sf.annual_equivalent_full_load_hrs(col_name: SchedulesFile::Columns[:PlugLoadsOther].name, schedules: sf.tmp_schedules), @tol) + assert(schedule_file_names.include?(SchedulesFile::Columns[:PlugLoadsTV].name)) + assert_in_epsilon(4840, sf.annual_equivalent_full_load_hrs(col_name: SchedulesFile::Columns[:PlugLoadsTV].name, schedules: sf.tmp_schedules), @tol) + assert(schedule_file_names.include?(SchedulesFile::Columns[:HotWaterDishwasher].name)) + assert_in_epsilon(273, sf.annual_equivalent_full_load_hrs(col_name: SchedulesFile::Columns[:HotWaterDishwasher].name, schedules: sf.tmp_schedules), @tol) + assert(schedule_file_names.include?(SchedulesFile::Columns[:HotWaterClothesWasher].name)) + assert_in_epsilon(346, sf.annual_equivalent_full_load_hrs(col_name: SchedulesFile::Columns[:HotWaterClothesWasher].name, schedules: sf.tmp_schedules), @tol) + assert(schedule_file_names.include?(SchedulesFile::Columns[:HotWaterFixtures].name)) + assert_in_epsilon(887, sf.annual_equivalent_full_load_hrs(col_name: SchedulesFile::Columns[:HotWaterFixtures].name, schedules: sf.tmp_schedules), @tol) + assert(!schedule_file_names.include?(SchedulesFile::Columns[:GeneralWaterUse].name)) assert_in_epsilon(8760, get_annual_equivalent_full_load_hrs(model, Constants.ObjectNameMechanicalVentilationHouseFan + ' schedule'), @tol) - assert(!schedule_file_names.include?(SchedulesFile::ColumnSleeping)) + assert(!schedule_file_names.include?(SchedulesFile::Columns[:Sleeping].name)) assert(!schedule_file_names.include?('Vacancy')) assert(!schedule_file_names.include?('Power Outage')) end @@ -252,22 +262,22 @@ def test_stochastic_vacancy_schedules unavailable_month_hrs = { 0 => 31.0 * 24.0, 11 => 31.0 * 24.0 } - assert_in_epsilon(6689 - sf.period_equivalent_full_load_hrs(col_name: SchedulesFile::ColumnOccupants, period: unavailable_period), sf.annual_equivalent_full_load_hrs(col_name: SchedulesFile::ColumnOccupants, schedules: sf.tmp_schedules), @tol) - assert_in_epsilon(2086 - sf.period_equivalent_full_load_hrs(col_name: SchedulesFile::ColumnLightingInterior, period: unavailable_period), sf.annual_equivalent_full_load_hrs(col_name: SchedulesFile::ColumnLightingInterior, schedules: sf.tmp_schedules), @tol) - assert_in_epsilon(2086 - sf.period_equivalent_full_load_hrs(col_name: SchedulesFile::ColumnLightingGarage, period: unavailable_period), sf.annual_equivalent_full_load_hrs(col_name: SchedulesFile::ColumnLightingGarage, schedules: sf.tmp_schedules), @tol) + assert_in_epsilon(6689 - sf.period_equivalent_full_load_hrs(col_name: SchedulesFile::Columns[:Occupants].name, period: unavailable_period), sf.annual_equivalent_full_load_hrs(col_name: SchedulesFile::Columns[:Occupants].name, schedules: sf.tmp_schedules), @tol) + assert_in_epsilon(2086 - sf.period_equivalent_full_load_hrs(col_name: SchedulesFile::Columns[:LightingInterior].name, period: unavailable_period), sf.annual_equivalent_full_load_hrs(col_name: SchedulesFile::Columns[:LightingInterior].name, schedules: sf.tmp_schedules), @tol) + assert_in_epsilon(2086 - sf.period_equivalent_full_load_hrs(col_name: SchedulesFile::Columns[:LightingGarage].name, period: unavailable_period), sf.annual_equivalent_full_load_hrs(col_name: SchedulesFile::Columns[:LightingGarage].name, schedules: sf.tmp_schedules), @tol) assert_in_epsilon(4342 * get_available_hrs_ratio(unavailable_month_hrs, Schedule.LightingMonthlyMultipliers), get_annual_equivalent_full_load_hrs(model, Constants.ObjectNameLightingExterior + ' schedule'), @tol) - assert_in_epsilon(534 - sf.period_equivalent_full_load_hrs(col_name: SchedulesFile::ColumnCookingRange, period: unavailable_period), sf.annual_equivalent_full_load_hrs(col_name: SchedulesFile::ColumnCookingRange, schedules: sf.tmp_schedules), @tol) - assert_in_epsilon(213 - sf.period_equivalent_full_load_hrs(col_name: SchedulesFile::ColumnDishwasher, period: unavailable_period), sf.annual_equivalent_full_load_hrs(col_name: SchedulesFile::ColumnDishwasher, schedules: sf.tmp_schedules), @tol) - assert_in_epsilon(134 - sf.period_equivalent_full_load_hrs(col_name: SchedulesFile::ColumnClothesWasher, period: unavailable_period), sf.annual_equivalent_full_load_hrs(col_name: SchedulesFile::ColumnClothesWasher, schedules: sf.tmp_schedules), @tol) - assert_in_epsilon(151 - sf.period_equivalent_full_load_hrs(col_name: SchedulesFile::ColumnClothesDryer, period: unavailable_period), sf.annual_equivalent_full_load_hrs(col_name: SchedulesFile::ColumnClothesDryer, schedules: sf.tmp_schedules), @tol) - assert_in_epsilon(3250 - sf.period_equivalent_full_load_hrs(col_name: SchedulesFile::ColumnCeilingFan, period: unavailable_period), sf.annual_equivalent_full_load_hrs(col_name: SchedulesFile::ColumnCeilingFan, schedules: sf.tmp_schedules), @tol) - assert_in_epsilon(4840 - sf.period_equivalent_full_load_hrs(col_name: SchedulesFile::ColumnPlugLoadsOther, period: unavailable_period), sf.annual_equivalent_full_load_hrs(col_name: SchedulesFile::ColumnPlugLoadsOther, schedules: sf.tmp_schedules), @tol) - assert_in_epsilon(4840 - sf.period_equivalent_full_load_hrs(col_name: SchedulesFile::ColumnPlugLoadsTV, period: unavailable_period), sf.annual_equivalent_full_load_hrs(col_name: SchedulesFile::ColumnPlugLoadsTV, schedules: sf.tmp_schedules), @tol) - assert_in_epsilon(273 - sf.period_equivalent_full_load_hrs(col_name: SchedulesFile::ColumnHotWaterDishwasher, period: unavailable_period), sf.annual_equivalent_full_load_hrs(col_name: SchedulesFile::ColumnHotWaterDishwasher, schedules: sf.tmp_schedules), @tol) - assert_in_epsilon(346 - sf.period_equivalent_full_load_hrs(col_name: SchedulesFile::ColumnHotWaterClothesWasher, period: unavailable_period), sf.annual_equivalent_full_load_hrs(col_name: SchedulesFile::ColumnHotWaterClothesWasher, schedules: sf.tmp_schedules), @tol) - assert_in_epsilon(887 - sf.period_equivalent_full_load_hrs(col_name: SchedulesFile::ColumnHotWaterFixtures, period: unavailable_period), sf.annual_equivalent_full_load_hrs(col_name: SchedulesFile::ColumnHotWaterFixtures, schedules: sf.tmp_schedules), @tol) + assert_in_epsilon(534 - sf.period_equivalent_full_load_hrs(col_name: SchedulesFile::Columns[:CookingRange].name, period: unavailable_period), sf.annual_equivalent_full_load_hrs(col_name: SchedulesFile::Columns[:CookingRange].name, schedules: sf.tmp_schedules), @tol) + assert_in_epsilon(213 - sf.period_equivalent_full_load_hrs(col_name: SchedulesFile::Columns[:Dishwasher].name, period: unavailable_period), sf.annual_equivalent_full_load_hrs(col_name: SchedulesFile::Columns[:Dishwasher].name, schedules: sf.tmp_schedules), @tol) + assert_in_epsilon(134 - sf.period_equivalent_full_load_hrs(col_name: SchedulesFile::Columns[:ClothesWasher].name, period: unavailable_period), sf.annual_equivalent_full_load_hrs(col_name: SchedulesFile::Columns[:ClothesWasher].name, schedules: sf.tmp_schedules), @tol) + assert_in_epsilon(151 - sf.period_equivalent_full_load_hrs(col_name: SchedulesFile::Columns[:ClothesDryer].name, period: unavailable_period), sf.annual_equivalent_full_load_hrs(col_name: SchedulesFile::Columns[:ClothesDryer].name, schedules: sf.tmp_schedules), @tol) + assert_in_epsilon(3250 - sf.period_equivalent_full_load_hrs(col_name: SchedulesFile::Columns[:CeilingFan].name, period: unavailable_period), sf.annual_equivalent_full_load_hrs(col_name: SchedulesFile::Columns[:CeilingFan].name, schedules: sf.tmp_schedules), @tol) + assert_in_epsilon(4840 - sf.period_equivalent_full_load_hrs(col_name: SchedulesFile::Columns[:PlugLoadsOther].name, period: unavailable_period), sf.annual_equivalent_full_load_hrs(col_name: SchedulesFile::Columns[:PlugLoadsOther].name, schedules: sf.tmp_schedules), @tol) + assert_in_epsilon(4840 - sf.period_equivalent_full_load_hrs(col_name: SchedulesFile::Columns[:PlugLoadsTV].name, period: unavailable_period), sf.annual_equivalent_full_load_hrs(col_name: SchedulesFile::Columns[:PlugLoadsTV].name, schedules: sf.tmp_schedules), @tol) + assert_in_epsilon(273 - sf.period_equivalent_full_load_hrs(col_name: SchedulesFile::Columns[:HotWaterDishwasher].name, period: unavailable_period), sf.annual_equivalent_full_load_hrs(col_name: SchedulesFile::Columns[:HotWaterDishwasher].name, schedules: sf.tmp_schedules), @tol) + assert_in_epsilon(346 - sf.period_equivalent_full_load_hrs(col_name: SchedulesFile::Columns[:HotWaterClothesWasher].name, period: unavailable_period), sf.annual_equivalent_full_load_hrs(col_name: SchedulesFile::Columns[:HotWaterClothesWasher].name, schedules: sf.tmp_schedules), @tol) + assert_in_epsilon(887 - sf.period_equivalent_full_load_hrs(col_name: SchedulesFile::Columns[:HotWaterFixtures].name, period: unavailable_period), sf.annual_equivalent_full_load_hrs(col_name: SchedulesFile::Columns[:HotWaterFixtures].name, schedules: sf.tmp_schedules), @tol) assert_in_epsilon(8760, get_annual_equivalent_full_load_hrs(model, Constants.ObjectNameMechanicalVentilationHouseFan + ' schedule'), @tol) - assert(!sf.schedules.keys.include?(SchedulesFile::ColumnSleeping)) + assert(!sf.schedules.keys.include?(SchedulesFile::Columns[:Sleeping].name)) assert_in_epsilon(unavailable_month_hrs.values.sum, sf.annual_equivalent_full_load_hrs(col_name: column_name, schedules: sf.tmp_schedules), 0.001) end @@ -310,22 +320,22 @@ def test_stochastic_vacancy_schedules2 unavailable_month_hrs = { 0 => 31.0 * 24.0, 1 => 28.0 * 24.0, 11 => 31.0 * 24.0 } - assert_in_epsilon(6689 - sf.period_equivalent_full_load_hrs(col_name: SchedulesFile::ColumnOccupants, period: unavailable_period), sf.annual_equivalent_full_load_hrs(col_name: SchedulesFile::ColumnOccupants, schedules: sf.tmp_schedules), @tol) - assert_in_epsilon(2086 - sf.period_equivalent_full_load_hrs(col_name: SchedulesFile::ColumnLightingInterior, period: unavailable_period), sf.annual_equivalent_full_load_hrs(col_name: SchedulesFile::ColumnLightingInterior, schedules: sf.tmp_schedules), @tol) - assert_in_epsilon(2086 - sf.period_equivalent_full_load_hrs(col_name: SchedulesFile::ColumnLightingGarage, period: unavailable_period), sf.annual_equivalent_full_load_hrs(col_name: SchedulesFile::ColumnLightingGarage, schedules: sf.tmp_schedules), @tol) + assert_in_epsilon(6689 - sf.period_equivalent_full_load_hrs(col_name: SchedulesFile::Columns[:Occupants].name, period: unavailable_period), sf.annual_equivalent_full_load_hrs(col_name: SchedulesFile::Columns[:Occupants].name, schedules: sf.tmp_schedules), @tol) + assert_in_epsilon(2086 - sf.period_equivalent_full_load_hrs(col_name: SchedulesFile::Columns[:LightingInterior].name, period: unavailable_period), sf.annual_equivalent_full_load_hrs(col_name: SchedulesFile::Columns[:LightingInterior].name, schedules: sf.tmp_schedules), @tol) + assert_in_epsilon(2086 - sf.period_equivalent_full_load_hrs(col_name: SchedulesFile::Columns[:LightingGarage].name, period: unavailable_period), sf.annual_equivalent_full_load_hrs(col_name: SchedulesFile::Columns[:LightingGarage].name, schedules: sf.tmp_schedules), @tol) assert_in_epsilon(4342 * get_available_hrs_ratio(unavailable_month_hrs, Schedule.LightingMonthlyMultipliers), get_annual_equivalent_full_load_hrs(model, Constants.ObjectNameLightingExterior + ' schedule'), @tol) - assert_in_epsilon(534 - sf.period_equivalent_full_load_hrs(col_name: SchedulesFile::ColumnCookingRange, period: unavailable_period), sf.annual_equivalent_full_load_hrs(col_name: SchedulesFile::ColumnCookingRange, schedules: sf.tmp_schedules), @tol) - assert_in_epsilon(213 - sf.period_equivalent_full_load_hrs(col_name: SchedulesFile::ColumnDishwasher, period: unavailable_period), sf.annual_equivalent_full_load_hrs(col_name: SchedulesFile::ColumnDishwasher, schedules: sf.tmp_schedules), @tol) - assert_in_epsilon(134 - sf.period_equivalent_full_load_hrs(col_name: SchedulesFile::ColumnClothesWasher, period: unavailable_period), sf.annual_equivalent_full_load_hrs(col_name: SchedulesFile::ColumnClothesWasher, schedules: sf.tmp_schedules), @tol) - assert_in_epsilon(151 - sf.period_equivalent_full_load_hrs(col_name: SchedulesFile::ColumnClothesDryer, period: unavailable_period), sf.annual_equivalent_full_load_hrs(col_name: SchedulesFile::ColumnClothesDryer, schedules: sf.tmp_schedules), @tol) - assert_in_epsilon(3250 - sf.period_equivalent_full_load_hrs(col_name: SchedulesFile::ColumnCeilingFan, period: unavailable_period), sf.annual_equivalent_full_load_hrs(col_name: SchedulesFile::ColumnCeilingFan, schedules: sf.tmp_schedules), @tol) - assert_in_epsilon(4840 - sf.period_equivalent_full_load_hrs(col_name: SchedulesFile::ColumnPlugLoadsOther, period: unavailable_period), sf.annual_equivalent_full_load_hrs(col_name: SchedulesFile::ColumnPlugLoadsOther, schedules: sf.tmp_schedules), @tol) - assert_in_epsilon(4840 - sf.period_equivalent_full_load_hrs(col_name: SchedulesFile::ColumnPlugLoadsTV, period: unavailable_period), sf.annual_equivalent_full_load_hrs(col_name: SchedulesFile::ColumnPlugLoadsTV, schedules: sf.tmp_schedules), @tol) - assert_in_epsilon(273 - sf.period_equivalent_full_load_hrs(col_name: SchedulesFile::ColumnHotWaterDishwasher, period: unavailable_period), sf.annual_equivalent_full_load_hrs(col_name: SchedulesFile::ColumnHotWaterDishwasher, schedules: sf.tmp_schedules), @tol) - assert_in_epsilon(346 - sf.period_equivalent_full_load_hrs(col_name: SchedulesFile::ColumnHotWaterClothesWasher, period: unavailable_period), sf.annual_equivalent_full_load_hrs(col_name: SchedulesFile::ColumnHotWaterClothesWasher, schedules: sf.tmp_schedules), @tol) - assert_in_epsilon(887 - sf.period_equivalent_full_load_hrs(col_name: SchedulesFile::ColumnHotWaterFixtures, period: unavailable_period), sf.annual_equivalent_full_load_hrs(col_name: SchedulesFile::ColumnHotWaterFixtures, schedules: sf.tmp_schedules), @tol) + assert_in_epsilon(534 - sf.period_equivalent_full_load_hrs(col_name: SchedulesFile::Columns[:CookingRange].name, period: unavailable_period), sf.annual_equivalent_full_load_hrs(col_name: SchedulesFile::Columns[:CookingRange].name, schedules: sf.tmp_schedules), @tol) + assert_in_epsilon(213 - sf.period_equivalent_full_load_hrs(col_name: SchedulesFile::Columns[:Dishwasher].name, period: unavailable_period), sf.annual_equivalent_full_load_hrs(col_name: SchedulesFile::Columns[:Dishwasher].name, schedules: sf.tmp_schedules), @tol) + assert_in_epsilon(134 - sf.period_equivalent_full_load_hrs(col_name: SchedulesFile::Columns[:ClothesWasher].name, period: unavailable_period), sf.annual_equivalent_full_load_hrs(col_name: SchedulesFile::Columns[:ClothesWasher].name, schedules: sf.tmp_schedules), @tol) + assert_in_epsilon(151 - sf.period_equivalent_full_load_hrs(col_name: SchedulesFile::Columns[:ClothesDryer].name, period: unavailable_period), sf.annual_equivalent_full_load_hrs(col_name: SchedulesFile::Columns[:ClothesDryer].name, schedules: sf.tmp_schedules), @tol) + assert_in_epsilon(3250 - sf.period_equivalent_full_load_hrs(col_name: SchedulesFile::Columns[:CeilingFan].name, period: unavailable_period), sf.annual_equivalent_full_load_hrs(col_name: SchedulesFile::Columns[:CeilingFan].name, schedules: sf.tmp_schedules), @tol) + assert_in_epsilon(4840 - sf.period_equivalent_full_load_hrs(col_name: SchedulesFile::Columns[:PlugLoadsOther].name, period: unavailable_period), sf.annual_equivalent_full_load_hrs(col_name: SchedulesFile::Columns[:PlugLoadsOther].name, schedules: sf.tmp_schedules), @tol) + assert_in_epsilon(4840 - sf.period_equivalent_full_load_hrs(col_name: SchedulesFile::Columns[:PlugLoadsTV].name, period: unavailable_period), sf.annual_equivalent_full_load_hrs(col_name: SchedulesFile::Columns[:PlugLoadsTV].name, schedules: sf.tmp_schedules), @tol) + assert_in_epsilon(273 - sf.period_equivalent_full_load_hrs(col_name: SchedulesFile::Columns[:HotWaterDishwasher].name, period: unavailable_period), sf.annual_equivalent_full_load_hrs(col_name: SchedulesFile::Columns[:HotWaterDishwasher].name, schedules: sf.tmp_schedules), @tol) + assert_in_epsilon(346 - sf.period_equivalent_full_load_hrs(col_name: SchedulesFile::Columns[:HotWaterClothesWasher].name, period: unavailable_period), sf.annual_equivalent_full_load_hrs(col_name: SchedulesFile::Columns[:HotWaterClothesWasher].name, schedules: sf.tmp_schedules), @tol) + assert_in_epsilon(887 - sf.period_equivalent_full_load_hrs(col_name: SchedulesFile::Columns[:HotWaterFixtures].name, period: unavailable_period), sf.annual_equivalent_full_load_hrs(col_name: SchedulesFile::Columns[:HotWaterFixtures].name, schedules: sf.tmp_schedules), @tol) assert_in_epsilon(8760, get_annual_equivalent_full_load_hrs(model, Constants.ObjectNameMechanicalVentilationHouseFan + ' schedule'), @tol) - assert(!sf.schedules.keys.include?(SchedulesFile::ColumnSleeping)) + assert(!sf.schedules.keys.include?(SchedulesFile::Columns[:Sleeping].name)) assert_in_epsilon(unavailable_month_hrs.values.sum, sf.annual_equivalent_full_load_hrs(col_name: column_name, schedules: sf.tmp_schedules), 0.001) end @@ -354,22 +364,22 @@ def test_stochastic_vacancy_year_round_schedules unavailable_periods: hpxml.header.unavailable_periods, output_path: @tmp_schedule_file_path) - assert_equal(0, sf.annual_equivalent_full_load_hrs(col_name: SchedulesFile::ColumnOccupants, schedules: sf.tmp_schedules)) - assert_equal(0, sf.annual_equivalent_full_load_hrs(col_name: SchedulesFile::ColumnLightingInterior, schedules: sf.tmp_schedules)) - assert_equal(0, sf.annual_equivalent_full_load_hrs(col_name: SchedulesFile::ColumnLightingGarage, schedules: sf.tmp_schedules)) + assert_equal(0, sf.annual_equivalent_full_load_hrs(col_name: SchedulesFile::Columns[:Occupants].name, schedules: sf.tmp_schedules)) + assert_equal(0, sf.annual_equivalent_full_load_hrs(col_name: SchedulesFile::Columns[:LightingInterior].name, schedules: sf.tmp_schedules)) + assert_equal(0, sf.annual_equivalent_full_load_hrs(col_name: SchedulesFile::Columns[:LightingGarage].name, schedules: sf.tmp_schedules)) assert_equal(0, get_annual_equivalent_full_load_hrs(model, Constants.ObjectNameLightingExterior + ' schedule')) - assert_equal(0, sf.annual_equivalent_full_load_hrs(col_name: SchedulesFile::ColumnCookingRange, schedules: sf.tmp_schedules)) - assert_equal(0, sf.annual_equivalent_full_load_hrs(col_name: SchedulesFile::ColumnDishwasher, schedules: sf.tmp_schedules)) - assert_equal(0, sf.annual_equivalent_full_load_hrs(col_name: SchedulesFile::ColumnClothesWasher, schedules: sf.tmp_schedules)) - assert_equal(0, sf.annual_equivalent_full_load_hrs(col_name: SchedulesFile::ColumnClothesDryer, schedules: sf.tmp_schedules)) - assert_equal(0, sf.annual_equivalent_full_load_hrs(col_name: SchedulesFile::ColumnCeilingFan, schedules: sf.tmp_schedules)) - assert_equal(0, sf.annual_equivalent_full_load_hrs(col_name: SchedulesFile::ColumnPlugLoadsOther, schedules: sf.tmp_schedules)) - assert_equal(0, sf.annual_equivalent_full_load_hrs(col_name: SchedulesFile::ColumnPlugLoadsTV, schedules: sf.tmp_schedules)) - assert_equal(0, sf.annual_equivalent_full_load_hrs(col_name: SchedulesFile::ColumnHotWaterDishwasher, schedules: sf.tmp_schedules)) - assert_equal(0, sf.annual_equivalent_full_load_hrs(col_name: SchedulesFile::ColumnHotWaterClothesWasher, schedules: sf.tmp_schedules)) - assert_equal(0, sf.annual_equivalent_full_load_hrs(col_name: SchedulesFile::ColumnHotWaterFixtures, schedules: sf.tmp_schedules)) + assert_equal(0, sf.annual_equivalent_full_load_hrs(col_name: SchedulesFile::Columns[:CookingRange].name, schedules: sf.tmp_schedules)) + assert_equal(0, sf.annual_equivalent_full_load_hrs(col_name: SchedulesFile::Columns[:Dishwasher].name, schedules: sf.tmp_schedules)) + assert_equal(0, sf.annual_equivalent_full_load_hrs(col_name: SchedulesFile::Columns[:ClothesWasher].name, schedules: sf.tmp_schedules)) + assert_equal(0, sf.annual_equivalent_full_load_hrs(col_name: SchedulesFile::Columns[:ClothesDryer].name, schedules: sf.tmp_schedules)) + assert_equal(0, sf.annual_equivalent_full_load_hrs(col_name: SchedulesFile::Columns[:CeilingFan].name, schedules: sf.tmp_schedules)) + assert_equal(0, sf.annual_equivalent_full_load_hrs(col_name: SchedulesFile::Columns[:PlugLoadsOther].name, schedules: sf.tmp_schedules)) + assert_equal(0, sf.annual_equivalent_full_load_hrs(col_name: SchedulesFile::Columns[:PlugLoadsTV].name, schedules: sf.tmp_schedules)) + assert_equal(0, sf.annual_equivalent_full_load_hrs(col_name: SchedulesFile::Columns[:HotWaterDishwasher].name, schedules: sf.tmp_schedules)) + assert_equal(0, sf.annual_equivalent_full_load_hrs(col_name: SchedulesFile::Columns[:HotWaterClothesWasher].name, schedules: sf.tmp_schedules)) + assert_equal(0, sf.annual_equivalent_full_load_hrs(col_name: SchedulesFile::Columns[:HotWaterFixtures].name, schedules: sf.tmp_schedules)) assert_in_epsilon(8760, get_annual_equivalent_full_load_hrs(model, Constants.ObjectNameMechanicalVentilationHouseFan + ' schedule'), @tol) - assert(!sf.schedules.keys.include?(SchedulesFile::ColumnSleeping)) + assert(!sf.schedules.keys.include?(SchedulesFile::Columns[:Sleeping].name)) assert_in_epsilon(Constants.NumHoursInYear(@year), sf.annual_equivalent_full_load_hrs(col_name: column_name, schedules: sf.tmp_schedules), @tol) end @@ -394,22 +404,22 @@ def test_stochastic_power_outage_schedules unavailable_month_hrs = { 0 => 31.0 * 24.0 - 10.0, 11 => 31.0 * 24.0 - 5.0 } - assert_in_epsilon(6689, sf.annual_equivalent_full_load_hrs(col_name: SchedulesFile::ColumnOccupants, schedules: sf.tmp_schedules), @tol) - assert_in_epsilon(2086 - sf.period_equivalent_full_load_hrs(col_name: SchedulesFile::ColumnLightingInterior, period: unavailable_period), sf.annual_equivalent_full_load_hrs(col_name: SchedulesFile::ColumnLightingInterior, schedules: sf.tmp_schedules), @tol) - assert_in_epsilon(2086 - sf.period_equivalent_full_load_hrs(col_name: SchedulesFile::ColumnLightingGarage, period: unavailable_period), sf.annual_equivalent_full_load_hrs(col_name: SchedulesFile::ColumnLightingGarage, schedules: sf.tmp_schedules), @tol) + assert_in_epsilon(6689, sf.annual_equivalent_full_load_hrs(col_name: SchedulesFile::Columns[:Occupants].name, schedules: sf.tmp_schedules), @tol) + assert_in_epsilon(2086 - sf.period_equivalent_full_load_hrs(col_name: SchedulesFile::Columns[:LightingInterior].name, period: unavailable_period), sf.annual_equivalent_full_load_hrs(col_name: SchedulesFile::Columns[:LightingInterior].name, schedules: sf.tmp_schedules), @tol) + assert_in_epsilon(2086 - sf.period_equivalent_full_load_hrs(col_name: SchedulesFile::Columns[:LightingGarage].name, period: unavailable_period), sf.annual_equivalent_full_load_hrs(col_name: SchedulesFile::Columns[:LightingGarage].name, schedules: sf.tmp_schedules), @tol) assert_in_epsilon(4342 * get_available_hrs_ratio(unavailable_month_hrs, Schedule.LightingMonthlyMultipliers), get_annual_equivalent_full_load_hrs(model, Constants.ObjectNameLightingExterior + ' schedule'), @tol) - assert_in_epsilon(534 - sf.period_equivalent_full_load_hrs(col_name: SchedulesFile::ColumnCookingRange, period: unavailable_period), sf.annual_equivalent_full_load_hrs(col_name: SchedulesFile::ColumnCookingRange, schedules: sf.tmp_schedules), @tol) - assert_in_epsilon(213 - sf.period_equivalent_full_load_hrs(col_name: SchedulesFile::ColumnDishwasher, period: unavailable_period), sf.annual_equivalent_full_load_hrs(col_name: SchedulesFile::ColumnDishwasher, schedules: sf.tmp_schedules), @tol) - assert_in_epsilon(134 - sf.period_equivalent_full_load_hrs(col_name: SchedulesFile::ColumnClothesWasher, period: unavailable_period), sf.annual_equivalent_full_load_hrs(col_name: SchedulesFile::ColumnClothesWasher, schedules: sf.tmp_schedules), @tol) - assert_in_epsilon(151 - sf.period_equivalent_full_load_hrs(col_name: SchedulesFile::ColumnClothesDryer, period: unavailable_period), sf.annual_equivalent_full_load_hrs(col_name: SchedulesFile::ColumnClothesDryer, schedules: sf.tmp_schedules), @tol) - assert_in_epsilon(3250 - sf.period_equivalent_full_load_hrs(col_name: SchedulesFile::ColumnCeilingFan, period: unavailable_period), sf.annual_equivalent_full_load_hrs(col_name: SchedulesFile::ColumnCeilingFan, schedules: sf.tmp_schedules), @tol) - assert_in_epsilon(4840 - sf.period_equivalent_full_load_hrs(col_name: SchedulesFile::ColumnPlugLoadsOther, period: unavailable_period), sf.annual_equivalent_full_load_hrs(col_name: SchedulesFile::ColumnPlugLoadsOther, schedules: sf.tmp_schedules), @tol) - assert_in_epsilon(4840 - sf.period_equivalent_full_load_hrs(col_name: SchedulesFile::ColumnPlugLoadsTV, period: unavailable_period), sf.annual_equivalent_full_load_hrs(col_name: SchedulesFile::ColumnPlugLoadsTV, schedules: sf.tmp_schedules), @tol) - assert_in_epsilon(273 - sf.period_equivalent_full_load_hrs(col_name: SchedulesFile::ColumnHotWaterDishwasher, period: unavailable_period), sf.annual_equivalent_full_load_hrs(col_name: SchedulesFile::ColumnHotWaterDishwasher, schedules: sf.tmp_schedules), @tol) - assert_in_epsilon(346 - sf.period_equivalent_full_load_hrs(col_name: SchedulesFile::ColumnHotWaterClothesWasher, period: unavailable_period), sf.annual_equivalent_full_load_hrs(col_name: SchedulesFile::ColumnHotWaterClothesWasher, schedules: sf.tmp_schedules), @tol) - assert_in_epsilon(887 - sf.period_equivalent_full_load_hrs(col_name: SchedulesFile::ColumnHotWaterFixtures, period: unavailable_period), sf.annual_equivalent_full_load_hrs(col_name: SchedulesFile::ColumnHotWaterFixtures, schedules: sf.tmp_schedules), @tol) + assert_in_epsilon(534 - sf.period_equivalent_full_load_hrs(col_name: SchedulesFile::Columns[:CookingRange].name, period: unavailable_period), sf.annual_equivalent_full_load_hrs(col_name: SchedulesFile::Columns[:CookingRange].name, schedules: sf.tmp_schedules), @tol) + assert_in_epsilon(213 - sf.period_equivalent_full_load_hrs(col_name: SchedulesFile::Columns[:Dishwasher].name, period: unavailable_period), sf.annual_equivalent_full_load_hrs(col_name: SchedulesFile::Columns[:Dishwasher].name, schedules: sf.tmp_schedules), @tol) + assert_in_epsilon(134 - sf.period_equivalent_full_load_hrs(col_name: SchedulesFile::Columns[:ClothesWasher].name, period: unavailable_period), sf.annual_equivalent_full_load_hrs(col_name: SchedulesFile::Columns[:ClothesWasher].name, schedules: sf.tmp_schedules), @tol) + assert_in_epsilon(151 - sf.period_equivalent_full_load_hrs(col_name: SchedulesFile::Columns[:ClothesDryer].name, period: unavailable_period), sf.annual_equivalent_full_load_hrs(col_name: SchedulesFile::Columns[:ClothesDryer].name, schedules: sf.tmp_schedules), @tol) + assert_in_epsilon(3250 - sf.period_equivalent_full_load_hrs(col_name: SchedulesFile::Columns[:CeilingFan].name, period: unavailable_period), sf.annual_equivalent_full_load_hrs(col_name: SchedulesFile::Columns[:CeilingFan].name, schedules: sf.tmp_schedules), @tol) + assert_in_epsilon(4840 - sf.period_equivalent_full_load_hrs(col_name: SchedulesFile::Columns[:PlugLoadsOther].name, period: unavailable_period), sf.annual_equivalent_full_load_hrs(col_name: SchedulesFile::Columns[:PlugLoadsOther].name, schedules: sf.tmp_schedules), @tol) + assert_in_epsilon(4840 - sf.period_equivalent_full_load_hrs(col_name: SchedulesFile::Columns[:PlugLoadsTV].name, period: unavailable_period), sf.annual_equivalent_full_load_hrs(col_name: SchedulesFile::Columns[:PlugLoadsTV].name, schedules: sf.tmp_schedules), @tol) + assert_in_epsilon(273 - sf.period_equivalent_full_load_hrs(col_name: SchedulesFile::Columns[:HotWaterDishwasher].name, period: unavailable_period), sf.annual_equivalent_full_load_hrs(col_name: SchedulesFile::Columns[:HotWaterDishwasher].name, schedules: sf.tmp_schedules), @tol) + assert_in_epsilon(346 - sf.period_equivalent_full_load_hrs(col_name: SchedulesFile::Columns[:HotWaterClothesWasher].name, period: unavailable_period), sf.annual_equivalent_full_load_hrs(col_name: SchedulesFile::Columns[:HotWaterClothesWasher].name, schedules: sf.tmp_schedules), @tol) + assert_in_epsilon(887 - sf.period_equivalent_full_load_hrs(col_name: SchedulesFile::Columns[:HotWaterFixtures].name, period: unavailable_period), sf.annual_equivalent_full_load_hrs(col_name: SchedulesFile::Columns[:HotWaterFixtures].name, schedules: sf.tmp_schedules), @tol) assert_in_epsilon(8760 * get_available_hrs_ratio(unavailable_month_hrs), get_annual_equivalent_full_load_hrs(model, Constants.ObjectNameMechanicalVentilationHouseFan + ' schedule'), @tol) - assert(!sf.schedules.keys.include?(SchedulesFile::ColumnSleeping)) + assert(!sf.schedules.keys.include?(SchedulesFile::Columns[:Sleeping].name)) assert_in_epsilon(unavailable_month_hrs.values.sum, sf.annual_equivalent_full_load_hrs(col_name: column_name, schedules: sf.tmp_schedules), 0.001) end @@ -454,22 +464,22 @@ def test_stochastic_power_outage_schedules2 unavailable_month_hrs = { 0 => 31.0 * 24.0, 1 => 28.0 * 24.0 - 24.0, 11 => 31.0 * 24.0 - 5.0 } - assert_in_epsilon(6689, sf.annual_equivalent_full_load_hrs(col_name: SchedulesFile::ColumnOccupants, schedules: sf.tmp_schedules), @tol) - assert_in_epsilon(2086 - sf.period_equivalent_full_load_hrs(col_name: SchedulesFile::ColumnLightingInterior, period: unavailable_period), sf.annual_equivalent_full_load_hrs(col_name: SchedulesFile::ColumnLightingInterior, schedules: sf.tmp_schedules), @tol) - assert_in_epsilon(2086 - sf.period_equivalent_full_load_hrs(col_name: SchedulesFile::ColumnLightingGarage, period: unavailable_period), sf.annual_equivalent_full_load_hrs(col_name: SchedulesFile::ColumnLightingGarage, schedules: sf.tmp_schedules), @tol) + assert_in_epsilon(6689, sf.annual_equivalent_full_load_hrs(col_name: SchedulesFile::Columns[:Occupants].name, schedules: sf.tmp_schedules), @tol) + assert_in_epsilon(2086 - sf.period_equivalent_full_load_hrs(col_name: SchedulesFile::Columns[:LightingInterior].name, period: unavailable_period), sf.annual_equivalent_full_load_hrs(col_name: SchedulesFile::Columns[:LightingInterior].name, schedules: sf.tmp_schedules), @tol) + assert_in_epsilon(2086 - sf.period_equivalent_full_load_hrs(col_name: SchedulesFile::Columns[:LightingGarage].name, period: unavailable_period), sf.annual_equivalent_full_load_hrs(col_name: SchedulesFile::Columns[:LightingGarage].name, schedules: sf.tmp_schedules), @tol) assert_in_epsilon(4342 * get_available_hrs_ratio(unavailable_month_hrs, Schedule.LightingMonthlyMultipliers), get_annual_equivalent_full_load_hrs(model, Constants.ObjectNameLightingExterior + ' schedule'), @tol) - assert_in_epsilon(534 - sf.period_equivalent_full_load_hrs(col_name: SchedulesFile::ColumnCookingRange, period: unavailable_period), sf.annual_equivalent_full_load_hrs(col_name: SchedulesFile::ColumnCookingRange, schedules: sf.tmp_schedules), @tol) - assert_in_epsilon(213 - sf.period_equivalent_full_load_hrs(col_name: SchedulesFile::ColumnDishwasher, period: unavailable_period), sf.annual_equivalent_full_load_hrs(col_name: SchedulesFile::ColumnDishwasher, schedules: sf.tmp_schedules), @tol) - assert_in_epsilon(134 - sf.period_equivalent_full_load_hrs(col_name: SchedulesFile::ColumnClothesWasher, period: unavailable_period), sf.annual_equivalent_full_load_hrs(col_name: SchedulesFile::ColumnClothesWasher, schedules: sf.tmp_schedules), @tol) - assert_in_epsilon(151 - sf.period_equivalent_full_load_hrs(col_name: SchedulesFile::ColumnClothesDryer, period: unavailable_period), sf.annual_equivalent_full_load_hrs(col_name: SchedulesFile::ColumnClothesDryer, schedules: sf.tmp_schedules), @tol) - assert_in_epsilon(3250 - sf.period_equivalent_full_load_hrs(col_name: SchedulesFile::ColumnCeilingFan, period: unavailable_period), sf.annual_equivalent_full_load_hrs(col_name: SchedulesFile::ColumnCeilingFan, schedules: sf.tmp_schedules), @tol) - assert_in_epsilon(4840 - sf.period_equivalent_full_load_hrs(col_name: SchedulesFile::ColumnPlugLoadsOther, period: unavailable_period), sf.annual_equivalent_full_load_hrs(col_name: SchedulesFile::ColumnPlugLoadsOther, schedules: sf.tmp_schedules), @tol) - assert_in_epsilon(4840 - sf.period_equivalent_full_load_hrs(col_name: SchedulesFile::ColumnPlugLoadsTV, period: unavailable_period), sf.annual_equivalent_full_load_hrs(col_name: SchedulesFile::ColumnPlugLoadsTV, schedules: sf.tmp_schedules), @tol) - assert_in_epsilon(273 - sf.period_equivalent_full_load_hrs(col_name: SchedulesFile::ColumnHotWaterDishwasher, period: unavailable_period), sf.annual_equivalent_full_load_hrs(col_name: SchedulesFile::ColumnHotWaterDishwasher, schedules: sf.tmp_schedules), @tol) - assert_in_epsilon(346 - sf.period_equivalent_full_load_hrs(col_name: SchedulesFile::ColumnHotWaterClothesWasher, period: unavailable_period), sf.annual_equivalent_full_load_hrs(col_name: SchedulesFile::ColumnHotWaterClothesWasher, schedules: sf.tmp_schedules), @tol) - assert_in_epsilon(887 - sf.period_equivalent_full_load_hrs(col_name: SchedulesFile::ColumnHotWaterFixtures, period: unavailable_period), sf.annual_equivalent_full_load_hrs(col_name: SchedulesFile::ColumnHotWaterFixtures, schedules: sf.tmp_schedules), @tol) + assert_in_epsilon(534 - sf.period_equivalent_full_load_hrs(col_name: SchedulesFile::Columns[:CookingRange].name, period: unavailable_period), sf.annual_equivalent_full_load_hrs(col_name: SchedulesFile::Columns[:CookingRange].name, schedules: sf.tmp_schedules), @tol) + assert_in_epsilon(213 - sf.period_equivalent_full_load_hrs(col_name: SchedulesFile::Columns[:Dishwasher].name, period: unavailable_period), sf.annual_equivalent_full_load_hrs(col_name: SchedulesFile::Columns[:Dishwasher].name, schedules: sf.tmp_schedules), @tol) + assert_in_epsilon(134 - sf.period_equivalent_full_load_hrs(col_name: SchedulesFile::Columns[:ClothesWasher].name, period: unavailable_period), sf.annual_equivalent_full_load_hrs(col_name: SchedulesFile::Columns[:ClothesWasher].name, schedules: sf.tmp_schedules), @tol) + assert_in_epsilon(151 - sf.period_equivalent_full_load_hrs(col_name: SchedulesFile::Columns[:ClothesDryer].name, period: unavailable_period), sf.annual_equivalent_full_load_hrs(col_name: SchedulesFile::Columns[:ClothesDryer].name, schedules: sf.tmp_schedules), @tol) + assert_in_epsilon(3250 - sf.period_equivalent_full_load_hrs(col_name: SchedulesFile::Columns[:CeilingFan].name, period: unavailable_period), sf.annual_equivalent_full_load_hrs(col_name: SchedulesFile::Columns[:CeilingFan].name, schedules: sf.tmp_schedules), @tol) + assert_in_epsilon(4840 - sf.period_equivalent_full_load_hrs(col_name: SchedulesFile::Columns[:PlugLoadsOther].name, period: unavailable_period), sf.annual_equivalent_full_load_hrs(col_name: SchedulesFile::Columns[:PlugLoadsOther].name, schedules: sf.tmp_schedules), @tol) + assert_in_epsilon(4840 - sf.period_equivalent_full_load_hrs(col_name: SchedulesFile::Columns[:PlugLoadsTV].name, period: unavailable_period), sf.annual_equivalent_full_load_hrs(col_name: SchedulesFile::Columns[:PlugLoadsTV].name, schedules: sf.tmp_schedules), @tol) + assert_in_epsilon(273 - sf.period_equivalent_full_load_hrs(col_name: SchedulesFile::Columns[:HotWaterDishwasher].name, period: unavailable_period), sf.annual_equivalent_full_load_hrs(col_name: SchedulesFile::Columns[:HotWaterDishwasher].name, schedules: sf.tmp_schedules), @tol) + assert_in_epsilon(346 - sf.period_equivalent_full_load_hrs(col_name: SchedulesFile::Columns[:HotWaterClothesWasher].name, period: unavailable_period), sf.annual_equivalent_full_load_hrs(col_name: SchedulesFile::Columns[:HotWaterClothesWasher].name, schedules: sf.tmp_schedules), @tol) + assert_in_epsilon(887 - sf.period_equivalent_full_load_hrs(col_name: SchedulesFile::Columns[:HotWaterFixtures].name, period: unavailable_period), sf.annual_equivalent_full_load_hrs(col_name: SchedulesFile::Columns[:HotWaterFixtures].name, schedules: sf.tmp_schedules), @tol) assert_in_epsilon(8760 * get_available_hrs_ratio(unavailable_month_hrs), get_annual_equivalent_full_load_hrs(model, Constants.ObjectNameMechanicalVentilationHouseFan + ' schedule'), @tol) - assert(!sf.schedules.keys.include?(SchedulesFile::ColumnSleeping)) + assert(!sf.schedules.keys.include?(SchedulesFile::Columns[:Sleeping].name)) assert_in_epsilon(unavailable_month_hrs.values.sum, sf.annual_equivalent_full_load_hrs(col_name: column_name, schedules: sf.tmp_schedules), 0.001) end @@ -688,6 +698,12 @@ def test_set_unavailable_periods_leap_year _test_day_schedule(schedule, 3, 1, year, 0, 24) end + def test_unavailable_period_csv_entries + csv_entries = Schedule.get_unavailable_periods_csv_data.map { |h| h['Schedule Name'] } + unavailable_period_columns = SchedulesFile::Columns.values.select { |c| c.used_by_unavailable_periods }.map { |c| c.name }.sort + assert_equal(unavailable_period_columns.sort, csv_entries.sort) + end + def _add_unavailable_period(hpxml, column_name, begin_month, begin_day, begin_hour, end_month, end_day, end_hour, natvent_availability = nil) hpxml.header.unavailable_periods.add(column_name: column_name, begin_month: begin_month, diff --git a/hpxml-measures/ReportSimulationOutput/measure.xml b/hpxml-measures/ReportSimulationOutput/measure.xml index 5ceec63bb..c92cced5e 100644 --- a/hpxml-measures/ReportSimulationOutput/measure.xml +++ b/hpxml-measures/ReportSimulationOutput/measure.xml @@ -3,8 +3,8 @@ 3.1 report_simulation_output df9d170c-c21a-4130-866d-0d46b06073fd - 0f71215d-a222-485f-b614-630888e7db65 - 2024-01-25T22:35:16Z + 710f2d3c-ddf8-4b04-8a52-bf34bb01b07e + 2024-02-22T17:59:44Z 9BF1E6AC ReportSimulationOutput HPXML Simulation Output Report @@ -1935,7 +1935,7 @@ test_report_sim_output.rb rb test - 3A0094A9 + 3ED3C0C5 diff --git a/hpxml-measures/ReportSimulationOutput/tests/test_report_sim_output.rb b/hpxml-measures/ReportSimulationOutput/tests/test_report_sim_output.rb index 817d63df5..7a0eebf99 100644 --- a/hpxml-measures/ReportSimulationOutput/tests/test_report_sim_output.rb +++ b/hpxml-measures/ReportSimulationOutput/tests/test_report_sim_output.rb @@ -782,7 +782,7 @@ def test_timeseries_hourly_enduses_vacancy annual_csv, timeseries_csv = _test_measure(args_hash) assert(File.exist?(annual_csv)) assert(File.exist?(timeseries_csv)) - expected_timeseries_cols = ['Time'] + BaseHPXMLTimeseriesColsEndUses + expected_timeseries_cols = ['Time'] + BaseHPXMLTimeseriesColsEndUses + ["End Use: #{FT::Elec}: #{EUT::HotWaterRecircPump}"] actual_timeseries_cols = File.readlines(timeseries_csv)[0].strip.split(',') assert_equal(expected_timeseries_cols.sort, actual_timeseries_cols.sort) timeseries_rows = CSV.read(timeseries_csv) diff --git a/hpxml-measures/docs/source/workflow_inputs.rst b/hpxml-measures/docs/source/workflow_inputs.rst index 5550b6f3f..a93ea3e2b 100644 --- a/hpxml-measures/docs/source/workflow_inputs.rst +++ b/hpxml-measures/docs/source/workflow_inputs.rst @@ -576,8 +576,8 @@ Building construction is entered in ``/HPXML/Building/BuildingDetails/BuildingSu EnergyPlus simulation results will be multiplied by this value. For example, when modeling :ref:`bldg_type_bldgs`, this allows modeling *unique* dwelling units, rather than *all* dwelling units, to reduce simulation runtime. .. [#] If NumberofBathrooms not provided, calculated as NumberofBedrooms/2 + 0.5 based on the `2010 BAHSP `_. - .. [#] If neither ConditionedBuildingVolume nor AverageCeilingHeight provided, AverageCeilingHeight defaults to the lesser of 8.0 and InfiltrationVolume / ConditionedFloorArea. - If needed, additional defaulting is performed using the following relationship: ConditionedBuildingVolume = ConditionedFloorArea * AverageCeilingHeight + ConditionedCrawlspaceVolume. + .. [#] If neither ConditionedBuildingVolume nor AverageCeilingHeight provided, AverageCeilingHeight defaults to 8 ft. + If one is provided, the other is calculated using the following relationship: ConditionedBuildingVolume = ConditionedFloorArea * AverageCeilingHeight + ConditionedCrawlspaceVolume. HPXML Schedules *************** @@ -646,8 +646,6 @@ The column names available in the schedule CSV files are: ``water_heater_setpoint`` F Water heater setpoint schedule. No ``water_heater_operating_mode`` 0/1 Heat pump water heater operating mode schedule. 0=hybrid/auto, 1=heat pump only. No ``battery`` -1 to 1 Battery schedule. Positive for charging, negative for discharging. No - ``vacancy`` 0/1 Vacancy schedule. 0=occupied, 1=vacant. Automatically overrides other columns. N/A - ``outage`` 0/1 Power outage schedule. 0=power. 1=nopower. Automatically overrides other columns. N/A ================================ ======= ================================================================================= =============================== Columns with units of `frac` must be normalized to MAX=1; that is, these schedules only define *when* energy is used, not *how much* energy is used. @@ -1670,7 +1668,7 @@ Each in-unit boiler is entered as a ``/HPXML/Building/BuildingDetails/Systems/HV .. [#] The sum of all ``FractionHeatLoadServed`` (across all HVAC systems) must be less than or equal to 1. .. [#] FractionHeatLoadServed is required unless the heating system is a heat pump backup system (i.e., referenced by a ``HeatPump[BackupType="separate"]/BackupSystem``; see :ref:`hvac_heatpump`), in which case FractionHeatLoadServed is not allowed. Heat pump backup will only operate during colder temperatures when the heat pump runs out of heating capacity or is disabled due to a switchover/lockout temperature. - .. [#] If ElectricAuxiliaryEnergy not provided, defaults as follows: + .. [#] If ElectricAuxiliaryEnergy not provided, defaults as follows per ANSI/RESNET/ICC 301-2019: \- **Oil boiler**: 330 kWh/yr @@ -1697,8 +1695,8 @@ Each shared boiler (serving multiple dwelling units) is entered as a ``/HPXML/Bu ``HeatingSystemFuel`` string See [#]_ Yes Fuel type ``AnnualHeatingEfficiency[Units="AFUE"]/Value`` double frac > 0, <= 1 Yes Rated efficiency ``FractionHeatLoadServed`` double frac >= 0, <= 1 [#]_ See [#]_ Fraction of heating load served - ``extension/SharedLoopWatts`` double W >= 0 Yes Shared loop power - ``extension/FanCoilWatts`` double W >= 0 See [#]_ Fan coil power + ``ElectricAuxiliaryEnergy`` or ``extension/SharedLoopWatts`` double kWh/yr or W >= 0 No See [#]_ Electric auxiliary energy or shared loop power + ``ElectricAuxiliaryEnergy`` or ``extension/FanCoilWatts`` double kWh/yr or W >= 0 No [#]_ Electric auxiliary energy or fan coil power ============================================================ ======= =========== =============== ======== ============== ========================================= .. [#] UnitLocation choices are "conditioned space", "basement - unconditioned", "basement - conditioned", "attic - unvented", "attic - vented", "garage", "crawlspace - unvented", "crawlspace - vented", "crawlspace - conditioned", "other exterior", "other housing unit", "other heated space", "other multifamily buffer space", "other non-freezing space", "roof deck", "manufactured home belly", or "unconditioned space". @@ -1715,7 +1713,15 @@ Each shared boiler (serving multiple dwelling units) is entered as a ``/HPXML/Bu .. [#] The sum of all ``FractionHeatLoadServed`` (across all HVAC systems) must be less than or equal to 1. .. [#] FractionHeatLoadServed is required unless the heating system is a heat pump backup system (i.e., referenced by a ``HeatPump[BackupType="separate"]/BackupSystem``; see :ref:`hvac_heatpump`), in which case FractionHeatLoadServed is not allowed. Heat pump backup will only operate during colder temperatures when the heat pump runs out of heating capacity or is disabled due to a switchover/lockout temperature. - .. [#] FanCoilWatts only required if boiler connected to fan coil. + .. [#] If ElectricAuxiliaryEnergy nor SharedLoopWatts provided, defaults as follows per ANSI/RESNET/ICC 301-2019: + + \- **Shared boiler w/ baseboard**: 220 kWh/yr + + \- **Shared boiler w/ water loop heat pump**: 265 kWh/yr + + \- **Shared boiler w/ fan coil**: 438 kWh/yr + + .. [#] FanCoilWatts only used if boiler connected to fan coil and SharedLoopWatts provided. .. _hvac_heating_stove: @@ -4297,18 +4303,19 @@ HPXML Ceiling Fans Each ceiling fan is entered as a ``/HPXML/Building/BuildingDetails/Lighting/CeilingFan``. If not entered, the simulation will not include a ceiling fan. - ========================================= ======= ======= =========== ======== ======== ============================== - Element Type Units Constraints Required Default Notes - ========================================= ======= ======= =========== ======== ======== ============================== - ``SystemIdentifier`` id Yes Unique identifier - ``Airflow[FanSpeed="medium"]/Efficiency`` double cfm/W > 0 No See [#]_ Efficiency at medium speed - ``Count`` integer > 0 No See [#]_ Number of similar ceiling fans - ``extension/WeekdayScheduleFractions`` array No See [#]_ 24 comma-separated weekday fractions - ``extension/WeekendScheduleFractions`` array No 24 comma-separated weekend fractions - ``extension/MonthlyScheduleMultipliers`` array No See [#]_ 12 comma-separated monthly multipliers - ========================================= ======= ======= =========== ======== ======== ============================== - - .. [#] If Efficiency not provided, defaults to 3000 / 42.6 based on `ANSI/RESNET/ICC 301-2019 `_. + ============================================================================= ======= ========== =========== ======== ======== ============================== + Element Type Units Constraints Required Default Notes + ============================================================================= ======= ========== =========== ======== ======== ============================== + ``SystemIdentifier`` id Yes Unique identifier + ``Airflow[FanSpeed="medium"]/Efficiency`` and/or ``LabelEnergyUse`` double cfm/W or W > 0 No See [#]_ Efficiency at medium speed or EnergyGuide label average energy use + ``Count`` integer > 0 No See [#]_ Number of similar ceiling fans + ``extension/WeekdayScheduleFractions`` array No See [#]_ 24 comma-separated weekday fractions + ``extension/WeekendScheduleFractions`` array No 24 comma-separated weekend fractions + ``extension/MonthlyScheduleMultipliers`` array No See [#]_ 12 comma-separated monthly multipliers + ============================================================================= ======= ========== =========== ======== ======== ============================== + + .. [#] If Efficiency and LabelEnergyUse not provided, LabelEnergyUse defaults to 42.6 W based on ANSI/RESNET/ICC 301-2022 Addendum C. + If both are provided, LabelEnergyUse will be used in the model. .. [#] If Count not provided, defaults to NumberofBedrooms + 1 based on `ANSI/RESNET/ICC 301-2019 `_. .. [#] If WeekdayScheduleFractions or WeekendScheduleFractions not provided (and :ref:`schedules_detailed` not used), default values from Table C.3(5) of ANSI/RESNET/ICC 301-2022 Addendum C are used: "0.057, 0.057, 0.057, 0.057, 0.057, 0.057, 0.057, 0.024, 0.024, 0.024, 0.024, 0.024, 0.024, 0.024, 0.024, 0.024, 0.024, 0.024, 0.052, 0.057, 0.057, 0.057, 0.057, 0.057". .. [#] If MonthlyScheduleMultipliers not provided (and :ref:`schedules_detailed` not used), defaults based on monthly average outdoor temperatures per `ANSI/RESNET/ICC 301-2019 `_ @@ -4605,31 +4612,31 @@ HPXML Locations The various locations used in an HPXML file are defined as follows: - ============================== ======================================================= ============================================ ================= - Value Description Temperature Building Type - ============================== ======================================================= ============================================ ================= - outside Ambient environment Weather data Any - ground EnergyPlus calculation Any - conditioned space Above-grade conditioned space maintained at setpoint EnergyPlus calculation Any - attic - vented EnergyPlus calculation Any - attic - unvented EnergyPlus calculation Any - basement - conditioned Below-grade conditioned space maintained at setpoint EnergyPlus calculation Any - basement - unconditioned EnergyPlus calculation Any - crawlspace - vented EnergyPlus calculation Any - crawlspace - unvented EnergyPlus calculation Any - crawlspace - conditioned Below-grade conditioned space maintained at setpoint EnergyPlus calculation Any - garage Single-family garage (not shared parking) EnergyPlus calculation Any - manufactured home underbelly Underneath the belly, ambient environment Weather data Manufactured only - manufactured home belly Within the belly Same as conditioned space Manufactured only - other housing unit E.g., conditioned adjacent unit or conditioned corridor Same as conditioned space SFA/MF only - other heated space E.g., shared laundry/equipment space Avg of conditioned space/outside; min of 68F SFA/MF only - other multifamily buffer space E.g., enclosed unconditioned stairwell Avg of conditioned space/outside; min of 50F SFA/MF only - other non-freezing space E.g., shared parking garage ceiling Floats with outside; minimum of 40F SFA/MF only - other exterior Water heater outside Weather data Any - exterior wall Ducts in exterior wall Avg of conditioned space/outside Any - under slab Ducts under slab (ground) EnergyPlus calculation Any - roof deck Ducts on roof deck (outside) Weather data Any - ============================== ======================================================= ============================================ ================= + ============================== ======================================================= ========================================================= ================= + Value Description Temperature Building Type + ============================== ======================================================= ========================================================= ================= + outside Ambient environment Weather data Any + ground EnergyPlus calculation Any + conditioned space Above-grade conditioned space maintained at setpoint EnergyPlus calculation Any + attic - vented EnergyPlus calculation Any + attic - unvented EnergyPlus calculation Any + basement - conditioned Below-grade conditioned space maintained at setpoint EnergyPlus calculation Any + basement - unconditioned EnergyPlus calculation Any + crawlspace - vented EnergyPlus calculation Any + crawlspace - unvented EnergyPlus calculation Any + crawlspace - conditioned Below-grade conditioned space maintained at setpoint EnergyPlus calculation Any + garage Single-family garage (not shared parking) EnergyPlus calculation Any + manufactured home underbelly Underneath the belly, ambient environment Weather data Manufactured only + manufactured home belly Within the belly Same as conditioned space Manufactured only + other housing unit E.g., conditioned adjacent unit or conditioned corridor Same as conditioned space SFA/MF only + other heated space E.g., shared laundry/equipment space Avg of conditioned space/outside; min of heating setpoint SFA/MF only + other multifamily buffer space E.g., enclosed unconditioned stairwell Avg of conditioned space/outside; min of 50F SFA/MF only + other non-freezing space E.g., shared parking garage ceiling Floats with outside; minimum of 40F SFA/MF only + other exterior Water heater outside Weather data Any + exterior wall Ducts in exterior wall Avg of conditioned space/outside Any + under slab Ducts under slab (ground) EnergyPlus calculation Any + roof deck Ducts on roof deck (outside) Weather data Any + ============================== ======================================================= ========================================================= ================= Validating & Debugging Errors ----------------------------- diff --git a/hpxml-measures/tasks.rb b/hpxml-measures/tasks.rb index ff31ffe97..0881fe348 100644 --- a/hpxml-measures/tasks.rb +++ b/hpxml-measures/tasks.rb @@ -406,7 +406,8 @@ def apply_hpxml_modification(hpxml_file, hpxml) hpxml_bldg.dishwashers[0].location = adjacent_to hpxml_bldg.refrigerators[0].location = adjacent_to hpxml_bldg.cooking_ranges[0].location = adjacent_to - elsif ['base-bldgtype-mf-unit-adjacent-to-multiple.xml'].include? hpxml_file + elsif ['base-bldgtype-mf-unit-adjacent-to-multiple.xml', + 'base-bldgtype-mf-unit-adjacent-to-multiple-hvac-none.xml'].include? hpxml_file wall = hpxml_bldg.walls.select { |w| w.interior_adjacent_to == HPXML::LocationConditionedSpace && w.exterior_adjacent_to == HPXML::LocationOtherHousingUnit @@ -1325,21 +1326,25 @@ def apply_hpxml_modification(hpxml_file, hpxml) hpxml_bldg.heat_pumps[0].number_of_units_served = 6 hpxml_bldg.heat_pumps[0].pump_watts_per_ton = 0.0 end - if hpxml_file.include? 'shared-boiler' - hpxml_bldg.heating_systems[0].shared_loop_watts = 600 - end - if hpxml_file.include?('chiller') || hpxml_file.include?('cooling-tower') - hpxml_bldg.cooling_systems[0].shared_loop_watts = 600 - end - if hpxml_file.include? 'shared-ground-loop' - hpxml_bldg.heat_pumps[0].shared_loop_watts = 600 - end - if hpxml_file.include? 'fan-coil' - if hpxml_file.include? 'boiler' - hpxml_bldg.heating_systems[0].fan_coil_watts = 150 + if hpxml_file.include? 'eae' + hpxml_bldg.heating_systems[0].electric_auxiliary_energy = 500.0 + else + if hpxml_file.include? 'shared-boiler' + hpxml_bldg.heating_systems[0].shared_loop_watts = 600 end - if hpxml_file.include? 'chiller' - hpxml_bldg.cooling_systems[0].fan_coil_watts = 150 + if hpxml_file.include?('chiller') || hpxml_file.include?('cooling-tower') + hpxml_bldg.cooling_systems[0].shared_loop_watts = 600 + end + if hpxml_file.include? 'shared-ground-loop' + hpxml_bldg.heat_pumps[0].shared_loop_watts = 600 + end + if hpxml_file.include? 'fan-coil' + if hpxml_file.include? 'boiler' + hpxml_bldg.heating_systems[0].fan_coil_watts = 150 + end + if hpxml_file.include? 'chiller' + hpxml_bldg.cooling_systems[0].fan_coil_watts = 150 + end end end if hpxml_file.include? 'install-quality' @@ -1777,7 +1782,10 @@ def apply_hpxml_modification(hpxml_file, hpxml) hpxml_bldg.water_fixtures[1].flow_rate = 2.0 hpxml_bldg.water_fixtures[1].count = 3 end - if ['base-dhw-recirc-demand-scheduled.xml'].include? hpxml_file + if ['base-dhw-recirc-demand-scheduled.xml', + 'base-schedules-simple.xml', + 'base-schedules-simple-vacancy.xml', + 'base-schedules-simple-power-outage.xml'].include? hpxml_file hpxml_bldg.hot_water_distributions[0].recirculation_pump_weekday_fractions = Schedule.RecirculationPumpDemandControlledWeekdayFractions hpxml_bldg.hot_water_distributions[0].recirculation_pump_weekend_fractions = Schedule.RecirculationPumpDemandControlledWeekendFractions hpxml_bldg.hot_water_distributions[0].recirculation_pump_monthly_multipliers = Schedule.RecirculationPumpMonthlyMultipliers @@ -2114,7 +2122,8 @@ def apply_hpxml_modification(hpxml_file, hpxml) # -------------- # # Logic that can only be applied based on the file name - if ['base-lighting-ceiling-fans.xml'].include? hpxml_file + if ['base-lighting-ceiling-fans.xml', + 'base-lighting-ceiling-fans-label-energy-use.xml'].include? hpxml_file hpxml_bldg.ceiling_fans[0].weekday_fractions = '0.057, 0.057, 0.057, 0.057, 0.057, 0.057, 0.057, 0.024, 0.024, 0.024, 0.024, 0.024, 0.024, 0.024, 0.024, 0.024, 0.024, 0.024, 0.057, 0.057, 0.057, 0.057, 0.057, 0.057' hpxml_bldg.ceiling_fans[0].weekend_fractions = '0.057, 0.057, 0.057, 0.057, 0.057, 0.057, 0.057, 0.024, 0.024, 0.024, 0.024, 0.024, 0.024, 0.024, 0.024, 0.024, 0.024, 0.024, 0.057, 0.057, 0.057, 0.057, 0.057, 0.057' hpxml_bldg.ceiling_fans[0].monthly_multipliers = '0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0' diff --git a/hpxml-measures/workflow/hpxml_inputs.json b/hpxml-measures/workflow/hpxml_inputs.json index 09f2a8e67..7d5a169f4 100644 --- a/hpxml-measures/workflow/hpxml_inputs.json +++ b/hpxml-measures/workflow/hpxml_inputs.json @@ -842,6 +842,11 @@ "sample_files/base-bldgtype-mf-unit-adjacent-to-other-heated-space.xml": { "parent_hpxml": "sample_files/base-bldgtype-mf-unit.xml" }, + "sample_files/base-bldgtype-mf-unit-adjacent-to-multiple-hvac-none.xml": { + "parent_hpxml": "sample_files/base-bldgtype-mf-unit-adjacent-to-multiple.xml", + "heating_system_type": "none", + "cooling_system_type": "none" + }, "sample_files/base-bldgtype-mf-unit-adjacent-to-other-housing-unit.xml": { "parent_hpxml": "sample_files/base-bldgtype-mf-unit.xml" }, @@ -897,6 +902,9 @@ "sample_files/base-bldgtype-mf-unit-shared-boiler-only-fan-coil-ducted.xml": { "parent_hpxml": "sample_files/base-bldgtype-mf-unit-shared-boiler-only-fan-coil.xml" }, + "sample_files/base-bldgtype-mf-unit-shared-boiler-only-fan-coil-eae.xml": { + "parent_hpxml": "sample_files/base-bldgtype-mf-unit-shared-boiler-only-fan-coil.xml" + }, "sample_files/base-bldgtype-mf-unit-shared-boiler-only-water-loop-heat-pump.xml": { "parent_hpxml": "sample_files/base-bldgtype-mf-unit-shared-boiler-only-baseboard.xml" }, @@ -2520,6 +2528,10 @@ "ceiling_fan_quantity": 4, "ceiling_fan_cooling_setpoint_temp_offset": 0.5 }, + "sample_files/base-lighting-ceiling-fans-label-energy-use.xml": { + "parent_hpxml": "sample_files/base-lighting-ceiling-fans.xml", + "ceiling_fan_label_energy_use": 39 + }, "sample_files/base-lighting-holiday.xml": { "parent_hpxml": "sample_files/base.xml", "holiday_lighting_present": true, @@ -2880,6 +2892,7 @@ }, "sample_files/base-misc-loads-large-uncommon.xml": { "parent_hpxml": "sample_files/base-schedules-simple.xml", + "hot_water_distribution_system_type": "Standard", "extra_refrigerator_present": true, "extra_refrigerator_rated_annual_kwh": 700, "freezer_present": true, @@ -3154,15 +3167,30 @@ "geometry_unit_num_occupants": 5 }, "sample_files/base-schedules-simple.xml": { - "parent_hpxml": "sample_files/base.xml" + "parent_hpxml": "sample_files/base.xml", + "hot_water_distribution_system_type": "Recirculation", + "hot_water_distribution_recirc_control_type": "no control", + "hot_water_distribution_recirc_piping_length": 50, + "hot_water_distribution_recirc_branch_piping_length": 50, + "hot_water_distribution_recirc_pump_power": 50 }, "sample_files/base-schedules-simple-vacancy.xml": { "parent_hpxml": "sample_files/base.xml", - "schedules_vacancy_period": "Dec 1 - Jan 31" + "schedules_vacancy_periods": "Dec 1 - Jan 31", + "hot_water_distribution_system_type": "Recirculation", + "hot_water_distribution_recirc_control_type": "no control", + "hot_water_distribution_recirc_piping_length": 50, + "hot_water_distribution_recirc_branch_piping_length": 50, + "hot_water_distribution_recirc_pump_power": 50 }, "sample_files/base-schedules-simple-power-outage.xml": { "parent_hpxml": "sample_files/base.xml", - "schedules_power_outage_period": "Jul 1 5 - Jul 31 14" + "schedules_power_outage_periods": "Jul 1 5 - Jul 31 14", + "hot_water_distribution_system_type": "Recirculation", + "hot_water_distribution_recirc_control_type": "no control", + "hot_water_distribution_recirc_piping_length": 50, + "hot_water_distribution_recirc_branch_piping_length": 50, + "hot_water_distribution_recirc_pump_power": 50 }, "sample_files/base-schedules-detailed-all-10-mins.xml": { "parent_hpxml": "sample_files/base-simcontrol-timestep-10-mins.xml", @@ -3184,7 +3212,7 @@ }, "sample_files/base-schedules-detailed-mixed-timesteps-power-outage.xml": { "parent_hpxml": "sample_files/base-schedules-detailed-mixed-timesteps.xml", - "schedules_power_outage_period": "Dec 1 5 - Jan 31 14" + "schedules_power_outage_periods": "Dec 1 5 - Jan 31 14" }, "sample_files/base-schedules-detailed-occupancy-stochastic.xml": { "parent_hpxml": "sample_files/base.xml", @@ -3192,11 +3220,11 @@ }, "sample_files/base-schedules-detailed-occupancy-stochastic-vacancy.xml": { "parent_hpxml": "sample_files/base-schedules-detailed-occupancy-stochastic.xml", - "schedules_vacancy_period": "Dec 1 - Jan 31" + "schedules_vacancy_periods": "Dec 1 - Jan 31" }, "sample_files/base-schedules-detailed-occupancy-stochastic-power-outage.xml": { "parent_hpxml": "sample_files/base-schedules-detailed-occupancy-stochastic.xml", - "schedules_power_outage_period": "Dec 1 5 - Jan 31 14" + "schedules_power_outage_periods": "Dec 1 5 - Jan 31 14" }, "sample_files/base-schedules-detailed-occupancy-stochastic-10-mins.xml": { "parent_hpxml": "sample_files/base.xml", diff --git a/hpxml-measures/workflow/sample_files/base-bldgtype-mf-unit-adjacent-to-multiple-hvac-none.xml b/hpxml-measures/workflow/sample_files/base-bldgtype-mf-unit-adjacent-to-multiple-hvac-none.xml new file mode 100644 index 000000000..6a3364fe5 --- /dev/null +++ b/hpxml-measures/workflow/sample_files/base-bldgtype-mf-unit-adjacent-to-multiple-hvac-none.xml @@ -0,0 +1,486 @@ + + + + HPXML + tasks.rb + 2000-01-01T00:00:00-07:00 + create + + + + + 60 + + + + Bills + + + + + + + + +
+ CO +
+
+ + proposed workscope + + + + + suburban + attached on one side + unit above and below + 180 + + electricity + natural gas + + + + apartment unit + 6 + 1.0 + 1.0 + 8.0 + 3 + 2 + 900.0 + 7200.0 + + + + + 2006 + 5B + + + + USA_CO_Denver.Intl.AP.725650_TMY3 + + USA_CO_Denver.Intl.AP.725650_TMY3.epw + + + + + + + + unit exterior only + 50.0 + + ACH + 3.0 + + 7200.0 + + + + + + + + + + + + + + + + + + + + + + outside + conditioned space + + + + 685.9 + wood siding + 0.7 + 0.92 + + gypsum board + + + + 23.0 + + + + + other heated space + conditioned space + + + + 100.0 + 0.7 + 0.92 + + gypsum board + + + + 23.0 + + + + + other multifamily buffer space + conditioned space + + + + 100.0 + 0.7 + 0.92 + + gypsum board + + + + 23.0 + + + + + other non-freezing space + conditioned space + + + + 100.0 + 0.7 + 0.92 + + gypsum board + + + + 23.0 + + + + + other housing unit + conditioned space + + + + 100.0 + 0.7 + 0.92 + + gypsum board + + + + 4.0 + + + + + + + other housing unit + conditioned space + ceiling + + + + 900.0 + + gypsum board + + + + 2.1 + + + + + other non-freezing space + conditioned space + floor + + + + 550.0 + + + 18.7 + + + + + other multifamily buffer space + conditioned space + floor + + + + 200.0 + + + 18.7 + + + + + other heated space + conditioned space + floor + + + + 150.0 + + + 2.1 + + + + + + + 35.3 + 0 + 0.33 + 0.45 + + + 0.7 + 0.85 + + 0.67 + + + + + 35.3 + 180 + 0.33 + 0.45 + + + 0.7 + 0.85 + + 0.67 + + + + + 52.9 + 270 + 0.33 + 0.45 + + + 0.7 + 0.85 + + 0.67 + + + + + 50.0 + 270 + 0.33 + 0.45 + 0.67 + + + + + + + + 20.0 + 180 + 4.4 + + + + + 20.0 + 0 + 4.4 + + + + + 20.0 + 0 + 4.4 + + + + + + + + electricity + storage water heater + conditioned space + 40.0 + 1.0 + 18767.0 + 0.95 + 125.0 + + + + + + 50.0 + + + + 0.0 + + + + + shower head + true + + + + faucet + false + + + + + + + conditioned space + 1.21 + 380.0 + 0.12 + 1.09 + 27.0 + 6.0 + 3.2 + + + + conditioned space + electricity + 3.73 + true + 150.0 + + + + conditioned space + 307.0 + 12 + 0.12 + 1.09 + 22.32 + 4.0 + + + + conditioned space + 650.0 + true + + + + conditioned space + electricity + false + + + + false + + + + + + interior + 0.4 + + + + + + + interior + 0.1 + + + + + + + interior + 0.25 + + + + + + + exterior + 0.4 + + + + + + + exterior + 0.1 + + + + + + + exterior + 0.25 + + + + + + + + + TV other + + kWh/year + 620.0 + + + + + other + + kWh/year + 819.0 + + + 0.855 + 0.045 + + + + +
+
\ No newline at end of file diff --git a/hpxml-measures/workflow/sample_files/base-bldgtype-mf-unit-shared-boiler-only-fan-coil-eae.xml b/hpxml-measures/workflow/sample_files/base-bldgtype-mf-unit-shared-boiler-only-fan-coil-eae.xml new file mode 100644 index 000000000..681c3ce55 --- /dev/null +++ b/hpxml-measures/workflow/sample_files/base-bldgtype-mf-unit-shared-boiler-only-fan-coil-eae.xml @@ -0,0 +1,416 @@ + + + + HPXML + tasks.rb + 2000-01-01T00:00:00-07:00 + create + + + + + 60 + + + + Bills + + + + + + + + +
+ CO +
+
+ + proposed workscope + + + + + suburban + attached on one side + unit above and below + 180 + + electricity + natural gas + + + + apartment unit + 6 + 1.0 + 1.0 + 8.0 + 3 + 2 + 900.0 + 7200.0 + + + + + 2006 + 5B + + + + USA_CO_Denver.Intl.AP.725650_TMY3 + + USA_CO_Denver.Intl.AP.725650_TMY3.epw + + + + + + + + unit exterior only + 50.0 + + ACH + 3.0 + + 7200.0 + + + + + + + + + + + + + + + + + + + + + + outside + conditioned space + + + + 685.9 + wood siding + 0.7 + 0.92 + + gypsum board + + + + 23.0 + + + + + other housing unit + conditioned space + + + + 293.9 + 0.7 + 0.92 + + gypsum board + + + + 4.0 + + + + + + + other housing unit + conditioned space + floor + + + + 900.0 + + + 2.1 + + + + + other housing unit + conditioned space + ceiling + + + + 900.0 + + gypsum board + + + + 2.1 + + + + + + + 35.3 + 0 + 0.33 + 0.45 + + + 0.7 + 0.85 + + 0.67 + + + + + 35.3 + 180 + 0.33 + 0.45 + + + 0.7 + 0.85 + + 0.67 + + + + + 52.9 + 270 + 0.33 + 0.45 + + + 0.7 + 0.85 + + 0.67 + + + + + + + + 20.0 + 180 + 4.4 + + + + + + + + + + + + + true + 6 + + + + natural gas + + AFUE + 0.92 + + 1.0 + 500.0 + + + + + 68.0 + + + + + + fan coil + + + + + + + + electricity + storage water heater + conditioned space + 40.0 + 1.0 + 18767.0 + 0.95 + 125.0 + + + + + + 50.0 + + + + 0.0 + + + + + shower head + true + + + + faucet + false + + + + + + + conditioned space + 1.21 + 380.0 + 0.12 + 1.09 + 27.0 + 6.0 + 3.2 + + + + conditioned space + electricity + 3.73 + true + 150.0 + + + + conditioned space + 307.0 + 12 + 0.12 + 1.09 + 22.32 + 4.0 + + + + conditioned space + 650.0 + true + + + + conditioned space + electricity + false + + + + false + + + + + + interior + 0.4 + + + + + + + interior + 0.1 + + + + + + + interior + 0.25 + + + + + + + exterior + 0.4 + + + + + + + exterior + 0.1 + + + + + + + exterior + 0.25 + + + + + + + + + TV other + + kWh/year + 620.0 + + + + + other + + kWh/year + 819.0 + + + 0.855 + 0.045 + + + + +
+
\ No newline at end of file diff --git a/hpxml-measures/workflow/sample_files/base-lighting-ceiling-fans-label-energy-use.xml b/hpxml-measures/workflow/sample_files/base-lighting-ceiling-fans-label-energy-use.xml new file mode 100644 index 000000000..27bbb54f1 --- /dev/null +++ b/hpxml-measures/workflow/sample_files/base-lighting-ceiling-fans-label-energy-use.xml @@ -0,0 +1,569 @@ + + + + HPXML + tasks.rb + 2000-01-01T00:00:00-07:00 + create + + + + + 60 + + + + Bills + + + + + + + + +
+ CO +
+
+ + proposed workscope + + + + + suburban + stand-alone + no units above or below + 180 + + electricity + natural gas + + + + single-family detached + 2.0 + 1.0 + 8.0 + 3 + 2 + 2700.0 + 21600.0 + + + + + 2006 + 5B + + + + USA_CO_Denver.Intl.AP.725650_TMY3 + + USA_CO_Denver.Intl.AP.725650_TMY3.epw + + + + + + + + 50.0 + + ACH + 3.0 + + 21600.0 + + + + + + + + false + + + false + + + + + + + + + + + true + + + + + + + + + + + attic - unvented + 1509.3 + asphalt or fiberglass shingles + 0.7 + 0.92 + 6.0 + + + 2.3 + + + + + + + outside + basement - conditioned + 115.6 + wood siding + 0.7 + 0.92 + + + 23.0 + + + + + + + outside + conditioned space + + + + 1200.0 + wood siding + 0.7 + 0.92 + + gypsum board + + + + 23.0 + + + + + outside + attic - unvented + gable + + + + 225.0 + wood siding + 0.7 + 0.92 + + + 4.0 + + + + + + + ground + basement - conditioned + 8.0 + 1200.0 + 8.0 + 7.0 + + gypsum board + + + + + continuous - exterior + 8.9 + 0.0 + 8.0 + + + continuous - interior + 0.0 + + + + + + + + attic - unvented + conditioned space + ceiling + + + + 1350.0 + + gypsum board + + + + 39.3 + + + + + + + basement - conditioned + 1350.0 + 4.0 + 150.0 + + + + 0.0 + 0.0 + + + + + + 0.0 + 0.0 + + + + 0.0 + 0.0 + + + + + + + 108.0 + 0 + 0.33 + 0.45 + + + 0.7 + 0.85 + + 0.67 + + + + + 72.0 + 90 + 0.33 + 0.45 + + + 0.7 + 0.85 + + 0.67 + + + + + 108.0 + 180 + 0.33 + 0.45 + + + 0.7 + 0.85 + + 0.67 + + + + + 72.0 + 270 + 0.33 + 0.45 + + + 0.7 + 0.85 + + 0.67 + + + + + + + + 40.0 + 180 + 4.4 + + + + + + + + + + + + + + + + + natural gas + 36000.0 + + AFUE + 0.92 + + 1.0 + + + + + central air conditioner + electricity + 24000.0 + single stage + 1.0 + + SEER + 13.0 + + 0.73 + + + + + 68.0 + 78.0 + + 0.5 + + + + + + + regular velocity + + supply + + CFM25 + 75.0 + to outside + + + + return + + CFM25 + 25.0 + to outside + + + + + supply + 4.0 + attic - unvented + 150.0 + + + + return + 0.0 + attic - unvented + 50.0 + + + + + + + + + electricity + storage water heater + conditioned space + 40.0 + 1.0 + 18767.0 + 0.95 + 125.0 + + + + + + 50.0 + + + + 0.0 + + + + + shower head + true + + + + faucet + false + + + + + + + conditioned space + 1.21 + 380.0 + 0.12 + 1.09 + 27.0 + 6.0 + 3.2 + + + + conditioned space + electricity + 3.73 + true + 150.0 + + + + conditioned space + 307.0 + 12 + 0.12 + 1.09 + 22.32 + 4.0 + + + + conditioned space + 650.0 + true + + + + conditioned space + electricity + false + + + + false + + + + + + interior + 0.4 + + + + + + + interior + 0.1 + + + + + + + interior + 0.25 + + + + + + + exterior + 0.4 + + + + + + + exterior + 0.1 + + + + + + + exterior + 0.25 + + + + + + + + medium + 100.0 + + 4 + 39.0 + + 0.057, 0.057, 0.057, 0.057, 0.057, 0.057, 0.057, 0.024, 0.024, 0.024, 0.024, 0.024, 0.024, 0.024, 0.024, 0.024, 0.024, 0.024, 0.057, 0.057, 0.057, 0.057, 0.057, 0.057 + 0.057, 0.057, 0.057, 0.057, 0.057, 0.057, 0.057, 0.024, 0.024, 0.024, 0.024, 0.024, 0.024, 0.024, 0.024, 0.024, 0.024, 0.024, 0.057, 0.057, 0.057, 0.057, 0.057, 0.057 + 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0 + + + + + + + TV other + + kWh/year + 620.0 + + + + + other + + kWh/year + 2457.0 + + + 0.855 + 0.045 + + + + +
+
\ No newline at end of file diff --git a/hpxml-measures/workflow/sample_files/base-schedules-simple-power-outage.xml b/hpxml-measures/workflow/sample_files/base-schedules-simple-power-outage.xml index c22f4be06..9354f6375 100644 --- a/hpxml-measures/workflow/sample_files/base-schedules-simple-power-outage.xml +++ b/hpxml-measures/workflow/sample_files/base-schedules-simple-power-outage.xml @@ -429,13 +429,21 @@ - - 50.0 - + + no control + 50.0 + 50.0 + 50.0 + 0.0 + + 0.012, 0.006, 0.004, 0.005, 0.010, 0.034, 0.078, 0.086, 0.080, 0.067, 0.056, 0.047, 0.040, 0.035, 0.033, 0.031, 0.038, 0.051, 0.060, 0.060, 0.055, 0.048, 0.038, 0.026 + 0.012, 0.006, 0.004, 0.005, 0.010, 0.034, 0.078, 0.086, 0.080, 0.067, 0.056, 0.047, 0.040, 0.035, 0.033, 0.031, 0.038, 0.051, 0.060, 0.060, 0.055, 0.048, 0.038, 0.026 + 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0 + diff --git a/hpxml-measures/workflow/sample_files/base-schedules-simple-vacancy.xml b/hpxml-measures/workflow/sample_files/base-schedules-simple-vacancy.xml index 742a9e647..fdf79411e 100644 --- a/hpxml-measures/workflow/sample_files/base-schedules-simple-vacancy.xml +++ b/hpxml-measures/workflow/sample_files/base-schedules-simple-vacancy.xml @@ -428,13 +428,21 @@ - - 50.0 - + + no control + 50.0 + 50.0 + 50.0 + 0.0 + + 0.012, 0.006, 0.004, 0.005, 0.010, 0.034, 0.078, 0.086, 0.080, 0.067, 0.056, 0.047, 0.040, 0.035, 0.033, 0.031, 0.038, 0.051, 0.060, 0.060, 0.055, 0.048, 0.038, 0.026 + 0.012, 0.006, 0.004, 0.005, 0.010, 0.034, 0.078, 0.086, 0.080, 0.067, 0.056, 0.047, 0.040, 0.035, 0.033, 0.031, 0.038, 0.051, 0.060, 0.060, 0.055, 0.048, 0.038, 0.026 + 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0 + diff --git a/hpxml-measures/workflow/sample_files/base-schedules-simple.xml b/hpxml-measures/workflow/sample_files/base-schedules-simple.xml index cf5532808..e3c6947bd 100644 --- a/hpxml-measures/workflow/sample_files/base-schedules-simple.xml +++ b/hpxml-measures/workflow/sample_files/base-schedules-simple.xml @@ -418,13 +418,21 @@ - - 50.0 - + + no control + 50.0 + 50.0 + 50.0 + 0.0 + + 0.012, 0.006, 0.004, 0.005, 0.010, 0.034, 0.078, 0.086, 0.080, 0.067, 0.056, 0.047, 0.040, 0.035, 0.033, 0.031, 0.038, 0.051, 0.060, 0.060, 0.055, 0.048, 0.038, 0.026 + 0.012, 0.006, 0.004, 0.005, 0.010, 0.034, 0.078, 0.086, 0.080, 0.067, 0.056, 0.047, 0.040, 0.035, 0.033, 0.031, 0.038, 0.051, 0.060, 0.060, 0.055, 0.048, 0.038, 0.026 + 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0 + diff --git a/hpxml-measures/workflow/tests/base_results/results_workflow_simulations1.csv b/hpxml-measures/workflow/tests/base_results/results_workflow_simulations1.csv index af7535626..c9a20d6cb 100644 --- a/hpxml-measures/workflow/tests/base_results/results_workflow_simulations1.csv +++ b/hpxml-measures/workflow/tests/base_results/results_workflow_simulations1.csv @@ -22,6 +22,7 @@ base-atticroof-vented.xml,58.679,58.679,35.268,35.268,23.411,0.0,0.0,0.0,0.0,0.0 base-battery-scheduled.xml,60.954,60.954,37.329,37.329,23.625,0.0,0.0,0.0,0.0,0.0,0.0,0.39,0.0,0.0,4.251,0.802,9.014,0.0,0.0,4.507,0.0,0.334,0.0,0.0,0.0,0.0,2.072,0.0,0.0,0.319,0.365,1.513,1.529,0.0,2.116,8.384,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,1.735,23.625,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,22.125,0.0,13.973,9.071,0.615,0.0,0.0,0.0,0.0,2086.9,3998.4,3998.4,23.508,19.176,0.0,3.54,3.638,0.512,7.506,0.63,10.087,-12.691,0.0,0.0,0.0,8.29,-0.067,4.807,0.0,0.728,0.0,5.099,-7.8,-2.489,0.0,-0.031,-0.441,-0.049,2.748,-0.02,-1.328,11.723,0.0,0.0,0.0,-6.24,-0.063,-1.137,-3.781,-0.162,0.0,3.101,7.782,2.018,1354.7,998.0,11171.6,2563.5,1.321,36000.0,24000.0,0.0,6.8,91.76,32706.0,8608.0,7508.0,0.0,575.0,6840.0,0.0,0.0,2408.0,2171.0,4597.0,19675.0,5934.0,7037.0,0.0,207.0,265.0,0.0,0.0,0.0,2293.0,619.0,3320.0,0.0,0.0,0.0,0.0 base-battery.xml,59.22,59.22,35.594,35.594,23.625,0.0,0.0,0.0,0.0,0.0,0.0,0.39,0.0,0.0,4.251,0.802,9.014,0.0,0.0,4.507,0.0,0.334,0.0,0.0,0.0,0.0,2.072,0.0,0.0,0.319,0.365,1.513,1.529,0.0,2.116,8.384,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,23.625,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,22.125,0.0,13.973,9.071,0.615,0.0,0.0,0.0,0.0,2052.4,3884.4,3884.4,23.508,19.176,0.0,3.54,3.638,0.512,7.506,0.63,10.087,-12.691,0.0,0.0,0.0,8.29,-0.067,4.807,0.0,0.728,0.0,5.099,-7.8,-2.489,0.0,-0.031,-0.441,-0.049,2.748,-0.02,-1.328,11.723,0.0,0.0,0.0,-6.24,-0.063,-1.137,-3.781,-0.162,0.0,3.101,7.782,2.018,1354.7,998.0,11171.6,2563.5,0.0,36000.0,24000.0,0.0,6.8,91.76,32706.0,8608.0,7508.0,0.0,575.0,6840.0,0.0,0.0,2408.0,2171.0,4597.0,19675.0,5934.0,7037.0,0.0,207.0,265.0,0.0,0.0,0.0,2293.0,619.0,3320.0,0.0,0.0,0.0,0.0 base-bldgtype-mf-unit-adjacent-to-multifamily-buffer-space.xml,37.028,37.028,24.04,24.04,12.987,0.0,0.0,0.0,0.0,0.0,0.0,0.095,0.0,0.0,1.534,0.185,9.672,0.0,0.0,2.025,0.0,0.206,0.0,0.0,0.0,0.0,1.688,0.0,0.0,0.319,0.365,1.513,1.529,0.0,2.116,2.795,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,12.987,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,12.04,0.0,2.898,9.37,0.731,0.0,0.0,0.0,0.0,1496.3,1906.1,1906.1,8.305,6.269,0.0,2.942,3.648,0.0,0.0,0.585,1.314,-1.599,0.0,0.0,2.977,0.0,-0.048,1.674,0.0,0.0,0.0,5.215,-3.529,-1.183,0.0,-0.891,-0.193,0.0,0.0,-0.044,-0.088,1.303,0.0,0.0,-0.905,0.0,-0.045,-0.267,-0.401,0.0,0.0,0.548,3.087,0.842,1354.7,998.0,11171.5,3093.4,0.0,12000.0,12000.0,0.0,6.8,91.76,12345.0,5658.0,903.0,0.0,378.0,1949.0,0.0,963.0,0.0,963.0,1532.0,8173.0,2276.0,1142.0,0.0,142.0,280.0,0.0,403.0,0.0,403.0,206.0,3320.0,520.0,0.0,-280.0,800.0 +base-bldgtype-mf-unit-adjacent-to-multiple-hvac-none.xml,22.488,22.488,22.488,22.488,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,9.565,0.0,0.0,2.025,0.0,0.206,0.0,0.0,0.0,0.0,2.057,0.0,0.0,0.319,0.365,1.513,1.529,0.0,2.116,2.795,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,9.37,0.62,0.0,0.0,0.0,0.0,1459.3,1409.8,1459.3,0.0,0.0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1354.7,998.0,11171.5,3093.4,0.0,0.0,0.0,0.0,6.8,91.76,7315.0,0.0,2576.0,0.0,296.0,1671.0,0.0,1239.0,0.0,0.0,1532.0,8391.0,0.0,3264.0,0.0,142.0,277.0,0.0,1181.0,0.0,0.0,206.0,3320.0,520.0,0.0,-280.0,800.0 base-bldgtype-mf-unit-adjacent-to-multiple.xml,32.364,32.364,24.943,24.943,7.422,0.0,0.0,0.0,0.0,0.0,0.0,0.054,0.0,0.0,2.077,0.304,9.557,0.0,0.0,2.025,0.0,0.206,0.0,0.0,0.0,0.0,2.083,0.0,0.0,0.319,0.365,1.513,1.529,0.0,2.116,2.795,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,7.422,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,6.884,0.0,5.047,9.37,0.612,0.0,0.0,0.0,0.0,1513.4,2227.0,2227.0,10.066,11.013,0.0,-0.005,3.291,0.0,0.0,1.39,3.735,-4.234,0.0,0.0,4.543,0.0,-0.086,1.252,0.0,0.791,0.0,2.747,-5.509,-1.139,0.0,-0.001,-0.416,0.0,0.0,-0.396,-0.133,3.971,0.0,0.0,-2.921,0.0,-0.081,-0.23,-1.203,-0.123,0.0,0.499,5.302,0.886,1354.7,998.0,11171.5,3093.4,0.0,12000.0,12000.0,0.0,6.8,91.76,12328.0,5013.0,2576.0,0.0,296.0,1671.0,0.0,1239.0,0.0,0.0,1532.0,9963.0,1572.0,3264.0,0.0,142.0,277.0,0.0,1181.0,0.0,0.0,206.0,3320.0,520.0,0.0,-280.0,800.0 base-bldgtype-mf-unit-adjacent-to-non-freezing-space.xml,50.251,50.251,23.789,23.789,26.461,0.0,0.0,0.0,0.0,0.0,0.0,0.194,0.0,0.0,1.417,0.158,9.755,0.0,0.0,2.025,0.0,0.206,0.0,0.0,0.0,0.0,1.399,0.0,0.0,0.319,0.365,1.513,1.529,0.0,2.116,2.795,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,26.461,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,24.537,0.0,2.432,9.37,0.818,0.0,0.0,0.0,0.0,1491.9,2170.3,2170.3,11.815,8.826,0.0,5.38,4.202,0.0,0.0,0.793,1.293,-1.715,0.0,0.0,5.429,0.0,-0.077,1.706,0.0,0.0,0.0,12.476,-3.737,-1.243,0.0,-1.132,-0.025,0.0,0.0,-0.042,0.011,1.187,0.0,0.0,-1.14,0.0,-0.073,-0.178,-0.296,0.0,0.0,0.531,2.88,0.782,1354.7,998.0,11171.5,3093.4,0.0,12000.0,12000.0,0.0,6.8,91.76,14592.0,6778.0,903.0,0.0,424.0,2068.0,0.0,1444.0,0.0,1444.0,1532.0,10080.0,3239.0,1142.0,0.0,180.0,380.0,0.0,807.0,0.0,807.0,206.0,3320.0,520.0,0.0,-280.0,800.0 base-bldgtype-mf-unit-adjacent-to-other-heated-space.xml,26.114,26.114,24.211,24.211,1.904,0.0,0.0,0.0,0.0,0.0,0.0,0.014,0.0,0.0,1.558,0.191,9.582,0.0,0.0,2.025,0.0,0.206,0.0,0.0,0.0,0.0,2.0,0.0,0.0,0.319,0.365,1.513,1.529,0.0,2.116,2.795,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,1.904,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,1.763,0.0,3.001,9.37,0.637,0.0,0.0,0.0,0.0,1508.3,1950.2,1950.2,3.926,6.271,0.0,0.284,3.112,0.0,0.0,0.366,1.367,-1.509,0.0,0.0,0.305,0.0,-0.01,1.681,0.0,0.0,0.0,0.543,-3.319,-1.118,0.0,-0.795,-0.417,0.0,0.0,-0.066,-0.199,1.393,0.0,0.0,-0.811,0.0,-0.007,-0.374,-0.454,0.0,0.0,0.567,3.297,0.907,1354.7,998.0,11171.5,3093.4,0.0,12000.0,12000.0,0.0,6.8,91.76,8331.0,3673.0,903.0,0.0,296.0,1735.0,0.0,96.0,0.0,96.0,1532.0,8173.0,2276.0,1142.0,0.0,142.0,280.0,0.0,403.0,0.0,403.0,206.0,3320.0,520.0,0.0,-280.0,800.0 @@ -35,6 +36,7 @@ base-bldgtype-mf-unit-shared-boiler-chiller-water-loop-heat-pump.xml,31.443,31.4 base-bldgtype-mf-unit-shared-boiler-cooling-tower-water-loop-heat-pump.xml,27.737,27.737,27.02,27.02,0.718,0.0,0.0,0.0,0.0,0.0,0.046,0.045,0.0,0.0,3.492,0.856,9.527,0.0,0.0,2.025,0.0,0.206,0.0,0.0,0.0,0.0,2.186,0.0,0.0,0.319,0.365,1.513,1.529,0.0,2.116,2.795,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.718,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.85,0.0,9.698,9.37,0.58,0.0,0.0,0.0,13.0,1655.1,2254.7,2254.7,3.903,8.325,0.0,-0.016,2.514,0.0,0.0,0.42,3.963,-2.774,0.0,0.0,-0.013,0.0,-0.389,1.282,0.0,0.699,0.0,0.019,-4.124,-0.809,0.0,-0.011,-0.983,0.0,0.0,-0.032,-0.982,5.429,0.0,0.0,-0.008,0.0,-0.38,-0.465,-1.603,-0.35,0.0,1.199,6.758,1.216,1354.7,998.0,11171.5,3093.4,0.0,28548.0,8994.0,0.0,6.8,91.76,6770.0,884.0,2576.0,0.0,287.0,1490.0,0.0,0.0,0.0,0.0,1532.0,7961.0,910.0,3264.0,0.0,103.0,157.0,0.0,0.0,0.0,0.0,206.0,3320.0,520.0,0.0,-280.0,800.0 base-bldgtype-mf-unit-shared-boiler-only-baseboard.xml,23.606,23.606,22.809,22.809,0.797,0.0,0.0,0.0,0.0,0.0,0.0,0.039,0.0,0.0,0.0,0.0,9.45,0.0,0.0,2.025,0.0,0.206,0.0,0.0,0.0,0.0,2.453,0.0,0.0,0.319,0.365,1.513,1.529,0.0,2.116,2.795,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.797,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.718,0.0,0.0,9.37,0.499,0.0,0.0,0.0,0.0,1474.9,1412.1,1474.9,3.808,0.0,0.0,-0.003,3.427,0.0,0.0,0.484,4.863,-4.248,0.0,0.0,-0.003,0.0,-0.005,1.64,0.0,0.957,0.0,0.0,-5.448,-1.112,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,1354.7,998.0,11171.6,3093.4,0.0,5886.0,0.0,0.0,6.8,91.76,5886.0,0.0,2576.0,0.0,287.0,1490.0,0.0,0.0,0.0,0.0,1532.0,7051.0,0.0,3264.0,0.0,103.0,157.0,0.0,0.0,0.0,0.0,206.0,3320.0,520.0,0.0,-280.0,800.0 base-bldgtype-mf-unit-shared-boiler-only-fan-coil-ducted.xml,23.689,23.689,22.838,22.838,0.85,0.0,0.0,0.0,0.0,0.0,0.0,0.068,0.0,0.0,0.0,0.0,9.45,0.0,0.0,2.025,0.0,0.206,0.0,0.0,0.0,0.0,2.453,0.0,0.0,0.319,0.365,1.513,1.529,0.0,2.116,2.795,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.85,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.761,0.0,0.0,9.37,0.499,0.0,0.0,0.0,0.0,1486.9,1412.1,1486.9,3.973,0.0,0.0,-0.003,3.427,0.0,0.0,0.484,4.862,-4.248,0.0,0.0,-0.003,0.0,-0.005,1.64,0.0,0.957,0.0,0.043,-5.448,-1.112,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,1354.7,998.0,11171.6,3093.4,0.0,8647.0,0.0,0.0,6.8,91.76,8647.0,2761.0,2576.0,0.0,287.0,1490.0,0.0,0.0,0.0,0.0,1532.0,7051.0,0.0,3264.0,0.0,103.0,157.0,0.0,0.0,0.0,0.0,206.0,3320.0,520.0,0.0,-280.0,800.0 +base-bldgtype-mf-unit-shared-boiler-only-fan-coil-eae.xml,23.616,23.616,22.858,22.858,0.758,0.0,0.0,0.0,0.0,0.0,0.0,0.088,0.0,0.0,0.0,0.0,9.45,0.0,0.0,2.025,0.0,0.206,0.0,0.0,0.0,0.0,2.453,0.0,0.0,0.319,0.365,1.513,1.529,0.0,2.116,2.795,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.758,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.718,0.0,0.0,9.37,0.499,0.0,0.0,0.0,0.0,1500.7,1412.1,1500.7,3.812,0.0,0.0,-0.003,3.427,0.0,0.0,0.484,4.863,-4.248,0.0,0.0,-0.003,0.0,-0.005,1.64,0.0,0.957,0.0,0.0,-5.448,-1.112,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,1354.7,998.0,11171.6,3093.4,0.0,5886.0,0.0,0.0,6.8,91.76,5886.0,0.0,2576.0,0.0,287.0,1490.0,0.0,0.0,0.0,0.0,1532.0,7051.0,0.0,3264.0,0.0,103.0,157.0,0.0,0.0,0.0,0.0,206.0,3320.0,520.0,0.0,-280.0,800.0 base-bldgtype-mf-unit-shared-boiler-only-fan-coil-fireplace-elec.xml,23.595,23.595,23.024,23.024,0.571,0.0,0.0,0.0,0.0,0.0,0.179,0.076,0.0,0.0,0.0,0.0,9.45,0.0,0.0,2.025,0.0,0.206,0.0,0.0,0.0,0.0,2.453,0.0,0.0,0.319,0.365,1.513,1.529,0.0,2.116,2.795,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.571,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.718,0.0,0.0,9.37,0.499,0.0,0.0,0.0,0.0,1613.8,1412.1,1613.8,3.812,0.0,0.0,-0.003,3.427,0.0,0.0,0.484,4.862,-4.248,0.0,0.0,-0.003,0.0,-0.005,1.64,0.0,0.957,0.0,0.0,-5.448,-1.112,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,1354.7,998.0,11171.6,3093.4,0.0,7031.0,0.0,0.0,6.8,91.76,7031.0,0.0,2576.0,0.0,287.0,1490.0,0.0,0.0,0.0,0.0,2677.0,7051.0,0.0,3264.0,0.0,103.0,157.0,0.0,0.0,0.0,0.0,206.0,3320.0,520.0,0.0,-280.0,800.0 base-bldgtype-mf-unit-shared-boiler-only-fan-coil.xml,23.617,23.617,22.861,22.861,0.755,0.0,0.0,0.0,0.0,0.0,0.0,0.092,0.0,0.0,0.0,0.0,9.45,0.0,0.0,2.025,0.0,0.206,0.0,0.0,0.0,0.0,2.453,0.0,0.0,0.319,0.365,1.513,1.529,0.0,2.116,2.795,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.755,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.718,0.0,0.0,9.37,0.499,0.0,0.0,0.0,0.0,1502.8,1412.1,1502.8,3.812,0.0,0.0,-0.003,3.427,0.0,0.0,0.484,4.863,-4.248,0.0,0.0,-0.003,0.0,-0.005,1.64,0.0,0.957,0.0,0.0,-5.448,-1.112,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,1354.7,998.0,11171.6,3093.4,0.0,5886.0,0.0,0.0,6.8,91.76,5886.0,0.0,2576.0,0.0,287.0,1490.0,0.0,0.0,0.0,0.0,1532.0,7051.0,0.0,3264.0,0.0,103.0,157.0,0.0,0.0,0.0,0.0,206.0,3320.0,520.0,0.0,-280.0,800.0 base-bldgtype-mf-unit-shared-boiler-only-water-loop-heat-pump.xml,23.469,23.469,22.849,22.849,0.62,0.0,0.0,0.0,0.0,0.0,0.04,0.039,0.0,0.0,0.0,0.0,9.45,0.0,0.0,2.025,0.0,0.206,0.0,0.0,0.0,0.0,2.453,0.0,0.0,0.319,0.365,1.513,1.529,0.0,2.116,2.795,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.62,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.735,0.0,0.0,9.37,0.499,0.0,0.0,0.0,0.0,1493.1,1412.1,1493.1,3.901,0.0,0.0,-0.003,3.427,0.0,0.0,0.484,4.862,-4.248,0.0,0.0,-0.003,0.0,-0.005,1.64,0.0,0.957,0.0,0.017,-5.448,-1.112,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,1354.7,998.0,11171.6,3093.4,0.0,28548.0,0.0,0.0,6.8,91.76,6770.0,884.0,2576.0,0.0,287.0,1490.0,0.0,0.0,0.0,0.0,1532.0,7051.0,0.0,3264.0,0.0,103.0,157.0,0.0,0.0,0.0,0.0,206.0,3320.0,520.0,0.0,-280.0,800.0 @@ -56,7 +58,7 @@ base-bldgtype-mf-unit-shared-water-heater-recirc-scheduled.xml,30.776,30.776,17. base-bldgtype-mf-unit-shared-water-heater-recirc.xml,30.776,30.776,17.369,17.369,13.407,0.0,0.0,0.0,0.0,0.0,0.0,0.008,0.0,0.0,2.741,0.479,0.0,1.096,0.0,2.025,0.0,0.206,0.0,0.0,0.0,0.0,2.178,0.0,0.0,0.319,0.365,1.513,1.529,0.0,2.116,2.795,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,1.097,0.0,12.311,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,1.014,0.0,8.208,9.37,0.573,0.0,0.0,0.0,0.0,949.7,1631.8,1631.8,4.004,7.812,0.0,-0.016,2.544,0.0,0.0,0.419,3.992,-2.904,0.0,0.0,-0.014,0.0,-0.378,1.609,0.0,0.714,0.0,0.0,-4.173,-0.843,0.0,-0.012,-0.918,0.0,0.0,-0.027,-0.898,5.299,0.0,0.0,-0.009,0.0,-0.369,-0.568,-1.562,-0.325,0.0,0.0,6.494,1.182,1354.7,998.0,11171.6,3093.4,0.0,12000.0,12000.0,0.0,6.8,91.76,5886.0,0.0,2576.0,0.0,287.0,1490.0,0.0,0.0,0.0,0.0,1532.0,7051.0,0.0,3264.0,0.0,103.0,157.0,0.0,0.0,0.0,0.0,206.0,3320.0,520.0,0.0,-280.0,800.0 base-bldgtype-mf-unit-shared-water-heater.xml,29.68,29.68,16.273,16.273,13.407,0.0,0.0,0.0,0.0,0.0,0.0,0.008,0.0,0.0,2.741,0.479,0.0,0.0,0.0,2.025,0.0,0.206,0.0,0.0,0.0,0.0,2.178,0.0,0.0,0.319,0.365,1.513,1.529,0.0,2.116,2.795,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,1.097,0.0,12.311,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,1.014,0.0,8.208,9.37,0.573,0.0,0.0,0.0,0.0,913.0,1595.2,1595.2,4.004,7.812,0.0,-0.016,2.544,0.0,0.0,0.419,3.992,-2.904,0.0,0.0,-0.014,0.0,-0.378,1.609,0.0,0.714,0.0,0.0,-4.173,-0.843,0.0,-0.012,-0.918,0.0,0.0,-0.027,-0.898,5.299,0.0,0.0,-0.009,0.0,-0.369,-0.568,-1.562,-0.325,0.0,0.0,6.494,1.182,1354.7,998.0,11171.6,3093.4,0.0,12000.0,12000.0,0.0,6.8,91.76,5886.0,0.0,2576.0,0.0,287.0,1490.0,0.0,0.0,0.0,0.0,1532.0,7051.0,0.0,3264.0,0.0,103.0,157.0,0.0,0.0,0.0,0.0,206.0,3320.0,520.0,0.0,-280.0,800.0 base-bldgtype-mf-unit.xml,26.796,26.796,25.897,25.897,0.899,0.0,0.0,0.0,0.0,0.0,0.0,0.007,0.0,0.0,2.813,0.498,9.527,0.0,0.0,2.025,0.0,0.206,0.0,0.0,0.0,0.0,2.186,0.0,0.0,0.319,0.365,1.513,1.529,0.0,2.116,2.795,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.899,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.831,0.0,8.511,9.37,0.581,0.0,0.0,0.0,0.0,1603.5,2035.3,2035.3,3.814,7.788,0.0,-0.017,2.513,0.0,0.0,0.421,3.973,-2.771,0.0,0.0,-0.014,0.0,-0.391,1.284,0.0,0.7,0.0,0.0,-4.136,-0.812,0.0,-0.012,-0.983,0.0,0.0,-0.031,-0.971,5.431,0.0,0.0,-0.009,0.0,-0.382,-0.463,-1.595,-0.348,0.0,0.0,6.746,1.213,1354.7,998.0,11171.6,3093.4,0.0,12000.0,12000.0,0.0,6.8,91.76,5886.0,0.0,2576.0,0.0,287.0,1490.0,0.0,0.0,0.0,0.0,1532.0,7051.0,0.0,3264.0,0.0,103.0,157.0,0.0,0.0,0.0,0.0,206.0,3320.0,520.0,0.0,-280.0,800.0 -base-bldgtype-mf-whole-building.xml,218.134,218.134,218.134,218.134,0.0,0.0,0.0,0.0,0.0,0.0,35.137,0.0,0.0,0.0,22.441,0.0,55.569,0.0,0.0,14.641,0.0,1.364,0.0,0.0,0.0,0.0,12.712,0.0,0.0,1.912,2.192,0.0,9.172,0.0,12.693,50.302,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,35.082,0.0,50.043,55.316,3.607,0.0,0.0,0.0,1.0,21887.2,16212.0,21887.2,54.369,56.669,0.0,7.761,18.926,0.0,0.0,2.286,27.714,-27.412,0.0,0.0,7.748,0.0,-1.263,57.956,0.0,0.0,0.0,0.0,-50.842,-7.753,0.0,-1.081,-3.254,0.0,0.0,-0.05,-3.755,29.95,0.0,0.0,-3.834,0.0,-1.238,-13.68,-10.172,0.0,0.0,0.0,50.392,6.888,8128.5,5988.0,67057.1,16864.7,0.0,72000.0,72000.0,0.0,6.8,91.76,88106.0,0.0,18018.0,0.0,1722.0,10488.0,0.0,2376.0,0.0,3860.0,51642.0,53050.0,0.0,21576.0,0.0,618.0,1104.0,0.0,630.0,0.0,2244.0,6954.0,19920.0,0.0,0.0,0.0,0.0 +base-bldgtype-mf-whole-building.xml,217.108,217.108,217.108,217.108,0.0,0.0,0.0,0.0,0.0,0.0,34.021,0.0,0.0,0.0,22.525,0.0,55.566,0.0,0.0,14.641,0.0,1.364,0.0,0.0,0.0,0.0,12.72,0.0,0.0,1.912,2.192,0.0,9.172,0.0,12.693,50.302,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,33.967,0.0,50.271,55.316,3.605,0.0,0.0,0.0,1.0,21640.8,16126.6,21640.8,53.512,56.53,0.0,7.767,18.932,0.0,0.0,2.291,27.744,-27.339,0.0,0.0,7.75,0.0,-1.28,56.596,0.0,0.0,0.0,0.0,-50.744,-7.732,0.0,-1.091,-3.297,0.0,0.0,-0.053,-3.801,30.023,0.0,0.0,-3.853,0.0,-1.255,-13.443,-10.231,0.0,0.0,0.0,50.496,6.91,8128.5,5988.0,67057.1,16864.7,0.0,72000.0,72000.0,0.0,6.8,91.76,86834.0,0.0,18018.0,0.0,1722.0,10488.0,0.0,2376.0,0.0,3860.0,50370.0,52878.0,0.0,21576.0,0.0,618.0,1104.0,0.0,630.0,0.0,2244.0,6780.0,19920.0,0.0,0.0,0.0,0.0 base-bldgtype-sfa-unit-2stories.xml,51.953,51.953,34.308,34.308,17.645,0.0,0.0,0.0,0.0,0.0,0.0,0.23,0.0,0.0,3.289,0.576,9.076,0.0,0.0,4.507,0.0,0.334,0.0,0.0,0.0,0.0,2.072,0.0,0.0,0.319,0.365,1.513,1.529,0.0,2.116,8.384,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,17.645,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,16.456,0.0,9.918,9.106,0.615,0.0,0.0,0.0,0.0,2028.3,3203.9,3203.9,18.259,15.793,0.0,2.426,5.061,0.297,4.364,0.638,7.116,-8.588,0.0,0.0,0.0,5.002,-0.071,7.096,0.0,0.729,0.0,2.429,-7.794,-2.489,0.0,0.015,-0.629,-0.025,1.636,-0.014,-1.001,7.908,0.0,0.0,0.0,-3.947,-0.066,-1.651,-3.207,-0.159,0.0,1.338,7.788,2.018,1354.7,998.0,11171.6,2624.7,0.0,48000.0,36000.0,0.0,6.8,91.76,28081.0,7456.0,5147.0,0.0,575.0,5634.0,0.0,0.0,1879.0,1447.0,5942.0,17656.0,4937.0,6528.0,0.0,207.0,333.0,0.0,0.0,0.0,1529.0,803.0,3320.0,0.0,0.0,0.0,0.0 base-bldgtype-sfa-unit-atticroof-cathedral.xml,98.436,98.436,36.921,36.921,61.515,0.0,0.0,0.0,0.0,0.0,0.0,0.802,0.0,0.0,4.989,0.937,9.084,0.0,0.0,4.507,0.0,0.334,0.0,0.0,0.0,0.0,2.044,0.0,0.0,0.319,0.365,1.513,1.529,0.0,2.116,8.384,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,61.515,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,57.361,0.0,15.982,9.106,0.623,0.0,0.0,0.0,0.0,2100.0,4529.8,4529.8,36.753,28.623,49.493,0.0,2.937,0.289,3.687,0.667,4.711,-5.326,0.0,0.0,0.0,3.418,-0.85,7.541,0.0,0.772,0.0,0.0,-8.484,-2.669,8.563,0.0,-0.155,0.004,1.537,0.121,0.039,5.084,0.0,0.0,0.0,-4.273,-0.813,-0.842,-1.316,-0.093,0.0,0.0,7.077,1.838,1354.7,998.0,11171.6,2624.7,0.0,48000.0,36000.0,0.0,6.8,91.76,43723.0,0.0,3210.0,0.0,575.0,4469.0,27649.0,0.0,1879.0,0.0,5942.0,24053.0,0.0,4963.0,0.0,207.0,210.0,14551.0,0.0,0.0,0.0,803.0,3320.0,0.0,0.0,0.0,0.0 base-bldgtype-sfa-unit-infil-compartmentalization-test.xml,43.277,43.277,29.579,29.579,13.697,0.0,0.0,0.0,0.0,0.0,0.0,0.1,0.0,0.0,2.703,0.45,9.286,0.0,0.0,3.266,0.0,0.27,0.0,0.0,0.0,0.0,2.074,0.0,0.0,0.319,0.365,1.513,1.529,0.0,2.116,5.589,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,13.697,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,12.702,0.0,7.743,9.221,0.615,0.0,0.0,0.0,0.0,1759.6,2713.5,2713.5,13.654,10.87,0.0,2.334,2.365,0.292,4.232,0.624,3.565,-4.312,0.0,0.0,0.0,4.669,-0.047,3.042,0.0,0.726,0.0,3.461,-6.592,-1.805,0.0,0.032,-0.275,-0.026,1.588,-0.018,-0.583,3.962,0.0,0.0,0.0,-4.04,-0.045,-0.752,-1.557,-0.163,0.0,1.614,6.601,1.462,1354.7,998.0,11171.5,2829.7,0.0,24000.0,24000.0,0.0,6.8,91.76,21791.0,8161.0,2576.0,0.0,575.0,4088.0,0.0,0.0,1879.0,1447.0,3064.0,14741.0,5838.0,3264.0,0.0,207.0,170.0,0.0,0.0,0.0,1529.0,413.0,3320.0,240.0,0.0,-560.0,800.0 @@ -136,8 +138,8 @@ base-enclosure-infil-cfm-house-pressure.xml,59.22,59.22,35.594,35.594,23.625,0.0 base-enclosure-infil-cfm50.xml,59.22,59.22,35.594,35.594,23.625,0.0,0.0,0.0,0.0,0.0,0.0,0.39,0.0,0.0,4.251,0.802,9.014,0.0,0.0,4.507,0.0,0.334,0.0,0.0,0.0,0.0,2.072,0.0,0.0,0.319,0.365,1.513,1.529,0.0,2.116,8.384,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,23.625,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,22.125,0.0,13.973,9.071,0.615,0.0,0.0,0.0,0.0,2052.4,3884.4,3884.4,23.508,19.176,0.0,3.54,3.638,0.512,7.506,0.63,10.087,-12.691,0.0,0.0,0.0,8.29,-0.067,4.807,0.0,0.728,0.0,5.099,-7.8,-2.489,0.0,-0.031,-0.441,-0.049,2.748,-0.02,-1.328,11.723,0.0,0.0,0.0,-6.24,-0.063,-1.137,-3.781,-0.162,0.0,3.101,7.782,2.018,1354.7,998.0,11171.6,2563.5,0.0,36000.0,24000.0,0.0,6.8,91.76,32706.0,8608.0,7508.0,0.0,575.0,6840.0,0.0,0.0,2408.0,2171.0,4597.0,19675.0,5934.0,7037.0,0.0,207.0,265.0,0.0,0.0,0.0,2293.0,619.0,3320.0,0.0,0.0,0.0,0.0 base-enclosure-infil-ela.xml,66.889,66.889,35.619,35.619,31.27,0.0,0.0,0.0,0.0,0.0,0.0,0.516,0.0,0.0,4.176,0.781,9.016,0.0,0.0,4.507,0.0,0.334,0.0,0.0,0.0,0.0,2.066,0.0,0.0,0.319,0.365,1.513,1.529,0.0,2.116,8.384,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,31.27,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,29.285,0.0,13.582,9.071,0.617,0.0,0.0,0.0,0.0,2060.1,3657.3,3657.3,28.532,20.194,0.0,3.491,3.64,0.512,7.49,0.631,10.103,-12.714,0.0,0.0,0.0,8.298,-0.068,10.58,0.0,0.726,0.0,6.61,-7.832,-2.496,0.0,0.015,-0.395,-0.042,2.869,-0.007,-1.174,11.699,0.0,0.0,0.0,-6.049,-0.064,-2.353,-3.492,-0.153,0.0,3.086,7.745,2.011,1354.7,998.0,11171.5,2563.5,0.0,36000.0,24000.0,0.0,6.8,91.76,37768.0,8724.0,7508.0,0.0,575.0,6840.0,0.0,0.0,2408.0,2171.0,9543.0,20371.0,5964.0,7037.0,0.0,207.0,265.0,0.0,0.0,0.0,2293.0,1285.0,3320.0,0.0,0.0,0.0,0.0 base-enclosure-infil-flue.xml,60.635,60.635,35.596,35.596,25.039,0.0,0.0,0.0,0.0,0.0,0.0,0.413,0.0,0.0,4.235,0.797,9.014,0.0,0.0,4.507,0.0,0.334,0.0,0.0,0.0,0.0,2.071,0.0,0.0,0.319,0.365,1.513,1.529,0.0,2.116,8.384,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,25.039,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,23.45,0.0,13.888,9.071,0.615,0.0,0.0,0.0,0.0,2042.5,3909.2,3909.2,24.243,19.404,0.0,3.528,3.635,0.512,7.5,0.629,10.082,-12.691,0.0,0.0,0.0,8.291,-0.067,5.886,0.0,0.727,0.0,5.378,-7.802,-2.489,0.0,-0.024,-0.434,-0.048,2.774,-0.018,-1.303,11.723,0.0,0.0,0.0,-6.2,-0.063,-1.397,-3.715,-0.16,0.0,3.099,7.778,2.018,1354.7,998.0,11171.6,2563.5,0.0,36000.0,24000.0,0.0,6.8,91.76,32706.0,8608.0,7508.0,0.0,575.0,6840.0,0.0,0.0,2408.0,2171.0,4597.0,19675.0,5934.0,7037.0,0.0,207.0,265.0,0.0,0.0,0.0,2293.0,619.0,3320.0,0.0,0.0,0.0,0.0 -base-enclosure-infil-natural-ach.xml,66.889,66.889,35.619,35.619,31.27,0.0,0.0,0.0,0.0,0.0,0.0,0.516,0.0,0.0,4.176,0.781,9.016,0.0,0.0,4.507,0.0,0.334,0.0,0.0,0.0,0.0,2.066,0.0,0.0,0.319,0.365,1.513,1.529,0.0,2.116,8.384,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,31.27,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,29.285,0.0,13.582,9.071,0.617,0.0,0.0,0.0,0.0,2060.1,3657.3,3657.3,28.532,20.194,0.0,3.491,3.64,0.512,7.49,0.631,10.103,-12.714,0.0,0.0,0.0,8.298,-0.068,10.58,0.0,0.726,0.0,6.61,-7.832,-2.496,0.0,0.015,-0.395,-0.042,2.869,-0.007,-1.174,11.699,0.0,0.0,0.0,-6.049,-0.064,-2.353,-3.492,-0.153,0.0,3.086,7.745,2.011,1354.7,998.0,11171.5,2563.5,0.0,36000.0,24000.0,0.0,6.8,91.76,37767.0,8724.0,7508.0,0.0,575.0,6840.0,0.0,0.0,2408.0,2171.0,9542.0,20371.0,5964.0,7037.0,0.0,207.0,265.0,0.0,0.0,0.0,2293.0,1285.0,3320.0,0.0,0.0,0.0,0.0 -base-enclosure-infil-natural-cfm.xml,66.889,66.889,35.619,35.619,31.27,0.0,0.0,0.0,0.0,0.0,0.0,0.516,0.0,0.0,4.176,0.781,9.016,0.0,0.0,4.507,0.0,0.334,0.0,0.0,0.0,0.0,2.066,0.0,0.0,0.319,0.365,1.513,1.529,0.0,2.116,8.384,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,31.27,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,29.285,0.0,13.582,9.071,0.617,0.0,0.0,0.0,0.0,2060.1,3657.3,3657.3,28.532,20.194,0.0,3.491,3.64,0.512,7.49,0.631,10.103,-12.714,0.0,0.0,0.0,8.298,-0.068,10.58,0.0,0.726,0.0,6.61,-7.832,-2.496,0.0,0.015,-0.395,-0.042,2.869,-0.007,-1.174,11.699,0.0,0.0,0.0,-6.049,-0.064,-2.353,-3.492,-0.153,0.0,3.086,7.745,2.011,1354.7,998.0,11171.5,2563.5,0.0,36000.0,24000.0,0.0,6.8,91.76,37767.0,8724.0,7508.0,0.0,575.0,6840.0,0.0,0.0,2408.0,2171.0,9542.0,20371.0,5964.0,7037.0,0.0,207.0,265.0,0.0,0.0,0.0,2293.0,1285.0,3320.0,0.0,0.0,0.0,0.0 +base-enclosure-infil-natural-ach.xml,66.51,66.51,35.618,35.618,30.892,0.0,0.0,0.0,0.0,0.0,0.0,0.51,0.0,0.0,4.18,0.782,9.016,0.0,0.0,4.507,0.0,0.334,0.0,0.0,0.0,0.0,2.066,0.0,0.0,0.319,0.365,1.513,1.529,0.0,2.116,8.384,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,30.892,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,28.931,0.0,13.6,9.071,0.617,0.0,0.0,0.0,0.0,2076.1,3651.9,3651.9,28.288,20.144,0.0,3.492,3.639,0.512,7.49,0.631,10.102,-12.71,0.0,0.0,0.0,8.299,-0.07,10.294,0.0,0.726,0.0,6.536,-7.831,-2.496,0.0,0.012,-0.398,-0.042,2.863,-0.008,-1.18,11.703,0.0,0.0,0.0,-6.056,-0.066,-2.296,-3.505,-0.154,0.0,3.087,7.746,2.012,1354.7,998.0,11171.5,2563.5,0.0,36000.0,24000.0,0.0,6.8,91.76,37527.0,8718.0,7508.0,0.0,575.0,6840.0,0.0,0.0,2408.0,2171.0,9307.0,20339.0,5963.0,7037.0,0.0,207.0,265.0,0.0,0.0,0.0,2293.0,1253.0,3320.0,0.0,0.0,0.0,0.0 +base-enclosure-infil-natural-cfm.xml,66.51,66.51,35.618,35.618,30.892,0.0,0.0,0.0,0.0,0.0,0.0,0.51,0.0,0.0,4.18,0.782,9.016,0.0,0.0,4.507,0.0,0.334,0.0,0.0,0.0,0.0,2.066,0.0,0.0,0.319,0.365,1.513,1.529,0.0,2.116,8.384,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,30.892,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,28.931,0.0,13.6,9.071,0.617,0.0,0.0,0.0,0.0,2076.1,3651.9,3651.9,28.288,20.144,0.0,3.492,3.639,0.512,7.49,0.631,10.102,-12.71,0.0,0.0,0.0,8.299,-0.07,10.294,0.0,0.726,0.0,6.536,-7.831,-2.496,0.0,0.012,-0.398,-0.042,2.863,-0.008,-1.18,11.703,0.0,0.0,0.0,-6.056,-0.066,-2.296,-3.505,-0.154,0.0,3.087,7.746,2.012,1354.7,998.0,11171.5,2563.5,0.0,36000.0,24000.0,0.0,6.8,91.76,37527.0,8718.0,7508.0,0.0,575.0,6840.0,0.0,0.0,2408.0,2171.0,9307.0,20339.0,5963.0,7037.0,0.0,207.0,265.0,0.0,0.0,0.0,2293.0,1253.0,3320.0,0.0,0.0,0.0,0.0 base-enclosure-orientations.xml,59.445,59.445,35.571,35.571,23.875,0.0,0.0,0.0,0.0,0.0,0.0,0.394,0.0,0.0,4.229,0.797,9.014,0.0,0.0,4.507,0.0,0.334,0.0,0.0,0.0,0.0,2.072,0.0,0.0,0.319,0.365,1.513,1.529,0.0,2.116,8.384,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,23.875,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,22.359,0.0,13.881,9.071,0.615,0.0,0.0,0.0,0.0,2052.7,3880.6,3880.6,23.522,19.14,0.0,3.535,3.634,0.511,7.498,0.863,10.076,-12.691,0.0,0.0,0.0,8.278,-0.066,4.804,0.0,0.727,0.0,5.144,-7.799,-2.489,0.0,-0.027,-0.438,-0.048,2.755,-0.149,-1.32,11.723,0.0,0.0,0.0,-6.227,-0.062,-1.135,-3.763,-0.161,0.0,3.08,7.782,2.018,1354.7,998.0,11171.6,2563.5,0.0,36000.0,24000.0,0.0,6.8,91.76,32706.0,8608.0,7508.0,0.0,575.0,6840.0,0.0,0.0,2408.0,2171.0,4597.0,19675.0,5934.0,7037.0,0.0,207.0,265.0,0.0,0.0,0.0,2293.0,619.0,3320.0,0.0,0.0,0.0,0.0 base-enclosure-overhangs.xml,59.356,59.356,35.431,35.431,23.925,0.0,0.0,0.0,0.0,0.0,0.0,0.395,0.0,0.0,4.115,0.77,9.014,0.0,0.0,4.507,0.0,0.334,0.0,0.0,0.0,0.0,2.071,0.0,0.0,0.319,0.365,1.513,1.529,0.0,2.116,8.384,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,23.925,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,22.406,0.0,13.413,9.071,0.615,0.0,0.0,0.0,0.0,2039.8,3485.2,3485.2,23.46,18.623,0.0,3.532,3.633,0.511,7.487,0.629,9.995,-12.285,0.0,0.0,0.0,8.257,-0.067,4.805,0.0,0.727,0.0,5.149,-7.807,-2.49,0.0,-0.011,-0.427,-0.046,2.78,-0.016,-1.336,11.091,0.0,0.0,0.0,-6.176,-0.063,-1.128,-3.718,-0.16,0.0,2.982,7.773,2.017,1354.7,998.0,11171.5,2563.5,0.0,36000.0,24000.0,0.0,6.8,91.76,32706.0,8608.0,7508.0,0.0,575.0,6840.0,0.0,0.0,2408.0,2171.0,4597.0,19675.0,5934.0,7037.0,0.0,207.0,265.0,0.0,0.0,0.0,2293.0,619.0,3320.0,0.0,0.0,0.0,0.0 base-enclosure-rooftypes.xml,59.148,59.148,35.437,35.437,23.711,0.0,0.0,0.0,0.0,0.0,0.0,0.391,0.0,0.0,4.121,0.773,9.014,0.0,0.0,4.507,0.0,0.334,0.0,0.0,0.0,0.0,2.072,0.0,0.0,0.319,0.365,1.513,1.529,0.0,2.116,8.384,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,23.711,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,22.205,0.0,13.44,9.071,0.615,0.0,0.0,0.0,0.0,2051.9,3766.3,3766.3,23.331,18.137,0.0,3.651,3.635,0.512,7.5,0.629,10.079,-12.691,0.0,0.0,0.0,8.281,-0.064,4.805,0.0,0.727,0.0,5.101,-7.799,-2.489,0.0,-0.281,-0.436,-0.048,2.76,-0.019,-1.315,11.723,0.0,0.0,0.0,-6.221,-0.061,-1.135,-3.758,-0.161,0.0,2.762,7.782,2.018,1354.7,998.0,11171.6,2563.5,0.0,36000.0,24000.0,0.0,6.8,91.76,32706.0,8608.0,7508.0,0.0,575.0,6840.0,0.0,0.0,2408.0,2171.0,4597.0,19675.0,5934.0,7037.0,0.0,207.0,265.0,0.0,0.0,0.0,2293.0,619.0,3320.0,0.0,0.0,0.0,0.0 diff --git a/hpxml-measures/workflow/tests/base_results/results_workflow_simulations1_bills.csv b/hpxml-measures/workflow/tests/base_results/results_workflow_simulations1_bills.csv index cc18b2507..eb6652736 100644 --- a/hpxml-measures/workflow/tests/base_results/results_workflow_simulations1_bills.csv +++ b/hpxml-measures/workflow/tests/base_results/results_workflow_simulations1_bills.csv @@ -22,6 +22,7 @@ base-atticroof-vented.xml,1830.36,144.0,1294.36,0.0,1438.36,144.0,248.0,392.0,0. base-battery-scheduled.xml,1907.47,144.0,1369.2,0.0,1513.2,144.0,250.27,394.27,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0 base-battery.xml,1844.59,144.0,1306.32,0.0,1450.32,144.0,250.27,394.27,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0 base-bldgtype-mf-unit-adjacent-to-multifamily-buffer-space.xml,1307.87,144.0,882.29,0.0,1026.29,144.0,137.58,281.58,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0 +base-bldgtype-mf-unit-adjacent-to-multiple-hvac-none.xml,969.32,144.0,825.32,0.0,969.32,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0 base-bldgtype-mf-unit-adjacent-to-multiple.xml,1282.02,144.0,915.4,0.0,1059.4,144.0,78.62,222.62,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0 base-bldgtype-mf-unit-adjacent-to-non-freezing-space.xml,1441.38,144.0,873.07,0.0,1017.07,144.0,280.31,424.31,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0 base-bldgtype-mf-unit-adjacent-to-other-heated-space.xml,1196.71,144.0,888.54,0.0,1032.54,144.0,20.17,164.17,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0 @@ -35,6 +36,7 @@ base-bldgtype-mf-unit-shared-boiler-chiller-water-loop-heat-pump.xml,1423.25,144 base-bldgtype-mf-unit-shared-boiler-cooling-tower-water-loop-heat-pump.xml,1287.23,144.0,991.63,0.0,1135.63,144.0,7.6,151.6,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0 base-bldgtype-mf-unit-shared-boiler-only-baseboard.xml,1133.54,144.0,837.09,0.0,981.09,144.0,8.45,152.45,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0 base-bldgtype-mf-unit-shared-boiler-only-fan-coil-ducted.xml,1135.18,144.0,838.17,0.0,982.17,144.0,9.01,153.01,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0 +base-bldgtype-mf-unit-shared-boiler-only-fan-coil-eae.xml,1134.94,144.0,838.91,0.0,982.91,144.0,8.03,152.03,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0 base-bldgtype-mf-unit-shared-boiler-only-fan-coil-fireplace-elec.xml,1139.05,144.0,845.0,0.0,989.0,144.0,6.05,150.05,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0 base-bldgtype-mf-unit-shared-boiler-only-fan-coil.xml,1135.02,144.0,839.02,0.0,983.02,144.0,8.0,152.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0 base-bldgtype-mf-unit-shared-boiler-only-water-loop-heat-pump.xml,1133.14,144.0,838.57,0.0,982.57,144.0,6.57,150.57,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0 @@ -56,7 +58,7 @@ base-bldgtype-mf-unit-shared-water-heater-recirc-scheduled.xml,1067.48,144.0,637 base-bldgtype-mf-unit-shared-water-heater-recirc.xml,1067.48,144.0,637.45,0.0,781.45,144.0,142.03,286.03,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0 base-bldgtype-mf-unit-shared-water-heater.xml,1027.25,144.0,597.22,0.0,741.22,144.0,142.03,286.03,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0 base-bldgtype-mf-unit.xml,1247.96,144.0,950.43,0.0,1094.43,144.0,9.53,153.53,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0 -base-bldgtype-mf-whole-building.xml,8869.62,864.0,8005.62,0.0,8869.62,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0 +base-bldgtype-mf-whole-building.xml,8831.94,864.0,7967.94,0.0,8831.94,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0 base-bldgtype-sfa-unit-2stories.xml,1734.05,144.0,1259.13,0.0,1403.13,144.0,186.92,330.92,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0 base-bldgtype-sfa-unit-atticroof-cathedral.xml,2294.65,144.0,1355.0,0.0,1499.0,144.0,651.65,795.65,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0 base-bldgtype-sfa-unit-infil-compartmentalization-test.xml,1518.68,144.0,1085.58,0.0,1229.58,144.0,145.1,289.1,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0 @@ -136,8 +138,8 @@ base-enclosure-infil-cfm-house-pressure.xml,1844.59,144.0,1306.32,0.0,1450.32,14 base-enclosure-infil-cfm50.xml,1844.59,144.0,1306.32,0.0,1450.32,144.0,250.27,394.27,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0 base-enclosure-infil-ela.xml,1926.5,144.0,1307.25,0.0,1451.25,144.0,331.25,475.25,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0 base-enclosure-infil-flue.xml,1859.62,144.0,1306.37,0.0,1450.37,144.0,265.25,409.25,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0 -base-enclosure-infil-natural-ach.xml,1926.5,144.0,1307.25,0.0,1451.25,144.0,331.25,475.25,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0 -base-enclosure-infil-natural-cfm.xml,1926.5,144.0,1307.25,0.0,1451.25,144.0,331.25,475.25,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0 +base-enclosure-infil-natural-ach.xml,1922.45,144.0,1307.2,0.0,1451.2,144.0,327.25,471.25,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0 +base-enclosure-infil-natural-cfm.xml,1922.45,144.0,1307.2,0.0,1451.2,144.0,327.25,471.25,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0 base-enclosure-orientations.xml,1846.36,144.0,1305.45,0.0,1449.45,144.0,252.91,396.91,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0 base-enclosure-overhangs.xml,1841.76,144.0,1300.32,0.0,1444.32,144.0,253.44,397.44,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0 base-enclosure-rooftypes.xml,1839.72,144.0,1300.54,0.0,1444.54,144.0,251.18,395.18,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0 diff --git a/hpxml-measures/workflow/tests/base_results/results_workflow_simulations2.csv b/hpxml-measures/workflow/tests/base_results/results_workflow_simulations2.csv index fa7744473..f7da57b89 100644 --- a/hpxml-measures/workflow/tests/base_results/results_workflow_simulations2.csv +++ b/hpxml-measures/workflow/tests/base_results/results_workflow_simulations2.csv @@ -1,4 +1,5 @@ HPXML,Energy Use: Total (MBtu),Energy Use: Net (MBtu),Fuel Use: Electricity: Total (MBtu),Fuel Use: Electricity: Net (MBtu),Fuel Use: Natural Gas: Total (MBtu),Fuel Use: Fuel Oil: Total (MBtu),Fuel Use: Propane: Total (MBtu),Fuel Use: Wood Cord: Total (MBtu),Fuel Use: Wood Pellets: Total (MBtu),Fuel Use: Coal: Total (MBtu),End Use: Electricity: Heating (MBtu),End Use: Electricity: Heating Fans/Pumps (MBtu),End Use: Electricity: Heating Heat Pump Backup (MBtu),End Use: Electricity: Heating Heat Pump Backup Fans/Pumps (MBtu),End Use: Electricity: Cooling (MBtu),End Use: Electricity: Cooling Fans/Pumps (MBtu),End Use: Electricity: Hot Water (MBtu),End Use: Electricity: Hot Water Recirc Pump (MBtu),End Use: Electricity: Hot Water Solar Thermal Pump (MBtu),End Use: Electricity: Lighting Interior (MBtu),End Use: Electricity: Lighting Garage (MBtu),End Use: Electricity: Lighting Exterior (MBtu),End Use: Electricity: Mech Vent (MBtu),End Use: Electricity: Mech Vent Preheating (MBtu),End Use: Electricity: Mech Vent Precooling (MBtu),End Use: Electricity: Whole House Fan (MBtu),End Use: Electricity: Refrigerator (MBtu),End Use: Electricity: Freezer (MBtu),End Use: Electricity: Dehumidifier (MBtu),End Use: Electricity: Dishwasher (MBtu),End Use: Electricity: Clothes Washer (MBtu),End Use: Electricity: Clothes Dryer (MBtu),End Use: Electricity: Range/Oven (MBtu),End Use: Electricity: Ceiling Fan (MBtu),End Use: Electricity: Television (MBtu),End Use: Electricity: Plug Loads (MBtu),End Use: Electricity: Electric Vehicle Charging (MBtu),End Use: Electricity: Well Pump (MBtu),End Use: Electricity: Pool Heater (MBtu),End Use: Electricity: Pool Pump (MBtu),End Use: Electricity: Permanent Spa Heater (MBtu),End Use: Electricity: Permanent Spa Pump (MBtu),End Use: Electricity: PV (MBtu),End Use: Electricity: Generator (MBtu),End Use: Electricity: Battery (MBtu),End Use: Natural Gas: Heating (MBtu),End Use: Natural Gas: Heating Heat Pump Backup (MBtu),End Use: Natural Gas: Hot Water (MBtu),End Use: Natural Gas: Clothes Dryer (MBtu),End Use: Natural Gas: Range/Oven (MBtu),End Use: Natural Gas: Mech Vent Preheating (MBtu),End Use: Natural Gas: Pool Heater (MBtu),End Use: Natural Gas: Permanent Spa Heater (MBtu),End Use: Natural Gas: Grill (MBtu),End Use: Natural Gas: Lighting (MBtu),End Use: Natural Gas: Fireplace (MBtu),End Use: Natural Gas: Generator (MBtu),End Use: Fuel Oil: Heating (MBtu),End Use: Fuel Oil: Heating Heat Pump Backup (MBtu),End Use: Fuel Oil: Hot Water (MBtu),End Use: Fuel Oil: Clothes Dryer (MBtu),End Use: Fuel Oil: Range/Oven (MBtu),End Use: Fuel Oil: Mech Vent Preheating (MBtu),End Use: Fuel Oil: Grill (MBtu),End Use: Fuel Oil: Lighting (MBtu),End Use: Fuel Oil: Fireplace (MBtu),End Use: Fuel Oil: Generator (MBtu),End Use: Propane: Heating (MBtu),End Use: Propane: Heating Heat Pump Backup (MBtu),End Use: Propane: Hot Water (MBtu),End Use: Propane: Clothes Dryer (MBtu),End Use: Propane: Range/Oven (MBtu),End Use: Propane: Mech Vent Preheating (MBtu),End Use: Propane: Grill (MBtu),End Use: Propane: Lighting (MBtu),End Use: Propane: Fireplace (MBtu),End Use: Propane: Generator (MBtu),End Use: Wood Cord: Heating (MBtu),End Use: Wood Cord: Heating Heat Pump Backup (MBtu),End Use: Wood Cord: Hot Water (MBtu),End Use: Wood Cord: Clothes Dryer (MBtu),End Use: Wood Cord: Range/Oven (MBtu),End Use: Wood Cord: Mech Vent Preheating (MBtu),End Use: Wood Cord: Grill (MBtu),End Use: Wood Cord: Lighting (MBtu),End Use: Wood Cord: Fireplace (MBtu),End Use: Wood Cord: Generator (MBtu),End Use: Wood Pellets: Heating (MBtu),End Use: Wood Pellets: Heating Heat Pump Backup (MBtu),End Use: Wood Pellets: Hot Water (MBtu),End Use: Wood Pellets: Clothes Dryer (MBtu),End Use: Wood Pellets: Range/Oven (MBtu),End Use: Wood Pellets: Mech Vent Preheating (MBtu),End Use: Wood Pellets: Grill (MBtu),End Use: Wood Pellets: Lighting (MBtu),End Use: Wood Pellets: Fireplace (MBtu),End Use: Wood Pellets: Generator (MBtu),End Use: Coal: Heating (MBtu),End Use: Coal: Heating Heat Pump Backup (MBtu),End Use: Coal: Hot Water (MBtu),End Use: Coal: Clothes Dryer (MBtu),End Use: Coal: Range/Oven (MBtu),End Use: Coal: Mech Vent Preheating (MBtu),End Use: Coal: Grill (MBtu),End Use: Coal: Lighting (MBtu),End Use: Coal: Fireplace (MBtu),End Use: Coal: Generator (MBtu),Load: Heating: Delivered (MBtu),Load: Heating: Heat Pump Backup (MBtu),Load: Cooling: Delivered (MBtu),Load: Hot Water: Delivered (MBtu),Load: Hot Water: Tank Losses (MBtu),Load: Hot Water: Desuperheater (MBtu),Load: Hot Water: Solar Thermal (MBtu),Unmet Hours: Heating (hr),Unmet Hours: Cooling (hr),Peak Electricity: Winter Total (W),Peak Electricity: Summer Total (W),Peak Electricity: Annual Total (W),Peak Load: Heating: Delivered (kBtu/hr),Peak Load: Cooling: Delivered (kBtu/hr),Component Load: Heating: Roofs (MBtu),Component Load: Heating: Ceilings (MBtu),Component Load: Heating: Walls (MBtu),Component Load: Heating: Rim Joists (MBtu),Component Load: Heating: Foundation Walls (MBtu),Component Load: Heating: Doors (MBtu),Component Load: Heating: Windows Conduction (MBtu),Component Load: Heating: Windows Solar (MBtu),Component Load: Heating: Skylights Conduction (MBtu),Component Load: Heating: Skylights Solar (MBtu),Component Load: Heating: Floors (MBtu),Component Load: Heating: Slabs (MBtu),Component Load: Heating: Internal Mass (MBtu),Component Load: Heating: Infiltration (MBtu),Component Load: Heating: Natural Ventilation (MBtu),Component Load: Heating: Mechanical Ventilation (MBtu),Component Load: Heating: Whole House Fan (MBtu),Component Load: Heating: Ducts (MBtu),Component Load: Heating: Internal Gains (MBtu),Component Load: Heating: Lighting (MBtu),Component Load: Cooling: Roofs (MBtu),Component Load: Cooling: Ceilings (MBtu),Component Load: Cooling: Walls (MBtu),Component Load: Cooling: Rim Joists (MBtu),Component Load: Cooling: Foundation Walls (MBtu),Component Load: Cooling: Doors (MBtu),Component Load: Cooling: Windows Conduction (MBtu),Component Load: Cooling: Windows Solar (MBtu),Component Load: Cooling: Skylights Conduction (MBtu),Component Load: Cooling: Skylights Solar (MBtu),Component Load: Cooling: Floors (MBtu),Component Load: Cooling: Slabs (MBtu),Component Load: Cooling: Internal Mass (MBtu),Component Load: Cooling: Infiltration (MBtu),Component Load: Cooling: Natural Ventilation (MBtu),Component Load: Cooling: Mechanical Ventilation (MBtu),Component Load: Cooling: Whole House Fan (MBtu),Component Load: Cooling: Ducts (MBtu),Component Load: Cooling: Internal Gains (MBtu),Component Load: Cooling: Lighting (MBtu),Hot Water: Clothes Washer (gal),Hot Water: Dishwasher (gal),Hot Water: Fixtures (gal),Hot Water: Distribution Waste (gal),Resilience: Battery (hr),HVAC Capacity: Heating (Btu/h),HVAC Capacity: Cooling (Btu/h),HVAC Capacity: Heat Pump Backup (Btu/h),HVAC Design Temperature: Heating (F),HVAC Design Temperature: Cooling (F),HVAC Design Load: Heating: Total (Btu/h),HVAC Design Load: Heating: Ducts (Btu/h),HVAC Design Load: Heating: Windows (Btu/h),HVAC Design Load: Heating: Skylights (Btu/h),HVAC Design Load: Heating: Doors (Btu/h),HVAC Design Load: Heating: Walls (Btu/h),HVAC Design Load: Heating: Roofs (Btu/h),HVAC Design Load: Heating: Floors (Btu/h),HVAC Design Load: Heating: Slabs (Btu/h),HVAC Design Load: Heating: Ceilings (Btu/h),HVAC Design Load: Heating: Infiltration/Ventilation (Btu/h),HVAC Design Load: Cooling Sensible: Total (Btu/h),HVAC Design Load: Cooling Sensible: Ducts (Btu/h),HVAC Design Load: Cooling Sensible: Windows (Btu/h),HVAC Design Load: Cooling Sensible: Skylights (Btu/h),HVAC Design Load: Cooling Sensible: Doors (Btu/h),HVAC Design Load: Cooling Sensible: Walls (Btu/h),HVAC Design Load: Cooling Sensible: Roofs (Btu/h),HVAC Design Load: Cooling Sensible: Floors (Btu/h),HVAC Design Load: Cooling Sensible: Slabs (Btu/h),HVAC Design Load: Cooling Sensible: Ceilings (Btu/h),HVAC Design Load: Cooling Sensible: Infiltration/Ventilation (Btu/h),HVAC Design Load: Cooling Sensible: Internal Gains (Btu/h),HVAC Design Load: Cooling Latent: Total (Btu/h),HVAC Design Load: Cooling Latent: Ducts (Btu/h),HVAC Design Load: Cooling Latent: Infiltration/Ventilation (Btu/h),HVAC Design Load: Cooling Latent: Internal Gains (Btu/h) +base-lighting-ceiling-fans-label-energy-use.xml,59.791,59.791,36.187,36.187,23.605,0.0,0.0,0.0,0.0,0.0,0.0,0.389,0.0,0.0,4.176,0.784,9.012,0.0,0.0,4.507,0.0,0.334,0.0,0.0,0.0,0.0,2.079,0.0,0.0,0.319,0.365,1.513,1.529,0.682,2.116,8.384,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,23.605,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,22.106,0.0,13.724,9.071,0.613,0.0,0.0,0.0,0.0,2039.7,3626.3,3626.3,23.508,19.051,0.0,3.54,3.638,0.512,7.504,0.63,10.088,-12.691,0.0,0.0,0.0,8.275,-0.067,4.807,0.0,0.728,0.0,5.094,-7.8,-2.489,0.0,-0.072,-0.489,-0.055,2.617,-0.032,-1.473,11.723,0.0,0.0,0.0,-6.441,-0.063,-1.172,-3.986,-0.17,0.0,3.005,8.468,2.018,1354.7,998.0,11171.6,2563.5,0.0,36000.0,24000.0,0.0,6.8,91.76,32706.0,8608.0,7508.0,0.0,575.0,6840.0,0.0,0.0,2408.0,2171.0,4597.0,19675.0,5934.0,7037.0,0.0,207.0,265.0,0.0,0.0,0.0,2293.0,619.0,3320.0,0.0,0.0,0.0,0.0 base-lighting-ceiling-fans.xml,59.594,59.594,35.989,35.989,23.605,0.0,0.0,0.0,0.0,0.0,0.0,0.389,0.0,0.0,4.143,0.776,9.012,0.0,0.0,4.507,0.0,0.334,0.0,0.0,0.0,0.0,2.079,0.0,0.0,0.319,0.365,1.513,1.529,0.525,2.116,8.384,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,23.605,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,22.106,0.0,13.582,9.071,0.613,0.0,0.0,0.0,0.0,2039.7,3595.8,3595.8,23.508,18.97,0.0,3.54,3.638,0.512,7.504,0.63,10.088,-12.691,0.0,0.0,0.0,8.275,-0.067,4.807,0.0,0.728,0.0,5.095,-7.8,-2.489,0.0,-0.069,-0.487,-0.055,2.621,-0.031,-1.468,11.723,0.0,0.0,0.0,-6.434,-0.063,-1.171,-3.97,-0.17,0.0,2.984,8.311,2.018,1354.7,998.0,11171.6,2563.5,0.0,36000.0,24000.0,0.0,6.8,91.76,32706.0,8608.0,7508.0,0.0,575.0,6840.0,0.0,0.0,2408.0,2171.0,4597.0,19675.0,5934.0,7037.0,0.0,207.0,265.0,0.0,0.0,0.0,2293.0,619.0,3320.0,0.0,0.0,0.0,0.0 base-lighting-holiday.xml,59.416,59.416,35.791,35.791,23.625,0.0,0.0,0.0,0.0,0.0,0.0,0.39,0.0,0.0,4.251,0.802,9.014,0.0,0.0,4.507,0.0,0.531,0.0,0.0,0.0,0.0,2.072,0.0,0.0,0.319,0.365,1.513,1.529,0.0,2.116,8.384,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,23.625,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,22.125,0.0,13.973,9.071,0.615,0.0,0.0,0.0,0.0,2427.3,3884.4,3884.4,23.508,19.176,0.0,3.54,3.638,0.512,7.506,0.63,10.087,-12.691,0.0,0.0,0.0,8.29,-0.067,4.807,0.0,0.728,0.0,5.099,-7.8,-2.489,0.0,-0.031,-0.441,-0.049,2.748,-0.02,-1.328,11.723,0.0,0.0,0.0,-6.24,-0.063,-1.137,-3.781,-0.162,0.0,3.101,7.782,2.018,1354.7,998.0,11171.6,2563.5,0.0,36000.0,24000.0,0.0,6.8,91.76,32706.0,8608.0,7508.0,0.0,575.0,6840.0,0.0,0.0,2408.0,2171.0,4597.0,19675.0,5934.0,7037.0,0.0,207.0,265.0,0.0,0.0,0.0,2293.0,619.0,3320.0,0.0,0.0,0.0,0.0 base-lighting-kwh-per-year.xml,60.9,60.9,39.187,39.187,21.713,0.0,0.0,0.0,0.0,0.0,0.0,0.358,0.0,0.0,4.475,0.856,9.013,0.0,0.0,7.673,0.0,0.512,0.0,0.0,0.0,0.0,2.076,0.0,0.0,0.319,0.365,1.513,1.529,0.0,2.116,8.384,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,21.713,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,20.334,0.0,14.945,9.071,0.614,0.0,0.0,0.0,0.0,2394.8,3956.9,3956.9,23.215,19.78,0.0,3.572,3.658,0.515,7.573,0.634,10.145,-12.66,0.0,0.0,0.0,8.378,-0.074,4.815,0.0,0.729,0.0,4.725,-7.788,-4.232,0.0,-0.071,-0.474,-0.053,2.655,-0.028,-1.42,11.736,0.0,0.0,0.0,-6.391,-0.07,-1.161,-3.967,-0.166,0.0,3.262,7.796,3.441,1354.7,998.0,11171.6,2563.5,0.0,36000.0,24000.0,0.0,6.8,91.76,32706.0,8608.0,7508.0,0.0,575.0,6840.0,0.0,0.0,2408.0,2171.0,4597.0,19675.0,5934.0,7037.0,0.0,207.0,265.0,0.0,0.0,0.0,2293.0,619.0,3320.0,0.0,0.0,0.0,0.0 @@ -67,18 +68,18 @@ base-residents-1-misc-loads-large-uncommon2.xml,80.706,80.706,49.212,49.212,23.5 base-residents-1.xml,53.439,53.439,28.186,28.186,25.253,0.0,0.0,0.0,0.0,0.0,0.0,0.417,0.0,0.0,3.993,0.741,3.886,0.0,0.0,4.507,0.0,0.334,0.0,0.0,0.0,0.0,2.069,0.0,0.0,0.159,0.21,0.868,1.159,0.0,1.461,8.384,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,25.253,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,23.651,0.0,13.015,3.56,0.616,0.0,0.0,0.0,0.0,1592.6,3323.9,3323.9,23.879,18.485,0.0,3.521,3.628,0.51,7.477,0.628,10.062,-12.698,0.0,0.0,0.0,8.262,-0.064,4.801,0.0,0.725,0.0,5.417,-6.452,-2.49,0.0,0.001,-0.416,-0.045,2.824,-0.013,-1.249,11.715,0.0,0.0,0.0,-6.122,-0.06,-1.113,-3.597,-0.158,0.0,2.937,6.439,2.017,777.7,496.6,4208.2,833.5,0.0,36000.0,24000.0,0.0,6.8,91.76,32706.0,8608.0,7508.0,0.0,575.0,6840.0,0.0,0.0,2408.0,2171.0,4597.0,19675.0,5934.0,7037.0,0.0,207.0,265.0,0.0,0.0,0.0,2293.0,619.0,3320.0,0.0,0.0,0.0,0.0 base-residents-5.xml,70.772,50.521,39.555,19.303,31.217,0.0,0.0,0.0,0.0,0.0,0.0,0.515,0.0,0.0,2.261,0.33,6.888,0.0,0.326,4.507,0.0,0.334,1.118,0.0,0.0,1.108,2.16,0.0,0.0,0.769,0.544,4.047,2.058,0.745,3.053,8.384,0.0,0.0,0.0,0.0,0.0,0.0,-20.251,0.0,0.409,31.217,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,29.22,0.0,5.524,18.155,0.645,0.0,11.92,0.0,0.0,2758.8,3334.1,3334.1,26.006,15.439,0.0,3.802,3.696,0.52,7.492,0.647,10.282,-12.793,0.0,0.0,0.0,8.323,-0.087,1.528,0.0,15.037,0.0,2.708,-9.686,-2.53,0.0,0.3,-0.113,-0.002,3.492,0.063,-0.321,11.62,0.0,0.0,0.0,-5.127,-0.083,-0.197,0.0,-3.402,-12.284,0.453,10.013,1.977,2592.0,2707.5,20715.8,5546.8,1.882,36000.0,24000.0,0.0,6.8,91.76,31457.0,4632.0,7508.0,0.0,575.0,6840.0,0.0,0.0,2408.0,2171.0,7324.0,15763.0,1007.0,7037.0,0.0,207.0,265.0,0.0,0.0,0.0,2293.0,1634.0,3320.0,0.0,0.0,0.0,0.0 base-schedules-detailed-all-10-mins.xml,59.298,59.298,35.797,35.797,23.502,0.0,0.0,0.0,0.0,0.0,0.0,0.388,0.0,0.0,4.411,0.833,9.023,0.0,0.0,4.51,0.0,0.334,0.0,0.0,0.0,0.0,2.074,0.0,0.0,0.319,0.365,1.513,1.529,0.0,2.116,8.384,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,23.502,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,22.008,0.0,14.411,9.053,0.639,0.0,0.0,0.333,1.0,9416.3,10702.6,10702.6,37.375,22.443,0.0,3.605,3.668,0.517,7.594,0.642,10.187,-12.602,0.0,0.0,0.0,8.334,-0.062,5.307,0.0,0.78,0.0,5.131,-8.891,-2.51,0.0,-0.155,-0.47,-0.054,2.754,-0.028,-1.377,11.752,0.0,0.0,0.0,-6.244,-0.057,-1.253,-3.675,-0.171,0.0,3.299,8.24,2.0,1354.7,998.0,11252.4,2582.1,0.0,36000.0,24000.0,0.0,6.8,91.76,32706.0,8608.0,7508.0,0.0,575.0,6840.0,0.0,0.0,2408.0,2171.0,4597.0,19675.0,5934.0,7037.0,0.0,207.0,265.0,0.0,0.0,0.0,2293.0,619.0,3320.0,0.0,0.0,0.0,0.0 -base-schedules-detailed-mixed-timesteps-power-outage.xml,33.115,33.115,28.192,28.192,4.923,0.0,0.0,0.0,0.0,0.0,0.0,0.081,0.0,0.0,3.099,0.522,7.326,0.0,0.0,3.619,0.0,0.267,0.0,0.0,0.0,0.0,1.688,0.0,0.0,0.267,0.304,1.259,1.258,0.0,1.713,6.788,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,4.923,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,4.612,0.0,9.112,7.3,0.562,0.0,0.0,0.5,0.5,9382.1,10441.6,10441.6,41.603,22.029,0.0,2.606,2.454,0.343,4.266,0.334,6.471,-12.497,0.0,0.0,0.0,3.68,-0.103,3.377,0.0,0.383,0.0,1.029,-6.405,-1.596,0.0,-0.193,-0.549,-0.064,2.5,-0.053,-1.655,11.861,0.0,0.0,0.0,-7.407,-0.057,-1.32,-6.178,-0.205,0.0,2.184,8.386,2.023,1141.2,883.5,9207.1,2112.8,0.0,36000.0,24000.0,0.0,6.8,91.76,32706.0,8608.0,7508.0,0.0,575.0,6840.0,0.0,0.0,2408.0,2171.0,4597.0,19675.0,5934.0,7037.0,0.0,207.0,265.0,0.0,0.0,0.0,2293.0,619.0,3320.0,0.0,0.0,0.0,0.0 +base-schedules-detailed-mixed-timesteps-power-outage.xml,33.137,33.137,28.192,28.192,4.944,0.0,0.0,0.0,0.0,0.0,0.0,0.082,0.0,0.0,3.099,0.522,7.326,0.0,0.0,3.619,0.0,0.267,0.0,0.0,0.0,0.0,1.688,0.0,0.0,0.267,0.304,1.259,1.258,0.0,1.713,6.788,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,4.944,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,4.632,0.0,9.111,7.3,0.562,0.0,0.0,0.5,0.5,9382.2,10441.6,10441.6,41.885,22.029,0.0,2.598,2.445,0.341,4.238,0.332,6.445,-12.497,0.0,0.0,0.0,3.632,-0.104,3.367,0.0,0.383,0.0,1.033,-6.255,-1.596,0.0,-0.193,-0.549,-0.064,2.5,-0.053,-1.655,11.861,0.0,0.0,0.0,-7.408,-0.057,-1.32,-6.178,-0.205,0.0,2.184,8.386,2.023,1141.2,883.5,9207.2,2112.8,0.0,36000.0,24000.0,0.0,6.8,91.76,32706.0,8608.0,7508.0,0.0,575.0,6840.0,0.0,0.0,2408.0,2171.0,4597.0,19675.0,5934.0,7037.0,0.0,207.0,265.0,0.0,0.0,0.0,2293.0,619.0,3320.0,0.0,0.0,0.0,0.0 base-schedules-detailed-mixed-timesteps.xml,42.033,42.033,33.855,33.855,8.178,0.0,0.0,0.0,0.0,0.0,0.0,0.135,0.0,0.0,3.111,0.524,9.053,0.0,0.0,4.51,0.0,0.334,0.0,0.0,0.0,0.0,1.964,0.0,0.0,0.319,0.365,1.513,1.529,0.0,2.116,8.384,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,8.178,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,7.657,0.0,9.157,9.053,0.672,0.0,0.0,0.0,0.5,9378.7,10444.6,10444.6,31.99,22.032,0.0,2.907,2.8,0.392,5.382,0.419,7.495,-12.492,0.0,0.0,0.0,5.496,-0.058,3.852,0.0,0.58,0.0,1.756,-8.668,-2.486,0.0,-0.196,-0.553,-0.065,2.505,-0.053,-1.665,11.861,0.0,0.0,0.0,-7.339,-0.057,-1.322,-6.196,-0.206,0.0,2.193,8.386,2.023,1354.7,998.0,11253.7,2582.4,0.0,36000.0,24000.0,0.0,6.8,91.76,32706.0,8608.0,7508.0,0.0,575.0,6840.0,0.0,0.0,2408.0,2171.0,4597.0,19675.0,5934.0,7037.0,0.0,207.0,265.0,0.0,0.0,0.0,2293.0,619.0,3320.0,0.0,0.0,0.0,0.0 base-schedules-detailed-occupancy-stochastic-10-mins.xml,58.705,58.705,35.708,35.708,22.997,0.0,0.0,0.0,0.0,0.0,0.0,0.379,0.0,0.0,4.328,0.819,8.936,0.0,0.0,4.482,0.0,0.334,0.0,0.0,0.0,0.0,2.073,0.0,0.0,0.323,0.356,1.504,1.664,0.0,2.117,8.391,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,22.997,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,21.533,0.0,14.197,8.987,0.616,0.0,0.0,0.0,0.0,6630.7,7141.3,8967.4,31.432,21.327,0.0,3.553,3.646,0.513,7.531,0.631,10.109,-12.67,0.0,0.0,0.0,8.32,-0.063,5.321,0.0,0.764,0.0,4.966,-8.913,-2.501,0.0,-0.035,-0.443,-0.049,2.737,-0.021,-1.337,11.743,0.0,0.0,0.0,-6.26,-0.059,-1.261,-3.812,-0.188,0.0,3.144,8.309,1.981,1002.6,945.2,11359.3,2606.6,0.0,36000.0,24000.0,0.0,6.8,91.76,32706.0,8608.0,7508.0,0.0,575.0,6840.0,0.0,0.0,2408.0,2171.0,4597.0,19675.0,5934.0,7037.0,0.0,207.0,265.0,0.0,0.0,0.0,2293.0,619.0,3320.0,0.0,0.0,0.0,0.0 -base-schedules-detailed-occupancy-stochastic-power-outage.xml,44.34,44.34,29.877,29.877,14.463,0.0,0.0,0.0,0.0,0.0,0.0,0.239,0.0,0.0,4.297,0.812,7.294,0.0,0.0,3.627,0.0,0.267,0.0,0.0,0.0,0.0,1.752,0.0,0.0,0.267,0.304,1.259,1.258,0.0,1.713,6.789,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,14.463,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,13.548,0.0,14.068,7.313,0.518,0.0,0.0,17.0,0.0,6218.9,5664.3,6218.9,36.518,19.71,0.0,3.071,3.068,0.43,5.713,0.489,8.385,-12.681,0.0,0.0,0.0,5.191,-0.156,4.373,0.0,0.513,0.0,3.042,-6.589,-1.621,0.0,-0.034,-0.442,-0.049,2.725,-0.02,-1.334,11.737,0.0,0.0,0.0,-6.356,-0.059,-1.245,-3.807,-0.184,0.0,3.118,8.21,2.006,1141.2,883.5,9132.4,2095.6,0.0,36000.0,24000.0,0.0,6.8,91.76,32706.0,8608.0,7508.0,0.0,575.0,6840.0,0.0,0.0,2408.0,2171.0,4597.0,19675.0,5934.0,7037.0,0.0,207.0,265.0,0.0,0.0,0.0,2293.0,619.0,3320.0,0.0,0.0,0.0,0.0 +base-schedules-detailed-occupancy-stochastic-power-outage.xml,44.364,44.364,29.877,29.877,14.486,0.0,0.0,0.0,0.0,0.0,0.0,0.239,0.0,0.0,4.296,0.812,7.294,0.0,0.0,3.627,0.0,0.267,0.0,0.0,0.0,0.0,1.752,0.0,0.0,0.267,0.304,1.259,1.258,0.0,1.713,6.789,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,14.486,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,13.57,0.0,14.067,7.313,0.518,0.0,0.0,17.0,0.0,6219.8,5664.2,6219.8,36.537,19.71,0.0,3.063,3.06,0.429,5.685,0.487,8.361,-12.681,0.0,0.0,0.0,5.145,-0.157,4.363,0.0,0.513,0.0,3.046,-6.439,-1.621,0.0,-0.034,-0.442,-0.049,2.725,-0.02,-1.334,11.737,0.0,0.0,0.0,-6.357,-0.059,-1.245,-3.806,-0.184,0.0,3.117,8.21,2.006,1141.2,883.5,9132.4,2095.6,0.0,36000.0,24000.0,0.0,6.8,91.76,32706.0,8608.0,7508.0,0.0,575.0,6840.0,0.0,0.0,2408.0,2171.0,4597.0,19675.0,5934.0,7037.0,0.0,207.0,265.0,0.0,0.0,0.0,2293.0,619.0,3320.0,0.0,0.0,0.0,0.0 base-schedules-detailed-occupancy-stochastic-vacancy.xml,57.379,57.379,30.475,30.475,26.904,0.0,0.0,0.0,0.0,0.0,0.0,0.444,0.0,0.0,4.315,0.816,7.369,0.0,0.0,3.622,0.0,0.266,0.0,0.0,0.0,0.0,2.073,0.0,0.0,0.267,0.304,1.259,1.256,0.0,1.71,6.775,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,26.904,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,25.195,0.0,14.144,7.303,0.615,0.0,0.0,0.0,0.0,4495.2,5670.6,5670.6,30.846,19.766,0.0,3.501,3.619,0.509,7.449,0.625,10.037,-12.672,0.0,0.0,0.0,8.151,-0.064,5.304,0.0,0.513,0.0,5.718,-6.209,-1.614,0.0,-0.039,-0.447,-0.05,2.731,-0.022,-1.349,11.746,0.0,0.0,0.0,-6.274,-0.059,-1.25,-3.823,-0.184,0.0,3.131,8.223,2.008,1141.2,883.5,9118.0,2092.3,0.0,36000.0,24000.0,0.0,6.8,91.76,32706.0,8608.0,7508.0,0.0,575.0,6840.0,0.0,0.0,2408.0,2171.0,4597.0,19675.0,5934.0,7037.0,0.0,207.0,265.0,0.0,0.0,0.0,2293.0,619.0,3320.0,0.0,0.0,0.0,0.0 base-schedules-detailed-occupancy-stochastic.xml,58.64,58.64,35.665,35.665,22.975,0.0,0.0,0.0,0.0,0.0,0.0,0.379,0.0,0.0,4.315,0.816,9.013,0.0,0.0,4.51,0.0,0.334,0.0,0.0,0.0,0.0,2.073,0.0,0.0,0.319,0.365,1.513,1.529,0.0,2.116,8.384,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,22.975,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,21.513,0.0,14.146,9.071,0.615,0.0,0.0,0.0,0.0,4703.6,5670.8,5670.8,30.719,19.768,0.0,3.55,3.642,0.513,7.527,0.631,10.099,-12.668,0.0,0.0,0.0,8.311,-0.064,5.263,0.0,0.777,0.0,4.964,-8.871,-2.501,0.0,-0.039,-0.447,-0.05,2.731,-0.022,-1.349,11.746,0.0,0.0,0.0,-6.272,-0.059,-1.25,-3.823,-0.184,0.0,3.131,8.223,2.008,1354.7,998.0,11168.6,2562.9,0.0,36000.0,24000.0,0.0,6.8,91.76,32706.0,8608.0,7508.0,0.0,575.0,6840.0,0.0,0.0,2408.0,2171.0,4597.0,19675.0,5934.0,7037.0,0.0,207.0,265.0,0.0,0.0,0.0,2293.0,619.0,3320.0,0.0,0.0,0.0,0.0 base-schedules-detailed-setpoints-daily-schedules.xml,57.895,57.895,34.971,34.971,22.924,0.0,0.0,0.0,0.0,0.0,0.0,0.378,0.0,0.0,3.746,0.7,9.015,0.0,0.0,4.507,0.0,0.334,0.0,0.0,0.0,0.0,2.066,0.0,0.0,0.319,0.365,1.513,1.529,0.0,2.116,8.384,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,22.924,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,21.076,0.0,11.957,9.071,0.617,0.0,0.0,106.0,41.0,2072.1,3770.0,3770.0,34.955,20.845,0.0,3.497,3.568,0.501,7.484,0.605,9.791,-12.687,0.0,0.0,0.0,8.63,0.008,4.642,0.0,0.725,0.0,4.731,-7.752,-2.486,0.0,-0.04,-0.468,-0.053,2.704,-0.034,-1.49,11.726,0.0,0.0,0.0,-6.525,-0.001,-1.18,-4.194,-0.17,0.0,2.39,7.825,2.022,1354.7,998.0,11171.5,2563.5,0.0,36000.0,24000.0,0.0,6.8,91.76,32706.0,8608.0,7508.0,0.0,575.0,6840.0,0.0,0.0,2408.0,2171.0,4597.0,19675.0,5934.0,7037.0,0.0,207.0,265.0,0.0,0.0,0.0,2293.0,619.0,3320.0,0.0,0.0,0.0,0.0 base-schedules-detailed-setpoints-daily-setbacks.xml,57.375,57.375,35.127,35.127,22.248,0.0,0.0,0.0,0.0,0.0,0.0,0.367,0.0,0.0,3.886,0.728,9.015,0.0,0.0,4.507,0.0,0.334,0.0,0.0,0.0,0.0,2.065,0.0,0.0,0.319,0.365,1.513,1.529,0.0,2.116,8.384,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,22.248,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,20.744,0.0,12.562,9.071,0.617,0.0,0.0,0.0,8.0,2048.7,3769.7,3769.7,25.752,21.422,0.0,3.491,3.553,0.499,7.325,0.602,9.749,-12.723,0.0,0.0,0.0,8.166,-0.021,4.634,0.0,0.722,0.0,4.643,-7.768,-2.488,0.0,-0.027,-0.468,-0.053,2.647,-0.033,-1.493,11.69,0.0,0.0,0.0,-6.519,-0.022,-1.168,-4.138,-0.172,0.0,2.557,7.808,2.019,1354.7,998.0,11171.6,2563.5,0.0,36000.0,24000.0,0.0,6.8,91.76,32706.0,8608.0,7508.0,0.0,575.0,6840.0,0.0,0.0,2408.0,2171.0,4597.0,19675.0,5934.0,7037.0,0.0,207.0,265.0,0.0,0.0,0.0,2293.0,619.0,3320.0,0.0,0.0,0.0,0.0 base-schedules-detailed-setpoints.xml,41.926,41.926,33.625,33.625,8.301,0.0,0.0,0.0,0.0,0.0,0.0,0.137,0.0,0.0,2.929,0.488,9.046,0.0,0.0,4.507,0.0,0.334,0.0,0.0,0.0,0.0,1.959,0.0,0.0,0.319,0.365,1.513,1.529,0.0,2.116,8.384,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,8.301,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,7.768,0.0,8.584,9.071,0.649,0.0,0.0,0.0,0.0,2012.3,3487.4,3487.4,17.944,16.314,0.0,2.815,2.755,0.385,5.258,0.403,7.36,-12.563,0.0,0.0,0.0,5.369,-0.059,3.444,0.0,0.566,0.0,1.759,-7.591,-2.465,0.0,-0.067,-0.517,-0.059,2.512,-0.044,-1.596,11.85,0.0,0.0,0.0,-7.338,-0.059,-1.192,-6.335,-0.18,0.0,1.986,7.912,2.042,1354.7,998.0,11171.5,2563.5,0.0,36000.0,24000.0,0.0,6.8,91.76,32706.0,8608.0,7508.0,0.0,575.0,6840.0,0.0,0.0,2408.0,2171.0,4597.0,19675.0,5934.0,7037.0,0.0,207.0,265.0,0.0,0.0,0.0,2293.0,619.0,3320.0,0.0,0.0,0.0,0.0 -base-schedules-simple-power-outage.xml,55.217,55.217,32.34,32.34,22.878,0.0,0.0,0.0,0.0,0.0,0.0,0.377,0.0,0.0,3.386,0.607,8.4,0.0,0.0,4.199,0.0,0.311,0.0,0.0,0.0,0.0,2.017,0.0,0.0,0.292,0.335,1.386,1.401,0.0,1.94,7.686,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,22.878,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,21.425,0.0,10.625,8.445,0.581,0.0,0.0,0.0,4.0,1896.7,5855.5,5855.5,23.323,22.787,0.0,3.55,3.641,0.512,7.518,0.63,10.09,-12.683,0.0,0.0,0.0,8.283,-0.063,4.761,0.0,0.795,0.0,4.949,-8.411,-2.488,0.0,-0.086,-0.524,-0.061,2.512,-0.041,-1.591,11.731,0.0,0.0,0.0,-6.577,-0.059,-1.214,-4.4,-0.172,0.0,2.301,7.319,1.711,1241.4,914.9,10291.7,2361.6,0.0,36000.0,24000.0,0.0,6.8,91.76,32706.0,8608.0,7508.0,0.0,575.0,6840.0,0.0,0.0,2408.0,2171.0,4597.0,19675.0,5934.0,7037.0,0.0,207.0,265.0,0.0,0.0,0.0,2293.0,619.0,3320.0,0.0,0.0,0.0,0.0 -base-schedules-simple-vacancy.xml,57.633,57.633,30.884,30.884,26.749,0.0,0.0,0.0,0.0,0.0,0.0,0.441,0.0,0.0,4.356,0.827,7.374,0.0,0.0,3.592,0.0,0.266,0.0,0.0,0.0,0.0,2.22,0.0,0.0,0.265,0.303,1.256,1.269,0.0,1.756,6.96,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,26.749,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,25.051,0.0,14.356,7.31,0.615,0.0,0.0,0.0,0.0,1864.4,3799.2,3799.2,23.376,19.138,0.0,3.503,3.619,0.509,7.447,0.625,10.032,-12.688,0.0,0.0,0.0,8.147,-0.064,4.961,0.0,0.552,0.0,5.692,-6.041,-1.573,0.0,-0.044,-0.452,-0.05,2.713,-0.023,-1.368,11.73,0.0,0.0,0.0,-6.295,-0.059,-1.128,-3.868,-0.197,0.0,3.163,8.377,2.019,1124.6,828.5,9189.2,2108.6,0.0,36000.0,24000.0,0.0,6.8,91.76,32706.0,8608.0,7508.0,0.0,575.0,6840.0,0.0,0.0,2408.0,2171.0,4597.0,19675.0,5934.0,7037.0,0.0,207.0,265.0,0.0,0.0,0.0,2293.0,619.0,3320.0,0.0,0.0,0.0,0.0 -base-schedules-simple.xml,58.726,58.726,35.859,35.859,22.867,0.0,0.0,0.0,0.0,0.0,0.0,0.377,0.0,0.0,4.356,0.827,9.013,0.0,0.0,4.507,0.0,0.334,0.0,0.0,0.0,0.0,2.22,0.0,0.0,0.319,0.365,1.513,1.529,0.0,2.116,8.384,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,22.867,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,21.415,0.0,14.358,9.071,0.614,0.0,0.0,0.0,0.0,1895.4,3491.3,3491.3,23.323,19.123,0.0,3.55,3.641,0.512,7.519,0.63,10.09,-12.683,0.0,0.0,0.0,8.295,-0.063,4.806,0.0,0.729,0.0,4.948,-8.411,-2.488,0.0,-0.044,-0.452,-0.05,2.711,-0.023,-1.369,11.73,0.0,0.0,0.0,-6.294,-0.059,-1.15,-3.872,-0.164,0.0,3.162,8.377,2.019,1354.7,998.0,11171.6,2563.5,0.0,36000.0,24000.0,0.0,6.8,91.76,32706.0,8608.0,7508.0,0.0,575.0,6840.0,0.0,0.0,2408.0,2171.0,4597.0,19675.0,5934.0,7037.0,0.0,207.0,265.0,0.0,0.0,0.0,2293.0,619.0,3320.0,0.0,0.0,0.0,0.0 +base-schedules-simple-power-outage.xml,68.872,68.872,45.994,45.994,22.878,0.0,0.0,0.0,0.0,0.0,0.0,0.377,0.0,0.0,3.383,0.607,20.687,1.37,0.0,4.199,0.0,0.311,0.0,0.0,0.0,0.0,2.017,0.0,0.0,0.292,0.335,1.386,1.401,0.0,1.94,7.686,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,22.878,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,21.425,0.0,10.613,8.477,0.581,0.0,0.0,0.0,4.0,2805.2,8089.0,8089.0,23.321,22.646,0.0,3.55,3.641,0.512,7.518,0.63,10.09,-12.683,0.0,0.0,0.0,8.283,-0.063,4.761,0.0,0.795,0.0,4.949,-8.411,-2.488,0.0,-0.083,-0.521,-0.06,2.522,-0.041,-1.583,11.731,0.0,0.0,0.0,-6.565,-0.059,-1.212,-4.378,-0.172,0.0,2.299,7.245,1.711,1241.4,914.9,10291.6,2416.4,0.0,36000.0,24000.0,0.0,6.8,91.76,32706.0,8608.0,7508.0,0.0,575.0,6840.0,0.0,0.0,2408.0,2171.0,4597.0,19675.0,5934.0,7037.0,0.0,207.0,265.0,0.0,0.0,0.0,2293.0,619.0,3320.0,0.0,0.0,0.0,0.0 +base-schedules-simple-vacancy.xml,69.659,69.659,42.91,42.91,26.749,0.0,0.0,0.0,0.0,0.0,0.0,0.441,0.0,0.0,4.356,0.827,18.16,1.241,0.0,3.592,0.0,0.266,0.0,0.0,0.0,0.0,2.22,0.0,0.0,0.265,0.303,1.256,1.269,0.0,1.756,6.96,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,26.749,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,25.051,0.0,14.356,7.337,0.615,0.0,0.0,0.0,0.0,2842.1,4021.1,4021.1,23.375,19.138,0.0,3.503,3.619,0.509,7.447,0.625,10.032,-12.688,0.0,0.0,0.0,8.147,-0.064,4.961,0.0,0.552,0.0,5.692,-6.041,-1.573,0.0,-0.044,-0.452,-0.05,2.713,-0.023,-1.368,11.73,0.0,0.0,0.0,-6.295,-0.059,-1.128,-3.868,-0.197,0.0,3.163,8.377,2.019,1124.6,828.5,9189.2,2157.6,0.0,36000.0,24000.0,0.0,6.8,91.76,32706.0,8608.0,7508.0,0.0,575.0,6840.0,0.0,0.0,2408.0,2171.0,4597.0,19675.0,5934.0,7037.0,0.0,207.0,265.0,0.0,0.0,0.0,2293.0,619.0,3320.0,0.0,0.0,0.0,0.0 +base-schedules-simple.xml,73.406,73.406,50.538,50.538,22.867,0.0,0.0,0.0,0.0,0.0,0.0,0.377,0.0,0.0,4.356,0.827,22.199,1.495,0.0,4.507,0.0,0.334,0.0,0.0,0.0,0.0,2.22,0.0,0.0,0.319,0.365,1.513,1.529,0.0,2.116,8.384,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,22.867,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,21.415,0.0,14.358,9.105,0.614,0.0,0.0,0.0,0.0,2805.2,3982.7,3982.7,23.321,19.123,0.0,3.55,3.641,0.512,7.519,0.63,10.09,-12.683,0.0,0.0,0.0,8.295,-0.063,4.806,0.0,0.729,0.0,4.948,-8.411,-2.488,0.0,-0.044,-0.452,-0.05,2.711,-0.023,-1.369,11.73,0.0,0.0,0.0,-6.294,-0.059,-1.15,-3.872,-0.164,0.0,3.162,8.377,2.019,1354.7,998.0,11171.6,2623.0,0.0,36000.0,24000.0,0.0,6.8,91.76,32706.0,8608.0,7508.0,0.0,575.0,6840.0,0.0,0.0,2408.0,2171.0,4597.0,19675.0,5934.0,7037.0,0.0,207.0,265.0,0.0,0.0,0.0,2293.0,619.0,3320.0,0.0,0.0,0.0,0.0 base-simcontrol-calendar-year-custom.xml,59.179,59.179,35.551,35.551,23.628,0.0,0.0,0.0,0.0,0.0,0.0,0.39,0.0,0.0,4.216,0.793,9.014,0.0,0.0,4.507,0.0,0.334,0.0,0.0,0.0,0.0,2.072,0.0,0.0,0.319,0.365,1.513,1.529,0.0,2.116,8.384,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,23.628,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,22.127,0.0,13.804,9.071,0.615,0.0,0.0,0.0,0.0,2052.4,3543.2,3543.2,23.508,19.133,0.0,3.54,3.638,0.512,7.506,0.63,10.087,-12.691,0.0,0.0,0.0,8.29,-0.066,4.807,0.0,0.728,0.0,5.099,-7.8,-2.489,0.0,-0.026,-0.438,-0.048,2.764,-0.019,-1.322,11.723,0.0,0.0,0.0,-6.232,-0.062,-1.136,-3.949,-0.161,0.0,3.067,7.782,2.018,1354.7,998.0,11171.5,2563.5,0.0,36000.0,24000.0,0.0,6.8,91.76,32706.0,8608.0,7508.0,0.0,575.0,6840.0,0.0,0.0,2408.0,2171.0,4597.0,19675.0,5934.0,7037.0,0.0,207.0,265.0,0.0,0.0,0.0,2293.0,619.0,3320.0,0.0,0.0,0.0,0.0 base-simcontrol-daylight-saving-custom.xml,59.22,59.22,35.594,35.594,23.626,0.0,0.0,0.0,0.0,0.0,0.0,0.39,0.0,0.0,4.251,0.802,9.014,0.0,0.0,4.507,0.0,0.334,0.0,0.0,0.0,0.0,2.072,0.0,0.0,0.319,0.365,1.513,1.529,0.0,2.116,8.384,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,23.626,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,22.126,0.0,13.973,9.071,0.615,0.0,0.0,0.0,0.0,2052.4,3884.4,3884.4,23.508,19.176,0.0,3.54,3.638,0.512,7.506,0.63,10.087,-12.691,0.0,0.0,0.0,8.29,-0.067,4.807,0.0,0.728,0.0,5.099,-7.8,-2.489,0.0,-0.031,-0.441,-0.049,2.748,-0.02,-1.328,11.723,0.0,0.0,0.0,-6.24,-0.063,-1.137,-3.781,-0.162,0.0,3.101,7.782,2.018,1354.7,998.0,11171.6,2563.5,0.0,36000.0,24000.0,0.0,6.8,91.76,32706.0,8608.0,7508.0,0.0,575.0,6840.0,0.0,0.0,2408.0,2171.0,4597.0,19675.0,5934.0,7037.0,0.0,207.0,265.0,0.0,0.0,0.0,2293.0,619.0,3320.0,0.0,0.0,0.0,0.0 base-simcontrol-daylight-saving-disabled.xml,59.192,59.192,35.577,35.577,23.615,0.0,0.0,0.0,0.0,0.0,0.0,0.39,0.0,0.0,4.237,0.799,9.014,0.0,0.0,4.507,0.0,0.334,0.0,0.0,0.0,0.0,2.072,0.0,0.0,0.319,0.365,1.513,1.529,0.0,2.116,8.384,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,23.615,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,22.116,0.0,13.914,9.071,0.615,0.0,0.0,0.0,0.0,2052.4,3419.8,3419.8,23.508,18.774,0.0,3.539,3.636,0.512,7.506,0.629,10.074,-12.69,0.0,0.0,0.0,8.286,-0.062,4.804,0.0,0.725,0.0,5.096,-7.793,-2.487,0.0,-0.03,-0.442,-0.049,2.744,-0.021,-1.339,11.724,0.0,0.0,0.0,-6.243,-0.058,-1.142,-3.795,-0.159,0.0,3.074,7.789,2.02,1354.7,998.0,11171.6,2563.5,0.0,36000.0,24000.0,0.0,6.8,91.76,32706.0,8608.0,7508.0,0.0,575.0,6840.0,0.0,0.0,2408.0,2171.0,4597.0,19675.0,5934.0,7037.0,0.0,207.0,265.0,0.0,0.0,0.0,2293.0,619.0,3320.0,0.0,0.0,0.0,0.0 @@ -91,9 +92,9 @@ base-simcontrol-timestep-30-mins.xml,59.604,59.604,35.661,35.661,23.943,0.0,0.0, base.xml,59.22,59.22,35.594,35.594,23.625,0.0,0.0,0.0,0.0,0.0,0.0,0.39,0.0,0.0,4.251,0.802,9.014,0.0,0.0,4.507,0.0,0.334,0.0,0.0,0.0,0.0,2.072,0.0,0.0,0.319,0.365,1.513,1.529,0.0,2.116,8.384,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,23.625,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,22.125,0.0,13.973,9.071,0.615,0.0,0.0,0.0,0.0,2052.4,3884.4,3884.4,23.508,19.176,0.0,3.54,3.638,0.512,7.506,0.63,10.087,-12.691,0.0,0.0,0.0,8.29,-0.067,4.807,0.0,0.728,0.0,5.099,-7.8,-2.489,0.0,-0.031,-0.441,-0.049,2.748,-0.02,-1.328,11.723,0.0,0.0,0.0,-6.24,-0.063,-1.137,-3.781,-0.162,0.0,3.101,7.782,2.018,1354.7,998.0,11171.6,2563.5,0.0,36000.0,24000.0,0.0,6.8,91.76,32706.0,8608.0,7508.0,0.0,575.0,6840.0,0.0,0.0,2408.0,2171.0,4597.0,19675.0,5934.0,7037.0,0.0,207.0,265.0,0.0,0.0,0.0,2293.0,619.0,3320.0,0.0,0.0,0.0,0.0 house001.xml,86.976,86.976,46.491,46.491,40.485,0.0,0.0,0.0,0.0,0.0,0.0,0.263,0.0,0.0,15.452,4.241,0.0,0.0,0.0,7.376,0.315,0.652,0.448,0.0,0.0,0.0,2.397,0.0,0.0,0.609,0.442,3.284,1.795,0.0,2.586,6.629,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,23.459,0.0,17.026,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,19.024,0.0,49.979,10.404,2.678,0.0,0.0,0.0,0.0,1867.8,6837.1,6837.1,38.208,42.716,0.492,1.978,7.261,0.42,0.0,0.979,7.142,-4.994,0.0,0.0,0.479,1.221,-0.303,4.301,0.0,5.157,0.0,3.347,-5.668,-2.928,0.565,2.008,3.783,0.31,0.0,0.243,1.664,11.471,0.0,0.0,0.525,6.858,-0.289,-0.379,-1.822,-0.711,0.0,10.641,10.839,4.448,2104.4,2144.8,14468.8,4385.1,0.0,90000.0,60000.0,0.0,25.88,98.42,61220.0,24350.0,7740.0,0.0,811.0,7192.0,453.0,325.0,9636.0,2236.0,8478.0,111470.0,85246.0,9491.0,0.0,548.0,4937.0,299.0,70.0,0.0,3975.0,3124.0,3780.0,6860.0,3501.0,2159.0,1200.0 house002.xml,68.384,68.384,40.431,40.431,27.953,0.0,0.0,0.0,0.0,0.0,0.0,0.163,0.0,0.0,14.492,3.319,0.0,0.0,0.0,6.378,0.315,0.594,0.448,0.0,0.0,0.0,2.285,0.0,0.0,0.447,0.338,2.514,1.529,0.0,2.116,5.493,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,14.479,0.0,13.474,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,11.739,0.0,39.708,7.517,2.89,0.0,0.0,0.0,0.0,1572.0,5480.1,5480.1,24.147,29.925,0.0,2.533,5.044,0.0,0.0,0.843,5.712,-4.099,0.0,0.0,0.0,1.73,-0.167,1.578,0.0,3.789,0.0,1.421,-4.319,-2.485,0.0,3.091,2.827,0.0,0.0,0.42,0.424,8.64,0.0,0.0,0.0,8.475,-0.161,-0.174,-1.342,-0.62,0.0,5.858,8.555,3.893,1610.8,1575.3,9989.5,3520.4,0.0,90000.0,60000.0,0.0,25.88,98.42,47503.0,15295.0,6070.0,0.0,637.0,4442.0,0.0,0.0,12952.0,3120.0,4987.0,33038.0,14147.0,6700.0,0.0,399.0,2264.0,0.0,0.0,0.0,4331.0,1877.0,3320.0,3848.0,1750.0,1297.0,800.0 -house003.xml,68.972,68.972,39.941,39.941,29.031,0.0,0.0,0.0,0.0,0.0,0.0,0.177,0.0,0.0,12.746,3.478,0.0,0.0,0.0,6.872,0.315,0.623,0.448,0.0,0.0,0.0,2.283,0.0,0.0,0.447,0.338,2.514,1.529,0.0,2.116,6.055,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,15.799,0.0,13.233,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,12.808,0.0,41.522,7.517,2.69,0.0,0.0,0.0,0.0,1652.4,5614.5,5614.5,26.56,34.007,0.651,2.794,4.669,0.0,0.0,0.977,6.242,-3.958,0.0,0.0,0.0,1.054,-0.193,1.997,0.0,3.943,0.0,1.662,-4.504,-2.69,0.794,3.053,2.631,0.0,0.0,0.651,1.117,9.819,0.0,0.0,0.0,6.527,-0.185,-0.209,-1.394,-0.618,0.0,6.501,8.848,4.182,1610.8,1575.3,9989.4,3520.4,0.0,90000.0,60000.0,0.0,25.88,98.42,48035.0,15929.0,6644.0,0.0,724.0,4238.0,610.0,0.0,11450.0,2908.0,5532.0,41327.0,18337.0,9082.0,0.0,424.0,2542.0,403.0,0.0,0.0,5169.0,2049.0,3320.0,3967.0,1750.0,1416.0,800.0 +house003.xml,68.971,68.971,39.94,39.94,29.031,0.0,0.0,0.0,0.0,0.0,0.0,0.177,0.0,0.0,12.746,3.478,0.0,0.0,0.0,6.872,0.315,0.623,0.448,0.0,0.0,0.0,2.283,0.0,0.0,0.447,0.338,2.514,1.529,0.0,2.116,6.055,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,15.799,0.0,13.233,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,12.808,0.0,41.522,7.517,2.69,0.0,0.0,0.0,0.0,1652.4,5578.5,5578.5,26.56,33.688,0.651,2.794,4.669,0.0,0.0,0.977,6.242,-3.958,0.0,0.0,0.0,1.054,-0.193,1.997,0.0,3.943,0.0,1.662,-4.504,-2.69,0.794,3.053,2.631,0.0,0.0,0.651,1.117,9.819,0.0,0.0,0.0,6.527,-0.185,-0.209,-1.394,-0.618,0.0,6.5,8.848,4.182,1610.8,1575.3,9989.4,3520.4,0.0,90000.0,60000.0,0.0,25.88,98.42,48035.0,15929.0,6644.0,0.0,724.0,4238.0,610.0,0.0,11450.0,2908.0,5532.0,41327.0,18337.0,9082.0,0.0,424.0,2542.0,403.0,0.0,0.0,5169.0,2049.0,3320.0,3967.0,1750.0,1416.0,800.0 house004.xml,137.162,137.162,75.285,75.285,61.877,0.0,0.0,0.0,0.0,0.0,0.0,0.406,0.0,0.0,29.323,9.249,0.0,0.0,0.0,11.556,0.315,0.894,0.448,0.0,0.0,0.0,2.244,0.0,0.0,0.528,0.39,2.899,1.662,1.633,2.351,11.386,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,45.744,0.0,16.133,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,36.992,0.0,108.603,8.975,3.51,0.0,0.0,0.0,106.0,3077.9,7936.4,7936.4,55.097,52.116,0.127,5.496,11.334,0.0,0.0,1.248,13.697,-5.912,0.0,0.0,0.0,3.077,-0.796,4.941,0.0,6.269,0.0,7.248,-6.2,-3.846,0.198,6.711,11.692,0.0,0.0,0.52,7.516,17.689,0.0,0.0,0.0,18.807,-0.784,1.025,-0.0,1.853,0.0,21.4,14.58,7.71,1857.6,1860.1,12229.0,3983.9,0.0,80000.0,60000.0,0.0,25.88,98.42,76099.0,20961.0,11324.0,0.0,882.0,8518.0,101.0,0.0,19021.0,5929.0,9362.0,52109.0,18518.0,12464.0,0.0,688.0,5604.0,65.0,0.0,0.0,7851.0,3369.0,3550.0,4612.0,1284.0,2328.0,1000.0 -house005.xml,95.674,95.674,53.116,53.116,42.558,0.0,0.0,0.0,0.0,0.0,0.0,0.307,0.0,0.0,18.272,5.052,0.0,0.0,0.0,9.15,0.315,0.755,0.448,0.0,0.0,0.0,2.338,0.0,0.0,0.528,0.39,2.899,1.662,0.0,2.351,8.648,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,27.372,0.0,15.187,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,22.198,0.0,60.607,8.975,2.73,0.0,0.0,0.0,2.0,2101.7,7891.8,7891.8,46.474,53.405,0.0,3.026,8.178,0.268,0.0,1.357,9.417,-6.701,0.0,0.0,0.394,1.238,-0.401,5.06,0.0,5.088,0.0,4.496,-5.796,-3.627,0.0,2.994,4.311,0.214,0.0,0.282,2.414,15.358,0.0,0.0,0.416,7.529,-0.383,-0.458,-2.308,-0.708,0.0,14.553,11.103,5.523,1857.6,1860.1,12229.1,3983.9,0.0,90000.0,60000.0,0.0,25.88,98.42,70733.0,26912.0,10216.0,0.0,1118.0,7857.0,0.0,262.0,11638.0,3312.0,9418.0,64895.0,31849.0,13705.0,0.0,779.0,5660.0,0.0,60.0,0.0,5887.0,3406.0,3550.0,6854.0,3501.0,2354.0,1000.0 +house005.xml,95.674,95.674,53.116,53.116,42.558,0.0,0.0,0.0,0.0,0.0,0.0,0.307,0.0,0.0,18.272,5.052,0.0,0.0,0.0,9.15,0.315,0.755,0.448,0.0,0.0,0.0,2.338,0.0,0.0,0.528,0.39,2.899,1.662,0.0,2.351,8.648,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,27.372,0.0,15.187,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,22.198,0.0,60.607,8.975,2.73,0.0,0.0,0.0,2.0,2101.7,7891.8,7891.8,46.474,53.405,0.0,3.026,8.178,0.268,0.0,1.357,9.417,-6.701,0.0,0.0,0.394,1.238,-0.401,5.06,0.0,5.088,0.0,4.496,-5.796,-3.627,0.0,2.994,4.311,0.214,0.0,0.282,2.414,15.358,0.0,0.0,0.416,7.529,-0.383,-0.458,-2.308,-0.708,0.0,14.554,11.103,5.523,1857.6,1860.1,12229.1,3983.9,0.0,90000.0,60000.0,0.0,25.88,98.42,70733.0,26912.0,10216.0,0.0,1118.0,7857.0,0.0,262.0,11638.0,3312.0,9418.0,64895.0,31849.0,13705.0,0.0,779.0,5660.0,0.0,60.0,0.0,5887.0,3406.0,3550.0,6854.0,3501.0,2354.0,1000.0 house006.xml,140.094,140.094,31.53,31.53,108.563,0.0,0.0,0.0,0.0,0.0,0.0,1.898,0.0,0.0,2.868,0.319,0.0,0.0,0.0,8.682,0.29,0.705,3.138,0.0,0.0,0.0,1.533,0.0,0.0,0.447,0.338,0.199,0.105,0.0,2.116,8.893,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,82.718,0.0,20.133,2.642,3.07,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,79.635,0.0,7.544,13.079,3.28,0.0,0.0,0.0,0.0,2056.0,2866.3,2866.3,40.812,15.273,0.0,4.26,22.269,1.99,37.087,1.864,17.625,-9.461,0.0,0.0,0.0,9.291,-0.35,9.534,0.0,4.366,0.0,0.0,-13.275,-6.376,0.0,0.176,-0.767,-0.043,2.86,-0.082,-0.518,4.316,0.0,0.0,0.0,-3.865,-0.349,-0.502,-1.553,-0.066,0.0,0.0,5.729,2.306,1610.8,1575.4,12168.1,4288.2,0.0,80000.0,30000.0,0.0,-13.72,81.14,50794.0,0.0,8907.0,0.0,677.0,31615.0,0.0,0.0,2463.0,1874.0,5256.0,9469.0,0.0,4109.0,0.0,40.0,461.0,0.0,0.0,0.0,1369.0,171.0,3320.0,1566.0,0.0,766.0,800.0 house007.xml,139.988,139.988,33.595,33.595,106.394,0.0,0.0,0.0,0.0,0.0,0.0,1.664,0.0,0.0,2.46,0.368,0.0,0.0,0.0,10.293,0.315,0.821,1.943,0.0,0.0,0.0,2.169,0.0,0.0,0.528,0.39,0.229,0.114,0.0,2.351,9.949,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,76.729,0.0,23.278,3.047,3.34,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,72.245,0.0,5.557,15.626,3.272,0.0,0.0,0.0,0.0,2277.5,3040.8,3040.8,39.978,13.671,0.0,4.721,23.685,4.448,10.095,1.499,18.826,-9.395,0.0,0.0,0.076,11.569,-0.41,6.121,0.0,20.834,0.0,2.921,-15.58,-7.667,0.0,0.208,-0.661,-0.045,0.566,-0.043,-0.285,4.554,0.0,0.0,-0.009,-3.955,-0.405,-0.183,-1.312,-1.838,0.0,0.104,6.322,2.626,1857.6,1860.1,14896.3,4852.9,0.0,90000.0,42000.0,0.0,-13.72,81.14,44632.0,5474.0,9095.0,0.0,517.0,15776.0,0.0,27.0,2623.0,2001.0,9120.0,11844.0,1097.0,4958.0,0.0,11.0,281.0,0.0,0.0,0.0,1461.0,484.0,3550.0,2145.0,404.0,741.0,1000.0 house008.xml,184.58,184.58,38.878,38.878,145.702,0.0,0.0,0.0,0.0,0.0,0.0,2.521,0.0,0.0,3.528,0.513,0.0,0.0,0.0,11.0,0.315,0.862,3.138,0.0,0.0,0.0,2.228,0.0,0.0,0.609,0.442,0.26,0.123,0.0,2.586,10.753,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,112.269,0.0,26.371,3.452,3.61,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,105.788,0.0,10.041,18.122,3.216,0.0,0.0,0.0,0.0,2562.2,3850.6,3850.6,55.304,21.129,0.0,7.234,27.478,4.71,24.269,1.194,21.308,-7.825,0.0,0.0,1.277,17.851,-0.453,18.354,0.0,6.388,0.0,8.009,-16.744,-8.086,0.0,0.297,-1.099,-0.054,1.655,-0.086,-0.367,5.403,0.0,0.0,-0.107,-2.739,-0.453,-0.957,-1.735,-0.268,0.0,0.53,7.216,2.913,2104.4,2144.8,17624.6,5341.6,0.0,90000.0,36000.0,0.0,-13.72,81.14,68489.0,8922.0,10314.0,0.0,499.0,30749.0,0.0,581.0,4580.0,3226.0,9618.0,16083.0,279.0,8654.0,0.0,1.0,937.0,0.0,-240.0,0.0,2356.0,316.0,3780.0,2481.0,158.0,1123.0,1200.0 @@ -116,9 +117,9 @@ house024.xml,130.442,130.442,43.548,43.548,0.0,86.895,0.0,0.0,0.0,0.0,0.0,2.161, house025.xml,105.595,105.595,69.79,69.79,35.805,0.0,0.0,0.0,0.0,0.0,6.738,1.082,0.0,0.0,18.727,3.059,12.209,0.0,0.0,9.258,0.0,0.783,0.0,0.0,0.0,0.0,3.902,0.0,0.0,0.359,0.282,2.094,1.384,0.0,1.859,8.054,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,35.805,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,37.64,0.0,47.484,8.315,3.831,0.0,0.0,0.0,0.0,4475.8,7250.8,7250.8,36.615,33.391,0.0,3.377,17.567,0.0,0.0,2.17,7.405,-5.706,0.0,0.0,6.826,0.0,-1.341,13.757,0.001,0.41,0.0,5.032,-7.951,-3.985,0.0,1.098,5.727,0.0,0.0,0.446,1.957,12.402,0.0,0.0,5.586,0.0,-1.34,-0.7,-0.276,-0.004,0.0,6.311,11.261,5.273,1341.8,1265.0,3496.9,1343.1,0.0,158000.0,81000.0,33000.0,24.62,91.58,58096.0,23804.0,4722.0,0.0,1238.0,9584.0,0.0,6119.0,0.0,1863.0,10768.0,35348.0,11892.0,7696.0,0.0,752.0,4348.0,0.0,2236.0,0.0,1707.0,2197.0,4520.0,9615.0,5967.0,2849.0,800.0 house026.xml,57.845,57.845,24.948,24.948,32.897,0.0,0.0,0.0,0.0,0.0,0.0,0.047,0.0,0.0,0.0,0.0,0.0,0.0,0.0,6.53,0.252,0.548,0.299,0.0,0.0,0.0,2.07,0.0,0.0,0.447,0.338,2.514,1.529,0.934,2.116,7.325,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,18.764,0.0,14.133,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,14.39,0.0,0.0,8.599,2.08,0.0,0.0,0.0,0.0,1544.5,1474.7,1544.5,17.654,0.0,0.0,1.767,6.851,0.232,0.0,0.197,4.392,-2.928,0.0,0.0,7.072,0.0,-0.056,2.495,0.0,3.132,0.0,0.0,-5.785,-3.086,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,1298.2,1286.6,8604.1,3032.2,0.0,84000.0,0.0,0.0,24.62,91.58,22013.0,0.0,3869.0,0.0,128.0,5462.0,0.0,5703.0,0.0,1459.0,5391.0,16135.0,0.0,5497.0,0.0,78.0,1775.0,0.0,1973.0,0.0,2302.0,1191.0,3320.0,2344.0,0.0,1544.0,800.0 house027.xml,74.259,74.259,31.076,31.076,43.183,0.0,0.0,0.0,0.0,0.0,0.0,0.485,0.0,0.0,7.385,0.885,0.0,0.0,0.0,5.944,0.218,0.485,0.927,0.0,0.0,0.0,1.632,0.0,0.0,0.447,0.338,2.514,0.105,0.0,2.116,7.595,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,22.188,0.0,17.925,0.0,3.07,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,20.9,0.0,21.594,8.556,5.272,0.0,0.0,0.0,0.0,1607.5,3801.4,3801.4,24.471,23.121,0.719,1.781,7.929,0.453,0.0,0.594,4.98,-4.015,0.0,0.0,0.319,3.213,-0.176,1.463,0.0,10.47,0.0,2.235,-6.296,-2.854,0.511,1.189,0.91,0.07,0.0,-0.098,0.289,5.396,0.0,0.0,0.154,3.938,-0.176,-0.259,-1.464,-3.2,0.0,2.444,8.654,3.09,1610.8,1575.3,10579.6,3728.4,0.0,75000.0,36000.0,0.0,24.62,91.58,37233.0,7641.0,4494.0,0.0,375.0,6506.0,550.0,183.0,8238.0,1516.0,7731.0,19088.0,3708.0,4018.0,0.0,228.0,2884.0,270.0,2.0,0.0,2392.0,2267.0,3320.0,5496.0,1758.0,2939.0,800.0 -house028.xml,68.554,68.554,29.518,29.518,39.036,0.0,0.0,0.0,0.0,0.0,0.0,0.318,0.0,0.0,7.193,1.296,0.0,0.0,0.0,6.134,0.226,0.503,0.618,0.0,0.0,0.0,2.008,0.0,0.0,0.528,0.39,0.229,0.114,0.0,2.351,7.61,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,14.53,0.0,18.119,3.047,3.34,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,13.687,0.0,22.855,10.217,3.627,0.0,0.0,0.0,0.0,1545.2,3715.1,3715.1,20.61,23.382,0.766,1.652,7.151,0.355,0.0,0.439,4.949,-3.806,0.0,0.0,0.244,2.464,-0.058,4.054,0.0,4.47,0.0,1.743,-7.973,-2.893,0.619,1.255,-0.384,0.112,0.0,0.068,0.158,6.209,0.0,0.0,0.068,1.941,-0.058,-1.019,-2.007,-1.584,0.0,3.014,11.151,3.241,1857.6,1860.1,12951.6,4219.3,0.0,75000.0,36000.0,0.0,24.62,91.58,31143.0,8672.0,4365.0,0.0,272.0,5108.0,616.0,129.0,3569.0,1488.0,6925.0,19430.0,3976.0,5658.0,0.0,109.0,1852.0,374.0,2.0,0.0,2348.0,1562.0,3550.0,5049.0,2024.0,2025.0,1000.0 -house029.xml,78.452,78.452,29.936,29.936,48.516,0.0,0.0,0.0,0.0,0.0,0.0,0.745,0.0,0.0,6.195,0.83,0.0,0.0,0.0,6.539,0.275,0.569,0.76,0.0,0.0,0.0,1.844,0.0,0.0,0.447,0.338,2.514,0.105,0.0,2.116,6.66,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,32.86,0.0,12.586,0.0,3.07,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,32.604,0.0,13.186,9.606,0.0,0.0,0.0,0.0,0.0,1666.8,3302.9,3302.9,28.622,14.297,0.0,3.358,14.585,0.392,0.0,0.295,6.276,-6.012,0.0,0.0,6.794,0.0,-0.09,7.301,0.0,7.302,0.0,3.287,-7.34,-3.695,0.0,1.163,-0.577,0.014,0.0,0.072,0.538,5.271,0.0,0.0,-0.44,0.0,-0.085,-0.752,-1.793,-1.465,0.0,1.412,7.023,2.844,1610.8,1575.4,11033.0,3888.2,0.0,77000.0,36000.0,0.0,17.24,91.22,30138.0,3386.0,4924.0,0.0,120.0,7666.0,0.0,2973.0,0.0,2105.0,8965.0,14814.0,-524.0,4842.0,0.0,-11.0,1788.0,0.0,914.0,0.0,2842.0,1642.0,3320.0,3901.0,903.0,2197.0,800.0 -house030.xml,59.571,59.571,17.179,17.179,0.0,0.0,42.392,0.0,0.0,0.0,0.0,0.058,0.0,0.0,0.0,0.0,0.0,0.0,0.0,5.321,0.272,0.497,0.57,0.0,0.0,0.0,1.815,0.0,0.0,0.366,0.286,0.168,0.096,0.701,1.88,5.148,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,24.054,0.0,13.3,2.238,2.8,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,18.157,0.0,0.0,7.708,2.222,0.0,0.0,0.0,0.0,1161.3,1088.5,1161.3,16.168,0.0,0.0,1.67,10.147,0.485,1.095,1.038,5.176,-3.336,0.0,0.0,0.0,3.4,-0.045,2.725,0.0,5.692,0.0,0.0,-7.087,-2.945,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,1064.7,993.3,6760.8,2579.8,0.0,87000.0,0.0,0.0,17.24,91.22,20273.0,0.0,3366.0,0.0,449.0,7834.0,0.0,0.0,3900.0,1036.0,3688.0,9762.0,0.0,2595.0,0.0,183.0,1663.0,0.0,0.0,0.0,1399.0,832.0,3090.0,1714.0,0.0,1114.0,600.0 +house028.xml,68.554,68.554,29.518,29.518,39.036,0.0,0.0,0.0,0.0,0.0,0.0,0.318,0.0,0.0,7.193,1.296,0.0,0.0,0.0,6.134,0.226,0.503,0.618,0.0,0.0,0.0,2.008,0.0,0.0,0.528,0.39,0.229,0.114,0.0,2.351,7.61,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,14.53,0.0,18.119,3.047,3.34,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,13.688,0.0,22.855,10.217,3.627,0.0,0.0,0.0,0.0,1545.2,3715.1,3715.1,20.61,23.382,0.766,1.652,7.151,0.355,0.0,0.439,4.949,-3.806,0.0,0.0,0.244,2.464,-0.058,4.054,0.0,4.47,0.0,1.743,-7.973,-2.893,0.619,1.255,-0.384,0.112,0.0,0.068,0.158,6.209,0.0,0.0,0.068,1.941,-0.058,-1.019,-2.007,-1.584,0.0,3.014,11.151,3.241,1857.6,1860.1,12951.6,4219.3,0.0,75000.0,36000.0,0.0,24.62,91.58,31143.0,8672.0,4365.0,0.0,272.0,5108.0,616.0,129.0,3569.0,1488.0,6925.0,19430.0,3976.0,5658.0,0.0,109.0,1852.0,374.0,2.0,0.0,2348.0,1562.0,3550.0,5049.0,2024.0,2025.0,1000.0 +house029.xml,78.452,78.452,29.936,29.936,48.516,0.0,0.0,0.0,0.0,0.0,0.0,0.745,0.0,0.0,6.195,0.83,0.0,0.0,0.0,6.539,0.275,0.569,0.76,0.0,0.0,0.0,1.844,0.0,0.0,0.447,0.338,2.514,0.105,0.0,2.116,6.66,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,32.86,0.0,12.586,0.0,3.07,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,32.604,0.0,13.186,9.606,0.0,0.0,0.0,0.0,0.0,1666.8,3302.9,3302.9,28.622,14.294,0.0,3.358,14.585,0.392,0.0,0.295,6.276,-6.012,0.0,0.0,6.794,0.0,-0.09,7.301,0.0,7.302,0.0,3.287,-7.34,-3.695,0.0,1.163,-0.577,0.014,0.0,0.072,0.538,5.271,0.0,0.0,-0.44,0.0,-0.085,-0.752,-1.793,-1.465,0.0,1.412,7.023,2.844,1610.8,1575.4,11033.0,3888.2,0.0,77000.0,36000.0,0.0,17.24,91.22,30138.0,3386.0,4924.0,0.0,120.0,7666.0,0.0,2973.0,0.0,2105.0,8965.0,14814.0,-524.0,4842.0,0.0,-11.0,1788.0,0.0,914.0,0.0,2842.0,1642.0,3320.0,3901.0,903.0,2197.0,800.0 +house030.xml,59.571,59.571,17.179,17.179,0.0,0.0,42.392,0.0,0.0,0.0,0.0,0.058,0.0,0.0,0.0,0.0,0.0,0.0,0.0,5.321,0.272,0.497,0.57,0.0,0.0,0.0,1.815,0.0,0.0,0.366,0.286,0.168,0.096,0.701,1.88,5.148,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,24.054,0.0,13.3,2.238,2.8,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,18.157,0.0,0.0,7.708,2.222,0.0,0.0,0.0,0.0,1161.3,1088.5,1161.3,16.168,0.0,0.0,1.67,10.147,0.485,1.095,1.038,5.176,-3.336,0.0,0.0,0.0,3.4,-0.045,2.725,0.0,5.692,0.0,0.0,-7.087,-2.945,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,1064.8,993.3,6761.0,2579.9,0.0,87000.0,0.0,0.0,17.24,91.22,20273.0,0.0,3366.0,0.0,449.0,7834.0,0.0,0.0,3900.0,1036.0,3688.0,9762.0,0.0,2595.0,0.0,183.0,1663.0,0.0,0.0,0.0,1399.0,832.0,3090.0,1714.0,0.0,1114.0,600.0 house031.xml,235.571,235.571,50.167,50.167,185.404,0.0,0.0,0.0,0.0,0.0,0.0,3.537,0.0,0.0,12.804,3.242,0.0,0.0,0.0,10.355,0.246,0.759,0.0,0.0,0.0,0.0,1.486,0.0,0.0,0.769,0.544,0.32,0.141,0.0,3.053,12.911,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,147.924,0.0,29.081,4.254,4.145,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,121.743,0.0,39.485,17.919,5.236,0.0,0.0,50.0,113.0,3195.8,7728.0,7848.9,125.757,49.799,0.0,14.436,41.981,1.048,6.618,1.392,20.047,-16.789,0.0,0.0,1.977,6.044,-0.86,56.94,0.001,0.653,0.0,9.881,-15.327,-6.477,0.0,2.267,5.191,0.176,2.824,0.116,0.498,16.921,0.0,0.0,0.227,-3.598,-0.827,-1.831,-0.833,-0.009,0.0,3.046,10.994,3.878,2593.1,2708.5,18308.0,4902.1,0.0,200000.0,96000.0,0.0,16.16,89.24,83120.0,13668.0,10261.0,0.0,650.0,23580.0,0.0,643.0,1726.0,7333.0,25259.0,43562.0,9684.0,13165.0,0.0,305.0,7760.0,0.0,-124.0,0.0,5345.0,3418.0,4010.0,8581.0,1662.0,5518.0,1400.0 house032.xml,102.299,102.299,15.55,15.55,86.749,0.0,0.0,0.0,0.0,0.0,0.0,1.528,0.0,0.0,0.0,0.0,0.0,0.0,0.0,5.091,0.0,0.518,0.0,0.0,0.0,0.0,1.583,0.0,0.0,0.359,0.282,0.166,0.095,0.0,1.859,4.071,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,65.52,0.0,16.252,2.201,2.776,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,50.391,0.0,0.0,7.996,4.946,0.0,0.0,154.0,0.0,1429.9,901.6,1429.9,50.645,0.0,0.0,10.388,8.743,1.918,20.355,1.409,8.345,-9.322,0.0,0.0,0.0,4.513,0.015,14.965,0.0,0.623,0.0,0.0,-8.206,-3.285,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,1341.8,1265.0,7310.3,2807.9,0.0,75000.0,0.0,0.0,16.16,89.24,36329.0,0.0,5132.0,0.0,690.0,16560.0,0.0,0.0,1507.0,5647.0,6794.0,17271.0,0.0,6289.0,0.0,324.0,2076.0,0.0,0.0,0.0,4115.0,917.0,3550.0,2481.0,0.0,1481.0,1000.0 house033.xml,107.731,107.731,14.756,14.756,0.0,92.975,0.0,0.0,0.0,0.0,0.0,0.317,0.0,0.0,0.0,0.0,0.0,0.0,0.0,4.885,0.0,0.529,0.0,0.0,0.0,0.0,1.353,0.0,0.0,0.0,0.194,1.443,1.159,0.0,1.461,3.416,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,85.294,0.0,7.68,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,64.29,0.0,0.0,3.531,0.0,0.0,0.0,0.0,0.0,1044.7,861.4,1044.7,48.451,0.0,0.0,19.12,14.557,0.0,0.0,1.0,11.111,-7.528,0.0,0.0,14.642,0.0,-0.368,18.592,0.0,0.791,0.0,0.0,-4.617,-3.316,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,924.7,0.0,3905.6,1188.1,0.0,109000.0,0.0,0.0,16.16,89.24,32325.0,0.0,5273.0,0.0,362.0,6028.0,0.0,4559.0,0.0,8461.0,7643.0,19016.0,0.0,4578.0,0.0,170.0,2314.0,0.0,1206.0,0.0,6166.0,1032.0,3550.0,2666.0,0.0,1666.0,1000.0 @@ -129,12 +130,12 @@ house037.xml,89.347,89.347,21.69,21.69,0.0,67.658,0.0,0.0,0.0,0.0,0.0,0.185,0.0, house038.xml,126.274,126.274,50.686,50.686,75.588,0.0,0.0,0.0,0.0,0.0,0.0,1.109,0.0,0.0,13.498,2.497,0.0,0.0,0.0,6.904,0.315,0.625,0.0,0.0,0.0,0.0,1.429,0.0,0.0,0.632,0.457,3.396,1.833,0.0,2.655,6.092,0.0,0.0,0.0,9.242,0.0,0.0,0.0,0.0,0.0,51.568,0.0,24.02,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,41.305,0.0,30.435,14.704,4.602,0.0,0.0,0.0,215.0,2354.5,5805.1,5805.1,48.416,27.559,0.0,3.648,14.874,0.65,4.429,0.81,12.438,-10.449,0.0,0.0,1.856,2.334,-0.09,22.508,0.002,0.594,0.0,0.0,-8.966,-3.828,0.0,0.85,2.636,0.142,2.236,0.02,0.963,12.735,0.0,0.0,0.337,-0.579,-0.079,-0.53,-0.333,0.006,0.0,0.0,8.232,3.077,2176.0,2227.4,14642.1,4351.2,0.0,71000.0,36000.0,0.0,16.16,89.24,30970.0,0.0,6993.0,0.0,362.0,9766.0,0.0,640.0,734.0,1706.0,10769.0,18185.0,0.0,9122.0,0.0,170.0,2306.0,0.0,-123.0,0.0,1243.0,1457.0,4010.0,3753.0,0.0,2353.0,1400.0 house039.xml,101.512,101.512,23.992,23.992,77.52,0.0,0.0,0.0,0.0,0.0,0.0,0.149,0.0,0.0,0.0,0.0,5.181,0.0,0.0,4.408,0.239,0.418,0.0,0.0,0.0,0.0,1.674,0.0,0.0,0.632,0.457,3.396,0.126,0.0,2.655,4.658,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,73.832,0.0,0.0,0.0,3.688,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,47.006,0.0,0.0,14.261,1.139,0.0,0.0,0.0,0.0,1705.9,1586.2,1705.9,50.362,0.0,0.0,14.176,5.359,0.0,0.0,2.503,16.085,-13.551,0.0,0.0,13.942,0.0,-0.055,13.236,0.0,0.554,0.0,0.0,-2.832,-2.848,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,2176.0,2227.4,17537.6,5211.7,0.0,87000.0,0.0,0.0,16.16,89.24,41752.0,0.0,11110.0,0.0,1456.0,3312.0,0.0,6185.0,0.0,8806.0,10883.0,22993.0,0.0,9886.0,0.0,683.0,526.0,0.0,690.0,0.0,6418.0,1470.0,3320.0,3173.0,0.0,2373.0,800.0 house040.xml,102.419,102.419,23.514,23.514,78.906,0.0,0.0,0.0,0.0,0.0,0.0,1.322,0.0,0.0,0.0,0.0,0.0,0.0,0.0,7.369,0.0,0.652,0.0,0.0,0.0,0.0,1.574,0.0,0.0,0.359,0.282,2.094,1.384,0.0,1.859,6.621,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,61.533,0.0,17.373,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,57.969,0.0,0.0,7.996,5.526,0.0,0.0,0.0,0.0,1818.3,1304.9,1818.3,62.433,0.0,11.258,5.613,22.268,0.0,4.282,2.093,12.873,-12.521,0.0,0.0,2.031,3.377,-0.101,19.744,0.0,0.611,0.0,0.0,-9.244,-4.751,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,1341.8,1265.0,7310.3,2807.9,0.0,75000.0,0.0,0.0,16.16,89.24,44724.0,0.0,7249.0,0.0,1028.0,13761.0,5873.0,795.0,1359.0,3065.0,11594.0,23971.0,0.0,8227.0,0.0,482.0,4483.0,3446.0,210.0,0.0,2234.0,1569.0,3320.0,3333.0,0.0,2533.0,800.0 -house041.xml,260.497,260.497,46.803,46.803,213.694,0.0,0.0,0.0,0.0,0.0,0.0,4.203,0.0,0.0,2.469,0.228,0.0,0.0,0.0,13.935,0.315,1.031,0.05,0.0,0.0,0.0,2.175,0.0,0.0,0.528,0.39,2.899,1.662,0.473,2.351,14.094,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,187.138,0.0,26.556,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,176.334,0.0,4.305,15.626,5.047,0.0,0.0,113.0,0.0,3254.0,5159.0,5159.0,77.829,24.679,0.0,11.243,45.009,3.515,35.002,3.139,38.839,-20.775,0.0,0.0,4.603,17.349,-0.612,64.092,0.0,2.763,0.0,0.0,-18.492,-10.888,0.0,0.139,-2.016,-0.113,1.736,-0.211,-2.727,9.453,0.0,0.0,-0.342,-5.175,-0.61,-3.308,-1.927,-0.247,0.0,0.0,6.717,3.047,1857.6,1860.1,14896.4,4852.9,0.0,75000.0,30000.0,0.0,-13.72,81.14,109895.0,0.0,18666.0,0.0,1290.0,43329.0,0.0,1653.0,8641.0,5077.0,31239.0,25390.0,0.0,15296.0,0.0,-20.0,2646.0,0.0,-615.0,0.0,3708.0,825.0,3550.0,2263.0,0.0,1263.0,1000.0 +house041.xml,260.497,260.497,46.803,46.803,213.693,0.0,0.0,0.0,0.0,0.0,0.0,4.203,0.0,0.0,2.469,0.228,0.0,0.0,0.0,13.935,0.315,1.031,0.05,0.0,0.0,0.0,2.175,0.0,0.0,0.528,0.39,2.899,1.662,0.473,2.351,14.094,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,187.138,0.0,26.556,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,176.334,0.0,4.305,15.626,5.047,0.0,0.0,113.0,0.0,3254.0,5159.0,5159.0,77.829,24.679,0.0,11.243,45.009,3.515,35.002,3.139,38.839,-20.775,0.0,0.0,4.603,17.349,-0.612,64.092,0.0,2.763,0.0,0.0,-18.492,-10.888,0.0,0.139,-2.016,-0.113,1.736,-0.211,-2.727,9.453,0.0,0.0,-0.342,-5.175,-0.61,-3.308,-1.927,-0.247,0.0,0.0,6.717,3.047,1857.6,1860.1,14896.4,4852.9,0.0,75000.0,30000.0,0.0,-13.72,81.14,109895.0,0.0,18666.0,0.0,1290.0,43329.0,0.0,1653.0,8641.0,5077.0,31239.0,25390.0,0.0,15296.0,0.0,-20.0,2646.0,0.0,-615.0,0.0,3708.0,825.0,3550.0,2263.0,0.0,1263.0,1000.0 house042.xml,232.637,232.637,39.795,39.795,192.842,0.0,0.0,0.0,0.0,0.0,0.0,3.946,0.0,0.0,1.717,0.06,0.0,0.0,0.0,9.533,0.213,0.678,0.093,0.0,0.0,0.0,2.167,0.0,0.0,0.528,0.39,2.899,1.662,0.0,2.351,13.557,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,168.404,0.0,24.438,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,165.58,0.0,2.527,15.626,3.233,0.0,0.0,0.0,0.0,2711.0,3497.4,3497.4,88.501,19.177,0.0,9.163,39.814,4.009,43.685,2.648,34.199,-19.431,0.0,0.0,2.447,14.535,-0.346,56.283,0.0,1.748,0.0,0.0,-17.458,-7.569,0.0,0.226,-1.385,-0.052,2.932,-0.142,-2.897,5.785,0.0,0.0,-0.259,-4.859,-0.342,-2.691,-1.169,-0.137,0.0,0.0,5.603,1.965,1857.6,1860.1,14896.3,4852.9,0.0,90000.0,24000.0,0.0,-13.72,81.14,96883.0,0.0,17465.0,0.0,995.0,42258.0,0.0,927.0,3490.0,4248.0,27501.0,15574.0,0.0,5937.0,0.0,110.0,2136.0,0.0,13.0,0.0,3102.0,726.0,3550.0,2111.0,0.0,1111.0,1000.0 house043.xml,159.524,159.524,29.691,29.691,129.832,0.0,0.0,0.0,0.0,0.0,0.0,2.496,0.0,0.0,1.877,0.098,0.0,0.0,0.0,6.558,0.213,0.514,0.093,0.0,0.0,0.0,2.124,0.0,0.0,0.447,0.338,2.514,1.529,0.0,2.116,8.775,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,109.933,0.0,19.899,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,104.711,0.0,2.569,13.079,2.212,0.0,0.0,0.0,0.0,1956.4,3029.6,3029.6,54.812,13.675,0.0,3.162,23.178,2.292,33.736,5.573,22.928,-10.012,0.0,0.0,0.549,9.918,-0.317,28.975,0.0,1.575,0.0,0.0,-13.074,-5.127,0.0,0.046,-0.755,-0.085,1.782,-0.334,-1.953,4.655,0.0,0.0,-0.067,-3.531,-0.317,-1.511,-1.04,-0.139,0.0,0.0,4.467,1.431,1610.8,1575.4,12168.1,4288.2,0.0,90000.0,30000.0,0.0,-13.72,81.14,65558.0,0.0,11581.0,0.0,2240.0,31185.0,0.0,202.0,2598.0,1519.0,16233.0,14430.0,0.0,7218.0,0.0,224.0,2128.0,0.0,3.0,0.0,1109.0,429.0,3320.0,1456.0,0.0,656.0,800.0 -house044.xml,227.742,227.742,43.242,43.242,184.5,0.0,0.0,0.0,0.0,0.0,0.0,4.742,0.0,0.0,2.041,0.174,0.0,0.0,0.0,12.947,0.315,0.974,0.037,0.0,0.0,0.0,2.097,0.0,0.0,0.447,0.338,2.514,1.529,0.0,2.116,12.97,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,161.931,0.0,22.569,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,150.451,0.0,3.393,13.079,4.458,0.0,0.0,0.0,0.0,3132.0,4107.8,4107.8,81.142,19.331,4.367,6.894,36.482,9.228,19.244,2.756,17.943,-11.679,0.0,0.0,12.908,15.067,-0.509,61.977,0.0,1.434,0.0,0.0,-16.586,-10.177,0.253,0.464,-1.317,-0.098,1.22,-0.114,-0.727,5.622,0.0,0.0,-1.11,-4.787,-0.506,-2.598,-0.958,-0.097,0.0,0.0,5.436,2.77,1610.8,1575.4,12168.1,4288.2,0.0,110000.0,36000.0,0.0,-13.72,81.14,81137.0,0.0,8422.0,0.0,1211.0,29262.0,1911.0,5137.0,2346.0,3592.0,29257.0,20316.0,0.0,10363.0,0.0,114.0,2778.0,368.0,-23.0,0.0,2623.0,772.0,3320.0,1982.0,0.0,1182.0,800.0 +house044.xml,227.742,227.742,43.242,43.242,184.5,0.0,0.0,0.0,0.0,0.0,0.0,4.742,0.0,0.0,2.041,0.174,0.0,0.0,0.0,12.947,0.315,0.974,0.037,0.0,0.0,0.0,2.097,0.0,0.0,0.447,0.338,2.514,1.529,0.0,2.116,12.97,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,161.931,0.0,22.569,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,150.45,0.0,3.393,13.079,4.458,0.0,0.0,0.0,0.0,3132.0,4107.8,4107.8,81.142,19.331,4.367,6.894,36.482,9.228,19.244,2.756,17.943,-11.679,0.0,0.0,12.908,15.067,-0.509,61.977,0.0,1.434,0.0,0.0,-16.586,-10.177,0.253,0.464,-1.317,-0.098,1.22,-0.114,-0.727,5.622,0.0,0.0,-1.11,-4.787,-0.506,-2.598,-0.958,-0.097,0.0,0.0,5.436,2.77,1610.8,1575.4,12168.1,4288.2,0.0,110000.0,36000.0,0.0,-13.72,81.14,81137.0,0.0,8422.0,0.0,1211.0,29262.0,1911.0,5137.0,2346.0,3592.0,29257.0,20316.0,0.0,10363.0,0.0,114.0,2778.0,368.0,-23.0,0.0,2623.0,772.0,3320.0,1982.0,0.0,1182.0,800.0 house045.xml,152.536,152.536,34.866,34.866,117.67,0.0,0.0,0.0,0.0,0.0,0.0,2.788,0.0,0.0,2.269,0.261,0.0,0.0,0.0,9.06,0.315,0.75,1.793,0.0,0.0,0.0,2.141,0.0,0.0,0.447,0.338,2.514,1.529,0.0,2.116,8.545,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,95.214,0.0,22.456,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,88.461,0.0,3.641,13.079,4.371,0.0,0.0,0.0,0.0,2334.1,3370.1,3370.1,47.084,13.395,3.573,3.08,15.119,2.29,32.746,1.135,17.716,-12.23,0.968,-0.414,0.086,12.636,-0.264,20.648,0.0,10.929,0.0,0.0,-13.33,-6.949,0.0,0.017,-1.029,-0.116,1.069,-0.082,-1.244,6.238,-0.061,0.4,-0.012,-3.972,-0.264,-1.122,-1.877,-1.218,0.0,0.0,4.895,2.111,1610.8,1575.4,12168.1,4288.2,0.0,70000.0,30000.0,0.0,-13.72,81.14,56820.0,0.0,8558.0,455.0,398.0,28556.0,1494.0,31.0,2749.0,1367.0,13211.0,12890.0,0.0,7147.0,840.0,21.0,-41.0,197.0,0.0,0.0,999.0,407.0,3320.0,1423.0,0.0,623.0,800.0 -house046.xml,25.04,25.04,25.04,25.04,0.0,0.0,0.0,0.0,0.0,0.0,5.452,0.491,0.322,0.011,3.718,0.994,4.922,0.0,0.0,1.029,0.0,0.082,0.0,0.0,0.0,0.0,1.667,0.0,0.0,0.256,0.005,0.482,1.262,0.0,1.645,2.701,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,14.344,0.334,12.736,4.303,0.617,0.0,0.0,0.0,0.0,3862.9,2471.5,3862.9,16.226,13.508,0.0,2.514,3.83,0.0,0.0,0.327,2.233,-1.66,0.0,0.0,-0.157,0.0,-0.304,7.98,0.0,0.378,0.0,2.958,-3.234,-0.476,0.0,1.282,2.546,0.0,0.0,0.026,0.787,2.44,0.0,0.0,-0.156,0.0,-0.303,-0.429,-0.226,0.02,0.0,1.781,4.463,0.553,596.8,442.4,5543.5,2208.6,0.0,18000.0,18000.0,17065.0,24.62,91.58,19009.0,4026.0,1800.0,0.0,182.0,2847.0,0.0,0.0,0.0,1604.0,8550.0,15003.0,3888.0,3183.0,0.0,110.0,1427.0,0.0,0.0,0.0,1823.0,1711.0,2860.0,3101.0,483.0,2218.0,400.0 +house046.xml,25.573,25.573,25.573,25.573,0.0,0.0,0.0,0.0,0.0,0.0,5.736,0.554,0.426,0.017,3.827,0.963,4.922,0.0,0.0,1.029,0.0,0.082,0.0,0.0,0.0,0.0,1.666,0.0,0.0,0.256,0.005,0.482,1.262,0.0,1.645,2.701,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,15.344,0.443,12.834,4.303,0.618,0.0,0.0,0.0,1.0,4118.0,2456.1,4118.0,17.093,13.36,0.0,2.519,3.836,0.0,0.0,0.329,2.242,-1.678,0.0,0.0,-0.158,0.0,-0.308,8.911,0.0,0.38,0.0,3.069,-3.269,-0.481,0.0,1.294,2.564,0.0,0.0,0.028,0.803,2.422,0.0,0.0,-0.157,0.0,-0.306,-0.42,-0.218,0.023,0.0,1.871,4.427,0.548,596.8,442.4,5543.5,2208.6,0.0,18000.0,18000.0,17065.0,24.62,91.58,19947.0,4038.0,1800.0,0.0,182.0,2847.0,0.0,0.0,0.0,1604.0,9476.0,15225.0,3925.0,3183.0,0.0,110.0,1427.0,0.0,0.0,0.0,1823.0,1896.0,2860.0,3341.0,483.0,2458.0,400.0 house047.xml,21.532,21.532,14.849,14.849,6.683,0.0,0.0,0.0,0.0,0.0,0.0,0.148,0.0,0.0,1.073,0.001,4.485,0.0,0.0,0.92,0.0,0.463,0.182,0.0,0.0,0.0,1.335,0.0,0.0,0.256,0.111,0.738,1.262,0.0,1.645,2.229,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,6.683,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,6.496,0.0,1.506,4.202,0.0,0.0,0.0,0.0,0.0,872.9,989.4,989.4,4.818,2.615,0.0,-0.001,0.771,0.126,0.0,0.0,1.725,-0.562,0.0,0.0,0.0,1.363,-0.013,1.575,0.0,4.983,0.0,0.219,-3.202,-0.511,0.0,-0.001,0.108,0.034,0.0,0.0,-0.043,0.795,0.0,0.0,0.0,-1.085,-0.013,-0.216,-0.368,-1.32,0.0,-0.0,3.204,0.41,251.7,442.4,5772.6,1524.2,0.0,20000.0,18000.0,0.0,19.22,86.72,7413.0,1053.0,1216.0,0.0,0.0,630.0,0.0,0.0,728.0,0.0,3785.0,4112.0,0.0,478.0,0.0,0.0,177.0,0.0,0.0,0.0,0.0,597.0,2860.0,1599.0,0.0,1199.0,400.0 house048.xml,92.04,92.04,39.344,39.344,52.697,0.0,0.0,0.0,0.0,0.0,0.0,0.354,0.0,0.0,12.626,3.699,0.0,0.0,0.0,3.689,0.085,0.499,3.033,0.0,0.0,0.0,2.321,0.0,0.0,0.474,1.108,0.67,0.114,0.0,2.351,8.322,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,36.764,0.0,12.592,0.0,3.34,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,29.758,0.0,51.767,7.249,2.658,0.0,0.0,0.0,0.0,1514.9,5614.8,5614.8,42.48,34.051,1.023,2.627,11.996,0.0,0.0,0.804,4.608,-2.543,0.0,0.0,0.056,1.968,-0.572,6.806,0.0,4.214,0.0,6.499,-6.341,-1.49,1.322,1.001,9.312,0.0,0.0,0.567,3.689,4.25,0.0,0.0,0.075,10.085,-0.56,0.536,-0.622,1.976,0.0,7.0,11.153,2.199,130.3,818.0,11617.7,3495.1,0.0,63000.0,46500.0,0.0,25.88,98.42,50683.0,12323.0,4499.0,0.0,490.0,9499.0,828.0,29.0,11275.0,2249.0,9492.0,29599.0,8414.0,4429.0,0.0,298.0,6972.0,547.0,9.0,0.0,1959.0,3421.0,3550.0,4490.0,1126.0,2365.0,1000.0 house049.xml,36.164,36.164,32.666,32.666,3.498,0.0,0.0,0.0,0.0,0.0,8.24,0.05,0.0,0.0,7.625,0.191,2.645,0.249,0.0,1.473,0.057,0.099,2.092,0.0,0.0,0.0,2.952,0.0,0.0,0.329,0.006,0.053,0.096,0.0,1.88,4.63,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.698,2.8,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,7.359,0.0,30.615,4.258,1.319,0.0,0.0,0.0,133.0,4683.0,2827.5,4683.0,13.283,15.961,0.0,1.364,4.328,0.0,0.0,0.0,4.25,-5.816,0.0,0.0,0.0,1.213,-0.089,2.666,0.0,1.852,0.0,0.0,-2.005,-0.473,0.0,1.699,7.248,0.0,0.0,0.0,3.034,9.851,0.0,0.0,0.0,3.487,-0.088,-0.013,-2.938,0.719,0.0,0.0,7.157,1.0,728.6,567.6,7487.5,928.6,0.0,39000.0,16000.0,0.0,33.26,106.16,19111.0,0.0,5635.0,0.0,0.0,5038.0,0.0,0.0,2636.0,1357.0,4445.0,20689.0,0.0,6847.0,0.0,0.0,5786.0,0.0,0.0,0.0,2075.0,2891.0,3090.0,0.0,0.0,0.0,0.0 diff --git a/hpxml-measures/workflow/tests/base_results/results_workflow_simulations2_bills.csv b/hpxml-measures/workflow/tests/base_results/results_workflow_simulations2_bills.csv index 554f74b58..d74ceaddb 100644 --- a/hpxml-measures/workflow/tests/base_results/results_workflow_simulations2_bills.csv +++ b/hpxml-measures/workflow/tests/base_results/results_workflow_simulations2_bills.csv @@ -1,4 +1,5 @@ HPXML,Bills: Total (USD),Bills: Electricity: Fixed (USD),Bills: Electricity: Energy (USD),Bills: Electricity: PV Credit (USD),Bills: Electricity: Total (USD),Bills: Natural Gas: Fixed (USD),Bills: Natural Gas: Energy (USD),Bills: Natural Gas: Total (USD),Bills: Fuel Oil: Fixed (USD),Bills: Fuel Oil: Energy (USD),Bills: Fuel Oil: Total (USD),Bills: Propane: Fixed (USD),Bills: Propane: Energy (USD),Bills: Propane: Total (USD),Bills: Wood Cord: Fixed (USD),Bills: Wood Cord: Energy (USD),Bills: Wood Cord: Total (USD),Bills: Wood Pellets: Fixed (USD),Bills: Wood Pellets: Energy (USD),Bills: Wood Pellets: Total (USD),Bills: Coal: Fixed (USD),Bills: Coal: Energy (USD),Bills: Coal: Total (USD),Tiered: Total (USD),Tiered: Electricity: Fixed (USD),Tiered: Electricity: Energy (USD),Tiered: Electricity: PV Credit (USD),Tiered: Electricity: Total (USD),Tiered: Natural Gas: Fixed (USD),Tiered: Natural Gas: Energy (USD),Tiered: Natural Gas: Total (USD),Tiered: Fuel Oil: Fixed (USD),Tiered: Fuel Oil: Energy (USD),Tiered: Fuel Oil: Total (USD),Tiered: Propane: Fixed (USD),Tiered: Propane: Energy (USD),Tiered: Propane: Total (USD),Tiered: Wood Cord: Fixed (USD),Tiered: Wood Cord: Energy (USD),Tiered: Wood Cord: Total (USD),Tiered: Wood Pellets: Fixed (USD),Tiered: Wood Pellets: Energy (USD),Tiered: Wood Pellets: Total (USD),Tiered: Coal: Fixed (USD),Tiered: Coal: Energy (USD),Tiered: Coal: Total (USD),TOU: Total (USD),TOU: Electricity: Fixed (USD),TOU: Electricity: Energy (USD),TOU: Electricity: PV Credit (USD),TOU: Electricity: Total (USD),TOU: Natural Gas: Fixed (USD),TOU: Natural Gas: Energy (USD),TOU: Natural Gas: Total (USD),TOU: Fuel Oil: Fixed (USD),TOU: Fuel Oil: Energy (USD),TOU: Fuel Oil: Total (USD),TOU: Propane: Fixed (USD),TOU: Propane: Energy (USD),TOU: Propane: Total (USD),TOU: Wood Cord: Fixed (USD),TOU: Wood Cord: Energy (USD),TOU: Wood Cord: Total (USD),TOU: Wood Pellets: Fixed (USD),TOU: Wood Pellets: Energy (USD),TOU: Wood Pellets: Total (USD),TOU: Coal: Fixed (USD),TOU: Coal: Energy (USD),TOU: Coal: Total (USD),Tiered and TOU: Total (USD),Tiered and TOU: Electricity: Fixed (USD),Tiered and TOU: Electricity: Energy (USD),Tiered and TOU: Electricity: PV Credit (USD),Tiered and TOU: Electricity: Total (USD),Tiered and TOU: Natural Gas: Fixed (USD),Tiered and TOU: Natural Gas: Energy (USD),Tiered and TOU: Natural Gas: Total (USD),Tiered and TOU: Fuel Oil: Fixed (USD),Tiered and TOU: Fuel Oil: Energy (USD),Tiered and TOU: Fuel Oil: Total (USD),Tiered and TOU: Propane: Fixed (USD),Tiered and TOU: Propane: Energy (USD),Tiered and TOU: Propane: Total (USD),Tiered and TOU: Wood Cord: Fixed (USD),Tiered and TOU: Wood Cord: Energy (USD),Tiered and TOU: Wood Cord: Total (USD),Tiered and TOU: Wood Pellets: Fixed (USD),Tiered and TOU: Wood Pellets: Energy (USD),Tiered and TOU: Wood Pellets: Total (USD),Tiered and TOU: Coal: Fixed (USD),Tiered and TOU: Coal: Energy (USD),Tiered and TOU: Coal: Total (USD),Real-Time Pricing: Total (USD),Real-Time Pricing: Electricity: Fixed (USD),Real-Time Pricing: Electricity: Energy (USD),Real-Time Pricing: Electricity: PV Credit (USD),Real-Time Pricing: Electricity: Total (USD),Real-Time Pricing: Natural Gas: Fixed (USD),Real-Time Pricing: Natural Gas: Energy (USD),Real-Time Pricing: Natural Gas: Total (USD),Real-Time Pricing: Fuel Oil: Fixed (USD),Real-Time Pricing: Fuel Oil: Energy (USD),Real-Time Pricing: Fuel Oil: Total (USD),Real-Time Pricing: Propane: Fixed (USD),Real-Time Pricing: Propane: Energy (USD),Real-Time Pricing: Propane: Total (USD),Real-Time Pricing: Wood Cord: Fixed (USD),Real-Time Pricing: Wood Cord: Energy (USD),Real-Time Pricing: Wood Cord: Total (USD),Real-Time Pricing: Wood Pellets: Fixed (USD),Real-Time Pricing: Wood Pellets: Energy (USD),Real-Time Pricing: Wood Pellets: Total (USD),Real-Time Pricing: Coal: Fixed (USD),Real-Time Pricing: Coal: Energy (USD),Real-Time Pricing: Coal: Total (USD),Simple: Total (USD),Simple: Electricity: Fixed (USD),Simple: Electricity: Energy (USD),Simple: Electricity: PV Credit (USD),Simple: Electricity: Total (USD),Simple: Natural Gas: Fixed (USD),Simple: Natural Gas: Energy (USD),Simple: Natural Gas: Total (USD),Simple: Fuel Oil: Fixed (USD),Simple: Fuel Oil: Energy (USD),Simple: Fuel Oil: Total (USD),Simple: Propane: Fixed (USD),Simple: Propane: Energy (USD),Simple: Propane: Total (USD),Simple: Wood Cord: Fixed (USD),Simple: Wood Cord: Energy (USD),Simple: Wood Cord: Total (USD),Simple: Wood Pellets: Fixed (USD),Simple: Wood Pellets: Energy (USD),Simple: Wood Pellets: Total (USD),Simple: Coal: Fixed (USD),Simple: Coal: Energy (USD),Simple: Coal: Total (USD),Detailed: Total (USD),Detailed: Electricity: Fixed (USD),Detailed: Electricity: Energy (USD),Detailed: Electricity: PV Credit (USD),Detailed: Electricity: Total (USD),Detailed: Natural Gas: Fixed (USD),Detailed: Natural Gas: Energy (USD),Detailed: Natural Gas: Total (USD),Detailed: Fuel Oil: Fixed (USD),Detailed: Fuel Oil: Energy (USD),Detailed: Fuel Oil: Total (USD),Detailed: Propane: Fixed (USD),Detailed: Propane: Energy (USD),Detailed: Propane: Total (USD),Detailed: Wood Cord: Fixed (USD),Detailed: Wood Cord: Energy (USD),Detailed: Wood Cord: Total (USD),Detailed: Wood Pellets: Fixed (USD),Detailed: Wood Pellets: Energy (USD),Detailed: Wood Pellets: Total (USD),Detailed: Coal: Fixed (USD),Detailed: Coal: Energy (USD),Detailed: Coal: Total (USD),Net Metering w/ Wholesale Excess Rate: Total (USD),Net Metering w/ Wholesale Excess Rate: Electricity: Fixed (USD),Net Metering w/ Wholesale Excess Rate: Electricity: Energy (USD),Net Metering w/ Wholesale Excess Rate: Electricity: PV Credit (USD),Net Metering w/ Wholesale Excess Rate: Electricity: Total (USD),Net Metering w/ Wholesale Excess Rate: Natural Gas: Fixed (USD),Net Metering w/ Wholesale Excess Rate: Natural Gas: Energy (USD),Net Metering w/ Wholesale Excess Rate: Natural Gas: Total (USD),Net Metering w/ Wholesale Excess Rate: Fuel Oil: Fixed (USD),Net Metering w/ Wholesale Excess Rate: Fuel Oil: Energy (USD),Net Metering w/ Wholesale Excess Rate: Fuel Oil: Total (USD),Net Metering w/ Wholesale Excess Rate: Propane: Fixed (USD),Net Metering w/ Wholesale Excess Rate: Propane: Energy (USD),Net Metering w/ Wholesale Excess Rate: Propane: Total (USD),Net Metering w/ Wholesale Excess Rate: Wood Cord: Fixed (USD),Net Metering w/ Wholesale Excess Rate: Wood Cord: Energy (USD),Net Metering w/ Wholesale Excess Rate: Wood Cord: Total (USD),Net Metering w/ Wholesale Excess Rate: Wood Pellets: Fixed (USD),Net Metering w/ Wholesale Excess Rate: Wood Pellets: Energy (USD),Net Metering w/ Wholesale Excess Rate: Wood Pellets: Total (USD),Net Metering w/ Wholesale Excess Rate: Coal: Fixed (USD),Net Metering w/ Wholesale Excess Rate: Coal: Energy (USD),Net Metering w/ Wholesale Excess Rate: Coal: Total (USD),Net Metering w/ Retail Excess Rate: Total (USD),Net Metering w/ Retail Excess Rate: Electricity: Fixed (USD),Net Metering w/ Retail Excess Rate: Electricity: Energy (USD),Net Metering w/ Retail Excess Rate: Electricity: PV Credit (USD),Net Metering w/ Retail Excess Rate: Electricity: Total (USD),Net Metering w/ Retail Excess Rate: Natural Gas: Fixed (USD),Net Metering w/ Retail Excess Rate: Natural Gas: Energy (USD),Net Metering w/ Retail Excess Rate: Natural Gas: Total (USD),Net Metering w/ Retail Excess Rate: Fuel Oil: Fixed (USD),Net Metering w/ Retail Excess Rate: Fuel Oil: Energy (USD),Net Metering w/ Retail Excess Rate: Fuel Oil: Total (USD),Net Metering w/ Retail Excess Rate: Propane: Fixed (USD),Net Metering w/ Retail Excess Rate: Propane: Energy (USD),Net Metering w/ Retail Excess Rate: Propane: Total (USD),Net Metering w/ Retail Excess Rate: Wood Cord: Fixed (USD),Net Metering w/ Retail Excess Rate: Wood Cord: Energy (USD),Net Metering w/ Retail Excess Rate: Wood Cord: Total (USD),Net Metering w/ Retail Excess Rate: Wood Pellets: Fixed (USD),Net Metering w/ Retail Excess Rate: Wood Pellets: Energy (USD),Net Metering w/ Retail Excess Rate: Wood Pellets: Total (USD),Net Metering w/ Retail Excess Rate: Coal: Fixed (USD),Net Metering w/ Retail Excess Rate: Coal: Energy (USD),Net Metering w/ Retail Excess Rate: Coal: Total (USD),Feed-In Tariff: Total (USD),Feed-In Tariff: Electricity: Fixed (USD),Feed-In Tariff: Electricity: Energy (USD),Feed-In Tariff: Electricity: PV Credit (USD),Feed-In Tariff: Electricity: Total (USD),Feed-In Tariff: Natural Gas: Fixed (USD),Feed-In Tariff: Natural Gas: Energy (USD),Feed-In Tariff: Natural Gas: Total (USD),Feed-In Tariff: Fuel Oil: Fixed (USD),Feed-In Tariff: Fuel Oil: Energy (USD),Feed-In Tariff: Fuel Oil: Total (USD),Feed-In Tariff: Propane: Fixed (USD),Feed-In Tariff: Propane: Energy (USD),Feed-In Tariff: Propane: Total (USD),Feed-In Tariff: Wood Cord: Fixed (USD),Feed-In Tariff: Wood Cord: Energy (USD),Feed-In Tariff: Wood Cord: Total (USD),Feed-In Tariff: Wood Pellets: Fixed (USD),Feed-In Tariff: Wood Pellets: Energy (USD),Feed-In Tariff: Wood Pellets: Total (USD),Feed-In Tariff: Coal: Fixed (USD),Feed-In Tariff: Coal: Energy (USD),Feed-In Tariff: Coal: Total (USD) +base-lighting-ceiling-fans-label-energy-use.xml,1866.12,144.0,1328.07,0.0,1472.07,144.0,250.05,394.05,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 base-lighting-ceiling-fans.xml,1858.87,144.0,1320.81,0.0,1464.81,144.0,250.06,394.06,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 base-lighting-holiday.xml,1851.82,144.0,1313.55,0.0,1457.55,144.0,250.27,394.27,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 base-lighting-kwh-per-year.xml,1956.2,144.0,1438.19,0.0,1582.19,144.0,230.01,374.01,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 @@ -67,18 +68,18 @@ base-residents-1-misc-loads-large-uncommon2.xml,2514.72,144.0,1806.12,0.0,1950.1 base-residents-1.xml,1589.94,144.0,1034.43,0.0,1178.43,144.0,267.51,411.51,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 base-residents-5.xml,1327.14,144.0,1451.58,-743.14,852.44,144.0,330.7,474.7,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 base-schedules-detailed-all-10-mins.xml,1850.71,144.0,1313.75,0.0,1457.75,144.0,248.96,392.96,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 -base-schedules-detailed-mixed-timesteps-power-outage.xml,1374.81,144.0,1034.66,0.0,1178.66,144.0,52.15,196.15,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +base-schedules-detailed-mixed-timesteps-power-outage.xml,1375.05,144.0,1034.67,0.0,1178.67,144.0,52.38,196.38,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 base-schedules-detailed-mixed-timesteps.xml,1617.13,144.0,1242.5,0.0,1386.5,144.0,86.63,230.63,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 base-schedules-detailed-occupancy-stochastic-10-mins.xml,1842.11,144.0,1310.49,0.0,1454.49,144.0,243.62,387.62,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 -base-schedules-detailed-occupancy-stochastic-power-outage.xml,1537.72,144.0,1096.51,0.0,1240.51,144.0,153.21,297.21,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +base-schedules-detailed-occupancy-stochastic-power-outage.xml,1537.97,144.0,1096.51,0.0,1240.51,144.0,153.46,297.46,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 base-schedules-detailed-occupancy-stochastic-vacancy.xml,1691.46,144.0,1118.46,0.0,1262.46,144.0,285.0,429.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 base-schedules-detailed-occupancy-stochastic.xml,1840.3,144.0,1308.92,0.0,1452.92,144.0,243.38,387.38,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 base-schedules-detailed-setpoints-daily-schedules.xml,1814.29,144.0,1283.45,0.0,1427.45,144.0,242.84,386.84,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 base-schedules-detailed-setpoints-daily-setbacks.xml,1812.85,144.0,1289.17,0.0,1433.17,144.0,235.68,379.68,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 base-schedules-detailed-setpoints.xml,1609.98,144.0,1234.04,0.0,1378.04,144.0,87.94,231.94,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 -base-schedules-simple-power-outage.xml,1717.23,144.0,1186.88,0.0,1330.88,144.0,242.35,386.35,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 -base-schedules-simple-vacancy.xml,1704.8,144.0,1133.44,0.0,1277.44,144.0,283.36,427.36,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 -base-schedules-simple.xml,1846.27,144.0,1316.03,0.0,1460.03,144.0,242.24,386.24,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +base-schedules-simple-power-outage.xml,2218.35,144.0,1687.99,0.0,1831.99,144.0,242.36,386.36,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +base-schedules-simple-vacancy.xml,2146.16,144.0,1574.8,0.0,1718.8,144.0,283.36,427.36,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +base-schedules-simple.xml,2385.02,144.0,1854.78,0.0,1998.78,144.0,242.24,386.24,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 base-simcontrol-calendar-year-custom.xml,1843.03,144.0,1304.74,0.0,1448.74,144.0,250.29,394.29,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 base-simcontrol-daylight-saving-custom.xml,1844.6,144.0,1306.32,0.0,1450.32,144.0,250.28,394.28,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 base-simcontrol-daylight-saving-disabled.xml,1843.85,144.0,1305.68,0.0,1449.68,144.0,250.17,394.17,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 @@ -91,11 +92,11 @@ base-simcontrol-timestep-30-mins.xml,1850.4,144.0,1308.77,0.0,1452.77,144.0,253. base.xml,1844.59,144.0,1306.32,0.0,1450.32,144.0,250.27,394.27,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 house001.xml,2409.1,144.0,1701.52,0.0,1845.52,144.0,419.58,563.58,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 house002.xml,2057.43,144.0,1479.73,0.0,1623.73,144.0,289.7,433.7,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 -house003.xml,2050.65,144.0,1461.78,0.0,1605.78,144.0,300.87,444.87,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +house003.xml,2050.64,144.0,1461.77,0.0,1605.77,144.0,300.87,444.87,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 house004.xml,3684.62,144.0,2755.34,0.0,2899.34,144.0,641.28,785.28,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 -house005.xml,2673.04,144.0,1943.98,0.0,2087.98,144.0,441.06,585.06,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +house005.xml,2673.05,144.0,1943.99,0.0,2087.99,144.0,441.06,585.06,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 house006.xml,2279.57,144.0,1172.74,0.0,1316.74,144.0,818.83,962.83,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 -house007.xml,2339.98,144.0,1249.52,0.0,1393.52,144.0,802.46,946.46,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +house007.xml,2339.99,144.0,1249.52,0.0,1393.52,144.0,802.47,946.47,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 house008.xml,2832.99,144.0,1446.05,0.0,1590.05,144.0,1098.94,1242.94,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 house009.xml,2458.73,144.0,1255.56,0.0,1399.56,144.0,915.17,1059.17,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 house010.xml,2562.42,144.0,1385.53,0.0,1529.53,144.0,888.89,1032.89,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 @@ -118,7 +119,7 @@ house026.xml,1557.24,144.0,804.91,0.0,948.91,144.0,464.33,608.33,0.0,0.0,0.0,0.0 house027.xml,1900.13,144.0,1002.62,0.0,1146.62,144.0,609.51,753.51,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 house028.xml,1791.33,144.0,952.35,0.0,1096.35,144.0,550.98,694.98,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 house029.xml,2155.65,144.0,1171.6,0.0,1315.6,144.0,696.05,840.05,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 -house030.xml,2410.32,144.0,672.33,0.0,816.33,0.0,0.0,0.0,0.0,0.0,0.0,0.0,1593.99,1593.99,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +house030.xml,2410.33,144.0,672.33,0.0,816.33,0.0,0.0,0.0,0.0,0.0,0.0,0.0,1594.0,1594.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 house031.xml,4425.16,144.0,1831.36,0.0,1975.36,144.0,2305.8,2449.8,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 house032.xml,1934.53,144.0,567.67,0.0,711.67,144.0,1078.86,1222.86,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 house033.xml,4000.75,144.0,538.68,0.0,682.68,0.0,0.0,0.0,0.0,3318.07,3318.07,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 @@ -134,7 +135,7 @@ house042.xml,3222.65,144.0,1480.15,0.0,1624.15,144.0,1454.5,1598.5,0.0,0.0,0.0,0 house043.xml,2371.6,144.0,1104.35,0.0,1248.35,144.0,979.25,1123.25,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 house044.xml,3287.93,144.0,1608.35,0.0,1752.35,144.0,1391.58,1535.58,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 house045.xml,2472.35,144.0,1296.83,0.0,1440.83,144.0,887.52,1031.52,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 -house046.xml,951.86,144.0,807.86,0.0,951.86,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +house046.xml,969.05,144.0,825.05,0.0,969.05,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 house047.xml,1015.71,144.0,657.22,0.0,801.22,144.0,70.49,214.49,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 house048.xml,2274.06,144.0,1439.93,0.0,1583.93,144.0,546.13,690.13,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 house049.xml,1510.78,144.0,1199.64,0.0,1343.64,144.0,23.14,167.14,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 diff --git a/hpxml-measures/workflow/tests/test_other.rb b/hpxml-measures/workflow/tests/test_other.rb index b5dc44ea4..a85475555 100644 --- a/hpxml-measures/workflow/tests/test_other.rb +++ b/hpxml-measures/workflow/tests/test_other.rb @@ -114,9 +114,9 @@ def test_run_simulation_detailed_occupancy_schedules # Check stochastic.csv headers schedules = CSV.read(File.join(File.dirname(xml), 'run', 'stochastic.csv'), headers: true) if debug - assert(schedules.headers.include?(SchedulesFile::ColumnSleeping)) + assert(schedules.headers.include?(SchedulesFile::Columns[:Sleeping].name)) else - refute(schedules.headers.include?(SchedulesFile::ColumnSleeping)) + refute(schedules.headers.include?(SchedulesFile::Columns[:Sleeping].name)) end # Cleanup diff --git a/rulesets/resources/301ruleset.rb b/rulesets/resources/301ruleset.rb index fd1889237..cacdf1b39 100644 --- a/rulesets/resources/301ruleset.rb +++ b/rulesets/resources/301ruleset.rb @@ -2477,7 +2477,7 @@ def self.calc_rated_home_infiltration_ach50(orig_bldg) end if not min_nach.nil? - min_sla = Airflow.get_infiltration_SLA_from_ACH(min_nach, infil_height, @weather) + min_sla = Airflow.get_infiltration_SLA_from_ACH(min_nach, infil_height, 8.202, @weather) min_ach50 = Airflow.get_infiltration_ACH50_from_SLA(min_sla, 0.65, @cfa, infil_volume) if ach50 < min_ach50 ach50 = min_ach50 diff --git a/tasks.rb b/tasks.rb index 51c1e9a27..ce0828b86 100644 --- a/tasks.rb +++ b/tasks.rb @@ -2940,6 +2940,16 @@ def create_sample_hpxmls puts 'Reformatting real_homes HPXMLs...' Dir['workflow/real_homes/*.xml'].each do |hpxml_path| hpxml = HPXML.new(hpxml_path: hpxml_path) + hpxml.header.eri_calculation_version = 'latest' + hpxml.header.co2index_calculation_version = 'latest' + hpxml.header.iecc_eri_calculation_version = IECCConstants.AllVersions[-1] + if hpxml.buildings[0].building_construction.residential_facility_type == HPXML::ResidentialTypeApartment + hpxml.header.zerh_calculation_version = ZERHConstants.MFVer2 + hpxml.header.energystar_calculation_version = ESConstants.MFNationalVer1_2 + else + hpxml.header.zerh_calculation_version = ZERHConstants.SFVer2 + hpxml.header.energystar_calculation_version = ESConstants.SFNationalVer3_2 + end XMLHelper.write_file(hpxml.to_doc, hpxml_path) end end