Aerodynamic center offset effects on blade torsion

Dear Jason,

I am trying to understand the aerodynamic center (AC) offset effects on aerodynamic moments as well as blade torsional deformations. I have read some topics on this forum, but some details still confused me a lot.

Firstly, according to my previous knowledges on airfoil aerodynamics, the AC was usually assumed at 0.25c of the chord line in wind tunnel experiments, but I find the AC positions vary from 0.25c to 0.125c from blade root to tip for the NREL 5MW wind turbine blade in the report [1] as follow:

Secondly, I find the AC offset can have a significant effect on the blade torsional deformations in BeamDyn as shown below where the BeamDyn (No AC offset) results are obtained by setting the “BlSwpAC” column in 5MW-AeroDyn_blade into zeros.

My understanding on the large differences is that the sectional normal force Fn and AC offset can introduce an additional nose-up aerodynamic moment, thus the aerodynamic moment on AC and 0.25c are different as:

Based on the previous facts, I have three major questions:

(1) Since the AC positions are not default at 0.25c in the original definition, can I understand that all simulations in terms of the NREL 5MW wind turbine, either using BEM method or actuator line method, must consider the AC offset effects for blade torsion predictions? Otherwise, the “wrong” wind turbine is simulated.

(2) Is my understanding on AC offset effects on aerodynamic moment generally reasonable?

(3) If (1) and (2) are yes, then I have the last major confusion that how the Cm-alpha curves in the provided airfoil tables are obtained? Specifically, which positions are the Cm values in airfoil tables are relative to? the AC positions defined in report [1]? or the traditional 0.25c? If they are relative to the defined AC positoins (like 0.125c) , then the Eq.(2) should be used to calculate aero-moments. However, if they are relative to the 0.25c, the direct usage of Eq.(1) seems enough? I really cannot figure out these confusions.

Please help me,

Best regards,
Lin Yang.

[1] J. Jonkman, S. Butterfield, W. Musial, G. Scott, Definition of a 5-MW Reference Wind Turbine for Offshore System Development, National Renewable Energy Laboratory, 2009.

Dear @Lin.Yang,

The old AeroCent variable in now obsolete versions of FAST caused much confusion. The following forum topic clarifies it best: NREL 5MW Rotor Geometry.

Here are my answers to your questions:

  1. To get the correct pitching moment and twist, it is important to set both the aerodynamic center relative to the pitch axis and the pitching moment about the aerodynamic center. I say “relative to the pitch” axis rather than some fraction of chord because lifting line models (like used in AeroDyn) don’t really care where the leading or trailing edge are; what is most important is where the aerodynamic loads are applied relative to the pitch axis, which is what AeroDyn blade inputs BlCrvAC and BlSwpAC refer to.
  2. Yes, the pitching moment about the pitch axis comes both from the aerodynamic force crossed with the moment arm (which is offset between the pitch axis and the aerodynamic center) as well as the pitching moment (Cm) term.
  3. The aerodynamic center in AeroDyn is defined as the reference point for the aerodynamic force coefficients and is where the aerodynamic loads are applied, so, the pitching moment should be defined relative to the aerodynamic center, even if that is not 25% chord.

Best regards,

1 Like

Dear Jason,
Thanks for your very immediate reply.

It is much clear to me now, but I still have several issues unclear.

(1) I find the source code in AeroDyn.f90 only considers the Cm term to calculate the aerodynamic moments as following, so could you give me some suggestions on where I can find the source code dealing with the AC offset effects on aero-moments in AeroDyn or possiblely in BeamDyn?

(2) Since most NREL 5MW blade airfoil tables defined an aeroCenter of 0.125c, does it mean the reference point for sectional aerodynamics are also set to 0.125c in wind tunnel experiments to obtain these airfoil tables. Or the airfoil tables provided with openFAST have already been carefully tunned to make sure the Cm values are respective to the defined AC positions (0.125c) , regardless of the experimental set-ups?

Best regards,
Lin Yang.

Dear @Lin.Yang,

Regarding (1), the extra moment caused by the aerodynamic force cross with the offset is accounted for within the internal spatial mesh-to-mesh mapping algorithm used by OpenFAST: 4. User Documentation — OpenFAST v3.4.1 documentation. When loads are transferred from AeroDyn to a structural module (BeamDyn or ElastoDyn), any offsets between the aerodynamic mesh and the structural mesh will result in moments caused by forces.

Regarding (2), the aerodynamic center specified in the AeroDyn blade input file for the NREL 5-MW baseline blade is set to ensure that the offset between the aerodynamic center and the blade-pitch axis is correct.

Best regards,

1 Like

Dear Jason,
Thanks for your reply and suggestions. After a one-day long digging in the FAST source code, I finally figured out the general procedure on how FAST considers the AC offset effects on blade torsional deformations using BeamDyn.

