├── .gitignore
├── .vscode
└── settings.json
├── LICENSE.md
├── README.md
└── lib
└── measures
├── add_heat_recovery_chiller
├── LICENSE.md
├── README.md
├── README.md.erb
├── docs
│ └── .gitkeep
├── measure.rb
├── measure.xml
└── tests
│ ├── 95.epw
│ ├── 95.osm
│ └── AddHeatRecoveryChiller_Test.rb
├── add_hourly_meters
├── LICENSE.md
├── measure.rb
├── measure.xml
└── tests
│ └── AddHourlyMeters_Test.rb
├── add_interval_schedule_from_file
├── LICENSE.md
├── measure.rb
├── measure.xml
└── tests
│ ├── 15min_values.csv
│ ├── AddIntervalScheduleFromFile_Test.rb
│ ├── bad_hourly_values.csv
│ ├── hourly_values.csv
│ └── leap_year_hourly_values.csv
├── add_waterside_economizer
├── LICENSE.md
├── measure.rb
├── measure.xml
└── tests
│ ├── AddWatersideEconomizer_Test.rb
│ └── office.osm
├── add_wind_and_stack_open_area
├── LICENSE.md
├── README.md
├── measure.rb
├── measure.xml
└── tests
│ ├── AddWindAndStackOpenArea_Test.rb
│ └── Office.osm
├── add_wind_and_stack_open_area_legacy
├── README.md
├── measure.rb
├── measure.xml
└── tests
│ ├── AddWindAndStackOpenArea_Test.rb
│ └── Office.osm
├── assign_zones_to_air_loop_from_csv
├── LICENSE.md
├── measure.rb
├── measure.xml
└── tests
│ ├── AssignZonesToAirLoopFromCSV_Test.rb
│ ├── ahu_list_example.csv
│ ├── ahu_list_example_mislabeled_air_loop.csv
│ ├── ahu_list_example_mislabeled_zone.csv
│ ├── ahu_list_example_missing_air_loop.csv
│ └── office.osm
├── change_fan_variable_volume_coefficients
├── LICENSE.md
├── measure.rb
├── measure.xml
├── resources
│ ├── Variable Volume Fan Curve Coefficients Comparison.xlsx
│ └── Variable Volume Fan Curve Coefficients.pdf
└── tests
│ ├── ChangeFanVariableVolumeCoefficients_Test.rb
│ ├── OfficeWithHVAC.osm
│ └── OfficeWithoutHVAC.osm
├── change_the_room_type
├── LICENSE.md
├── measure.rb
├── measure.xml
└── tests
│ ├── TestModel.osm
│ └── change_the_room_type_test.rb
├── detailed_hvac_viewer
├── README.md
├── README.md.erb
├── measure.rb
├── measure.xml
├── resources
│ ├── README.md
│ ├── images
│ │ ├── Coil_Cooling_WaterToAirHeatPump_VariableSpeedEquationFit.png
│ │ ├── Coil_Heating_WaterToAirHeatPump_VariableSpeedEquationFit.png
│ │ ├── Coil_Heating_Water_Baseboard_Radiant.png
│ │ ├── OAMixer.png
│ │ ├── air_cooled.png
│ │ ├── air_terminal_inlet_mixer.png
│ │ ├── airterminal_dualduct_constantvolume.png
│ │ ├── airterminal_dualduct_vav.png
│ │ ├── airterminal_dualduct_vav_outdoorair.png
│ │ ├── airterminal_fourpipebeam.png
│ │ ├── baseboard_electric.png
│ │ ├── baseboard_rad_convect_electric.png
│ │ ├── baseboard_rad_convect_water.png
│ │ ├── baseboard_water.png
│ │ ├── boiler.png
│ │ ├── boiler_steam.png
│ │ ├── cav_reheat.png
│ │ ├── centralheatpumpsystem.png
│ │ ├── chilled_beam.png
│ │ ├── chiller_absorption_direct.png
│ │ ├── chiller_absorption_indirect.png
│ │ ├── chiller_air.png
│ │ ├── coil_ht_dx_singlespeed.png
│ │ ├── coil_system_coolingwater_heat_exchanger.png
│ │ ├── coilcooling_water_panel_radiant.png
│ │ ├── coilcoolingchilledbeam.png
│ │ ├── coilcoolingfourpipebeam.png
│ │ ├── coilcoolinglowtemprad_constflow.png
│ │ ├── coilcoolinglowtemprad_varflow.png
│ │ ├── coilheatingdesuperheater.png
│ │ ├── coilheatingfourpipebeam.png
│ │ ├── coilheatinglowtemprad_constflow.png
│ │ ├── coilheatinglowtemprad_varflow.png
│ │ ├── coilheatingwater_baseboard.png
│ │ ├── coilsystem_cooling_dx.png
│ │ ├── compressor.png
│ │ ├── condenser_cascade.png
│ │ ├── condensor.png
│ │ ├── cool_coil.png
│ │ ├── cool_coil_dx_vari_speed.png
│ │ ├── cooling_tower.png
│ │ ├── cooling_tower_2speed.png
│ │ ├── cooling_tower_variable.png
│ │ ├── dehumidifier_dx.png
│ │ ├── direct-air.png
│ │ ├── directEvap.png
│ │ ├── districtcooling.png
│ │ ├── districtheating.png
│ │ ├── duct.png
│ │ ├── dx_cooling_multispeed.png
│ │ ├── dxcoolingcoil_2speed.png
│ │ ├── dxcoolingcoil_2stage_humidity.png
│ │ ├── dxcoolingcoil_singlespeed.png
│ │ ├── electric_furnace.png
│ │ ├── electric_humidifier.png
│ │ ├── energy_recov_vent.png
│ │ ├── evap_cooled.png
│ │ ├── evap_fluid_cooler.png
│ │ ├── evap_fluid_cooler_two_speed.png
│ │ ├── fan_componentmodel.png
│ │ ├── fan_constant.png
│ │ ├── fan_on_off.png
│ │ ├── fan_systemmodel.png
│ │ ├── fan_variable.png
│ │ ├── fan_zoneexhaust.png
│ │ ├── fluid_cooler_single.png
│ │ ├── fluid_cooler_two.png
│ │ ├── fluid_hx.png
│ │ ├── four_pipe_fan_coil.png
│ │ ├── furnace.png
│ │ ├── furnace_multi_stage.png
│ │ ├── gas_humidifier.png
│ │ ├── generator_fuelcell_exhaustgastowaterheatexchanger.png
│ │ ├── generator_microturbine_heatrecovery.png
│ │ ├── ground_heat_exchanger_horizontal.png
│ │ ├── ground_heat_exchanger_vertical.png
│ │ ├── headered_pumps_constant.png
│ │ ├── headered_pumps_variable.png
│ │ ├── heat_coil-uht.png
│ │ ├── heat_coil.png
│ │ ├── heat_pump3.png
│ │ ├── heat_transfer_outdoorair.png
│ │ ├── heatpump_watertowater_equationfit_cooling.png
│ │ ├── heatpump_watertowater_equationfit_heating.png
│ │ ├── hightempradiant.png
│ │ ├── ht_coil_dx_vari.png
│ │ ├── indirectEvap.png
│ │ ├── lowtempradiant_constflow.png
│ │ ├── lowtempradiant_varflow.png
│ │ ├── mechanical-sub-cooler.png
│ │ ├── missing_icon.png
│ │ ├── mixer.png
│ │ ├── parallel_fan_terminal.png
│ │ ├── pipe.png
│ │ ├── pipe_adiabatic.png
│ │ ├── pipe_indoor.png
│ │ ├── pipe_outdoor.png
│ │ ├── plant_profile.png
│ │ ├── plant_temp_source.png
│ │ ├── pthp.png
│ │ ├── pump_constant.png
│ │ ├── pump_variable.png
│ │ ├── refrigeration_system.png
│ │ ├── return_plenum.png
│ │ ├── series_fan_terminal.png
│ │ ├── sewer_alone.png
│ │ ├── sewer_over.png
│ │ ├── sewer_press.png
│ │ ├── shower.png
│ │ ├── single_ducts_constant_vol_4pipe.png
│ │ ├── sink.png
│ │ ├── slhx.png
│ │ ├── solarcollector_flatplate_photovoltaicthermal.png
│ │ ├── solarcollector_flatplate_water.png
│ │ ├── solarcollector_integralstorage.png
│ │ ├── splitter.png
│ │ ├── supply_mixer.png
│ │ ├── supply_plenum.png
│ │ ├── supply_splitter.png
│ │ ├── swimming_pool.png
│ │ ├── system_type_1.png
│ │ ├── system_type_2.png
│ │ ├── tempering_valve.png
│ │ ├── thermal_storage_ice.png
│ │ ├── thermal_storage_strat.png
│ │ ├── toilet.png
│ │ ├── unit_ventilator.png
│ │ ├── unitary_system.png
│ │ ├── user_defined.png
│ │ ├── vav-reheat.png
│ │ ├── vav_noreheat.png
│ │ ├── vrf_outdoor.png
│ │ ├── vrf_transfer.png
│ │ ├── vrf_unit.png
│ │ ├── wahpDXCC.png
│ │ ├── wahpDXHC.png
│ │ ├── walkin_case.png
│ │ ├── water_connection.png
│ │ ├── water_cooled.png
│ │ ├── water_heater_mixed.png
│ │ ├── water_heater_stratified.png
│ │ ├── water_main_alone.png
│ │ ├── water_main_alone_over.png
│ │ ├── water_main_alone_press.png
│ │ ├── watertoairHP.png
│ │ ├── zone.png
│ │ ├── zone_tx.png
│ │ ├── zonehvac_coolingpanel_radiantconvective_water.png
│ │ └── zonehvac_low_temperature_radiant_electric.png
│ └── report.html.erb
└── tests
│ ├── USA_IL_Chicago-OHare.Intl.AP.725300_TMY3.epw
│ ├── d3_static_working.html
│ ├── detailed_hvac_viewer_test.rb
│ └── office_chicago_pvav.osm
├── export_meter_to_csv
├── LICENSE.md
├── measure.rb
├── measure.xml
└── tests
│ ├── ExportMetertoCSV_test.rb
│ ├── example_model.osm
│ └── example_model_weather.epw
├── get_lat_long_from_ground_exposed_floors
├── LICENSE.md
├── measure.rb
├── measure.xml
└── tests
│ ├── example_model.osm
│ ├── get_lat_long_from_ground_exposed_floors_test.rb
│ └── secondary_school.osm
├── ideal_air_loads_zone_hvac
├── LICENSE.md
├── measure.rb
├── measure.xml
└── tests
│ ├── IdealAirLoadsZoneHVAC_Test.rb
│ ├── office.osm
│ └── office_no_design_oa.osm
├── ideal_loads_options
├── LICENSE.md
├── README.txt
├── measure.rb
├── measure.xml
└── tests
│ ├── IdealLoadsOptions_Test.rb
│ ├── test_v2.4_office_ideal.osm
│ ├── test_v2.4_office_ideal_humidistats.osm
│ ├── test_v2.4_office_ideal_nodesignOA.osm
│ └── test_v2.4_office_no_ideal.osm
├── meter_custom
├── LICENSE.md
├── measure.rb
├── measure.xml
└── tests
│ ├── example_file.csv
│ └── meter_custom_test.rb
├── remove_hvac_systems
├── LICENSE.md
├── measure.rb
├── measure.xml
└── tests
│ ├── example_model.osm
│ └── remove_hvac_systems_test.rb
├── rename_air_loop_objects_by_air_loop_name
├── LICENSE.md
├── measure.rb
├── measure.xml
└── tests
│ ├── RenameAirLoopObjectsByAirLoopName_Test.rb
│ └── office.osm
├── rename_vrf_terminal
├── LICENSE.md
├── measure.rb
├── measure.xml
└── tests
│ ├── example_model.osm
│ ├── example_model
│ └── workflow.osw
│ └── rename_vrf_terminal_test.rb
├── report_effective_number_of_spaces_and_avg_space_size_per_space_type
├── LICENSE.md
├── measure.rb
├── measure.xml
└── tests
│ ├── example_model.osm
│ └── report_effective_number_of_spaces_and_avg_space_size_per_space_type_test.rb
├── set_building_to_construction_set
├── LICENSE.md
├── measure.rb
├── measure.xml
└── tests
│ ├── TestModel.osm
│ └── new_measure_test.rb
├── set_output_table_to_IP_units
├── LICENSE.md
├── measure.rb
├── measure.xml
└── tests
│ ├── SetOutputTableToIPUnits_Test.rb
│ └── example.idf
├── set_zone_height_volume_and_area
├── LICENSE.md
├── measure.rb
├── measure.xml
└── tests
│ ├── example_model.osm
│ └── set_zone_height_volume_and_area_test.rb
├── split_windows_into_horizontal_segments
├── LICENSE.md
├── README.md
├── README.md.erb
├── docs
│ └── .gitkeep
├── measure.rb
├── measure.xml
└── tests
│ ├── example_model.osm
│ └── split_windows_into_horizontal_segments_test.rb
├── surface_matching_diagnostic
├── LICENSE.md
├── SurfaceMatching_Test.rb
├── measure.rb
├── measure.xml
└── tests
│ ├── SurfaceMatching_Test.rb
│ ├── SurfaceMatching_test.osm
│ └── temp_test.osm
└── swap_construction_in_construction_set
├── LICENSE.md
├── measure.rb
├── measure.xml
└── tests
├── SwapConstructionInConstructionSet_Test.rb
└── office.osm
/.gitignore:
--------------------------------------------------------------------------------
1 | .idea
2 | .DS_Store
3 | **/tests/output/
--------------------------------------------------------------------------------
/.vscode/settings.json:
--------------------------------------------------------------------------------
1 | {
2 | "files.associations": {
3 | "*.html.erb": "html"
4 | }
5 | }
--------------------------------------------------------------------------------
/LICENSE.md:
--------------------------------------------------------------------------------
1 | Copyright 2014-2024 Building Performance Simulation
2 |
3 | Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
4 |
5 | The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
6 |
7 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | # openstudio-measures
2 |
3 | [](https://gitter.im/BuildingPerformanceSimulation/openstudio-measures?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge)
4 |
5 | ---
6 |
7 | ## Purpose
8 | Community development and discussion of OpenStudio Measures.
9 |
10 | ## Contributing
11 |
12 | ### Report a bug or request a feature in an existing measure
13 | - [Submit an issue](https://github.com/BuildingPerformanceSimulation/openstudio-measures/issues) on the issues tab. Tag your issue as a *bug* for bugs and *enhancement* for feature requests.
14 |
15 | ### Write a measure
16 | - Join or request to be added as a contributor to this GitHub repository. You can post in our [Gitter room](https://gitter.im/BuildingPerformanceSimulation/openstudio-measures) to be added.
17 | - Create a new branch *new/my_measure* forked from the develop branch and work on your measure there. When finished, submit a pull request to the develop branch. Once merged, you or an admin can upload it to [BCL](bcl.nrel.gov).
18 |
19 | *When is a measure finished?*
20 |
21 | A measure is complete once you've:
22 | - Written the measure and tested it with the OpenStudio App to confirm it performs as expected
23 | - Written measure tests for a range of use cases with both good and bad measure arguments
24 | - Generated the measure.xml file and written informative user and modeler descriptions
25 | - Included a README file and any other documentation
26 |
27 |
--------------------------------------------------------------------------------
/lib/measures/add_heat_recovery_chiller/LICENSE.md:
--------------------------------------------------------------------------------
1 | Copyright 2014-2024 Building Performance Simulation
2 |
3 | Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
4 |
5 | The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
6 |
7 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
--------------------------------------------------------------------------------
/lib/measures/add_heat_recovery_chiller/README.md.erb:
--------------------------------------------------------------------------------
1 | <%#= README.md.erb is used to auto-generate README.md. %>
2 | <%#= To manually maintain README.md throw away README.md.erb and manually edit README.md %>
3 | ###### (Automatically generated documentation)
4 |
5 | # <%= name %>
6 |
7 | ## Description
8 | <%= description %>
9 |
10 | ## Modeler Description
11 | <%= modelerDescription %>
12 |
13 | ## Measure Type
14 | <%= measureType %>
15 |
16 | ## Taxonomy
17 | <%= taxonomy %>
18 |
19 | ## Arguments
20 |
21 | <% arguments.each do |argument| %>
22 | ### <%= argument[:display_name] %>
23 | <%= argument[:description] %>
24 | **Name:** <%= argument[:name] %>,
25 | **Type:** <%= argument[:type] %>,
26 | **Units:** <%= argument[:units] %>,
27 | **Required:** <%= argument[:required] %>,
28 | **Model Dependent:** <%= argument[:model_dependent] %>
29 | <% if argument[:type] == "Choice" && !argument[:model_dependent]%>
30 | **Choice Display Names** <%= argument[:choice_display_names] %>
31 | <% end %>
32 | <% end %>
33 |
34 | <% if arguments.size == 0 %>
35 | <%= "This measure does not have any user arguments" %>
36 | <% end %>
37 |
38 | <% if outputs.size > 0 %>
39 | ## Outputs
40 | <% output_names = [] %>
41 | <% outputs.each do |output| %>
42 | <% output_names << output[:display_name] %>
43 | <% end %>
44 | <%= output_names.join(", ") %>
45 | <% end %>
46 |
--------------------------------------------------------------------------------
/lib/measures/add_heat_recovery_chiller/docs/.gitkeep:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/BuildingPerformanceSimulation/openstudio-measures/6e4e351a1f0eee2932c7a1be3cc2d3562eed3231/lib/measures/add_heat_recovery_chiller/docs/.gitkeep
--------------------------------------------------------------------------------
/lib/measures/add_hourly_meters/LICENSE.md:
--------------------------------------------------------------------------------
1 | Copyright 2014-2021 Building Performance Simulation
2 |
3 | Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
4 |
5 | The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
6 |
7 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
--------------------------------------------------------------------------------
/lib/measures/add_hourly_meters/measure.rb:
--------------------------------------------------------------------------------
1 | class AddHourlyMeters < OpenStudio::Ruleset::ModelUserScript
2 |
3 | #define the name that a user will see, this method may be deprecated as
4 | #the display name in PAT comes from the name field in measure.xml
5 | def name
6 | return "Add Hourly Meters"
7 | end
8 |
9 | #define the arguments that the user will input
10 | def arguments(model)
11 | args = OpenStudio::Ruleset::OSArgumentVector.new
12 | return args
13 | end #end the arguments method
14 |
15 | #define what happens when the measure is run
16 | def run(model, runner, user_arguments)
17 | super(model, runner, user_arguments)
18 |
19 | #use the built-in error checking
20 | if not runner.validateUserArguments(arguments(model), user_arguments)
21 | return false
22 | end
23 |
24 | meter_names = ["Electricity:Facility","ExteriorLights:Electricity","InteriorLights:Electricity","InteriorEquipment:Electricity","ExteriorEquipment:Electricity","Fans:Electricity","Pumps:Electricity","Heating:Electricity","Cooling:Electricity","HeatRejection:Electricity","Humidifer:Electricity","HeatRecovery:Electricity","WaterSystems:Electricity","Cogeneration:Electricity","Gas:Facility","InteriorEquipment:Gas","ExteriorEquipment:Gas","Heating:Gas","Cooling:Gas","WaterSystems:Gas","Cogeneration:Gas","DistrictHeating:Facility","DistrictCooling:Facility"];
25 |
26 | meters = model.getOutputMeters
27 | #reporting initial condition of model
28 | runner.registerInitialCondition("The model started with #{meters.size} meter objects.")
29 |
30 | meter_names.each do |meter_name|
31 | add_flag = true
32 |
33 | # Two avoid two meters with the same name but different reporting frequencies, change the other to hourly.
34 | meters.each do |meter|
35 | if meter.name.to_s == meter_name
36 | old_frequency = meter.reportingFrequency
37 | runner.registerWarning("A meter named #{meter.name.to_s} already exists with reporting frequency #{old_frequency}. Changing frequency to hourly.")
38 | meter.setReportingFrequency("hourly")
39 | add_flag = false
40 | end
41 | end
42 |
43 | if add_flag
44 | meter = OpenStudio::Model::OutputMeter.new(model)
45 | meter.setName(meter_name)
46 | meter.setReportingFrequency("hourly")
47 | meter.setMeterFileOnly(false)
48 | end
49 | end
50 |
51 | meters = model.getOutputMeters
52 | #reporting final condition of model
53 | runner.registerFinalCondition("The model finished with #{meters.size} meter objects.")
54 |
55 | return true
56 |
57 | end #end the run method
58 |
59 | end #end the measure
60 |
61 | #this allows the measure to be use by the application
62 | AddHourlyMeters.new.registerWithApplication
--------------------------------------------------------------------------------
/lib/measures/add_hourly_meters/measure.xml:
--------------------------------------------------------------------------------
1 |
2 | 3.0
3 | add_hourly_meters
4 | 2ee535a3-90cd-4f87-9bc8-bdf31b4d12b9
5 | 6844e55c-e456-4079-9518-bf544830424f
6 | 20190315T225744Z
7 | 9E530B22
8 | AddHourlyMeters
9 | Add Hourly Meters
10 | This measure adds hourly meters for the most common energy use types.
11 | This measure adds these Output:Meter electricity and gas objects: Electricity:Facility,ExteriorLights:Electricity,InteriorLights:Electricity,InteriorEquipment:Electricity,ExteriorEquipment:Electricity,Fans:Electricity,Pumps:Electricity,Heating:Electricity,Cooling:Electricity,HeatRejection:Electricity,Humidifer:Electricity,HeatRecovery:Electricity,WaterSystems:Electricity,Cogeneration:Electricity,Gas:Facility,InteriorEquipment:Gas,ExteriorEquipment:Gas,Heating:Gas,Cooling:Gas,WaterSystems:Gas,Cogeneration:Gas
12 |
13 |
14 |
15 |
16 | Reporting.QAQC
17 |
18 |
19 |
20 | Measure Function
21 | Measure
22 | string
23 |
24 |
25 | Requires EnergyPlus Results
26 | false
27 | boolean
28 |
29 |
30 | Uses SketchUp API
31 | false
32 | boolean
33 |
34 |
35 | Measure Type
36 | ModelMeasure
37 | string
38 |
39 |
40 |
41 |
42 | AddHourlyMeters_Test.rb
43 | rb
44 | test
45 | 1344C08B
46 |
47 |
48 |
49 | OpenStudio
50 | 2.4.0
51 | 2.4.0
52 |
53 | measure.rb
54 | rb
55 | script
56 | EEDB58B0
57 |
58 |
59 |
60 |
--------------------------------------------------------------------------------
/lib/measures/add_hourly_meters/tests/AddHourlyMeters_Test.rb:
--------------------------------------------------------------------------------
1 | require 'openstudio'
2 | require 'openstudio/ruleset/ShowRunnerOutput'
3 | require 'minitest/autorun'
4 | require_relative '../measure.rb'
5 | require 'fileutils'
6 |
7 | class AddHourlyMeters_Test < MiniTest::Unit::TestCase
8 |
9 | def test_number_of_arguments_and_argument_names
10 | # this test ensures that the current test is matched to the measure inputs
11 |
12 | # create an instance of the measure
13 | measure = AddHourlyMeters.new
14 |
15 | # make an empty model
16 | model = OpenStudio::Model::Model.new
17 |
18 | # get arguments and test that they are what we are expecting
19 | arguments = measure.arguments(model)
20 | assert_equal(0, arguments.size)
21 | end
22 |
23 | def test_run
24 | # create an instance of the measure
25 | measure = AddHourlyMeters.new
26 |
27 | # create an instance of a runner
28 | runner = OpenStudio::Ruleset::OSRunner.new
29 |
30 | # make an empty model
31 | model = OpenStudio::Model::Model.new
32 |
33 | # set arguments and run the measure
34 | arguments = measure.arguments(model)
35 | argument_map = OpenStudio::Ruleset::OSArgumentMap.new
36 | measure.run(model, runner, argument_map)
37 | result = runner.result
38 | show_output(result)
39 | assert(result.value.valueName == "Success")
40 | assert(result.warnings.size == 0)
41 | end
42 |
43 | def test_with_existing_meter
44 | # create an instance of the measure
45 | measure = AddHourlyMeters.new
46 |
47 | # create an instance of a runner
48 | runner = OpenStudio::Ruleset::OSRunner.new
49 |
50 | # make an empty model
51 | model = OpenStudio::Model::Model.new
52 |
53 | #make an existing meter
54 | meter = OpenStudio::Model::OutputMeter.new(model)
55 | meter.setName("Electricity:Facility")
56 | meter.setReportingFrequency("Timestep")
57 |
58 | # set arguments and run the measure
59 | arguments = measure.arguments(model)
60 | argument_map = OpenStudio::Ruleset::OSArgumentMap.new
61 | measure.run(model, runner, argument_map)
62 | result = runner.result
63 | show_output(result)
64 | assert(result.value.valueName == "Success")
65 | assert(result.warnings.size == 1)
66 | end
67 |
68 | end
69 |
--------------------------------------------------------------------------------
/lib/measures/add_interval_schedule_from_file/LICENSE.md:
--------------------------------------------------------------------------------
1 | Copyright 2014-2021 Building Performance Simulation
2 |
3 | Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
4 |
5 | The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
6 |
7 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
--------------------------------------------------------------------------------
/lib/measures/add_waterside_economizer/LICENSE.md:
--------------------------------------------------------------------------------
1 | Copyright 2014-2021 Building Performance Simulation
2 |
3 | Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
4 |
5 | The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
6 |
7 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
--------------------------------------------------------------------------------
/lib/measures/add_waterside_economizer/measure.rb:
--------------------------------------------------------------------------------
1 | class AddWatersideEconomizer < OpenStudio::Ruleset::ModelUserScript
2 |
3 | def name
4 | return "Add Waterside Economizer"
5 | end
6 |
7 | #define the arguments that the user will input
8 | def arguments(model)
9 | args = OpenStudio::Ruleset::OSArgumentVector.new
10 |
11 | #select plant loops
12 | plantLoops = model.getPlantLoops
13 | plantLoops_handle = OpenStudio::StringVector.new
14 | plantLoops_displayName = OpenStudio::StringVector.new
15 | plantLoops.each do |plantLoop|
16 | plantLoops_handle << plantLoop.handle.to_s
17 | plantLoops_displayName << plantLoop.name.to_s
18 | end
19 |
20 | #make an argument for heating loop, if applicable
21 | condenser_water_loop = OpenStudio::Ruleset::OSArgument::makeChoiceArgument("condenser_water_loop", plantLoops_handle, plantLoops_displayName,false)
22 | condenser_water_loop.setDisplayName("Select the condenser water loop:")
23 | args << condenser_water_loop
24 |
25 | #make an argument for cooling loop, if applicable
26 | chilled_water_loop = OpenStudio::Ruleset::OSArgument::makeChoiceArgument("chilled_water_loop", plantLoops_handle, plantLoops_displayName,false)
27 | chilled_water_loop.setDisplayName("Select the chilled water loop:")
28 | args << chilled_water_loop
29 |
30 | return args
31 | end #end the arguments method
32 |
33 | #define what happens when the measure is run
34 | def run(model, runner, user_arguments)
35 | super(model, runner, user_arguments)
36 |
37 | #use the built-in error checking
38 | if not runner.validateUserArguments(arguments(model), user_arguments)
39 | return false
40 | end
41 |
42 | condenser_water_loop = runner.getOptionalWorkspaceObjectChoiceValue("condenser_water_loop",user_arguments,model)
43 | chilled_water_loop = runner.getOptionalWorkspaceObjectChoiceValue("chilled_water_loop",user_arguments,model)
44 |
45 | #check the condenser_water_loop for reasonableness
46 | if condenser_water_loop.empty?
47 | runner.registerError("The selected plant loop was not found in the model. It may have been removed by another measure.")
48 | return false
49 | else
50 | if not condenser_water_loop.get.to_PlantLoop.empty?
51 | condenser_water_loop = condenser_water_loop.get.to_PlantLoop.get
52 | runner.registerInfo("Using plant loop #{condenser_water_loop.name.to_s} as condenser water loop.")
53 | else
54 | runner.registerError("Script Error - argument not showing up as plant loop.")
55 | return false
56 | end
57 | end
58 |
59 | #check the chilled_water_loop for reasonableness
60 | if chilled_water_loop.empty?
61 | runner.registerError("The selected plant loop was not found in the model. It may have been removed by another measure.")
62 | return false
63 | else
64 | if not chilled_water_loop.get.to_PlantLoop.empty?
65 | chilled_water_loop = chilled_water_loop.get.to_PlantLoop.get
66 | runner.registerInfo("Using plant loop #{chilled_water_loop.name.to_s} as chilled water loop.")
67 | else
68 | runner.registerError("Script Error - argument not showing up as plant loop.")
69 | return false
70 | end
71 | end
72 |
73 | #make new heat exchanger
74 | heat_exchanger = OpenStudio::Model::HeatExchangerFluidToFluid.new(model)
75 | heat_exchanger.setName("Waterside Economizer Heat Exchanger")
76 | heat_exchanger.setHeatExchangeModelType("Ideal")
77 | heat_exchanger.setControlType("CoolingSetpointOnOff")
78 | heat_exchanger.setMinimumTemperatureDifferencetoActivateHeatExchanger(OpenStudio.convert(4,"R","K").get)
79 | heat_exchanger.setHeatTransferMeteringEndUseType("FreeCooling")
80 | heat_exchanger.setOperationMinimumTemperatureLimit(OpenStudio.convert(35,"F","C").get)
81 | heat_exchanger.setOperationMaximumTemperatureLimit(OpenStudio.convert(72,"F","C").get)
82 |
83 | #add heat exchanger to condenser water loop
84 | condenser_water_loop.addDemandBranchForComponent(heat_exchanger)
85 |
86 | #add heat exchanger to chilled water loop
87 | chilled_water_loop_supply_inlet_node = chilled_water_loop.supplyInletNode
88 | heat_exchanger.addToNode(chilled_water_loop_supply_inlet_node)
89 |
90 | runner.registerFinalCondition("Added #{heat_exchanger.name.to_s} to condenser water loop #{condenser_water_loop.name.to_s} and chilled water loop #{chilled_water_loop.name.to_s}.")
91 |
92 | return true
93 |
94 | end #end the run method
95 | end #end the measure
96 |
97 | #this allows the measure to be use by the application
98 | AddWatersideEconomizer.new.registerWithApplication
--------------------------------------------------------------------------------
/lib/measures/add_waterside_economizer/measure.xml:
--------------------------------------------------------------------------------
1 |
2 | 3.0
3 | add_waterside_economizer
4 | a16cc194-2275-4556-99ec-0d42e84960cf
5 | ad3aa91e-899e-4383-80e1-d5c49cfc44ca
6 | 20180314T202258Z
7 | E5B1EF33
8 | AddWatersideEconomizer
9 | Add Waterside Economizer
10 | This measure adds a waterside economizer to provide free cooling to a user-selected chilled water loop from a user-selected condenser water loop when the outdoor wetbulb temperature is low enough.
11 | This measure adds a heat exchanger in parallel with other demand-side components on the condenser water loop and in series with other cooling equipment on the supply side of the chilled water loop. The heat exchanger is modeled as Ideal, which means effectiveness is set to 1.0 and the UA calculation is ignored. The heat exchanger operates using the CoolingSetpointOnOff control type, which means the heat exchanger will operate if the setpoints allow heat transfer from the chilled water loop to the condenser water loop. The inlet temperatures to the heat exchanger must exceed a minimum temperature difference limit of 4F to operate. The heat exchanger will not operate if the inlet condenser loop temperature is below 32F or above 72F. These setpoints are editable in the model once you apply the measure. See the HeatExchanger:FluidToFluid section in the EnergyPlus Input Output reference for more detail.
12 | The heat exchanger is autosized, so you will need to make sure your model includes a wet-bulb sizing design day to size the heat exchanger. This measure does not add pressure drop to the pumps on the chilled or condenser water loops, which would be present in a real building.
13 |
14 |
15 | condenser_water_loop
16 | Select the condenser water loop:
17 | Choice
18 | false
19 | false
20 |
21 |
22 | chilled_water_loop
23 | Select the chilled water loop:
24 | Choice
25 | false
26 | false
27 |
28 |
29 |
30 |
31 |
32 | HVAC.Cooling
33 |
34 |
35 |
36 | Measure Function
37 | Measure
38 | string
39 |
40 |
41 | Requires EnergyPlus Results
42 | false
43 | boolean
44 |
45 |
46 | Uses SketchUp API
47 | false
48 | boolean
49 |
50 |
51 | Measure Type
52 | ModelMeasure
53 | string
54 |
55 |
56 | Intended Software Tool
57 | Apply Measure Now
58 | string
59 |
60 |
61 | Intended Software Tool
62 | OpenStudio Application
63 | string
64 |
65 |
66 | Intended Use Case
67 | Model Articulation
68 | string
69 |
70 |
71 | Intended Use Case
72 | New Construction EE
73 | string
74 |
75 |
76 |
77 |
78 |
79 | OpenStudio
80 | 1.0.0
81 | 1.8.0
82 |
83 | measure.rb
84 | rb
85 | script
86 | B89BC6F6
87 |
88 |
89 | AddWatersideEconomizer_Test.rb
90 | rb
91 | test
92 | 0259EC19
93 |
94 |
95 | office.osm
96 | osm
97 | test
98 | 7DD09FDA
99 |
100 |
101 |
102 |
--------------------------------------------------------------------------------
/lib/measures/add_waterside_economizer/tests/AddWatersideEconomizer_Test.rb:
--------------------------------------------------------------------------------
1 | require 'openstudio'
2 | require 'openstudio/ruleset/ShowRunnerOutput'
3 | require 'minitest/autorun'
4 | require_relative '../measure.rb'
5 | require 'fileutils'
6 |
7 | class AddWatersideEconomizer_Test < MiniTest::Unit::TestCase
8 |
9 | def model_output_path(test_name)
10 | # always generate test output in specially named 'output' directory so result files are not made part of the measure
11 | return "#{File.dirname(__FILE__)}/output/#{test_name}.osm"
12 | end
13 |
14 | def test_number_of_arguments_and_argument_names
15 | #this test ensures that the current test is matched to the measure inputs
16 |
17 | # create an instance of the measure
18 | measure = AddWatersideEconomizer.new
19 |
20 | # load the test model
21 | translator = OpenStudio::OSVersion::VersionTranslator.new
22 | model = translator.loadModel("#{File.dirname(__FILE__)}/office.osm")
23 | assert((not model.empty?))
24 | model = model.get
25 |
26 | # get arguments and test that they are what we are expecting
27 | arguments = measure.arguments(model)
28 | assert_equal(2, arguments.size)
29 | assert_equal("condenser_water_loop", arguments[0].name)
30 | assert_equal("chilled_water_loop", arguments[1].name)
31 | end
32 |
33 | def test_good_arguments
34 | #this tests adding a waterside economizer
35 | test_name = "test_good_arguments"
36 | puts "TEST:" + test_name
37 |
38 | # create an instance of the measure
39 | measure = AddWatersideEconomizer.new
40 |
41 | # create an instance of a runner
42 | runner = OpenStudio::Ruleset::OSRunner.new
43 |
44 | # load the test model
45 | translator = OpenStudio::OSVersion::VersionTranslator.new
46 | model = translator.loadModel("#{File.dirname(__FILE__)}/office.osm")
47 | assert((not model.empty?))
48 | model = model.get
49 |
50 | # set argument values to good values and run the measure
51 | arguments = measure.arguments(model)
52 | argument_map = OpenStudio::Ruleset::OSArgumentMap.new
53 |
54 | condenser_water_loop = arguments[0].clone
55 | assert(condenser_water_loop.setValue("Condenser Water Loop"))
56 | argument_map["condenser_water_loop"] = condenser_water_loop
57 |
58 | chilled_water_loop = arguments[1].clone
59 | assert(chilled_water_loop.setValue("Chilled Water Loop"))
60 | argument_map["chilled_water_loop"] = chilled_water_loop
61 |
62 | # run the measure
63 | measure.run(model, runner, argument_map)
64 | result = runner.result
65 |
66 | # show the output
67 | show_output(result)
68 |
69 | # assert that it ran correctly
70 | assert_equal("Success", result.value.valueName)
71 | assert(result.warnings.size == 0)
72 |
73 | # save the model for testing purposes
74 | output_file_path = model_output_path(test_name)
75 | model.save(output_file_path,true)
76 | end
77 |
78 | end
--------------------------------------------------------------------------------
/lib/measures/add_wind_and_stack_open_area/LICENSE.md:
--------------------------------------------------------------------------------
1 | Copyright 2014-2021 Building Performance Simulation
2 |
3 | Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
4 |
5 | The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
6 |
7 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
--------------------------------------------------------------------------------
/lib/measures/add_wind_and_stack_open_area/README.md:
--------------------------------------------------------------------------------
1 | # Description
2 | This measure models natural ventilation to thermal zones with operable windows. It is not intended to model natural ventilation that relies on interzone, stack driven air transfer.
3 |
4 | # Modeler Description
5 | This measure adds ZoneVentilation:WindandStackOpenArea objects to a zone for each window of a specified operable window construction. The user can specify values for minimum and maximum zone and outdoor air temperatures and wind speed that set limits on when the ventilation is active. The airflow rate is the quadrature sum of wind driven and stack effect driven air flow. Airflow driven by wind is a function of opening effectiveness, area, scheduled open area fraction, and wind speed. Airflow driven by the stack effect is a function of the discharge coefficient, area, scheduled open area fraction, and height difference to the neutral pressure level. This measure takes the height difference as half the window height, and as such is only intended to model natural ventilation in single zones where a few large operable windows or doors account for the majority of operable area. It is not intended to model natural ventilation that relies on interzone, stack driven air transfer where ventilation flow through a opening is unidirectional.
6 |
7 | # Background
8 | A key variable in the natural ventilation calculation is the height difference between the midpoint of the lower opening and the neutral pressure level. Estimation of the height difference is difficult for naturally ventilated buildings. Chapter 16 of the 2017 ASHRAE Handbook of Fundamentals suggests that "if one window or door represents a large fraction (approximately 90%) of the total opening area in the envelope, then the NPL is at the mid-height of that aperture, and delta_H_NPL equals one-half the height of the aperture". This measure uses this assumption, and automatically calculates the height difference at one half the window height. This assumes the flow through the opening is bidirectional (i.e., air from the warmer side flows through the top of the opening, and air from the colder side flows through the bottom), and is intended to model natural ventilation in isolated zones. It is not intended to model stack-driven ventilation across multiple thermal zones in a multi-story building where flow through an opening is unidirectional. The Airflow Network Model is more appropriate for inter-zone, stack-driven flows. See the EnergyPlus Input Output Reference ZoneVentilation:WindandStackOpenArea section and EnergyPlus Engineering Reference Ventilation by Wind and Stack with Open Area section for more detail.
9 |
10 | # Relevant Unmet Hours Threads:
11 | https://unmethours.com/question/21804/why-is-average-window-height-in-m2/
12 | https://unmethours.com/question/25647/no-change-in-zone-temperature-beforeafter-wind-and-stack-open-area-measure/
13 | https://unmethours.com/question/76215/error-when-using-add-wind-and-stack-open-area-measure/
14 |
15 | # Video Tutorial
16 | https://www.youtube.com/watch?v=EhnTRVamENA
17 |
18 | # Github Repository
19 | https://github.com/BuildingPerformanceSimulation/openstudio-measures/tree/master/lib/measures/add_wind_and_stack_open_area
20 |
21 | # Measure Updates March 12th, 2018 by Matthew Dahlhausen
22 | - Changed inputs to have user selected a open area fraction schedule
23 | - Changed inputs to have user select an operable window construction
24 | - Measure now adds ZoneVentilation:WindandStackOpenArea objects per window instead of per zone
25 | - Measure now calculates operable area based on window geometry
26 | - Measure now calculates effective angle based on the surface normal of a given window
27 | - Measure now calculates height difference to neutral pressure level as half window height
28 |
29 | # Measure Updates January 19th, 2023 by Matthew Dahlhausen
30 | - Splits the measure into two versions. add_wind_and_stack_open_area is now an OpenStudio measure, and the EnergyPlus version changed to add_wind_and_stack_open_area_legacy
31 |
32 | # Measure Updates March 7th, 2023 by Matthew Dahlhausen
33 | - Corrected height difference calculation from 1/2 window height to 1/4 window height (half the neutral pressure level).
--------------------------------------------------------------------------------
/lib/measures/add_wind_and_stack_open_area_legacy/README.md:
--------------------------------------------------------------------------------
1 | # Description
2 | This measure models natural ventilation to thermal zones with operable windows. It is not intended to model natural ventilation that relies on interzone, stack driven air transfer.
3 |
4 | # Modeler Description
5 | This measure adds ZoneVentilation:WindandStackOpenArea objects to a zone for each window of a specified operable window construction. The user can specify values for minimum and maximum zone and outdoor air temperatures and wind speed that set limits on when the ventilation is active. The airflow rate is the quadrature sum of wind driven and stack effect driven air flow. Airflow driven by wind is a function of opening effectiveness, area, scheduled open area fraction, and wind speed. Airflow driven by the stack effect is a function of the discharge coefficient, area, scheduled open area fraction, and height difference to the neutral pressure level. This measure takes the height difference as half the window height, and as such is only intended to model natural ventilation in single zones where a few large operable windows or doors account for the majority of operable area. It is not intended to model natural ventilation that relies on interzone, stack driven air transfer where ventilation flow through a opening is unidirectional.
6 |
7 | # Background
8 | A key variable in the natural ventilation calculation is the height difference between the midpoint of the lower opening and the neutral pressure level. Estimation of the height difference is difficult for naturally ventilated buildings. Chapter 16 of the 2017 ASHRAE Handbook of Fundamentals suggests that "if one window or door represents a large fraction (approximately 90%) of the total opening area in the envelope, then the NPL is at the mid-height of that aperture, and delta_H_NPL equals one-half the height of the aperture". This measure uses this assumption, and automatically calculates the height difference at one half the window height. This assumes the flow through the opening is bidirectional (i.e., air from the warmer side flows through the top of the opening, and air from the colder side flows through the bottom), and is intended to model natural ventilation in isolated zones. It is not intended to model stack-driven ventilation across multiple thermal zones in a multi-story building where flow through an opening is unidirectional. The Airflow Network Model is more appropriate for inter-zone, stack-driven flows. See the EnergyPlus Input Output Reference ZoneVentilation:WindandStackOpenArea section and EnergyPlus Engineering Reference Ventilation by Wind and Stack with Open Area section for more detail.
9 |
10 | # Relevant Unmet Hours Threads:
11 | https://unmethours.com/question/21804/why-is-average-window-height-in-m2/
12 | https://unmethours.com/question/25647/no-change-in-zone-temperature-beforeafter-wind-and-stack-open-area-measure/
13 | https://unmethours.com/question/76215/error-when-using-add-wind-and-stack-open-area-measure/
14 |
15 | # Video Tutorial
16 | https://www.youtube.com/watch?v=EhnTRVamENA
17 |
18 | # Github Repository
19 | https://github.com/BuildingPerformanceSimulation/openstudio-measures/tree/master/lib/measures/add_wind_and_stack_open_area
20 |
21 | # Measure Updates March 12th, 2018 by Matthew Dahlhausen
22 | - Changed inputs to have user selected a open area fraction schedule
23 | - Changed inputs to have user select an operable window construction
24 | - Measure now adds ZoneVentilation:WindandStackOpenArea objects per window instead of per zone
25 | - Measure now calculates operable area based on window geometry
26 | - Measure now calculates effective angle based on the surface normal of a given window
27 | - Measure now calculates height difference to neutral pressure level as half window height
28 |
29 | # Measure Updates January 19th, 2023 by Matthew Dahlhausen
30 | - Splits the measure into two versions. add_wind_and_stack_open_area is now an OpenStudio measure, and the EnergyPlus version changed to add_wind_and_stack_open_area_legacy
31 |
32 | # Measure Updates March 7th, 2023 by Matthew Dahlhausen
33 | - Corrected height difference calculation from 1/2 window height to 1/4 window height (half the neutral pressure level).
--------------------------------------------------------------------------------
/lib/measures/assign_zones_to_air_loop_from_csv/LICENSE.md:
--------------------------------------------------------------------------------
1 | Copyright 2014-2021 Building Performance Simulation
2 |
3 | Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
4 |
5 | The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
6 |
7 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
--------------------------------------------------------------------------------
/lib/measures/assign_zones_to_air_loop_from_csv/tests/ahu_list_example.csv:
--------------------------------------------------------------------------------
1 | Thermal Zone,AirLoop
2 | Basement ZN,Example Air Loop
3 | Core_bottom ZN,Example Air Loop
4 | Core_mid ZN,Example Air Loop
5 | Core_top ZN,Example Air Loop
6 | Perimeter_bot_ZN_1 ZN,Example Air Loop
7 | Perimeter_bot_ZN_2 ZN,Example Air Loop
8 | Perimeter_bot_ZN_3 ZN,Example Air Loop
9 | Perimeter_bot_ZN_4 ZN,Example Air Loop
10 | Perimeter_mid_ZN_1 ZN,Example Air Loop
11 | Perimeter_mid_ZN_2 ZN,Example Air Loop
12 | Perimeter_mid_ZN_3 ZN,Example Air Loop
13 | Perimeter_mid_ZN_4 ZN,Example Air Loop
14 | Perimeter_top_ZN_1 ZN,Example Air Loop
15 | Perimeter_top_ZN_2 ZN,Example Air Loop
16 | Perimeter_top_ZN_3 ZN,Example Air Loop
17 | Perimeter_top_ZN_4 ZN,Example Air Loop
18 |
--------------------------------------------------------------------------------
/lib/measures/assign_zones_to_air_loop_from_csv/tests/ahu_list_example_mislabeled_air_loop.csv:
--------------------------------------------------------------------------------
1 | Thermal Zone,AirLoop
2 | Basement ZN,Mislabeled Air Loop
3 | Core_bottom ZN,Example Air Loop
4 | Core_mid ZN,Example Air Loop
5 | Core_top ZN,Example Air Loop
6 | Perimeter_bot_ZN_1 ZN,Example Air Loop
7 | Perimeter_bot_ZN_2 ZN,Example Air Loop
8 | Perimeter_bot_ZN_3 ZN,Example Air Loop
9 | Perimeter_bot_ZN_4 ZN,Example Air Loop
10 | Perimeter_mid_ZN_1 ZN,Example Air Loop
11 | Perimeter_mid_ZN_2 ZN,Example Air Loop
12 | Perimeter_mid_ZN_3 ZN,Example Air Loop
13 | Perimeter_mid_ZN_4 ZN,Example Air Loop
14 | Perimeter_top_ZN_1 ZN,Example Air Loop
15 | Perimeter_top_ZN_2 ZN,Example Air Loop
16 | Perimeter_top_ZN_3 ZN,Example Air Loop
17 | Perimeter_top_ZN_4 ZN,Example Air Loop
18 |
--------------------------------------------------------------------------------
/lib/measures/assign_zones_to_air_loop_from_csv/tests/ahu_list_example_mislabeled_zone.csv:
--------------------------------------------------------------------------------
1 | Thermal Zone,AirLoop
2 | Mislabeled Basement ZN,Example Air Loop
3 | Core_bottom ZN,Example Air Loop
4 | Core_mid ZN,Example Air Loop
5 | Core_top ZN,Example Air Loop
6 | Perimeter_bot_ZN_1 ZN,Example Air Loop
7 | Perimeter_bot_ZN_2 ZN,Example Air Loop
8 | Perimeter_bot_ZN_3 ZN,Example Air Loop
9 | Perimeter_bot_ZN_4 ZN,Example Air Loop
10 | Perimeter_mid_ZN_1 ZN,Example Air Loop
11 | Perimeter_mid_ZN_2 ZN,Example Air Loop
12 | Perimeter_mid_ZN_3 ZN,Example Air Loop
13 | Perimeter_mid_ZN_4 ZN,Example Air Loop
14 | Perimeter_top_ZN_1 ZN,Example Air Loop
15 | Perimeter_top_ZN_2 ZN,Example Air Loop
16 | Perimeter_top_ZN_3 ZN,Example Air Loop
17 | Perimeter_top_ZN_4 ZN,Example Air Loop
18 |
--------------------------------------------------------------------------------
/lib/measures/assign_zones_to_air_loop_from_csv/tests/ahu_list_example_missing_air_loop.csv:
--------------------------------------------------------------------------------
1 | Thermal Zone,AirLoop
2 | Basement ZN,
3 | Core_bottom ZN,Example Air Loop
4 | Core_mid ZN,Example Air Loop
5 | Core_top ZN,Example Air Loop
6 | Perimeter_bot_ZN_1 ZN,Example Air Loop
7 | Perimeter_bot_ZN_2 ZN,Example Air Loop
8 | Perimeter_bot_ZN_3 ZN,Example Air Loop
9 | Perimeter_bot_ZN_4 ZN,Example Air Loop
10 | Perimeter_mid_ZN_1 ZN,Example Air Loop
11 | Perimeter_mid_ZN_2 ZN,Example Air Loop
12 | Perimeter_mid_ZN_3 ZN,Example Air Loop
13 | Perimeter_mid_ZN_4 ZN,Example Air Loop
14 | Perimeter_top_ZN_1 ZN,Example Air Loop
15 | Perimeter_top_ZN_2 ZN,Example Air Loop
16 | Perimeter_top_ZN_3 ZN,Example Air Loop
17 | Perimeter_top_ZN_4 ZN,Example Air Loop
18 |
--------------------------------------------------------------------------------
/lib/measures/change_fan_variable_volume_coefficients/LICENSE.md:
--------------------------------------------------------------------------------
1 | Copyright 2014-2021 Building Performance Simulation
2 |
3 | Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
4 |
5 | The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
6 |
7 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
--------------------------------------------------------------------------------
/lib/measures/change_fan_variable_volume_coefficients/resources/Variable Volume Fan Curve Coefficients Comparison.xlsx:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/BuildingPerformanceSimulation/openstudio-measures/6e4e351a1f0eee2932c7a1be3cc2d3562eed3231/lib/measures/change_fan_variable_volume_coefficients/resources/Variable Volume Fan Curve Coefficients Comparison.xlsx
--------------------------------------------------------------------------------
/lib/measures/change_fan_variable_volume_coefficients/resources/Variable Volume Fan Curve Coefficients.pdf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/BuildingPerformanceSimulation/openstudio-measures/6e4e351a1f0eee2932c7a1be3cc2d3562eed3231/lib/measures/change_fan_variable_volume_coefficients/resources/Variable Volume Fan Curve Coefficients.pdf
--------------------------------------------------------------------------------
/lib/measures/change_the_room_type/LICENSE.md:
--------------------------------------------------------------------------------
1 | Copyright 2014-2021 Building Performance Simulation
2 |
3 | Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
4 |
5 | The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
6 |
7 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
--------------------------------------------------------------------------------
/lib/measures/change_the_room_type/measure.xml:
--------------------------------------------------------------------------------
1 |
2 | 3.0
3 | change_the_room_type
4 | 7e1b4317-8488-44fa-bb55-cdf3867292ed
5 | 004cdf58-07ec-413c-b743-4add08d15ba5
6 | 20170317T212730Z
7 | 90EC6BF1
8 | ChangeTheRoomType
9 | ChangeTheRoomType
10 | Take stratification into account
11 | By changing the room type to constant gradient (vertical)
12 |
13 |
14 | zone
15 | Choose Thermal Zones to add zone ventilation to.
16 | Choice
17 | true
18 | false
19 |
20 |
21 | availSchRoomAirModel
22 | Availability Schedule Name
23 | String
24 | true
25 | false
26 |
27 |
28 | patCtrlSchRoomAirModel
29 | Pattern Control Schedule Name
30 | String
31 | true
32 | false
33 |
34 |
35 | nameRoomAirModel
36 | Name the pattern
37 | String
38 | true
39 | false
40 |
41 |
42 | thermOffset
43 | thermostat Offset
44 | Double
45 | true
46 | false
47 | 0
48 |
49 |
50 | returnAirOffset
51 | return Air Offset
52 | Double
53 | true
54 | false
55 | 0
56 |
57 |
58 | exhaustAirOffset
59 | exhaust Air Offset
60 | Double
61 | true
62 | false
63 | 0
64 |
65 |
66 |
67 |
68 |
69 | HVAC.Distribution
70 |
71 |
72 |
73 | Measure Type
74 | EnergyPlusMeasure
75 | string
76 |
77 |
78 | Intended Software Tool
79 | OpenStudio Application
80 | string
81 |
82 |
83 | Intended Software Tool
84 | Parametric Analysis Tool
85 | string
86 |
87 |
88 | Intended Use Case
89 | Model Articulation
90 | string
91 |
92 |
93 |
94 |
95 | TestModel.osm
96 | osm
97 | test
98 | A9B59D5A
99 |
100 |
101 | change_the_room_type_test.rb
102 | rb
103 | test
104 | 1B8500A5
105 |
106 |
107 |
108 | OpenStudio
109 | 1.13.4
110 | 1.13.0
111 |
112 | measure.rb
113 | rb
114 | script
115 | 3A17CED3
116 |
117 |
118 |
119 |
--------------------------------------------------------------------------------
/lib/measures/change_the_room_type/tests/change_the_room_type_test.rb:
--------------------------------------------------------------------------------
1 | require 'openstudio'
2 | require 'openstudio/ruleset/ShowRunnerOutput'
3 | require 'minitest/autorun'
4 |
5 | require_relative '../measure.rb'
6 |
7 | class ChangeTheRoomType_Test < MiniTest::Unit::TestCase
8 |
9 | # def setup
10 | # end
11 |
12 | # def teardown
13 |
14 | def test_good_argument_values
15 |
16 | # create an instance of the measure
17 | measure = ChangeTheRoomType.new
18 |
19 | # create an instance of a runner
20 | runner = OpenStudio::Ruleset::OSRunner.new
21 |
22 | # load the test model
23 | translator = OpenStudio::OSVersion::VersionTranslator.new
24 | path = OpenStudio::Path.new(File.dirname(__FILE__) + "/TestModel.osm")
25 | model = translator.loadModel(path)
26 | assert((not model.empty?))
27 | model = model.get
28 |
29 | # forward translate OSM file to IDF file
30 | ft = OpenStudio::EnergyPlus::ForwardTranslator.new
31 | workspace = ft.translateModel(model)
32 |
33 | # get arguments
34 | arguments = measure.arguments(workspace)
35 | argument_map = OpenStudio::Ruleset.convertOSArgumentVectorToMap(arguments)
36 |
37 | # create hash of argument values.
38 | # If the argument has a default that you want to use, you don't need it in the hash
39 | args_hash = {}
40 | args_hash["zone"] = "Story 1 Core Zone"
41 | args_hash["nameRoomAirModel"] = "Test Room Air Model Object"
42 | args_hash["availSchRoomAirModel"] = "Always On Discrete"
43 | args_hash["patCtrlSchRoomAirModel"] = "Always On Discrete"
44 | # using defaults values from measure.rb for other arguments
45 |
46 | # populate argument with specified hash value if specified
47 | arguments.each do |arg|
48 | temp_arg_var = arg.clone
49 | if args_hash[arg.name]
50 | assert(temp_arg_var.setValue(args_hash[arg.name]))
51 | end
52 | argument_map[arg.name] = temp_arg_var
53 | end
54 |
55 | # run the measure
56 | measure.run(workspace, runner, argument_map)
57 | result = runner.result
58 | show_output(result)
59 | assert_equal("Success", result.value.valueName)
60 |
61 | # save the workspace to output directory
62 | output_file_path = OpenStudio::Path.new(File.dirname(__FILE__) + "/output/test_output.idf")
63 | workspace.save(output_file_path,true)
64 | end
65 |
66 | end
67 |
--------------------------------------------------------------------------------
/lib/measures/detailed_hvac_viewer/README.md:
--------------------------------------------------------------------------------
1 |
2 |
3 | ###### (Automatically generated documentation)
4 |
5 | # Detailed HVAC Viewer
6 |
7 | ## Description
8 | This measure creates a facsimile of the HVAC grid layout in the OpenStudio Application in an interactive html report. The user can optionally select loops to add Output:Variable to view node timeseries output data.
9 |
10 | ## Modeler Description
11 | The user is asked to provided the following parameters:
12 | - A plantLoop or airLoop from the model (dropdown)
13 | - A boolean to include or exclude demand nodes
14 | - Which variable they want to output for each node:
15 | * System Node Temperature
16 | * System Node Setpoint Temperature
17 | * System Node Mass Flow Rate
18 | * etc.
19 |
20 | ## Measure Type
21 | ReportingMeasure
22 |
23 | ## Taxonomy
24 |
25 |
26 | ## Arguments
27 |
28 |
29 | ### Include Demand Side nodes in the timeseries output?
30 |
31 | **Name:** include_demand_nodes,
32 | **Type:** Boolean,
33 | **Units:** ,
34 | **Required:** true,
35 | **Model Dependent:** false
36 |
37 | ###
Select a Reporting Frequency?
38 |
39 | **Name:** reporting_frequency,
40 | **Type:** Choice,
41 | **Units:** ,
42 | **Required:** true,
43 | **Model Dependent:** false
44 |
45 | ### System Node Temperature
46 |
47 | **Name:** System Node Temperature,
48 | **Type:** Boolean,
49 | **Units:** ,
50 | **Required:** true,
51 | **Model Dependent:** false
52 |
53 | ### System Node Setpoint Temperature
54 |
55 | **Name:** System Node Setpoint Temperature,
56 | **Type:** Boolean,
57 | **Units:** ,
58 | **Required:** true,
59 | **Model Dependent:** false
60 |
61 | ### System Node Mass Flow Rate
62 |
63 | **Name:** System Node Mass Flow Rate,
64 | **Type:** Boolean,
65 | **Units:** ,
66 | **Required:** true,
67 | **Model Dependent:** false
68 |
69 | ### System Node Humidity Ratio
70 |
71 | **Name:** System Node Humidity Ratio,
72 | **Type:** Boolean,
73 | **Units:** ,
74 | **Required:** true,
75 | **Model Dependent:** false
76 |
77 | ### System Node Setpoint High Temperature
78 |
79 | **Name:** System Node Setpoint High Temperature,
80 | **Type:** Boolean,
81 | **Units:** ,
82 | **Required:** true,
83 | **Model Dependent:** false
84 |
85 | ### System Node Setpoint Low Temperature
86 |
87 | **Name:** System Node Setpoint Low Temperature,
88 | **Type:** Boolean,
89 | **Units:** ,
90 | **Required:** true,
91 | **Model Dependent:** false
92 |
93 | ### System Node Setpoint Humidity Ratio
94 |
95 | **Name:** System Node Setpoint Humidity Ratio,
96 | **Type:** Boolean,
97 | **Units:** ,
98 | **Required:** true,
99 | **Model Dependent:** false
100 |
101 | ### System Node Setpoint Minimum Humidity Ratio
102 |
103 | **Name:** System Node Setpoint Minimum Humidity Ratio,
104 | **Type:** Boolean,
105 | **Units:** ,
106 | **Required:** true,
107 | **Model Dependent:** false
108 |
109 | ### System Node Setpoint Maximum Humidity Ratio
110 |
111 | **Name:** System Node Setpoint Maximum Humidity Ratio,
112 | **Type:** Boolean,
113 | **Units:** ,
114 | **Required:** true,
115 | **Model Dependent:** false
116 |
117 | ### System Node Relative Humidity
118 |
119 | **Name:** System Node Relative Humidity,
120 | **Type:** Boolean,
121 | **Units:** ,
122 | **Required:** true,
123 | **Model Dependent:** false
124 |
125 | ### System Node Pressure
126 |
127 | **Name:** System Node Pressure,
128 | **Type:** Boolean,
129 | **Units:** ,
130 | **Required:** true,
131 | **Model Dependent:** false
132 |
133 | ### System Node Standard Density Volume Flow Rate
134 |
135 | **Name:** System Node Standard Density Volume Flow Rate,
136 | **Type:** Boolean,
137 | **Units:** ,
138 | **Required:** true,
139 | **Model Dependent:** false
140 |
141 | ### System Node Current Density Volume Flow Rate
142 |
143 | **Name:** System Node Current Density Volume Flow Rate,
144 | **Type:** Boolean,
145 | **Units:** ,
146 | **Required:** true,
147 | **Model Dependent:** false
148 |
149 | ### System Node Current Density
150 |
151 | **Name:** System Node Current Density,
152 | **Type:** Boolean,
153 | **Units:** ,
154 | **Required:** true,
155 | **Model Dependent:** false
156 |
157 | ### System Node Enthalpy
158 |
159 | **Name:** System Node Enthalpy,
160 | **Type:** Boolean,
161 | **Units:** ,
162 | **Required:** true,
163 | **Model Dependent:** false
164 |
165 | ### System Node Wetbulb Temperature
166 |
167 | **Name:** System Node Wetbulb Temperature,
168 | **Type:** Boolean,
169 | **Units:** ,
170 | **Required:** true,
171 | **Model Dependent:** false
172 |
173 | ### System Node Dewpoint Temperature
174 |
175 | **Name:** System Node Dewpoint Temperature,
176 | **Type:** Boolean,
177 | **Units:** ,
178 | **Required:** true,
179 | **Model Dependent:** false
180 |
181 | ### System Node Quality
182 |
183 | **Name:** System Node Quality,
184 | **Type:** Boolean,
185 | **Units:** ,
186 | **Required:** true,
187 | **Model Dependent:** false
188 |
189 | ### System Node Height
190 |
191 | **Name:** System Node Height,
192 | **Type:** Boolean,
193 | **Units:** ,
194 | **Required:** true,
195 | **Model Dependent:** false
196 |
197 |
198 |
199 |
200 |
--------------------------------------------------------------------------------
/lib/measures/detailed_hvac_viewer/README.md.erb:
--------------------------------------------------------------------------------
1 | <%#= README.md.erb is used to auto-generate README.md. %>
2 | <%#= To manually maintain README.md throw away README.md.erb and manually edit README.md %>
3 | ###### (Automatically generated documentation)
4 |
5 | # <%= name %>
6 |
7 | ## Description
8 | <%= description %>
9 |
10 | ## Modeler Description
11 | <%= modelerDescription %>
12 |
13 | ## Measure Type
14 | <%= measureType %>
15 |
16 | ## Taxonomy
17 | <%= taxonomy %>
18 |
19 | ## Arguments
20 |
21 | <% arguments.each do |argument| %>
22 | ### <%= argument[:display_name] %>
23 | <%= argument[:description] %>
24 | **Name:** <%= argument[:name] %>,
25 | **Type:** <%= argument[:type] %>,
26 | **Units:** <%= argument[:units] %>,
27 | **Required:** <%= argument[:required] %>,
28 | **Model Dependent:** <%= argument[:model_dependent] %>
29 | <% end %>
30 |
31 | <% if arguments.size == 0 %>
32 | <%= "This measure does not have any user arguments" %>
33 | <% end %>
34 |
35 | <% if outputs.size > 0 %>
36 | ## Outputs
37 | <% output_names = [] %>
38 | <% outputs.each do |output| %>
39 | <% output_names << output[:display_name] %>
40 | <% end %>
41 | <%= output_names.join(", ") %>
42 | <% end %>
--------------------------------------------------------------------------------
/lib/measures/detailed_hvac_viewer/resources/README.md:
--------------------------------------------------------------------------------
1 | # Detailed HVAC Viewer Data Schema
2 |
3 | ## Description
4 | The viewer takes a .json file to render the HVAC loops. The highest level is an array of hashes, with each hash listening an `object_name` and OpenStudio `object_type` of either an AirLoopHVAC or PlantLoop object. Each loop hash has a field components, which is an array of hashes of all the components on that air loop. The component has lists the `object_name`, OpenStudio `object_type`, and `component_type` to specify whether the component is on the supply side or return side of the loop. Each component hash also includes an array of `before_objects` and `after_objects` which is used to determine the order items appear in the loop. Node objects include an array of doubles for all the desired output variables to plot.
5 |
6 | Example schema:
7 | ```
8 | [
9 | {
10 | "loop_name": "5 Zone PVAV",
11 | "loop_type": "OS_AirLoopHVAC",
12 | "boundary_nodes": {
13 | "supply_inlet": "5 Zone PVAV Supply Inlet Node",
14 | "supply_outlet": "5 Zone PVAV Supply Outlet Node",
15 | "demand_inlet": "5 Zone PVAV Demand Inlet Node",
16 | "demand_outlet": "5 Zone PVAV Demand Outlet Node"
17 | },
18 | "components": [
19 | {
20 | "object_name": "5 Zone PVAV Supply Inlet Node",
21 | "object_type": "OS_Node",
22 | "before_objects": ["5 Zone PVAV"],
23 | "after_objects": ["5 Zone PVAV OA System"],
24 | "system_node_temperature": [17.1,17.1],
25 | "system_node_mass_flow_rate": [0.0,0.0],
26 | "component_type": "supply"
27 | },
28 | {
29 | "object_name": "5 Zone PVAV Outdoor Air Node",
30 | "object_type": "OS_Node",
31 | "after_objects": ["5 Zone PVAV OA System"],
32 | "system_node_temperature": [-3.5, -5.2],
33 | "system_node_mass_flow_rate": [0.0, 0.0]
34 | },
35 | {
36 | "object_name": "5 Zone PVAV OA System",
37 | "object_type": "OS_AirLoopHVAC_OutdoorAirSystem",
38 | "before_objects": [
39 | "5 Zone PVAV Outdoor Air Node",
40 | "5 Zone PVAV Supply Inlet Node"
41 | ],
42 | "after_objects": [
43 | "5 Zone PVAV Relief Air Node",
44 | "5 Zone PVAV Mixed Air Node"
45 | ],
46 | "component_type": "supply"
47 | }
48 | ]
49 | }
50 | ]
51 | ```
--------------------------------------------------------------------------------
/lib/measures/detailed_hvac_viewer/resources/images/Coil_Cooling_WaterToAirHeatPump_VariableSpeedEquationFit.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/BuildingPerformanceSimulation/openstudio-measures/6e4e351a1f0eee2932c7a1be3cc2d3562eed3231/lib/measures/detailed_hvac_viewer/resources/images/Coil_Cooling_WaterToAirHeatPump_VariableSpeedEquationFit.png
--------------------------------------------------------------------------------
/lib/measures/detailed_hvac_viewer/resources/images/Coil_Heating_WaterToAirHeatPump_VariableSpeedEquationFit.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/BuildingPerformanceSimulation/openstudio-measures/6e4e351a1f0eee2932c7a1be3cc2d3562eed3231/lib/measures/detailed_hvac_viewer/resources/images/Coil_Heating_WaterToAirHeatPump_VariableSpeedEquationFit.png
--------------------------------------------------------------------------------
/lib/measures/detailed_hvac_viewer/resources/images/Coil_Heating_Water_Baseboard_Radiant.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/BuildingPerformanceSimulation/openstudio-measures/6e4e351a1f0eee2932c7a1be3cc2d3562eed3231/lib/measures/detailed_hvac_viewer/resources/images/Coil_Heating_Water_Baseboard_Radiant.png
--------------------------------------------------------------------------------
/lib/measures/detailed_hvac_viewer/resources/images/OAMixer.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/BuildingPerformanceSimulation/openstudio-measures/6e4e351a1f0eee2932c7a1be3cc2d3562eed3231/lib/measures/detailed_hvac_viewer/resources/images/OAMixer.png
--------------------------------------------------------------------------------
/lib/measures/detailed_hvac_viewer/resources/images/air_cooled.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/BuildingPerformanceSimulation/openstudio-measures/6e4e351a1f0eee2932c7a1be3cc2d3562eed3231/lib/measures/detailed_hvac_viewer/resources/images/air_cooled.png
--------------------------------------------------------------------------------
/lib/measures/detailed_hvac_viewer/resources/images/air_terminal_inlet_mixer.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/BuildingPerformanceSimulation/openstudio-measures/6e4e351a1f0eee2932c7a1be3cc2d3562eed3231/lib/measures/detailed_hvac_viewer/resources/images/air_terminal_inlet_mixer.png
--------------------------------------------------------------------------------
/lib/measures/detailed_hvac_viewer/resources/images/airterminal_dualduct_constantvolume.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/BuildingPerformanceSimulation/openstudio-measures/6e4e351a1f0eee2932c7a1be3cc2d3562eed3231/lib/measures/detailed_hvac_viewer/resources/images/airterminal_dualduct_constantvolume.png
--------------------------------------------------------------------------------
/lib/measures/detailed_hvac_viewer/resources/images/airterminal_dualduct_vav.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/BuildingPerformanceSimulation/openstudio-measures/6e4e351a1f0eee2932c7a1be3cc2d3562eed3231/lib/measures/detailed_hvac_viewer/resources/images/airterminal_dualduct_vav.png
--------------------------------------------------------------------------------
/lib/measures/detailed_hvac_viewer/resources/images/airterminal_dualduct_vav_outdoorair.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/BuildingPerformanceSimulation/openstudio-measures/6e4e351a1f0eee2932c7a1be3cc2d3562eed3231/lib/measures/detailed_hvac_viewer/resources/images/airterminal_dualduct_vav_outdoorair.png
--------------------------------------------------------------------------------
/lib/measures/detailed_hvac_viewer/resources/images/airterminal_fourpipebeam.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/BuildingPerformanceSimulation/openstudio-measures/6e4e351a1f0eee2932c7a1be3cc2d3562eed3231/lib/measures/detailed_hvac_viewer/resources/images/airterminal_fourpipebeam.png
--------------------------------------------------------------------------------
/lib/measures/detailed_hvac_viewer/resources/images/baseboard_electric.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/BuildingPerformanceSimulation/openstudio-measures/6e4e351a1f0eee2932c7a1be3cc2d3562eed3231/lib/measures/detailed_hvac_viewer/resources/images/baseboard_electric.png
--------------------------------------------------------------------------------
/lib/measures/detailed_hvac_viewer/resources/images/baseboard_rad_convect_electric.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/BuildingPerformanceSimulation/openstudio-measures/6e4e351a1f0eee2932c7a1be3cc2d3562eed3231/lib/measures/detailed_hvac_viewer/resources/images/baseboard_rad_convect_electric.png
--------------------------------------------------------------------------------
/lib/measures/detailed_hvac_viewer/resources/images/baseboard_rad_convect_water.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/BuildingPerformanceSimulation/openstudio-measures/6e4e351a1f0eee2932c7a1be3cc2d3562eed3231/lib/measures/detailed_hvac_viewer/resources/images/baseboard_rad_convect_water.png
--------------------------------------------------------------------------------
/lib/measures/detailed_hvac_viewer/resources/images/baseboard_water.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/BuildingPerformanceSimulation/openstudio-measures/6e4e351a1f0eee2932c7a1be3cc2d3562eed3231/lib/measures/detailed_hvac_viewer/resources/images/baseboard_water.png
--------------------------------------------------------------------------------
/lib/measures/detailed_hvac_viewer/resources/images/boiler.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/BuildingPerformanceSimulation/openstudio-measures/6e4e351a1f0eee2932c7a1be3cc2d3562eed3231/lib/measures/detailed_hvac_viewer/resources/images/boiler.png
--------------------------------------------------------------------------------
/lib/measures/detailed_hvac_viewer/resources/images/boiler_steam.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/BuildingPerformanceSimulation/openstudio-measures/6e4e351a1f0eee2932c7a1be3cc2d3562eed3231/lib/measures/detailed_hvac_viewer/resources/images/boiler_steam.png
--------------------------------------------------------------------------------
/lib/measures/detailed_hvac_viewer/resources/images/cav_reheat.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/BuildingPerformanceSimulation/openstudio-measures/6e4e351a1f0eee2932c7a1be3cc2d3562eed3231/lib/measures/detailed_hvac_viewer/resources/images/cav_reheat.png
--------------------------------------------------------------------------------
/lib/measures/detailed_hvac_viewer/resources/images/centralheatpumpsystem.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/BuildingPerformanceSimulation/openstudio-measures/6e4e351a1f0eee2932c7a1be3cc2d3562eed3231/lib/measures/detailed_hvac_viewer/resources/images/centralheatpumpsystem.png
--------------------------------------------------------------------------------
/lib/measures/detailed_hvac_viewer/resources/images/chilled_beam.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/BuildingPerformanceSimulation/openstudio-measures/6e4e351a1f0eee2932c7a1be3cc2d3562eed3231/lib/measures/detailed_hvac_viewer/resources/images/chilled_beam.png
--------------------------------------------------------------------------------
/lib/measures/detailed_hvac_viewer/resources/images/chiller_absorption_direct.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/BuildingPerformanceSimulation/openstudio-measures/6e4e351a1f0eee2932c7a1be3cc2d3562eed3231/lib/measures/detailed_hvac_viewer/resources/images/chiller_absorption_direct.png
--------------------------------------------------------------------------------
/lib/measures/detailed_hvac_viewer/resources/images/chiller_absorption_indirect.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/BuildingPerformanceSimulation/openstudio-measures/6e4e351a1f0eee2932c7a1be3cc2d3562eed3231/lib/measures/detailed_hvac_viewer/resources/images/chiller_absorption_indirect.png
--------------------------------------------------------------------------------
/lib/measures/detailed_hvac_viewer/resources/images/chiller_air.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/BuildingPerformanceSimulation/openstudio-measures/6e4e351a1f0eee2932c7a1be3cc2d3562eed3231/lib/measures/detailed_hvac_viewer/resources/images/chiller_air.png
--------------------------------------------------------------------------------
/lib/measures/detailed_hvac_viewer/resources/images/coil_ht_dx_singlespeed.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/BuildingPerformanceSimulation/openstudio-measures/6e4e351a1f0eee2932c7a1be3cc2d3562eed3231/lib/measures/detailed_hvac_viewer/resources/images/coil_ht_dx_singlespeed.png
--------------------------------------------------------------------------------
/lib/measures/detailed_hvac_viewer/resources/images/coil_system_coolingwater_heat_exchanger.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/BuildingPerformanceSimulation/openstudio-measures/6e4e351a1f0eee2932c7a1be3cc2d3562eed3231/lib/measures/detailed_hvac_viewer/resources/images/coil_system_coolingwater_heat_exchanger.png
--------------------------------------------------------------------------------
/lib/measures/detailed_hvac_viewer/resources/images/coilcooling_water_panel_radiant.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/BuildingPerformanceSimulation/openstudio-measures/6e4e351a1f0eee2932c7a1be3cc2d3562eed3231/lib/measures/detailed_hvac_viewer/resources/images/coilcooling_water_panel_radiant.png
--------------------------------------------------------------------------------
/lib/measures/detailed_hvac_viewer/resources/images/coilcoolingchilledbeam.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/BuildingPerformanceSimulation/openstudio-measures/6e4e351a1f0eee2932c7a1be3cc2d3562eed3231/lib/measures/detailed_hvac_viewer/resources/images/coilcoolingchilledbeam.png
--------------------------------------------------------------------------------
/lib/measures/detailed_hvac_viewer/resources/images/coilcoolingfourpipebeam.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/BuildingPerformanceSimulation/openstudio-measures/6e4e351a1f0eee2932c7a1be3cc2d3562eed3231/lib/measures/detailed_hvac_viewer/resources/images/coilcoolingfourpipebeam.png
--------------------------------------------------------------------------------
/lib/measures/detailed_hvac_viewer/resources/images/coilcoolinglowtemprad_constflow.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/BuildingPerformanceSimulation/openstudio-measures/6e4e351a1f0eee2932c7a1be3cc2d3562eed3231/lib/measures/detailed_hvac_viewer/resources/images/coilcoolinglowtemprad_constflow.png
--------------------------------------------------------------------------------
/lib/measures/detailed_hvac_viewer/resources/images/coilcoolinglowtemprad_varflow.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/BuildingPerformanceSimulation/openstudio-measures/6e4e351a1f0eee2932c7a1be3cc2d3562eed3231/lib/measures/detailed_hvac_viewer/resources/images/coilcoolinglowtemprad_varflow.png
--------------------------------------------------------------------------------
/lib/measures/detailed_hvac_viewer/resources/images/coilheatingdesuperheater.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/BuildingPerformanceSimulation/openstudio-measures/6e4e351a1f0eee2932c7a1be3cc2d3562eed3231/lib/measures/detailed_hvac_viewer/resources/images/coilheatingdesuperheater.png
--------------------------------------------------------------------------------
/lib/measures/detailed_hvac_viewer/resources/images/coilheatingfourpipebeam.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/BuildingPerformanceSimulation/openstudio-measures/6e4e351a1f0eee2932c7a1be3cc2d3562eed3231/lib/measures/detailed_hvac_viewer/resources/images/coilheatingfourpipebeam.png
--------------------------------------------------------------------------------
/lib/measures/detailed_hvac_viewer/resources/images/coilheatinglowtemprad_constflow.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/BuildingPerformanceSimulation/openstudio-measures/6e4e351a1f0eee2932c7a1be3cc2d3562eed3231/lib/measures/detailed_hvac_viewer/resources/images/coilheatinglowtemprad_constflow.png
--------------------------------------------------------------------------------
/lib/measures/detailed_hvac_viewer/resources/images/coilheatinglowtemprad_varflow.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/BuildingPerformanceSimulation/openstudio-measures/6e4e351a1f0eee2932c7a1be3cc2d3562eed3231/lib/measures/detailed_hvac_viewer/resources/images/coilheatinglowtemprad_varflow.png
--------------------------------------------------------------------------------
/lib/measures/detailed_hvac_viewer/resources/images/coilheatingwater_baseboard.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/BuildingPerformanceSimulation/openstudio-measures/6e4e351a1f0eee2932c7a1be3cc2d3562eed3231/lib/measures/detailed_hvac_viewer/resources/images/coilheatingwater_baseboard.png
--------------------------------------------------------------------------------
/lib/measures/detailed_hvac_viewer/resources/images/coilsystem_cooling_dx.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/BuildingPerformanceSimulation/openstudio-measures/6e4e351a1f0eee2932c7a1be3cc2d3562eed3231/lib/measures/detailed_hvac_viewer/resources/images/coilsystem_cooling_dx.png
--------------------------------------------------------------------------------
/lib/measures/detailed_hvac_viewer/resources/images/compressor.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/BuildingPerformanceSimulation/openstudio-measures/6e4e351a1f0eee2932c7a1be3cc2d3562eed3231/lib/measures/detailed_hvac_viewer/resources/images/compressor.png
--------------------------------------------------------------------------------
/lib/measures/detailed_hvac_viewer/resources/images/condenser_cascade.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/BuildingPerformanceSimulation/openstudio-measures/6e4e351a1f0eee2932c7a1be3cc2d3562eed3231/lib/measures/detailed_hvac_viewer/resources/images/condenser_cascade.png
--------------------------------------------------------------------------------
/lib/measures/detailed_hvac_viewer/resources/images/condensor.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/BuildingPerformanceSimulation/openstudio-measures/6e4e351a1f0eee2932c7a1be3cc2d3562eed3231/lib/measures/detailed_hvac_viewer/resources/images/condensor.png
--------------------------------------------------------------------------------
/lib/measures/detailed_hvac_viewer/resources/images/cool_coil.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/BuildingPerformanceSimulation/openstudio-measures/6e4e351a1f0eee2932c7a1be3cc2d3562eed3231/lib/measures/detailed_hvac_viewer/resources/images/cool_coil.png
--------------------------------------------------------------------------------
/lib/measures/detailed_hvac_viewer/resources/images/cool_coil_dx_vari_speed.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/BuildingPerformanceSimulation/openstudio-measures/6e4e351a1f0eee2932c7a1be3cc2d3562eed3231/lib/measures/detailed_hvac_viewer/resources/images/cool_coil_dx_vari_speed.png
--------------------------------------------------------------------------------
/lib/measures/detailed_hvac_viewer/resources/images/cooling_tower.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/BuildingPerformanceSimulation/openstudio-measures/6e4e351a1f0eee2932c7a1be3cc2d3562eed3231/lib/measures/detailed_hvac_viewer/resources/images/cooling_tower.png
--------------------------------------------------------------------------------
/lib/measures/detailed_hvac_viewer/resources/images/cooling_tower_2speed.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/BuildingPerformanceSimulation/openstudio-measures/6e4e351a1f0eee2932c7a1be3cc2d3562eed3231/lib/measures/detailed_hvac_viewer/resources/images/cooling_tower_2speed.png
--------------------------------------------------------------------------------
/lib/measures/detailed_hvac_viewer/resources/images/cooling_tower_variable.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/BuildingPerformanceSimulation/openstudio-measures/6e4e351a1f0eee2932c7a1be3cc2d3562eed3231/lib/measures/detailed_hvac_viewer/resources/images/cooling_tower_variable.png
--------------------------------------------------------------------------------
/lib/measures/detailed_hvac_viewer/resources/images/dehumidifier_dx.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/BuildingPerformanceSimulation/openstudio-measures/6e4e351a1f0eee2932c7a1be3cc2d3562eed3231/lib/measures/detailed_hvac_viewer/resources/images/dehumidifier_dx.png
--------------------------------------------------------------------------------
/lib/measures/detailed_hvac_viewer/resources/images/direct-air.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/BuildingPerformanceSimulation/openstudio-measures/6e4e351a1f0eee2932c7a1be3cc2d3562eed3231/lib/measures/detailed_hvac_viewer/resources/images/direct-air.png
--------------------------------------------------------------------------------
/lib/measures/detailed_hvac_viewer/resources/images/directEvap.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/BuildingPerformanceSimulation/openstudio-measures/6e4e351a1f0eee2932c7a1be3cc2d3562eed3231/lib/measures/detailed_hvac_viewer/resources/images/directEvap.png
--------------------------------------------------------------------------------
/lib/measures/detailed_hvac_viewer/resources/images/districtcooling.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/BuildingPerformanceSimulation/openstudio-measures/6e4e351a1f0eee2932c7a1be3cc2d3562eed3231/lib/measures/detailed_hvac_viewer/resources/images/districtcooling.png
--------------------------------------------------------------------------------
/lib/measures/detailed_hvac_viewer/resources/images/districtheating.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/BuildingPerformanceSimulation/openstudio-measures/6e4e351a1f0eee2932c7a1be3cc2d3562eed3231/lib/measures/detailed_hvac_viewer/resources/images/districtheating.png
--------------------------------------------------------------------------------
/lib/measures/detailed_hvac_viewer/resources/images/duct.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/BuildingPerformanceSimulation/openstudio-measures/6e4e351a1f0eee2932c7a1be3cc2d3562eed3231/lib/measures/detailed_hvac_viewer/resources/images/duct.png
--------------------------------------------------------------------------------
/lib/measures/detailed_hvac_viewer/resources/images/dx_cooling_multispeed.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/BuildingPerformanceSimulation/openstudio-measures/6e4e351a1f0eee2932c7a1be3cc2d3562eed3231/lib/measures/detailed_hvac_viewer/resources/images/dx_cooling_multispeed.png
--------------------------------------------------------------------------------
/lib/measures/detailed_hvac_viewer/resources/images/dxcoolingcoil_2speed.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/BuildingPerformanceSimulation/openstudio-measures/6e4e351a1f0eee2932c7a1be3cc2d3562eed3231/lib/measures/detailed_hvac_viewer/resources/images/dxcoolingcoil_2speed.png
--------------------------------------------------------------------------------
/lib/measures/detailed_hvac_viewer/resources/images/dxcoolingcoil_2stage_humidity.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/BuildingPerformanceSimulation/openstudio-measures/6e4e351a1f0eee2932c7a1be3cc2d3562eed3231/lib/measures/detailed_hvac_viewer/resources/images/dxcoolingcoil_2stage_humidity.png
--------------------------------------------------------------------------------
/lib/measures/detailed_hvac_viewer/resources/images/dxcoolingcoil_singlespeed.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/BuildingPerformanceSimulation/openstudio-measures/6e4e351a1f0eee2932c7a1be3cc2d3562eed3231/lib/measures/detailed_hvac_viewer/resources/images/dxcoolingcoil_singlespeed.png
--------------------------------------------------------------------------------
/lib/measures/detailed_hvac_viewer/resources/images/electric_furnace.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/BuildingPerformanceSimulation/openstudio-measures/6e4e351a1f0eee2932c7a1be3cc2d3562eed3231/lib/measures/detailed_hvac_viewer/resources/images/electric_furnace.png
--------------------------------------------------------------------------------
/lib/measures/detailed_hvac_viewer/resources/images/electric_humidifier.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/BuildingPerformanceSimulation/openstudio-measures/6e4e351a1f0eee2932c7a1be3cc2d3562eed3231/lib/measures/detailed_hvac_viewer/resources/images/electric_humidifier.png
--------------------------------------------------------------------------------
/lib/measures/detailed_hvac_viewer/resources/images/energy_recov_vent.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/BuildingPerformanceSimulation/openstudio-measures/6e4e351a1f0eee2932c7a1be3cc2d3562eed3231/lib/measures/detailed_hvac_viewer/resources/images/energy_recov_vent.png
--------------------------------------------------------------------------------
/lib/measures/detailed_hvac_viewer/resources/images/evap_cooled.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/BuildingPerformanceSimulation/openstudio-measures/6e4e351a1f0eee2932c7a1be3cc2d3562eed3231/lib/measures/detailed_hvac_viewer/resources/images/evap_cooled.png
--------------------------------------------------------------------------------
/lib/measures/detailed_hvac_viewer/resources/images/evap_fluid_cooler.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/BuildingPerformanceSimulation/openstudio-measures/6e4e351a1f0eee2932c7a1be3cc2d3562eed3231/lib/measures/detailed_hvac_viewer/resources/images/evap_fluid_cooler.png
--------------------------------------------------------------------------------
/lib/measures/detailed_hvac_viewer/resources/images/evap_fluid_cooler_two_speed.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/BuildingPerformanceSimulation/openstudio-measures/6e4e351a1f0eee2932c7a1be3cc2d3562eed3231/lib/measures/detailed_hvac_viewer/resources/images/evap_fluid_cooler_two_speed.png
--------------------------------------------------------------------------------
/lib/measures/detailed_hvac_viewer/resources/images/fan_componentmodel.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/BuildingPerformanceSimulation/openstudio-measures/6e4e351a1f0eee2932c7a1be3cc2d3562eed3231/lib/measures/detailed_hvac_viewer/resources/images/fan_componentmodel.png
--------------------------------------------------------------------------------
/lib/measures/detailed_hvac_viewer/resources/images/fan_constant.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/BuildingPerformanceSimulation/openstudio-measures/6e4e351a1f0eee2932c7a1be3cc2d3562eed3231/lib/measures/detailed_hvac_viewer/resources/images/fan_constant.png
--------------------------------------------------------------------------------
/lib/measures/detailed_hvac_viewer/resources/images/fan_on_off.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/BuildingPerformanceSimulation/openstudio-measures/6e4e351a1f0eee2932c7a1be3cc2d3562eed3231/lib/measures/detailed_hvac_viewer/resources/images/fan_on_off.png
--------------------------------------------------------------------------------
/lib/measures/detailed_hvac_viewer/resources/images/fan_systemmodel.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/BuildingPerformanceSimulation/openstudio-measures/6e4e351a1f0eee2932c7a1be3cc2d3562eed3231/lib/measures/detailed_hvac_viewer/resources/images/fan_systemmodel.png
--------------------------------------------------------------------------------
/lib/measures/detailed_hvac_viewer/resources/images/fan_variable.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/BuildingPerformanceSimulation/openstudio-measures/6e4e351a1f0eee2932c7a1be3cc2d3562eed3231/lib/measures/detailed_hvac_viewer/resources/images/fan_variable.png
--------------------------------------------------------------------------------
/lib/measures/detailed_hvac_viewer/resources/images/fan_zoneexhaust.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/BuildingPerformanceSimulation/openstudio-measures/6e4e351a1f0eee2932c7a1be3cc2d3562eed3231/lib/measures/detailed_hvac_viewer/resources/images/fan_zoneexhaust.png
--------------------------------------------------------------------------------
/lib/measures/detailed_hvac_viewer/resources/images/fluid_cooler_single.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/BuildingPerformanceSimulation/openstudio-measures/6e4e351a1f0eee2932c7a1be3cc2d3562eed3231/lib/measures/detailed_hvac_viewer/resources/images/fluid_cooler_single.png
--------------------------------------------------------------------------------
/lib/measures/detailed_hvac_viewer/resources/images/fluid_cooler_two.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/BuildingPerformanceSimulation/openstudio-measures/6e4e351a1f0eee2932c7a1be3cc2d3562eed3231/lib/measures/detailed_hvac_viewer/resources/images/fluid_cooler_two.png
--------------------------------------------------------------------------------
/lib/measures/detailed_hvac_viewer/resources/images/fluid_hx.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/BuildingPerformanceSimulation/openstudio-measures/6e4e351a1f0eee2932c7a1be3cc2d3562eed3231/lib/measures/detailed_hvac_viewer/resources/images/fluid_hx.png
--------------------------------------------------------------------------------
/lib/measures/detailed_hvac_viewer/resources/images/four_pipe_fan_coil.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/BuildingPerformanceSimulation/openstudio-measures/6e4e351a1f0eee2932c7a1be3cc2d3562eed3231/lib/measures/detailed_hvac_viewer/resources/images/four_pipe_fan_coil.png
--------------------------------------------------------------------------------
/lib/measures/detailed_hvac_viewer/resources/images/furnace.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/BuildingPerformanceSimulation/openstudio-measures/6e4e351a1f0eee2932c7a1be3cc2d3562eed3231/lib/measures/detailed_hvac_viewer/resources/images/furnace.png
--------------------------------------------------------------------------------
/lib/measures/detailed_hvac_viewer/resources/images/furnace_multi_stage.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/BuildingPerformanceSimulation/openstudio-measures/6e4e351a1f0eee2932c7a1be3cc2d3562eed3231/lib/measures/detailed_hvac_viewer/resources/images/furnace_multi_stage.png
--------------------------------------------------------------------------------
/lib/measures/detailed_hvac_viewer/resources/images/gas_humidifier.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/BuildingPerformanceSimulation/openstudio-measures/6e4e351a1f0eee2932c7a1be3cc2d3562eed3231/lib/measures/detailed_hvac_viewer/resources/images/gas_humidifier.png
--------------------------------------------------------------------------------
/lib/measures/detailed_hvac_viewer/resources/images/generator_fuelcell_exhaustgastowaterheatexchanger.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/BuildingPerformanceSimulation/openstudio-measures/6e4e351a1f0eee2932c7a1be3cc2d3562eed3231/lib/measures/detailed_hvac_viewer/resources/images/generator_fuelcell_exhaustgastowaterheatexchanger.png
--------------------------------------------------------------------------------
/lib/measures/detailed_hvac_viewer/resources/images/generator_microturbine_heatrecovery.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/BuildingPerformanceSimulation/openstudio-measures/6e4e351a1f0eee2932c7a1be3cc2d3562eed3231/lib/measures/detailed_hvac_viewer/resources/images/generator_microturbine_heatrecovery.png
--------------------------------------------------------------------------------
/lib/measures/detailed_hvac_viewer/resources/images/ground_heat_exchanger_horizontal.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/BuildingPerformanceSimulation/openstudio-measures/6e4e351a1f0eee2932c7a1be3cc2d3562eed3231/lib/measures/detailed_hvac_viewer/resources/images/ground_heat_exchanger_horizontal.png
--------------------------------------------------------------------------------
/lib/measures/detailed_hvac_viewer/resources/images/ground_heat_exchanger_vertical.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/BuildingPerformanceSimulation/openstudio-measures/6e4e351a1f0eee2932c7a1be3cc2d3562eed3231/lib/measures/detailed_hvac_viewer/resources/images/ground_heat_exchanger_vertical.png
--------------------------------------------------------------------------------
/lib/measures/detailed_hvac_viewer/resources/images/headered_pumps_constant.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/BuildingPerformanceSimulation/openstudio-measures/6e4e351a1f0eee2932c7a1be3cc2d3562eed3231/lib/measures/detailed_hvac_viewer/resources/images/headered_pumps_constant.png
--------------------------------------------------------------------------------
/lib/measures/detailed_hvac_viewer/resources/images/headered_pumps_variable.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/BuildingPerformanceSimulation/openstudio-measures/6e4e351a1f0eee2932c7a1be3cc2d3562eed3231/lib/measures/detailed_hvac_viewer/resources/images/headered_pumps_variable.png
--------------------------------------------------------------------------------
/lib/measures/detailed_hvac_viewer/resources/images/heat_coil-uht.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/BuildingPerformanceSimulation/openstudio-measures/6e4e351a1f0eee2932c7a1be3cc2d3562eed3231/lib/measures/detailed_hvac_viewer/resources/images/heat_coil-uht.png
--------------------------------------------------------------------------------
/lib/measures/detailed_hvac_viewer/resources/images/heat_coil.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/BuildingPerformanceSimulation/openstudio-measures/6e4e351a1f0eee2932c7a1be3cc2d3562eed3231/lib/measures/detailed_hvac_viewer/resources/images/heat_coil.png
--------------------------------------------------------------------------------
/lib/measures/detailed_hvac_viewer/resources/images/heat_pump3.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/BuildingPerformanceSimulation/openstudio-measures/6e4e351a1f0eee2932c7a1be3cc2d3562eed3231/lib/measures/detailed_hvac_viewer/resources/images/heat_pump3.png
--------------------------------------------------------------------------------
/lib/measures/detailed_hvac_viewer/resources/images/heat_transfer_outdoorair.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/BuildingPerformanceSimulation/openstudio-measures/6e4e351a1f0eee2932c7a1be3cc2d3562eed3231/lib/measures/detailed_hvac_viewer/resources/images/heat_transfer_outdoorair.png
--------------------------------------------------------------------------------
/lib/measures/detailed_hvac_viewer/resources/images/heatpump_watertowater_equationfit_cooling.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/BuildingPerformanceSimulation/openstudio-measures/6e4e351a1f0eee2932c7a1be3cc2d3562eed3231/lib/measures/detailed_hvac_viewer/resources/images/heatpump_watertowater_equationfit_cooling.png
--------------------------------------------------------------------------------
/lib/measures/detailed_hvac_viewer/resources/images/heatpump_watertowater_equationfit_heating.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/BuildingPerformanceSimulation/openstudio-measures/6e4e351a1f0eee2932c7a1be3cc2d3562eed3231/lib/measures/detailed_hvac_viewer/resources/images/heatpump_watertowater_equationfit_heating.png
--------------------------------------------------------------------------------
/lib/measures/detailed_hvac_viewer/resources/images/hightempradiant.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/BuildingPerformanceSimulation/openstudio-measures/6e4e351a1f0eee2932c7a1be3cc2d3562eed3231/lib/measures/detailed_hvac_viewer/resources/images/hightempradiant.png
--------------------------------------------------------------------------------
/lib/measures/detailed_hvac_viewer/resources/images/ht_coil_dx_vari.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/BuildingPerformanceSimulation/openstudio-measures/6e4e351a1f0eee2932c7a1be3cc2d3562eed3231/lib/measures/detailed_hvac_viewer/resources/images/ht_coil_dx_vari.png
--------------------------------------------------------------------------------
/lib/measures/detailed_hvac_viewer/resources/images/indirectEvap.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/BuildingPerformanceSimulation/openstudio-measures/6e4e351a1f0eee2932c7a1be3cc2d3562eed3231/lib/measures/detailed_hvac_viewer/resources/images/indirectEvap.png
--------------------------------------------------------------------------------
/lib/measures/detailed_hvac_viewer/resources/images/lowtempradiant_constflow.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/BuildingPerformanceSimulation/openstudio-measures/6e4e351a1f0eee2932c7a1be3cc2d3562eed3231/lib/measures/detailed_hvac_viewer/resources/images/lowtempradiant_constflow.png
--------------------------------------------------------------------------------
/lib/measures/detailed_hvac_viewer/resources/images/lowtempradiant_varflow.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/BuildingPerformanceSimulation/openstudio-measures/6e4e351a1f0eee2932c7a1be3cc2d3562eed3231/lib/measures/detailed_hvac_viewer/resources/images/lowtempradiant_varflow.png
--------------------------------------------------------------------------------
/lib/measures/detailed_hvac_viewer/resources/images/mechanical-sub-cooler.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/BuildingPerformanceSimulation/openstudio-measures/6e4e351a1f0eee2932c7a1be3cc2d3562eed3231/lib/measures/detailed_hvac_viewer/resources/images/mechanical-sub-cooler.png
--------------------------------------------------------------------------------
/lib/measures/detailed_hvac_viewer/resources/images/missing_icon.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/BuildingPerformanceSimulation/openstudio-measures/6e4e351a1f0eee2932c7a1be3cc2d3562eed3231/lib/measures/detailed_hvac_viewer/resources/images/missing_icon.png
--------------------------------------------------------------------------------
/lib/measures/detailed_hvac_viewer/resources/images/mixer.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/BuildingPerformanceSimulation/openstudio-measures/6e4e351a1f0eee2932c7a1be3cc2d3562eed3231/lib/measures/detailed_hvac_viewer/resources/images/mixer.png
--------------------------------------------------------------------------------
/lib/measures/detailed_hvac_viewer/resources/images/parallel_fan_terminal.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/BuildingPerformanceSimulation/openstudio-measures/6e4e351a1f0eee2932c7a1be3cc2d3562eed3231/lib/measures/detailed_hvac_viewer/resources/images/parallel_fan_terminal.png
--------------------------------------------------------------------------------
/lib/measures/detailed_hvac_viewer/resources/images/pipe.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/BuildingPerformanceSimulation/openstudio-measures/6e4e351a1f0eee2932c7a1be3cc2d3562eed3231/lib/measures/detailed_hvac_viewer/resources/images/pipe.png
--------------------------------------------------------------------------------
/lib/measures/detailed_hvac_viewer/resources/images/pipe_adiabatic.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/BuildingPerformanceSimulation/openstudio-measures/6e4e351a1f0eee2932c7a1be3cc2d3562eed3231/lib/measures/detailed_hvac_viewer/resources/images/pipe_adiabatic.png
--------------------------------------------------------------------------------
/lib/measures/detailed_hvac_viewer/resources/images/pipe_indoor.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/BuildingPerformanceSimulation/openstudio-measures/6e4e351a1f0eee2932c7a1be3cc2d3562eed3231/lib/measures/detailed_hvac_viewer/resources/images/pipe_indoor.png
--------------------------------------------------------------------------------
/lib/measures/detailed_hvac_viewer/resources/images/pipe_outdoor.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/BuildingPerformanceSimulation/openstudio-measures/6e4e351a1f0eee2932c7a1be3cc2d3562eed3231/lib/measures/detailed_hvac_viewer/resources/images/pipe_outdoor.png
--------------------------------------------------------------------------------
/lib/measures/detailed_hvac_viewer/resources/images/plant_profile.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/BuildingPerformanceSimulation/openstudio-measures/6e4e351a1f0eee2932c7a1be3cc2d3562eed3231/lib/measures/detailed_hvac_viewer/resources/images/plant_profile.png
--------------------------------------------------------------------------------
/lib/measures/detailed_hvac_viewer/resources/images/plant_temp_source.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/BuildingPerformanceSimulation/openstudio-measures/6e4e351a1f0eee2932c7a1be3cc2d3562eed3231/lib/measures/detailed_hvac_viewer/resources/images/plant_temp_source.png
--------------------------------------------------------------------------------
/lib/measures/detailed_hvac_viewer/resources/images/pthp.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/BuildingPerformanceSimulation/openstudio-measures/6e4e351a1f0eee2932c7a1be3cc2d3562eed3231/lib/measures/detailed_hvac_viewer/resources/images/pthp.png
--------------------------------------------------------------------------------
/lib/measures/detailed_hvac_viewer/resources/images/pump_constant.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/BuildingPerformanceSimulation/openstudio-measures/6e4e351a1f0eee2932c7a1be3cc2d3562eed3231/lib/measures/detailed_hvac_viewer/resources/images/pump_constant.png
--------------------------------------------------------------------------------
/lib/measures/detailed_hvac_viewer/resources/images/pump_variable.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/BuildingPerformanceSimulation/openstudio-measures/6e4e351a1f0eee2932c7a1be3cc2d3562eed3231/lib/measures/detailed_hvac_viewer/resources/images/pump_variable.png
--------------------------------------------------------------------------------
/lib/measures/detailed_hvac_viewer/resources/images/refrigeration_system.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/BuildingPerformanceSimulation/openstudio-measures/6e4e351a1f0eee2932c7a1be3cc2d3562eed3231/lib/measures/detailed_hvac_viewer/resources/images/refrigeration_system.png
--------------------------------------------------------------------------------
/lib/measures/detailed_hvac_viewer/resources/images/return_plenum.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/BuildingPerformanceSimulation/openstudio-measures/6e4e351a1f0eee2932c7a1be3cc2d3562eed3231/lib/measures/detailed_hvac_viewer/resources/images/return_plenum.png
--------------------------------------------------------------------------------
/lib/measures/detailed_hvac_viewer/resources/images/series_fan_terminal.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/BuildingPerformanceSimulation/openstudio-measures/6e4e351a1f0eee2932c7a1be3cc2d3562eed3231/lib/measures/detailed_hvac_viewer/resources/images/series_fan_terminal.png
--------------------------------------------------------------------------------
/lib/measures/detailed_hvac_viewer/resources/images/sewer_alone.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/BuildingPerformanceSimulation/openstudio-measures/6e4e351a1f0eee2932c7a1be3cc2d3562eed3231/lib/measures/detailed_hvac_viewer/resources/images/sewer_alone.png
--------------------------------------------------------------------------------
/lib/measures/detailed_hvac_viewer/resources/images/sewer_over.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/BuildingPerformanceSimulation/openstudio-measures/6e4e351a1f0eee2932c7a1be3cc2d3562eed3231/lib/measures/detailed_hvac_viewer/resources/images/sewer_over.png
--------------------------------------------------------------------------------
/lib/measures/detailed_hvac_viewer/resources/images/sewer_press.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/BuildingPerformanceSimulation/openstudio-measures/6e4e351a1f0eee2932c7a1be3cc2d3562eed3231/lib/measures/detailed_hvac_viewer/resources/images/sewer_press.png
--------------------------------------------------------------------------------
/lib/measures/detailed_hvac_viewer/resources/images/shower.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/BuildingPerformanceSimulation/openstudio-measures/6e4e351a1f0eee2932c7a1be3cc2d3562eed3231/lib/measures/detailed_hvac_viewer/resources/images/shower.png
--------------------------------------------------------------------------------
/lib/measures/detailed_hvac_viewer/resources/images/single_ducts_constant_vol_4pipe.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/BuildingPerformanceSimulation/openstudio-measures/6e4e351a1f0eee2932c7a1be3cc2d3562eed3231/lib/measures/detailed_hvac_viewer/resources/images/single_ducts_constant_vol_4pipe.png
--------------------------------------------------------------------------------
/lib/measures/detailed_hvac_viewer/resources/images/sink.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/BuildingPerformanceSimulation/openstudio-measures/6e4e351a1f0eee2932c7a1be3cc2d3562eed3231/lib/measures/detailed_hvac_viewer/resources/images/sink.png
--------------------------------------------------------------------------------
/lib/measures/detailed_hvac_viewer/resources/images/slhx.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/BuildingPerformanceSimulation/openstudio-measures/6e4e351a1f0eee2932c7a1be3cc2d3562eed3231/lib/measures/detailed_hvac_viewer/resources/images/slhx.png
--------------------------------------------------------------------------------
/lib/measures/detailed_hvac_viewer/resources/images/solarcollector_flatplate_photovoltaicthermal.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/BuildingPerformanceSimulation/openstudio-measures/6e4e351a1f0eee2932c7a1be3cc2d3562eed3231/lib/measures/detailed_hvac_viewer/resources/images/solarcollector_flatplate_photovoltaicthermal.png
--------------------------------------------------------------------------------
/lib/measures/detailed_hvac_viewer/resources/images/solarcollector_flatplate_water.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/BuildingPerformanceSimulation/openstudio-measures/6e4e351a1f0eee2932c7a1be3cc2d3562eed3231/lib/measures/detailed_hvac_viewer/resources/images/solarcollector_flatplate_water.png
--------------------------------------------------------------------------------
/lib/measures/detailed_hvac_viewer/resources/images/solarcollector_integralstorage.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/BuildingPerformanceSimulation/openstudio-measures/6e4e351a1f0eee2932c7a1be3cc2d3562eed3231/lib/measures/detailed_hvac_viewer/resources/images/solarcollector_integralstorage.png
--------------------------------------------------------------------------------
/lib/measures/detailed_hvac_viewer/resources/images/splitter.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/BuildingPerformanceSimulation/openstudio-measures/6e4e351a1f0eee2932c7a1be3cc2d3562eed3231/lib/measures/detailed_hvac_viewer/resources/images/splitter.png
--------------------------------------------------------------------------------
/lib/measures/detailed_hvac_viewer/resources/images/supply_mixer.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/BuildingPerformanceSimulation/openstudio-measures/6e4e351a1f0eee2932c7a1be3cc2d3562eed3231/lib/measures/detailed_hvac_viewer/resources/images/supply_mixer.png
--------------------------------------------------------------------------------
/lib/measures/detailed_hvac_viewer/resources/images/supply_plenum.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/BuildingPerformanceSimulation/openstudio-measures/6e4e351a1f0eee2932c7a1be3cc2d3562eed3231/lib/measures/detailed_hvac_viewer/resources/images/supply_plenum.png
--------------------------------------------------------------------------------
/lib/measures/detailed_hvac_viewer/resources/images/supply_splitter.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/BuildingPerformanceSimulation/openstudio-measures/6e4e351a1f0eee2932c7a1be3cc2d3562eed3231/lib/measures/detailed_hvac_viewer/resources/images/supply_splitter.png
--------------------------------------------------------------------------------
/lib/measures/detailed_hvac_viewer/resources/images/swimming_pool.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/BuildingPerformanceSimulation/openstudio-measures/6e4e351a1f0eee2932c7a1be3cc2d3562eed3231/lib/measures/detailed_hvac_viewer/resources/images/swimming_pool.png
--------------------------------------------------------------------------------
/lib/measures/detailed_hvac_viewer/resources/images/system_type_1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/BuildingPerformanceSimulation/openstudio-measures/6e4e351a1f0eee2932c7a1be3cc2d3562eed3231/lib/measures/detailed_hvac_viewer/resources/images/system_type_1.png
--------------------------------------------------------------------------------
/lib/measures/detailed_hvac_viewer/resources/images/system_type_2.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/BuildingPerformanceSimulation/openstudio-measures/6e4e351a1f0eee2932c7a1be3cc2d3562eed3231/lib/measures/detailed_hvac_viewer/resources/images/system_type_2.png
--------------------------------------------------------------------------------
/lib/measures/detailed_hvac_viewer/resources/images/tempering_valve.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/BuildingPerformanceSimulation/openstudio-measures/6e4e351a1f0eee2932c7a1be3cc2d3562eed3231/lib/measures/detailed_hvac_viewer/resources/images/tempering_valve.png
--------------------------------------------------------------------------------
/lib/measures/detailed_hvac_viewer/resources/images/thermal_storage_ice.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/BuildingPerformanceSimulation/openstudio-measures/6e4e351a1f0eee2932c7a1be3cc2d3562eed3231/lib/measures/detailed_hvac_viewer/resources/images/thermal_storage_ice.png
--------------------------------------------------------------------------------
/lib/measures/detailed_hvac_viewer/resources/images/thermal_storage_strat.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/BuildingPerformanceSimulation/openstudio-measures/6e4e351a1f0eee2932c7a1be3cc2d3562eed3231/lib/measures/detailed_hvac_viewer/resources/images/thermal_storage_strat.png
--------------------------------------------------------------------------------
/lib/measures/detailed_hvac_viewer/resources/images/toilet.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/BuildingPerformanceSimulation/openstudio-measures/6e4e351a1f0eee2932c7a1be3cc2d3562eed3231/lib/measures/detailed_hvac_viewer/resources/images/toilet.png
--------------------------------------------------------------------------------
/lib/measures/detailed_hvac_viewer/resources/images/unit_ventilator.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/BuildingPerformanceSimulation/openstudio-measures/6e4e351a1f0eee2932c7a1be3cc2d3562eed3231/lib/measures/detailed_hvac_viewer/resources/images/unit_ventilator.png
--------------------------------------------------------------------------------
/lib/measures/detailed_hvac_viewer/resources/images/unitary_system.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/BuildingPerformanceSimulation/openstudio-measures/6e4e351a1f0eee2932c7a1be3cc2d3562eed3231/lib/measures/detailed_hvac_viewer/resources/images/unitary_system.png
--------------------------------------------------------------------------------
/lib/measures/detailed_hvac_viewer/resources/images/user_defined.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/BuildingPerformanceSimulation/openstudio-measures/6e4e351a1f0eee2932c7a1be3cc2d3562eed3231/lib/measures/detailed_hvac_viewer/resources/images/user_defined.png
--------------------------------------------------------------------------------
/lib/measures/detailed_hvac_viewer/resources/images/vav-reheat.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/BuildingPerformanceSimulation/openstudio-measures/6e4e351a1f0eee2932c7a1be3cc2d3562eed3231/lib/measures/detailed_hvac_viewer/resources/images/vav-reheat.png
--------------------------------------------------------------------------------
/lib/measures/detailed_hvac_viewer/resources/images/vav_noreheat.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/BuildingPerformanceSimulation/openstudio-measures/6e4e351a1f0eee2932c7a1be3cc2d3562eed3231/lib/measures/detailed_hvac_viewer/resources/images/vav_noreheat.png
--------------------------------------------------------------------------------
/lib/measures/detailed_hvac_viewer/resources/images/vrf_outdoor.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/BuildingPerformanceSimulation/openstudio-measures/6e4e351a1f0eee2932c7a1be3cc2d3562eed3231/lib/measures/detailed_hvac_viewer/resources/images/vrf_outdoor.png
--------------------------------------------------------------------------------
/lib/measures/detailed_hvac_viewer/resources/images/vrf_transfer.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/BuildingPerformanceSimulation/openstudio-measures/6e4e351a1f0eee2932c7a1be3cc2d3562eed3231/lib/measures/detailed_hvac_viewer/resources/images/vrf_transfer.png
--------------------------------------------------------------------------------
/lib/measures/detailed_hvac_viewer/resources/images/vrf_unit.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/BuildingPerformanceSimulation/openstudio-measures/6e4e351a1f0eee2932c7a1be3cc2d3562eed3231/lib/measures/detailed_hvac_viewer/resources/images/vrf_unit.png
--------------------------------------------------------------------------------
/lib/measures/detailed_hvac_viewer/resources/images/wahpDXCC.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/BuildingPerformanceSimulation/openstudio-measures/6e4e351a1f0eee2932c7a1be3cc2d3562eed3231/lib/measures/detailed_hvac_viewer/resources/images/wahpDXCC.png
--------------------------------------------------------------------------------
/lib/measures/detailed_hvac_viewer/resources/images/wahpDXHC.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/BuildingPerformanceSimulation/openstudio-measures/6e4e351a1f0eee2932c7a1be3cc2d3562eed3231/lib/measures/detailed_hvac_viewer/resources/images/wahpDXHC.png
--------------------------------------------------------------------------------
/lib/measures/detailed_hvac_viewer/resources/images/walkin_case.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/BuildingPerformanceSimulation/openstudio-measures/6e4e351a1f0eee2932c7a1be3cc2d3562eed3231/lib/measures/detailed_hvac_viewer/resources/images/walkin_case.png
--------------------------------------------------------------------------------
/lib/measures/detailed_hvac_viewer/resources/images/water_connection.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/BuildingPerformanceSimulation/openstudio-measures/6e4e351a1f0eee2932c7a1be3cc2d3562eed3231/lib/measures/detailed_hvac_viewer/resources/images/water_connection.png
--------------------------------------------------------------------------------
/lib/measures/detailed_hvac_viewer/resources/images/water_cooled.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/BuildingPerformanceSimulation/openstudio-measures/6e4e351a1f0eee2932c7a1be3cc2d3562eed3231/lib/measures/detailed_hvac_viewer/resources/images/water_cooled.png
--------------------------------------------------------------------------------
/lib/measures/detailed_hvac_viewer/resources/images/water_heater_mixed.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/BuildingPerformanceSimulation/openstudio-measures/6e4e351a1f0eee2932c7a1be3cc2d3562eed3231/lib/measures/detailed_hvac_viewer/resources/images/water_heater_mixed.png
--------------------------------------------------------------------------------
/lib/measures/detailed_hvac_viewer/resources/images/water_heater_stratified.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/BuildingPerformanceSimulation/openstudio-measures/6e4e351a1f0eee2932c7a1be3cc2d3562eed3231/lib/measures/detailed_hvac_viewer/resources/images/water_heater_stratified.png
--------------------------------------------------------------------------------
/lib/measures/detailed_hvac_viewer/resources/images/water_main_alone.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/BuildingPerformanceSimulation/openstudio-measures/6e4e351a1f0eee2932c7a1be3cc2d3562eed3231/lib/measures/detailed_hvac_viewer/resources/images/water_main_alone.png
--------------------------------------------------------------------------------
/lib/measures/detailed_hvac_viewer/resources/images/water_main_alone_over.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/BuildingPerformanceSimulation/openstudio-measures/6e4e351a1f0eee2932c7a1be3cc2d3562eed3231/lib/measures/detailed_hvac_viewer/resources/images/water_main_alone_over.png
--------------------------------------------------------------------------------
/lib/measures/detailed_hvac_viewer/resources/images/water_main_alone_press.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/BuildingPerformanceSimulation/openstudio-measures/6e4e351a1f0eee2932c7a1be3cc2d3562eed3231/lib/measures/detailed_hvac_viewer/resources/images/water_main_alone_press.png
--------------------------------------------------------------------------------
/lib/measures/detailed_hvac_viewer/resources/images/watertoairHP.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/BuildingPerformanceSimulation/openstudio-measures/6e4e351a1f0eee2932c7a1be3cc2d3562eed3231/lib/measures/detailed_hvac_viewer/resources/images/watertoairHP.png
--------------------------------------------------------------------------------
/lib/measures/detailed_hvac_viewer/resources/images/zone.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/BuildingPerformanceSimulation/openstudio-measures/6e4e351a1f0eee2932c7a1be3cc2d3562eed3231/lib/measures/detailed_hvac_viewer/resources/images/zone.png
--------------------------------------------------------------------------------
/lib/measures/detailed_hvac_viewer/resources/images/zone_tx.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/BuildingPerformanceSimulation/openstudio-measures/6e4e351a1f0eee2932c7a1be3cc2d3562eed3231/lib/measures/detailed_hvac_viewer/resources/images/zone_tx.png
--------------------------------------------------------------------------------
/lib/measures/detailed_hvac_viewer/resources/images/zonehvac_coolingpanel_radiantconvective_water.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/BuildingPerformanceSimulation/openstudio-measures/6e4e351a1f0eee2932c7a1be3cc2d3562eed3231/lib/measures/detailed_hvac_viewer/resources/images/zonehvac_coolingpanel_radiantconvective_water.png
--------------------------------------------------------------------------------
/lib/measures/detailed_hvac_viewer/resources/images/zonehvac_low_temperature_radiant_electric.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/BuildingPerformanceSimulation/openstudio-measures/6e4e351a1f0eee2932c7a1be3cc2d3562eed3231/lib/measures/detailed_hvac_viewer/resources/images/zonehvac_low_temperature_radiant_electric.png
--------------------------------------------------------------------------------
/lib/measures/export_meter_to_csv/LICENSE.md:
--------------------------------------------------------------------------------
1 | Copyright 2014-2021 Building Performance Simulation
2 |
3 | Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
4 |
5 | The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
6 |
7 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
--------------------------------------------------------------------------------
/lib/measures/export_meter_to_csv/measure.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 | 3.0
4 | export_meterto_csv
5 | 0d08ca00-7dea-436d-843a-a48a483cbf7c
6 | 26bfba40-aab4-4bb2-97be-3fdbcb701899
7 | 20210707T164406Z
8 | 58A298CD
9 | ExportMetertoCSV
10 | ExportMetertoCSV
11 | Exports an OutputMeter specified in the AddOutputMeter OpenStudio measure to a csv file.
12 | This measure searches for the OutputMeter name in the eplusout sql file and saves it to a csv file.
13 |
14 |
15 | meter_name
16 | Enter Meter Name.
17 | String
18 | true
19 | false
20 |
21 |
22 | reporting_frequency
23 | Reporting Frequency.
24 | Choice
25 | true
26 | false
27 | Hourly
28 |
29 |
30 | Hourly
31 | Hourly
32 |
33 |
34 | Zone Timestep
35 | Zone Timestep
36 |
37 |
38 |
39 |
40 |
41 |
42 |
43 | Reporting.QAQC
44 |
45 |
46 |
47 | Measure Type
48 | ReportingMeasure
49 | string
50 |
51 |
52 | Intended Software Tool
53 | OpenStudio Application
54 | string
55 |
56 |
57 | Intended Software Tool
58 | Parametric Analysis Tool
59 | string
60 |
61 |
62 | Intended Use Case
63 | Model Articulation
64 | string
65 |
66 |
67 |
68 |
69 | example_model.osm
70 | osm
71 | test
72 | 7C26486C
73 |
74 |
75 | example_model_weather.epw
76 | epw
77 | test
78 | BDF687C1
79 |
80 |
81 | ExportMetertoCSV_test.rb
82 | rb
83 | test
84 | 8A2DF6D8
85 |
86 |
87 |
88 | OpenStudio
89 | 3.1.0
90 |
91 | measure.rb
92 | rb
93 | script
94 | 05C7F7F5
95 |
96 |
97 |
98 |
--------------------------------------------------------------------------------
/lib/measures/export_meter_to_csv/tests/ExportMetertoCSV_test.rb:
--------------------------------------------------------------------------------
1 | require 'openstudio'
2 | require 'openstudio/ruleset/ShowRunnerOutput'
3 | require 'minitest/autorun'
4 | require 'fileutils'
5 | require_relative '../measure.rb'
6 |
7 | class ExportOutputMetertoCSV_Test < MiniTest::Test
8 |
9 | def run_dir
10 | return "#{File.dirname(__FILE__)}/example_model/"
11 | end
12 |
13 | def model_path
14 | return "#{File.dirname(__FILE__)}/example_model.osm"
15 | end
16 |
17 | def epw_path
18 | return "#{File.dirname(__FILE__)}/example_model_weather.epw"
19 | end
20 |
21 | def sql_path
22 | return "#{File.dirname(__FILE__)}/example_model/run/eplusout.sql"
23 | end
24 |
25 | def report_path
26 | return "#{File.dirname(__FILE__)}/reports/eplustbl.html"
27 | end
28 |
29 | # create test files if they do not exist when the test first runs
30 | def setup_test
31 |
32 | assert(File.exist?(model_path))
33 |
34 | if !File.exist?(run_dir)
35 | FileUtils.mkdir_p(run_dir)
36 | end
37 | assert(File.exist?(run_dir))
38 |
39 | if File.exist?(report_path)
40 | FileUtils.rm(report_path)
41 | end
42 |
43 | if !File.exist?(sql_path)
44 | puts "Running EnergyPlus"
45 |
46 | osw_path = File.join(run_dir, 'in.osw')
47 | osw_path = File.absolute_path(osw_path)
48 |
49 | workflow = OpenStudio::WorkflowJSON.new
50 | workflow.setSeedFile(File.absolute_path(model_path))
51 | workflow.setWeatherFile(File.absolute_path(epw_path))
52 | workflow.saveAs(osw_path)
53 |
54 | cli_path = OpenStudio.getOpenStudioCLI
55 | cmd = "\"#{cli_path}\" run -w \"#{osw_path}\""
56 | puts cmd
57 | system(cmd)
58 | end
59 | end
60 |
61 | def test_ExportMetertoCSV
62 |
63 | assert(File.exist?(model_path))
64 |
65 | if !File.exist?(sql_path)
66 | setup_test()
67 | end
68 | assert(File.exist?(sql_path))
69 |
70 | # create an instance of the measure
71 | measure = ExportMetertoCSV.new
72 |
73 | # create an instance of a runner
74 | runner = OpenStudio::Ruleset::OSRunner.new
75 |
76 | translator = OpenStudio::OSVersion::VersionTranslator.new
77 | model = translator.loadModel(model_path)
78 | assert(!model.empty?)
79 | model = model.get
80 |
81 | # get arguments
82 | arguments = measure.arguments(model)
83 | assert_equal(2, arguments.size)
84 | argument_map = OpenStudio::Ruleset.convertOSArgumentVectorToMap(arguments)
85 |
86 | # set argument values to good values and run the measure
87 | meter_name = arguments[0].clone
88 | assert(meter_name.setValue("Electricity:Facility"))
89 | argument_map["meter_name"] = meter_name
90 | reporting_frequency = arguments[1].clone
91 | assert(reporting_frequency.setValue("Hourly"))
92 | argument_map["reporting_frequency"] = reporting_frequency
93 |
94 | # set up runner, this will happen automatically when measure is run in PAT or OpenStudio
95 | runner.setLastOpenStudioModelPath(OpenStudio::Path.new(model_path()))
96 | runner.setLastEnergyPlusSqlFilePath(OpenStudio::Path.new(sql_path()))
97 |
98 | # delete the output if it exists
99 | if File.exist?(report_path)
100 | FileUtils.rm(report_path)
101 | end
102 | assert(!File.exist?(report_path))
103 |
104 | # temporarily change directory to the run directory and run the measure
105 | start_dir = Dir.pwd
106 | begin
107 | Dir.chdir(run_dir())
108 |
109 | # run the measure
110 | measure.run(runner, argument_map)
111 | result = runner.result
112 | show_output(result)
113 | assert_equal("Success", result.value.valueName)
114 | ensure
115 | Dir.chdir(start_dir)
116 | end
117 |
118 | # make sure the report file exists
119 | #assert(File.exist?(report_path()))
120 | end
121 |
122 | end
123 |
--------------------------------------------------------------------------------
/lib/measures/get_lat_long_from_ground_exposed_floors/LICENSE.md:
--------------------------------------------------------------------------------
1 | Copyright 2014-2021 Building Performance Simulation
2 |
3 | Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
4 |
5 | The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
6 |
7 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
--------------------------------------------------------------------------------
/lib/measures/get_lat_long_from_ground_exposed_floors/measure.xml:
--------------------------------------------------------------------------------
1 |
2 | 3.0
3 | get_lat_long_from_ground_exposed_floors
4 | 6f98a732-4826-4905-ab72-e7e081f77325
5 | 606c027f-fd1b-47dc-98b5-342c8ff6f009
6 | 20170321T033200Z
7 | 59C2BE35
8 | GetLatLongFromGroundExposedFloors
9 | Get Lat Long from ground exposed floors
10 | This is quick utility to gather geometry needed for geojson
11 | When have existing OSM wanted to be able to grab geometry from model vs. trying to enter on website. This is useful when there is no built structures yet to use as reference on the website.
12 |
13 |
14 | lat
15 | Latitude
16 | Double
17 | true
18 | false
19 | 39.7392
20 |
21 |
22 | lon
23 | Longitude
24 | Double
25 | true
26 | false
27 | -104.9903
28 |
29 |
30 |
31 |
32 |
33 | Reporting.QAQC
34 |
35 |
36 |
37 | Measure Type
38 | ModelMeasure
39 | string
40 |
41 |
42 | Intended Software Tool
43 | Apply Measure Now
44 | string
45 |
46 |
47 | Intended Software Tool
48 | OpenStudio Application
49 | string
50 |
51 |
52 | Intended Software Tool
53 | Parametric Analysis Tool
54 | string
55 |
56 |
57 |
58 |
59 |
60 | OpenStudio
61 | 2.0.5
62 | 2.0.5
63 |
64 | measure.rb
65 | rb
66 | script
67 | 3EBAD318
68 |
69 |
70 | get_lat_long_from_ground_exposed_floors_test.rb
71 | rb
72 | test
73 | BB677CCE
74 |
75 |
76 | example_model.osm
77 | osm
78 | test
79 | 2A84DF81
80 |
81 |
82 | secondary_school.osm
83 | osm
84 | test
85 | C9835933
86 |
87 |
88 |
89 |
--------------------------------------------------------------------------------
/lib/measures/get_lat_long_from_ground_exposed_floors/tests/get_lat_long_from_ground_exposed_floors_test.rb:
--------------------------------------------------------------------------------
1 | require 'openstudio'
2 | require 'openstudio/ruleset/ShowRunnerOutput'
3 | require 'minitest/autorun'
4 | require_relative '../measure.rb'
5 | require 'fileutils'
6 |
7 | class GetLatLongFromGroundExposedFloors_Test < MiniTest::Unit::TestCase
8 |
9 | # def setup
10 | # end
11 |
12 | # def teardown
13 | # end
14 |
15 | def test_good_argument_values
16 | # create an instance of the measure
17 | measure = GetLatLongFromGroundExposedFloors.new
18 |
19 | # create an instance of a runner
20 | runner = OpenStudio::Ruleset::OSRunner.new
21 |
22 | # load the test model
23 | translator = OpenStudio::OSVersion::VersionTranslator.new
24 | path = OpenStudio::Path.new(File.dirname(__FILE__) + "/example_model.osm")
25 | model = translator.loadModel(path)
26 | assert((not model.empty?))
27 | model = model.get
28 |
29 | # get arguments
30 | arguments = measure.arguments(model)
31 | argument_map = OpenStudio::Ruleset.convertOSArgumentVectorToMap(arguments)
32 |
33 | # create hash of argument values.
34 | # If the argument has a default that you want to use, you don't need it in the hash
35 | args_hash = {}
36 | #args_hash["space_name"] = "New Space"
37 | # using defaults values from measure.rb for other arguments
38 |
39 | # populate argument with specified hash value if specified
40 | arguments.each do |arg|
41 | temp_arg_var = arg.clone
42 | if args_hash.has_key?(arg.name)
43 | assert(temp_arg_var.setValue(args_hash[arg.name]))
44 | end
45 | argument_map[arg.name] = temp_arg_var
46 | end
47 |
48 | # run the measure
49 | measure.run(model, runner, argument_map)
50 | result = runner.result
51 |
52 | # show the output
53 | show_output(result)
54 |
55 | # assert that it ran correctly
56 | assert_equal("Success", result.value.valueName)
57 | #assert(result.info.size == 1)
58 | #assert(result.warnings.size == 0)
59 |
60 | # save the model to test output directory
61 | output_file_path = OpenStudio::Path.new(File.dirname(__FILE__) + "/output/test_output.osm")
62 | model.save(output_file_path,true)
63 | end
64 |
65 | def test_secondary
66 | # create an instance of the measure
67 | measure = GetLatLongFromGroundExposedFloors.new
68 |
69 | # create an instance of a runner
70 | runner = OpenStudio::Ruleset::OSRunner.new
71 |
72 | # load the test model
73 | translator = OpenStudio::OSVersion::VersionTranslator.new
74 | path = OpenStudio::Path.new(File.dirname(__FILE__) + "/secondary_school.osm")
75 | model = translator.loadModel(path)
76 | assert((not model.empty?))
77 | model = model.get
78 |
79 | # get arguments
80 | arguments = measure.arguments(model)
81 | argument_map = OpenStudio::Ruleset.convertOSArgumentVectorToMap(arguments)
82 |
83 | # create hash of argument values.
84 | # If the argument has a default that you want to use, you don't need it in the hash
85 | args_hash = {}
86 | #args_hash["space_name"] = "New Space"
87 | # using defaults values from measure.rb for other arguments
88 |
89 | # populate argument with specified hash value if specified
90 | arguments.each do |arg|
91 | temp_arg_var = arg.clone
92 | if args_hash.has_key?(arg.name)
93 | assert(temp_arg_var.setValue(args_hash[arg.name]))
94 | end
95 | argument_map[arg.name] = temp_arg_var
96 | end
97 |
98 | # run the measure
99 | measure.run(model, runner, argument_map)
100 | result = runner.result
101 |
102 | # show the output
103 | show_output(result)
104 |
105 | # assert that it ran correctly
106 | assert_equal("Success", result.value.valueName)
107 | #assert(result.info.size == 1)
108 | #assert(result.warnings.size == 0)
109 |
110 | # save the model to test output directory
111 | output_file_path = OpenStudio::Path.new(File.dirname(__FILE__) + "/output/test_secondary_output.osm")
112 | model.save(output_file_path,true)
113 | end
114 |
115 | end
116 |
--------------------------------------------------------------------------------
/lib/measures/ideal_air_loads_zone_hvac/LICENSE.md:
--------------------------------------------------------------------------------
1 | Copyright 2014-2021 Building Performance Simulation
2 |
3 | Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
4 |
5 | The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
6 |
7 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
--------------------------------------------------------------------------------
/lib/measures/ideal_loads_options/LICENSE.md:
--------------------------------------------------------------------------------
1 | Copyright 2014-2021 Building Performance Simulation
2 |
3 | Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
4 |
5 | The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
6 |
7 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
--------------------------------------------------------------------------------
/lib/measures/ideal_loads_options/README.txt:
--------------------------------------------------------------------------------
1 | This measure is an EnergyPlus measure that edits IdealLoadsAirSystem objects in the .idf file at runtime.
2 |
3 | HVACTemplate objects, including HVACTemplate:Zone:IdealLoadsAirSystem objects, are translated into EnergyPlus objects (ZoneHVAC:IdealLoadsAirSystem objects) in the Expand Objects step.
4 |
5 | In OpenStudio version 1, the order of operations is:
6 | Expand Objects -> EnergyPlus Measures -> Pre-Process
7 |
8 | In OpenStudio version 2, the order of operations is:
9 | EnergyPlus Measures -> Expand Objects -> Pre-Process
10 |
11 | This means to edit fields, the measure edits ZoneHVAC:IdealLoadsAirSystem objects in OS version <=1.14 and HVACTemplate:Zone:IdealLoadsAirSystem stage in OS version >= 2.0.
12 |
13 | The default measure.rb script in this folder is set up to edit HVACTemplate:Zone:IdealLoadsAirSystem objects, and works with only OpenStudio versions 2.+. There is a version toggle at the start of the run method to manually change this measure to run in OpenStudio version 1.14 and earlier.
14 |
15 | See this GitHub issue for more detail: https://github.com/NREL/OpenStudio/issues/2799
--------------------------------------------------------------------------------
/lib/measures/meter_custom/LICENSE.md:
--------------------------------------------------------------------------------
1 | Copyright 2014-2021 Building Performance Simulation
2 |
3 | Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
4 |
5 | The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
6 |
7 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
--------------------------------------------------------------------------------
/lib/measures/meter_custom/tests/meter_custom_test.rb:
--------------------------------------------------------------------------------
1 | require 'openstudio'
2 | require 'openstudio/ruleset/ShowRunnerOutput'
3 | require 'minitest/autorun'
4 | require_relative '../measure.rb'
5 |
6 | class MeterCustom_Test < Minitest::Test
7 |
8 | def test_number_of_arguments_and_argument_names
9 | puts 'test_number_of_arguments_and_argument_names'
10 | # create an instance of the measure
11 | measure = MeterCustom.new
12 |
13 | # make an empty model
14 | model = OpenStudio::Model::Model.new
15 |
16 | # get arguments and test that they are what we are expecting
17 | arguments = measure.arguments(model)
18 | assert_equal(5, arguments.size)
19 | assert_equal('custom_meter_name', arguments[0].name)
20 | assert_equal('fuel_type', arguments[1].name)
21 | assert_equal('file_path', arguments[2].name)
22 | assert_equal('add_output_meter', arguments[3].name)
23 | assert_equal('reporting_frequency', arguments[4].name)
24 | end
25 |
26 | def test_example_csv_file
27 | puts 'test_example_csv_file'
28 | assert(File.exist?("#{File.dirname(__FILE__)}/example_file.csv"))
29 |
30 | # create an instance of the measure
31 | measure = MeterCustom.new
32 |
33 | # make an empty model
34 | model = OpenStudio::Model::Model.new
35 |
36 | # create an instance of a runner
37 | runner = OpenStudio::Measure::OSRunner.new(OpenStudio::WorkflowJSON.new)
38 |
39 | # get arguments
40 | arguments = measure.arguments(model)
41 | argument_map = OpenStudio::Ruleset::OSArgumentMap.new
42 |
43 | # set arguments
44 | custom_meter_name = arguments[0].clone
45 | assert(custom_meter_name.setValue('test_name'))
46 | argument_map['custom_meter_name'] = custom_meter_name
47 |
48 | fuel_type = arguments[1].clone
49 | assert(fuel_type.setValue('Electricity'))
50 | argument_map['fuel_type'] = fuel_type
51 |
52 | file_path = arguments[2].clone
53 | assert(file_path.setValue("#{File.dirname(__FILE__)}/example_file.csv"))
54 | argument_map['file_path'] = file_path
55 |
56 | add_output_meter = arguments[3].clone
57 | assert(add_output_meter.setValue(true))
58 | argument_map['add_output_meter'] = add_output_meter
59 |
60 | reporting_frequency = arguments[4].clone
61 | assert(reporting_frequency.setValue('hourly'))
62 | argument_map['reporting_frequency'] = reporting_frequency
63 |
64 | # run the measure and show the output
65 | measure.run(model, runner, argument_map)
66 | result = runner.result
67 | show_output(result)
68 | assert_equal('Success', result.value.valueName)
69 | end
70 |
71 | def test_bad_path
72 | puts 'test_bad_path'
73 |
74 | # create an instance of the measure
75 | measure = MeterCustom.new
76 |
77 | # make an empty model
78 | model = OpenStudio::Model::Model.new
79 |
80 | # create an instance of a runner
81 | runner = OpenStudio::Measure::OSRunner.new(OpenStudio::WorkflowJSON.new)
82 |
83 | # get arguments
84 | arguments = measure.arguments(model)
85 | argument_map = OpenStudio::Ruleset::OSArgumentMap.new
86 |
87 | # set file path argument
88 | file_path = arguments[2].clone
89 | assert(file_path.setValue("#{File.dirname(__FILE__)}/does_not_exist.csv"))
90 | argument_map['file_path'] = file_path
91 |
92 | # run the measure and show the output
93 | measure.run(model, runner, argument_map)
94 | result = runner.result
95 | show_output(result)
96 | assert_equal('Fail', result.value.valueName)
97 | end
98 | end
99 |
--------------------------------------------------------------------------------
/lib/measures/remove_hvac_systems/LICENSE.md:
--------------------------------------------------------------------------------
1 | Copyright 2014-2021 Building Performance Simulation
2 |
3 | Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
4 |
5 | The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
6 |
7 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
--------------------------------------------------------------------------------
/lib/measures/remove_hvac_systems/tests/remove_hvac_systems_test.rb:
--------------------------------------------------------------------------------
1 | require 'openstudio'
2 | require 'openstudio/ruleset/ShowRunnerOutput'
3 | require 'minitest/autorun'
4 | require_relative '../measure.rb'
5 | require 'fileutils'
6 |
7 | class RemoveHVACSystemsTest < MiniTest::Test
8 | # def setup
9 | # end
10 |
11 | # def teardown
12 | # end
13 |
14 | def test_number_of_arguments_and_argument_names
15 | # create an instance of the measure
16 | measure = RemoveHVACSystems.new
17 |
18 | # make an empty model
19 | model = OpenStudio::Model::Model.new
20 |
21 | # get arguments and test that they are what we are expecting
22 | arguments = measure.arguments(model)
23 | assert_equal(7, arguments.size)
24 | assert_equal("remove_air_loops", arguments[0].name)
25 | assert_equal("remove_plant_loops", arguments[1].name)
26 | assert_equal("remove_shw_loops", arguments[2].name)
27 | assert_equal("remove_zone_equipment", arguments[3].name)
28 | assert_equal("remove_zone_exhaust_fans", arguments[4].name)
29 | assert_equal("remove_vrf", arguments[5].name)
30 | assert_equal("remove_unused_curves", arguments[6].name)
31 | end
32 |
33 | def test_default_values
34 | # create an instance of the measure
35 | measure = RemoveHVACSystems.new
36 |
37 | # create an instance of a runner
38 | runner = OpenStudio::Ruleset::OSRunner.new
39 |
40 | # load the test model
41 | translator = OpenStudio::OSVersion::VersionTranslator.new
42 | path = OpenStudio::Path.new(File.dirname(__FILE__) + "/example_model.osm")
43 | model = translator.loadModel(path)
44 | assert((not model.empty?))
45 | model = model.get
46 |
47 | # get arguments
48 | arguments = measure.arguments(model)
49 | argument_map = OpenStudio::Ruleset.convertOSArgumentVectorToMap(arguments)
50 |
51 | # run the measure
52 | measure.run(model, runner, argument_map)
53 | result = runner.result
54 |
55 | # show the output
56 | show_output(result)
57 |
58 | # assert that it ran correctly
59 | assert_equal("Success", result.value.valueName)
60 | assert(result.info.size == 1)
61 | assert(result.warnings.size == 0)
62 | end
63 |
64 | end
65 |
--------------------------------------------------------------------------------
/lib/measures/rename_air_loop_objects_by_air_loop_name/LICENSE.md:
--------------------------------------------------------------------------------
1 | Copyright 2014-2021 Building Performance Simulation
2 |
3 | Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
4 |
5 | The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
6 |
7 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
--------------------------------------------------------------------------------
/lib/measures/rename_air_loop_objects_by_air_loop_name/measure.xml:
--------------------------------------------------------------------------------
1 |
2 | 3.0
3 | rename_air_loop_objects_by_air_loop_name
4 | 3c4592ac-7b89-4623-8c77-55d632c4d10d
5 | de68fd0f-af12-4db2-8914-7830950f3b9f
6 | 20180616T012109Z
7 | 38AFEEFF
8 | RenameAirLoopObjectsByAirLoopName
9 | Rename Air Loop Objects By Air Loop Name
10 | This measure will rename node, fan, and outdoor air system objects from a generic name "Node 10" to the air loop name and type of object "AHU 1 Supply Air Node". This is helpful when investigating air loop controls and operation in outdoor variables.
11 | This is a modeling aid. It cleans up air loop naming and will not have any impact on the simulation results. This will help in sort order on pull down lists.
12 |
13 |
14 |
15 |
16 | HVAC.Whole System
17 |
18 |
19 |
20 | Measure Function
21 | Measure
22 | string
23 |
24 |
25 | Requires EnergyPlus Results
26 | false
27 | boolean
28 |
29 |
30 | Uses SketchUp API
31 | false
32 | boolean
33 |
34 |
35 | Measure Type
36 | ModelMeasure
37 | string
38 |
39 |
40 | Intended Software Tool
41 | Apply Measure Now
42 | string
43 |
44 |
45 | Intended Use Case
46 | Model Articulation
47 | string
48 |
49 |
50 |
51 |
52 |
53 | OpenStudio
54 | 1.0.0
55 | 1.8.0
56 |
57 | measure.rb
58 | rb
59 | script
60 | 20B5A06E
61 |
62 |
63 | office.osm
64 | osm
65 | test
66 | F492B1BA
67 |
68 |
69 | RenameAirLoopObjectsByAirLoopName_Test.rb
70 | rb
71 | test
72 | 60D4824B
73 |
74 |
75 |
76 |
--------------------------------------------------------------------------------
/lib/measures/rename_air_loop_objects_by_air_loop_name/tests/RenameAirLoopObjectsByAirLoopName_Test.rb:
--------------------------------------------------------------------------------
1 | require 'openstudio'
2 | require 'openstudio/ruleset/ShowRunnerOutput'
3 | require 'minitest/autorun'
4 | require_relative '../measure.rb'
5 | require 'fileutils'
6 |
7 | class RenameAirLoopObjectsByAirLoopName_Test < MiniTest::Unit::TestCase
8 |
9 | def model_output_path(test_name)
10 | # always generate test output in specially named 'output' directory so result files are not made part of the measure
11 | return "#{File.dirname(__FILE__)}/output/#{test_name}.osm"
12 | end
13 |
14 | def test_number_of_arguments
15 | # this test ensures that the current test is matched to the measure inputs
16 |
17 | # create an instance of the measure
18 | measure = RenameAirLoopObjectsByAirLoopName.new
19 |
20 | # empty model
21 | model = OpenStudio::Model::Model.new
22 |
23 | # get arguments and test that they are what we are expecting
24 | arguments = measure.arguments(model)
25 | end
26 |
27 | def test_rename_loops
28 | # this measure tests renaming all loops
29 | test_name = "test_rename_loops"
30 | puts "TEST:" + test_name
31 |
32 | # create an instance of the measure
33 | measure = RenameAirLoopObjectsByAirLoopName.new
34 |
35 | # create an instance of a runner
36 | runner = OpenStudio::Ruleset::OSRunner.new
37 |
38 | # load the test model
39 | translator = OpenStudio::OSVersion::VersionTranslator.new
40 | model = translator.loadModel("#{File.dirname(__FILE__)}/office.osm")
41 | assert((not model.empty?))
42 | model = model.get
43 |
44 | # set argument values to good values and run the measure on model
45 | arguments = measure.arguments(model)
46 | argument_map = OpenStudio::Ruleset::OSArgumentMap.new
47 |
48 | # run the measure
49 | measure.run(model, runner, argument_map)
50 | result = runner.result
51 |
52 | # show the output
53 | show_output(result)
54 |
55 | # assert that it ran correctly
56 | assert_equal("Success", result.value.valueName)
57 | assert(result.warnings.size == 0)
58 |
59 | # save the model for testing purposes
60 | output_file_path = model_output_path(test_name)
61 | model.save(output_file_path,true)
62 | end
63 |
64 | end
--------------------------------------------------------------------------------
/lib/measures/rename_vrf_terminal/LICENSE.md:
--------------------------------------------------------------------------------
1 | Copyright 2014-2021 Building Performance Simulation
2 |
3 | Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
4 |
5 | The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
6 |
7 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
--------------------------------------------------------------------------------
/lib/measures/rename_vrf_terminal/measure.rb:
--------------------------------------------------------------------------------
1 | # see the URL below for information on how to write OpenStudio measures
2 | # http://nrel.github.io/OpenStudio-user-documentation/reference/measure_writing_guide/
3 |
4 | # start the measure
5 | class RenameVRFTerminal < OpenStudio::Ruleset::ModelUserScript
6 |
7 | # human readable name
8 | def name
9 | return "Rename VRF Terminal"
10 | end
11 |
12 | # human readable description
13 | def description
14 | return "New new is combination of VRF system name and thermal zone name. This doesn't change the performance of the system in any way, just the name of VRF terminal objects"
15 | end
16 |
17 | # human readable description of modeling approach
18 | def modeler_description
19 | return "Could add argumntes to provide more control at later date."
20 | end
21 |
22 | # define the arguments that the user will input
23 | def arguments(model)
24 | args = OpenStudio::Ruleset::OSArgumentVector.new
25 |
26 | return args
27 | end
28 |
29 | # define what happens when the measure is run
30 | def run(model, runner, user_arguments)
31 | super(model, runner, user_arguments)
32 |
33 | # use the built-in error checking
34 | if !runner.validateUserArguments(arguments(model), user_arguments)
35 | return false
36 | end
37 |
38 | # report initial condition of model
39 | runner.registerInitialCondition("The building started with #{model.getZoneHVACTerminalUnitVariableRefrigerantFlows.size} VRF terminals.")
40 |
41 | # loop through VRF systems
42 | model.getAirConditionerVariableRefrigerantFlows.each do |vrf_sys|
43 |
44 | # loop through current terminals on system
45 | vrf_sys.terminals.each do |terminal|
46 |
47 | # get thermal zone name if assigned
48 | if terminal.thermalZone.is_initialized
49 | thermal_zone_name = terminal.thermalZone.get.name
50 | else
51 | thermal_zone_name = ""
52 | end
53 |
54 | # rename terminal
55 | orig_name = terminal.name
56 | target_name = "#{vrf_sys.name} - #{thermal_zone_name}"
57 | terminal.setName(target_name)
58 | runner.registerInfo("Renamed #{orig_name} to #{terminal.name}")
59 |
60 | end
61 | end
62 |
63 | # report final condition of model
64 | runner.registerFinalCondition("The building finished with #{model.getZoneHVACTerminalUnitVariableRefrigerantFlows.size} VRF terminals.")
65 |
66 | return true
67 |
68 | end
69 |
70 | end
71 |
72 | # register the measure to be used by the application
73 | RenameVRFTerminal.new.registerWithApplication
74 |
--------------------------------------------------------------------------------
/lib/measures/rename_vrf_terminal/measure.xml:
--------------------------------------------------------------------------------
1 |
2 | 3.0
3 | rename_vrf_terminal
4 | 94b4d3dc-719d-4957-8fb7-1590d7042503
5 | 181e4f79-2e8f-475e-931d-8e32bb297864
6 | 20170407T145655Z
7 | C49A7DAB
8 | RenameVRFTerminal
9 | Rename VRF Terminal
10 | New new is combination of VRF system name and thermal zone name. This doesn't change the performance of the system in any way, just the name of VRF terminal objects
11 | Could add argumntes to provide more control at later date.
12 |
13 |
14 |
15 |
16 | HVAC.Whole System
17 |
18 |
19 |
20 | Measure Type
21 | ModelMeasure
22 | string
23 |
24 |
25 | Intended Software Tool
26 | Apply Measure Now
27 | string
28 |
29 |
30 | Intended Software Tool
31 | OpenStudio Application
32 | string
33 |
34 |
35 | Intended Software Tool
36 | Parametric Analysis Tool
37 | string
38 |
39 |
40 |
41 |
42 | rename_vrf_terminal_test.rb
43 | rb
44 | test
45 | C6698F75
46 |
47 |
48 | example_model.osm
49 | osm
50 | test
51 | 5991EED0
52 |
53 |
54 |
55 | OpenStudio
56 | 2.1.0
57 | 2.1.0
58 |
59 | measure.rb
60 | rb
61 | script
62 | ED114F4B
63 |
64 |
65 |
66 |
--------------------------------------------------------------------------------
/lib/measures/rename_vrf_terminal/tests/example_model/workflow.osw:
--------------------------------------------------------------------------------
1 | {
2 | "created_at" : "20170407T141519Z",
3 | "seed_file" : "../example_model.osm",
4 | "steps" : [],
5 | "updated_at" : "20170407T141652Z"
6 | }
7 |
--------------------------------------------------------------------------------
/lib/measures/rename_vrf_terminal/tests/rename_vrf_terminal_test.rb:
--------------------------------------------------------------------------------
1 | require 'openstudio'
2 | require 'openstudio/ruleset/ShowRunnerOutput'
3 | require 'minitest/autorun'
4 | require_relative '../measure.rb'
5 | require 'fileutils'
6 |
7 | class RenameVRFTerminal_Test < MiniTest::Unit::TestCase
8 |
9 | # def setup
10 | # end
11 |
12 | # def teardown
13 | # end
14 |
15 | def test_good_argument_values
16 | # create an instance of the measure
17 | measure = RenameVRFTerminal.new
18 |
19 | # create an instance of a runner
20 | runner = OpenStudio::Ruleset::OSRunner.new
21 |
22 | # load the test model
23 | translator = OpenStudio::OSVersion::VersionTranslator.new
24 | path = OpenStudio::Path.new(File.dirname(__FILE__) + "/example_model.osm")
25 | model = translator.loadModel(path)
26 | assert((not model.empty?))
27 | model = model.get
28 |
29 |
30 | # get arguments
31 | arguments = measure.arguments(model)
32 | argument_map = OpenStudio::Ruleset.convertOSArgumentVectorToMap(arguments)
33 |
34 | # create hash of argument values.
35 | # If the argument has a default that you want to use, you don't need it in the hash
36 | args_hash = {}
37 | #args_hash["space_name"] = "New Space"
38 | # using defaults values from measure.rb for other arguments
39 |
40 | # populate argument with specified hash value if specified
41 | arguments.each do |arg|
42 | temp_arg_var = arg.clone
43 | if args_hash.has_key?(arg.name)
44 | assert(temp_arg_var.setValue(args_hash[arg.name]))
45 | end
46 | argument_map[arg.name] = temp_arg_var
47 | end
48 |
49 | # run the measure
50 | measure.run(model, runner, argument_map)
51 | result = runner.result
52 |
53 | # show the output
54 | show_output(result)
55 |
56 | # assert that it ran correctly
57 | assert_equal("Success", result.value.valueName)
58 | #assert(result.info.size == 1)
59 | #assert(result.warnings.size == 0)
60 |
61 | # save the model to test output directory
62 | output_file_path = OpenStudio::Path.new(File.dirname(__FILE__) + "/output/test_output.osm")
63 | model.save(output_file_path,true)
64 | end
65 |
66 | end
67 |
--------------------------------------------------------------------------------
/lib/measures/report_effective_number_of_spaces_and_avg_space_size_per_space_type/LICENSE.md:
--------------------------------------------------------------------------------
1 | Copyright 2014-2021 Building Performance Simulation
2 |
3 | Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
4 |
5 | The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
6 |
7 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
--------------------------------------------------------------------------------
/lib/measures/report_effective_number_of_spaces_and_avg_space_size_per_space_type/measure.rb:
--------------------------------------------------------------------------------
1 | # see the URL below for information on how to write OpenStudio measures
2 | # http://nrel.github.io/OpenStudio-user-documentation/reference/measure_writing_guide/
3 |
4 | # start the measure
5 | class ReportEffectiveNumberOfSpacesAndAvgSpaceSizePerSpaceType < OpenStudio::Ruleset::ModelUserScript
6 |
7 | # human readable name
8 | def name
9 | return "Report Effective Number of Spaces and Avg Space Size per space type"
10 | end
11 |
12 | # human readable description
13 | def description
14 | return "Quick measure to report the effective number of spaces, along with average and total floor area for each space type.."
15 | end
16 |
17 | # human readable description of modeling approach
18 | def modeler_description
19 | return "The difference between actual spaces and effective spaces takes into account the zone multipliers. The goal was to get average floor area assuming that each space represents a room vs. a collection of rooms. This was used to help determine average space sizes of different space types from the prototype buildings. In some cases I had to manaually adjust for where a space didn't map to a single room."
20 | end
21 |
22 | # define the arguments that the user will input
23 | def arguments(model)
24 | args = OpenStudio::Ruleset::OSArgumentVector.new
25 |
26 | return args
27 | end
28 |
29 | # define what happens when the measure is run
30 | def run(model, runner, user_arguments)
31 | super(model, runner, user_arguments)
32 |
33 |
34 | # report initial condition of model
35 | runner.registerInitialCondition("The building started with #{model.getSpaces.size} spaces.")
36 |
37 | model.getSpaceTypes.each do |space_type|
38 | count = 0
39 | space_type.spaces.each do |space|
40 | count += space.multiplier
41 | end
42 |
43 | avg_si = space_type.floorArea/count.to_f
44 | avg_ip = OpenStudio::convert(avg_si,'m^2','ft^2').get.round(2)
45 | total_ip = OpenStudio::convert(space_type.floorArea,'m^2','ft^2').get.round(2)
46 |
47 | runner.registerInfo("#{space_type.name} has #{count} spaces, with average area of #{avg_ip} ft^2. Total is #{total_ip}")
48 |
49 | end
50 |
51 | # report final condition of model
52 | runner.registerFinalCondition("The building finished with #{model.getSpaces.size} spaces.")
53 |
54 | return true
55 |
56 | end
57 |
58 | end
59 |
60 | # register the measure to be used by the application
61 | ReportEffectiveNumberOfSpacesAndAvgSpaceSizePerSpaceType.new.registerWithApplication
62 |
--------------------------------------------------------------------------------
/lib/measures/report_effective_number_of_spaces_and_avg_space_size_per_space_type/measure.xml:
--------------------------------------------------------------------------------
1 |
2 | 3.0
3 | report_effective_number_of_spaces_and_avg_space_size_per_space_type
4 | 594a324e-156a-493c-93fb-0cbc0d15509e
5 | 916502ff-a3a2-44bc-ba9f-58db7fcd4026
6 | 20170317T212731Z
7 | 2AF3A68E
8 | ReportEffectiveNumberOfSpacesAndAvgSpaceSizePerSpaceType
9 | Report Effective Number of Spaces and Avg Space Size per space type
10 | Quick measure to report the effective number of spaces, along with average and total floor area for each space type..
11 | The difference between actual spaces and effective spaces takes into account the zone multipliers. The goal was to get average floor area assuming that each space represents a room vs. a collection of rooms. This was used to help determine average space sizes of different space types from the prototype buildings. In some cases I had to manaually adjust for where a space didn't map to a single room.
12 |
13 |
14 |
15 |
16 | Envelope.Form
17 |
18 |
19 |
20 | Measure Type
21 | ModelMeasure
22 | string
23 |
24 |
25 | Intended Software Tool
26 | Apply Measure Now
27 | string
28 |
29 |
30 | Intended Software Tool
31 | OpenStudio Application
32 | string
33 |
34 |
35 | Intended Software Tool
36 | Parametric Analysis Tool
37 | string
38 |
39 |
40 |
41 |
42 | report_effective_number_of_spaces_and_avg_space_size_per_space_type_test.rb
43 | rb
44 | test
45 | FA9334DB
46 |
47 |
48 | example_model.osm
49 | osm
50 | test
51 | 53D14E69
52 |
53 |
54 |
55 | OpenStudio
56 | 2.0.1
57 | 2.0.1
58 |
59 | measure.rb
60 | rb
61 | script
62 | 5321EFEB
63 |
64 |
65 |
66 |
--------------------------------------------------------------------------------
/lib/measures/report_effective_number_of_spaces_and_avg_space_size_per_space_type/tests/report_effective_number_of_spaces_and_avg_space_size_per_space_type_test.rb:
--------------------------------------------------------------------------------
1 | require 'openstudio'
2 | require 'openstudio/ruleset/ShowRunnerOutput'
3 | require 'minitest/autorun'
4 | require_relative '../measure.rb'
5 | require 'fileutils'
6 |
7 | class ReportEffectiveNumberOfSpacesAndAvgSpaceSizePerSpaceType_Test < MiniTest::Unit::TestCase
8 |
9 | # def setup
10 | # end
11 |
12 | # def teardown
13 | # end
14 |
15 | def test_number_of_arguments_and_argument_names
16 | # create an instance of the measure
17 | measure = ReportEffectiveNumberOfSpacesAndAvgSpaceSizePerSpaceType.new
18 |
19 | # make an empty model
20 | model = OpenStudio::Model::Model.new
21 |
22 | # get arguments and test that they are what we are expecting
23 | arguments = measure.arguments(model)
24 | assert_equal(1, arguments.size)
25 | assert_equal("space_name", arguments[0].name)
26 | end
27 |
28 | def test_bad_argument_values
29 | # create an instance of the measure
30 | measure = ReportEffectiveNumberOfSpacesAndAvgSpaceSizePerSpaceType.new
31 |
32 | # create an instance of a runner
33 | runner = OpenStudio::Ruleset::OSRunner.new
34 |
35 | # make an empty model
36 | model = OpenStudio::Model::Model.new
37 |
38 | # get arguments
39 | arguments = measure.arguments(model)
40 | argument_map = OpenStudio::Ruleset.convertOSArgumentVectorToMap(arguments)
41 |
42 | # create hash of argument values
43 | args_hash = {}
44 | args_hash["space_name"] = ""
45 |
46 | # populate argument with specified hash value if specified
47 | arguments.each do |arg|
48 | temp_arg_var = arg.clone
49 | if args_hash[arg.name]
50 | assert(temp_arg_var.setValue(args_hash[arg.name]))
51 | end
52 | argument_map[arg.name] = temp_arg_var
53 | end
54 |
55 | # run the measure
56 | measure.run(model, runner, argument_map)
57 | result = runner.result
58 |
59 | # show the output
60 | show_output(result)
61 |
62 | # assert that it ran correctly
63 | assert_equal("Fail", result.value.valueName)
64 | end
65 |
66 | def test_good_argument_values
67 | # create an instance of the measure
68 | measure = ReportEffectiveNumberOfSpacesAndAvgSpaceSizePerSpaceType.new
69 |
70 | # create an instance of a runner
71 | runner = OpenStudio::Ruleset::OSRunner.new
72 |
73 | # load the test model
74 | translator = OpenStudio::OSVersion::VersionTranslator.new
75 | path = OpenStudio::Path.new(File.dirname(__FILE__) + "/example_model.osm")
76 | model = translator.loadModel(path)
77 | assert((not model.empty?))
78 | model = model.get
79 |
80 | # store the number of spaces in the seed model
81 | num_spaces_seed = model.getSpaces.size
82 |
83 | # get arguments
84 | arguments = measure.arguments(model)
85 | argument_map = OpenStudio::Ruleset.convertOSArgumentVectorToMap(arguments)
86 |
87 | # create hash of argument values.
88 | # If the argument has a default that you want to use, you don't need it in the hash
89 | args_hash = {}
90 | args_hash["space_name"] = "New Space"
91 | # using defaults values from measure.rb for other arguments
92 |
93 | # populate argument with specified hash value if specified
94 | arguments.each do |arg|
95 | temp_arg_var = arg.clone
96 | if args_hash[arg.name]
97 | assert(temp_arg_var.setValue(args_hash[arg.name]))
98 | end
99 | argument_map[arg.name] = temp_arg_var
100 | end
101 |
102 | # run the measure
103 | measure.run(model, runner, argument_map)
104 | result = runner.result
105 |
106 | # show the output
107 | show_output(result)
108 |
109 | # assert that it ran correctly
110 | assert_equal("Success", result.value.valueName)
111 | assert(result.info.size == 1)
112 | assert(result.warnings.size == 0)
113 |
114 | # check that there is now 1 space
115 | assert_equal(1, model.getSpaces.size - num_spaces_seed)
116 |
117 | # save the model to test output directory
118 | output_file_path = OpenStudio::Path.new(File.dirname(__FILE__) + "/output/test_output.osm")
119 | model.save(output_file_path,true)
120 | end
121 |
122 | end
123 |
--------------------------------------------------------------------------------
/lib/measures/set_building_to_construction_set/LICENSE.md:
--------------------------------------------------------------------------------
1 | Copyright 2014-2021 Building Performance Simulation
2 |
3 | Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
4 |
5 | The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
6 |
7 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
--------------------------------------------------------------------------------
/lib/measures/set_building_to_construction_set/measure.rb:
--------------------------------------------------------------------------------
1 | # see the URL below for information on how to write OpenStudio measures
2 | # http://nrel.github.io/OpenStudio-user-documentation/reference/measure_writing_guide/
3 |
4 | # start the measure
5 | class SetBuildingToConstructionSet < OpenStudio::Ruleset::ModelUserScript
6 |
7 | # human readable name
8 | def name
9 | return "Set Building To Construction Set"
10 | end
11 |
12 | # human readable description
13 | def description
14 | return "This measures changes the building's default construction set to one selected by the user from a list of available default construction sets."
15 | end
16 |
17 | # human readable description of modeling approach
18 | def modeler_description
19 | return "No checking of any sorts is performed. The available default construction sets are obtained via the constructionset = SELECTFROM(model.getDefaultConstructionSets) method and the seleted construction set is applied via the building = model.getBuilding and building.setDefaultConstructionSet(constructionset) methods."
20 | end
21 |
22 | # define the arguments that the user will input
23 | def arguments(model)
24 | args = OpenStudio::Ruleset::OSArgumentVector.new
25 |
26 | # populate choice arguments for construction sets
27 | constructionset_handles = OpenStudio::StringVector.new
28 | constructionset_display_names = OpenStudio::StringVector.new
29 |
30 | # put construction sets into hash
31 | constructionset_args = model.getDefaultConstructionSets
32 | constructionset_args_hash = {}
33 | constructionset_args.each do |constructionset_arg|
34 | constructionset_args_hash[constructionset_arg.name.to_s] = constructionset_arg
35 | end
36 |
37 | # loop through sorted hash of construction sets
38 | constructionset_args_hash.sort.map do |key,value|
39 | constructionset_handles << value.handle.to_s
40 | constructionset_display_names << key
41 | end
42 |
43 | # make argument for construction set
44 | constructionset = OpenStudio::Ruleset::OSArgument::makeChoiceArgument("constructionset", constructionset_handles, constructionset_display_names,true)
45 | constructionset.setDisplayName("Select new construction set:")
46 | args << constructionset
47 |
48 | return args
49 | end
50 |
51 | # define what happens when the measure is run
52 | def run(model, runner, user_arguments)
53 | super(model, runner, user_arguments)
54 |
55 | # use the built-in error checking
56 | if !runner.validateUserArguments(arguments(model), user_arguments)
57 | return false
58 | end
59 |
60 | # assign the user inputs to variables
61 | constructionset = runner.getOptionalWorkspaceObjectChoiceValue("constructionset",user_arguments,model)
62 |
63 | # check the construction set for reasonableness
64 | if constructionset.empty?
65 | handle = runner.getStringArgumentValue("constructionset",user_arguments)
66 | if handle.empty?
67 | runner.registerError("No construction set was chosen.")
68 | else
69 | runner.registerError("The selected construction set with handle '#{handle}' was not found in the model. It may have been removed by another measure.")
70 | end
71 | return false
72 | else
73 | if not constructionset.get.to_DefaultConstructionSet.empty?
74 | constructionset = constructionset.get.to_DefaultConstructionSet.get
75 | else
76 | runner.registerError("Script Error - argument not showing up as construction set.")
77 | return false
78 | end
79 | end
80 |
81 | # effect the change
82 | building = model.getBuilding
83 | building.setDefaultConstructionSet(constructionset)
84 | runner.registerInfo("Setting default Construction Set for building to #{building.defaultConstructionSet.get.name}")
85 |
86 | return true
87 |
88 | end
89 |
90 | end
91 |
92 | # register the measure to be used by the application
93 | SetBuildingToConstructionSet.new.registerWithApplication
94 |
--------------------------------------------------------------------------------
/lib/measures/set_building_to_construction_set/measure.xml:
--------------------------------------------------------------------------------
1 |
2 | 3.0
3 | set_building_to_construction_set
4 | 718d27f6-02f6-4306-8b9a-07d13b126376
5 | d82fe3ec-2cb7-47fc-846c-d5031734b97e
6 | 20170317T212731Z
7 | 16F8EDFC
8 | SetBuildingToConstructionSet
9 | Set Building To Construction Set
10 | This measures changes the building's default construction set to one selected by the user from a list of available default construction sets.
11 | No checking of any sorts is performed. The available default construction sets are obtained via the constructionset = SELECTFROM(model.getDefaultConstructionSets) method and the seleted construction set is applied via the building = model.getBuilding and building.setDefaultConstructionSet(constructionset) methods.
12 |
13 |
14 | constructionset
15 | Select new construction set:
16 | Choice
17 | true
18 | false
19 |
20 |
21 |
22 |
23 |
24 | Envelope.Construction Sets
25 |
26 |
27 |
28 | Measure Type
29 | ModelMeasure
30 | string
31 |
32 |
33 | Intended Software Tool
34 | Apply Measure Now
35 | string
36 |
37 |
38 | Intended Software Tool
39 | OpenStudio Application
40 | string
41 |
42 |
43 | Intended Software Tool
44 | Parametric Analysis Tool
45 | string
46 |
47 |
48 |
49 |
50 | TestModel.osm
51 | osm
52 | test
53 | 11A75CC8
54 |
55 |
56 | new_measure_test.rb
57 | rb
58 | test
59 | BFD0A1F0
60 |
61 |
62 |
63 | OpenStudio
64 | 1.13.0
65 | 1.13.0
66 |
67 | measure.rb
68 | rb
69 | script
70 | 654161A8
71 |
72 |
73 |
74 |
--------------------------------------------------------------------------------
/lib/measures/set_building_to_construction_set/tests/new_measure_test.rb:
--------------------------------------------------------------------------------
1 | require 'openstudio'
2 | require 'openstudio/ruleset/ShowRunnerOutput'
3 | require 'minitest/autorun'
4 | require_relative '../measure.rb'
5 | require 'fileutils'
6 |
7 | class SetBuildingToConstructionSet_Test < MiniTest::Unit::TestCase
8 |
9 |
10 | def test_good_argument_values
11 | # create an instance of the measure
12 | measure = SetBuildingToConstructionSet.new
13 |
14 | # create an instance of a runner
15 | runner = OpenStudio::Ruleset::OSRunner.new
16 |
17 | # load the test model
18 | translator = OpenStudio::OSVersion::VersionTranslator.new
19 | path = OpenStudio::Path.new(File.dirname(__FILE__) + "/TestModel.osm")
20 | model = translator.loadModel(path)
21 | assert((not model.empty?))
22 | model = model.get
23 |
24 | # get arguments
25 | arguments = measure.arguments(model)
26 | argument_map = OpenStudio::Ruleset.convertOSArgumentVectorToMap(arguments)
27 |
28 | # create hash of argument values.
29 | # If the argument has a default that you want to use, you don't need it in the hash
30 | args_hash = {}
31 | args_hash["constructionset"] = "Default Construction Set 2"
32 | # using defaults values from measure.rb for other arguments
33 |
34 | # populate argument with specified hash value if specified
35 | arguments.each do |arg|
36 | temp_arg_var = arg.clone
37 | if args_hash[arg.name]
38 | assert(temp_arg_var.setValue(args_hash[arg.name]))
39 | end
40 | argument_map[arg.name] = temp_arg_var
41 | end
42 |
43 | # run the measure
44 | measure.run(model, runner, argument_map)
45 | result = runner.result
46 |
47 | # show the output
48 | show_output(result)
49 |
50 | # assert that it ran correctly
51 | assert_equal("Success", result.value.valueName)
52 | assert(result.info.size == 1)
53 | assert(result.warnings.size == 0)
54 |
55 |
56 | # save the model to test output directory
57 | output_file_path = OpenStudio::Path.new(File.dirname(__FILE__) + "/output/test_output.osm")
58 | model.save(output_file_path,true)
59 | end
60 |
61 | end
62 |
--------------------------------------------------------------------------------
/lib/measures/set_output_table_to_IP_units/LICENSE.md:
--------------------------------------------------------------------------------
1 | Copyright 2014-2021 Building Performance Simulation
2 |
3 | Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
4 |
5 | The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
6 |
7 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
--------------------------------------------------------------------------------
/lib/measures/set_output_table_to_IP_units/measure.rb:
--------------------------------------------------------------------------------
1 | class SetOutputTableToIPunits < OpenStudio::Ruleset::WorkspaceUserScript
2 |
3 | def name
4 | return 'Set Output Table To IP Units'
5 | end
6 |
7 | # human readable description
8 | def description
9 | return 'This measure changes the output table to be in IP units.'
10 | end
11 |
12 | # human readable description of modeling approach
13 | def modeler_description
14 | return 'This EnergyPlus measure sets the OutputControl:Table:Style to InchPound.'
15 | end
16 |
17 | # define the arguments that the user will input
18 | def arguments(workspace)
19 | args = OpenStudio::Ruleset::OSArgumentVector.new
20 | return args
21 | end
22 |
23 | # define what happens when the measure is run
24 | def run(workspace, runner, user_arguments)
25 | super(workspace, runner, user_arguments)
26 |
27 | # if IP units requested add OutputControl:Table:Style object
28 | table_style = workspace.getObjectsByType("OutputControl:Table:Style".to_IddObjectType)
29 |
30 | # even though there is just a single object, it is still in an array
31 | if not table_style.empty?
32 | # we can access the first object in the array using the table_style[0]
33 | # use setString to change the field value to request IP units
34 | table_style_ip = table_style[0].setString(1,"InchPound")
35 | end
36 |
37 | return true
38 | end
39 | end
40 |
41 | # this allows the measure to be use by the application
42 | SetOutputTableToIPunits.new.registerWithApplication
--------------------------------------------------------------------------------
/lib/measures/set_output_table_to_IP_units/measure.xml:
--------------------------------------------------------------------------------
1 |
2 | 3.0
3 | set_output_table_to_i_punits
4 | c4381bc7-2426-486a-8050-e50c60e718a2
5 | b1aac4a7-79ab-49f4-8067-815084e0365f
6 | 20190426T215502Z
7 | E700F594
8 | SetOutputTableToIPunits
9 | Set Output Table To IP Units
10 | This measure changes the output table to be in IP units.
11 | This EnergyPlus measure sets the OutputControl:Table:Style to InchPound.
12 |
13 |
14 |
15 |
16 | Reporting.QAQC
17 |
18 |
19 |
20 | Measure Function
21 | Measure
22 | string
23 |
24 |
25 | Requires EnergyPlus Results
26 | false
27 | boolean
28 |
29 |
30 | Measure Type
31 | EnergyPlusMeasure
32 | string
33 |
34 |
35 | Uses SketchUp API
36 | false
37 | boolean
38 |
39 |
40 |
41 |
42 | example.idf
43 | idf
44 | test
45 | 8810333C
46 |
47 |
48 |
49 | OpenStudio
50 | 0.11.3
51 | 0.11.3
52 |
53 | measure.rb
54 | rb
55 | script
56 | 37EBB72A
57 |
58 |
59 | SetOutputTableToIPUnits_Test.rb
60 | rb
61 | test
62 | E3A58D85
63 |
64 |
65 |
66 |
--------------------------------------------------------------------------------
/lib/measures/set_output_table_to_IP_units/tests/SetOutputTableToIPUnits_Test.rb:
--------------------------------------------------------------------------------
1 | require 'openstudio'
2 | require 'openstudio/ruleset/ShowRunnerOutput'
3 | require 'minitest/autorun'
4 | require_relative '../measure.rb'
5 | require 'fileutils'
6 |
7 | class SetOutputTableToIPUnits_Test < MiniTest::Test
8 |
9 | def workspace_out_path(test_name)
10 | # always generate test output in specially named 'output' directory so result files are not made part of the measure
11 | return "#{File.dirname(__FILE__)}/output/#{test_name}.idf"
12 | end
13 |
14 | def test_number_of_arguments_and_argument_names
15 | # this test ensures that the current test is matched to the measure inputs
16 |
17 | # create an instance of the measure
18 | measure = SetOutputTableToIPunits.new
19 |
20 | #load the example workspace
21 | workspace = OpenStudio::Workspace.new
22 |
23 | # get arguments and test that they are what we are expecting
24 | arguments = measure.arguments(workspace)
25 | assert_equal(0, arguments.size)
26 | end
27 |
28 | def test_run
29 | # this tests good input values
30 | test_name = "test_run"
31 |
32 | # create an instance of the measure
33 | measure = SetOutputTableToIPunits.new
34 |
35 | # create an instance of a runner
36 | runner = OpenStudio::Ruleset::OSRunner.new
37 |
38 | # load the workspace
39 | idf_file = File.dirname(__FILE__) + '/example.idf'
40 | assert(File.exists?(idf_file))
41 | workspace = OpenStudio::Workspace::load(OpenStudio::Path.new(idf_file))
42 | assert((not workspace.empty?))
43 | workspace = workspace.get
44 |
45 | # set argument values to good values
46 | arguments = measure.arguments(workspace)
47 | argument_map = OpenStudio::Ruleset::OSArgumentMap.new
48 |
49 | # run the measure
50 | measure.run(workspace, runner, argument_map)
51 | result = runner.result
52 |
53 | # show the output
54 | show_output(result)
55 |
56 | # assert that it ran correctly
57 | assert_equal("Success", result.value.valueName)
58 | assert(result.warnings.size == 0)
59 |
60 | #save the workspace for testing purposes
61 | if !File.exist?("#{File.dirname(__FILE__)}/output")
62 | FileUtils.mkdir_p("#{File.dirname(__FILE__)}/output")
63 | end
64 | output_file_path = workspace_out_path(test_name)
65 | workspace.save(output_file_path,true)
66 | end
67 |
68 | end
--------------------------------------------------------------------------------
/lib/measures/set_zone_height_volume_and_area/LICENSE.md:
--------------------------------------------------------------------------------
1 | Copyright 2014-2021 Building Performance Simulation
2 |
3 | Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
4 |
5 | The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
6 |
7 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
--------------------------------------------------------------------------------
/lib/measures/set_zone_height_volume_and_area/measure.xml:
--------------------------------------------------------------------------------
1 |
2 | 3.0
3 | set_zone_height_volume_and_area
4 | 64cbdf8e-a6d0-41ee-8bbe-909bf975db3e
5 | e06455ed-8877-4e86-874a-6e68cbc35729
6 | 20170317T212731Z
7 | 2AF3A68E
8 | SetZoneHeightVolumeAndArea
9 | Set Zone Height Volume and Area
10 | This coudl be used anytime you want to overwrite the calculated values, but it was specifically designe for pinwheel model where there only exterior surfaces associated to the thermal zones.
11 | Setting ceiling height and floor area is pretty straight forward using API methods. While floor area is stored in the OSM, there isn't a method expsoed to set it, so setString is used.
12 |
13 |
14 | zone
15 | Choose Thermal Zones to alter.
16 | Choice
17 | true
18 | false
19 |
20 |
21 | ceiling_height
22 | Ceiling Height
23 | The requested zone ceiling height will override model geometry. Zone multiplier will still apply to this.
24 | Double
25 | ft
26 | true
27 | false
28 |
29 |
30 | volume
31 | Volume
32 | The requested zone volume will override model geometry. Zone multiplier will still apply to this.
33 | Double
34 | ft^3
35 | true
36 | false
37 |
38 |
39 | floor_area
40 | Floor Area
41 | This requested zone floor area will override model geometry. Zone multiplier will still apply to this.
42 | Double
43 | ft^2
44 | true
45 | false
46 |
47 |
48 |
49 |
50 |
51 | Envelope.Form
52 |
53 |
54 |
55 | Measure Type
56 | ModelMeasure
57 | string
58 |
59 |
60 | Intended Software Tool
61 | Apply Measure Now
62 | string
63 |
64 |
65 | Intended Software Tool
66 | OpenStudio Application
67 | string
68 |
69 |
70 | Intended Software Tool
71 | Parametric Analysis Tool
72 | string
73 |
74 |
75 |
76 |
77 | example_model.osm
78 | osm
79 | test
80 | 53D14E69
81 |
82 |
83 | set_zone_height_volume_and_area_test.rb
84 | rb
85 | test
86 | C8F76154
87 |
88 |
89 |
90 | OpenStudio
91 | 1.13.4
92 | 1.13.4
93 |
94 | measure.rb
95 | rb
96 | script
97 | 59BCAA5B
98 |
99 |
100 |
101 |
--------------------------------------------------------------------------------
/lib/measures/set_zone_height_volume_and_area/tests/set_zone_height_volume_and_area_test.rb:
--------------------------------------------------------------------------------
1 | require 'openstudio'
2 | require 'openstudio/ruleset/ShowRunnerOutput'
3 | require 'minitest/autorun'
4 | require_relative '../measure.rb'
5 | require 'fileutils'
6 |
7 | class SetZoneHeightVolumeAndArea_Test < MiniTest::Unit::TestCase
8 |
9 | # def setup
10 | # end
11 |
12 | # def teardown
13 | # end
14 |
15 | def test_good_argument_values
16 | # create an instance of the measure
17 | measure = SetZoneHeightVolumeAndArea.new
18 |
19 | # create an instance of a runner
20 | runner = OpenStudio::Ruleset::OSRunner.new
21 |
22 | # load the test model
23 | translator = OpenStudio::OSVersion::VersionTranslator.new
24 | path = OpenStudio::Path.new(File.dirname(__FILE__) + "/example_model.osm")
25 | model = translator.loadModel(path)
26 | assert((not model.empty?))
27 | model = model.get
28 |
29 | # add a new zone to the model
30 | new_zone = OpenStudio::Model::ThermalZone.new(model)
31 | new_zone.setName('Test Zone')
32 |
33 | # get arguments
34 | arguments = measure.arguments(model)
35 | argument_map = OpenStudio::Ruleset.convertOSArgumentVectorToMap(arguments)
36 |
37 | # create hash of argument values.
38 | # If the argument has a default that you want to use, you don't need it in the hash
39 | args_hash = {}
40 | args_hash["zone"] = "Test Zone"
41 | args_hash["ceiling_height"] = 10.0
42 | args_hash["volume"] = 1000.0
43 | args_hash["floor_area"] = 100.0
44 | # using defaults values from measure.rb for other arguments
45 |
46 | # populate argument with specified hash value if specified
47 | arguments.each do |arg|
48 | temp_arg_var = arg.clone
49 | if args_hash[arg.name]
50 | assert(temp_arg_var.setValue(args_hash[arg.name]))
51 | end
52 | argument_map[arg.name] = temp_arg_var
53 | end
54 |
55 | # run the measure
56 | measure.run(model, runner, argument_map)
57 | result = runner.result
58 |
59 | # show the output
60 | show_output(result)
61 |
62 | # assert that it ran correctly
63 | assert_equal("Success", result.value.valueName)
64 | #assert(result.info.size == 1)
65 | #assert(result.warnings.size == 0)
66 |
67 | # save the model to test output directory
68 | output_file_path = OpenStudio::Path.new(File.dirname(__FILE__) + "/output/test_output.osm")
69 | model.save(output_file_path,true)
70 | end
71 |
72 | end
73 |
--------------------------------------------------------------------------------
/lib/measures/split_windows_into_horizontal_segments/LICENSE.md:
--------------------------------------------------------------------------------
1 | Copyright 2014-2021 Building Performance Simulation
2 |
3 | Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
4 |
5 | The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
6 |
7 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
--------------------------------------------------------------------------------
/lib/measures/split_windows_into_horizontal_segments/README.md:
--------------------------------------------------------------------------------
1 |
2 |
3 | ###### (Automatically generated documentation)
4 |
5 | # Split Windows Into Horizontal Segments
6 |
7 | ## Description
8 | This will replace all exterior rectangular windows with a series of stacked horizontal segments of the same area. The number of segments is determined by a user argument. Note that the resulting windows are adjacent and may result in odd behavior in various interfaces that expect sub surfaces to have small gap between them.
9 |
10 | ## Modeler Description
11 | This can be modifed to alter a sub-set of the windows by filtering by sub urface type, construction, name, or orientation.
12 |
13 | ## Measure Type
14 | ModelMeasure
15 |
16 | ## Taxonomy
17 |
18 |
19 | ## Arguments
20 |
21 |
22 | ### Number of Horizontal Segments
23 | This will split existing rectangular exterior windows into specified number of equal horizontal segments.
24 | **Name:** segments,
25 | **Type:** Integer,
26 | **Units:** ,
27 | **Required:** true,
28 | **Model Dependent:** false
29 |
30 |
31 |
32 |
33 |
--------------------------------------------------------------------------------
/lib/measures/split_windows_into_horizontal_segments/README.md.erb:
--------------------------------------------------------------------------------
1 | <%#= README.md.erb is used to auto-generate README.md. %>
2 | <%#= To manually maintain README.md throw away README.md.erb and manually edit README.md %>
3 | ###### (Automatically generated documentation)
4 |
5 | # <%= name %>
6 |
7 | ## Description
8 | <%= description %>
9 |
10 | ## Modeler Description
11 | <%= modelerDescription %>
12 |
13 | ## Measure Type
14 | <%= measureType %>
15 |
16 | ## Taxonomy
17 | <%= taxonomy %>
18 |
19 | ## Arguments
20 |
21 | <% arguments.each do |argument| %>
22 | ### <%= argument[:display_name] %>
23 | <%= argument[:description] %>
24 | **Name:** <%= argument[:name] %>,
25 | **Type:** <%= argument[:type] %>,
26 | **Units:** <%= argument[:units] %>,
27 | **Required:** <%= argument[:required] %>,
28 | **Model Dependent:** <%= argument[:model_dependent] %>
29 | <% end %>
30 |
31 | <% if arguments.size == 0 %>
32 | <%= "This measure does not have any user arguments" %>
33 | <% end %>
34 |
35 | <% if outputs.size > 0 %>
36 | ## Outputs
37 | <% output_names = [] %>
38 | <% outputs.each do |output| %>
39 | <% output_names << output[:display_name] %>
40 | <% end %>
41 | <%= output_names.join(", ") %>
42 | <% end %>
--------------------------------------------------------------------------------
/lib/measures/split_windows_into_horizontal_segments/docs/.gitkeep:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/BuildingPerformanceSimulation/openstudio-measures/6e4e351a1f0eee2932c7a1be3cc2d3562eed3231/lib/measures/split_windows_into_horizontal_segments/docs/.gitkeep
--------------------------------------------------------------------------------
/lib/measures/split_windows_into_horizontal_segments/measure.xml:
--------------------------------------------------------------------------------
1 |
2 | 3.0
3 | split_windows_into_horizontal_segments
4 | a385738c-2e04-4c94-9826-72c28e2a8d53
5 | 1990ab57-7118-4556-b624-745fcccea6ad
6 | 20190328T150539Z
7 | 9C8A26EB
8 | SplitWindowsIntoHorizontalSegments
9 | Split Windows Into Horizontal Segments
10 | This will replace all exterior rectangular windows with a series of stacked horizontal segments of the same area. The number of segments is determined by a user argument. Note that the resulting windows are adjacent and may result in odd behavior in various interfaces that expect sub surfaces to have small gap between them.
11 | This can be modifed to alter a sub-set of the windows by filtering by sub urface type, construction, name, or orientation.
12 |
13 |
14 | segments
15 | Number of Horizontal Segments
16 | This will split existing rectangular exterior windows into specified number of equal horizontal segments.
17 | Integer
18 | true
19 | false
20 | 4
21 |
22 |
23 |
24 |
25 |
26 | Envelope.Fenestration
27 |
28 |
29 |
30 | Measure Type
31 | ModelMeasure
32 | string
33 |
34 |
35 | Intended Software Tool
36 | Apply Measure Now
37 | string
38 |
39 |
40 | Intended Software Tool
41 | OpenStudio Application
42 | string
43 |
44 |
45 | Intended Software Tool
46 | Parametric Analysis Tool
47 | string
48 |
49 |
50 |
51 |
52 | LICENSE.md
53 | md
54 | license
55 | CD7F5672
56 |
57 |
58 | README.md.erb
59 | erb
60 | readmeerb
61 | 703C9964
62 |
63 |
64 | .gitkeep
65 | gitkeep
66 | doc
67 | 00000000
68 |
69 |
70 | example_model.osm
71 | osm
72 | test
73 | 53D14E69
74 |
75 |
76 | split_windows_into_horizontal_segments_test.rb
77 | rb
78 | test
79 | 89B33383
80 |
81 |
82 |
83 | OpenStudio
84 | 2.7.1
85 | 2.7.1
86 |
87 | measure.rb
88 | rb
89 | script
90 | BF0EB2B7
91 |
92 |
93 | README.md
94 | md
95 | readme
96 | F5A6E1A6
97 |
98 |
99 |
100 |
--------------------------------------------------------------------------------
/lib/measures/split_windows_into_horizontal_segments/tests/split_windows_into_horizontal_segments_test.rb:
--------------------------------------------------------------------------------
1 | # insert your copyright here
2 |
3 | require 'openstudio'
4 | require 'openstudio/measure/ShowRunnerOutput'
5 | require 'minitest/autorun'
6 | require_relative '../measure.rb'
7 | require 'fileutils'
8 |
9 | class SplitWindowsIntoHorizontalSegmentsTest < Minitest::Test
10 |
11 | def test_good_argument_values
12 | # create an instance of the measure
13 | measure = SplitWindowsIntoHorizontalSegments.new
14 |
15 | # create runner with empty OSW
16 | osw = OpenStudio::WorkflowJSON.new
17 | runner = OpenStudio::Measure::OSRunner.new(osw)
18 |
19 | # load the test model
20 | translator = OpenStudio::OSVersion::VersionTranslator.new
21 | path = "#{File.dirname(__FILE__)}/example_model.osm"
22 | model = translator.loadModel(path)
23 | assert(!model.empty?)
24 | model = model.get
25 |
26 | # get arguments
27 | arguments = measure.arguments(model)
28 | argument_map = OpenStudio::Measure.convertOSArgumentVectorToMap(arguments)
29 |
30 | # create hash of argument values.
31 | # If the argument has a default that you want to use, you don't need it in the hash
32 | args_hash = {}
33 | #args_hash['segments'] = 5
34 | # using defaults values from measure.rb for other arguments
35 |
36 | # populate argument with specified hash value if specified
37 | arguments.each do |arg|
38 | temp_arg_var = arg.clone
39 | if args_hash.key?(arg.name)
40 | assert(temp_arg_var.setValue(args_hash[arg.name]))
41 | end
42 | argument_map[arg.name] = temp_arg_var
43 | end
44 |
45 | # run the measure
46 | measure.run(model, runner, argument_map)
47 | result = runner.result
48 |
49 | # show the output
50 | show_output(result)
51 |
52 | # assert that it ran correctly
53 | assert_equal('Success', result.value.valueName)
54 | #assert(result.info.size == 1)
55 | #assert(result.warnings.empty?)
56 |
57 | # save the model to test output directory
58 | output_file_path = "#{File.dirname(__FILE__)}//output/test_output.osm"
59 | model.save(output_file_path, true)
60 | end
61 | end
62 |
--------------------------------------------------------------------------------
/lib/measures/surface_matching_diagnostic/LICENSE.md:
--------------------------------------------------------------------------------
1 | Copyright 2014-2021 Building Performance Simulation
2 |
3 | Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
4 |
5 | The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
6 |
7 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
--------------------------------------------------------------------------------
/lib/measures/surface_matching_diagnostic/SurfaceMatching_Test.rb:
--------------------------------------------------------------------------------
1 | require 'openstudio'
2 |
3 | require 'openstudio/ruleset/ShowRunnerOutput'
4 |
5 | require "#{File.dirname(__FILE__)}/../measure.rb"
6 |
7 | require 'minitest/autorun'
8 |
9 | class SurfaceMatchingDiagnostic_Test < MiniTest::Unit::TestCase
10 |
11 |
12 | def test_SurfaceMatchingDiagnostic
13 |
14 | # create an instance of the measure
15 | measure = SurfaceMatchingDiagnostic.new
16 |
17 | # create an instance of a runner
18 | runner = OpenStudio::Ruleset::OSRunner.new
19 |
20 | # load the test model
21 | translator = OpenStudio::OSVersion::VersionTranslator.new
22 | path = OpenStudio::Path.new(File.dirname(__FILE__) + "/SurfaceMatching_test.osm")
23 | model = translator.loadModel(path)
24 | assert((not model.empty?))
25 | model = model.get
26 |
27 | # get arguments and test that they are what we are expecting
28 | arguments = measure.arguments(model)
29 | assert_equal(5, arguments.size)
30 |
31 | # set argument values to good values and run the measure on model with spaces
32 | argument_map = OpenStudio::Ruleset::OSArgumentMap.new
33 |
34 | count = -1
35 | remove_duplicate_vertices = arguments[count += 1].clone
36 | assert(remove_duplicate_vertices.setValue(true))
37 | argument_map["remove_duplicate_vertices"] = remove_duplicate_vertices
38 |
39 | remove_collinear_vertices = arguments[count += 1].clone
40 | assert(remove_collinear_vertices.setValue(true))
41 | argument_map["remove_collinear_vertices"] = remove_collinear_vertices
42 |
43 | remove_duplicate_surfaces = arguments[count += 1].clone
44 | assert(remove_duplicate_surfaces.setValue(true))
45 | argument_map["remove_duplicate_surfaces"] = remove_duplicate_surfaces
46 |
47 | intersect_surfaces = arguments[count += 1].clone
48 | assert(intersect_surfaces.setValue(true))
49 | argument_map["intersect_surfaces"] = intersect_surfaces
50 |
51 | match_surfaces = arguments[count += 1].clone
52 | assert(match_surfaces.setValue(true))
53 | argument_map["match_surfaces"] = match_surfaces
54 |
55 | measure.run(model, runner, argument_map)
56 | result = runner.result
57 | show_output(result)
58 | assert(result.value.valueName == "Success")
59 | #assert(result.warnings.size == 1)
60 | #assert(result.info.size == 2)
61 |
62 | # save the model in an output directory
63 | output_dir = File.expand_path('output', File.dirname(__FILE__))
64 | FileUtils.mkdir output_dir unless Dir.exist? output_dir
65 | model.save("#{output_dir}/test.osm", true)
66 | end
67 |
68 | def test_SurfaceMatchingDiagnostic_colliner
69 |
70 | # create an instance of the measure
71 | measure = SurfaceMatchingDiagnostic.new
72 |
73 | # create an instance of a runner
74 | runner = OpenStudio::Ruleset::OSRunner.new
75 |
76 | # load the test model
77 | translator = OpenStudio::OSVersion::VersionTranslator.new
78 | path = OpenStudio::Path.new(File.dirname(__FILE__) + "/temp_test.osm")
79 | model = translator.loadModel(path)
80 | assert((not model.empty?))
81 | model = model.get
82 |
83 | # get arguments and test that they are what we are expecting
84 | arguments = measure.arguments(model)
85 | assert_equal(5, arguments.size)
86 |
87 | # set argument values to good values and run the measure on model with spaces
88 | argument_map = OpenStudio::Ruleset::OSArgumentMap.new
89 |
90 | count = -1
91 | remove_duplicate_vertices = arguments[count += 1].clone
92 | assert(remove_duplicate_vertices.setValue(true))
93 | argument_map["remove_duplicate_vertices"] = remove_duplicate_vertices
94 |
95 | remove_collinear_vertices = arguments[count += 1].clone
96 | assert(remove_collinear_vertices.setValue(true))
97 | argument_map["remove_collinear_vertices"] = remove_collinear_vertices
98 |
99 | remove_duplicate_surfaces = arguments[count += 1].clone
100 | assert(remove_duplicate_surfaces.setValue(true))
101 | argument_map["remove_duplicate_surfaces"] = remove_duplicate_surfaces
102 |
103 | intersect_surfaces = arguments[count += 1].clone
104 | assert(intersect_surfaces.setValue(true))
105 | argument_map["intersect_surfaces"] = intersect_surfaces
106 |
107 | match_surfaces = arguments[count += 1].clone
108 | assert(match_surfaces.setValue(true))
109 | argument_map["match_surfaces"] = match_surfaces
110 |
111 | measure.run(model, runner, argument_map)
112 | result = runner.result
113 | show_output(result)
114 | assert(result.value.valueName == "Success")
115 | #assert(result.warnings.size == 1)
116 | #assert(result.info.size == 2)
117 |
118 | # save the model in an output directory
119 | output_dir = File.expand_path('output', File.dirname(__FILE__))
120 | FileUtils.mkdir output_dir unless Dir.exist? output_dir
121 | model.save("#{output_dir}/test.osm", true)
122 | end
123 |
124 | end
125 |
--------------------------------------------------------------------------------
/lib/measures/swap_construction_in_construction_set/LICENSE.md:
--------------------------------------------------------------------------------
1 | Copyright 2014-2021 Building Performance Simulation
2 |
3 | Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
4 |
5 | The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
6 |
7 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
--------------------------------------------------------------------------------
/lib/measures/swap_construction_in_construction_set/measure.xml:
--------------------------------------------------------------------------------
1 |
2 | 3.0
3 | swap_construction_in_construction_set
4 | f2dd07a6-51e8-4c66-b814-861f3b0ee678
5 | c6127221-b090-4bf7-8f2e-9790baac95d9
6 | 20180617T234741Z
7 | 1FE39238
8 | SwapConstructionInConstructionSet
9 | Swap Construction In Construction Set
10 | This will swap a construction assigned in any construction set with another defined in your model. This will make the change in all construction sets.
11 | This looks for the old construction in each Construction Set object and replaces it with the new construction. If you don't want all constructions to change, say you are using multiple construction defaults by floor and only want to change the definition on one floor, you will need to copy the selected construction and assign it.
12 |
13 |
14 | old_construction
15 | Pick a construction to be replaced:
16 | Choice
17 | true
18 | false
19 |
20 |
21 | new_construction
22 | Pick a construction to replace the old construction. This construction must the same type (Surface, Subsurface) as the old construction.
23 | Choice
24 | true
25 | false
26 |
27 |
28 |
29 |
30 |
31 | Envelope.Construction Sets
32 |
33 |
34 |
35 | Uses SketchUp API
36 | false
37 | boolean
38 |
39 |
40 | Measure Type
41 | ModelMeasure
42 | string
43 |
44 |
45 | Intended Software Tool
46 | Apply Measure Now
47 | string
48 |
49 |
50 | Intended Software Tool
51 | OpenStudio Application
52 | string
53 |
54 |
55 | Intended Software Tool
56 | Parametric Analysis Tool
57 | string
58 |
59 |
60 | Intended Use Case
61 | Model Articulation
62 | string
63 |
64 |
65 |
66 |
67 |
68 | OpenStudio
69 | 1.3.1
70 | 1.8.0
71 |
72 | measure.rb
73 | rb
74 | script
75 | F08FAC75
76 |
77 |
78 | SwapConstructionInConstructionSet_Test.rb
79 | rb
80 | test
81 | E64043FC
82 |
83 |
84 | office.osm
85 | osm
86 | test
87 | ED1FC30F
88 |
89 |
90 |
91 |
--------------------------------------------------------------------------------