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 454 forks source link

Cable Control #2297

Open WS991106 opened 2 months ago

WS991106 commented 2 months ago

Dear @andrew-platt,

I have two questions for you. 1, Is there any theoretical formula to show the relationship between Cable DeltaL Control and Cable DeltaLdot Control in terms of their quantitative relationship? 2、Cable Control changes the length of the last section of the mooring line, which will definitely affect the tension of the cable guide, I want to know the relationship between them, where should I get it?

Best regards,

mattEhall commented 2 months ago

Hi there, MoorDyn needs to calculate both the strain and the strain rate of every mooring line segment, so for length adjustments it needs to know bot the delta L and its rate of change (respectively) for those calculations. In general, those two inputs should be calculated based on how you model your actuation system. In the simplest form, you would just want to make sure they are consistent with a smooth/continuous length change. For example, if deltaL is changing by a constant rate, then make sure the deltaLdot is a constant value equal to that rate. Matt

WS991106 commented 2 months ago

Where can I find this drive system?
If it's the simplest system, and I enter DeltaL as a ramp function, then DeltaLdot is set to the slope of the ramp function, am I understanding correctly?

WS991106 commented 1 month ago

Dear @jjonkman ,

Do you know the boundary values of DeltaL and DeltaLdot?

Best regards,

jjonkman commented 1 month ago

Dear @WS991106,

The drive system is what you are implementing through your cable controller. In your ramp example, I agree with your description of DeltaLdot.

The only limitation regarding the magnitude of DeltaL and DeltaLdot is that you can't set DeltaL such that the segment length change is excessive, as checked in MoorDyn.f90 / MD_CalcContStateDeriv().

Best regards,

WS991106 commented 1 month ago

Dear @jjonkman ,

I found the boundary constraints in MoorDyn.f90 / MD_CalcContStateDeriv(), which require the length not to exceed the unstretched length/number of segments, image and as far as I understand the unstretched length in the MoorDyn.data file is 835.35m, so the limiting length change should be 41.7675m as well, but why do I get an error if I give DeltaL a signal of 14m? Is it because the time step is too short? image

Best regards,

WS991106 commented 1 month ago

Dear @jjonkman ,

Like this if I give him a fixed value directly it will just report an error. image image If I give the DeltaL slope signal (with a slope of 0.1) and DeltaLdot=0.1 I wait until it exceeds 41.767 and get an error. image

jjonkman commented 1 month ago

Dear @WS991106,

In your first example, what error are you getting when set DeltaL to a constant value of 14 m?

In your second example, the error makes sense because DeltaL cannot be greater than original element length.

Best regards,

WS991106 commented 1 month ago

Dear @jjonkman,

In your first example, when set DeltaL to a constant value of 14 m ,he following error will be report. "Active tension command will make a segment longer than the limit of twice its original length" I'm wondering why this error occurs, since 14m is not more than twice his original length. image

mattEhall commented 1 month ago

Hm, so as I understand it (1) an abrupt change to deltaL of 14 m causes an error, (2) a gradual change of deltaL only hits an error at 41 m, as expected. Perhaps in the first case there is an issue with a very large rate of change that causes an internal deltaL in MoorDyn to be larger than the limit in the process of time integration and interpolation/extrapolation between coupling time steps. In other words, it would only be an error for very abrupt length changes (that are likely not physically realistic anyway). Would that explain the behavior in the first case? Matt

WS991106 commented 1 month ago

Dear @jjonkman,

Is the tension on the last section of the cable equal to the Fairten? I want to be sure because I want to use this tension deviation as a controller input signal!

Best regards,

jjonkman commented 1 month ago

Dear @WS991106,

You should be able to output both tensions from MoorDyn to compare. My guess is the two tensions would be similar but not identical, due to the small weight of 1/2 a cable element that would be included in the fairlead tension but not the last section of line tension.

Best regards,

WS991106 commented 1 month ago

Dear @jjonkman,

Okay, thanks for the reply. I would also like to ask if it's possible to use only the DeltaL interface and not the DeltaLdot interface during the building of the controller? That is, only the change in length is taken into account not the rate of change.

mattEhall commented 1 month ago

Dear @WS991106,

Using only DeltaL and not DeltaLdot would cause kinematics inconsistencies inside MoorDyn during its internal time steps. Essentially it would result in a step change in the unstretched length at each coupling time step, which could cause spikes that then trigger vibrations between the coupling time steps. I would strongly recommend using DeltaLdot too.

Also, I agree with Jason's last comment; there would be a small weight difference between the fairlead tension and the tension of the last segment.

Matt

WS991106 commented 1 month ago

@mattEhall

Thank you very much for your answer.

Best regards,

WS991106 commented 1 month ago

Dear @jjonkman,

I have designed a simple Cable control controller, I use PID controller, the input signal is the deviation signal of the platform traverse angle, the actuator uses a simplified first order link, the output signal of the actuator is to adjust the length of the cable, and then I pass this signal directly to DeltaLdot, is this feasible, or is it correct? Or is it correct? image image

jjonkman commented 1 month ago

Dear @WS991106,

I have no personally experience designing cable controller, but I agree that you should derive deltaLdot from deltaL and send both to MoorDyn.

Best regards,

