For this module, the objective is to provide guidance to developers of a new high-rise building. Since my new building will be a commercial property, the analysis has centered around two key metrics:
- Building’s potential annual rental net income
- Potential electricity cost savings by implementing solar isolation measures
These two key evaluation metrics were used to optimize the original building from Module 5, resulting in the optimized solution presented below.
Original building form:
![image](https://www.notion.so/image/https%3A%2F%2Fs3-us-west-2.amazonaws.com%2Fsecure.notion-static.com%2Fa2c6c043-c72c-4ca7-a895-aaa221a6814f%2FUntitled.png?id=6f2deffd-0e47-4830-9447-3d491d972478&table=block)
Recommended building form based on evaluation and analysis:
![image](https://www.notion.so/image/https%3A%2F%2Fs3-us-west-2.amazonaws.com%2Fsecure.notion-static.com%2F42164435-63d5-4650-b207-79adcf168ec7%2FUntitled.png?id=06113ec1-a98d-4149-b468-1c34513326d5&table=block)
![image](https://www.notion.so/image/https%3A%2F%2Fs3-us-west-2.amazonaws.com%2Fsecure.notion-static.com%2Fa919e500-50bf-49d4-9b64-f2db5128f0c5%2FUntitled.png?id=d923e729-2a36-47d4-a380-f82918bf1b2e&table=block)
![image](https://www.notion.so/image/https%3A%2F%2Fs3-us-west-2.amazonaws.com%2Fsecure.notion-static.com%2F42ab44d9-5c82-410a-9dd3-02d44495875c%2FUntitled.png?id=c8468c59-4775-426f-b93c-d1906b1bcd1c&table=block)
Dynamo Script Overview:
![image](https://www.notion.so/image/https%3A%2F%2Fs3-us-west-2.amazonaws.com%2Fsecure.notion-static.com%2Fba46351e-9932-4587-896f-79e2b4f9e171%2FUntitled.png?id=3382e298-0f9e-4a3f-89bb-a7503ab6f182&table=block)
The script starts in the blue section where input values are gathered for the parametric study covered in Module 5 Part 2. In addition to these inputs, new parameters for evaluating the annual rental net income and cost savings from solar insolation have been added. The green section creates a combination of parameters to be studied, while the evaluation of these values based on the evaluation parameters is performed in the orange custom node. The purple section is part of creating a single-objective optimization scheme to compare and rank the building form alternatives. Finally, the results are exported and printed into Excel in the turquoise section. The pink section provides visual feedback by adjusting the color and opening size of adaptive panels to reflect an evaluation value related to the panels.
Step 1: Create two custom nodes to measure new evaluation metrics for the building form test cases created in Module 5
To model the buildings around the project site, I used Google Earth to gain an understanding of their location, orientation, and height. The tallest building in the vicinity was approximately 450 ft tall, which means that most of the surrounding buildings were shorter than the proposed project building. These surrounding buildings were simulated as in-place masses.
![image](https://www.notion.so/image/https%3A%2F%2Fs3-us-west-2.amazonaws.com%2Fsecure.notion-static.com%2F0946ab19-7894-49cc-b3e5-26d3043b97f4%2FUntitled.png?id=483f1c54-a6e9-4234-9837-001d368f8421&table=block)
![image](https://www.notion.so/image/https%3A%2F%2Fs3-us-west-2.amazonaws.com%2Fsecure.notion-static.com%2Fb8a4bd94-a64f-40ad-9f07-de387b792792%2FUntitled.png?id=4c756c93-1939-453b-8c90-af960d931e9d&table=block)
- New metric 1: Annual Rental Net Income
As a developer, the primary concern is usually the building's potential annual rental net income. To illustrate this concept, I have utilized the formula:
Potential Annual Rental Net Income($) = Total Construction Cost($) - Annual Rent Profit($)
- New metric 2: Potential Electricity Cost Saving Due to Solar Energy
In addition, with the increasing focus on sustainable energy used in building design, another important evaluation metric is the average solar insolation of the building. This metric reflects the roof's potential to generate solar energy, which can help reduce the operational costs of electricity. To illustrate this concept, I have utilized the formula:
Potential Electricity Cost Saving ($) = Cumulative Solar Potential (kWh/ft^2) * Roof Area (ft^2) * Electricity Cost per kWh ($/kWh)
Same as in Module 5, I tested two parameters for my building, namely the Top Rotation and Base Radius.
- The range for Top Rotation was set between 90-130 degrees with increments of 10 degrees.
- The range for Base Radius was set between 160-170 ft with increments of 5 ft.
![image](https://www.notion.so/image/https%3A%2F%2Fs3-us-west-2.amazonaws.com%2Fsecure.notion-static.com%2Fc393ae3f-e680-4b48-99bc-52e863be8af0%2FUntitled.png?id=25540f81-ce3d-4df2-93a1-64f9f5ce2c9b&table=block)
The building cost increases linearly from $500 per ft2 at ground level to $1000 per ft2 at 750ft above ground level.
For the annual rent, I found that commercial tenants paid, on average, about 90 U.S. dollars per square foot per month of class-A office space in San Francisco. https://www.statista.com/statistics/641394/office-space-rental-rates-san-francisco-by-submarket/
Therefore, I assumed the annual rent increases linearly from $960 per ft2 ($80 per ft2 per month) at ground level to $1200 per ft2 ($100 per ft2 per month) at 750ft above ground level.
![image](https://www.notion.so/image/https%3A%2F%2Fs3-us-west-2.amazonaws.com%2Fsecure.notion-static.com%2F59daae21-f32b-40e4-90d8-b0a32afcc9a9%2FUntitled.png?id=41f24098-7f5d-4eb8-891f-08335285ea6d&table=block)
The solar insolation input values include the weather, site location, the spring sun setting conditions chosen in Revit, critical shading surfaces from the surrounding buildings, and a selected spacing between points of solar analysis. These values will help to determine the solar insolation in Wh/m^2 for each alternative. I then converted the value to kWh/ft^2.
![image](https://www.notion.so/image/https%3A%2F%2Fs3-us-west-2.amazonaws.com%2Fsecure.notion-static.com%2Fba4970db-acca-41f5-91b7-51a6cee84ecd%2FUntitled.png?id=9c12ffb7-6b3b-4d44-93b9-dc7381d94ef9&table=block)
![image](https://www.notion.so/image/https%3A%2F%2Fs3-us-west-2.amazonaws.com%2Fsecure.notion-static.com%2F77cd0941-f19d-46dc-bb83-8948bdfed209%2FUntitled.png?id=56e03751-6471-4cae-8ebd-92feeff8ebd6&table=block)
The custom node created takes in the inputs values described above and from Module 5 to test various building forms based on input Top Rotation and Base Radius, and evaluate them according to annual rental net income and solar potential saving.
Overview of custom node:
![image](https://www.notion.so/image/https%3A%2F%2Fs3-us-west-2.amazonaws.com%2Fsecure.notion-static.com%2Fbd980c4f-252e-407d-88ce-d79d8a351d33%2FUntitled.png?id=ca7e1633-1823-41b7-a201-6ce622ba04b7&table=block)
Inside custom node “EvaluatePairsOfInputsAndReportCombinedResults”:
![image](https://www.notion.so/image/https%3A%2F%2Fs3-us-west-2.amazonaws.com%2Fsecure.notion-static.com%2F688231c2-f312-4347-9df2-153a42e0b231%2FUntitled.png?id=f7847f58-353b-4d6c-a8de-57df39bb73fa&table=block)
In Module 5, we developed a Dynamo logic that generated an updated building form based on the parameter test case instances presented in the orange and blue sections at the top of the figure. The pink section reported the evaluation values of gross floor area, surface area, and volume. In this module, we have added two new evaluation metrics described earlier, as shown in the green section. We will discuss these additional evaluation metrics in greater detail below.
To evaluate the annual rental net income, the custom node shown below is used. This custom node calculates a multiplier that is applied to the associated mass floor area. The multiplier represents the annual rental net income for each level, which is calculated by subtracting the construction cost from the rent profit. Any null values are removed, and the remaining values are summed to determine the overall annual rental net income for each building form.
Evaluation of annual rental net income:
![image](https://www.notion.so/image/https%3A%2F%2Fs3-us-west-2.amazonaws.com%2Fsecure.notion-static.com%2Fd76adfbe-1e98-4112-a649-7f211f7c2afc%2FUntitled.png?id=f9e7ae00-4fc7-4873-9fc4-20755240b4c5&table=block)
Inside the custom node of “EstaimteNetIncomeByFloorLevel”:
![image](https://www.notion.so/image/https%3A%2F%2Fs3-us-west-2.amazonaws.com%2Fsecure.notion-static.com%2F4d0a58a6-f09e-403a-b4b2-e8441189a557%2FUntitled.png?id=fdca2146-bc56-4b7c-802a-9e64a231af8f&table=block)
To evaluate the potential electricity savings from solar energy, I used weather and sun path data from the Revit environment to calculate the cumulative solar insolation on the building's roof surface. This roof surface would be the potential location for solar panels placement. The logic for this evaluation process is shown below. First, I selected the roof surfaces and passed them, along with the solar setting, roof area, and potential shading surface, into a custom node.
Evaluation of potential electricity savings from solar energy:
![image](https://www.notion.so/image/https%3A%2F%2Fs3-us-west-2.amazonaws.com%2Fsecure.notion-static.com%2Fc86e6782-5a0c-43d8-8720-58af27515615%2FUntitled.png?id=a0da01ca-f4cd-47d6-b6ee-2e25cbad8e93&table=block)
Inside the custom node of “Building Form.SelectRoofSurface”:
I select surfaces that have a normal vector with a z component larger than 0.01 as the roof surface.
![image](https://www.notion.so/image/https%3A%2F%2Fs3-us-west-2.amazonaws.com%2Fsecure.notion-static.com%2F4e50a807-69b1-4114-8ef3-776b35dd62cf%2FUntitled.png?id=871b1ac8-f252-43d9-b3af-8d27d5d86a53&table=block)
Inside the custom node of “BuildingForm.SolarAnylsis”:
![image](https://www.notion.so/image/https%3A%2F%2Fs3-us-west-2.amazonaws.com%2Fsecure.notion-static.com%2F5e2e8dde-2308-4588-a36e-c868ef74b5e8%2FUntitled.png?id=872162a0-339c-4356-b5ac-3ea673605a9a&table=block)
Details of cost potential savings for computed solar potential:
![image](https://www.notion.so/image/https%3A%2F%2Fs3-us-west-2.amazonaws.com%2Fsecure.notion-static.com%2Fa4a56df1-10c9-4a4b-acd0-307c90ec1ac4%2FUntitled.png?id=329d3f49-0697-41e9-88c2-601b3131f6d6&table=block)
My custom node can return the amount of money that would be saved by the solar potential of the roof. The figure above shows the logic of taking the amount of cumulative potential (Wh/m^2) and multiplying that by the area of the roof (ft2) and the cost per kWh ($/kWh) to determine the amount of potential money saved. The average electric rate in San Francisco cost 32 ¢/kWh.
The roof potential was analyzed based on the shading created by the surrounding buildings as shown below:
![image](https://www.notion.so/image/https%3A%2F%2Fs3-us-west-2.amazonaws.com%2Fsecure.notion-static.com%2F1a2abc12-1fdf-4603-be7b-95a632b7f5e2%2FUntitled.png?id=7c56066c-61c1-4100-aff9-a298f1c6120a&table=block)
Step 2: Integrate the custom nodes into your testing node logic and report the new evaluation values
I generated a list of values from the new custom testing node for each test case, which included the input parameter values, gross floor area, gross surface area, gross volume, and the two new evaluation metrics. Finally, the results for each parameter pairing are exported and printed in Excel.
![image](https://www.notion.so/image/https%3A%2F%2Fs3-us-west-2.amazonaws.com%2Fsecure.notion-static.com%2F68763c03-5051-4b00-866a-826f95a4dc63%2FUntitled.png?id=5e684759-04f2-421d-825b-fe2080871c73&table=block)
![image](https://www.notion.so/image/https%3A%2F%2Fs3-us-west-2.amazonaws.com%2Fsecure.notion-static.com%2F498f3cf8-0327-4ed0-af13-547c8db509af%2FUntitled.png?id=7e14efc6-8447-45d5-8436-527eb2aa7173&table=block)
Step 3: Design a Single-Objective Optimization Scheme for Using the Computed Evaluators to Compare and Rank the Building Form Alternatives
With these values computed, the next step was to create a weighted single-objective optimization scheme. In this module, we have the added evaluations of Annual Net Income and Potential Electricity Savings from Solar Energy. In order to properly compare these values and produce a singular best case, some manipulation of the result data is required.
Firstly, the values computed for this module were initially selected as a means to compare the building's annual rental net income and operation cost savings due to solar potential. These two values were first normalized according to the maximum value found for each case and then multiplied by an assigned multiplier.
![image](https://www.notion.so/image/https%3A%2F%2Fs3-us-west-2.amazonaws.com%2Fsecure.notion-static.com%2Fca401ab7-54c0-41a7-9ef9-d60e8ea3ff25%2FUntitled.png?id=15e54b6f-7e5e-44e8-ad9e-92164c1fc7c3&table=block)
As a designer and developer, I like to prioritize sustainability and energy efficiency over maximizing rental income. This is because the potential cost savings from utilizing solar energy may have a larger long-term impact on the project's financial performance compared to annual rental income. Therefore, in order to achieve a total score of 100, I assigned weight factors of 40 and 60 to the Annual Rental Net Income and Solar Energy Potential Cost Saving evaluation metrics, respectively. After the combined scores for all alternatives are obtained, they will be exported to Excel.
![image](https://www.notion.so/image/https%3A%2F%2Fs3-us-west-2.amazonaws.com%2Fsecure.notion-static.com%2F773acb9f-bf37-464c-acc5-4f0fc9b5e689%2FUntitled.png?id=ddf74029-aebb-4e4d-8fe3-a9f2cd7d2f85&table=block)
Inside the custom node of “EvaluationResults.ComputeCombinedEvaluationScore”:
I rescaled the results, so they were all between 0 and 1. Then I put weighted factors for the new two metrics to demonstrate their degrees of importance. Then, I added the weighted scores together.
![image](https://www.notion.so/image/https%3A%2F%2Fs3-us-west-2.amazonaws.com%2Fsecure.notion-static.com%2F19def5cb-3fec-408d-92da-9c39b19ee079%2FUntitled.png?id=4a5036b6-1af6-4569-a461-31b59b026721&table=block)
Step 4: Implement Single-Objective Optimization Scheme
After applying the Single-Object Optimization scheme with node logic in Dynamo, I exported the outcomes of every building form test case, including the input parameter values and all the computed evaluation metrics, in an Excel table presented below
![image](https://www.notion.so/image/https%3A%2F%2Fs3-us-west-2.amazonaws.com%2Fsecure.notion-static.com%2F7deb31e1-418f-414c-800b-4167a955e94a%2FUntitled.png?id=0ffb79d7-d915-4d38-9147-54bb31b37a06&table=block)
![image](https://www.notion.so/image/https%3A%2F%2Fs3-us-west-2.amazonaws.com%2Fsecure.notion-static.com%2F816b2ad9-9bed-4176-a968-281723f89663%2FUntitled.png?id=27f83ef2-0c22-47b6-9f43-a7f6efa275b4&table=block)
We have a requirement that the gross floor area must be between 1,200,000 and 1,500,000 ft2. Based on this specific requirement, we identified three alternatives with the highest combined scores highlighted in the Excel above:
Case 15: Top Rotation=130 degrees, Base Radius=170ft, Total Weight Building Score=97.83
Case 12: Top Rotation=120 degrees, Base Radius=170ft, Total Weight Building Score=96.47
Case 9: Top Rotation=110 degrees, Base Radius=170ft, Total Weight Building Score=93.71
My recommendation to the clients would be to choose CASE 15 highlighted in gold because it has the highest combined score, making it both profitable and having a high potential for cost savings from utilizing solar energy. Therefore, a building with a top rotation of 130 degrees and a base radius of 170 ft will be the best option.
Step 5: Create a Simple Revit Model Illustrating the Recommended Design
I chose to use the adaptive panel of Rect_Panel with Resizable Opening: Glazing. It can be adjusted in the frame width and height. Then, I grabbed the wall surfaces by using the custom node of “BuildingForm.SelectWallSurfaces”. Finally, I subdivided the surface into U and V panels by using the “Panels.BySurface_U_V” custom node and provided sliders to allow users easily manipulate the number of panels. I had to remove a null list as one of the wall surfaces couldn't be divided into quad panels due to its sharp triangle shape at the bottom.
![image](https://www.notion.so/image/https%3A%2F%2Fs3-us-west-2.amazonaws.com%2Fsecure.notion-static.com%2F9a2c48ac-83a0-49e2-b10e-7539178c6dc4%2FUntitled.png?id=021965e2-1166-4548-8a72-46c5e218c9c3&table=block)
Inside the custom node of “BuildingForm.SelectWallSurfaces”:
![image](https://www.notion.so/image/https%3A%2F%2Fs3-us-west-2.amazonaws.com%2Fsecure.notion-static.com%2F481623f7-0906-4798-b90d-39e28ca3b5d0%2FUntitled.png?id=6dcd0f62-d758-4848-88ac-0acd3da6f6da&table=block)
Inside the custom node of “Panels.BySurface_U_V”:
![image](https://www.notion.so/image/https%3A%2F%2Fs3-us-west-2.amazonaws.com%2Fsecure.notion-static.com%2F38842755-53bd-494f-9026-9d9244c11e5a%2FUntitled.png?id=d69a8385-90c8-498f-8ef9-14d4b6cda5a1&table=block)
Step 6: Provide Visual Feedback By Adjusting the Appearance of the Panels
Finally, I modified the width, height, and color of the grazing panels based on their directness to the sun. Panels facing the sun are colored red and have a smaller glazing area to minimize the amount of sunlight passing through. Conversely, panels facing away from the sun are colored blue and have a larger glazing area to maximize the amount of sunlight passing through.
![image](https://www.notion.so/image/https%3A%2F%2Fs3-us-west-2.amazonaws.com%2Fsecure.notion-static.com%2Fc27bfa83-f0b3-47f3-9a2e-82c11eaa21db%2FUntitled.png?id=42808bde-bdfb-47d4-85c0-b85a12d411b0&table=block)
Inside the custom node of “Panels.ComputeSunDirectnessOutwardNormals”:
This custom node operates by initially computing the normal vectors to the panel surfaces. Afterward, I utilized “PanelNormals.AllPointUpward” to ensure that the surface normals are oriented in the upward direction. Lastly, based on the dot product of the sun direction and the panel normals, the node generates a list of "directness" indices.
![image](https://www.notion.so/image/https%3A%2F%2Fs3-us-west-2.amazonaws.com%2Fsecure.notion-static.com%2Fab3a61b9-abc0-43e5-b811-60d7216839d7%2FUntitled.png?id=fab0a682-f157-4d88-8cb3-6aac3402b779&table=block)
Inside the custom node of “Panels.ColorizeBlueToRedByValue”:
I made the panels change color based on their directness to the sun by using the output of the sun directness list. I added number sliders to allow for simple modification of the panel colors. In this case, I assigned red to indicate panels that are more directly facing the sun, while blue signifies panels that are facing the sun at an angle. Finally, the color is applied to panels by using the “Element.OverrideColorInView” node.
![image](https://www.notion.so/image/https%3A%2F%2Fs3-us-west-2.amazonaws.com%2Fsecure.notion-static.com%2F2d89a60d-e00f-44ed-82e3-f7fa0fbcc007%2FUntitled.png?id=b85768e8-b4b4-4d03-b838-3524f392fa2e&table=block)
Optimal form with panels adjusted based on the sun:
![image](https://www.notion.so/image/https%3A%2F%2Fs3-us-west-2.amazonaws.com%2Fsecure.notion-static.com%2Fc5370c7d-d19e-4df4-8ef9-cf622d44b36a%2FUntitled.png?id=adf41164-562e-41f0-a421-8a1c9ca24b59&table=block)
![image](https://www.notion.so/image/https%3A%2F%2Fs3-us-west-2.amazonaws.com%2Fsecure.notion-static.com%2Fce4d5ad4-b60c-4aac-9b03-7475b6e5deeb%2FUntitled.png?id=718495ef-c44a-4dd0-9e84-61229acec29f&table=block)