ImperialCollegeLondon / sharpy

Simulation of High Aspect Ratio aeroplanes and wind turbines in Python: a nonlinear aeroelastic code
https://imperial.ac.uk/aeroelastics/sharpy
BSD 3-Clause "New" or "Revised" License
122 stars 58 forks source link

Twist direction inconsistent #212

Closed DomIno0o closed 2 years ago

DomIno0o commented 2 years ago

Hi,

Describe the bug The aerodynamic twist is applied in the wrong direction according to right-hand rule (positive twist results in downwards rotation of airfoil). This is also inconsistent with the structural_twist, which is applied with positive structural_twist resulting in upwards rotation of the beam section/B-FoR.

To Reproduce Input positive twist, negative rotation can be seen in AerogridPlot.

Expected behavior Twist rotation should follow right hand rule and should be consistent with structural_twist such that positive twist results in upwards rotation of the airfoil.

Additional context The issue arises because twist is applied before the rotation around the local (B-FoR) z-axis by -rot_angle in generate_strip() in aerogrid.py (line 557-562) (angle between inflow and y-axis in B-FoR around z-axis in B-FoR). I don't quite understand what this rotation is for. My initial guess was that UVLM requries the aerodynamic grid lines to be parallel to the inflow but as sweep rotation is applied after rot_angle this does not seem to be the case. One aspect that is realised by the rotation is mirroring of the airfoil, which is necessary because the coordinates in xFoil style (as well as Naca airfoil formulas) are opposite to your definition (xFoil: leading edge shows towards negative x-direction, SHARPy: leading edge shows towards positive y-direction (B-FoR)). However, in my eyes this requires a constant rotation of 180° independent of inflow angle.

ACea15 commented 2 years ago

Hi Dominooo,

What you describe is correct. However, right-hand rule does not apply for the twist, the convention is to be consistent with a nose-up or nose-down movement in both left and right wings. If the right-hand rule was to be applied, one wing would pitch up while the other down, with the same value of twist. As you might have noticed, a positive twist leads to a nose-down grid in SHARPy, which might be different from other codes but what is important is that the code takes care of applying this consistently regardless of the wing reference frame (in the very LoC you pointed out), i.e. whether it is the left or the right wing. We should probably document this convention better. The aerodynamic grid can be indeed rotated with the aero sweep variable. I dont think you need to change this value from the default 0, so that your grid panels align in the x-direction that represents your airfoil. But what you say is right, the y-direction in the B-frame is usually defined towards the leading-edge, it can be changed with the delta_for. I would need more details as to what is the problem with the airfoil definition.

DomIno0o commented 2 years ago

Hi ACea15,

thanks for your answer. That does make sense.