openstudio-calibration 0.5.0 → 0.5.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.gitignore +1 -0
- data/CHANGELOG.md +5 -0
- data/lib/measures/ExteriorWallThermalPropertiesMultiplier/measure.xml +3 -4
- data/lib/measures/ExteriorWallThermalPropertiesPercentChange/measure.xml +3 -4
- data/lib/measures/HardSizeHvac/measure.rb +8 -6
- data/lib/measures/HardSizeHvac/measure.xml +16 -4
- data/lib/measures/RoofThermalPropertiesMultiplier/measure.xml +3 -4
- data/lib/measures/RoofThermalPropertiesPercentChange/measure.xml +3 -4
- data/lib/measures/TimeseriesObjectiveFunction/README.md +171 -5
- data/lib/measures/TimeseriesObjectiveFunction/measure.rb +1 -1
- data/lib/measures/TimeseriesObjectiveFunction/measure.xml +10 -84
- data/lib/measures/TimeseriesPlot/README.md +35 -5
- data/lib/measures/TimeseriesPlot/measure.rb +1 -1
- data/lib/measures/TimeseriesPlot/measure.xml +10 -24
- data/lib/openstudio/calibration/version.rb +1 -1
- metadata +6 -7
- data/lib/measures/inspect_and_edit_parametric_schedules/docs/.gitkeep +0 -0
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: ae5db57508794a73f423c8ea2defcfce9d8b4b51dc3344903d1070cded32f93a
|
4
|
+
data.tar.gz: cdc258f217d2ab55a0c98c0ef25b59b433be718b3ac1874fdadfe4e416b768ff
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: c48a1b3eecdf942d97b2eb21cbaf24b44b7e8b7843cae02d6266c318e6b0a83c6a9201317f92a2163725da4c3aaeba3639c01f3403ceee8da688073069b00934
|
7
|
+
data.tar.gz: 251482fc84d48c19a23a41c13c90c853b55b3df22c57bb0e0c35236fe01434df4a44bce48a28470d0383ff96e90726e3458715988a5c3c90ccbefb40dca0a90b
|
data/.gitignore
CHANGED
data/CHANGELOG.md
CHANGED
@@ -1,5 +1,10 @@
|
|
1
1
|
# OpenStudio Calibration Measures Gem
|
2
2
|
|
3
|
+
## Version 0.5.1
|
4
|
+
* Fixed [#24]( https://github.com/NREL/openstudio-calibration-gem/pull/24 ), HardSizeHvac: undefined method `runSizingRun'
|
5
|
+
* Fixed [#42]( https://github.com/NREL/openstudio-calibration-gem/pull/42 ), Update reporting measures in repo to pass in model = nil
|
6
|
+
* Fixed [#43]( https://github.com/NREL/openstudio-calibration-gem/pull/43 ), Check all measures in this repo for multiple tags
|
7
|
+
|
3
8
|
## Version 0.5.0
|
4
9
|
* Support for OpenStudio 3.3 (upgrade to extension gem 0.5.1 and standards gem 0.2.15)
|
5
10
|
- Fixed [#35]( https://github.com/NREL/openstudio-calibration-gem/pull/35 ), adding compatibility matrix and contribution policy
|
@@ -3,9 +3,9 @@
|
|
3
3
|
<schema_version>3.0</schema_version>
|
4
4
|
<name>exterior_wall_thermal_properties_multiplier</name>
|
5
5
|
<uid>6ab39cf2-1f9e-4570-a797-360a814aaa74</uid>
|
6
|
-
<version_id>
|
7
|
-
<version_modified>
|
8
|
-
<xml_checksum>
|
6
|
+
<version_id>cc91b451-1ab1-4b68-9bef-d4e7575e6500</version_id>
|
7
|
+
<version_modified>20220223T012552Z</version_modified>
|
8
|
+
<xml_checksum>EB1A0C08</xml_checksum>
|
9
9
|
<class_name>ExteriorWallThermalPropertiesMultiplier</class_name>
|
10
10
|
<display_name>Exterior Wall Thermal Properties Multiplier</display_name>
|
11
11
|
<description>Change exterior walls by altering the thermal resistance, density, and solar absorptance of the wall constructions by a Multiplier</description>
|
@@ -40,7 +40,6 @@
|
|
40
40
|
<provenances />
|
41
41
|
<tags>
|
42
42
|
<tag>Envelope.Opaque</tag>
|
43
|
-
<tag>Calibration</tag>
|
44
43
|
</tags>
|
45
44
|
<attributes>
|
46
45
|
<attribute>
|
@@ -3,9 +3,9 @@
|
|
3
3
|
<schema_version>3.0</schema_version>
|
4
4
|
<name>exterior_wall_thermal_properties_percent_change</name>
|
5
5
|
<uid>6ab39cf2-1f9e-4570-a797-360a814aaa64</uid>
|
6
|
-
<version_id>
|
7
|
-
<version_modified>
|
8
|
-
<xml_checksum>
|
6
|
+
<version_id>900fc466-62cd-4726-8917-164d0e5c670f</version_id>
|
7
|
+
<version_modified>20220223T012552Z</version_modified>
|
8
|
+
<xml_checksum>EB1A0C08</xml_checksum>
|
9
9
|
<class_name>ExteriorWallThermalPropertiesPercentChange</class_name>
|
10
10
|
<display_name>Exterior Wall Thermal Percent Change</display_name>
|
11
11
|
<description>Change exterior walls by altering the thermal resistance, density, and solar absorptance of the wall constructions by a Percent Change</description>
|
@@ -40,7 +40,6 @@
|
|
40
40
|
<provenances />
|
41
41
|
<tags>
|
42
42
|
<tag>Envelope.Opaque</tag>
|
43
|
-
<tag>Calibration</tag>
|
44
43
|
</tags>
|
45
44
|
<attributes>
|
46
45
|
<attribute>
|
@@ -66,13 +66,15 @@ class HardSizeHVAC < OpenStudio::Measure::ModelMeasure
|
|
66
66
|
def run(model, runner, user_arguments)
|
67
67
|
super(model, runner, user_arguments)
|
68
68
|
|
69
|
-
#
|
70
|
-
|
69
|
+
# Make the standard applier
|
70
|
+
standard = Standard.build('90.1-2004') # template choice doesn't matter
|
71
71
|
|
72
|
-
#
|
73
|
-
|
74
|
-
|
75
|
-
|
72
|
+
# Perform a sizing run (2.5.1 and later)
|
73
|
+
sizing_run_path = OpenStudio::Path.new(File.dirname(__FILE__) + '/output/SR1').to_s
|
74
|
+
runner.registerInfo("Performing sizing run at #{sizing_run_path}.")
|
75
|
+
if standard.model_run_sizing_run(model, sizing_run_path) == false
|
76
|
+
return false
|
77
|
+
end
|
76
78
|
|
77
79
|
# Hard sizing every object in the model.
|
78
80
|
model.applySizingValues
|
@@ -3,8 +3,8 @@
|
|
3
3
|
<schema_version>3.0</schema_version>
|
4
4
|
<name>hard_size_hvac</name>
|
5
5
|
<uid>d7da749f-6318-4077-b502-25994a713b27</uid>
|
6
|
-
<version_id>
|
7
|
-
<version_modified>
|
6
|
+
<version_id>0647d2b3-e8b0-4529-962f-dbb85d4945fa</version_id>
|
7
|
+
<version_modified>20220223T145950Z</version_modified>
|
8
8
|
<xml_checksum>2B526343</xml_checksum>
|
9
9
|
<class_name>HardSizeHVAC</class_name>
|
10
10
|
<display_name>Hard Size HVAC</display_name>
|
@@ -71,12 +71,24 @@
|
|
71
71
|
<version>
|
72
72
|
<software_program>OpenStudio</software_program>
|
73
73
|
<identifier>1.5.0</identifier>
|
74
|
-
<min_compatible>
|
74
|
+
<min_compatible>2.5.1</min_compatible>
|
75
75
|
</version>
|
76
76
|
<filename>measure.rb</filename>
|
77
77
|
<filetype>rb</filetype>
|
78
78
|
<usage_type>script</usage_type>
|
79
|
-
<checksum>
|
79
|
+
<checksum>0920138B</checksum>
|
80
|
+
</file>
|
81
|
+
<file>
|
82
|
+
<filename>small_office.osm</filename>
|
83
|
+
<filetype>osm</filetype>
|
84
|
+
<usage_type>test</usage_type>
|
85
|
+
<checksum>0FB2ACC8</checksum>
|
86
|
+
</file>
|
87
|
+
<file>
|
88
|
+
<filename>hard_size_hvac_test.rb</filename>
|
89
|
+
<filetype>rb</filetype>
|
90
|
+
<usage_type>test</usage_type>
|
91
|
+
<checksum>FA5BB28D</checksum>
|
80
92
|
</file>
|
81
93
|
</files>
|
82
94
|
</measure>
|
@@ -3,9 +3,9 @@
|
|
3
3
|
<schema_version>3.0</schema_version>
|
4
4
|
<name>roof_thermal_properties_multiplier</name>
|
5
5
|
<uid>6c4eb22b-770f-456c-bcd1-084cfad89eeb</uid>
|
6
|
-
<version_id>
|
7
|
-
<version_modified>
|
8
|
-
<xml_checksum>
|
6
|
+
<version_id>5fbeb5c9-bf38-4798-876e-ec5f23962ef0</version_id>
|
7
|
+
<version_modified>20220223T012552Z</version_modified>
|
8
|
+
<xml_checksum>EB1A0C08</xml_checksum>
|
9
9
|
<class_name>RoofThermalPropertiesMultiplier</class_name>
|
10
10
|
<display_name>Roof Thermal Properties Multiplier</display_name>
|
11
11
|
<description>Change Roof by altering the thermal resistance, density, and solar absorptance of the wall constructions by a Multiplier</description>
|
@@ -40,7 +40,6 @@
|
|
40
40
|
<provenances />
|
41
41
|
<tags>
|
42
42
|
<tag>Envelope.Opaque</tag>
|
43
|
-
<tag>Calibration</tag>
|
44
43
|
</tags>
|
45
44
|
<attributes>
|
46
45
|
<attribute>
|
@@ -3,9 +3,9 @@
|
|
3
3
|
<schema_version>3.0</schema_version>
|
4
4
|
<name>roof_thermal_properties_percent_change</name>
|
5
5
|
<uid>07516685-60fd-4da8-9872-1154a995047d</uid>
|
6
|
-
<version_id>
|
7
|
-
<version_modified>
|
8
|
-
<xml_checksum>
|
6
|
+
<version_id>19d0d728-74c8-4344-94ea-af1f1e406f16</version_id>
|
7
|
+
<version_modified>20220223T012552Z</version_modified>
|
8
|
+
<xml_checksum>EB1A0C08</xml_checksum>
|
9
9
|
<class_name>RoofThermalPropertiesPercentChange</class_name>
|
10
10
|
<display_name>Roof Thermal Properties Percent Change</display_name>
|
11
11
|
<description>Change Roof by altering the thermal resistance, density, and solar absorptance of the wall constructions by a Percent Change</description>
|
@@ -40,7 +40,6 @@
|
|
40
40
|
<provenances />
|
41
41
|
<tags>
|
42
42
|
<tag>Envelope.Opaque</tag>
|
43
|
-
<tag>Calibration</tag>
|
44
43
|
</tags>
|
45
44
|
<attributes>
|
46
45
|
<attribute>
|
@@ -2,16 +2,16 @@
|
|
2
2
|
|
3
3
|
###### (Automatically generated documentation)
|
4
4
|
|
5
|
-
#
|
5
|
+
# TimeSeries Objective Function
|
6
6
|
|
7
7
|
## Description
|
8
|
-
|
8
|
+
Creates Objective Function from Timeseries Data
|
9
9
|
|
10
10
|
## Modeler Description
|
11
|
-
|
11
|
+
Creates Objective Function from Timeseries Data. The measure applies a Norm at each timestep between the difference of CSV metered data and SQL model data. A timeseries plot can also be created. Possible outputs are 'cvrmse', 'nmbe', 'simdata' = sum of the simulated data, 'csvdata' = sum of metered data, 'diff' = P Norm between the metered and simulated data if Norm is 1 or 2, else its just the Difference.
|
12
12
|
|
13
13
|
## Measure Type
|
14
|
-
|
14
|
+
ReportingMeasure
|
15
15
|
|
16
16
|
## Taxonomy
|
17
17
|
|
@@ -19,9 +19,175 @@ ModelMeasure
|
|
19
19
|
## Arguments
|
20
20
|
|
21
21
|
|
22
|
+
### Path to CSV file for the metered data
|
23
|
+
Path to CSV file including file name.
|
24
|
+
**Name:** csv_name,
|
25
|
+
**Type:** String,
|
26
|
+
**Units:** ,
|
27
|
+
**Required:** true,
|
28
|
+
**Model Dependent:** false
|
29
|
+
|
30
|
+
### CSV Time Header
|
31
|
+
CSV Time Header Value. Used to determine the timestamp column in the CSV file
|
32
|
+
**Name:** csv_time_header,
|
33
|
+
**Type:** String,
|
34
|
+
**Units:** ,
|
35
|
+
**Required:** true,
|
36
|
+
**Model Dependent:** false
|
37
|
+
|
38
|
+
### CSV variable name
|
39
|
+
CSV variable name. Used to determine the variable column in the CSV file
|
40
|
+
**Name:** csv_var,
|
41
|
+
**Type:** String,
|
42
|
+
**Units:** ,
|
43
|
+
**Required:** true,
|
44
|
+
**Model Dependent:** false
|
45
|
+
|
46
|
+
### Convert Units
|
47
|
+
Convert Units in Metered Data
|
48
|
+
**Name:** convert_data,
|
49
|
+
**Type:** Choice,
|
50
|
+
**Units:** ,
|
51
|
+
**Required:** true,
|
52
|
+
**Model Dependent:** false
|
53
|
+
|
54
|
+
### CSV variable display name
|
55
|
+
CSV variable display name. Not yet Implemented
|
56
|
+
**Name:** csv_var_dn,
|
57
|
+
**Type:** String,
|
58
|
+
**Units:** ,
|
59
|
+
**Required:** true,
|
60
|
+
**Model Dependent:** false
|
61
|
+
|
62
|
+
### Year in csv data timestamp
|
63
|
+
Is the Year in the csv data timestamp => mm:dd:yy or mm:dd (true/false)
|
64
|
+
**Name:** year,
|
65
|
+
**Type:** Boolean,
|
66
|
+
**Units:** ,
|
67
|
+
**Required:** true,
|
68
|
+
**Model Dependent:** false
|
69
|
+
|
70
|
+
### Seconds in csv data timestamp
|
71
|
+
Is the Seconds in the csv data timestamp => hh:mm:ss or hh:mm (true/false)
|
72
|
+
**Name:** seconds,
|
73
|
+
**Type:** Boolean,
|
74
|
+
**Units:** ,
|
75
|
+
**Required:** true,
|
76
|
+
**Model Dependent:** false
|
77
|
+
|
78
|
+
### SQL key value
|
79
|
+
SQL key value for the SQL query to find the variable in the SQL file
|
80
|
+
**Name:** key_value,
|
81
|
+
**Type:** String,
|
82
|
+
**Units:** ,
|
83
|
+
**Required:** true,
|
84
|
+
**Model Dependent:** false
|
85
|
+
|
86
|
+
### TimeSeries Name
|
87
|
+
TimeSeries Name for the SQL query to find the variable in the SQL file
|
88
|
+
**Name:** timeseries_name,
|
89
|
+
**Type:** String,
|
90
|
+
**Units:** ,
|
91
|
+
**Required:** true,
|
92
|
+
**Model Dependent:** false
|
93
|
+
|
94
|
+
### Reporting Frequency
|
95
|
+
Reporting Frequency for SQL Query
|
96
|
+
**Name:** reporting_frequency,
|
97
|
+
**Type:** Choice,
|
98
|
+
**Units:** ,
|
99
|
+
**Required:** true,
|
100
|
+
**Model Dependent:** false
|
101
|
+
|
102
|
+
### Environment Period
|
103
|
+
Environment Period for SQL query
|
104
|
+
**Name:** environment_period,
|
105
|
+
**Type:** String,
|
106
|
+
**Units:** ,
|
107
|
+
**Required:** true,
|
108
|
+
**Model Dependent:** false
|
109
|
+
|
110
|
+
### Norm of the difference of csv and sql
|
111
|
+
Norm of the difference of csv and sql. 1 is absolute value. 2 is euclidean distance. 3 is raw difference.
|
112
|
+
**Name:** norm,
|
113
|
+
**Type:** Double,
|
114
|
+
**Units:** ,
|
115
|
+
**Required:** true,
|
116
|
+
**Model Dependent:** false
|
117
|
+
|
118
|
+
### Scale factor to apply to the difference
|
119
|
+
Scale factor to apply to the difference (1 is no scale)
|
120
|
+
**Name:** scale,
|
121
|
+
**Type:** Double,
|
122
|
+
**Units:** ,
|
123
|
+
**Required:** true,
|
124
|
+
**Model Dependent:** false
|
125
|
+
|
126
|
+
### Find Available data in the SQL file
|
127
|
+
Will RegisterInfo all the 'EnvPeriod', 'ReportingFrequencies', 'VariableNames', 'KeyValues' in the SQL file. Useful for debugging SQL issues.
|
128
|
+
**Name:** find_avail,
|
129
|
+
**Type:** Boolean,
|
130
|
+
**Units:** ,
|
131
|
+
**Required:** true,
|
132
|
+
**Model Dependent:** false
|
133
|
+
|
134
|
+
### algorithm_download
|
135
|
+
Make JSON data available for algorithm_download (true/false)
|
136
|
+
**Name:** algorithm_download,
|
137
|
+
**Type:** Boolean,
|
138
|
+
**Units:** ,
|
139
|
+
**Required:** true,
|
140
|
+
**Model Dependent:** false
|
141
|
+
|
142
|
+
### plot_flag timeseries data
|
143
|
+
Create plot of timeseries data (true/false)
|
144
|
+
**Name:** plot_flag,
|
145
|
+
**Type:** Boolean,
|
146
|
+
**Units:** ,
|
147
|
+
**Required:** true,
|
148
|
+
**Model Dependent:** false
|
149
|
+
|
150
|
+
### Plot name
|
151
|
+
Name to include in reporting file name.
|
152
|
+
**Name:** plot_name,
|
153
|
+
**Type:** String,
|
154
|
+
**Units:** ,
|
155
|
+
**Required:** true,
|
156
|
+
**Model Dependent:** false
|
157
|
+
|
158
|
+
### verbose_messages
|
159
|
+
verbose messages. Useful for debugging but MAJOR Performance Hit.
|
160
|
+
**Name:** verbose_messages,
|
161
|
+
**Type:** Boolean,
|
162
|
+
**Units:** ,
|
163
|
+
**Required:** true,
|
164
|
+
**Model Dependent:** false
|
165
|
+
|
166
|
+
### warning_messages
|
167
|
+
Warn on missing data.
|
168
|
+
**Name:** warning_messages,
|
169
|
+
**Type:** Boolean,
|
170
|
+
**Units:** ,
|
171
|
+
**Required:** true,
|
172
|
+
**Model Dependent:** false
|
173
|
+
|
174
|
+
### add_first_zero_for_plots
|
175
|
+
Add a point of zero value to the plot at the beginning of the runperiod.
|
176
|
+
**Name:** add_first_zero_for_plots,
|
177
|
+
**Type:** Boolean,
|
178
|
+
**Units:** ,
|
179
|
+
**Required:** true,
|
180
|
+
**Model Dependent:** false
|
181
|
+
|
182
|
+
### add_last_zero_for_plots
|
183
|
+
Add a point of zero value to the plot at the end of the runperiod.
|
184
|
+
**Name:** add_last_zero_for_plots,
|
185
|
+
**Type:** Boolean,
|
186
|
+
**Units:** ,
|
187
|
+
**Required:** true,
|
188
|
+
**Model Dependent:** false
|
22
189
|
|
23
190
|
|
24
|
-
This measure does not have any user arguments
|
25
191
|
|
26
192
|
|
27
193
|
|
@@ -59,7 +59,7 @@ class TimeseriesObjectiveFunction < OpenStudio::Measure::ReportingMeasure
|
|
59
59
|
end
|
60
60
|
|
61
61
|
# define the arguments that the user will input
|
62
|
-
def arguments
|
62
|
+
def arguments(model = nil)
|
63
63
|
args = OpenStudio::Measure::OSArgumentVector.new
|
64
64
|
|
65
65
|
# the name of the sql file
|
@@ -3,8 +3,8 @@
|
|
3
3
|
<schema_version>3.0</schema_version>
|
4
4
|
<name>timeseries_objective_function</name>
|
5
5
|
<uid>6804217d-4737-45f3-82df-b81393c29ce3</uid>
|
6
|
-
<version_id>
|
7
|
-
<version_modified>
|
6
|
+
<version_id>300a1bda-e79c-4290-bbd9-bd1fe843264a</version_id>
|
7
|
+
<version_modified>20220223T012006Z</version_modified>
|
8
8
|
<xml_checksum>FFE04372</xml_checksum>
|
9
9
|
<class_name>TimeseriesObjectiveFunction</class_name>
|
10
10
|
<display_name>TimeSeries Objective Function</display_name>
|
@@ -16,43 +16,33 @@
|
|
16
16
|
<display_name>Path to CSV file for the metered data</display_name>
|
17
17
|
<description>Path to CSV file including file name.</description>
|
18
18
|
<type>String</type>
|
19
|
-
<units></units>
|
20
19
|
<required>true</required>
|
21
20
|
<model_dependent>false</model_dependent>
|
22
21
|
<default_value>../../../lib/resources/mtr.csv</default_value>
|
23
|
-
<min_value></min_value>
|
24
|
-
<max_value></max_value>
|
25
22
|
</argument>
|
26
23
|
<argument>
|
27
24
|
<name>csv_time_header</name>
|
28
25
|
<display_name>CSV Time Header</display_name>
|
29
26
|
<description>CSV Time Header Value. Used to determine the timestamp column in the CSV file</description>
|
30
27
|
<type>String</type>
|
31
|
-
<units></units>
|
32
28
|
<required>true</required>
|
33
29
|
<model_dependent>false</model_dependent>
|
34
30
|
<default_value>Date/Time</default_value>
|
35
|
-
<min_value></min_value>
|
36
|
-
<max_value></max_value>
|
37
31
|
</argument>
|
38
32
|
<argument>
|
39
33
|
<name>csv_var</name>
|
40
34
|
<display_name>CSV variable name</display_name>
|
41
35
|
<description>CSV variable name. Used to determine the variable column in the CSV file</description>
|
42
36
|
<type>String</type>
|
43
|
-
<units></units>
|
44
37
|
<required>true</required>
|
45
38
|
<model_dependent>false</model_dependent>
|
46
39
|
<default_value>Whole Building:Facility Total Electric Demand Power [W](TimeStep)</default_value>
|
47
|
-
<min_value></min_value>
|
48
|
-
<max_value></max_value>
|
49
40
|
</argument>
|
50
41
|
<argument>
|
51
42
|
<name>convert_data</name>
|
52
43
|
<display_name>Convert Units</display_name>
|
53
44
|
<description>Convert Units in Metered Data</description>
|
54
45
|
<type>Choice</type>
|
55
|
-
<units></units>
|
56
46
|
<required>true</required>
|
57
47
|
<model_dependent>false</model_dependent>
|
58
48
|
<default_value>None</default_value>
|
@@ -78,27 +68,21 @@
|
|
78
68
|
<display_name>None</display_name>
|
79
69
|
</choice>
|
80
70
|
</choices>
|
81
|
-
<min_value></min_value>
|
82
|
-
<max_value></max_value>
|
83
71
|
</argument>
|
84
72
|
<argument>
|
85
73
|
<name>csv_var_dn</name>
|
86
74
|
<display_name>CSV variable display name</display_name>
|
87
75
|
<description>CSV variable display name. Not yet Implemented</description>
|
88
76
|
<type>String</type>
|
89
|
-
<units></units>
|
90
77
|
<required>true</required>
|
91
78
|
<model_dependent>false</model_dependent>
|
92
79
|
<default_value></default_value>
|
93
|
-
<min_value></min_value>
|
94
|
-
<max_value></max_value>
|
95
80
|
</argument>
|
96
81
|
<argument>
|
97
82
|
<name>year</name>
|
98
83
|
<display_name>Year in csv data timestamp</display_name>
|
99
84
|
<description>Is the Year in the csv data timestamp => mm:dd:yy or mm:dd (true/false)</description>
|
100
85
|
<type>Boolean</type>
|
101
|
-
<units></units>
|
102
86
|
<required>true</required>
|
103
87
|
<model_dependent>false</model_dependent>
|
104
88
|
<default_value>true</default_value>
|
@@ -112,15 +96,12 @@
|
|
112
96
|
<display_name>false</display_name>
|
113
97
|
</choice>
|
114
98
|
</choices>
|
115
|
-
<min_value></min_value>
|
116
|
-
<max_value></max_value>
|
117
99
|
</argument>
|
118
100
|
<argument>
|
119
101
|
<name>seconds</name>
|
120
102
|
<display_name>Seconds in csv data timestamp</display_name>
|
121
103
|
<description>Is the Seconds in the csv data timestamp => hh:mm:ss or hh:mm (true/false)</description>
|
122
104
|
<type>Boolean</type>
|
123
|
-
<units></units>
|
124
105
|
<required>true</required>
|
125
106
|
<model_dependent>false</model_dependent>
|
126
107
|
<default_value>true</default_value>
|
@@ -134,42 +115,32 @@
|
|
134
115
|
<display_name>false</display_name>
|
135
116
|
</choice>
|
136
117
|
</choices>
|
137
|
-
<min_value></min_value>
|
138
|
-
<max_value></max_value>
|
139
118
|
</argument>
|
140
119
|
<argument>
|
141
120
|
<name>key_value</name>
|
142
121
|
<display_name>SQL key value</display_name>
|
143
122
|
<description>SQL key value for the SQL query to find the variable in the SQL file</description>
|
144
123
|
<type>String</type>
|
145
|
-
<units></units>
|
146
124
|
<required>true</required>
|
147
125
|
<model_dependent>false</model_dependent>
|
148
126
|
<default_value></default_value>
|
149
|
-
<min_value></min_value>
|
150
|
-
<max_value></max_value>
|
151
127
|
</argument>
|
152
128
|
<argument>
|
153
129
|
<name>timeseries_name</name>
|
154
130
|
<display_name>TimeSeries Name</display_name>
|
155
131
|
<description>TimeSeries Name for the SQL query to find the variable in the SQL file</description>
|
156
132
|
<type>String</type>
|
157
|
-
<units></units>
|
158
133
|
<required>true</required>
|
159
134
|
<model_dependent>false</model_dependent>
|
160
135
|
<default_value>Facility Total Electric Demand Power</default_value>
|
161
|
-
<min_value></min_value>
|
162
|
-
<max_value></max_value>
|
163
136
|
</argument>
|
164
137
|
<argument>
|
165
138
|
<name>reporting_frequency</name>
|
166
139
|
<display_name>Reporting Frequency</display_name>
|
167
140
|
<description>Reporting Frequency for SQL Query</description>
|
168
141
|
<type>Choice</type>
|
169
|
-
<units></units>
|
170
142
|
<required>true</required>
|
171
143
|
<model_dependent>false</model_dependent>
|
172
|
-
<default_value></default_value>
|
173
144
|
<choices>
|
174
145
|
<choice>
|
175
146
|
<value>Detailed</value>
|
@@ -196,51 +167,39 @@
|
|
196
167
|
<display_name>RunPeriod</display_name>
|
197
168
|
</choice>
|
198
169
|
</choices>
|
199
|
-
<min_value></min_value>
|
200
|
-
<max_value></max_value>
|
201
170
|
</argument>
|
202
171
|
<argument>
|
203
172
|
<name>environment_period</name>
|
204
173
|
<display_name>Environment Period</display_name>
|
205
174
|
<description>Environment Period for SQL query</description>
|
206
175
|
<type>String</type>
|
207
|
-
<units></units>
|
208
176
|
<required>true</required>
|
209
177
|
<model_dependent>false</model_dependent>
|
210
178
|
<default_value>RUN PERIOD 1</default_value>
|
211
|
-
<min_value></min_value>
|
212
|
-
<max_value></max_value>
|
213
179
|
</argument>
|
214
180
|
<argument>
|
215
181
|
<name>norm</name>
|
216
182
|
<display_name>Norm of the difference of csv and sql</display_name>
|
217
183
|
<description>Norm of the difference of csv and sql. 1 is absolute value. 2 is euclidean distance. 3 is raw difference.</description>
|
218
184
|
<type>Double</type>
|
219
|
-
<units></units>
|
220
185
|
<required>true</required>
|
221
186
|
<model_dependent>false</model_dependent>
|
222
187
|
<default_value>1</default_value>
|
223
|
-
<min_value></min_value>
|
224
|
-
<max_value></max_value>
|
225
188
|
</argument>
|
226
189
|
<argument>
|
227
190
|
<name>scale</name>
|
228
191
|
<display_name>Scale factor to apply to the difference</display_name>
|
229
192
|
<description>Scale factor to apply to the difference (1 is no scale)</description>
|
230
193
|
<type>Double</type>
|
231
|
-
<units></units>
|
232
194
|
<required>true</required>
|
233
195
|
<model_dependent>false</model_dependent>
|
234
196
|
<default_value>1</default_value>
|
235
|
-
<min_value></min_value>
|
236
|
-
<max_value></max_value>
|
237
197
|
</argument>
|
238
198
|
<argument>
|
239
199
|
<name>find_avail</name>
|
240
200
|
<display_name>Find Available data in the SQL file</display_name>
|
241
201
|
<description>Will RegisterInfo all the 'EnvPeriod', 'ReportingFrequencies', 'VariableNames', 'KeyValues' in the SQL file. Useful for debugging SQL issues.</description>
|
242
202
|
<type>Boolean</type>
|
243
|
-
<units></units>
|
244
203
|
<required>true</required>
|
245
204
|
<model_dependent>false</model_dependent>
|
246
205
|
<default_value>true</default_value>
|
@@ -254,15 +213,12 @@
|
|
254
213
|
<display_name>false</display_name>
|
255
214
|
</choice>
|
256
215
|
</choices>
|
257
|
-
<min_value></min_value>
|
258
|
-
<max_value></max_value>
|
259
216
|
</argument>
|
260
217
|
<argument>
|
261
218
|
<name>algorithm_download</name>
|
262
219
|
<display_name>algorithm_download</display_name>
|
263
220
|
<description>Make JSON data available for algorithm_download (true/false)</description>
|
264
221
|
<type>Boolean</type>
|
265
|
-
<units></units>
|
266
222
|
<required>true</required>
|
267
223
|
<model_dependent>false</model_dependent>
|
268
224
|
<default_value>false</default_value>
|
@@ -276,15 +232,12 @@
|
|
276
232
|
<display_name>false</display_name>
|
277
233
|
</choice>
|
278
234
|
</choices>
|
279
|
-
<min_value></min_value>
|
280
|
-
<max_value></max_value>
|
281
235
|
</argument>
|
282
236
|
<argument>
|
283
237
|
<name>plot_flag</name>
|
284
238
|
<display_name>plot_flag timeseries data</display_name>
|
285
239
|
<description>Create plot of timeseries data (true/false)</description>
|
286
240
|
<type>Boolean</type>
|
287
|
-
<units></units>
|
288
241
|
<required>true</required>
|
289
242
|
<model_dependent>false</model_dependent>
|
290
243
|
<default_value>true</default_value>
|
@@ -298,27 +251,21 @@
|
|
298
251
|
<display_name>false</display_name>
|
299
252
|
</choice>
|
300
253
|
</choices>
|
301
|
-
<min_value></min_value>
|
302
|
-
<max_value></max_value>
|
303
254
|
</argument>
|
304
255
|
<argument>
|
305
256
|
<name>plot_name</name>
|
306
257
|
<display_name>Plot name</display_name>
|
307
258
|
<description>Name to include in reporting file name.</description>
|
308
259
|
<type>String</type>
|
309
|
-
<units></units>
|
310
260
|
<required>true</required>
|
311
261
|
<model_dependent>false</model_dependent>
|
312
262
|
<default_value></default_value>
|
313
|
-
<min_value></min_value>
|
314
|
-
<max_value></max_value>
|
315
263
|
</argument>
|
316
264
|
<argument>
|
317
265
|
<name>verbose_messages</name>
|
318
266
|
<display_name>verbose_messages</display_name>
|
319
267
|
<description>verbose messages. Useful for debugging but MAJOR Performance Hit.</description>
|
320
268
|
<type>Boolean</type>
|
321
|
-
<units></units>
|
322
269
|
<required>true</required>
|
323
270
|
<model_dependent>false</model_dependent>
|
324
271
|
<default_value>false</default_value>
|
@@ -332,15 +279,12 @@
|
|
332
279
|
<display_name>false</display_name>
|
333
280
|
</choice>
|
334
281
|
</choices>
|
335
|
-
<min_value></min_value>
|
336
|
-
<max_value></max_value>
|
337
282
|
</argument>
|
338
283
|
<argument>
|
339
284
|
<name>warning_messages</name>
|
340
285
|
<display_name>warning_messages</display_name>
|
341
286
|
<description>Warn on missing data.</description>
|
342
287
|
<type>Boolean</type>
|
343
|
-
<units></units>
|
344
288
|
<required>true</required>
|
345
289
|
<model_dependent>false</model_dependent>
|
346
290
|
<default_value>true</default_value>
|
@@ -354,15 +298,12 @@
|
|
354
298
|
<display_name>false</display_name>
|
355
299
|
</choice>
|
356
300
|
</choices>
|
357
|
-
<min_value></min_value>
|
358
|
-
<max_value></max_value>
|
359
301
|
</argument>
|
360
302
|
<argument>
|
361
303
|
<name>add_first_zero_for_plots</name>
|
362
304
|
<display_name>add_first_zero_for_plots</display_name>
|
363
305
|
<description>Add a point of zero value to the plot at the beginning of the runperiod.</description>
|
364
306
|
<type>Boolean</type>
|
365
|
-
<units></units>
|
366
307
|
<required>true</required>
|
367
308
|
<model_dependent>false</model_dependent>
|
368
309
|
<default_value>false</default_value>
|
@@ -376,15 +317,12 @@
|
|
376
317
|
<display_name>false</display_name>
|
377
318
|
</choice>
|
378
319
|
</choices>
|
379
|
-
<min_value></min_value>
|
380
|
-
<max_value></max_value>
|
381
320
|
</argument>
|
382
321
|
<argument>
|
383
322
|
<name>add_last_zero_for_plots</name>
|
384
323
|
<display_name>add_last_zero_for_plots</display_name>
|
385
324
|
<description>Add a point of zero value to the plot at the end of the runperiod.</description>
|
386
325
|
<type>Boolean</type>
|
387
|
-
<units></units>
|
388
326
|
<required>true</required>
|
389
327
|
<model_dependent>false</model_dependent>
|
390
328
|
<default_value>false</default_value>
|
@@ -398,8 +336,6 @@
|
|
398
336
|
<display_name>false</display_name>
|
399
337
|
</choice>
|
400
338
|
</choices>
|
401
|
-
<min_value></min_value>
|
402
|
-
<max_value></max_value>
|
403
339
|
</argument>
|
404
340
|
</arguments>
|
405
341
|
<outputs>
|
@@ -407,45 +343,35 @@
|
|
407
343
|
<name>diff</name>
|
408
344
|
<display_name>diff</display_name>
|
409
345
|
<short_name>diff</short_name>
|
410
|
-
<description></description>
|
411
346
|
<type>Double</type>
|
412
|
-
<units></units>
|
413
347
|
<model_dependent>false</model_dependent>
|
414
348
|
</output>
|
415
349
|
<output>
|
416
350
|
<name>simdata</name>
|
417
351
|
<display_name>simdata</display_name>
|
418
352
|
<short_name>simdata</short_name>
|
419
|
-
<description></description>
|
420
353
|
<type>Double</type>
|
421
|
-
<units></units>
|
422
354
|
<model_dependent>false</model_dependent>
|
423
355
|
</output>
|
424
356
|
<output>
|
425
357
|
<name>csvdata</name>
|
426
358
|
<display_name>csvdata</display_name>
|
427
359
|
<short_name>csvdata</short_name>
|
428
|
-
<description></description>
|
429
360
|
<type>Double</type>
|
430
|
-
<units></units>
|
431
361
|
<model_dependent>false</model_dependent>
|
432
362
|
</output>
|
433
363
|
<output>
|
434
364
|
<name>cvrmse</name>
|
435
365
|
<display_name>cvrmse</display_name>
|
436
366
|
<short_name>cvrmse</short_name>
|
437
|
-
<description></description>
|
438
367
|
<type>Double</type>
|
439
|
-
<units></units>
|
440
368
|
<model_dependent>false</model_dependent>
|
441
369
|
</output>
|
442
370
|
<output>
|
443
371
|
<name>nmbe</name>
|
444
372
|
<display_name>nmbe</display_name>
|
445
373
|
<short_name>nmbe</short_name>
|
446
|
-
<description></description>
|
447
374
|
<type>Double</type>
|
448
|
-
<units></units>
|
449
375
|
<model_dependent>false</model_dependent>
|
450
376
|
</output>
|
451
377
|
</outputs>
|
@@ -477,12 +403,6 @@
|
|
477
403
|
<usage_type>readmeerb</usage_type>
|
478
404
|
<checksum>703C9964</checksum>
|
479
405
|
</file>
|
480
|
-
<file>
|
481
|
-
<filename>README.md</filename>
|
482
|
-
<filetype>md</filetype>
|
483
|
-
<usage_type>readme</usage_type>
|
484
|
-
<checksum>7DE1F2CF</checksum>
|
485
|
-
</file>
|
486
406
|
<file>
|
487
407
|
<filename>LICENSE.md</filename>
|
488
408
|
<filetype>md</filetype>
|
@@ -498,13 +418,19 @@
|
|
498
418
|
<filename>measure.rb</filename>
|
499
419
|
<filetype>rb</filetype>
|
500
420
|
<usage_type>script</usage_type>
|
501
|
-
<checksum>
|
421
|
+
<checksum>70C9D9FB</checksum>
|
422
|
+
</file>
|
423
|
+
<file>
|
424
|
+
<filename>README.md</filename>
|
425
|
+
<filetype>md</filetype>
|
426
|
+
<usage_type>readme</usage_type>
|
427
|
+
<checksum>3F176FE0</checksum>
|
502
428
|
</file>
|
503
429
|
<file>
|
504
430
|
<filename>report.html.erb</filename>
|
505
431
|
<filetype>erb</filetype>
|
506
432
|
<usage_type>resource</usage_type>
|
507
|
-
<checksum>
|
433
|
+
<checksum>4D36345D</checksum>
|
508
434
|
</file>
|
509
435
|
</files>
|
510
436
|
</measure>
|
@@ -2,16 +2,16 @@
|
|
2
2
|
|
3
3
|
###### (Automatically generated documentation)
|
4
4
|
|
5
|
-
#
|
5
|
+
# Timeseries Plot
|
6
6
|
|
7
7
|
## Description
|
8
|
-
|
8
|
+
Creates an interactive timeseries plot of selected variable.
|
9
9
|
|
10
10
|
## Modeler Description
|
11
|
-
|
11
|
+
NOTE: This will load and respond slowly in the OS app, especially if you select * on a variable with many possible keys or you select timestep data. Suggest you open it in a web browser like Chrome instead.
|
12
12
|
|
13
13
|
## Measure Type
|
14
|
-
|
14
|
+
ReportingMeasure
|
15
15
|
|
16
16
|
## Taxonomy
|
17
17
|
|
@@ -19,8 +19,38 @@ ModelMeasure
|
|
19
19
|
## Arguments
|
20
20
|
|
21
21
|
|
22
|
+
### Enter Variable Name.
|
23
|
+
Valid values can be found in the eplusout.rdd file after a simulation is run.
|
24
|
+
**Name:** variable_name,
|
25
|
+
**Type:** String,
|
26
|
+
**Units:** ,
|
27
|
+
**Required:** true,
|
28
|
+
**Model Dependent:** false
|
29
|
+
|
30
|
+
### Reporting Frequency.
|
31
|
+
|
32
|
+
**Name:** reporting_frequency,
|
33
|
+
**Type:** Choice,
|
34
|
+
**Units:** ,
|
35
|
+
**Required:** true,
|
36
|
+
**Model Dependent:** false
|
37
|
+
|
38
|
+
### Enter Key Name.
|
39
|
+
Enter * for all objects or the full name of a specific object to.
|
40
|
+
**Name:** key_value,
|
41
|
+
**Type:** String,
|
42
|
+
**Units:** ,
|
43
|
+
**Required:** true,
|
44
|
+
**Model Dependent:** false
|
45
|
+
|
46
|
+
### availableEnvPeriods
|
47
|
+
availableEnvPeriods
|
48
|
+
**Name:** env,
|
49
|
+
**Type:** String,
|
50
|
+
**Units:** ,
|
51
|
+
**Required:** true,
|
52
|
+
**Model Dependent:** false
|
22
53
|
|
23
54
|
|
24
|
-
This measure does not have any user arguments
|
25
55
|
|
26
56
|
|
@@ -56,7 +56,7 @@ class TimeseriesPlot < OpenStudio::Measure::ReportingMeasure
|
|
56
56
|
end
|
57
57
|
|
58
58
|
# define the arguments that the user will input
|
59
|
-
def arguments
|
59
|
+
def arguments(model = nil)
|
60
60
|
args = OpenStudio::Measure::OSArgumentVector.new
|
61
61
|
|
62
62
|
# make an argument for the variable name
|
@@ -3,8 +3,8 @@
|
|
3
3
|
<schema_version>3.0</schema_version>
|
4
4
|
<name>timeseries_plot</name>
|
5
5
|
<uid>6804217d-4737-45f3-82df-b81393c29ce7</uid>
|
6
|
-
<version_id>
|
7
|
-
<version_modified>
|
6
|
+
<version_id>f98dc824-7042-4ea0-be6d-200a24b5757e</version_id>
|
7
|
+
<version_modified>20220223T012006Z</version_modified>
|
8
8
|
<xml_checksum>FFE04372</xml_checksum>
|
9
9
|
<class_name>TimeseriesPlot</class_name>
|
10
10
|
<display_name>Timeseries Plot</display_name>
|
@@ -16,19 +16,13 @@
|
|
16
16
|
<display_name>Enter Variable Name.</display_name>
|
17
17
|
<description>Valid values can be found in the eplusout.rdd file after a simulation is run.</description>
|
18
18
|
<type>String</type>
|
19
|
-
<units></units>
|
20
19
|
<required>true</required>
|
21
20
|
<model_dependent>false</model_dependent>
|
22
|
-
<default_value></default_value>
|
23
|
-
<min_value></min_value>
|
24
|
-
<max_value></max_value>
|
25
21
|
</argument>
|
26
22
|
<argument>
|
27
23
|
<name>reporting_frequency</name>
|
28
24
|
<display_name>Reporting Frequency.</display_name>
|
29
|
-
<description></description>
|
30
25
|
<type>Choice</type>
|
31
|
-
<units></units>
|
32
26
|
<required>true</required>
|
33
27
|
<model_dependent>false</model_dependent>
|
34
28
|
<default_value>Hourly</default_value>
|
@@ -62,32 +56,24 @@
|
|
62
56
|
<display_name>Runperiod</display_name>
|
63
57
|
</choice>
|
64
58
|
</choices>
|
65
|
-
<min_value></min_value>
|
66
|
-
<max_value></max_value>
|
67
59
|
</argument>
|
68
60
|
<argument>
|
69
61
|
<name>key_value</name>
|
70
62
|
<display_name>Enter Key Name.</display_name>
|
71
63
|
<description>Enter * for all objects or the full name of a specific object to.</description>
|
72
64
|
<type>String</type>
|
73
|
-
<units></units>
|
74
65
|
<required>true</required>
|
75
66
|
<model_dependent>false</model_dependent>
|
76
67
|
<default_value>*</default_value>
|
77
|
-
<min_value></min_value>
|
78
|
-
<max_value></max_value>
|
79
68
|
</argument>
|
80
69
|
<argument>
|
81
70
|
<name>env</name>
|
82
71
|
<display_name>availableEnvPeriods</display_name>
|
83
72
|
<description>availableEnvPeriods</description>
|
84
73
|
<type>String</type>
|
85
|
-
<units></units>
|
86
74
|
<required>true</required>
|
87
75
|
<model_dependent>false</model_dependent>
|
88
76
|
<default_value>RUN PERIOD 1</default_value>
|
89
|
-
<min_value></min_value>
|
90
|
-
<max_value></max_value>
|
91
77
|
</argument>
|
92
78
|
</arguments>
|
93
79
|
<outputs />
|
@@ -119,12 +105,6 @@
|
|
119
105
|
<usage_type>readmeerb</usage_type>
|
120
106
|
<checksum>703C9964</checksum>
|
121
107
|
</file>
|
122
|
-
<file>
|
123
|
-
<filename>README.md</filename>
|
124
|
-
<filetype>md</filetype>
|
125
|
-
<usage_type>readme</usage_type>
|
126
|
-
<checksum>0B68E96D</checksum>
|
127
|
-
</file>
|
128
108
|
<file>
|
129
109
|
<filename>LICENSE.md</filename>
|
130
110
|
<filetype>md</filetype>
|
@@ -140,13 +120,19 @@
|
|
140
120
|
<filename>measure.rb</filename>
|
141
121
|
<filetype>rb</filetype>
|
142
122
|
<usage_type>script</usage_type>
|
143
|
-
<checksum>
|
123
|
+
<checksum>210E98F2</checksum>
|
124
|
+
</file>
|
125
|
+
<file>
|
126
|
+
<filename>README.md</filename>
|
127
|
+
<filetype>md</filetype>
|
128
|
+
<usage_type>readme</usage_type>
|
129
|
+
<checksum>A3A04D6D</checksum>
|
144
130
|
</file>
|
145
131
|
<file>
|
146
132
|
<filename>report.html.erb</filename>
|
147
133
|
<filetype>erb</filetype>
|
148
134
|
<usage_type>resource</usage_type>
|
149
|
-
<checksum>
|
135
|
+
<checksum>279ABA14</checksum>
|
150
136
|
</file>
|
151
137
|
</files>
|
152
138
|
</measure>
|
metadata
CHANGED
@@ -1,15 +1,15 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: openstudio-calibration
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.5.
|
4
|
+
version: 0.5.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Brian Ball
|
8
8
|
- Nicholas Long
|
9
|
-
autorequire:
|
9
|
+
autorequire:
|
10
10
|
bindir: exe
|
11
11
|
cert_chain: []
|
12
|
-
date:
|
12
|
+
date: 2022-02-24 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: bundler
|
@@ -276,7 +276,6 @@ files:
|
|
276
276
|
- lib/measures/inspect_and_edit_parametric_schedules/LICENSE.md
|
277
277
|
- lib/measures/inspect_and_edit_parametric_schedules/README.md
|
278
278
|
- lib/measures/inspect_and_edit_parametric_schedules/README.md.erb
|
279
|
-
- lib/measures/inspect_and_edit_parametric_schedules/docs/.gitkeep
|
280
279
|
- lib/measures/inspect_and_edit_parametric_schedules/docs/apply_measures_now.png
|
281
280
|
- lib/measures/inspect_and_edit_parametric_schedules/measure.rb
|
282
281
|
- lib/measures/inspect_and_edit_parametric_schedules/measure.xml
|
@@ -296,8 +295,8 @@ licenses: []
|
|
296
295
|
metadata:
|
297
296
|
bug_tracker_uri: https://github.com/NREL/openstudio-calibration-gem/issues
|
298
297
|
changelog_uri: https://github.com/NREL/openstudio-calibration-gem/blob/develop/CHANGELOG.md
|
299
|
-
source_code_uri: https://github.com/NREL/openstudio-calibration-gem/tree/v0.5.
|
300
|
-
post_install_message:
|
298
|
+
source_code_uri: https://github.com/NREL/openstudio-calibration-gem/tree/v0.5.1
|
299
|
+
post_install_message:
|
301
300
|
rdoc_options: []
|
302
301
|
require_paths:
|
303
302
|
- lib
|
@@ -313,7 +312,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
313
312
|
version: '0'
|
314
313
|
requirements: []
|
315
314
|
rubygems_version: 3.1.4
|
316
|
-
signing_key:
|
315
|
+
signing_key:
|
317
316
|
specification_version: 4
|
318
317
|
summary: openstudio base gem for creating generic extensions with encapsulated data
|
319
318
|
and measures.
|
File without changes
|