OpenFAST / openfast

Main repository for the NREL-supported OpenFAST whole-turbine and FAST.Farm wind farm simulation codes.
http://openfast.readthedocs.io
Apache License 2.0
673 stars 455 forks source link

TurbSim Problem #312

Closed RuiliangWang closed 5 years ago

RuiliangWang commented 5 years ago

hello everyone, I found that the TurbSim V2.0 can support the user time series. I have mearsured 9 Node data in the rotor plane around the complex nature by LIDAR like below

Node7 10.8m/s-------------Node8 11.5m/s------------Node9 12.5m/s

Node4 9.6m/s----------------Node5 12.18m/s---------Node6 10.5m/s

Node1 9.5m/s----------------Node2 4.5m/s-------------Node3 0.2m/s

the data show the mean wind speed ,the first line represent the rotor top and last line is the rotor bottom .

TurbSim didn't work and some errors occurred when I input the measured data except we delete the Node2 and Node3. I think the two nodes data can affect the coherence matrix. There are a small mountain (Node2,Node1)before the turbine .I want to produce the similar turbulence wind like measured.

Could the Turbsim get the wind file like that, or how to fix the coherence parameters to meet the condition?

Hope your reply! Best Regard!

jjonkman commented 5 years ago

Dear @RuiliangWang,

So, what error(s) did you receive?

The user time-series option of TurbSim does not derive the coherence from the specified user time series (although TurbSim does derive the mean wind profile and the wind spectra at each height by the specified user time series). Instead, you must choose which user-time series point is used to establish the wind at other points in the wind domain bsaed on the internal coherence model.

Best regards,

RuiliangWang commented 5 years ago

Dear Jason The error like below

C:\Users\Chinawindey>D:\Turbsim\simulation\TurbSim_x64.exe D:\Turbsim\simulation\UserTimeSeries.inp

Running TurbSim (v2.00.07a-bjj, 14-Jun-2016).

Reading the input file "D:\Turbsim\simulation\UserTimeSeries.inp".

Reading the user-defined time-series input file "D:\Turbsim\simulation\Test2.TimeSer". Found 12000 lines of time-series data. Calculating the spectral and transfer function matrices: u-component matrices (general coherence model) CalcFourierCoeffs:CalcFourierCoeffs_General:Error in Cholesky factorization: LAPACK_SPPTRF: Leading minor order 21 of A is not positive definite, so Cholesky factorization could not be completed. The error occurred in the u-component coherence matrix at frequency 1 (1.66667E-03 Hz) Check the input file for invalid physical properties or modify the coherence.

Aborting TurbSim.

My time series is below:

--------------TurbSim v2.00.* User Time Series Input File-----------------------
Time series input from Y:/wind/windweb/MetData/135mData/M4Twr/20Hz/mat/2014/01/13/01134_16_40_00_013.mat. Using rotated series
--------------------------------------------------------------------------------
          3  nComp    - Number of velocity components in the file (1=u component only; 2=u & v components; 3=u,v,w) [if < 3 other components will be generated using values from input file]
          5  nPoints  - Number of time series points contained in this file (-)
          2  RefPtID  - Index of the reference point (1-nPoints)
Pointyi     Pointzi    ! listed in order of increasing height
  (m)         (m)
    59.00000    22.00000
    -59.00000    22.00000
    0.00000    80.00000
    59.00000    137.00000
    -59.00000   137.00000  !    0.00000   131.00000
--------Time Series-------------------------------------------------------------
 Elapsed Time     Point01u_015m Point01v_015m Point01w_015m Point02u_030m Point02v_030m Point02w_030m Point03u_050m Point03v_050m Point03w_050m Point04u_076m Point04v_076m Point04w_076m Point05u_100m Point05v_100m Point05w_100m Point06u_131m Point06v_131m Point06w_131m
          (s)         (m/s)         (m/s)         (m/s)         (m/s)         (m/s)         (m/s)         (m/s)         (m/s)         (m/s)         (m/s)         (m/s)         (m/s)         (m/s)         (m/s)         (m/s)         (m/s)         (m/s)         (m/s)
