openstudio-standards 0.1.9 → 0.1.10

Sign up to get free protection for your applications and to get access to all the features.
Files changed (35) hide show
  1. checksums.yaml +4 -4
  2. data/data/standards/OpenStudio_Standards.xlsx +0 -0
  3. data/lib/openstudio-standards/btap/compliance.rb +17 -7
  4. data/lib/openstudio-standards/btap/hvac.rb +6 -5
  5. data/lib/openstudio-standards/btap/measures.rb +137 -102
  6. data/lib/openstudio-standards/hvac_sizing/Siz.Model.rb +2 -2
  7. data/lib/openstudio-standards/prototypes/Prototype.FanVariableVolume.rb +1 -1
  8. data/lib/openstudio-standards/prototypes/Prototype.Model.rb +96 -31
  9. data/lib/openstudio-standards/prototypes/Prototype.Model.swh.rb +1 -1
  10. data/lib/openstudio-standards/prototypes/Prototype.building_specific_methods.rb +163 -0
  11. data/lib/openstudio-standards/prototypes/Prototype.full_service_restaurant.rb +54 -52
  12. data/lib/openstudio-standards/prototypes/Prototype.high_rise_apartment.rb +28 -26
  13. data/lib/openstudio-standards/prototypes/Prototype.hospital.rb +41 -39
  14. data/lib/openstudio-standards/prototypes/Prototype.large_hotel.rb +19 -17
  15. data/lib/openstudio-standards/prototypes/Prototype.large_office.rb +16 -13
  16. data/lib/openstudio-standards/prototypes/Prototype.medium_office.rb +13 -11
  17. data/lib/openstudio-standards/prototypes/Prototype.mid_rise_apartment.rb +33 -31
  18. data/lib/openstudio-standards/prototypes/Prototype.outpatient.rb +66 -64
  19. data/lib/openstudio-standards/prototypes/Prototype.primary_school.rb +8 -88
  20. data/lib/openstudio-standards/prototypes/Prototype.quick_service_restaurant.rb +54 -52
  21. data/lib/openstudio-standards/prototypes/Prototype.retail_standalone.rb +13 -11
  22. data/lib/openstudio-standards/prototypes/Prototype.retail_stripmall.rb +15 -13
  23. data/lib/openstudio-standards/prototypes/Prototype.secondary_school.rb +11 -9
  24. data/lib/openstudio-standards/prototypes/Prototype.small_hotel.rb +13 -11
  25. data/lib/openstudio-standards/prototypes/Prototype.small_office.rb +7 -5
  26. data/lib/openstudio-standards/prototypes/Prototype.utilities.rb +18 -13
  27. data/lib/openstudio-standards/prototypes/Prototype.warehouse.rb +11 -9
  28. data/lib/openstudio-standards/standards/Standards.AirLoopHVAC.rb +23 -12
  29. data/lib/openstudio-standards/standards/Standards.Fan.rb +7 -4
  30. data/lib/openstudio-standards/standards/Standards.Model.rb +4 -4
  31. data/lib/openstudio-standards/standards/Standards.WaterHeaterMixed.rb +9 -4
  32. data/lib/openstudio-standards/utilities/simulation.rb +6 -1
  33. data/lib/openstudio-standards/version.rb +1 -1
  34. data/lib/openstudio-standards/weather/Weather.Model.rb +1 -1
  35. metadata +3 -2
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 7450bc1f7fafb6ea4c38f2460c91ce4b50881e0b
4
- data.tar.gz: baefac3f3a01a848385af2328ba6a75b24fd15b9
3
+ metadata.gz: b08625a687a26b2b2bd1bfb397a5d58a2a021d0b
4
+ data.tar.gz: b5f0a2617f203d619d52acff7ed23def375cf52f
5
5
  SHA512:
6
- metadata.gz: 3d5490ef495ac0e77d205668787e70870c0e89ad105d7a0a0161d3cc9a40dfb8758b16823124d44db928aebbd21e3826f26e6650ff165e7123e07a125936edb3
7
- data.tar.gz: 8262a4dbea3197b71ae721ce0508f5be19049df04fa0e9e10c6f94cec179e359e8dbcfd15c494c28fbe21cb5210d8734cf515050519c9cb5298c6bcff8473a28
6
+ metadata.gz: 46a1fdba2ba4f46244127348a3f80f7512e7baf02121d182fabdb22e3252ed981db0ff0c1e9a4388e2e39281f777ad95330bbed2e94664dafdd4b9ae5193a640
7
+ data.tar.gz: 932107495b5cb807f3c48f8e229bfa2f2b78c7e72baddf4466eb7516a839162bb4ba0154872bfac59f9f39e08d2b2602eec6f93fbf380edbd0dc2ce61f9533e7
@@ -608,7 +608,7 @@ module BTAP
608
608
 
609
609
 
610
610
 
611
- def self.necb_spacetype_system_selection(model, heatingDesignLoad = nil,coolingDesignLoad = nil, runner = nil )
611
+ def self.necb_spacetype_system_selection( model, heatingDesignLoad = nil,coolingDesignLoad = nil, runner = nil )
612
612
  spacezoning_data = Struct.new(
613
613
  :space, # the space object
614
614
  :space_name, # the space name
@@ -651,8 +651,9 @@ module BTAP
651
651
  space_system_index = nil
652
652
  else
653
653
  space_type_property = space.model.find_object($os_standards["space_types"], { "template" => 'NECB 2011', "space_type" => space.spaceType.get.standardsSpaceType.get,"building_type" => space.spaceType.get.standardsBuildingType.get })
654
+ raise("could not find necb system selection type for space: #{space.name} and spacetype #{space.spaceType.get.standardsSpaceType.get}") if space_type_property.nil?
654
655
  necb_hvac_system_selection_type = space_type_property['necb_hvac_system_selection_type']
655
- raise("could not find necb system selection type for space: #{space.get.name}") if space_type_property.nil?
656
+
656
657
  end
657
658
 
658
659
 
@@ -734,7 +735,7 @@ module BTAP
734
735
  when "Warehouse Area - refrigerated"
735
736
  system = 5
736
737
  when "Wildcard"
737
- system = "Wildcard"
738
+ system = nil
738
739
  else
739
740
  raise ("NECB HVAC System Selection Type #{necb_hvac_system_selection_type} not valid")
740
741
  end
@@ -866,11 +867,14 @@ module BTAP
866
867
 
867
868
  #Deal with Wildcard spaces. Might wish to have logic to do coridors first.
868
869
  space_zoning_data_array.each do |space_zone_data|
869
- if space_zone_data.system_number == "Wildcard"
870
+ #If it is a wildcard space.
871
+ if space_zone_data.system_number.nil?
870
872
  #iterate through all adjacent spaces from largest shared wall area to smallest.
871
873
  # Set system type to match first space system that is not nil.
872
874
  space_zone_data.space.get_adjacent_spaces_with_shared_wall_areas(true).each do |adj_space|
875
+ #if there are no adjacent zones near a wh
873
876
  raise ("Could not determine adj space to space #{space_zone_data.space.name.get}") if adj_space.nil?
877
+
874
878
  adj_space_data = space_zoning_data_array.find { |data| data.space == adj_space[0] }
875
879
  if adj_space_data.system_number.nil?
876
880
  next
@@ -915,7 +919,7 @@ module BTAP
915
919
  #puts "Spacename: #{space_info.space.name}:#{space_info.space.spaceType.get.name}"
916
920
  if space_info.system_number == system_number and
917
921
  space_info.space.spaceType.get.name.get.include?("- undefined -") == false and
918
- space_info.story == story and
922
+ space_info.space.buildingStory.get == story and
919
923
  BTAP::Compliance::NECB2011::determine_necb_schedule_type(space_info.space).to_s == schedule_type and
920
924
  space_info.horizontal_placement == horizontal_placement
921
925
 
@@ -982,8 +986,14 @@ module BTAP
982
986
  thermal_zone_ideal_loads = OpenStudio::Model::ZoneHVACIdealLoadsAirSystem.new(model)
983
987
  thermal_zone_ideal_loads.addToThermalZone(thermal_zone)
984
988
  end
985
- end
986
- end
989
+ end
990
+ #Check to ensure that all spaces are assigned to zones except undefined ones.
991
+ model.getSpaces.each do |space|
992
+ if space.thermalZone.empty? and space.spaceType.get.name.get != 'Space Function - undefined -'
993
+ raise( "space #{space.name} with spacetype #{space.spaceType.get.name.get}" )
994
+ end
995
+ end
996
+ end #
987
997
  end
988
998
  end #Compliance
989
999
  end
@@ -3065,7 +3065,6 @@ module BTAP
3065
3065
  htg_coil.setMinimumOutdoorDryBulbTemperatureforCompressorOperation(-10.0)
3066
3066
  sizing_zone.setZoneHeatingSizingFactor(1.3)
3067
3067
  sizing_zone.setZoneCoolingSizingFactor(1.0)
3068
- puts 'test1111'
3069
3068
  else
3070
3069
  raise("#{heating_coil_type} is not a valid heating coil type.)")
3071
3070
  end
@@ -3106,8 +3105,8 @@ puts 'test1111'
3106
3105
  # supply air temperature based on the needs of this zone
3107
3106
  setpoint_mgr_single_zone_reheat = OpenStudio::Model::SetpointManagerSingleZoneReheat.new(model)
3108
3107
  setpoint_mgr_single_zone_reheat.setControlZone(zone)
3109
- setpoint_mgr_single_zone_reheat.setMinimumSupplyAirTemperature(12.8)
3110
- setpoint_mgr_single_zone_reheat.setMaximumSupplyAirTemperature(13.0)
3108
+ setpoint_mgr_single_zone_reheat.setMinimumSupplyAirTemperature(13)
3109
+ setpoint_mgr_single_zone_reheat.setMaximumSupplyAirTemperature(43)
3111
3110
  setpoint_mgr_single_zone_reheat.addToNode(air_loop.supplyOutletNode)
3112
3111
 
3113
3112
  # Create a diffuser and attach the zone/diffuser pair to the air loop
@@ -3441,8 +3440,9 @@ puts 'test1111'
3441
3440
  setpoint_mgr_single_zone_reheat = OpenStudio::Model::SetpointManagerSingleZoneReheat.new(model)
3442
3441
  setpoint_mgr_single_zone_reheat.setControlZone(zone)
3443
3442
  setpoint_mgr_single_zone_reheat.setMinimumSupplyAirTemperature(13.0)
3443
+ setpoint_mgr_single_zone_reheat.setMaximumSupplyAirTemperature(43.0)
3444
3444
  setpoint_mgr_single_zone_reheat.addToNode(air_loop.supplyOutletNode)
3445
-
3445
+
3446
3446
 
3447
3447
  #Create sensible heat exchanger
3448
3448
  # heat_exchanger = BTAP::Resources::HVAC::Plant::add_hrv(model)
@@ -3623,7 +3623,8 @@ puts 'test1111'
3623
3623
  #TODO: schedule based on whether the zone is occupied or not as stipulated in 8.4.4.22 of NECB2011
3624
3624
  min_flow_rate = 0.002*zone.floorArea
3625
3625
  vav_terminal.setFixedMinimumAirFlowRate(min_flow_rate)
3626
- vav_terminal.setMaximumReheatAirTemperature(43)
3626
+ vav_terminal.setMaximumReheatAirTemperature(43)
3627
+ vav_terminal.setDamperHeatingAction("Reverse")
3627
3628
 
3628
3629
  #Set zone baseboards
3629
3630
  if ( baseboard_type == "Electric") then
@@ -22,15 +22,109 @@
22
22
  # and open the template in the editor.
23
23
  require "#{File.dirname(__FILE__)}/btap"
24
24
 
25
+ class OSMArg
26
+ ARGUMENT_TYPES = [
27
+ "BOOL",
28
+ "STRING",
29
+ "INTEGER",
30
+ "FLOAT",
31
+ "STRINGCHOICE",
32
+ "WSCHOICE"
33
+ ]
34
+
35
+
36
+
37
+ attr_accessor :runner,
38
+ :variable_name,
39
+ :type,
40
+ :required,
41
+ :model_dependant,
42
+ :display_name,
43
+ :default_value,
44
+ :min_value,
45
+ :max_value,
46
+ :string_choice_array,
47
+ :os_object_type
48
+
49
+ def self.bool( variable_name,display_name,required,default_value )
50
+ raise "#{default_value} defaut value is not a bool." unless default_value.is_a?(Bool)
51
+ default_value.respond_to?(:to_s)
52
+ arg = OSMArg.new( "BOOL", variable_name, display_name, required)
53
+ arg.default_value = default_value
54
+ return arg
55
+ end
56
+
57
+ def self.string( variable_name,display_name,required,default_value )
58
+ raise "#{default_value} defaut value is not a string." unless default_value.respond_to?(:to_s)
59
+ arg = OSMArg.new( "STRING", variable_name, display_name, required)
60
+ arg.default_value = default_value
61
+ return arg
62
+ end
63
+
64
+ def self.integer( variable_name,display_name,required,default_value,min_value,max_value )
65
+ raise "#{default_value} defaut value is not a integer." unless default_value.respond_to?(:to_i)
66
+ arg = OSMArg.new( "INTEGER", variable_name, display_name, required)
67
+ arg.default_value = default_value
68
+ arg.min_value = min_value
69
+ arg.max_value = max_value
70
+ return arg
71
+ end
72
+
73
+ def self.float( variable_name, display_name, required,default_value,min_value, max_value )
74
+ raise "#{default_value} defaut value is not a float." unless default_value.respond_to?(:to_f)
75
+ arg = OSMArg.new( "INTEGER", variable_name, display_name, required)
76
+ arg.default_value = default_value
77
+ arg.min_value = min_value
78
+ arg.max_value = max_value
79
+ return arg
80
+ end
81
+
82
+ def self.choice(variable_name,display_name,required,default_value,string_choice_array)
83
+ raise "#{default_value} defaut value is not an array." unless default_value.is_a?(Array)
84
+ arg = OSMArg.new( "STRINGCHOICE", variable_name, display_name, required)
85
+ arg.default_value = default_value
86
+ arg.string_choice_array = string_choice_array
87
+ return arg
88
+ end
89
+
90
+ def self.wschoice( variable_name, display_name, required, default_value, os_object_type)
91
+ arg = OSMArg.new( "WSCHOICE", variable_name, display_name, required )
92
+ arg.default_value = default_value
93
+ arg.os_object_type = os_object_type
94
+ return arg
95
+ end
96
+
97
+ def initialize( type, variable_name, display_name, required )
98
+ self.type = type
99
+ self.variable_name = variable_name
100
+ self.display_name = display_name
101
+ self.required = required
102
+ self.model_dependant = false
103
+ if self.type == "WSCHOICE"
104
+ self.model_dependant = true
105
+ else
106
+ self.model_dependant = false
107
+ end
108
+ return self
109
+ end
110
+ end
111
+
112
+
113
+
25
114
 
26
115
 
27
116
  module BTAP
28
117
  module Measures
29
118
  module OSMeasures
119
+
120
+
121
+
122
+
30
123
  class BTAPModelUserScript < OpenStudio::Ruleset::ModelUserScript
31
124
  #if and E+ measure replace OpenStudio::Ruleset::ModelUserScript with OpenStudio::Ruleset::WorkspaceUserScript
32
125
  #Array containing information of all inputs required by measure.
33
126
  attr_accessor :argument_array_of_arrays
127
+ attr_accessor :argument_array
34
128
  attr_accessor :file
35
129
  #Name of measure
36
130
  #attr_accessor :name
@@ -38,6 +132,7 @@ module BTAP
38
132
  #if and E+ measure replace OpenStudio::Ruleset::ModelUserScript with OpenStudio::Ruleset::WorkspaceUserScript
39
133
  def name
40
134
  "BTAPModelUserScript"
135
+ OSMArgument.new
41
136
  end
42
137
 
43
138
  #this method will output the ruby macro to perform the change.
@@ -52,61 +147,6 @@ module BTAP
52
147
  BTAP::runner_register("MACRO", "\##{self.class.name} Measure End", runner)
53
148
  end
54
149
 
55
- def arguments(model,argument_array_of_arrays)
56
- #IF and E+ measure replace model with workspace as the argument
57
-
58
- #Create an argument vector
59
- args = OpenStudio::Ruleset::OSArgumentVector.new
60
-
61
- @argument_array_of_arrays = argument_array_of_arrays
62
-
63
- #***boilerplate code starts. Do not edit...
64
- # this converts the 2D array to a array hash for better readability and makes
65
- # column data accessible by name.
66
- @argument_array_of_hashes = []
67
- @argument_array_of_arrays[1..-1].each do |row| # [1..-1] skips the first row
68
- hsh = {}; @argument_array_of_arrays[0].each_with_index{ |header, idx| hsh[header] = row[idx] }
69
- @argument_array_of_hashes << hsh
70
- end
71
-
72
- #iterate through array of hashes and make arguments based on type and set
73
- # max and min values where applicable.
74
- @argument_array_of_hashes.each do |row|
75
- arg = nil
76
- case row["type"]
77
- when "BOOL"
78
- arg = OpenStudio::Ruleset::OSArgument::makeBoolArgument(row["variable_name"],row["required"],row["model_dependant"])
79
- when "STRING"
80
- arg = OpenStudio::Ruleset::OSArgument::makeStringArgument(row["variable_name"],row["required"],row["model_dependant"])
81
- when "INTEGER"
82
- arg = OpenStudio::Ruleset::OSArgument::makeIntegerArgument(row["variable_name"],row["required"],row["model_dependant"])
83
- arg.setMaxValue( row["max_value"].to_i ) unless row["min_value"].nil?
84
- arg.setMaxValue( row["max_value"].to_i ) unless row["max_value"].nil?
85
- when "FLOAT"
86
- arg = OpenStudio::Ruleset::OSArgument::makeDoubleArgument(row["variable_name"],row["required"],row["model_dependant"])
87
- arg.setMaxValue( row["max_value"].to_f ) unless row["min_value"].nil?
88
- arg.setMaxValue( row["max_value"].to_f ) unless row["max_value"].nil?
89
- when "STRINGCHOICE"
90
- # #add string choices one by one.
91
- chs = OpenStudio::StringVector.new
92
- row["string_choice_array"].each {|choice| chs << choice}
93
- arg = OpenStudio::Ruleset::OSArgument::makeChoiceArgument(row["variable_name"], chs,row["required"],row["model_dependant"])
94
- when "PATH"
95
- arg = OpenStudio::Ruleset::OSArgument::makePathArgument("alternativeModelPath",true,"osm")
96
- when "WSCHOICE"
97
- arg = OpenStudio::Ruleset::makeChoiceArgumentOfWorkspaceObjects( row["variable_name"], row["os_object_type"].to_IddObjectType , model, row["required"])
98
- end
99
- # #common argument aspects.
100
- unless arg.nil?
101
- arg.setDisplayName(row["display_name"])
102
- arg.setDefaultValue(row["default_value"]) unless row["default_value"].nil?
103
- args << arg
104
- end
105
- end
106
- return args
107
- end
108
-
109
-
110
150
  def set_user_arguments_and_apply(model,argument_values,runner)
111
151
  message = "Settting Arguments"
112
152
  runner.nil? ? puts(message) : runner.registerInfo(message)
@@ -158,48 +198,44 @@ module BTAP
158
198
  generate_ruby_macro(model,runner)
159
199
  return result
160
200
  end # end method run
161
-
162
- def argument_setter(args)
201
+
202
+ def argument_setter(model,args)
163
203
  #***boilerplate code starts. Do not edit...
164
- # this converts the 2D array to a array hash for better readability and makes
165
- # column data accessible by name.
166
- @argument_array_of_hashes = []
167
- @argument_array_of_arrays[1..-1].each do |row| # [1..-1] skips the first row
168
- hsh = {}; @argument_array_of_arrays[0].each_with_index{ |header, idx| hsh[header] = row[idx] }
169
- @argument_array_of_hashes << hsh
170
- end
204
+
171
205
 
172
206
  #iterate through array of hashes and make arguments based on type and set
173
207
  # max and min values where applicable.
174
- @argument_array_of_hashes.each do |row|
208
+ @argument_array.each do |row|
209
+ #strip out first char that contains the @ symbol
210
+ row.variable_name[0] = ''
175
211
  arg = nil
176
- case row["type"]
212
+ case row.type
177
213
  when "BOOL"
178
- arg = OpenStudio::Ruleset::OSArgument::makeBoolArgument(row["variable_name"],row["required"],row["model_dependant"])
214
+ arg = OpenStudio::Ruleset::OSArgument::makeBoolArgument(row.variable_name,row.required,row.model_dependant)
179
215
  when "STRING"
180
- arg = OpenStudio::Ruleset::OSArgument::makeStringArgument(row["variable_name"],row["required"],row["model_dependant"])
216
+ arg = OpenStudio::Ruleset::OSArgument::makeStringArgument(row.variable_name,row.required,row.model_dependant)
181
217
  when "INTEGER"
182
- arg = OpenStudio::Ruleset::OSArgument::makeIntegerArgument(row["variable_name"],row["required"],row["model_dependant"])
183
- arg.setMaxValue( row["max_value"].to_i ) unless row["min_value"].nil?
184
- arg.setMaxValue( row["max_value"].to_i ) unless row["max_value"].nil?
218
+ arg = OpenStudio::Ruleset::OSArgument::makeIntegerArgument(row.variable_name,row.required,row.model_dependant)
219
+ arg.setMaxValue( row.max_value.to_i ) unless row.min_value.nil?
220
+ arg.setMaxValue( row.max_value.to_i ) unless row.max_value.nil?
185
221
  when "FLOAT"
186
- arg = OpenStudio::Ruleset::OSArgument::makeDoubleArgument(row["variable_name"],row["required"],row["model_dependant"])
187
- arg.setMaxValue( row["max_value"].to_f ) unless row["min_value"].nil?
188
- arg.setMaxValue( row["max_value"].to_f ) unless row["max_value"].nil?
222
+ arg = OpenStudio::Ruleset::OSArgument::makeDoubleArgument(row.variable_name,row.required,row.model_dependant)
223
+ arg.setMaxValue( row.max_value.to_f ) unless row.min_value.nil?
224
+ arg.setMaxValue( row.max_value.to_f ) unless row.max_value.nil?
189
225
  when "STRINGCHOICE"
190
226
  # #add string choices one by one.
191
227
  chs = OpenStudio::StringVector.new
192
- row["string_choice_array"].each {|choice| chs << choice}
193
- arg = OpenStudio::Ruleset::OSArgument::makeChoiceArgument(row["variable_name"], chs,row["required"],row["model_dependant"])
228
+ row.string_choice_array.each {|choice| chs << choice}
229
+ arg = OpenStudio::Ruleset::OSArgument::makeChoiceArgument(row.variable_name, chs,row.required,row.model_dependant)
194
230
  when "PATH"
195
231
  arg = OpenStudio::Ruleset::OSArgument::makePathArgument("alternativeModelPath",true,"osm")
196
232
  when "WSCHOICE"
197
- arg = OpenStudio::Ruleset::makeChoiceArgumentOfWorkspaceObjects( row["variable_name"], row["os_object_type"].to_IddObjectType , model, row["required"])
233
+ arg = OpenStudio::Ruleset::makeChoiceArgumentOfWorkspaceObjects( row.variable_name, row.os_object_type.to_IddObjectType , model, row.required)
198
234
  end
199
235
  # #common argument aspects.
200
236
  unless arg.nil?
201
- arg.setDisplayName(row["display_name"])
202
- arg.setDefaultValue(row["default_value"]) unless row["default_value"].nil?
237
+ arg.setDisplayName(row.display_name)
238
+ arg.setDefaultValue(row.default_value) unless row.default_value.nil?
203
239
  args << arg
204
240
  end
205
241
  end
@@ -208,11 +244,11 @@ module BTAP
208
244
 
209
245
  def argument_getter(model, runner,user_arguments)
210
246
  @arg_table = []
211
- unless @argument_array_of_hashes == nil
212
- @argument_array_of_hashes.each do |row|
213
- name = row["variable_name"]
247
+ unless @argument_array == nil
248
+ @argument_array.each do |row|
249
+ name = row.variable_name
214
250
 
215
- case row["type"]
251
+ case row.type
216
252
  when "BOOL"
217
253
  value = runner.getBoolArgumentValue(name, user_arguments)
218
254
  instance_variable_set("@#{name}",value)
@@ -225,8 +261,8 @@ module BTAP
225
261
  value = runner.getIntegerArgumentValue(name, user_arguments)
226
262
  instance_variable_set("@#{name}",value)
227
263
  @arg_table << [name,value]
228
- if ( not row["min_value"].nil? and instance_variable_get("@#{name}") < row["min_value"] ) or ( not row["max_value"].nil? and instance_variable_get("@#{name}") > row["max_value"] )
229
- runner.registerError("#{row["display_name"]} must be greater than or equal to #{row["min_value"]} and less than or equal to #{row["max_value"]}. You entered #{instance_variable_get("@#{name}")}.")
264
+ if ( not row.min_value.nil? and instance_variable_get("@#{name}") < row.min_value ) or ( not row.max_value.nil? and instance_variable_get("@#{name}") > row.max_value )
265
+ runner.registerError("#{row.display_name} must be greater than or equal to #{row.min_value} and less than or equal to #{row.max_value}. You entered #{instance_variable_get("@#{name}")}.")
230
266
  return false
231
267
  end
232
268
  when "FLOAT"
@@ -234,8 +270,8 @@ module BTAP
234
270
  instance_variable_set("@#{name}",value)
235
271
  @arg_table << [name,value]
236
272
 
237
- if ( not row["min_value"].nil? and instance_variable_get("@#{name}") < row["min_value"] ) or ( not row["max_value"].nil? and instance_variable_get("@#{name}") > row["max_value"] )
238
- runner.registerError("#{row["display_name"]} must be greater than or equal to #{row["min_value"]} and less than or equal to #{row["max_value"]}. You entered #{instance_variable_get("@#{name}")}.")
273
+ if ( not row.min_value.nil? and instance_variable_get("@#{name}") < row.min_value ) or ( not row.max_value.nil? and instance_variable_get("@#{name}") > row.max_value )
274
+ runner.registerError("#{row.display_name} must be greater than or equal to #{row.min_value} and less than or equal to #{row.max_value}. You entered #{instance_variable_get("@#{name}")}.")
239
275
  return false
240
276
  end
241
277
  when "STRINGCHOICE"
@@ -254,7 +290,6 @@ module BTAP
254
290
  return @arg_table
255
291
  end
256
292
 
257
-
258
293
  end
259
294
  #Measure Template simplified.
260
295
  class TemplateModelMeasure < BTAPModelUserScript
@@ -265,17 +300,19 @@ module BTAP
265
300
 
266
301
  def arguments(model)
267
302
 
268
- #list of arguments as they will appear in the interface. They are available in the run command as @variable_name.
269
- @argument_array_of_arrays = [
270
- [ "variable_name", "type", "required", "model_dependant","display_name", "default_value", "min_value", "max_value", "string_choice_array", "os_object_type" ],
271
- [ "boolean_argument_name", "BOOL", true, false, "boolean interface name", false, nil, nil, nil, nil ],
272
- [ "string_argument_name", "STRING", true, false, "string interface name", "default", nil, nil, nil, nil ],
273
- [ "integer_argument_name", "INTEGER", true, false, "integer interface name(units)", 0, 0, 100, nil, nil ],
274
- [ "float_argument_name", "FLOAT", true, false, "float interface name(units)", 0.0, 0.0, 100.0, nil, nil ],
275
- [ "choice_argument_name", "STRINGCHOICE", true, false, "choice interface name", "choice1", nil, nil, ["choice1","choice2"], nil ],
276
- [ "ws_choice_argument_name","WSCHOICE", true, true, "wschoice interface name", nil, nil, nil, nil, "OS_ThermalZone" ]
277
- ]
278
- args = super(model,@argument_array_of_arrays)
303
+ #bool
304
+ @argument_array << OSMArgument.bool(variable_name,display_name,required,default_value)
305
+ #string
306
+ @argument_array << OSMArgument.string(variable_name,display_name,required,default_value)
307
+ #integer
308
+ @argument_array << OSMArgument.integer(variable_name,display_name,required,default_value,min_value,max_value)
309
+ #float
310
+ @argument_array << OSMArgument.float(variable_name,display_name,required,default_value,min_value,max_value)
311
+ #Choice
312
+ @argument_array << OSMArgument.choice(variable_name,display_name,required,default_value,string_choice_array)
313
+ #Workspace choice (using zones as an example)
314
+ @argument_array << OSMArgument.wschoice(variable_name,display_name,required,default_value,string_choice_array)
315
+ args = super(model,@argument_array)
279
316
  return args
280
317
  end
281
318
 
@@ -404,9 +441,7 @@ module BTAP
404
441
  end
405
442
  end
406
443
  end
407
- module EPMeasures
408
-
409
- end
444
+
410
445
  class CSV_Measures
411
446
  def initialize(
412
447
  csv_file,