honeybee-schema 1.59.1__py3-none-any.whl

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 (57) hide show
  1. honeybee_schema/__init__.py +1 -0
  2. honeybee_schema/__main__.py +4 -0
  3. honeybee_schema/_base.py +42 -0
  4. honeybee_schema/altnumber.py +18 -0
  5. honeybee_schema/boundarycondition.py +81 -0
  6. honeybee_schema/cli.py +115 -0
  7. honeybee_schema/comparison.py +208 -0
  8. honeybee_schema/doe2/__init__.py +0 -0
  9. honeybee_schema/doe2/properties.py +75 -0
  10. honeybee_schema/energy/__init__.py +0 -0
  11. honeybee_schema/energy/_base.py +64 -0
  12. honeybee_schema/energy/construction.py +324 -0
  13. honeybee_schema/energy/constructionset.py +359 -0
  14. honeybee_schema/energy/daylight.py +62 -0
  15. honeybee_schema/energy/designday.py +212 -0
  16. honeybee_schema/energy/generator.py +140 -0
  17. honeybee_schema/energy/global_constructionset.py +129 -0
  18. honeybee_schema/energy/hvac/__init__.py +0 -0
  19. honeybee_schema/energy/hvac/_template.py +38 -0
  20. honeybee_schema/energy/hvac/allair.py +257 -0
  21. honeybee_schema/energy/hvac/detailed.py +20 -0
  22. honeybee_schema/energy/hvac/doas.py +248 -0
  23. honeybee_schema/energy/hvac/heatcool.py +309 -0
  24. honeybee_schema/energy/hvac/idealair.py +107 -0
  25. honeybee_schema/energy/internalmass.py +25 -0
  26. honeybee_schema/energy/load.py +627 -0
  27. honeybee_schema/energy/material.py +949 -0
  28. honeybee_schema/energy/programtype.py +117 -0
  29. honeybee_schema/energy/properties.py +382 -0
  30. honeybee_schema/energy/schedule.py +350 -0
  31. honeybee_schema/energy/shw.py +53 -0
  32. honeybee_schema/energy/simulation.py +440 -0
  33. honeybee_schema/energy/ventcool.py +337 -0
  34. honeybee_schema/geometry.py +161 -0
  35. honeybee_schema/model.py +473 -0
  36. honeybee_schema/projectinfo.py +94 -0
  37. honeybee_schema/radiance/__init__.py +0 -0
  38. honeybee_schema/radiance/_base.py +22 -0
  39. honeybee_schema/radiance/asset.py +191 -0
  40. honeybee_schema/radiance/global_modifierset.py +92 -0
  41. honeybee_schema/radiance/modifier.py +373 -0
  42. honeybee_schema/radiance/modifierset.py +296 -0
  43. honeybee_schema/radiance/properties.py +149 -0
  44. honeybee_schema/radiance/state.py +69 -0
  45. honeybee_schema/updater/__init__.py +0 -0
  46. honeybee_schema/updater/version_1_39_12.py +14 -0
  47. honeybee_schema/updater/version_1_40_1.py +153 -0
  48. honeybee_schema/updater/version_1_43_1.py +18 -0
  49. honeybee_schema/updater/version_1_43_2.py +12 -0
  50. honeybee_schema/updater/version_1_43_5.py +11 -0
  51. honeybee_schema/validation.py +205 -0
  52. honeybee_schema-1.59.1.dist-info/METADATA +108 -0
  53. honeybee_schema-1.59.1.dist-info/RECORD +57 -0
  54. honeybee_schema-1.59.1.dist-info/WHEEL +5 -0
  55. honeybee_schema-1.59.1.dist-info/entry_points.txt +2 -0
  56. honeybee_schema-1.59.1.dist-info/licenses/LICENSE +23 -0
  57. honeybee_schema-1.59.1.dist-info/top_level.txt +1 -0
