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.
Files changed (162) hide show
  1. honeybee_energy/__init__.py +24 -0
  2. honeybee_energy/__main__.py +4 -0
  3. honeybee_energy/_extend_honeybee.py +145 -0
  4. honeybee_energy/altnumber.py +21 -0
  5. honeybee_energy/baseline/__init__.py +2 -0
  6. honeybee_energy/baseline/create.py +608 -0
  7. honeybee_energy/baseline/data/__init__.py +1 -0
  8. honeybee_energy/baseline/data/constructions.csv +64 -0
  9. honeybee_energy/baseline/data/fen_ratios.csv +15 -0
  10. honeybee_energy/baseline/data/lpd_building.csv +21 -0
  11. honeybee_energy/baseline/data/pci_2016.csv +22 -0
  12. honeybee_energy/baseline/data/pci_2019.csv +22 -0
  13. honeybee_energy/baseline/data/pci_2022.csv +22 -0
  14. honeybee_energy/baseline/data/shw.csv +21 -0
  15. honeybee_energy/baseline/pci.py +512 -0
  16. honeybee_energy/baseline/result.py +371 -0
  17. honeybee_energy/boundarycondition.py +128 -0
  18. honeybee_energy/cli/__init__.py +69 -0
  19. honeybee_energy/cli/baseline.py +475 -0
  20. honeybee_energy/cli/edit.py +327 -0
  21. honeybee_energy/cli/lib.py +1154 -0
  22. honeybee_energy/cli/result.py +810 -0
  23. honeybee_energy/cli/setconfig.py +124 -0
  24. honeybee_energy/cli/settings.py +569 -0
  25. honeybee_energy/cli/simulate.py +380 -0
  26. honeybee_energy/cli/translate.py +1714 -0
  27. honeybee_energy/cli/validate.py +224 -0
  28. honeybee_energy/config.json +11 -0
  29. honeybee_energy/config.py +842 -0
  30. honeybee_energy/construction/__init__.py +1 -0
  31. honeybee_energy/construction/_base.py +374 -0
  32. honeybee_energy/construction/air.py +325 -0
  33. honeybee_energy/construction/dictutil.py +89 -0
  34. honeybee_energy/construction/dynamic.py +607 -0
  35. honeybee_energy/construction/opaque.py +460 -0
  36. honeybee_energy/construction/shade.py +319 -0
  37. honeybee_energy/construction/window.py +1096 -0
  38. honeybee_energy/construction/windowshade.py +847 -0
  39. honeybee_energy/constructionset.py +1655 -0
  40. honeybee_energy/dictutil.py +56 -0
  41. honeybee_energy/generator/__init__.py +5 -0
  42. honeybee_energy/generator/loadcenter.py +204 -0
  43. honeybee_energy/generator/pv.py +535 -0
  44. honeybee_energy/hvac/__init__.py +21 -0
  45. honeybee_energy/hvac/_base.py +124 -0
  46. honeybee_energy/hvac/_template.py +270 -0
  47. honeybee_energy/hvac/allair/__init__.py +22 -0
  48. honeybee_energy/hvac/allair/_base.py +349 -0
  49. honeybee_energy/hvac/allair/furnace.py +168 -0
  50. honeybee_energy/hvac/allair/psz.py +131 -0
  51. honeybee_energy/hvac/allair/ptac.py +163 -0
  52. honeybee_energy/hvac/allair/pvav.py +109 -0
  53. honeybee_energy/hvac/allair/vav.py +128 -0
  54. honeybee_energy/hvac/detailed.py +337 -0
  55. honeybee_energy/hvac/doas/__init__.py +28 -0
  56. honeybee_energy/hvac/doas/_base.py +345 -0
  57. honeybee_energy/hvac/doas/fcu.py +127 -0
  58. honeybee_energy/hvac/doas/radiant.py +329 -0
  59. honeybee_energy/hvac/doas/vrf.py +81 -0
  60. honeybee_energy/hvac/doas/wshp.py +91 -0
  61. honeybee_energy/hvac/heatcool/__init__.py +23 -0
  62. honeybee_energy/hvac/heatcool/_base.py +177 -0
  63. honeybee_energy/hvac/heatcool/baseboard.py +61 -0
  64. honeybee_energy/hvac/heatcool/evapcool.py +72 -0
  65. honeybee_energy/hvac/heatcool/fcu.py +92 -0
  66. honeybee_energy/hvac/heatcool/gasunit.py +53 -0
  67. honeybee_energy/hvac/heatcool/radiant.py +269 -0
  68. honeybee_energy/hvac/heatcool/residential.py +77 -0
  69. honeybee_energy/hvac/heatcool/vrf.py +54 -0
  70. honeybee_energy/hvac/heatcool/windowac.py +70 -0
  71. honeybee_energy/hvac/heatcool/wshp.py +62 -0
  72. honeybee_energy/hvac/idealair.py +699 -0
  73. honeybee_energy/internalmass.py +310 -0
  74. honeybee_energy/lib/__init__.py +1 -0
  75. honeybee_energy/lib/_loadconstructions.py +194 -0
  76. honeybee_energy/lib/_loadconstructionsets.py +117 -0
  77. honeybee_energy/lib/_loadmaterials.py +83 -0
  78. honeybee_energy/lib/_loadprogramtypes.py +125 -0
  79. honeybee_energy/lib/_loadschedules.py +87 -0
  80. honeybee_energy/lib/_loadtypelimits.py +64 -0
  81. honeybee_energy/lib/constructions.py +207 -0
  82. honeybee_energy/lib/constructionsets.py +95 -0
  83. honeybee_energy/lib/materials.py +67 -0
  84. honeybee_energy/lib/programtypes.py +125 -0
  85. honeybee_energy/lib/schedules.py +61 -0
  86. honeybee_energy/lib/scheduletypelimits.py +31 -0
  87. honeybee_energy/load/__init__.py +1 -0
  88. honeybee_energy/load/_base.py +190 -0
  89. honeybee_energy/load/daylight.py +397 -0
  90. honeybee_energy/load/dictutil.py +47 -0
  91. honeybee_energy/load/equipment.py +771 -0
  92. honeybee_energy/load/hotwater.py +543 -0
  93. honeybee_energy/load/infiltration.py +460 -0
  94. honeybee_energy/load/lighting.py +480 -0
  95. honeybee_energy/load/people.py +497 -0
  96. honeybee_energy/load/process.py +472 -0
  97. honeybee_energy/load/setpoint.py +816 -0
  98. honeybee_energy/load/ventilation.py +550 -0
  99. honeybee_energy/material/__init__.py +1 -0
  100. honeybee_energy/material/_base.py +166 -0
  101. honeybee_energy/material/dictutil.py +59 -0
  102. honeybee_energy/material/frame.py +367 -0
  103. honeybee_energy/material/gas.py +1087 -0
  104. honeybee_energy/material/glazing.py +854 -0
  105. honeybee_energy/material/opaque.py +1351 -0
  106. honeybee_energy/material/shade.py +1360 -0
  107. honeybee_energy/measure.py +472 -0
  108. honeybee_energy/programtype.py +723 -0
  109. honeybee_energy/properties/__init__.py +1 -0
  110. honeybee_energy/properties/aperture.py +333 -0
  111. honeybee_energy/properties/door.py +342 -0
  112. honeybee_energy/properties/extension.py +244 -0
  113. honeybee_energy/properties/face.py +274 -0
  114. honeybee_energy/properties/model.py +2640 -0
  115. honeybee_energy/properties/room.py +1747 -0
  116. honeybee_energy/properties/shade.py +314 -0
  117. honeybee_energy/properties/shademesh.py +262 -0
  118. honeybee_energy/reader.py +48 -0
  119. honeybee_energy/result/__init__.py +1 -0
  120. honeybee_energy/result/colorobj.py +648 -0
  121. honeybee_energy/result/emissions.py +290 -0
  122. honeybee_energy/result/err.py +101 -0
  123. honeybee_energy/result/eui.py +100 -0
  124. honeybee_energy/result/generation.py +160 -0
  125. honeybee_energy/result/loadbalance.py +890 -0
  126. honeybee_energy/result/match.py +202 -0
  127. honeybee_energy/result/osw.py +90 -0
  128. honeybee_energy/result/rdd.py +59 -0
  129. honeybee_energy/result/zsz.py +190 -0
  130. honeybee_energy/run.py +1577 -0
  131. honeybee_energy/schedule/__init__.py +1 -0
  132. honeybee_energy/schedule/day.py +626 -0
  133. honeybee_energy/schedule/dictutil.py +59 -0
  134. honeybee_energy/schedule/fixedinterval.py +1012 -0
  135. honeybee_energy/schedule/rule.py +619 -0
  136. honeybee_energy/schedule/ruleset.py +1867 -0
  137. honeybee_energy/schedule/typelimit.py +310 -0
  138. honeybee_energy/shw.py +315 -0
  139. honeybee_energy/simulation/__init__.py +1 -0
  140. honeybee_energy/simulation/control.py +214 -0
  141. honeybee_energy/simulation/daylightsaving.py +185 -0
  142. honeybee_energy/simulation/dictutil.py +51 -0
  143. honeybee_energy/simulation/output.py +646 -0
  144. honeybee_energy/simulation/parameter.py +606 -0
  145. honeybee_energy/simulation/runperiod.py +443 -0
  146. honeybee_energy/simulation/shadowcalculation.py +295 -0
  147. honeybee_energy/simulation/sizing.py +546 -0
  148. honeybee_energy/ventcool/__init__.py +5 -0
  149. honeybee_energy/ventcool/_crack_data.py +91 -0
  150. honeybee_energy/ventcool/afn.py +289 -0
  151. honeybee_energy/ventcool/control.py +269 -0
  152. honeybee_energy/ventcool/crack.py +126 -0
  153. honeybee_energy/ventcool/fan.py +493 -0
  154. honeybee_energy/ventcool/opening.py +365 -0
  155. honeybee_energy/ventcool/simulation.py +314 -0
  156. honeybee_energy/writer.py +1078 -0
  157. honeybee_energy-1.116.106.dist-info/METADATA +113 -0
  158. honeybee_energy-1.116.106.dist-info/RECORD +162 -0
  159. honeybee_energy-1.116.106.dist-info/WHEEL +5 -0
  160. honeybee_energy-1.116.106.dist-info/entry_points.txt +2 -0
  161. honeybee_energy-1.116.106.dist-info/licenses/LICENSE +661 -0
  162. honeybee_energy-1.116.106.dist-info/top_level.txt +1 -0
