honeybee-energy 1.116.26__py2.py3-none-any.whl → 1.116.28__py2.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.
Potentially problematic release.
This version of honeybee-energy might be problematic. Click here for more details.
- honeybee_energy/constructionset.py +47 -0
- honeybee_energy/properties/model.py +43 -11
- {honeybee_energy-1.116.26.dist-info → honeybee_energy-1.116.28.dist-info}/METADATA +1 -1
- {honeybee_energy-1.116.26.dist-info → honeybee_energy-1.116.28.dist-info}/RECORD +8 -8
- {honeybee_energy-1.116.26.dist-info → honeybee_energy-1.116.28.dist-info}/LICENSE +0 -0
- {honeybee_energy-1.116.26.dist-info → honeybee_energy-1.116.28.dist-info}/WHEEL +0 -0
- {honeybee_energy-1.116.26.dist-info → honeybee_energy-1.116.28.dist-info}/entry_points.txt +0 -0
- {honeybee_energy-1.116.26.dist-info → honeybee_energy-1.116.28.dist-info}/top_level.txt +0 -0
|
@@ -59,6 +59,8 @@ class ConstructionSet(object):
|
|
|
59
59
|
* modified_constructions_unique
|
|
60
60
|
* materials_unique
|
|
61
61
|
* modified_materials_unique
|
|
62
|
+
* is_interior_defaulted
|
|
63
|
+
* is_interior_symmetric
|
|
62
64
|
* user_data
|
|
63
65
|
"""
|
|
64
66
|
__slots__ = ('_identifier', '_display_name', '_wall_set', '_floor_set',
|
|
@@ -271,6 +273,51 @@ class ConstructionSet(object):
|
|
|
271
273
|
pass # ShadeConstruction or AirBoundaryConstruction
|
|
272
274
|
return list(set(materials))
|
|
273
275
|
|
|
276
|
+
@property
|
|
277
|
+
def is_interior_defaulted(self):
|
|
278
|
+
"""Get a boolean for whether all interior constructions of the set are defaulted.
|
|
279
|
+
|
|
280
|
+
If all construction sets in a model use the same default interior constructions,
|
|
281
|
+
it meas that the construction sets won't create any conflicts between adjacent
|
|
282
|
+
interior Faces.
|
|
283
|
+
"""
|
|
284
|
+
return self.wall_set._interior_construction is None and \
|
|
285
|
+
self.aperture_set._interior_construction is None and \
|
|
286
|
+
self.door_set._interior_construction is None and \
|
|
287
|
+
self.floor_set._interior_construction is None and \
|
|
288
|
+
self.roof_ceiling_set._interior_construction is None
|
|
289
|
+
|
|
290
|
+
@property
|
|
291
|
+
def is_interior_symmetric(self):
|
|
292
|
+
"""Get a boolean for whether all interior constructions of the set are symmetric.
|
|
293
|
+
|
|
294
|
+
This will only be true if the interior wall, window and door constructions
|
|
295
|
+
are symmetric and the material layers of the interior floor construction
|
|
296
|
+
is a reversed version of the ceiling construction. When these criteria
|
|
297
|
+
are met, it meas that the construction set can be applied to all rooms
|
|
298
|
+
of a Model without concern for it creating conflicts between adjacent
|
|
299
|
+
interior Faces.
|
|
300
|
+
"""
|
|
301
|
+
# check the constructions that are supposed to be symmetric
|
|
302
|
+
wall_con = self.wall_set._interior_construction
|
|
303
|
+
if wall_con is not None and not wall_con.is_symmetric:
|
|
304
|
+
return False
|
|
305
|
+
win_con = self.aperture_set._interior_construction
|
|
306
|
+
if win_con is not None and not win_con.is_symmetric:
|
|
307
|
+
return False
|
|
308
|
+
door_con = self.door_set._interior_construction
|
|
309
|
+
if door_con is not None and not door_con.is_symmetric:
|
|
310
|
+
return False
|
|
311
|
+
glz_dr_con = self.door_set._interior_glass_construction
|
|
312
|
+
if glz_dr_con is not None and not glz_dr_con.is_symmetric:
|
|
313
|
+
return False
|
|
314
|
+
# check that the floor is the reverse of the floor
|
|
315
|
+
floor_con = self.floor_set.interior_construction
|
|
316
|
+
ceil_con = self.roof_ceiling_set.interior_construction
|
|
317
|
+
if floor_con.materials != tuple(reversed(ceil_con.materials)):
|
|
318
|
+
return False
|
|
319
|
+
return True
|
|
320
|
+
|
|
274
321
|
@property
|
|
275
322
|
def user_data(self):
|
|
276
323
|
"""Get or set an optional dictionary for additional meta data for this object.
|
|
@@ -820,15 +820,7 @@ class ModelEnergyProperties(object):
|
|
|
820
820
|
detailed = False if raise_exception else detailed
|
|
821
821
|
msgs = []
|
|
822
822
|
# perform checks for duplicate identifiers
|
|
823
|
-
msgs.append(self.
|
|
824
|
-
msgs.append(self.check_duplicate_construction_identifiers(False, detailed))
|
|
825
|
-
msgs.append(self.check_duplicate_construction_set_identifiers(False, detailed))
|
|
826
|
-
msgs.append(
|
|
827
|
-
self.check_duplicate_schedule_type_limit_identifiers(False, detailed))
|
|
828
|
-
msgs.append(self.check_duplicate_schedule_identifiers(False, detailed))
|
|
829
|
-
msgs.append(self.check_duplicate_program_type_identifiers(False, detailed))
|
|
830
|
-
msgs.append(self.check_duplicate_hvac_identifiers(False, detailed))
|
|
831
|
-
msgs.append(self.check_duplicate_shw_identifiers(False, detailed))
|
|
823
|
+
msgs.append(self.check_all_duplicate_identifiers(False, detailed))
|
|
832
824
|
# perform checks for specific energy simulation rules
|
|
833
825
|
msgs.append(self.check_all_zones_have_one_hvac(False, detailed))
|
|
834
826
|
msgs.append(self.check_detailed_hvac_rooms(False, detailed))
|
|
@@ -845,6 +837,44 @@ class ModelEnergyProperties(object):
|
|
|
845
837
|
raise ValueError(full_msg)
|
|
846
838
|
return full_msg
|
|
847
839
|
|
|
840
|
+
def check_all_duplicate_identifiers(self, raise_exception=True, detailed=False):
|
|
841
|
+
"""Check that there are no duplicate identifiers for any geometry objects.
|
|
842
|
+
|
|
843
|
+
This includes Rooms, Faces, Apertures, Doors, Shades, and ShadeMeshes.
|
|
844
|
+
|
|
845
|
+
Args:
|
|
846
|
+
raise_exception: Boolean to note whether a ValueError should be raised
|
|
847
|
+
if any Model errors are found. If False, this method will simply
|
|
848
|
+
return a text string with all errors that were found. (Default: True).
|
|
849
|
+
detailed: Boolean for whether the returned object is a detailed list of
|
|
850
|
+
dicts with error info or a string with a message. (Default: False).
|
|
851
|
+
|
|
852
|
+
Returns:
|
|
853
|
+
A text string with all errors that were found or a list if detailed is True.
|
|
854
|
+
This string (or list) will be empty if no errors were found.
|
|
855
|
+
"""
|
|
856
|
+
# set up defaults to ensure the method runs correctly
|
|
857
|
+
detailed = False if raise_exception else detailed
|
|
858
|
+
msgs = []
|
|
859
|
+
# perform checks for duplicate identifiers
|
|
860
|
+
msgs.append(self.check_duplicate_material_identifiers(False, detailed))
|
|
861
|
+
msgs.append(self.check_duplicate_construction_identifiers(False, detailed))
|
|
862
|
+
msgs.append(self.check_duplicate_construction_set_identifiers(False, detailed))
|
|
863
|
+
stl_msgs = self.check_duplicate_schedule_type_limit_identifiers(False, detailed)
|
|
864
|
+
msgs.append(stl_msgs)
|
|
865
|
+
msgs.append(self.check_duplicate_schedule_identifiers(False, detailed))
|
|
866
|
+
msgs.append(self.check_duplicate_program_type_identifiers(False, detailed))
|
|
867
|
+
msgs.append(self.check_duplicate_hvac_identifiers(False, detailed))
|
|
868
|
+
msgs.append(self.check_duplicate_shw_identifiers(False, detailed))
|
|
869
|
+
# output a final report of errors or raise an exception
|
|
870
|
+
full_msgs = [msg for msg in msgs if msg]
|
|
871
|
+
if detailed:
|
|
872
|
+
return [m for msg in full_msgs for m in msg]
|
|
873
|
+
full_msg = '\n'.join(full_msgs)
|
|
874
|
+
if raise_exception and len(full_msgs) != 0:
|
|
875
|
+
raise ValueError(full_msg)
|
|
876
|
+
return full_msg
|
|
877
|
+
|
|
848
878
|
def check_duplicate_material_identifiers(self, raise_exception=True, detailed=False):
|
|
849
879
|
"""Check that there are no duplicate Material identifiers in the model.
|
|
850
880
|
|
|
@@ -1002,7 +1032,7 @@ class ModelEnergyProperties(object):
|
|
|
1002
1032
|
A string with the message or a list with a dictionary if detailed is True.
|
|
1003
1033
|
"""
|
|
1004
1034
|
detailed = False if raise_exception else detailed
|
|
1005
|
-
# gather a list of all the
|
|
1035
|
+
# gather a list of all the zones with multiple HVACs
|
|
1006
1036
|
invalid_zones = {}
|
|
1007
1037
|
for zone, rooms in self.host.zone_dict.items():
|
|
1008
1038
|
if len(rooms) == 1:
|
|
@@ -1012,7 +1042,7 @@ class ModelEnergyProperties(object):
|
|
|
1012
1042
|
if len(hvacs) > 1:
|
|
1013
1043
|
invalid_zones[zone] = [rooms, hvacs]
|
|
1014
1044
|
|
|
1015
|
-
# if
|
|
1045
|
+
# if multiple HVACs in the same zone were found, then report the issue
|
|
1016
1046
|
if len(invalid_zones) != 0:
|
|
1017
1047
|
if detailed:
|
|
1018
1048
|
all_err = []
|
|
@@ -1226,6 +1256,7 @@ class ModelEnergyProperties(object):
|
|
|
1226
1256
|
Returns:
|
|
1227
1257
|
A string with the message or a list with a dictionary if detailed is True.
|
|
1228
1258
|
"""
|
|
1259
|
+
detailed = False if raise_exception else detailed
|
|
1229
1260
|
# first see if there's more than one vegetation material
|
|
1230
1261
|
all_constrs = self.room_constructions + self.face_constructions
|
|
1231
1262
|
materials = []
|
|
@@ -1296,6 +1327,7 @@ class ModelEnergyProperties(object):
|
|
|
1296
1327
|
Returns:
|
|
1297
1328
|
A string with the message or a list with a dictionary if detailed is True.
|
|
1298
1329
|
"""
|
|
1330
|
+
detailed = False if raise_exception else detailed
|
|
1299
1331
|
# get the maximum elevation of all the rooms
|
|
1300
1332
|
conv_fac = conversion_factor_to_meters(self.host.units)
|
|
1301
1333
|
max_elev_model = max_elevation / conv_fac
|
|
@@ -5,7 +5,7 @@ honeybee_energy/altnumber.py,sha256=_B5DcoyV1_D8tSKFoo-jjh5Xo1Yy4TTuHB7frDNKxLg,
|
|
|
5
5
|
honeybee_energy/boundarycondition.py,sha256=7zPGwJVRC56jC75fVwRVQgew0RtPDID4YGVQzglcIVE,5740
|
|
6
6
|
honeybee_energy/config.json,sha256=r1y_CZbDeYJu3HIAOHMzn3NJ_IHld0nejzHeLMDlDFs,344
|
|
7
7
|
honeybee_energy/config.py,sha256=Wv-JIv5j-Z97_DC7FLnd49tbv53nfNoFcsvjXEeIaRk,35899
|
|
8
|
-
honeybee_energy/constructionset.py,sha256=
|
|
8
|
+
honeybee_energy/constructionset.py,sha256=cG7NY834qOj-hB_JFE5-Ksh5u8Vagk41cmS_NP1uv44,73739
|
|
9
9
|
honeybee_energy/dictutil.py,sha256=fW7zqf2uxl9fdCOOo2ltOx-CuAP9HyYs-fX1WvAcFfg,2457
|
|
10
10
|
honeybee_energy/internalmass.py,sha256=8b4NuQpi5jBue31Q56YvMTx1iXPEEKmKe9-J9aLh5Ys,12464
|
|
11
11
|
honeybee_energy/measure.py,sha256=S4MBqC8eLWzqCLFeTa0uQQgWE6-NOPcmUU0wlu9uXB0,17403
|
|
@@ -115,7 +115,7 @@ honeybee_energy/properties/aperture.py,sha256=lR2zMmGg-c0uhAiIq26Rk3iAV0_v-c6kiI
|
|
|
115
115
|
honeybee_energy/properties/door.py,sha256=IYNOkzLWJG5c4_EsHc1avWzZ-08a2RfjV0WzfivIvwc,15622
|
|
116
116
|
honeybee_energy/properties/extension.py,sha256=ILzHYtu5Y_KCOUixipWY9NTJHFgvZI7v27sDcFLuSmg,8539
|
|
117
117
|
honeybee_energy/properties/face.py,sha256=-7lj9_fzoGQ0QhGo_f7U6gUuB3Xy87fpgwSYnVWwZ8s,11400
|
|
118
|
-
honeybee_energy/properties/model.py,sha256=
|
|
118
|
+
honeybee_energy/properties/model.py,sha256=6_Uqt7qUROZS3Zxq4xEp96CggfzR_1k1T-ViYa_H6AQ,129066
|
|
119
119
|
honeybee_energy/properties/room.py,sha256=QAVRTWQKuSRHH7-nGx74q3UuaLfb01ZIbvixFTup9Ew,82311
|
|
120
120
|
honeybee_energy/properties/shade.py,sha256=Aj1RZh2KSkVMn5VT_QUckF_5R3I0O3b35EabqaI2i5g,14107
|
|
121
121
|
honeybee_energy/properties/shademesh.py,sha256=ykbs4llT86C_U5BhQy2EbINewfg9eVxiPaq5yCRhud8,11486
|
|
@@ -156,9 +156,9 @@ honeybee_energy/ventcool/opening.py,sha256=ZywoADlNQ6_8OfjV71ZUpbCAetQrRVj7aprBj
|
|
|
156
156
|
honeybee_energy/ventcool/simulation.py,sha256=gMF4sgCQ5R4iFWPnvvB3wxgeP_zEwnWl71ObIIe4XGU,14423
|
|
157
157
|
tests/fixtures/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
158
158
|
tests/fixtures/userdata_fixtures.py,sha256=yDvBR6nsltel_U8hUoUsJ6yufPKTR7Wnsgxe68HtswQ,313
|
|
159
|
-
honeybee_energy-1.116.
|
|
160
|
-
honeybee_energy-1.116.
|
|
161
|
-
honeybee_energy-1.116.
|
|
162
|
-
honeybee_energy-1.116.
|
|
163
|
-
honeybee_energy-1.116.
|
|
164
|
-
honeybee_energy-1.116.
|
|
159
|
+
honeybee_energy-1.116.28.dist-info/LICENSE,sha256=hIahDEOTzuHCU5J2nd07LWwkLW7Hko4UFO__ffsvB-8,34523
|
|
160
|
+
honeybee_energy-1.116.28.dist-info/METADATA,sha256=gbP68B-xcgwiZZPSkTfR4syLkvIgyGwyxe4Im9-YZfI,3575
|
|
161
|
+
honeybee_energy-1.116.28.dist-info/WHEEL,sha256=AHX6tWk3qWuce7vKLrj7lnulVHEdWoltgauo8bgCXgU,109
|
|
162
|
+
honeybee_energy-1.116.28.dist-info/entry_points.txt,sha256=QOMJbH-StaxT4hCjskZtqetNCMNioP3ZiuhoLQ6MANc,63
|
|
163
|
+
honeybee_energy-1.116.28.dist-info/top_level.txt,sha256=V9Lz0281hfT83Fy0fSdn_6vwRK9vTQe1_LQXd0_-gAI,22
|
|
164
|
+
honeybee_energy-1.116.28.dist-info/RECORD,,
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|