WS991106 commented 3 weeks ago

Dear @jjonkman,

The cable control changes the length of the last section of the mooring line, which definitely affects the tension on the last section, I would like to know the relationship or physical equation between them.Do you know it please?

I would also like to ask if what I found in this literature is a relational equation illustrating the relationship between length change and segment tension? image image

Best regards,

WS991106 commented 3 weeks ago

Dear @jjonkman,

If I want to use the cable guide tension deviation as an input signal to the controller, what should be the set value for this cable guide tension? Is the value I found in the literature 《Validation of a lumped-mass mooring line model with DeepCwind semisubmersible model test data》usable? image If it works, should I set the setting to Target fairlead tension or LM fairlead tension in Original lengths or LM fairlead tension in Tuned lengths? Best regards,

RyanDavies19 commented 2 weeks ago

Dear @jjonkman,

The cable control changes the length of the last section of the mooring line, which definitely affects the tension on the last section, I would like to know the relationship or physical equation between them.Do you know it please?

I would also like to ask if what I found in this literature is a relational equation illustrating the relationship between length change and segment tension?

Best regards,

@WS991106 Equation 3 from your image is the magnitude of the segment tension, while equation 4 is the vector of the segment tension. If you are curious about the implementation, equation 3 from that screenshot can be found here: https://github.com/OpenFAST/openfast/blob/43d3d2ce0419b6c46070223097068b813d338831/modules/moordyn/src/MoorDyn_Line.f90#L1217 equation 4 can be found here: https://github.com/OpenFAST/openfast/blob/43d3d2ce0419b6c46070223097068b813d338831/modules/moordyn/src/MoorDyn_Line.f90#L1245

These are the equations that relate the segment length changes to the tensions in each segment, so if you know your new stretched length you should be able to calculate a new tension.

RyanDavies19 commented 2 weeks ago

Dear @jjonkman,

If I want to use the cable guide tension deviation as an input signal to the controller, what should be the set value for this cable guide tension? Is the value I found in the literature 《Validation of a lumped-mass mooring line model with DeepCwind semisubmersible model test data》usable? image If it works, should I set the setting to Target fairlead tension or LM fairlead tension in Original lengths or LM fairlead tension in Tuned lengths? Best regards,

@WS991106 I am not entirely sure what your design is so it is hard to give an exact number. One option is to use the static tension in the cable (no external forcing) as your baseline tension for calculating deviations. One way to get this using MoorDyn is to run your simulation with no wind or waves, allowing it to reach an equilibrium state. From there extract the cable fairlead tension and use that as your baseline tension from which you calculate deviations. The tensions in the paper you reference are the static tensions for the mooring lines.

WS991106 commented 2 weeks ago

Dear @RyanDavies19,

My research is about active safety control of floating wind turbines under wind-wave coupled conditions, which is mainly realised by an active control mooring system, so I would like to ask what should be the value of the fairlead tension if it is extracted to use it as the reference tension for calculating the deviation?

Best regards,

RyanDavies19 commented 1 week ago

Hi @WS991106,

I can't give you an exact number you should use because it is system dependent and relative to how you want your simulation to be run. However I think that the static tension is a good reference to use for calculating the deviation. To find that, you can use the method I shared above. You could also use a different mooring design tool, like MoorPy, to find the tensions at steady-state.

WS991106 commented 1 week ago

Dear @RyanDavies19,

May I ask if these are the three static tensions? image

RyanDavies19 commented 1 week ago

@WS991106,

From my reading of the paper those are the experimental static fairlead tensions that were recorded for that specific mooring configuration. Lower down in table 6 there are the static LM and QS tensions, which are the values calculated by the respective models of that mooring configuration in its steady state.

I will note that this paper described the behavior of MoorDyn version 1. Since then there have been a number of improvements to the code that increase its capabilities and accuracy, so the most accurate way to get the static tensions to use in controls offsets would be to extract them with the version of MoorDyn you are using.

WS991106 commented 1 week ago

Dear @RyanDavies19,

How do I extract static tension based on MoorDyn V2? My version of OpenFAST is v3.5.3

RyanDavies19 commented 1 week ago

@WS991106 I am not entirely sure what your design is so it is hard to give an exact number. One option is to use the static tension in the cable (no external forcing) as your baseline tension for calculating deviations. One way to get this using MoorDyn is to run your simulation with no wind or waves, allowing it to reach an equilibrium state. From there extract the cable fairlead tension and use that as your baseline tension from which you calculate deviations. The tensions in the paper you reference are the static tensions for the mooring lines.

@WS991106 see this message for the method

WS991106 commented 1 week ago

Dear @RyanDavies19,

Ok, I understand, thanks. I would also like to ask if this piece of data comes up every time I run Matlab, is 1002kN, 1376kN, 1002kN the cable guide tension in still water? image

RyanDavies19 commented 1 week ago

@WS991106 provided your system is running in still water (no water kinematics) then yes that is the steady state tension

WS991106 commented 1 week ago

Dear @RyanDavies19,

In the absence of hydrodynamics, the steady state tension should be different for different wind speeds, right?

RyanDavies19 commented 6 days ago

Hi @WS991106. The steady state tension that MoorDyn prints after initialization is without any external forcing (no wind, no hydrodynamics).