urbanopt-reporting 1.0.0 → 1.2.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.
Files changed (52) hide show
  1. checksums.yaml +4 -4
  2. data/.github/workflows/nightly_ci_build.yml +1 -1
  3. data/CHANGELOG.md +9 -0
  4. data/CONTRIBUTING.md +3 -3
  5. data/Gemfile +1 -2
  6. data/LICENSE.md +1 -1
  7. data/Rakefile +1 -1
  8. data/doc_templates/LICENSE.md +1 -1
  9. data/doc_templates/copyright_erb.txt +1 -1
  10. data/doc_templates/copyright_js.txt +1 -1
  11. data/doc_templates/copyright_ruby.txt +1 -1
  12. data/docs/package.json +1 -1
  13. data/lib/measures/default_feature_reports/LICENSE.md +1 -1
  14. data/lib/measures/default_feature_reports/measure.rb +24 -11
  15. data/lib/measures/default_feature_reports/measure.xml +10 -4
  16. data/lib/measures/export_modelica_loads/LICENSE.md +1 -1
  17. data/lib/measures/export_modelica_loads/measure.rb +1 -1
  18. data/lib/measures/export_time_series_modelica/LICENSE.md +1 -1
  19. data/lib/measures/export_time_series_modelica/measure.rb +1 -1
  20. data/lib/measures/export_time_series_modelica/resources/os_lib_helper_methods.rb +1 -1
  21. data/lib/urbanopt/reporting/default_reports/construction_cost.rb +1 -1
  22. data/lib/urbanopt/reporting/default_reports/date.rb +1 -1
  23. data/lib/urbanopt/reporting/default_reports/distributed_generation.rb +46 -2
  24. data/lib/urbanopt/reporting/default_reports/end_use.rb +1 -1
  25. data/lib/urbanopt/reporting/default_reports/end_uses.rb +15 -8
  26. data/lib/urbanopt/reporting/default_reports/extension.rb +1 -1
  27. data/lib/urbanopt/reporting/default_reports/feature_report.rb +1 -1
  28. data/lib/urbanopt/reporting/default_reports/generator.rb +1 -1
  29. data/lib/urbanopt/reporting/default_reports/location.rb +1 -1
  30. data/lib/urbanopt/reporting/default_reports/logger.rb +1 -1
  31. data/lib/urbanopt/reporting/default_reports/power_distribution.rb +1 -1
  32. data/lib/urbanopt/reporting/default_reports/program.rb +1 -1
  33. data/lib/urbanopt/reporting/default_reports/qaqc_flags.rb +1 -1
  34. data/lib/urbanopt/reporting/default_reports/reporting_period.rb +10 -6
  35. data/lib/urbanopt/reporting/default_reports/scenario_power_distribution.rb +1 -1
  36. data/lib/urbanopt/reporting/default_reports/scenario_power_distribution_cost.rb +1 -1
  37. data/lib/urbanopt/reporting/default_reports/scenario_report.rb +1 -1
  38. data/lib/urbanopt/reporting/default_reports/schema/README.md +2 -1
  39. data/lib/urbanopt/reporting/default_reports/schema/scenario_csv_columns.txt +2 -1
  40. data/lib/urbanopt/reporting/default_reports/schema/scenario_schema.json +35 -3
  41. data/lib/urbanopt/reporting/default_reports/solar_pv.rb +1 -1
  42. data/lib/urbanopt/reporting/default_reports/storage.rb +1 -1
  43. data/lib/urbanopt/reporting/default_reports/thermal_storage.rb +1 -1
  44. data/lib/urbanopt/reporting/default_reports/timeseries_csv.rb +20 -15
  45. data/lib/urbanopt/reporting/default_reports/validator.rb +1 -1
  46. data/lib/urbanopt/reporting/default_reports/wind.rb +1 -1
  47. data/lib/urbanopt/reporting/default_reports.rb +1 -1
  48. data/lib/urbanopt/reporting/derived_extension.rb +1 -1
  49. data/lib/urbanopt/reporting/version.rb +2 -2
  50. data/lib/urbanopt/reporting.rb +1 -1
  51. data/urbanopt-reporting-gem.gemspec +7 -4
  52. metadata +52 -10
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 5257c2dff6587116ac76b99b71a41ab96e3166a207832311156dd528e0fa5ffa
4
- data.tar.gz: b1192e1e13941f89614c222897290763f97b14799f94b8e9422c39fc9c63ba8c
3
+ metadata.gz: aa7b49f39bc2a2498641f9ced12a7e56a27427a1b092977aad78233e9cf03b01
4
+ data.tar.gz: 203cd4d39d0cd44caad0111d6a82fc1c758f558559cf9311ce9083bca6084a44
5
5
  SHA512:
6
- metadata.gz: 2d320925b74222854cdbb9985580ededc332782b87e87aeb9f81df00cec088eccda2e3da954695c617256751e98a1da05766dd87c36341e9d7c9f5b1c3e2e49c
7
- data.tar.gz: 3839055fbd5ac8788d5f03c4290f6f59b97f2d0b7a0c60341701a41949e26781237720d884d39c80a250c965577f044a23f029343b7bde1792cb3586c5321556
6
+ metadata.gz: b7deaa287639975c21f7b58e05b42eea23bc0d686f61b5f356047acc08ce55d4cb8399463e056562c3d97b67c22aae8bcb1c3294ddfa802f577b95b750191ad3
7
+ data.tar.gz: ea954942db30ecd7967b128a86bc3703734285fc598918980d71d3ae4233a7913a8d3302fdefc3e03ce137d4b5ac8289e853bea76349cd86932623ed7a149cfa
@@ -19,7 +19,7 @@ jobs:
19
19
  weeknight-tests:
20
20
  runs-on: ubuntu-latest
21
21
  container:
22
- image: docker://nrel/openstudio:3.9.0
22
+ image: docker://nrel/openstudio:3.10.0
23
23
  steps:
24
24
  - uses: actions/checkout@v4
25
25
  - name: set git config options
data/CHANGELOG.md CHANGED
@@ -1,5 +1,14 @@
1
1
  # URBANopt Reporting Gem
2
2
 
3
+ ## Version 1.2.0
4
+
5
+ * Update copyrights, handle change from github.com/NREL to github.com/NatLabRockies
6
+ * Add lifecycle cost fields to scenario report for REopt cost analysis
7
+
8
+ ## Version 1.1.0
9
+
10
+ * Upgrade to OpenStudio 3.10
11
+
3
12
  ## Version 1.0.0
4
13
 
5
14
  * Upgrade to OpenStudio 3.9 and Ruby 3.2.2 by @vtnate in https://github.com/urbanopt/urbanopt-reporting-gem/pull/155
data/CONTRIBUTING.md CHANGED
@@ -10,7 +10,7 @@ The contribution process for URBANopt is composed of three steps:
10
10
 
