4.2.14.6. Modeling Guidance¶
This chapter includes modeling guidance for setting up and running a FAST.Farm simulation. This includes guidance on inflow wind generation; low and highresolution grid discretization; parameter selection; super controller use; and solutions for commonly encountered errors.
4.2.14.6.1. FAST.Farm Setup Overview¶
This section includes a highlevel overview of how to set up ambient inflow and FAST.Farm simulations in particular, the information needed to calculate various parameters, as shown in Fig. 4.54.
Note that this schematic only includes information relevant to FAST.Farm simulations. Typically, additional inflow information is required to generate inflow and the OpenFAST models. The specific equations that should be used to compute the input parameters are discussed in Section 4.2.14.6.4. It is highly recommended that the Python notebooks provided in the FAST.Farm tools repository be used when setting up new inflow or a FAST.Farm case. Improperly setting these parameters can lead to common errors and/or excessive interpolation, which should be avoided. Note that this chapter assumes a wind direction of \(0^\circ\)– i.e., ambient wind that propagates along the +X axis of the global inertial frame coordinate system.
When generating a FAST.Farm simulation setup and corresponding inflow, planning is important. Improper planning could results in FAST.Farm errors and/or needing to regenerate the inflow. Values that should be known a priori are:
wind turbine rotor diameter (\(D^\text{Rotor}\));
wind turbine hub height;
maximum turbine chord length (\(c_\text{max}\));
maximum turbine natural frequency (\(f_\text{max}\));
X, Y, and Z locations of all turbines in the wind farm;
desired mean inflow hubheight wind velocity; and
mean inflow wind direction.
The values that must be computed using this information are:
inflow and FAST.Farm domain size (height, width, and length);
FAST.Farm high and lowresolution domain origin locations (S0_High and S0_Low, where S = X, Y, or Z);
high and lowresolution temporal discretization values (DT_High and DT_Low);
high and lowresolution spatial discretization values (DS_High and DS_Low);
number of grid points in the high and lowresolution domains (NS_High and NS_Low);
actual mean inflow hubheight wind velocity (\(V_\text{hub}\));
additional wake dynamics properties (dr, NumRadii, and NumPlanes).
With this information, inflow generation can begin. Though not required, it is recommended to complete inflow generation before setting up the FAST.Farm simulation. This is because the realized spatial discretization values and/or mean hub height velocity can differ from what is desired. Having the correct values of these parameters leads to less interpolation of the wind data in FAST.Farm simulations, which would otherwise reduce the ambient turbulence.
When setting up the inflow generation, the recommended spatial and temporal discretizations should be used, as discussed in Section 4.2.14.6.3. If using:
Mod_AmbWind = 1, a highfidelity must be generated and all discretization values can be specified as the exact desired value.
Mod_AmbWind = 2, a single synthetic inflow (TurbSim or Mann) must be generated using the highresolution discretization values recommended herein.
Mod_AmbWind = 3, multiple synthetic inflows must be generated. In this case, the recommended highresolution discretizations should be used for all highresolution inflows generated. For the lowresolution inflow generation, the recommended highresolution temporal discretization and lowresolution spatial discretization should be used.
If using synthetic inflow (TurbSim or Mann), the inflow streamwise spatial discretization, DX_Inflow, is not specified by the user, but is instead based on Taylor’s frozenturbulence assumption. Because the streamwise discretization of the FAST.Farm domain should be based on the inflow streamwise discretization, the user should compute this value using the inflow time step (DT_High) and the advection speed of the synthetic wind data, \(V_\text{Advect}\). The \(V_\text{Advect}\) may differ from the actual wind speed at hub height, \(V_\text{Hub}\), as discussed in Section 4.2.14.6.2.3, and should be computed directly from the generated synthetic inflow. Therefore, the exact resulting DX_Inflow will not be known until after the inflow has been generated. Additionally, DX_Inflow will likely be much smaller than the desired values of DX_Low and DX_High.
When setting up the FAST.Farm simulation itself, many of the values that were used for inflow generation will be used again here to specify the FAST.Farm domain. Note that this domain specification in FAST.Farm is only needed when using synthetic turbulence inflow. The origin of the lowresolution domain (X0_Low, Y0_Low, and Z0_Low) should be determined based on:
the minimum turbine X and Ylocations;
turbine yaw misalignment;
inflow wind direction; and
the expected range of wake meandering.
Specifically, X0_Low must accommodate all turbine locations as well as allow enough room to analyze the undisturbed inflow upstream of the wind farm, if desired. Y0_Low must accommodate all turbine locations as well as the horizontal wake meandering. When using TurbSim, which cannot generate wind at ground level, Z0_Low should be close to but above ground level.
The FAST.Farm domain width and height are then computed using:
the turbine locations;
the calculated Y0_Low and Z0_Low values;
the horizontal and vertical meandering distance requirements;
turbine yaw misalignment; and
the inflow wind direction.
The domain length should be based on the streamwise extent of the wind farm and, if desired, allow enough room to analyze the waked outflow downstream of the wind farm.
The lowresolution domain in FAST.Farm (DY_Low and DZ_Low) and number of grid points (NY_Low and NZ_Low) can then be computed using:
the domain width and height;
the lateral and vertical spacing of the generated inflow; and
DY_Inflow and DZ_Inflow.
The lowresolution temporal discretization (DT_Low) should be computed using:
the turbine diameter;
inflow hubheight velocity; and
the inflow temporal discretization.
The streamwise spacing and number of grid points (DX_Low and NX_Low) should also be based on DT_Low and the mean wind speed.
The final domain parameters to calculate are the locations of the highresolution domains (X0_High, Y0_High, and Z0_High) and the number of grid points required to make up the domains (NX_High, NY_High, and NZ_High). These quantities should be determined from:
DS_High values;
turbine locations; and
the size of the highresolution domains.
The DS_High values should be selected based on recommended highresolution domain discretization criteria, discussed in Section 4.2.14.6.3.
Additional wake dynamics quantities are needed when specifying the FAST.Farm input file, as discussed further in Section 4.2.14.6.4.2. It is recommended to base dr on \(c_\text{max}\); NumRadii on wake diameter and dr; and NumPlanes on DT_Low, inflow hubheight velocity, and the distance between turbine locations.
A sample turbine layout and domain locations are shown in Fig. 4.55.
4.2.14.6.2. Inflow Wind Generation¶
This section includes guidelines by which turbulent inflow should be generated for use with FAST.Farm.
4.2.14.6.2.1. HighFidelity Precursor Ambient Inflow¶
There are many different methods by which highfidelity precursor ambient inflow can be generated. This section focuses on generating such inflow using SOWFA.
When using SOWFA to generate FAST.Farm precursor inflow, the ABLSolver preprocessor is used. It is important to note the baseline highfidelity solution is not directly used as inflow for FAST.Farm, but is instead sampled within a specified domain and discretization. This sampling is done through SOWFA and specified in a SOWFA input file. The inflow data are written out in 3D volume VTKformatted files, as described in Section 4.2.14.4.3. These are large ASCIIformatted files; as such, decreasing the precision to, e.g., 3 digits is recommended. The domain size and lowresolution domain discretization used for SOWFA simulations is much larger than what is required for FAST.Farm simulations. Therefore, sampling files must be set up to generate boundary conditions for use with FAST.Farm, based on FAST.Farm discretization suggestions detailed in Section 4.2.14.6.3. Two sampling files are needed: one for the lowresolution sampling for the farmscale domain and one for the highresolution sampling for the turbinescale domains. Each sampling file defines the spatial and temporal discretization that will be used in the FAST.Farm simulations. The lowresolution domain file defines a single lowresolution domain that will be used for the FAST.Farm simulations; the highresolution domain file defines each highresolution domain that will be used for the FAST.Farm simulations. Thus, it is important to know exactly where all turbines will be located in the FAST.Farm simulation before generating the inflow. Note that this FAST.Farm sampling step can be computationally expensive. Therefore, it is recommended that users make sure all inputs are correct before executing SOWFA, including turbine locations and discretization levels.
An example Python notebook is provided in the FAST.Farm tools repository to assist in setting up these files for a given FAST.Farm simulation.
4.2.14.6.2.2. Complex Terrain¶
Complex terrain, or a timevarying seasurface elevation for offshore systems, can be modeled in FAST.Farm by providing ambient inflow data that are terrain following, e.g., by modeling the surface boundary condition in an LES precursor. The VTK format used by FAST.Farm is spatially uniform. To accommodate complex terrain or waves with a uniform grid, the wind speed for points below the terrain surface should be set to NaN. Any NaN value will be trapped by FAST.Farm and marked as outside of the domain, and so, unused by calculations within the AWAE module. When the ambient wind inflow is terrain following, the wakes will naturally follow the terrain as well, even though FAST.Farm does not include any explicit models for complex terrain, flow recirculation or separation, or local pressure gradients.
If using a SOWFA inflow precursor, the complex terrain is accounted for in the SOWFA inflow precursor generation, and so, no modification to the vtk files is required to account for complex terrain when sampling for a FAST.Farm simulation.
4.2.14.6.2.3. Synthetic Turbulence Ambient Inflow¶
Synthetically generated turbulent inflow can be used in FAST.Farm to accurately predict turbine response and wake dynamics across different atmospheric conditions. There are several ways to achieve this; any method can be used as long as it produces an output file in a format supported by InflowWind. Modeling guidance for TurbSim and the Mann model are discussed next.
4.2.14.6.2.3.1. TurbSim¶
When using the NREL tool TurbSim v2, different options are available to drive the synthetic turbulence towards specific desired outcomes, e.g.;
standard or userdefined timeaveraged wind profile (shear, veer);
standard or userdefined velocity spectra in three directions (along the wind, u, and transverse, v and w);
standard or userdefined spatial pointtopoint coherence; and
standard or userdefined componenttocomponent correlations (Reynolds stresses).
Additionally, TurbSim v2 allows the user to generate turbulent wind that is consistent with userdefined threecomponent wind time series at one or more points (i.e., constrained wind). These options can be used separately or in some combination (though userdefined spectra and userdefined time series can not be used together). When defined appropriately, all these methods can result in good statistical comparison of turbine response and wake dynamics between FAST.Farm results and a reference data set, e.g., compared with an LES precursor or physically measured inflow. However, attention must be paid when generating these inflows to ensure atmospheric conditions are modeled properly.
In particular, TurbSim generates wind velocities transversely throughout the domain using u, v, and wspatialcoherence models based on a selection of coherence model equations and their associated parameters. These models and parameters can either be specified explicitly or left as default values in TurbSim. When the IEC spatialcoherence model is selected, spatial coherence is computed using Eq. (4.193) ([ffJon14]).
where \(V_\text{Advect}\) is the average wind speed at the hub height
specified in TurbSim, which is also the advection speed in InflowWind;
\(Coh_{i,j_K}\) is the spatial coherence between points \(i\)
and \(j\) for the velocity components \(K=u,v,w\); \(r\) is
the distance between points \(i\) and \(j\); \(a_K\) is the
coherence decrement parameter; and \(b_K\) is the coherence offset
parameter. It was discovered in [ffSeal19b] that the
use of the IEC coherence model with default coherence parameters
together with the IEC Kaimal spectra results in negligible wake
meandering. This is because the default v and wcoherence parameters in
TurbSim are set such that \(a_K\) are very large numbers and
\(b_K=0\), effectively resulting in no coherence
(\(Coh_{i,j_K}(f)=0\)) ([ffJon14]). 1 This
lack of meandering is nonphysical and will have a nonphysical impact on
the response of downstream turbines. Instead of using the default
values, the v and wcoherence parameters were specified
in [ffSeal19b] to identically equal the ucoherence
parameters specified in the IEC standard, such that:
\(SCMod2=SCMod3=IEC\); \(a_K=12.0\) and \(b_K=0.00035273\)
m\(^{1}\); and
\(CohExp=0.0\). ([ffJon14]). Properly setting
spatial coherence parameters for the transverse wind velocity components
is necessary to accurately predict wake meandering. It is also important
to note that, in TurbSim, the \(a_K\) and \(b_K\) values must be
specified within quotation marks (e.g., "12.0 0.00035273"
) or, at
present, the values are set to \(0\).
When using TurbSim to generate the fullfield turbulent wind data for FAST.Farm, one often wants the TurbSim grid to extend well above the hub height to capture vertical wake meandering due to the \(w\) component of turbulence. Because TurbSim requires that HubHt\(> 0.5*\)GridHeight, it is often necessary to specify an artificially high HubHt in TurbSim. To properly set the HubHt parameter, the following equation is suggested:
where \(z_\text{bot}\) is the desired bottom vertical location of the grid (just above ground level) and \(D_\text{grid}=MIN\left( \textbf{GridWidth}, \textbf{GridHeight}\right)\). Note that the HubHt parameter is used by TurbSim as the reference height for the wind speed used (\(V_\text{Advect}\)) to define the windspeed standard deviations and spatial coherence in the IEC turbulence models, as well as the advection speed (in InflowWind) for all models. Thus, the resulting windspeed standard deviations and spatial coherence in the IEC turbulence models will not be what is expected without explicit consideration of the difference in wind speeds between the HubHt used by TurbSim and the actual turbine hub height. The advection speed (in InflowWind) will likely also be faster than it would be when the actual hub height speed is used. A separate reference height (RefHt) is specified in TurbSim, which is the height at which, e.g., the reference wind speed is enforced. This value is also used to properly set the power law velocity profile. Future work is needed to decouple the HubHt parameter from the TurbSim grid generation.
It is generally recommended that the fullfield wind data files be generated periodically. This effectively extends the wind domain forever along the wind propagation direction.
When using ambient wind through multiple instances of the InflowWind module, i.e, when Mod_AmbWind = 3, only one InflowWind input file is specified. However, multiple wind data files are used, each with a different name. Specifically, the file name in the InflowWind input file in this case refers only to the directory path of the wind files. The wind file root names are required to be Low for the lowresolution domain and HighT<n:math:`_text{t}`> for the highresolution domain associated with turbine \(n_\text{t}\). 2 When steady inflow in InflowWind is used (WindType = 1), setting Mod_AmbWind to 2 or 3 produces identical results. When using fullfield turbulent wind data in InflowWind with Mod_AmbWind = 3, it is required that:
The fullfield wind data files be generated periodically. This effectively extends the wind domain forever along the wind propagation direction.
The input parameter PropagationDir in the InflowWind input file be set to \(0\) degrees so that the wind propagates along the X axis of the FAST.Farm inertialframe coordinate system.
The wind data files associated with the highresolution ambient wind be spatially and temporally synchronized with the lowresolution wind data file. The spatial synchronization must be based on the global XYZ offsets of each turbine origin relative to the origin of the inertial frame coordinate system. For each wind turbine, the velocity time series at the turbine location should be extracted from the lowresolution TurbSim domain. To account for turbine downstream distance, each time series should then be offset in time based on the freestream velocity and turbine location. This time series should then be used to generate the highresolution TurbSim inflow for each turbine. The TurbSim user’s manual contains details on how to generate a TurbSim inflow using a specified time series [ffJon14].
4.2.14.6.2.3.2. Mann Model¶
When generating stochastic turbulence with the Mann model, \(11\) userdefined inputs are required: prefix, alpha_epsilon, L, gamma, seed, nx, ny, nz, dx, dy, and dz. The parameters that should be selected in conjunction with FAST.Farm parameters are discussed here.
dx, dy, and dz – These parameters should be selected based on the highresolution spatial discretization recommendations discussed below in Section 4.2.14.6.3.
nx – This value is required to be a power of \(2\). To ensure no repetition of the turbulence box for the duration of the simulation, the following equation is recommended:
where \(V_\text{Advect}\) is the advection speed of the Mann box and \(CEILING\big[x\big]\) rounds \(x\) to the next highest integer. This equation ensures that the turbulence box will not repeat during the simulation and also that the power of two criteria is satisfied.
ny and nz – These values are also required to be powers of \(2\). With this requirement in mind, these values should be selected to ensure the entire desired domain width (Y) and height (Z) are captured, as discussed below in Section 4.2.14.6.4.1.1.
The InflowWind input file has a specific section for using a Mann turbulence box. This section requires the input of nx, ny, nz, dx, dy, dz, RefHt, and URef. These values should be specified exactly as those used to generate the inflow. Note that dx, dy, and dz specified in InflowWind should be the same as dX_High, dY_High, and dZ_High in FAST.Farm, respectively. RefHt should be defined as follows:
where URef is the mean wind speed at the reference height, and dictates the advection speed of the Mann box, identified here as \(V_\text{Advect}\).
When using a Mann box, it is important to know that the xaxis direction is opposite the convention used by InflowWind. Although the interpretation in InflowWind (including OpenFAST and FAST.Farm) is consistent with how Mann boxes are used in other aeroelastic software, the interpretation is nonphysical. If desired, the user can adjust the FAST.Farm source code to read the xaxis in reverse. Correcting this error universally across all aeroelastic software that use Mann boxes is needed future work.
4.2.14.6.3. Low and HighResolution Domain Discretization¶
Spatial and temporal discretization can affect wake meandering, turbine structural response, and resulting wake and load calculations. This section summarizes recommendations for discretization values in terms of geometry and wind speed that will ensure a converged solution, while maximizing computational efficiency. For details on how these recommendations were formed, see [ffSeal19a]. Though developed for FAST.Farm use, these guidelines are likely applicable to any DWMtype model or aeroelastic analysis.
4.2.14.6.3.1. LowResolution Domain¶
The lowresolution domain in FAST.Farm is primarily responsible for wake meandering and merging. As such, convergence was assessed by comparing trends in standard deviation of horizontal and vertical meandering wake center positions for the wakes behind each turbine at various distances downstream. It was found that the mean horizontal and vertical wake trajectories have negligible dependence of DT_Low or DS_Low. The following equation can be used to ensure convergence of wake meandering in the lowresolution domain:
This equation is based on the lowpass cutoff frequency for wake meandering \(\left(\frac{V_\text{Hub}}{C_\text{Meander}D^\text{Wake}}\right)\) from [ffLeal08] (in which \(C_\text{Meander}=2\), but \(C_\text{Meander}\) defaults to \(1.9\) in FAST.Farm) and effectively specifies that the highest frequency of wake meandering should be resolved by at least \(10\) time steps. Note that \(D^\text{Wake}\) can be approximated as \(D^\text{Rotor}\) in this calculation.
Spatial discretization convergence was assessed in the same manner as temporal discretization. Minimal sensitivity to spatial discretization was found for the lowresolution domain in the range of spatial discretizations considered. Nonetheless, the following equation is recommended for identifying the maximum suggested DS_Low, where \(S\) refers to \(X\), \(Y\), or \(Z\) and the denominator has the units [m/s]:
For all synthetic turbulence methods, it is recommended that DX_Low\(= V_\text{Advect}\)DT_Low to avoid interpolating in Xdirection. Note the use of the advection speed, \(V_\text{Advect}\), to calculate DX_Low, rather than the actual hubheight wind speed, \(V_\text{Hub}\). Additionally, X0_Low should be an integer multiple of DX_Low.
4.2.14.6.3.2. HighResolution Domain¶
The highresolution wind domain in FAST.Farm is primarily responsible for ambient and waked inflow local to a turbine. As such, convergence was assessed by comparing trends in mean and standard deviation of turbine structural motions and loads for each turbine.
Required discretization levels vary depending on the quantity of interest. Thus, it is important to decide what structural components will be considered when selecting a highresolution discretization level. Most notably, towerbase moments are the most sensitive to DT_High, whereas generator power and blade deflections and moments show little dependence on this value. To capture the full structural response, DT_High should be selected based on the highest frequencies influencing the structural excitation, including rotational sampling of turbulence and response, i.e., natural frequencies, of the pertinent structural components, \(f_\text{max}\) (in Hz), as in Equation (4.194), where the factor of \(2\) is taken from the Nyquist sampling theorem. This is a frequently used rule of thumb in wind turbine aeroelastic analysis under excitation from turbulent inflow.
The required DS_High approximately corresponds to the maximum blade chord length of the turbine, \(c_\text{max}\), as in Equation (4.195). Selecting a DS_High equivalent to this value has long been a ruleofthumb in wind turbine aeroelastic analysis under excitation from turbulent inflow.
4.2.14.6.4. Parameter Selection¶
Setting up a FAST.Farm simulation can involve specifying a large number of parameters, especially if the InflowWind module is used for the ambient wind. This section summarizes best practices for selecting some of these parameters. References are made to desired versus realized values. The discrepancies between these values are discussed in Section 4.2.14.6.1.
4.2.14.6.4.1. InflowWind Domain Parameters¶
Care must be taken when setting up a FAST.Farm simulation using the InflowWind ambient wind inflow option. It is highly recommended that the distributed Python notebooks be used when setting up a new case. Improperly setting these parameters can lead to common errors and/or excessive interpolation, which should be avoided. The methods and rules of thumb that are used in those Python notebooks are also discussed here.
4.2.14.6.4.1.1. LowResolution Domain¶
NX_Low, NY_Low, NZ_Low – These quantities should be based on DS_Low and the desired domain size (Sdist_Low), where S=X, Y or Z. This integer quantity should be computed as:
X0_Low – This quantity must be less than the X location of the furthest upstream turbine. It is recommended to set this value further upstream to allow for analysis of the ambient inflow. If using a Mann box, this value should be 0.
Y0_Low – This quantity must be less than the lowest Y location of any turbine (WT_Y_). Additional clearance is required to accommodate wake meandering, wake deflection, and spatial averaging used in the AWAE module. This value may be computed as:
Additional clearance should be allowed for appreciable wake meandering and/or yaw. For Mod_AmbWind = 2, the synthetic inflow data are centered around Y=0. Because of this, Y0_Low should equal Ydist_Low/2. This is the same for the lowresolution domain with Mod_AmbWind = 3.
Z0_Low – It is recommended that this value be set close to but above ground level. When using TurbSim, this value can not be at or below ground level because TurbSim cannot generate wind at these locations.
DX_Low, DY_Low, DZ_Low – Desired spatial values are not discussed here, as they are covered in detail in Section 4.2.14.6.3. However, the actual quantities used might differ from the desired values when using synthetic inflow, as discussed in Section 4.2.14.6.2.3. To determine the actual quantity, the following equation is suggested when using synthetic inflow:
Use of this equation is the best way to ensure that DS_Low will be a multiple integer of DS_High, reducing interpolation smoothing.
4.2.14.6.4.1.2. HighResolution Domain¶
Xdist_High, Ydist_High, Zdist_High – Though not direct inputs, these lengths, widths, and heights of the highresolution domains should be selected based on the size and location of the turbines. The following values are recommended:
If tower aerodynamic loads are desired, the highresolution domain should span the entire tower and rotor:
These parameters might need to be increased to account for large structural motion, such as for floating offshore wind applications.
NX_High, NY_High, NZ_High – These quantities should be based on DS_High and the desired domain size (Sdist_High), where S=X, Y, or Z. This integer quantity should be computed as:
X0_High, Y0_High, Z0_High – These quantities are set for each turbine. They should be based on turbine location and set so that the turbine is contained inside the highresolution domain. It is recommended that X0_High and Y0_High are set approximately \(1.1D^\text{Rotor}/2\) lower than the turbine location. For the highresolution domains with Mod_AmbWind = 3, the synthetic inflow data are centered around each turbine, based on WT_X/Y/Z.
DX_High, DY_High, DZ_High – Desired spatial values are not discussed here, as they are covered in detail in Section 4.2.14.6.3.
4.2.14.6.4.2. Wake Dynamics Parameters¶
Wake dynamics parameters define the axisymmetric finitedifference grid used for each wake plane. These planes are defined by the following parameters:
dr – This value should be set so that FAST.Farm sufficiently resolves the wake deficit within each plane. The following value is suggested:
\[\textbf{dr} \le c_\text{max}\]NumRadii – To ensure the wake deficits are accurately computed by FAST.Farm, NumRadii should be set so that the diameter of each wake plane, 2(NumRadii1)dr, is large relative to the rotor diameter. The following value is suggested:
\[\textbf{NumRadii} \ge \frac{3D^{Rotor}}{2\ \textbf{dr}}+1\]NumPlanes – To ensure the wake deficits are accurately captured by FAST.Farm, NumPlanes should be set so that the wake planes propagate a sufficient distance downstream, preferably until the wake deficit decays away (\(x_\text{dist}\)), with typical values between \(1020\times D^{Rotor}\). The following value is suggested:
\[\textbf{NumPlanes} \ge \frac{x_\text{dist}} {\textbf{DT_Low}\overline{V}}\]where \(\overline{V}\) is the average convection speed of the wake, which can be approximated as
\[\overline{V} = V_\text{Hub}\left( 1\frac{\overline{a}}{2}\right)\]where \(\overline{a}\) is the time and spatialtemporalaverage of the axial induction at the rotor disk. \(\overline{a}\) is expected to be around \(1/3\) below rated wind speed (for optimal aerodynamic efficiency) and decreases above rated wind speed to near zero before the cutout wind speed.
Note that because new wake planes are added each time step as the simulation begins, increasing NumPlanes will also increase the initial transient time of the simulation. The startup transient time is estimated by Equation (4.198).
Mod_WakeDiam – A value of 1 is recommended. For further details on the options for this parameter, see Equation (4.219).
Mod_Meander – A value of 3 is recommended. For further details on the options for this parameter, see Equation (4.226).
The remaining \(20\) inputs are userspecified calibration parameters and options that influence the wakedynamics calculations. The parameters may depend, e.g., on turbine operation or atmospheric conditions that can be calibrated to better match experimental data or by using an HFM benchmark. Default values have been derived for each calibrated parameter based on SOWFA simulations for the NREL 5MW turbine ( [ffDeal18]), but these can be overwritten by the user.
4.2.14.6.5. Super Controller¶
When UseSC is set to TRUE, the super controller is enabled. The super controller code must be compiled as a dynamic library file – a .dll file in Windows or a .so file in Linux or Mac OS. This super controller dynamic library is essentially identical to the super controller available in SOWFA. The super controller is used in conjunction with individual wind turbine controllers defined in the style of the DISCON dynamic library of the DNV GL’s Bladed wind turbine software package, with minor modification.
The inputs to the super controller are commands or measurements from individual turbine controllers. 3 The outputs of super controller module are the global controller commands and individual turbine controller commands.
The super controller dynamic library must be compiled with five procedures, whose arguments are outlined in Table 4.13.
Procedure 
Inputs 
Outputs 
Comments 




















