FAST.Farm

Dear Jian,

Correct. In the current version of FAST.Farm merged into the dev branch of OpenFAST and soon to be migrated to main in OpenFAST v3.0, the wave kinematics are computed independently for each OpenFAST model. Of course, you can set each OpenFAST model to have similar (or the same) wave height, period, direction, etc, preferably with different wave seeds between turbines.

That said, we are in the process of introducing an option for including consistent wave kinematics throughout the wind farm (via a new FAST.Farm input, Mod_WaveField), as well as shared mooring systems, in the following pull request, still under review: github.com/OpenFAST/openfast/pull/747. With this version, Mod_WaveField = 1 works exactly as it does now, with each OpenFAST model defining independent wave kinematics. With Mod_WaveField = 2, the wave kinematics are defined by one OpenFAST model and the wave kinematics at the other wind turbines are defined based on the turbine spacing and wave propagation.

Best regards,

Dear Dr Jonkman,

Could you please share with me the pre-release of FAST.Farm ?

That would be a very valuable help for starting my PhD research.
Thanks!

Dear Adrien,

The pre-release of FAST.Farm has been merged into the dev branch of OpenFAST and will be migrated to the main branch in the release of OpenFAST v3.0.0 soon.

Best regards,

Dear Dr.Jonkman,

Thank you for your reply, and I look forward to V3.1 with the newly developed function.

Best regards,
Jian

Dear Jason,
I am waiting intensively to release FAST.Farm, Because i need it a lot in my PhD thesis.
When will this software be released? Could you please also share the prerelease with me?
Best Regards

Dear Li,

I’m not sure what is holding up the release of OpenFAST v3.0.0, which will include FAST.Farm, but you don’t need to wait for that to start using FAST.Farm. The links to the FAST.Farm source code, documentation, and sample models are included in the forum posts above within this topic.

Best regards,

Dear Jason,

I have two turbines with a distance between them of 8 times the rotor diameter (8D). The first turbine is yawed at 15 degrees. When I compute the power with different wind speeds (6m/s, 8m/s and 10m/s), there is weird turbulence happening at the second turbine at wind speed 8m/s and above, due to the wake effect of the first turbine, that does not stabilize. This turbulence is not happening for 6m/s for example (it stabilizes after a certain amount of time). I don’t know if it is normal to have something like that. Here are my simulations of 6m/s and 8m/s vizualized:

U=6m/s
Yaw15degreesU6.gif

U=8m/s
Yaw15degreesU8.gif

Do you have any suggestions to avoid such turbulence when the wind speed is higher than 8m/s (to stabilize them?)? Or is it normal to have them?

Kindest regards

Younes

Dear Younes,

I’m not exactly sure what is causing this. Which version of FAST.Farm are you using (does upgrading to the FAST.Farm released in OpenFAST v3.0.0 solve the problem)? What thrust coefficients are the wind turbines experiencing?

Best regards,

Dear Jason,

I would like to update FAST.Farm (by downloading the last version of OpenFAST and build it). Where can I find the last version? Is it in here : github.com/OpenFAST/openfast ?

Kindest regards

Younes

Dear Younes,

Yes, FAST.Farm has now been released in the main branch of OpenFAST, tagged as OpenFAST v3.0.0. You can find it here: github.com/OpenFAST/openfast/releases.

Best regards,

Dear Jason,

Thank you for the help. I updated to OpenFASTv3.0.0, but I still got the weird turbulence of the wake at the second turbine. It seems to be converging after a long simulation time (I took Tmax=2500s for a wind speed of 10m/s). Here is the input file, the output simulation visualization, and the output power and thrust coefficient of each turbine:

FAST.Farm input file:

FAST.Farm v1.00.* INPUT FILE
Sample FAST.Farm input file
--- SIMULATION CONTROL ---
False          Echo               Echo input data to <RootName>.ech? (flag)
"FATAL"       AbortLevel         Error level when simulation should abort (string) {"WARNING", "SEVERE", "FATAL"}
       1000   TMax               Total run time (s) [>=0.0]
True          UseSC              Use a super controller? (flag)
          2   Mod_AmbWind        Ambient wind model (-) (switch) {1: high-fidelity precursor in VTK format, 2: InflowWind module}
