honeybee-openstudio 2.30.0 → 2.30.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: e61c104adc3d8f346115f29cfdc29e268a8668ba11d5bf3e44fdd054f75f95ba
4
- data.tar.gz: 1d9b02e466124bbf3c72bb15e54308146ad0076d7e98339929fddac8d3018200
3
+ metadata.gz: c29446da276535ec1ad4119d8063832c45cc11afb8583294e4b1389dbb662136
4
+ data.tar.gz: 93c012855984051dafb92b4f8729c207b703bd23b785ab611ab922c24a982bcc
5
5
  SHA512:
6
- metadata.gz: cdf371172756c14205799e1a476517c64587a261e4331828ddce046082d256e70511ab00cb50275f35ee080deb44f1ce4a7f35bb8a04e21bf8fe94a805c21888
7
- data.tar.gz: a76dff993fb5fc51ea9d11d1999553d2f8a43fd107cb17864a6c8dc8ceac9999ca00d64b68d0f51261a70e91991952b5fda794d168f98f4f0470a6767dc680e2
6
+ metadata.gz: 3c41fa8ee56a59caa04f12351ec56a1bc7c9e5f579f12b24f5fafcbd54a1597381cf8b53828e59d93778aaa69a4bb2c54834929a3acd21431f4161578c270b88
7
+ data.tar.gz: 5b7e0de5cc99ffcdef04c36ff055a7d4fec9f6c879e2b69c841f26fa95d7e5e9d630dc68453c8e614ac6cd89983e12e0afb444f025d08b7ba356e6394486b314
@@ -4,7 +4,7 @@ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
4
4
 
5
5
  Gem::Specification.new do |spec|
6
6
  spec.name = 'honeybee-openstudio'
7
- spec.version = '2.30.0'
7
+ spec.version = '2.30.4'
8
8
  spec.authors = ['Tanushree Charan', 'Dan Macumber', 'Chris Mackey', 'Mostapha Sadeghipour Roudsari']
9
9
  spec.email = ['tanushree.charan@nrel.gov', 'chris@ladybug.tools']
10
10
 
@@ -21,7 +21,8 @@
21
21
  "add_blended_rates_to_urdb_rate": false,
22
22
  "net_metering_limit_kw": 0,
23
23
  "interconnection_limit_kw": 100000000.0,
24
- "urdb_label": "5e162e2a5457a3d50873e3af"
24
+ "blended_monthly_demand_charges_us_dollars_per_kw": [10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10],
25
+ "blended_monthly_rates_us_dollars_per_kwh": [0.13, 0.13, 0.13, 0.13, 0.13, 0.13, 0.13, 0.13, 0.13, 0.13, 0.13, 0.13]
25
26
  },
26
27
  "Wind": {
27
28
  "min_kw": 0,
@@ -46,11 +47,10 @@
46
47
  "pbi_years": 1,
47
48
  "pbi_system_max_kw": 1000000000.0
48
49
  },
49
- "PV": {
50
+ "PV": [{
50
51
  "pv_name": "Roof - South Face",
51
52
  "location":"roof",
52
53
  "existing_kw": 0,
53
- "existing_kw": 0,
54
54
  "min_kw": 0,
55
55
  "max_kw": 1000000000.0,
56
56
  "installed_cost_us_dollars_per_kw": 1600,
@@ -77,12 +77,48 @@
77
77
  "losses": 0.14,
78
78
  "array_type": 1,
79
79
  "module_type": 0,
80
- "gcr": 0.4,
80
+ "gcr": 0.99,
81
81
  "dc_ac_ratio": 1.2,
82
82
  "inv_eff": 0.96,
83
83
  "radius": 0,
84
84
  "tilt": 0.537
85
85
  },
86
+ {
87
+ "pv_name": "Groundmount",
88
+ "location":"ground",
89
+ "existing_kw": 0,
90
+ "min_kw": 0,
91
+ "max_kw": 1000000000.0,
92
+ "installed_cost_us_dollars_per_kw": 2200,
93
+ "om_cost_us_dollars_per_kw": 16,
94
+ "macrs_option_years": 5,
95
+ "macrs_bonus_pct": 1,
96
+ "macrs_itc_reduction": 0.5,
97
+ "federal_itc_pct": 0.26,
98
+ "state_ibi_pct": 0,
99
+ "state_ibi_max_us_dollars": 10000000000.0,
100
+ "utility_ibi_pct": 0,
101
+ "utility_ibi_max_us_dollars": 10000000000.0,
102
+ "federal_rebate_us_dollars_per_kw": 0,
103
+ "state_rebate_us_dollars_per_kw": 0,
104
+ "state_rebate_max_us_dollars": 10000000000.0,
105
+ "utility_rebate_us_dollars_per_kw": 0,
106
+ "utility_rebate_max_us_dollars": 10000000000.0,
107
+ "pbi_us_dollars_per_kwh": 0,
108
+ "pbi_max_us_dollars": 1000000000.0,
109
+ "pbi_years": 1,
110
+ "pbi_system_max_kw": 1000000000.0,
111
+ "degradation_pct": 0.005,
112
+ "azimuth": 180,
113
+ "losses": 0.14,
114
+ "array_type": 0,
115
+ "module_type": 0,
116
+ "gcr": 0.99,
117
+ "dc_ac_ratio": 1.2,
118
+ "inv_eff": 0.96,
119
+ "radius": 0,
120
+ "tilt": 0.537
121
+ }],
86
122
  "Storage": {
87
123
  "min_kw": 0,
88
124
  "max_kw": 1000000,
@@ -142,3 +178,4 @@
142
178
  "time_steps_per_hour": 1
143
179
  }
144
180
  }
