ElastoDyn local spanwise blade deflection transformation

Dear Jason,

With reference to a previous forum post [url]Deflection of ElastoDyn], I’d like to understand how to transform spanwise deflections (for blade #i, strain gauge #j: SpnjTDxbi, SpnjTDybi, SpnjTDzbi, SpnjRDxbi, SpnjRDybi, SpnjRDzbi) from the blade local coordinate system (CS) to the blade root CS.

According to the old FAST user manual: “for BldGagNd array, a local CS is similar to the standard blade CS, but the x-axis and y-axis are aligned with the local principal axes and the local CS orient themselves with the deflected blade.” So my understanding is that they differ by structural pretwist (StrctTwst in ElastoDyn) and prebend (BlCrvAng), as well as the local rotations.

Given the transformation formulation which was referenced in the previous post:

Is my understanding correct that, for blade #i, strain gauge #j:
{x, y, z} = {SpnjTDxbi, SpnjTDybi, SpnjTDzbi}

The following is to be plugged into the transformation matrix:
theta1 = SpnjRDxbi (in radians)
theta2 = BlCrvAng + SpnjRDybi (in radians)
theta3 = StrctTwst + SpnjRDzbi (in radians) (the second term is always 0 for ElastoDyn)

Then, to convert the local deflections to the blade root CS:
{X, Y, Z} = inverse(Transformation_Matrix) * {x, y, z}

Thank you in advance,

Dear Jing,

No, that is not correct. Just a few comments:

  • The local structural deflections (Spn#TDxbi) are not expressed in a local blade coordinate system that follows the structural pretwist and local deflections; instead, the local structural deflections are already expressed in the blade-root coordinate system (xbi/ybi/zbi for blade i), which pitches with blade.
  • ElastoDyn does use the transformation equation that you referrenced, but this only applies to small angles (theta), and the structural pretwist (StrctTwst) need not be small.
  • The blade curvature angle (BlCrvAng) is a parameter of AeroDyn, which is not used by ElastoDyn.

I hope that helps.

Best regards,

Dear Jason,

Thank you for your response!

For information on ElastoDyn, I’m using this FAST User’s Guide (https://www.nrel.gov/docs/fy06osti/38230.pdf) which is quite old but I’m not aware of a newer ElastoDyn documentation. On page 10, it was said that “When you request output of motions or loads for various span locations along the blade with the BldGagNd array, a local coordinate system similar to the standard blade system, but the x-axis and y-axis are aligned with the local principal axes and the local coordinate systems orient themselves with the deflected blade.” That led me to think that a coordinate transformation is needed.

Could you confirm that the above is outdated, and that in OpenFAST v2.3.0 the local translational deflections are also expressed in the blade root coordinate system?

I checked OutListParameters.xlsx (the latest I could find is from this link https://github.com/OpenFAST/openfast/issues/466) and it seems to be consistent with your answer. The Spn#TD translational deflections are described to be “directed along xb, yb, zb axis” while the Spn#RD rotational deflections are described to be “about the local xb, yb, zb axis”.

A follow-up question on the local loads: In OutListParameters.xlsx, the local loads Spn#ML and Spn#FL are still defined with respect to the local xb, yb, zb axis i.e. the principal axes. Is that right?

Thank you and best regards,

Dear Jing,

The statement you quoted was correct at the time of its publication, when the “motions and loads at various span locations along the blade” applied only to the local acceleration and load outputs. Since that document was published, the local deflections were also added as output, but these are relative to the blade-root (pitched) coordinate system. The rotational deflections are relative to the undeflected position, but the term “blade-root coordinate system” is a bit misleading because the rotations that are output do not include the structural pretwist, so, the term “local” was added to mean the coordinate system local to each undeflected cross section, but aligned with the local structural twist. That is, even with nonzero structural pretwist, the rotational displacements are zero when the blade is undeflected.

Correct, the loads are still output with respect to the local blade coordinate that includes the structural pretwist and orients with the deflected blade.

Best regards,

Dear Jason,

I’ve done some work since your last reply, but find myself still struggling to interpret the blade deflection profiles.

I’m predicting the steady-state performance of a turbine model in OpenFAST. It is built based on an existing model in Bladed. I’m looking at one particular operating point above rated with steady uniform inflow. The rotor speed and pitch angle are specified and fixed (GenDOF=Off, ServoDyn module unused) based on values from a steady-state Bladed analysis. The Bladed model has been simplified somewhat to ensure a closer match with ElastoDyn, including removal of axial and torsional DOFs, as well as removal of eccentricities among neutral axis, shear center and mass center. I have also made the support structure entirely rigid in both models to focus entirely on the aeroelastic modeling of blade.

The following figure shows a comparison of the predicted blade deflection profiles between the two codes. The x-axis is normalized by the blade length. The y-axis is normalized by the ElastoDyn-predicted tip deflection value (blue triangles) except for the last subplot. The red lines are Bladed result in the blade root axes. The black lines are ElastoDyn outputs from 9 gauges; the last gauge is placed at the tip. The blue triangles are ElastoDyn blade tip deflections. The variable names are in the legends.

Based on your earlier inputs in this post, my understanding is that the local deflection (vector in red) is expressed in the local blade coordinate system x-y-z_b,local (in green). I come to believe that the Bladed deflections are expressed in the same way.

As you can see the results differ quite a lot. Although code-to-code difference may explain some of it, it can’t explain the following:

  1. The Bladed deflection profile appears to have a slope of 0 at root which is to be expected of a cantilevered blade, whereas the ElastoDyn result doesn’t. What could be the reason? I have ensured the 3 blade mode shapes provided to ElastoDyn are cantilevered at the root.
  2. I expect the deflections measured at the last gauge to match with the tip deflections, but they are not exactly the same. What could be the reason?

I’m especially scratching my head on question #1 and wonder whether it’s due to some modeling error I made or whether I’m still plotting deflections in inconsistent coordinate frames. I would appreciate any comment that you may have.

Thank you in advance,

Dear Jing,

The ElastoDyn results for the local span translations and rotations do not give the expected result at the root and tip because it is not possible to place the gages directly at the root and tip. The structural nodes in ElastoDyn are located at the centers of blade elements. So, the first gage if placed at node 1 is located half an element length outboard from the root. And the last gage if placed at node = BldNodes is located half an element length inboard from the tip.

Moreover, my previous post was worded a bit odd and misleading. The rotational deflections (Spn#RDxb1, etc.) are expressed in the blade coordinate system, which does not include the structural twist. The term “local” is not really correct in the description of the coordinate system convention.

Best regards,