--- SUPER CONTROLLER --- [used only for UseSC=True]
"SC_DLLnew.dll"       SC_FileName        Name/location of the dynamic library {.dll [Windows] or .so [Linux]} containing the Super Controller algorithms (quoated string)
--- AMBIENT WIND ---
2.0                DT                 Time step for low -resolution wind data input files; will be used as the global FAST.Farm time step (s) [>0.0]
0.1          DT_High            Time step for high-resolution wind data input files (s) [>0.0]
"Unused"          WindFilePath       Path name to wind data files from precursor (string)
False              ChkWndFiles        Check all the ambient wind files for data consistency? (flag)
--- AMBIENT WIND: INFLOWWIND MODULE --- [used only for Mod_AmbWind=2]
2.0                DT                 Time step for low -resolution wind data interpolation; will be used as the global FAST.Farm time step (s) [>0.0]
0.1                DT_High            Time step for high-resolution wind data interpolation (s) [>0.0]
201               NX_Low             N130umber  of low -resolution spatial nodes in X direction for wind data interpolation (-) [>=2]
61                NY_Low             Number  of low -resolution spatial nodes in Y direction for wind data interpolation (-) [>=2]
17                 NZ_Low             Number  of low -resolution spatial nodes in Z direction for wind data interpolation (-) [>=2]
0.0                X0_Low             Origin  of low -resolution spatial nodes in X direction for wind data interpolation (m)
-300.0             Y0_Low             Origin  of low -resolution spatial nodes in Y direction for wind data interpolation (m)
10.0               Z0_Low             Origin  of low -resolution spatial nodes in Z direction for wind data interpolation (m)
10.0               dX_Low             Spacing of low -resolution spatial nodes in X direction for wind data interpolation (m) [>0.0]
10.0               dY_Low             Spacing of low -resolution spatial nodes in Y direction for wind data interpolation (m) [>0.0]
10.0               dZ_Low             Spacing of low -resolution spatial nodes in Z direction for wind data interpolation (m) [>0.0]
35                 NX_High            Number  of high-resolution spatial nodes in X direction for wind data interpolation (-) [>=2]
45                 NY_High            Number  of high-resolution spatial nodes in Y direction for wind data interpolation (-) [>=2]
17                 NZ_High            Number  of high-resolution spatial nodes in Z direction for wind data interpolation (-) [>=2]
"WakeEffect_inflow_nFF_Var.dat"   InflowFile         Name of file containing InflowWind module input parameters (quoted string)
--- WIND TURBINES ---
2                 NumTurbines        Number of wind turbines (-) [>=1]                          [last 6 columns used only for Mod_AmbWind=2]
WT_X   WT_Y   WT_Z   WT_FASTInFile             X0_High  Y0_High  Z0_High  dX_High  dY_High  dZ_High
(m)    (m)    (m)    (string)                   (m)      (m)      (m)      (m)      (m)      (m)
126  0  0.0    "WakeEffect_WT1_nFFlit.fst"            100    -150   10.0      10.0     10.0     10.0
1134.0  0.0  0.0    "WakeEffect_WT2_nFFlit.fst"            1108.0    -150.0   10.0      10.0     10.0     10.0  
--- WAKE DYNAMICS ---
2.0                dr                 Radial increment of radial finite-difference grid (m) [>0.0]
110                 NumRadii           Number of radii in the radial finite-difference grid (-) [>=2]
130                N63umPlanes          N130umber of wake planes (-) [>=2]
DEFAULT            f_c                Cut-off (corner) frequency of the low-pass time-filter for the wake advection, deflection, and meandering model (Hz) [>0.0] or DEFAULT [DEFAULT=0.0007]
DEFAULT            C_HWkDfl_O         Calibrated parameter in the correction for wake deflection defining the horizontal offset at the rotor                                               (m    ) or DEFAULT [DEFAULT= 0.0  ]
DEFAULT            C_HWkDfl_OY        Calibrated parameter in the correction for wake deflection defining the horizontal offset at the rotor scaled with                         yaw error (m/deg) or DEFAULT [DEFAULT= 0.3  ]
DEFAULT            C_HWkDfl_x         Calibrated parameter in the correction for wake deflection defining the horizontal offset              scaled with downstream distance               (-    ) or DEFAULT [DEFAULT= 0.0  ]
DEFAULT            C_HWkDfl_xY        Calibrated parameter in the correction for wake deflection defining the horizontal offset              scaled with downstream distance and yaw error (1/deg) or DEFAULT [DEFAULT=-0.004]
DEFAULT            C_NearWake         Calibrated parameter for the near-wake correction (-) [>1.0] or DEFAULT [DEFAULT=1.8]
DEFAULT            k_vAmb             Calibrated parameter for the influence of ambient turbulence in the eddy viscosity (-) [>=0.0] or DEFAULT [DEFAULT=0.05 ]
DEFAULT            k_vShr             Calibrated parameter for the influence of the shear layer    in the eddy viscosity (-) [>=0.0] or DEFAULT [DEFAULT=0.016]
DEFAULT            C_vAmb_DMin        Calibrated parameter in the eddy viscosity filter function for ambient turbulence defining the transitional diameter fraction between the minimum and exponential regions (-) [>=0.0          ] or DEFAULT [DEFAULT= 0.0 ]
DEFAULT            C_vAmb_DMax        Calibrated parameter in the eddy viscosity filter function for ambient turbulence defining the transitional diameter fraction between the exponential and maximum regions (-) [> C_vAmb_DMin  ] or DEFAULT [DEFAULT= 1.0 ]
DEFAULT            C_vAmb_FMin        Calibrated parameter in the eddy viscosity filter function for ambient turbulence defining the value in the minimum region                                                (-) [>=0.0 and <=1.0] or DEFAULT [DEFAULT= 1.0 ]
DEFAULT            C_vAmb_Exp         Calibrated parameter in the eddy viscosity filter function for ambient turbulence defining the exponent in the exponential region                                         (-) [> 0.0          ] or DEFAULT [DEFAULT= 0.01]
DEFAULT            C_vShr_DMin        Calibrated parameter in the eddy viscosity filter function for the shear layer    defining the transitional diameter fraction between the minimum and exponential regions (-) [>=0.0          ] or DEFAULT [DEFAULT= 3.0 ]
DEFAULT            C_vShr_DMax        Calibrated parameter in the eddy viscosity filter function for the shear layer    defining the transitional diameter fraction between the exponential and maximum regions (-) [> C_vShr_DMin  ] or DEFAULT [DEFAULT=25.0 ]
DEFAULT            C_vShr_FMin        Calibrated parameter in the eddy viscosity filter function for the shear layer    defining the value in the minimum region                                                (-) [>=0.0 and <=1.0] or DEFAULT [DEFAULT= 0.2 ]
DEFAULT            C_vShr_Exp         Calibrated parameter in the eddy viscosity filter function for the shear layer    defining the exponent in the exponential region                                         (-) [> 0.0          ] or DEFAULT [DEFAULT= 0.1 ]
DEFAULT            Mod_WakeDiam       Wake diameter calculation model (-) (switch) {1: rotor diameter, 2: velocity based, 3: mass-flux based, 4: momentum-flux based} or DEFAULT [DEFAULT=1]
DEFAULT            C_WakeDiam         Calibrated parameter for wake diameter calculation (-) [>0.0 and <0.99] or DEFAULT [DEFAULT=0.95] [unused for Mod_WakeDiam=1]
DEFAULT            Mod_Meander        Spatial filter model for wake meandering (-) (switch) {1: uniform, 2: truncated jinc, 3: windowed jinc} or DEFAULT [DEFAULT=3]
DEFAULT            C_Meander          Calibrated parameter for wake meandering (-) [>=1.0] or DEFAULT [DEFAULT=1.9]
--- VISUALIZATION ---
False              WrDisWind          Write low- and high-resolution disturbed wind data to <RootName>.Low.Dis.t<n>.vtk etc.? (flag)
1                 NOutDisWindXY      Number of XY planes for output of disturbed wind data across the low-resolution domain to <RootName>.Low.DisXY<n_out>.t<n>.vtk (-) [0 to 9]
90.0               OutDisWindZ        Z coordinates of XY planes for output of disturbed wind data across the low-resolution domain (m) [1 to NOutDisWindXY] [unused for NOutDisWindXY=0]
0                  NOutDisWindYZ      Number of YZ planes for output of disturbed wind data across the low-resolution domain to <RootName>/Low.DisYZ<n_out>.t<n>.vtk (-) [0 to 9]
748.0, 1252.0, 1378.0, 1504.0, 1630.0, 1756.0, 1882.0, 2008.0   OutDisWindX        X coordinates of YZ planes for output of disturbed wind data across the low-resolution domain (m) [1 to NOutDisWindYZ] [unused for NOutDisWindYZ=0]
0                  NOutDisWindXZ      Number of XZ planes for output of disturbed wind data across the low-resolution domain to <RootName>/Low.DisXZ<n_out>.t<n>.vtk (-) [0 to 9]
126.0, 504.0             OutDisWindY        Y coordinates of XZ planes for output of disturbed wind data across the low-resolution domain (m) [1 to NOutDisWindXZ] [unused for NOutDisWindXZ=0]
20.0                WrDisDT            Time step for disturbed wind visualization output (s) [>0.0] or DEFAULT [DEFAULT=DT] [unused for WrDisWind=False and NOutDisWindXY=NOutDisWindYZ=NOutDisWindXZ=0]
--- OUTPUT ---
True               SumPrint           Print summary data to <RootName>.sum? (flag)
99999.9            ChkptTime          Amount of time between creating checkpoint files for potential restart (s) [>0.0]
0.0              TStart             Time to begin tabular output (s) [>=0.0]
1                  OutFileFmt         Format for tabular (time-marching) output file (switch) {1: text file [<RootName>.out], 2: binary file [<RootName>.outb], 3: both}
True               TabDelim           Use tab delimiters in text tabular output file? (flag) {uses spaces if False}
"ES10.3E2"         OutFmt             Format used for text tabular output, excluding the time channel.  Resulting field should be 10 characters. (quoted string)
16                 NOutRadii          Number of radial nodes         for wake output for an individual rotor (-) [0 to 20]
0, 2, 4, 8, 9, 11, 13, 15, 17, 19, 21, 24, 28, 33, 50, 64  OutRadii           List of radial nodes         for wake output for an individual rotor (-) [1 to NOutRadii] [unused for NOutRadii=0]
8                  NOutDist           Number of downstream distances for wake output for an individual rotor (-) [0 to 9 ]
0.0, 378.0, 504.0, 630.0, 756.0, 882.0, 1008.0, 1134.0       OutDist            List of downstream distances for wake output for an individual rotor (m) [1 to NOutDist ] [unused for NOutDist =0]
1                  NWindVel           Number of points for wind output (-) [0 to 9]
126.0             WindVelX           List of coordinates in the X direction for wind output (m) [1 to NWindVel] [unused for NWindVel=0]
0.0             WindVelY           List of coordinates in the Y direction for wind output (m) [1 to NWindVel] [unused for NWindVel=0]
90.0               WindVelZ           List of coordinates in the Z direction for wind output (m) [1 to NWindVel] [unused for NWindVel=0]
                   OutList            The next line(s) contains a list of output parameters.  See OutListParameters.xlsx for a listing of available output channels (quoted string)