@@ -0,0 +1,309 @@
1
+ """Heating/cooling systems without any ventilation."""
2
+ from pydantic import Field, constr
3
+ from enum import Enum
4
+
5
+ from ._template import _TemplateSystem, RadiantFaceTypes
6
+
7
+
8
+ class _HeatCoolBase(_TemplateSystem):
9
+ """Base class for all heating/cooling systems without any ventilation.
10
+
11
+ These systems are only designed to satisfy heating + cooling demand and they
12
+ cannot meet any minimum ventilation requirements.
13
+
14
+ As such, these systems tend to be used in residential or storage settings where
15
+ meeting minimum ventilation requirements may not be required or the density
16
+ of occupancy is so low that infiltration is enough to meet fresh air demand.
17
+ """
18
+
19
+
20
+ class FCUEquipmentType(str, Enum):
21
+ fcu_chill_gb = 'FCU_Chiller_Boiler'
22
+ fcu_chill_ashp = 'FCU_Chiller_ASHP'
23
+ fcu_chill_dhw = 'FCU_Chiller_DHW'
24
+ fcu_chill_base = 'FCU_Chiller_ElectricBaseboard'
25
+ fcu_chill_guh = 'FCU_Chiller_GasHeaters'
26
+ fcu_chill = 'FCU_Chiller'
27
+ fcu_ac_chill_gb = 'FCU_ACChiller_Boiler'
28
+ fcu_ac_chill_ashp = 'FCU_ACChiller_ASHP'
29
+ fcu_ac_chill_dhw = 'FCU_ACChiller_DHW'
30
+ fcu_ac_chill_base = 'FCU_ACChiller_ElectricBaseboard'
31
+ fcu_ac_chill_guh = 'FCU_ACChiller_GasHeaters'
32
+ fcu_ac_chill = 'FCU_ACChiller'
33
+ fcu_dcw_gb = 'FCU_DCW_Boiler'
34
+ fcu_dcw_ashp = 'FCU_DCW_ASHP'
35
+ fcu_dcw_dhw = 'FCU_DCW_DHW'
36
+ fcu_dcw_base = 'FCU_DCW_ElectricBaseboard'
37
+ fcu_dcw_guh = 'FCU_DCW_GasHeaters'
38
+ fcu_dcw = 'FCU_DCW'
39
+
40
+
41
+ class BaseboardEquipmentType(str, Enum):
42
+ e_base = 'ElectricBaseboard'
43
+ gb_base = 'BoilerBaseboard'
44
+ ashp_base = 'ASHPBaseboard'
45
+ dhw_base = 'DHWBaseboard'
46
+
47
+
48
+ class EvaporativeCoolerEquipmentType(str, Enum):
49
+ evap_e_base = 'EvapCoolers_ElectricBaseboard'
50
+ evap_gb_base = 'EvapCoolers_BoilerBaseboard'
51
+ evap_ashp_base = 'EvapCoolers_ASHPBaseboard'
52
+ evap_dhw_base = 'EvapCoolers_DHWBaseboard'
53
+ evap_furnace = 'EvapCoolers_Furnace'
54
+ evap_guh = 'EvapCoolers_UnitHeaters'
55
+ evap = 'EvapCoolers'
56
+
57
+
58
+ class WSHPEquipmentType(str, Enum):
59
+ wshp_fc_gb = 'WSHP_FluidCooler_Boiler'
60
+ wshp_ct_gb = 'WSHP_CoolingTower_Boiler'
61
+ wshp_gshp = 'WSHP_GSHP'
62
+ wshp_dcw_dhw = 'WSHP_DCW_DHW'
63
+
64
+
65
+ class ResidentialEquipmentType(str, Enum):
66
+ res_ac_e_base = 'ResidentialAC_ElectricBaseboard'
67
+ res_ac_gb_base = 'ResidentialAC_BoilerBaseboard'
68
+ res_ac_ashp_base = 'ResidentialAC_ASHPBaseboard'
69
+ res_ac_dhw_base = 'ResidentialAC_DHWBaseboard'
70
+ res_ac_furnace = 'ResidentialAC_ResidentialFurnace'
71
+ res_ac = 'ResidentialAC'
72
+ res_hp = 'ResidentialHP'
73
+ res_hp_no_cool = 'ResidentialHPNoCool'
74
+ res_furnace = 'ResidentialFurnace'
75
+
76
+
77
+ class WindowACEquipmentType(str, Enum):
78
+ win_ac_e_base = 'WindowAC_ElectricBaseboard'
79
+ win_ac_gb_base = 'WindowAC_BoilerBaseboard'
80
+ win_ac_ashp_base = 'WindowAC_ASHPBaseboard'
81
+ win_ac_dhw_base = 'WindowAC_DHWBaseboard'
82
+ win_ac_furnace = 'WindowAC_Furnace'
83
+ win_ac_guh = 'WindowAC_GasHeaters'
84
+ win_ac = 'WindowAC'
85
+
86
+
87
+ class VRFEquipmentType(str, Enum):
88
+ vrf = 'VRF'
89
+
90
+
91
+ class GasUnitHeaterEquipmentType(str, Enum):
92
+ guh = 'GasHeaters'
93
+
94
+
95
+ class RadiantEquipmentType(str, Enum):
96
+ radiant_chill_gb = 'Radiant_Chiller_Boiler'
97
+ radiant_chill_ashp = 'Radiant_Chiller_ASHP'
98
+ radiant_chill_dhw = 'Radiant_Chiller_DHW'
99
+ radiant_ac_chill_gb = 'Radiant_ACChiller_Boiler'
100
+ radiant_ac_chill_ashp = 'Radiant_ACChiller_ASHP'
101
+ radiant_ac_chill_dhw = 'Radiant_ACChiller_DHW'
102
+ radiant_dcw_gb = 'Radiant_DCW_Boiler'
103
+ radiant_dcw_ashp = 'Radiant_DCW_ASHP'
104
+ radiant_dcw_dhw = 'Radiant_DCW_DHW'
105
+
106
+
107
+ class FCU(_HeatCoolBase):
108
+ """Fan Coil Unit (FCU) heating/cooling system (with no ventilation).
109
+
110
+ Each room/zone receives its own Fan Coil Unit (FCU), which meets the heating
111
+ and cooling loads of the space. The cooling coil in the FCU is always chilled
112
+ water cooling coil, which is connected to a chilled water loop operating
113
+ at 6.7C (44F). The heating coil is a hot water coil except when when electric
114
+ baseboards or gas heaters are specified. Hot water temperature is 82C (180F) for
115
+ boiler/district heating and 49C (120F) when ASHP is used.
116
+ """
117
+
118
+ type: constr(regex='^FCU$') = 'FCU'
119
+
120
+ equipment_type: FCUEquipmentType = Field(
121
+ FCUEquipmentType.fcu_chill_gb,
122
+ description='Text for the specific type of system equipment from the '
123
+ 'FCUEquipmentType enumeration.'
124
+ )
125
+
126
+
127
+ class Baseboard(_HeatCoolBase):
128
+ """Baseboard heating system.
129
+
130
+ Baseboard systems are intended for spaces only requiring heating and
131
+ no ventilation or cooling. Each room/zone will get its own baseboard
132
+ heating unit that satisfies the heating load.
133
+ """
134
+
135
+ type: constr(regex='^Baseboard$') = 'Baseboard'
136
+
137
+ equipment_type: BaseboardEquipmentType = Field(
138
+ BaseboardEquipmentType.e_base,
139
+ description='Text for the specific type of system equipment from the '
140
+ 'BaseboardEquipmentType enumeration.'
141
+ )
142
+
143
+
144
+ class EvaporativeCooler(_HeatCoolBase):
145
+ """Direct evaporative cooling systems (with optional heating).
146
+
147
+ Each room/zone will receive its own air loop sized to meet the sensible load,
148
+ which contains an evaporative cooler that directly adds humidity to the room
149
+ air to cool it. The loop contains an outdoor air mixer, which is used whenever
150
+ the outdoor air has a lower wet bulb temperature than the return air from
151
+ the room. In the event that the combination of outdoor and room return air
152
+ air is too humid, a backup single-speed direct expansion (DX) cooling coil
153
+ will be used. Heating loads can be met with various options, including
154
+ several types of baseboards, a furnace, or gas unit heaters.
155
+ """
156
+
157
+ type: constr(regex='^EvaporativeCooler$') = 'EvaporativeCooler'
158
+
159
+ equipment_type: EvaporativeCoolerEquipmentType = Field(
160
+ EvaporativeCoolerEquipmentType.evap_e_base,
161
+ description='Text for the specific type of system equipment from the '
162
+ 'EvaporativeCoolerEquipmentType enumeration.'
163
+ )
164
+
165
+
166
+ class WSHP(_HeatCoolBase):
167
+ """Water Source Heat Pump (WSHP) heating/cooling system (with no ventilation).
168
+
169
+ Each room/zone receives its own Water Source Heat Pump (WSHP), which meets
170
+ the heating and cooling loads of the space. All WSHPs are connected to the
171
+ same water condenser loop, which has its temperature maintained by the
172
+ equipment_type (eg. Boiler with Cooling Tower).
173
+ """
174
+
175
+ type: constr(regex='^WSHP$') = 'WSHP'
176
+
177
+ equipment_type: WSHPEquipmentType = Field(
178
+ WSHPEquipmentType.wshp_fc_gb,
179
+ description='Text for the specific type of system equipment from the '
180
+ 'WSHPEquipmentType enumeration.'
181
+ )
182
+
183
+
184
+ class Residential(_HeatCoolBase):
185
+ """Residential Air Conditioning, Heat Pump or Furnace system.
186
+
187
+ Residential HVAC systems are intended primarily for single-family homes and
188
+ include a wide variety of options. In all cases, each room/zone will receive
189
+ its own air loop WITHOUT an outdoor air inlet (air is simply being recirculated
190
+ through the loop). Residential air conditioning (AC) systems are modeled
191
+ using a unitary system with a single-speed direct expansion (DX) cooling
192
+ coil in the loop. Residential heat pump (HP) systems use a single-speed DX
193
+ heating coil in the unitary system and the residential furnace option uses
194
+ a gas coil in the unitary system. In all cases, the properties of these coils
195
+ are set to reflect a typical residential system.
196
+ """
197
+
198
+ type: constr(regex='^Residential$') = 'Residential'
199
+
200
+ equipment_type: ResidentialEquipmentType = Field(
201
+ ResidentialEquipmentType.res_ac_e_base,
202
+ description='Text for the specific type of system equipment from the '
203
+ 'ResidentialEquipmentType enumeration.'
204
+ )
205
+
206
+
207
+ class WindowAC(_HeatCoolBase):
208
+ """Window Air Conditioning cooling system (with optional heating).
209
+
210
+ Each room/zone will receive its own Packaged Terminal Air Conditioner (PTAC)
211
+ with properties set to reflect a typical window air conditioning (AC) unit.
212
+ No ventilation air is supplied by the unit and the cooling coil within the
213
+ unit is a single-speed direct expansion (DX) cooling coil. Heating loads
214
+ can be met with various options, including several types of baseboards,
215
+ a furnace, or gas unit heaters.
216
+ """
217
+
218
+ type: constr(regex='^WindowAC$') = 'WindowAC'
219
+
220
+ equipment_type: WindowACEquipmentType = Field(
221
+ WindowACEquipmentType.win_ac_e_base,
222
+ description='Text for the specific type of system equipment from the '
223
+ 'WindowACEquipmentType enumeration.'
224
+ )
225
+
226
+
227
+ class VRF(_HeatCoolBase):
228
+ """Variable Refrigerant Flow (VRF) heating/cooling system (with no ventilation).
229
+
230
+ Each room/zone receives its own Variable Refrigerant Flow (VRF) terminal,
231
+ which meets the heating and cooling loads of the space. All room/zone terminals
232
+ are connected to the same outdoor unit, meaning that either all rooms must be
233
+ in cooling or heating mode together.
234
+ """
235
+
236
+ type: constr(regex='^VRF$') = 'VRF'
237
+
238
+ equipment_type: VRFEquipmentType = Field(
239
+ VRFEquipmentType.vrf,
240
+ description='Text for the specific type of system equipment from the '
241
+ 'VRFEquipmentType enumeration.'
242
+ )
243
+
244
+
245
+ class GasUnitHeater(_HeatCoolBase):
246
+ """Gas unit heating system.
247
+
248
+ Gas unit systems are intended for spaces only requiring heating and no
249
+ ventilation or cooling. Each room/zone will get its own gaa heating unit
250
+ that satisfies the heating load.
251
+ """
252
+
253
+ type: constr(regex='^GasUnitHeater$') = 'GasUnitHeater'
254
+
255
+ equipment_type: GasUnitHeaterEquipmentType = Field(
256
+ GasUnitHeaterEquipmentType.guh,
257
+ description='Text for the specific type of system equipment from the '
258
+ 'GasUnitHeaterEquipmentType enumeration.'
259
+ )
260
+
261
+
262
+ class Radiant(_HeatCoolBase):
263
+ """Low temperature radiant HVAC system.
264
+
265
+ This HVAC template will change the floor and/or ceiling constructions
266
+ of the Rooms that it is applied to, replacing them with a construction that
267
+ aligns with the radiant_type property (eg. CeilingMetalPanel).
268
+
269
+ The heating and cooling needs of the space are met with the radiant constructions,
270
+ which use chilled water at 12.8C (55F) and a hot water temperature somewhere
271
+ between 32.2C (90F) and 49C (120F) (warmer temperatures are used in colder
272
+ climate zones).
273
+
274
+ Note that radiant systems are particularly limited in cooling capacity and
275
+ using them may result in many unmet hours. To reduce unmet hours, one can
276
+ remove carpets, reduce internal loads, reduce solar and envelope gains during
277
+ peak times, add thermal mass, and use an expanded comfort range.
278
+ """
279
+
280
+ type: constr(regex='^Radiant$') = 'Radiant'
281
+
282
+ equipment_type: RadiantEquipmentType = Field(
283
+ RadiantEquipmentType.radiant_chill_gb,
284
+ description='Text for the specific type of system equipment from the '
285
+ 'RadiantEquipmentType enumeration.'
286
+ )
287
+
288
+ radiant_face_type: RadiantFaceTypes = Field(
289
+ RadiantFaceTypes.floor,
290
+ description='Text to indicate which faces are thermally active by default. '
291
+ 'Note that this property has no effect when the rooms to which the HVAC '
292
+ 'system is assigned have constructions with internal source materials. '
293
+ 'In this case, those constructions will dictate the thermally active '
294
+ 'surfaces.'
295
+ )
296
+
297
+ minimum_operation_time: float = Field(
298
+ 1.0,
299
+ gt=0,
300
+ description='A number for the minimum number of hours of operation '
301
+ 'for the radiant system before it shuts off.'
302
+ )
303
+
304
+ switch_over_time: float = Field(
305
+ 24.0,
306
+ gt=0,
307
+ description='A number for the minimum number of hours for when the system '
308
+ 'can switch between heating and cooling.'
309
+ )
@@ -0,0 +1,107 @@
1
+ """Ideal Air Schema"""
2
+ from pydantic import Field, root_validator, constr
3
+ from typing import Union
4
+ from enum import Enum
5
+
6
+ from .._base import IDdEnergyBaseModel
7
+ from ...altnumber import NoLimit, Autosize
8
+
9
+
10
+ class EconomizerType(str, Enum):
11
+ no_economizer = 'NoEconomizer'
12
+ differential_dry_bulb = 'DifferentialDryBulb'
13
+ differential_enthalpy = 'DifferentialEnthalpy'
14
+
15
+
16
+ class IdealAirSystemAbridged(IDdEnergyBaseModel):
17
+ """ Provides a model for an ideal HVAC system."""
18
+
19
+ type: constr(regex='^IdealAirSystemAbridged$') = 'IdealAirSystemAbridged'
20
+
21
+ economizer_type: EconomizerType = Field(
22
+ EconomizerType.differential_dry_bulb,
23
+ description='Text to indicate the type of air-side economizer used on the '
24
+ 'ideal air system. Economizers will mix in a greater amount of outdoor '
25
+ 'air to cool the zone (rather than running the cooling system) when '
26
+ 'the zone needs cooling and the outdoor air is cooler than the zone.'
27
+ )
28
+
29
+ demand_controlled_ventilation: bool = Field(
30
+ False,
31
+ description='Boolean to note whether demand controlled ventilation should '
32
+ 'be used on the system, which will vary the amount of ventilation air '
33
+ 'according to the occupancy schedule of the zone.'
34
+ )
35
+
36
+ sensible_heat_recovery: float = Field(
37
+ 0,
38
+ ge=0,
39
+ le=1,
40
+ description='A number between 0 and 1 for the effectiveness of sensible '
41
+ 'heat recovery within the system.'
42
+ )
43
+
44
+ latent_heat_recovery: float = Field(
45
+ 0,
46
+ ge=0,
47
+ le=1,
48
+ description='A number between 0 and 1 for the effectiveness of latent '
49
+ 'heat recovery within the system.'
50
+ )
51
+
52
+ heating_air_temperature: float = Field(
53
+ 50,
54
+ gt=0,
55
+ lt=100,
56
+ description='A number for the maximum heating supply air temperature [C].'
57
+ )
58
+
59
+ cooling_air_temperature: float = Field(
60
+ 13,
61
+ gt=-100,
62
+ lt=50,
63
+ description='A number for the minimum cooling supply air temperature [C].'
64
+ )
65
+
66
+ heating_limit: Union[Autosize, NoLimit, float] = Field(
67
+ Autosize(),
68
+ ge=0,
69
+ description='A number for the maximum heating capacity in Watts. This '
70
+ 'can also be an Autosize object to indicate that the capacity should '
71
+ 'be determined during the EnergyPlus sizing calculation. This can also '
72
+ 'be a NoLimit object to indicate no upper limit to the heating capacity.'
73
+ )
74
+
75
+ cooling_limit: Union[Autosize, NoLimit, float] = Field(
76
+ Autosize(),
77
+ ge=0,
78
+ description='A number for the maximum cooling capacity in Watts. This '
79
+ 'can also be an Autosize object to indicate that the capacity should '
80
+ 'be determined during the EnergyPlus sizing calculation. This can also '
81
+ 'be a NoLimit object to indicate no upper limit to the cooling capacity.'
82
+ )
83
+
84
+ heating_availability: str = Field(
85
+ None,
86
+ min_length=1,
87
+ max_length=100,
88
+ description='An optional identifier of a schedule to set the availability of '
89
+ 'heating over the course of the simulation.'
90
+ )
91
+
92
+ cooling_availability: str = Field(
93
+ None,
94
+ min_length=1,
95
+ max_length=100,
96
+ description='An optional identifier of a schedule to set the availability of '
97
+ 'cooling over the course of the simulation.'
98
+ )
99
+
100
+ @root_validator
101
+ def check_heating_temp_gt_cooling_temp(cls, values):
102
+ "Ensure that the heating_air_temperature > cooling_air_temperature."
103
+ heat_temp = values.get('heating_air_temperature')
104
+ cool_temp = values.get('cooling_air_temperature')
105
+ assert heat_temp > cool_temp, 'IdealAirSystem heating_air_temperature must be ' \
106
+ 'greater than cooling_air_temperature.'
107
+ return values
@@ -0,0 +1,25 @@
1
+ """Programtype Schema"""
2
+ from pydantic import Field, constr
3
+
4
+ from ._base import IDdEnergyBaseModel
5
+
6
+
7
+ class InternalMassAbridged(IDdEnergyBaseModel):
8
+
9
+ type: constr(regex='^InternalMassAbridged$') = 'InternalMassAbridged'
10
+
11
+ construction: str = Field(
12
+ ...,
13
+ min_length=1,
14
+ max_length=100,
15
+ description='Identifier for an OpaqueConstruction that represents the '
16
+ 'material that the internal thermal mass is composed of.'
17
+ )
18
+
19
+ area: float = Field(
20
+ ...,
21
+ gt=0,
22
+ description='A number representing the surface area of the internal mass that '
23
+ 'is exposed to the Room air. This value should always be in square '
24
+ 'meters regardless of what units system the parent model is a part of.'
25
+ )