Solar Radiation
Per-sensor direct, diffuse, and total solar irradiance in W/m² at one sun position.
Preview implementation — live Rhino verification pending. The engine, Rhino command, bridge, React panel, group assignment, automatic refresh loop, and transient heatmap are implemented. The remaining release gate is a live Rhino smoke test on representative horizontal and vertical geometry. There is no downloadable release build yet.
Radiation comes with Wrengler Pro. On Free, the panel and the WrenglerRadiation command show
an upgrade message instead of running.
Solar Radiation reports how much solar power reaches your geometry at a single instant. For each sensor it computes direct, diffuse, and total irradiance in W/m², and paints the total across your geometry as a colored sensor field.
Every number here is power at one sun position, never a total collected over a day, a season, or a year. Read it as a comparison between sensors and between design options — not as an energy budget. That qualifier travels with the numbers into every export.
What it Computes
From each sensor, the study casts one ray at the sun and a cosine-weighted set of rays over the sky hemisphere, keeping only the energy that arrives unobstructed.
| Component | Meaning |
|---|---|
| Direct | Beam irradiance from the sun — DNI · cos θ, zeroed when context occludes the sun ray or the sun is below the horizon. |
| Diffuse | Sky irradiance over the hemisphere the sensor can actually see. |
| Total | Direct + diffuse — the instantaneous solar load, in W/m². |
Sensor orientation is meant to be handled by excluding hemisphere samples that point below the horizon — those look at ground, not sky. The closed form is Liu–Jordan's sky-view factor (1 + cos β)/2: a roof should read DHI, a vertical facade DHI / 2.
Live verification still matters for tilted and vertical sensors. The horizon cull is present
in the CPU reference, CPU-BVH backend, and Metal shader, with tests asserting the DHI / 2 vertical
case. The remaining check is to run the rebuilt Mac/Metal path and the Rhino viewport in a real
session. Horizontal sensors are the simplest first smoke case.
The Sky Model
The sky is isotropic: the diffuse-horizontal irradiance you enter becomes one uniform sky radiance (L₀ = DHI / π), integrated over each sensor's unobstructed view. Fast, robust, and a faithful baseline for comparative work.
There is no clear-sky model and no weather file — sky radiance comes only from the DHI you type in. Anisotropic (Perez-style) skies are future work. Treat diffuse values as a relative baseline, never as a calibrated absolute.
Assumptions
Fixed by the v1 physics. They decide what a number means, so they travel inside every export — a #-prefixed header block in CSV, an assumptions object in JSON — rather than living only on this page.
| Assumption | Value |
|---|---|
| Sky model | isotropic |
| Ground reflection | not modelled |
| Ground albedo | 0 — the ground is black |
| Accumulation | instantaneous — never summed over a period |
| Units | W/m2 |
| Sun azimuth reference | deg from model +Y, cw — model space, not geographic north |
Each export also carries that run's own inputs: DNI, DHI, sun altitude, sun azimuth, and the hemisphere sample count. Two consequences worth stating plainly:
- No reflected component appears in the results. Ground reflection isn't modelled, so the term is left out rather than shipped as a column of zeros that reads like a measurement.
- A value that couldn't be computed is not zero. It serializes as
nulland displays as an em-dash — missing data and a fully shaded sensor are different facts.
Use Cases
- Facade studies — see where solar load concentrates, to inform shading, glazing ratios, and materials.
- PV siting — rank roof and facade areas by instantaneous total. A ranking at the one sun position you chose; sizing a real array is separate work for a tool that simulates a whole period.
- Energy-aware massing — compare options early, balancing solar gain against overheating risk.
How to Run
In the React panel, create or select a geometry group for Analysis surfaces, assign the surfaces where you want irradiance measured, optionally assign Context (shading) groups, and set the six inputs. Turn Irradiance on to run automatically: the same run path is used when you change an input, edit the assigned groups, or change Rhino geometry. Run/Refresh remains available as a manual retry. The panel sends the group names to Rhino; the host builds the sensor grid, runs the study, and paints a transient total-irradiance heatmap over the assigned surfaces. The surface table reports sensor count and total min/mean/max.
The default heatmap scale is the physical 0..(DNI + DHI) range. This keeps colors comparable as
the model changes; use the legend's run-range option when you want contrast within only the current
result.
The command-line path is also available during preview. Type WrenglerRadiation in the Rhino
command line and answer the prompts in order; each is pre-filled, so Enter accepts the shown value.
- Shading / obstacle geometry — the context that shades your sensors. Enter to skip for open sky.
- Sensor surface(s) — the surfaces the sensor grid is built on. At least one required.
- Sun position — altitude in degrees above the horizon, then azimuth in degrees from the model's +Y axis, clockwise. This is a model-space angle; the document north angle is deliberately not applied.
- Sky inputs — DNI and DHI, both in W/m².
- Grid spacing — in model units. Finer spacing means more sensors and a longer run.
The command reports the sensor count, the backend used, and min / mean / max total to the command line, and paints the total as a blue→red ramp. Direct and diffuse are computed per sensor and exported, but not separately displayed in the viewport today.
Radiation costs roughly 10× sunlight per sensor — one sun ray plus the full hemisphere sample budget. Start with a wide grid spacing and refine once the pattern looks right.
Related
- Geometry Grouping — reusable named scopes.
- Services overview — how every service shares one engine.