"RtAxsXT1     , RtAxsYT1     , RtAxsZT1"
"RtPosXT1     , RtPosYT1     , RtPosZT1"
"YawErrT1"
"TIAmbT1"
"RtVAmbT1, RtVAmbT2"
"WkPosXT1D1   , WkPosXT1D2   , WkPosXT1D3   , WkPosXT1D4   , WkPosXT1D5   , WkPosXT1D6   , WkPosXT1D7, WkPosXT1D8"
"WkPosYT1D1   , WkPosYT1D2   , WkPosYT1D3   , WkPosYT1D4   , WkPosYT1D5   , WkPosYT1D6   , WkPosYT1D7, WkPosYT1D8"
"WkDiamT1D1   , WkDiamT1D2   , WkDiamT1D3   , WkDiamT1D4   , WkDiamT1D5   , WkDiamT1D6   , WkDiamT1D7, WkDiamT1D8"
END of input file (the word "END" must appear in the first 3 columns of this last OutList line)

FAST.Farm output power and thrust coefficient:

FAST.Farm vizualization:
Vizualize.gif

I hope this will make things clearer.

Kindest regards

Younes

Dear Jason,

I extended the space in the X direction (X_low), and it seems that this solves the issue as you can see below:

8DU19Yaw15.gif

Thank you for the help!

