Download
Current Versions
- Package page: Rhino Packages
- Current version:
1.12.0.827(September 2, 2026)
Install Eddy3D from the Rhino Package Manager: run PackageManager in Rhino 8 and search for Eddy3D.
| Channel | Version | Date | Platform | Rhino | Downloads | Install | Notes |
|---|---|---|---|---|---|---|---|
| Stable release | 1.12.0.827 | September 2, 2026 | Windows / Mac | 8.27 | Install via Rhino Package Manager | Changelog | |
| Pre-release (beta) | 1.12.0-beta.827 | September 2, 2026 | Windows / Mac | 8.27 | Install via Rhino Package Manager | Tick Include pre-releases in the Package Manager |
All modules — Outdoor, Outdoor+, Indoor, MRT, and FluidX3D — now ship in the single Eddy3D package on Windows and macOS. Depending on your use case, you may need additional software (BlueCFD, Radiance), see documentation.
Release Notes
1.12.0.827 (Sep. 2, 2026)
Compatibility
Tested with Rhino 8.27 (RhinoCommon/Grasshopper 8.27.26019.16021). It might work with newer Rhino versions but they are untested. It does not work with Rhino 7 due to incompatibility issues introduced by McNeel (see below). If you need to downgrade or upgrade, please check the bottom of this page for specific Rhino download links.
Known Issues
Eddy3D-Dev Discussions - GitHub
Changelog
1.12.0.827 (September 2, 2026)
What's Changed
- perf(shadow): one sweep per study, a Result/Deconstruct split, and a mesh cache by @kastnerp in https://github.com/Eddy3D-Dev/Eddy3D/pull/817
- feat(setup): the setup window answers whether anything needs doing by @kastnerp in https://github.com/Eddy3D-Dev/Eddy3D/pull/818
- Indoor and outdoor validation: Zhang & Chen (2006) UFAD chamber, Jiang (2003) cross-ventilated cube by @kastnerp in https://github.com/Eddy3D-Dev/Eddy3D/pull/821
- Fix TestHeavyWarning going red on non-en-US dev boxes by @kastnerp in https://github.com/Eddy3D-Dev/Eddy3D/pull/823
- fix(gui): pin HeavyWarning count formatting to the invariant culture by @kastnerp in https://github.com/Eddy3D-Dev/Eddy3D/pull/822
- Add CHT (conjugate heat transfer) and HAM (heat-moisture) solvers by @kastnerp in https://github.com/Eddy3D-Dev/Eddy3D/pull/826
- fix(setup): tell Windows users to install a container runtime (#828) by @kastnerp in https://github.com/Eddy3D-Dev/Eddy3D/pull/829
- CHT: write residuals per region, and stop probe NaNs crashing the field viewers by @kastnerp in https://github.com/Eddy3D-Dev/Eddy3D/pull/830
- Add Vertical Sky Component and Daily Light Integral by @kastnerp in https://github.com/Eddy3D-Dev/Eddy3D/pull/831
- Water-pond (simpleWater) validation against Syafii/Robitu papers + the veg-less UMF solve path it unblocked by @kastnerp in https://github.com/Eddy3D-Dev/Eddy3D/pull/833
- feat(esinti): Cordyceps-inspired MCP bridge upgrades + panel-driven lifecycle hardening by @kastnerp in https://github.com/Eddy3D-Dev/Eddy3D/pull/824
- fix(paraview): move the Open toggle last, with a layout migration by @kastnerp in https://github.com/Eddy3D-Dev/Eddy3D/pull/834
- Document: Water Surface writes a UMF grassModel the solver never implemented by @kastnerp in https://github.com/Eddy3D-Dev/Eddy3D/pull/832
- Water-body (pond) evapotranspiration — case-only route by @kastnerp in https://github.com/Eddy3D-Dev/Eddy3D/pull/820
- Consolidate dead code, fix culture bugs, add process capture & tests by @kastnerp in https://github.com/Eddy3D-Dev/Eddy3D/pull/825
- CHT: steady-state solve mode, and the ISO 10211 A.3 ten-region fixture by @kastnerp in https://github.com/Eddy3D-Dev/Eddy3D/pull/836
- CI: run build and template-branch checks on pull requests only by @kastnerp in https://github.com/Eddy3D-Dev/Eddy3D/pull/839
- Truncate Viewshed's rendered view cones against the context by @kastnerp in https://github.com/Eddy3D-Dev/Eddy3D/pull/838
- fix(gui): dispose canvas-owned menus so Rhino stops aborting by @kastnerp in https://github.com/Eddy3D-Dev/Eddy3D/pull/841
- Add a WRF front end that drives Eddy3D's CFD from the mesoscale by @kastnerp in https://github.com/Eddy3D-Dev/Eddy3D/pull/840
- Flex Legend: Openness/Visibility metrics and the Blue → Yellow view ramp by @kastnerp in https://github.com/Eddy3D-Dev/Eddy3D/pull/842
- Publish a WRF + WPS container image and wire it into the setup window by @kastnerp in https://github.com/Eddy3D-Dev/Eddy3D/pull/843
- Merge Sun/Shadow/Daylight + Post/Comfort ribbon panels, fix exposure bugs by @kastnerp in https://github.com/Eddy3D-Dev/Eddy3D/pull/844
- feat(esinti): busy-vs-dead bridge status, mid-solve guard, port data modifiers by @kastnerp in https://github.com/Eddy3D-Dev/Eddy3D/pull/845
- feat(palm): PALM-4U plugin — ribbon tab 14, full loop container-proven by @kastnerp in https://github.com/Eddy3D-Dev/Eddy3D/pull/846
- Seasonal wind comfort + animated stream lines in ParaView by @kastnerp in https://github.com/Eddy3D-Dev/Eddy3D/pull/847
- feat(palm): results reload across sessions and cache across recomputes by @kastnerp in https://github.com/Eddy3D-Dev/Eddy3D/pull/848
- fix(palm): dropdown labels must not contain commas by @kastnerp in https://github.com/Eddy3D-Dev/Eddy3D/pull/849
- Pond validation follow-up: the two remaining solve unlocks, the nightly's test fixes, and publication figures by @kastnerp in https://github.com/Eddy3D-Dev/Eddy3D/pull/837
- feat(openfoam): user refinement regions and function objects in every workflow by @kastnerp in https://github.com/Eddy3D-Dev/Eddy3D/pull/850
- feat(palm): PALM Case writes the whole case and renders the domain in Rhino by @kastnerp in https://github.com/Eddy3D-Dev/Eddy3D/pull/851
- fix(outdoor): Cull Ground Mesh derives its ray height from the buildings, reports what it did by @kastnerp in https://github.com/Eddy3D-Dev/Eddy3D/pull/852
- build(wrf): keep naturalearth.bin.gz in the main assembly — MSBuild read ".bin" as a culture on Windows by @kastnerp in https://github.com/Eddy3D-Dev/Eddy3D/pull/853
- LBM Case → Run → Probe for both LBM engines, null-outside probes, FluidX3D launch window auto-close by @kastnerp in https://github.com/Eddy3D-Dev/Eddy3D/pull/854
Full Changelog: https://github.com/Eddy3D-Dev/Eddy3D/compare/v1.10.0.827...v1.12.0.827
1.12.0.827 (September 2, 2026)
Stable release of the 1.12 line. Everything in 1.12.0-beta.827 below, plus:
LBM (Lattice-Boltzmann wind) — LBM Case → LBM Run → Probe for both LBM engines: the case is built once by the new LBM Case component (the Settings object wired into it picks OpenLB or FluidX3D), LBM Run only runs it, and probes outside the domain return null instead of a bogus value (#854). Documents saved with the old twelve-input LBM Run migrate on load; a Remark says which setup wires must move to an LBM Case. FluidX3D: the Run strip shows cells · spacing · steps before a run, Memory 0 means "detected from this machine's GPU", Clear also wipes source-tree results, Grid Spacing fixes the lattice, and the launch window closes itself when the solve ends.
Case files — every file Eddy3D writes for OpenFOAM now carries the Eddy3D banner, list-shaped time tables included, and reads back clean.
Credits — Ilker Karadag joins the author list (CITATION.cff, plugin metadata).
Full Changelog: https://github.com/Eddy3D-Dev/Eddy3D/compare/v1.10.0.827...v1.12.0.827
1.12.0-beta.827 (September 2, 2026)
Pre-release. Tick Include pre-releases in the Rhino Package Manager to see it.
PALM-4U — PALM Case writes the whole case (static driver + _p3d namelists) and renders the domain in Rhino (#851). Cores lives on PALM Settings; left empty, the MPI rank count is picked automatically. PALM Run launches in a terminal (#849 and follow-ups).
Outdoor (wind CFD) — Pollutant dispersion: passive-scalar Pollutant Sources on the wind case (#807). One engine per study: the OpenFOAM engine (BlueCFD / WSL / Containerized) is chosen once, on Outdoor Case's new Engine input, and read from the study by Wind Run, Wind Scripts, Probe and Streamlines; documents saved with the old per-component Engine dropdowns migrate on load. snappyHexMesh custom refinement regions (#850); VizExport gets its own File Name input; STL Exporter's Mode is a dropdown. ParaView stream lines on by default, coloured by U and seeded from the building corridor.
Comfort · Weather · Setup — Annual PET (Simulation) on the UTCI pipeline. Download Weather shows the selected station in its banner. Install Engines rows re-probe after their install; the Water Surface image is tracked with real pull progress. The update prompt has a What's New button that opens this changelog.
Ribbon — Panels re-banded by workflow stage: Outdoor+ grouped by domain with a 01 | Pre band; Sun / CHT / WRF / PALM re-banded; Parse Case Logs and CheckMesh moved to Post's monitor row.
Full Changelog: https://github.com/Eddy3D-Dev/Eddy3D/compare/v1.11.0-beta.827...v1.12.0-beta.827
1.11.0-beta.827 (August 29, 2026)
Two components were folded into others and no longer exist under their old names: FluidX3D Run (use LBM Run, which now drives both LBM engines — pick a FluidX3D Run Settings to select the FluidX3D engine) and Wind Legend (use Flex Legend, which now also speaks Viewshed's Openness/Visibility metrics). Saved documents wired to either will show an unresolved component; everything else opens unchanged.
- WRF mesoscale front end — drive Eddy3D's CFD from a WRF/WPS run: WRF Map (Natural Earth base map, terrain probing), WRF Animate, WRF Probe and WRF Progress, one case-folder contract across all of them, plus a published WRF+WPS container image wired into Setup
- CHT (conjugate heat transfer) and HAM (heat-and-moisture) solvers — steady-state and transient conduction through building envelopes, pinned against the ISO 10211 A.3 ten-region benchmark and the HAMSTAD tutorials
- Viewshed and View Target — one merged BVH instead of two, parallelized ray casting, view cones rendered as real geometry and truncated against context; Flex Legend now speaks Viewshed's Openness/Visibility metrics on a fixed 0–1 ramp
- Ribbon reorganized again: Sun · Shadow · Daylight and Post · Comfort panels each merge into one
- UMF water surfaces — ponds as a case region, with evapotranspiration
- Esinti — busy-vs-dead bridge, a mid-solve guard, port data modifiers, and a new component defaults to the machine's last-used agent
- Validation: Zhang & Chen (2006) UFAD chamber and Jiang (2003) cross-ventilated cube (Indoor + Outdoor), plus COSMO pond studies against Syafii and Robitu/Fleuriot
- Radiance: Vertical Sky Component and Daily Light Integral
- Streamlines now trace while a solve is still running
- EPW-driven wind rose on the wind compass
- Setup window reports whether anything actually needs doing before you open it, installs blueCFD elevated, and tells Windows users when they need a container runtime
Full Changelog: https://github.com/Eddy3D-Dev/Eddy3D/compare/v1.10.0.827...v1.11.0-beta.827
1.10.0.827 (August 25, 2026)
No breaking changes — Grasshopper documents saved with 1.9.0.827 open unchanged.
The ribbon is reorganised: 19 panels become 13, one panel per workflow instead of one per stage. The five Outdoor · … panels collapse into a single 02 | Outdoor, and the two MRT · … panels into 06 | MRT. Saved documents are unaffected (Grasshopper finds components by GUID, not by panel), but where you click has moved.
- Esinti — a new assistant plugin on
00 | Setup. Opens a Codex, Claude Code or Antigravity session against a generated workspace, reads the live canvas, and inserts a confirmed template or STL connection - Transient (URANS) wind runs — pick
PIMPLEon Run Settings for a time-marching solve, with Duration / Time Step / Max Courant / Averaging Window controls; readUMean/pMeandownstream - Outdoor pollutant dispersion — passive-scalar sources on the wind case, with species selection
- Indoor mean age of air, and the CO₂/species case is now runnable, openable and clearable straight from the canvas
- Study Report — a CWE study report generator backed by a persisted study manifest (ASCE F5), with the report path autofilled from the study
- Facade Cp export into the EnergyPlus AirflowNetwork
- EN ISO 7730 PMV and PPD, pinned against the standard's published reference rows
- Probe a parallel case in its decomposition — no
reconstructParneeded to read points out of a running or unreconstructed solve - Scalar Field Viewer, beside the renamed Vector Field Viewer (formerly Wind Field Viewer — same component and GUID, so existing documents keep working)
- Setup panel now shows the engine diagnostics it already computed, detects the native OpenLB solver, and can build it locally (installing MSYS2 via winget when missing)
- Fixed: the indoor fan did nothing, the Heat Source wrote watts where it asked for K/s, emitter sources were ignored, and a source zone smaller than the background cell was silently dropped
- Fixed: Cp used the dynamic head where
pInfis the free-stream static pressure - Fixed: indoor and UMF cases could not be meshed on a comma-decimal locale
- Fixed: containers are isolated from Podman networking, which could abort a valid run before OpenFOAM started; the CUDA image now covers every GPU generation, not just Ada
- ~1.4x faster FluidX3D solves, plus batched wind comfort, a PET batch API and a tiled DDS transpose
Full Changelog: https://github.com/Eddy3D-Dev/Eddy3D/compare/v1.9.0.827...v1.10.0.827
1.9.0.827 (August 20, 2026)
No breaking changes — Grasshopper documents saved with 1.8.0.827 open unchanged.
- Surface runoff / Stormwater plugin — design storms, DEM rasterization with breaklines, and ponding/velocity/hazard maps on graded terrain
- OpenLB native (container-free) runtime — the GPU/CPU LBM wind engine now installs and runs directly on Windows, no Docker/Podman required; the container path remains available
- EPW-driven Sun · Shadow panel — Sun Hours, Shadow, and Solar Irradiation now sample sub-hourly straight from the weather file, plus daylight factor and annual sDA/ASE/UDI
- Future climate morphing — morph an EPW to a projected future climate scenario
- UTCI output carries the annual comfort field as one item (Deconstruct UTCI), and ML wind prediction now connects through to annual UTCI via the VAF component
- Wind CFD point probing under MPI — 96.6 s → 1.9 s on a 6k-point grid
- Inline dropdowns for wind comfort and VAF settings; Deconstruct Wind gains an inline legend
- Land-cover fetch no longer silently returns empty results from a region-limited Overpass mirror
Full Changelog: https://github.com/Eddy3D-Dev/Eddy3D/compare/v1.8.0.827...v1.9.0.827
1.8.0.827 (August 16, 2026)
No breaking changes — Grasshopper documents saved with 1.7.0.827 open unchanged.
- Trees as porous media in the LBM engine — crowns become HLBM porous cells driven by a physical Cd·LAD, so vegetation slows wind without blocking it
- Vegetation library — 30 tree types (5 archetypes + 25 urban species) carrying crown-average LAD and foliage Cd; one trees object now feeds both the OpenFOAM and LBM engines
- Inflow direction jitter and a perturbed-inflow UQ ensemble, with a per-point speed Spread output flagging wake regions where results are inflow-sensitive
- Native Apple silicon LBM solver — the container image is now multi-arch, ending emulation on M-series Macs; thread count is pinned to the container's real CPU allotment, with a warning when the VM is starved
- Davenport roughness dropdown on the ABL component — eight canonical z0 classes from open sea to city core
- Named dropdowns replacing raw numeric selectors across CO2 standards, facade zones, terrain categories, occupant activity, UTCI legend metric, and tree density
- MRT fix — View Factors and MRT Run now solve one scene regardless of upstream tree branching; previously they split into per-branch solves that never saw each other's geometry
- ParaView pedestrian layer follows the terrain instead of a flat plane
Full Changelog: https://github.com/Eddy3D-Dev/Eddy3D/compare/v1.7.0.827...v1.8.0.827
1.7.0.827 (August 13, 2026)
First stable release since 1.4.1.827, superseding the never-promoted 1.5.0/1.6.0 beta line.
- LBM/OpenLB container engine — GPU-accelerated wind solves via Docker/podman, with automatic CPU fallback
- Indoor species + buoyant thermal — CO2 as a transported species, breathing manikin, IAQ against 7 standards, and the two-node comfort models
- Staged MRT components with Embree occlusion (2.7–6× faster)
- ASCE CWE Prestandard checks
- Wind Predictor ML with CoreML acceleration on Apple silicon
- Wind & comfort visualization — Wind Legend, speed-coloured streamlines, and class-coloured comfort meshes with colourblind-safe palettes
Full Changelog: https://github.com/Eddy3D-Dev/Eddy3D/compare/v1.4.1.827...v1.7.0.827
1.6.0-beta.827 (August 7, 2026)
- Legend mode for actual UTCI/PET values by @kastnerp in https://github.com/Eddy3D-Dev/Eddy3D/pull/749
Full Changelog: https://github.com/Eddy3D-Dev/Eddy3D/compare/v1.5.0-beta.827...v1.6.0-beta.827
1.5.0-beta.827 (August 7, 2026)
- Urban radiance validation tests + SolarCal shortwave dMRT fix (discussion #91) by @kastnerp in https://github.com/Eddy3D-Dev/Eddy3D/pull/747
- New Settle Data component (Outdoor) by @kastnerp
Full Changelog: https://github.com/Eddy3D-Dev/Eddy3D/compare/v1.4.1.827...v1.5.0-beta.827
1.4.1.827 (August 5, 2026)
- Release 1.4.0.827 (stable) by @kastnerp in https://github.com/Eddy3D-Dev/Eddy3D/pull/742
- perf(mrt): build the Sun Hours BVH in parallel by @kastnerp in https://github.com/Eddy3D-Dev/Eddy3D/pull/743
- fix(mrt): Sun Hours stalls when Rhino's ThreadPool is busy by @kastnerp in https://github.com/Eddy3D-Dev/Eddy3D/pull/744
- fix(package): stop shipping Rhino's System.Resources.Extensions (Grasshopper fails to open) by @kastnerp in https://github.com/Eddy3D-Dev/Eddy3D/pull/745
Full Changelog: https://github.com/Eddy3D-Dev/Eddy3D/compare/v1.4.0.827...v1.4.1.827
1.4.0.827 (August 4, 2026)
First stable release since 1.1.0.827 — includes everything from the 1.2.0, 1.2.1 and 1.3.0 betas below.
MRT / Comfort
- Sun Hours: a new interactive direct-sun preview by shadow ray casting — annual studies in about a second, accelerated by a SIMD BVH. A preview tool; use the MRT/UTCI path for defensible numbers.
- Deconstruct Weather now outputs hourly Solar Elevation and Solar Azimuth, ready to wire into Sun Hours.
- MRT results become first-class Result objects with per-orientation solving, a Radiance quality preset (Draft to Reference) and sensor-chunk parallelism; fixes five silent bugs in the previous chain.
- The MRT run log narrates real steps with sizes and timings, and the run's progress bar tracks the Radiance stage instead of freezing.
- MRT projects without a name get a friendly auto-generated folder, shared with the wind case in the same document.
- A new dataset curator turns a solved MRT field into an ML-ready dataset.
- EnergyPlus surface-temperature runs move from 9.4.0 to 26.1.0.
- Fixed: the containerised Radiance chain failed before tracing anything (a shell syntax error).
Engines / Outdoor+
- Podman is now a drop-in alternative to Docker for every container engine.
- Simulation Mesh Settings are verifiable instead of silently inert.
- ParaView state files open across platforms (path-separator conversion).
1.3.0-beta.827 (July 28, 2026)
Beta channel. Tick Include pre-releases in the Rhino Package Manager to install.
- Every component now draws from the shared v4 icon set (106 glyphs; the last 12 components got theirs).
- The Docker availability probe no longer times out on a busy machine (3 s to 10 s), which had made healthy setups read as "no Docker".
1.2.1-beta.827 (July 25, 2026)
Beta channel. Tick Include pre-releases in the Rhino Package Manager to install.
Outdoor+ / urbanMicroclimateFoam
- Fixed a solver crash (SIGFPE) on mapped patches — the coupled boundary no longer selects the
patchToPatchnearest engine. - Extruded-region mapped patches now keep
isExtrudedRegionthroughchangeDictionary. - Stale result-time directories from an earlier run no longer poison the next solve; the cleanup now also covers the blueCFD meshing path.
- Building material selection no longer reaches the case as a raw dropdown index.
- Interactive run windows close on the shared countdown instead of waiting for a keypress.
- Docker and WSL now use the Eddy3D urbanMicroclimateFoam fork with the mapper fix, on a rebuilt multi-architecture image; blueCFD is pinned to the matching solver build.
Engines and robustness
- Selecting Docker while Docker Desktop is stopped now warns instead of failing later as a missing-file error.
- WSL interactive commands are escaped so Windows Terminal no longer splits them at semicolons.
- The ParaView component opens multi-region (Outdoor+) cases.
Updates and templates
- Update notifications follow your installed channel: beta users are offered newer betas, stable users are never offered a beta.
- Shipped templates are now gated against stale component parameter layouts, fixing canvases that raised errors such as
Input parameter index [5] too high for Component Probe.
Changes since v1.2.0-beta.827: compare on GitHub
1.2.0-beta.827 (July 24, 2026)
Beta channel. Superseded by 1.2.1-beta.827.
Changes since v1.1.0.827: compare on GitHub
1.1.0.827 (July 15, 2026)
- Release 1.0.7.827 (beta) by @kastnerp in https://github.com/Eddy3D-Dev/Eddy3D/pull/647
- Fix Docker --cpus cap starving parallel wind runs on one core by @kastnerp in https://github.com/Eddy3D-Dev/Eddy3D/pull/658
- Fix blueCFD run scripts failing at the auto-close timeout by @kastnerp in https://github.com/Eddy3D-Dev/Eddy3D/pull/659
- MRT perf, indoor engine fixes, WSL Server-2022 guard, arm64 Radiance image by @kastnerp in https://github.com/Eddy3D-Dev/Eddy3D/pull/660
- Scan #2 fixes: WSL drive letters, UMF MPI/CPU caps, MRT robustness, widget dedupe by @kastnerp in https://github.com/Eddy3D-Dev/Eddy3D/pull/661
- MRT Settings: high-fidelity defaults + Engine Timeout input by @kastnerp in https://github.com/Eddy3D-Dev/Eddy3D/pull/662
- Probing without Grasshopper: per-setup post-process scripts + missing-dict guard by @kastnerp in https://github.com/Eddy3D-Dev/Eddy3D/pull/663
- chore: remove orphaned FluidX3D icons by @kastnerp in https://github.com/Eddy3D-Dev/Eddy3D/pull/664
- Dial-staged nNonOrthogonalCorrectors: drop pressure passes once stable by @kastnerp in https://github.com/Eddy3D-Dev/Eddy3D/pull/665
- perf: bounded-pass nearest-neighbour selection in Interpolate UMag + CI regression tests by @kastnerp in https://github.com/Eddy3D-Dev/Eddy3D/pull/667
- Plateau auto-stop: 1000-iteration floor, 300 window, deeper-baseline metric by @kastnerp in https://github.com/Eddy3D-Dev/Eddy3D/pull/668
- Silence vtkPolyhedron non-manifold warning wall in generated ParaView scripts by @kastnerp in https://github.com/Eddy3D-Dev/Eddy3D/pull/669
- ParaView component: right-click version selector with Auto default by @kastnerp in https://github.com/Eddy3D-Dev/Eddy3D/pull/670
- refactor: dedupe macOS Docker paths, Util dead-code sweep, shared solve/subdomain helpers by @kastnerp in https://github.com/Eddy3D-Dev/Eddy3D/pull/671
- Fix veg-stage log filenames (BlueCFD serial) + terrain WSL hardcoded distro by @kastnerp in https://github.com/Eddy3D-Dev/Eddy3D/pull/672
- Mesh-aware CPU counts: 50k cells/core + pre-mesh estimator + domain-model docs by @kastnerp in https://github.com/Eddy3D-Dev/Eddy3D/pull/674
Full Changelog: https://github.com/Eddy3D-Dev/Eddy3D/compare/v1.0.9.827...v1.1.0.827
1.0.9.827 (July 14, 2026)
- Add CI-runnable PET regression test guarding the Syst() hot path by @kastnerp in https://github.com/Eddy3D-Dev/Eddy3D/pull/654
- OutdoorCase: overhaul the viewport domain preview by @kastnerp in https://github.com/Eddy3D-Dev/Eddy3D/pull/655
- Merge PET.Tests and UTCI tests into Comfort.Tests by @kastnerp in https://github.com/Eddy3D-Dev/Eddy3D/pull/656
- OutdoorCase preview: tree visibility, speed-scaled inflow columns, thicker refinement cage by @kastnerp in https://github.com/Eddy3D-Dev/Eddy3D/pull/657
Full Changelog: https://github.com/Eddy3D-Dev/Eddy3D/compare/v1.0.8.827...v1.0.9.827
1.0.8.827 (July 13, 2026)
- 1.0.4.827 by @kastnerp in https://github.com/Eddy3D-Dev/Eddy3D/pull/620
- CI: auto-create the Eddy3D-Templates version branch on release/pre-release by @kastnerp in https://github.com/Eddy3D-Dev/Eddy3D/pull/621
- ⚡ Bolt: cache preview DisplayMaterials in Check Geometry (fewer per-frame allocations) by @kastnerp in https://github.com/Eddy3D-Dev/Eddy3D/pull/622
- test: pin DisplayMaterial caching in Check Geometry preview (PR #622) by @kastnerp in https://github.com/Eddy3D-Dev/Eddy3D/pull/623
- ⚡ Bolt: RTree-index nearest-sample coloring in Wind Field Viewer by @kastnerp in https://github.com/Eddy3D-Dev/Eddy3D/pull/624
- test: pin Wind Field Viewer nearest-sample heatmap coloring (PR #624) by @kastnerp in https://github.com/Eddy3D-Dev/Eddy3D/pull/625
- TemplateSync.Cli: parse library ids from source; warn on template drift before release by @kastnerp in https://github.com/Eddy3D-Dev/Eddy3D/pull/626
- Retarget OutdoorPlus to plain net8.0 by @kastnerp in https://github.com/Eddy3D-Dev/Eddy3D/pull/627
- test: pin CreateMesh face-selection overload behavior by @kastnerp in https://github.com/Eddy3D-Dev/Eddy3D/pull/635
- ⚡ Bolt: resolve GH_Structure face branches once in CreateMesh by @kastnerp in https://github.com/Eddy3D-Dev/Eddy3D/pull/634
- Vegetation Properties: show only kc / l / rsMin by default; advanced coefficients behind right-click (#600) by @kastnerp in https://github.com/Eddy3D-Dev/Eddy3D/pull/630
- Probe: select the result time to probe — latest (default), a specific time, or all (#124) by @kastnerp in https://github.com/Eddy3D-Dev/Eddy3D/pull/631
- Finish native age-of-air: limitMag guard, probe/ParaView field wiring (#217, #211) by @kastnerp in https://github.com/Eddy3D-Dev/Eddy3D/pull/632
- Auto-stop the solver when residuals plateau (#598) by @kastnerp in https://github.com/Eddy3D-Dev/Eddy3D/pull/629
- Comfort Hours: seasonal/period binning and %-hours-in-comfort-band (#185) by @kastnerp in https://github.com/Eddy3D-Dev/Eddy3D/pull/633
- Warn when Outdoor Case gets a direction-less Boundary Conditions value (discussion #86) by @kastnerp in https://github.com/Eddy3D-Dev/Eddy3D/pull/637
- Warn when blueCFD-Core is installed in a path with spaces by @kastnerp in https://github.com/Eddy3D-Dev/Eddy3D/pull/639
- ⚡ Bolt: bulk-append combined buildings mesh in Check Geometry by @kastnerp in https://github.com/Eddy3D-Dev/Eddy3D/pull/638
- ⚡ Bolt: bulk-marshal mesh in RhinoMeshToSTLMesh by @kastnerp in https://github.com/Eddy3D-Dev/Eddy3D/pull/636
- CI tests, one-click release cut, RELEASE_TOKEN wiring, session-start hook by @kastnerp in https://github.com/Eddy3D-Dev/Eddy3D/pull/640
- Track Outdoor and Indoor usage in Umami, not just Outdoor+ by @kastnerp in https://github.com/Eddy3D-Dev/Eddy3D/pull/641
- ⚡ Bolt: inline sample selection in ComfortBinning (drop yield iterator) by @kastnerp in https://github.com/Eddy3D-Dev/Eddy3D/pull/642
- Add oracle-based regression guard for ComfortBinning selection (post #642) by @kastnerp in https://github.com/Eddy3D-Dev/Eddy3D/pull/643
- Repo hygiene: remove stale AGENT_SUMMARY.md + weekly artifact cleanup by @kastnerp in https://github.com/Eddy3D-Dev/Eddy3D/pull/645
- CI: consolidate release workflows (github + yak pairs) by @kastnerp in https://github.com/Eddy3D-Dev/Eddy3D/pull/646
- Probe: move Run to the last input, after Time by @kastnerp in https://github.com/Eddy3D-Dev/Eddy3D/pull/648
- ABL z0 rewire (#628), engine warning at selection time, mac auto-close fix by @kastnerp in https://github.com/Eddy3D-Dev/Eddy3D/pull/649
- Install Engine: report every engine's status, not just the selected one by @kastnerp in https://github.com/Eddy3D-Dev/Eddy3D/pull/650
- Install Engine: include Radiance/EnergyPlus/FluidX3D in the status report by @kastnerp in https://github.com/Eddy3D-Dev/Eddy3D/pull/651
Full Changelog: https://github.com/Eddy3D-Dev/Eddy3D/compare/v1.0.4.827...v1.0.8.827
1.0.7-beta.827 (July 13, 2026)
Pre-release — install by ticking Include pre-releases in the Rhino Package Manager.
-
Added:
- Anonymous usage analytics now cover all three modules (Outdoor, Outdoor+, Indoor) — see the analytics disclosure for what is and isn't collected.
-
Improved:
- Check Geometry preview performance (cached display materials, bulk mesh marshalling).
- Internal: tests now run in CI on every change; one-click channel-switched release pipeline.
Changes since v1.0.6-beta.827: compare on GitHub
1.0.6-beta.827 (July 12, 2026)
Pre-release — install by ticking Include pre-releases in the Rhino Package Manager.
-
Added:
- blueCFD install-path check: if blueCFD-Core 2024 is installed in a folder with spaces in the name (e.g.
C:\Program Files\...), Eddy3D now warns everywhere the engine is used — the Install Engines component flags it directly in its callout (BlueCFD ⚠ spaces in path), in its status log, and on the Run components. Spaces break the OpenFOAM toolchain, so the UMF solver could never be built; previously this failed silently with "UMF Solver: Not Found". Install to a path likeC:\blueCFD-Core\2024instead.
- blueCFD install-path check: if blueCFD-Core 2024 is installed in a folder with spaces in the name (e.g.
-
Improved:
- Check Geometry preview: display materials are cached per status color and mesh buffers are bulk-marshalled — smoother canvas on large models.
Changes since v1.0.5-beta.827: compare on GitHub
1.0.4.827 (July 7, 2026)
- Fixed:
- Outdoor / WSL: After a simulation on a machine without the Windows symbolic-link privilege (no admin rights / Developer Mode), the mesh link
constant/polyMeshwas unreadable from Windows — Explorer showed "The file cannot be accessed by the system" and ParaView reported the case "contains no meshes". Direction cases now provision the mesh as an NTFS directory junction (works without any privilege), and the Open In ParaView component repairs existing broken cases automatically. - Headless-safe BlueCFD environment setup and distro-aware WSL engine installation (Install Engines no longer assumes a hardcoded WSL distribution).
- BlueCFD/UMF build environment on newer Windows 11 builds.
- Outdoor / WSL: After a simulation on a machine without the Windows symbolic-link privilege (no admin rights / Developer Mode), the mesh link
- Improved:
- Faster terrain vertex projection (batched into a single interop call).
- Cached wind-comfort threshold tables to cut per-probe allocations, plus string/allocation optimizations across UTCI/PET, thermal comfort, and WSL command generation.
- Progress dialogs: tooltips, word wrap, interactive hand cursor, and larger clickable areas for toggles and dropdowns.
Distributed via Yak: https://yak.rhino3d.com/packages/Eddy3D Changes since v1.0.2.827: compare on GitHub
1.0.2.827 (July 4, 2026)
First unified stable release of Eddy3D.
The previously separate plugins — wind (Outdoor), microclimate (Outdoor+ / urbanMicroclimateFoam), Indoor, MRT (Radiance/UTCI), and FluidX3D — are merged into a single Eddy3D package, available cross-platform on Windows and macOS (Rhino 8.27).
Install: via the Rhino Package Manager — run PackageManager in Rhino and search for Eddy3D. The standalone UMCF package has been retired.
-
Improved:
- Show both OpenFOAM 12 and UMF install/reinstall toggles simultaneously in WSL mode.
- Fetch and display accurate publish dates in the Yak version update prompt dialog.
- Clean up custom Label UI intercept hacks to restore native GH component messages.
-
Fixed:
- WSL OpenFOAM 12 repository URL (HTTPS to HTTP downgrade issue).
- WSL bash grouping bug that falsely reported success on failed OpenFOAM installs.
- UI logic bug in OpenFOAM 12 installation detection.
- Generated Docker/shell scripts (e.g.
run_docker.sh) shipped with Windows (CRLF) line endings, causingbad interpreter: /bin/bash^Mon macOS. Scripts are now written with LF line endings. - The Select Template component now loads examples from the correct
Eddy3D-Templatesrepository.
Distributed via Yak: https://yak.rhino3d.com/packages/Eddy3D Changes since v0.7.1-beta.827: compare on GitHub
0.7.0-beta.827 (March 24, 2026)
-
Added:
- Template Sync CLI tooling for synchronizing templates.
- Async loading feedback while component templates are downloading.
-
Improved:
- Simulation progress dialogs with elapsed time, numeric percentages, copy-log support, keyboard shortcuts, confirmations, accessibility updates, and better theme support.
- Performance across Sky View Factor, NVAnalysis, OpenFOAM probe/log parsing, Radiance parsing and file writing, wind processing, CSV generation, and UTCI/PET calculations.
- Hover feedback for Grasshopper component buttons and the Live Residuals empty state.
-
Fixed:
- Command injection in the
Probecomponent. - Cylindrical domain handling when geometry is not located at
Z=0. - General bug fixes, cleanup, and internal robustness updates.
- Tested:
- Added test coverage for
JsonHelper,Deg2Rad, and UTCI legacy regression baselines.
- Command injection in the
Changes since v0.6.2.821: compare on GitHub
0.6.2.821 (February 11, 2026)
- Fixed:
- Docker logs
- General fixes
0.6.1.821 (February 10, 2026)
-
Added:
- Cross-platform Docker execution support for OpenFOAM workflows.
- A Live Residuals component and icon for improved simulation monitoring.
- Installer/build automation updates, including a PowerShell-based installer build script.
-
Improved:
- Path and working-directory handling across Windows and macOS.
- OpenFOAM run command generation and case portability behavior.
- Template, run settings, and simulation component robustness.
-
Fixed:
- ParaView pipeline loading behavior on macOS.
- Installer version propagation and build metadata consistency.
- Multiple edge cases in wind/radiation execution paths and related tests.
Changes since v0.5.8.815: compare on GitHub
0.5.8.815 (February 4, 2026)
-
Added:
- GNU GPL v3 license.
- EPW downloader for streamlined weather file handling.
- OpenFOAM log parsing and status reporting utilities.
-
Improved:
- Centralized UI strings using
GH_Stringsfor consistency and easier localization. - Updated simulation component robustness and input handling.
- Centralized UI strings using
0.5.7.815 (January 29, 2026)
-
Improved:
- Renamed "Templates" component to "Select Template" for better clarity.
- Enabled left-click interaction for the "Select Template" component to trigger the selection menu directly.
- Updated the component button text to "Select Template".
-
Fixed:
- Resolved build issues and dependency conflicts in
EddyLib. - Optimized the plugin's loading process by making
.ghlinkdynamic and removing redundant AppData copies.
- Resolved build issues and dependency conflicts in
0.5.6.815 (January 27, 2026)
-
Added:
- New utility to delete
processor*folders from cases to save disk space.
- New utility to delete
-
Improved:
- Replaced
pausewithtimeoutin batch files for a smoother user experience. - Refined
9_ML_basicand9_ML_FormFluxtemplates. - General code cleanup and removal of unused utilities.
- Replaced
-
Fixed:
- Resolved a bug in the
Wind Factorscomponent where the "No interpolation" option incorrectly reverted to wind direction 0. - Fixed a "Solution exception: Input parameter index [-1] too low" error in the
Wind Simulationcomponent. Dataset Curatorcomponent now correctly handles complex geometry without requiring bounding box simplification.
- Resolved a bug in the
0.5.5.815 (January 23, 2026)
- Improved:
- Dataset Curator component can handle complex urban geometries more accurate and quick, now.
0.5.4.815 (January 15, 2026)
- Improved:
- Some of the batch files are renamed for better clarity.
0.5.3.815 (January 15, 2026)
-
Added:
- Ability to change number of cores for both meshing and simulation without grasshopper dependency over update_cores.bat file.
- Ability to run the simulation with all available cores without grasshopper dependency over use_all_cores.bat file.
- Ability to run the cases in any directory then they have created for the first time. There is no hardcoded paths, anymore.
-
Improved:
- Several improvements including better handling of batch files, and more straightforward machine learning workflow.
- All the batch files are being stored in the case folder for more clear case folder organization.
- The template component and the probe component is improved.
- The 9_ML_Basic template is redesigned.
0.5.1.815 (January 14, 2026)
-
Added:
- Ability to specify custom installation paths for simulation engines (Radiance, EnergyPlus, BlueCFD).
-
Fixed:
- Fixed Log Parser button behavior and added explicit 'Run' toggle.
- Resolved Radiance pathing issues for more robust installation detection.
- Fixed various OpenFOAM simulation crashes and boundary condition errors.
- Restored functionality for multi-region simulations including vegetation (LAD).
0.5.0.815 (January 12, 2026)
-
Added:
- New indoor test cases and examples; Install Engines icon.
-
Improved:
- Templates updated; Outdoor Comfort tests and Indoor setup restored.
- Consistent naming and general refactoring.
-
Fixed:
- Installer now uses user profile paths; fixed path formatting in TwoPhaseDDS.
0.4.17.815 (December 27, 2025)
-
Added:
- A new visualiser interface at Eddy3D Visualizer
-
Improved:
- Better output handling for more reliable exports and processing for DatasetCurator component.
- Introduces a 'Run' boolean parameter to BrepGridPoints component to control execution and sets output to idle when not running. Updates DatasetCuratorCMP to check bounding boxes using only XY coordinates, improving handling of stacked geometries.
0.4.16.815 (December 19, 2025)
-
Added:
- DatasetReaderCMP component to read processed CSV datasets into Grasshopper
- Supports all spatial features and simulated wind speed
- New resources, icons, and Python post-processing scripts
- Mesh settings updated to support nCellsBetweenLevels
- Project + resource files updated to include new components and assets
-
Improved:
- DatasetCuratorCMP now supports multiple wind directions
- Added CSV / batch / script generation workflows
- Improved output handling for more reliable exports and processing
0.4.15.14 (December 13, 2025)
-
Added:
- New template files added.
-
Improved:
- Cylindrical computational domain is enhanced.
0.4.15.13 (November 9, 2025)
-
Added:
- DatasetCurator component creates datasets ready to use by Fourier Neural Operator models. Please check the 3_SimpleWindAnalysisCylDomain_ML template file to quick start.
-
Improved:
- Most of the template files renewed.
0.4.15.12 (November 6, 2025)
-
Added:
- Brep to Grid Points component for fast generation of probe points from building Breps (has spacing option to better define the distances between probe points).
- _AccBuildingMax input on Mesh Settings component to control the maximum target cell size over/around buildings for local mesh refinement.
-
Improved:
- 3_SimpleWindAnalysis template wired to use Brep2points for sensors and passes _buildingsMax to meshing by @karadagi.
0.4.15.11 (October 19, 2025)
- Added:
- Additional inputs for finer control of cylindrical domain by @karadagi.
0.4.15.10 (October 4, 2025)
- Improved:
- Stability of cylindrical domain by @karadagi.
0.4.15.8 (September 14, 2025)
0.4.15.7 (September 12, 2025)
- Fixed:
- CellSize component in wrong tab
- IndoorDomain not respecting CPUs input
0.4.15.6 (August 18, 2025)
- Refactored and cleaned up code for function object handling in the indoor domain, including removal of obsolete and commented-out code.
- Updated scalar transport configuration generation in ControlDict to use a new helper method.
- Standardized solver settings for AoA and Covid19 in FvSolutionDict.
- Fixed property naming in ViralEmitter.
- Updated parameter descriptions in CO2Emitter_Component and ViralEmitter_Component.
- Updated Grasshopper template metadata and viewport settings.
- Fixed:
0.4.15.5 (August 13, 2025)
- Refactor cell size component and improve Weibull comfort logic
- Refactored the Cell Size Grasshopper component for clarity, improved input validation, and updated parameter descriptions.
- Enhanced the wind comfort Weibull metric logic to handle edge cases, filter invalid data, and robustly select comfort thresholds.
- Updated Eddy version to 0.4.15.5, increased CPUs in test settings, and made minor template and Grasshopper document adjustments.
- Fixed:
0.4.15.3 (Mar 27, 2025)
- Fixed bug in:
3_SimpleWindAnalysis.ghxTemplate. Thank you@YanivHatiel
0.4.15.2 (Mar 10, 2025)
- Fixed:
5_PressureOnBuildingFacade.ghxTemplate
0.4.15.1 (Jan 28, 2025)
- Fixed:
- Indoor probing issue
0.4.15.0 (Jan 21, 2025)
- Fixed:
- In Rhino 8.9 McNeel introduced a breaking change, see the discussion on curve extension methods. If you upgraded to Rhino 8.9 already, below are links to downgrade to various versions Rhino 8.8:
- Download Rhino 8.8.24170.13001
- Download Rhino 8.8.24163.12481
0.4.8.0 (Mar 4, 2024)
0.4.2.1 (Jan 21, 2024)
- Recompiled for Rhino 7, due to Rhino 8 introducing breaking changes in the UI, see below.
0.4.2.0 (Dec 23, 2023)
- Added:
- custom boundary conditions per individual wind direction.
- Added alpha/experimental Rhino 8 compatibility. R8 introduces breaking changes, see issue #9 on GitHub.
0.4.1.4 (Nov 23, 2023)
- Fixed issue with "covid19" function object for the indoor module.
0.4.1.1 (Apr 29, 2022)
- New installer to fix BlueCFD 2017 issue with Indoor module.
0.4.1.0 (Apr 17, 2022)
- Updated both outdoor and indoor module to BlueCFD 2020.
- Updated MRT calculation, still experimental.
0.4.0.10 (Apr 6, 2022)
- Update to BlueCFD 2020.
- Indoor Module
- Updated MRT calculation.
- Improved numerical robustness by Tobias Holzmann.
0.3.8.0 (Feb 17, 2021)
- Age of air in simulation domain can be evaluated.
- Simulation of trees modeled as porous media is supported.
- MRT component was updated with the TwoPhase method, see the publication on predicting space usage by multi-objective assessment.
- General stability has been improved.
- Culling of probing points outside of domain is now robust.
Known issues
- Probing on decomposed cases doesn't work for now (need to reconstruct first).
- The latest release of Eddy3D (v0.3.8.0) currently only works with Rhino 6. McNeel made changes to the SDK in Rhino 7 which renders the box-shaped simulation domain incompatible with v0.3.8.0. Fixed on beta branch.
0.3.6.3 (June 28, 2020)
- Fix for problem with cp probing.
- Added switch for potentialFoam initialization and mesh renumbering.
- Added Lawson, Davenport, and NEN8100 pedestrian comfort indices.
0.3.5 (November 27, 2019)
- Fix for change in latest Rhino release.
- Probing component automatically refreshes after probing has finished.
0.3.0 (July 16, 2019)
- Added:
- cellPoint interpolation instead of cellPointFace
- Fix: WindFactors, MRT, UTCI running
- Fix: Many bug fixes
- Paraview/Residual component now select from executable of choice
- Template engine implemented
0.2.3 (April 11, 2019)
- Fix: turbulentEpsilon was 0 if the ABL BC was in use
0.2.2 (April 7, 2019)
- Fix: Both Box and Cylinder are converging properly when terrain is in use
- Fix: Alwas load the residuals for the first wind direction instead of wind direction "0" if the selection is empty
- Fix: locationInMesh works with Terrain for BoxDomain
- Change: fvSchemes according to SimScale
- Change: New mesh settings
- Change: Slip BC for all symmetry patches instead of symmetry
- Fix: Domain has correct size if TerrainMesh is being used
- Fix: Perim .stls were written in snappyHexMeshDict if TerrainMesh was connected
- Added:
- Option to adapt dimensions of box domains
- Fix: Erroneous case decomposition with BlueCFD
- Change: Renamed output of settings components
- div(U) batch files
0.2.1 (March 25, 2019)
- New component: ParaView can now be opened from the canvas
- Fixes:
- The ParaView are now called as their respective wind directions which helps to distinguish them if more than one if opened in ParaView
0.1.0 (March 21, 2019)
- First release
Previous Rhino Versions
Use the Rhino version selection page.