OpenFast 2nd order Linearization

Hi Jason

After reading some posts and a quick scan of the user guide, my understanding of the FAST/OpengFast linearization capability is that, at the current stage, only FAST V7 is able to do a 2nd order Linearization (e.g. output MCK matrix). Whether the above is correct or have I missed something? It would be apricated if you can help to clarify this. If the above statement is correct, is there any plan of implementing the 2nd order linearization into a future OpenFast version?

The 2nd order linearization is pretty handy to calculate a floating platform mass matrix when only system and wind turbine information is known. What I am currently doing is getting the MCK matrix from the FASTV7, apply the result to OpenFast afterwards. It would be nice if OpenFast itself can preform the 2nd order linearization.

Best Regards
David

Dear David,

The linearization of FAST v7 was limited in its ability to linearize anything other than the structural equations of motion. OpenFAST linearization also supports linearization of the hydrodynamics, aerodynamics, etc., which have equations that do not involve second time derivatives. So, the intent is for the OpenFAST linearization to focus on the generation of first-order systems (with equations that involve second time derivatives converted to first order states).

That said, the mass matrix for the structural system can often be inferred from other matrices generated through the linearization process. E.g., for the six platform degrees of freedom of ElastoDyn, which has inputs (u) that are loads (forces/moments, F) and outputs (y) that are accelerations (a), it is understood that:

F = M*a

or equivalently

a = M^-1*F

and from the linearization process

dy = D*du

implies that

M^-1 = D

or

M = D^-1

That is, the 6x6 rigid-body mass matrix (M) of ElastoDyn can be found by taking the matrix inverse of the 6x6 subset of the input-transmission matrix (D), associated with the 6 platform load inputs and 6 platform acceleration outputs.

And once you have M, you can derive the stiffness (K) and damping (C) matrices from the state matrix (A) because A often has the form;

A = [ 0, I; -M^-1*K, -M^-1*C ]

I hope that helps.

Best regards,

Dear Jason

Thanks for your detailed and clear explanation, that really helps!

Best Regards
David

Dear Jason,

Can I use this linearization approach in OpenFAST to derive the mass, damping and stiffness (MCK) matrix particularly for mooring line?

If yes then what changes should I have to made in my .fst and other input files.

Best Regards
Kajal Thakur

Dear @Kajal.Thakur,

Presumably you are using MoorDyn; is that correct?

The approach described above showed how to get the mass matrix through the “D” matrix when loads are input and acceleration is an output. However, loads are not an input that would appear in the linearization of MoorDyn, so, this approach would not work. I’m not sure if there is a direct way to obtain the mass matrix from MoorDyn in some other way. I’ll let someone more knowledgeable about MoorDyn answer that. If you can obtain the mass matrix, the linearized stiffness and damping of the mooring system could be derived from the state matrix “A” of the linearized MoorDyn output.

FYI: If you are using MAP++, this module has no mooring system mass or damping (it only has stiffness). If you are using FEAMooring, this OpenFAST module cannot currently be linearized.

Best regards,

Dear @Jason.Jonkman

Thanks for your fast reply. I still have following two questions:

  1. Does this linearization approach can be used for extracting the mass matrix of full system?

  2. Is there another approach for extraction of MCK matrix for mooring specific?

Best regards,
Kajal Thakur

Dear @Kajal.Thakur,

Regarding (1), not in general, unless the full system is a rigid body. For a flexible body, you would need load inputs in the linear system that are tied to a specific DOF, which OpenFAST does not include in the linearized system.

Regarding (2), I asked the MoorDyn developers and they told me that there is no direct way for MoorDyn to output the linearized mass, stiffness, and damping matrices of the mooring system (presuming that you are interested in MoorDyn). But I’ll let them follow up directly in case they can provide further information.

Best regards,

Hi @Kajal.Thakur,

Jason is right, MoorDyn does not have linearized mass, stiffness, or damping matrices because it is a time domain dynamics model. OpenFAST does have a quasi-static mooring model, MAP++, that should be able to give you these. Additionally there are external tools like MoorPy that can also provide mooring stiffness information. For a discussion of MAP++: Mooring stiffness matrix - #7 by Jason.Jonkman

Just to clarify: MAP++ is a quasi-static model, and so, can only provide the stiffness matrix, not mass or damping matrices.

1 Like

Dear @Jason.Jonkman ,

I have got the stiffness matrix from MAP++. But I have some doubts regarding it.

The stiffness matrix I got is identical to the stiffness matrix mentioned in OC4 semisubmersible definition(“https://www.nrel.gov/docs/fy14osti/60601.pdf”) for all lines as shown below:

[7.08E+04, 0, 0, 0, -1.08E+05, 0;
0, 7.08E+04, 0, 1.08E+05, 0, 0;
0, 0, 1.91E+04, 0, 0, 0;
0, 1.07E+05, 0, 8.73E+07, 0, 0;
-1.07E+05, 0, 0, 0, 8.73E+07, 0;
0, 0, 0, 0, 0, 1.17E+08]

I had also attached my MAP++ file along with it.

This MAP++ file contains coordinates of only 1 mooring line, so I want to confirm that the above mentioned stiffness matrix is for all 3 moorings or only one?

Best regards
Kajal Thakur

Dear @Kajal.Thakur,

I see that the last line of your MAP++ input file is

repeat 240 120

, which adds the second and third lines by repeating the first line at different azimuth angles around the vertical axis. So, your MAP++ model represents the complete mooring system.

Best regards,

Dear @Jason.Jonkman ,

Thank you for your reply. It solved my problem.

Best regards,
Kajal Thakur