TMDs in ServoDyn module

Dear all,

my question is about the modelling of tuned mass dampers for the damping of longitudinal and transversal vibration of the wind turbine TOWER.

In the former version of Fast (V7) it was possible to model such tuned mass dampers by using the additional development FAST-SC. In the latest version of FAST (v8.15.00a-bjj) the ServoDyn module “contains an option for tower-based tuned mass dampers in addition to the nacelle-based tuned mass dampers released in the previous version of ServoDyn through the TMD submodule”. The ServoDyn module itself was created in v8.03.02b-bjj by “splitting out the controls and electrical-drive mechanisms”. Because of this latter explanation, for me it is not clear if these TMDs in the ServoDyn module are exclusively for damping the vibrations resulting from the electrical-drive mechanisms and controls or also for the damping of tower vibrations induced by wind (for example).

It would be great to get a detailed overview of the mode of operation of these integrated TMD modules in the tower and the nacelle and their abilities as it is not further specified in the latest announcements.

If someone could help me I would be very grateful.

Best regards,

David

Dear David,

You can use ServoDyn’s tower- and nacelle-based TMD submodules to add damping to the tower / support structure. The TMD submodules of ServoDyn contain all of the functionality of the old FAST-SC tool, plus additional features. While the page and documentation is a bit outdated relative to the new features introduced in FAST v8.15, the TMD webpage does provide some additional information: nwtc.nrel.gov/TMD.

Best regards,

Dear Jason,

thanks for your quick response!

In the Fast-SC Version the user had the option of integrating TMD´s in Simulink. With regard to your reply I assume that Fast-V8 offers this option as well. Is that correct? I couldn´t find any specific information about this in the Readme_Fast8 file.

Thanks in advance!

David

Dear David,

I’m not sure what you mean when you say “in the Fast-SC Version the user had the option of integrating TMD´s in Simulink.” Are you referring to active control of the TMD actuators through commands from Simulink? Such a feature is not available in FAST v8.15, but I’m sure it would be possible to add through customization of the source code.

Best regards,

Hello Jason,

I may have misunderstood sth so far, but I am getting closer to solving my problem. So let me explain myself:

I am referring to the semiactive control of the TMD´s in FAST V8. Semiactive dampers usually adjust themselves relatively to the current conditions of a wind turbine. I know it is possible to define TMD parameters for passive damping in the new version of FAST. You added a lot of new parameters in comparison to V7 and Fast-SC. The TMD Control in the NRELOffshrBsline5MW_ServoDyn_TMD.dat offers the option to enter a semiactive control mode. So let me rephrase my question:

Does the utilization of these parameters already deliver accurate results or are they more or less integrated on an experimentally basis for the moment? And how exactly does it work? I unfortunately didnt find any detailed description or manual to the Servodyn_TMD module.

Thanks in advance,

David

Dear David,

Your question would be best answered by Prof. Matt Lackner of the University of Massachusetts-Amherst, who developed the TMD submodule of ServoDyn together with this graduate students. While Prof. Lackner delivered the updated TMD submodule for release in FAST v8.15, we have not yet received updated documentation. I suggest that you reach out to Prof. Lackner (I don’t believe he uses this forum regularly).

Best regards,

Dear Jason,

I used passive TMD in my model (NREL 5MW monopile), then I calculated the fatigue damage based on wind-wave distribution, but damages increased compared to the model without TMD ( around 15%). Frequency of TMD (0.269Hz) is set close to natural frequency of the monopile (0.270 Hz) (I used the parameters from this paper ).

What I have done in the TMD input file is :Red line are the ones I changed:

      1   TMD_DOF_MODE - DOF mode (switch) {0: No TMD DOF; 1: TMD_X_DOF and TMD_Y_DOF (two independent TMD DOFs) 2: TMD_XY_DOF (Omni-Directional TMD)}