0   8.05E+00    1.75E+00    1.75E+00    2.72E-01    3.02E-02    3.02E-02    1.28E+01    1.42E+00    1.42E+00    1.05E+01    2.00E+00    2.00E+00    1.19E+01    1.80E+00    1.80E+00    
0.05    8.11E+00    1.77E+00    1.77E+00    2.71E-01    3.05E-02    3.05E-02    1.28E+01    1.58E+00    1.58E+00    1.06E+01    2.05E+00    2.05E+00    1.19E+01    1.86E+00    1.86E+00    
0.1 8.13E+00    1.80E+00    1.80E+00    2.70E-01    3.04E-02    3.04E-02    1.29E+01    1.80E+00    1.80E+00    1.07E+01    2.05E+00    2.05E+00    1.19E+01    1.83E+00    1.83E+00    
0.15    8.09E+00    1.79E+00    1.79E+00    2.69E-01    3.08E-02    3.08E-02    1.30E+01    1.98E+00    1.98E+00    1.06E+01    1.89E+00    1.89E+00    1.22E+01    1.59E+00    1.59E+00    
0.2 8.20E+00    1.72E+00    1.72E+00    2.68E-01    3.10E-02    3.10E-02    1.28E+01    2.08E+00    2.08E+00    1.06E+01    1.73E+00    1.73E+00    1.22E+01    1.65E+00    1.65E+00    
0.25    8.33E+00    1.68E+00    1.68E+00    2.68E-01    3.02E-02    3.02E-02    1.29E+01    2.11E+00    2.11E+00    1.06E+01    1.68E+00    1.68E+00    1.21E+01    1.75E+00    1.75E+00    
0.3 8.47E+00    1.67E+00    1.67E+00    2.70E-01    3.07E-02    3.07E-02    1.31E+01    2.11E+00    2.11E+00    1.06E+01    1.67E+00    1.67E+00    1.20E+01    1.67E+00    1.67E+00    
0.35    8.26E+00    1.83E+00    1.83E+00    2.70E-01    3.11E-02    3.11E-02    1.32E+01    2.09E+00    2.09E+00    1.06E+01    1.72E+00    1.72E+00    1.20E+01    1.54E+00    1.54E+00    
0.4 8.22E+00    1.86E+00    1.86E+00    2.67E-01    3.10E-02    3.10E-02    1.31E+01    2.17E+00    2.17E+00    1.07E+01    1.86E+00    1.86E+00    1.21E+01    1.48E+00    1.48E+00    
0.45    8.33E+00    1.76E+00    1.76E+00    2.66E-01    3.00E-02    3.00E-02    1.30E+01    2.29E+00    2.29E+00    1.06E+01    1.65E+00    1.65E+00    1.20E+01    1.60E+00    1.60E+00    
0.5 8.26E+00    2.07E+00    2.07E+00    2.64E-01    2.96E-02    2.96E-02    1.30E+01    2.41E+00    2.41E+00    1.04E+01    1.51E+00    1.51E+00    1.18E+01    1.71E+00    1.71E+00    
0.55    8.29E+00    2.16E+00    2.16E+00    2.61E-01    3.00E-02    3.00E-02    1.31E+01    2.23E+00    2.23E+00    1.03E+01    1.51E+00    1.51E+00    1.17E+01    1.89E+00    1.89E+00    
0.6 8.38E+00    2.10E+00    2.10E+00    2.60E-01    3.06E-02    3.06E-02    1.31E+01    2.25E+00    2.25E+00    1.04E+01    1.73E+00    1.73E+00    1.17E+01    2.14E+00    2.14E+00    
0.65    8.42E+00    2.19E+00    2.19E+00    2.59E-01    3.14E-02    3.14E-02    1.33E+01    2.36E+00    2.36E+00    1.04E+01    1.80E+00    1.80E+00    1.18E+01    2.24E+00    2.24E+00    
0.7 8.42E+00    2.45E+00    2.45E+00    2.60E-01    3.24E-02    3.24E-02    1.35E+01    2.39E+00    2.39E+00    1.05E+01    1.75E+00    1.75E+00    1.19E+01    2.45E+00    2.45E+00    
0.75    8.38E+00    2.71E+00    2.71E+00    2.60E-01    3.28E-02    3.28E-02    1.35E+01    2.38E+00    2.38E+00    1.04E+01    1.77E+00    1.77E+00    1.19E+01    2.75E+00    2.75E+00    
0.8 8.33E+00    2.49E+00    2.49E+00    2.60E-01    3.28E-02    3.28E-02    1.34E+01    2.37E+00    2.37E+00    1.03E+01    1.78E+00    1.78E+00    1.18E+01    2.70E+00    2.70E+00    
0.85    8.19E+00    2.52E+00    2.52E+00    2.60E-01    3.27E-02    3.27E-02    1.35E+01    2.45E+00    2.45E+00    1.03E+01    1.78E+00    1.78E+00    1.19E+01    2.56E+00    2.56E+00    
0.9 8.02E+00    2.56E+00    2.56E+00    2.61E-01    3.36E-02    3.36E-02    1.35E+01    2.44E+00    2.44E+00    1.05E+01    1.77E+00    1.77E+00    1.20E+01    2.40E+00    2.40E+00    
0.95    7.86E+00    2.35E+00    2.35E+00    2.62E-01    3.33E-02    3.33E-02    1.34E+01    2.43E+00    2.43E+00    1.05E+01    1.64E+00    1.64E+00    1.19E+01    2.66E+00    2.66E+00    
1   8.06E+00    2.27E+00    2.27E+00    2.62E-01    3.26E-02    3.26E-02    1.32E+01    2.42E+00    2.42E+00    1.05E+01    1.45E+00    1.45E+00    1.18E+01    2.69E+00    2.69E+00    

