honeybee-energy 1.116.26__tar.gz → 1.116.28__tar.gz

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.

Files changed (174) hide show
  1. {honeybee_energy-1.116.26 → honeybee_energy-1.116.28}/PKG-INFO +1 -1
  2. {honeybee_energy-1.116.26 → honeybee_energy-1.116.28}/honeybee_energy/constructionset.py +47 -0
  3. {honeybee_energy-1.116.26 → honeybee_energy-1.116.28}/honeybee_energy/properties/model.py +43 -11
  4. {honeybee_energy-1.116.26 → honeybee_energy-1.116.28}/honeybee_energy.egg-info/PKG-INFO +1 -1
  5. {honeybee_energy-1.116.26 → honeybee_energy-1.116.28}/CODE_OF_CONDUCT.md +0 -0
  6. {honeybee_energy-1.116.26 → honeybee_energy-1.116.28}/CONTRIBUTING.md +0 -0
  7. {honeybee_energy-1.116.26 → honeybee_energy-1.116.28}/LICENSE +0 -0
  8. {honeybee_energy-1.116.26 → honeybee_energy-1.116.28}/MANIFEST.in +0 -0
  9. {honeybee_energy-1.116.26 → honeybee_energy-1.116.28}/README.md +0 -0
  10. {honeybee_energy-1.116.26 → honeybee_energy-1.116.28}/dev-requirements.txt +0 -0
  11. {honeybee_energy-1.116.26 → honeybee_energy-1.116.28}/honeybee_energy/__init__.py +0 -0
  12. {honeybee_energy-1.116.26 → honeybee_energy-1.116.28}/honeybee_energy/__main__.py +0 -0
  13. {honeybee_energy-1.116.26 → honeybee_energy-1.116.28}/honeybee_energy/_extend_honeybee.py +0 -0
  14. {honeybee_energy-1.116.26 → honeybee_energy-1.116.28}/honeybee_energy/altnumber.py +0 -0
  15. {honeybee_energy-1.116.26 → honeybee_energy-1.116.28}/honeybee_energy/baseline/__init__.py +0 -0
  16. {honeybee_energy-1.116.26 → honeybee_energy-1.116.28}/honeybee_energy/baseline/create.py +0 -0
  17. {honeybee_energy-1.116.26 → honeybee_energy-1.116.28}/honeybee_energy/baseline/data/__init__.py +0 -0
  18. {honeybee_energy-1.116.26 → honeybee_energy-1.116.28}/honeybee_energy/baseline/data/constructions.csv +0 -0
  19. {honeybee_energy-1.116.26 → honeybee_energy-1.116.28}/honeybee_energy/baseline/data/fen_ratios.csv +0 -0
  20. {honeybee_energy-1.116.26 → honeybee_energy-1.116.28}/honeybee_energy/baseline/data/lpd_building.csv +0 -0
  21. {honeybee_energy-1.116.26 → honeybee_energy-1.116.28}/honeybee_energy/baseline/data/pci_2016.csv +0 -0
  22. {honeybee_energy-1.116.26 → honeybee_energy-1.116.28}/honeybee_energy/baseline/data/pci_2019.csv +0 -0
  23. {honeybee_energy-1.116.26 → honeybee_energy-1.116.28}/honeybee_energy/baseline/data/pci_2022.csv +0 -0
  24. {honeybee_energy-1.116.26 → honeybee_energy-1.116.28}/honeybee_energy/baseline/data/shw.csv +0 -0
  25. {honeybee_energy-1.116.26 → honeybee_energy-1.116.28}/honeybee_energy/baseline/pci.py +0 -0
  26. {honeybee_energy-1.116.26 → honeybee_energy-1.116.28}/honeybee_energy/baseline/result.py +0 -0
  27. {honeybee_energy-1.116.26 → honeybee_energy-1.116.28}/honeybee_energy/boundarycondition.py +0 -0
  28. {honeybee_energy-1.116.26 → honeybee_energy-1.116.28}/honeybee_energy/cli/__init__.py +0 -0
  29. {honeybee_energy-1.116.26 → honeybee_energy-1.116.28}/honeybee_energy/cli/baseline.py +0 -0
  30. {honeybee_energy-1.116.26 → honeybee_energy-1.116.28}/honeybee_energy/cli/edit.py +0 -0
  31. {honeybee_energy-1.116.26 → honeybee_energy-1.116.28}/honeybee_energy/cli/lib.py +0 -0
  32. {honeybee_energy-1.116.26 → honeybee_energy-1.116.28}/honeybee_energy/cli/result.py +0 -0
  33. {honeybee_energy-1.116.26 → honeybee_energy-1.116.28}/honeybee_energy/cli/setconfig.py +0 -0
  34. {honeybee_energy-1.116.26 → honeybee_energy-1.116.28}/honeybee_energy/cli/settings.py +0 -0
  35. {honeybee_energy-1.116.26 → honeybee_energy-1.116.28}/honeybee_energy/cli/simulate.py +0 -0
  36. {honeybee_energy-1.116.26 → honeybee_energy-1.116.28}/honeybee_energy/cli/translate.py +0 -0
  37. {honeybee_energy-1.116.26 → honeybee_energy-1.116.28}/honeybee_energy/cli/validate.py +0 -0
  38. {honeybee_energy-1.116.26 → honeybee_energy-1.116.28}/honeybee_energy/config.json +0 -0
  39. {honeybee_energy-1.116.26 → honeybee_energy-1.116.28}/honeybee_energy/config.py +0 -0
  40. {honeybee_energy-1.116.26 → honeybee_energy-1.116.28}/honeybee_energy/construction/__init__.py +0 -0
  41. {honeybee_energy-1.116.26 → honeybee_energy-1.116.28}/honeybee_energy/construction/_base.py +0 -0
  42. {honeybee_energy-1.116.26 → honeybee_energy-1.116.28}/honeybee_energy/construction/air.py +0 -0
  43. {honeybee_energy-1.116.26 → honeybee_energy-1.116.28}/honeybee_energy/construction/dictutil.py +0 -0
  44. {honeybee_energy-1.116.26 → honeybee_energy-1.116.28}/honeybee_energy/construction/dynamic.py +0 -0
  45. {honeybee_energy-1.116.26 → honeybee_energy-1.116.28}/honeybee_energy/construction/opaque.py +0 -0
  46. {honeybee_energy-1.116.26 → honeybee_energy-1.116.28}/honeybee_energy/construction/shade.py +0 -0
  47. {honeybee_energy-1.116.26 → honeybee_energy-1.116.28}/honeybee_energy/construction/window.py +0 -0
  48. {honeybee_energy-1.116.26 → honeybee_energy-1.116.28}/honeybee_energy/construction/windowshade.py +0 -0
  49. {honeybee_energy-1.116.26 → honeybee_energy-1.116.28}/honeybee_energy/dictutil.py +0 -0
  50. {honeybee_energy-1.116.26 → honeybee_energy-1.116.28}/honeybee_energy/generator/__init__.py +0 -0
  51. {honeybee_energy-1.116.26 → honeybee_energy-1.116.28}/honeybee_energy/generator/loadcenter.py +0 -0
  52. {honeybee_energy-1.116.26 → honeybee_energy-1.116.28}/honeybee_energy/generator/pv.py +0 -0
  53. {honeybee_energy-1.116.26 → honeybee_energy-1.116.28}/honeybee_energy/hvac/__init__.py +0 -0
  54. {honeybee_energy-1.116.26 → honeybee_energy-1.116.28}/honeybee_energy/hvac/_base.py +0 -0
  55. {honeybee_energy-1.116.26 → honeybee_energy-1.116.28}/honeybee_energy/hvac/_template.py +0 -0
  56. {honeybee_energy-1.116.26 → honeybee_energy-1.116.28}/honeybee_energy/hvac/allair/__init__.py +0 -0
  57. {honeybee_energy-1.116.26 → honeybee_energy-1.116.28}/honeybee_energy/hvac/allair/_base.py +0 -0
  58. {honeybee_energy-1.116.26 → honeybee_energy-1.116.28}/honeybee_energy/hvac/allair/furnace.py +0 -0
  59. {honeybee_energy-1.116.26 → honeybee_energy-1.116.28}/honeybee_energy/hvac/allair/psz.py +0 -0
  60. {honeybee_energy-1.116.26 → honeybee_energy-1.116.28}/honeybee_energy/hvac/allair/ptac.py +0 -0
  61. {honeybee_energy-1.116.26 → honeybee_energy-1.116.28}/honeybee_energy/hvac/allair/pvav.py +0 -0
  62. {honeybee_energy-1.116.26 → honeybee_energy-1.116.28}/honeybee_energy/hvac/allair/vav.py +0 -0
  63. {honeybee_energy-1.116.26 → honeybee_energy-1.116.28}/honeybee_energy/hvac/detailed.py +0 -0
  64. {honeybee_energy-1.116.26 → honeybee_energy-1.116.28}/honeybee_energy/hvac/doas/__init__.py +0 -0
  65. {honeybee_energy-1.116.26 → honeybee_energy-1.116.28}/honeybee_energy/hvac/doas/_base.py +0 -0
  66. {honeybee_energy-1.116.26 → honeybee_energy-1.116.28}/honeybee_energy/hvac/doas/fcu.py +0 -0
  67. {honeybee_energy-1.116.26 → honeybee_energy-1.116.28}/honeybee_energy/hvac/doas/radiant.py +0 -0
  68. {honeybee_energy-1.116.26 → honeybee_energy-1.116.28}/honeybee_energy/hvac/doas/vrf.py +0 -0
  69. {honeybee_energy-1.116.26 → honeybee_energy-1.116.28}/honeybee_energy/hvac/doas/wshp.py +0 -0
  70. {honeybee_energy-1.116.26 → honeybee_energy-1.116.28}/honeybee_energy/hvac/heatcool/__init__.py +0 -0
  71. {honeybee_energy-1.116.26 → honeybee_energy-1.116.28}/honeybee_energy/hvac/heatcool/_base.py +0 -0
  72. {honeybee_energy-1.116.26 → honeybee_energy-1.116.28}/honeybee_energy/hvac/heatcool/baseboard.py +0 -0
  73. {honeybee_energy-1.116.26 → honeybee_energy-1.116.28}/honeybee_energy/hvac/heatcool/evapcool.py +0 -0
  74. {honeybee_energy-1.116.26 → honeybee_energy-1.116.28}/honeybee_energy/hvac/heatcool/fcu.py +0 -0
  75. {honeybee_energy-1.116.26 → honeybee_energy-1.116.28}/honeybee_energy/hvac/heatcool/gasunit.py +0 -0
  76. {honeybee_energy-1.116.26 → honeybee_energy-1.116.28}/honeybee_energy/hvac/heatcool/radiant.py +0 -0
  77. {honeybee_energy-1.116.26 → honeybee_energy-1.116.28}/honeybee_energy/hvac/heatcool/residential.py +0 -0
  78. {honeybee_energy-1.116.26 → honeybee_energy-1.116.28}/honeybee_energy/hvac/heatcool/vrf.py +0 -0
  79. {honeybee_energy-1.116.26 → honeybee_energy-1.116.28}/honeybee_energy/hvac/heatcool/windowac.py +0 -0
  80. {honeybee_energy-1.116.26 → honeybee_energy-1.116.28}/honeybee_energy/hvac/heatcool/wshp.py +0 -0
  81. {honeybee_energy-1.116.26 → honeybee_energy-1.116.28}/honeybee_energy/hvac/idealair.py +0 -0
  82. {honeybee_energy-1.116.26 → honeybee_energy-1.116.28}/honeybee_energy/internalmass.py +0 -0
  83. {honeybee_energy-1.116.26 → honeybee_energy-1.116.28}/honeybee_energy/lib/__init__.py +0 -0
  84. {honeybee_energy-1.116.26 → honeybee_energy-1.116.28}/honeybee_energy/lib/_loadconstructions.py +0 -0
  85. {honeybee_energy-1.116.26 → honeybee_energy-1.116.28}/honeybee_energy/lib/_loadconstructionsets.py +0 -0
  86. {honeybee_energy-1.116.26 → honeybee_energy-1.116.28}/honeybee_energy/lib/_loadmaterials.py +0 -0
  87. {honeybee_energy-1.116.26 → honeybee_energy-1.116.28}/honeybee_energy/lib/_loadprogramtypes.py +0 -0
  88. {honeybee_energy-1.116.26 → honeybee_energy-1.116.28}/honeybee_energy/lib/_loadschedules.py +0 -0
  89. {honeybee_energy-1.116.26 → honeybee_energy-1.116.28}/honeybee_energy/lib/_loadtypelimits.py +0 -0
  90. {honeybee_energy-1.116.26 → honeybee_energy-1.116.28}/honeybee_energy/lib/constructions.py +0 -0
  91. {honeybee_energy-1.116.26 → honeybee_energy-1.116.28}/honeybee_energy/lib/constructionsets.py +0 -0
  92. {honeybee_energy-1.116.26 → honeybee_energy-1.116.28}/honeybee_energy/lib/materials.py +0 -0
  93. {honeybee_energy-1.116.26 → honeybee_energy-1.116.28}/honeybee_energy/lib/programtypes.py +0 -0
  94. {honeybee_energy-1.116.26 → honeybee_energy-1.116.28}/honeybee_energy/lib/schedules.py +0 -0
  95. {honeybee_energy-1.116.26 → honeybee_energy-1.116.28}/honeybee_energy/lib/scheduletypelimits.py +0 -0
  96. {honeybee_energy-1.116.26 → honeybee_energy-1.116.28}/honeybee_energy/load/__init__.py +0 -0
  97. {honeybee_energy-1.116.26 → honeybee_energy-1.116.28}/honeybee_energy/load/_base.py +0 -0
  98. {honeybee_energy-1.116.26 → honeybee_energy-1.116.28}/honeybee_energy/load/daylight.py +0 -0
  99. {honeybee_energy-1.116.26 → honeybee_energy-1.116.28}/honeybee_energy/load/dictutil.py +0 -0
  100. {honeybee_energy-1.116.26 → honeybee_energy-1.116.28}/honeybee_energy/load/equipment.py +0 -0
  101. {honeybee_energy-1.116.26 → honeybee_energy-1.116.28}/honeybee_energy/load/hotwater.py +0 -0
  102. {honeybee_energy-1.116.26 → honeybee_energy-1.116.28}/honeybee_energy/load/infiltration.py +0 -0
  103. {honeybee_energy-1.116.26 → honeybee_energy-1.116.28}/honeybee_energy/load/lighting.py +0 -0
  104. {honeybee_energy-1.116.26 → honeybee_energy-1.116.28}/honeybee_energy/load/people.py +0 -0
  105. {honeybee_energy-1.116.26 → honeybee_energy-1.116.28}/honeybee_energy/load/process.py +0 -0
  106. {honeybee_energy-1.116.26 → honeybee_energy-1.116.28}/honeybee_energy/load/setpoint.py +0 -0
  107. {honeybee_energy-1.116.26 → honeybee_energy-1.116.28}/honeybee_energy/load/ventilation.py +0 -0
  108. {honeybee_energy-1.116.26 → honeybee_energy-1.116.28}/honeybee_energy/material/__init__.py +0 -0
  109. {honeybee_energy-1.116.26 → honeybee_energy-1.116.28}/honeybee_energy/material/_base.py +0 -0
  110. {honeybee_energy-1.116.26 → honeybee_energy-1.116.28}/honeybee_energy/material/dictutil.py +0 -0
  111. {honeybee_energy-1.116.26 → honeybee_energy-1.116.28}/honeybee_energy/material/frame.py +0 -0
  112. {honeybee_energy-1.116.26 → honeybee_energy-1.116.28}/honeybee_energy/material/gas.py +0 -0
  113. {honeybee_energy-1.116.26 → honeybee_energy-1.116.28}/honeybee_energy/material/glazing.py +0 -0
  114. {honeybee_energy-1.116.26 → honeybee_energy-1.116.28}/honeybee_energy/material/opaque.py +0 -0
  115. {honeybee_energy-1.116.26 → honeybee_energy-1.116.28}/honeybee_energy/material/shade.py +0 -0
  116. {honeybee_energy-1.116.26 → honeybee_energy-1.116.28}/honeybee_energy/measure.py +0 -0
  117. {honeybee_energy-1.116.26 → honeybee_energy-1.116.28}/honeybee_energy/programtype.py +0 -0
  118. {honeybee_energy-1.116.26 → honeybee_energy-1.116.28}/honeybee_energy/properties/__init__.py +0 -0
  119. {honeybee_energy-1.116.26 → honeybee_energy-1.116.28}/honeybee_energy/properties/aperture.py +0 -0
  120. {honeybee_energy-1.116.26 → honeybee_energy-1.116.28}/honeybee_energy/properties/door.py +0 -0
  121. {honeybee_energy-1.116.26 → honeybee_energy-1.116.28}/honeybee_energy/properties/extension.py +0 -0
  122. {honeybee_energy-1.116.26 → honeybee_energy-1.116.28}/honeybee_energy/properties/face.py +0 -0
  123. {honeybee_energy-1.116.26 → honeybee_energy-1.116.28}/honeybee_energy/properties/room.py +0 -0
  124. {honeybee_energy-1.116.26 → honeybee_energy-1.116.28}/honeybee_energy/properties/shade.py +0 -0
  125. {honeybee_energy-1.116.26 → honeybee_energy-1.116.28}/honeybee_energy/properties/shademesh.py +0 -0
  126. {honeybee_energy-1.116.26 → honeybee_energy-1.116.28}/honeybee_energy/reader.py +0 -0
  127. {honeybee_energy-1.116.26 → honeybee_energy-1.116.28}/honeybee_energy/result/__init__.py +0 -0
  128. {honeybee_energy-1.116.26 → honeybee_energy-1.116.28}/honeybee_energy/result/colorobj.py +0 -0
  129. {honeybee_energy-1.116.26 → honeybee_energy-1.116.28}/honeybee_energy/result/emissions.py +0 -0
  130. {honeybee_energy-1.116.26 → honeybee_energy-1.116.28}/honeybee_energy/result/err.py +0 -0
  131. {honeybee_energy-1.116.26 → honeybee_energy-1.116.28}/honeybee_energy/result/eui.py +0 -0
  132. {honeybee_energy-1.116.26 → honeybee_energy-1.116.28}/honeybee_energy/result/generation.py +0 -0
  133. {honeybee_energy-1.116.26 → honeybee_energy-1.116.28}/honeybee_energy/result/loadbalance.py +0 -0
  134. {honeybee_energy-1.116.26 → honeybee_energy-1.116.28}/honeybee_energy/result/match.py +0 -0
  135. {honeybee_energy-1.116.26 → honeybee_energy-1.116.28}/honeybee_energy/result/osw.py +0 -0
  136. {honeybee_energy-1.116.26 → honeybee_energy-1.116.28}/honeybee_energy/result/rdd.py +0 -0
  137. {honeybee_energy-1.116.26 → honeybee_energy-1.116.28}/honeybee_energy/result/zsz.py +0 -0
  138. {honeybee_energy-1.116.26 → honeybee_energy-1.116.28}/honeybee_energy/run.py +0 -0
  139. {honeybee_energy-1.116.26 → honeybee_energy-1.116.28}/honeybee_energy/schedule/__init__.py +0 -0
  140. {honeybee_energy-1.116.26 → honeybee_energy-1.116.28}/honeybee_energy/schedule/day.py +0 -0
  141. {honeybee_energy-1.116.26 → honeybee_energy-1.116.28}/honeybee_energy/schedule/dictutil.py +0 -0
  142. {honeybee_energy-1.116.26 → honeybee_energy-1.116.28}/honeybee_energy/schedule/fixedinterval.py +0 -0
  143. {honeybee_energy-1.116.26 → honeybee_energy-1.116.28}/honeybee_energy/schedule/rule.py +0 -0
  144. {honeybee_energy-1.116.26 → honeybee_energy-1.116.28}/honeybee_energy/schedule/ruleset.py +0 -0
  145. {honeybee_energy-1.116.26 → honeybee_energy-1.116.28}/honeybee_energy/schedule/typelimit.py +0 -0
  146. {honeybee_energy-1.116.26 → honeybee_energy-1.116.28}/honeybee_energy/shw.py +0 -0
  147. {honeybee_energy-1.116.26 → honeybee_energy-1.116.28}/honeybee_energy/simulation/__init__.py +0 -0
  148. {honeybee_energy-1.116.26 → honeybee_energy-1.116.28}/honeybee_energy/simulation/control.py +0 -0
  149. {honeybee_energy-1.116.26 → honeybee_energy-1.116.28}/honeybee_energy/simulation/daylightsaving.py +0 -0
  150. {honeybee_energy-1.116.26 → honeybee_energy-1.116.28}/honeybee_energy/simulation/dictutil.py +0 -0
  151. {honeybee_energy-1.116.26 → honeybee_energy-1.116.28}/honeybee_energy/simulation/output.py +0 -0
  152. {honeybee_energy-1.116.26 → honeybee_energy-1.116.28}/honeybee_energy/simulation/parameter.py +0 -0
  153. {honeybee_energy-1.116.26 → honeybee_energy-1.116.28}/honeybee_energy/simulation/runperiod.py +0 -0
  154. {honeybee_energy-1.116.26 → honeybee_energy-1.116.28}/honeybee_energy/simulation/shadowcalculation.py +0 -0
  155. {honeybee_energy-1.116.26 → honeybee_energy-1.116.28}/honeybee_energy/simulation/sizing.py +0 -0
  156. {honeybee_energy-1.116.26 → honeybee_energy-1.116.28}/honeybee_energy/ventcool/__init__.py +0 -0
  157. {honeybee_energy-1.116.26 → honeybee_energy-1.116.28}/honeybee_energy/ventcool/_crack_data.py +0 -0
  158. {honeybee_energy-1.116.26 → honeybee_energy-1.116.28}/honeybee_energy/ventcool/afn.py +0 -0
  159. {honeybee_energy-1.116.26 → honeybee_energy-1.116.28}/honeybee_energy/ventcool/control.py +0 -0
  160. {honeybee_energy-1.116.26 → honeybee_energy-1.116.28}/honeybee_energy/ventcool/crack.py +0 -0
  161. {honeybee_energy-1.116.26 → honeybee_energy-1.116.28}/honeybee_energy/ventcool/fan.py +0 -0
  162. {honeybee_energy-1.116.26 → honeybee_energy-1.116.28}/honeybee_energy/ventcool/opening.py +0 -0
  163. {honeybee_energy-1.116.26 → honeybee_energy-1.116.28}/honeybee_energy/ventcool/simulation.py +0 -0
  164. {honeybee_energy-1.116.26 → honeybee_energy-1.116.28}/honeybee_energy/writer.py +0 -0
  165. {honeybee_energy-1.116.26 → honeybee_energy-1.116.28}/honeybee_energy.egg-info/SOURCES.txt +0 -0
  166. {honeybee_energy-1.116.26 → honeybee_energy-1.116.28}/honeybee_energy.egg-info/dependency_links.txt +0 -0
  167. {honeybee_energy-1.116.26 → honeybee_energy-1.116.28}/honeybee_energy.egg-info/entry_points.txt +0 -0
  168. {honeybee_energy-1.116.26 → honeybee_energy-1.116.28}/honeybee_energy.egg-info/requires.txt +0 -0
  169. {honeybee_energy-1.116.26 → honeybee_energy-1.116.28}/honeybee_energy.egg-info/top_level.txt +0 -0
  170. {honeybee_energy-1.116.26 → honeybee_energy-1.116.28}/openstudio-requirements.txt +0 -0
  171. {honeybee_energy-1.116.26 → honeybee_energy-1.116.28}/requirements.txt +0 -0
  172. {honeybee_energy-1.116.26 → honeybee_energy-1.116.28}/setup.cfg +0 -0
  173. {honeybee_energy-1.116.26 → honeybee_energy-1.116.28}/setup.py +0 -0
  174. {honeybee_energy-1.116.26 → honeybee_energy-1.116.28}/standards-requirements.txt +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: honeybee-energy
3
- Version: 1.116.26
3
+ Version: 1.116.28
4
4
  Summary: Energy simulation library for honeybee.
5
5
  Home-page: https://github.com/ladybug-tools/honeybee-energy
6
6
  Author: Ladybug Tools
@@ -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.check_duplicate_material_identifiers(False, detailed))
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 missing rooms
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 missing rooms were found, then report the issue
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
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: honeybee-energy
3
- Version: 1.116.26
3
+ Version: 1.116.28
4
4
  Summary: Energy simulation library for honeybee.
5
5
  Home-page: https://github.com/ladybug-tools/honeybee-energy
6
6
  Author: Ladybug Tools