11
11
  In order for us to distribute your code as part of URBANopt under the URBANopt SDK [license](https://github.com/urbanopt/urbanopt-reporting-gem/blob/develop/LICENSE.md), we’ll need your consent. An email acknowledging your understanding of these terms and agreeing to them is all that will be asked of any contributor. Send an email to the URBANopt project manager ([see below](#documentation) for the address) including the following text and a list of co-contributors (if any):
12
12
 
13
- *I agree to contribute to the URBANopt SDK. I agree to the following terms and conditions for my contributions: First, I agree that I am licensing the copyright to my contributions under the terms of the current URBANopt SDK license. Second, I hereby grant to Alliance for Sustainable Energy, LLC, to any successor manager and distributor of URBANopt SDK appointed by the U.S. Department of Energy, and to all recipients of a version of URBANopt SDK that includes my contributions, a non-exclusive, worldwide, royalty-free, irrevocable patent license under any patent claims owned by me, or owned by my employer and known to me, that are or will be,necessarily infringed upon by my contributions alone, or by combination of my contributions with the version of URBANopt SDK to which they are contributed, to make, have made, use, offer to sell, sell, import, and otherwise transfer any version of URBANopt SDK that includes my contributions, in source code and object code form. Third, I represent and warrant that I am authorized to make the contributions and grant the foregoing license(s). Additionally, if, to my knowledge, my employer has rights to intellectual property that covers my contributions, I represent and warrant that I have received permission to make these contributions and grant the foregoing license(s) on behalf of my employer.*
13
+ *I agree to contribute to the URBANopt SDK. I agree to the following terms and conditions for my contributions: First, I agree that I am licensing the copyright to my contributions under the terms of the current URBANopt SDK license. Second, I hereby grant to Alliance for Energy Innovation, LLC, to any successor manager and distributor of URBANopt SDK appointed by the U.S. Department of Energy, and to all recipients of a version of URBANopt SDK that includes my contributions, a non-exclusive, worldwide, royalty-free, irrevocable patent license under any patent claims owned by me, or owned by my employer and known to me, that are or will be,necessarily infringed upon by my contributions alone, or by combination of my contributions with the version of URBANopt SDK to which they are contributed, to make, have made, use, offer to sell, sell, import, and otherwise transfer any version of URBANopt SDK that includes my contributions, in source code and object code form. Third, I represent and warrant that I am authorized to make the contributions and grant the foregoing license(s). Additionally, if, to my knowledge, my employer has rights to intellectual property that covers my contributions, I represent and warrant that I have received permission to make these contributions and grant the foregoing license(s) on behalf of my employer.*
14
14
 
15
15
  Once we have your consent on file, you’ll only need to redo it if conditions change (e.g. a change of employer).
16
16
 
@@ -53,6 +53,6 @@ URBANopt Project Management\
53
53
  ben.polly@nrel.gov\
54
54
  (303) 384-7429
55
55
 
56
- URBANopt is funded by the U.S. Department of Energy (DOE) and managed by the National Renewable Energy Laboratory (NREL).
56
+ URBANopt is funded by the U.S. Department of Energy (DOE) and managed by the National Laboratory of the Rockies (NLR).
57
57
 
58
- URBANopt is developed in collaboration with NREL, LBNL, and private firms.
58
+ URBANopt is developed in collaboration with NLR, LBNL, and private firms.
data/Gemfile CHANGED
@@ -14,6 +14,5 @@ allow_local = ENV['FAVOR_LOCAL_GEMS']
14
14
  # if allow_local && File.exist?('../openstudio-extension-gem')
15
15
  # gem 'openstudio-extension', path: '../openstudio-extension-gem'
16
16
  # elsif allow_local
17
- # gem 'openstudio-extension', github: 'NREL/openstudio-extension-gem', branch: 'bundler-hack'
18
- # gem 'openstudio-extension', '~> 0.8.1'
17
+ # gem 'openstudio-extension', github: 'NatLabRockies/openstudio-extension-gem', branch: 'develop'
19
18
  # end
data/LICENSE.md CHANGED
@@ -1,4 +1,4 @@
1
- URBANopt (tm), Copyright (c) 2019-2024, Alliance for Sustainable Energy, LLC, and other
1
+ URBANopt (tm), Copyright (c) 2019-2026, Alliance for Energy Innovation, LLC, and other
2
2
  contributors. All rights reserved.
3
3
 
4
4
  Redistribution and use in source and binary forms, with or without modification,
data/Rakefile CHANGED
@@ -1,5 +1,5 @@
1
1
  # *********************************************************************************
2
- # URBANopt™, Copyright © Alliance for Sustainable Energy, LLC.
2
+ # URBANopt™, Copyright © Alliance for Energy Innovation, LLC.
3
3
  # See also https://github.com/urbanopt/urbanopt-reporting-gem/blob/develop/LICENSE.md
4
4
  # *********************************************************************************
5
5
 
@@ -1,4 +1,4 @@
1
- URBANopt (tm), Copyright (c) 2019-2024, Alliance for Sustainable Energy, LLC, and other
1
+ URBANopt (tm), Copyright (c) 2019-2026, Alliance for Energy Innovation, LLC, and other
2
2
  contributors. All rights reserved.
3
3
 
4
4
  Redistribution and use in source and binary forms, with or without modification,
@@ -1,6 +1,6 @@
1
1
  <%
2
2
  # *********************************************************************************
3
- # URBANopt (tm), Copyright (c) 2019-2024, Alliance for Sustainable Energy, LLC, and other
3
+ # URBANopt (tm), Copyright (c) 2019-2026, Alliance for Energy Innovation, LLC, and other
4
4
  # contributors. All rights reserved.
5
5
 
6
6
  # Redistribution and use in source and binary forms, with or without modification,
@@ -1,4 +1,4 @@
1
1
  /* @preserve
2
- * URBANopt (tm), Copyright (c) Alliance for Sustainable Energy, LLC.
2
+ * URBANopt (tm), Copyright (c) Alliance for Energy Innovation, LLC.
3
3
  * See also https://github.com/urbanopt/urbanopt-reporting-gem/blob/develop/LICENSE.md
4
4
  */
@@ -1,4 +1,4 @@
1
1
  # *********************************************************************************
2
- # URBANopt (tm), Copyright (c) Alliance for Sustainable Energy, LLC.
2
+ # URBANopt (tm), Copyright (c) Alliance for Energy Innovation, LLC.
3
3
  # See also https://github.com/urbanopt/urbanopt-reporting-gem/blob/develop/LICENSE.md
4
4
  # *********************************************************************************
data/docs/package.json CHANGED
@@ -8,7 +8,7 @@
8
8
  "build": "vuepress build",
9
9
  "deploy": "gh-pages -d .vuepress/dist"
10
10
  },
11
- "author": "NREL",
11
+ "author": "NLR",
12
12
  "dependencies": {
13
13
  "highlight.js": "^10.4.1",
14
14
  "json-schema-ref-parser": "^9.0.6",
@@ -1,4 +1,4 @@
1
- URBANopt (tm), Copyright (c) 2019-2024, Alliance for Sustainable Energy, LLC, and other
1
+ URBANopt (tm), Copyright (c) 2019-2026, Alliance for Energy Innovation, LLC, and other
2
2
  contributors. All rights reserved.
3
3
 
4
4
  Redistribution and use in source and binary forms, with or without modification,
@@ -1,5 +1,5 @@
1
1
  # *********************************************************************************
2
- # URBANopt (tm), Copyright (c) Alliance for Sustainable Energy, LLC.
2
+ # URBANopt (tm), Copyright (c) Alliance for Energy Innovation, LLC.
3
3
  # See also https://github.com/urbanopt/urbanopt-reporting-gem/blob/develop/LICENSE.md
4
4
  # *********************************************************************************
5
5
 
@@ -80,7 +80,8 @@ class DefaultFeatureReports < OpenStudio::Measure::ReportingMeasure
80
80
  'FuelOilNo2' => 'Fuel Oil #2',
81
81
  'Propane' => 'Propane',
82
82
  'DistrictCooling' => 'District Cooling',
83
- 'DistrictHeating' => 'District Heating',
83
+ 'DistrictHeatingSteam' => 'District Heating Steam',
84
+ 'DistrictHeatingWater' => 'District Heating Water',
84
85
  'Water' => 'Water'
85
86
  }
86
87
 
@@ -179,7 +180,8 @@ class DefaultFeatureReports < OpenStudio::Measure::ReportingMeasure
179
180
  result << OpenStudio::IdfObject.load("Output:Meter:MeterFileOnly,ElectricityProduced:Facility,#{reporting_frequency};").get
180
181
  result << OpenStudio::IdfObject.load("Output:Meter:MeterFileOnly,NaturalGas:Facility,#{reporting_frequency};").get
181
182
  result << OpenStudio::IdfObject.load("Output:Meter:MeterFileOnly,DistrictCooling:Facility,#{reporting_frequency};").get
182
- result << OpenStudio::IdfObject.load("Output:Meter:MeterFileOnly,DistrictHeating:Facility,#{reporting_frequency};").get
183
+ result << OpenStudio::IdfObject.load("Output:Meter:MeterFileOnly,DistrictHeatingSteam:Facility,#{reporting_frequency};").get
184
+ result << OpenStudio::IdfObject.load("Output:Meter:MeterFileOnly,DistrictHeatingWater:Facility,#{reporting_frequency};").get
183
185
  result << OpenStudio::IdfObject.load("Output:Meter:MeterFileOnly,Propane:Facility,#{reporting_frequency};").get
