Slicing a 40-member climate ensemble into regional anomaly maps
Crop 40 NetCDF ensemble members to a region, aggregate by season, and difference against a baseline — small-multiple maps and a per-region CSV.
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.
Crop 40 NetCDF ensemble members to a region, aggregate by season, and difference against a baseline — small-multiple maps and a per-region CSV.
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.
Validate 63 LAS drillhole logs against collar surveys, krige a lithology block model, and export one glTF the whole team can open.
Build churn features from Postgres events and Parquet snapshots, catch a leaky window visually, and score the holdout with ONNX — on one canvas.
Score a million-row Parquet batch with an ONNX model — training-identical normalization, live previews, scored Parquet and metrics out.
Turn raw LAS/LAZ sweeps from a mobile robot into a nav-ready occupancy grid and 3D map — registration to export with zero scripts.
Sync CSV sensor logs with live REST telemetry, flag outliers and dropouts, and score every robot pass/fail before the field trial.
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 GeoTIFF orthomosaics into a stitched land-cover raster with per-class area stats, using tiled ONNX segmentation you can preview at every step.
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.
Resample a week of machine sensor logs, baseline each tag, and flag drift and step changes on a live dashboard with a ranked maintenance shortlist.
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.
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.