Eigenanalysis FAST

Dear Oriol,

“States” are the degrees of freedom (and their first time-derivatives) that are integrated by FAST. In FAST v7, only structural states (DOFs) can be part of the FAST linearization.

FAST linearization followed by eigenanalysis produces the coupled modes (eigenvectors), natural frequencies, and damping ratios (eigenvalues) of the full system. E.g., tower-bending typically couples with blade bending and this coupling can be seen by the eigensolution. The CampbellDiagram spreadhseet is just a tool that aids one in interpreting the eigensolution–it sorts the eigenvectors and eigenvalues by modes in the order of increasing natural frequency and shows the magnitude and phase contribution of each state/DOF, the damped frequency, and damping ratio of each mode. The dominate components of each mode are highlighted by the green background and red bold font. The eigenvectors are normalized, so, it is not the absolute magnitude of the components that matter, but the relative contribution and phase of each state/DOF within a mode that matters. Please review the posts where I have helped others interpret the modes to get a sense of how it works.

Best regards,

Hi,

I’m working on Simulink interface, and as mentioned earlier (also noted in the ChangeLog.txt), the eigenanalysis.m had been replaced by GetMats.m and mbc3 but I cannot find these new files.

Based on the ChangeLog file, the replacement was made in FAST v6.02d-bjj on 10-Mar-2010 but I could not find any new files related to FAST linearization.

By the way, I’m running the latest version of FAST v7.

Thanks in advance,

Dear Ismail,

The MBC3 tool is available from: wind.nrel.gov/designcodes/postprocessors/mbc/.

Best regards,

Thanks a lot

Hello everybody.

I have calculated the natural frequency of the NREL 5MW onshore windturbine on a tubular steel properties as defined in test26.fst in FAST 8.15. I haven’t changed the blade and tower properties. I have done a linearization with FAST 7, then run the .lin file with MBC3 in matlab and then calculated the Campbell diagram with the Excel-sheet. I have compared the calculated natural frequencies for the different modes with the ones stated on p. 30 in “Definition of a 5-MW Reference Wind Turbine for Offshore System Development” and there is generally a good agreement, only the 1st blade edge (collective) is remarkably larger than the paper states. I have run the linearization with 0 and 12 rpm’s respectively. Has anyone else experienced the same problem and have an idea of sources of error/explanations for this?

Thanks in advance.

BR

Jacob K. Pedersen
University of Southern Denmark
CampbellDiagram_onshore_5mw.zip (137 KB)

Dear Jacob,

Actually, while the 1st blade asymmetric edgewise mode natural frequencies (both pitch and yaw) are listed in the NREL 5-MW specifications report, the 1st blade collective edge mode natural frequency is not listed. From my brief look at your Campbell diagram spreadsheet, your frequencies are quite close to those reported.

Best regards,

Dear Jason.

I see, thank you very much.

BR

Jacob K. Pedersen

Dear Jason,

Firstly, thank you for activating my account.

I’m new in FAST and I downloaded the last version (8.16) just last week.
As first analysis I wanted to obtain the Campbell Diagram of the 5MW Wind Turbine in order to compare my results with the ones obtained by one of my colleagues with FASTv7.
I have some questions about the results that I obtained.

At 0 RPM the frequencies are almost the same but the troubles begin when I increase the RPMs. In my analyses I chose 0, 2, 4, 6 RPMs and so on until 18. I noticed a strange behaviour of the frequencies associated with the blades: some increase really fast and some others decrease fast as well.

These are my results with FASTv8.16, obtained running GetMats_f8 and then mbc3.m on every *.lin file:
RPM 0 2 4 6
0.31958 0.31958 0.31954 0.31954 [Hz]
0.32409 0.32406 0.32399 0.32386
0.67560 0.64839 0.62000 0.59434
0.68442 0.70151 0.70621 0.71363
0.70073 0.71540 0.75237 0.79245
1.09224 1.06468 1.03177 0.99923
1.10408 1.13298 1.16686 1.20153
1.70153 1.70151 1.70198 1.70294
1.91915 1.90852 1.88759 1.86606
1.99185 2.00502 2.01981 2.02829
2.01519 2.01744 2.03664 2.07269
2.91844 2.91866 2.91931 2.92054
2.94340 2.94351 2.94378 2.94427

These are the results with FASTv7:
RPM 0 2 4 6
0.32181 0.32181 0.32179 0.32177 [Hz]
0.32490 0.32492 0.32497 0.32506
0.66696 0.66842 0.67280 0.67994
0.67581 0.67727 0.68167 0.68901
0.69189 0.69344 0.69804 0.70558
1.07934 1.08002 1.08033 1.08196
1.09033 1.09101 1.09169 1.09302
1.69516 1.69576 1.69602 1.69692
1.92108 1.92262 1.92708 1.93431
1.99733 1.99856 2.00348 2.01146
2.02111 2.02247 2.02734 2.03521
2.92752 2.92770 2.92823 2.92911
2.96265 2.96276 2.96300 2.96343

