Dear all,

I am investigating the inertial loads due to teetering motion of a two-bladed rotor. To that extent, I set up a simulation with ElastoDyn only. In a way, this is a rotor operating in vacuum. A theoretical formulation for the reaction forces on the teeter pin when dealing with small teeter angles can be found in “How a teeterd rotor with delta-3 really works (2000)” by D.J. Malcolm. There, the following analytical expression is found:

Note that Mz is in the hub coordinate system and points in the blade’s spanwise direction. In short, `B`

is the teeter angle, `Omega`

the rotational velocity of the shaft, `I_z`

the mass moment of inertia of the rotor around its z-axis, `eta`

is some non-zero constant and `psi`

is the azimuthal position of the rotor.

The simulation that I set up prescribes an initial teeter angle of `1-degree`

with `d3=0`

. Since the rotor is operating in a vacuum, a sinusoidal motion of the teeter angle is expected:

However, ElastoDyn does not take a value for `I_z`

. This does not necessarily pose a problem, as it might be handled internally. But, the results for `LSSTipMza`

do look strange:

From the analytical expression, one expects a sinusoidal as the second term in the brackets equals `0`

. Clearly, the result deviates from a sinus. Next to that, the rotor I have modeled has a rotor inertia of `176 kg*m^2`

, which was confirmed by ElastoDyn’s summary file, but also `I_zz=3kg*m^2`

. Additionally, `Omega=24rad/s`

and `B=1deg=0.017rad`

. This gives `M_z=0.060kNm`

, which is a factor `100`

times larger than ElastoDyn yields.

Thus,

- (How) Is
`I_zz`

implemented in ElastoDyn?
- Is LSSTipMza the correct variable to consider?

Best,

Luc

P.S. snippet of ElastoDyn DOFs:

Snippet of rotor mass properties:

Dear @Luc.vanBeek,

I have not reviewed David Malcolm’s paper that you reference in many years, but just a few comments:

- Does your blade have nonzero
`PreCone`

or `UndSling`

? If not, I would expect `RotIner`

from the ElastoDyn summary file to equal I_z.
- The ElastoDyn moment about the teeter pin is
`LSSTipMya`

(not `LSSTipMza`

).
- Is the teeter angle sinusuidal from ElastoDyn as you expect? (You can output the teeter angle from ElastoDyn via
`TeetDefl`

.)
- Presumably you’ve disabled the teeter damping and stops not accounted for in Malcolm’s paper?

Best regards,

Dear @Jason.Jonkman

Does your blade have nonzero `PreCone`

or `UndSling`

? If not, I would expect `RotIner`

from the ElastoDyn summary file to equal I_z.

No, the modelled blade has no PreCone nor UndSling. However, I do not understand why `RotIner`

should be equal to I_z. When adhering to de blade coordinate system in the FAST manual, the z axis is aligned with the spanwise direction of the blade i.e. in the direction of the pitch axis. As far as I understand now, ElastoDyn uses the blade’s mass distribution in spanwise direction to calculate RotIner. But, it is impossible to derive I_z from this information while it is a relevant parameter for the hinge loads.

The ElastoDyn moment about the teeter pin is `LSSTipMya`

(not `LSSTipMza`

).

The moment governing the teeter motion is `LSSTipMya`

, however the reaction i.e. restraint moment on the teeter hinge is `LSSTipMza`

according to the FAST manual. Nevertheless, I have plotted `LSSTipMya`

below.

Is the teeter angle sinusuidal from ElastoDyn as you expect? (You can output the teeter angle from ElastoDyn via `TeetDefl`

.)

Yes, see the first post of this topic. The teeter angle varies sinusoidally between -1 and 1 degree. This makes sense as I prescribe 1 degree as initial condition and there is no aerodynamic damping. Thus, the system will just oscillate.

Presumably you’ve disabled the teeter damping and stops not accounted for in Malcolm’s paper?

Correct, I am just looking at the (rigid) body dynamics of the rotor.

Dear @Luc.vanBeek,

Given that all of the rotor mass is distributed along a line (the pitch azis), the inertia about any transverse axis–whether the teeter pin or the low-speed shaft of the drivetrain (`RotIner`

)–will have the same inertia when the teeter angle is zero. Presumably this is what you are calling I_z.

I think we are saying the same thing regarding the moments. `LSSTipMya`

