NREL / floorspace.js

Other
66 stars 35 forks source link

Surface Shattering Bug #350

Open fsudaman opened 5 years ago

fsudaman commented 5 years ago

We often see mid size to complex models produced using floorspace will have random lines drawn across them, intersecting and sub-dividing many difference spaces. This issue seems to get worse as building complexity increases. Generally surface areas, mating, and zone assignments are retained. But if the issue gets bad enough surfaces start sub-dividing incorrectly, getting the wrong areas and matching incorrectly, especially since they're reflected on the floor of the next level.

This introduces modelling errors down the chain. As we take the floorspace model through the process to produce IDF, huge number of new surfaces are created in the IDF and often cause issues downstream with EnergyPlus run such as warm up tends not to converge, significant performance impact on simulation run and at worst, it breaks the simulation run.

To help reproducing the problem, attached is an example model. It details a complex 3 story building with significant 'shattering' (because it looks like shattered glass). I've attached the .json, the .osm, and a screenshot of L2 (with L3 hidden) taken in sketchup

I've also attached a second version (Test_B), in which the first floor is deleted. No other changes were made. Note that the screenshots have quite different shattering patterns, even though the intersections between L2 and L3 should not be affected by deleting L1.

Floorspace Bug Report - Surface Shattering.zip

Mkellyeng commented 5 years ago

The cause of this issue has been identified, it's due to the OpenStudio intersect and matching that occurs during import.

https://github.com/NREL/OpenStudio/issues/3424

bgschiller commented 3 years ago

"Canonicalize" the geometry, getting rid of unnecessary vertices.

Mkellyeng commented 3 years ago

Extra vertices definitely makes this problem worse, but the root cause appears to be the Intersecting and Matching processes used when generating the IDF. This ticket can probably be closed, since there's a ticket with Open Studio for the same issue