true TMD_X_DOF - DOF on or off (flag) {Used only when TMD_DOF_MODE is 1}
true TMD_Y_DOF - DOF on or off (flag) {Used only when TMD_DOF_MODE is 1}
---------------------- TMD INITIAL CONDITIONS ---------------------------------
1 TMD_X_DSP - TMD_X initial displacement (m)
1 TMD_Y_DSP - TMD_Y initial displacement (m)
---------------------- TMD CONFIGURATION --------------------------------------
0 TMD_P_X - At rest position of TMDs (X) (m) [relative to the nacelle (NTMD) or tower base (TTMD)]
0 TMD_P_Y - At rest position of TMDs (Y) (m) [relative to the nacelle (NTMD) or tower base (TTMD)]
0 TMD_P_Z - At rest position of TMDs (Z) (m) [relative to the nacelle (NTMD) or tower base (TTMD)]
10 TMD_X_DWSP - DW stop position (maximum X mass displacement) (m)
-10 TMD_X_UWSP - UW stop position (minimum X mass displacement) (m)
10 TMD_Y_PLSP - Positive lateral stop position (maximum Y mass displacement) (m)
-10 TMD_Y_NLSP - Negative lateral stop position (minimum Y mass displacement) (m)
---------------------- TMD MASS, STIFFNESS, & DAMPING -------------------------
10000 TMD_X_M - TMD mass (kg)
10000 TMD_Y_M - TMD mass (kg)
70000 TMD_XY_M - TMDXY mass (kg)
28805 TMD_X_K - TMD stiffness (N/m)
28805 TMD_Y_K - TMD stiffness (N/m)
2800 TMD_X_C - TMD damping (N/(m/s))
2800 TMD_Y_C - TMD damping (N/(m/s))
15000 TMD_X_KS - Stop spring stiffness of TMD_X (N/m)
15000 TMD_Y_KS - Stop spring stiffness of TMD_Y (N/m)
10000 TMD_X_CS - Stop spring damping (N/(m/s))
10000 TMD_Y_CS - Stop spring damping (N/(m/s))
---------------------- TMD USER-DEFINED SPRING FORCES ------------------------
False Use_F_TBL - Use spring force from user-defined table (flag)
17 NKInpSt - Number of spring force input stations
---------------------- TMD SPRING FORCES TABLE -------------------------------
X F_X Y F_Y
(m) (N) (m) (N)
-6.0000000E+00 -4.8000000E+06 -6.0000000E+00 -4.8000000E+06
-5.0000000E+00 -2.4000000E+06 -5.0000000E+00 -2.4000000E+06
-4.5000000E+00 -1.2000000E+06 -4.5000000E+00 -1.2000000E+06
-4.0000000E+00 -6.0000000E+05 -4.0000000E+00 -6.0000000E+05
-3.5000000E+00 -3.0000000E+05 -3.5000000E+00 -3.0000000E+05
-3.0000000E+00 -1.5000000E+05 -3.0000000E+00 -1.5000000E+05
-2.5000000E+00 -1.0000000E+05 -2.5000000E+00 -1.0000000E+05
-2.0000000E+00 -6.5000000E+04 -2.0000000E+00 -6.5000000E+04
0.0000000E+00 0.0000000E+00 0.0000000E+00 0.0000000E+00
2.0000000E+00 6.5000000E+04 2.0000000E+00 6.5000000E+04
2.5000000E+00 1.0000000E+05 2.5000000E+00 1.0000000E+05
3.0000000E+00 1.5000000E+05 3.0000000E+00 1.5000000E+05
3.5000000E+00 3.0000000E+05 3.5000000E+00 3.0000000E+05
4.0000000E+00 6.0000000E+05 4.0000000E+00 6.0000000E+05
4.5000000E+00 1.2000000E+06 4.5000000E+00 1.2000000E+06
5.0000000E+00 2.4000000E+06 5.0000000E+00 2.4000000E+06
6.0000000E+00 4.8000000E+06 6.0000000E+00 4.8000000E+06
---------------------- TMD CONTROL --------------------------------------------
0 TMD_CMODE - Control mode (switch) {0:none; 1: Semi-Active Control Mode; 2: Active Control Mode}
1 TMD_SA_MODE - Semi-Active control mode {1: velocity-based ground hook control; 2: Inverse velocity-based ground hook control; 3: displacement-based ground hook control 4: Phase difference Algorithm with Friction Force 5: Phase difference Algorithm with Damping Force} (-)
0 TMD_X_C_HIGH - TMD X high damping for ground hook control
0 TMD_X_C_LOW - TMD X low damping for ground hook control
0 TMD_Y_C_HIGH - TMD Y high damping for ground hook control
0 TMD_Y_C_LOW - TMD Y low damping for ground hook control
0 TMD_X_C_BRAKE - TMD X high damping for braking the TMDX (Don’t use it now. should be zero)
0 TMD_Y_C_BRAKE - TMD Y high damping for braking the TMDX (Don’t use it now. should be zero)

