openstudio-common-measures 0.12.3 → 0.13.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 6fc54ceaa02693faa0c67c4cd257777bbd28498d841a37aad3abcd944c5168ce
4
- data.tar.gz: f155ff913f9da9cbf00268c5fab4a9d8e29b6bfd843dd1a5a58c1cfbc8b12c43
3
+ metadata.gz: a1f2ca1aec36285d2410b717985e5ea6883e7415f3d3664219dab2c92288bade
4
+ data.tar.gz: d286c38f2287f1fb5136eb6e348f6e158dbeb9df056dca48d7668321ac1ba8ab
5
5
  SHA512:
6
- metadata.gz: aec3f379bf56b66205c93ca98ca32f0ec0ce56095a6e426cf68f9dada85bd41944faa72ef665c9b6e763a958c44157a833a8456041300690a40e03f33da7a5f2
7
- data.tar.gz: 8984854de6cec5eee0e528d2183a02727adcdae289d088e3874be74ba2bd2de178717adaefd33a304554c131d5d3b4b17ea3cae96503c9f71a7adfc6d8f6ec2b
6
+ metadata.gz: 5e42117348fcf33d322ff8f2ef9f6b58cb40dbe4d2ea594cc1486249691c09eb6b653194fcdb10ecccdfda4f6b9ae964a3fb0e5a80116c87b65ad0aadbbc85f2
7
+ data.tar.gz: 252e2a7f0ac9ceba93aba3e01a90a621fe7e59de22c746c46b2bd5bc8a8ef6694c753c8858a3e0fd64641ca8cdeb388a22a7e1b75eba67b5fe2814b6296f7a9a
data/.coverage ADDED
Binary file
@@ -12,12 +12,12 @@ jobs:
12
12
  S3_BUCKET: ext-gem-dashboard
13
13
 
14
14
  container: # Define the Docker container for the job. All subsequent steps run inside it.
15
- image: nrel/openstudio:3.10.0
15
+ image: nrel/openstudio:dev-3.11.0-rc3
16
16
  options: -u root -e "LANG=en_US.UTF-8" # These options are passed to the 'docker run' command internally
17
17
 
18
18
  steps:
19
19
  - name: Checkout Repository
20
- # The repository will be checked out inside the 'nrel/openstudio:3.10.0' container
20
+ # The repository will be checked out inside the 'nrel/openstudio:3.11.0' container
21
21
  uses: actions/checkout@v4 # Use v4 for better security and features
22
22
  with:
23
23
  submodules: true # Set to true if your repository uses Git submodules
@@ -39,7 +39,7 @@ jobs:
39
39
  apt-get install -y nodejs
40
40
 
41
41
  # Install AWS CLI v2
42
- curl "https://awscli.amazonaws.com/awscli-exe-linux-x86_64.zip" -o "awscliv2.zip"
42
+ curl --retry 5 --retry-connrefused "https://awscli.amazonaws.com/awscli-exe-linux-x86_64.zip" -o "awscliv2.zip"
43
43
  unzip awscliv2.zip
44
44
  ./aws/install
45
45
 
@@ -56,7 +56,7 @@ jobs:
56
56
  shell: bash # Specify the shell if needed, though bash is default for Ubuntu runners
57
57
  run: |
58
58
  # Fix git ownership issue in container
59
- git config --global --add safe.directory /__w/openstudio-load-flexibility-measures-gem/openstudio-load-flexibility-measures-gem
59
+ git config --global --add safe.directory /__w/openstudio-common-measures-gem/openstudio-common-measures-gem
60
60
 
61
61
  echo "OpenStudio Version: $(openstudio --version)"
62
62
  echo "Ruby Version: $(ruby -v)"
@@ -79,6 +79,7 @@ jobs:
79
79
  ls -al ./test # Verify the output directory exists and contains files
80
80
 
81
81
  - name: Configure AWS Credentials
82
+ if: success() || failure()
82
83
  # This step is crucial for authenticating with AWS S3
83
84
  uses: aws-actions/configure-aws-credentials@v4 # Use v4 for updated features
84
85
  with:
@@ -87,6 +88,7 @@ jobs:
87
88
  aws-region: ${{ secrets.AWS_DEFAULT_REGION }} # Replace with your AWS region, e.g., us-east-1
88
89
 
89
90
  - name: Sync files to S3 with branch and build in path
91
+ if: success() || failure()
90
92
  shell: bash
91
93
  run: |
92
94
  echo "Deploying to s3://${{ env.S3_BUCKET }}/${{ env.DEPLOY_PATH }}/"
