Imposed Motion in Surge to FOWT with Semisubersible Floater

Hi Community,
I am trying to implement the pure surge (later heave and pitch) harmonic motion to FOWT with senisubnersible floater, and later wanted to study the impact of this imposed motion on DWM at wind farm level. I had gone through the already available similar topics, but I still have some confusions. @Jason.Jonkman made clear that we can use this equation F = Kxtarget +Cxdtarget, and we can assume M way higher than total mass of turbine+floater, and K, C can be computed using seismic guidance. Moreover, I am using Guyan file format. My first question is;

(1) As I want to implement the pure harmonic motion, I need to consider damping almost zero, right?

I have to implement for surge harmonic motion as x(t) = Asin(2πft), where A = 5m, f = 2/150 Hz and t = 100 sec. I have tried to implement this but results are not convincing; details of implementation are;

  • Damping is kept only 0.00005 (almost zero)
    -1 is kept as active degree of freedom
  • only surge DOF in elastodyne module is kept true.
  • Mass matrix has only diagonal components having values of M, Damping matrix has same but values of diagonal for D and similar is the case of stiffness matrix (k values as diagonal entries)
    -for loading, only Fx (the computed force as function of time) has values, other Fy, Fz, Mx, My, and Mz comulns have zero entries.

The applied values looks like this;
Applied Harmonic Motion in Surge
Force

It can be seen that the applied surge and corresponding force are harmonic.

2nd Question is;
(2) is my implementation accurate/right to obtain desired output.

However, the output of platform surge motion (after running OpenFast files) are not truly accurate which I want; the amplitude of surge motion has increased, why could be this? here are the results;

Output_Surge

3rd question is;
(3) why my platform surge motion is matching the x(t) and similarly for Force? and how can it be corrected?

4th question is;
(4) Do we know at which point/node the applied force to achieve desired motion is implemented on the rigid body? (at CoG)?

Thanks

Dear @Muhammad.Abdullah,

The Seismic documentation provides guidance for choosing M, K, and C. C is recommend to be 60-70% of critical damping, not near zero. Can you clarify how you’ve set M, K, and C for your OpenFAST model and how you are modifying the OpenFAST source code to implement, M, K, and C?

Best regards,

Dear @Jason.Jonkman, Firstly, thanks for your reply.
Yes, I have taken into considerations of Seismic documentation for M (I have chosen 100 times higher than combined turbine+floater mass),

K is calculated by k = m ∙ (2 ∙ π ∙ ActFreq)2, where ActFreq I haven taken the force frequency (is it true? although it is recommended to take 10 times higher than the maximum excitation frequency of the structure), moreover, how can I found the highest excitation frequency of a turbine?,

and D I have kept zero to achieve pure harmonic motion in surge direction of the structure for some particular time (as 100 seconds in our case).
Moreover, I have tried to calculate the D by Seismic formula as D = 2 ∙ ActDamp ∙ m ∙ 2 ∙ π ∙ ActFreq, where ActDamp = 0.65 ∙ critical damping (2 ∙sqrt(MK)), but with this case damping becomes so high that motion starts for only few mili-seconds.

Here you can see my, files as,

(1) ExtPtfm.dat file as,

(2) ExtPtfm_SE_Guyan.dat file as;
In this file,

  • for mass matrix, M is kept as diagonal components for first 3 rows and for last three rows Inertia (any random value but higher) is kept as diagonal component.
  • for Damping matrix, D (which is zero to achieve pure harmonic motion of the structure) is kept as diagonal component for all the rows.
  • for stiffness matrix, k is kept as diagonal components.
  • for loadings, only Fx (which is calculated by F = KX + DXd with X = Asin(2.pi.f.t))., others as zeros.

(3) The main .fst file as;

So, all in all, i wanted to have the pure harmonic motion for the PtfmSurge in the output file of OpenFast, but what I get is with increasing amplitude, How can I achieve that?

thanks

