22# start the measure
33class AlfalfaSiteSensors < OpenStudio ::Measure ::EnergyPlusMeasure
44
5+
6+ FuelMeter = Struct . new ( :fuel , :adjustment_factor )
7+
58 include OpenStudio ::Alfalfa ::EnergyPlusMixin
69 # human readable name
710 def name
@@ -26,9 +29,13 @@ def arguments(workspace)
2629 return args
2730 end
2831
29- def create_output_meter ( name )
32+ def create_output_meter ( name , adjustment_factor = 1 )
3033 sensor_name = "#{ create_ems_str ( name ) } _sensor"
3134 output_name = "#{ create_ems_str ( name ) } _output"
35+ adjusted_name = "#{ create_ems_str ( name ) } _sensor_adjusted"
36+ program_calling_manager_name = "#{ create_ems_str ( name ) } _calling_point"
37+ program_name = "#{ create_ems_str ( name ) } _program"
38+
3239 new_meter_string = "
3340 Output:Meter,
3441 #{ name } ;
@@ -45,7 +52,32 @@ def create_output_meter(name)
4552 new_sensor_object = OpenStudio ::IdfObject . load ( new_sensor_string ) . get
4653 @workspace . addObject ( new_sensor_object )
4754
48- create_ems_output_variable ( output_name , sensor_name )
55+ new_global_variable_string = "
56+ EnergyManagementSystem:GlobalVariable,
57+ #{ adjusted_name } ; !- Name
58+ "
59+
60+ new_global_variable_object = OpenStudio ::IdfObject . load ( new_global_variable_string ) . get
61+ @workspace . addObject ( new_global_variable_object )
62+
63+ new_program_string = "
64+ EnergyManagementSystem:Program,
65+ #{ program_name } , !- Name
66+ SET #{ adjusted_name } = #{ sensor_name } *#{ adjustment_factor } ;
67+ "
68+ new_program_object = OpenStudio ::IdfObject . load ( new_program_string ) . get
69+ @workspace . addObject ( new_program_object )
70+
71+ new_calling_manager_string = "
72+ EnergyManagementSystem:ProgramCallingManager,
73+ #{ program_calling_manager_name } , !- Name
74+ EndOfZoneTimestepAfterZoneReporting, !- EnergyPlus Model Calling Point
75+ #{ program_name } ;
76+ "
77+ new_calling_manager_object = OpenStudio ::IdfObject . load ( new_calling_manager_string ) . get
78+ @workspace . addObject ( new_calling_manager_object )
79+
80+ create_ems_output_variable ( output_name , adjusted_name )
4981 end
5082
5183 # define what happens when the measure is run
@@ -58,11 +90,11 @@ def run(workspace, runner, user_arguments)
5890 end
5991
6092 fuels = [
61- 'Electricity'
93+ FuelMeter . new ( 'Electricity' , 1.0 / 60 )
6294 ]
6395
6496 fuels . each do |fuel |
65- register_output ( create_output_meter ( "#{ fuel } :Facility" ) ) . display_name = "Whole Building #{ fuel } "
97+ register_output ( create_output_meter ( "#{ fuel . fuel } :Facility" , fuel . adjustment_factor ) ) . display_name = "Whole Building #{ fuel . fuel } "
6698 end
6799
68100 report_inputs_outputs
0 commit comments