@@ -0,0 +1,168 @@
1
+ # coding=utf-8
2
+ """Forced Air Furnace HVAC system."""
3
+ from __future__ import division
4
+
5
+ from ._base import _AllAirBase
6
+
7
+ from honeybee._lockable import lockable
8
+
9
+
10
+ @lockable
11
+ class ForcedAirFurnace(_AllAirBase):
12
+ """Forced Air Furnace HVAC system (aka. System 9 or 10).
13
+
14
+ Forced air furnaces are intended only for spaces only requiring heating and
15
+ ventilation. Each room/zone receives its own air loop with its own gas heating
16
+ coil, which will supply air at a temperature up to 50C (122F) to meet the
17
+ heating needs of the room/zone. Fans are constant volume.
18
+
19
+ ForcedAirFurnace systems are the traditional baseline system for storage
20
+ spaces that only require heating.
21
+
22
+ Args:
23
+ identifier: Text string for system identifier. Must be < 100 characters
24
+ and not contain any EnergyPlus special characters. This will be used to
25
+ identify the object across a model and in the exported IDF.
26
+ vintage: Text for the vintage of the template system. This will be used
27
+ to set efficiencies for various pieces of equipment within the system.
28
+ Choose from the following.
29
+
30
+ * DOE_Ref_Pre_1980
31
+ * DOE_Ref_1980_2004
32
+ * ASHRAE_2004
33
+ * ASHRAE_2007
34
+ * ASHRAE_2010
35
+ * ASHRAE_2013
36
+ * ASHRAE_2016
37
+ * ASHRAE_2019
38
+
39
+ equipment_type: Text for the specific type of the system and equipment. (Default:
40
+ the first option below) Choose from.
41
+
42
+ * Furnace
43
+ * Furnace_Electric
44
+
45
+ economizer_type: Text to indicate the type of air-side economizer used on
46
+ the system. (Default: NoEconomizer). Choose from the following.
47
+
48
+ * NoEconomizer
49
+ * DifferentialDryBulb
50
+ * DifferentialEnthalpy
51
+ * DifferentialDryBulbAndEnthalpy
52
+ * FixedDryBulb
53
+ * FixedEnthalpy
54
+ * ElectronicEnthalpy
55
+
56
+ sensible_heat_recovery: A number between 0 and 1 for the effectiveness
57
+ of sensible heat recovery within the system. (Default: 0).
58
+ latent_heat_recovery: A number between 0 and 1 for the effectiveness
59
+ of latent heat recovery within the system. (Default: 0).
60
+ demand_controlled_ventilation: Boolean to note whether demand controlled
61
+ ventilation should be used on the system, which will vary the amount
62
+ of ventilation air according to the occupancy schedule of the
63
+ Rooms. (Default: False).
64
+
65
+ Properties:
66
+ * identifier
67
+ * display_name
68
+ * vintage
69
+ * equipment_type
70
+ * economizer_type
71
+ * sensible_heat_recovery
72
+ * latent_heat_recovery
73
+ * demand_controlled_ventilation
74
+ * schedules
75
+ * has_district_heating
76
+ * has_district_cooling
77
+ * user_data
78
+ * properties
79
+
80
+ Note:
81
+ [1] American Society of Heating, Refrigerating and Air-Conditioning Engineers,
82
+ Inc. (2007). Ashrae standard 90.1. Atlanta, GA. https://www.ashrae.org/\
83
+ technical-resources/standards-and-guidelines/read-only-versions-of-ashrae-standards
84
+ """
85
+ __slots__ = ()
86
+
87
+ EQUIPMENT_TYPES = ('Furnace', 'Furnace_Electric')
88
+
89
+ _has_air_loop = False
90
+
91
+ def __init__(self, identifier, vintage='ASHRAE_2019', equipment_type=None):
92
+ """Initialize HVACSystem."""
93
+ # initialize base HVAC system properties
94
+ _AllAirBase.__init__(self, identifier, vintage, equipment_type)
95
+
96
+ @classmethod
97
+ def from_dict(cls, data):
98
+ """Create a HVAC object from a dictionary.
99
+
100
+ Args:
101
+ data: A HVAC dictionary in following the format below.
102
+
103
+ .. code-block:: python
104
+
105
+ {
106
+ "type": "", # text for the class name of the HVAC
107
+ "identifier": "Classroom1_System", # identifier for the HVAC
108
+ "display_name": "Standard System", # name for the HVAC
109
+ "vintage": "ASHRAE_2019", # text for the vintage of the template
110
+ "equipment_type": "" # text for the HVAC equipment type
111
+ }
112
+ """
113
+ assert cls.__name__ in data['type'], \
114
+ 'Expected {} dictionary. Got {}.'.format(cls.__name__, data['type'])
115
+ new_obj = cls(data['identifier'], data['vintage'], data['equipment_type'])
116
+ if 'display_name' in data and data['display_name'] is not None:
117
+ new_obj.display_name = data['display_name']
118
+ return new_obj
119
+
120
+ @classmethod
121
+ def from_dict_abridged(cls, data, schedule_dict):
122
+ """Create a HVAC object from an abridged dictionary.
123
+
124
+ Args:
125
+ data: An abridged dictionary in following the format below.
126
+ schedule_dict: A dictionary with schedule identifiers as keys and honeybee
127
+ schedule objects as values (either ScheduleRuleset or
128
+ ScheduleFixedInterval). These will be used to assign the schedules
129
+ to the Setpoint object.
130
+
131
+ .. code-block:: python
132
+
133
+ {
134
+ "type": "", # text for the class name of the HVAC
135
+ "identifier": "Classroom1_System", # identifier for the HVAC
136
+ "display_name": "Standard System", # name for the HVAC
137
+ "vintage": "ASHRAE_2019", # text for the vintage of the template
138
+ "equipment_type": "" # text for the HVAC equipment type
139
+ }
140
+ """
141
+ # this is the same as the from_dict method for as long as there are not schedules
142
+ return cls.from_dict(data)
143
+
144
+ def to_dict(self, abridged=False):
145
+ """All air system dictionary representation.
146
+
147
+ Args:
148
+ abridged: Boolean to note whether the full dictionary describing the
149
+ object should be returned (False) or just an abridged version (True).
150
+ This input currently has no effect but may eventually have one if
151
+ schedule-type properties are exposed on this template.
152
+ """
153
+ base = {'type': self.__class__.__name__}
154
+ base['identifier'] = self.identifier
155
+ if self._display_name is not None:
156
+ base['display_name'] = self.display_name
157
+ base['vintage'] = self.vintage
158
+ base['equipment_type'] = self.equipment_type
159
+ return base
160
+
161
+ def __copy__(self):
162
+ new_obj = self.__class__(self.identifier, self.vintage, self.equipment_type)
163
+ new_obj._display_name = self._display_name
164
+ return new_obj
165
+
166
+ def __key(self):
167
+ """A tuple based on the object properties, useful for hashing."""
168
+ return (self._identifier, self._vintage, self._equipment_type)
@@ -0,0 +1,131 @@
1
+ # coding=utf-8
2
+ """Packaged Single-Zone (PSZ) HVAC system."""
3
+ from __future__ import division
4
+
5
+ from ._base import _AllAirBase
6
+
7
+ from honeybee._lockable import lockable
8
+
9
+
10
+ @lockable
11
+ class PSZ(_AllAirBase):
12
+ """Packaged Single-Zone (PSZ) HVAC system (aka. System 3 or 4).
13
+
14
+ Each room/zone receives its own air loop with its own single-speed direct expansion
15
+ (DX) cooling coil, which will condition the supply air to a value in between
16
+ 12.8C (55F) and 50C (122F) depending on the heating/cooling needs of the room/zone.
17
+ As long as a Baseboard equipment_type is NOT selected, heating will be supplied
18
+ by a heating coil in the air loop. Otherwise, heating is accomplished with
19
+ baseboards and the air loop only supplies cooling and ventilation air.
20
+ Fans are constant volume.
21
+
22
+ PSZ systems are the traditional baseline system for commercial buildings
23
+ with less than 4 stories or less than 2,300 m2 (25,000 ft2) of floor area.
24
+ They are also the default for all retail with less than 3 stories and all public
25
+ assembly spaces.
26
+
27
+ Args:
28
+ identifier: Text string for system identifier. Must be < 100 characters
29
+ and not contain any EnergyPlus special characters. This will be used to
30
+ identify the object across a model and in the exported IDF.
31
+ vintage: Text for the vintage of the template system. This will be used
32
+ to set efficiencies for various pieces of equipment within the system.
33
+ Choose from the following.
34
+
35
+ * DOE_Ref_Pre_1980
36
+ * DOE_Ref_1980_2004
37
+ * ASHRAE_2004
38
+ * ASHRAE_2007
39
+ * ASHRAE_2010
40
+ * ASHRAE_2013
41
+ * ASHRAE_2016
42
+ * ASHRAE_2019
43
+
44
+ equipment_type: Text for the specific type of the system and equipment. (Default:
45
+ the first option below) Choose from.
46
+
47
+ * PSZAC_ElectricBaseboard
48
+ * PSZAC_BoilerBaseboard
49
+ * PSZAC_DHWBaseboard
50
+ * PSZAC_GasHeaters
51
+ * PSZAC_ElectricCoil
52
+ * PSZAC_GasCoil
53
+ * PSZAC_Boiler
54
+ * PSZAC_ASHP
55
+ * PSZAC_DHW
56
+ * PSZAC
57
+ * PSZAC_DCW_ElectricBaseboard
58
+ * PSZAC_DCW_BoilerBaseboard
59
+ * PSZAC_DCW_GasHeaters
60
+ * PSZAC_DCW_ElectricCoil
61
+ * PSZAC_DCW_GasCoil
62
+ * PSZAC_DCW_Boiler
63
+ * PSZAC_DCW_ASHP
64
+ * PSZAC_DCW_DHW
65
+ * PSZAC_DCW
66
+ * PSZHP
67
+
68
+ economizer_type: Text to indicate the type of air-side economizer used on
69
+ the system. (Default: NoEconomizer). Choose from the following.
70
+
71
+ * NoEconomizer
72
+ * DifferentialDryBulb
73
+ * DifferentialEnthalpy
74
+ * DifferentialDryBulbAndEnthalpy
75
+ * FixedDryBulb
76
+ * FixedEnthalpy
77
+ * ElectronicEnthalpy
78
+
79
+ sensible_heat_recovery: A number between 0 and 1 for the effectiveness
80
+ of sensible heat recovery within the system. (Default: 0).
81
+ latent_heat_recovery: A number between 0 and 1 for the effectiveness
82
+ of latent heat recovery within the system. (Default: 0).
83
+ demand_controlled_ventilation: Boolean to note whether demand controlled
84
+ ventilation should be used on the system, which will vary the amount
85
+ of ventilation air according to the occupancy schedule of the
86
+ Rooms. (Default: False).
87
+
88
+ Properties:
89
+ * identifier
90
+ * display_name
91
+ * vintage
92
+ * equipment_type
93
+ * economizer_type
94
+ * sensible_heat_recovery
95
+ * latent_heat_recovery
96
+ * demand_controlled_ventilation
97
+ * schedules
98
+ * has_district_heating
99
+ * has_district_cooling
100
+ * user_data
101
+ * properties
102
+
103
+ Note:
104
+ [1] American Society of Heating, Refrigerating and Air-Conditioning Engineers,
105
+ Inc. (2007). Ashrae standard 90.1. Atlanta, GA. https://www.ashrae.org/\
106
+ technical-resources/standards-and-guidelines/read-only-versions-of-ashrae-standards
107
+ """
108
+ __slots__ = ()
109
+
110
+ EQUIPMENT_TYPES = (
111
+ 'PSZAC_ElectricBaseboard',
112
+ 'PSZAC_BoilerBaseboard',
113
+ 'PSZAC_DHWBaseboard',
114
+ 'PSZAC_GasHeaters',
115
+ 'PSZAC_ElectricCoil',
116
+ 'PSZAC_GasCoil',
117
+ 'PSZAC_Boiler',
118
+ 'PSZAC_ASHP',
119
+ 'PSZAC_DHW',
120
+ 'PSZAC',
121
+ 'PSZAC_DCW_ElectricBaseboard',
122
+ 'PSZAC_DCW_BoilerBaseboard',
123
+ 'PSZAC_DCW_GasHeaters',
124
+ 'PSZAC_DCW_ElectricCoil',
125
+ 'PSZAC_DCW_GasCoil',
126
+ 'PSZAC_DCW_Boiler',
127
+ 'PSZAC_DCW_ASHP',
128
+ 'PSZAC_DCW_DHW',
129
+ 'PSZAC_DCW',
130
+ 'PSZHP'
131
+ )
@@ -0,0 +1,163 @@
1
+ # coding=utf-8
2
+ """Packaged Terminal Air Conditioning (PTAC) or Heat Pump (PTHP) HVAC system."""
3
+ from __future__ import division
4
+
5
+ from ._base import _AllAirBase
6
+
7
+ from honeybee._lockable import lockable
8
+
9
+
10
+ @lockable
11
+ class PTAC(_AllAirBase):
12
+ """Packaged Terminal Air Conditioning (PTAC/HP) HVAC system. (aka. System 1 or 2).
13
+
14
+ Each room/zone receives its own packaged unit that supplies heating, cooling
15
+ and ventilation. Cooling is always done via a single-speed direct expansion (DX)
16
+ cooling coil. Heating can be done via a heating coil in the unit or via an
17
+ external baseboard. Fans are constant volume.
18
+
19
+ PTAC/HP systems are the traditional baseline system for residential buildings.
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
+ * PTAC_ElectricBaseboard
42
+ * PTAC_BoilerBaseboard
43
+ * PTAC_DHWBaseboard
44
+ * PTAC_GasHeaters
45
+ * PTAC_ElectricCoil
46
+ * PTAC_GasCoil
47
+ * PTAC_Boiler
48
+ * PTAC_ASHP
49
+ * PTAC_DHW
50
+ * PTAC
51
+ * PTHP
52
+
53
+ Properties:
54
+ * identifier
55
+ * display_name
56
+ * vintage
57
+ * equipment_type
58
+ * schedules
59
+ * has_district_heating
60
+ * has_district_cooling
61
+ * user_data
62
+ * properties
63
+
64
+ Note:
65
+ [1] American Society of Heating, Refrigerating and Air-Conditioning Engineers,
66
+ Inc. (2007). Ashrae standard 90.1. Atlanta, GA. https://www.ashrae.org/\
67
+ technical-resources/standards-and-guidelines/read-only-versions-of-ashrae-standards
68
+ """
69
+ __slots__ = ()
70
+
71
+ EQUIPMENT_TYPES = (
72
+ 'PTAC_ElectricBaseboard',
73
+ 'PTAC_BoilerBaseboard',
74
+ 'PTAC_DHWBaseboard',
75
+ 'PTAC_GasHeaters',
76
+ 'PTAC_ElectricCoil',
77
+ 'PTAC_GasCoil',
78
+ 'PTAC_Boiler',
79
+ 'PTAC_ASHP',
80
+ 'PTAC_DHW',
81
+ 'PTAC',
82
+ 'PTHP'
83
+ )
84
+ _has_air_loop = False
85
+
86
+ def __init__(self, identifier, vintage='ASHRAE_2019', equipment_type=None):
87
+ """Initialize HVACSystem."""
88
+ # initialize base HVAC system properties
89
+ _AllAirBase.__init__(self, identifier, vintage, equipment_type)
90
+
91
+ @classmethod
92
+ def from_dict(cls, data):
93
+ """Create a HVAC object from a dictionary.
94
+
95
+ Args:
96
+ data: A HVAC dictionary in following the format below.
97
+
98
+ .. code-block:: python
99
+
100
+ {
101
+ "type": "", # text for the class name of the HVAC
102
+ "identifier": "Classroom1_System", # identifier for the HVAC
103
+ "display_name": "Standard System", # name for the HVAC
104
+ "vintage": "ASHRAE_2019", # text for the vintage of the template
105
+ "equipment_type": "" # text for the HVAC equipment type
106
+ }
107
+ """
108
+ assert cls.__name__ in data['type'], \
109
+ 'Expected {} dictionary. Got {}.'.format(cls.__name__, data['type'])
110
+ new_obj = cls(data['identifier'], data['vintage'], data['equipment_type'])
111
+ if 'display_name' in data and data['display_name'] is not None:
112
+ new_obj.display_name = data['display_name']
113
+ return new_obj
114
+
115
+ @classmethod
116
+ def from_dict_abridged(cls, data, schedule_dict):
117
+ """Create a HVAC object from an abridged dictionary.
118
+
119
+ Args:
120
+ data: An abridged dictionary in following the format below.
121
+ schedule_dict: A dictionary with schedule identifiers as keys and honeybee
122
+ schedule objects as values (either ScheduleRuleset or
123
+ ScheduleFixedInterval). These will be used to assign the schedules
124
+ to the Setpoint object.
125
+
126
+ .. code-block:: python
127
+
128
+ {
129
+ "type": "", # text for the class name of the HVAC
130
+ "identifier": "Classroom1_System", # identifier for the HVAC
131
+ "display_name": "Standard System", # name for the HVAC
132
+ "vintage": "ASHRAE_2019", # text for the vintage of the template
133
+ "equipment_type": "" # text for the HVAC equipment type
134
+ }
135
+ """
136
+ # this is the same as the from_dict method for as long as there are not schedules
137
+ return cls.from_dict(data)
138
+
139
+ def to_dict(self, abridged=False):
140
+ """All air system dictionary representation.
141
+
142
+ Args:
143
+ abridged: Boolean to note whether the full dictionary describing the
144
+ object should be returned (False) or just an abridged version (True).
145
+ This input currently has no effect but may eventually have one if
146
+ schedule-type properties are exposed on this template.
147
+ """
148
+ base = {'type': self.__class__.__name__}
149
+ base['identifier'] = self.identifier
150
+ if self._display_name is not None:
151
+ base['display_name'] = self.display_name
152
+ base['vintage'] = self.vintage
153
+ base['equipment_type'] = self.equipment_type
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
+ return new_obj
160
+
161
+ def __key(self):
162
+ """A tuple based on the object properties, useful for hashing."""
163
+ return (self._identifier, self._vintage, self._equipment_type)
@@ -0,0 +1,109 @@
1
+ # coding=utf-8
2
+ """Packaged Variable Air Volume (PVAV) HVAC system."""
3
+ from __future__ import division
4
+
5
+ from ._base import _AllAirBase
6
+
7
+ from honeybee._lockable import lockable
8
+
9
+
10
+ @lockable
11
+ class PVAV(_AllAirBase):
12
+ """Packaged Variable Air Volume (PVAV) HVAC system (aka. System 5 or 6).
13
+
14
+ All rooms/zones are connected to a central air loop that is kept at a constant
15
+ central temperature of 12.8C (55F). The central temperature is maintained by a
16
+ cooling coil, which runs whenever the combination of return air and fresh outdoor
17
+ air is greater than 12.8C, as well as a heating coil, which runs whenever
18
+ the combination of return air and fresh outdoor air is less than 12.8C.
19
+
20
+ Each air terminal for the connected rooms/zones contains its own reheat coil,
21
+ which runs whenever the room is not in need of the cooling supplied by the 12.8C
22
+ central air.
23
+
24
+ The central cooling coil is always a two-speed direct expansion (DX) coil.
25
+ All heating coils are hot water coils except when Gas Coil equipment_type is
26
+ used (in which case the central coil is gas and all others are electric)
27
+ or when Parallel Fan-Powered (PFP) boxes equipment_type is used (in which case
28
+ coils are electric resistance). Hot water temperature is 82C (180F) for
29
+ boiler/district heating and 49C (120F) when ASHP is used.
30
+
31
+ PVAV systems are the traditional baseline system for commercial buildings
32
+ with than 4-5 stories or between 2,300 m2 and 14,000 m2 (25,000 ft2 and
33
+ 150,000 ft2) of floor area.
34
+
35
+ Args:
36
+ identifier: Text string for system identifier. Must be < 100 characters
37
+ and not contain any EnergyPlus special characters. This will be used to
38
+ identify the object across a model and in the exported IDF.
39
+ vintage: Text for the vintage of the template system. This will be used
40
+ to set efficiencies for various pieces of equipment within the system.
41
+ Choose from the following.
42
+
43
+ * DOE_Ref_Pre_1980
44
+ * DOE_Ref_1980_2004
45
+ * ASHRAE_2004
46
+ * ASHRAE_2007
47
+ * ASHRAE_2010
48
+ * ASHRAE_2013
49
+ * ASHRAE_2016
50
+ * ASHRAE_2019
51
+
52
+ equipment_type: Text for the specific type of the system and equipment. (Default:
53
+ the first option below) Choose from.
54
+
55
+ * PVAV_Boiler
56
+ * PVAV_ASHP
57
+ * PVAV_DHW
58
+ * PVAV_PFP
59
+ * PVAV_BoilerElectricReheat
60
+
61
+ economizer_type: Text to indicate the type of air-side economizer used on
62
+ the system. (Default: NoEconomizer). Choose from the following.
63
+
64
+ * NoEconomizer
65
+ * DifferentialDryBulb
66
+ * DifferentialEnthalpy
67
+ * DifferentialDryBulbAndEnthalpy
68
+ * FixedDryBulb
69
+ * FixedEnthalpy
70
+ * ElectronicEnthalpy
71
+
72
+ sensible_heat_recovery: A number between 0 and 1 for the effectiveness
73
+ of sensible heat recovery within the system. (Default: 0).
74
+ latent_heat_recovery: A number between 0 and 1 for the effectiveness
75
+ of latent heat recovery within the system. (Default: 0).
76
+ demand_controlled_ventilation: Boolean to note whether demand controlled
77
+ ventilation should be used on the system, which will vary the amount
78
+ of ventilation air according to the occupancy schedule of the
79
+ Rooms. (Default: False).
80
+
81
+ Properties:
82
+ * identifier
83
+ * display_name
84
+ * vintage
85
+ * equipment_type
86
+ * economizer_type
87
+ * sensible_heat_recovery
88
+ * latent_heat_recovery
89
+ * demand_controlled_ventilation
90
+ * schedules
91
+ * has_district_heating
92
+ * has_district_cooling
93
+ * user_data
94
+ * properties
95
+
96
+ Note:
97
+ [1] American Society of Heating, Refrigerating and Air-Conditioning Engineers,
98
+ Inc. (2007). Ashrae standard 90.1. Atlanta, GA. https://www.ashrae.org/\
99
+ technical-resources/standards-and-guidelines/read-only-versions-of-ashrae-standards
100
+ """
101
+ __slots__ = ()
102
+
103
+ EQUIPMENT_TYPES = (
104
+ 'PVAV_Boiler',
105
+ 'PVAV_ASHP',
106
+ 'PVAV_DHW',
107
+ 'PVAV_PFP',
108
+ 'PVAV_BoilerElectricReheat'
109
+ )