181
+
@@ -35,6 +35,23 @@ require 'to_openstudio/model_object'
35
35
  module Honeybee
36
36
  class ScheduleTypeLimit < ModelObject
37
37
 
38
+ @@unit_types = [
39
+ 'Dimensionless',
40
+ 'Temperature',
41
+ 'DeltaTemperature',
42
+ 'PrecipitationRate',
43
+ 'Angle',
44
+ 'ConvectionCoefficient',
45
+ 'ActivityLevel',
46
+ 'Velocity',
47
+ 'Capacity',
48
+ 'Power',
49
+ 'Availability',
50
+ 'Percent',
51
+ 'Control',
52
+ 'Mode'
53
+ ]
54
+
38
55
  def self.from_schedule_type_limit(schedule_type_limit)
39
56
  # create an empty hash
40
57
  hash = {}
@@ -71,7 +88,9 @@ module Honeybee
71
88
  elsif unit_type == 'Controlmode'
72
89
  unit_type = 'Control'
73
90
  end
74
- hash[:unit_type] = unit_type
91
+ if @@unit_types.include? unit_type
92
+ hash[:unit_type] = unit_type
93
+ end
75
94
 
76
95
  hash
77
96
  end
@@ -43,6 +43,9 @@ module Honeybee
43
43
  unless @hash[:display_name].nil?
44
44
  os_ideal_air.setDisplayName(@hash[:display_name])
45
45
  end
46
+ # use no dehumidification unless there's a humidistat
47
+ os_ideal_air.setDehumidificationControlType('None')
48
+
46
49
  # assign the economizer type
47
50
  if @hash[:economizer_type]
48
51
  os_ideal_air.setOutdoorAirEconomizerType(@hash[:economizer_type])
@@ -86,25 +86,38 @@ module Honeybee
86
86
  eq_type = shw_hash[:equipment_type]
87
87
  if eq_type == 'Default_District_SHW'
88
88
  # add a district heating system to supply the heat for the loop
89
- district_hw = OpenStudio::Model::DistrictHeating.new(openstudio_model)
90
- district_hw.setName('Service Hot Water District Heat')
91
- district_hw.setNominalCapacity(1000000)
89
+ district_hw = OpenStudio::Model::WaterHeaterMixed.new(openstudio_model)
90
+ district_hw.setName('Ideal Service Hot Water Heater')
91
+ district_hw.setHeaterFuelType('DistrictHeating')
92
+ district_hw.setOffCycleParasiticFuelType('DistrictHeating')
93
+ district_hw.setOnCycleParasiticFuelType('DistrictHeating')
94
+ district_hw.setHeaterThermalEfficiency(1.0)
95
+ district_hw.setHeaterMaximumCapacity(1000000)
96
+ district_hw.setTankVolume(0)
97
+ district_hw.setHeaterControlType('Modulate')
98
+ target_sch_name = '22C Ambient Condition'
99
+ target_sch = create_constant_schedule(openstudio_model, target_sch_name, 22)
100
+ district_hw.setAmbientTemperatureSchedule(target_sch)
101
+ district_hw.setOffCycleLossCoefficienttoAmbientTemperature(0)
102
+ district_hw.setOnCycleLossCoefficienttoAmbientTemperature(0)
92
103
  hot_water_plant.addSupplyBranchForComponent(district_hw)
93
- elsif eq_type == 'Gas_WaterHeater' || eq_type == 'Electric_WaterHeater' || eq_type == 'HeatPump_WaterHeater'
104
+ # try to minimize the impact of the pump as much as possible
105
+ hot_water_pump.setEndUseSubcategory('Water Systems')
106
+ hot_water_pump.setMotorEfficiency(0.9)
107
+ else
94
108
  # add a water heater to supply the heat for the loop
