├── .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 | [![Join the chat at https://gitter.im/BuildingPerformanceSimulation/openstudio-measures](https://badges.gitter.im/BuildingPerformanceSimulation/openstudio-measures.svg)](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 | --------------------------------------------------------------------------------