Dear @Jason.Jonkman,
I just tried to run with the D = 0.65 times Dc (2 * sqrt(mk)), instead of the given equation in Seismic document (which gives a lot higher damping value that even motion does not starts), and it gives promsing results to some extent, the PtfmSurge motion get stabilized after few seconds. The amplitude of the PtfmSurge has been increased from 5m (the intial impleneted X(t) = Asin(2.pi.f.t)) to 7.5m, how can I adjust the damping in such a way that I achieve the same wave amplitude and frequency of PtfmSurge as implemented through X(t).

Thanks

Dear @Muhammad.Abdullah,

The Seismic documentation provides the guidance you should follow. ActFreq should be approximately 10x the highest frequency in your OpenFAST model (not the excitation frequency). The formulas assume ActFreq = SQRT(k/m) / ( 2 * pi ), in which case c = 2*ActDamp * m * 2 * pi * ActFreq = 2*ActDamp * SQRT(m*k). You can find the highest frequency of the OpenFAST model through a linearization analysis, followed by eigenanalysis. A value of ActDamp = 0.65 provides the optimal bandwidth so that the response will match the excitation.

Best regards,

1 Like

Dear @Jason.Jonkman,
Thanks for your detailed answer, it completely worked for the test case (the example given already in the rtest of openfast module). Now, I am running it with my own specific case (NREL 5MW offshore wind turbine with semi-submersible floater) including aerodynamics loads. Here is the list of modules which I am using;

However, I am facing an error which I tried my best to understand and figure out but I could not. The error details are given as;

Can you please help me out to resolve this issue?

Thanks

Dear @Muhammad.Abdullah,

It looks like your model is numerically unstable. Have you initialized the rotor speed (RotSpeed in ElastoDyn) and the blade-pitch angles (BlPitch(1-3) in ElastoDyn) to their expected (mean) value conditioned on the mean wind speed you are simulating? If not, the controller may go unstable. At around 8.6 m/s for the NREL 5-MW baseline wind turbine, this would be around RotSpeed = 10 rpm and BlPitch = 0.0deg.

Best regards,

Dear @Jason.Jonkman,
Yes, the initial rotor speed and blade angles are already set in the Elastodyn, but still Servodyn (I think) is leading the simulation to numerically unstable condition. I am still facing this error (I tried to change few other parameters and run it but same);

What are the other possible ways to resolve this issue?

Thanks

Dear @Muhammad.Abdullah,

Do you only get this issue when you enable CompSub = 2? If so, the numerical instability is likely driven because of the high-frequency introduced through the external platform MCKF. In this case, I would expect dropping the time step (DT) and perhaps adding a correction step (NumCrctn = 1) would solve the problem.

Best regards,

Dear @Jason.Jonkman,
Yes, the error comes only when I add the CompSub = 2. The model runs by setting CompSub = 0, CompElast = 1, CompInflow = 1, CompAero = 2 and CompServo = 1.
Moreover, the model also runs by setting CompSub = 2 alongwith CompElast = 1, CompInflow = 0, CompAero = 0 and CompServo = 0.

The error is occured when CompSub = 2 is added with CompElast = 1, CompInflow = 0, CompInflow = 1, CompAero = 2 and CompServo = 1.

I have tried running the model with reduced time step (from 0.005 to 0.0005) and NumCrctn = 1, the error persists.

Are there any other possible ways to figure this out?

Dear @Muhammad.Abdullah,

I’m not aware of a reason why enabling inflow/aerodynamics/control would cause a problem only when CompSub = 2. Are the ElastoDyn inputs you are using set the same between the case that works with CompSub = 2 and CompInflow = CompAero = CompServo = 0 and the case that doesn’t work with CompSub = 2 and CompInflow = 1. CompAero = 2, and CompServo = 1?

Best regards,

Dear Dr. Jason,
Yes, the ElastoDyn file is exactly the same. I reckon, the issue is related to somehow with Mach number, and I literally do not know where it be figured out (in the environmental conditions, I have set the speed of sound as 335 m/s).

Thanks

Very Respectfully,
Muhammad Abdullah

Dear @Muhammad.Abdullah,

I would suggest trying to isolate the issue by disabling features. For the case that doesn’t work with CompSub = 2 and CompInflow = 1. CompAero = 2, and CompServo = 1, does the simulation run successfully if you disable the generator degree of freedom in ElastoDyn (GenDOF = FALSE), which will effectively override the controller?