I was wondering if something else I need to change: For example TMD INITIAL CONDITIONS, or else?

Thank you very much for your help.

Best Regards,

Arash,

Dear Arash,

What you describe sounds reasonable. I’m not sure this would influence your results, but I would set the initial displacements of the TMDs to zero unless there is specific cases where a nonzero initial displacement makes sense.

Before looking at combined wind-wave cases, have a looked at a simple tower free-decay case, where you specify the initial displacement of the tower and track the decay. Does the TMD have the influence you expect in that case?

Best regards,

Dear Jason,

Thank you for your reply. I looked at the simple tower free-decay case with initial displacement of tower and the TMD influences the response as (app.box.com/s/j6bdxssic43j5z7sm8sytgy3gmg2s0l8)

But when I do fatigue calculation for all wind-wave misalignment and wind speeds, the ultimate fatigue damage of the case with TMD is higher than the baseline case. What else do I need to check?

Thank you very much for your help.

Best Regards,

Arash,

Dear Arash,

I’m not sure. But if the results don’t make sense to you, I always suggest that you simplify the model (by disabling features) to debug and identify the root cause of the problem.

Best regards,

Dear All

I have downloaded FAST-SC and I just have a problem while I was trying to generate a SFunc.mex32 to use the simulink. While I was using the make_FAST_SFunc.m in MATLAB 2015a. I got some errors. Hope some one could figure it out. I have followed the instructions given by Prof. Matthew Lackner and got the errors shown below.

Options file specified on command line

→ Options file = intelf13msvs2012opts.bat
MATLAB = C:\Program Files (x86)\MATLAB\R2015a
→ COMPILER = ifort
→ Compiler flags:
COMPFLAGS = /assume:byterecl /traceback /real_size:64 /Qzero /Qsave /Qprec “/IC:\Program Files (x86)\MATLAB\R2015a/extern/include” -c -nologo -DMATLAB_MEX_FILE /MD /fp:source /assume:bscc
OPTIMFLAGS = /O2 /DNDEBUG
DEBUGFLAGS = /Z7
arguments =
Name switch = /Fo
→ Pre-linking commands =
→ LINKER = link
→ Link directives:
LINKFLAGS = /dll /export:MEXFUNCTION /LIBPATH:“C:\Program Files (x86)\MATLAB\R2015a\extern\lib\win32\microsoft” libmx.lib libmex.lib libmat.lib /implib:“C:\Users\u1591961\AppData\Local\Temp\mex_RKFZLE\templib.x” /MAP:“FAST_SC_SFunc.mexw32.map” /NOLOGO /manifest /INCREMENTAL:NO
LINKDEBUGFLAGS = /debug /PDB:“FAST_SC_SFunc.mexw32.pdb”
LINKFLAGSPOST =
Name directive = /out:“FAST_SC_SFunc.mexw32”
File link directive =
Lib. link directive =
Rsp file indicator = @
→ Resource Compiler = rc /fo “mexversion.res”
→ Resource Linker =

