@@ -51,7 +51,7 @@ def test01_osm_instantiation(self):
5151 model = openstudio .model .Model ()
5252 self .assertTrue (isinstance (model , openstudio .model .Model ))
5353 del model
54-
54+
5555 def test02_tuples (self ):
5656 self .assertEqual (len (osut .sidz ()), 6 )
5757 self .assertEqual (len (osut .mass ()), 4 )
@@ -5187,6 +5187,102 @@ def test34_generated_skylight_wells(self):
51875187 self .assertEqual (o .status (), 0 )
51885188 del model
51895189
5190+ # --- --- --- --- --- --- --- --- --- --- --- --- --- --- --- --- --- #
5191+ # SEB case (flat ceiling plenum).
5192+ path = openstudio .path ("./tests/files/osms/out/seb2.osm" )
5193+ model = translator .loadModel (path )
5194+ self .assertTrue (model )
5195+ model = model .get ()
5196+
5197+ entry = model .getSpaceByName ("Entry way 1" )
5198+ office = model .getSpaceByName ("Small office 1" )
5199+ open = model .getSpaceByName ("Open area 1" )
5200+ utility = model .getSpaceByName ("Utility 1" )
5201+ plenum = model .getSpaceByName ("Level 0 Ceiling Plenum" )
5202+ self .assertTrue (entry )
5203+ self .assertTrue (office )
5204+ self .assertTrue (open )
5205+ self .assertTrue (utility )
5206+ self .assertTrue (plenum )
5207+ entry = entry .get ()
5208+ office = office .get ()
5209+ open = open .get ()
5210+ utility = utility .get ()
5211+ plenum = plenum .get ()
5212+ self .assertFalse (plenum .partofTotalFloorArea ())
5213+ self .assertFalse (osut .isUnconditioned (plenum ))
5214+
5215+ # TOTAL plenum roof area (4x surfaces), no overhangs.
5216+ roofs = osut .facets (plenum , "Outdoors" , "RoofCeiling" )
5217+ total = sum ([ruf .grossArea () for ruf in roofs ])
5218+ self .assertAlmostEqual (total , 82.21 , places = 2 )
5219+
5220+ # A single plenum above all 4 occupied rooms. Reports same GRA.
5221+ gra_seb1 = osut .grossRoofArea (model .getSpaces ())
5222+ gra_seb2 = osut .grossRoofArea (entry )
5223+ self .assertAlmostEqual (gra_seb1 , gra_seb2 , places = 2 )
5224+ self .assertAlmostEqual (gra_seb1 , total , places = 2 )
5225+
5226+ sky_area = srr * total
5227+
5228+ # Before adding skylight wells.
5229+ if version >= 350 :
5230+ for sp in [plenum , entry , office , open , utility ]:
5231+ self .assertTrue (sp .isEnclosedVolume ())
5232+ self .assertTrue (sp .isVolumeDefaulted ())
5233+ self .assertTrue (sp .isVolumeAutocalculated ())
5234+ self .assertGreater (sp .volume (), 0 )
5235+
5236+ zn = sp .thermalZone ()
5237+ self .assertTrue (zn )
5238+ zn = zn .get ()
5239+ self .assertTrue (zn .isVolumeDefaulted ())
5240+ self .assertTrue (zn .isVolumeAutocalculated ())
5241+ self .assertFalse (zn .volume ())
5242+
5243+ # The method returns the GRA, calculated BEFORE adding skylights/wells.
5244+ rm2 = osut .addSkyLights (model .getSpaces (), dict (area = sky_area ))
5245+ if o .logs (): print (o .logs ())
5246+ self .assertAlmostEqual (rm2 , total , places = 2 )
5247+
5248+ entry_skies = osut .facets (entry , "Outdoors" , "Skylight" )
5249+ office_skies = osut .facets (office , "Outdoors" , "Skylight" )
5250+ utility_skies = osut .facets (utility , "Outdoors" , "Skylight" )
5251+ open_skies = osut .facets (open , "Outdoors" , "Skylight" )
5252+
5253+ self .assertFalse (entry_skies )
5254+ self .assertFalse (office_skies )
5255+ self .assertFalse (utility_skies )
5256+ self .assertEqual (len (open_skies ), 1 )
5257+ open_sky = open_skies [0 ]
5258+
5259+ skm2 = open_sky .grossArea ()
5260+ self .assertAlmostEqual (skm2 / rm2 , srr , places = 2 )
5261+
5262+ # Assign construction to new skylights.
5263+ construction = osut .genConstruction (model , dict (type = "skylight" , uo = 2.8 ))
5264+ self .assertTrue (open_sky .setConstruction (construction ))
5265+
5266+ # No change after adding skylight wells.
5267+ if version >= 350 :
5268+ for sp in [plenum , entry , office , open , utility ]:
5269+ self .assertTrue (sp .isEnclosedVolume ())
5270+ self .assertTrue (sp .isVolumeDefaulted ())
5271+ self .assertTrue (sp .isVolumeAutocalculated ())
5272+ self .assertGreater (sp .volume (), 0 )
5273+
5274+ zn = sp .thermalZone ()
5275+ self .assertTrue (zn )
5276+ zn = zn .get ()
5277+ self .assertTrue (zn .isVolumeDefaulted ())
5278+ self .assertTrue (zn .isVolumeAutocalculated ())
5279+ self .assertFalse (zn .volume ())
5280+
5281+ model .save ("./tests/files/osms/out/seb_sky.osm" , True )
5282+
5283+ self .assertEqual (o .status (), 0 )
5284+ del model
5285+
51905286 def test35_facet_retrieval (self ):
51915287 o = osut .oslg
51925288 self .assertEqual (o .status (), 0 )
0 commit comments