Best regards,

Dear Dr. @Jason.Jonkman,
I have figured out the problem, it was related to the force signal created by ExtPtfm. Actually, there was a small spike at the start of the Force signal, smoothing that helped to resolve the issue. I truly appreciate your valuable time and efforts. Loads of thanks.

Very Respectfully,
Muhammad Abdullah

1 Like

Dear Dr. @Jason.Jonkman,
I have following two queries;

  1. For running the FAST.Farm_x64_OMP.exe, we need to have Intel Parrallel Studio XE 2017, as mentioned in the FAST.Farm user guide. Is it necessary to have this 2017 version, or we can have 2020 as well? I was about to install it.

  2. Is there any easy way to convert the .vtk files (at all times steps) for a particular plane downstream the wind turbine to .bts files (as output of the turbsim file)?

Thanks.

Regards,

Dear @Muhammad.Abdullah,

Regarding (1), are you referring the redistributable libraries needed to run the precompiled version of OpenMP-parallalized version of FAST.Farm provided by NREL? The compatible redistributable libraries are documented with each release here: Releases · OpenFAST/openfast · GitHub.

Regarding (2), I’ve heard of users developing a script to convert VTK to BTS, but I’m not a aware of a specific repository where such script is stored. Perhaps others can comment.

Best regards,

Dear Dr. @Jason.Jonkman,
Thanks for your answers. I will search for the .vtk to .bts file conversion discussion if available in NREL Forum. I have one another query as,

(1) The in the output of .vtk file, we have velocity vectors for a particular plane, lets say at 3 x D (diameter of rotor) distance downstream the turbine for all the nodes (ny x nz). The output of .vtk file at a particular time step is shown as;

image

Is there any way to know the exact position of nodes (grid points on that particular plane) at which these velocities are available? like how can we know at the position of the node for which first row of the velocities are available and so on?

Note, we know the x position as it is fixed for the plane, but we do not know the y and z position exactly? (one idea could be to know this by knowing the direction from bottom left corner of the plane (which is known), the Fast.Farm start writing the values (first y direction or z direction)?

thanks

regards

Dear @Muhammad.Abdullah,

The VTK data used and generated by FAST.Farm follows the simple legacy serial VTK file format. Please see the FAST.Farm documentation here: 4.2.15.4. Input Files — OpenFAST v3.5.2 documentation and the generic VTK documentation here: https://vtk.org/wp-content/uploads/2015/04/file-formats.pdf. The first data point corresponds to the ORIGIN and the remaining points involve looping through X, then Y, and then Z

Best regards,

1 Like

Dear Dr. @Jason.Jonkman,
Firstly, thanks for the above reponse and material, while going through documentation of Fast.Farm, I must have missed this.

I have another queries related to running the Fast.Farm_x64_OMP.exe as;

(1) I have downloaded and installed the libraries (built with OpenMP and linked with dynamic libraries) for the executables with _OMP.exe, but I do not have Intel Fortran Compiler 2021 (Update 2, w_oneAPI_2021.2.0.243), is it freely available? if yes, from where can I find it.

(2) Secondly, I am using command line or windows PowerShell, so I add path of the libraries which I have installed, and try to run it, it gives me following error;

I truly appreciate your help in this regard. Thanks.

Regards
Muhammad Abdullah

Dear @Muhammad.Abdullah,

Regarding (1), you’ll only need to install Visual Studio Community and the Intel Fortran compiler if you wish to recompile OpenFAST or FAST.Farm yourself. These are free to download. The documentation is here (although the version numbers referenced on this site may be out of date): 2.2.3.1. Building OpenFAST on Windows with Visual Studio — OpenFAST v3.5.2 documentation.

Regarding (2), your stack overflow error sounds similar to the issue reported here: FAST.Farm · Issue #2053 · OpenFAST/openfast · GitHub, which was fixed in: Fix use of uninitialized variables in FAST.Farm and increase stack size in Visual Studio by deslaughter · Pull Request #2118 · OpenFAST/openfast · GitHub, which is scheduled to be released in OpenFAST v3.5.3 this week.

Best regards,