Personal tools / Environmental analysis / Geometry

Geometry +
Environmental Tools.

Rhino and Grasshopper tools for geometry, daylight, solar radiation and wind analysis. The page includes interactive demos and Rhino workflow recordings.

0
Analysis engines
0
Refinement passes
0
Quality levels

Independent tool / 02

Room Performance Lab

Work with one room model, evaluate daylight and annual thermal performance, then compare design candidates and their trade-offs.

Tool overview

Diagrams explain the analysis steps; recordings show the tools in Rhino.

Five tools

Tools for geometry and early-stage environmental analysis.

Each demo shows selected inputs, calculations and results. The diagrams summarise the methods; recordings show selected Rhino workflows.

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
02

Circle Coverage Solver

LinkedIn solver project notes →
Circle placement solver.txt · v5.0
GHPython / Grasshopper
Circle placement interfaceSet a site boundary, exclusion zones and a target radius to compare circle placement, density and gaps. Useful for planar site studies such as street-light or fire-stair layouts; highly concave or non-planar boundaries need manual review.
Drag a green vertex or boundary edge to reshape the site. 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
Analysis workflow / circle coverage

From boundary input to refined circle placement.

Reshape the boundary to update candidate circles, remove invalid placements and identify remaining gaps.

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.

Analysis workflow / 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
03

Daylight + UDI Simulator

LinkedIn solver project notes →
Daylight.txt · v1.4
GHPython / Grasshopper
Daylight + UDI interfaceA GHPython daylight tool for Grasshopper. It reuses cached blocker samples for visibility checks, trading later-stage precision for faster feedback as geometry changes.
Drag the sun or scrub the hour; drag a window or its edge; drag a room corner to resize the room; 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.

Analysis workflow / 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
04

Solar Radiation (GH)

LinkedIn solver project notes →
Radiation_GH.txt
GHPython / Grasshopper
Solar radiation interfaceCompares cumulative radiation, peak irradiance, direct-to-diffuse fraction and sun hours across meshes or Breps. Mesh quality settings control the balance between resolution and solve time; validate results before making performance decisions.
Click a box to select it; drag its X, Y or Z arrow to move it along a plane or lift it; drag the white puck to slide it freely; drag the sun to change its position.
Solar radiation component. Focus the sun or a selected massing box and use arrow keys to adjust the analysis setup.
sun altitude 0°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.
Radiation + Wallacei optimization The solver becomes a fitness function inside Grasshopper: facade fin spacing, depth and orientation are tested against cumulative radiation and fin area, exposing a Pareto front instead of hiding the design trade-off.
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.

Analysis workflow / radiation standalone

From selected Rhino geometry to face-level radiation values.

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
01

Radiation Analysis Standalone

LinkedIn solver project notes →
radiation_standalone.py
Standalone Rhino Python
Standalone Rhino command interfaceA native Rhino command for reading facade exposure across a date and time range. It filters enclosed faces before analysis; use it for early comparisons, then validate performance with a dedicated simulation workflow.
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.
Rhino-native playback workflow A second recording shows the analysis moving through time inside the Rhino panel, making a full day or period readable as a continuous design condition rather than a single isolated sun position.
Process record / 05 pages

Standalone solver / from geometry to filtered result

A page-by-page record of the command’s reasoning: prepare the model, remove misleading geometry, then inspect the result.

Base geometry selected for standalone solar radiation analysis
01
01 / 04

Base geometry

The command begins with the selected Rhino model. This is the source condition before mesh preparation or filtering.

InputSelected surfaces and blockers
Auto-playing · click the page to pause

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.

Analysis workflow / wind analysis

From wind direction and geometry to four analysis 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. Runs across wind directions reveal persistent patterns; use CFD or an equivalent validated workflow for final assessment.
Drag the red handle to change wind direction; drag blocks to move them; double-click a block to remove it.
Wind analysis. Focus the red direction handle or a blocker and use arrow keys to adjust wind direction or blocker position.
direction 0°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.