IEC:61400 -1 2019 for turbulence intensity in TurbSim

Hi Jason:
I am seeking clarification on the following that is used to compute the turbulence intensity in IEC:61400:1-2019, which is subsequently used in TurbSim.

For NTM it states that:
sigma 1 = IRef(0.75Vhub+b); where b = 5.6 m/s.

Wind turbine classes are given as A+ to C and for example class A, IRef=0.16, so using equation above sigma1 can be determined and the TI found by:
sigma1/Vhub. 1) Is this understanding correct?
Also, it defines the category as A+ for very high turbulence and C for very low.
2) Is there a turbulence criteria that causes one to know whether they are in the high or low category?
I arbitrarily chose B for two site locations I am investigating to arrive at a different TI for each site but have no basis for why I chose B.

Finally I read some notes that said that TI = standard deviation of wind speed/mean wind speed (mean wind speed at hub height in this case).
3)If I have the wind time series can I find, standard deviation/Vhub, and use the percentage obtained as the TI at each site location in TurbSim instead of using formula above? I am essentially trying to determine an appropriate value for TI for both sites given the data that I have.
4) Also, if TI is entered as percentage in TurbSim for 10% do I just enter 10 instead of A, for example?

Thank you.

Regards,
AOAW

Dear Andre,

Here are my answers to your questions:

  1. Yes.
  2. I’m not an expert on this topic, but a site assessment or site suitability analysis is performed to test the turbulence conditions at an actual site. See section 11 of IEC 61400-1, 2019. Keep in mind that sigma1 in the equation you reference represents the 90% quantile of the turbulence distribution at each wind speed bin.
  3. Yes, if you want to use site-specific data rather than a standard turbulence design class.
  4. Yes.

Best regards,

Many thanks Jason.

Regards,
AOAW

Hi Jason:

I have a further query on the turbulence intensity being entered as a percentage. The TurbSim theory manual states the following:
If the IECturbc parameter was specified as a percentage instead of as a standard turbulence category, the wind model must be “NTM.”

Does this statement mean that the normal turbulence model is still used to derive the turbulence intensity?

Would be very grateful for some clarification as I thought that if TI was not entered as a category, for example A, but as a percentage, then the NTM would have no longer been utilized.

Regards,
AOAW

Dear Andre,

Input parameter IEC_WindType in TurbSim is either NTM, ETM, or EWM. For the ETM and EWM, you must specify the turbulence class and recurrence probability, which uniquely determines the turbulent conditions. But for NTM, you can specify the TI directly rather than the turbulence class.

Best regards,

Thanks Jason. Need to further clarify.

So does it means that whether you enter a category or a percentage for the turbulence intensity, for the NTM it is still the IEC NTM that is utilized in TurbSim?

I am trying to confirm whether even if a percentage is used, it is the IEC NTM that is used by TurbSim or maybe it is that if the TI as a percentage is different from that given by the NTM then you can enter the percentage and stating NTM is just prodecural. I determined my TI using data for the site and did not use the standard NTM model given in IEC:61400. The TI that I computed were different from those given by the IEC standard model. So trying to see how/if this differentiation can me made in TurbSim.

Hope I am clear.

Regards,
AOAW

Dear Andre,

I would say it is more procedural. If you specify a TI directly, then this will override the standard TI defined by the turbulence class for the NTM model.

Best regards,

Noted Jason.
Thank you.

Regards,
AOAW

Dear Jason,
Apologies if it has been answered before, but after reading this discussion I am still not clear on how the TI value is used in Turbsim and I find incoherences with what I thought I understood.

I have run the following turbsim file, which according to what I expected should have a TI of exactly 0.12