@@ -102,7 +104,8 @@ jobs:
102
104
  echo dir_name=$dir_name >> $GITHUB_ENV # Save the directory name to an environment variable for later use
103
105
 
104
106
  - name: Archive static site as artifact
107
+ if: always()
105
108
  uses: actions/upload-artifact@v4
106
109
  with:
107
110
  name: static-html-artifact
108
- path: ${{ env.dir_name }} # Path should be relative to the GitHub workspace, which is shared with the container
111
+ path: ${{ env.dir_name }} # Path should be relative to the GitHub workspace, which is shared with the container
data/CHANGELOG.md CHANGED
@@ -1,5 +1,9 @@
1
1
  # OpenStudio Common Measures Gem
2
2
 
3
+ ## Version 0.13.0
4
+ - Updated dependency (openstudio-extension gem 0.9.3 to 0.9.7)
5
+ - Updated dependency (openstudio-standards gem 0.8.2 to 0.8.5)
6
+
3
7
  ## Version 0.12.3
4
8
  - Update dependency: `openstudio-extension` upgraded from `~> 0.9.2` to `~> 0.9.3`.
5
9
 
data/README.md CHANGED
@@ -38,6 +38,7 @@ bundle exec rake openstudio:test_with_openstudio
38
38
 
39
39
  |OpenStudio Common Measures Gem|OpenStudio|Ruby|
40
40
  |:--------------:|:----------:|:--------:|
41
+ | 0.13.0 | 3.11 | 3.2.2 |
41
42
  | 0.12.3 | 3.10 | 3.2.2 |
42
43
  | 0.12.2 | 3.10 | 3.2.2 |
43
44
  | 0.12.1 | 3.10 | 3.2.2 |
@@ -3,8 +3,8 @@
3
3
  <schema_version>3.1</schema_version>
4
4
  <name>generic_qaqc</name>
5
5
  <uid>d58d6b29-69ba-4915-b907-3c2c37ddb7c7</uid>
6
- <version_id>cd027531-07d3-47a6-a25d-19e8a28403ff</version_id>
7
- <version_modified>2025-08-08T03:48:28Z</version_modified>
6
+ <version_id>32960d7f-45bd-4502-acf7-841d0ea28524</version_id>
7
+ <version_modified>2026-06-08T06:43:45Z</version_modified>
8
8
  <xml_checksum>0A3BF61C</xml_checksum>
9
9
  <class_name>GenericQAQC</class_name>
10
10
  <display_name>Generic QAQC</display_name>
@@ -450,7 +450,7 @@
450
450
  <version>
451
451
  <software_program>OpenStudio</software_program>
452
452
  <identifier>2.0.0</identifier>
453
- <min_compatible>3.8.0</min_compatible>
453
+ <min_compatible>3.11.0</min_compatible>
454
454
  </version>
455
455
  <filename>measure.rb</filename>
456
456
  <filetype>rb</filetype>
@@ -521,13 +521,13 @@
521
521
  <filename>check_mech_sys_efficiency.rb</filename>
522
522
  <filetype>rb</filetype>
523
523
  <usage_type>resource</usage_type>
524
- <checksum>E470E5E3</checksum>
524
+ <checksum>366300C3</checksum>
525
525
  </file>
526
526
  <file>
527
527
  <filename>check_mech_sys_part_load_eff.rb</filename>
528
528
  <filetype>rb</filetype>
529
529
  <usage_type>resource</usage_type>
530
- <checksum>B6AC9F08</checksum>
530
+ <checksum>8366CC75</checksum>
531
531
  </file>
532
532
  <file>
533
533
  <filename>check_mech_sys_type.rb</filename>
@@ -234,7 +234,7 @@ module OsLib_QAQC
234
234
  if use_old_gem_code
235
235
  motor_bhp = component.brake_horsepower
236
236
  else
237
- motor_bhp = std.pump_brake_horsepower(component)
237
+ motor_bhp = OpenstudioStandards::HVAC.pump_get_brake_horsepower(component)
238
238
  end
239
239
  next if motor_bhp == 0.0
240
240
  if use_old_gem_code
@@ -260,7 +260,7 @@ module OsLib_QAQC
260
260
  if use_old_gem_code
261
261
  motor_bhp = component.brake_horsepower
262
262
  else
263
- motor_bhp = std.pump_brake_horsepower(component)
263
+ motor_bhp = OpenstudioStandards::HVAC.pump_get_brake_horsepower(component)
264
264
  end
265
265
  next if motor_bhp == 0.0
266
266
  if use_old_gem_code
