Skip to content

Commit

Permalink
Merge pull request #44 from NREL/051_fixes
Browse files Browse the repository at this point in the history
051 fixes
  • Loading branch information
DavidGoldwasser authored Feb 23, 2022
2 parents 41032e8 + 7923761 commit cdfafbd
Show file tree
Hide file tree
Showing 17 changed files with 8,528 additions and 147 deletions.
1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -28,3 +28,4 @@
lib/measures/.rubocop.yml
lib/test/*
test_results/
/lib/measures/*/output/
Original file line number Diff line number Diff line change
Expand Up @@ -3,9 +3,9 @@
<schema_version>3.0</schema_version>
<name>exterior_wall_thermal_properties_multiplier</name>
<uid>6ab39cf2-1f9e-4570-a797-360a814aaa74</uid>
<version_id>f6eb026d-b992-42cc-a11e-f6d8f2794127</version_id>
<version_modified>20210304T152734Z</version_modified>
<xml_checksum>31085437</xml_checksum>
<version_id>cc91b451-1ab1-4b68-9bef-d4e7575e6500</version_id>
<version_modified>20220223T012552Z</version_modified>
<xml_checksum>EB1A0C08</xml_checksum>
<class_name>ExteriorWallThermalPropertiesMultiplier</class_name>
<display_name>Exterior Wall Thermal Properties Multiplier</display_name>
<description>Change exterior walls by altering the thermal resistance, density, and solar absorptance of the wall constructions by a Multiplier</description>
Expand Down Expand Up @@ -40,7 +40,6 @@
<provenances />
<tags>
<tag>Envelope.Opaque</tag>
<tag>Calibration</tag>
</tags>
<attributes>
<attribute>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,9 +3,9 @@
<schema_version>3.0</schema_version>
<name>exterior_wall_thermal_properties_percent_change</name>
<uid>6ab39cf2-1f9e-4570-a797-360a814aaa64</uid>
<version_id>90e96c89-f488-4f6a-a12d-1f15e0c3f304</version_id>
<version_modified>20210304T152734Z</version_modified>
<xml_checksum>31085437</xml_checksum>
<version_id>900fc466-62cd-4726-8917-164d0e5c670f</version_id>
<version_modified>20220223T012552Z</version_modified>
<xml_checksum>EB1A0C08</xml_checksum>
<class_name>ExteriorWallThermalPropertiesPercentChange</class_name>
<display_name>Exterior Wall Thermal Percent Change</display_name>
<description>Change exterior walls by altering the thermal resistance, density, and solar absorptance of the wall constructions by a Percent Change</description>
Expand Down Expand Up @@ -40,7 +40,6 @@
<provenances />
<tags>
<tag>Envelope.Opaque</tag>
<tag>Calibration</tag>
</tags>
<attributes>
<attribute>
Expand Down
14 changes: 8 additions & 6 deletions lib/measures/HardSizeHvac/measure.rb
Original file line number Diff line number Diff line change
Expand Up @@ -66,13 +66,15 @@ def arguments(_model)
def run(model, runner, user_arguments)
super(model, runner, user_arguments)

# Require the HVAC sizing library
# require_relative 'resources/HVACSizing.Model'
# Make the standard applier
standard = Standard.build('90.1-2004') # template choice doesn't matter

# Run a sizing run and attach the resulting
# sql file to the model. Hard sizing methods
# won't work unless the model has a sql file.
model.runSizingRun(Dir.pwd.to_s)
# Perform a sizing run (2.5.1 and later)
sizing_run_path = OpenStudio::Path.new(File.dirname(__FILE__) + '/output/SR1').to_s
runner.registerInfo("Performing sizing run at #{sizing_run_path}.")
if standard.model_run_sizing_run(model, sizing_run_path) == false
return false
end

