Notebook 5 - Sound
The following conducts a sound analysis for each voxel in the building. While the script does produce the desired result it is not entirely physically correct.
The first step in the script is to import the roads with different sound values as separate lists. The road map used for this calculation was made by hand based on intuition. The loudness of the different road types were estimated with an online tool. The next step is to select a radius around the envelope for analysis. This radius should be large enough for an accurate calculation but should not be too large to keep it computationally viable.
The roads within this radius are then divided into points and the distance is measured from each voxel to each point. We use the rule of dB lowers by 6 when the distance to the source doubles. After this step, we stray from accurate physics and use a mass addition to calculate the noise for each voxel. In real life, noise cannot just be added to each other. We however chose this approach to keep the analysis simple and within our reach.
To forego the computational limitations of grasshopper we split the calculation for each level of the building. This prevents crashes and allows us to get a more defined calculation overall. The data per floor is pickled and saved in data/sound.
Figure 41 shows the grasshopper schript of the first steps in which the curves are loaded and picked within radius.
In Figure 42, grasshopper file for the last part of the script in which the calculation is done and the data exported, is visualized
A visualisation of the first step of establishing the radius is shown in Figure 43
After that, the curves are divided and distances are measured, as you can see in Figure 44.
For coordinates in center cluster add a center next to the center in the x direction Stack the centers vertically Add all centers in cluster final list For cluster center in cluster final set 1 in shaft lattice Assign maximum height for the shafts #Creation of horizontal corridors Take the stencil, lattice and adress of a voxel in that lattice Returns the indices of the neigbhours of that voxel Find the number of all voxels Initialize the adjacency matrix Find the index of the available voxels in availability lattice Fill the adjacency matrix using the list of all neigbhours For voxel location in availability index Find the 1 dimensional id Retrieve the list of neighbours of the voxels based on the stencil For neighbours in voxel neighbours Set the entry to 1 Construct the graph #Find the shortest path to the cluster centres seeds and construct the corridor Define the clusters again Initialize corridor lattice For each voxel that needs to have access to shafts For available voxel in occupation index cluster Slice the corridor lattice horizontally Find the vertical shaft voxel indices Construct the destination address Construct 1-dimensional indices Try Find the shortest path Set the shortest path as occupied in the coordinate flat path = 1 Except Print "unreachable" when the voxel is unreachable Reshape the flat lattice