Kindest regards

Younes

1 Like

Dear Younes,

OK, thanks for the additional information. It appears that there is a bug or some algorithmic problem that gets triggered when multiple wakes merge at the downstream boundary. The wake planes are supposed to leave the low-resolution domain without issue, but clearly something is not behaving as expected as soon as the upstream wind turbine’s wake hits the downstream boundary. And the problem exists with the newest version of FAST.Farm in publicly released in OpenFAST v3.0.0 and is not associated with abnormal rotor thrust. There doesn’t seem to be a problem when only the downstream wind turbine’s wake leaves the downstream boundary of the low-resolution domain.

It sounds like you have found a suitable workaround–i.e., extending the low-resolution domain so that the upstream wind turbine’s wake does not hit the downstream boundary of the low-resolution domain. But this is a problem that we should fix anyway.

Can you share your full set of input files so that we can debug the issue and identify a solution?

Best regards,

Dear Jason,

I am interested in the consistent wave kinematics throughout the wind farm and the shared mooring systems. I’ve read this topic in that pull request.

What I want to know is if this would be available in OpenFAST v3.1.0, and when will it be? On the other hand, I ve seen the part of files changed of the pull request; if I change all that files, will it work for me? I am working with OpenFAST v3.0.0.

Other issue is that when I simulate an offshore wind farm with the OC4 example available in the r-test of OpenFAST, I can not visualizate the morrison.

