Analysis & Geometry

Computational
solvers

Fast early-design studies for daylight, wind, circle coverage and radiation. The interfaces expose selected modes and inputs for comparing options quickly; they are not substitutes for later-stage validated simulation.

0
Analysis engines
0
Refinement passes
0
Quality levels
Five architectural questions

Custom computational methods for geometry and environmental decisions.

Each study begins with a specific design question, then exposes the inputs, evaluation method and resulting geometry or environmental reading. The interactive views demonstrate selected command logic; the diagrams summarise the method rather than reproduce the source definitions.

Circle Coverage SolverGHPython / Grasshopper · boundaries → circle geometry, density and gap checks
Daylight + UDI SimulatorGHPython / Grasshopper · room, windows and sun → sampled illuminance and UDI distributions
Solar Radiation (GH)GHPython / Grasshopper · meshes, blockers and periods → face-level radiation values and legend
Radiation StandaloneRhino Python command · selected surfaces and time range → mapped results and statistics
Wind AnalysisGHPython / Grasshopper · geometry and wind inputs → exposure, pressure coefficient and pedestrian-comfort readings
01

Circle Coverage Solver

LinkedIn solver project notes →
Circle placement solver.txt . v5.0
GHPython / Grasshopper
Circle placement interfaceBoundary, exclusion-zone and radius inputs update candidate circle geometry, density and gap checks — useful for quick site-plan studies such as street-light or fire-stair placement.

Problem

Place circular elements inside a bounded region while respecting exclusion zones and edge conditions.

Why this is computationally difficult

The boundary and exclusion zones change where a circle can be placed, so a regular distribution needs repeated refinement rather than a single grid.

How it works

A hexagonal grid provides the initial distribution; Lloyd relaxation refines spacing; gap-pull checks uncovered regions and moves or adds circles.

Scope & Limitations

Designed for rapid exploration of element density and coverage inside defined planar boundaries. Assumes a common radius and requires review when geometry is highly concave or non-planar.

Drag green vertices or a boundary edge to reshape . click inside to add a circle . double-click an edge to add a vertex
Circle coverage solver. Focus a green boundary vertex or coverage circle and use arrow keys to move it. The readout reports circles, coverage and vertices.
circles 0coverage 0%vertices 0
Back-end process / circle coverage

From boundary conditions to a refined placement.

The animation lets you reshape the boundary. The solver then rebuilds a candidate distribution, removes invalid or redundant placements, and checks where coverage still needs attention.

Boundary
+ exclusions
Hexagonal
seed layout
Clip
+ prune
Gap-pull
+ relaxation
Coverage
metrics
multiple regionsrepeatable seeddensity + gap readout

Hexagonal Grid

Establishes an initial distribution with hexagonal spacing, giving the refinement process a consistent starting geometry.

Lloyd Relaxation

Spreads circles evenly while maintaining coverage. Iteratively repositions centers toward uncovered regions.

Gap Detection

A demand-sampling grid identifies uncovered regions, then gap-pull moves circles toward areas that need attention.

Redundancy Detection

Removes redundant circles where overlap makes them unnecessary, supporting a more compact result for review.

Multiple Boundaries

Processes disconnected regions independently. Respects exclusion zones and secondary boundaries for constrained placement.

count % density gap

Output Metrics

Returns circle count, density percentage, and maximum gap distance. Seed-based randomization enables repeatable sensitivity testing.

Back-end process / daylight + UDI

From sun position to a room-level light map.

The front-end moves the sun, room and windows. The computational layer evaluates direct rays, diffuse sky contribution and selected reflected light before assigning values to the analysis points.

Room, windows
+ materials
Sun position
+ sky model
Direct
ray checks
Diffuse +
reflected light
UDI
+ heatmap
blocker samplingmaterial responsequality tiers
02

Daylight + UDI Simulator

LinkedIn solver project notes →
Daylight.txt . v1.4
GHPython / Grasshopper
Daylight + UDI interfaceA lightweight GHPython study for live Grasshopper exploration: blocker-side samples are cached once per timestep, then each test face queries that cache with a visibility ray. It trades later-stage precision for fast, directionally useful feedback while geometry is still moving.

Problem

Compare daylight availability and UDI across an interior room with windows, sun position and a point mesh.

Why this is computationally difficult

Room geometry, window placement, sun position and mesh resolution change the set of points receiving direct or diffuse light.

How it works

The simulator maps sun position, casts rays through openings, evaluates direct and diffuse contributions, then reports lit and shaded mesh points.

Scope & Limitations

Explores selected room and sky conditions. Results depend on the defined room, windows, mesh and sky assumptions and require later design judgement.

