☀️ UrbIrrad for solar radiation calculations with Radiance
Ever found yourself negotiating with Radiance command-line options, or exploring Honeybee, then wishing for a smaller workflow focused on solar radiation? UrbIrrad provides a Python and YAML workflow to turn geometry and weather data into irradiance on a sensor mesh.

Sunlight in cities and buildings
Developed at L’hypercube, UrbIrrad uses Radiance, through PyRadiance, to calculate shading, transmission through glazing and reflected contributions. The “Urb” in its name describes its origins, not a restriction to outdoor spaces: sensors can be placed in a street, courtyard, building, atrium or semi-open space.

A demonstration scene combining a building, glazing, ground and surrounding obstacles. The sensor mesh can cover both indoor and outdoor areas.
The tool can calculate separate components:
- Direct solar irradiance, including shading and glazing transmission.
- Sky-diffuse irradiance, including permitted diffuse reflections within the scene.
- Diffuse reflections of direct sunlight, as an optional component.
- Irradiance in six directions, particularly as inputs to comfort studies.
- Potential sunshine hours, using a geometric mode without clouds or weather irradiance.

The solar_direct field, in W/m², shows sunlight received on the sensor plane after projection, obstruction and any glazing transmission.
One configuration file and a command
Version 0.1.1 is available on PyPI. In a Python 3.12 or newer environment:
Download the example case and its data , describe surfaces, materials, sensors and dates in YAML, then run:
Time series are stored in HDF5, with an XDMF companion for ParaView. Potential sunshine mode produces a static cumulative field rather than a time series.
What about runtime
In our trials, the direct calculation is very fast and the diffuse calculation remains quite reasonable. Reflected direct is substantially more expensive on its first run, because it requires more sampling of reflected paths. Coefficient matrices are cached to speed up subsequent calculations when the scene and numerical settings remain unchanged. These observations are not runtime guarantees: geometry, sensor count, accuracy settings and hardware all matter.
UrbIrrad is under active development. Its scope is shortwave solar radiation: it calculates neither longwave thermal radiation nor complete mean radiant temperature.
Learn more
- Technical overview and matrix workflow .
- Installation on PyPI .
- Source code and examples on GitLab .
- Full documentation .
Test cases, user feedback and scientific nitpicking welcome!