184
186
  result << OpenStudio::IdfObject.load("Output:Meter:MeterFileOnly,FuelOilNo2:Facility,#{reporting_frequency};").get
185
187
 
@@ -191,7 +193,9 @@ class DefaultFeatureReports < OpenStudio::Measure::ReportingMeasure
191
193
  # result << OpenStudio::IdfObject.load("Output:Meter:MeterFileOnly,Fans:Electricity,#{reporting_frequency};").get
192
194
  # result << OpenStudio::IdfObject.load("Output:Meter:MeterFileOnly,Pumps:Electricity,#{reporting_frequency};").get
193
195
  # result << OpenStudio::IdfObject.load("Output:Meter:MeterFileOnly,WaterSystems:Electricity,#{reporting_frequency};").get
194
- # result << OpenStudio::IdfObject.load("Output:Meter:MeterFileOnly,Heating:NaturalGas,#{reporting_frequency};").get
196
+ result << OpenStudio::IdfObject.load("Output:Meter:MeterFileOnly,Heating:NaturalGas,#{reporting_frequency};").get
197
+ result << OpenStudio::IdfObject.load("Output:Meter:MeterFileOnly,Cooling:NaturalGas,#{reporting_frequency};").get
198
+
195
199
  # result << OpenStudio::IdfObject.load("Output:Meter:MeterFileOnly,WaterSystems:NaturalGas,#{reporting_frequency};").get
196
200
  # result << OpenStudio::IdfObject.load("Output:Meter:MeterFileOnly,InteriorEquipment:NaturalGas,#{reporting_frequency};").get
197
201
  result << OpenStudio::IdfObject.load('Output:Variable,*,Heating Coil Heating Rate,hourly; !- HVAC Average [W];').get
@@ -769,13 +773,20 @@ class DefaultFeatureReports < OpenStudio::Measure::ReportingMeasure
769
773
  feature_report.reporting_periods[0].district_cooling_kwh = 0.0
770
774
  end
771
775
 
772
- # district_heating
773
- district_heating = sql_query(runner, sql_file, 'AnnualBuildingUtilityPerformanceSummary', "TableName='End Uses' AND RowName='Total End Uses' AND ColumnName='District Heating'")
774
- feature_report.reporting_periods[0].district_heating_kwh = convert_units(district_heating, 'GJ', 'kWh')
776
+ # district_heating_steam
777
+ district_heating_steam = sql_query(runner, sql_file, 'AnnualBuildingUtilityPerformanceSummary', "TableName='End Uses' AND RowName='Total End Uses' AND ColumnName='District Heating'")
778
+ feature_report.reporting_periods[0].district_heating_steam_kwh = convert_units(district_heating_steam, 'GJ', 'kWh')
775
779
  if building.standardsBuildingType.is_initialized && ['Residential'].include?(building.standardsBuildingType.get)
776
- feature_report.reporting_periods[0].district_heating_kwh = 0.0
780
+ feature_report.reporting_periods[0].district_heating_steam_kwh = 0.0
777
781
  end
778
782
 
783
+ # district_heating_water
784
+ district_heating_water = sql_query(runner, sql_file, 'AnnualBuildingUtilityPerformanceSummary', "TableName='End Uses' AND RowName='Total End Uses' AND ColumnName='District Heating'")
785
+ feature_report.reporting_periods[0].district_heating_water_kwh = convert_units(district_heating_water, 'GJ', 'kWh')
786
+ if building.standardsBuildingType.is_initialized && ['Residential'].include?(building.standardsBuildingType.get)
787
+ feature_report.reporting_periods[0].district_heating_water_kwh = 0.0
788
+ end
789
+
779
790
  # water
780
791
  water = sql_query(runner, sql_file, 'AnnualBuildingUtilityPerformanceSummary', "TableName='End Uses' AND RowName='Total End Uses' AND ColumnName='Water'")
781
792
  feature_report.reporting_periods[0].water_qbft = water
@@ -800,7 +811,7 @@ class DefaultFeatureReports < OpenStudio::Measure::ReportingMeasure
800
811
 
801
812
  # report each query in its corresponding feature report object
802
813
  x = ft.tr(' ', '_').downcase
803
- if x.include? 'water'
814
+ if x.include?('water') && x != 'district_heating_water'
804
815
  x_u = "#{x}_qbft"
805
816
  else
806
817
  x = x.gsub('_#2', '')
@@ -965,6 +976,7 @@ class DefaultFeatureReports < OpenStudio::Measure::ReportingMeasure
965
976
  'HeatRejection:Electricity',
966
977
  'HeatRejection:NaturalGas',
967
978
  'Heating:NaturalGas',
979
+ 'Cooling:NaturalGas',
968
980
  'WaterSystems:NaturalGas',
969
981
  'InteriorEquipment:NaturalGas',
970
982
  'HeatRejection:Propane',
@@ -980,7 +992,8 @@ class DefaultFeatureReports < OpenStudio::Measure::ReportingMeasure
980
992
  'WaterSystems:OtherFuels',
981
993
  'InteriorEquipment:OtherFuels',
982
994
  'DistrictCooling:Facility',
983
- 'DistrictHeating:Facility',
995
+ 'DistrictHeatingSteam:Facility',
996
+ 'DistrictHeatingWater:Facility',
984
997
  'District Cooling Chilled Water Rate',
985
998
  'District Cooling Mass Flow Rate',
986
999
  'District Cooling Inlet Temperature',
@@ -1135,7 +1148,7 @@ class DefaultFeatureReports < OpenStudio::Measure::ReportingMeasure
1135
1148
  end
1136
1149
 
1137
1150
  # residential considerations
1138
- if building.standardsBuildingType.is_initialized && (['DistrictCooling:Facility', 'DistrictHeating:Facility'].include?(timeseries_name) && ['Residential'].include?(building.standardsBuildingType.get))
1151
+ if building.standardsBuildingType.is_initialized && (['DistrictCooling:Facility', 'DistrictHeatingSteam:Facility', 'DistrictHeatingWater:Facility'].include?(timeseries_name) && ['Residential'].include?(building.standardsBuildingType.get))
1139
1152
  values[key_cnt] = Array.new(n, 0)
1140
1153
  end
1141
1154
 
@@ -3,8 +3,8 @@
3
3
  <schema_version>3.1</schema_version>
4
4
  <name>default_feature_reports</name>
5
5
  <uid>9ee3135a-8070-4408-bfa1-b75fecf9dd4f</uid>
6
- <version_id>7864fba6-0915-4a17-ad41-3d2912856425</version_id>
7
- <version_modified>2025-01-22T21:31:39Z</version_modified>
6
+ <version_id>5405e272-fbd5-4967-9398-2a16acb72ea3</version_id>
7
+ <version_modified>2025-08-08T21:47:22Z</version_modified>
8
8
  <xml_checksum>FB304155</xml_checksum>
9
9
  <class_name>DefaultFeatureReports</class_name>
10
10
  <display_name>DefaultFeatureReports</display_name>
@@ -128,7 +128,7 @@
128
128
  <filename>measure.rb</filename>
129
129
  <filetype>rb</filetype>
130
130
  <usage_type>script</usage_type>
131
- <checksum>EA7A7994</checksum>
131
+ <checksum>BE00699F</checksum>
132
132
  </file>
133
133
  <file>
134
134
  <filename>USA_CO_Golden-NREL.724666_TMY3.epw</filename>
@@ -140,7 +140,13 @@
140
140
  <filename>default_feature_reports_test.rb</filename>
141
141
  <filetype>rb</filetype>
142
142
  <usage_type>test</usage_type>
143
- <checksum>8AD78A1A</checksum>
143
+ <checksum>C0A93893</checksum>
144
+ </file>
145
+ <file>
146
+ <filename>example_district.osm</filename>
147
+ <filetype>osm</filetype>
148
+ <usage_type>test</usage_type>
149
+ <checksum>45DD7725</checksum>
144
150
  </file>
145
151
  <file>
146
152
  <filename>example_model.osm</filename>