95
109
  heater = OpenStudio::Model::WaterHeaterMixed.new(openstudio_model)
96
- if eq_type == 'Electric_WaterHeater' || eq_type == 'HeatPump_WaterHeater'
110
+ if eq_type == 'Electric_WaterHeater' || eq_type == 'HeatPump_WaterHeater' || eq_type == 'Electric_TanklessHeater'
97
111
  heater.setHeaterFuelType('Electricity')
98
112
  heater.setOffCycleParasiticFuelType('Electricity')
99
113
  heater.setOnCycleParasiticFuelType('Electricity')
100
114
  end
101
- heater.setName('SHW WaterHeater' + @@sys_count.to_s)
102
115
 
103
116
  # set the water heater efficiency
104
117
  if eq_type == 'HeatPump_WaterHeater'
105
118
  heater.setHeaterThermalEfficiency(1.0)
106
119
  elsif shw_hash[:heater_efficiency].nil?
107
- if eq_type == 'Electric_WaterHeater'
120
+ if eq_type == 'Electric_WaterHeater' || eq_type == 'Electric_TanklessHeater'
108
121
  heater.setHeaterThermalEfficiency(1.0)
109
122
  else
110
123
  heater.setHeaterThermalEfficiency(0.8)
@@ -159,9 +172,20 @@ module Honeybee
159
172
  end
160
173
  end
161
174
 
162
- # ensure that the tank is sized appropriately and add it to the loop
175
+ # set the capactiy and and controls of the water heater
163
176
  heater.setHeaterMaximumCapacity(1000000)
164
- heater.setTankVolume(@@shw_rates[shw_hash[:identifier]])
177
+ if eq_type == 'Gas_TanklessHeater' || eq_type == 'Electric_TanklessHeater'
178
+ heater.setName('SHW Tankless WaterHeater' + @@sys_count.to_s)
179
+ heater.setTankVolume(0)
180
+ heater.setHeaterControlType('Modulate')
181
+ heater.setOffCycleLossCoefficienttoAmbientTemperature(0)
182
+ heater.setOnCycleLossCoefficienttoAmbientTemperature(0)
183
+ else
184
+ heater.setName('SHW WaterHeater' + @@sys_count.to_s)
185
+ heater.setTankVolume(@@shw_rates[shw_hash[:identifier]])
186
+ end
187
+
188
+ # add it to the loop
165
189
  hot_water_plant.addSupplyBranchForComponent(heater)
166
190
 
167
191
  # if it's a heat pump system, then add the pump
@@ -196,30 +220,6 @@ module Honeybee
196
220
  end
197
221
  heat_sys.setName('SHW WaterHeater HeatPump' + @@sys_count.to_s)
198
222
  end
199
-
200
- elsif eq_type == 'Gas_TanklessHeater' || eq_type == 'Electric_TanklessHeater'
201
- # add a boiler to supply the heat for the loop
202
- heater = OpenStudio::Model::BoilerHotWater.new(openstudio_model)
203
- if eq_type == 'Electric_TanklessHeater'
204
- heater.setFuelType('Electricity')
205
- end
206
- heater.setName('SHW Tankless WaterHeater' + @@sys_count.to_s)
207
- heater.setEndUseSubcategory('Water Systems')
208
-
209
- # set the water heater efficiency
210
- unless shw_hash[:heater_efficiency].nil?
211
- heater.setNominalThermalEfficiency(shw_hash[:heater_efficiency])
212
- else
213
- if eq_type == 'Electric_TanklessHeater'
214
- heater.setNominalThermalEfficiency(1.0)
215
- else
216
- heater.setNominalThermalEfficiency(0.8)
217
- end
218
- end
219
-
220
- # ensure that the boiler is sized appropriately and add it to the loop
221
- heater.setNominalCapacity(1000000)
222
- hot_water_plant.addSupplyBranchForComponent(heater)
223
223
  end
224
224
 
225
225
  # add all of the water use connections to the loop and total the capacity
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: honeybee-openstudio
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.30.0
4
+ version: 2.30.4
5
5
  platform: ruby
6
6
  authors:
7
7
  - Tanushree Charan
@@ -11,7 +11,7 @@ authors:
11
11
  autorequire:
12
12
  bindir: exe
13
13
  cert_chain: []
14
- date: 2022-02-05 00:00:00.000000000 Z
14
+ date: 2022-02-19 00:00:00.000000000 Z
15
15
  dependencies:
16
16
  - !ruby/object:Gem::Dependency
17
17
  name: bundler