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
671 stars 452 forks source link

Hydrodyn module - OC3 Hywind Spar #673

Closed AryaThomas closed 3 years ago

AryaThomas commented 3 years ago

I am using the same files of OpenFast downloaded from GitHub for simulating the OC3 Hywind-Spar. My doubt is whether I could use the same files from Hydrodata (like .hst, .1, .3) of SPAR from GitHub in order to do my simulation on the same OC3 Hywind-Spar or I have to do a Wamit simulation and then input that data to hydrdyn? (only the wave parameters like wave ht., Time period is changing in my simulation)

jjonkman commented 3 years ago

Dear @AryaThomas,

The WAMIT output data used as input to HydroDyn is not sea-state dependent. You can use the same WAMIT data for different wave heights and wave periods.

Best regards,

jjonkman commented 3 years ago

Dear @AryaThomas,

I don't see any problem with your simulation. The time-series data in your *.out file is simply wrapped due to the limitation in number of characters per line in the text editor you are using.

Best regards,

AryaThomas commented 3 years ago

Really thankful for clarifying my doubts.

AryaThomas commented 3 years ago

Hi Jason,

I have some doubts on RAO calculation,

1) I have simulated the OC3 Hywind SPAR including the turbine with my wave and wind parameters and I have obtained the time series for DOFs, wave elevation. If I do a FFT on them will I get a PSD ? And if I take the ratio between that PSD of DOF and PSD of wave elevation, will I get the RAOs of the entire simulation (which will be affected by wave and wind) ? I have seen calculation of RAO using white noise spectrum in the forum, but nothing is mentioned about aerodyn module.

2) If I could get the RAOs through the above stated method, is it possible to use the RAO code by Amy Robertson mentioned in the forum?

3) Is the time series obtained for all the output parameters are due to coupled motion of platform and turbine together?

jjonkman commented 3 years ago

Hi @AryaThomas,

Here are my answers to your questions:

  1. An FFT and PSD are not the same thing, although you can calculate a PSD via FFT. See the following topic on our forum for more information, including a simple MATLAB script (_JasonPSD.m) that performs the calculations: https://wind.nrel.gov/forum/wind/viewtopic.php?f=4&t=2219. An RAO cannot be calculated by taking the ratio between two PSDs; instead, the RAO is equal to the output-wave cross-spectral density divided by the wave auto-spectral density, where "output" is any motion and/or load output from the simulation. For example, the heave RAO is the heave-wave cross-spectral density divided by the wave auto-spectral density. The auto-spectral density is equivalent to a PSD. I'm not sure I understand your point about AeroDyn, but we have computed RAOs of various floating offshore wind turbines both with and without aerodynamic loading/damping. The following topics on our forum and our ISOPE 2013 paper are likely of interest to you: https://wind.nrel.gov/forum/wind/viewtopic.php?f=4&t=1173 https://wind.nrel.gov/forum/wind/viewtopic.php?f=3&t=1976 https://wind.nrel.gov/forum/wind/viewtopic.php?f=4&t=2219 https://www.nrel.gov/docs/fy13osti/58098.pdf
  2. The MATLAB script provided on our forum (RAO.m)--see: https://wind.nrel.gov/forum/wind/viewtopic.php?f=3&t=1976 --can be used to compute the RAO by post-processing the time series via the cross-spectral density and auto-spectral density, as discussed above.
  3. Yes.

Best regards,

AryaThomas commented 3 years ago

Hi,

Regarding my 1st doubt, I wanted to present my results in the form of PSD. So I am doing a FFT in time series of DOFs for the whole simulation (combined wave-wind). If I do that, I wanted to compare my results with the equation, S(w) = RAO * A(w), where S(w) = spectral density of DOF of platform (which is the PSD I had obtained like stated above), A(w) = wave spectrum. I wanted to know if I could do this or my theory is correct. But from your explanation, I could understand that cross spectral density is not same as PSD of DOF. Can you help me to solve this confusion.

Also I have done a FFT for surge time series(=Data) using Jason.m,but what I get is making no sense to me. My x-y axis labels are same as what indicated in your code.

jason plot

jason code

jjonkman commented 3 years ago

Dear @AryaThomas,

I don't agree with your equation, but you can write:

S(w) = A(w)*ABS(RAO(w))^2

If I understand correctly, you are plotting Sf1 versus f1 derived from Jason_PSD.m (you are plotting the one-sided spectrum rather than the FFT). The spike at zero frequency is the mean value of the signal. If you zoom in over the low frequencies, my guess is you'll see other nonzero values of the spectrum (Sf1) at positive frequencies.

Best regards,

jjonkman commented 3 years ago

Hi @AryaThomas,

Here are my answers to your questions:

  1. The RAO is a complex value, so ABS(RAO) is its magnitude. Dividing the cross spectral density with the auto-spectral density is a common way in system identification to calculate frequency-response functions from time series.

  2. The thrust from the wind turbine causes a large surge offset in the OC3-Hywind spar system. a) These WAMIT files look fine with me. b) Their input files are similar, but the underlying theory bases of MAP++ and MoorDyn are quite different. MAP++ is a quasi-static model based on the analytical formulation of cables. MoorDyn is a dynamic model based on the lumped mass approach. Both should give similar results under static conditions or for low-frequency oscillations, and in most cases, both will result in similar global motions of a floating wind turbine. When mooring dynamics are important (i.e., when calculating mooring line ultimate or fatigue loads), MoorDyn would be more accurate than MAP++.

  3. Tp = 771 s is very long for a wave period, which will be far removed from all system natural frequencies, and so, cause little dynamic excitation of the structure. You'd also have to run a much longer simulation to calculate the response at this period. Also, with rotor idling, the aerodynamic loads on the rotor will be small, and the aerodynamic loads on the tower (tower drag force) will dominate.

Best regards,

AryaThomas commented 3 years ago

Thanks a lot.

jjonkman commented 3 years ago

Dear @AryaThomas,

Here are my answers to your questions: a) It looks like you are running OpenFAST v2.4, but your InflowWind input file is formatted for a newer version. See the API documentation found here for differences in formatting between versions: https://openfast.readthedocs.io/en/main/source/user/api_change.html. b) The OpenFAST model of the DTU 10-MW reference wind turbine model that you are using uses a simplified ElastoDyn representation of the blade structural dynamics. I'm sure the higher-fidelity BeamDyn representation could be developed with effort, based on the published blade structural data, but I don't believe this is something someone at NREL has developed. c) I'm not sure what you mean be "not aligned". Perhaps you mean the formatting is different? Regardless, HydroDyn expects the hydrodynamic data of the various WAMIT-generated output files (.1, .3, and *.hst for first order, etc.) to follow the WAMIT format documented in Chapter 4 of the WAMIT User’s Manual, available online: http://www.wamit.com/manual6.4/Chap4.pdf.

Best regards,

jjonkman commented 3 years ago

Dear @AryaThomas,

b) I'm not aware of another repository for this version of the DTU 10-MW reference wind turbine (updated within IEA Wind Task 37). c) I'm still not understanding. Other than the extension, which should be hst, the file you attached is consistent in sequence with the *.hst files provided in the OpenFAST r-test. Please note, though, that the roll (4,4) and pitch (5,5) elements do not look correct to me. I would expect these to be negative valued because they should only include the effect of external buoyancy, not including the restoring from body weight / center of mass, which are intrinsically included within ElastoDyn and should not be double counted.

Best regards,

AryaThomas commented 3 years ago

Ok, I will look at the comment you have made on roll and pitch.

Thanks a lot.

andrew-platt commented 3 years ago

Hi @AryaThomas, What timestep are you using for the simulation? It looks like your simulation went unstable and ElastoDyn is unable to solve its system of equations. This often results in AeroDyn errors of velocities above mach 1 or InflowWind giving errors about wind requested at unrealistic positions (below ground or at locations where turbine blades should never be).

I suggest first reducing your timestep by a factor of 2 or more and seeing if ElastoDyn can converge properly. If that doesn't help, there may be an error in the setup someplace (unrealistically stiff or soft blades, tower, or missing inertia terms someplace). Turning off degrees of freedom in ElastoDyn can further help narrow down what is causing the simulation to fail.

Andy

AryaThomas commented 3 years ago

Hi Thanks for the suggestions.

I am carrying out simulation for 700s (TDmax) with time step of 0.0125s (DT) in openfast and for turbsim 700s with 0.05s time step.

andrew-platt commented 3 years ago

Could you try a small timestep of 0.005 or 0.001 seconds?

We typically cannot run such models with timesteps larger than 0.01 seconds (this is usually the hard coded controller timestep).

AryaThomas commented 3 years ago

Hi,

I have tried both the time step that you have mentioned. But the simulation is crashing after 6s. Here are the related files that I have used for simulation:

IEA-10.0-198-RWT_HydroDyn1.txt Results1.xlsx IEA-10.0-198-RWT_InflowFile1.txt TurbSim1.txt IEA-10.0-198-RWT_ServoDyn1.txt IEA-10.0-198-RWT_ElastoDyn1.txt

1 2

Can you please help me to sort this out? Is it because of any problem with my upscaled platform? Thanks in advance.

AryaThomas commented 3 years ago

Is this problem can be solved by eliminating tower aerodynamic analysis nodes? If yes, could you specify the method to do that?

andrew-platt commented 3 years ago

You can either turn off the tower aerodynamics (AeroDyn input file), or generate the tower wind file (WrADTWR in TS input file, TowerFile in InflowWind.

AryaThomas commented 3 years ago

Hi I have simulated the platform for 0.005s by adding additional damping, stiffness matrices, changed values in elastodyn file by setting ptfmRefzt = -cog, yawDOF =false, ptfmydof=ptfmhvdof=false. In servodyn, PCmode=5, vscntrl=5 Now the simulation is completed without any error. But when I change any one of the DOF-flags mentioned above in elastodyn, the simulation gets aborted due small grid in z-axis. Is excessive heave causing my platform unstable?

jjonkman commented 3 years ago

Hi @AryaThomas.

Does your model run as expected if you enable the ElastoDyn DOFs that you've disabled, while disabling aerodynamics and control (CompAero = CompServo = 0)?

Best regards,

AryaThomas commented 3 years ago

Hi Jason,

I am really sorry for the late reply.

Yes my model ran when I have enabled all the above mentioned elastodyn DOFs while disabling aerodynamics and control in .fst file.

Thanking you,

AryaThomas commented 3 years ago

Hi Jason

So is the controller causing the simulation to abort? By disabling the above flags in.fst, I won't get the coupled simulation right?

jjonkman commented 3 years ago

Dear @AryaThomas,

Can you back up and explain what you've changed in the OpenFAST input files and what problem you are seeing?

Best regards,

AryaThomas commented 3 years ago

Hi Jason

I am simulating an upscaled OC3 Hywind SPAR platform to accommodate 10 MW IEA turbine. I have obtained the 10MW turbine files from https://github.com/IEAWindTask37/IEA-10.0-198-RWT. From this I have only changed the inflow input file such that it will be compatible for my openfast v_2.4.0.

When I disable the mentioned DOFs in elastodyn, the simulation runs. But when the DOFs are enabled, the simulation gets aborted by saying small grid size in z-direction. But when the aerodynamic and controller in .fst files are disabled, the simulation runs with all the DOFs true.

This is what I get when I simulated for no wave and wind condition (when YawDOF =true, all other DOF =T) : YAWDOF=T

When running coupled analysis (with wind and wave, YawDOF =T, all other DOF = T): Capture

Upscaled_SPARElastoDyn.txt Upscaled_SPARServoDyn.txt Upscaled_SPAR_AeroDyn15.txt Upscaled_spaR_hydrodyn_file.txt InflowFile1.txt These are my input files.

The problem I face in coupled analysis is gone as i disable the YawDOF, PltfmHvDOF, PltfmYDOF, without chnaging any other flags in the input file.

Thanking you in advance,

jjonkman commented 3 years ago

Dear @AryaThomas,

From my quick skim of your files, I see a few things that are questionable:

Best regards,

AryaThomas commented 3 years ago

Hi Jason,

turbsim.txt MAP.txt

And done the usual coupled simulation (all DOFs are enabled), but it got aborted: 1 2

I hope these answers are sufficient for you to understand my issues.

Thanking you,

jjonkman commented 3 years ago

Dear @AryaThomas,

Just a few comments:

Best regards,

AryaThomas commented 3 years ago

Hi Jason,

Regards,

jjonkman commented 3 years ago

Dear @AryaThomas,

Yes, it is helpful to review the simulation results (blade, tower, and platform deflections/displacements) for the portion of the simulation that ran before aborting.

The location of the platform DOF in ElastoDyn does not change the reference point for the potential-flow solution in HydroDyn, which is still (0,0,0) in the version of OpenFAST you are using. So, you must transform the AQWA output from the COG to (0,0,0). This has also been discussed on our forum, e.g., see: https://wind.nrel.gov/forum/wind/viewtopic.php?f=3&t=2198&p=14814 and https://wind.nrel.gov/forum/wind/viewtopic.php?f=4&t=1257.

Best regards,

AryaThomas commented 3 years ago

Hi Jason

After transforming the AQWA output from COG to SWL and adding additional platform additional damping and stiffness in hydrodyn, the simulation has ran without errors.

Thank you for your time.

AryaThomas commented 3 years ago

Hi Jason

  1. I have a question regarding Jason.m PSD script. I have asked this same question, but I did not get the solution even after your reply. jason code jason plot

Can you please explain how to check the low frequency values to get non-zero psd values?

  1. Also how to use the RAO.m script, what is the command line ? For this, I need to create time series of DOF with a white noise wave spectrum with all input files of FAST for operational load case right?
jjonkman commented 3 years ago

Dear @AryaThomas,

Regarding _JasonPSD.m, the spike at zero frequency represents the mean (zero frequency) value of the signal. This value is likely far larger than the values at other frequencies. If you don't plot the results for f<= 0, or zoom in over the low frequencies, my guess is you'll see other nonzero values of the spectrum (Sf1) at positive frequencies (unless the Data is constant over time).

The use of the RAO.m script is documented in its header. The MATLAT syntax is:

[FRF,fi] = ComputeFRFs(time,U,Y,nens,plotting);

The RAO script does not require that the input wave elevation (U time series) be generated from a white noise spectrum (or perhaps I should say that that condition is not checked), but the RAO script would function best if U was based on a white noise spectrum. Otherwise, the calculation may be ill-conditioned if the auto-spectral density of the input wave elevation tends to zero at certain frequencies.

Best regards,

AryaThomas commented 3 years ago

Ok Jason, I will use the scripts and come back to you. Thanks a lot.

AryaThomas commented 3 years ago

Hi Jason,

  1. I have got the same plot when I used the Jason.m, but when I zoom in over the lower positive frequencies, I have got values for spectrum. I have used the code like this : Data=xlsread('surge_series.xlsx','sheet1') df=1/700 N=700/0.0125 [f1,Sf1]=Jason_PSD(Data,df,N) psd_Surge

surge_series.xlsx Is my inputs correct? How to avoid the mean value (at zero frequency) of the signal?

  1. In RAO.m, I getting a plot like this frf frf1

Second picture is the zoomed one of first pic. I have a few doubts: time= the total simulation time series (0 to 700) U = input wave elevation series (I have not used the white noise spectrum) Y = time series of the DOF (in my case surge time series) nens=4 Is these right? I am not able to attachthese files , but screenshots are here. I have done a coupled simulation with all input files of OpenFAST. time: time U: U Y: Y

matlab

If they are right, then is my RAO plot correct? In the RAO.m it is written that "This function calculates RAOs based on averaging multiple output files generated with white noise excitation. Averaging four files appears to give decent results. Six files gives good results." what does this actually mean?

jjonkman commented 3 years ago

Dear @AryaThomas,

Yes, your PSD looks correct to me. Looking at your time series, the dominant frequency is at about 0.007 Hz, which is what the dominant peak is in your PSD. You can remove the mean from the time series before processing the PSD if you don't want a spike at zero frequency showing up in the PSD.

Regarding RAO.m, yes, that sounds correct. But again, the RAO results will only make sense over the frequency range where there is wave energy (which is why the use of white noise waves is the best). If you are not using white noise waves, I would first calculate the PSD of the wave elevation. And I would only review the RAO results over the frequency range where a decent amount of wave energy exists. in RAO.m, nens is the number of time series the signals will be separated into in order to ensemble-average (smooth) the RAO.

Best regards,

QAlexande commented 2 years ago

Dear @jjonkman Hello, I am a newcomer to fast, and recently I encountered some problems : My goal is to obtain the attenuation response of a spar-type wind turbine with a pitch and fore-aft degree of freedom when the platform inclination is 5° under static water and no wind conditions. I set up my openfast3.0 program through the following steps , setp1: image step2: image step3: image

Finally I got the following picture : image But there seems to be some gaps compared with the figure in the paper : image

Can you give me some advice on this

Best regards,

andrew-platt commented 2 years ago

@QAlexande, what is the time scale on the second plot?

QAlexande commented 2 years ago

dear @andrew-platt The time scale on the second plot is image Best regards,

jjonkman commented 2 years ago

Dear @QAlexande,

I'm not sure what paper you are referencing, but one problem could be that pitch and surge motions are coupled in the OC3-Hywind spar, so, if you enable pitch while disabling surge DOFs, then I would not expect that you'd get a representative response.

Best regards,

QAlexande commented 2 years ago

dear @jjonkman Thank you very much for your reply, with your help, I have reached the goal, thank you very much。 Best regards,