@@ -1,4 +1,4 @@
1
- URBANopt (tm), Copyright (c) 2019-2024, Alliance for Sustainable Energy, LLC, and other
1
+ URBANopt (tm), Copyright (c) 2019-2026, Alliance for Energy Innovation, LLC, and other
2
2
  contributors. All rights reserved.
3
3
 
4
4
  Redistribution and use in source and binary forms, with or without modification,
@@ -1,5 +1,5 @@
1
1
  # *********************************************************************************
2
- # URBANopt (tm), Copyright (c) Alliance for Sustainable Energy, LLC.
2
+ # URBANopt (tm), Copyright (c) Alliance for Energy Innovation, LLC.
3
3
  # See also https://github.com/urbanopt/urbanopt-reporting-gem/blob/develop/LICENSE.md
4
4
  # *********************************************************************************
5
5
 
@@ -1,4 +1,4 @@
1
- URBANopt (tm), Copyright (c) 2019-2024, Alliance for Sustainable Energy, LLC, and other
1
+ URBANopt (tm), Copyright (c) 2019-2026, Alliance for Energy Innovation, LLC, and other
2
2
  contributors. All rights reserved.
3
3
 
4
4
  Redistribution and use in source and binary forms, with or without modification,
@@ -1,5 +1,5 @@
1
1
  # *********************************************************************************
2
- # URBANopt (tm), Copyright (c) Alliance for Sustainable Energy, LLC.
2
+ # URBANopt (tm), Copyright (c) Alliance for Energy Innovation, LLC.
3
3
  # See also https://github.com/urbanopt/urbanopt-reporting-gem/blob/develop/LICENSE.md
4
4
  # *********************************************************************************
5
5
 
@@ -1,5 +1,5 @@
1
1
  # *********************************************************************************
2
- # URBANopt (tm), Copyright (c) Alliance for Sustainable Energy, LLC.
2
+ # URBANopt (tm), Copyright (c) Alliance for Energy Innovation, LLC.
3
3
  # See also https://github.com/urbanopt/urbanopt-reporting-gem/blob/develop/LICENSE.md
4
4
  # *********************************************************************************
5
5
 
@@ -1,5 +1,5 @@
1
1
  # *********************************************************************************
2
- # URBANopt (tm), Copyright (c) Alliance for Sustainable Energy, LLC.
2
+ # URBANopt (tm), Copyright (c) Alliance for Energy Innovation, LLC.
3
3
  # See also https://github.com/urbanopt/urbanopt-reporting-gem/blob/develop/LICENSE.md
4
4
  # *********************************************************************************
5
5
 
@@ -1,5 +1,5 @@
1
1
  # *********************************************************************************
2
- # URBANopt (tm), Copyright (c) Alliance for Sustainable Energy, LLC.
2
+ # URBANopt (tm), Copyright (c) Alliance for Energy Innovation, LLC.
3
3
  # See also https://github.com/urbanopt/urbanopt-reporting-gem/blob/develop/LICENSE.md
4
4
  # *********************************************************************************
5
5
 
@@ -1,5 +1,5 @@
1
1
  # *********************************************************************************
2
- # URBANopt (tm), Copyright (c) Alliance for Sustainable Energy, LLC.
2
+ # URBANopt (tm), Copyright (c) Alliance for Energy Innovation, LLC.
3
3
  # See also https://github.com/urbanopt/urbanopt-reporting-gem/blob/develop/LICENSE.md
4
4
  # *********************************************************************************
5
5
 
@@ -82,6 +82,31 @@ module URBANopt
82
82
  #
83
83
  attr_accessor :lifecycle_energy_cost_after_tax_bau
84
84
 
85
+ ##
86
+ # _Float_ - Up-front capital costs for all technologies, in present value, excluding replacement costs and incentives.
87
+ #
88
+ attr_accessor :initial_capital_costs
89
+
90
+ ##
91
+ # _Float_ - Up-front capital costs for all technologies, in present value, excluding replacement costs, including incentives.
92
+ #
93
+ attr_accessor :initial_capital_costs_after_incentives
94
+
95
+ ##
96
+ # _Float_ - Net capital costs for all technologies, in present value, including replacement costs and incentives.
97
+ #
98
+ attr_accessor :lifecycle_capital_costs
99
+
100
+ ##
101
+ # _Float_ - Component of lifecycle costs (LCC). This value is the present value of all fuel costs over the analysis period, after tax.
102
+ #
103
+ attr_accessor :lifecycle_fuel_costs_after_tax
104
+
105
+ ##
106
+ # _Float_ - Component of lifecycle costs (LCC). This value is the present value of all electric utility charges, after tax.
107
+ #
108
+ attr_accessor :lifecycle_elecbill_after_tax
109
+
85
110
  ##
86
111
  # _Array_ - List of _SolarPV_ systems
87
112
  #
@@ -171,7 +196,9 @@ module URBANopt
171
196
  #
172
197
  # * Technologies include +:solar_pv+, +:wind+, +:generator+, and +:storage+.
173
198
  # * Financial metrics include +:lcc+, +:npv+, +:year_one_energy_cost_before_tax+, +:year_one_demand_cost_before_tax+,
174
- # +:year_one_bill_before_tax+, and +:lifecycle_energy_cost_after_tax+
199
+ # +:year_one_bill_before_tax+, +:lifecycle_energy_cost_after_tax+, +:initial_capital_costs+,
200
+ # +:initial_capital_costs_after_incentives+, +:lifecycle_capital_costs+,
201
+ # +:lifecycle_elecbill_after_tax+, and +:lifecycle_fuel_costs_after_tax+
175
202
  ##
176
203
  # [parameters:]
177
204
  #
@@ -194,6 +221,11 @@ module URBANopt
194
221
  @lifecycle_energy_cost_after_tax_bau = hash[:lifecycle_energy_cost_after_tax_bau]
195
222
  @lifecycle_demand_cost_after_tax = hash[:lifecycle_demand_cost_after_tax]
196
223
  @lifecycle_demand_cost_after_tax_bau = hash[:lifecycle_demand_cost_after_tax_bau]
224
+ @initial_capital_costs = hash[:initial_capital_costs]
225
+ @initial_capital_costs_after_incentives = hash[:initial_capital_costs_after_incentives]
226
+ @lifecycle_capital_costs = hash[:lifecycle_capital_costs]
227
+ @lifecycle_fuel_costs_after_tax = hash[:lifecycle_fuel_costs_after_tax]
228
+ @lifecycle_elecbill_after_tax = hash[:lifecycle_elecbill_after_tax]
197
229
 
198
230
  @resilience_hours_min = hash[:resilience_hours_min]
199
231
  @resilience_hours_max = hash[:resilience_hours_max]
@@ -362,6 +394,12 @@ module URBANopt
362
394
  result[:lifecycle_energy_cost_after_tax_bau] = @lifecycle_energy_cost_after_tax_bau if @lifecycle_energy_cost_after_tax_bau
363
395
  result[:lifecycle_demand_cost_after_tax_bau] = @lifecycle_demand_cost_after_tax_bau if @lifecycle_demand_cost_after_tax_bau
364
396
 
397
+ result[:initial_capital_costs] = @initial_capital_costs if @initial_capital_costs
398
+ result[:initial_capital_costs_after_incentives] = @initial_capital_costs_after_incentives if @initial_capital_costs_after_incentives
399
+ result[:lifecycle_capital_costs] = @lifecycle_capital_costs if @lifecycle_capital_costs
400
+ result[:lifecycle_fuel_costs_after_tax] = @lifecycle_fuel_costs_after_tax if @lifecycle_fuel_costs_after_tax
401
+ result[:lifecycle_elecbill_after_tax] = @lifecycle_elecbill_after_tax if @lifecycle_elecbill_after_tax
402
+
365
403
  result[:total_solar_pv_kw] = @total_solar_pv_kw if @total_solar_pv_kw
366
404
  result[:total_wind_kw] = @total_wind_kw if @total_wind_kw
367
405
  result[:total_generator_kw] = @total_generator_kw if @total_generator_kw
@@ -432,6 +470,12 @@ module URBANopt
432
470
  existing_dgen.lifecycle_energy_cost_after_tax_bau = add_values(existing_dgen.lifecycle_energy_cost_after_tax_bau, new_dgen.lifecycle_energy_cost_after_tax_bau)
