BeamDyn: Convert Wiener-Milenkovic to rotation matrix

I am using FAST_v8.15.00a-bjj with Test26 from the CertTest directory as my baseline setup. My goal is to extract translation and rotation parameters of the blade at different radial positions in order to animate and render my wind turbine in 3ds max. Therefore, I need to convert the rotation parameters from BeamDyn in Wiener-Milenkovic form to rotation matrices or rotation angles about each axis.

Right now I am using equation 5.17 from section 5.4 of the BeamDyn manual to convert to rotation matrices. However, my results do not appear plausible. The resulting matrices apply scaling and their determinant is not 1. The BeamDyn manual mentions something about a rescaling operation in order to remove singularities. Can this be the root of my problem?

Can anyone help me convert from Wiener-Milenkovic rotations parameters (for example outputs N1RDxr, N1RDyr and N1RDzr from FAST/BeamDyn) to rotation matrices or rotation angles about each of the axis?

Thank you for your help

Hi Jan,

I am doing the similar task right now. So, I am studying about the Wiener-Milenkovic parameters…

Just wondering have you solve your problem yet?


We’re aware of this problem at NREL, as we’ve seen similar problems ourselves. We suspect that there is a bug in BeamDyn in the section of code that converts the rotations from the internal coordinate system to the coordinate system used for output. Even though Qi Wang–the lead developer of BeamDyn–has departed NREL, he is still looking into it and we hope to release a correction soon.

Best regards,

Hi Jason,

Just want to follow up on this topic.

Since there are errors in converting rotational/angular deflections in BeamDyn, does it mean that the angle of attack (AoA) from AeroDyn has errors as well?

BeamDyn and AeroDyn are coupled via FAST, so if the angular deformations from BeamDyn are wrong, AeroDyn may computes wrong AoAs based on the wrong info. from BeamDyn.

Are these errors only limited to computing angular deformations for BeamDyn outputs? May I assume that AoAs from AeroDyn are correct with these BeamDyn errors?

Thank you.

Dear Daniel,

The rotations sent from BeamDyn to AeroDyn, and the associated angle of attack, are correct. The rotations computed within the BeamDyn equations of motion are also correct. The error is in the section of code related to how the internal rotations are converted before being written to the output file.

Best regards,

Hi everyone,

We are currently trying to use BeamDyn, and we do not well understand the relation between the rotation tensor expressed in terms of Wiener-Milenkovic parameters, and the Direction Cosine Matrix (DCM) written in the BeamDyn manual (5.18) at the page 23.

Indeed, in the manual, the DCM is equal to the transpose rotation tensor.
If we are looking to the book Flexible Multibody Dynamics, SOLID MECHANICS AND ITS APPLICATIONS Volume 176 by O.A.Bauchau, we can observe at page 114 that the DCM is just equal to the rotation tensor (eq 4.18).

With simple modifications to the code, we have been able to get and analyse the orientation of the beam. This orientation was coherent with the output DCM of BeamDyn.

Thus, can someone explain where this difference comes from between these two sources and why a transpose is needed ?
Because if the Wiener-Milenkovic parameters output from BeamDyn define the actual orientation of each cross section relative to the undeflected orientation (as it is stated in the topic “Extract blade tip torsional deformation from the Wiener-Milenković parameters in BeamDyn”), we do not understand why a transpose is required.

Thanks for your help.

Best regards,


Dear Alban,

I don’t have Bauchau’s book at home with me to double check (I’m currently working at home due to the pandemic), but my understanding is that the rotation matrix (R) stated in the BeamDyn documentation is defined is such that premultiplication of a vector in local coordinates (v) by R gives the vector in global coordinates (V). And the the Direction Cosine Matrix (DCM) used in the FAST / OpenFAST modularization framework is the opposite–premultiplication of V by DCM gives v:

V = R*v v = DCM*V
Thus, because the inverse of a rotation matrix or DCM is its transpose, then

R = DCM^-1 = DCM^T

Best regards,

Dear Jason,

Thank a lot for your answer.

However, we are still a bit confused with all the sources relative to rotation matrix, DCM and Wiener-Milenkovic parameters.

We have made test imposing forces and moment at the tip of the beam (the other tip being fixed), and by printing the DCM resulting of the computation, we have concluded that DCM transforms the undeformed vector of the beam (U) to the deformed one (d), all expressed in the reference blade coordinate system : d = DCM. U .

In your answer, you state the rotation matrix (R) in the BeamDyn documentation is defined is such that premultiplication of a vector in local coordinates (v) by R gives the vector in global coordinates (V) : V= R*v
If Global frame = frame fixed to the bottom of the tower (or frame related to the undeformed beam is no rigid motion), and Local frame = frame fixed to the deformed beam, then the transposition between R and DCM looks meaningful.

But, you also state that “The Wiener-Milenkovic parameters output from BeamDyn define the actual orientation of each cross section relative to the undeflected orientation.” in the post 4828. This is also stated in the BeamDyn documentation “Sectional angular/rotational deflection Wiener-Milenković
parameter (relative to the undeflected orientation) at Nβ expressed in r” page 56.
But since the relation (5.17) between the Wiener-Milenkovic and the rotation matrix expressed in section 5.4. page 23 of the BeamDyn documentation is similar to the one given in Wang et al “Geometric Nonlinear Analysis of Composite Beams using Wiener-Milenković Parameters” with C^T=R, we think all the elements are not consistent. May be there is something wrong in the paper of Wang ?

Thanks for your help,
Best regards,

Alban Leroyer