TurbSim memory requirements

I am trying to create a 1 hour wind file using TurbSim with the following input file and am getting an error allocating 1396MB for the velocity array.
Is this related to the allocation in the fortran code or the limits of a windows 32bit system with 3.16GB RAM? TurbSim managed a 30minute simulation although it was some hours…

[code]TurbSim Input File 5MWNREL

---------Runtime Options-----------------------------------
2318573 RandSeed1 - First random seed (-2147483648 to 2147483647)
RANLUX RandSeed2 - Second random seed (-2147483648 to 2147483647) for intrinsic pRNG, or an alternative pRNG: “RanLux” or “RNSNLW”
False WrBHHTP - Output hub-height turbulence parameters in binary form? (Generates RootName.bin)
False WrFHHTP - Output hub-height turbulence parameters in formatted form? (Generates RootName.dat)
True WrADHH - Output hub-height time-series data in AeroDyn form? (Generates RootName.hh)
False WrADFF - Output full-field time-series data in TurbSim/AeroDyn form? (Generates Rootname.bts)
False WrBLFF - Output full-field time-series data in BLADED/AeroDyn form? (Generates RootName.wnd)
True WrADTWR - Output tower time-series data? (Generates RootName.twr)
False WrFMTFF - Output full-field time-series data in formatted (readable) form? (Generates RootName.u, RootName.v, RootName.w)
False WrACT - Output coherent turbulence time steps in AeroDyn form? (Generates RootName.cts)
True Clockwise - Clockwise rotation looking downwind? (used only for full-field binary files - not necessary for AeroDyn)
1 ScaleIEC - Scale IEC turbulence models to exact target standard deviation? [0=no additional scaling; 1=use hub scale uniformly; 2=use individual scales]