Drag the sun or scrub the hour . drag windows or their edges . drag the four room corners to resize . double-click a wall to add a window
Daylight and UDI simulator. Focus the sun, a window edge or room corner and use arrow keys to adjust the model. The readout reports lit area and time.
lit 0%in shade 0%time 10:00windows 0
Daylight + UDI demonstration The video shows the interactive front end of the GHPython/Grasshopper simulator: room geometry, windows, sun position and analysis points are changed while daylight distributions update.
solar path

Sun Position

Computes solar altitude and azimuth from date, time, latitude, and longitude for accurate sky position.

Three Components

Direct sunlight, diffuse sky radiation via Perez model, single-bounce reflected light from blockers.

sky dome

Perez Sky Model

More accurate than isotropic sky. Captures circumsolar brightening and horizon effects for realistic gradients.

area-weighted

Area-Weighted Blocker

Samples blocker faces proportional to actual triangle area, not face count. More accurate reflection calculation.

clear tint opal

Per-Material Props

Each obstacle has R,G,B color tint, reflectivity, and per-material transparency (glazing, curtains, fins).

Multi-tier resolution scaling

Quality Tiers

Multi-tier resolution scaling with 6-48 sample points per blocker. Supports evolutionary-design workflows.

Back-end process / radiation grasshopper

From live parametric geometry to face-level radiation values.

Grasshopper supplies geometry and settings as live inputs. The component prepares the mesh, selects the analysis period, compares surface orientation with the sun path, and returns a visual result for the next design iteration.

Mesh / Brep
+ blockers
Period
auto-detection
Sun vectors
+ face normals
Incidence
accumulation
Analysis mesh
+ legend
annual / monthly / dailyquality selectionraw values available
03

Solar Radiation (GH)

LinkedIn solver project notes →
Radiation_GH.txt
GHPython / Grasshopper
Solar radiation interfaceAn early-design comparison tool for cumulative radiation, peak irradiance, direct-to-diffuse fraction and sun hours. Meshes or Breps, blockers, periods and quality settings drive face-level values and raw outputs; validated environmental simulation remains necessary where accuracy is critical.

Problem

Compare solar incidence across selected geometry as sun position and analysis settings change.

Why this is computationally difficult

Face orientation, sun position, mesh resolution and analysis mode change the value assigned to each surface.

How it works

The workflow creates an analysis mesh, calculates sun position and per-face incidence, then maps the values to a visual result and legend.

Scope & Limitations

Designed for iterative comparison of selected geometry and periods. It is an analysis aid, not a substitute for project-specific environmental validation.

Click a box to select . drag its X, Y, Z arrows to move on the plane or lift it up . drag the white puck to slide freely . drag the sun
Solar radiation component. Focus the sun or a selected massing box and use arrow keys to adjust the analysis setup.
sun altitude irradiance 0 kWh/m²boxes 0
Grasshopper radiation demonstration The video shows the parametric component receiving geometry and sun-path settings, evaluating face-level radiation and updating the analysis mesh and legend.
mesh coerce

Mesh Coercion

Accepts meshes directly or auto-converts Breps to FastRenderMesh. Works with parametric geometry without preprocessing.

context geom

Blocker Support

Separate context geometry (buildings, fins, overhangs) casts shadows but isn't directly analyzed. Models real site constraints.

annual monthly daily auto-detect

Mode Auto-Detection

Annual (no month/day wired), Monthly (month wired), Daily (both wired). Adapts simulation scope automatically.

Multi-tier scaling

Quality Tiers

Multi-tier resolution scaling across standard, high and ultra modes. Supports iterative exploration and evolutionary-design workflows.

parameter link

Live Parametric

All settings wire from GH sliders and inputs. Results update in real time as parameters change during design iteration.

low high

Legend Generation

Auto-anchors legend below bbox or repositionable via custom point. Outputs per-simulation: analysis mesh, legend mesh, labels, raw illuminance values.

Back-end process / radiation standalone

From a Rhino selection to a reviewable radiation pass.

The standalone command packages the same kind of analysis into a focused Rhino workflow: select surfaces, establish a location and time range, then inspect the calculated result and summary statistics.

Selected
surfaces
Mesh + normal
validation
Sun path
time steps
Direct / diffuse
face checks
Color map
+ statistics
date rangemesh qualityplayback / export
04

Radiation Analysis Standalone

LinkedIn solver project notes →
radiation_standalone.py
Standalone Rhino Python
Standalone Rhino command interfaceA native Rhino workflow with date/time playback, so a façade can be read across a day or year rather than as one isolated sun position. An exposure pass identifies enclosed/internal faces before analysis, keeping the calculation focused on geometry that can actually see the sky.