@@ -59,7 +59,7 @@ module OsLib_QAQC
59
59
  # get curve and evaluate
60
60
  electric_input_to_cooling_output_ratio_function_of_PLR = component.electricInputToCoolingOutputRatioFunctionOfPLR
61
61
  curve_40_pct = electric_input_to_cooling_output_ratio_function_of_PLR.evaluate(0.4)
62
- curve_80_pct = electric_input_to_cooling_output_ratio_function_of_PLR.evaluate(0.8)
62
+ curve_80_pct = electric_input_to_cooling_output_ratio_function_of_PLR.evaluate(0.8)
63
63
 
64
64
  # find ac properties
65
65
  if use_old_gem_code
@@ -110,7 +110,7 @@ module OsLib_QAQC
110
110
  if use_old_gem_code
111
111
  capacity_w = component.find_capacity
112
112
  else
113
- capacity_w = std.chiller_electric_eir_find_capacity(component)
113
+ capacity_w = OpenstudioStandards::HVAC.chiller_electric_get_capacity(component)
114
114
  end
115
115
  capacity_tons = OpenStudio.convert(capacity_w, 'W', 'ton').get
116
116
 
@@ -172,7 +172,7 @@ module OsLib_QAQC
172
172
  if use_old_gem_code
173
173
  capacity_w = component.find_capacity
174
174
  else
175
- capacity_w = std.coil_cooling_dx_single_speed_find_capacity(component)
175
+ capacity_w = OpenstudioStandards::HVAC.coil_cooling_dx_single_speed_get_capacity(component)
176
176
  end
177
177
  capacity_btu_per_hr = OpenStudio.convert(capacity_w, 'W', 'Btu/hr').get
178
178
 
@@ -183,7 +183,7 @@ module OsLib_QAQC
183
183
  ac_props = component.model.find_object($os_standards['unitary_acs'], search_criteria, capacity_btu_per_hr, Date.today)
184
184
  end
185
185
  else
186
- if std.coil_dx_heat_pump?(component)
186
+ if OpenstudioStandards::HVAC.coil_dx_heat_pump?(component)
187
187
  ac_props = std.model_find_object(std.standards_data['heat_pumps'], search_criteria, capacity_btu_per_hr, Date.today)
188
188
  else
189
189
  ac_props = std.model_find_object(std.standards_data['unitary_acs'], search_criteria, capacity_btu_per_hr, Date.today)
@@ -237,7 +237,7 @@ module OsLib_QAQC
237
237
  if use_old_gem_code
238
238
  capacity_w = component.find_capacity
239
239
  else
240
- capacity_w = std.coil_cooling_dx_two_speed_find_capacity(component)
240
+ capacity_w = OpenstudioStandards::HVAC.coil_cooling_dx_two_speed_get_capacity(component)
241
241
  end
242
242
  capacity_btu_per_hr = OpenStudio.convert(capacity_w, 'W', 'Btu/hr').get
243
243
 
@@ -294,7 +294,7 @@ module OsLib_QAQC
294
294
  if use_old_gem_code
295
295
  capacity_w = component.find_capacity
296
296
  else
297
- capacity_w = std.coil_heating_dx_single_speed_find_capacity(component)
297
+ capacity_w = OpenstudioStandards::HVAC.coil_heating_dx_single_speed_get_capacity(component)
298
298
  end
299
299
  capacity_btu_per_hr = OpenStudio.convert(capacity_w, 'W', 'Btu/hr').get
300
300
 
@@ -387,7 +387,7 @@ module OsLib_QAQC
387
387
  if use_old_gem_code
388
388
  target_fan.set_control_type('Multi Zone VAV with Static Pressure Reset')
389
389
  else
390
- std.fan_variable_volume_set_control_type(target_fan, 'Multi Zone VAV with VSD and Static Pressure Reset')
390
+ OpenstudioStandards::HVAC.fan_variable_volume_set_control_type(target_fan, control_type: 'Multi Zone VAV with VSD and Static Pressure Reset')
391
391
  end
392
392
 
393
393
  # get coeficents for fan
@@ -3,8 +3,8 @@
3
3
  <schema_version>3.1</schema_version>
4
4
  <name>openstudio_results</name>
5
5
  <uid>a25386cd-60e4-46bc-8b11-c755f379d916</uid>
6
- <version_id>b5b4c945-c608-47fb-9596-08234e7c2a0f</version_id>
7
- <version_modified>2025-08-08T03:48:25Z</version_modified>
6
+ <version_id>29f574c5-6089-4ba8-8c56-7c3214b5944e</version_id>
7
+ <version_modified>2026-06-09T20:14:08Z</version_modified>
8
8
  <xml_checksum>557BF06F</xml_checksum>
