My end goal is to create a noise map (similar to heat map) based on noise levels at specific points. Based on the Revit elements within a 5 meter radius from each point, there would need to be some calculations done to get the noise level at each point. Once I have the noise level associated with each point, I can create a visualization showing where its quiet and loud based on an acceptable level/decibel of noise

To do this I started by creating a grid, found grid intersecting points (to be used as specific points to calculate noise level), created spherical bounding boxes at those points and then got list intersecting elements (using bimorph package).

My thought process is to create a dictionary using the coordinates of grid intersections as keys and list of elements as values (Each coordinate will have multiple elements). I think this will enable me associate the list of elements with each point. After this I can create additional nodes that will do the math calculation and then associate the results (noise levels) with each point. However, I am struggling to do this.

I am new to Revit and Dynamo so detailed help will be much appreciated. Below is what I’ve done so far:

I’m not particularly clear on this workflow, but a few comments:

BoundingBox on a sphere will result in a cube. Bimorphs should have other nodes that can be used with the sphere geometry for element comparison.

You sort of already have list association between the list of grid points and the bounded elements: your intersect node should have 49 lists (some of which are empty). If you can run your calculations while maintaining list structure throughout the process, you’ll wind up with a list of 49 values.

I’m interested in the sphere-contains workflow as it relates to sound pressure calculations; does your process consider reflected sound from walls/enclosures?

Thanks for your comments. Reflected sound from walls/enclosures plays a part but its not of consideration right now. There are empty items in the list because not all 49 coordinate points have elements within a 5 mile radius of them. You’ll notice the Get Parameter Value node gives me a list of a list with a total of 197 elements in two different ways. Tricky part for me is creating an automatic way to use element parameter values to run calculations and return with another list that has 49 noise values. Screenshot below shows you two different list structures I get when I try to get width values.

It wouldn’t be a map, but you might be interested in the Acoustimo package. It’s old, but last I checked (1.5 years ago?) it was still running I with minimal if any edits.

Thanks for the suggestion. Acoustimo is interesting but ultimately its not what I’m looking for at the moment.