Skip to content

Commit

Permalink
envelope_material_property_phase_change files for #4
Browse files Browse the repository at this point in the history
  • Loading branch information
MatthewSteen committed Sep 16, 2020
1 parent 491d8de commit 2f9c839
Show file tree
Hide file tree
Showing 4 changed files with 262 additions and 0 deletions.
32 changes: 32 additions & 0 deletions measures/envelope_material_property_phase_change/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@


###### (Automatically generated documentation)

# Material Property Phase Change

## Description
Adds a MaterialProperty:PhaseChange object to the model that references the interior layer of the selected Construction.

## Modeler Description
Gets the interior layer name of the selected Construction object from the number of fields and sets the MaterialProperty:PhaseChange Name field to reference it.

## Measure Type
EnergyPlusMeasure

## Taxonomy


## Arguments


### Construction Name
Phase Change Material will be added to interior material
**Name:** construction_name,
**Type:** Choice,
**Units:** ,
**Required:** true,
**Model Dependent:** false




42 changes: 42 additions & 0 deletions measures/envelope_material_property_phase_change/README.md.erb
Original file line number Diff line number Diff line change
@@ -0,0 +1,42 @@
<%#= README.md.erb is used to auto-generate README.md. %>
<%#= To manually maintain README.md throw away README.md.erb and manually edit README.md %>
###### (Automatically generated documentation)

# <%= name %>

## Description
<%= description %>

## Modeler Description
<%= modelerDescription %>

## Measure Type
<%= measureType %>

## Taxonomy
<%= taxonomy %>

## Arguments

<% arguments.each do |argument| %>
### <%= argument[:display_name] %>
<%= argument[:description] %>
**Name:** <%= argument[:name] %>,
**Type:** <%= argument[:type] %>,
**Units:** <%= argument[:units] %>,
**Required:** <%= argument[:required] %>,
**Model Dependent:** <%= argument[:model_dependent] %>
<% end %>

<% if arguments.size == 0 %>
<%= "This measure does not have any user arguments" %>
<% end %>

<% if outputs.size > 0 %>
## Outputs
<% output_names = [] %>
<% outputs.each do |output| %>
<% output_names << output[:display_name] %>
<% end %>
<%= output_names.join(", ") %>
<% end %>
88 changes: 88 additions & 0 deletions measures/envelope_material_property_phase_change/measure.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,88 @@
<?xml version="1.0"?>
<measure>
<schema_version>3.0</schema_version>
<name>envelope_material_property_phase_change</name>
<uid>89c98dc2-c2d7-4014-a411-0103c899546b</uid>
<version_id>58465349-4463-4926-8d1e-68a6b9328c49</version_id>
<version_modified>20200808T211309Z</version_modified>
<xml_checksum>BB067920</xml_checksum>
<class_name>EnvelopeMaterialPropertyPhaseChange</class_name>
<display_name>Material Property Phase Change</display_name>
<description>Adds a MaterialProperty:PhaseChange object to the model that references the interior layer of the selected Construction.</description>
<modeler_description>Gets the interior layer name of the selected Construction object from the number of fields and sets the MaterialProperty:PhaseChange Name field to reference it.</modeler_description>
<arguments>
<argument>
<name>construction_name</name>
<display_name>Construction Name</display_name>
<description>Phase Change Material will be added to interior material</description>
<type>Choice</type>
<required>true</required>
<model_dependent>false</model_dependent>
</argument>
</arguments>
<outputs />
<provenances />
<tags>
<tag>Envelope.Opaque</tag>
</tags>
<attributes>
<attribute>
<name>Measure Type</name>
<value>EnergyPlusMeasure</value>
<datatype>string</datatype>
</attribute>
<attribute>
<name>Intended Software Tool</name>
<value>OpenStudio Application</value>
<datatype>string</datatype>
</attribute>
<attribute>
<name>Intended Software Tool</name>
<value>Parametric Analysis Tool</value>
<datatype>string</datatype>
</attribute>
</attributes>
<files>
<file>
<filename>LICENSE.md</filename>
<filetype>md</filetype>
<usage_type>license</usage_type>
<checksum>CD7F5672</checksum>
</file>
<file>
<filename>README.md.erb</filename>
<filetype>erb</filetype>
<usage_type>readmeerb</usage_type>
<checksum>703C9964</checksum>
</file>
<file>
<filename>.gitkeep</filename>
<filetype>gitkeep</filetype>
<usage_type>doc</usage_type>
<checksum>00000000</checksum>
</file>
<file>
<filename>envelope_material_property_phase_change_test.rb</filename>
<filetype>rb</filetype>
<usage_type>test</usage_type>
<checksum>FE0599E9</checksum>
</file>
<file>
<version>
<software_program>OpenStudio</software_program>
<identifier>3.0.1</identifier>
<min_compatible>3.0.1</min_compatible>
</version>
<filename>measure.rb</filename>
<filetype>rb</filetype>
<usage_type>script</usage_type>
<checksum>15AAD156</checksum>
</file>
<file>
<filename>README.md</filename>
<filetype>md</filetype>
<usage_type>readme</usage_type>
<checksum>F4CD0FC5</checksum>
</file>
</files>
</measure>
Original file line number Diff line number Diff line change
@@ -0,0 +1,100 @@
# insert your copyright here

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

