TensorSpan: Long-Span Stadium Roof Configurator
Overview (ReadMe)
What it does:
Are you tired of manually modeling complex roof trusses and constantly checking cross-sections against tennis ball clearance heights? TensorSpan is a parametric configurator built in Dynamo that automates the early-stage schematic design of tennis stadium roof structures.
By utilizing dynamic sliders, users can instantly generate a viable, arched stadium roof supported by structurally responsive Pratt trusses. The script automatically sizes the truss depth based on the generated span (using an L/15 ratio), checks for clearance clashes, and provides real-time environmental feedback.
Intended Users:
Structural Engineers and Sports Architects doing conceptual design and feasibility studies for stadium covers.
How to use it:
This tool runs entirely on out-of-the-box Dynamo nodes (no custom packages required).
1. Open the attached .dyn file via Dynamo Player.
2. Define the Stadium: Adjust the Seating Bowl sliders to set the overall dimensions of your arena.
3. Configure the Structure: Adjust the Roof Arch and Truss Spacing sliders to optimize the structural density.
4. Evaluate Clearances: Watch the visual model and the Clash Dashboard. If the roof dips below the mandatory 40-foot lob clearance envelope, the clashing trusses will turn bright red and the dashboard will read "FAIL."
5. Analyze the Environment: Adjust the Day and Hour sliders to run the custom Python solar engine. A real-time shadow will project onto the court.
The Development Process
Building this tool required balancing four parallel systems: geometric generation, structural rules-of-thumb, spatial clash detection, and environmental tracking. Here is how the logic came together:
Phase 1: The Base Stadium & Clearance Envelope
The first step was establishing the non-negotiable constraints. Using DesignScript, I generated a mathematically accurate, layered US Open tennis court. To prevent Z-fighting visual glitches, the green run-off, blue court, and white lines are stacked at micro-elevations. From the court boundary, a solid 40-foot volume was extruded to represent the absolute minimum "lob clearance" required for professional play.
Phase 2: Parametric Roof & Structural Truss Generation Next, I built a parametric seating bowl and lofted a translucent roof fabric over it. Rather than just drawing lines, I wanted the structure to respond to engineering realities. Using a custom DesignScript function, the script evaluates the length of every bay and generates Pratt truss diagonals. The depth of the truss is automatically calculated based on the span using a standard long-span steel L/15 rule-of-thumb, pushing the top chords upward to support the fabric.
Phase 3: Clash Detection & Structural Dashboarding
To ensure the roof design is actually feasible, I implemented a boolean intersection check (Geometry.DoesIntersect). The tool tests the flattened list of thousands of truss lines against the 40-foot clearance envelope. Using a boolean mask, any steel member that dips into the "no-fly zone" is filtered, colored bright red, and triggers a "FAIL" warning on the user dashboard.
Phase 4: Solar Shading & Environmental Takeoffs A stadium roof isn't just for rain; it manages player visibility and heat. I wrote a custom Python script that calculates an accurate solar vector based on the day of the year, hour of the day, and the exact latitude of the San Francisco Peninsula. This vector projects the roof boundary down to the court, trimming it perfectly to the playing surface. Simultaneously, the tool measures the total linear footage of the steel, converting it into an estimated tonnage and calculating the embodied carbon (MT CO_2e).
Phase 5: The "Master Engine" Refactor As the four systems grew, the Dynamo canvas became a "spaghetti" mess of redundant math and color nodes, which severely slowed down performance. To optimize the tool for Dynamo Player, I executed a massive refactor. I consolidated over 40 standard nodes into three clean, highly efficient DesignScript blocks: The Stadium Foundation, The Color Palette, and The Math/Dashboard Engine.
[Insert Video Demo Link Here] (A 2-minute walkthrough showing the sliders flexing the geometry, the clash detection turning the trusses red, and the shadow moving across the court).