# Hard sizing every object in the model.
model.applySizingValues
Expand Down
20 changes: 16 additions & 4 deletions lib/measures/HardSizeHvac/measure.xml
Original file line number Diff line number Diff line change
Expand Up @@ -3,8 +3,8 @@
<schema_version>3.0</schema_version>
<name>hard_size_hvac</name>
<uid>d7da749f-6318-4077-b502-25994a713b27</uid>
<version_id>962f9f66-5795-4157-a3ee-7a335d81b576</version_id>
<version_modified>20210304T152734Z</version_modified>
<version_id>0647d2b3-e8b0-4529-962f-dbb85d4945fa</version_id>
<version_modified>20220223T145950Z</version_modified>
<xml_checksum>2B526343</xml_checksum>
<class_name>HardSizeHVAC</class_name>
<display_name>Hard Size HVAC</display_name>
Expand Down Expand Up @@ -71,12 +71,24 @@
<version>
<software_program>OpenStudio</software_program>
<identifier>1.5.0</identifier>
<min_compatible>1.5.0</min_compatible>
<min_compatible>2.5.1</min_compatible>
</version>
<filename>measure.rb</filename>
<filetype>rb</filetype>
<usage_type>script</usage_type>
<checksum>63C57B08</checksum>
<checksum>0920138B</checksum>
</file>
<file>
<filename>small_office.osm</filename>
<filetype>osm</filetype>
<usage_type>test</usage_type>
<checksum>0FB2ACC8</checksum>
</file>
<file>
<filename>hard_size_hvac_test.rb</filename>
<filetype>rb</filetype>
<usage_type>test</usage_type>
<checksum>FA5BB28D</checksum>
</file>
</files>
</measure>
92 changes: 92 additions & 0 deletions lib/measures/HardSizeHvac/tests/hard_size_hvac_test.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,92 @@
# *******************************************************************************
# OpenStudio(R), Copyright (c) 2008-2021, Alliance for Sustainable Energy, LLC.
# All rights reserved.
# Redistribution and use in source and binary forms, with or without
# modification, are permitted provided that the following conditions are met:
#
# (1) Redistributions of source code must retain the above copyright notice,
# this list of conditions and the following disclaimer.
#
# (2) Redistributions in binary form must reproduce the above copyright notice,
# this list of conditions and the following disclaimer in the documentation
# and/or other materials provided with the distribution.
#
# (3) Neither the name of the copyright holder nor the names of any contributors
# may be used to endorse or promote products derived from this software without
# specific prior written permission from the respective party.
#
# (4) Other than as required in clauses (1) and (2), distributions in any form
# of modifications or other derivative works may not use the "OpenStudio"
# trademark, "OS", "os", or any other confusingly similar designation without
# specific prior written permission from Alliance for Sustainable Energy, LLC.
#
# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDER(S) AND ANY CONTRIBUTORS
# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
# THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
# ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER(S), ANY CONTRIBUTORS, THE
# UNITED STATES GOVERNMENT, OR THE UNITED STATES DEPARTMENT OF ENERGY, NOR ANY OF
# THEIR EMPLOYEES, BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
# EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT
# OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
# INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
# STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
# OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
# *******************************************************************************

# insert your copyright here

require 'openstudio'
require 'openstudio/measure/ShowRunnerOutput'
require 'minitest/autorun'
require_relative '../measure.rb'
require 'fileutils'

class HardSizeHVACTest < Minitest::Test
def test_good_argument_values
# create an instance of the measure
measure = HardSizeHVAC.new

# create runner with empty OSW
osw = OpenStudio::WorkflowJSON.new
runner = OpenStudio::Measure::OSRunner.new(osw)

# load the test model
translator = OpenStudio::OSVersion::VersionTranslator.new
path = "#{File.dirname(__FILE__)}/small_office.osm"
model = translator.loadModel(path)
assert(!model.empty?)
model = model.get

# get arguments
arguments = measure.arguments(model)
argument_map = OpenStudio::Measure.convertOSArgumentVectorToMap(arguments)

# create hash of argument values.
# If the argument has a default that you want to use, you don't need it in the hash
args_hash = {}
# using defaults values from measure.rb for other arguments

# populate argument with specified hash value if specified
arguments.each do |arg|
temp_arg_var = arg.clone
if args_hash.key?(arg.name)
assert(temp_arg_var.setValue(args_hash[arg.name]))
end
argument_map[arg.name] = temp_arg_var
end

# run the measure
measure.run(model, runner, argument_map)
result = runner.result

# show the output
show_output(result)

# assert that it ran correctly
assert_equal('Success', result.value.valueName)

# save the model to test output directory
output_file_path = "#{File.dirname(__FILE__)}//output/test_output.osm"
model.save(output_file_path, true)
end
end
Loading

0 comments on commit cdfafbd

Please sign in to comment.