I started this assignment with the twisting tower I used for part 1 of Module 5. I thought it would be easiest to build custom nodes starting with slightly less complex geometry than the 3-profile twisting tower, since this saves some time in having to load in the custom profiles every time.
I wanted to explore the cost per floor area metric, since this is an important factor in value engineering. Instead of calculating based on the number of floors (building height input parameter), I changed the starting node to calculate value based on the width of either side of each floor (building top width and building top depth parameters). To ensure user accessibility and control for each side being equal length, I added a constraint that height and width must be equal. This custom node is called BuildingForm.EvaluateValueByRoofSurfaceArea (logic shown below).
Above: Logic for custom node BuildingForm.EvaluateValueByRoofSurfaceArea
For my second custom node, I wanted to panelize the roof with adaptive solar panels and open/close the panels depending on the solar viability of the hour of the day. I utilized some of my previous logic from Module 4 to open/close the panels based on the strength of the solar overhead. Initially, I had some trouble getting Dynamo to recognize which surface was the ‘roof’ and the panels weren’t registered as part of the mass.
Left: Panels not connecting with tower
Right: Logic up until this point for single-objective optimization scheme
After help from the teaching team, I found the issue was in the Surface.PointAtParameter node. Since the roof of my structure doesn’t have any curvature, a bug causes the panels to follow points that don’t actually connect to the surface edges. We resolved this issue by slightly curving the surface of my roof so that the Surface.PointAtParameter node would recognize the outline of the surface and panelize it properly.
Left: Panels now following the edges of the roof surface
Right: Solution to panelization issue
After this issue was resolved, I utilized a single-object optimization scheme using node logic in Dynamo to evaluate the best solution which maximizes roof surface area and solar capacity. In addition to my BuildingForm.EvaluateValueByRoofSurfaceArea node, I used my new node, Panelize.BySurfaceArea, to panelize the new roof surface and open/close the adaptive solar panels based on UV input depending on the sun’s position.
Above: Logic for custom node Panelize.BySurfaceArea
I then created a table to record the results of each of the building form test cases, including the input parameter values (Top Width and Top Depth) and all the computed evaluation metrics (Gross Floor Area and Color Output). My input parameters were 25-200 feet, with steps of 25. Since the roof isn’t sloped (other than the minimum degree added to fix the bug in the Surface.PointAtParameter node), the total solar potential is largely a factor of gross floor area. However, the cost increases as the gross floor area increases as well. For this reason, I believe the middle three values are the best option because they represent a good middle ground between cost and UV potential.
Above: Table highlighting top 3 recommended design alternatives
Above: Final home node logic
Finally, I selected option 4 as my best case for optimizing both cost and UV potential criteria. Here is a Revit model of the final recommended design.
Above: Revit model of final recommended design, shown at 2pm