To interact with the super controller, the individual turbine
controllers within each instance of OpenFAST must also be compiled as a
dynamic library. The single procedure, DISCON
, is unchanged from the
standard DISCON
interface for the Bladed wind turbine software
package, as defined by DNV GL, but with three extra arguments, as
outlined in Table 4.14.
Procedure 
Inputs 
Outputs 
Comments 





Note that at time zero, the super controller output calculation
(sc_calcOutputs
) is called before the call to the individual turbine
controllers (DISCON
). So, the initial outputs from the super
controller (from_SC
, from_SCglob
) are sent as inputs to the
individual turbine controllers, but the initial inputs to the super
controller from the individual turbine controller outputs (to_SC
) at
time zero are always zero. At subsequent time steps, the individual
turbine controllers (DISCON
) are called before the output
calculation of the super controller (sc_calcOutputs
). As a result,
at each time step other than time zero, the outputs from the super
controller (from_SC
, from_SCglob
) are extrapolated in time based
on past values within OF before being sent as input to the individual
turbine controllers. Thus, care should be taken to ensure that the
outputs from the super controller (from_SC
, from_SCglob
) vary
smoothly over time (without steps). See
Figure Fig. 4.57 for more information.
4.2.14.6.6. Commonly Encountered Errors¶
This section covers errors that have been commonly encountered by users during the development, verification, and use of FAST.Farm. Submit any additional errors or questions to the NWTC forum.
4.2.14.6.6.1. InflowWind Errors¶
InflowWind errors tend to be related to improperly setting the high or lowresolution domain sizes. Two such common errors are detailed here.
4.2.14.6.6.1.1. Turbine Leaving the Domain¶
The following error is commonly encountered:
T<n_t>:<routine name>:FAST_Solution0:CalcOutputs_And_SolveForInputs:
SolveOption2:InflowWind_CalcOutput:CalcOutput:IfW_4Dext_CalcOutput
[position=(1.8753, 0, 32.183) in windfile coordinates]:Interp4D:Outside
the grid bounds.
This error occurs when a turbine leaves the specified highresolution domain. This typically happens through improper domain specification or large blade deflections/structural motions. Note that coordinates in this error are in the local frame of reference of the turbine and are case dependent.
If the cause is improper domain specification, the error will trigger in the initialization stage of the simulation (<routine name>=FARM_InitialCO:FWrap_t0). In this case, a review of the primary FAST.Farm input file is suggested. In particular, the values of NX_High, NY_High, NZ_High, X0_High, Y0_High, Z0_High, dX_High, dY_High, and dZ_High, as these parameters define the size and location of the highresolution domain. Note that the error specifies which turbine (T<n\(_t\)>) the error has occurred for, which will aid in debugging where the error is.
If the cause is large blade deflection or structural motion, the error will trigger at some point during the simulation (<routine name>=FARM_UpdateStates:FWrap_t0). In this case, increasing the overall size of the highresolution domain could alleviate this problem. However, the user should first confirm that such large deflections/motions are expected and realistic and not due to a turbine modeling error.
4.2.14.6.6.1.2. Undefined Location¶
The following error is commonly encountered:
Farm_Initialize:InflowWind_CalcOutput:CalcOutput:IfW_TSFFWind_CalcOutput
[position=(5, 565, 5) in windfile coordinates]: FF wind array boundaries
violated: Grid too small in Y direction. Y=565; Y boundaries =
[555, 555]
This error occurs when FAST.Farm tries to access a point in the lowresolution domain that is not contained in the ambient wind file. Note that coordinates in this error are in the global frame of reference and are case dependent. For this error, a review of the primary FAST.Farm input file is suggested. In particular, the values of NX_Low, NY_Low, NZ_Low, X0_Low, Y0_Low, Z0_Low, dX_Low, dY_Low, and dZ_Low, as these parameters define the size and location of the lowresolution domain. The error specifies along which axis the error has occurred, aiding in debugging.
 1
TurbSim effectively neglects the spatial v and wcoherence in the default IEC case because these are not prescribed by the IEC design standards.
 2
When HAWC format is used (WindType = 5), _u, _v, _w must be appended to the file names.
 3
The super controller also has as input a placeholder for future global (e.g., wind) measurements in addition to commands or measurements from the individual turbine controllers. But the global inputs are currently null.