How the coupling works¶
GALE puts wind turbines into an ERF flow. OpenFAST computes each turbine’s aerodynamics and structural response; ERF supplies the wind and carries the wake. The loads come from OpenFAST’s blade-element solution on the turbine’s own blade and tower nodes, not from a thrust curve as in ERF’s wind farm models.
Sampling the flow, stepping OpenFAST, spreading the forces back.
Rings, sampling modes and the corrected disk. Also the prescribed-Ct disk.
Moving blade lines, the tip-travel limit and the filtered lifting-line correction.
How to choose each kind of point’s width.
Terrain, the anchor level and the force on coarser levels.
Who owns a turbine, what is exchanged, and why results do not depend on the ranks.
Start-up audit, diagnostics, statistics, checkpoints and timing.
Code layout¶
Turbines/ERF_GaleTurbineModel.cppis the structure modelgale(ERF’s structure coupling). It is compiled in as any structure model is (Turbines/ERFStructureModel.cmake,Turbines/Make.package) and selected witherf.structures.model = gale.Source/MovingBodies/Corein ERF is the actuator core: sampling, spreading, wake lines, running statistics. GALE uses it unchanged.Turbines/GaleCoreholds what GALE adds to the core: the exchange of a body’s points with the ranks it touches (BodyExchange), a kernel’s normalisation summed on one rank, the tip-travel cell heights, the phase timers, logs for many bodies per rank (LogStreams), owner-written wake lines and statistics (OwnedWakeLines,OwnedRunningStats), and the conversion of an old checkpoint’s face forces (ActuatorRestriction).
ERF calls the model at the times it calls every structure model. It starts the bodies once the
mesh exists, steps them at each step of their level, and adds their momentum source on that level.
It then restricts that source onto the coarser levels, writes it to
<chk>/StructureCoarseSource, and stops the run when a finer level covers the bodies.
Uniform-dz meshes
On a uniform-dz mesh ERF hands a structure model no heights or Jacobian. The model then gives
the bodies the flat node heights prob_lo z + k dz and a Jacobian of 1, the values ERF holds
on such a mesh. The bodies take the same code path on every mesh.