--------Turbine/Model Specifications-----------------------
41 NumGrid_Z - Vertical grid-point matrix dimension
41 NumGrid_Y - Horizontal grid-point matrix dimension
0.05 TimeStep - Time step [seconds]
3600 AnalysisTime - Length of analysis time series [seconds] (program will add time if necessary: AnalysisTime = MAX(AnalysisTime, UsableTime+GridWidth/MeanHHWS) )
3600 UsableTime - Usable length of output time series [seconds] (program will add GridWidth/MeanHHWS seconds)
90.00 HubHt - Hub height [m] (should be > 0.5GridHeight)
138.00 GridHeight - Grid height [m]
138.00 GridWidth - Grid width [m] (should be >= 2
0 VFlowAng - Vertical mean flow (uptilt) angle [degrees]
0 HFlowAng - Horizontal mean flow (skew) angle [degrees]

--------Meteorological Boundary Conditions-------------------
“IECKAI” TurbModel - Turbulence model (“IECKAI”=Kaimal, “IECVKM”=von Karman, “GP_LLJ”, “NWTCUP”, “SMOOTH”, “WF_UPW”, “WF_07D”, “WF_14D”, or “NONE”)
“3” IECstandard - Number of IEC 61400-x standard (x=1,2, or 3 with optional 61400-1 edition number (i.e. “1-Ed2”) )
“A” IECturbc - IEC turbulence characteristic (“A”, “B”, “C” or the turbulence intensity in percent) (“KHTEST” option with NWTCUP model, not used for other models)
“NTM” IEC_WindType - IEC turbulence type (“NTM”=normal, “xETM”=extreme turbulence, “xEWM1”=extreme 1-year wind, “xEWM50”=extreme 50-year wind, where x=wind turbine class 1, 2, or 3)
default ETMc - IEC Extreme Turbulence Model “c” parameter [m/s]
IEC WindProfileType - Wind profile type (“JET”,“LOG”=logarithmic,“PL”=power law,“IEC”=PL on rotor disk,LOG elsewhere, or “default”)
90.00 RefHt - Height of the reference wind speed [m]
11.4 URef - Mean (total) wind speed at the reference height [m/s] (or “default” for JET wind profile)
default ZJetMax - Jet height [m] (used only for JET wind profile, valid 70-490 m)
default PLExp - Power law exponent [-] (or “default”)
default Z0 - Surface roughness length [m] (or “default”)

--------Non-IEC Meteorological Boundary Conditions------------
default Latitude - Site latitude [degrees] (or “default”)
0.05 RICH_NO - Gradient Richardson number
default UStar - Friction or shear velocity [m/s] (or “default”)
default ZI - Mixing layer depth [m] (or “default”)
default PC_UW - Hub mean u’w’ Reynolds stress (or “default”)
default PC_UV - Hub mean u’v’ Reynolds stress (or “default”)
default PC_VW - Hub mean v’w’ Reynolds stress (or “default”)
default IncDec1 - u-component coherence parameters (e.g. “10.0 0.3e-3” in quotes) (or “default”)
default IncDec2 - v-component coherence parameters (e.g. “10.0 0.3e-3” in quotes) (or “default”)
default IncDec3 - w-component coherence parameters (e.g. “10.0 0.3e-3” in quotes) (or “default”)
default CohExp - Coherence exponent (or “default”)

--------Coherent Turbulence Scaling Parameters-------------------
“M:\coh_events\eventdata” CTEventPath - Name of the path where event data files are located
“Random” CTEventFile - Type of event files (“LES”, “DNS”, or “RANDOM”)
true Randomize - Randomize the disturbance scale and locations? (true/false)
1.0 DistScl - Disturbance scale (ratio of wave height to rotor disk). (Ignored when Randomize = true.)
0.5 CTLy - Fractional location of tower centerline from right (looking downwind) to left side of the dataset. (Ignored when Randomize = true.)
0.5 CTLz - Fractional location of hub height from the bottom of the dataset. (Ignored when Randomize = true.)
30.0 CTStartTime - Minimum start time for coherent structures in RootName.cts [seconds]

NOTE: Do not add or remove any lines in this file!


Please see my newly added sticky post about memory requirements: [url]http://forums.nrel.gov/t/memory-requirements-for-full-field-wind-arrays/545/1]

A one-hour simulation with a 41x41 grid will use about 3 GB of RAM in TurbSim and will exceed the 2-GB limit imposed on 32-bit applications. You will need to run a 64-bit version of TurbSim on a 64-bit operating system for such a simulation. If you do not have a 64-bit OS, you will have to use a fewer number of grid points. If you do have a 64-bit OS, but not a 64-bit compiler, let me know and I will make a 64-bit version of TurbSim available for you. Future versions of TurbSim and InflowWind (used by FAST) will cycle through a 10-minute wind array and will eliminate the need for longer arrays. We also plan to distribute 64-bit versions of all our programs along with the current, 32-bit versions.

My calculations show that a a 41x41x3600 array will take about 1.5 GB of RAM in InflowWind, so you won’t need a 64-bit version of FAST to use it.

And yes, it is true that one-hour, high-resolution TurbSim runs take a really long time.

The TurbSim archive already contains a 64-bit executable file, named TurbSim64.exe.

Hi! Thanks for your quick replies Marshall and Bonnie.

I am running the 64bit version with the same input file (3GHz 16Gb RAM) and so far (8 or so hours) it has not completed the simulation.

Marshall, could you expand upon this…

Will longer time series be simply composed of units of 10minute simulations then or have I misunderstood? When do you anticipate a release of this turbsim/Inflow wind update?

Do you have any advice on which parts of the turbsim code I would need to look at/modify to speed up the current simulation, even if a 64bit o/s remains a requirement?

The simulation completed at approximately 9 hours simulation time which seems rather extended.

Perhaps it would be possible to speed up the generation of wind files, using a computer with sufficient memory, by storing all the data arrays simultaneously in memory without reading or writing from the file system. Then the data file could be written in a single step, once the data arrays had been calculated. Is this a possibility?

This could be a user option for the generation of large data files, using a powerful computer (for instance a 64-bit processor accessing 8GBytes Ram or more). From a scan through TurbSim, I think the instantaneous wind speeds are UXTmp, UYTmp and UZTmp. These are written out every time step and not stored in an array.

Rebecca (with input from Mark Spring)


After looking at your input file just now, I am confused why you chose to output only a hub-height file when you picked a 41x41 grid. The hub-height files write text for only the hub point, even though it calculates turbulence for 41x41 grid points (plus some tower points that you asked for). If you want turbulence at only the hub, you can greatly increase the speed of the simulation by reducing the number of points in the grid. If you are looking for output of all the grid points, you should choose the binary full-field .wnd or .bts files.

The wind speeds are stored simultaneously in memory, in a matrix named V. The variables you mention are temporary variables for calculating statistics for the hub point (and the hub-height files you output). The binary files are written at the end of the simulation; see subroutines WrBinBladed() for .wnd and WrBinTurbSim() for .bts. The binary files currently write once per time step (all the grid points at one time–if you wish to write only one time per file, you will get a stack-overflow error with large grids unless you modify some compiler settings).

The most time-consuming parts of the TurbSim simulation are the Cholesky decompositions that must be performed at each frequency on a coherence matrix with [n x m]^2 elements (where n and m are the number of grid points in the vertical and lateral directions). The speed of the simulation decreases rapidly as the number of grid points increases because of these factorizations.


I have created a wind field using TurbSim but when I run my fast simulation I receive the following error

Reading a 33x33 grid (200 m wide, 19 m to 219 m above ground) with a characteristic wind speed
of 5 m/s. This full-field file was generated by TurbSim (v1.06.00, 21-Sep-2012) on 11-Aug-2020
at 16:55:58.

FAST_InitializeAll:InflowWind_Init:IfW_TSFFWind_Init:READ_TurbSim_FF:Error allocating 1421798400
bytes of memory for the Full-field wind data array. array.

FAST encountered an error during module initialization.
Simulation error level: FATAL ERROR

Aborting OpenFAST.

It seems like a memory error, but it is weird to me that sometimes I can execute the simulation while other times it is not possible due to the error.

Is there any way to fix it?

Thank you in advance.

Best regards,

Hi Ioannis,

Your question is similar to the one you posted here: http://forums.nrel.gov/t/openfast-v2-3/2298/5. Again, it sounds like your model requires just about 2-GB of RAM and you are using the 32-bit version of OpenFAST. Reducing the memory requirements, e.g., by eliminating some analysis nodes, is likely the easiest solution if you can’t switch to the 64-bit version.

Best regards,

Hi Jason,

Thank you for your reply and sorry for repeating my question. I had fully understood what you had said but I was just curious why sometimes it is possible to run while other times this error is printed. It may depend on the tasks that my laptop runs at the specific moment.

Best regards,