openstudio-geb 0.4.0 → 0.6.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/.gitignore +7 -3
- data/CHANGELOG.md +7 -0
- data/Gemfile +7 -17
- data/files/seasonal_shedding_peak_hours.json +1 -0
- data/files/seasonal_shifting_peak_hours.json +1 -0
- data/files/seasonal_shifting_take_hours.json +1 -0
- data/lib/measures/AddElectricVehicleChargingLoad/measure.rb +247 -21
- data/lib/measures/AddElectricVehicleChargingLoad/tests/CZ06RV2.epw +8768 -0
- data/lib/measures/AddElectricVehicleChargingLoad/tests/add_electric_vehicle_charging_load_test.rb +40 -141
- data/lib/measures/AddElectricVehicleChargingLoad/tests/test.osm +55 -55
- data/lib/measures/AdjustThermostatSetpointsByDegreesForPeakHours/measure.rb +963 -442
- data/lib/measures/add_ceiling_fan/measure.rb +2 -2
- data/lib/measures/add_chilled_water_storage_tank/measure.rb +2 -2
- data/lib/measures/add_exterior_blinds_and_control/measure.rb +6 -5
- data/lib/measures/add_interior_blinds_and_control/measure.rb +5 -5
- data/lib/measures/add_rooftop_pv_simple/measure.rb +13 -10
- data/lib/measures/apply_dynamic_coating_to_roof_wall/measure.rb +2 -2
- data/lib/measures/average_ventilation_for_peak_hours/measure.rb +5 -5
- data/lib/measures/enable_occupancy_driven_lighting/measure.rb +2 -2
- data/lib/measures/precooling/measure.rb +964 -354
- data/lib/measures/preheating/measure.rb +940 -356
- data/lib/measures/reduce_epd_by_percentage_for_peak_hours/measure.rb +509 -300
- data/lib/measures/reduce_lpd_by_percentage_for_peak_hours/measure.rb +534 -309
- data/lib/openstudio/geb/run.rb +5 -1
- data/lib/openstudio/geb/utilities.rb +3 -2
- data/lib/openstudio/geb/version.rb +1 -1
- data/openstudio-geb.gemspec +7 -6
- metadata +24 -48
@@ -406,7 +406,7 @@ class AddCeilingFan < OpenStudio::Measure::ModelMeasure
|
|
406
406
|
|
407
407
|
end
|
408
408
|
|
409
|
-
def adjust_cool_sch(model, sch, cool_stp_inc, start_date, end_date, start_time, end_time)
|
409
|
+
def adjust_cool_sch(model, runner, sch, cool_stp_inc, start_date, end_date, start_time, end_time)
|
410
410
|
new_sch = sch.get.clone(model)
|
411
411
|
new_sch = new_sch.to_Schedule.get
|
412
412
|
new_sch.setName("#{sch.get.name.to_s} increased by #{cool_stp_inc}C due to ceiling fan")
|
@@ -532,7 +532,7 @@ class AddCeilingFan < OpenStudio::Measure::ModelMeasure
|
|
532
532
|
end
|
533
533
|
|
534
534
|
runner.registerInfo("adjusting schedule #{clg_set_sch.get.name.to_s}")
|
535
|
-
new_sch = adjust_cool_sch(model, clg_set_sch, cool_stp_increase_C, os_start_date, os_end_date, os_start_time, os_end_time)
|
535
|
+
new_sch = adjust_cool_sch(model, runner, clg_set_sch, cool_stp_increase_C, os_start_date, os_end_date, os_start_time, os_end_time)
|
536
536
|
|
537
537
|
# hook up clone to thermostat
|
538
538
|
thermostat.setCoolingSetpointTemperatureSchedule(new_sch)
|
@@ -477,9 +477,9 @@ class AddChilledWaterStorageTank < OpenStudio::Measure::ModelMeasure
|
|
477
477
|
# return false
|
478
478
|
# end
|
479
479
|
run_output_path = runner.getPathArgumentValue('run_output_path', user_arguments)
|
480
|
-
Dir.mkdir(run_output_path.to_s) unless File.
|
480
|
+
Dir.mkdir(run_output_path.to_s) unless File.exist?(run_output_path.to_s)
|
481
481
|
sizing_output_path = File.expand_path(File.join(run_output_path.to_s, 'sizing_run'))
|
482
|
-
Dir.mkdir(sizing_output_path.to_s) unless File.
|
482
|
+
Dir.mkdir(sizing_output_path.to_s) unless File.exist?(sizing_output_path.to_s)
|
483
483
|
|
484
484
|
# Change the simulation to only run the sizing days
|
485
485
|
sim_control = model.getSimulationControl
|
@@ -7,11 +7,11 @@
|
|
7
7
|
# http://nrel.github.io/OpenStudio-user-documentation/reference/measure_writing_guide/
|
8
8
|
|
9
9
|
# start the measure
|
10
|
-
require 'openstudio/extension/core/os_lib_helper_methods'
|
11
|
-
require 'openstudio/extension/core/os_lib_schedules'
|
10
|
+
# require 'openstudio/extension/core/os_lib_helper_methods'
|
11
|
+
# require 'openstudio/extension/core/os_lib_schedules'
|
12
|
+
require 'openstudio-standards'
|
12
13
|
class AddExteriorBlindsAndControl < OpenStudio::Measure::ModelMeasure
|
13
|
-
|
14
|
-
include OsLib_Schedules
|
14
|
+
|
15
15
|
# human readable name
|
16
16
|
def name
|
17
17
|
# Measure name should be the title case of the class name.
|
@@ -142,7 +142,8 @@ class AddExteriorBlindsAndControl < OpenStudio::Measure::ModelMeasure
|
|
142
142
|
'default_day' => ["default day"] + normal_day_data_pairs,
|
143
143
|
'rules' => [['Adjusted days', "#{start_month}/#{start_day}-#{end_month}/#{end_day}",
|
144
144
|
'Sun/Mon/Tue/Wed/Thu/Fri/Sat'] + adjusted_day_data_pairs] }
|
145
|
-
global_shading_schedule = OsLib_Schedules.createComplexSchedule(model, options)
|
145
|
+
# global_shading_schedule = OsLib_Schedules.createComplexSchedule(model, options)
|
146
|
+
global_shading_schedule = OpenstudioStandards::Schedules.create_complex_schedule(model, options)
|
146
147
|
runner.registerInfo("A new schedule 'Exterior blinds schedule' has been created for new shading control objects.")
|
147
148
|
end
|
148
149
|
unless space_shading_control
|
@@ -9,11 +9,10 @@
|
|
9
9
|
# http://nrel.github.io/OpenStudio-user-documentation/reference/measure_writing_guide/
|
10
10
|
|
11
11
|
# start the measure
|
12
|
-
require 'openstudio/extension/core/os_lib_helper_methods'
|
13
|
-
require 'openstudio/extension/core/os_lib_schedules'
|
12
|
+
# require 'openstudio/extension/core/os_lib_helper_methods'
|
13
|
+
# require 'openstudio/extension/core/os_lib_schedules'
|
14
|
+
require 'openstudio-standards'
|
14
15
|
class AddInteriorBlindsAndControl < OpenStudio::Measure::ModelMeasure
|
15
|
-
include OsLib_HelperMethods
|
16
|
-
include OsLib_Schedules
|
17
16
|
# human readable name
|
18
17
|
def name
|
19
18
|
# Measure name should be the title case of the class name.
|
@@ -144,7 +143,8 @@ class AddInteriorBlindsAndControl < OpenStudio::Measure::ModelMeasure
|
|
144
143
|
'default_day' => ["default day"] + normal_day_data_pairs,
|
145
144
|
'rules' => [['Adjusted days', "#{start_month}/#{start_day}-#{end_month}/#{end_day}",
|
146
145
|
'Sun/Mon/Tue/Wed/Thu/Fri/Sat'] + adjusted_day_data_pairs] }
|
147
|
-
global_shading_schedule = OsLib_Schedules.createComplexSchedule(model, options)
|
146
|
+
# global_shading_schedule = OsLib_Schedules.createComplexSchedule(model, options)
|
147
|
+
global_shading_schedule = OpenstudioStandards::Schedules.create_complex_schedule(model, options)
|
148
148
|
runner.registerInfo("A new schedule 'Interior blinds schedule' has been created for new shading control objects.")
|
149
149
|
end
|
150
150
|
unless space_shading_control
|
@@ -7,9 +7,10 @@
|
|
7
7
|
# http://nrel.github.io/OpenStudio-user-documentation/measures/measure_writing_guide/
|
8
8
|
|
9
9
|
# load OpenStudio measure libraries from openstudio-extension gem
|
10
|
-
require 'openstudio-extension'
|
11
|
-
require 'openstudio/extension/core/os_lib_helper_methods'
|
12
|
-
require 'openstudio/extension/core/os_lib_schedules'
|
10
|
+
# require 'openstudio-extension'
|
11
|
+
# require 'openstudio/extension/core/os_lib_helper_methods'
|
12
|
+
# require 'openstudio/extension/core/os_lib_schedules'
|
13
|
+
require 'openstudio-standards'
|
13
14
|
|
14
15
|
# start the measure
|
15
16
|
# this measure originally came from BCL (https://bcl.nrel.gov/results/?fq=bundle:measure&fq=measure_tags:Onsite%20Power%20Generation.Photovoltaic&show_rows=25)
|
@@ -69,8 +70,9 @@ class AddRooftopPV < OpenStudio::Measure::ModelMeasure
|
|
69
70
|
end
|
70
71
|
|
71
72
|
# assign the user inputs to variables
|
72
|
-
args = OsLib_HelperMethods.createRunVariables(runner, model, user_arguments, arguments(model))
|
73
|
-
|
73
|
+
# args = OsLib_HelperMethods.createRunVariables(runner, model, user_arguments, arguments(model))
|
74
|
+
args = runner.getArgumentValues(arguments(model), user_arguments)
|
75
|
+
unless args then return false end
|
74
76
|
|
75
77
|
# check expected values of double arguments
|
76
78
|
# todo - not sure why this isn't working. Elsewhere it is used on E+ and reporting measures.
|
@@ -87,7 +89,7 @@ class AddRooftopPV < OpenStudio::Measure::ModelMeasure
|
|
87
89
|
|
88
90
|
# create the inverter
|
89
91
|
inverter = OpenStudio::Model::ElectricLoadCenterInverterSimple.new(model)
|
90
|
-
inverter.setInverterEfficiency(args[
|
92
|
+
inverter.setInverterEfficiency(args[:inverter_efficiency])
|
91
93
|
runner.registerInfo("Created inverter with efficiency of #{inverter.inverterEfficiency}")
|
92
94
|
|
93
95
|
# create the distribution system
|
@@ -95,14 +97,15 @@ class AddRooftopPV < OpenStudio::Measure::ModelMeasure
|
|
95
97
|
elcd.setInverter(inverter)
|
96
98
|
|
97
99
|
# create shared shading transmittance schedule
|
98
|
-
target_transmittance = 1.0 - args[
|
100
|
+
target_transmittance = 1.0 - args[:fraction_of_surface].to_f
|
99
101
|
inputs = {
|
100
102
|
'name' => 'PV Shading Transmittance Schedule',
|
101
103
|
'winterTimeValuePairs' => { 24.0 => target_transmittance },
|
102
104
|
'summerTimeValuePairs' => { 24.0 => target_transmittance },
|
103
105
|
'defaultTimeValuePairs' => { 24.0 => target_transmittance }
|
104
106
|
}
|
105
|
-
pv_shading_transmittance_schedule = OsLib_Schedules.createSimpleSchedule(model, inputs)
|
107
|
+
# pv_shading_transmittance_schedule = OsLib_Schedules.createSimpleSchedule(model, inputs)
|
108
|
+
pv_shading_transmittance_schedule = OpenstudioStandards::Schedules.create_simple_schedule(model, inputs)
|
106
109
|
runner.registerInfo("Created transmittance schedule for PV shading surfaces with constant value of #{target_transmittance}")
|
107
110
|
|
108
111
|
model.getSurfaces.each do |surface|
|
@@ -129,8 +132,8 @@ class AddRooftopPV < OpenStudio::Measure::ModelMeasure
|
|
129
132
|
panel = OpenStudio::Model::GeneratorPhotovoltaic.simple(model)
|
130
133
|
panel.setSurface(shading_surface)
|
131
134
|
performance = panel.photovoltaicPerformance.to_PhotovoltaicPerformanceSimple.get
|
132
|
-
performance.setFractionOfSurfaceAreaWithActiveSolarCells(args[
|
133
|
-
performance.setFixedEfficiency(args[
|
135
|
+
performance.setFractionOfSurfaceAreaWithActiveSolarCells(args[:fraction_of_surface])
|
136
|
+
performance.setFixedEfficiency(args[:cell_efficiency])
|
134
137
|
|
135
138
|
# connect panel to electric load center distribution
|
136
139
|
elcd.addGenerator(panel)
|
@@ -332,9 +332,9 @@ class ApplyDynamicCoatingToRoofWall < OpenStudio::Measure::EnergyPlusMeasure
|
|
332
332
|
string_objects = []
|
333
333
|
|
334
334
|
mat_list.each do |mat|
|
335
|
-
|
336
|
-
mat_name = mat.getString(0).to_s # name
|
335
|
+
mat_name = mat.getString(0) # name
|
337
336
|
# no need to clone the material object (in case it is also used in other constructions) because thermal and solar absorptances only matter when the material is on the outside layer
|
337
|
+
puts mat_name.to_s.split(',')
|
338
338
|
puts "mat_name: #{mat_name}"
|
339
339
|
|
340
340
|
# based on applied surfaces type, add material objects
|
@@ -9,11 +9,10 @@
|
|
9
9
|
# http://nrel.github.io/OpenStudio-user-documentation/reference/measure_writing_guide/
|
10
10
|
|
11
11
|
# start the measure
|
12
|
-
require 'openstudio/extension/core/os_lib_helper_methods'
|
13
|
-
require 'openstudio/extension/core/os_lib_schedules'
|
12
|
+
# require 'openstudio/extension/core/os_lib_helper_methods'
|
13
|
+
# require 'openstudio/extension/core/os_lib_schedules'
|
14
|
+
require 'openstudio-standards'
|
14
15
|
class AverageVentilationForPeakHours < OpenStudio::Measure::ModelMeasure
|
15
|
-
include OsLib_HelperMethods
|
16
|
-
include OsLib_Schedules
|
17
16
|
# human readable name
|
18
17
|
def name
|
19
18
|
return "Average Ventilation for Peak Hours"
|
@@ -188,7 +187,8 @@ class AverageVentilationForPeakHours < OpenStudio::Measure::ModelMeasure
|
|
188
187
|
'default_day' => ["default day"] + normal_day_data_pairs,
|
189
188
|
'rules' => [['Adjusted days', "#{start_month1}/#{start_day1}-#{end_month1}/#{end_day1}",
|
190
189
|
'Sun/Mon/Tue/Wed/Thu/Fri/Sat'] + adjusted_day_data_pairs] }
|
191
|
-
new_oa_sch = OsLib_Schedules.createComplexSchedule(model, options)
|
190
|
+
# new_oa_sch = OsLib_Schedules.createComplexSchedule(model, options)
|
191
|
+
new_oa_sch = OpenstudioStandards::Schedules.create_complex_schedule(model, options)
|
192
192
|
outdoor_air_object.setOutdoorAirFlowRateFractionSchedule(new_oa_sch)
|
193
193
|
else
|
194
194
|
if schedules.key?(oa_sch.get.name.to_s)
|
@@ -66,9 +66,9 @@ class EnableOccupancyDrivenLighting < OpenStudio::Measure::ModelMeasure
|
|
66
66
|
end
|
67
67
|
runner.registerInfo("Pre-run output path: #{run_output_path}")
|
68
68
|
|
69
|
-
Dir.mkdir(run_output_path) unless File.
|
69
|
+
Dir.mkdir(run_output_path) unless File.exist?(run_output_path)
|
70
70
|
prerun_dir = File.join(run_output_path, 'pre-run')
|
71
|
-
Dir.mkdir(prerun_dir) unless File.
|
71
|
+
Dir.mkdir(prerun_dir) unless File.exist?(prerun_dir)
|
72
72
|
prerun_osw_path = File.join(prerun_dir, 'sizing.osm')
|
73
73
|
model.save(prerun_osw_path, true) # true is overwrite
|
74
74
|
|