Problem

Run a radiation check directly in Rhino without setting up a Grasshopper definition.

Why this is computationally difficult

Selected Breps must be meshed, face normals and sun vectors compared, and results returned to the model in a readable form.

How it works

The command accepts selected geometry, builds a mesh, evaluates face incidence from the sun path, color maps the result and can export face values.

Scope & Limitations

Designed for quick checks on selected Rhino geometry. Output still depends on weather data, mesh settings, date range and professional interpretation.

Drag the sun . adjust mesh resolution
faces 0 peak 0 kWh/m² mean 0 kWh/m²
low
high

Why standalone?

Unlike the Grasshopper solvers, this runs as a regular Rhino command. No Grasshopper canvas, no component wiring. Select geometry, run the command, get results baked into the model. Useful for quick checks during design without setting up a parametric definition.

EPW weather file input auto-mesh selected Breps per-face normal . sun dot product color-mapped bake to layer CSV export of face values WinForms progress dialog
Standalone Rhino radiation demonstration The video shows geometry selection, analysis sliders, per-face solar evaluation and the return of a color-mapped result inside Rhino.

Spencer Solar Math

Calculates sun position from day-of-year, UTC hour, latitude, longitude using precise Spencer equations for any location and time.

Clear-Sky Irradiance

Models Direct Normal Irradiance (DNI) and Diffuse Horizontal (DHI) based on air mass and atmospheric conditions.

Per-Face Ray Casting

Shoots sun vector to each mesh face, records direct hit or blocked, auto-flips inward-facing normals for correct results.

Interactive UI Sliders

Real-time control over latitude, longitude, month, day, hour range, quality. Mesh, legend, and statistics update live on every slider change.

Cumulative Peak Direct

Multiple Analysis Modes

Cumulative (seasonal totals), Peak (maximum irradiance), Direct/Diffuse split, Sun Hours (hours above threshold).

removing slivers

Dynamic Mesh Filtering

Automatically removes tiny faces (window slivers) that don't affect results. Min face size slider auto-adjusts for quality vs. performance.

Back-end process / wind analysis

From direction and geometry to multiple wind-reading modes.

The interaction changes direction, speed, density and obstacles. The analysis layer combines the represented geometry with height and exposure conditions, then applies the selected reading mode to the resulting flow field.

Geometry
+ wind inputs
Height
profile
Directional
ray fan
Occlusion,
wake + smoothing
Exposure / Cp /
comfort output
exposurepressure coefficientturbulence / pedestrian
05

Wind Analysis

LinkedIn solver project notes →
Wind .txt
GHPython / Grasshopper
Wind-analysis interfaceAn early-massing study with four readings: exposure, pressure coefficient, turbulence and pedestrian comfort. Directional runs can be accumulated through a wind rose for persistent shadows and hotspots; it is designed to inform options before later CFD validation.

Problem

Explore wind direction, speed and density around a building footprint.

Why this is computationally difficult

Geometry changes the path, density and amplification of the flow, while blocks create shadow and wake conditions.

How it works

The model updates streamlines and blocks from the direction handle, speed and density controls, then redraws the visible flow field.

Scope & Limitations

Designed for iterative exploration of wind behavior around the represented geometry. It is a visual analysis aid and should not be presented as a validated CFD result without supporting evidence.

Drag the red handle to rotate the wind . drag blocks to move them . double-click a block to remove
Wind analysis. Focus the red direction handle or a blocker and use arrow keys to adjust wind direction or blocker position.
direction blocks 0
Wind-analysis demonstration The video shows directional wind input, geometry and roughness controls, flow-field updates and mode-specific outputs for exposure, pressure and comfort readings.
z

Logarithmic Wind Profile

Maps height Z to wind speed multiplier based on terrain roughness (z₀). Higher surfaces experience greater wind amplification.

Wind Shadow & Wake

Exponential decay models wind shadow/wake effects. Blockers near the surface have more impact; distant obstacles fade naturally.

Cone Direction Rays

Casts 8-point radial fan around prevailing wind direction. Captures 3D flow disturbance, not just inline testing.

exposure Cp turb peds

Four Analysis Modes

Wind Exposure (raw factor 0-1), Pressure Coefficient (-1 to +1), Turbulence (% of mean), Pedestrian comfort (m/s at 1.5m).

Topology Smoothing

Vertex-based neighbourhood averaging denoise noisy face-by-face scores. Optional 2-pass smoothing for publication-ready output.

roof facade ground

Surface Classification

Labels each face as Roof, Floor, Facade, or Sloped. Normalizes height within geometry bounds for consistent exposure analysis.