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
694 stars 458 forks source link

Strain and strain rate question #2393

Open WS991106 opened 2 months ago

WS991106 commented 2 months ago

Dear @mattEhall,

I understand that Moordyn needs to calculate the strain and strain rate of each segment, so I need to input signals to DeltaL and DeltaLdot when I use Cable control, can you tell me the relationship between strain and DeltaL, and the relationship between strain rate and DeltaLdot as I described below?

image image

included among these, image

Best regards,

RyanDavies19 commented 2 months ago

@WS991106 The strain and strain rate relationships in MoorDyn are laid out in the original theory paper again, specifically equations 3 and 6: https://www.sciencedirect.com/science/article/pii/S0029801815002279

In your notation, your first equation for strain is correct. For the rate of strain you don't define delta_L_dot, but it should be something like this (based off eqn 6 in the linked paper): Screenshot 2024-08-27 at 4 10 02 PM

WS991106 commented 2 months ago

Dear @RyanDavies19,

I derived the formula you gave for DeltaLdot, is this correct? image If it is correct, then it should be the same steps as deriving the formula for strain rate image Isn't this the equation for the relationship between strain rate and DeltaLdot without defining DeltaLdot? image

WS991106 commented 2 months ago

Dear @RyanDavies19,

image The article says it doesn't model the compression forces, so which formula to follow when DeltaL is negative?

RyanDavies19 commented 2 months ago

Dear @RyanDavies19,

I derived the formula you gave for DeltaLdot, is this correct? image If it is correct, then it should be the same steps as deriving the formula for strain rate image Isn't this the equation for the relationship between strain rate and DeltaLdot without defining DeltaLdot? image

This all looks correct, it is the same as what is detailed in equations 3-6 in the paper I shared above.

RyanDavies19 commented 2 months ago

Dear @RyanDavies19,

image The article says it doesn't model the compression forces, so which formula to follow when DeltaL is negative?

When the segment stretched length is less than the unstretched length (delta_L < 0), then MoorDyn just sets the tension to zero. See here: https://github.com/OpenFAST/openfast/blob/43d3d2ce0419b6c46070223097068b813d338831/modules/moordyn/src/MoorDyn_Line.f90#L1216

The strain and rate of strain are still calculated using the formulas above, they are just ignored unless delta_L is positive.

WS991106 commented 2 months ago

Dear @RyanDavies19,

The segment tension is 0 when DeltaL is negative, so the damping force and other external forces are calculated normally, and equation 15 should become the part with no tension, is this correct? image

RyanDavies19 commented 2 months ago

@WS991106 yes that is correct

WS991106 commented 1 month ago

Dear @RyanDavies19,

I want to characterize a mooring system with three mooring lines connected to a semi-submersible turbine, but I'm not quite sure on what basis to input different DeltaL signals to the three mooring lines? Can you please guide me on how to do this?

Best regards,

WS991106 commented 1 month ago

@RyanDavies19 ,

I would also like to ask if it is correct for me to directly derive the DeltaL signal and then use it as the input signal to DeltaLdot? image

RyanDavies19 commented 1 month ago

Hi @WS991106,

That seems correct to me. DeltaLdot should be the rate of change of a given deltaL value, at the same time step.

Yesterday we updated the documentation for controls with MoorDyn-F: https://moordyn.readthedocs.io/en/latest/inputs.html#control-moordyn-f-only

Hopefully this can help you with getting things set up. Let me know if that doesn't answer your question!

WS991106 commented 1 month ago

Dear @RyanDavies19,

Can you describe to me what exactly the DeltaL change corresponds to? For example, if DeltaL is positive, is it stretching the mooring line, and if DeltaL is negative, is it tightening the mooring line?

RyanDavies19 commented 1 month ago

@WS991106 yes that is correct. DeltaL is the change in length of the last segment in the mooring line. If it is positive then the mooring line is getting longer (less tension) and if it is negative the line is getting shorter (more tension)

WS991106 commented 1 month ago

@RyanDavies19 , But when Deltal is negative, according to the formula in the picture below, there should be no segment tension. Why does the tension increase? image

RyanDavies19 commented 1 month ago

@WS991106,

Apologies for the confusing notation and variable names here. DeltaL and DeltaLdot change the segment baseline un-stretched length of the last segment (Line%l(N)) rather than stretching the segment length inside of Line_GetStateDerivative. This occurs here: https://github.com/OpenFAST/openfast/blob/43d3d2ce0419b6c46070223097068b813d338831/modules/moordyn/src/MoorDyn.f90#L2867

So the tension changes because the underlying un-stretched length value changes. If the segment change in length relative to this updated un-stretched length is negative then the tensions will be zero.

WS991106 commented 1 month ago

@RyanDavies19 ,

Thank you for your answer. I don't really understand this updated unstretched length, could you please explain? Then I would like to ask if this active tension control of the mooring line can be thought of as simulating a winch installed at the connection between the last section of the mooring line and the platform to contract or stretch the mooring line?

WS991106 commented 1 month ago

@RyanDavies19 , Can you guide which quantities are better to use as feedback quantities if I want to do active tension control? Like using pitch angle, cross swing angle, or cable guide tension? Thank you very much!

RyanDavies19 commented 1 month ago

Hi @WS991106,

The changing of the un-stretched length can be intuitively thought of as a winch on the cable end. It makes the mooring line longer or shorter depending on the control signal, after which MoorDyn will calculate the stretch of the line and loads at the new length. For example if you send a deltaL signal of 10 and then 0, MoorDyn will now be simulating a mooring line that is 10m longer. In the implementation this length increase is not spread to all the segments, just the end segment.

WS991106 commented 1 month ago

@RyanDavies19,

Wouldn't it be better to give DeltaL a discrete signal? Because given a signal 10, MoorDyn needs to perform a computation that contains a delay in between, and doesn't fully pick up on continuous signals. Or add a zero-order keeper after the continuous signal? Because I think the sampling time of the wind turbine is 0.0125s, and MoorDyn's simulation time doesn't seem to be equal to this time step

anishas26 commented 4 weeks ago

I would give DeltaL a discrete signal instead of a continuous one. Since moordyn expects the values of delta L and delta L dot to match up, I had a discrete signal for one and then either integrated/derived the other.

In terms of sampling time, the simulink model itself has a sampling DT and so does the fst file. I'd make sure both of those match to whatever time step you want the simulation to run at in order to control how fast MoorDyn is running.

WS991106 commented 3 weeks ago

Dear @RyanDavies19,

What kind of discrete signal is better for DeltaL? Because I have to use the DeltaLdot interface.

WS991106 commented 3 weeks ago

Dear @RyanDavies19,

I input a rectangular pulse signal with amplitude 8, period 10s and pulse width 20, the period is matched to the wave period, but the runtime will give me the following error.What is the reason for this? image

image And I would like to know why the value calculated by the simulation is so large when the DeltaL signal amplitude I gave is 8m. image

RyanDavies19 commented 3 weeks ago

Hi @WS991106,

I would check that you are giving the correct signal. The error you are seeing from MoorDyn is because it is receiving a DeltaL value of -21.822, which is more than half of a segment length. That error shows: <deltaL> is a reduction of more than half of <L>.

As for type of signal, I would probably suggest something continuous like a sine wave. That way you can get a continuous deltaLdot signal as well.