→ ifort /assume:byterecl /traceback /real_size:64 /Qzero /Qsave /Qprec “/IC:\Program Files (x86)\MATLAB\R2015a/extern/include” -c -nologo -DMATLAB_MEX_FILE /MD /fp:source /assume:bscc /FoC:\Users\u1591961\AppData\Local\Temp\mex_RKFZLE\DoubPrec.obj /O2 /DNDEBUG -DMX_COMPAT_32 “C:\Wind Turbine Files\FAST-SC-Files\NWTC_Lib\Source\DoubPrec.f90”

→ ifort /assume:byterecl /traceback /real_size:64 /Qzero /Qsave /Qprec “/IC:\Program Files (x86)\MATLAB\R2015a/extern/include” -c -nologo -DMATLAB_MEX_FILE /MD /fp:source /assume:bscc /FoC:\Users\u1591961\AppData\Local\Temp\mex_RKFZLE\SysMatlab.obj /O2 /DNDEBUG -DMX_COMPAT_32 “C:\Wind Turbine Files\FAST-SC-Files\NWTC_Lib\Source\SysMatlab.f90”

C:\Wind Turbine Files\FAST-SC-Files\NWTC_Lib\Source\SysMatlab.f90(64): error #7002: Error in opening the compiled module file. Check INCLUDE paths. [IFPORT]
USE IFPORT
-----------------------------------^
C:\Wind Turbine Files\FAST-SC-Files\NWTC_Lib\Source\SysMatlab.f90(165): error #7002: Error in opening the compiled module file. Check INCLUDE paths. [IFPORT]
USE IFPORT
-----------------------------------^
C:\Wind Turbine Files\FAST-SC-Files\NWTC_Lib\Source\SysMatlab.f90(245): error #7002: Error in opening the compiled module file. Check INCLUDE paths. [IFPORT]
USE IFPORT
-----------------------------------^
C:\Wind Turbine Files\FAST-SC-Files\NWTC_Lib\Source\SysMatlab.f90(270): error #7002: Error in opening the compiled module file. Check INCLUDE paths. [IFPORT]
USE IFPORT
-----------------------------------^
C:\Wind Turbine Files\FAST-SC-Files\NWTC_Lib\Source\SysMatlab.f90(298): error #7002: Error in opening the compiled module file. Check INCLUDE paths. [IFPORT]
USE IFPORT !remove with use of next line (not implemented in all versions of the IVF compiler)
-----------------------------------^
C:\Wind Turbine Files\FAST-SC-Files\NWTC_Lib\Source\SysMatlab.f90(93): error #6404: This name does not have a type, and must have an explicit type. [FSTAT]
Status = FSTAT( Unit , StatArray )
---------------^
C:\Wind Turbine Files\FAST-SC-Files\NWTC_Lib\Source\SysMatlab.f90(256): error #6404: This name does not have a type, and must have an explicit type. [GETCWD]
Status = GETCWD ( DirName )
------------^
compilation aborted for C:\Wind Turbine Files\FAST-SC-Files\NWTC_Lib\Source\SysMatlab.f90 (code 1)

C:\PROGRAM FILES (X86)\MATLAB\R2015A\BIN\MEX.PL: Error: Compile of ‘C:\Wind Turbine Files\FAST-SC-Files\NWTC_Lib\Source\SysMatlab.f90’ failed.

Unable to complete successfully.

Error in make_FAST_SFunc (line 64)
mex(’-v’ , … %verbose

It seems there is some problem with SysMatlab.f90 but I do not think Prof. Matthew Lackner modified anything in it. By the way, I used all the source files from FAST_v7.02.00d-bjj except the files modified by Prof. Matthew Lackner.

Thank you very much!

Regards

XING WEI

This post was a duplicate of http://forums.nrel.gov/t/how-to-compile-fast-v7-02-00d-bjj-to-get-a-fast-exe-file/1398/11, and I posted my response there.

Please don’t post the same question under multiple topics.