433
471
  existing_dgen.lifecycle_demand_cost_after_tax_bau = add_values(existing_dgen.lifecycle_demand_cost_after_tax_bau, new_dgen.lifecycle_demand_cost_after_tax_bau)
434
472
 
473
+ existing_dgen.initial_capital_costs = add_values(existing_dgen.initial_capital_costs, new_dgen.initial_capital_costs)
474
+ existing_dgen.initial_capital_costs_after_incentives = add_values(existing_dgen.initial_capital_costs_after_incentives, new_dgen.initial_capital_costs_after_incentives)
475
+ existing_dgen.lifecycle_capital_costs = add_values(existing_dgen.lifecycle_capital_costs, new_dgen.lifecycle_capital_costs)
476
+ existing_dgen.lifecycle_fuel_costs_after_tax = add_values(existing_dgen.lifecycle_fuel_costs_after_tax, new_dgen.lifecycle_fuel_costs_after_tax)
477
+ existing_dgen.lifecycle_elecbill_after_tax = add_values(existing_dgen.lifecycle_elecbill_after_tax, new_dgen.lifecycle_elecbill_after_tax)
478
+
435
479
  existing_dgen.resilience_hours_min = add_values(existing_dgen.resilience_hours_min, new_dgen.resilience_hours_min)
436
480
  existing_dgen.resilience_hours_max = add_values(existing_dgen.resilience_hours_max, new_dgen.resilience_hours_max)
437
481
  existing_dgen.resilience_hours_avg = add_values(existing_dgen.resilience_hours_avg, new_dgen.resilience_hours_avg)
@@ -1,5 +1,5 @@
1
1
  # *********************************************************************************
2
- # URBANopt (tm), Copyright (c) Alliance for Sustainable Energy, LLC.
2
+ # URBANopt (tm), Copyright (c) Alliance for Energy Innovation, LLC.
3
3
  # See also https://github.com/urbanopt/urbanopt-reporting-gem/blob/develop/LICENSE.md
4
4
  # *********************************************************************************
5
5
 
@@ -1,5 +1,5 @@
1
1
  # *********************************************************************************
2
- # URBANopt (tm), Copyright (c) Alliance for Sustainable Energy, LLC.
2
+ # URBANopt (tm), Copyright (c) Alliance for Energy Innovation, LLC.
3
3
  # See also https://github.com/urbanopt/urbanopt-reporting-gem/blob/develop/LICENSE.md
4
4
  # *********************************************************************************
5
5
 
@@ -14,7 +14,7 @@ module URBANopt
14
14
  # Enduses class include results for each fuel type.
15
15
  ##
16
16
  class EndUses
17
- attr_accessor :electricity_kwh, :natural_gas_kwh, :propane_kwh, :fuel_oil_kwh, :other_fuels_kwh, :district_cooling_kwh, :district_heating_kwh, :water_qbft # :nodoc:
17
+ attr_accessor :electricity_kwh, :natural_gas_kwh, :propane_kwh, :fuel_oil_kwh, :other_fuels_kwh, :district_cooling_kwh, :district_heating_water_kwh, :district_heating_steam_kwh, :water_qbft # :nodoc:
18
18
 
19
19
  ##
20
20
  # EndUses class initialize end_uses(fuel type) attributes: +:electricity_kwh+ , +:natural_gas_kwh+ , +:propane_kwh+ , +:fuel_oil_kwh+ , +:other_fuels_kwh+ ,
@@ -33,7 +33,8 @@ module URBANopt
33
33
  @fuel_oil_kwh = EndUse.new(hash[:fuel_oil_kwh])
34
34
  @other_fuels_kwh = EndUse.new(hash[:other_fuels_kwh])
35
35
  @district_cooling_kwh = EndUse.new(hash[:district_cooling_kwh])
36
- @district_heating_kwh = EndUse.new(hash[:district_heating_kwh])
36
+ @district_heating_water_kwh = EndUse.new(hash[:district_heating_water_kwh])
37
+ @district_heating_steam_kwh = EndUse.new(hash[:district_heating_steam_kwh])
37
38
  @water_qbft = EndUse.new(hash[:water_qbft])
38
39
 
39
40
  # initialize class variables @@validator and @@schema
@@ -74,9 +75,13 @@ module URBANopt
74
75
  district_cooling_kwh_hash.delete_if { |k, v| v.nil? }
75
76
  result[:district_cooling_kwh] = district_cooling_kwh_hash if @district_cooling_kwh
76
77
 
77
- district_heating_kwh_hash = @district_heating_kwh.to_hash if @district_heating_kwh
78
- district_heating_kwh_hash.delete_if { |k, v| v.nil? }
79
- result[:district_heating_kwh] = district_heating_kwh_hash if @district_heating_kwh
78
+ district_heating_water_kwh_hash = @district_heating_water_kwh.to_hash if @district_heating_water_kwh
79
+ district_heating_water_kwh_hash.delete_if { |k, v| v.nil? }
80
+ result[:district_heating_water_kwh] = district_heating_water_kwh_hash if @district_heating_water_kwh
81
+
82
+ district_heating_steam_kwh_hash = @district_heating_steam_kwh.to_hash if @district_heating_steam_kwh
83
+ district_heating_steam_kwh_hash.delete_if { |k, v| v.nil? }
84
+ result[:district_heating_steam_kwh] = district_heating_steam_kwh_hash if @district_heating_steam_kwh
80
85
 
81
86
  water_qbft_hash = @water_qbft.to_hash if @water_qbft
82
87
  water_qbft_hash.delete_if { |k, v| v.nil? }
@@ -101,7 +106,8 @@ module URBANopt
101
106
  hash[:fuel_oil_kwh] = EndUse.new.to_hash
102
107
  hash[:other_fuels_kwh] = EndUse.new.to_hash
103
108
  hash[:district_cooling_kwh] = EndUse.new.to_hash
104
- hash[:district_heating_kwh] = EndUse.new.to_hash
109
+ hash[:district_heating_steam_kwh] = EndUse.new.to_hash
110
+ hash[:district_heating_water_kwh] = EndUse.new.to_hash
105
111
  hash[:water_qbft] = EndUse.new.to_hash
106
112
 
107
113
  return hash
@@ -121,7 +127,8 @@ module URBANopt
121
127
  @fuel_oil_kwh.merge_end_use!(new_end_uses.fuel_oil_kwh)
122
128
  @other_fuels_kwh.merge_end_use!(new_end_uses.other_fuels_kwh)
123
129
  @district_cooling_kwh.merge_end_use!(new_end_uses.district_cooling_kwh)
124
- @district_heating_kwh.merge_end_use!(new_end_uses.district_heating_kwh)
130
+ @district_heating_water_kwh.merge_end_use!(new_end_uses.district_heating_water_kwh)
131
+ @district_heating_steam_kwh.merge_end_use!(new_end_uses.district_heating_steam_kwh)
125
132
  return self
126
133
  end
127
134
  end
@@ -1,5 +1,5 @@
1
1
  # *********************************************************************************
2
- # URBANopt (tm), Copyright (c) Alliance for Sustainable Energy, LLC.
2
+ # URBANopt (tm), Copyright (c) Alliance for Energy Innovation, LLC.
3
3
  # See also https://github.com/urbanopt/urbanopt-reporting-gem/blob/develop/LICENSE.md
4
4
  # *********************************************************************************
5
5
 
@@ -1,5 +1,5 @@
1
1
  # *********************************************************************************
2
- # URBANopt (tm), Copyright (c) Alliance for Sustainable Energy, LLC.
2
+ # URBANopt (tm), Copyright (c) Alliance for Energy Innovation, LLC.
3
3
  # See also https://github.com/urbanopt/urbanopt-reporting-gem/blob/develop/LICENSE.md
4
4
  # *********************************************************************************
5
5
 
@@ -1,5 +1,5 @@
1
1
  # *********************************************************************************
2
- # URBANopt (tm), Copyright (c) Alliance for Sustainable Energy, LLC.
2
+ # URBANopt (tm), Copyright (c) Alliance for Energy Innovation, LLC.
3
3
  # See also https://github.com/urbanopt/urbanopt-reporting-gem/blob/develop/LICENSE.md