Here, I summarize my understanding on the AC offset issue in terms of source code.

(1) FAST initialize the aero-center node positions in AeroDyn.f90subroutine Init_u(**) with the following key lines:

         positionL(1) = InputFileData%BladeProps(k)%BlCrvAC(j)
         positionL(2) = InputFileData%BladeProps(k)%BlSwpAC(j)
         positionL(3) = InputFileData%BladeProps(k)%BlSpn(  j)

where BlCrvAC and BlSwpAC specify the AC offsets in local sectional coordinate system in the units of meters [m] not in the units of local chord(like 0.125c).

(2) FAST calculate the Cm term of aerodynamic moments in AeroDyn.f90subroutine SetOutputsFromBEMT (**) with the following code

         moment(1)=  m%BEMT_y%Cmx(j,k) * q * p%BEMT%chord(j,k)**2 
         moment(2)=  m%BEMT_y%Cmy(j,k) * q * p%BEMT%chord(j,k)**2  
         moment(3)=  m%BEMT_y%Cmz(j,k) * q * p%BEMT%chord(j,k)**2 

(3) FAST initialize the BeamDyn node positions in BeamDyn_IO.f90–subroutine BD_ReadPrimaryFile(**) with the following code

 CALL ReadCom(UnIn,InputFile,'key point x,y,z locations and initial twist angles',ErrStat2,ErrMsg2,UnEc)
   DO i=1,InputFileData%kp_total
       InputFileData%kp_coordinate(i,1) =  TmpReAry(1) ! kp_xr
       InputFileData%kp_coordinate(i,2) =  TmpReAry(2) ! kp_yr
       InputFileData%kp_coordinate(i,3) =  TmpReAry(3) ! kp_zr <==> span
       InputFileData%kp_coordinate(i,4) = -TmpReAry(4) ! initial twist

where kp_xr and kp_yr define the sectional offset of beamDyn nodes which are zeroes for NREL 5MW turbine.

(4) In simulations, the aerodynamic loads (forces and moments) are mapped from the AeroDyn nodes to BeamDyn nodes in BeamDyn.f90-- subroutine Calc_WriteOutput(-) with the following code

     ! transfer the input loads to the output nodes for writing output
     CALL Transfer_Line2_to_Line2( m%u2%DistrLoad, m%u_DistrLoad_at_y, 
          m%Map_u_DistrLoad_to_y, ErrStat2, ErrMsg2, m%y_BldMotion_at_u, y%BldMotion)

where m%u2%DistrLoad is the distributed aero-loads at AeroDyn nodes, and m%u_DistrLoad_at_y is the mapped aero-loads at beamDyn nodes.

(5) The subroutine Transfer_Line2_to_Line2 (-) is defined in NWTC_Library–ModMesh_Mapping.f90, which transfers data from a line2 mesh to another line2 mesh using three sub-sub routines, as

   ! take the source fields and transfer them to fields on the augmented source mesh:
   CALL Transfer_Src_To_Augmented_Ln2_Src( Src, MeshMap,... ) 

   !  lump the loads from the augmented source mesh:
   CALL Lump_Line2_to_Point( MeshMap%Augmented_Ln2_Src,  MeshMap%Lumped_Points_Src,  ... ) 

   CALL Transfer_Loads_Point_to_Line2( MeshMap%Lumped_Points_Src, Dest, MeshMap, ... )

(6) In the third subroutine Transfer_Loads_Point_to_Line2(-) , the source code is:

DO j = 1,2 ! number of nodes on dest 

   jNode = Dest%ElemTable(ELEMENT_LINE2)%Elements(jElem)%ElemNodes(j)   
   DisplacedPosition =   Src%Position(:,i)     +  SrcDisp%TranslationDisp(:,i)     &
                      - Dest%Position(:,jNode) - DestDisp%TranslationDisp(:,jNode)  
   torque = Src%Force(:,i)
   torque = CROSS_PRODUCT( DisplacedPosition, torque )       
   Dest%Moment(:,jNode) = Dest%Moment(:,jNode) + torque*MeshMap%MapLoads(i)%shape_fn(j)


Obviously, it is the function CROSS_PRODUCT( DisplacedPosition, torque ) <==>(dr×force) explicitly considers the AC offset induced aero-moment on BeamDyn nodes and thus blade torsional deformations.

It would be very helpful if you can briefly comment on my understandings.

Best regards,
Lin Yang.

Dear @Lin.Yang,

Yes, your understanding is correct. Great sleuthing!

Best regards,

1 Like

Dear Jason,

Thanks for your immediate confirmation!
Now, I have a much clearer and deeper understanding on the aero-elastic modeling in FAST. And I hope these discussions can be beneficial to those are interested in the aerodynamic center offset and blade prebend issues when simulating the NREL-5MW or other larger wind turbines using FAST.

Best regards,
Lin Yang.

1 Like