Using CFD.ML via the web API
The WF Services API v2 brings CFD.ML turbine interaction model in BETA. More on the background about this model can be found in the calculation reference
BETA state means that there are some limitations to the use of the model in this first release, namely in terms of number of turbines the model can run. The WindFarmer API aims to respond back to any call in a 10 min period, CFD.ML is more computationally demanding than the Eddy Viscosity model, therefore there is currently a limit to what can be simulated within this period with CFD.ML. The WindFarmer team is working to address this limitation.
The CFD.ML model can be used in the following conditions:
- As a full turbine interaction model that predicts wakes and blockage.
- As a blockage model only to estimate a blockage correction to a wake-only model.
Note
At the time of writting there is only a GNN (graph neural network) trained on UnstableNeutral
conditions for the setting gnnStabilityClass
.
The API documentation shows there is a Stable
option but this is ignored and it will run the UnstableNeutral
conditions.
Using CFD.ML to derive a annualized blockage correction can only be done when setting the corresponding blockageCorrectionApplicationMethod
to OnEnergy
.
If you already have a WindFarmer:Analyst workbook with the wind farm definition, use the
Scripting method Toolbox.ExportWindFarmerEnergyJson()
to produce the json file with
API inputs and manually adjust the wake and/or blockage model settings pointing to CFDML, as shown below:
CFD.ML naturally predicts the full turbine interaction loss factor including both wakes and blockage.
When selecting the CFD.ML wake model type, the wake results from the API will also include blockage.
If you also select CFD.ML as a blockage model take care not to double-count the blockage correction efficiency.
The blockage model results report a weightedBlockageEfficiency
, likely less than 1.0, and if also selected a
wakeModelType of CFD.ML this blockage correction efficiency is already inherrent in the reported wake efficiencies.
"wakeModel": {
"wakeModelType": "CFDML",
"cfdml": {
"gnnType": "Offshore",
"gnnStabilityClass": "UnstableNeutral"
}
},
"blockageModel": {
"blockageModelType": "NoBlockageModel"
}