9
9
  <class_name>OpenStudioResults</class_name>
10
10
  <display_name>OpenStudio Results</display_name>
@@ -797,13 +797,13 @@
797
797
  <filename>Siz.ChillerElectricEIR.rb</filename>
798
798
  <filetype>rb</filetype>
799
799
  <usage_type>resource</usage_type>
800
- <checksum>F2210A57</checksum>
800
+ <checksum>BBED4519</checksum>
801
801
  </file>
802
802
  <file>
803
803
  <filename>Siz.ChillerHeaterPerformanceElectricEIR.rb</filename>
804
804
  <filetype>rb</filetype>
805
805
  <usage_type>resource</usage_type>
806
- <checksum>1E0C0AD6</checksum>
806
+ <checksum>2E37D5CF</checksum>
807
807
  </file>
808
808
  <file>
809
809
  <filename>Siz.CoilCoolingDXMultiSpeed.rb</filename>
@@ -827,7 +827,7 @@
827
827
  <filename>Siz.CoilCoolingDXTwoSpeed.rb</filename>
828
828
  <filetype>rb</filetype>
829
829
  <usage_type>resource</usage_type>
830
- <checksum>E513D800</checksum>
830
+ <checksum>71E9191E</checksum>
831
831
  </file>
832
832
  <file>
833
833
  <filename>Siz.CoilCoolingDXTwoStageWithHumidityControlMode.rb</filename>
@@ -1127,7 +1127,7 @@
1127
1127
  <filename>Siz.FanSystemModel.rb</filename>
1128
1128
  <filetype>rb</filetype>
1129
1129
  <usage_type>resource</usage_type>
1130
- <checksum>335E730E</checksum>
1130
+ <checksum>A4C0F52E</checksum>
1131
1131
  </file>
1132
1132
  <file>
1133
1133
  <filename>Siz.FanVariableVolume.rb</filename>
@@ -1397,7 +1397,7 @@
1397
1397
  <filename>Siz.ZoneHVACLowTempRadiantVarFlow.rb</filename>
1398
1398
  <filetype>rb</filetype>
1399
1399
  <usage_type>resource</usage_type>
1400
- <checksum>A760C489</checksum>
1400
+ <checksum>4F218062</checksum>
1401
1401
  </file>
1402
1402
  <file>
1403
1403
  <filename>Siz.ZoneHVACPackagedTerminalAirConditioner.rb</filename>
@@ -1475,7 +1475,7 @@
1475
1475
  <filename>os_lib_reporting.rb</filename>
1476
1476
  <filetype>rb</filetype>
1477
1477
  <usage_type>resource</usage_type>
1478
- <checksum>8DEAE75A</checksum>
1478
+ <checksum>BEF185BF</checksum>
1479
1479
  </file>
1480
1480
  <file>
1481
1481
  <filename>report.html.erb</filename>
@@ -58,11 +58,11 @@ class OpenStudio::Model::ChillerElectricEIR
58
58
  def performanceCharacteristics
59
59
  effs = []
60
60
  effs << [referenceCOP, 'Reference COP']
61
- # check os version
62
- if Gem::Version.new(OpenStudio.openStudioVersion) > Gem::Version.new('2.9.1')
63
- effs << [fractionofCompressorElectricConsumptionRejectedbyCondenser, 'Fraction of Compressor Electric Consumption Rejected by Condenser']
61
+ # changed in OpenStudio 2.9.1
62
+ if Gem::Version.new(OpenStudio.openStudioVersion) < Gem::Version.new('2.9.1')
63
+ effs << [compressorMotorEfficiency, 'Compressor Motor Efficiency']
64
64
  else
65
- effs << [compressorMotorEfficiency, 'Compressor Motor Fraction of Compressor Electric Consumption Rejected by Condenser']
65
+ effs << [fractionofCompressorElectricConsumptionRejectedbyCondenser, 'Fraction of Compressor Electric Consumption Rejected by Condenser']
66
66
  end
67
67
  return effs
68
68
  end
@@ -41,12 +41,7 @@ class OpenStudio::Model::ChillerHeaterPerformanceElectricEIR
41
41
  def performanceCharacteristics
42
42
  effs = []
43
43
  effs << [referenceCoolingModeCOP, 'Reference Cooling Mode COP']