I obtained these results with this file.fst, with only one linearization at the end of the run time:

------- FAST v8.16.* INPUT FILE ------------------------------------------------ FAST Certification Test #18: NREL 5.0 MW Baseline Wind Turbine (Onshore) ---------------------- 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.0125 DT - Recommended module time step (s) 2 InterpOrder - Interpolation order for input/output time history (-) {1=linear, 2=quadratic} 0 NumCrctn - Number of correction iterations (-) {0=explicit calculation, i.e., no corrections} 99999 DT_UJac - Time between calls to get Jacobians (s) 1E+06 UJacSclFact - Scaling factor used in Jacobians (-) ---------------------- FEATURE SWITCHES AND FLAGS ------------------------------ 1 CompElast - Compute structural dynamics (switch) {1=ElastoDyn; 2=ElastoDyn + BeamDyn for blades} 0 CompInflow - Compute inflow wind velocities (switch) {0=still air; 1=InflowWind; 2=external from OpenFOAM} 0 CompAero - Compute aerodynamic loads (switch) {0=None; 1=AeroDyn v14; 2=AeroDyn v15} 0 CompServo - Compute control and electrical-drive dynamics (switch) {0=None; 1=ServoDyn} 0 CompHydro - Compute hydrodynamic loads (switch) {0=None; 1=HydroDyn} 0 CompSub - Compute sub-structural dynamics (switch) {0=None; 1=SubDyn} 0 CompMooring - Compute mooring system (switch) {0=None; 1=MAP++; 2=FEAMooring; 3=MoorDyn; 4=OrcaFlex} 0 CompIce - Compute ice loads (switch) {0=None; 1=IceFloe; 2=IceDyn} ---------------------- INPUT FILES --------------------------------------------- "5MW_Baseline/NRELOffshrBsline5MW_Onshore_ElastoDyn.dat" EDFile - Name of file containing ElastoDyn input parameters (quoted string) "5MW_Baseline/NRELOffshrBsline5MW_BeamDyn.dat" BDBldFile(1) - Name of file containing BeamDyn input parameters for blade 1 (quoted string) "5MW_Baseline/NRELOffshrBsline5MW_BeamDyn.dat" BDBldFile(2) - Name of file containing BeamDyn input parameters for blade 2 (quoted string) "5MW_Baseline/NRELOffshrBsline5MW_BeamDyn.dat" BDBldFile(3) - Name of file containing BeamDyn input parameters for blade 3 (quoted string) "5MW_Baseline/NRELOffshrBsline5MW_InflowWind_12mps.dat" InflowFile - Name of file containing inflow wind input parameters (quoted string) "5MW_Baseline/NRELOffshrBsline5MW_Onshore_AeroDyn15.dat" AeroFile - Name of file containing aerodynamic input parameters (quoted string) "5MW_Baseline/NRELOffshrBsline5MW_Onshore_ServoDyn.dat" ServoFile - Name of file containing control and electrical-drive input parameters (quoted string) "unused" HydroFile - Name of file containing hydrodynamic input parameters (quoted string) "unused" SubFile - Name of file containing sub-structural input parameters (quoted string) "unused" MooringFile - Name of file containing mooring system input parameters (quoted string) "unused" IceFile - Name of file containing ice input parameters (quoted string) ---------------------- OUTPUT -------------------------------------------------- True SumPrint - Print summary data to "<RootName>.sum" (flag) 1 SttsTime - Amount of time between screen status messages (s) 99999 ChkptTime - Amount of time between creating checkpoint files for potential restart (s) "default" DT_Out - Time step for tabular output (s) (or "default") 0 TStart - Time to begin tabular output (s) 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) ---------------------- LINEARIZATION ------------------------------------------- True Linearize - Linearization analysis (flag) 1 NLinTimes - Number of times to linearize (-) [>=1] [unused if Linearize=False] 1000 LinTimes - List of times at which to linearize (s) [1 to NLinTimes] [unused if Linearize=False] 0 LinInputs - Inputs included in linearization (switch) {0=none; 1=standard; 2=all module inputs (debug)} [unused if Linearize=False] 0 LinOutputs - Outputs included in linearization (switch) {0=none; 1=from OutList(s); 2=all module outputs (debug)} [unused if Linearize=False] False LinOutJac - Include full Jacobians in linearization output (for debug) (flag) [unused if Linearize=False; used only if LinInputs=LinOutputs=2] False LinOutMod - Write module-level linearization output files in addition to output for full system? (flag) [unused if Linearize=False] ---------------------- VISUALIZATION ------------------------------------------ 0 WrVTK - VTK visualization data output: (switch) {0=none; 1=initialization data only; 2=animation} 1 VTK_type - Type of VTK visualization data: (switch) {1=surfaces; 2=basic meshes (lines/points); 3=all meshes (debug)} [unused if WrVTK=0] true VTK_fields - Write mesh fields to VTK data files? (flag) {true/false} [unused if WrVTK=0] 15 VTK_fps - Frame rate for VTK output (frames per second){will use closest integer multiple of DT} [used only if WrVTK=2]

