The CS_Monopile.bmi file that NREL has shared was developed for the old FAST v7 model of the OC3-monopile with flexible foundation represented via the coupled springs (CS) model. When employing the CS model for a monopile in FAST v7, the entire tower + monopile (down to the seabed) was modeled as the “tower” (SubDyn did not exist as a separate module), so, the whole tower + monopile was modeled in BModes as well, and the 6x6 stiffness matrix for the CS model was specified as mooring_K. For a rigid foundation, no matrices would need to be specified in BModes and a clamped boundary condition would be set.
In FAST v8, the tower is modeled in the ElastoDyn module and the monopile is modeled in the SubDyn module. BModes is used to derive the mode shapes of the tower for the ElastoDyn module, so in BModes, the monopile (whether with a rigid foundation or a flexible foundation via the AF model) is represented simply as stiffness (hydro_K or mooring_K) and mass (hydro_M) matrices.
Thank you very much for your response, I really appreciate it.
I see now that I misunderstood the CS_monopile files, of course they are for the coupled springs model.
Can I please ask you a few more questions just to be sure I have got eveything right?
I started with the CS_monopile.bmi input file and made the following changes for the AF model:
Changed Mooring_K to 0, and replaced hydro_K and hydro_M with the matrices from SubDyn, as explained in my last post.
Changed draft from 20 to 10 and ref_msl from 20 to 10.
Changed the ‘CS_Monopile_tower_secs.dat’ file to only contain values for the tower and not the substructure, i.e. I removed the two first lines of the original file (which makes the remaining properties the same as in the NRELOffshrBsline5MW_OC3Monopile_ElastoDyn_Tower.dat file). In addition, I changed flp_iner and edge_iner to very small numbers and tor_stff and axial_stff to very high numbers to avoid axial, torsion and shear modes.
Then I executed BModes and got the following results for the first modes (for the AF model):
Mode 1: 0.185392 Hz, 1st fore-aft
Mode 2: 0.185914 Hz, 1st side-to-side
Mode 3: 1.099990 Hz, 2nd side-to-side
Mode 4: 1.19299 Hz, 2nd fore-aft
Just to check if my approach was correct I tried to do the same for the rigid foundation model, run test19.fst and copy Mbbt and Kbbt from the SubDyn summary file into Hydro_M and Hydro_K, put Mooring_K to zero and ran BModes with the same changes as above. This resulted in the following results:
Mode 1: 0.205967, 1st side-to-side
Mode 2: 0.207538, 1st fore-aft
Mode 3: 1.289402, 2nd side-to-side
Mode 4: 1.450130 2nd fore-aft
I plotted the mode shapes and compared them with the mode shapes in the ElastoDyn input file provided in the FAST archieve for the ridig foundation model (NRELOffshrBsline5MW_OC3Monopile_ElastoDyn_Tower), and noticed that they differed slightly.
Is this the approach used to get the mode shapes input to ElastoDyn? Or how was it done? Is there anywhere I can find the BModes input/output file for the NREL 5MW OWT tower for use in Fast v8?
Does my natural frequencies for the tower with and withouth AF method seem correct?
My first thought was to compare the natural frequencies with the frequencies from the CS_monopile Bmodes output file (mode 1 = 0.242302 Hz), but these are for the whole tower+substructure, while the natural frequencies in my approach are for only the tower. Are these frequencies comparable?
Why is draft and ref_msl 10 m and not -10? In the BModes file used with FAST v7 the default value is 20m, because the tower base is 20 m below MSL. In FAST v8, where you’re only supposed to calculate mode shapes for the tower, starting from 10m above MSL, shouldn’t draft then be set to minus 10 meters?
Is there anything else you think I have misunderstood?
You’re overall approach sounds correct, but your question (4) is spot-on. Instead of setting draft = ref_msl = 10, you should be setting draft = ref_msl = -10 (these inputs are defined positive downward in BModes).
Here are my answers to your direct questions:
Actually, I don’t have the BModes input files used to derive the tower mode shapes for Test19. These were developed by a post-doc, who is no longer employed at NREL. Perhaps changing draft and ref_msl as indicated above will give you closer results.
Your natural frequencies look low, but I suspect this is because your tower is 20-m longer that it should be (based on the incorrect draft and ref_msl).
Actually, the frequencies predicted by BModes will be for the tower + substructure in your case, its just that the tower is modeled with finite elements while the substructure is modeled as mass and stiffness matrices, so, the shapes predicted by BModes will only be for the tower (with a moveable base).
Your specification of draft and ref_msl is the only issue I can see.
The frequencies are higher, but shouldn’t the fore-aft and side-side modes frequencies be more similar? I would expect Mode 1 (1st fore-aft) and Mode 2 (1st side-side) to have almost identical frequencies, and the same with Mode 3 and 4.
I can’t find an explanation to this, can you please tell me what you think?
I have attached my BModes input files for the rigid and the AF model along with the SubDyn input file for the AF model (after new calculations of soil stiffness I changed the AF length to 14.2784m).
Also, I have seen in that users of this forum ask for “the unofficial FAST theory manual” and user’s guide for FAST v8, could you please send me a copy as well? My email is: email@example.com
A new question has come up that I hope you can help me with.
I am wondering why the natural frequencies from BModes for the original model (rigid foundation, no modification done in any of the FAST input files provided by NREL) is not expected to be the same as the natural frequencies given in “Definition of a 5-MW Reference Wind Turbine for Offshore System Development”. What is the difference between these “full system natural frequencies” and the ones from BModes? The first fore-aft frequency calculated from BModes is 0.2804 Hz, while the one given in the report is 0.3240 Hz.
I computed the PSD from the fore-aft tower top displacement (excited the structure with white noise wave spectrum only, no wind, as explained in this forum post: AeroDyn Feedback), the PSD figure is attached, the rigid (original) foundation model vs the apparent fixity model. The frequency peaks seem to be approximately similar to the fore-aft natural frequencies from BModes, but not exactly. Does this PSD seem correct? What have I misunderstood about the “full system natural frequencies?”, what do they represent and why are they not the ones present in the PSD plots?"
In general, BModes and FAST may predict different tower natural frequencies because the rotor-nacelle assembly (RNA) is modeled rigidly in BModes, but flexible in FAST (the coupling between the rotor and tower is more important for the second tower-bending modes than the first). If you disable the degrees of freedom in the rotor, drivetrain, and nacelle of the FAST model, and set up the BModes and FAST models consistently, I would expect that you’d get quite similar predictions of tower natural frequencies between the tools.
In your case, though, the first tower-bending natural frequency of 0.32 Hz reported in the NREL 5-MW specifications report is for the land-based wind turbine. If you are exciting your model with white noise waves, I suspect you’re using the NREL 5-MW turbine atop the OC3-monopile, which has a first support-structure natural frequency of 0.28 Hz, which matches well what you are reporting from BModes and your PSD.
Yes, I am using the NREL 5MW offshore monopile turbine, and had mistakenly though that the natural frequencies in the specifications report were for the offshore turbine, so this clarifies a lot. I am satisfied with my results now!
I have two questions reffering to my previous post and the PSD plot. I have been trying to find out why there is a frequency peak at 2.4 Hz for the rigid foundaion model, but I can’t find an answer. I have concluded that the two peaks at approximately 1.8 and 2.0 Hz represents the second tower fore-aft and side-to-side modes (1.8604 and 2.0494 Hz from BModes), but there is no natural frequency from BModes around 2.4 Hz. The peak is even more significant in the mudline moment PSD, see attached plot.
From the moment time series oscillations at this frequency (period of 0.4 seconds) can be clearly seen, but I can’t understand why. Do you have an explanation to what this frequency is caused by?
Also, shouldn’t there be peaks at the operational natural frequencies of 1P (here 0.2 Hz), 3P, 6P etc?
In addition I have a question about simulating an idling rotor. I wanted to turn off the rotor to compare the effect of the operational natural frequencies vs the structural natural frequencies on the ressonance effects seen when wave spectral period is 5 seconds. The changes I did are as follows:
In ElastoDyn: BldPitch1=BldPitch2=BldPitch3=90, RotSpeed=0
In AeroDyn15: WakeMod=0, AFAeroMod=1
In ServoDyn: PCMode=0, GenTiStr=True
The wind input is still turbulent with a mean wind speed of 12m/s, but the output time series of mudline moment oscillates around 0, like there is no inflow wind? See attached plot of the rigid and flexible foundation models for the operating and the idling case. What am I doing wrong, and how can I include the wind for the idling case?
The rotor flexibility has a strong influence on the second tower-bending modes (which is possible to obtain with FAST, but not BModes). The NREL 5-MW turbine atop the OC3-monopile with a rigid foundation has a second tower-bending modes around 2.4 Hz, as you are seeing.
I see the 0.4 Hz oscillation in your time series plot, but not in your PSD plot. Are these not for the same signal?
I don’t know enough about your simulation set-up to know why you are not seeing 3P or 6P excitation in your simulations with an operating wind turbine.
Your simulation set-up for an idling rotor sounds reasonable, assuming that you set TimGenOn in ServoDyn to be greater than TMax. With the rotor idling and all blades feathered to 90 degrees, I would expect the rotor thrust (and thus the tower-base bending moment) to have zero mean, unless you’ve enabled the tower aerodynamic loads.
Using the extremely useful discussion found in this thread, I have applied an apparent fixity condition to my support structure design and obtained Bmodes frequency outputs that are in agreement with values obtained in another program. I then used the modeshapepolyfitting.xls document to get the required mode shape polynomial coefficients and run my FAST simulations.
However, in looking at the PSD plots, which I was hoping to use to derive some frequency-domain transfer functions for the system, the spectral peaks are not occurring at the expected frequencies, but are instead occurring at almost exactly half of those frequency values, i.e.
Near identical peaks occur in the FA and SS directions. I have read your responses elsewhere on the forums citing the DOF of the rotor/nacelle/drivetrain as sources of some disagreement between FAST natural frequencies and those generated by BModes, but I wasn’t sure if there is some other phenomena at play here given the dramatically different results I’m seeing. Any insight at all you can offer is greatly appreciated.
Thank you again for your quick reply! And for clearing up the 2.4 Hz question. Do you also know what the second side-to-side mode frequency is exptected to be?
The time series and the PSD are not for the same signal, the PSD is for white noise excitation, while the moment time series is for turbulent wind and waves. When plotting a PSD of the output from a simulation with wind and waves I get a spectrum where no peaks can be detected.
In the time series there are oscillations at period of approximately 0.4 seconds, which represents a frequency of approiximately 2.4 Hz, as seen on the PSD, am I right?
Information on the simulation behind the PSD:
I have used Test19.fst. The only changes I have made to the input files provided by NREL is:
In HydroDyn: Changed WaveMod to white noise spectrum and disabled 2nd-order waves.
In FAST primary input file: Setting CompAero to 0 and adding a steady wind of 12m/s.
Everything else is kept the same, the rotor speed is still 12.1 rpm. Does any of my changes imply that the rotor is not rotating?
Do you understand why there are no peaks at the operational natural frequencies?
Regarding the idling rotor: Yes, I set TimeGenOn to a high number. I have not turned off the tower aerodynamic loads, in the AeroDyn input file TwrAero = True. The wind field is turbulent with a 12m/s mean. Shouldn’t wind loading then create a mudline moment with a nonzero mean?
I would not expect a large influence of the rotor flexibility on the first tower-bending modes; the rotor flexibility will have a larger impact on the second tower-bending modes.
You’re results show a quite substantial difference between the natural frequencies predicted by FAST and BModes. I’m not sure I understand this. I suggest that you make the rotor and drivetrain rigid in FAST (so as to better match the assumptions of BModes). If the results do not match well in that case, I would expect some sort of inconsistency between the inputs specified in FAST and BModes.
I would expect both the tower fore-aft and tower side-to-side bending modes for the NREL 5-MW turbine atop the OC3-monopile to be around 2.4 Hz (the second tower-side-to-side may be a bit smaller).
Sorry, I misspoke in my prior post. Your time series are showing an approx. 4-s period, which matches the approx. 2.4-Hz mode.
The rotor speed should be near zero for an idling case.
Yes, direct wind loading on the tower will create a nonzero mean bending moment at the mudline. But tower aerodynamic loads are usually much more important for idling cases at high speed than they are during operational cases.
Dear mr Jonkman,
I am new to FAST and in my Master Thesis I want to model an offshore wind turbine with a monopile and the p-y curves approach for the soil representation. By reading some older posts, I have found useful information on the topic (especially in the post I am now responding), but I want to be 100% sure that I do not miss something, so I want to present the main steps:
I am presenting the procedure using FAST v7, as I read that I need subroutine UserTwrLd() to model a DS approach and this subroutine does not exist in FAST v8.
I run BModes with the real geometry (tower + platform i.e. monopile) of the structure in order to obtain the mode shapes
I convert them using the .xls file provided, to get the pseudo-cantilever modes that FAST requires as an input
As an input in UserTwrLd() I give the depth z of each node and the corresponding spring stiffness. The nodes should cover the region from the deepest point of the pile until the seabed (with a coordinate z = - water_depth )
I run FAST by setting TwrLdMod equal to 2 in order to implement the subroutine.
Apart from any flaws in my procedure that I would like you to point out, I want to raise a question:
As I understand, the role of UserTwrLd() is to take into account the stiffness of each spring and calculate the total corresponding force at the JNode i.e. at the connection point between the tower and the pile. I am a bit confused about the DOFs at the JNode while running FAST. Should I enable all of them or only the horizontal translational (surge and sway)? And should I turn on the switches and leave the values equal to zero? Or by inserting more realistic values I can achieve quicker convergence?
I apologize for the long post. And I am really greatful in advance for your help.
Dear mr Jonkman,
First of all, thank you for the immediate response. I will try to rephrase and be more specific about my question.
By reading UserTwrLd() I understood that the subroutine’s output is a force at the connection point between the tower and the platform, a point named JNode. This force will represent all the springs beneath.
So my question is that, since we give FAST the value of that force, applied on the base of the tower, that FAST considers cantilevered, shouldn’t we release some of the DOFs? For example, setting true PtfmSgDOF and PtfmSwDOF? And a step further, should I leave the initial conditions equal to zero or should I change them to speed up the procedure and the convergence?
In simpler terms, appart from setting TwrLdMod equal to 2, what other changes should I make on the FAST code?
I hope to have clarified it a bit, I also attach you the specific part of FAST’s platform file.
Actually, user-routine UserTwrLd() in FAST v7 is called once for each tower analysis node (JNode) at each time step. That is JNodes represents a tower analysis node, not the connection point between the tower and platform. The exact elevations of each tower analysis node in the undeflected tower are explained along with input TwrGagNd on page 69 of the old FAST v7 User’s Guide: nwtc.nrel.gov/system/files/FAST.pdf. The deflection of the tower at each node is determined by the combined motion of the platform and tower-bending degrees of freedom (DOFs).
When modeling a DS foundation in FAST v7, I would normally expect that you’d enable the tower-bending DOFs as well as PtfmSgDOF, PtfmSwDOF, PtfmRDOF, and PtfmPDOF as you’ve shown in the platform file you attached to your prior post.
I would not expect that it would be necessary to set nonzero platform or tower initial conditions, but you can always minimize start-up transients by setting the initial conditions consistent with their expected (mean) values based on the mean wind speed you are simulating.
Dear mr Jonkman,
once again thank you for the quick response and the clarifications. I had mistaken JNode as a stable point and that’s why I couldn’t understand the rest. I am really grateful for all your help.
I hope not to face further problems.
Dear mr Jonkman,
As I have described above, I am trying to simulate an 5MW OWT with distributed springs (OC3 Phase II). I recompiled FAST and also successfully ran it, but I have forgotten to enable the appropriate DOFs like you suggested me above to do (the strange thing is that I still got results pretty close to the ones of the OC3 Phase II paper, even with a rigid connection on the mudline).
However, when I tried to modify correctly the platform input file by enabling the 4 DOFs needed and re-run FAST, an error occurred. I attach you a screenshot of the error.
I would really appreciate some guidelines for solving it.
Thank you in advance for your help.