44
- # check os version
45
- if Gem::Version.new(OpenStudio.openStudioVersion) > Gem::Version.new('2.9.1')
46
- effs << [fractionofCompressorElectricConsumptionRejectedbyCondenser, 'Fraction of Compressor Electric Consumption Rejected by Condenser']
47
- else
48
- effs << [compressorMotorEfficiency, 'Compressor Motor Fraction of Compressor Electric Consumption Rejected by Condenser']
49
- end
44
+ effs << [compressorMotorEfficiency, 'Compressor Motor Efficiency']
50
45
  return effs
51
46
  end
52
47
  end
@@ -46,5 +46,6 @@ class OpenStudio::Model::CoilCoolingDXTwoSpeed
46
46
  effs << [highSpeedEvaporativeCondenserEffectiveness, 'High Speed Evaporative Condenser Effectiveness']
47
47
  effs << [lowSpeedEvaporativeCondenserEffectiveness, 'Low Speed Evaporative Condenser Effectiveness']
48
48
  end
49
+ return effs
49
50
  end
50
51
  end
@@ -5,15 +5,15 @@
5
5
 
6
6
  class OpenStudio::Model::FanSystemModel
7
7
  def maxAirFlowRate
8
- if designMaximumFlowRate.is_initialized
9
- designMaximumFlowRate
8
+ if designMaximumAirFlowRate.is_initialized
9
+ designMaximumAirFlowRate
10
10
  else
11
- autosizedDesignMaximumFlowRate
11
+ autosizedDesignMaximumAirFlowRate
12
12
  end
13
13
  end
14
14
 
15
15
  def maxAirFlowRateAutosized
16
- if designMaximumFlowRate.is_initialized
16
+ if designMaximumAirFlowRate.is_initialized
17
17
  # Not autosized if hard size field value present
18
18
  return OpenStudio::OptionalBool.new(false)
19
19
  else
@@ -6,11 +6,11 @@
6
6
  class OpenStudio::Model::ZoneHVACLowTempRadiantVarFlow
7
7
  def maxWaterFlowRate
8
8
  vals = []
9
- if coolingCoil.maxWaterFlowRate.is_initialized
10
- vals << coolingCoil.maxWaterFlowRate.get
9
+ if coolingCoil.is_initialized && coolingCoil.get.maxWaterFlowRate.is_initialized
10
+ vals << coolingCoil.get.maxWaterFlowRate.get
11
11
  end
12
- if heatingCoil.maxWaterFlowRate.is_initialized
13
- vals << heatingCoil.maxWaterFlowRate.get
12
+ if heatingCoil.is_initialized && heatingCoil.get.maxWaterFlowRate.is_initialized
13
+ vals << heatingCoil.get.maxWaterFlowRate.get
14
14
  end
15
15
  if vals.size.zero?
16
16
  OpenStudio::OptionalDouble.new
@@ -20,9 +20,9 @@ class OpenStudio::Model::ZoneHVACLowTempRadiantVarFlow
20
20
  end
21
21
 
22
22
  def maxWaterFlowRateAutosized
23
- if coolingCoil.maxWaterFlowRate.is_initialized
23
+ if coolingCoil.is_initialized && coolingCoil.get.maxWaterFlowRate.is_initialized
24
24
  return OpenStudio::OptionalBool.new(false)
25
- elsif heatingCoil.maxWaterFlowRate.is_initialized
25
+ elsif heatingCoil.is_initialized && heatingCoil.get.maxWaterFlowRate.is_initialized
26
26
  return OpenStudio::OptionalBool.new(false)
27
27
  else
28
28
  return OpenStudio::OptionalBool.new(true)
@@ -31,8 +31,12 @@ class OpenStudio::Model::ZoneHVACLowTempRadiantVarFlow
31
31
 
32
32
  def performanceCharacteristics
33
33
  effs = []
34
- effs += heatingCoil.performanceCharacteristics
35
- effs += coolingCoil.performanceCharacteristics
34
+ if coolingCoil.is_initialized
35
+ effs += coolingCoil.get.performanceCharacteristics
36
+ end
37
+ if heatingCoil.is_initialized
38
+ effs += heatingCoil.get.performanceCharacteristics
39
+ end
36
40
  return effs
37
41
  end
38
42
  end
@@ -4216,7 +4216,7 @@ module OsLib_Reporting
4216
4216
  # loop through each year and record the cash flow
4217
4217
  for i in 0..(length_yrs - 1) do
4218
4218
  new_yr = base_yr + i
4219
- yr = "January #{new_yr.round}" # note: two spaces removed from earlier version of sql file
4219
+ yr = "January #{new_yr.round}" # note: two spaces removed from earlier version of sql file
4220
4220
  ann_cap_cash = 0.0
