Eddy3D Component list
00 Setup
Main Components
Opens the Eddy3D setup window: what each simulation capability needs, what is missing on this machine, and how to install it. Replaces the Install Engines components.
Open the native Eddy3D assistant in Codex, Claude, or Antigravity. Esinti discusses simulation goals, explains workflow tradeoffs, and can apply confirmed component, wiring, geometry, or template changes to this Grasshopper canvas.
Load example Grasshopper definitions for common workflows. Templates include microclimate simulations, outdoor comfort studies, and CFD analysis setups. Version: 1.17.0.827
01 Pre
Main Components
Pick an EPW weather file from a bundled catalog of 60,868 climate files — every TMYx station on climate.onebuilding.org plus the EnergyPlus store (IWEC, TMY3, CWEC, SWERA, …) — with your own folders and Morph Weather results listed alongside them. Click the Station widget and choose Browse library… for a searchable table with a map, or type a name, WMO id or direct URL. The catalog is searched offline; only the chosen file is downloaded, once, into the weather cache.
Engine settings for Morph Weather: climate products, spatial interpolation, uncertainty case and solar methods. Every value left empty stays on the Future Weather Generator's own default.
Morph a present-day EPW into future-climate EPWs with the Future Weather Generator (future-weather-generator.adai.pt), then feed the result to any Eddy3D workflow. Needs Java 17+ and the generator's .jar, which Eddy3D does not ship: download the distribution you need (CMIP6 Global, CORDEX-CMIP5 Europe, …) into ~/Eddy3D/FWG. The tool is licensed CC BY-NC-SA 4.0 — noncommercial use, attribution required.
Deconstruct a Weather object into hourly time series values. OutdoorPlus
Visualize monthly dry-bulb temperature and relative humidity from Eddy3D Weather as two aligned min/mean/max charts.
Convert specific humidity (w) and temperature (T) to relative humidity (%). OutdoorPlus
Read an EPW file and create a Weather object for the simulation. OutdoorPlus
Fetch land-cover polygons around a location from OpenStreetMap (open data, Overpass API) and classify each into an aerodynamic roughness length via the Davenport-Wieringa terrain classification — plus the terrain elevation around the site (AWS Terrain Tiles, open data). Outputs ready-made ground roughness zones and a terrain mesh for the wind case.
Combine a multi-part building mesh into a single watertight, CFD-ready solid via the bundled Python mesh service (trimesh/manifold3d/pymeshfix). The server auto-starts locally on the first run (uv-managed Python environment; first start installs it, 1-2 minutes) and is reused afterwards.
Visualize a wind direction on a compass circle. Direction is meteorological degrees (0=N, 90=E, 180=S, 270=W); outputs the flow vector and the 16-point cardinal name.
Cluster annual wind conditions into a budget of representative directions using k-means over hourly wind vectors (speed x direction): frequent, strong conditions attract the budget, and each cluster reports an observed direction/speed pair plus its frequency. Without wired speeds, clusters directions alone (unit vectors). Method: Kastner & Dogan (2022), Building and Environment 212:108639, doi:10.1016/j.buildenv.2021.108639; Kastner & Dogan (2019), Building Simulation 2019, Rome 621-628, doi:10.26868/25222708.2019.210458.
Define an analysis period (from/to day of year, start/end hour of day) and output the hour-of-year indices it covers, for filtering annual results.
Interactively select a month, day, and hour for annual analysis. Click the controls on the component to change the date and time.
Convert a start date/time and optional end date/time into hour-of-year values (1–8760) for indexing annual hourly data.
Translate a Ladybug analysis period to hours of the year.
Export geometry to STL format for OpenFOAM or other CFD tools. Supports meshes and Breps (auto-meshed); binary or ASCII, single or multiple files.
A boolean toggle that is always FALSE when a file is opened. Useful for preventing automatic execution of heavy work. When Run is connected to several component inputs, they run one Grasshopper solution at a time in canvas order. Double-click to toggle.
Hold the last output while the left mouse button is pressed, then publish the newest value when the button is released. Useful between an MD Slider and an expensive component.
02 Outdoor
Main Components
Define atmospheric boundary layer inflow conditions for Eddy3D.
Define inflow boundary conditions from a manually entered vertical profile (z/zR, U/UR, k/UR^2) instead of the parametric ABL log-law. Writes fixedProfile inlet conditions for U, k and epsilon. epsilon is derived from the profile as epsilon(z) = Cmu^0.5 * k(z) * d(U)/dz.
Create a uniform (constant velocity) inflow boundary condition for Eddy3D.
Compute the snappyHexMesh refinement level needed to reach a target cell size (each level halves the cell size).
Define a cylindrical simulation domain for Eddy3D. One cylindrical mesh serves all wind directions; the cylinder side faces switch between inlet and outlet per direction. The auto radius targets the 3% frontal-blockage limit of ASCE/SEI CWE Prestandard AC 6-8b, which the case component verifies. Model surrounding buildings within ~240 m of the study area (ASCE 49 proximity guidance) before trusting results near the context edge. Method: Kastner & Dogan (2020), Journal of Building Performance Simulation 13(1):59-68, doi:10.1080/19401493.2019.1692906; Kastner & Dogan (2018), eSim 2018 (IBPSA-Canada), Montréal, https://www.researchgate.net/publication/325023244_Streamlining_meshing_methodologies_for_annual_urban_CFD_simulations.
Configure mesh refinement, layers, and grading for Eddy3D.
Define a custom snappyHexMesh refinement region (a box, solid or surface) — refines the cells inside/near the geometry to the chosen level. Wire Extras into a case component so the region is written every time the case is written; or wire a written Case in and press Apply to edit the dictionaries in place (which a later re-write undoes).
Generate centered surface samples on the actual faces of Brep, surface, or mesh geometry.
Assign a multi-face ground plate to the wind tunnel: each face gets its own aerodynamic roughness length z0 and becomes its own ground patch (nutkAtmRoughWallFunction). Feed into the wind case component's Ground Roughness input.
Define a pollutant emission source for the wind study: a closed volume (stack tip, traffic corridor box, exhaust vent) releasing a named species at a mass rate. Wire into the Eddy3D Case component's Sources input; the species is transported as a passive scalar with turbulent diffusivity (Sct) on every direction case, and the concentration field (kg/m3) is read back by probing the species name.
Represents a tree as a porous zone for wind blocking (Darcy-Forchheimer). Feed into the wind case component. Method: Kastner & Dogan (2022), Building and Environment 212:108639, doi:10.1016/j.buildenv.2021.108639.
Define a custom OpenFOAM function object the solver runs at runtime — fieldAverage, yPlus, wallShearStress, forces, surfaceFieldValue, a coded FO, etc. Wire Extras into a case component so it is written every time the case is written; or wire a written Case in and press Apply to edit controlDict in place (which a later re-write undoes).
Create, write, and manage an Eddy3D outdoor wind simulation case. Method: Kastner & Dogan (2022), Building and Environment 212:108639, doi:10.1016/j.buildenv.2021.108639; Kastner & Dogan (2020), Journal of Building Performance Simulation 13(1):59-68, doi:10.1080/19401493.2019.1692906.
Configure solver run controls for Eddy3D.
Mesh and run an OpenFOAM case on the selected engine (wind / indoor / UMF).
Writes meshing and simulation scripts (.bat / .sh) into a Scripts/ folder under the wind study, so the workflow can be launched manually outside Grasshopper. The scripts match what the Run component executes. Write the study to disk first (Wind Case 'Write').
03 Outdoor+
Main Components
Create an air region for the UMF case. OutdoorPlus
Define simulation domain extents and refinement padding. OutdoorPlus
Select a building material from the list and override its properties.
Configure mesh refinement for building regions.
Build a solid building region for the UMF case: from the façade surface meshes, two material wall layers (outer + inner) are extruded inward to model heat and moisture transport through the building envelope.
Creates a STL mesh from geometry using the gmsh application. Useful to create healthy mesh topologies for building elements.
Generate a multi-resolution terrain mesh from input geometry with a solid base. OutdoorPlus
Create a soil-backed grass surface material for the urbanMicroclimateFoam terrain heat, radiation, and evapotranspiration model. OutdoorPlus
Configure mesh settings for terrain and underground regions. OutdoorPlus
Create a terrain region with materials and depth settings. OutdoorPlus
Select a terrain surface material from the list and override its properties. OutdoorPlus
Coupled evaporating water surface for urbanMicroclimateFoam. The water geometry becomes a named air patch that exchanges sensible heat and moisture with the air; water motion and a moving free surface are not solved. Requires an UMF build that includes the simpleWater model.
Configure mesh refinement for vegetation regions. OutdoorPlus
Define vegetation property coefficients for canopy modeling. Shows the recommended coefficients (Leaf Length, rsMin, kc) by default; right-click to show all coefficients (Cd, C, nEvapSides). OutdoorPlus
Create a vegetation region from tree crown solids. Pick a Tree Type preset for a typical leaf area density and foliage drag coefficient, or choose Custom and wire your own LAD. The output drives BOTH the Outdoor+ (OpenFOAM/UMF) case and the LBM Run component's Vegetation input, with consistent canopy drag. Library sources — LAD (crown-average, m²/m³): Sjöman et al. (2021) Arboricult. Urban For. 47(6), plant area index of 64 urban species; Klingberg et al. (2017) Urban For. Urban Green. 26, Gothenburg leaf area mapping; ENVI-met Albero plant database conventions; Zhang et al. (2018) Atmosphere 9(5):198 and Beijing For. Univ. J. (2017) ENVI-met validations for subtropical evergreens. Cd (per frontal leaf area, 0.1–0.3): Katul et al. (2004) Boundary-Layer Meteorol. 113; Mayhead (1973) Agric. Meteorol. 12, conifer wind-tunnel drag; Gillies et al. (2002) J. Geophys. Res. 107(D24), drag vs. wind speed and crown streamlining. Note: NIST TN 2039 (2019) reports Cd ≈ 2.8 against total projected area per volume — a different normalization; do not mix it with the Cd·LAD convention used here. OutdoorPlus
Prepare and run a UMF case. OutdoorPlus
Create, read, and manage an Outdoor+ (UMF microclimate) case. Validated in: Rahimi et al. (2025), Building and Environment 285:113637, doi:10.1016/j.buildenv.2025.113637; Rahimi et al. (2024), IBPC 2024, https://www.eddy3d.com/publications/. OutdoorPlus
Configure snappyHexMesh settings for the simulation. OutdoorPlus
Configure simulation control settings for UMF. OutdoorPlus
Define simulation timing and optional weather-driven time series. OutdoorPlus
Configure the view-factor discretization for radiation modeling. OutdoorPlus
Tests for buildings and trees for Eddy3D-OutdoorPlus simulation.
Deconstruct a MetaFOAM Region instance.
04 Indoor
Main Components
External wind pressure on a facade per EN 1991-1-4, and the opening flow it drives.
Build an isothermal indoor ventilation case (room + inlets + outlets + sinks) for OpenFOAM 12. Method: De Simone, Kastner & Dogan (2021), Building Simulation 2021, Bruges, doi:10.26868/25222708.2021.30632.
CO2 generation rate of one occupant by age, activity and sex (Persily & de Jonge 2017).
Air exchange through an open window (Maas 1995) and the steady-state CO2 it supports.
Ventilation inlet — defines where air enters the room (diffuser, window, door). Direction is computed perpendicular to the surface, pointing into the room.
Ventilation outlet — defines where air exhausts from the room (return grille, open window).
Set an indoor wall temperature (°C). Wire a room surface to give just that surface its own temperature patch; leave it empty for a single case-wide wall temperature.
A breathing occupant (LOD-0 body with a separate mouth patch) for the Indoor Species Case.
A CO2 passive-scalar source box for an indoor ventilation case.
A volumetric heat source box for an indoor ventilation case (transported temperature scalar).
A Darcy-Forchheimer momentum sink (filter/screen) box for an indoor ventilation case.
A fan/jet momentum source (mean velocity) box for an indoor ventilation case.
An airborne-pathogen passive-scalar source box for an indoor ventilation case. Method: De Simone, Kastner & Dogan (2021), Building Simulation 2021, Bruges, doi:10.26868/25222708.2021.30632.
Build a CO2 species case (OpenFOAM 12 multicomponentFluid) with a breathing manikin.
Grade indoor CO2 (ppm) against EN 16798-1 or another CO2-based IAQ standard.
Sleep-adapted Gagge two-node model (Yan et al. 2022) for bedrooms.
Gagge two-node thermal comfort: SET, ET, PMV, TSENS and DISC.
05 Sun Shadow Daylight
Main Components
Vegetation that attenuates the sun instead of blocking it, with an optional leaf-on/leaf-off season. Feed the Canopy input of Sun Hours or Solar Irradiation.
Analysis points with outward normals and per-cell areas over surfaces, at a spacing suited to a building rather than a district.
Daily sun arcs, analemmas and sun positions as curves and points — north-aware, drawn from the same solar geometry the sun studies use.
Sun positions for a period at a chosen time step (6-minute and finer), from site and clock rather than from an EPW's hourly rows.
Per-point sun exposure (and, for an explicit HOY selection, the per-instant trees) from a Shadow Result — without putting a whole year of lit flags on the canvas.
Lit or shaded at each analysis point for one or more sun instants — the shadow's position, not accumulated sun hours.
Direct sun hours and shadow by ray casting — an interactive preview, not a Radiance simulation.
Daily Light Integral per point in mol/m²/day — the photosynthetically active photons (400-700 nm) landing on each point per day, averaged over the analysed period. Shares Solar Irradiation's geometry: beam plus isotropic sky plus a ground term, no interreflection. The ground albedo here is a PAR albedo and is much lower than the broadband one. Vegetation is deliberately not accepted — see the Canopy note in the docs.
Per-point daily light integral — period mean and worst month — and, for an explicit Month selection, the per-month tree, from a Daily Light Integral Result.
Cumulative incident solar energy per point in kWh/m² — beam plus isotropic sky plus ground reflection. An interactive preview, not a Radiance simulation.
Climate-based annual daylight metrics from Radiance annual illuminance matrices: sDA spatial daylight autonomy — fraction of the grid daylit for at least half the occupied hours (LM-83 default sDA300/50%) ASE annual sunlight exposure — fraction of the grid seeing direct sun for more than 250 occupied hours (a glare proxy; LOWER is better) UDI useful daylight illuminance — fraction of occupied hours inside a useful band ASE needs the DIRECT matrix. Without it, ASE is reported as zero and the Report says so — the total matrix would count bright overcast sky as glare.
Daylight factor: interior illuminance under the CIE standard overcast sky as a percentage of the simultaneous unobstructed exterior horizontal illuminance. Feed it the illuminance at each sensor and the exterior illuminance the sky was built for. The ratio is invariant to sky brightness, so the absolute value only has to MATCH the one used for the render — it does not have to be any particular number.
Vertical Sky Component per point, in percent: the diffuse illuminance a vertical plane receives directly from a CIE standard overcast sky, over the illuminance an unobstructed horizontal plane would receive under the same sky. Geometry only — no weather, no orientation, no time of year. An unobstructed vertical plane reads 39.6%; BRE BR 209 reads 27% as the guideline for conventional window design.
Fraction of a target's surface each observer point can see — which seats see the park, which units see the water. The target is sampled by area; rays are blocked by the context and by the target's own body.
Visual openness by ray casting: the unobstructed fraction of a view cone around each point's normal. A design-orientation tool for seats, windows and routes — how open does it FEEL here — not a daylight metric.
Area-weighted min/mean/median/max over a sun result, plus the area and fraction reaching a threshold.
EN 17037 sunlight exposure and BRE amenity overshadowing / APSH against a sun-hours result. Design aid — thresholds are editable and not certified.
06 MRT
Main Components
Configuration for the MRT + UTCI analysis.
Predefined multi-layer construction (assembly) for the SurfaceTemp admittance solve.
Thermal + optical material properties for a building/ground MRT surface.
Canopy material properties for an MRT tree surface.
Leaf/canopy material properties for an MRT vegetation surface.
Point-specific statistics (and optionally the raw hours) from a SurfaceTemp Result, without putting the full 8760-hour year on the canvas.
Mean radiant temperature at each sensor, hour by hour. MRT = shortwave + longwave. SHORTWAVE — what the sensor absorbs from sun and sky. Either a direct raycast (default, pure C#) or the Radiance DDS chain (MRT Settings -> Radiance Reflections), which adds diffuse sky and interreflection off the surroundings. Radiance returns annual total and direct illuminance per sensor, which are mapped onto the probes' shortwave series. LONGWAVE — what the sensor exchanges with everything around it, weighted by view factors traced from each sensor against the scene and the sky dome. SURFACE TEMPERATURES come from ENERGYPLUS, not Radiance — Radiance is a light transport engine and computes no temperatures at all. With MRT Settings -> EnergyPlus Surfaces on, Eddy3D builds an epJSON from the polygons that actually matter to the sensors (those inside the cumulative view-factor percentile and above the small-face cutoff; everything else is demoted to a shading surface), runs EnergyPlus against the EPW, and maps the surface-specific temperatures out of the ESO back onto the geometry. With it off, every surrounding surface is simply assumed to sit at air temperature. SKY TEMPERATURE is always Clark-Allen from dew point, dry bulb, opaque cloud cover and relative humidity — it needs no engine. Method: Dogan, Kastner & Mermelstein (2021), Building and Environment 196:107762, doi:10.1016/j.buildenv.2021.107762; Kastner & Dogan (2022), Building and Environment 212:108639, doi:10.1016/j.buildenv.2021.108639.
Create comfort sensor probes from meshes (one probe per face center, facing the face normal) and/or points (facing corresponding Normals), mixed freely on one input.
Tags Breps or Meshes as a radiation surface for an MRT analysis. Breps are meshed at Patch Size; Meshes are used face-for-face as given.
Computes the Sky View Factor (SVF) for each input point using the Tregenza 145-patch sky subdivision. Casts 145 rays toward the upper hemisphere and returns the fraction of unobstructed sky directions (0 = fully obstructed, 1 = fully open sky).
Solves outdoor surface temperature per analysis point via the frequency-domain admittance method (no thermal mesh, no warm-up). Feeds a future MRT component alongside Sky Exposure. Method: Beckett, O., Owens, S. and Acred, A. (2026). Applying Frequency Domain Methods for Calculating Outdoor Surface Temperatures. Proceedings of the 12th National Conference of IBPSA-USA, Minneapolis, MN. https://publications.ibpsa.org/conference/paper/?id=simbuild2026_1312
Probe-specific statistics (and optionally the raw hours) from an MRT Result, without putting the full 8760-hour year on the canvas.
Solves MRT on a prepared VF Model: shortwave (direct raycast, or Radiance DDS when MRT Settings enables reflections) + view-factor longwave. Wire the VF Model straight from MRT View Factors for ambient/FFT surface temperatures, or through SurfaceTemp (EnergyPlus) for E+ temperatures. Result feeds Deconstruct MRT and UTCI. Method: Dogan, Kastner & Mermelstein (2021), Building and Environment 196:107762, doi:10.1016/j.buildenv.2021.107762; Kastner & Dogan (2022), Building and Environment 212:108639, doi:10.1016/j.buildenv.2021.108639.
Assembles tagged surfaces + sensors into a radiation model, builds the sky dome, and solves probe-to-polygon view factors. Feed the VF Model to SurfaceTemp (EnergyPlus) and/or MRT Solve. The sweep is the expensive part of an MRT run — solving it once here lets the downstream stages re-run without repeating it. Method: Dogan, Kastner & Mermelstein (2021), Building and Environment 196:107762, doi:10.1016/j.buildenv.2021.107762.
Surface temperatures via EnergyPlus, mapped onto a solved VF Model. The counterpart of the FFT SurfaceTemp component for the staged MRT pipeline: it consumes MRT View Factors' output (the E+ surface selection depends on the view factors) and its output feeds MRT Solve. Skipping this stage leaves surfaces at ambient temperature unless they carry FFT temperatures from MRT Surface. Method: Dogan, Kastner & Mermelstein (2021), Building and Environment 196:107762, doi:10.1016/j.buildenv.2021.107762.
Colors the model's surfaces by view factor: the mean each face receives from all sensors, or one chosen sensor's view factors to every face. Values output is per face, in mesh face order, for custom gradients.
Equal-angle fisheye of the hemisphere above one sensor, as a colored mesh — a flat disk or a 3D dome (Display dropdown): sky, building, ground and vegetation per direction, plus the sensor's cosine-weighted sky view fraction.
07 Post
Main Components
Inspect any Eddy3D case: Outdoor wind study, Indoor case, or OutdoorPlus (UMF) case.
Reference an existing wind case folder (mesh/ + case_NNN) for post-processing.
Sample fields at points on a solved case, post-hoc. With Run it writes a probes function and runs postProcess on the requested Time (latest by default), then reads the results; without Run it reads existing results. Works on a wind case (one sub-result per direction) or a loaded case.
Extract solver-side streamlines from a solved case with OpenFOAM's streamlines function object (particles tracked through the actual mesh — accurate in refined near-building cells, unlike tracing a probed field). With Run it writes the function-object dict and runs postProcess on the requested Time, then reads the tracks; without Run it reads existing tracks.
Export probed facade pressure coefficients into the EnergyPlus AirflowNetwork as an .idf snippet: WindPressureCoefficientArray (the simulated directions), per-node WindPressureCoefficientValues and ExternalNode objects, ready to paste/merge into a Ladybug Tools (or hand-built) AirflowNetwork model. Enable Pressure Coefficient in Run Settings, probe the Cp field at facade points, and wire the probe tree here. Method: Dogan & Kastner (2021), Building Simulation 14(4):1189-1200, doi:10.1007/s12273-020-0727-x; Dogan & Kastner (2018), IBPC 2018, Syracuse NY 1139-1144, doi:10.14305/ibpc.2018.ms-5.05.
Probe-specific statistics, per-hour values, a colored probe mesh and an inline legend from an annual wind field or Annual VAF object, without putting the full 8760-hour year on the canvas.
Compute volumetric flow rates (m³/s) across a mesh, treating its vertices as velocity probes. Per face: average vertex velocities × face area × cos(angle to face normal).
Compute Velocity Amplification Factors (VAF) and annual wind speed at probes from CFD or ML wind-prediction results and EPW weather data. VAF (the term used in the wind-engineering literature for what Eddy3D historically called "wind factors") is the local wind speed normalized by the reference speed. Method: Kastner & Dogan (2022), Building and Environment 212:108639, doi:10.1016/j.buildenv.2021.108639; Kastner & Dogan (2019), Building Simulation 2019, Rome 621-628, doi:10.26868/25222708.2019.210458.
Create a visualization mesh from polyMesh point/face data. OutdoorPlus
Cut building footprints out of a ground mesh to make an analysis ground mesh. The ground is quad-remeshed to Target Face Count (or taken as wired when that is 0), then every vertex under a building is removed together with the faces that use it.
Create a metric-aware color legend and an optional colored mesh from point/value samples. Supports wind, solar, sun-hours, temperature and other environmental data.
Read cell connectivity and cell zones for a region. OutdoorPlus
Visualize a probed scalar field — CO2, temperature, age of air, Cp, pressure — as a colored point cloud, a heatmap mesh, or a translucent volumetric cloud. Feed the Probe component's points and one value per point. For velocity, use the Vector Field Viewer.
Visualize a probed vector field: colored velocity arrows, a point cloud, a heatmap mesh, streamlines, or volumetric smoke (pick via Display Mode). Feed the Probe component's points + velocity vectors (Field = U), or any points + vectors. For a field without direction — CO2, temperature, age of air, Cp — use the Scalar Field Viewer.
Export an OBJ mesh from a polyMesh description. OutdoorPlus
Write probed wind results as a CSV for the Eddy3D Visualizer (https://viz.eddy3d.com/): columns X, Y, Z_relative, U_at_z, mag_U, U_x, U_y, U_z — one row per probe point. Upload the file at https://viz.eddy3d.com/ to view the 3D field, coloured by velocity magnitude, with the vector components powering the viewer's particle-flow overlay.
Open a wind case's direction cases in ParaView. All directions are added to the ParaView pipeline browser; click Apply on the ones you want to load (nothing is loaded automatically).
Run the OpenFOAM checkMesh command for a case region. OutdoorPlus
Visualize faces that fail tet decomposition during topoSet. OutdoorPlus
Draws a wind case's residual convergence directly on the Grasshopper canvas, with lightweight timed updates. Wire the case and toggle 'Live' to monitor a running simulation without an external plotter window. When a warm-up ramp is enabled the solver restarts mid-run and writes a separate residual file per phase; all phases are stitched into one continuous curve so you see the full history (warm-up + main), not just the latest phase.
Monitor blockMesh, surfaceFeatures, and snappyHexMesh progress from the mesh case logs.
Parses log files in a case folder and reports any FOAM errors. OutdoorPlus
Open the web-based residual plotter for a wind case's convergence history (one trace per direction).
Read and visualize sets produced by checkMesh. OutdoorPlus
Generate a Markdown report documenting the wind case to the QA discipline of the ASCE/SEI CWE Prestandard (within its steady-RANS pedestrian-comfort allowance): solver and OpenFOAM version, domain and blockage, boundary conditions, numerics and the 2nd-order verdict, mesh quality, convergence, y+, Reynolds, an optional comfort section, limitations, and a compliance summary table.
08 Post Comfort
Main Components
Compute annual probe-specific PET (Höppe) from simulation outputs: MRT and wind-speed data trees, plus air temperature, relative humidity and the person. Solves in the background; cancel from the right-click menu. For a single point, use "Thermal Comfort".
Compute a thermal comfort metric at a point: UTCI (Ta, RH, wind, MRT), PET (adds the personal inputs), or NOAA Heat Index (Ta, RH only). Pick the metric from the dropdown — the inputs adapt. Wire hourly lists (e.g. EPW series) to compute annual values.
Compute annual probe-specific UTCI from simulation outputs: MRT and wind-speed data trees, plus air temperature and relative humidity. For a weather-only calculator, use "UTCI (Weather)". Method: Kastner & Dogan (2022), Building and Environment 212:108639, doi:10.1016/j.buildenv.2021.108639; Kastner & Dogan (2019), Building Simulation 2019, Rome 621-628, doi:10.26868/25222708.2019.210458.
Probe-specific statistics and comfort hours/% from a UTCI or PET (Simulation) Result, without putting the full 8760-hour year on the canvas. Data only — wire the Result (or these outputs) into the Thermal Comfort Legend to draw a map.
Classifies pedestrian wind comfort per point from an annual hourly wind-speed series (the Wind Speed output of the Velocity Amplification Factors (VAF) component) against a comfort criterion (Lawson, Davenport, NEN8100). Returns the comfort category, class letter, and activity description for each point.
Bin an hourly point-specific series (e.g. UTCI) into a comfort range or the UTCI thermal-stress categories, per analysis period, and report hours/percent in each band. Feed it a point-specific DataTree (e.g. the UTCI component's output) and, optionally, one Analysis Period per branch (see the Analysis Period / Analysis Period To Hours components); an unwired period covers the whole series as one implicit Annual period.
Color UTCI, PET or NOAA Heat Index temperatures by their thermal-stress categories, or a comfort share by its own bands, and create a matching legend.
09 Stormwater
Main Components
Builds a design-storm hyetograph from an IDF (Intensity-Duration-Frequency) curve, with an optional climate allowance. Feed it to Stormwater Run. Give it EITHER the three coefficients of an i = a/(t+b)^c fit, OR a published depth-duration table (the form NOAA Atlas 14, KOSTRA and FEH actually distribute). The alternating-block and Chicago patterns reproduce the IDF depth at every sub-duration, which is what makes the result a design event rather than a shape.
Fetches land-cover polygons around a lat/lon from OpenStreetMap (open data, no key) and classifies each into a Curve Number and an overland Manning's n. This is the same Overpass query the Land Cover Roughness component makes, read for runoff instead of for wind — so wiring both on one site costs one fetch, not two. Unmapped tags are skipped rather than guessed at.
Tags an area of the site with how rough it is and how much rain it sheds. Manning's n here is the OVERLAND FLOW value, several times the channel value for the same material — at the millimetre depths of sheet flow the surface texture is the whole channel, and using a channel roughness makes runoff arrive far too fast. A Curve Number (1–100) models losses that grow through a storm as the ground wets up; leave it at 0 to use the flat runoff coefficient instead.
Turns a stormwater result into meshes and numbers. This is the ONLY component that materialises the field — a run holds millions of values and emitting them all as a tree would freeze the canvas, so ask here for the field and the time you want.
Rasterises the graded terrain into the DEM the solver runs on. Buildings become no-flow WALLS rather than raised ground: raising them fabricates a ridge at the footprint edge that sheds water in whatever direction the rasterised edge happens to face, and lets water pond on roofs. Breaklines are how a 1 m grid stays usable. A kerb, a swale invert or a threshold is sub-cell at 1 m and every one of them controls where the water goes — sampling the terrain at cell centres averages them away. Burning them along the cell path keeps the control without paying for a fine raster over the whole site.
Routes a design storm over the graded terrain and reports ponding depth, flow velocity and flood hazard. Two modes. FAST is terrain analytics only — slope, flow direction, contributing area and the capacity of every depression — which recomputes between grading edits and answers most of a grading review. FULL adds a shallow-water solve for the depths and velocities a design storm actually produces. SURFACE ROUTING ONLY: no pipe network, no soakaways, no evapotranspiration. Use it for design-storm and cloudburst checks, not for hydraulic sizing.
Solver controls for Stormwater Run. The defaults suit a 1–5 m urban raster; leave this unconnected unless a run misbehaves.
One row per puddle: where it is, how much water, how deep, when it peaked and how long it took to drain — against the capacity of the hollow it sits in, so an overflowing depression is visible as such.
Traces where the runoff goes, as curves over the graded surface. From a full run these are the solved velocity paths; from a fast run they are steepest-descent paths down the depression-filled terrain.
A legend for a stormwater mesh: swatches, labels and a title, placed on a plane.
10 LBM
Main Components
Solver controls for the FluidX3D GPU engine (memory, simulated time, export interval, an interactive real-time window, and an optional fixed lattice spacing). Memory 0 = detected from this machine's GPU.
Build a lattice-Boltzmann wind case from the ABL, the geometry and a settings object, and write it to disk. Wire 'LBM Run Settings' for OpenLB or 'FluidX3D Run Settings' for FluidX3D (nothing = OpenLB). Feed the Case output to LBM Run, then to Probe, LBM Field or FluidX3D Live View — the same Case → Run → Probe chain as the OpenFOAM wind study.
Launch a lattice-Boltzmann case from the LBM Case component (OpenLB in a container or natively, or FluidX3D on the GPU — whichever the case was built with). Writes the case first if it has not been written, then opens the solver in a terminal window. Read results with Probe (points), LBM Field (the probe layer) or FluidX3D Live View.
Solver controls for the container-based LBM wind engine (grid spacing, warmup and averaging windows, probe layer, GPU, container runtime).
Watch a FluidX3D wind solve live in the viewport: colors an analysis mesh with the velocity magnitude of the newest exported frame while the GPU solver runs, updating as each frame lands. Also shows the final field of a completed run. Wire either the Run component's Case or Folder output into Case, and supply the mesh to read the wind on (e.g. a pedestrian-level plane).
Read the time-averaged pedestrian wind field from an LBM case directory. Outputs world-frame points and velocity vectors — plug both into the Vector Field Viewer.
11 ML
Main Components
Download an ONNX wind-prediction model from HuggingFace for the Wind Predictor component. Yel 2.0 is public; Esen 1.0 and Poyraz 1.0 need a HuggingFace token. All are 8-channel Wind Predictor models. (Yel 1.0 is a different architecture — the GAN image model the hosted Wind Predictor (Cloud) component runs via its API — and cannot be loaded here.) Models cache in ~/Eddy3D/Models/ and are reused on subsequent runs (a model already downloaded to the old ~/SUS_LAB/ folder is moved over, not re-fetched). Method: Kastner et al. (2026), SSRN preprint 6401886, doi:10.2139/ssrn.6401886.
Run ONNX wind-field prediction end-to-end. Computes SDF, building height, Zrelative, U/Uref, direction features from geometry, assembles the 8-channel input tensor, runs ONNX inference, and outputs predicted wind speeds. Supports legacy 1ch (U), 2ch (U + k) and new 4ch (U + k + Uroof + kroof) models. Method: Kastner et al. (2026), SSRN preprint 6401886, doi:10.2139/ssrn.6401886.
Predict a pedestrian wind-speed field from buildings without running CFD, using the hosted Eddy3D model (Yel 1.0, a 512x512 image GAN). Rasterizes the buildings and the analysis plane into the model's input image, sends it to the API, and returns the predicted wind speeds plus a colored result mesh. Runs on Eddy3D's server: needs internet, no GPU and no model download, and the free server may need a minute to wake up. For a local GPU run over arbitrary points and multiple wind directions, use Wind Predictor with a model from ML Model instead. Method: Kastner & Dogan (2023), Building and Environment 242:110384, doi:10.1016/j.buildenv.2023.110384.
Calculate Pedestrian Wind Comfort using predicted wind fields from the ONNX model. Method: Kastner et al. (2026), SSRN preprint 6401886, doi:10.2139/ssrn.6401886.
Compute and export wind dataset features from analysis points and building geometry.
Read processed CSV datasets back into Grasshopper. Supports mag_U and all spatial features.
Resample direction-specific wind-magnitude fields onto a new point grid (nearest-neighbour average, with direction-specific rotation). Prepares grids for GAN applications.
Export the solved MRT field as a machine-learning dataset: one row per sensor per hour with spatial features, hourly climate drivers and the MRT/UTCI targets.
12 CHT
Main Components
A closed air cavity: solved as buoyant air (natural convection), coupled to the solids around it.
Boundary condition on one face of the analysis box: fixed surface temperature, convective film (h + air temperature), or adiabatic. Unassigned faces are adiabatic.
Solid material for CHT heat transfer analysis. Catalog values (ISO 10456 / Incropera) seed the properties; wire a number to override one.
A solid region of the CHT assembly: closed Brep/Mesh + material. The union of all solids and cavities must fill a rectangular box (the analysis domain).
Build a conjugate heat transfer case from solids, air cavities and boundaries. Wire the Case output into the Run component (Containerized engine). Method: Kastner & Dogan (2020), SimAUD 2020 405-412, https://www.researchgate.net/publication/346039320_Solving_Thermal_Bridging_Problems_for_Architectural_Applications_with_OpenFOAM.
Air conditions on one face of a HAM wall. One value per input is a constant; a list is a stepped schedule (one entry per step, hourly by default).
Porous material for a HAM wall: a hamFoam material model plus density, specific heat and conductivity. The five HAMSTAD benchmark models arrive with their published properties; the rest supply curves only, so wire rho, c and lambda1.
Layered build-up for a HAM case, OUTSIDE layer first. Materials and thicknesses are read in parallel, so their counts must match.
Build a heat-and-moisture case for a layered wall. Wire the Case output into the Run component (Containerized engine — hamFoam ships only in the container). Pick a Preset to reproduce one of the two HAMSTAD benchmark tutorials.
13 WRF
Main Components
Check and download the WPS static geographical data geogrid needs. Reports what is installed against the mandatory field list, and fetches the bundle that closes the gap.
Download the meteorological GRIB files that drive a WRF run. The file list and the Vtable are shown before you fetch anything, so a window can be checked first.
Define a WRF domain and the parent grids nested around it. Domains are specified INNERMOST-FIRST: the grid you set here is the finest one, and each nest ratio adds a coarser parent around it. Outputs the project the WRF Namelist component writes, and the domain extents as rectangles centred on the innermost domain.
Write namelist.wps for a WRF project. The text is produced on every solve; the Write toggle saves it to /run_wps/namelist.wps.
Progress of the WRF pipeline in the working directory, with an expected time to completion once wrf.exe is stepping. Toggle Live to re-poll once a second.
Run the WRF pipeline. Writes a script into the project folder and launches it. The script and command are always shown, even before you run, so a failing run can be reproduced by hand.
Loop through a WRF run's history frames while Play is on. Wire Frame into the WRF Probe's Frame input; each tick advances one frame and recomputes the display.
Lat/lon graticule with labels, the run's own coastline from LANDMASK, and a site marker — in the same plane as the WRF Probe points and WRF Domain rectangles. Wire Labels + Label Points (and Site Label + Site Point) to a Text Tag to draw the annotations.
Sample a surface field of a WRF run over the whole domain, one point per grid cell. Points are in metres about the domain centre, matching the WRF Domain rectangles. Wire Points + Values into the Scalar Field Viewer, or Points + Vectors into the Vector Field Viewer, for the display.
Build an atmospheric boundary layer from a WRF site series. The output plugs into the same socket as Outdoor's ABL, so it drives the wind study, Outdoor+, FluidX3D and LBM alike. Note this is uniform in plan: one log-law profile at the site, not a spatially varying inflow.
Read a WRF run at a site and build the weather an Eddy3D case needs. Feed the Weather output to Timing Parameters and urbanMicroclimateFoam runs on WRF instead of an EPW. Start HOY and Duration describe the window the run actually covers — wire them too, because every hour outside it is deliberately NaN and will stop OpenFOAM rather than quietly simulate a day of 0 degC.
14 PALM-4U
Main Components
Define the PALM-4U grid: cells, spacing and the site's latitude/longitude. The domain's lower-left corner sits at the Origin point in the Rhino model (world origin by default), with y pointing north. Feed the output to PALM Case and PALM Run.
Fetch OpenStreetMap land cover over the PALM domain and classify it into PALM surface types. Feed the output into PALM Case's Land Cover input. Urban block polygons are skipped and reported — paint those by hand.
Write the PALM-4U case: the static driver (terrain, buildings, tree canopies and the ground surface mosaic, rasterized onto the domain grid) and the _p3d namelist that runs it. Geometry inputs take trees of meshes/Breps; branches are flattened — everything wired belongs to ONE scene. Ground not covered by any input takes the Ground Cover class. The viewport shows the domain, its boundary conditions and the rasterized surface the solver will actually see.
Steer the PALM-4U run: duration, wind, temperature and outputs. Forcing is idealized (constant wind, cyclic boundaries). Comfort switches on radiation and the biometeorology module, whose PET/UTCI/MRT maps are PALM-4U's point.
Progress of the PALM run in the case folder, from its RUN_CONTROL table. Toggle Live to re-poll once a second.
Run PALM-4U. Writes a launch script into the case PALM Case wrote, then starts the published PALM container. The script and command are always shown, even before you run, so a failing run can be reproduced by hand.
Read a PALM output field: one variable, one time frame, as values and a colored mesh over the domain. Variables and times available in the case are listed on every solve.