4
4
  # *********************************************************************************
5
5
 
@@ -1,5 +1,5 @@
1
1
  # *********************************************************************************
2
- # URBANopt (tm), Copyright (c) Alliance for Sustainable Energy, LLC.
2
+ # URBANopt (tm), Copyright (c) Alliance for Energy Innovation, LLC.
3
3
  # See also https://github.com/urbanopt/urbanopt-reporting-gem/blob/develop/LICENSE.md
4
4
  # *********************************************************************************
5
5
 
@@ -1,5 +1,5 @@
1
1
  # *********************************************************************************
2
- # URBANopt (tm), Copyright (c) Alliance for Sustainable Energy, LLC.
2
+ # URBANopt (tm), Copyright (c) Alliance for Energy Innovation, LLC.
3
3
  # See also https://github.com/urbanopt/urbanopt-reporting-gem/blob/develop/LICENSE.md
4
4
  # *********************************************************************************
5
5
 
@@ -1,5 +1,5 @@
1
1
  # *********************************************************************************
2
- # URBANopt (tm), Copyright (c) Alliance for Sustainable Energy, LLC.
2
+ # URBANopt (tm), Copyright (c) Alliance for Energy Innovation, LLC.
3
3
  # See also https://github.com/urbanopt/urbanopt-reporting-gem/blob/develop/LICENSE.md
4
4
  # *********************************************************************************
5
5
 
@@ -1,5 +1,5 @@
1
1
  # *********************************************************************************
2
- # URBANopt (tm), Copyright (c) Alliance for Sustainable Energy, LLC.
2
+ # URBANopt (tm), Copyright (c) Alliance for Energy Innovation, LLC.
3
3
  # See also https://github.com/urbanopt/urbanopt-reporting-gem/blob/develop/LICENSE.md
4
4
  # *********************************************************************************
5
5
 
@@ -1,5 +1,5 @@
1
1
  # *********************************************************************************
2
- # URBANopt (tm), Copyright (c) Alliance for Sustainable Energy, LLC.
2
+ # URBANopt (tm), Copyright (c) Alliance for Energy Innovation, LLC.
3
3
  # See also https://github.com/urbanopt/urbanopt-reporting-gem/blob/develop/LICENSE.md
4
4
  # *********************************************************************************
5
5
 
@@ -1,5 +1,5 @@
1
1
  # *********************************************************************************
2
- # URBANopt (tm), Copyright (c) Alliance for Sustainable Energy, LLC.
2
+ # URBANopt (tm), Copyright (c) Alliance for Energy Innovation, LLC.
3
3
  # See also https://github.com/urbanopt/urbanopt-reporting-gem/blob/develop/LICENSE.md
4
4
  # *********************************************************************************
5
5
 
@@ -20,7 +20,7 @@ module URBANopt
20
20
  class ReportingPeriod
21
21
  attr_accessor :id, :name, :multiplier, :start_date, :end_date, :month, :day_of_month, :year, :total_site_energy_kwh, :total_source_energy_kwh, :site_EUI_kwh_per_m2, :site_EUI_kbtu_per_ft2, :source_EUI_kwh_per_m2, :source_EUI_kbtu_per_ft2,
22
22
  :net_site_energy_kwh, :net_source_energy_kwh, :total_utility_cost_dollar, :net_utility_cost_dollar, :utility_costs_dollar, :electricity_kwh, :natural_gas_kwh, :propane_kwh, :fuel_oil_kwh, :other_fuels_kwh, :district_cooling_kwh,
23
- :district_heating_kwh, :water_qbft, :electricity_produced_kwh, :end_uses, :energy_production_kwh, :photovoltaic,
23
+ :district_heating_water_kwh, :district_heating_steam_kwh, :water_qbft, :electricity_produced_kwh, :end_uses, :energy_production_kwh, :photovoltaic,
24
24
  :fuel_type, :total_cost_dollar, :usage_cost_dollar, :demand_cost_dollar, :comfort_result, :time_setpoint_not_met_during_occupied_cooling,
25
25
  :time_setpoint_not_met_during_occupied_heating, :time_setpoint_not_met_during_occupied_hours, :hours_out_of_comfort_bounds_PMV, :hours_out_of_comfort_bounds_PPD,
26
26
  :emissions, :future_annual_electricity_emissions_mt, :future_hourly_electricity_emissions_mt, :historical_annual_electricity_emissions_mt, :historical_hourly_electricity_emissions_mt,
@@ -68,7 +68,8 @@ module URBANopt
68
68
  @fuel_oil_kwh = hash[:fuel_oil_kwh]
69
69
  @other_fuels_kwh = hash[:other_fuels_kwh]
70
70
  @district_cooling_kwh = hash[:district_cooling_kwh]
71
- @district_heating_kwh = hash[:district_heating_kwh]
71
+ @district_heating_water_kwh = hash[:district_heating_water_kwh]
72
+ @district_heating_steam_kwh = hash[:district_heating_steam_kwh]
72
73
  @water_qbft = hash[:water_qbft]
73
74
  @electricity_produced_kwh = hash[:electricity_produced_kwh]
74
75
  @end_uses = EndUses.new(hash[:end_uses])
@@ -114,7 +115,8 @@ module URBANopt
114
115
  hash[:fuel_oil_kwh] = nil
115
116
  hash[:other_fuels_kwh] = nil
116
117
  hash[:district_cooling_kwh] = nil
117
- hash[:district_heating_kwh] = nil
118
+ hash[:district_heating_water_kwh] = nil
119
+ hash[:district_heating_steam_kwh] = nil
118
120
 
119
121
  hash[:electricity_produced_kwh] = nil
120
122
  hash[:end_uses] = EndUses.new.to_hash
@@ -162,7 +164,8 @@ module URBANopt
162
164
  result[:fuel_oil_kwh] = @fuel_oil_kwh if @fuel_oil_kwh
163
165
  result[:other_fuels_kwh] = @other_fuels_kwh if @other_fuels_kwh
164
166
  result[:district_cooling_kwh] = @district_cooling_kwh if @district_cooling_kwh
165
- result[:district_heating_kwh] = @district_heating_kwh if @district_heating_kwh
167
+ result[:district_heating_steam_kwh] = @district_heating_steam_kwh if @district_heating_steam_kwh
168
+ result[:district_heating_water_kwh] = @district_heating_water_kwh if @district_heating_water_kwh
166
169
  result[:water_qbft] = @water_qbft if @water_qbft
167
170
  result[:electricity_produced_kwh] = @electricity_produced_kwh if @electricity_produced_kwh
168
171
  result[:end_uses] = @end_uses.to_hash if @end_uses
@@ -236,7 +239,8 @@ module URBANopt
236
239
  existing_period.fuel_oil_kwh = add_values(existing_period.fuel_oil_kwh, new_period.fuel_oil_kwh)
237
240
  existing_period.other_fuels_kwh = add_values(existing_period.other_fuels_kwh, new_period.other_fuels_kwh)
238
241
  existing_period.district_cooling_kwh = add_values(existing_period.district_cooling_kwh, new_period.district_cooling_kwh)
239
- existing_period.district_heating_kwh = add_values(existing_period.district_heating_kwh, new_period.district_heating_kwh)
242
+ existing_period.district_heating_steam_kwh = add_values(existing_period.district_heating_steam_kwh, new_period.district_heating_steam_kwh)
243
+ existing_period.district_heating_water_kwh = add_values(existing_period.district_heating_water_kwh, new_period.district_heating_water_kwh)
240
244
  existing_period.water_qbft = add_values(existing_period.water_qbft, new_period.water_qbft)
241
245
  existing_period.electricity_produced_kwh = add_values(existing_period.electricity_produced_kwh, new_period.electricity_produced_kwh)
242
246
 
@@ -1,5 +1,5 @@
1
1
  # *********************************************************************************
2
- # URBANopt (tm), Copyright (c) Alliance for Sustainable Energy, LLC.
2
+ # URBANopt (tm), Copyright (c) Alliance for Energy Innovation, LLC.
3
3
  # See also https://github.com/urbanopt/urbanopt-reporting-gem/blob/develop/LICENSE.md