4221
4221
  ann_om_cash = 0.0
4222
4222
  ann_energy_cash = 0.0
@@ -4259,7 +4259,8 @@ module OsLib_Reporting
4259
4259
  ann_gas_cash += gas.get
4260
4260
  end
4261
4261
 
4262
- dist_htg_query = "SELECT Value FROM tabulardatawithstrings WHERE ReportName='Life-Cycle Cost Report' AND ReportForString='Entire Facility' AND TableName='Energy and Water Cost Cash Flows (Without Escalation)' AND RowName='#{yr}' AND ColumnName='DistrictHeating'"
4262
+ Gem::Version.new(OpenStudio.openStudioVersion) < Gem::Version.new('3.8.0') ? fuel_type_str_district_htg = 'DistrictHeating' : fuel_type_str_district_htg = 'DistrictHeatingWater'
4263
+ dist_htg_query = "SELECT Value FROM tabulardatawithstrings WHERE ReportName='Life-Cycle Cost Report' AND ReportForString='Entire Facility' AND TableName='Energy and Water Cost Cash Flows (Without Escalation)' AND RowName='#{yr}' AND ColumnName='#{fuel_type_str_district_htg}'"
4263
4264
  dist_htg = sqlFile.execAndReturnFirstDouble(dist_htg_query)
4264
4265
  if dist_htg.is_initialized
4265
4266
  ann_dist_htg_cash += dist_htg.get
@@ -277,11 +277,12 @@ class TariffSelectionBlock < OpenStudio::Measure::EnergyPlusMeasure
277
277
  end
278
278
 
279
279
  # disthtg tariff object
280
+ Gem::Version.new(OpenStudio.openStudioVersion) < Gem::Version.new('3.8.0') ? output_meter_name = 'DistrictHeating:Facility' : output_meter_name = 'DistrictHeatingWater:Facility'
280
281
  if args['disthtg_rate'] > 0
281
282
  new_object_string = "
282
283
  UtilityCost:Tariff,
283
- DistrictHeating Tariff, !- Name
284
- DistrictHeating:Facility, !- Output Meter Name
284
+ DistrictHeatingWater Tariff, !- Name
285
+ #{output_meter_name}, !- Output Meter Name
285
286
  Therm, !- Conversion Factor Choice
286
287
  , !- Energy Conversion Factor
287
288
  , !- Demand Conversion Factor
@@ -296,8 +297,8 @@ class TariffSelectionBlock < OpenStudio::Measure::EnergyPlusMeasure
296
297
  # make UtilityCost:Charge:Simple objects for disthtg
297
298
  new_object_string = "
298
299
  UtilityCost:Charge:Simple,
299
- DistrictHeatingTariffEnergyCharge, !- Name
300
- DistrictHeating Tariff, !- Tariff Name
300
+ DistrictHeatingWaterTariffEnergyCharge, !- Name
301
+ DistrictHeatingWater Tariff, !- Tariff Name
301
302
  totalEnergy, !- Source Variable
302
303
  Annual, !- Season
303
304
  EnergyCharges, !- Category Variable Name
@@ -3,8 +3,8 @@
3
3
  <schema_version>3.1</schema_version>
4
4
  <name>tariff_selection_block</name>
5
5
  <uid>42e9f831-f39a-4709-a79b-41db49c94f8c</uid>
6
- <version_id>485c76ca-98af-49e4-919c-67fb4adff2d8</version_id>
7
- <version_modified>2025-08-01T14:35:30Z</version_modified>
6
+ <version_id>f8d68095-5e39-4738-9a7a-4f74d16c848b</version_id>
7
+ <version_modified>2026-06-09T20:14:22Z</version_modified>
8
8
  <xml_checksum>92578CE8</xml_checksum>
9
9
  <class_name>TariffSelectionBlock</class_name>
10
10
  <display_name> Tariff Selection-Block</display_name>
@@ -260,7 +260,7 @@
260
260
  <filename>measure.rb</filename>
261
261
  <filetype>rb</filetype>
262
262
  <usage_type>script</usage_type>
263
- <checksum>5685B81E</checksum>
263
+ <checksum>B8390C30</checksum>
264
264
  </file>
265
265
  <file>
266
266
  <filename>EnvelopeAndLoadTestModel_01.osm</filename>
@@ -255,11 +255,12 @@ class TariffSelectionFlat < OpenStudio::Measure::EnergyPlusMeasure
255
255
  end
