Using TurbSim for large wind farms

Dear @Jason.Jonkman
Yes, this is the work I want to do in the future. But before that, I hope to generate a large number of dense grids. When the area is large (such as my current grid height of 180 and width of 380), it is difficult for me to generate high-precision grids. I want to know if this is related to the code or the hardware performance of the computer?
Also, I would like to know what aspects I need to pay attention to if I want to generate a non-uniform discrete grid at the bottom, or even a grid that varies over time (similar to the elevation distribution of waves)?

Best Regards,

Dear @Lei.Xue,

I’m not familiar enough with the TurbSim source code to provide guidance on modifications to support nonuniform grids. To get around this existing limitation of TurbSim, when using TurbSim to generate inflow for FAST.Farm, we typically recommend using Mod_AmbWind = 3, which makes use of multiple TurbSim files–one for the coarse, low resolution domain around the farm and separate ones for the high-resolution domains around each wind turbine. Guidance for using Mod_AmbWind = 3 is provided in the online FAST.Farm documentation (4.2.15.6. Modeling Guidance — OpenFAST v3.5.2 documentation) and Python scripts to automate the process are available in the OpenFAST Toolbox: openfast_toolbox/openfast_toolbox/fastfarm at main · OpenFAST/openfast_toolbox · GitHub.

Regardless, TurbSim is not parallalized, so, I would expect you’d have difficult if the number of grid points per plane exceeds about 1600 points. Here is a link to an older topic that discusses the CPU time expected with TurbSim simulations: TurbSim CPU Times

Best regards,

Hello,

Sorry to reopen the discussion, but I have questions about ambient mode 3. I used the various scripts provided in this discussion and applied them to my case study involving two aligned 22MW turbines. After generating my synthetic wind with TurbSim and obtaining my three files Low.bts and High_T{i}.bts, I do not find the offset presented by @Regis.Thedin.

Thank you in advance for your help.

Hi Tom,
The offset is done automatically by the toolbox and takes into account the mean wind speed and the location of each individual turbine. The time series used for the constrained TurbSim execution of the high-res boxes contain that offset.

I’m not sure where exactly these curves you showed are coming from, but I suggest you plot 4 curves to help identify the problem: (i) time series from the low-res at the location of interest (say, T1); (ii) the time series as given by the text file given as input to the high-res box of the same location of interest; (iii) the time series at the center of the high-res box, as generated by TurbSim; (iv) the wind speed as observed by the turbine.

The curves (ii-iv) should all match (within interpolation tolerances), and should all the offset from curve (i).

Hi Regis,

Thank you for your response
I have plotted the four curves as requested. So, I plotted (i) the low.bts file at hub level. I plotted (ii) the time series extracted from the low.bts file at hub level. I plotted (iii) the data from the HighT1.bts file and finally the data from the FAST.Farm simulation (FAST.Farm.T1.out). I do get an offset, but it’s approximately 8 seconds. However, the first turbine is located 1000 meters from the leading edge. Normally, if I use the formula ‘round((xt/Vmid.mean())/bts.dt)’, I should be around 150 seconds of offset with xt = 1000, Vmid = 18, and bts.dt = 0.35.

Best regards,

I’m not sure why you are getting an offset of only 8 seconds. The offset is calculated on these lines. As you can see, the same equation you just gave is the one used to compute start_time_step. Can you put a breakpoint around those lines and double check what numbers you are seeing, in addition to a quick plot of uvel? I would also check what xt, Vmid and bts.dt are and if there is any inconsistency with what you were expecting.

Hello @Regis.Thedin,

I followed your instructions and double-checked all the parameters. However, I am still getting the wrong offset.

When I plot the setup using the plotSetup function, I obtain the figure above. Upon closer inspection, it seems that the TurbSim reference frame is near the first turbine. Could this explain the 8-second offset?

I have also plotted uvel and uvel-hr, which are defined in the code as follows:

uvel = np.roll(bts['u'][0, :, jTurb, kTurb], start_time_step)
vvel = np.roll(bts['u'][1, :, jTurb, kTurb], start_time_step)
wvel = np.roll(bts['u'][2, :, jTurb, kTurb], start_time_step)

time_hr = np.arange(time[0], tmax+dt_high, dt_high)
uvel_hr = np.interp(time_hr, time, uvel)
vvel_hr = np.interp(time_hr, time, vvel)
wvel_hr = np.interp(time_hr, time, wvel)

I am continuing to look into the code to find the answer.

Best Regards,

Hi Tom,

The domain around the turbines is trimmed down. There is no need to have flow field much ahead of the most-upstream turbine or much further downstream the most-downstream turbine. The parameter extent* (e.g., here) gives an extra spacing around the farm. If you set such values to zero, you will have a domain very tight around the convex hull of your farm.

When you mentioned your turbine was at x=1000, I interpreted as 1000m from another upstream turbine. If your turbine is at x=1000, but there is nothing upstream of it, then for TurbSim (and FAST.Farm) purposes, this first 1000m of your domain do not matter. It makes sense that you are seeing a very short offset if your turbine is very close to the edge of the trimmed-down domain.

If you are using the toolbox for FAST.Farm case generation, you can also use <your_object>.plot() to see the overall layout and domain.

If your T2 is at x=3200 and your T1 offset is 8s, I would expect that the offset of your second turbine is around 350+8=358s.

Regarding your plot, can you clarify exactly which arrays you are plotting against which time arrays? It’s unclear why the orange curve is stopping at 40s.