A live energy twin of a university campus
Join a live meter feed to 85 campus building meshes, aggregate it hourly, and paint a 3D heat-map that repaints as energy use shifts, plus a weekly report.
Drop 200 GB of NetCDF result volumes on the canvas and explore the wake live — slicing planes, iso-surfaces, and a derived velocity-deficit field with an adjustable free-stream parameter. Finish with an animated wake visualization and a downstream-loss table, without writing a single script.
A modern rotor leaves a deficit trail that stretches ten diameters downstream, and the next turbine in the row sits right in it. If your CFD says the wake recovers at 6 diameters but it actually takes 8, the layout you signed off is quietly losing percent-level energy across the whole farm. The 200 GB sitting on the cluster contains the answer — the problem has only ever been looking at it.
The standard route is a ParaView state file that only works on one workstation, plus a Python batch job that downsamples everything into quicklook PNGs. By the time the plots render, nobody remembers why the threshold was 0.15. In LSD the volumes stay on disk at full resolution; the canvas reads what the current slice needs and caches every intermediate, so scrubbing the wake over time feels like a game engine, not a job queue.
Any NetCDF output with velocity components on a grid works. This walkthrough uses an LES run of a single 2.5 MW rotor — 412 timesteps of u, v, w, and pressure on a structured grid. If your solver writes something else, convert once and load the probe CSVs alongside; the pipeline doesn't care which solver produced the physics.
Drag the solver's output folder onto the canvas — 412 NetCDF files, about 200 GB. The @load node reads headers only, so u, v, w, and pressure appear with their dimensions in seconds, and the timesteps stack into a single time axis automatically. Nothing is pulled into memory until a downstream step actually needs it.
Add a slice node and drag the plane through the domain in the 3D viewer. Snap it to hub height, then add a second vertical plane down the rotor axis. Both previews update as you drag — the full-resolution volume stays on disk as a cached intermediate.
Type deficit = 1 - u / U∞ into a @shape expression node and expose U∞ as a live parameter. Set it to 8 m/s to match the inflow and every slice recolors instantly. Nudge the parameter and watch the wake boundary move — no re-run, no waiting.
Add an iso-surface node on the deficit field and set the threshold to 0.15. A ghostly tube appears behind the rotor in the 3D viewer, showing exactly where the wake has and hasn't recovered. Drag the threshold slider to tighten or loosen the envelope — the mesh rebuilds live from the cached field.
Scrub the time axis and the slices, iso-surface, and deficit colors all follow. Set the playback range to the last 400 timesteps — one full rotor revolution — and let the viewer loop it. When the wake meandering reads clearly, queue the animation for export at 1600 × 900.
Drop probe lines at 2, 4, 6, and 8 rotor diameters downstream and the @deliver node tabulates mean velocity deficit at each station. Export the table as CSV next to the rendered wake animation. Anyone with the pipeline file can re-run both against the next design's output.
Read 412 NetCDF volumes lazily — headers first, arrays only when a step needs them.
Cut live planes, derive velocity deficit, and extract iso-surfaces with adjustable parameters.
Render the animated wake and export mean deficit per downstream station.
Join a live meter feed to 85 campus building meshes, aggregate it hourly, and paint a 3D heat-map that repaints as energy use shifts, plus a weekly report.
Build churn features from Postgres events and Parquet snapshots, catch a leaky window visually, and score the holdout with ONNX — on one canvas.
Align CMM measurement points to a nominal CAD mesh, compute point-to-surface deviation, and export a color-mapped glTF model with a pass/fail report.
Turn a CT DICOM series into an ONNX organ segmentation you QA in 3D, then export an annotated volume and a per-organ volumetrics report.
Turn LiDAR terrain, rainfall GeoTIFFs, and a drainage Shapefile into a flood-risk raster, a 3D flyover, and a district report — live sliders, no scripts.
Model post-closure pit-lake rebound in LSD — krige borehole heads against a NetCDF recharge grid and deliver a live 3D drawdown model plus report.
Reduce 900 spectrometer CSVs against a calibration NetCDF into publication-ready spectra and a reproducible dataset export — no scripts.
Turn folders of line-scan images and a label CSV into an ONNX defect-segmentation pipeline with overlay QA and a per-coil defect report.
Turn raw LAS/LAZ sweeps from a mobile robot into a nav-ready occupancy grid and 3D map — registration to export with zero scripts.
Turn GeoTIFF orthomosaics into a stitched land-cover raster with per-class area stats, using tiled ONNX segmentation you can preview at every step.
Calibrate live strain telemetry, place gauges on the bridge mesh from a CSV, and color the structure by stress live — plus an alert log on every exceedance.
Crop 40 NetCDF ensemble members to a region, aggregate by season, and difference against a baseline — small-multiple maps and a per-region CSV.
Drag the solver's output folder onto the canvas — 412 NetCDF files, about 200 GB. The @load node reads headers only, so u, v, w, and pressure appear with their dimensions in seconds, and the timesteps stack into a single time axis automatically. Nothing is pulled into memory until a downstream step actually needs it.
Add a slice node and drag the plane through the domain in the 3D viewer. Snap it to hub height, then add a second vertical plane down the rotor axis. Both previews update as you drag — the full-resolution volume stays on disk as a cached intermediate.
Add an iso-surface node on the deficit field and set the threshold to 0.15. A ghostly tube appears behind the rotor in the 3D viewer, showing exactly where the wake has and hasn't recovered. Drag the threshold slider to tighten or loosen the envelope — the mesh rebuilds live from the cached field.
Scrub the time axis and the slices, iso-surface, and deficit colors all follow. Set the playback range to the last 400 timesteps — one full rotor revolution — and let the viewer loop it. When the wake meandering reads clearly, queue the animation for export at 1600 × 900.