urbanopt-cli 0.4.0 → 0.4.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.github/pull_request_template.md +2 -2
- data/CHANGELOG.md +15 -0
- data/Gemfile +11 -11
- data/README.md +1 -1
- data/example_files/Gemfile +3 -3
- data/example_files/mappers/Baseline.rb +233 -204
- data/example_files/mappers/HighEfficiency.rb +41 -8
- data/example_files/measures/BuildResidentialModel/measure.rb +25 -5
- data/example_files/resources/hpxml-measures/.gitignore +1 -2
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/measure.rb +364 -694
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/measure.xml +1506 -889
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/resources/constants.rb +12 -0
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/resources/location.rb +1 -1
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/resources/schedules.rb +1068 -0
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/resources/schedules_README.md +45 -0
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/resources/schedules_clothes_dryer_power_consumption_dist.csv +95 -0
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/resources/schedules_clothes_dryer_power_duration_dist.csv +95 -0
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/resources/schedules_clothes_washer_cluster_size_probability.csv +6 -0
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/resources/schedules_clothes_washer_event_duration_probability.csv +44 -0
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/resources/schedules_clothes_washer_power_consumption_dist.csv +93 -0
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/resources/schedules_clothes_washer_power_duration_dist.csv +93 -0
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/resources/schedules_config.yml +61 -0
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/resources/schedules_cooking_power_consumption_dist.csv +63 -0
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/resources/schedules_cooking_power_duration_dist.csv +63 -0
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/resources/schedules_dishwasher_cluster_size_probability.csv +8 -0
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/resources/schedules_dishwasher_event_duration_probability.csv +192 -0
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/resources/schedules_dishwasher_power_consumption_dist.csv +56 -0
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/resources/schedules_dishwasher_power_duration_dist.csv +56 -0
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/resources/schedules_shower_cluster_size_probability.csv +4 -0
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/resources/schedules_shower_event_duration_probability.csv +1531 -0
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/resources/schedules_weekday_duration_probability_cluster_0_cooking_evening_duration_probability.csv +10 -0
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/resources/schedules_weekday_duration_probability_cluster_0_cooking_midday_duration_probability.csv +20 -0
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/resources/schedules_weekday_duration_probability_cluster_0_cooking_morning_duration_probability.csv +19 -0
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/resources/schedules_weekday_duration_probability_cluster_0_dishwashing_evening_duration_probability.csv +7 -0
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/resources/schedules_weekday_duration_probability_cluster_0_dishwashing_midday_duration_probability.csv +11 -0
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/resources/schedules_weekday_duration_probability_cluster_0_dishwashing_morning_duration_probability.csv +11 -0
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/resources/schedules_weekday_duration_probability_cluster_0_laundry_evening_duration_probability.csv +12 -0
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/resources/schedules_weekday_duration_probability_cluster_0_laundry_midday_duration_probability.csv +19 -0
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/resources/schedules_weekday_duration_probability_cluster_0_laundry_morning_duration_probability.csv +19 -0
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/resources/schedules_weekday_duration_probability_cluster_0_shower_evening_duration_probability.csv +10 -0
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/resources/schedules_weekday_duration_probability_cluster_0_shower_midday_duration_probability.csv +12 -0
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/resources/schedules_weekday_duration_probability_cluster_0_shower_morning_duration_probability.csv +11 -0
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/resources/schedules_weekday_duration_probability_cluster_1_cooking_evening_duration_probability.csv +8 -0
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/resources/schedules_weekday_duration_probability_cluster_1_cooking_midday_duration_probability.csv +21 -0
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/resources/schedules_weekday_duration_probability_cluster_1_cooking_morning_duration_probability.csv +26 -0
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/resources/schedules_weekday_duration_probability_cluster_1_dishwashing_evening_duration_probability.csv +6 -0
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/resources/schedules_weekday_duration_probability_cluster_1_dishwashing_midday_duration_probability.csv +14 -0
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/resources/schedules_weekday_duration_probability_cluster_1_dishwashing_morning_duration_probability.csv +15 -0
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/resources/schedules_weekday_duration_probability_cluster_1_laundry_evening_duration_probability.csv +7 -0
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/resources/schedules_weekday_duration_probability_cluster_1_laundry_midday_duration_probability.csv +19 -0
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/resources/schedules_weekday_duration_probability_cluster_1_laundry_morning_duration_probability.csv +25 -0
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/resources/schedules_weekday_duration_probability_cluster_1_shower_evening_duration_probability.csv +9 -0
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/resources/schedules_weekday_duration_probability_cluster_1_shower_midday_duration_probability.csv +11 -0
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/resources/schedules_weekday_duration_probability_cluster_1_shower_morning_duration_probability.csv +14 -0
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/resources/schedules_weekday_duration_probability_cluster_2_cooking_evening_duration_probability.csv +10 -0
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/resources/schedules_weekday_duration_probability_cluster_2_cooking_midday_duration_probability.csv +16 -0
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/resources/schedules_weekday_duration_probability_cluster_2_cooking_morning_duration_probability.csv +15 -0
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/resources/schedules_weekday_duration_probability_cluster_2_dishwashing_evening_duration_probability.csv +7 -0
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/resources/schedules_weekday_duration_probability_cluster_2_dishwashing_midday_duration_probability.csv +5 -0
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/resources/schedules_weekday_duration_probability_cluster_2_dishwashing_morning_duration_probability.csv +5 -0
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/resources/schedules_weekday_duration_probability_cluster_2_laundry_evening_duration_probability.csv +13 -0
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/resources/schedules_weekday_duration_probability_cluster_2_laundry_midday_duration_probability.csv +12 -0
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/resources/schedules_weekday_duration_probability_cluster_2_laundry_morning_duration_probability.csv +13 -0
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/resources/schedules_weekday_duration_probability_cluster_2_shower_evening_duration_probability.csv +10 -0
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/resources/schedules_weekday_duration_probability_cluster_2_shower_midday_duration_probability.csv +10 -0
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/resources/schedules_weekday_duration_probability_cluster_2_shower_morning_duration_probability.csv +14 -0
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/resources/schedules_weekday_duration_probability_cluster_3_cooking_evening_duration_probability.csv +9 -0
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/resources/schedules_weekday_duration_probability_cluster_3_cooking_midday_duration_probability.csv +18 -0
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/resources/schedules_weekday_duration_probability_cluster_3_cooking_morning_duration_probability.csv +10 -0
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/resources/schedules_weekday_duration_probability_cluster_3_dishwashing_evening_duration_probability.csv +8 -0
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/resources/schedules_weekday_duration_probability_cluster_3_dishwashing_midday_duration_probability.csv +10 -0
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/resources/schedules_weekday_duration_probability_cluster_3_dishwashing_morning_duration_probability.csv +8 -0
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/resources/schedules_weekday_duration_probability_cluster_3_laundry_evening_duration_probability.csv +10 -0
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/resources/schedules_weekday_duration_probability_cluster_3_laundry_midday_duration_probability.csv +17 -0
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/resources/schedules_weekday_duration_probability_cluster_3_laundry_morning_duration_probability.csv +14 -0
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/resources/schedules_weekday_duration_probability_cluster_3_shower_evening_duration_probability.csv +7 -0
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/resources/schedules_weekday_duration_probability_cluster_3_shower_midday_duration_probability.csv +12 -0
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/resources/schedules_weekday_duration_probability_cluster_3_shower_morning_duration_probability.csv +14 -0
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/resources/schedules_weekday_mkv_chain_initial_prob_cluster_0.csv +7 -0
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/resources/schedules_weekday_mkv_chain_initial_prob_cluster_1.csv +7 -0
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/resources/schedules_weekday_mkv_chain_initial_prob_cluster_2.csv +7 -0
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/resources/schedules_weekday_mkv_chain_initial_prob_cluster_3.csv +7 -0
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/resources/schedules_weekday_mkv_chain_transition_prob_cluster_0.csv +665 -0
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/resources/schedules_weekday_mkv_chain_transition_prob_cluster_1.csv +665 -0
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/resources/schedules_weekday_mkv_chain_transition_prob_cluster_2.csv +665 -0
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/resources/schedules_weekday_mkv_chain_transition_prob_cluster_3.csv +665 -0
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/resources/schedules_weekend_duration_probability_cluster_0_cooking_evening_duration_probability.csv +12 -0
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/resources/schedules_weekend_duration_probability_cluster_0_cooking_midday_duration_probability.csv +22 -0
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/resources/schedules_weekend_duration_probability_cluster_0_cooking_morning_duration_probability.csv +18 -0
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/resources/schedules_weekend_duration_probability_cluster_0_dishwashing_evening_duration_probability.csv +9 -0
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/resources/schedules_weekend_duration_probability_cluster_0_dishwashing_midday_duration_probability.csv +10 -0
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/resources/schedules_weekend_duration_probability_cluster_0_dishwashing_morning_duration_probability.csv +10 -0
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/resources/schedules_weekend_duration_probability_cluster_0_laundry_evening_duration_probability.csv +11 -0
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/resources/schedules_weekend_duration_probability_cluster_0_laundry_midday_duration_probability.csv +22 -0
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/resources/schedules_weekend_duration_probability_cluster_0_laundry_morning_duration_probability.csv +18 -0
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/resources/schedules_weekend_duration_probability_cluster_0_shower_evening_duration_probability.csv +8 -0
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/resources/schedules_weekend_duration_probability_cluster_0_shower_midday_duration_probability.csv +10 -0
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/resources/schedules_weekend_duration_probability_cluster_0_shower_morning_duration_probability.csv +15 -0
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/resources/schedules_weekend_duration_probability_cluster_1_cooking_evening_duration_probability.csv +14 -0
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/resources/schedules_weekend_duration_probability_cluster_1_cooking_midday_duration_probability.csv +23 -0
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/resources/schedules_weekend_duration_probability_cluster_1_cooking_morning_duration_probability.csv +24 -0
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/resources/schedules_weekend_duration_probability_cluster_1_dishwashing_evening_duration_probability.csv +12 -0
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/resources/schedules_weekend_duration_probability_cluster_1_dishwashing_midday_duration_probability.csv +14 -0
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/resources/schedules_weekend_duration_probability_cluster_1_dishwashing_morning_duration_probability.csv +15 -0
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/resources/schedules_weekend_duration_probability_cluster_1_laundry_evening_duration_probability.csv +12 -0
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/resources/schedules_weekend_duration_probability_cluster_1_laundry_midday_duration_probability.csv +21 -0
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/resources/schedules_weekend_duration_probability_cluster_1_laundry_morning_duration_probability.csv +22 -0
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/resources/schedules_weekend_duration_probability_cluster_1_shower_evening_duration_probability.csv +9 -0
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/resources/schedules_weekend_duration_probability_cluster_1_shower_midday_duration_probability.csv +15 -0
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/resources/schedules_weekend_duration_probability_cluster_1_shower_morning_duration_probability.csv +14 -0
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/resources/schedules_weekend_duration_probability_cluster_2_cooking_evening_duration_probability.csv +7 -0
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/resources/schedules_weekend_duration_probability_cluster_2_cooking_midday_duration_probability.csv +21 -0
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/resources/schedules_weekend_duration_probability_cluster_2_cooking_morning_duration_probability.csv +20 -0
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/resources/schedules_weekend_duration_probability_cluster_2_dishwashing_evening_duration_probability.csv +7 -0
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/resources/schedules_weekend_duration_probability_cluster_2_dishwashing_midday_duration_probability.csv +6 -0
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/resources/schedules_weekend_duration_probability_cluster_2_dishwashing_morning_duration_probability.csv +10 -0
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/resources/schedules_weekend_duration_probability_cluster_2_laundry_evening_duration_probability.csv +9 -0
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/resources/schedules_weekend_duration_probability_cluster_2_laundry_midday_duration_probability.csv +16 -0
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/resources/schedules_weekend_duration_probability_cluster_2_laundry_morning_duration_probability.csv +16 -0
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/resources/schedules_weekend_duration_probability_cluster_2_shower_evening_duration_probability.csv +9 -0
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/resources/schedules_weekend_duration_probability_cluster_2_shower_midday_duration_probability.csv +11 -0
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/resources/schedules_weekend_duration_probability_cluster_2_shower_morning_duration_probability.csv +14 -0
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/resources/schedules_weekend_duration_probability_cluster_3_cooking_evening_duration_probability.csv +8 -0
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/resources/schedules_weekend_duration_probability_cluster_3_cooking_midday_duration_probability.csv +24 -0
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/resources/schedules_weekend_duration_probability_cluster_3_cooking_morning_duration_probability.csv +34 -0
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/resources/schedules_weekend_duration_probability_cluster_3_dishwashing_evening_duration_probability.csv +6 -0
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/resources/schedules_weekend_duration_probability_cluster_3_dishwashing_midday_duration_probability.csv +12 -0
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/resources/schedules_weekend_duration_probability_cluster_3_dishwashing_morning_duration_probability.csv +13 -0
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/resources/schedules_weekend_duration_probability_cluster_3_laundry_evening_duration_probability.csv +10 -0
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/resources/schedules_weekend_duration_probability_cluster_3_laundry_midday_duration_probability.csv +24 -0
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/resources/schedules_weekend_duration_probability_cluster_3_laundry_morning_duration_probability.csv +29 -0
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/resources/schedules_weekend_duration_probability_cluster_3_shower_evening_duration_probability.csv +8 -0
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/resources/schedules_weekend_duration_probability_cluster_3_shower_midday_duration_probability.csv +14 -0
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/resources/schedules_weekend_duration_probability_cluster_3_shower_morning_duration_probability.csv +16 -0
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/resources/schedules_weekend_mkv_chain_initial_prob_cluster_0.csv +7 -0
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/resources/schedules_weekend_mkv_chain_initial_prob_cluster_1.csv +7 -0
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/resources/schedules_weekend_mkv_chain_initial_prob_cluster_2.csv +7 -0
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/resources/schedules_weekend_mkv_chain_initial_prob_cluster_3.csv +7 -0
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/resources/schedules_weekend_mkv_chain_transition_prob_cluster_0.csv +665 -0
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/resources/schedules_weekend_mkv_chain_transition_prob_cluster_1.csv +665 -0
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/resources/schedules_weekend_mkv_chain_transition_prob_cluster_2.csv +665 -0
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/resources/schedules_weekend_mkv_chain_transition_prob_cluster_3.csv +665 -0
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-appliances-coal.osw +11 -57
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-appliances-dehumidifier-50percent.osw +11 -57
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-appliances-dehumidifier-ief.osw +11 -57
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-appliances-dehumidifier.osw +11 -57
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-appliances-gas.osw +11 -57
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-appliances-modified.osw +11 -57
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-appliances-none.osw +11 -57
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-appliances-oil.osw +11 -57
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-appliances-propane.osw +11 -57
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-appliances-wood.osw +11 -57
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-atticroof-flat.osw +11 -57
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-atticroof-radiant-barrier.osw +11 -57
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-atticroof-unvented-insulated-roof.osw +11 -57
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-atticroof-vented.osw +11 -57
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-dhw-combi-tankless-outside.osw +11 -57
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-dhw-combi-tankless.osw +11 -57
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-dhw-dwhr.osw +11 -57
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-dhw-indirect-outside.osw +11 -57
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-dhw-indirect-standbyloss.osw +11 -57
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-dhw-indirect-with-solar-fraction.osw +11 -57
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-dhw-indirect.osw +11 -57
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-dhw-jacket-electric.osw +11 -57
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-dhw-jacket-gas.osw +11 -57
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-dhw-jacket-hpwh.osw +11 -57
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-dhw-jacket-indirect.osw +11 -57
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-dhw-low-flow-fixtures.osw +11 -57
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-dhw-none.osw +11 -57
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-dhw-recirc-demand.osw +11 -57
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-dhw-recirc-manual.osw +11 -57
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-dhw-recirc-nocontrol.osw +11 -57
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-dhw-recirc-temperature.osw +11 -57
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-dhw-recirc-timer.osw +11 -57
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-dhw-solar-direct-evacuated-tube.osw +11 -57
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-dhw-solar-direct-flat-plate.osw +11 -57
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-dhw-solar-direct-ics.osw +11 -57
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-dhw-solar-fraction.osw +11 -57
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-dhw-solar-indirect-flat-plate.osw +11 -57
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-dhw-solar-thermosyphon-flat-plate.osw +11 -57
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-dhw-tank-coal.osw +11 -57
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-dhw-tank-gas-outside.osw +11 -57
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-dhw-tank-gas.osw +11 -57
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-dhw-tank-heat-pump-outside.osw +11 -57
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-dhw-tank-heat-pump-with-solar-fraction.osw +11 -57
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-dhw-tank-heat-pump-with-solar.osw +11 -57
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-dhw-tank-heat-pump.osw +11 -57
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-dhw-tank-oil.osw +11 -57
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-dhw-tank-wood.osw +11 -57
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-dhw-tankless-electric-outside.osw +11 -57
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-dhw-tankless-electric.osw +11 -57
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-dhw-tankless-gas-with-solar-fraction.osw +11 -57
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-dhw-tankless-gas-with-solar.osw +11 -57
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-dhw-tankless-gas.osw +11 -57
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-dhw-tankless-propane.osw +11 -57
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-dhw-uef.osw +11 -57
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-enclosure-2stories-garage.osw +11 -57
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-enclosure-2stories.osw +11 -57
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-enclosure-beds-1.osw +11 -57
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-enclosure-beds-2.osw +11 -57
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-enclosure-beds-4.osw +11 -57
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-enclosure-beds-5.osw +11 -57
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-enclosure-garage.osw +11 -57
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-enclosure-infil-ach-house-pressure.osw +11 -57
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-enclosure-infil-cfm-house-pressure.osw +11 -57
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-enclosure-infil-cfm50.osw +11 -57
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-enclosure-infil-flue.osw +11 -57
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-enclosure-infil-natural-ach.osw +11 -57
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-enclosure-overhangs.osw +11 -57
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-enclosure-windows-none.osw +11 -57
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-foundation-ambient.osw +11 -57
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-foundation-conditioned-basement-slab-insulation.osw +11 -57
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-foundation-slab.osw +11 -57
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-foundation-unconditioned-basement-assembly-r.osw +11 -57
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-foundation-unconditioned-basement-wall-insulation.osw +11 -57
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-foundation-unconditioned-basement.osw +11 -57
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-foundation-unvented-crawlspace.osw +11 -57
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-foundation-vented-crawlspace.osw +11 -57
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-air-to-air-heat-pump-1-speed.osw +11 -57
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-air-to-air-heat-pump-2-speed.osw +11 -57
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-air-to-air-heat-pump-var-speed.osw +11 -57
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-boiler-coal-only.osw +11 -57
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-boiler-elec-only.osw +11 -57
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-boiler-gas-central-ac-1-speed.osw +11 -57
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-boiler-gas-only.osw +11 -57
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-boiler-oil-only.osw +11 -57
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-boiler-propane-only.osw +11 -57
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-boiler-wood-only.osw +11 -57
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-central-ac-only-1-speed.osw +11 -57
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-central-ac-only-2-speed.osw +11 -57
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-central-ac-only-var-speed.osw +11 -57
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-central-ac-plus-air-to-air-heat-pump-heating.osw +11 -57
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-dual-fuel-air-to-air-heat-pump-1-speed-electric.osw +11 -57
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-dual-fuel-air-to-air-heat-pump-1-speed.osw +11 -57
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-dual-fuel-air-to-air-heat-pump-2-speed.osw +11 -57
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-dual-fuel-air-to-air-heat-pump-var-speed.osw +11 -57
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-dual-fuel-mini-split-heat-pump-ducted.osw +11 -57
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-ducts-leakage-percent.osw +11 -57
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-elec-resistance-only.osw +11 -57
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-evap-cooler-furnace-gas.osw +11 -57
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-evap-cooler-only-ducted.osw +11 -57
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-evap-cooler-only.osw +11 -57
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-fireplace-wood-only.osw +11 -57
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-fixed-heater-gas-only.osw +11 -57
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-floor-furnace-propane-only.osw +11 -57
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-furnace-elec-central-ac-1-speed.osw +11 -57
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-furnace-elec-only.osw +11 -57
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-furnace-gas-central-ac-2-speed.osw +11 -57
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-furnace-gas-central-ac-var-speed.osw +11 -57
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-furnace-gas-only.osw +11 -57
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-furnace-gas-room-ac.osw +11 -57
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-furnace-oil-only.osw +11 -57
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-furnace-propane-only.osw +11 -57
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-furnace-wood-only.osw +11 -57
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-ground-to-air-heat-pump.osw +11 -57
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-mini-split-air-conditioner-only-ducted.osw +11 -57
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-mini-split-air-conditioner-only-ductless.osw +11 -57
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-mini-split-heat-pump-ducted-cooling-only.osw +11 -57
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-mini-split-heat-pump-ducted-heating-only.osw +11 -57
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-mini-split-heat-pump-ducted.osw +11 -57
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-mini-split-heat-pump-ductless.osw +11 -57
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-none.osw +11 -57
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-portable-heater-gas-only.osw +11 -57
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-programmable-thermostat.osw +11 -57
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-room-ac-only-33percent.osw +11 -57
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-room-ac-only.osw +11 -57
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-setpoints.osw +11 -57
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-stove-oil-only.osw +11 -57
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-stove-wood-pellets-only.osw +11 -57
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-undersized.osw +11 -57
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-wall-furnace-elec-only.osw +11 -57
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-lighting-ceiling-fans.osw +11 -57
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-lighting-detailed.osw +11 -57
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/{base-location-epw-filepath-AMY-2012.osw → base-location-AMY-2012.osw} +12 -58
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-location-baltimore-md.osw +11 -57
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-location-dallas-tx.osw +11 -57
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-location-duluth-mn.osw +11 -57
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-location-miami-fl.osw +11 -57
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-mechvent-balanced.osw +11 -57
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-mechvent-bath-kitchen-fans.osw +11 -57
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-mechvent-cfis-evap-cooler-only-ducted.osw +11 -57
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-mechvent-cfis.osw +11 -57
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-mechvent-erv-atre-asre.osw +11 -57
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-mechvent-erv.osw +11 -57
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-mechvent-exhaust.osw +11 -57
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-mechvent-hrv-asre.osw +11 -57
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-mechvent-hrv.osw +11 -57
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-mechvent-supply.osw +11 -57
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-mechvent-whole-house-fan.osw +11 -57
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-misc-defaults.osw +11 -57
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-misc-loads-large-uncommon.osw +11 -57
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-misc-loads-large-uncommon2.osw +11 -57
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-misc-neighbor-shading.osw +11 -57
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-misc-usage-multiplier.osw +11 -57
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-multifamily.osw +11 -57
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-pv.osw +11 -57
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-schedules-stochastic.osw +363 -0
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/{base-location-epw-filepath.osw → base-schedules-user-specified.osw} +13 -58
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-simcontrol-calendar-year-custom.osw +364 -0
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-simcontrol-daylight-saving-custom.osw +11 -57
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-simcontrol-daylight-saving-disabled.osw +11 -57
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-simcontrol-runperiod-1-month.osw +11 -57
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-simcontrol-timestep-10-mins.osw +11 -57
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-single-family-attached.osw +11 -57
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base.osw +11 -57
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/build_residential_hpxml_test.rb +53 -2
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-auto.osw +11 -57
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-dhw-shared-water-heater.osw +11 -57
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-dhw-solar-latitude.osw +11 -57
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-enclosure-garage-partially-protruded.osw +11 -57
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-mechvent-shared-preconditioning.osw +373 -0
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-mechvent-shared.osw +367 -0
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-pv-roofpitch.osw +11 -57
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-pv-shared.osw +11 -57
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-second-heating-system-fireplace.osw +11 -57
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-second-heating-system-portable-heater.osw +11 -57
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-second-refrigerator.osw +11 -57
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-vacancy-6-months.osw +367 -0
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/invalid_files/conditioned-attic-with-floor-insulation.osw +11 -57
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/invalid_files/conditioned-basement-with-ceiling-insulation.osw +11 -57
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/invalid_files/cooling-system-and-heat-pump.osw +11 -57
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/invalid_files/dhw-indirect-without-boiler.osw +11 -57
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/invalid_files/ducts-location-and-areas-not-same-type.osw +11 -57
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/invalid_files/heating-system-and-heat-pump.osw +11 -57
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/invalid_files/multifamily-bottom-crawlspace-zero-foundation-height.osw +11 -57
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/invalid_files/multifamily-bottom-slab-non-zero-foundation-height.osw +11 -57
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/invalid_files/multifamily-no-building-orientation.osw +11 -57
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/invalid_files/non-electric-heat-pump-water-heater.osw +11 -57
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/invalid_files/non-integer-ceiling-fan-quantity.osw +11 -57
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/invalid_files/non-integer-geometry-num-bathrooms.osw +11 -57
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/invalid_files/second-heating-system-serves-majority-heat.osw +11 -57
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/invalid_files/single-family-attached-ambient.osw +11 -57
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/invalid_files/single-family-attached-no-building-orientation.osw +11 -57
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/invalid_files/single-family-detached-finished-basement-zero-foundation-height.osw +11 -57
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/invalid_files/single-family-detached-slab-non-zero-foundation-height.osw +11 -57
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/invalid_files/slab-non-zero-foundation-height-above-grade.osw +11 -57
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/invalid_files/unconditioned-basement-with-wall-and-ceiling-insulation.osw +11 -57
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/invalid_files/unvented-attic-with-floor-and-roof-insulation.osw +11 -57
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/invalid_files/unvented-crawlspace-with-wall-and-ceiling-insulation.osw +11 -57
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/invalid_files/vented-attic-with-floor-and-roof-insulation.osw +11 -57
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/invalid_files/vented-crawlspace-with-wall-and-ceiling-insulation.osw +11 -57
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/schedules/stochastic.csv +8761 -0
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/schedules/user-specified.csv +8761 -0
- data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/measure.rb +65 -61
- data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/measure.xml +104 -113
- data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/resources/EPvalidator.xml +9 -1
- data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/resources/airflow.rb +62 -10
- data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/resources/constants.rb +4 -0
- data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/resources/geometry.rb +8 -3
- data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/resources/hotwater_appliances.rb +127 -52
- data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/resources/hpxml.rb +21 -3
- data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/resources/hpxml_defaults.rb +67 -45
- data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/resources/hvac.rb +17 -11
- data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/resources/lighting.rb +54 -26
- data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/resources/location.rb +3 -7
- data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/resources/misc_loads.rb +85 -20
- data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/resources/schedules.rb +500 -21
- data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/resources/weather.rb +5 -2
- data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/tests/test_airflow.rb +14 -0
- data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/tests/test_defaults.rb +44 -5
- data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/tests/test_hotwater_appliance.rb +2 -2
- data/example_files/resources/hpxml-measures/SimulationOutputReport/measure.rb +15 -5
- data/example_files/resources/hpxml-measures/SimulationOutputReport/measure.xml +10 -10
- data/example_files/resources/hpxml-measures/SimulationOutputReport/resources/constants.rb +2 -0
- data/example_files/resources/hpxml-measures/SimulationOutputReport/tests/output_report_test.rb +29 -3
- data/example_files/resources/hpxml-measures/docs/source/build_residential_hpxml.rst +21 -7
- data/example_files/resources/hpxml-measures/docs/source/hpxml_to_openstudio.rst +36 -8
- data/example_files/resources/hpxml-measures/docs/source/simulation_output_report.rst +5 -4
- data/example_files/resources/hpxml-measures/tasks.rb +101 -175
- data/example_files/resources/hpxml-measures/weather/US_CO_Boulder_AMY_2012-cache.csv +1 -1
- data/example_files/resources/hpxml-measures/weather/US_CO_Boulder_AMY_2012.epw +1 -1
- data/example_files/resources/hpxml-measures/workflow/run_simulation.rb +0 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-appliances-coal.xml +3 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-appliances-dehumidifier-50percent.xml +7 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-appliances-dehumidifier-ief.xml +7 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-appliances-dehumidifier.xml +7 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-appliances-gas.xml +3 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-appliances-modified.xml +6 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-appliances-none.xml +3 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-appliances-oil.xml +3 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-appliances-propane.xml +3 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-appliances-wood.xml +3 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-atticroof-cathedral.xml +7 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-atticroof-conditioned.xml +7 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-atticroof-flat.xml +7 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-atticroof-radiant-barrier.xml +7 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-atticroof-unvented-insulated-roof.xml +7 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-atticroof-vented.xml +7 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-combi-tankless-outside.xml +7 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-combi-tankless.xml +7 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-desuperheater-2-speed.xml +7 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-desuperheater-gshp.xml +7 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-desuperheater-hpwh.xml +7 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-desuperheater-tankless.xml +7 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-desuperheater-var-speed.xml +7 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-desuperheater.xml +7 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-dwhr.xml +7 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-indirect-dse.xml +7 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-indirect-outside.xml +7 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-indirect-standbyloss.xml +7 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-indirect-with-solar-fraction.xml +7 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-indirect.xml +7 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-jacket-electric.xml +7 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-jacket-gas.xml +7 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-jacket-hpwh.xml +7 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-jacket-indirect.xml +7 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-low-flow-fixtures.xml +7 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-multiple.xml +7 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-none.xml +3 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-recirc-demand.xml +7 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-recirc-manual.xml +7 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-recirc-nocontrol.xml +7 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-recirc-temperature.xml +7 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-recirc-timer.xml +7 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-shared-laundry-room.xml +7 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-shared-water-heater-recirc.xml +7 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-shared-water-heater.xml +7 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-solar-direct-evacuated-tube.xml +7 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-solar-direct-flat-plate.xml +7 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-solar-direct-ics.xml +7 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-solar-fraction.xml +7 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-solar-indirect-flat-plate.xml +7 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-solar-thermosyphon-flat-plate.xml +7 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-tank-coal.xml +7 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-tank-gas-outside.xml +7 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-tank-gas.xml +7 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-tank-heat-pump-outside.xml +7 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-tank-heat-pump-with-solar-fraction.xml +7 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-tank-heat-pump-with-solar.xml +7 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-tank-heat-pump.xml +7 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-tank-oil.xml +7 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-tank-wood.xml +7 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-tankless-electric-outside.xml +7 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-tankless-electric.xml +7 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-tankless-gas-with-solar-fraction.xml +7 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-tankless-gas-with-solar.xml +7 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-tankless-gas.xml +7 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-tankless-propane.xml +7 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-uef.xml +7 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-enclosure-2stories-garage.xml +7 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-enclosure-2stories.xml +7 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-enclosure-attached-multifamily.xml +7 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-enclosure-beds-1.xml +7 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-enclosure-beds-2.xml +7 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-enclosure-beds-4.xml +7 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-enclosure-beds-5.xml +7 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-enclosure-common-surfaces.xml +7 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-enclosure-garage.xml +7 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-enclosure-infil-ach-house-pressure.xml +7 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-enclosure-infil-cfm-house-pressure.xml +7 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-enclosure-infil-cfm50.xml +7 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-enclosure-infil-flue.xml +7 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-enclosure-infil-natural-ach.xml +7 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-enclosure-other-heated-space.xml +7 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-enclosure-other-housing-unit.xml +7 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-enclosure-other-multifamily-buffer-space.xml +7 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-enclosure-other-non-freezing-space.xml +7 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-enclosure-overhangs.xml +7 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-enclosure-rooftypes.xml +7 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-enclosure-skylights.xml +7 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-enclosure-split-surfaces.xml +7 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-enclosure-walltypes.xml +7 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-enclosure-windows-interior-shading.xml +7 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-enclosure-windows-none.xml +7 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-foundation-ambient.xml +7 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-foundation-complex.xml +7 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-foundation-conditioned-basement-slab-insulation.xml +7 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-foundation-conditioned-basement-wall-interior-insulation.xml +7 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-foundation-multiple.xml +7 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-foundation-slab.xml +7 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-foundation-unconditioned-basement-above-grade.xml +7 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-foundation-unconditioned-basement-assembly-r.xml +7 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-foundation-unconditioned-basement-wall-insulation.xml +7 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-foundation-unconditioned-basement.xml +7 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-foundation-unvented-crawlspace.xml +7 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-foundation-vented-crawlspace.xml +7 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-foundation-walkout-basement.xml +7 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-air-to-air-heat-pump-1-speed.xml +7 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-air-to-air-heat-pump-2-speed.xml +7 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-air-to-air-heat-pump-var-speed.xml +7 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-boiler-coal-only.xml +7 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-boiler-elec-only.xml +7 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-boiler-gas-central-ac-1-speed.xml +7 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-boiler-gas-only.xml +7 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-boiler-oil-only.xml +7 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-boiler-propane-only.xml +7 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-boiler-wood-only.xml +7 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-central-ac-only-1-speed.xml +7 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-central-ac-only-2-speed.xml +7 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-central-ac-only-var-speed.xml +7 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-central-ac-plus-air-to-air-heat-pump-heating.xml +7 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-dse.xml +7 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-dual-fuel-air-to-air-heat-pump-1-speed-electric.xml +7 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-dual-fuel-air-to-air-heat-pump-1-speed.xml +7 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-dual-fuel-air-to-air-heat-pump-2-speed.xml +7 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-dual-fuel-air-to-air-heat-pump-var-speed.xml +7 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-dual-fuel-mini-split-heat-pump-ducted.xml +7 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-ducts-leakage-percent.xml +7 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-elec-resistance-only.xml +7 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-evap-cooler-furnace-gas.xml +7 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-evap-cooler-only-ducted.xml +7 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-evap-cooler-only.xml +7 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-fireplace-wood-only.xml +7 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-fixed-heater-gas-only.xml +7 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-floor-furnace-propane-only.xml +7 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-flowrate.xml +7 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-furnace-elec-central-ac-1-speed.xml +7 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-furnace-elec-only.xml +7 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-furnace-gas-central-ac-2-speed.xml +7 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-furnace-gas-central-ac-var-speed.xml +7 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-furnace-gas-only.xml +7 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-furnace-gas-room-ac.xml +7 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-furnace-oil-only.xml +7 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-furnace-propane-only.xml +7 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-furnace-wood-only.xml +7 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-furnace-x3-dse.xml +7 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-ground-to-air-heat-pump.xml +7 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-ideal-air.xml +7 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-mini-split-air-conditioner-only-ducted.xml +7 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-mini-split-air-conditioner-only-ductless.xml +7 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-mini-split-heat-pump-ducted-cooling-only.xml +7 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-mini-split-heat-pump-ducted-heating-only.xml +7 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-mini-split-heat-pump-ducted.xml +7 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-mini-split-heat-pump-ductless.xml +7 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-multiple.xml +7 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-multiple2.xml +7 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-none.xml +7 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-portable-heater-gas-only.xml +7 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-programmable-thermostat.xml +7 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-room-ac-only-33percent.xml +7 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-room-ac-only.xml +7 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-setpoints.xml +7 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-shared-boiler-chiller-baseboard.xml +7 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-shared-boiler-chiller-fan-coil-ducted.xml +7 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-shared-boiler-chiller-fan-coil.xml +7 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-shared-boiler-chiller-water-loop-heat-pump.xml +7 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-shared-boiler-cooling-tower-water-loop-heat-pump.xml +7 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-shared-boiler-only-baseboard.xml +7 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-shared-boiler-only-fan-coil-ducted.xml +7 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-shared-boiler-only-fan-coil-eae.xml +7 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-shared-boiler-only-fan-coil.xml +7 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-shared-boiler-only-water-loop-heat-pump.xml +7 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-shared-chiller-only-baseboard.xml +7 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-shared-chiller-only-fan-coil-ducted.xml +7 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-shared-chiller-only-fan-coil.xml +7 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-shared-chiller-only-water-loop-heat-pump.xml +7 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-shared-cooling-tower-only-water-loop-heat-pump.xml +7 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-shared-ground-loop-ground-to-air-heat-pump.xml +7 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-stove-oil-only.xml +7 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-stove-wood-pellets-only.xml +7 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-undersized-allow-increased-fixed-capacities.xml +7 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-undersized.xml +7 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-wall-furnace-elec-only.xml +7 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-lighting-ceiling-fans.xml +7 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-lighting-detailed.xml +7 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-lighting-none.xml +7 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/{base-location-epw-filepath-AMY-2012.xml → base-location-AMY-2012.xml} +8 -0
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-location-baltimore-md.xml +7 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-location-dallas-tx.xml +7 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-location-duluth-mn.xml +7 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-location-miami-fl.xml +7 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-mechvent-balanced.xml +7 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-mechvent-bath-kitchen-fans.xml +7 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-mechvent-cfis-dse.xml +7 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-mechvent-cfis-evap-cooler-only-ducted.xml +7 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-mechvent-cfis.xml +7 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-mechvent-erv-atre-asre.xml +7 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-mechvent-erv.xml +7 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-mechvent-exhaust-rated-flow-rate.xml +7 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-mechvent-exhaust.xml +7 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-mechvent-hrv-asre.xml +7 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-mechvent-hrv.xml +7 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-mechvent-multiple.xml +7 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-mechvent-shared-multiple.xml +7 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-mechvent-shared-preconditioning.xml +7 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-mechvent-shared.xml +7 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-mechvent-supply.xml +7 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-mechvent-whole-house-fan.xml +7 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-misc-defaults.xml +3 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-misc-loads-large-uncommon.xml +7 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-misc-loads-large-uncommon2.xml +7 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-misc-loads-none.xml +7 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-misc-neighbor-shading.xml +7 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-misc-shelter-coefficient.xml +7 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-misc-usage-multiplier.xml +5 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-pv-shared.xml +7 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-pv.xml +7 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-schedules-stochastic.xml +565 -0
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-schedules-user-specified.xml +565 -0
- data/example_files/resources/hpxml-measures/workflow/sample_files/{base-location-epw-filepath.xml → base-simcontrol-calendar-year-custom.xml} +5 -0
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-simcontrol-daylight-saving-custom.xml +7 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-simcontrol-daylight-saving-disabled.xml +7 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-simcontrol-runperiod-1-month.xml +7 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-simcontrol-timestep-10-mins.xml +7 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/base.xml +7 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/hvac_autosizing/base-autosize.xml +7 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/hvac_autosizing/base-hvac-air-to-air-heat-pump-1-speed-autosize-manual-s-oversize-allowances.xml +7 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/hvac_autosizing/base-hvac-air-to-air-heat-pump-1-speed-autosize.xml +7 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/hvac_autosizing/base-hvac-air-to-air-heat-pump-2-speed-autosize-manual-s-oversize-allowances.xml +7 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/hvac_autosizing/base-hvac-air-to-air-heat-pump-2-speed-autosize.xml +7 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/hvac_autosizing/base-hvac-air-to-air-heat-pump-var-speed-autosize-manual-s-oversize-allowances.xml +7 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/hvac_autosizing/base-hvac-air-to-air-heat-pump-var-speed-autosize.xml +7 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/hvac_autosizing/base-hvac-boiler-elec-only-autosize.xml +7 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/hvac_autosizing/base-hvac-boiler-gas-central-ac-1-speed-autosize.xml +7 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/hvac_autosizing/base-hvac-boiler-gas-only-autosize.xml +7 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/hvac_autosizing/base-hvac-central-ac-only-1-speed-autosize.xml +7 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/hvac_autosizing/base-hvac-central-ac-only-2-speed-autosize.xml +7 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/hvac_autosizing/base-hvac-central-ac-only-var-speed-autosize.xml +7 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/hvac_autosizing/base-hvac-central-ac-plus-air-to-air-heat-pump-heating-autosize.xml +7 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/hvac_autosizing/base-hvac-dual-fuel-air-to-air-heat-pump-1-speed-autosize.xml +7 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/hvac_autosizing/base-hvac-dual-fuel-mini-split-heat-pump-ducted-autosize.xml +7 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/hvac_autosizing/base-hvac-elec-resistance-only-autosize.xml +7 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/hvac_autosizing/base-hvac-evap-cooler-furnace-gas-autosize.xml +7 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/hvac_autosizing/base-hvac-floor-furnace-propane-only-autosize.xml +7 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/hvac_autosizing/base-hvac-furnace-elec-only-autosize.xml +7 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/hvac_autosizing/base-hvac-furnace-gas-central-ac-2-speed-autosize.xml +7 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/hvac_autosizing/base-hvac-furnace-gas-central-ac-var-speed-autosize.xml +7 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/hvac_autosizing/base-hvac-furnace-gas-only-autosize.xml +7 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/hvac_autosizing/base-hvac-furnace-gas-room-ac-autosize.xml +7 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/hvac_autosizing/base-hvac-ground-to-air-heat-pump-autosize-manual-s-oversize-allowances.xml +7 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/hvac_autosizing/base-hvac-ground-to-air-heat-pump-autosize.xml +7 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/hvac_autosizing/base-hvac-mini-split-air-conditioner-only-ducted-autosize.xml +7 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/hvac_autosizing/base-hvac-mini-split-heat-pump-ducted-autosize-manual-s-oversize-allowances.xml +7 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/hvac_autosizing/base-hvac-mini-split-heat-pump-ducted-autosize.xml +7 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/hvac_autosizing/base-hvac-mini-split-heat-pump-ducted-cooling-only-autosize.xml +7 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/hvac_autosizing/base-hvac-mini-split-heat-pump-ducted-heating-only-autosize.xml +7 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/hvac_autosizing/base-hvac-room-ac-only-autosize.xml +7 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/hvac_autosizing/base-hvac-stove-oil-only-autosize.xml +7 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/hvac_autosizing/base-hvac-wall-furnace-elec-only-autosize.xml +7 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/appliances-location-unconditioned-space.xml +7 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/cfis-with-hydronic-distribution.xml +7 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/clothes-dryer-location.xml +7 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/clothes-washer-location.xml +7 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/coal-for-non-boiler-heating.xml +7 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/cooking-range-location.xml +7 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/dhw-frac-load-served.xml +7 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/dishwasher-location.xml +7 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/duct-location-unconditioned-space.xml +7 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/duct-location.xml +7 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/duplicate-id.xml +7 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/enclosure-attic-missing-roof.xml +7 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/enclosure-basement-missing-exterior-foundation-wall.xml +7 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/enclosure-basement-missing-slab.xml +7 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/enclosure-garage-missing-exterior-wall.xml +7 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/enclosure-garage-missing-roof-ceiling.xml +7 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/enclosure-garage-missing-slab.xml +7 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/enclosure-living-missing-ceiling-roof.xml +7 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/enclosure-living-missing-exterior-wall.xml +7 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/enclosure-living-missing-floor-slab.xml +7 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/heat-pump-mixed-fixed-and-autosize-capacities.xml +7 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/heat-pump-mixed-fixed-and-autosize-capacities2.xml +7 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/hvac-distribution-multiple-attached-cooling.xml +7 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/hvac-distribution-multiple-attached-heating.xml +7 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/hvac-distribution-return-duct-leakage-missing.xml +7 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/hvac-dse-multiple-attached-cooling.xml +7 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/hvac-dse-multiple-attached-heating.xml +7 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/hvac-frac-load-served.xml +7 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/hvac-invalid-distribution-system-type.xml +7 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/{invalid-wmo.xml → invalid-calendar-year.xml} +8 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/invalid-daylight-saving.xml +7 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/invalid-distribution-cfa-served.xml +7 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/invalid-epw-filepath.xml +4 -0
- data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/invalid-facility-type.xml +7 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/invalid-neighbor-shading-azimuth.xml +7 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/invalid-relatedhvac-desuperheater.xml +7 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/invalid-relatedhvac-dhw-indirect.xml +7 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/invalid-runperiod.xml +7 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/invalid-timestep.xml +7 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/invalid-window-height.xml +7 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/invalid-window-interior-shading.xml +7 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/lighting-fractions.xml +7 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/missing-duct-location.xml +7 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/missing-elements.xml +7 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/multifamily-reference-appliance.xml +7 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/multifamily-reference-duct.xml +7 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/multifamily-reference-surface.xml +7 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/multifamily-reference-water-heater.xml +7 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/net-area-negative-roof.xml +7 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/net-area-negative-wall.xml +7 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/orphaned-hvac-distribution.xml +7 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/refrigerator-location.xml +7 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/refrigerators-multiple-primary.xml +7 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/refrigerators-no-primary.xml +7 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/repeated-relatedhvac-desuperheater.xml +7 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/repeated-relatedhvac-dhw-indirect.xml +7 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/slab-zero-exposed-perimeter.xml +7 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/solar-thermal-system-with-combi-tankless.xml +7 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/solar-thermal-system-with-desuperheater.xml +7 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/solar-thermal-system-with-dhw-indirect.xml +7 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/unattached-cfis.xml +7 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/unattached-door.xml +7 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/unattached-hvac-distribution.xml +7 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/unattached-shared-clothes-washer-water-heater.xml +7 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/unattached-shared-dishwasher-water-heater.xml +7 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/unattached-skylight.xml +7 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/unattached-solar-thermal-system.xml +7 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/unattached-window.xml +7 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/water-heater-location-other.xml +7 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/water-heater-location.xml +7 -1
- data/example_files/resources/hpxml-measures/workflow/tests/ASHRAE_Standard_140/L100AC.xml +3 -1
- data/example_files/resources/hpxml-measures/workflow/tests/ASHRAE_Standard_140/L100AL.xml +3 -1
- data/example_files/resources/hpxml-measures/workflow/tests/ASHRAE_Standard_140/L110AC.xml +3 -1
- data/example_files/resources/hpxml-measures/workflow/tests/ASHRAE_Standard_140/L110AL.xml +3 -1
- data/example_files/resources/hpxml-measures/workflow/tests/ASHRAE_Standard_140/L120AC.xml +3 -1
- data/example_files/resources/hpxml-measures/workflow/tests/ASHRAE_Standard_140/L120AL.xml +3 -1
- data/example_files/resources/hpxml-measures/workflow/tests/ASHRAE_Standard_140/L130AC.xml +3 -1
- data/example_files/resources/hpxml-measures/workflow/tests/ASHRAE_Standard_140/L130AL.xml +3 -1
- data/example_files/resources/hpxml-measures/workflow/tests/ASHRAE_Standard_140/L140AC.xml +3 -1
- data/example_files/resources/hpxml-measures/workflow/tests/ASHRAE_Standard_140/L140AL.xml +3 -1
- data/example_files/resources/hpxml-measures/workflow/tests/ASHRAE_Standard_140/L150AC.xml +3 -1
- data/example_files/resources/hpxml-measures/workflow/tests/ASHRAE_Standard_140/L150AL.xml +3 -1
- data/example_files/resources/hpxml-measures/workflow/tests/ASHRAE_Standard_140/L155AC.xml +3 -1
- data/example_files/resources/hpxml-measures/workflow/tests/ASHRAE_Standard_140/L155AL.xml +3 -1
- data/example_files/resources/hpxml-measures/workflow/tests/ASHRAE_Standard_140/L160AC.xml +3 -1
- data/example_files/resources/hpxml-measures/workflow/tests/ASHRAE_Standard_140/L160AL.xml +3 -1
- data/example_files/resources/hpxml-measures/workflow/tests/ASHRAE_Standard_140/L170AC.xml +3 -1
- data/example_files/resources/hpxml-measures/workflow/tests/ASHRAE_Standard_140/L170AL.xml +3 -1
- data/example_files/resources/hpxml-measures/workflow/tests/ASHRAE_Standard_140/L200AC.xml +3 -1
- data/example_files/resources/hpxml-measures/workflow/tests/ASHRAE_Standard_140/L200AL.xml +3 -1
- data/example_files/resources/hpxml-measures/workflow/tests/ASHRAE_Standard_140/L202AC.xml +3 -1
- data/example_files/resources/hpxml-measures/workflow/tests/ASHRAE_Standard_140/L202AL.xml +3 -1
- data/example_files/resources/hpxml-measures/workflow/tests/ASHRAE_Standard_140/L302XC.xml +3 -1
- data/example_files/resources/hpxml-measures/workflow/tests/ASHRAE_Standard_140/L304XC.xml +3 -1
- data/example_files/resources/hpxml-measures/workflow/tests/ASHRAE_Standard_140/L322XC.xml +3 -1
- data/example_files/resources/hpxml-measures/workflow/tests/ASHRAE_Standard_140/L324XC.xml +3 -1
- data/example_files/resources/hpxml-measures/workflow/tests/hpxml_translator_test.rb +4 -2
- data/lib/uo_cli.rb +40 -22
- data/lib/uo_cli/version.rb +1 -1
- data/uo_cli.gemspec +3 -4
- metadata +149 -27
- data/example_files/resources/hpxml-measures/weather/data.csv +0 -1012
@@ -2,7 +2,7 @@
|
|
2
2
|
|
3
3
|
class Location
|
4
4
|
def self.apply(model, runner, weather, epw_file, hpxml)
|
5
|
-
apply_year(model,
|
5
|
+
apply_year(model, hpxml)
|
6
6
|
apply_site(model, epw_file)
|
7
7
|
apply_climate_zones(model, epw_file)
|
8
8
|
apply_dst(model, hpxml)
|
@@ -50,13 +50,9 @@ class Location
|
|
50
50
|
climateZones.setClimateZone(Constants.BuildingAmericaClimateZone, ba_zone)
|
51
51
|
end
|
52
52
|
|
53
|
-
def self.apply_year(model,
|
53
|
+
def self.apply_year(model, hpxml)
|
54
54
|
year_description = model.getYearDescription
|
55
|
-
|
56
|
-
year_description.setCalendarYear(epw_file.startDateActualYear.get)
|
57
|
-
else # TMY
|
58
|
-
year_description.setDayofWeekforStartDay('Monday') # For consistency with SAM utility bill calculations
|
59
|
-
end
|
55
|
+
year_description.setCalendarYear(hpxml.header.sim_calendar_year)
|
60
56
|
end
|
61
57
|
|
62
58
|
def self.apply_dst(model, hpxml)
|
@@ -1,11 +1,28 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
3
|
class MiscLoads
|
4
|
-
def self.apply_plug(model, plug_load, obj_name, living_space)
|
4
|
+
def self.apply_plug(model, plug_load, obj_name, living_space, schedules_file)
|
5
5
|
kwh = 0
|
6
|
+
|
6
7
|
if not plug_load.nil?
|
7
8
|
kwh = plug_load.kWh_per_year * plug_load.usage_multiplier
|
8
|
-
|
9
|
+
if not schedules_file.nil?
|
10
|
+
if plug_load.plug_load_type == HPXML::PlugLoadTypeOther
|
11
|
+
col_name = 'plug_loads_other'
|
12
|
+
elsif plug_load.plug_load_type == HPXML::PlugLoadTypeTelevision
|
13
|
+
col_name = 'plug_loads_tv'
|
14
|
+
elsif plug_load.plug_load_type == HPXML::PlugLoadTypeElectricVehicleCharging
|
15
|
+
col_name = 'plug_loads_vehicle'
|
16
|
+
elsif plug_load.plug_load_type == HPXML::PlugLoadTypeWellPump
|
17
|
+
col_name = 'plug_loads_well_pump'
|
18
|
+
end
|
19
|
+
space_design_level = schedules_file.calc_design_level_from_annual_kwh(col_name: col_name, annual_kwh: kwh)
|
20
|
+
sch = schedules_file.create_schedule_file(col_name: col_name)
|
21
|
+
else
|
22
|
+
sch = MonthWeekdayWeekendSchedule.new(model, obj_name + ' schedule', plug_load.weekday_fractions, plug_load.weekend_fractions, plug_load.monthly_multipliers, Constants.ScheduleTypeLimitsFraction)
|
23
|
+
space_design_level = sch.calcDesignLevelFromDailykWh(kwh / 365.0)
|
24
|
+
sch = sch.schedule
|
25
|
+
end
|
9
26
|
end
|
10
27
|
|
11
28
|
return if kwh <= 0
|
@@ -30,8 +47,6 @@ class MiscLoads
|
|
30
47
|
lat_fract = 0.0
|
31
48
|
end
|
32
49
|
|
33
|
-
space_design_level = sch.calcDesignLevelFromDailykWh(kwh / 365.0)
|
34
|
-
|
35
50
|
# Add electric equipment for the mel
|
36
51
|
mel_def = OpenStudio::Model::ElectricEquipmentDefinition.new(model)
|
37
52
|
mel = OpenStudio::Model::ElectricEquipment.new(mel_def)
|
@@ -43,14 +58,29 @@ class MiscLoads
|
|
43
58
|
mel_def.setFractionRadiant(0.6 * sens_frac)
|
44
59
|
mel_def.setFractionLatent(lat_frac)
|
45
60
|
mel_def.setFractionLost(1 - sens_frac - lat_frac)
|
46
|
-
mel.setSchedule(sch
|
61
|
+
mel.setSchedule(sch)
|
47
62
|
end
|
48
63
|
|
49
|
-
def self.apply_fuel(model, fuel_load, obj_name, living_space)
|
64
|
+
def self.apply_fuel(model, fuel_load, obj_name, living_space, schedules_file)
|
50
65
|
therm = 0
|
66
|
+
|
51
67
|
if not fuel_load.nil?
|
52
68
|
therm = fuel_load.therm_per_year * fuel_load.usage_multiplier
|
53
|
-
|
69
|
+
if not schedules_file.nil?
|
70
|
+
if fuel_load.fuel_load_type == HPXML::FuelLoadTypeGrill
|
71
|
+
col_name = 'fuel_loads_grill'
|
72
|
+
elsif fuel_load.fuel_load_type == HPXML::FuelLoadTypeLighting
|
73
|
+
col_name = 'fuel_loads_lighting'
|
74
|
+
elsif fuel_load.fuel_load_type == HPXML::FuelLoadTypeFireplace
|
75
|
+
col_name = 'fuel_loads_fireplace'
|
76
|
+
end
|
77
|
+
space_design_level = schedules_file.calc_design_level_from_annual_therm(col_name: col_name, annual_therm: therm)
|
78
|
+
sch = schedules_file.create_schedule_file(col_name: col_name)
|
79
|
+
else
|
80
|
+
sch = MonthWeekdayWeekendSchedule.new(model, obj_name + ' schedule', fuel_load.weekday_fractions, fuel_load.weekend_fractions, fuel_load.monthly_multipliers, Constants.ScheduleTypeLimitsFraction)
|
81
|
+
space_design_level = sch.calcDesignLevelFromDailyTherm(therm / 365.0)
|
82
|
+
sch = sch.schedule
|
83
|
+
end
|
54
84
|
end
|
55
85
|
|
56
86
|
return if therm <= 0
|
@@ -75,8 +105,6 @@ class MiscLoads
|
|
75
105
|
lat_fract = 0.0
|
76
106
|
end
|
77
107
|
|
78
|
-
space_design_level = sch.calcDesignLevelFromDailyTherm(therm / 365.0)
|
79
|
-
|
80
108
|
# Add other equipment for the mfl
|
81
109
|
mfl_def = OpenStudio::Model::OtherEquipmentDefinition.new(model)
|
82
110
|
mfl = OpenStudio::Model::OtherEquipment.new(mfl_def)
|
@@ -89,13 +117,24 @@ class MiscLoads
|
|
89
117
|
mfl_def.setFractionRadiant(0.6 * sens_frac)
|
90
118
|
mfl_def.setFractionLatent(lat_frac)
|
91
119
|
mfl_def.setFractionLost(1 - sens_frac - lat_frac)
|
92
|
-
mfl.setSchedule(sch
|
120
|
+
mfl.setSchedule(sch)
|
93
121
|
end
|
94
122
|
|
95
|
-
def self.apply_pool_or_hot_tub_heater(model, pool_or_hot_tub, obj_name, living_space)
|
123
|
+
def self.apply_pool_or_hot_tub_heater(model, pool_or_hot_tub, obj_name, living_space, schedules_file)
|
96
124
|
heater_kwh = 0
|
97
125
|
heater_therm = 0
|
98
|
-
|
126
|
+
|
127
|
+
if not schedules_file.nil?
|
128
|
+
if obj_name.include?('pool')
|
129
|
+
col_name = 'pool_heater'
|
130
|
+
else
|
131
|
+
col_name = 'hot_tub_heater'
|
132
|
+
end
|
133
|
+
heater_sch = schedules_file.create_schedule_file(col_name: col_name)
|
134
|
+
else
|
135
|
+
heater_sch = MonthWeekdayWeekendSchedule.new(model, obj_name + ' schedule', pool_or_hot_tub.heater_weekday_fractions, pool_or_hot_tub.heater_weekend_fractions, pool_or_hot_tub.heater_monthly_multipliers, Constants.ScheduleTypeLimitsFraction)
|
136
|
+
end
|
137
|
+
|
99
138
|
if pool_or_hot_tub.heater_load_units == HPXML::UnitsKwhPerYear
|
100
139
|
heater_kwh = pool_or_hot_tub.heater_load_value * pool_or_hot_tub.heater_usage_multiplier
|
101
140
|
elsif pool_or_hot_tub.heater_load_units == HPXML::UnitsThermPerYear
|
@@ -103,7 +142,12 @@ class MiscLoads
|
|
103
142
|
end
|
104
143
|
|
105
144
|
if heater_kwh > 0
|
106
|
-
|
145
|
+
if (not schedules_file.nil?)
|
146
|
+
space_design_level = schedules_file.calc_design_level_from_annual_kwh(col_name: col_name, annual_kwh: heater_kwh)
|
147
|
+
else
|
148
|
+
space_design_level = heater_sch.calcDesignLevelFromDailykWh(heater_kwh / 365.0)
|
149
|
+
heater_sch = heater_sch.schedule
|
150
|
+
end
|
107
151
|
|
108
152
|
mel_def = OpenStudio::Model::ElectricEquipmentDefinition.new(model)
|
109
153
|
mel = OpenStudio::Model::ElectricEquipment.new(mel_def)
|
@@ -115,11 +159,16 @@ class MiscLoads
|
|
115
159
|
mel_def.setFractionRadiant(0)
|
116
160
|
mel_def.setFractionLatent(0)
|
117
161
|
mel_def.setFractionLost(1)
|
118
|
-
mel.setSchedule(heater_sch
|
162
|
+
mel.setSchedule(heater_sch)
|
119
163
|
end
|
120
164
|
|
121
165
|
if heater_therm > 0
|
122
|
-
|
166
|
+
if not schedules_file.nil?
|
167
|
+
space_design_level = schedules_file.calc_design_level_from_annual_therm(col_name: col_name, annual_therm: heater_therm)
|
168
|
+
else
|
169
|
+
space_design_level = heater_sch.calcDesignLevelFromDailyTherm(heater_therm / 365.0)
|
170
|
+
heater_sch = heater_sch.schedule
|
171
|
+
end
|
123
172
|
|
124
173
|
mel_def = OpenStudio::Model::GasEquipmentDefinition.new(model)
|
125
174
|
mel = OpenStudio::Model::GasEquipment.new(mel_def)
|
@@ -131,19 +180,35 @@ class MiscLoads
|
|
131
180
|
mel_def.setFractionRadiant(0)
|
132
181
|
mel_def.setFractionLatent(0)
|
133
182
|
mel_def.setFractionLost(1)
|
134
|
-
mel.setSchedule(heater_sch
|
183
|
+
mel.setSchedule(heater_sch)
|
135
184
|
end
|
136
185
|
end
|
137
186
|
|
138
|
-
def self.apply_pool_or_hot_tub_pump(model, pool_or_hot_tub, obj_name, living_space)
|
187
|
+
def self.apply_pool_or_hot_tub_pump(model, pool_or_hot_tub, obj_name, living_space, schedules_file)
|
139
188
|
pump_kwh = 0
|
140
|
-
|
189
|
+
|
190
|
+
if not schedules_file.nil?
|
191
|
+
if obj_name.include?('pool')
|
192
|
+
col_name = 'pool_pump'
|
193
|
+
else
|
194
|
+
col_name = 'hot_tub_pump'
|
195
|
+
end
|
196
|
+
pump_sch = schedules_file.create_schedule_file(col_name: col_name)
|
197
|
+
else
|
198
|
+
pump_sch = MonthWeekdayWeekendSchedule.new(model, obj_name + ' schedule', pool_or_hot_tub.pump_weekday_fractions, pool_or_hot_tub.pump_weekend_fractions, pool_or_hot_tub.pump_monthly_multipliers, Constants.ScheduleTypeLimitsFraction)
|
199
|
+
end
|
200
|
+
|
141
201
|
if not pool_or_hot_tub.pump_kwh_per_year.nil?
|
142
202
|
pump_kwh = pool_or_hot_tub.pump_kwh_per_year * pool_or_hot_tub.pump_usage_multiplier
|
143
203
|
end
|
144
204
|
|
145
205
|
if pump_kwh > 0
|
146
|
-
|
206
|
+
if not schedules_file.nil?
|
207
|
+
space_design_level = schedules_file.calc_design_level_from_annual_kwh(col_name: col_name, annual_kwh: pump_kwh)
|
208
|
+
else
|
209
|
+
space_design_level = pump_sch.calcDesignLevelFromDailykWh(pump_kwh / 365.0)
|
210
|
+
pump_sch = pump_sch.schedule
|
211
|
+
end
|
147
212
|
|
148
213
|
mel_def = OpenStudio::Model::ElectricEquipmentDefinition.new(model)
|
149
214
|
mel = OpenStudio::Model::ElectricEquipment.new(mel_def)
|
@@ -155,7 +220,7 @@ class MiscLoads
|
|
155
220
|
mel_def.setFractionRadiant(0)
|
156
221
|
mel_def.setFractionLatent(0)
|
157
222
|
mel_def.setFractionLost(1)
|
158
|
-
mel.setSchedule(pump_sch
|
223
|
+
mel.setSchedule(pump_sch)
|
159
224
|
end
|
160
225
|
end
|
161
226
|
|
@@ -5,8 +5,7 @@ class HourlyByMonthSchedule
|
|
5
5
|
# weekday_month_by_hour_values must be a 12-element array of 24-element arrays of numbers.
|
6
6
|
# weekend_month_by_hour_values must be a 12-element array of 24-element arrays of numbers.
|
7
7
|
def initialize(model, sch_name, weekday_month_by_hour_values, weekend_month_by_hour_values,
|
8
|
-
|
9
|
-
schedule_type_limits_name = nil)
|
8
|
+
schedule_type_limits_name = nil, normalize_values = true)
|
10
9
|
@model = model
|
11
10
|
@sch_name = sch_name
|
12
11
|
@schedule = nil
|
@@ -19,9 +18,7 @@ class HourlyByMonthSchedule
|
|
19
18
|
else
|
20
19
|
@maxval = 1.0
|
21
20
|
end
|
22
|
-
|
23
|
-
@schedule = createSchedule()
|
24
|
-
end
|
21
|
+
@schedule = createSchedule()
|
25
22
|
end
|
26
23
|
|
27
24
|
def calcDesignLevel(val)
|
@@ -180,13 +177,11 @@ class MonthWeekdayWeekendSchedule
|
|
180
177
|
# weekend_hourly_values can either be a comma-separated string of 24 numbers or a 24-element array of numbers.
|
181
178
|
# monthly_values can either be a comma-separated string of 12 numbers or a 12-element array of numbers.
|
182
179
|
def initialize(model, sch_name, weekday_hourly_values, weekend_hourly_values, monthly_values,
|
183
|
-
|
184
|
-
|
180
|
+
schedule_type_limits_name = nil, normalize_values = true, begin_month = 1,
|
181
|
+
begin_day_of_month = 1, end_month = 12, end_day_of_month = 31)
|
185
182
|
@model = model
|
186
183
|
@sch_name = sch_name
|
187
184
|
@schedule = nil
|
188
|
-
@mult_weekday = mult_weekday
|
189
|
-
@mult_weekend = mult_weekend
|
190
185
|
@weekday_hourly_values = validateValues(weekday_hourly_values, 24, 'weekday')
|
191
186
|
@weekend_hourly_values = validateValues(weekend_hourly_values, 24, 'weekend')
|
192
187
|
@monthly_values = validateValues(monthly_values, 12, 'monthly')
|
@@ -206,9 +201,7 @@ class MonthWeekdayWeekendSchedule
|
|
206
201
|
@maxval = 1.0
|
207
202
|
@schadjust = 1.0
|
208
203
|
end
|
209
|
-
|
210
|
-
@schedule = createSchedule()
|
211
|
-
end
|
204
|
+
@schedule = createSchedule()
|
212
205
|
end
|
213
206
|
|
214
207
|
def calcDesignLevelFromDailykWh(daily_kwh)
|
@@ -283,9 +276,9 @@ class MonthWeekdayWeekendSchedule
|
|
283
276
|
|
284
277
|
def calcMaxval()
|
285
278
|
if @weekday_hourly_values.max > @weekend_hourly_values.max
|
286
|
-
maxval = @monthly_values.max * @weekday_hourly_values.max
|
279
|
+
maxval = @monthly_values.max * @weekday_hourly_values.max
|
287
280
|
else
|
288
|
-
maxval = @monthly_values.max * @weekend_hourly_values.max
|
281
|
+
maxval = @monthly_values.max * @weekend_hourly_values.max
|
289
282
|
end
|
290
283
|
if maxval == 0.0
|
291
284
|
maxval == 1.0 # Prevent divide by zero
|
@@ -359,8 +352,8 @@ class MonthWeekdayWeekendSchedule
|
|
359
352
|
wkdy_vals = []
|
360
353
|
wknd_vals = []
|
361
354
|
for h in 1..24
|
362
|
-
wkdy_vals[h] = (@monthly_values[m - 1] * @weekday_hourly_values[h - 1]
|
363
|
-
wknd_vals[h] = (@monthly_values[m - 1] * @weekend_hourly_values[h - 1]
|
355
|
+
wkdy_vals[h] = (@monthly_values[m - 1] * @weekday_hourly_values[h - 1]) / @maxval
|
356
|
+
wknd_vals[h] = (@monthly_values[m - 1] * @weekend_hourly_values[h - 1]) / @maxval
|
364
357
|
end
|
365
358
|
|
366
359
|
if (wkdy_vals == prev_wkdy_vals) && (wknd_vals == prev_wknd_vals)
|
@@ -434,11 +427,10 @@ class MonthWeekdayWeekendSchedule
|
|
434
427
|
end
|
435
428
|
|
436
429
|
class HotWaterSchedule
|
437
|
-
def initialize(model, obj_name, nbeds, days_shift = 0, create_sch_object = true)
|
430
|
+
def initialize(model, obj_name, nbeds, days_shift = 0, dryer_exhaust_min_runtime = 0, create_sch_object = true)
|
438
431
|
@model = model
|
439
432
|
@sch_name = "#{obj_name} schedule"
|
440
433
|
@schedule = nil
|
441
|
-
@days_shift = days_shift
|
442
434
|
if nbeds < 1
|
443
435
|
@nbeds = 1
|
444
436
|
elsif nbeds > 5
|
@@ -448,6 +440,7 @@ class HotWaterSchedule
|
|
448
440
|
end
|
449
441
|
file_prefixes = { Constants.ObjectNameClothesWasher => 'ClothesWasher',
|
450
442
|
Constants.ObjectNameClothesDryer => 'ClothesWasher',
|
443
|
+
Constants.ObjectNameClothesDryerExhaust => 'ClothesWasher',
|
451
444
|
Constants.ObjectNameDishwasher => 'Dishwasher',
|
452
445
|
Constants.ObjectNameFixtures => 'Fixtures' }
|
453
446
|
@file_prefix = file_prefixes[obj_name]
|
@@ -455,13 +448,17 @@ class HotWaterSchedule
|
|
455
448
|
timestep_minutes = (60 / @model.getTimestep.numberOfTimestepsPerHour).to_i
|
456
449
|
weeks = 1 # use a single week that repeats
|
457
450
|
|
458
|
-
data = loadMinuteDrawProfileFromFile(timestep_minutes, days_shift, weeks)
|
451
|
+
@data = loadMinuteDrawProfileFromFile(timestep_minutes, days_shift, weeks, dryer_exhaust_min_runtime)
|
459
452
|
@totflow, @maxflow, @ontime = loadDrawProfileStatsFromFile()
|
460
453
|
if create_sch_object
|
461
|
-
@schedule = createSchedule(data, timestep_minutes, weeks)
|
454
|
+
@schedule = createSchedule(@data, timestep_minutes, weeks)
|
462
455
|
end
|
463
456
|
end
|
464
457
|
|
458
|
+
def data
|
459
|
+
return @data
|
460
|
+
end
|
461
|
+
|
465
462
|
def calcDesignLevelFromDailykWh(daily_kWh)
|
466
463
|
return UnitConversions.convert(daily_kWh * 365 * 60 / (365 * @totflow / @maxflow), 'kW', 'W')
|
467
464
|
end
|
@@ -488,7 +485,7 @@ class HotWaterSchedule
|
|
488
485
|
|
489
486
|
private
|
490
487
|
|
491
|
-
def loadMinuteDrawProfileFromFile(timestep_minutes, days_shift, weeks)
|
488
|
+
def loadMinuteDrawProfileFromFile(timestep_minutes, days_shift, weeks, dryer_exhaust_min_runtime)
|
492
489
|
data = []
|
493
490
|
if @file_prefix.nil?
|
494
491
|
return data
|
@@ -526,6 +523,17 @@ class HotWaterSchedule
|
|
526
523
|
end
|
527
524
|
end
|
528
525
|
|
526
|
+
if dryer_exhaust_min_runtime > 0
|
527
|
+
# Clothes dryer exhaust vent should operate whenever the dryer is operating,
|
528
|
+
# with a minimum runtime in minutes.
|
529
|
+
items.reverse.each_with_index do |val, i|
|
530
|
+
next unless val > 0
|
531
|
+
place = (items.length - 1) - i
|
532
|
+
last = place + dryer_exhaust_min_runtime
|
533
|
+
items.fill(1, place...last)
|
534
|
+
end
|
535
|
+
end
|
536
|
+
|
529
537
|
# Aggregate minute schedule up to the timestep level to reduce the size
|
530
538
|
# and speed of processing.
|
531
539
|
for tstep in 0..(minutes_in_year / timestep_minutes).to_i - 1
|
@@ -787,4 +795,475 @@ class Schedule
|
|
787
795
|
rule.setApplySaturday(true)
|
788
796
|
rule.setApplySunday(true)
|
789
797
|
end
|
798
|
+
|
799
|
+
def self.OccupantsWeekdayFractions
|
800
|
+
return '1.00000, 1.00000, 1.00000, 1.00000, 1.00000, 1.00000, 1.00000, 0.88310, 0.40861, 0.24189, 0.24189, 0.24189, 0.24189, 0.24189, 0.24189, 0.24189, 0.29498, 0.55310, 0.89693, 0.89693, 0.89693, 1.00000, 1.00000, 1.00000'
|
801
|
+
end
|
802
|
+
|
803
|
+
def self.OccupantsWeekendFractions
|
804
|
+
return '1.00000, 1.00000, 1.00000, 1.00000, 1.00000, 1.00000, 1.00000, 0.88310, 0.40861, 0.24189, 0.24189, 0.24189, 0.24189, 0.24189, 0.24189, 0.24189, 0.29498, 0.55310, 0.89693, 0.89693, 0.89693, 1.00000, 1.00000, 1.00000'
|
805
|
+
end
|
806
|
+
|
807
|
+
def self.OccupantsMonthlyMultipliers
|
808
|
+
return '1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0'
|
809
|
+
end
|
810
|
+
|
811
|
+
def self.LightingExteriorWeekdayFractions
|
812
|
+
# Schedules from T24 2016 Residential ACM Appendix C Table 8 Exterior Lighting Hourly Multiplier (Weekdays and weekends)
|
813
|
+
return '0.046, 0.046, 0.046, 0.046, 0.046, 0.037, 0.035, 0.034, 0.033, 0.028, 0.022, 0.015, 0.012, 0.011, 0.011, 0.012, 0.019, 0.037, 0.049, 0.065, 0.091, 0.105, 0.091, 0.063'
|
814
|
+
end
|
815
|
+
|
816
|
+
def self.LightingExteriorWeekendFractions
|
817
|
+
return '0.046, 0.046, 0.045, 0.045, 0.046, 0.045, 0.044, 0.041, 0.036, 0.03, 0.024, 0.016, 0.012, 0.011, 0.011, 0.012, 0.019, 0.038, 0.048, 0.06, 0.083, 0.098, 0.085, 0.059'
|
818
|
+
end
|
819
|
+
|
820
|
+
def self.LightingExteriorMonthlyMultipliers
|
821
|
+
return '1.248, 1.257, 0.993, 0.989, 0.993, 0.827, 0.821, 0.821, 0.827, 0.99, 0.987, 1.248'
|
822
|
+
end
|
823
|
+
|
824
|
+
def self.LightingExteriorHolidayWeekdayFractions
|
825
|
+
return '0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.008, 0.098, 0.168, 0.194, 0.284, 0.192, 0.037, 0.019'
|
826
|
+
end
|
827
|
+
|
828
|
+
def self.LightingExteriorHolidayWeekendFractions
|
829
|
+
return '0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.008, 0.098, 0.168, 0.194, 0.284, 0.192, 0.037, 0.019'
|
830
|
+
end
|
831
|
+
|
832
|
+
def self.LightingExteriorHolidayMonthlyMultipliers
|
833
|
+
return '1.248, 1.257, 0.993, 0.989, 0.993, 0.827, 0.821, 0.821, 0.827, 0.99, 0.987, 1.248'
|
834
|
+
end
|
835
|
+
|
836
|
+
def self.CookingRangeWeekdayFractions
|
837
|
+
return '0.007, 0.007, 0.004, 0.004, 0.007, 0.011, 0.025, 0.042, 0.046, 0.048, 0.042, 0.050, 0.057, 0.046, 0.057, 0.044, 0.092, 0.150, 0.117, 0.060, 0.035, 0.025, 0.016, 0.011'
|
838
|
+
end
|
839
|
+
|
840
|
+
def self.CookingRangeWeekendFractions
|
841
|
+
return '0.007, 0.007, 0.004, 0.004, 0.007, 0.011, 0.025, 0.042, 0.046, 0.048, 0.042, 0.050, 0.057, 0.046, 0.057, 0.044, 0.092, 0.150, 0.117, 0.060, 0.035, 0.025, 0.016, 0.011'
|
842
|
+
end
|
843
|
+
|
844
|
+
def self.CookingRangeMonthlyMultipliers
|
845
|
+
return '1.097, 1.097, 0.991, 0.987, 0.991, 0.890, 0.896, 0.896, 0.890, 1.085, 1.085, 1.097'
|
846
|
+
end
|
847
|
+
|
848
|
+
def self.RefrigeratorWeekdayFractions
|
849
|
+
return '0.040, 0.039, 0.038, 0.037, 0.036, 0.036, 0.038, 0.040, 0.041, 0.041, 0.040, 0.040, 0.042, 0.042, 0.042, 0.041, 0.044, 0.048, 0.050, 0.048, 0.047, 0.046, 0.044, 0.041'
|
850
|
+
end
|
851
|
+
|
852
|
+
def self.RefrigeratorWeekendFractions
|
853
|
+
return '0.040, 0.039, 0.038, 0.037, 0.036, 0.036, 0.038, 0.040, 0.041, 0.041, 0.040, 0.040, 0.042, 0.042, 0.042, 0.041, 0.044, 0.048, 0.050, 0.048, 0.047, 0.046, 0.044, 0.041'
|
854
|
+
end
|
855
|
+
|
856
|
+
def self.RefrigeratorMonthlyMultipliers
|
857
|
+
return '0.837, 0.835, 1.084, 1.084, 1.084, 1.096, 1.096, 1.096, 1.096, 0.931, 0.925, 0.837'
|
858
|
+
end
|
859
|
+
|
860
|
+
def self.ExtraRefrigeratorWeekdayFractions
|
861
|
+
return '0.040, 0.039, 0.038, 0.037, 0.036, 0.036, 0.038, 0.040, 0.041, 0.041, 0.040, 0.040, 0.042, 0.042, 0.042, 0.041, 0.044, 0.048, 0.050, 0.048, 0.047, 0.046, 0.044, 0.041'
|
862
|
+
end
|
863
|
+
|
864
|
+
def self.ExtraRefrigeratorWeekendFractions
|
865
|
+
return '0.040, 0.039, 0.038, 0.037, 0.036, 0.036, 0.038, 0.040, 0.041, 0.041, 0.040, 0.040, 0.042, 0.042, 0.042, 0.041, 0.044, 0.048, 0.050, 0.048, 0.047, 0.046, 0.044, 0.041'
|
866
|
+
end
|
867
|
+
|
868
|
+
def self.ExtraRefrigeratorMonthlyMultipliers
|
869
|
+
return '0.837, 0.835, 1.084, 1.084, 1.084, 1.096, 1.096, 1.096, 1.096, 0.931, 0.925, 0.837'
|
870
|
+
end
|
871
|
+
|
872
|
+
def self.FreezerWeekdayFractions
|
873
|
+
return '0.040, 0.039, 0.038, 0.037, 0.036, 0.036, 0.038, 0.040, 0.041, 0.041, 0.040, 0.040, 0.042, 0.042, 0.042, 0.041, 0.044, 0.048, 0.050, 0.048, 0.047, 0.046, 0.044, 0.041'
|
874
|
+
end
|
875
|
+
|
876
|
+
def self.FreezerWeekendFractions
|
877
|
+
return '0.040, 0.039, 0.038, 0.037, 0.036, 0.036, 0.038, 0.040, 0.041, 0.041, 0.040, 0.040, 0.042, 0.042, 0.042, 0.041, 0.044, 0.048, 0.050, 0.048, 0.047, 0.046, 0.044, 0.041'
|
878
|
+
end
|
879
|
+
|
880
|
+
def self.FreezerMonthlyMultipliers
|
881
|
+
return '0.837, 0.835, 1.084, 1.084, 1.084, 1.096, 1.096, 1.096, 1.096, 0.931, 0.925, 0.837'
|
882
|
+
end
|
883
|
+
|
884
|
+
def self.CeilingFanWeekdayFractions
|
885
|
+
return '0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.5, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 0.0, 0.0, 0.0, 0.0'
|
886
|
+
end
|
887
|
+
|
888
|
+
def self.CeilingFanWeekendFractions
|
889
|
+
return '0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.5, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 0.0, 0.0, 0.0, 0.0'
|
890
|
+
end
|
891
|
+
|
892
|
+
def self.CeilingFanMonthlyMultipliers(weather:)
|
893
|
+
return HVAC.get_default_ceiling_fan_months(weather).join(', ')
|
894
|
+
end
|
895
|
+
|
896
|
+
def self.PlugLoadsOtherWeekdayFractions
|
897
|
+
return '0.035, 0.033, 0.032, 0.031, 0.032, 0.033, 0.037, 0.042, 0.043, 0.043, 0.043, 0.044, 0.045, 0.045, 0.044, 0.046, 0.048, 0.052, 0.053, 0.05, 0.047, 0.045, 0.04, 0.036'
|
898
|
+
end
|
899
|
+
|
900
|
+
def self.PlugLoadsOtherWeekendFractions
|
901
|
+
return '0.035, 0.033, 0.032, 0.031, 0.032, 0.033, 0.037, 0.042, 0.043, 0.043, 0.043, 0.044, 0.045, 0.045, 0.044, 0.046, 0.048, 0.052, 0.053, 0.05, 0.047, 0.045, 0.04, 0.036'
|
902
|
+
end
|
903
|
+
|
904
|
+
def self.PlugLoadsOtherMonthlyMultipliers
|
905
|
+
return '1.248, 1.257, 0.993, 0.989, 0.993, 0.827, 0.821, 0.821, 0.827, 0.99, 0.987, 1.248'
|
906
|
+
end
|
907
|
+
|
908
|
+
def self.PlugLoadsTVWeekdayFractions
|
909
|
+
return '0.037, 0.018, 0.009, 0.007, 0.011, 0.018, 0.029, 0.040, 0.049, 0.058, 0.065, 0.072, 0.076, 0.086, 0.091, 0.102, 0.127, 0.156, 0.210, 0.294, 0.363, 0.344, 0.208, 0.090'
|
910
|
+
end
|
911
|
+
|
912
|
+
def self.PlugLoadsTVWeekendFractions
|
913
|
+
return '0.044, 0.022, 0.012, 0.008, 0.011, 0.014, 0.024, 0.043, 0.071, 0.094, 0.112, 0.123, 0.132, 0.156, 0.178, 0.196, 0.206, 0.213, 0.251, 0.330, 0.388, 0.358, 0.226, 0.103'
|
914
|
+
end
|
915
|
+
|
916
|
+
def self.PlugLoadsTVMonthlyMultipliers
|
917
|
+
return '1.137, 1.129, 0.961, 0.969, 0.961, 0.993, 0.996, 0.96, 0.993, 0.867, 0.86, 1.137'
|
918
|
+
end
|
919
|
+
|
920
|
+
def self.PlugLoadsVehicleWeekdayFractions
|
921
|
+
return '0.042, 0.042, 0.042, 0.042, 0.042, 0.042, 0.042, 0.042, 0.042, 0.042, 0.042, 0.042, 0.042, 0.042, 0.042, 0.042, 0.042, 0.042, 0.042, 0.042, 0.042, 0.042, 0.042, 0.042'
|
922
|
+
end
|
923
|
+
|
924
|
+
def self.PlugLoadsVehicleWeekendFractions
|
925
|
+
return '0.042, 0.042, 0.042, 0.042, 0.042, 0.042, 0.042, 0.042, 0.042, 0.042, 0.042, 0.042, 0.042, 0.042, 0.042, 0.042, 0.042, 0.042, 0.042, 0.042, 0.042, 0.042, 0.042, 0.042'
|
926
|
+
end
|
927
|
+
|
928
|
+
def self.PlugLoadsVehicleMonthlyMultipliers
|
929
|
+
return '1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1'
|
930
|
+
end
|
931
|
+
|
932
|
+
def self.PlugLoadsWellPumpWeekdayFractions
|
933
|
+
return '0.044, 0.023, 0.019, 0.015, 0.016, 0.018, 0.026, 0.033, 0.033, 0.032, 0.033, 0.033, 0.032, 0.032, 0.032, 0.033, 0.045, 0.057, 0.066, 0.076, 0.081, 0.086, 0.075, 0.065'
|
934
|
+
end
|
935
|
+
|
936
|
+
def self.PlugLoadsWellPumpWeekendFractions
|
937
|
+
return '0.044, 0.023, 0.019, 0.015, 0.016, 0.018, 0.026, 0.033, 0.033, 0.032, 0.033, 0.033, 0.032, 0.032, 0.032, 0.033, 0.045, 0.057, 0.066, 0.076, 0.081, 0.086, 0.075, 0.065'
|
938
|
+
end
|
939
|
+
|
940
|
+
def self.PlugLoadsWellPumpMonthlyMultipliers
|
941
|
+
return '1.154, 1.161, 1.013, 1.010, 1.013, 0.888, 0.883, 0.883, 0.888, 0.978, 0.974, 1.154'
|
942
|
+
end
|
943
|
+
|
944
|
+
def self.FuelLoadsGrillWeekdayFractions
|
945
|
+
return '0.004, 0.001, 0.001, 0.002, 0.007, 0.012, 0.029, 0.046, 0.044, 0.041, 0.044, 0.046, 0.042, 0.038, 0.049, 0.059, 0.110, 0.161, 0.115, 0.070, 0.044, 0.019, 0.013, 0.007'
|
946
|
+
end
|
947
|
+
|
948
|
+
def self.FuelLoadsGrillWeekendFractions
|
949
|
+
return '0.004, 0.001, 0.001, 0.002, 0.007, 0.012, 0.029, 0.046, 0.044, 0.041, 0.044, 0.046, 0.042, 0.038, 0.049, 0.059, 0.110, 0.161, 0.115, 0.070, 0.044, 0.019, 0.013, 0.007'
|
950
|
+
end
|
951
|
+
|
952
|
+
def self.FuelLoadsGrillMonthlyMultipliers
|
953
|
+
return '1.097, 1.097, 0.991, 0.987, 0.991, 0.890, 0.896, 0.896, 0.890, 1.085, 1.085, 1.097'
|
954
|
+
end
|
955
|
+
|
956
|
+
def self.FuelLoadsLightingWeekdayFractions
|
957
|
+
return '0.044, 0.023, 0.019, 0.015, 0.016, 0.018, 0.026, 0.033, 0.033, 0.032, 0.033, 0.033, 0.032, 0.032, 0.032, 0.033, 0.045, 0.057, 0.066, 0.076, 0.081, 0.086, 0.075, 0.065'
|
958
|
+
end
|
959
|
+
|
960
|
+
def self.FuelLoadsLightingWeekendFractions
|
961
|
+
return '0.044, 0.023, 0.019, 0.015, 0.016, 0.018, 0.026, 0.033, 0.033, 0.032, 0.033, 0.033, 0.032, 0.032, 0.032, 0.033, 0.045, 0.057, 0.066, 0.076, 0.081, 0.086, 0.075, 0.065'
|
962
|
+
end
|
963
|
+
|
964
|
+
def self.FuelLoadsLightingMonthlyMultipliers
|
965
|
+
return '1.154, 1.161, 1.013, 1.010, 1.013, 0.888, 0.883, 0.883, 0.888, 0.978, 0.974, 1.154'
|
966
|
+
end
|
967
|
+
|
968
|
+
def self.FuelLoadsFireplaceWeekdayFractions
|
969
|
+
return '0.044, 0.023, 0.019, 0.015, 0.016, 0.018, 0.026, 0.033, 0.033, 0.032, 0.033, 0.033, 0.032, 0.032, 0.032, 0.033, 0.045, 0.057, 0.066, 0.076, 0.081, 0.086, 0.075, 0.065'
|
970
|
+
end
|
971
|
+
|
972
|
+
def self.FuelLoadsFireplaceWeekendFractions
|
973
|
+
return '0.044, 0.023, 0.019, 0.015, 0.016, 0.018, 0.026, 0.033, 0.033, 0.032, 0.033, 0.033, 0.032, 0.032, 0.032, 0.033, 0.045, 0.057, 0.066, 0.076, 0.081, 0.086, 0.075, 0.065'
|
974
|
+
end
|
975
|
+
|
976
|
+
def self.FuelLoadsFireplaceMonthlyMultipliers
|
977
|
+
return '1.154, 1.161, 1.013, 1.010, 1.013, 0.888, 0.883, 0.883, 0.888, 0.978, 0.974, 1.154'
|
978
|
+
end
|
979
|
+
|
980
|
+
def self.PoolPumpWeekdayFractions
|
981
|
+
return '0.003, 0.003, 0.003, 0.004, 0.008, 0.015, 0.026, 0.044, 0.084, 0.121, 0.127, 0.121, 0.120, 0.090, 0.075, 0.061, 0.037, 0.023, 0.013, 0.008, 0.004, 0.003, 0.003, 0.003'
|
982
|
+
end
|
983
|
+
|
984
|
+
def self.PoolPumpWeekendFractions
|
985
|
+
return '0.003, 0.003, 0.003, 0.004, 0.008, 0.015, 0.026, 0.044, 0.084, 0.121, 0.127, 0.121, 0.120, 0.090, 0.075, 0.061, 0.037, 0.023, 0.013, 0.008, 0.004, 0.003, 0.003, 0.003'
|
986
|
+
end
|
987
|
+
|
988
|
+
def self.PoolPumpMonthlyMultipliers
|
989
|
+
return '1.154, 1.161, 1.013, 1.010, 1.013, 0.888, 0.883, 0.883, 0.888, 0.978, 0.974, 1.154'
|
990
|
+
end
|
991
|
+
|
992
|
+
def self.PoolHeaterWeekdayFractions
|
993
|
+
return '0.003, 0.003, 0.003, 0.004, 0.008, 0.015, 0.026, 0.044, 0.084, 0.121, 0.127, 0.121, 0.120, 0.090, 0.075, 0.061, 0.037, 0.023, 0.013, 0.008, 0.004, 0.003, 0.003, 0.003'
|
994
|
+
end
|
995
|
+
|
996
|
+
def self.PoolHeaterWeekendFractions
|
997
|
+
return '0.003, 0.003, 0.003, 0.004, 0.008, 0.015, 0.026, 0.044, 0.084, 0.121, 0.127, 0.121, 0.120, 0.090, 0.075, 0.061, 0.037, 0.023, 0.013, 0.008, 0.004, 0.003, 0.003, 0.003'
|
998
|
+
end
|
999
|
+
|
1000
|
+
def self.PoolHeaterMonthlyMultipliers
|
1001
|
+
return '1.154, 1.161, 1.013, 1.010, 1.013, 0.888, 0.883, 0.883, 0.888, 0.978, 0.974, 1.154'
|
1002
|
+
end
|
1003
|
+
|
1004
|
+
def self.HotTubPumpWeekdayFractions
|
1005
|
+
return '0.024, 0.029, 0.024, 0.029, 0.047, 0.067, 0.057, 0.024, 0.024, 0.019, 0.015, 0.014, 0.014, 0.014, 0.024, 0.058, 0.126, 0.122, 0.068, 0.061, 0.051, 0.043, 0.024, 0.024'
|
1006
|
+
end
|
1007
|
+
|
1008
|
+
def self.HotTubPumpWeekendFractions
|
1009
|
+
return '0.024, 0.029, 0.024, 0.029, 0.047, 0.067, 0.057, 0.024, 0.024, 0.019, 0.015, 0.014, 0.014, 0.014, 0.024, 0.058, 0.126, 0.122, 0.068, 0.061, 0.051, 0.043, 0.024, 0.024'
|
1010
|
+
end
|
1011
|
+
|
1012
|
+
def self.HotTubPumpMonthlyMultipliers
|
1013
|
+
return '0.921, 0.928, 0.921, 0.915, 0.921, 1.160, 1.158, 1.158, 1.160, 0.921, 0.915, 0.921'
|
1014
|
+
end
|
1015
|
+
|
1016
|
+
def self.HotTubHeaterWeekdayFractions
|
1017
|
+
return '0.024, 0.029, 0.024, 0.029, 0.047, 0.067, 0.057, 0.024, 0.024, 0.019, 0.015, 0.014, 0.014, 0.014, 0.024, 0.058, 0.126, 0.122, 0.068, 0.061, 0.051, 0.043, 0.024, 0.024'
|
1018
|
+
end
|
1019
|
+
|
1020
|
+
def self.HotTubHeaterWeekendFractions
|
1021
|
+
return '0.024, 0.029, 0.024, 0.029, 0.047, 0.067, 0.057, 0.024, 0.024, 0.019, 0.015, 0.014, 0.014, 0.014, 0.024, 0.058, 0.126, 0.122, 0.068, 0.061, 0.051, 0.043, 0.024, 0.024'
|
1022
|
+
end
|
1023
|
+
|
1024
|
+
def self.HotTubHeaterMonthlyMultipliers
|
1025
|
+
return '0.837, 0.835, 1.084, 1.084, 1.084, 1.096, 1.096, 1.096, 1.096, 0.931, 0.925, 0.837'
|
1026
|
+
end
|
1027
|
+
end
|
1028
|
+
|
1029
|
+
class SchedulesFile
|
1030
|
+
def initialize(runner:,
|
1031
|
+
model:,
|
1032
|
+
schedules_path:,
|
1033
|
+
col_names:,
|
1034
|
+
**remainder)
|
1035
|
+
|
1036
|
+
@validated = true
|
1037
|
+
@runner = runner
|
1038
|
+
@model = model
|
1039
|
+
@schedules_path = schedules_path
|
1040
|
+
@external_file = get_external_file
|
1041
|
+
import(col_names: col_names)
|
1042
|
+
end
|
1043
|
+
|
1044
|
+
def validated?
|
1045
|
+
return @validated
|
1046
|
+
end
|
1047
|
+
|
1048
|
+
def schedules
|
1049
|
+
return @schedules
|
1050
|
+
end
|
1051
|
+
|
1052
|
+
def get_col_index(col_name:)
|
1053
|
+
headers = CSV.open(@schedules_path, 'r') { |csv| csv.first }
|
1054
|
+
col_num = headers.index(col_name)
|
1055
|
+
return col_num
|
1056
|
+
end
|
1057
|
+
|
1058
|
+
def get_col_name(col_index:)
|
1059
|
+
headers = CSV.open(@schedules_path, 'r') { |csv| csv.first }
|
1060
|
+
col_name = headers[col_index]
|
1061
|
+
return col_name
|
1062
|
+
end
|
1063
|
+
|
1064
|
+
def create_schedule_file(col_name:,
|
1065
|
+
rows_to_skip: 1)
|
1066
|
+
@model.getScheduleFiles.each do |schedule_file|
|
1067
|
+
next if schedule_file.name.to_s != col_name
|
1068
|
+
|
1069
|
+
return schedule_file
|
1070
|
+
end
|
1071
|
+
|
1072
|
+
if @schedules[col_name].nil?
|
1073
|
+
@runner.registerError("Could not find the '#{col_name}' schedule.")
|
1074
|
+
return false
|
1075
|
+
end
|
1076
|
+
|
1077
|
+
col_index = get_col_index(col_name: col_name)
|
1078
|
+
year_description = @model.getYearDescription
|
1079
|
+
num_hrs_in_year = Constants.NumHoursInYear(year_description.isLeapYear)
|
1080
|
+
schedule_length = @schedules[col_name].length
|
1081
|
+
min_per_item = 60.0 / (schedule_length / num_hrs_in_year)
|
1082
|
+
|
1083
|
+
schedule_file = OpenStudio::Model::ScheduleFile.new(@external_file)
|
1084
|
+
schedule_file.setName(col_name)
|
1085
|
+
schedule_file.setColumnNumber(col_index + 1)
|
1086
|
+
schedule_file.setRowstoSkipatTop(rows_to_skip)
|
1087
|
+
schedule_file.setNumberofHoursofData(num_hrs_in_year.to_i)
|
1088
|
+
schedule_file.setMinutesperItem("#{min_per_item.to_i}")
|
1089
|
+
|
1090
|
+
return schedule_file
|
1091
|
+
end
|
1092
|
+
|
1093
|
+
# the equivalent number of hours in the year, if the schedule was at full load (1.0)
|
1094
|
+
def annual_equivalent_full_load_hrs(col_name:)
|
1095
|
+
# import(col_names: [col_name])
|
1096
|
+
|
1097
|
+
year_description = @model.getYearDescription
|
1098
|
+
num_hrs_in_year = Constants.NumHoursInYear(year_description.isLeapYear)
|
1099
|
+
schedule_length = @schedules[col_name].length
|
1100
|
+
min_per_item = 60.0 / (schedule_length / num_hrs_in_year)
|
1101
|
+
|
1102
|
+
ann_equiv_full_load_hrs = @schedules[col_name].reduce(:+) / (60.0 / min_per_item)
|
1103
|
+
|
1104
|
+
return ann_equiv_full_load_hrs
|
1105
|
+
end
|
1106
|
+
|
1107
|
+
# the power in watts the equipment needs to consume so that, if it were to run annual_equivalent_full_load_hrs hours,
|
1108
|
+
# it would consume the annual_kwh energy in the year. Essentially, returns the watts for the equipment when schedule
|
1109
|
+
# is at 1.0, so that, for the given schedule values, the equipment will consume annual_kwh energy in a year.
|
1110
|
+
def calc_design_level_from_annual_kwh(col_name:,
|
1111
|
+
annual_kwh:)
|
1112
|
+
|
1113
|
+
ann_equiv_full_load_hrs = annual_equivalent_full_load_hrs(col_name: col_name)
|
1114
|
+
design_level = annual_kwh * 1000.0 / ann_equiv_full_load_hrs # W
|
1115
|
+
|
1116
|
+
return design_level
|
1117
|
+
end
|
1118
|
+
|
1119
|
+
# Similar to ann_equiv_full_load_hrs, but for thermal energy
|
1120
|
+
def calc_design_level_from_annual_therm(col_name:,
|
1121
|
+
annual_therm:)
|
1122
|
+
|
1123
|
+
annual_kwh = UnitConversions.convert(annual_therm, 'therm', 'kWh')
|
1124
|
+
design_level = calc_design_level_from_annual_kwh(col_name: col_name, annual_kwh: annual_kwh)
|
1125
|
+
|
1126
|
+
return design_level
|
1127
|
+
end
|
1128
|
+
|
1129
|
+
# similar to the calc_design_level_from_annual_kwh, but use daily_kwh instead of annual_kwh to calculate the design
|
1130
|
+
# level
|
1131
|
+
def calc_design_level_from_daily_kwh(col_name:,
|
1132
|
+
daily_kwh:)
|
1133
|
+
full_load_hrs = annual_equivalent_full_load_hrs(col_name: col_name)
|
1134
|
+
year_description = @model.getYearDescription
|
1135
|
+
num_days_in_year = Constants.NumDaysInYear(year_description.isLeapYear)
|
1136
|
+
daily_full_load_hrs = full_load_hrs / num_days_in_year
|
1137
|
+
design_level = UnitConversions.convert(daily_kwh / daily_full_load_hrs, 'kW', 'W')
|
1138
|
+
|
1139
|
+
return design_level
|
1140
|
+
end
|
1141
|
+
|
1142
|
+
# thermal equivalent of calc_design_level_from_daily_kwh
|
1143
|
+
def calc_design_level_from_daily_therm(col_name:,
|
1144
|
+
daily_therm:)
|
1145
|
+
daily_kwh = UnitConversions.convert(daily_therm, 'therm', 'kWh')
|
1146
|
+
design_level = calc_design_level_from_daily_kwh(col_name: col_name, daily_kwh: daily_kwh)
|
1147
|
+
return design_level
|
1148
|
+
end
|
1149
|
+
|
1150
|
+
# similar to calc_design_level_from_daily_kwh but for water usage
|
1151
|
+
def calc_peak_flow_from_daily_gpm(col_name:, daily_water:)
|
1152
|
+
ann_equiv_full_load_hrs = annual_equivalent_full_load_hrs(col_name: col_name)
|
1153
|
+
year_description = @model.getYearDescription
|
1154
|
+
num_days_in_year = Constants.NumDaysInYear(year_description.isLeapYear)
|
1155
|
+
daily_full_load_hrs = ann_equiv_full_load_hrs / num_days_in_year
|
1156
|
+
peak_flow = daily_water / daily_full_load_hrs # gallons_per_hour
|
1157
|
+
peak_flow /= 60 # convert to gallons per minute
|
1158
|
+
peak_flow = UnitConversions.convert(peak_flow, 'gal/min', 'm^3/s') # convert to m^3/s
|
1159
|
+
return peak_flow
|
1160
|
+
end
|
1161
|
+
|
1162
|
+
# get daily gallons from the peak flow rate
|
1163
|
+
def calc_daily_gpm_from_peak_flow(col_name:, peak_flow:)
|
1164
|
+
ann_equiv_full_load_hrs = annual_equivalent_full_load_hrs(col_name: col_name)
|
1165
|
+
year_description = @model.getYearDescription
|
1166
|
+
num_days_in_year = Constants.NumDaysInYear(year_description.isLeapYear)
|
1167
|
+
peak_flow = UnitConversions.convert(peak_flow, 'm^3/s', 'gal/min')
|
1168
|
+
daily_gallons = (ann_equiv_full_load_hrs * 60 * peak_flow) / num_days_in_year
|
1169
|
+
return daily_gallons
|
1170
|
+
end
|
1171
|
+
|
1172
|
+
def validate_schedule(col_name:,
|
1173
|
+
values:)
|
1174
|
+
|
1175
|
+
year_description = @model.getYearDescription
|
1176
|
+
num_hrs_in_year = Constants.NumHoursInYear(year_description.isLeapYear)
|
1177
|
+
schedule_length = values.length
|
1178
|
+
|
1179
|
+
if values.max > 1
|
1180
|
+
@runner.registerError("The max value of schedule '#{col_name}' is greater than 1.")
|
1181
|
+
@validated = false
|
1182
|
+
end
|
1183
|
+
|
1184
|
+
min_per_item = 60.0 / (schedule_length / num_hrs_in_year)
|
1185
|
+
unless [1, 2, 3, 4, 5, 6, 10, 12, 15, 20, 30, 60].include? min_per_item
|
1186
|
+
@runner.registerError("Calculated an invalid schedule min_per_item=#{min_per_item}.")
|
1187
|
+
@validated = false
|
1188
|
+
end
|
1189
|
+
end
|
1190
|
+
|
1191
|
+
def external_file
|
1192
|
+
return @external_file
|
1193
|
+
end
|
1194
|
+
|
1195
|
+
def get_external_file
|
1196
|
+
if File.exist? @schedules_path
|
1197
|
+
external_file = OpenStudio::Model::ExternalFile::getExternalFile(@model, @schedules_path)
|
1198
|
+
if external_file.is_initialized
|
1199
|
+
external_file = external_file.get
|
1200
|
+
end
|
1201
|
+
end
|
1202
|
+
return external_file
|
1203
|
+
end
|
1204
|
+
|
1205
|
+
def set_vacancy(col_names:)
|
1206
|
+
return unless @schedules.keys.include? 'vacancy'
|
1207
|
+
return if @schedules['vacancy'].all? { |i| i == 0 }
|
1208
|
+
|
1209
|
+
@schedules[col_names[0]].each_with_index do |ts, i|
|
1210
|
+
col_names.each do |col_name|
|
1211
|
+
@schedules[col_name][i] *= (1.0 - @schedules['vacancy'][i])
|
1212
|
+
end
|
1213
|
+
end
|
1214
|
+
|
1215
|
+
update(col_names: col_names)
|
1216
|
+
end
|
1217
|
+
|
1218
|
+
def import(col_names:)
|
1219
|
+
@schedules = {}
|
1220
|
+
col_names += ['vacancy']
|
1221
|
+
columns = CSV.read(@schedules_path).transpose
|
1222
|
+
columns.each do |col|
|
1223
|
+
next if not col_names.include? col[0]
|
1224
|
+
|
1225
|
+
values = col[1..-1].reject { |v| v.nil? }
|
1226
|
+
values = values.map { |v| v.to_f }
|
1227
|
+
validate_schedule(col_name: col[0], values: values)
|
1228
|
+
@schedules[col[0]] = values
|
1229
|
+
end
|
1230
|
+
end
|
1231
|
+
|
1232
|
+
def export
|
1233
|
+
return false if @schedules_path.nil?
|
1234
|
+
|
1235
|
+
CSV.open(@schedules_path, 'wb') do |csv|
|
1236
|
+
csv << @schedules.keys
|
1237
|
+
rows = @schedules.values.transpose
|
1238
|
+
rows.each do |row|
|
1239
|
+
csv << row
|
1240
|
+
end
|
1241
|
+
end
|
1242
|
+
|
1243
|
+
return true
|
1244
|
+
end
|
1245
|
+
|
1246
|
+
def update(col_names:)
|
1247
|
+
return false if @schedules_path.nil?
|
1248
|
+
|
1249
|
+
# need to update schedules csv in generated_files folder (alongside run folder) since this is what the simulation points to
|
1250
|
+
schedules_path = File.expand_path(File.join(File.dirname(@schedules_path), '../generated_files', File.basename(@schedules_path)))
|
1251
|
+
|
1252
|
+
columns = CSV.read(schedules_path).transpose
|
1253
|
+
col_names.each do |col_name|
|
1254
|
+
col_num = get_col_index(col_name: col_name)
|
1255
|
+
columns.each_with_index do |col, i|
|
1256
|
+
next unless i == col_num
|
1257
|
+
|
1258
|
+
columns[i][1..-1] = @schedules[col_name]
|
1259
|
+
end
|
1260
|
+
end
|
1261
|
+
|
1262
|
+
rows = columns.transpose
|
1263
|
+
CSV.open(schedules_path, 'wb') do |csv|
|
1264
|
+
rows.each do |row|
|
1265
|
+
csv << row
|
1266
|
+
end
|
1267
|
+
end
|
1268
|
+
end
|
790
1269
|
end
|