Urban heat island simulation inside Rhino/Grasshopper
Simulation d'îlot de chaleur urbain dans Rhino/Grasshopper

Grasshopper adaptation of
ICEtool plugin for QGIS, which allows fast approximation of surfaces temperatures, to effectively iterate on urban materials choices and address urban heat island (UHI) mitigation.
Ground temperature in a city is largely a design decision. Asphalt, pale paving, lawn, water and tree shade behave very differently on the same summer afternoon. The tools that quantify this, however, usually live in GIS software, far from where massing, landscape and material choices are actually made.
ICEtool-gh closes that gap: it rebuilds the physics of ICEtool as two Grasshopper components. A designer tags surfaces with materials, runs a Ladybug sun study, points to a weather file, and gets a temperature heatmap of the site on the same canvas. Swap a car park for planted ground, add trees, change a paving colour, and the map updates. Built-in point deduplication keeps it fast: a 47,000-point site solves in about nine seconds.
Porting a scientific tool only matters if it stays trustworthy, so validation was part of the work, not an afterthought. On identical inputs the port reproduces the original plugin's temperatures to within 0.005 °C. On INSA Toulouse's own reference site (47,000+ analysis points, July 1), the full Grasshopper pipeline reproduces the QGIS plugin's hottest daily curve to within 0.009 °C. The remaining spread across the site comes from how each environment models shade, not from the thermal model. Along the way, nine bugs of an earlier server-based port were found and fixed.
Stack: Rhino 8, Grasshopper, Python 3 script components, NumPy, SciPy, Ladybug Tools, EPW.
Why it matters
- Design-stage, not post-hoc. Heat mapping runs where massing and material choices are made, so options can be compared while they are still cheap to change.
- Validated, not approximated. Checked against the original QGIS plugin, on identical inputs and through the full Grasshopper pipeline.
- Nothing to export, nothing to run. Open one Grasshopper file with Ladybug Tools installed; weather comes from a standard EPW file, the Python dependencies install themselves, and there is no server or GIS step.
- Faithful mode and improved mode, side by side. One component reproduces the original exactly. The other adds hourly wind-driven convection, sky temperature from the weather file's infrared, and full-year simulation.
- Open source, properly attributed. A GPL-3.0 derivative of Arthur Evrard's ICEtool (Egis / INSA Toulouse), with a citation file, extending an open urban-climate tool to the architecture community.
Run it
- Requires Rhino 8 and Ladybug Tools for Grasshopper; the first run needs internet to install the Python packages.
- Open
ee_icetool.gh, pick the example and the weather in the Value Lists, click the Data Dam once, and set the run toggle. - The INSA-Toulouse example scene is a download of the v2.0 release.
Source code, install and documentation:


Surface temperatures as a Ladybug spatial heatmap in Rhino.

The Grasshopper definition ee_icetool.gh.