Skip to content

Commit

Permalink
add model to tests
Browse files Browse the repository at this point in the history
  • Loading branch information
TShapinsky committed Dec 29, 2023
1 parent 6a9a6db commit 06b3193
Show file tree
Hide file tree
Showing 5 changed files with 17,520 additions and 0 deletions.
92 changes: 92 additions & 0 deletions tests/api/models/small_office/measures/alfalfa_vars/measure.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,92 @@
# insert your copyright here

# see the URL below for information on how to write OpenStudio measures
# http://nrel.github.io/OpenStudio-user-documentation/reference/measure_writing_guide/

# start the measure
class AlfalfaVariables < OpenStudio::Measure::ModelMeasure
# human readable name
def name
return 'AlfalfaVariables'
end

# human readable description
def description
return 'Add custom variables for Alfalfa'
end

# human readable description of modeling approach
def modeler_description
return 'Add EMS global variables required by Alfalfa'
end

# define the arguments that the user will input
def arguments(model)
args = OpenStudio::Measure::OSArgumentVector.new
return args
end

def create_input(model, name, freq)
# The purpose of this function is to create an Alfalfa input that is accessible via python plugins

global = OpenStudio::Model::EnergyManagementSystemGlobalVariable.new(model, name)
global.setExportToBCVTB(true)

# The global variable's value must be sent to output an variable so that python programs can read it
# don't be mistaken, An OuputVariable object is created, but this is "input" to the simulation, from Alfalfa clients
global_ems_output = OpenStudio::Model::EnergyManagementSystemOutputVariable.new(model, global)
global_ems_output.setName(name + "_EMS_Value")
global_ems_output.setUpdateFrequency("SystemTimestep")

# Request the custom ems output var creaed in the previous step
global_output = OpenStudio::Model::OutputVariable.new(global_ems_output.nameString(), model)
global_output.setName(name + "_Value")
global_output.setReportingFrequency(freq)
global_output.setKeyValue("EMS")
# Setting exportToBCVTB to true is optional, and will result in the output variable showing up in the Alfalfa api,
# this might be useful for confirmation of the input
global_output.setExportToBCVTB(true)

# repeat the previous steps for an "Enable" input
# This value will be 1 (instead of 0) anytime a client writes to the input via the Alfalfa api
global_enable = OpenStudio::Model::EnergyManagementSystemGlobalVariable.new(model, name + "_Enable")
global_enable.setExportToBCVTB(true)

global_enable_ems_output = OpenStudio::Model::EnergyManagementSystemOutputVariable.new(model, global_enable)
global_enable_ems_output.setName(name + "_Enable_EMS_Value")
global_enable_ems_output.setUpdateFrequency("SystemTimestep")

global_enable_output = OpenStudio::Model::OutputVariable.new(global_enable_ems_output.nameString(), model)
global_enable_output.setName(name + "_Enable_Value")
global_enable_output.setReportingFrequency(freq)
global_enable_output.setKeyValue("EMS")
global_enable_output.setExportToBCVTB(true)
end

def create_output(model, var, key, name, freq)
new_var = OpenStudio::Model::OutputVariable.new(var, model)
new_var.setName(name)
new_var.setReportingFrequency(freq)
new_var.setKeyValue(key)
new_var.setExportToBCVTB(true)
end

# define what happens when the measure is run
def run(model, runner, user_arguments)
super(model, runner, user_arguments)

# Alfalfa inputs
# These can be set through the Alfalfa API, they will be available as OutputVariables
# in the simulation. Use them as you will
# Also see comments on the create_input method
create_input(model, "Test_Point_1", "Timestep")

# other OutputVariables might be custom python defined output variables,
# you should still be able to request them here, and as long as exportToBCVTB is true they will be available via Alfalfa

return true
end
end

# register the measure to be used by the application
AlfalfaVariables.new.registerWithApplication
54 changes: 54 additions & 0 deletions tests/api/models/small_office/measures/alfalfa_vars/measure.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,54 @@
<?xml version="1.0"?>
<measure>
<schema_version>3.0</schema_version>
<name>alfalfa_variables</name>
<uid>86d51823-68a5-478a-b60b-60891c3c9b5f</uid>
<version_id>5c94ef46-d8e9-4ae9-864e-d884aba51509</version_id>
<version_modified>20201216T214230Z</version_modified>
<xml_checksum>356BE47F</xml_checksum>
<class_name>AlfalfaVariables</class_name>
<display_name>AlfalfaVariables</display_name>
<description>Add custom variables for Alfalfa</description>
<modeler_description>Add EMS global variables required by Alfalfa</modeler_description>
<arguments />
<outputs />
<provenances />
<tags>
<tag>HVAC.HVAC Controls</tag>
</tags>
<attributes>
<attribute>
<name>Measure Type</name>
<value>ModelMeasure</value>
<datatype>string</datatype>
</attribute>
<attribute>
<name>Intended Software Tool</name>
<value>Apply Measure Now</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>
<version>
<software_program>OpenStudio</software_program>
<identifier>3.1.0</identifier>
<min_compatible>3.1.0</min_compatible>
</version>
<filename>measure.rb</filename>
<filetype>rb</filetype>
<usage_type>script</usage_type>
<checksum>A9E1EEF2</checksum>
</file>
</files>
</measure>
Loading

0 comments on commit 06b3193

Please sign in to comment.