256
256
 
257
257
  # disthtg tariff object
258
+ Gem::Version.new(OpenStudio.openStudioVersion) < Gem::Version.new('3.8.0') ? output_meter_name = 'DistrictHeating:Facility' : output_meter_name = 'DistrictHeatingWater:Facility'
258
259
  if args['disthtg_rate'] > 0
259
260
  new_object_string = "
260
261
  UtilityCost:Tariff,
261
- DistrictHeating Tariff, !- Name
262
- DistrictHeating:Facility, !- Output Meter Name
262
+ DistrictHeatingWater Tariff, !- Name
263
+ #{output_meter_name}, !- Output Meter Name
263
264
  Therm, !- Conversion Factor Choice
264
265
  , !- Energy Conversion Factor
265
266
  , !- Demand Conversion Factor
@@ -274,8 +275,8 @@ class TariffSelectionFlat < OpenStudio::Measure::EnergyPlusMeasure
274
275
  # make UtilityCost:Charge:Simple objects for disthtg
275
276
  new_object_string = "
276
277
  UtilityCost:Charge:Simple,
277
- DistrictHeatingTariffEnergyCharge, !- Name
278
- DistrictHeating Tariff, !- Tariff Name
278
+ DistrictHeatingWaterTariffEnergyCharge, !- Name
279
+ DistrictHeatingWater Tariff, !- Tariff Name
279
280
  totalEnergy, !- Source Variable
280
281
  Annual, !- Season
281
282
  EnergyCharges, !- Category Variable Name
@@ -3,8 +3,8 @@
3
3
  <schema_version>3.1</schema_version>
4
4
  <name>tariff_selection_flat</name>
5
5
  <uid>539c3e8e-6c41-4f50-ac61-6cbbf1ee1b55</uid>
6
- <version_id>90dae49f-fb67-46eb-96fa-0560a97071a6</version_id>
7
- <version_modified>2025-08-01T14:35:32Z</version_modified>
6
+ <version_id>b67f0e4d-c743-4ba2-a79a-462f92224860</version_id>
7
+ <version_modified>2026-06-09T20:14:32Z</version_modified>
8
8
  <xml_checksum>FBDC6D11</xml_checksum>
9
9
  <class_name>TariffSelectionFlat</class_name>
10
10
  <display_name>Tariff Selection-Flat</display_name>
@@ -236,7 +236,7 @@
236
236
  <filename>measure.rb</filename>
237
237
  <filetype>rb</filetype>
238
238
  <usage_type>script</usage_type>
239
- <checksum>AE5AA325</checksum>
239
+ <checksum>568C953A</checksum>
240
240
  </file>
241
241
  <file>
242
242
  <filename>EnvelopeAndLoadTestModel_01.osm</filename>
@@ -464,11 +464,12 @@ class TariffSelectionTimeAndDateDependant < OpenStudio::Measure::EnergyPlusMeasu
464
464
  end
465
465
 
466
466
  # disthtg tariff object
467
+ Gem::Version.new(OpenStudio.openStudioVersion) < Gem::Version.new('3.8.0') ? output_meter_name = 'DistrictHeating:Facility' : output_meter_name = 'DistrictHeatingWater:Facility'
467
468
  if args['disthtg_rate'] > 0
468
469
  new_object_string = "
469
470
  UtilityCost:Tariff,
470
- DistrictHeating Tariff, !- Name
471
- DistrictHeating:Facility, !- Output Meter Name
471
+ DistrictHeatingWater Tariff, !- Name
472
+ #{output_meter_name}, !- Output Meter Name
472
473
  Therm, !- Conversion Factor Choice
473
474
  , !- Energy Conversion Factor
474
475
  , !- Demand Conversion Factor
@@ -483,8 +484,8 @@ class TariffSelectionTimeAndDateDependant < OpenStudio::Measure::EnergyPlusMeasu
483
484
  # make UtilityCost:Charge:Simple objects for disthtg
484
485
  new_object_string = "
485
486
  UtilityCost:Charge:Simple,
486
- DistrictHeatingTariffEnergyCharge, !- Name
487
- DistrictHeating Tariff, !- Tariff Name
487
+ DistrictHeatingWaterTariffEnergyCharge, !- Name
488
+ DistrictHeatingWater Tariff, !- Tariff Name
488
489
  totalEnergy, !- Source Variable
489
490
  Annual, !- Season
490
491
  EnergyCharges, !- Category Variable Name
@@ -3,8 +3,8 @@
3
3
  <schema_version>3.1</schema_version>