I use the node1,node3,node5,node7,node9. Did I set the parameter wrong or the time series uncorrect? the first input file :

---------TurbSim v2.00.* Input File------------------------
for user-defined time series input
---------Runtime Options-----------------------------------
False         Echo            - Echo input data to <RootName>.ech (flag)
      43456   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)
False         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)
True         WrBLFF          - Output full-field time-series data in BLADED/AeroDyn form?  (Generates RootName.wnd)
False         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)
False         Clockwise       - Clockwise rotation looking downwind? (used only for full-field binary files - not necessary for AeroDyn)
          0   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-----------------------
          17   NumGrid_Z       - Vertical grid-point matrix dimension
          17   NumGrid_Y       - Horizontal grid-point matrix dimension
       0.05   TimeStep        - Time step [seconds]
        600   AnalysisTime    - Length of analysis time series [seconds] (program will add time if necessary: AnalysisTime = MAX(AnalysisTime, UsableTime+GridWidth/MeanHHWS) )
"ALL"         UsableTime      - Usable length of output time series [seconds] (program will add GridWidth/MeanHHWS seconds unless UsableTime is "ALL")
         80   HubHt           - Hub height [m] (should be > 0.5*GridHeight)
         119   GridHeight      - Grid height [m]
         119   GridWidth       - Grid width [m] (should be >= 2*(RotorRadius+ShaftLength))
          0   VFlowAng        - Vertical mean flow (uptilt) angle [degrees]
          0   HFlowAng        - Horizontal mean flow (skew) angle [degrees]

--------Meteorological Boundary Conditions-------------------
"TIMESR"      TurbModel       - Turbulence model ("IECKAI","IECVKM","GP_LLJ","NWTCUP","SMOOTH","WF_UPW","WF_07D","WF_14D","TIDAL","API","USRINP","TIMESR", or "NONE")
"Test2.TimeSer"    UserFile        - Name of the file that contains inputs for user-defined spectra or time series inputs (used only for "USRINP" and "TIMESR" models)
          1   IECstandard     - Number of IEC 61400-x standard (x=1,2, or 3 with optional 61400-1 edition number (i.e. "1-Ed2") )
"C"           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]
"default"     WindProfileType - Velocity profile type ("LOG";"PL"=power law;"JET";"H2L"=Log law for TIDAL model;"API";"USR";"TS";"IEC"=PL on rotor disk, LOG elsewhere; or "default")
"unused"      ProfileFile     - Name of the file that contains input profiles for WindProfileType="USR" and/or TurbModel="USRVKM" [-]
         80   RefHt           - Height of the reference velocity (URef) [m]
      10   URef            - Mean (total) velocity at the reference height [m/s] (or "default" for JET velocity profile) [must be 1-hr mean for API model; otherwise is the mean over AnalysisTime seconds]
        350   ZJetMax         - Jet height [m] (used only for JET velocity 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 [m^2/s^2] (or "default" or "none")
"default"     PC_UV           - Hub mean u'v' Reynolds stress [m^2/s^2] (or "default" or "none")
"default"     PC_VW           - Hub mean v'w' Reynolds stress [m^2/s^2] (or "default" or "none")

--------Spatial Coherence Parameters----------------------------
"default"     SCMod1           - u-component coherence model ("GENERAL","IEC","API","NONE", or "default")
"default"     SCMod2           - v-component coherence model ("GENERAL","IEC","NONE", or "default")
"default"     SCMod3           - w-component coherence model ("GENERAL","IEC","NONE", or "default")
"5.310901, 0.000341"    InCDec1          - u-component coherence parameters for general or IEC models [-, m^-1] (e.g. "10.0  0.3e-3" in quotes) (or "default")
"2.638217, 0.001692"    InCDec2          - v-component coherence parameters for general or IEC models [-, m^-1] (e.g. "10.0  0.3e-3" in quotes) (or "default")
"1.633211, 0.005484"    InCDec3          - w-component coherence parameters for general or IEC models [-, m^-1] (e.g. "10.0  0.3e-3" in quotes) (or "default")
          0   CohExp           - Coherence exponent for general model [-] (or "default")

--------Coherent Turbulence Scaling Parameters-------------------
".\EventData"    CTEventPath     - Name of the path where event data files are located
"les"         CTEventFile     - Type of event files ("LES", "DNS", or "RANDOM")
true          Randomize       - Randomize the disturbance scale and locations? (true/false)
          1   DistScl         - Disturbance scale [-] (ratio of event dataset 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.)
         10   CTStartTime     - Minimum start time for coherent structures in RootName.cts [seconds]

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

Best Regards!

jjonkman commented 5 years ago

Dear @RuiliangWang,

An error in the Cholesky factorization results from having too high (i.e., unphysical) coherence.

Just a few comments/questions: 1) Is there a reason you set RefPtID = 2 (near the corner of the grid)? I would normally recommend deriving the spatial coherence from a user time-series point near the center of the grid (in this case, RefPtID = 3). 2) When TurbModel = TIMESR, the coherence model defaults to GENERAL, which means the user-specified values of InCDec1-3 are used. How did you derive/set the values of InCDec1-3? 3) The GENERAL coherence model of TurbSim was changed in OpenFAST...see: https://github.com/OpenFAST/openfast/pull/104. So, I would recommend using TurbSim from OpenFAST v2.1 to see if your problem is resolved with the newest version of TurbSim.