--------Turbine/Model Specifications-----------------------
17            NumGrid_Z     - Vertical grid-point matrix dimension
17            NumGrid_Y     - Horizontal grid-point matrix dimension
0.5           TimeStep      - Time step [seconds]
4800          AnalysisTime  - Length of analysis time series [seconds
"ALL"         UsableTime    - Usable length of output time series [se
150           HubHt         - Hub height [m] (should be > 0.5*GridHei
160.0         GridHeight    - Grid height [m]
160.0         GridWidth     - Grid width [m] (should be >= 2*(RotorRa
0             VFlowAng      - Vertical mean flow (uptilt) angle [degr
0             HFlowAng      - Horizontal mean flow (skew) angle [degr

--------Meteorological Boundary Conditions-------------------
"IECKAI"      TurbModel     - Turbulence model ("IECKAI","IECVKM","GP
"unused"      UserFile      - Name of the file that contains inputs f
"1-Ed3"       IECstandard   - Number of IEC 61400-x standard (x=1,2, 
"12"           IECturbc      - IEC turbulence characteristic ("A", "B
"NTM"         IEC_WindType  - IEC turbulence type ("NTM"=normal, "xET
default       ETMc          - IEC Extreme Turbulence Model "c" parame
"PL"          WindProfileType - Velocity profile type ("LOG";"PL"=pow
"unused"      ProfileFile   - Name of the file that contains input pr
150           RefHt         - Height of the reference velocity (URef)
15.0          URef          - Mean (total) velocity at the reference 
default       ZJetMax       - Jet height [m] (used only for JET veloc
0.14          PLExp         - Power law exponent [-] (or "default")
0.002         Z0            - Surface roughness length [m] (or "defau

However when post processing the file, using all the definitions of TI that I know I still can not find my 0.12 value.

    import numpy as np 
    from openfast_toolbox.io import TurbSimFile
    turbsimFile = "testTurbsim.inp"
    tsOutputFile = f"{turbsimFile[:-4]}.bts"
    ts = TurbSimFile(tsOutputFile)
    u,v,w = ts.valuesAt(y=0,z=150)
    U = np.sqrt(u**2+v**2+w**2)
    print(f"TI (IEC definition) is {0.12*(0.75*np.mean(U)+5.6)/np.mean(U):.4f}")
    print(f"TI (standard definition std) is {np.std(U)/np.mean(U):.4f}")
    print(f"TI (standard definition 90%) is {(np.percentile(U,90)-np.mean(U))/np.mean(U):.4f}")

Output :

TI (IEC definition) is 0.1345

TI (standard definition std) is 0.1136

TI (standard definition 90%) is 0.1492

Can you please enlighten me on the matter ?

Best regards,

Maximilien

Dear @Maximilien.Andre,

When you specify a numerical value for IECturbc in TurbSim, this is used to set to the standard deviation of the u-component only, i.e.,

IECturbc/100 = std(u) / mean(u)

Whether the wind field generated by TurbSim will match this user-specified value directly will be impacted by the setting of TurbSim input ScaleIEC.

Best regards,

Dear Jason,

Thank you for your answer, by applying the proposed modifications I succesfully measured std(u)/mean(u) = 0.12 when specifying IECturbc = 12.

However there is something more I do not understand. When using IECturbc = “C” with a wind speed of 15 m/s, according to the formula from the 61400-1 norm I should measure TI = 0.1348

image

I don’t understand the measure it is supposed to relate to : I have tried using std, 1.28*std (90th percentile for gaussian law) and actual 90th percentile, all measures fail to provide the target 0.1348. Do you know how this should be interpreted ?

INPUT


    print(f"Target (IEC definition) is {0.12*(0.75*np.mean(U)+5.6)/np.mean(U):.4f}")
    print(f"TI (ratio std) is {np.std(U)/np.mean(U):.4f}")
    print(f"TI (ratio 1.28 std) is {1.28*np.std(U)/np.mean(U):.4f}")
    print(f"TI (ratio 90%) is {(np.percentile(U,90)-np.mean(U))/np.mean(U):.4f}")

OUTPUT

Target (IEC definition) is 0.1348

TI (ratio std) is 0.1288

TI (ratio 1.28 std) is 0.1649

TI (ratio 90%) is 0.1683

Best regards,

Maximilien

Dear @Maximilien.Andre,

The formula you state from IEC 61400-1 is the formula for std(u). The statement about 90th percentile in IEC 61400-1 is in regards to the given site conditions–that is, the turbulence class in IEC is meant to represent the 90th percentile of the range of turbulence conditions at the site.

Best regards,

Dear Jason, thank you for your answer and your time. Last time I had not fully understood how IEC defines the TI criterium but now I think I have a better undestanding of it. If I am not wrong, IEC states that for a class C turbine, if we measure many 10 min bins at hub height, when the average wind speed is 15 mps, we should have a distribution of different TI, with the mean of this distribution being at 0.12 and the 90th percentile being at 0.1348. Can you first confirm that my understanding is correct ?

If so, I need further clarifications on how it is used in Turbsim. I ran 1000 10min wind simulations, at a hub height of 100m and with an average wind speed of 15 mps. Here is the measured distribution, with the expected statistical values and what was actually measured. I will also attach my input Turbsim file.

Thank you for your valuable time,

Maximilien

TI_u

################################################

---------TurbSim v2.00.* Input File------------------------
Example       input         - file for TurbSim.
---------Runtime Options-----------------------------------
False         Echo          - Echo input data to <RootName>.ech (flag)
1.0           RandSeed1     - First random seed (-2147483648 to 2147483647)
RANLUX        RandSeed2     - Second random seed (-2147483648 to 2147483647)
False         WrBHHTP       - Output hub-height turbulence parameters in bin
True          WrFHHTP       - Output hub-height turbulence parameters in for
False         WrADHH        - Output hub-height time-series data in AeroDyn 
True          WrADFF        - Output full-field time-series data in TurbSim/
False         WrBLFF        - Output full-field time-series data in BLADED/A
False         WrADTWR       - Output tower time-series data? (Generates Root
False         WrFMTFF       - Output full-field time-series data in formatte
False         WrACT         - Output coherent turbulence time steps in AeroD
True          Clockwise     - Clockwise rotation looking downwind? (used onl
0             ScaleIEC      - Scale IEC turbulence models to exact target st

--------Turbine/Model Specifications-----------------------
17            NumGrid_Z     - Vertical grid-point matrix dimension
17            NumGrid_Y     - Horizontal grid-point matrix dimension
0.5           TimeStep      - Time step [seconds]
600           AnalysisTime  - Length of analysis time series [seconds] (prog
"ALL"         UsableTime    - Usable length of output time series [seconds] 
100           HubHt         - Hub height [m] (should be > 0.5*GridHeight)
160.0         GridHeight    - Grid height [m]
160.0         GridWidth     - Grid width [m] (should be >= 2*(RotorRadius+Sh
0             VFlowAng      - Vertical mean flow (uptilt) angle [degrees]
0             HFlowAng      - Horizontal mean flow (skew) angle [degrees]

--------Meteorological Boundary Conditions-------------------
"IECKAI"      TurbModel     - Turbulence model ("IECKAI","IECVKM","GP_LLJ","
"unused"      UserFile      - Name of the file that contains inputs for user
"1-Ed3"       IECstandard   - Number of IEC 61400-x standard (x=1,2, or 3 wi
"C"           IECturbc      - IEC turbulence characteristic ("A", "B", "C" o
"NTM"         IEC_WindType  - IEC turbulence type ("NTM"=normal, "xETM"=extr
default       ETMc          - IEC Extreme Turbulence Model "c" parameter [m/
"PL"          WindProfileType - Velocity profile type ("LOG";"PL"=power law;
"unused"      ProfileFile   - Name of the file that contains input profiles 
100           RefHt         - Height of the reference velocity (URef) [m]
15.0          URef          - Mean (total) velocity at the reference height 
default       ZJetMax       - Jet height [m] (used only for JET velocity pro
0.14          PLExp         - Power law exponent [-] (or "default")
0.002         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 [m^2/s^2] (or "d
default       PC_UV         - Hub mean u'v' Reynolds stress [m^2/s^2] (or "d
default       PC_VW         - Hub mean v'w' Reynolds stress [m^2/s^2] (or "d

--------Spatial Coherence Parameters----------------------------
default       SCMod1        - u-component coherence model ("GENERAL", "IEC",
default       SCMod2        - v-component coherence model ("GENERAL", "IEC",
default       SCMod3        - w-component coherence model ("GENERAL", "IEC",
default       InCDec1       - u-component coherence parameters for general o
default       InCDec2       - v-component coherence parameters for general o
default       InCDec3       - w-component coherence parameters for general o
default       CohExp        - Coherence exponent for general model [-] (or "

--------Coherent Turbulence Scaling Parameters-------------------
"unused"      CTEventPath   - Name of the path where event data files are lo
"Random"      CTEventFile   - Type of event files ("LES", "DNS", or "RANDOM"
True          Randomize     - Randomize the disturbance scale and locations?
1.0           DistScl       - Disturbance scale [-] (ratio of event dataset 
0.5           CTLy          - Fractional location of tower centerline from r
0.5           CTLz          - Fractional location of hub height from the bot
30.0          CTStartTime   - Minimum start time for coherent structures in

Dear @Maximilien.Andre,

I agree that for IEC class C with I_ref = 0.12 and V_hub = 15 m/s, that the 90th percentile TI is 0.1348. However, I_ref doesn’t correspond to the mean (50th percentile), rather, as stated in IEC, I_ref corresponds to the 70th percentile.

That said, this IEC description is related to the assumed distribution of TI at a given site. TurbSim is not set up to calculate the distribution of TI at a site. Rather, TurbSim computes the full-field turbulent inflow for a given set of conditions.

The distribution of TI that TurbSim will produce for different seeds of a given setup is related to the numerical set-up of TurbSim, with the generated TI on average less than the specified TI. Increasing the time series length and/or decreasing the time step will result in a generated TI that is closer to the specified TI. To get around this numerical issue, you can use the TurbSim input ScaleIEC to scale the TurbSim output such that the generated TI matches the specified TI exactly. See the TurbSim User’s Guide, especially the discussion around ScaleIEC for more information: https://openfast.readthedocs.io/en/main/_downloads/cb14d3e2d3533d76e405d730fea19846/TurbSim_v2.00.pdf. I would generally recommend using ScaleIEC = 1.

Best regards,

Dear Jason,

Thank you for your answer. I have noticed that when using ScaleiEC equals 1 and IECturbc equals C I do find the value of 0.1348 for the ratio std(u)/<u> in each 10 minutes run. I understand that when using this parameters, Turbsim will scale the model so that every run will have a TI corresponding to the conservative value, that is the 90th percentile of the expected statistics at this wind speed, please correct me if I am wrong.

As you mentionned, I think I should stick with numerical values for IECturbc if I want to control what is going on in the simulations.

I am just curious about the 70th percentile you mentionned, as I could not find it in IEC 61400-1 -3rd (2005) , IEC61400-1-4th (2019) or IEC61400-3-1st (2009) which are the one available to me at the moment. If you remember where it comes from it would be helpful, otherwise I will see if I can find it elsewhere.

Thanks again for your time,

Best regards,

Maximilien

Dear @Maximilien.Andre,

This is stated in the definition of I_ref in Clause 4.1 of IEC 61400-1 Ed. 4 (2019).

Best regards,

Thank you, I have found it.

Dear all,

I had some trouble understanding how the turbulence intensity was defined in the IEC 61400 and how it was used in Turbsim so I figured I could write a short conclusion to the discussion with @Jason.Jonkman that has helped me a lot. Additionnaly, some of the statements I made in my previous messages here were false so I wanted to leave a message with what I think is right.

How IEC specifies turbulence intensity ?

For a given site, we could make many short time measures of the wind (ex 10 minutes). If we would compute std(u)/<u> for each of this measures, we would have a distribution of this values. IEC specifies Iref, the mean value (of the 70th percentile of it in the 2018 norm) and simga1, the 90th percentile. They provide a formula to compute sigma 1 from Iref. They also state that sigma 1 should be used as the representative value for the turbulence intensity.

How is it used in TurbSim ?

Two parameters are important to set in TurbSim if one wants to generate a wind time serie with a specific turbulence intensity: ScaleIEC and IECTurbc. In order to understand the impact of this parameters I have run three sets of simulations. Each of these consists of 1000 simulations of 15 mps wind at a hub height of 100m, for 10 minutes, with TurbSim v 3.4.1.

Test 1 : ScaleIEC=1 and IECTurbc=12

With ScaleIEC enabled, the u,v,w values are renormalized at the end of the simulation so that the measured turbulent intensity std(u)/<u> exactly matches with the value of IECturbc, here it is 12.0. If I had specified IECturbc instead, the values of std(u)/<u> would equal 0.1348.

Test 2 : ScaleIEC=0 and IECTurbc=12

hist_TI12_Scale0

Here, because scaleIEC is disabled, the value of std(u)/<u> can have random values around the target one, depending on the random seed. The distribution should have a mean value of 0.12, however it does not because Turbsim tends to underestimate this value (for reasons based on its model, which is explained in turbsim manual and in a previous message by Jason Jonkman).

Test 3 : ScaleIEC=0 and IECTurbc=C

Here, we again have randomly distributed values for TI. Because we specified a class C and a wind speed of 15mps, Turbsim targets the value 0.1348 for the turbulence intensity, however due to its tendency to underestimate TI, we fall a bit short of that.

I hope this figures can help users getting a better understanding of the turbulence intensity. Please let me know if I made mistakes in the way I understood the discussion, in which case I will promptly edit this post. Many thanks again to Jason Jonkman for the patient explanations.

Best regards,

Maximilien

2 Likes