class EnvelopeMaterialPropertyPhaseChangeTest < Minitest::Test
# def setup
# end

# def teardown

def test_number_of_arguments_and_argument_names
# create an instance of the measure
measure = EnvelopeMaterialPropertyPhaseChange.new

# make an empty workspace
workspace = OpenStudio::Workspace.new('Draft'.to_StrictnessLevel, 'EnergyPlus'.to_IddFileType)

# get arguments and test that they are what we are expecting
arguments = measure.arguments(workspace)
assert_equal(1, arguments.size)
assert_equal('zone_name', arguments[0].name)
end

def test_bad_argument_values
# create an instance of the measure
measure = EnvelopeMaterialPropertyPhaseChange.new

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

# make an empty workspace
workspace = OpenStudio::Workspace.new('Draft'.to_StrictnessLevel, 'EnergyPlus'.to_IddFileType)

# check that there are no thermal zones
assert_equal(0, workspace.getObjectsByType('Zone'.to_IddObjectType).size)

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

# set argument values to bad value
zone_name = arguments[0].clone
assert(zone_name.setValue(''))
argument_map['zone_name'] = zone_name

# run the measure
measure.run(workspace, runner, argument_map)
result = runner.result
assert_equal('Fail', result.value.valueName)

# check that there are still no thermal zones
assert_equal(0, workspace.getObjectsByType('Zone'.to_IddObjectType).size)
end

def test_good_argument_values
# create an instance of the measure
measure = EnvelopeMaterialPropertyPhaseChange.new

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

# make an empty workspace
workspace = OpenStudio::Workspace.new('Draft'.to_StrictnessLevel, 'EnergyPlus'.to_IddFileType)

# check that there are no thermal zones
assert_equal(0, workspace.getObjectsByType('Zone'.to_IddObjectType).size)

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

# set argument values to good values
zone_name = arguments[0].clone
assert(zone_name.setValue('New Zone'))
argument_map['zone_name'] = zone_name

# run the measure
measure.run(workspace, runner, argument_map)
result = runner.result
assert_equal('Success', result.value.valueName)

# check that there is now 1 thermal zones
assert_equal(1, workspace.getObjectsByType('Zone'.to_IddObjectType).size)

# check that zone is properly named
zone = workspace.getObjectsByType('Zone'.to_IddObjectType)[0]
assert(!zone.getString(0).empty?)
assert_equal('New Zone', zone.getString(0).get)

# save the workspace to output directory
output_file_path = OpenStudio::Path.new(File.dirname(__FILE__) + '/output/test_output.idf')
workspace.save(output_file_path, true)
end
end

0 comments on commit 2f9c839

Please sign in to comment.