Best regards,

RuiliangWang commented 5 years ago

Dear Jason, I have recompiled the TurbSim from OpenFAST ,It worked ,But the result make me confused. The input five actual wind speed curve like below:

image

The Red curve shows the Node3; the result .wnd file show the wind speed of five point like below image The node3 wind speed between the input and output have so large difference. That means .wnd file can not represent the actual wind speed in the Node3.

Can you give me some advices about how to get the actural wind speed like Node3 ?

Best Regrads!

jjonkman commented 5 years ago

Dear @RuiliangWang,

My understanding is the top plot corresponds to your five user-specified time series and the bottom plot is the output created by TurbSim...is that correct?

Do you mean that the red curve in the top plot is user-specified point 2 (not 3)? Why does the red curve differ so much from the other four?

Which of these five points are you using as the reference point for coherence (RefPtID = ?) I would guess you are using point 3 (Y=0,Z=80) because the turquoise blue curve (0,78.3499), which is very close to point 3, have very similar time series...is that correct?

The coherence on the TurbSim-calculated grid points is only derived from one of the user-specified time series points (corresponding to RefPtID). If you have other user-specified time series, the wind at the TurbSim-calculated grid points will not necessarily be coherent to those.

Best regards,

bjonkman commented 5 years ago

Point 3 (what you are calling node5) should be the exact time series entered because it is defined at (0m,80m), which is exactly on a point on TurbSim's output grid. This does not depend on which point is used as the reference for the coherence model. The other 4 points that you have specified don't actually land on TurbSim's output grid, so they will be used only to determine the wind profile (mean wind speed/direction). These wind profiles depend only on height, so it will use averaged values where you have defined multiple values per height.

Since you've specified point 2 (node3) as the reference point, TurbSim is using its phases to add coherence to the other simulated points on the grid (not point 3). I am a little confused about the position labels on your time series since those don't seem to align with what your input file would indicate are the locations of TurbSim grid points.

If you want all 5 of your measurement points on the TurbSim grid, you will have to adjust the position locations or adjust the TurbSim grid specification so that the measurement points align with the regular grid that TurbSim outputs.

RuiliangWang commented 5 years ago

Dear @jjonkman and @bjonkman Thank you for your relpy in time. I want to explain why the Node3 is different with the the other Nodes. Our real turbine was set up in the complex terrain. The main direction of the wind was blocked by the mountain in front of the turbine. So the Node 3 was affect so largely. I have adujst the Nodes position to align the turbSim grids . But the point 2(Node 3) is not what I input. The wind profile looks not right.

The node1 and Node3 have same height ,But mean wind speed is different. I can not get the real wind in the two Nodes about same height. They always have same mean wind speed if the two point have same height because of the wind profile in z dircetion .

Could the TurbSim get the diffenert mean wind speed in the same height?

I have upload my files .Please help me to check the file if you are free.

simulation.zip

Best Regards

bjonkman commented 5 years ago

The current implementation of TurbSim uses a velocity profile that is only a function of height. It does not take the lateral position into account. If you are using the time-series wind profile, and you have specified two points at the same height, the profile will depend on the order that those points are entered. It linearly interpolates between adjacent heights, but doesn't check if there are multiple points at the same height. So, if you had entered node 3 before node 1, then the mean for node 1 would be off, while the mean for node 3 would be okay.

Having 2D wind profiles is something you could add if you wanted to, though.

RuiliangWang commented 5 years ago

Thank you very much ,It is helpful.