-
Notifications
You must be signed in to change notification settings - Fork 460
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Campbell diagram #480
Comments
Hi, We typically run the linearization using a set of matlab scripts (compatible with Octave). The scripts write a set of openfast input files for different operating conditions, run fast, postprocess the linearization files using a Campbell transformation, and then perform a plot. Before plotting, a manual identification of the modes is typically necessary. I'm currently working on updating these matlab scripts. If you want, you can clone my fork of the
You can try running the script We are also in the process of doing different updates on the linearization functionalities of OpenFAST (soon we'll have a trim option to automatically find periodic steady states, instead of running for a long time), so things will likely change, but hopefully the matlab scripts will not be affected significantly. Feel free to report issues in my Emmanuel |
@ebranlard Thank you very much for pointing me to right direction. The matlab-toolbox would certainly be helpful in this regard. |
Hi @ebranlard, I am currently facing some issues with the MATLAB-toolbox for Campbell diagram. I was able to fix a few myself, but I am stuck at the final one. I am using MATLAB 2019b The code fails in postproLinearization() specificially in campbellData2TXT>ShortModeDescr routine. For ShortModeDescr, seems the array is going out of bounds. This is the specific error: Index exceeds the number of array elements (14). Error in campbellData2TXT>ShortModeDescr (line **) Any suggestions/guidance on how to overcome this issue? ############################################################################## Any guidance would be really helpful, as I am completely new to this field. Best Regards, |
@ebranlard I was able to do a work-around by just running loops from 1 to NModesKeep-1. Best Regards, |
I've submitted a small change that I hope will fix the issue you saw. Even at constant rpm (without controller and generator) you need time for the simulation to reach a steady state, since you will likely have transients at the beginning of your simulations. You need time for the tower top deflections, blade deflections, shaft torsion to reach an equilibrium position. These transients will be present with or without a controller. With a controller on, you also have to wait for the balance between generator torque and rotor speed to take place. You also need to use the simple controller and not the DLL. It's usually more work, that's why I suggested to do linearization without the controller first. OpenFAST can do linearizations at any time, but for a Campbell diagram, you do want a periodic steady state to be reached. |
@ebranlard Thank you for the detailed guidance. This is really helpful. I will use your new merge. PS: The fix you suggested works great. A minor point, with variable nModesKeep, I had to do the initializations
with a temporary nModesKeep = 20, which will later get updated in the for loop
Best Regards, |
Hi @ebranlard - - A followup question, is there a way I can cotrol the number of output modes to be dumped in the Campbell summary. From the description and the getCampbellData.m it seems that the modes can be collected from the output Channels in the module files we are using. However, when I look at the summary files I see 17 modes and their frequency/damping information are outputted independent of the number of the output channels in Elastodyn/Servodyn say. When I am comparing with another software Best Regards, |
Hi, Thanks for the updated tip above, I'll include that. The number of modes is related to the number of states of your system, typically half. When you use ElastoDyn you'll typically have between 12 and 17 modes based on which DOF are activated. You can see the states listed in a The first collective edgewise mode is usually combined with the drive train torsion, since the collective edgewise motion of the blades will induce torsion of the shaft. This is why it doesn't appear. I hope that helps, Emmanuel |
@ebranlard Thank you. Yes, I was seeing that the .lin files the number of continous states is 30 X 30 matrices, so it does make sense. So, is there a way to decouple the edgewise collective mode from the drive train torsion? Or any rule of thumb to compute the frequencies of edgewise collective from the drivetrain torsion mode? Best Regards, |
Your edgewise collective frequency will be close to the individual blade edgewise frequency but will increase with increased rotational speed. You could run with a fixed drivetrain (GenDOF=False, DrTrDOF=False) to get these frequencies out at different RPM. |
@ebranlard , OK this makes complete sense, Thanks a lot. Best Regards, |
Hi @ebranlard : A follow up question related to the interpretation of the modes in the Campbell analysis. (CampbellDataSummary.xlsx) I read the mode shapes signed magnitudes, but I believe I am not interpreting them correctly. For the NREL 5MW turbine case, when I am using No Servo for operating points for OP: 3 mps wind speed, the .xlsx file says that mode number 2 corresponds to Tower F-A mode 1, @ wind speed 3 mps. Mode 2 signed magnitude in column H, I guess this is the mode max state for the different degrees of freedom and not really the mode shape. I guess, to properly extract the mode shapes I need to tap out the Eigenvalue_save vectors from the eigenanalysis in the tool-box, is that correct? Best Regards, |
Hi @tchatte3, I think your interpretation is correct, but the thing that can be confusing is that the first column lists states. When using EalstoDyn these states have an easy interpretation since they correspond to the amplitude of a shape function, and each shape function induces some predefined displacements on each node of a body, in a single direction. If you were running Beamdyn, you'll have hundreds of states for the blades, each representing a displacement in x y or z of a node of the blade. In this table, you'll have hundreds of lines, and you'll see that the states that corresponds to x-displacements of the blade nodes have a strong amplitude (indicating some flapping of the blade). What you can read from the table is that, for this mode 2, there are some important flapping amplitudes and tower fore-aft amplitude. This is likely expected for what we call the "tower fore-aft mode" of the full structure. Given the low frequency, we can identify this as a tower mode, and not the 1st collective or the 2nd collective flap. I personally like to look at the "Summary.txt" file to identify the modes. It is usually not enough, and you need to look at the continuity from one operating point to the next. We are currently working on some mode shape visualization (#373), and we'll release this soon. This process requires to run OpenFAST twice, so it is more involved and ressource-heavy. You can try compiling this version, and using the matlab script "runCampbell_Trim.m" in my repository. You will need "paraview-python" if you want to generate avi files. Otherwise, you can open the vtk files using a regular paraview software. You can find some documentation below, but this is out of sync with my version of the matlab-toolbox. My version of the matlab-toolbox basically tries to automate the steps mentioned in the documentation. You can read it to see what's happening behind the scene, but you won't need to follow the steps mentioned or download any of the files: I'd appreciate your feedback on running the script "runCampbell_Trim". Thanks |
Hi @ebranlard , thanks for the detailed response. This is indeed very helpful. I see, ok I will checkout #373 and use the runCampbell_Trim option that you suggested. Best Regards, |
@ebranlard A follow-up question. Looking at the Campbell Summary txt file. 01 ; 0.203 ; 0.0054 ; ED 1st tower SS - The lines were -NoMax is; would that really mean that the modes are kind of coupled, and there is particularly no -dominant mode for that particular mode-number, e.g., mode 05 and 08. How to interprete that? Any guidance? PS: I am planning to run the Trim version of Campbell this weekend and see how that works for me. Best Regards, |
Hi, your interpretation is correct, the "NoMax" flag is to indicate that the column "State has max" (as seen in the Excel file) is all False. In that case, the 8 first states descriptions are written, sorted in order of their intensity. It's not easy to interprete.
|
@ebranlard Thanks for corroborating the hypothesis. It is helpful. Yes, indeed I have several OP's / wind speeds which I can compare for Freq. vs Speed and Damping vs Speed. Related to trim option in openfast and that available as a wrapper in your matlab-toolbox. Should the Wr_VTK be set to 1? Best Regards, |
The matlab script I don't think we provide binaries for dev versions so you would have to compile it. Let us know if that's an issue. |
@ebranlard Thanks. OK, I will try to see if I can compare openfast in windows. I will go ahead and set Wr_VTK = 3 and run the trim option. Thanks for all these valuable feedback. |
Hi @zz17635, drive train torsion and edgewise collective go hand in hand in a "fixed-free" situation (fixed at the generator side, and free on the rotor side). It is clearly a combination of drivetrain torsion and edgewise, but I think we usually refer to it as "1st drivetrain torsional mode". Regarding your second question, we use the natural frequency. You can find a matlab and python script called |
Thanks for the explanation @ebranlard. ya.. I should take a closer look at the posts above. You mentioned previously, sometimes the modes can be hard to interpret. I'll go with "1st drivetrain torsional mode" then. For the plotCampbellData script, I had a go on the Matlab one for the .lin file generated from the r-test example "5MW_Land_ModeShapes", and got the following error message: Index exceeds matrix dimensions. What might be the problem? If I understand it right from the comments in fx_mbc3.m, campbell_diagram_data.m and Plot_CampbellData.m, I would already have (the data for plotting) a Campbell Diagram, by running the following lines in Matlab? and the content of the excel file should look like the one I posted above, right?
By the way, I'm also getting the following warnings from the "fx_mbc3()" function, I'm guessing it's no big deal as all 3 blades sheared one same input file. But does it matters? Running mbc3 (v2.0, 29-Jan-2018) Another thing is, I found an old post by Dr. Jason Jonkman back in 2011, where he provided a CampbellDiagram.xls spreadsheet for extracting Eigen information etc. Within the file, I found an example of Campbell Plot looks like below. I noticed that the frequencies of each mode are set to be not dependent on the rotor speed. Is it a legitimate simplifying approach for wind turbines? If so, I presume it'd be OK if I manually identify each mode required on the Campbell Diagram (as I have shown for the "1st drivetrain torsional mode" above) and plot the corresponding undamped frequency values as horizontal lines on Campbell Diagram and call it a day? The third thing - very sorry for my clumsiness and the long message - after I went through the r-test "5MW_Land_ModeShapes" (from which the result above was obtained), I intend to practice the mode shape extraction procedure for a monopile offshore wind turbine, based on the r-test example: "5MW_OC3Mnpl_DLL_WTurb_WavesIrr". as I turned SubDyn feature ON (CompSub=1) and ran the analysis, the following error message showed up, which seems to indicate SubDyn does not yet support linearisation? "FAST_InitializeAll:FAST_Init:ValidateInputData:Linearization is not implemented for the any of On the other hand, if SubDyn is turned OFF, of course the model is then not connected properly to the seabed or indeed anything , and error messages regarding "SkewedWakeCorrection" and "small angle assumption" show up. Does this mean, based on the current OpenFAST, it is not yet possible to perform a linearisation + mode visualisation for a monopile-OWT? Sorry if the stuff I mentioned is considered basic. I really appreciate your help.. |
Hi,
As for the triplets, these warnings are not an issue, and can be discarded. You need the same sensors for the three blades to perform the mbc of that sensor. But for the linearization and Campbell diagram you don't need these sensors (only the states, which are always included in the .lin file).
I hope that helps, |
Thank you Emmanuel. |
Hi @ebranlard I am writing regarding some interpretation issues in the Campbell analysis. Nat freq. vs wind speed plot. I was trying to compare my results against commercial Bladed software simulations for our turbine model and was observing some discrepancies. We tried to create almost similar model in Bladed to the level of fidelity in openfast (e.g., having 2 flapwise bending modes, 1 edgewise bending modes and removing torsional mode coupling in blades, + rigid foundation in tower etc) Because of mode coupling issues, I am not trying to cherry-pick any of the modes and label it, but rather using a single color and plotting all the frequencies vs wind speeds for modes 1-14 and trying map it with the Bladed Campbell diagram. These analysis are with MBC transform (fixed frame of reference) switched on. I know this is a detailed question, but wondering if you can sense any potential fundamental reasons for the discrepencies of the Campbell diagram plots. In general, do you recommend any bounds on the discrepency errors in Campbell diagram. Any help or suggestion? Best Regards, |
Hi @tchatte3, Just a few comments:
Best regards, |
My |
@jjonkman @ebranlard Thanks for these detailed inputs. @jjonkman I am using my own modified version of Campbell code originally gloned from @ebranlard repo, so yes outputfmt and FrozenWake = True is ensured. I am indeed running the simulations for a long time [tested for 300 secs , 500 secs] and azimuth averaging for 36 sectors. The bladed model that I showed was indeed tuned such that the OP points with Bladed are inputted in openFAST .csv file for Campbell run. But, while writing this I quickly tested my openfast to dump out the OP's with a PI controller that I am using and I see there is difference in the above rated conditions. So, thanks for pointing that out and I would take that as a starting point with OP conditions. |
@ebranlard, @jjonkman I had quick follow up question related to interpretation. I was intermediately doing Campbell analysis with the wind turbine in Parking condition/rotor-locked to get rid of the controller when comparing against Bladed software. I am using the MATLAB Campbell tool from @ebranlard 's repository. I am using following op points. Blade pitch = +90 deg, wind speed = 0, rotor rpm = 0.0 For Nat. Freq. in Hz, I get the following error margins.
I almost never get the Edge Collective mode correctly whether or not the Drive train DOF is turned ON or OFF. While the Nat Freq. is still "qualitatively acceptable", the damping seems quite off. Any thoughts related to why these discrepancies are occuring? Any guidance? In general, for Campbell practice, I have apriori knowledge of what time it takes to reach steady state with some buffer~ 100 secs. Additionally, I would increase the sim Time 2,3 5 times that time and perform Campbell analysis to see if the frequencies are influenced somehow. They are not. PS: The results do not change if I switch off/on the drive-train frequency. Kind Regards, |
Regarding the natural frequencies, the biggest differences between your OpenFAST and Bladed models appear in what you call collective edge and side-to-side direction. Perhaps these are related to how you are treating the generator in each model. Is the generator parked (GenDOF = False in ElastoDyn) or idling--i.e., a fixed-free or free-free boundary condition of the drivetrain, and is this set the same in each model? I would expect higher damping in the blades than in the tower and more damping flap/fore-aft, than edge/side-side. But I'm not sure I can comment explicitly on your results. How do these compare between OpenFAST and Bladed? Do you see similar levels of damping between the two models when you disable aerodynamics? Best regards, |
I now see that you've specified zero wind speed, so, I guess you are only looking at still-air drag for the parked case. For this caes, have you set WakeMod = 0 in AeroDyn so as to disable the wake calculation altogether? (The AeroDyn wake models are only valid for operational conditions.) For the operational case, you should use WakeMod = 1 with FrozenWake = TRUE. Best regards, |
I did not. But, when I set WakeMod = 0, [FrozeWake = TRUE], I do not see any differences in the results in the blade/tower modes. Best Regards, |
H @tchatte3 If you see big differences in frequencies, something could be off in the mass or stiffness definition (we also likely don't have the same capability than Bladed for the inertia and masses of the nacelle/shaft/generator and hub). For the drive train torsional mode, you can adjust the stiffness and damping of the shaft To go in further details, you can also do linearization with only the blade being flexible, in bladed and openafst, and try to match the frequencies and damping. Best regards, |
Hi @ebranlard, Thanks for the suggestions, they are very insightful. i) I will check, if the bladed damping ratio is defined differently than openfast. Problem is that there is not a consistent multiplicative bias, i.e., they are not consistently off by a factor of 100 or 10/(2pi) ii) Turning of Aerodyn in openfast I see minimal changes in Nat. frequency response. iii) Will look into the blade mass/stiffness definition. I agree with your suggestion regarding the capability. iv) DTTorSpr, DTTorDmp looks like a good starting point. v) Will also try for blade only frequencies. Thanks again for these suggestions, gives me a good starting point. Best Regards, |
@ebranlard @jjonkman I am closing this channel, as my issues are all resolved now. Thanks for all the help. |
Dear @ncepulibei, Which version of OpenFAST are you using? Best regards, |
@jjonkman The version I use is Openfastv2.4. |
Dear @ncepulibei, I know that NREL is debugging an issue associated with the linearization of BeamDyn that seemed to have been introduced between OpenFAST v2.3 and v2.4, so, reverting back to v2.3 may improve the BeamDyn linearization results. But I'm not intimately involved in this debugging, so, I'll let others (e.g., @ptrbortolotti or @ebranlard) comment if I spoke incorrectly. OpenFAST allows you to linearize a model at any point in time, but the linear system is most useful (and able to predict a representative eigensolution) only when the model is in steady state. Enabling Best regards, |
@jjonkman OK. I will try version 2.3.Thank you. |
Dear openfast team,
I am wondering if there is any reference I could be pointed to regards to creating a Campbell diagram in openFAST. Sepcifically, I was looking at a Campbell diagram in the Bladed software and would like to create something similar in openFAST. I understand, I should be starting from the linearization analysis in openFAST, but I am not sure how to compute the frequencies of the various DOF's of interest in the linearization analysis? Should I be using just the PSD's from a time-series of the DOF's ? Any help or guidance regarding this matter would be extremely valuable.
Best Regards,
The text was updated successfully, but these errors were encountered: