Blade Orientation

Hey Eyeryone,

I’m currently using the standalone AeroDyn v3.5.0.
I noticed when I define the BldOrientation parameters, a rotation around z (theta_z) acts as a rotation around x (theta_x).
Has anyone a solution/workaround for this?

Thanks and best regards!

Dear @Fabian.Schumacher,

Can you clarify what issue you are running into? Can you share your AeroDyn driver input file and explain what issue you see with the results?

Best regards,

Dear @Jason.Jonkman,

here are my driver files and pictures of the resulting geometries (blue == theta_z = 0; gray == theta_z = 10). The difference is just the value of theta_z, which leads to a rotation around the x-axis (hub).
The result I want to achieve ist technically at first a 90° rotation around the y-axis (hub) of the blades, then a 10° rotation around the z-axis (base) and then a 120°, respectively, a 240° rotation of blade 2 and 3 around the x-axis (hub).
Could give any advice how I would do that?

----- AeroDyn Driver Input File ---------------------------------------------------------
Three bladed wind turbine, using basic geometry input
----- Input Configuration -------------------------------------------------------
False           Echo         - Echo input parameters to "<rootname>.ech"?
        0       MHK          - MHK turbine type (switch) {0: not an MHK turbine, 1: fixed MHK turbine, 2: floating MHK turbine}
        1       AnalysisType - {1: multiple turbines, one simulation, 2: one turbine, one time-dependent simulation, 3: one turbine, combined-cases}
        11.0    TMax         - Total run time [used only when AnalysisType/=3] (s)
        0.005   DT           - Simulation time step [used only when AnalysisType/=3] (s)
"AD_input.dat"        AeroFile     - Name of the primary AeroDyn input file
----- Environmental Conditions ----------------------------------------------------------
        1.225   FldDens      - Density of working fluid (kg/m^3)
     1.46E-05   KinVisc      - Kinematic viscosity of working fluid (m^2/s)
     3.35E+02   SpdSound     - Speed of sound in working fluid (m/s)
    1.035E+05   Patm         - Atmospheric pressure (Pa) [used only for an MHK turbine cavitation check]
      1.7E+03   Pvap         - Vapour pressure of working fluid (Pa) [used only for an MHK turbine cavitation check]
            0   WtrDpth      - Water depth (m)
----- Inflow Data ---------------------------------------------------------------
          0   CompInflow  - Compute inflow wind velocities (switch) {0=Steady Wind; 1=InflowWind}
"IFW.dat"     InflowFile  - Name of the InflowWind input file [used only when CompInflow=1]
        8.0   HWindSpeed  - Horizontal wind speed   [used only when CompInflow=0 and AnalysisType=1] (m/s)
         15   RefHt       - Reference height for horizontal wind speed [used only when CompInflow=0]  (m)
       0.00   PLExp       - Power law exponent   [used only when CompInflow=0 and AnalysisType=1]                       (-)
----- Turbine Data --------------------------------------------------------------
1   NumTurbines  - Number of turbines (should be 1 for AnalysisType=2 or AnalysisType=3)
----- Turbine(1) Geometry -------------------------------------------------------
       False    BasicHAWTFormat(1) - Flag to switch between basic or generic input format {True: next 7 lines are basic inputs, False: Base/Twr/Nac/Hub/Bld geometry and motion must follow}
0,0,0           BaseOriginInit(1)      - x,y,z coordinates of base origin (m)
0,0,0           BaseOrientationInit(1) - successive rotations (theta_x, theta_y, theta_z) defining initial orientation of the base frame from the global frame (e.g. roll, tilt, yaw) (deg)
False           HasTower(1)            - True if turbine has a tower (flag)
True            HAWTprojection(1)      - True if turbine is a horizontal axis turbine (for AeroDyn projections) (flag)
0,0,0           TwrOrigin_t(1)         - Coordinate of tower base in base coordinates [used only when HasTower is True] (m)
0,0,20          NacOrigin_t(1)         - x,y,z coordinates of nacelle origin (and tower top) from base, in base coordinates (m)
-1,0,2.5        HubOrigin_n(1)         - x,y,z coordinates of hub origin from nacelle origin, in nacelle coordinates (m)
0,0,0           HubOrientation_n(1)    - successive rotations (theta_x, theta_y, theta_z) defining initial orientation of the hub frame from the nacelle frame (e.g. roll, tilt, yaw). The x axis needs to be aligned with the rotational speed. (deg)
----- Turbine(1) Blades -----------------------------------------------------------------
3               NumBlades(1)          - Number of blades for current rotor (-)
0,0,0           BldOrigin_h(1_1)      - Origin of blade 1 wrt. hub origin in hub coordinates (m)
0,0,0           BldOrigin_h(1_2)      - Origin of blade 2 wrt. hub origin in hub coordinates (m)
0,0,0           BldOrigin_h(1_3)      - Origin of blade 3 wrt. hub origin in hub coordinates (m)
0,90,0          BldOrientation_h(1_1) - successive rotations (theta_x, theta_y, theta_z) defining initial orientation of the blade frame from the hub frame such that the "z" is along span, "y" along trailing edge without pitch (azimuth, precone, pitch) (deg)
120,90,0        BldOrientation_h(1_2) - successive rotations (theta_x, theta_y, theta_z) defining initial orientation of the blade frame from the hub frame such that the "z" is along span, "y" along trailing edge without pitch (azimuth, precone, pitch) (deg)
240,90,0        BldOrientation_h(1_3) - successive rotations (theta_x, theta_y, theta_z) defining initial orientation of the blade frame from the hub frame such that the "z" is along span, "y" along trailing edge without pitch (azimuth, precone, pitch) (deg)
0               BldHubRad_bl(1_1)     - z-offset in blade coordinates of blade 1 where radial input data start (m)
0               BldHubRad_bl(1_2)     - z-offset in blade coordinates of blade 2 where radial input data start (m)
0               BldHubRad_bl(1_3)     - z-offset in blade coordinates of blade 3 where radial input data start (m)
----- Turbine(1) Motion [used only when AnalysisType=1] --------------------------
0               BaseMotionType(1)      - Type of motion prescribed for this base {0: fixed, 1: Sinusoidal motion, 2: arbitrary motion} (flag)
0               DegreeOfFreedom(1)     - {1:xt, 2:yt, 3:zt, 4:theta_xt, 5:theta_yt, 6:theta_zt} [used only when BaseMotionType=1] (flag)
0               Amplitude(1)           - Amplitude of sinusoidal motion   [used only when BaseMotionType=1] (m or rad)
0               Frequency(1)           - Frequency of sinusoidal motion   [used only when BaseMotionType=1] (Hz)
"unused"        BaseMotionFileName(1)  - Filename containing arbitrary base motion (19 columns: Time, x, y, z, theta_x, ..., alpha_z) [used only when BaseMotionType=2]
0               NacMotionType(1)        - Type of motion prescribed for the nacelle {0: fixed yaw, 1: time varying yaw angle} (flag)
0               NacYaw(1)               - Yaw angle (about z_t) of the nacelle [user only when NacMotionType=0] (deg)
"unused"        NacMotionFileName(1)    - Filename containing yaw motion [used only when NacMotionType=1]
0               RotMotionType(1)        - Type of motion prescribed for this rotor {0: constant rotation, 1: time varying rotation} (flag)
150.0           RotSpeed(1)             - Rotational speed of rotor in rotor coordinates [used only when RotorMotionType=0] (rpm)
"RotMotion.dat" RotMotionFileName(1)    - Filename containing rotor motion [used only when RotorMotionType=1]
0               BldMotionType(1)        - Type of pitch motion prescribed for the blades {0: fixed, 1: time varying pitch} (flag)
0               BldPitch(1_1)           - Blade 1 pitch [used only when BldMotiontype=0] (deg)
0               BldPitch(1_2)           - Blade 1 pitch [used only when BldMotiontype=0] (deg)
0               BldPitch(1_3)           - Blade 1 pitch [used only when BldMotiontype=0] (deg)
"unused"        BldMotionFileName(1_1)  - Filename containing blade pitch motion [used only when BldMotionType=1]
"unused"        BldMotionFileName(1_2)  - Filename containing blade pitch motion [used only when BldMotionType=1]
"unused"        BldMotionFileName(1_3)  - Filename containing blade pitch motion [used only when BldMotionType=1]
----- Time-dependent Analysis [used only when AnalysisType=2, numTurbines=1] ------------
"unused"        TimeAnalysisFileName - Filename containing time series (6 column: Time, HWndSpeed, PLExp, RotSpd, Pitch, Yaw).
-----  Combined-Case Analysis [used only when AnalysisType=3, numTurbines=1] -------------
        1                 NumCases     - Number of cases to run
HWndSpeed  PLExp  RotSpd  Pitch   Yaw   dT    Tmax  DOF  Amplitude Frequency
(m/s)      (-)    (rpm)   (deg)  (deg)  (s)   (s)   (-)   (-)       (Hz)
----- Output Settings -------------------------------------------------------------------
"ES15.3E2"                 OutFmt      - Format used for text tabular output, excluding the time channel.  Resulting field should be 10 characters. (quoted string)
1                          OutFileFmt  - Format for tabular (time-marching) output file (switch) {1: text file [<RootName>.out], 2: binary file [<RootName>.outb], 3: both}
1                          WrVTK       - VTK visualization data output: (switch) {0=none; 1=init; 2=animation}
1                          WrVTK_Type
0.25                       VTKHubRad   - HubRadius for VTK visualization (m)
0,0,0,0,0,0                VTKNacDim   - Nacelle Dimension for VTK visualization x0,y0,z0,Lx,Ly,Lz (m)

and here is the same code but with a different BldOrientation

----- AeroDyn Driver Input File ---------------------------------------------------------
Three bladed wind turbine, using basic geometry input
----- Input Configuration -------------------------------------------------------
False           Echo         - Echo input parameters to "<rootname>.ech"?
        0       MHK          - MHK turbine type (switch) {0: not an MHK turbine, 1: fixed MHK turbine, 2: floating MHK turbine}
        1       AnalysisType - {1: multiple turbines, one simulation, 2: one turbine, one time-dependent simulation, 3: one turbine, combined-cases}
        11.0    TMax         - Total run time [used only when AnalysisType/=3] (s)
        0.005   DT           - Simulation time step [used only when AnalysisType/=3] (s)
"AD_input.dat"        AeroFile     - Name of the primary AeroDyn input file
----- Environmental Conditions ----------------------------------------------------------
        1.225   FldDens      - Density of working fluid (kg/m^3)
     1.46E-05   KinVisc      - Kinematic viscosity of working fluid (m^2/s)
     3.35E+02   SpdSound     - Speed of sound in working fluid (m/s)
    1.035E+05   Patm         - Atmospheric pressure (Pa) [used only for an MHK turbine cavitation check]
      1.7E+03   Pvap         - Vapour pressure of working fluid (Pa) [used only for an MHK turbine cavitation check]
            0   WtrDpth      - Water depth (m)
----- Inflow Data ---------------------------------------------------------------
          0   CompInflow  - Compute inflow wind velocities (switch) {0=Steady Wind; 1=InflowWind}
"IFW.dat"     InflowFile  - Name of the InflowWind input file [used only when CompInflow=1]
        8.0   HWindSpeed  - Horizontal wind speed   [used only when CompInflow=0 and AnalysisType=1] (m/s)
         15   RefHt       - Reference height for horizontal wind speed [used only when CompInflow=0]  (m)
       0.00   PLExp       - Power law exponent   [used only when CompInflow=0 and AnalysisType=1]                       (-)
----- Turbine Data --------------------------------------------------------------
1   NumTurbines  - Number of turbines (should be 1 for AnalysisType=2 or AnalysisType=3)
----- Turbine(1) Geometry -------------------------------------------------------
       False    BasicHAWTFormat(1) - Flag to switch between basic or generic input format {True: next 7 lines are basic inputs, False: Base/Twr/Nac/Hub/Bld geometry and motion must follow}
0,0,0           BaseOriginInit(1)      - x,y,z coordinates of base origin (m)
0,0,0           BaseOrientationInit(1) - successive rotations (theta_x, theta_y, theta_z) defining initial orientation of the base frame from the global frame (e.g. roll, tilt, yaw) (deg)
False           HasTower(1)            - True if turbine has a tower (flag)
True            HAWTprojection(1)      - True if turbine is a horizontal axis turbine (for AeroDyn projections) (flag)
0,0,0           TwrOrigin_t(1)         - Coordinate of tower base in base coordinates [used only when HasTower is True] (m)
0,0,20          NacOrigin_t(1)         - x,y,z coordinates of nacelle origin (and tower top) from base, in base coordinates (m)
-1,0,2.5        HubOrigin_n(1)         - x,y,z coordinates of hub origin from nacelle origin, in nacelle coordinates (m)
0,0,0           HubOrientation_n(1)    - successive rotations (theta_x, theta_y, theta_z) defining initial orientation of the hub frame from the nacelle frame (e.g. roll, tilt, yaw). The x axis needs to be aligned with the rotational speed. (deg)
----- Turbine(1) Blades -----------------------------------------------------------------
3               NumBlades(1)          - Number of blades for current rotor (-)
0,0,0           BldOrigin_h(1_1)      - Origin of blade 1 wrt. hub origin in hub coordinates (m)
0,0,0           BldOrigin_h(1_2)      - Origin of blade 2 wrt. hub origin in hub coordinates (m)
0,0,0           BldOrigin_h(1_3)      - Origin of blade 3 wrt. hub origin in hub coordinates (m)
0,90,10          BldOrientation_h(1_1) - successive rotations (theta_x, theta_y, theta_z) defining initial orientation of the blade frame from the hub frame such that the "z" is along span, "y" along trailing edge without pitch (azimuth, precone, pitch) (deg)
120,90,10        BldOrientation_h(1_2) - successive rotations (theta_x, theta_y, theta_z) defining initial orientation of the blade frame from the hub frame such that the "z" is along span, "y" along trailing edge without pitch (azimuth, precone, pitch) (deg)
240,90,10        BldOrientation_h(1_3) - successive rotations (theta_x, theta_y, theta_z) defining initial orientation of the blade frame from the hub frame such that the "z" is along span, "y" along trailing edge without pitch (azimuth, precone, pitch) (deg)
0               BldHubRad_bl(1_1)     - z-offset in blade coordinates of blade 1 where radial input data start (m)
0               BldHubRad_bl(1_2)     - z-offset in blade coordinates of blade 2 where radial input data start (m)
0               BldHubRad_bl(1_3)     - z-offset in blade coordinates of blade 3 where radial input data start (m)
----- Turbine(1) Motion [used only when AnalysisType=1] --------------------------
0               BaseMotionType(1)      - Type of motion prescribed for this base {0: fixed, 1: Sinusoidal motion, 2: arbitrary motion} (flag)
0               DegreeOfFreedom(1)     - {1:xt, 2:yt, 3:zt, 4:theta_xt, 5:theta_yt, 6:theta_zt} [used only when BaseMotionType=1] (flag)
0               Amplitude(1)           - Amplitude of sinusoidal motion   [used only when BaseMotionType=1] (m or rad)
0               Frequency(1)           - Frequency of sinusoidal motion   [used only when BaseMotionType=1] (Hz)
"unused"        BaseMotionFileName(1)  - Filename containing arbitrary base motion (19 columns: Time, x, y, z, theta_x, ..., alpha_z) [used only when BaseMotionType=2]
0               NacMotionType(1)        - Type of motion prescribed for the nacelle {0: fixed yaw, 1: time varying yaw angle} (flag)
0               NacYaw(1)               - Yaw angle (about z_t) of the nacelle [user only when NacMotionType=0] (deg)
"unused"        NacMotionFileName(1)    - Filename containing yaw motion [used only when NacMotionType=1]
0               RotMotionType(1)        - Type of motion prescribed for this rotor {0: constant rotation, 1: time varying rotation} (flag)
150.0           RotSpeed(1)             - Rotational speed of rotor in rotor coordinates [used only when RotorMotionType=0] (rpm)
"RotMotion.dat" RotMotionFileName(1)    - Filename containing rotor motion [used only when RotorMotionType=1]
0               BldMotionType(1)        - Type of pitch motion prescribed for the blades {0: fixed, 1: time varying pitch} (flag)
0               BldPitch(1_1)           - Blade 1 pitch [used only when BldMotiontype=0] (deg)
0               BldPitch(1_2)           - Blade 1 pitch [used only when BldMotiontype=0] (deg)
0               BldPitch(1_3)           - Blade 1 pitch [used only when BldMotiontype=0] (deg)
"unused"        BldMotionFileName(1_1)  - Filename containing blade pitch motion [used only when BldMotionType=1]
"unused"        BldMotionFileName(1_2)  - Filename containing blade pitch motion [used only when BldMotionType=1]
"unused"        BldMotionFileName(1_3)  - Filename containing blade pitch motion [used only when BldMotionType=1]
----- Time-dependent Analysis [used only when AnalysisType=2, numTurbines=1] ------------
"unused"        TimeAnalysisFileName - Filename containing time series (6 column: Time, HWndSpeed, PLExp, RotSpd, Pitch, Yaw).
-----  Combined-Case Analysis [used only when AnalysisType=3, numTurbines=1] -------------
        1                 NumCases     - Number of cases to run
HWndSpeed  PLExp  RotSpd  Pitch   Yaw   dT    Tmax  DOF  Amplitude Frequency
(m/s)      (-)    (rpm)   (deg)  (deg)  (s)   (s)   (-)   (-)       (Hz)
----- Output Settings -------------------------------------------------------------------
"ES15.3E2"                 OutFmt      - Format used for text tabular output, excluding the time channel.  Resulting field should be 10 characters. (quoted string)
1                          OutFileFmt  - Format for tabular (time-marching) output file (switch) {1: text file [<RootName>.out], 2: binary file [<RootName>.outb], 3: both}
1                          WrVTK       - VTK visualization data output: (switch) {0=none; 1=init; 2=animation}
1                          WrVTK_Type
0.25                       VTKHubRad   - HubRadius for VTK visualization (m)
0,0,0,0,0,0                VTKNacDim   - Nacelle Dimension for VTK visualization x0,y0,z0,Lx,Ly,Lz (m)

Thanks for any help!


Hi Fabian,

I didn’t dive into your geometry, but from what you say, you want to perform different kind of rotations based on the hub axes and base axes. The BldOrientation input only gives you the option to provide three angles, for three successive rotations x->y->z starting from the hub coordinate system.

In general, you can achieve any rotation you want for the blade coordinate system, but you’ll need to find the three parameters that does that. For each blade, you can try compute the transformation matrix (3x3) from Hub to Blade that you want to obtain. Then you can find the three parameters theta_x, theta_y, theta_z that will produce the same transformaiton matrix.

You’ll find python functions to compute the XYZ rotation in this python script:
welib/welib/yams/rotations.py at dev · ebranlard/welib · GitHub

In particular the function BodyXYZ_fromDCM to extract the three rotation parameters once you have the transformation matrix M:

And you can verify that you indeed get the transformation matrix you want using BodyXYZ_DCM:

I hope that helps,

Emmanuel

1 Like

Dear @Emmanuel.Branlard ,

thanks, that helped alot and solved my problem!

Best regards,