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,177 @@
|
|
|
1
|
+
# coding=utf-8
|
|
2
|
+
"""Base class for all heating/cooling systems without any ventilation."""
|
|
3
|
+
from __future__ import division
|
|
4
|
+
import os
|
|
5
|
+
|
|
6
|
+
from honeybee._lockable import lockable
|
|
7
|
+
|
|
8
|
+
from .._template import _TemplateSystem, _EnumerationBase
|
|
9
|
+
from ..idealair import IdealAirSystem
|
|
10
|
+
from ...properties.extension import HeatCoolSystemProperties
|
|
11
|
+
|
|
12
|
+
|
|
13
|
+
@lockable
|
|
14
|
+
class _HeatCoolBase(_TemplateSystem):
|
|
15
|
+
"""Base class for all heating/cooling systems without any ventilation.
|
|
16
|
+
|
|
17
|
+
Args:
|
|
18
|
+
identifier: Text string for system identifier. Must be < 100 characters
|
|
19
|
+
and not contain any EnergyPlus special characters. This will be used to
|
|
20
|
+
identify the object across a model and in the exported IDF.
|
|
21
|
+
vintage: Text for the vintage of the template system. This will be used
|
|
22
|
+
to set efficiencies for various pieces of equipment within the system.
|
|
23
|
+
Choose from the following.
|
|
24
|
+
|
|
25
|
+
* DOE_Ref_Pre_1980
|
|
26
|
+
* DOE_Ref_1980_2004
|
|
27
|
+
* ASHRAE_2004
|
|
28
|
+
* ASHRAE_2007
|
|
29
|
+
* ASHRAE_2010
|
|
30
|
+
* ASHRAE_2013
|
|
31
|
+
* ASHRAE_2016
|
|
32
|
+
* ASHRAE_2019
|
|
33
|
+
|
|
34
|
+
equipment_type: Text for the specific type of the system and equipment.
|
|
35
|
+
For example, 'Baseboard gas boiler'.
|
|
36
|
+
|
|
37
|
+
Properties:
|
|
38
|
+
* identifier
|
|
39
|
+
* display_name
|
|
40
|
+
* vintage
|
|
41
|
+
* equipment_type
|
|
42
|
+
* has_district_heating
|
|
43
|
+
* has_district_cooling
|
|
44
|
+
* user_data
|
|
45
|
+
* properties
|
|
46
|
+
"""
|
|
47
|
+
__slots__ = ('_properties',)
|
|
48
|
+
COOL_ONLY_TYPES = (
|
|
49
|
+
'EvapCoolers', 'FCU_Chiller', 'FCU_ACChiller', 'FCU_DCW',
|
|
50
|
+
'ResidentialAC', 'WindowAC'
|
|
51
|
+
)
|
|
52
|
+
HEAT_ONLY_TYPES = (
|
|
53
|
+
'ElectricBaseboard', 'BoilerBaseboard', 'ASHPBaseboard',
|
|
54
|
+
'DHWBaseboard', 'GasHeaters', 'ResidentialHPNoCool', 'ResidentialFurnace'
|
|
55
|
+
)
|
|
56
|
+
|
|
57
|
+
def __init__(self, identifier, vintage='ASHRAE_2019', equipment_type=None):
|
|
58
|
+
# initialize base HVAC system properties
|
|
59
|
+
_TemplateSystem.__init__(self, identifier, vintage, equipment_type)
|
|
60
|
+
self._properties = HeatCoolSystemProperties(self)
|
|
61
|
+
|
|
62
|
+
def to_ideal_air_equivalent(self):
|
|
63
|
+
"""Get a version of this HVAC as an IdealAirSystem."""
|
|
64
|
+
i_sys = IdealAirSystem(self.identifier)
|
|
65
|
+
if self.equipment_type in self.COOL_ONLY_TYPES:
|
|
66
|
+
i_sys.heating_limit = 0
|
|
67
|
+
if self.equipment_type in self.HEAT_ONLY_TYPES:
|
|
68
|
+
i_sys.cooling_limit = 0
|
|
69
|
+
i_sys.economizer_type = 'NoEconomizer'
|
|
70
|
+
i_sys._display_name = self._display_name
|
|
71
|
+
return i_sys
|
|
72
|
+
|
|
73
|
+
@property
|
|
74
|
+
def properties(self):
|
|
75
|
+
"""Get properties for extensions."""
|
|
76
|
+
return self._properties
|
|
77
|
+
|
|
78
|
+
@classmethod
|
|
79
|
+
def from_dict(cls, data):
|
|
80
|
+
"""Create a HVAC object from a dictionary.
|
|
81
|
+
|
|
82
|
+
Args:
|
|
83
|
+
data: A HeatCool dictionary in following the format below.
|
|
84
|
+
|
|
85
|
+
.. code-block:: python
|
|
86
|
+
|
|
87
|
+
{
|
|
88
|
+
"type": "", # text for the class name of the HVAC
|
|
89
|
+
"identifier": "Classroom1_System", # identifier for the HVAC
|
|
90
|
+
"display_name": "Standard System", # name for the HVAC
|
|
91
|
+
"vintage": "ASHRAE_2019", # text for the vintage of the template
|
|
92
|
+
"equipment_type": "", # text for the HVAC equipment type
|
|
93
|
+
"properties": { ... } # HeatCoolSystemProperties as a dict
|
|
94
|
+
}
|
|
95
|
+
"""
|
|
96
|
+
assert data['type'] == cls.__name__, \
|
|
97
|
+
'Expected {} dictionary. Got {}.'.format(cls.__name__, data['type'])
|
|
98
|
+
new_obj = cls(data['identifier'], data['vintage'], data['equipment_type'])
|
|
99
|
+
if 'display_name' in data and data['display_name'] is not None:
|
|
100
|
+
new_obj.display_name = data['display_name']
|
|
101
|
+
if 'user_data' in data and data['user_data'] is not None:
|
|
102
|
+
new_obj.user_data = data['user_data']
|
|
103
|
+
if 'properties' in data and data['properties'] is not None:
|
|
104
|
+
new_obj.properties._load_extension_attr_from_dict(data['properties'])
|
|
105
|
+
return new_obj
|
|
106
|
+
|
|
107
|
+
@classmethod
|
|
108
|
+
def from_dict_abridged(cls, data, schedule_dict):
|
|
109
|
+
"""Create a HVAC object from an abridged dictionary.
|
|
110
|
+
|
|
111
|
+
Args:
|
|
112
|
+
data: A HeatCool abridged dictionary in following the format below.
|
|
113
|
+
schedule_dict: A dictionary with schedule identifiers as keys and honeybee
|
|
114
|
+
schedule objects as values (either ScheduleRuleset or
|
|
115
|
+
ScheduleFixedInterval). These will be used to assign the schedules
|
|
116
|
+
to the Setpoint object.
|
|
117
|
+
|
|
118
|
+
.. code-block:: python
|
|
119
|
+
|
|
120
|
+
{
|
|
121
|
+
"type": "", # text for the class name of the HVAC
|
|
122
|
+
"identifier": "Classroom1_System", # identifier for the HVAC
|
|
123
|
+
"display_name": "Standard System", # name for the HVAC
|
|
124
|
+
"vintage": "ASHRAE_2019", # text for the vintage of the template
|
|
125
|
+
"equipment_type": "", # text for the HVAC equipment type
|
|
126
|
+
"properties": { ... } # dict of the HeatCoolSystemProperties
|
|
127
|
+
}
|
|
128
|
+
"""
|
|
129
|
+
# this is the same as the from_dict method for as long as there are not schedules
|
|
130
|
+
return cls.from_dict(data)
|
|
131
|
+
|
|
132
|
+
def to_dict(self, abridged=False):
|
|
133
|
+
"""HeatCool system dictionary representation.
|
|
134
|
+
|
|
135
|
+
Args:
|
|
136
|
+
abridged: Boolean to note whether the full dictionary describing the
|
|
137
|
+
object should be returned (False) or just an abridged version (True).
|
|
138
|
+
This input currently has no effect but may eventually have one if
|
|
139
|
+
schedule-type properties are exposed on this template.
|
|
140
|
+
"""
|
|
141
|
+
|
|
142
|
+
"""Get a base dictionary of the HeatCool system."""
|
|
143
|
+
base = {'type': self.__class__.__name__}
|
|
144
|
+
base['identifier'] = self.identifier
|
|
145
|
+
if self._display_name is not None:
|
|
146
|
+
base['display_name'] = self.display_name
|
|
147
|
+
base['vintage'] = self.vintage
|
|
148
|
+
base['equipment_type'] = self.equipment_type
|
|
149
|
+
if self._user_data is not None:
|
|
150
|
+
base['user_data'] = self.user_data
|
|
151
|
+
prop_dict = self.properties.to_dict()
|
|
152
|
+
if prop_dict is not None:
|
|
153
|
+
base['properties'] = prop_dict
|
|
154
|
+
return base
|
|
155
|
+
|
|
156
|
+
def __copy__(self):
|
|
157
|
+
new_obj = self.__class__(self._identifier, self.vintage, self._equipment_type)
|
|
158
|
+
new_obj._display_name = self._display_name
|
|
159
|
+
new_obj._user_data = None if self._user_data is None else self._user_data.copy()
|
|
160
|
+
new_obj._properties._duplicate_extension_attr(self._properties)
|
|
161
|
+
return new_obj
|
|
162
|
+
|
|
163
|
+
|
|
164
|
+
class _HeatCoolEnumeration(_EnumerationBase):
|
|
165
|
+
"""Enumerates the systems that inherit from _HeatCoolBase."""
|
|
166
|
+
|
|
167
|
+
def __init__(self, import_modules=True):
|
|
168
|
+
if import_modules:
|
|
169
|
+
self._import_modules(
|
|
170
|
+
os.path.dirname(__file__), 'honeybee_energy.hvac.heatcool')
|
|
171
|
+
|
|
172
|
+
self._HVAC_TYPES = {}
|
|
173
|
+
self._EQUIPMENT_TYPES = {}
|
|
174
|
+
for clss in _HeatCoolBase.__subclasses__():
|
|
175
|
+
self._HVAC_TYPES[clss.__name__] = clss
|
|
176
|
+
for equip_type in clss.EQUIPMENT_TYPES:
|
|
177
|
+
self._EQUIPMENT_TYPES[equip_type] = clss
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
# coding=utf-8
|
|
2
|
+
"""Baseboard heating system. Intended for spaces only requiring 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 Baseboard(_HeatCoolBase):
|
|
12
|
+
"""Baseboard heating system.
|
|
13
|
+
|
|
14
|
+
Baseboard systems are intended for spaces only requiring heating and
|
|
15
|
+
no ventilation or cooling. Each room/zone will get its own baseboard
|
|
16
|
+
heating unit that satisfies the heating load.
|
|
17
|
+
|
|
18
|
+
Args:
|
|
19
|
+
identifier: Text string for system identifier. Must be < 100 characters
|
|
20
|
+
and not contain any EnergyPlus special characters. This will be used to
|
|
21
|
+
identify the object across a model and in the exported IDF.
|
|
22
|
+
vintage: Text for the vintage of the template system. This will be used
|
|
23
|
+
to set efficiencies for various pieces of equipment within the system.
|
|
24
|
+
Choose from the following.
|
|
25
|
+
|
|
26
|
+
* DOE_Ref_Pre_1980
|
|
27
|
+
* DOE_Ref_1980_2004
|
|
28
|
+
* ASHRAE_2004
|
|
29
|
+
* ASHRAE_2007
|
|
30
|
+
* ASHRAE_2010
|
|
31
|
+
* ASHRAE_2013
|
|
32
|
+
* ASHRAE_2016
|
|
33
|
+
* ASHRAE_2019
|
|
34
|
+
|
|
35
|
+
equipment_type: Text for the specific type of the system and equipment. (Default:
|
|
36
|
+
the first option below) Choose from.
|
|
37
|
+
|
|
38
|
+
* ElectricBaseboard
|
|
39
|
+
* BoilerBaseboard
|
|
40
|
+
* ASHPBaseboard
|
|
41
|
+
* DHWBaseboard
|
|
42
|
+
|
|
43
|
+
Properties:
|
|
44
|
+
* identifier
|
|
45
|
+
* display_name
|
|
46
|
+
* vintage
|
|
47
|
+
* equipment_type
|
|
48
|
+
* schedules
|
|
49
|
+
* has_district_heating
|
|
50
|
+
* has_district_cooling
|
|
51
|
+
* user_data
|
|
52
|
+
* properties
|
|
53
|
+
"""
|
|
54
|
+
__slots__ = ()
|
|
55
|
+
|
|
56
|
+
EQUIPMENT_TYPES = (
|
|
57
|
+
'ElectricBaseboard',
|
|
58
|
+
'BoilerBaseboard',
|
|
59
|
+
'ASHPBaseboard',
|
|
60
|
+
'DHWBaseboard'
|
|
61
|
+
)
|
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
# coding=utf-8
|
|
2
|
+
"""Direct evaporative cooling systems (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 EvaporativeCooler(_HeatCoolBase):
|
|
12
|
+
"""Direct evaporative cooling systems (with optional heating).
|
|
13
|
+
|
|
14
|
+
Each room/zone will receive its own air loop sized to meet the sensible load,
|
|
15
|
+
which contains an evaporative cooler that directly adds humidity to the room
|
|
16
|
+
air to cool it. The loop contains an outdoor air mixer, which is used whenever
|
|
17
|
+
the outdoor air has a lower wet bulb temperature than the return air from
|
|
18
|
+
the room. In the event that the combination of outdoor and room return air
|
|
19
|
+
air is too humid, a backup single-speed direct expansion (DX) cooling coil
|
|
20
|
+
will be used. Heating loads can be met with various options, including
|
|
21
|
+
several types of baseboards, a furnace, or gas unit heaters.
|
|
22
|
+
|
|
23
|
+
Args:
|
|
24
|
+
identifier: Text string for system identifier. Must be < 100 characters
|
|
25
|
+
and not contain any EnergyPlus special characters. This will be used to
|
|
26
|
+
identify the object across a model and in the exported IDF.
|
|
27
|
+
vintage: Text for the vintage of the template system. This will be used
|
|
28
|
+
to set efficiencies for various pieces of equipment within the system.
|
|
29
|
+
Choose from the following.
|
|
30
|
+
|
|
31
|
+
* DOE_Ref_Pre_1980
|
|
32
|
+
* DOE_Ref_1980_2004
|
|
33
|
+
* ASHRAE_2004
|
|
34
|
+
* ASHRAE_2007
|
|
35
|
+
* ASHRAE_2010
|
|
36
|
+
* ASHRAE_2013
|
|
37
|
+
* ASHRAE_2016
|
|
38
|
+
* ASHRAE_2019
|
|
39
|
+
|
|
40
|
+
equipment_type: Text for the specific type of the system and equipment. (Default:
|
|
41
|
+
the first option below) Choose from.
|
|
42
|
+
|
|
43
|
+
* EvapCoolers_ElectricBaseboard
|
|
44
|
+
* EvapCoolers_BoilerBaseboard
|
|
45
|
+
* EvapCoolers_ASHPBaseboard
|
|
46
|
+
* EvapCoolers_DHWBaseboard
|
|
47
|
+
* EvapCoolers_Furnace
|
|
48
|
+
* EvapCoolers_UnitHeaters
|
|
49
|
+
* EvapCoolers
|
|
50
|
+
|
|
51
|
+
Properties:
|
|
52
|
+
* identifier
|
|
53
|
+
* display_name
|
|
54
|
+
* vintage
|
|
55
|
+
* equipment_type
|
|
56
|
+
* schedules
|
|
57
|
+
* has_district_heating
|
|
58
|
+
* has_district_cooling
|
|
59
|
+
* user_data
|
|
60
|
+
* properties
|
|
61
|
+
"""
|
|
62
|
+
__slots__ = ()
|
|
63
|
+
|
|
64
|
+
EQUIPMENT_TYPES = (
|
|
65
|
+
'EvapCoolers_ElectricBaseboard',
|
|
66
|
+
'EvapCoolers_BoilerBaseboard',
|
|
67
|
+
'EvapCoolers_ASHPBaseboard',
|
|
68
|
+
'EvapCoolers_DHWBaseboard',
|
|
69
|
+
'EvapCoolers_Furnace',
|
|
70
|
+
'EvapCoolers_UnitHeaters',
|
|
71
|
+
'EvapCoolers'
|
|
72
|
+
)
|
|
@@ -0,0 +1,92 @@
|
|
|
1
|
+
# coding=utf-8
|
|
2
|
+
"""Fan Coil Unit (FCU) 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 FCU(_HeatCoolBase):
|
|
12
|
+
"""Fan Coil Unit (FCU) heating/cooling system (with no ventilation).
|
|
13
|
+
|
|
14
|
+
Each room/zone receives its own Fan Coil Unit (FCU), which meets the heating
|
|
15
|
+
and cooling loads of the space. The cooling coil in the FCU is always chilled
|
|
16
|
+
water cooling coil, which is connected to a chilled water loop operating
|
|
17
|
+
at 6.7C (44F). The heating coil is a hot water coil except when when electric
|
|
18
|
+
baseboards or gas heaters are specified. Hot water temperature is 82C (180F) for
|
|
19
|
+
boiler/district heating and 49C (120F) when ASHP is used.
|
|
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
|
+
* FCU_Chiller_Boiler
|
|
42
|
+
* FCU_Chiller_ASHP
|
|
43
|
+
* FCU_Chiller_DHW
|
|
44
|
+
* FCU_Chiller_ElectricBaseboard
|
|
45
|
+
* FCU_Chiller_GasHeaters
|
|
46
|
+
* FCU_Chiller
|
|
47
|
+
* FCU_ACChiller_Boiler
|
|
48
|
+
* FCU_ACChiller_ASHP
|
|
49
|
+
* FCU_ACChiller_DHW
|
|
50
|
+
* FCU_ACChiller_ElectricBaseboard
|
|
51
|
+
* FCU_ACChiller_GasHeaters
|
|
52
|
+
* FCU_ACChiller
|
|
53
|
+
* FCU_DCW_Boiler
|
|
54
|
+
* FCU_DCW_ASHP
|
|
55
|
+
* FCU_DCW_DHW
|
|
56
|
+
* FCU_DCW_ElectricBaseboard
|
|
57
|
+
* FCU_DCW_GasHeaters
|
|
58
|
+
* FCU_DCW
|
|
59
|
+
|
|
60
|
+
Properties:
|
|
61
|
+
* identifier
|
|
62
|
+
* display_name
|
|
63
|
+
* vintage
|
|
64
|
+
* equipment_type
|
|
65
|
+
* schedules
|
|
66
|
+
* has_district_heating
|
|
67
|
+
* has_district_cooling
|
|
68
|
+
* user_data
|
|
69
|
+
* properties
|
|
70
|
+
"""
|
|
71
|
+
__slots__ = ()
|
|
72
|
+
|
|
73
|
+
EQUIPMENT_TYPES = (
|
|
74
|
+
'FCU_Chiller_Boiler',
|
|
75
|
+
'FCU_Chiller_ASHP',
|
|
76
|
+
'FCU_Chiller_DHW',
|
|
77
|
+
'FCU_Chiller_ElectricBaseboard',
|
|
78
|
+
'FCU_Chiller_GasHeaters',
|
|
79
|
+
'FCU_Chiller',
|
|
80
|
+
'FCU_ACChiller_Boiler',
|
|
81
|
+
'FCU_ACChiller_ASHP',
|
|
82
|
+
'FCU_ACChiller_DHW',
|
|
83
|
+
'FCU_ACChiller_ElectricBaseboard',
|
|
84
|
+
'FCU_ACChiller_GasHeaters',
|
|
85
|
+
'FCU_ACChiller',
|
|
86
|
+
'FCU_DCW_Boiler',
|
|
87
|
+
'FCU_DCW_ASHP',
|
|
88
|
+
'FCU_DCW_DHW',
|
|
89
|
+
'FCU_DCW_ElectricBaseboard',
|
|
90
|
+
'FCU_DCW_GasHeaters',
|
|
91
|
+
'FCU_DCW'
|
|
92
|
+
)
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
# coding=utf-8
|
|
2
|
+
"""Gas unit heating system. Intended for spaces only requiring 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 GasUnitHeater(_HeatCoolBase):
|
|
12
|
+
"""Gas unit heating system.
|
|
13
|
+
|
|
14
|
+
Gas unit systems are intended for spaces only requiring heating and no
|
|
15
|
+
ventilation or cooling. Each room/zone will get its own gaa heating unit
|
|
16
|
+
that satisfies the heating load.
|
|
17
|
+
|
|
18
|
+
Args:
|
|
19
|
+
identifier: Text string for system identifier. Must be < 100 characters
|
|
20
|
+
and not contain any EnergyPlus special characters. This will be used to
|
|
21
|
+
identify the object across a model and in the exported IDF.
|
|
22
|
+
vintage: Text for the vintage of the template system. This will be used
|
|
23
|
+
to set efficiencies for various pieces of equipment within the system.
|
|
24
|
+
Choose from the following.
|
|
25
|
+
|
|
26
|
+
* DOE_Ref_Pre_1980
|
|
27
|
+
* DOE_Ref_1980_2004
|
|
28
|
+
* ASHRAE_2004
|
|
29
|
+
* ASHRAE_2007
|
|
30
|
+
* ASHRAE_2010
|
|
31
|
+
* ASHRAE_2013
|
|
32
|
+
* ASHRAE_2016
|
|
33
|
+
* ASHRAE_2019
|
|
34
|
+
|
|
35
|
+
equipment_type: Text for the specific type of the system and equipment. (Default:
|
|
36
|
+
the first option below) Choose from.
|
|
37
|
+
|
|
38
|
+
* GasHeaters
|
|
39
|
+
|
|
40
|
+
Properties:
|
|
41
|
+
* identifier
|
|
42
|
+
* display_name
|
|
43
|
+
* vintage
|
|
44
|
+
* equipment_type
|
|
45
|
+
* schedules
|
|
46
|
+
* has_district_heating
|
|
47
|
+
* has_district_cooling
|
|
48
|
+
* user_data
|
|
49
|
+
* properties
|
|
50
|
+
"""
|
|
51
|
+
__slots__ = ()
|
|
52
|
+
|
|
53
|
+
EQUIPMENT_TYPES = ('GasHeaters',)
|