As you can see I ran only ElastoDyn, and its input file is the same as in the archive but with different RotorSpeed.

Thank you in advance.

Best regards,
Matteo Strada

Dear Matteo,

The results you are getting out of FAST v8.16 make sense to me – the natural frequencies of the blade/rotor modes are affected by the rotor speed.

I don’t see the same effect from your results using FAST v7. Are you sure you’ve ran that FAST analysis and/or post-processed the results correctly?

Best regards,

Dear Jason,

Thank you for your reply.

What I am trying to achieve is the Campbell diagram with the “static” frequencies.
In other words, I need to know how the fundamental frequencies are increased by the centrifugal stiffening through the different RotorSpeeds.
Of course I am expecting the frequencies to be affected by the RotorSpeed, but not in a decreasing way in the purpouse of what I am searching for.

Here I’ll put the two diagrams:

Best regards,
Matteo Strada

Dear Matteo,

I would expect the regressive rotor modes to decrease with rotational speed.

I’ve attached a Campbell Diagram of the land-based NREL 5-MW turbine that I recently derived with FAST v8.16 (and matched to what was derived with FAST v7).


Best regards,

Dear Jason,

Thank you for having clarified my results.

Best regards,
Matteo Strada

Hi everybody,

I intend to perform a linearization of the NREL 5MW onshore, using the test18.fst. I am using FAST 8.16 and after doing the linearization I have tried running the GetMats_f8 command of the MBC-script in MATLAB. However, I get an error message:

GetMats_f8
Undefined function or variable ‘FileNames’.

Error in GetMats_f8 (line 16)
if isempty(FileNames)

I have created a directory containing the .lin-files from FAST8.16 inside the MBC-folder, which I have added to Matlab’s list of paths.
Any help would be greatly appreciated.

Dear Jacob,

Variable FileNames is specified at the top of GetMats_f8.m; set it to the name (or names) of the linearization output file(s) that you wish to process.

Best regards,

Dear Jason,

Thank you, I have specified FileName=‘test18.1.lin’ in MATLAB and then tried running GetMats_f8 again. Now, however, I get the following message:

[i]>> FileNames=‘test18.1.lin’

FileNames =

test18.1.lin

GetMats_f8
Cell contents reference from a non-cell array object.

Error in GetMats_f8 (line 24)
data(NAzimStep) = ReadFASTLinear(FileNames{1}); %we’ll read this twice so we can allocate space first; putting it at
NAzimStep saves some reallocation later

[/i]

Dear Jacob,

You must put the name(s) into a cell array. In your case, set:

FileNames={‘test18.1.lin’};

Best regards,

Dear Jason,

Sorry, to bother you with this, but I now defined the filename in an array, which then yielded the following message:

[i]>> clear

FileNames={‘test18.1.lin’}

FileNames =

'test18.1.lin'

GetMats_f8
Undefined function ‘ReadFASTLinear’ for input arguments of type ‘char’.

Error in GetMats_f8 (line 24)
data(NAzimStep) = ReadFASTLinear(FileNames{1}); %we’ll read this twice so we can allocate space first; putting it at
NAzimStep saves some reallocation later[/i]

Dear Jacob,

You need that function and other ones to run GetMats_f8.m.

You will find them in the folders located in Utilities\MatlabToolbox.

Best regards

Dear Matteo,

Thanks a lot for your response.

Dear Matteo,

Maybe you can help me:

I have installed the toolbox downloaded from the FAST website and now I can run GetMats_f8. When I then enter mbc3, I get the following message:

[i]>> FileNames={‘test18.1.lin’};

GetMats_f8

GetMats_f8.m completed
Type “who” to list available variables

who

Your variables are:

AMat CMat NAzimStep RotTripletIndicesCntrlInpt
AvgAMat DMat NDisturbs RotTripletIndicesOutput
AvgBMat DescCntrlInpt NInputs RotTripletIndicesStates
AvgCMat DescOutput NRotTripletCntrlInpt data
AvgDMat DescStates NRotTripletOutput xdop
Avgxdop FileNames NRotTripletStates xop
Avgxop MdlOrder NumOuts
Azimuth N Omega
BMat NActvDOF OmegaDot

mbc3

Running mbc3 (v1.00.00a-gbir, 15-Oct-2008)

**ERROR: the number of colmn vectors in RotTripletIndicesOutput must equal 3, the num of blades
[/i]
Do you know how to deal with this?