honeybee-energy 1.116.106__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.
- honeybee_energy/__init__.py +24 -0
- honeybee_energy/__main__.py +4 -0
- honeybee_energy/_extend_honeybee.py +145 -0
- honeybee_energy/altnumber.py +21 -0
- honeybee_energy/baseline/__init__.py +2 -0
- honeybee_energy/baseline/create.py +608 -0
- honeybee_energy/baseline/data/__init__.py +1 -0
- honeybee_energy/baseline/data/constructions.csv +64 -0
- honeybee_energy/baseline/data/fen_ratios.csv +15 -0
- honeybee_energy/baseline/data/lpd_building.csv +21 -0
- honeybee_energy/baseline/data/pci_2016.csv +22 -0
- honeybee_energy/baseline/data/pci_2019.csv +22 -0
- honeybee_energy/baseline/data/pci_2022.csv +22 -0
- honeybee_energy/baseline/data/shw.csv +21 -0
- honeybee_energy/baseline/pci.py +512 -0
- honeybee_energy/baseline/result.py +371 -0
- honeybee_energy/boundarycondition.py +128 -0
- honeybee_energy/cli/__init__.py +69 -0
- honeybee_energy/cli/baseline.py +475 -0
- honeybee_energy/cli/edit.py +327 -0
- honeybee_energy/cli/lib.py +1154 -0
- honeybee_energy/cli/result.py +810 -0
- honeybee_energy/cli/setconfig.py +124 -0
- honeybee_energy/cli/settings.py +569 -0
- honeybee_energy/cli/simulate.py +380 -0
- honeybee_energy/cli/translate.py +1714 -0
- honeybee_energy/cli/validate.py +224 -0
- honeybee_energy/config.json +11 -0
- honeybee_energy/config.py +842 -0
- honeybee_energy/construction/__init__.py +1 -0
- honeybee_energy/construction/_base.py +374 -0
- honeybee_energy/construction/air.py +325 -0
- honeybee_energy/construction/dictutil.py +89 -0
- honeybee_energy/construction/dynamic.py +607 -0
- honeybee_energy/construction/opaque.py +460 -0
- honeybee_energy/construction/shade.py +319 -0
- honeybee_energy/construction/window.py +1096 -0
- honeybee_energy/construction/windowshade.py +847 -0
- honeybee_energy/constructionset.py +1655 -0
- honeybee_energy/dictutil.py +56 -0
- honeybee_energy/generator/__init__.py +5 -0
- honeybee_energy/generator/loadcenter.py +204 -0
- honeybee_energy/generator/pv.py +535 -0
- honeybee_energy/hvac/__init__.py +21 -0
- honeybee_energy/hvac/_base.py +124 -0
- honeybee_energy/hvac/_template.py +270 -0
- honeybee_energy/hvac/allair/__init__.py +22 -0
- honeybee_energy/hvac/allair/_base.py +349 -0
- honeybee_energy/hvac/allair/furnace.py +168 -0
- honeybee_energy/hvac/allair/psz.py +131 -0
- honeybee_energy/hvac/allair/ptac.py +163 -0
- honeybee_energy/hvac/allair/pvav.py +109 -0
- honeybee_energy/hvac/allair/vav.py +128 -0
- honeybee_energy/hvac/detailed.py +337 -0
- honeybee_energy/hvac/doas/__init__.py +28 -0
- honeybee_energy/hvac/doas/_base.py +345 -0
- honeybee_energy/hvac/doas/fcu.py +127 -0
- honeybee_energy/hvac/doas/radiant.py +329 -0
- honeybee_energy/hvac/doas/vrf.py +81 -0
- honeybee_energy/hvac/doas/wshp.py +91 -0
- honeybee_energy/hvac/heatcool/__init__.py +23 -0
- honeybee_energy/hvac/heatcool/_base.py +177 -0
- honeybee_energy/hvac/heatcool/baseboard.py +61 -0
- honeybee_energy/hvac/heatcool/evapcool.py +72 -0
- honeybee_energy/hvac/heatcool/fcu.py +92 -0
- honeybee_energy/hvac/heatcool/gasunit.py +53 -0
- honeybee_energy/hvac/heatcool/radiant.py +269 -0
- honeybee_energy/hvac/heatcool/residential.py +77 -0
- honeybee_energy/hvac/heatcool/vrf.py +54 -0
- honeybee_energy/hvac/heatcool/windowac.py +70 -0
- honeybee_energy/hvac/heatcool/wshp.py +62 -0
- honeybee_energy/hvac/idealair.py +699 -0
- honeybee_energy/internalmass.py +310 -0
- honeybee_energy/lib/__init__.py +1 -0
- honeybee_energy/lib/_loadconstructions.py +194 -0
- honeybee_energy/lib/_loadconstructionsets.py +117 -0
- honeybee_energy/lib/_loadmaterials.py +83 -0
- honeybee_energy/lib/_loadprogramtypes.py +125 -0
- honeybee_energy/lib/_loadschedules.py +87 -0
- honeybee_energy/lib/_loadtypelimits.py +64 -0
- honeybee_energy/lib/constructions.py +207 -0
- honeybee_energy/lib/constructionsets.py +95 -0
- honeybee_energy/lib/materials.py +67 -0
- honeybee_energy/lib/programtypes.py +125 -0
- honeybee_energy/lib/schedules.py +61 -0
- honeybee_energy/lib/scheduletypelimits.py +31 -0
- honeybee_energy/load/__init__.py +1 -0
- honeybee_energy/load/_base.py +190 -0
- honeybee_energy/load/daylight.py +397 -0
- honeybee_energy/load/dictutil.py +47 -0
- honeybee_energy/load/equipment.py +771 -0
- honeybee_energy/load/hotwater.py +543 -0
- honeybee_energy/load/infiltration.py +460 -0
- honeybee_energy/load/lighting.py +480 -0
- honeybee_energy/load/people.py +497 -0
- honeybee_energy/load/process.py +472 -0
- honeybee_energy/load/setpoint.py +816 -0
- honeybee_energy/load/ventilation.py +550 -0
- honeybee_energy/material/__init__.py +1 -0
- honeybee_energy/material/_base.py +166 -0
- honeybee_energy/material/dictutil.py +59 -0
- honeybee_energy/material/frame.py +367 -0
- honeybee_energy/material/gas.py +1087 -0
- honeybee_energy/material/glazing.py +854 -0
- honeybee_energy/material/opaque.py +1351 -0
- honeybee_energy/material/shade.py +1360 -0
- honeybee_energy/measure.py +472 -0
- honeybee_energy/programtype.py +723 -0
- honeybee_energy/properties/__init__.py +1 -0
- honeybee_energy/properties/aperture.py +333 -0
- honeybee_energy/properties/door.py +342 -0
- honeybee_energy/properties/extension.py +244 -0
- honeybee_energy/properties/face.py +274 -0
- honeybee_energy/properties/model.py +2640 -0
- honeybee_energy/properties/room.py +1747 -0
- honeybee_energy/properties/shade.py +314 -0
- honeybee_energy/properties/shademesh.py +262 -0
- honeybee_energy/reader.py +48 -0
- honeybee_energy/result/__init__.py +1 -0
- honeybee_energy/result/colorobj.py +648 -0
- honeybee_energy/result/emissions.py +290 -0
- honeybee_energy/result/err.py +101 -0
- honeybee_energy/result/eui.py +100 -0
- honeybee_energy/result/generation.py +160 -0
- honeybee_energy/result/loadbalance.py +890 -0
- honeybee_energy/result/match.py +202 -0
- honeybee_energy/result/osw.py +90 -0
- honeybee_energy/result/rdd.py +59 -0
- honeybee_energy/result/zsz.py +190 -0
- honeybee_energy/run.py +1577 -0
- honeybee_energy/schedule/__init__.py +1 -0
- honeybee_energy/schedule/day.py +626 -0
- honeybee_energy/schedule/dictutil.py +59 -0
- honeybee_energy/schedule/fixedinterval.py +1012 -0
- honeybee_energy/schedule/rule.py +619 -0
- honeybee_energy/schedule/ruleset.py +1867 -0
- honeybee_energy/schedule/typelimit.py +310 -0
- honeybee_energy/shw.py +315 -0
- honeybee_energy/simulation/__init__.py +1 -0
- honeybee_energy/simulation/control.py +214 -0
- honeybee_energy/simulation/daylightsaving.py +185 -0
- honeybee_energy/simulation/dictutil.py +51 -0
- honeybee_energy/simulation/output.py +646 -0
- honeybee_energy/simulation/parameter.py +606 -0
- honeybee_energy/simulation/runperiod.py +443 -0
- honeybee_energy/simulation/shadowcalculation.py +295 -0
- honeybee_energy/simulation/sizing.py +546 -0
- honeybee_energy/ventcool/__init__.py +5 -0
- honeybee_energy/ventcool/_crack_data.py +91 -0
- honeybee_energy/ventcool/afn.py +289 -0
- honeybee_energy/ventcool/control.py +269 -0
- honeybee_energy/ventcool/crack.py +126 -0
- honeybee_energy/ventcool/fan.py +493 -0
- honeybee_energy/ventcool/opening.py +365 -0
- honeybee_energy/ventcool/simulation.py +314 -0
- honeybee_energy/writer.py +1078 -0
- honeybee_energy-1.116.106.dist-info/METADATA +113 -0
- honeybee_energy-1.116.106.dist-info/RECORD +162 -0
- honeybee_energy-1.116.106.dist-info/WHEEL +5 -0
- honeybee_energy-1.116.106.dist-info/entry_points.txt +2 -0
- honeybee_energy-1.116.106.dist-info/licenses/LICENSE +661 -0
- honeybee_energy-1.116.106.dist-info/top_level.txt +1 -0
|
@@ -0,0 +1,269 @@
|
|
|
1
|
+
# coding=utf-8
|
|
2
|
+
"""Low temperature radiant system."""
|
|
3
|
+
from __future__ import division
|
|
4
|
+
|
|
5
|
+
from ._base import _HeatCoolBase
|
|
6
|
+
|
|
7
|
+
from honeybee._lockable import lockable
|
|
8
|
+
from honeybee.typing import float_positive, valid_string
|
|
9
|
+
|
|
10
|
+
|
|
11
|
+
@lockable
|
|
12
|
+
class Radiant(_HeatCoolBase):
|
|
13
|
+
"""Low temperature radiant HVAC system.
|
|
14
|
+
|
|
15
|
+
This HVAC template will change the floor and/or ceiling constructions
|
|
16
|
+
of the Rooms that it is applied to, replacing them with a construction that
|
|
17
|
+
aligns with the radiant_type property (eg. CeilingMetalPanel).
|
|
18
|
+
|
|
19
|
+
The heating and cooling needs of the space are met with the radiant constructions,
|
|
20
|
+
which use chilled water at 12.8C (55F) and a hot water temperature somewhere
|
|
21
|
+
between 32.2C (90F) and 49C (120F) (warmer temperatures are used in colder
|
|
22
|
+
climate zones).
|
|
23
|
+
|
|
24
|
+
Note that radiant systems are particularly limited in cooling capacity and
|
|
25
|
+
using them may result in many unmet hours. To reduce unmet hours, one can
|
|
26
|
+
remove carpets, reduce internal loads, reduce solar and envelope gains during
|
|
27
|
+
peak times, add thermal mass, and use an expanded comfort range.
|
|
28
|
+
|
|
29
|
+
Args:
|
|
30
|
+
identifier: Text string for system identifier. Must be < 100 characters
|
|
31
|
+
and not contain any EnergyPlus special characters. This will be used to
|
|
32
|
+
identify the object across a model and in the exported IDF.
|
|
33
|
+
vintage: Text for the vintage of the template system. This will be used
|
|
34
|
+
to set efficiencies for various pieces of equipment within the system.
|
|
35
|
+
Choose from the following.
|
|
36
|
+
|
|
37
|
+
* DOE_Ref_Pre_1980
|
|
38
|
+
* DOE_Ref_1980_2004
|
|
39
|
+
* ASHRAE_2004
|
|
40
|
+
* ASHRAE_2007
|
|
41
|
+
* ASHRAE_2010
|
|
42
|
+
* ASHRAE_2013
|
|
43
|
+
* ASHRAE_2016
|
|
44
|
+
* ASHRAE_2019
|
|
45
|
+
|
|
46
|
+
equipment_type: Text for the specific type of the system and equipment. (Default:
|
|
47
|
+
the first option below) Choose from.
|
|
48
|
+
|
|
49
|
+
* Radiant_Chiller_Boiler
|
|
50
|
+
* Radiant_Chiller_ASHP
|
|
51
|
+
* Radiant_Chiller_DHW
|
|
52
|
+
* Radiant_ACChiller_Boiler
|
|
53
|
+
* Radiant_ACChiller_ASHP
|
|
54
|
+
* Radiant_ACChiller_DHW
|
|
55
|
+
* Radiant_DCW_Boiler
|
|
56
|
+
* Radiant_DCW_ASHP
|
|
57
|
+
* Radiant_DCW_DHW
|
|
58
|
+
|
|
59
|
+
radiant_type: Text to indicate which faces are thermally active. Note
|
|
60
|
+
that systems are assumed to be embedded in concrete slabs unless
|
|
61
|
+
CeilingMetalPanel or FloorWithHardwood is specified. Choose from the
|
|
62
|
+
following. (Default: Floor).
|
|
63
|
+
|
|
64
|
+
* Floor
|
|
65
|
+
* Ceiling
|
|
66
|
+
* FloorWithCarpet
|
|
67
|
+
* CeilingMetalPanel
|
|
68
|
+
* FloorWithHardwood
|
|
69
|
+
|
|
70
|
+
minimum_operation_time: A number for the minimum number of hours of operation
|
|
71
|
+
for the radiant system before it shuts off. Note that this has no effect
|
|
72
|
+
if the radiant_type is not in a slab. (Default: 1).
|
|
73
|
+
switch_over_time: A number for the minimum number of hours for when the system
|
|
74
|
+
can switch between heating and cooling. Note that this has no effect
|
|
75
|
+
if the radiant_type is not in a slab. (Default: 24).
|
|
76
|
+
|
|
77
|
+
Properties:
|
|
78
|
+
* identifier
|
|
79
|
+
* display_name
|
|
80
|
+
* vintage
|
|
81
|
+
* equipment_type
|
|
82
|
+
* radiant_type
|
|
83
|
+
* minimum_operation_time
|
|
84
|
+
* switch_over_time
|
|
85
|
+
* schedules
|
|
86
|
+
* has_district_heating
|
|
87
|
+
* has_district_cooling
|
|
88
|
+
* user_data
|
|
89
|
+
* properties
|
|
90
|
+
"""
|
|
91
|
+
__slots__ = ('_radiant_type', '_minimum_operation_time', '_switch_over_time')
|
|
92
|
+
|
|
93
|
+
EQUIPMENT_TYPES = (
|
|
94
|
+
'Radiant_Chiller_Boiler',
|
|
95
|
+
'Radiant_Chiller_ASHP',
|
|
96
|
+
'Radiant_Chiller_DHW',
|
|
97
|
+
'Radiant_ACChiller_Boiler',
|
|
98
|
+
'Radiant_ACChiller_ASHP',
|
|
99
|
+
'Radiant_ACChiller_DHW',
|
|
100
|
+
'Radiant_DCW_Boiler',
|
|
101
|
+
'Radiant_DCW_ASHP',
|
|
102
|
+
'Radiant_DCW_DHW'
|
|
103
|
+
)
|
|
104
|
+
|
|
105
|
+
radiant_typeS = ('Floor', 'Ceiling', 'FloorWithCarpet',
|
|
106
|
+
'CeilingMetalPanel', 'FloorWithHardwood')
|
|
107
|
+
|
|
108
|
+
def __init__(self, identifier, vintage='ASHRAE_2019', equipment_type=None,
|
|
109
|
+
radiant_type='Floor', minimum_operation_time=1,
|
|
110
|
+
switch_over_time=24):
|
|
111
|
+
"""Initialize HVACSystem."""
|
|
112
|
+
# initialize base HVAC system properties
|
|
113
|
+
_HeatCoolBase.__init__(self, identifier, vintage, equipment_type)
|
|
114
|
+
|
|
115
|
+
# set the main features of the HVAC system
|
|
116
|
+
self.radiant_type = radiant_type
|
|
117
|
+
self.minimum_operation_time = minimum_operation_time
|
|
118
|
+
self.switch_over_time = switch_over_time
|
|
119
|
+
|
|
120
|
+
@property
|
|
121
|
+
def radiant_type(self):
|
|
122
|
+
"""Get or set text to indicate the type of radiant system."""
|
|
123
|
+
return self._radiant_type
|
|
124
|
+
|
|
125
|
+
@radiant_type.setter
|
|
126
|
+
def radiant_type(self, value):
|
|
127
|
+
clean_input = valid_string(value).lower()
|
|
128
|
+
for key in self.radiant_typeS:
|
|
129
|
+
if key.lower() == clean_input:
|
|
130
|
+
value = key
|
|
131
|
+
break
|
|
132
|
+
else:
|
|
133
|
+
raise ValueError(
|
|
134
|
+
'radiant_type {} is not recognized.\nChoose from the '
|
|
135
|
+
'following:\n{}'.format(value, self.radiant_typeS))
|
|
136
|
+
self._radiant_type = value
|
|
137
|
+
|
|
138
|
+
@property
|
|
139
|
+
def minimum_operation_time(self):
|
|
140
|
+
"""Get or set a the minimum hours of operation before the system shuts off."""
|
|
141
|
+
return self._minimum_operation_time
|
|
142
|
+
|
|
143
|
+
@minimum_operation_time.setter
|
|
144
|
+
def minimum_operation_time(self, value):
|
|
145
|
+
self._minimum_operation_time = \
|
|
146
|
+
float_positive(value, 'hvac minimum operation time')
|
|
147
|
+
|
|
148
|
+
@property
|
|
149
|
+
def switch_over_time(self):
|
|
150
|
+
"""Get or set the minimum hours the system can switch between heating/cooling."""
|
|
151
|
+
return self._switch_over_time
|
|
152
|
+
|
|
153
|
+
@switch_over_time.setter
|
|
154
|
+
def switch_over_time(self, value):
|
|
155
|
+
self._switch_over_time = float_positive(value, 'hvac switch over time')
|
|
156
|
+
|
|
157
|
+
@classmethod
|
|
158
|
+
def from_dict(cls, data):
|
|
159
|
+
"""Create a HVAC object from a dictionary.
|
|
160
|
+
|
|
161
|
+
Args:
|
|
162
|
+
data: A dictionary in following the format below.
|
|
163
|
+
|
|
164
|
+
.. code-block:: python
|
|
165
|
+
|
|
166
|
+
{
|
|
167
|
+
"type": "", # text for the class name of the HVAC
|
|
168
|
+
"identifier": "Classroom1_System", # identifier for the HVAC
|
|
169
|
+
"display_name": "Standard System", # name for the HVAC
|
|
170
|
+
"vintage": "ASHRAE_2019", # text for the vintage of the template
|
|
171
|
+
"equipment_type": "", # text for the HVAC equipment type
|
|
172
|
+
"radiant_type": "Ceiling",
|
|
173
|
+
"minimum_operation_time": 1,
|
|
174
|
+
"switch_over_time": 24
|
|
175
|
+
}
|
|
176
|
+
"""
|
|
177
|
+
assert data['type'] == cls.__name__, \
|
|
178
|
+
'Expected {} dictionary. Got {}.'.format(cls.__name__, data['type'])
|
|
179
|
+
# extract the key features and properties of the HVAC
|
|
180
|
+
f_type, mot, sot = cls._radiant_properties_from_dict(data)
|
|
181
|
+
new_obj = cls(data['identifier'], data['vintage'], data['equipment_type'],
|
|
182
|
+
f_type, mot, sot)
|
|
183
|
+
if 'display_name' in data and data['display_name'] is not None:
|
|
184
|
+
new_obj.display_name = data['display_name']
|
|
185
|
+
if 'user_data' in data and data['user_data'] is not None:
|
|
186
|
+
new_obj.user_data = data['user_data']
|
|
187
|
+
return new_obj
|
|
188
|
+
|
|
189
|
+
@classmethod
|
|
190
|
+
def from_dict_abridged(cls, data, schedule_dict):
|
|
191
|
+
"""Create a HVAC object from an abridged dictionary.
|
|
192
|
+
|
|
193
|
+
Args:
|
|
194
|
+
data: An abridged dictionary in following the format below.
|
|
195
|
+
schedule_dict: A dictionary with schedule identifiers as keys and honeybee
|
|
196
|
+
schedule objects as values (either ScheduleRuleset or
|
|
197
|
+
ScheduleFixedInterval). These will be used to assign the schedules
|
|
198
|
+
to the Setpoint object.
|
|
199
|
+
|
|
200
|
+
.. code-block:: python
|
|
201
|
+
|
|
202
|
+
{
|
|
203
|
+
"type": "", # text for the class name of the HVAC
|
|
204
|
+
"identifier": "Classroom1_System", # identifier for the HVAC
|
|
205
|
+
"display_name": "Standard System", # name for the HVAC
|
|
206
|
+
"vintage": "ASHRAE_2019", # text for the vintage of the template
|
|
207
|
+
"equipment_type": "", # text for the HVAC equipment type
|
|
208
|
+
"radiant_type": "Ceiling",
|
|
209
|
+
"minimum_operation_time": 1,
|
|
210
|
+
"switch_over_time": 24
|
|
211
|
+
}
|
|
212
|
+
"""
|
|
213
|
+
# this is the same as the from_dict method for as long as there are not schedules
|
|
214
|
+
return cls.from_dict(data)
|
|
215
|
+
|
|
216
|
+
def to_dict(self, abridged=False):
|
|
217
|
+
"""Radiant system dictionary representation.
|
|
218
|
+
|
|
219
|
+
Args:
|
|
220
|
+
abridged: Boolean to note whether the full dictionary describing the
|
|
221
|
+
object should be returned (False) or just an abridged version (True).
|
|
222
|
+
This input currently has no effect but may eventually have one if
|
|
223
|
+
schedule-type properties are exposed on this template.
|
|
224
|
+
"""
|
|
225
|
+
base = {'type': self.__class__.__name__}
|
|
226
|
+
base['identifier'] = self.identifier
|
|
227
|
+
base['vintage'] = self.vintage
|
|
228
|
+
base['equipment_type'] = self.equipment_type
|
|
229
|
+
base['radiant_type'] = self.radiant_type
|
|
230
|
+
base['minimum_operation_time'] = self.minimum_operation_time
|
|
231
|
+
base['switch_over_time'] = self.switch_over_time
|
|
232
|
+
if self._display_name is not None:
|
|
233
|
+
base['display_name'] = self.display_name
|
|
234
|
+
if self._user_data is not None:
|
|
235
|
+
base['user_data'] = self.user_data
|
|
236
|
+
return base
|
|
237
|
+
|
|
238
|
+
@staticmethod
|
|
239
|
+
def _radiant_properties_from_dict(data):
|
|
240
|
+
"""Extract basic radiant properties from a dictionary and assign defaults."""
|
|
241
|
+
mot = data['minimum_operation_time'] if 'minimum_operation_time' in data else 1
|
|
242
|
+
sot = data['switch_over_time'] if 'switch_over_time' in data else 24
|
|
243
|
+
rad_type = data['radiant_type'] if 'radiant_type' in data and \
|
|
244
|
+
data['radiant_type'] is not None else 'Floor'
|
|
245
|
+
return rad_type, mot, sot
|
|
246
|
+
|
|
247
|
+
def __copy__(self):
|
|
248
|
+
new_obj = self.__class__(
|
|
249
|
+
self._identifier, self._vintage, self._equipment_type,
|
|
250
|
+
self._radiant_type, self._minimum_operation_time,
|
|
251
|
+
self._switch_over_time)
|
|
252
|
+
new_obj._display_name = self._display_name
|
|
253
|
+
new_obj._user_data = None if self._user_data is None else self._user_data.copy()
|
|
254
|
+
return new_obj
|
|
255
|
+
|
|
256
|
+
def __key(self):
|
|
257
|
+
"""A tuple based on the object properties, useful for hashing."""
|
|
258
|
+
return (self._identifier, self._vintage, self._equipment_type,
|
|
259
|
+
self._radiant_type, self._minimum_operation_time,
|
|
260
|
+
self._switch_over_time)
|
|
261
|
+
|
|
262
|
+
def __hash__(self):
|
|
263
|
+
return hash(self.__key())
|
|
264
|
+
|
|
265
|
+
def __eq__(self, other):
|
|
266
|
+
return isinstance(other, self.__class__) and self.__key() == other.__key()
|
|
267
|
+
|
|
268
|
+
def __ne__(self, other):
|
|
269
|
+
return not self.__eq__(other)
|
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
# coding=utf-8
|
|
2
|
+
"""Residential Air Conditioning, Heat Pump or Furnace system."""
|
|
3
|
+
from __future__ import division
|
|
4
|
+
|
|
5
|
+
from ._base import _HeatCoolBase
|
|
6
|
+
|
|
7
|
+
from honeybee._lockable import lockable
|
|
8
|
+
|
|
9
|
+
|
|
10
|
+
@lockable
|
|
11
|
+
class Residential(_HeatCoolBase):
|
|
12
|
+
"""Residential Air Conditioning, Heat Pump or Furnace system.
|
|
13
|
+
|
|
14
|
+
Residential HVAC systems are intended primarily for single-family homes and
|
|
15
|
+
include a wide variety of options. In all cases, each room/zone will receive
|
|
16
|
+
its own air loop WITHOUT an outdoor air inlet (air is simply being recirculated
|
|
17
|
+
through the loop). Residential air conditioning (AC) systems are modeled
|
|
18
|
+
using a unitary system with a single-speed direct expansion (DX) cooling
|
|
19
|
+
coil in the loop. Residential heat pump (HP) systems use a single-speed DX
|
|
20
|
+
heating coil in the unitary system and the residential furnace option uses
|
|
21
|
+
a gas coil in the unitary system. In all cases, the properties of these coils
|
|
22
|
+
are set to reflect a typical residential system.
|
|
23
|
+
|
|
24
|
+
Args:
|
|
25
|
+
identifier: Text string for system identifier. Must be < 100 characters
|
|
26
|
+
and not contain any EnergyPlus special characters. This will be used to
|
|
27
|
+
identify the object across a model and in the exported IDF.
|
|
28
|
+
vintage: Text for the vintage of the template system. This will be used
|
|
29
|
+
to set efficiencies for various pieces of equipment within the system.
|
|
30
|
+
Choose from the following.
|
|
31
|
+
|
|
32
|
+
* DOE_Ref_Pre_1980
|
|
33
|
+
* DOE_Ref_1980_2004
|
|
34
|
+
* ASHRAE_2004
|
|
35
|
+
* ASHRAE_2007
|
|
36
|
+
* ASHRAE_2010
|
|
37
|
+
* ASHRAE_2013
|
|
38
|
+
* ASHRAE_2016
|
|
39
|
+
* ASHRAE_2019
|
|
40
|
+
|
|
41
|
+
equipment_type: Text for the specific type of the system and equipment. (Default:
|
|
42
|
+
the first option below) Choose from.
|
|
43
|
+
|
|
44
|
+
* ResidentialAC_ElectricBaseboard
|
|
45
|
+
* ResidentialAC_BoilerBaseboard
|
|
46
|
+
* ResidentialAC_ASHPBaseboard
|
|
47
|
+
* ResidentialAC_DHWBaseboard
|
|
48
|
+
* ResidentialAC_ResidentialFurnace
|
|
49
|
+
* ResidentialAC
|
|
50
|
+
* ResidentialHP
|
|
51
|
+
* ResidentialHPNoCool
|
|
52
|
+
* ResidentialFurnace
|
|
53
|
+
|
|
54
|
+
Properties:
|
|
55
|
+
* identifier
|
|
56
|
+
* display_name
|
|
57
|
+
* vintage
|
|
58
|
+
* equipment_type
|
|
59
|
+
* schedules
|
|
60
|
+
* has_district_heating
|
|
61
|
+
* has_district_cooling
|
|
62
|
+
* user_data
|
|
63
|
+
* properties
|
|
64
|
+
"""
|
|
65
|
+
__slots__ = ()
|
|
66
|
+
|
|
67
|
+
EQUIPMENT_TYPES = (
|
|
68
|
+
'ResidentialAC_ElectricBaseboard',
|
|
69
|
+
'ResidentialAC_BoilerBaseboard',
|
|
70
|
+
'ResidentialAC_ASHPBaseboard',
|
|
71
|
+
'ResidentialAC_DHWBaseboard',
|
|
72
|
+
'ResidentialAC_ResidentialFurnace',
|
|
73
|
+
'ResidentialAC',
|
|
74
|
+
'ResidentialHP',
|
|
75
|
+
'ResidentialHPNoCool',
|
|
76
|
+
'ResidentialFurnace'
|
|
77
|
+
)
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
# coding=utf-8
|
|
2
|
+
"""Variable Refrigerant Flow (VRF) heating/cooling system (with no ventilation)."""
|
|
3
|
+
from __future__ import division
|
|
4
|
+
|
|
5
|
+
from ._base import _HeatCoolBase
|
|
6
|
+
|
|
7
|
+
from honeybee._lockable import lockable
|
|
8
|
+
|
|
9
|
+
|
|
10
|
+
@lockable
|
|
11
|
+
class VRF(_HeatCoolBase):
|
|
12
|
+
"""Variable Refrigerant Flow (VRF) heating/cooling system (with no ventilation).
|
|
13
|
+
|
|
14
|
+
Each room/zone receives its own Variable Refrigerant Flow (VRF) terminal,
|
|
15
|
+
which meets the heating and cooling loads of the space. All room/zone terminals
|
|
16
|
+
are connected to the same outdoor unit, meaning that either all rooms must be
|
|
17
|
+
in cooling or heating mode together.
|
|
18
|
+
|
|
19
|
+
Args:
|
|
20
|
+
identifier: Text string for system identifier. Must be < 100 characters
|
|
21
|
+
and not contain any EnergyPlus special characters. This will be used to
|
|
22
|
+
identify the object across a model and in the exported IDF.
|
|
23
|
+
vintage: Text for the vintage of the template system. This will be used
|
|
24
|
+
to set efficiencies for various pieces of equipment within the system.
|
|
25
|
+
Choose from the following.
|
|
26
|
+
|
|
27
|
+
* DOE_Ref_Pre_1980
|
|
28
|
+
* DOE_Ref_1980_2004
|
|
29
|
+
* ASHRAE_2004
|
|
30
|
+
* ASHRAE_2007
|
|
31
|
+
* ASHRAE_2010
|
|
32
|
+
* ASHRAE_2013
|
|
33
|
+
* ASHRAE_2016
|
|
34
|
+
* ASHRAE_2019
|
|
35
|
+
|
|
36
|
+
equipment_type: Text for the specific type of the system and equipment. (Default:
|
|
37
|
+
the first option below) Choose from.
|
|
38
|
+
|
|
39
|
+
* VRF
|
|
40
|
+
|
|
41
|
+
Properties:
|
|
42
|
+
* identifier
|
|
43
|
+
* display_name
|
|
44
|
+
* vintage
|
|
45
|
+
* equipment_type
|
|
46
|
+
* schedules
|
|
47
|
+
* has_district_heating
|
|
48
|
+
* has_district_cooling
|
|
49
|
+
* user_data
|
|
50
|
+
* properties
|
|
51
|
+
"""
|
|
52
|
+
__slots__ = ()
|
|
53
|
+
|
|
54
|
+
EQUIPMENT_TYPES = ('VRF',)
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
# coding=utf-8
|
|
2
|
+
"""Window Air Conditioning cooling system (with optional heating)."""
|
|
3
|
+
from __future__ import division
|
|
4
|
+
|
|
5
|
+
from ._base import _HeatCoolBase
|
|
6
|
+
|
|
7
|
+
from honeybee._lockable import lockable
|
|
8
|
+
|
|
9
|
+
|
|
10
|
+
@lockable
|
|
11
|
+
class WindowAC(_HeatCoolBase):
|
|
12
|
+
"""Window Air Conditioning cooling system (with optional heating).
|
|
13
|
+
|
|
14
|
+
Each room/zone will receive its own Packaged Terminal Air Conditioner (PTAC)
|
|
15
|
+
with properties set to reflect a typical window air conditioning (AC) unit.
|
|
16
|
+
No ventilation air is supplied by the unit and the cooling coil within the
|
|
17
|
+
unit is a single-speed direct expansion (DX) cooling coil. Heating loads
|
|
18
|
+
can be met with various options, including several types of baseboards,
|
|
19
|
+
a furnace, or gas unit heaters.
|
|
20
|
+
|
|
21
|
+
Args:
|
|
22
|
+
identifier: Text string for system identifier. Must be < 100 characters
|
|
23
|
+
and not contain any EnergyPlus special characters. This will be used to
|
|
24
|
+
identify the object across a model and in the exported IDF.
|
|
25
|
+
vintage: Text for the vintage of the template system. This will be used
|
|
26
|
+
to set efficiencies for various pieces of equipment within the system.
|
|
27
|
+
Choose from the following.
|
|
28
|
+
|
|
29
|
+
* DOE_Ref_Pre_1980
|
|
30
|
+
* DOE_Ref_1980_2004
|
|
31
|
+
* ASHRAE_2004
|
|
32
|
+
* ASHRAE_2007
|
|
33
|
+
* ASHRAE_2010
|
|
34
|
+
* ASHRAE_2013
|
|
35
|
+
* ASHRAE_2016
|
|
36
|
+
* ASHRAE_2019
|
|
37
|
+
|
|
38
|
+
equipment_type: Text for the specific type of the system and equipment. (Default:
|
|
39
|
+
the first option below) Choose from.
|
|
40
|
+
|
|
41
|
+
* WindowAC_ElectricBaseboard
|
|
42
|
+
* WindowAC_BoilerBaseboard
|
|
43
|
+
* WindowAC_ASHPBaseboard
|
|
44
|
+
* WindowAC_DHWBaseboard
|
|
45
|
+
* WindowAC_Furnace
|
|
46
|
+
* WindowAC_GasHeaters
|
|
47
|
+
* WindowAC
|
|
48
|
+
|
|
49
|
+
Properties:
|
|
50
|
+
* identifier
|
|
51
|
+
* display_name
|
|
52
|
+
* vintage
|
|
53
|
+
* equipment_type
|
|
54
|
+
* schedules
|
|
55
|
+
* has_district_heating
|
|
56
|
+
* has_district_cooling
|
|
57
|
+
* user_data
|
|
58
|
+
* properties
|
|
59
|
+
"""
|
|
60
|
+
__slots__ = ()
|
|
61
|
+
|
|
62
|
+
EQUIPMENT_TYPES = (
|
|
63
|
+
'WindowAC_ElectricBaseboard',
|
|
64
|
+
'WindowAC_BoilerBaseboard',
|
|
65
|
+
'WindowAC_ASHPBaseboard',
|
|
66
|
+
'WindowAC_DHWBaseboard',
|
|
67
|
+
'WindowAC_Furnace',
|
|
68
|
+
'WindowAC_GasHeaters',
|
|
69
|
+
'WindowAC'
|
|
70
|
+
)
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
# coding=utf-8
|
|
2
|
+
"""Water Source Heat Pump (WSHP) heating/cooling system (with no ventilation)."""
|
|
3
|
+
from __future__ import division
|
|
4
|
+
|
|
5
|
+
from ._base import _HeatCoolBase
|
|
6
|
+
|
|
7
|
+
from honeybee._lockable import lockable
|
|
8
|
+
|
|
9
|
+
|
|
10
|
+
@lockable
|
|
11
|
+
class WSHP(_HeatCoolBase):
|
|
12
|
+
"""Water Source Heat Pump (WSHP) heating/cooling system (with no ventilation).
|
|
13
|
+
|
|
14
|
+
Each room/zone receives its own Water Source Heat Pump (WSHP), which meets
|
|
15
|
+
the heating and cooling loads of the space. All WSHPs are connected to the
|
|
16
|
+
same water condenser loop, which has its temperature maintained by the
|
|
17
|
+
equipment_type (eg. Boiler with Cooling Tower).
|
|
18
|
+
|
|
19
|
+
Args:
|
|
20
|
+
identifier: Text string for system identifier. Must be < 100 characters
|
|
21
|
+
and not contain any EnergyPlus special characters. This will be used to
|
|
22
|
+
identify the object across a model and in the exported IDF.
|
|
23
|
+
vintage: Text for the vintage of the template system. This will be used
|
|
24
|
+
to set efficiencies for various pieces of equipment within the system.
|
|
25
|
+
Choose from the following.
|
|
26
|
+
|
|
27
|
+
* DOE_Ref_Pre_1980
|
|
28
|
+
* DOE_Ref_1980_2004
|
|
29
|
+
* ASHRAE_2004
|
|
30
|
+
* ASHRAE_2007
|
|
31
|
+
* ASHRAE_2010
|
|
32
|
+
* ASHRAE_2013
|
|
33
|
+
* ASHRAE_2016
|
|
34
|
+
* ASHRAE_2019
|
|
35
|
+
|
|
36
|
+
equipment_type: Text for the specific type of the system and equipment. (Default:
|
|
37
|
+
the first option below) Choose from.
|
|
38
|
+
|
|
39
|
+
* WSHP_FluidCooler_Boiler
|
|
40
|
+
* WSHP_CoolingTower_Boiler
|
|
41
|
+
* WSHP_GSHP
|
|
42
|
+
* WSHP_DCW_DHW
|
|
43
|
+
|
|
44
|
+
Properties:
|
|
45
|
+
* identifier
|
|
46
|
+
* display_name
|
|
47
|
+
* vintage
|
|
48
|
+
* equipment_type
|
|
49
|
+
* schedules
|
|
50
|
+
* has_district_heating
|
|
51
|
+
* has_district_cooling
|
|
52
|
+
* user_data
|
|
53
|
+
* properties
|
|
54
|
+
"""
|
|
55
|
+
__slots__ = ()
|
|
56
|
+
|
|
57
|
+
EQUIPMENT_TYPES = (
|
|
58
|
+
'WSHP_FluidCooler_Boiler',
|
|
59
|
+
'WSHP_CoolingTower_Boiler',
|
|
60
|
+
'WSHP_GSHP',
|
|
61
|
+
'WSHP_DCW_DHW'
|
|
62
|
+
)
|