Best regards,

RaĂșl Palacios.

Dear RaĂșl,

I know that I still need to review pull request #747 (github.com/OpenFAST/openfast/pull/747) for consistency with the implementation plan for consistent wave kinematics and shared mooring systems that I helped develop. But speaking with Matt Hall, I understand that these features of FAST.Farm that are being introduced through pull request #747 are working as expected. So, you should be able to compile this branch of FAST.Farm to make use of these new features before they are merged into the dev and main branches of OpenFAST.

NREL is working to merge the multiple pull requests into dev and eventually into main (including resolving merge conflicts), but I’m not sure if it is has been decided which pull requests will be included in OpenFAST v3.1 or when this release may happen.

Regarding the inability of OpenFAST v3.0.0 to visualize the Morison members of the OC4-DeepCwind semisubmersible (and other Morison members), this is a known issue as reported here: github.com/OpenFAST/openfast/issues/776.

Best regards,

Hello everybody,

   Recently, I am studying the SuperController of Fast.farm, and I studied the sample that Jason supplied. But this sample seem don't have the specific parameter, such as the turbine parameter, turbine state parameter. Because I am not so familiar to the turbine control and the Fortran, I face great difficulty. So I hope someone could give me a SuperController sample which Include some specific parameter, and best have the put-in and put-out.

Thank you in advance.

Best regards,

Jiaping.Cui

Dear Jiaping,

I don’t have another public super controller example to share with you, but the example shared does have one parameter unique to each wind turbine (NumParamTurbine = 1). The super controller interface is also documented in the FAST.Farm User’s Guide and Theory Manual: openfast.readthedocs.io/en/main 
 controller.

Best regards,

Dear Jason,

Thank you for your reply quickly.

Recently, I found a paper named “Wind plant power optimization through yaw control using a parametric model for wake effects—a CFD simulation study”, and the DOI is “10.1002/we.1822”. In this paper, the authors used the SOWFA tool combined the FLORIS model to make the yaw control in wind plant. So I want to know whether the FLORIS model could be used in the SuperController of FAST.Farm? And I found the FLORIS was wrote by Python, but the SuperController by Fortran, so have a interface between them or the FLORIS can be transport to the form of Fortran?

Thank you in advance.

Best regards,
Jiaping.Cui

Dear JIaping.Cul,

FLORIS is a steady-state solver used to find optimal yaw angles of wind turbines in wind farms to maximize energy capture through wake steering. Typically you’d use FLORIS to derive a look-up table of yaw angles as a function of wind condition (wind direction, turbulence level / stability). But FLORIS will not generate the super controller source code or dynamic library for you. And you don’t necessarily need to implement a super controller to implement different, but fixed, yaw angles for each wind turbine in the wind farm within FAST.Farm. Instead, you can implement these fixed yaw angles directly within the OpenFAST models and change the yaw angles when simulating different wind conditions in separate FAST.Farm simulations.

Regardless, FLORIS is available here: github.com/NREL/floris.

Best regards,

Dear Jason,

Recently I worked on the SuperController of FAST.Farm, But a code have puzzled me for a long time. Hoping to get your simple and clear explanation.

First, I can’t understand the “real( , C_FLOAT)”, is it a library functions? If that, what is its function?

Second, why the coefficient are “*.1” and “*0.0” separately?

And finally, have you some new public publication about the FAST.Farm or the SuperController recently? If had, can you send it to me? I thought that will be very important for me to study the SuperController.

Thank you in advance.

Best regards,
Jiaping.Cui