is the moment about the teeter pin, which OpenFAST is calculating as zero as expected given that teeter damping and stops are not enabled. `LSSTipMza`

is the transverse moment about the teeter pin not related to torque.

I’m not sure why the moment is not matching Malcom’s paper, but again, I have not reviewed this paper in many years.

Do you suspect `LSSTipMza`

to not be correct? I’m not aware of any issues in ElastoDyn associated with this output.

Best regards,

Dear @Jason.Jonkman,

Indeed, I am referring to I_z as the inertia about the pitch axis. If all mass is distributed along this axis, then it will be equal to 0.

I think we are saying the same thing regarding the moments. `LSSTipMya`

is the moment about the teeter pin, which OpenFAST is calculating as zero as expected given that teeter damping and stops are not enabled. `LSSTipMza`

is the transverse moment about the teeter pin not related to torque.

Agreed.

Do you suspect `LSSTipMza`

to not be correct? I’m not aware of any issues in ElastoDyn associated with this output.

Indeed, I do suspect this. This can be most easily viewed using Malcolm’s expression; teeter motion and I_z lead to `LSSTipMza`

. I also implemented my own form of Kane’s equations and the results also yield a non-zero `LSSTipMza`

. If useful for the discussion, I can generate some plots.

Let’s use the following thought experiment which I think will make my doubts more clear. Assume that I have a rotor with `d3`

anywhere between 0 and 90 degrees. Thus, when prescribing an initial teeter angle, and operating in vacuum, we now that not only the teeter angle will vary sinusoidal, but also the flap and pitch angles.

Consider the pitch motion specifically. To achieve this motion a moment must be transferred along the blade’s z-axis. The only way that this can be done is through the teeter pin. Of course, this is not necessary when I_z is equal to zero (see Malcolm’s expression). However, there is not a single rotor blade that I know of which possesses this attribute.

So, I am not sure if this is an issue related to the fundamental equations of ElastoDyn, or if it is only a matter of defining I_z somewhere. This is why I asked in the first post of this topic where it is defined as ElastoDyn;'s summary file did not show me a value for I_z nor did I have to define it as an input somewhere. I have not dived into the source code of ElastoDyn yet to see if I_z is declared somewhere internally or externally.

I can also imagine that nobody previously mentioned this issue as teetered rotors are not actively being researched. But that’s just a speculation from my side.

Dear @Luc.vanBeek,

I originally thought that I_z was the inertia about the teeter pin, but I see now that you are saying this is the inertia bout the pitch axis. I agree that this inertia will be zero in ElastoDyn if the undersling and precone are zero.

Best regards,

Deaer @Jason.Jonkman,

Based on your answers I simulated the same initial rotor, but with varying cone angles. I checked the source code of ElastoDyn and `RotIner`

is scaled by `cos(cone_angle)^2`

, making essentially a ‘stick rotor’ as commonly used with helicopters. Thus, I_z is found by scaling the original `Rotiner`

with `sin(cone_angle)^2`

.

In the figure below, I have plotted `LSSTipMza`

for various coning angles. Indeed, no I_z implies no reaction moment. And adding cone increases I_z, which causes a reaction moment on the teeter pin. This is the behavior that I would expect. Moreover, when comparing to my own code the values `LSSTipMza`

are virtually the same for each of the inputs.

That being said, I think that the workaround of defining a cone angle to model I_z that matches with an unconed rotor, and retrieve the loads on the hinge, which also affect loads on the yaw bearing, might breakdown at some point. Namely coning influences aerodynamics as well.

Are there plans for ElastoDyn to manually add I_z, or an inertia matrix for that matter?

Dear @Luc.vanBeek,

I’m glad you isolated the issue to the absence of inertia about the pitch axis. Indeed, we intend to add this inertia when we add the rigid-body blade-pitch degree of freedom to ElastoDyn, which we intend to implement in 2025, as mentioned in the following issue on OpenFAST GitHub: Calculation of blade torsion moment / load torque for the pitch motor of ElastoDyn and BeamDyn · Issue #2330 · OpenFAST/openfast · GitHub.

In the meantime, I suggest posting this issue and workaround as an open issue on GitHub so that other potential users of OpenFAST that model teeter are aware of the problem: Issues · OpenFAST/openfast · GitHub.

Best regards,