Sandbox — LSD is in active testing. All systems operational·payments are test-mode (no real charges).
Overview Use Cases News Docs Tool Store Support Community Get LSD
Use cases/ Simulation/ Exploring a wind-turbine wake from 200 GB of CFD output
Animated velocity-deficit iso-surface trailing the rotor, sliced at hub height replace with clip · 1600 × 900

Exploring a wind-turbine wake from 200 GB of CFD output

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.

▶ Video walkthrough Intermediate ⏱ 30 min cfdwind-energynetcdfwake3d-visualization

The wake is where the yield goes#

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.

Why this usually takes a week#

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.

What you'll need#

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.

Step by step

How it's built

  1. #058 · Load 01

    Load the result volumes

    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.

    Canvas with 412 NetCDF volumes loaded as one entity replace with screenshot · 1200 × 750
  2. #059 · Shape 02

    Slice the domain at hub height

    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.

    Hub-height slice plane dragged through the wake in the 3D viewer replace with screenshot · 1200 × 750
  3. 03

    Derive the velocity-deficit field

    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.

    Velocity-deficit expression with a live free-stream parameter replace with screenshot · 1200 × 750
  4. #060 · Shape 04

    Extract the wake iso-surface

    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.

    Iso-surface of 15% deficit enclosing the wake tube replace with screenshot · 1200 × 750
  5. #061 · Deliver 05

    Animate the wake over time

    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.

    Time-axis scrubber looping one rotor revolution replace with screenshot · 1200 × 750
  6. 06

    Deliver the loss table and animation

    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.

    Downstream-loss table beside the export queue replace with screenshot · 1200 × 750
The pipeline

Every step used, at a glance

Load

CFD result volumes

Read 412 NetCDF volumes lazily — headers first, arrays only when a step needs them.

NetCDF
Shape

Slices & derived fields

Cut live planes, derive velocity deficit, and extract iso-surfaces with adjustable parameters.

Deliver

Animation & loss table

Render the animated wake and export mean deficit per downstream station.

CSV
200 GB
explored without downsampling
4 stations
in the downstream-loss table
0 scripts
to re-run on the next design

More use cases