4
4
  # *********************************************************************************
5
5
 
@@ -1,5 +1,5 @@
1
1
  # *********************************************************************************
2
- # URBANopt (tm), Copyright (c) Alliance for Sustainable Energy, LLC.
2
+ # URBANopt (tm), Copyright (c) Alliance for Energy Innovation, LLC.
3
3
  # See also https://github.com/urbanopt/urbanopt-reporting-gem/blob/develop/LICENSE.md
4
4
  # *********************************************************************************
5
5
 
@@ -1,5 +1,5 @@
1
1
  # *********************************************************************************
2
- # URBANopt (tm), Copyright (c) Alliance for Sustainable Energy, LLC.
2
+ # URBANopt (tm), Copyright (c) Alliance for Energy Innovation, LLC.
3
3
  # See also https://github.com/urbanopt/urbanopt-reporting-gem/blob/develop/LICENSE.md
4
4
  # *********************************************************************************
5
5
 
@@ -22,7 +22,8 @@ The URBANopt <sup>&trade;</sup> Scenario Gem includes functionality for defining
22
22
  | ElectricityProduced:Facility | kWh |
23
23
  | Gas:Facility | kBtu |
24
24
  | DistrictCooling:Facility | kWh |
25
- | DistrictHeating:Facility | kWh |
25
+ | DistrictHeatingSteam:Facility | kWh |
26
+ | DistrictHeatingWater:Facility | kWh |
26
27
  | District Cooling Chilled Water Rate | GPM |
27
28
  | District Cooling Mass Flow Rate | kg/s |
28
29
  | District Cooling Inlet Temperature | &deg;C |
@@ -32,7 +32,8 @@ Heating:OtherFuels
32
32
  WaterSystems:OtherFuels
33
33
  InteriorEquipment:OtherFuels
34
34
  DistrictCooling:Facility
35
- DistrictHeating:Facility
35
+ DistrictHeatingSteam:Facility
36
+ DistrictHeatingWater:Facility
36
37
  District Cooling Chilled Water Rate
37
38
  District Cooling Mass Flow Rate
38
39
  District Cooling Inlet Temperature
@@ -481,6 +481,31 @@
481
481
  "units": "dollars",
482
482
  "type": "number"
483
483
  },
484
+ "initial_capital_costs": {
485
+ "description": "Up-front capital costs for all technologies, in present value, excluding replacement costs and incentives.",
486
+ "units": "dollars",
487
+ "type": "number"
488
+ },
489
+ "initial_capital_costs_after_incentives": {
490
+ "description": "Up-front capital costs for all technologies, in present value, excluding replacement costs, including incentives.",
491
+ "units": "dollars",
492
+ "type": "number"
493
+ },
494
+ "lifecycle_capital_costs": {
495
+ "description": "Net capital costs for all technologies, in present value, including replacement costs and incentives.",
496
+ "units": "dollars",
497
+ "type": "number"
498
+ },
499
+ "lifecycle_fuel_costs_after_tax": {
500
+ "description": "Component of lifecycle costs (LCC). This value is the present value of all fuel costs over the analysis period, after tax.",
501
+ "units": "dollars",
502
+ "type": "number"
503
+ },
504
+ "lifecycle_elecbill_after_tax": {
505
+ "description": "Component of lifecycle costs (LCC). This value is the present value of all electric utility charges, after tax.",
506
+ "units": "dollars",
507
+ "type": "number"
508
+ },
484
509
  "SolarPV": {
485
510
  "$ref": "#/definitions/SolarPV"
486
511
  },
@@ -946,8 +971,12 @@
946
971
  "description": "Sum of all distric cooling end uses consumption (kWh)",
947
972
  "type": "number"
948
973
  },