4
4
  <name>tariff_selection_time_and_date_dependant</name>
5
5
  <uid>a890e296-b357-432f-8d53-6428d9bf3c0a</uid>
6
- <version_id>1d80d526-4a93-4017-b973-c29d945233d4</version_id>
7
- <version_modified>2025-08-01T14:35:30Z</version_modified>
6
+ <version_id>d3aa2a06-c6b2-4736-96a3-766405ee546d</version_id>
7
+ <version_modified>2026-06-09T20:14:39Z</version_modified>
8
8
  <xml_checksum>135F7E88</xml_checksum>
9
9
  <class_name>TariffSelectionTimeAndDateDependant</class_name>
10
10
  <display_name>Tariff Selection-Time and Date Dependant</display_name>
@@ -290,7 +290,7 @@
290
290
  <filename>measure.rb</filename>
291
291
  <filetype>rb</filetype>
292
292
  <usage_type>script</usage_type>
293
- <checksum>D8EDD118</checksum>
293
+ <checksum>A248A50E</checksum>
294
294
  </file>
295
295
  <file>
296
296
  <filename>EnvelopeAndLoadTestModel_01.osm</filename>
@@ -5,6 +5,6 @@
5
5
 
6
6
  module OpenStudio
7
7
  module CommonMeasures
8
- VERSION = '0.12.3'.freeze
8
+ VERSION = '0.13.0'.freeze
9
9
  end
10
10
  end
@@ -29,8 +29,8 @@ Gem::Specification.new do |spec|
29
29
  spec.required_ruby_version = '~> 3.2.2'
30
30
 
31
31
  spec.add_dependency 'bundler', '~> 2.4.10'
32
- spec.add_dependency 'openstudio-extension', '~> 0.9.3'
33
- spec.add_dependency 'openstudio-standards', '0.8.2'
32
+ spec.add_dependency 'openstudio-extension', '~> 0.9.7'
33
+ spec.add_dependency 'openstudio-standards', '0.8.5'
34
34
 
35
35
  # if we need the following dependencies pinned,
36
36
  # let's set them in extension-gem for next release
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: openstudio-common-measures
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.12.3
4
+ version: 0.13.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - David Goldwasser
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: exe
11
11
  cert_chain: []
12
- date: 2025-08-08 00:00:00.000000000 Z
12
+ date: 2026-06-11 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: bundler
@@ -31,28 +31,28 @@ dependencies:
31
31
  requirements:
32
32
  - - "~>"
33
33
  - !ruby/object:Gem::Version
34
- version: 0.9.3
34
+ version: 0.9.7
35
35
  type: :runtime
36
36
  prerelease: false
37
37
  version_requirements: !ruby/object:Gem::Requirement
38
38
  requirements:
39
39
  - - "~>"
40
40
  - !ruby/object:Gem::Version
41
- version: 0.9.3
41
+ version: 0.9.7
42
42
  - !ruby/object:Gem::Dependency
43
43
  name: openstudio-standards
44
44
  requirement: !ruby/object:Gem::Requirement
45
45
  requirements:
46
46
  - - '='
47
47
  - !ruby/object:Gem::Version
48
- version: 0.8.2
48
+ version: 0.8.5
49
49
  type: :runtime
50
50
  prerelease: false
51
51
  version_requirements: !ruby/object:Gem::Requirement
52
52
  requirements:
53
53
  - - '='
54
54
  - !ruby/object:Gem::Version
55
- version: 0.8.2
55
+ version: 0.8.5
56
56
  - !ruby/object:Gem::Dependency
57
57
  name: multipart-post
58
58
  requirement: !ruby/object:Gem::Requirement
@@ -173,6 +173,7 @@ executables: []
173
173
  extensions: []
174
174
  extra_rdoc_files: []
175
175
  files:
176
+ - ".coverage"
176
177
  - ".github/workflows/test_with_openstudio.yml"
177
178
  - ".gitignore"
178
179
  - ".rspec"
@@ -891,7 +892,7 @@ licenses: []
891
892
  metadata:
892
893
  bug_tracker_uri: https://github.com/NREL/openstudio-common-measures-gem/issues
893
894
  changelog_uri: https://github.com/NREL/openstudio-common-measures-gem/blob/develop/CHANGELOG.md
894
- source_code_uri: https://github.com/NREL/openstudio-common-measures-gem/tree/v0.12.3
895
+ source_code_uri: https://github.com/NREL/openstudio-common-measures-gem/tree/v0.13.0
895
896
  post_install_message:
896
897
  rdoc_options: []
897
898
  require_paths: