Skip to content

Commit 7ac0078

Browse files
authored
Merge pull request #45 from BuildingPerformanceSimulation/update_ideal_loads_zone_hvac
update ideal_loads_zone_hvac
2 parents 26da3eb + 8c750b6 commit 7ac0078

3 files changed

Lines changed: 57 additions & 50 deletions

File tree

lib/measures/ideal_air_loads_zone_hvac/measure.rb

Lines changed: 21 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
# dependencies
22
require 'openstudio-standards'
33

4-
class IdealAirLoadsZoneHVAC < OpenStudio::Ruleset::ModelUserScript
4+
class IdealAirLoadsZoneHVAC < OpenStudio::Measure::ModelMeasure
55

66
# human readable name
77
def name
@@ -36,19 +36,19 @@ def arguments(model)
3636
end
3737

3838
# argument for system availability schedule
39-
availability_schedule = OpenStudio::Ruleset::OSArgument::makeChoiceArgument('availability_schedule', schedule_choices, true)
39+
availability_schedule = OpenStudio::Measure::OSArgument::makeChoiceArgument('availability_schedule', schedule_choices, true)
4040
availability_schedule.setDisplayName('System Availability Schedule:')
4141
availability_schedule.setDefaultValue('Default Always On')
4242
args << availability_schedule
4343

4444
# argument for heating availability schedule
45-
heating_availability_schedule = OpenStudio::Ruleset::OSArgument::makeChoiceArgument('heating_availability_schedule', schedule_choices, true)
45+
heating_availability_schedule = OpenStudio::Measure::OSArgument::makeChoiceArgument('heating_availability_schedule', schedule_choices, true)
4646
heating_availability_schedule.setDisplayName('Heating Availability Schedule:')
4747
heating_availability_schedule.setDefaultValue('Default Always On')
4848
args << heating_availability_schedule
4949

5050
# argument for cooling availability schedule
51-
cooling_availability_schedule = OpenStudio::Ruleset::OSArgument::makeChoiceArgument('cooling_availability_schedule', schedule_choices, true)
51+
cooling_availability_schedule = OpenStudio::Measure::OSArgument::makeChoiceArgument('cooling_availability_schedule', schedule_choices, true)
5252
cooling_availability_schedule.setDisplayName('Cooling Availability Schedule:')
5353
cooling_availability_schedule.setDefaultValue('Default Always On')
5454
args << cooling_availability_schedule
@@ -59,7 +59,7 @@ def arguments(model)
5959
choices << 'LimitFlowRate'
6060
choices << 'LimitCapacity'
6161
choices << 'LimitFlowRateAndCapacity'
62-
heating_limit_type = OpenStudio::Ruleset::OSArgument::makeChoiceArgument('heating_limit_type', choices, true)
62+
heating_limit_type = OpenStudio::Measure::OSArgument::makeChoiceArgument('heating_limit_type', choices, true)
6363
heating_limit_type.setDisplayName('Heating Limit Type:')
6464
heating_limit_type.setDefaultValue('NoLimit')
6565
args << heating_limit_type
@@ -70,7 +70,7 @@ def arguments(model)
7070
choices << 'LimitFlowRate'
7171
choices << 'LimitCapacity'
7272
choices << 'LimitFlowRateAndCapacity'
73-
cooling_limit_type = OpenStudio::Ruleset::OSArgument::makeChoiceArgument('cooling_limit_type', choices, true)
73+
cooling_limit_type = OpenStudio::Measure::OSArgument::makeChoiceArgument('cooling_limit_type', choices, true)
7474
cooling_limit_type.setDisplayName('Cooling Limit Type:')
7575
cooling_limit_type.setDefaultValue('NoLimit')
7676
args << cooling_limit_type
@@ -81,13 +81,13 @@ def arguments(model)
8181
choices << 'ConstantSensibleHeatRatio'
8282
choices << 'Humidistat'
8383
choices << 'ConstantSupplyHumidityRatio'
84-
dehumid_type = OpenStudio::Ruleset::OSArgument::makeChoiceArgument('dehumid_type', choices, true)
84+
dehumid_type = OpenStudio::Measure::OSArgument::makeChoiceArgument('dehumid_type', choices, true)
8585
dehumid_type.setDisplayName('Dehumidification Control:')
8686
dehumid_type.setDefaultValue('ConstantSensibleHeatRatio')
8787
args << dehumid_type
8888

8989
# argument for Cooling Sensible Heat Ratio
90-
cooling_sensible_heat_ratio = OpenStudio::Ruleset::OSArgument::makeDoubleArgument('cooling_sensible_heat_ratio', true)
90+
cooling_sensible_heat_ratio = OpenStudio::Measure::OSArgument::makeDoubleArgument('cooling_sensible_heat_ratio', true)
9191
cooling_sensible_heat_ratio.setDisplayName('Cooling Sensible Heat Ratio')
9292
cooling_sensible_heat_ratio.setDefaultValue(0.7)
9393
args << cooling_sensible_heat_ratio
@@ -97,19 +97,19 @@ def arguments(model)
9797
choices << 'None'
9898
choices << 'Humidistat'
9999
choices << 'ConstantSupplyHumidityRatio'
100-
humid_type = OpenStudio::Ruleset::OSArgument::makeChoiceArgument('humid_type', choices, true)
100+
humid_type = OpenStudio::Measure::OSArgument::makeChoiceArgument('humid_type', choices, true)
101101
humid_type.setDisplayName('Humidification Control:')
102102
humid_type.setDefaultValue('None')
103103
args << humid_type
104104

105105
# argument for Design Specification Outdoor Air
106-
include_outdoor_air = OpenStudio::Ruleset::OSArgument::makeBoolArgument('include_outdoor_air', true)
106+
include_outdoor_air = OpenStudio::Measure::OSArgument::makeBoolArgument('include_outdoor_air', true)
107107
include_outdoor_air.setDisplayName('Include Outdoor Air Ventilation?:')
108108
include_outdoor_air.setDefaultValue(true)
109109
args << include_outdoor_air
110110

111111
# argument for Demand Controlled Ventilation
112-
enable_dcv = OpenStudio::Ruleset::OSArgument::makeBoolArgument('enable_dcv', true)
112+
enable_dcv = OpenStudio::Measure::OSArgument::makeBoolArgument('enable_dcv', true)
113113
enable_dcv.setDisplayName('Enable Demand Controlled Ventilation?:')
114114
enable_dcv.setDefaultValue(false)
115115
args << enable_dcv
@@ -119,7 +119,7 @@ def arguments(model)
119119
choices << 'NoEconomizer'
120120
choices << 'DifferentialDryBulb'
121121
choices << 'DifferentialEnthalpy'
122-
economizer_type = OpenStudio::Ruleset::OSArgument::makeChoiceArgument('economizer_type', choices, true)
122+
economizer_type = OpenStudio::Measure::OSArgument::makeChoiceArgument('economizer_type', choices, true)
123123
economizer_type.setDisplayName('Economizer Type (Requires a Flow Rate Cooling Limit Type and Outdoor Air):')
124124
economizer_type.setDefaultValue('NoEconomizer')
125125
args << economizer_type
@@ -129,25 +129,25 @@ def arguments(model)
129129
choices << 'None'
130130
choices << 'Sensible'
131131
choices << 'Enthalpy'
132-
heat_recovery_type = OpenStudio::Ruleset::OSArgument::makeChoiceArgument('heat_recovery_type', choices, true)
132+
heat_recovery_type = OpenStudio::Measure::OSArgument::makeChoiceArgument('heat_recovery_type', choices, true)
133133
heat_recovery_type.setDisplayName('Heat Recovery Type (Requires Outdoor Air):')
134134
heat_recovery_type.setDefaultValue('None')
135135
args << heat_recovery_type
136136

137137
# argument for Heat Recovery Sensible Effectiveness
138-
sensible_effectiveness = OpenStudio::Ruleset::OSArgument::makeDoubleArgument('sensible_effectiveness', true)
138+
sensible_effectiveness = OpenStudio::Measure::OSArgument::makeDoubleArgument('sensible_effectiveness', true)
139139
sensible_effectiveness.setDisplayName('Heat Recovery Sensible Effectiveness')
140140
sensible_effectiveness.setDefaultValue(0.7)
141141
args << sensible_effectiveness
142142

143143
# argument for Heat Recovery Latent Effectiveness
144-
latent_effectiveness = OpenStudio::Ruleset::OSArgument::makeDoubleArgument('latent_effectiveness', true)
144+
latent_effectiveness = OpenStudio::Measure::OSArgument::makeDoubleArgument('latent_effectiveness', true)
145145
latent_effectiveness.setDisplayName('Heat Recovery Latent Effectiveness')
146146
latent_effectiveness.setDefaultValue(0.65)
147147
args << latent_effectiveness
148148

149149
# add output meter
150-
add_meters = OpenStudio::Ruleset::OSArgument.makeBoolArgument('add_meters',true)
150+
add_meters = OpenStudio::Measure::OSArgument.makeBoolArgument('add_meters',true)
151151
add_meters.setDisplayName('Add Meter:Custom and Output:Meter objects to sum ZoneHVAC:IdealLoadsAirSystem variables?')
152152
add_meters.setDefaultValue(true)
153153
args << add_meters
@@ -159,7 +159,7 @@ def arguments(model)
159159
def run(model, runner, user_arguments)
160160
super(model, runner, user_arguments)
161161

162-
# use the built-in error checking
162+
# use the built-in error checking
163163
if not runner.validateUserArguments(arguments(model), user_arguments)
164164
return false
165165
end
@@ -184,7 +184,7 @@ def run(model, runner, user_arguments)
184184
latent_effectiveness = runner.getDoubleArgumentValue('latent_effectiveness', user_arguments)
185185
add_meters = runner.getBoolArgumentValue('add_meters', user_arguments)
186186

187-
# check which zone already include ideal air loads
187+
# check which zone already include ideal air loads
188188
existing_ideal_loads = model.getZoneHVACIdealLoadsAirSystems
189189
runner.registerInitialCondition("The model has #{existing_ideal_loads.size} ideal air loads objects.")
190190

@@ -193,13 +193,13 @@ def run(model, runner, user_arguments)
193193

194194
# remove existing HVAC
195195
runner.registerInfo('Removing existing HVAC systems from the model')
196-
std.remove_HVAC(model)
196+
std.remove_hvac(model)
197197

198198
# add zone hvac ideal load air system objects
199199
conditioned_zones = []
200200
model.getThermalZones.each do |zone|
201-
next if std.thermal_zone_plenum?(zone)
202-
next if !std.thermal_zone_heated?(zone) && !std.thermal_zone_cooled?(zone)
201+
next if OpenstudioStandards::ThermalZone.thermal_zone_plenum?(zone)
202+
next if !OpenstudioStandards::ThermalZone.thermal_zone_heated?(zone) && !OpenstudioStandards::ThermalZone.thermal_zone_cooled?(zone)
203203
conditioned_zones << zone
204204
end
205205
ideal_loads_objects = std.model_add_ideal_air_loads(model,

lib/measures/ideal_air_loads_zone_hvac/measure.xml

Lines changed: 29 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,10 @@
1+
<?xml version="1.0"?>
12
<measure>
2-
<schema_version>3.0</schema_version>
3+
<schema_version>3.1</schema_version>
34
<name>ideal_air_loads_zone_hvac</name>
45
<uid>9cdff3b9-7ce1-4982-b555-bb83c73727e4</uid>
5-
<version_id>2a56071b-8455-4a72-b78f-733240c202e8</version_id>
6-
<version_modified>20190325T222118Z</version_modified>
6+
<version_id>60fde288-f333-48dd-8712-fdd18b02cc8b</version_id>
7+
<version_modified>2024-08-30T16:00:45Z</version_modified>
78
<xml_checksum>1423DDF2</xml_checksum>
89
<class_name>IdealAirLoadsZoneHVAC</class_name>
910
<display_name>Ideal Air Loads Zone HVAC</display_name>
@@ -275,8 +276,8 @@
275276
</choices>
276277
</argument>
277278
</arguments>
278-
<outputs/>
279-
<provenances/>
279+
<outputs />
280+
<provenances />
280281
<tags>
281282
<tag>HVAC.Whole System</tag>
282283
</tags>
@@ -308,6 +309,29 @@
308309
</attribute>
309310
</attributes>
310311
<files>
312+
<file>
313+
<filename>LICENSE.md</filename>
314+
<filetype>md</filetype>
315+
<usage_type>license</usage_type>
316+
<checksum>E7161B14</checksum>
317+
</file>
318+
<file>
319+
<version>
320+
<software_program>OpenStudio</software_program>
321+
<identifier>3.8.0</identifier>
322+
<min_compatible>3.8.0</min_compatible>
323+
</version>
324+
<filename>measure.rb</filename>
325+
<filetype>rb</filetype>
326+
<usage_type>script</usage_type>
327+
<checksum>4AD86E18</checksum>
328+
</file>
329+
<file>
330+
<filename>IdealAirLoadsZoneHVAC_Test.rb</filename>
331+
<filetype>rb</filetype>
332+
<usage_type>test</usage_type>
333+
<checksum>17FF6A2D</checksum>
334+
</file>
311335
<file>
312336
<filename>office.osm</filename>
313337
<filetype>osm</filetype>
@@ -320,22 +344,5 @@
320344
<usage_type>test</usage_type>
321345
<checksum>57F7FB68</checksum>
322346
</file>
323-
<file>
324-
<filename>IdealAirLoadsZoneHVAC_Test.rb</filename>
325-
<filetype>rb</filetype>
326-
<usage_type>test</usage_type>
327-
<checksum>A1C814B9</checksum>
328-
</file>
329-
<file>
330-
<version>
331-
<software_program>OpenStudio</software_program>
332-
<identifier>2.7.0</identifier>
333-
<min_compatible>2.7.0</min_compatible>
334-
</version>
335-
<filename>measure.rb</filename>
336-
<filetype>rb</filetype>
337-
<usage_type>script</usage_type>
338-
<checksum>EEAE324E</checksum>
339-
</file>
340347
</files>
341348
</measure>

lib/measures/ideal_air_loads_zone_hvac/tests/IdealAirLoadsZoneHVAC_Test.rb

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
require 'openstudio'
2-
require 'openstudio/ruleset/ShowRunnerOutput'
2+
require 'openstudio/measure/ShowRunnerOutput'
33
require 'minitest/autorun'
44
require_relative '../measure.rb'
55
require 'fileutils'
@@ -48,7 +48,7 @@ def test_good_inputs
4848
measure = IdealAirLoadsZoneHVAC.new
4949

5050
# create an instance of a runner
51-
runner = OpenStudio::Ruleset::OSRunner.new
51+
runner = OpenStudio::Measure::OSRunner.new(OpenStudio::WorkflowJSON.new)
5252

5353
# load the test model
5454
translator = OpenStudio::OSVersion::VersionTranslator.new
@@ -59,7 +59,7 @@ def test_good_inputs
5959

6060
# set argument values to good values
6161
arguments = measure.arguments(model)
62-
argument_map = OpenStudio::Ruleset::OSArgumentMap.new
62+
argument_map = OpenStudio::Measure::OSArgumentMap.new
6363

6464
availability_schedule = arguments[0].clone
6565
assert(availability_schedule.setValue("HVAC Availability Schedule"))
@@ -148,7 +148,7 @@ def test_bad_oa_input
148148
measure = IdealAirLoadsZoneHVAC.new
149149

150150
# create an instance of a runner
151-
runner = OpenStudio::Ruleset::OSRunner.new
151+
runner = OpenStudio::Measure::OSRunner.new(OpenStudio::WorkflowJSON.new)
152152

153153
# load the test model
154154
translator = OpenStudio::OSVersion::VersionTranslator.new
@@ -159,7 +159,7 @@ def test_bad_oa_input
159159

160160
# set argument values to good values
161161
arguments = measure.arguments(model)
162-
argument_map = OpenStudio::Ruleset::OSArgumentMap.new
162+
argument_map = OpenStudio::Measure::OSArgumentMap.new
163163

164164
availability_schedule = arguments[0].clone
165165
assert(availability_schedule.setValue("HVAC Availability Schedule"))
@@ -248,7 +248,7 @@ def test_no_oa_inputs
248248
measure = IdealAirLoadsZoneHVAC.new
249249

250250
# create an instance of a runner
251-
runner = OpenStudio::Ruleset::OSRunner.new
251+
runner = OpenStudio::Measure::OSRunner.new(OpenStudio::WorkflowJSON.new)
252252

253253
# load the test model
254254
translator = OpenStudio::OSVersion::VersionTranslator.new
@@ -259,7 +259,7 @@ def test_no_oa_inputs
259259

260260
# set argument values to good values
261261
arguments = measure.arguments(model)
262-
argument_map = OpenStudio::Ruleset::OSArgumentMap.new
262+
argument_map = OpenStudio::Measure::OSArgumentMap.new
263263

264264
availability_schedule = arguments[0].clone
265265
assert(availability_schedule.setValue("HVAC Availability Schedule"))

0 commit comments

Comments
 (0)