949
- "district_heating_kwh": {
950
- "description": "Sum of all distric heating end uses consumption (kWh)",
974
+ "district_heating_steam_kwh": {
975
+ "description": "Sum of all distric heating steam end uses consumption (kWh)",
976
+ "type": "number"
977
+ },
978
+ "district_heating_water_kwh": {
979
+ "description": "Sum of all distric heating water end uses consumption (kWh)",
951
980
  "type": "number"
952
981
  },
953
982
  "water_qbft": {
@@ -1081,7 +1110,10 @@
1081
1110
  "district_cooling_kwh": {
1082
1111
  "$ref": "#/definitions/EndUse"
1083
1112
  },
1084
- "district_heating_kwh": {
1113
+ "district_heating_water_kwh": {
1114
+ "$ref": "#/definitions/EndUse"
1115
+ },
1116
+ "district_heating_steam_kwh": {
1085
1117
  "$ref": "#/definitions/EndUse"
1086
1118
  },
1087
1119
  "water_qbft": {
@@ -1,5 +1,5 @@
1
1
  # *********************************************************************************
2
- # URBANopt (tm), Copyright (c) Alliance for Sustainable Energy, LLC.
2
+ # URBANopt (tm), Copyright (c) Alliance for Energy Innovation, LLC.
3
3
  # See also https://github.com/urbanopt/urbanopt-reporting-gem/blob/develop/LICENSE.md
4
4
  # *********************************************************************************
5
5
 
@@ -1,5 +1,5 @@
1
1
  # *********************************************************************************
2
- # URBANopt (tm), Copyright (c) Alliance for Sustainable Energy, LLC.
2
+ # URBANopt (tm), Copyright (c) Alliance for Energy Innovation, LLC.
3
3
  # See also https://github.com/urbanopt/urbanopt-reporting-gem/blob/develop/LICENSE.md
4
4
  # *********************************************************************************
5
5
 
@@ -1,5 +1,5 @@
1
1
  # *********************************************************************************
2
- # URBANopt (tm), Copyright (c) Alliance for Sustainable Energy, LLC.
2
+ # URBANopt (tm), Copyright (c) Alliance for Energy Innovation, LLC.
3
3
  # See also https://github.com/urbanopt/urbanopt-reporting-gem/blob/develop/LICENSE.md
4
4
  # *********************************************************************************
5
5
 
@@ -1,5 +1,5 @@
1
1
  # *********************************************************************************
2
- # URBANopt (tm), Copyright (c) Alliance for Sustainable Energy, LLC.
2
+ # URBANopt (tm), Copyright (c) Alliance for Energy Innovation, LLC.
3
3
  # See also https://github.com/urbanopt/urbanopt-reporting-gem/blob/develop/LICENSE.md
4
4
  # *********************************************************************************
5
5
 
@@ -186,21 +186,26 @@ module URBANopt
186
186
  path = @path
187
187
  end
188
188
 
189
- File.open(path, 'w') do |f|
190
- f.puts @column_names.join(',')
191
- n = @data[@column_names[0]].size - 1
192
-
193
- (0..n).each do |i|
194
- line = []
195
- @column_names.each do |column_name|
196
- line << @data[column_name][i]
189
+ # what if data is nil? warn user and don't attempt to write to file or it errors out
190
+ if @data.nil?
191
+ @@logger.warn('No data to save to TimeseriesCSV to write to file during feature report update.')
192
+ puts
193
+ else
194
+ File.open(path, 'w') do |f|
195
+ f.puts @column_names.join(',')
196
+ n = @data[@column_names[0]].size - 1
197
+ (0..n).each do |i|
198
+ line = []
199
+ @column_names.each do |column_name|
200
+ line << @data[column_name][i]
201
+ end
202
+ f.puts line.join(',')
203
+ end
204
+ begin
205
+ f.fsync
206
+ rescue StandardError
207
+ f.flush
197
208
  end
198
- f.puts line.join(',')
199
- end
200
- begin
201
- f.fsync
202
- rescue StandardError
203
- f.flush
204
209
  end
205
210
  end
206
211
  end
@@ -1,5 +1,5 @@
1
1
  # *********************************************************************************
2
- # URBANopt (tm), Copyright (c) Alliance for Sustainable Energy, LLC.
2
+ # URBANopt (tm), Copyright (c) Alliance for Energy Innovation, LLC.
3
3
  # See also https://github.com/urbanopt/urbanopt-reporting-gem/blob/develop/LICENSE.md
4
4
  # *********************************************************************************
5
5
 
@@ -1,5 +1,5 @@
1
1
  # *********************************************************************************
2
- # URBANopt (tm), Copyright (c) Alliance for Sustainable Energy, LLC.
2
+ # URBANopt (tm), Copyright (c) Alliance for Energy Innovation, LLC.
3
3
  # See also https://github.com/urbanopt/urbanopt-reporting-gem/blob/develop/LICENSE.md
4
4
  # *********************************************************************************
5
5
 
@@ -1,5 +1,5 @@
1
1
  # *********************************************************************************
2
- # URBANopt (tm), Copyright (c) Alliance for Sustainable Energy, LLC.
2
+ # URBANopt (tm), Copyright (c) Alliance for Energy Innovation, LLC.
3
3
  # See also https://github.com/urbanopt/urbanopt-reporting-gem/blob/develop/LICENSE.md
4
4
  # *********************************************************************************
5
5
 
@@ -1,5 +1,5 @@
1
1
  # *********************************************************************************
2
- # URBANopt (tm), Copyright (c) Alliance for Sustainable Energy, LLC.
2
+ # URBANopt (tm), Copyright (c) Alliance for Energy Innovation, LLC.
3
3
  # See also https://github.com/urbanopt/urbanopt-reporting-gem/blob/develop/LICENSE.md
4
4
  # *********************************************************************************
5
5
 
@@ -1,10 +1,10 @@
1
1
  # *********************************************************************************
2
- # URBANopt (tm), Copyright (c) Alliance for Sustainable Energy, LLC.
2
+ # URBANopt (tm), Copyright (c) Alliance for Energy Innovation, LLC.
3
3
  # See also https://github.com/urbanopt/urbanopt-reporting-gem/blob/develop/LICENSE.md
4
4
  # *********************************************************************************
5
5
 
6
6
  module URBANopt
7
7
  module Reporting
8
- VERSION = '1.0.0'.freeze
8
+ VERSION = '1.2.0'.freeze
9
9
  end
10
10
  end
@@ -1,5 +1,5 @@
1
1
  # *********************************************************************************
2
- # URBANopt (tm), Copyright (c) Alliance for Sustainable Energy, LLC.
2
+ # URBANopt (tm), Copyright (c) Alliance for Energy Innovation, LLC.
3
3
  # See also https://github.com/urbanopt/urbanopt-reporting-gem/blob/develop/LICENSE.md
4
4
  # *********************************************************************************
5
5
 
@@ -25,11 +25,14 @@ Gem::Specification.new do |spec|
25
25
  # It would be nice to be able to use newer patches of Ruby 3.2, which would require os-extension to relax its dependency on bundler.
26
26
  spec.required_ruby_version = '3.2.2'
27
27
 
28
- spec.add_development_dependency 'rspec', '~> 3.13'
29
- spec.add_development_dependency 'simplecov', '0.22.0'
30
- spec.add_development_dependency 'simplecov-lcov', '0.8.0'
28
+ spec.add_development_dependency 'rake', '~> 13.0'
29
+ spec.add_development_dependency 'rspec', '~> 3.9'
30
+ spec.add_development_dependency 'rubocop', '~> 1.50'
31
+ spec.add_development_dependency 'rubocop-performance', '~> 1.20'
32
+ spec.add_development_dependency 'simplecov', '~> 0.22.0'
33
+ spec.add_development_dependency 'simplecov-lcov', '~> 0.8.0'
31
34
 
32
35
  spec.add_runtime_dependency 'json_pure', '~> 2.7'
33
36
  spec.add_runtime_dependency 'json-schema', '~> 4.3.1'
34
- spec.add_dependency 'openstudio-extension', '~> 0.8.3'
37
+ spec.add_dependency 'openstudio-extension', '~> 0.9.4'
35
38
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: urbanopt-reporting
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.0
4
+ version: 1.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Rawad El Kontar
@@ -9,48 +9,90 @@ authors:
9
9
  autorequire:
10
10
  bindir: exe
11
11
  cert_chain: []
12
- date: 2025-01-23 00:00:00.000000000 Z
12
+ date: 2026-01-23 00:00:00.000000000 Z
13
13
  dependencies:
14
+ - !ruby/object:Gem::Dependency
15
+ name: rake
16
+ requirement: !ruby/object:Gem::Requirement
17
+ requirements:
18
+ - - "~>"
19
+ - !ruby/object:Gem::Version
20
+ version: '13.0'
21
+ type: :development
22
+ prerelease: false
23
+ version_requirements: !ruby/object:Gem::Requirement
24
+ requirements:
25
+ - - "~>"
26
+ - !ruby/object:Gem::Version
27
+ version: '13.0'
14
28
  - !ruby/object:Gem::Dependency
15
29
  name: rspec
16
30
  requirement: !ruby/object:Gem::Requirement
17
31
  requirements:
18
32
  - - "~>"
19
33
  - !ruby/object:Gem::Version
20
- version: '3.13'
34
+ version: '3.9'
21
35
  type: :development
22
36
  prerelease: false
23
37
  version_requirements: !ruby/object:Gem::Requirement
24
38
  requirements:
25
39
  - - "~>"
26
40
  - !ruby/object:Gem::Version
27
- version: '3.13'
41
+ version: '3.9'
42
+ - !ruby/object:Gem::Dependency
43
+ name: rubocop
44
+ requirement: !ruby/object:Gem::Requirement
45
+ requirements:
46
+ - - "~>"
47
+ - !ruby/object:Gem::Version
48
+ version: '1.50'
49
+ type: :development
50
+ prerelease: false
51
+ version_requirements: !ruby/object:Gem::Requirement
52
+ requirements:
53
+ - - "~>"
54
+ - !ruby/object:Gem::Version
55
+ version: '1.50'
56
+ - !ruby/object:Gem::Dependency
57
+ name: rubocop-performance
58
+ requirement: !ruby/object:Gem::Requirement
59
+ requirements:
60
+ - - "~>"
61
+ - !ruby/object:Gem::Version
62
+ version: '1.20'
63
+ type: :development
64
+ prerelease: false
65
+ version_requirements: !ruby/object:Gem::Requirement
66
+ requirements:
67
+ - - "~>"
68
+ - !ruby/object:Gem::Version
69
+ version: '1.20'
28
70
  - !ruby/object:Gem::Dependency
29
71
  name: simplecov
30
72
  requirement: !ruby/object:Gem::Requirement
31
73
  requirements:
32
- - - '='
74
+ - - "~>"
33
75
  - !ruby/object:Gem::Version
34
76
  version: 0.22.0
35
77
  type: :development
36
78
  prerelease: false
37
79
  version_requirements: !ruby/object:Gem::Requirement
38
80
  requirements:
39
- - - '='
81
+ - - "~>"
40
82
  - !ruby/object:Gem::Version
41
83
  version: 0.22.0
42
84
  - !ruby/object:Gem::Dependency
43
85
  name: simplecov-lcov
44
86
  requirement: !ruby/object:Gem::Requirement
45
87
  requirements:
46
- - - '='
88
+ - - "~>"
47
89
  - !ruby/object:Gem::Version
48
90
  version: 0.8.0
49
91
  type: :development
50
92
  prerelease: false
51
93
  version_requirements: !ruby/object:Gem::Requirement
52
94
  requirements:
53
- - - '='
95
+ - - "~>"
54
96
  - !ruby/object:Gem::Version
55
97
  version: 0.8.0
56
98
  - !ruby/object:Gem::Dependency
@@ -87,14 +129,14 @@ dependencies:
87
129
  requirements:
88
130
  - - "~>"
89
131
  - !ruby/object:Gem::Version
90
- version: 0.8.3
132
+ version: 0.9.4
91
133
  type: :runtime
92
134
  prerelease: false
93
135
  version_requirements: !ruby/object:Gem::Requirement
94
136
  requirements:
95
137
  - - "~>"
96
138
  - !ruby/object:Gem::Version
97
- version: 0.8.3
139
+ version: 0.9.4
98
140
  description: Library include scenario default reporting measure and scenario defaults
99
141
  reports schema and classes
100
142
  email: