VSPAero Stability File Output - Moment Coefficients

3,372 views
Skip to first unread message

David Saracino

unread,
Sep 28, 2020, 2:10:27 PM9/28/20
to OpenVSP
Rob and Brandon,

I asked a question similar to this during the excellent OpenVSP workshop you guys put on a few weeks ago. Great job; very helpful. I said I would provide more detail via a conversation on the Google Group so we could have a bit more of a conversation on the topic.

I'm hoping you could provide some more info on this for me. My original question was in regards to moment coefficient signs in the .STAB files. Why does a simple sign flip transform the moment coefficients b/t body and wind axes (IE: -Cmx = Cl & -Cmz = Cn)? I guess I'm assuming this is a transform to another axis system but I remember Rob mentioned Kinney said Cm, Cn, and Cl are still in body axis so I'm a little confused. Could you provide a bit more background/detail on these values to straighten me out?

Thanks for the help guys.

David

David Saracino

unread,
Sep 30, 2020, 11:53:35 AM9/30/20
to OpenVSP
Rob,

To add a bit more detail on the original question. Here's a link to a past question you answered:  https://groups.google.com/g/openvsp/c/d_JD1tSRlbo/m/MZIgF7h0AwAJ

You discussed the forces/moments as such:
"Forces & moments about body axes:
CFx          CFy          CFz          CMx          CMy          CMz          

Forces & moments about wind axes:
CL           CD           CS           CMl          CMm          CMn"

This is where I was starting to get a bit confused since I could see that -Cmx = CMl and -Cmz = CMn in the .stab file output. For an example case, say at alpha = 4 and beta = 3, I would have expected full transformations through alpha/beta rather than just a sign convention flip.

Thanks for the help guys.

David

Rob McDonald

unread,
Oct 1, 2020, 2:10:50 AM10/1/20
to ope...@googlegroups.com
I spoke with the VSPAERO developer a bit about this.

From the perspective you're coming from, CMl, CMm, CMn aren't truly in wind axes.  They have the sign convention of wind axes, but are still moments about body axes.

The issue comes to the p, q, r rotations.  Those rotations are about x,y,z.  In particular, when VSPAERO does the unsteady p,q,r pulses, they are about x,y,z.  Consequently, if you want the moment and the inertia term, you'll want the inertia about x,y,z and the moment about x,y,z to calculate the change in the p,q,r rates, etc.

It is possible to transform the moments into moments about the instantaneous wind axes.  However, in order to calculate the rate derivatives around those axes, I believe it would take a separate set of aerodynamic simulations (not just a transformation matrix).

If a case can be made for calculating additional derivatives (or transformations), I believe Dave Kinney is open to it.  However, he would want to add more columns (more derivatives) rather than correcting/changing the ones we have.  So, a clear case needs to be made -- exactly what transformation / coefficients are desired (prefer with a reference).  For example, there is this reference which may suffice -- but since it is strongly focused on wind tunnel data I am not entirely sure it applies entirely...  Or, the back cover of many old NACA reports has a cheat sheet that kinda agrees and kinda disagrees...

There are many publications with many axis and sign conventions for this kind of stuff.  If you are working towards a flight simulator, it seems to me the most direct approach is to work in body axes.

What are you trying to accomplish?

Rob



--
You received this message because you are subscribed to the Google Groups "OpenVSP" group.
To unsubscribe from this group and stop receiving emails from it, send an email to openvsp+u...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/openvsp/38dc07f8-c39d-471c-9c16-cffdbeea0e1bn%40googlegroups.com.

Mike Whincup

unread,
Oct 3, 2020, 6:05:11 AM10/3/20
to ope...@googlegroups.com
Rob

In regards to your point...

"However, in order to calculate the rate derivatives around those axes, I believe it would take a separate set of aerodynamic simulations (not just a transformation matrix)."

...I accept that the nonlinearities in the aero solution would mean that partial derivatives obtained by perturbation in each of the wind-axes that would differ from those obtained just by transformation of those obtained by perturbations in each of the body axes, however...

The primary use of these partial derivatives is in a linear model, where the validity of linear summation is already assumed.

With this in mind, I would think it is preferable to 'solve once', and transform for the 'motion parameter columns' and the 'force and moment rows' to ensure coefficients are consistent between the two coordinate systems.

The provision of...
body-axis angular rate -> body-axis moment coefficients 
...in the 'Wind axes' section is quite misleading, I think. 

Given that these entries are also essentially redundant, I would very much appreciate the VSPAero author consider replacing these with Wind-axes moment coefficients for motions defined in Wind-axes.

Kinds regards

Mike Whincup


David Saracino

unread,
Oct 5, 2020, 4:30:14 PM10/5/20
to OpenVSP
Rob,

Thanks for your well thought out response and checking with the developer. What I'm trying to accomplish is some level of OpenVSP model validation using wind tunnel or other reference data. The majority of stability derivative data I have is in stability axis and I want to make sure I'm comparing "apples to apples" (as best as possible). I would expect the reference data to be a bit different from the VSPAERO output but I'm using it to gauge the validity of my model output data. This is what triggered the question inquiring about the axis system the data output is in.

The air force document (pgs. 12 - 13) you referenced above is what I would be used to using to transform the body axis data to wind axis (stability as well, but would have beta=0). That reference is applied to wind tunnel data but I've seen the same transformations used with flight test data so I would think they would work for our purpose. (Flight Test axis transformation is on page 69 of the document (PDF page 89))

For the time being, I'm mainly concerned with the forces and moments being in the appropriate axis (for comparison sake) so I don't have a problem with the validity of transforming the rate derivatives (p,q,r). I can do the force/moment transformations manually but I'd be curious if its something the community would be interested in requesting be an output in a future release. Would definitely be helpful to me.

My original question focused on the axis of the moments but what about the aero forces (CL,CS,CD)? I ran a case study by sweeping alpha/beta with the VL solver then conducting the appropriate axis transformations. I can re-derive values of CL/CS/Cm that are very close to VSPAERO output but CD is different from CDi. (I'm not comparing to CD0 or CDtot as I've gathered from your past posts that these are not outputs from VL or panel code) My computations of Cl/Cn are a bit different as well. (I can supply my Excel file if that would help out.)

Any additional thoughts/information you can provide on the computation of the aerodynamic forces (especially CD)? I look forward to your thoughts and really appreciate your help on this.

David

nicco.m...@gmail.com

unread,
Oct 6, 2020, 2:59:46 AM10/6/20
to OpenVSP

I also recently encountered the issue of transforming the stability derivatives from one set of axes to another, and I found this document which for me was really helpful (was the most complete I could find, since it gave formulas for the transformation of all derivates from any set of axes). Hope this might be of some help to anyone.

Nico

deenri...@gmail.com

unread,
Nov 22, 2021, 5:36:01 PM11/22/21
to OpenVSP
Reviving an old thread, just to get clarification on the direction of the axes:
VSP's body-axes is +Xaft, +Yright, +Zup. 

Then there is a rotation to the stability axes, which changes the forces Cfx, Cfy, Cfz to CD, CS, CL.
Am I correct to assume this new axes is +X foreward, +Yright, +Zdown. This rotation changes the sign of the Cml and Cmn moments. 
Except the CD and CL values are multiplied by -1 to keep these positive always?
In my independent studies I've found that the body forces also undergo a rotation about alpha to reach the stability axes.

What sort of transformations are applied to the dynamic stability derivatives? Just alpha? or both alpha and beta?
According to this nasa report the dynamic derivatives are supposed to undergo a slightly different rotation than the static derivatives. 

Thank you

Rob McDonald

unread,
Nov 23, 2021, 1:00:51 AM11/23/21
to OpenVSP
At one point, VSPAERO does this...

CL_[LoadCase] = (-CFx_[LoadCase] * SA + CFz_[LoadCase] * CA );
CD_[LoadCase] = ( CFx_[LoadCase] * CA + CFz_[LoadCase] * SA ) * CB - CFy_[LoadCase] * SB;
CS_[LoadCase] = ( CFx_[LoadCase] * CA + CFz_[LoadCase] * SA ) * SB + CFy_[LoadCase] * CB;

By considering zero alpha and zero beta...

CD is basically aligned with CFx
CL is basically aligned with CFz
CS is basically aligned with CFy

This all makes sense with the body axes as described above.  So, VSPAERO's CFx,CFy,CFz are in VSP's body axes.

Elsewhere it does something like this...

CMl = -CMx();
CMm = CMy();
CMn = -CMz();    

So, the CMx, CMy, CMz are still in VSP's body axes, but the CMl, CMm, CMn follow more conventional aviation sign conventions.

So, the signs are changed -- but there is no complex cosine / sine transformation applied to moments

The unsteady analysis outputs things like CMl_(q + alpha_dot) because the analysis of the unsteady motion does not provide the terms individually.  You can take the steady CMl_q from the other stab analysis and subtract it out to separate the CMl_alpha_dot -- but since these terms show up as a sum in the equations of motion, there really isn't a need to separate them out.

Hope this helps,

Rob

Franco Staub

unread,
Jun 23, 2022, 7:09:32 AM6/23/22
to OpenVSP
Rob,

First off, I'm a huge fan of OpenVSP and deeply appreciate your work!

With that out of the way, I am currently bridging VSPAERO's steady stability analysis results into a Simulink/X-Plane simulation environment I have developed. I am using the Aerodynamics block (documentation here), to convert the VSPAERO wind axes coefficients to body axes forces and moments. Unfortunately, this block only allows the user to select one reference frame for the both the input forces and moments. I know of work-arounds to this, but wanted to confirm my understanding before going down those paths.

If I read this thread correctly, the moments CMl, CMm, and CMn are not actually in the wind axes, rather they are just the body axes moments with the signs flipped for the X and Z (body frame) directions. First of all, is this correct?

If so, my follow-up question is why don't we use the true wind axes moments since stable aircraft tend to roll, pitch, and yaw about these axes, rather than the body axes? 

Thank you in advance and cheers from Tokyo.
Franco

Rob McDonald

unread,
Jun 23, 2022, 12:24:21 PM6/23/22
to OpenVSP
In any sort of aero code (CFD or potential flow), it is generally much easier to sum forces and moments in the un-transformed XYZ frame.  So, pretty much all codes calculate first in body axes.

Then, if needed, transformations are done into wind axes.

Short-time linearized dynamic analysis is often done in wind axes -- or more properly, stability axes.  Everything is linearized about a known equilibrium point - the analysis is done in terms of perturbations from that equilibrium.

For long-time simulation, it generally makes more sense to me to work in body axes.  You aren't working in terms of perturbations from a long-ago initial state.

I am not convinced that 'stable aircraft tend to roll, pitch, and yaw about wind axes'.  Most aircraft have some degree of coupling between the axes -- is roll/yaw coupling just a sign of rolling about a different axis?

You want the aircraft to 'feel' uncoupled - but does the pilot 'feel' roll about a body axis, or about the wind axis -- with pitch and sideslip, this is some vector that is non-parallel to  anything.  Pilot 'feel' is certainly relative to body axes.

Rob

Franco Staub

unread,
Jun 23, 2022, 9:28:46 PM6/23/22
to ope...@googlegroups.com
Rob,

Thank you for the thought-provoking reply.

That makes total sense about the ease of calculation for CFD codes. 

In my case, I am working on long-time simulations, so my plan was to either switch to using the body axes coefficients for everything, or to convert the moments to wind axes and then reconvert everything to body axes in the equations of motion portion of the model. The former is obviously more efficient, but as someone with an aerodynamics background, I prefer the visibility of having everything in wind axes when laying it all out in Simulink. For example, in my design (30 deg. swept flying wing) I found that CMn from ailerons (adverse yaw) decreased with increasing angle of attack. This is not the case for the true wind axes CMn value and goes against my (possibly incorrect) intuition that adverse yaw worsens with increasing angle of attack. I don't know, just a thought...

Regarding this statement:
I am not convinced that 'stable aircraft tend to roll, pitch, and yaw about wind axes'.  Most aircraft have some degree of coupling between the axes -- is roll/yaw coupling just a sign of rolling about a different axis?
Truthfully speaking, I wasn't either. I was re-stating something I read somewhere. I guess the reality is that there is some non-orthogonal, coordinate system about which the aircraft truly rolls, pitches, and yaws; and that this coordinate system changes skewedness with flight conditions - which is just a useless, long-winded way of saying "the 3 axes are coupled".

And yes, the pilot feels things in the body axes. The problem is I was taught to think in the wind axes. :-)

Have a great day!
Franco


You received this message because you are subscribed to a topic in the Google Groups "OpenVSP" group.
To unsubscribe from this topic, visit https://groups.google.com/d/topic/openvsp/Pb93zCFufJA/unsubscribe.
To unsubscribe from this group and all its topics, send an email to openvsp+u...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/openvsp/c5916cef-444f-4067-99d9-55d77115bb40n%40googlegroups.com.

Rob McDonald

unread,
Jun 24, 2022, 1:10:39 AM6/24/22
to ope...@googlegroups.com
I would propose you make codes talk to each other (directly) in body axes and process results into wind axes for your intuition checks.

One of the tricky parts of intuition for stability derivatives -- there is a counterexample for every rule of thumb.  The only sane way forward is to establish your own confidence with a tool and your process with it -- and then trust that tool.  Of course while keeping a skeptical eye.

Rob


Franco Staub

unread,
Jun 26, 2022, 12:54:37 AM6/26/22
to ope...@googlegroups.com
Rob,

Thank you for the sound advice. What you described about creating a dependable tool is what I have been living through for the last couple months - specifically, a tool using VSPAERO data. It helps to get your affirmation on this approach.

I have one additional question that I guess is relevant to this thread since it involves stability derivatives and sign conventions. I know you warned against trying to intuit your way through stability derivatives, but please bear with me one more time.

I am getting some strange effects in my VSPAERO-based flight simulator. My pitch dynamics work wonderfully, but the lateral-directional model shows unnatural behavior, so I did some digging and isolated Cnp and Clr as suspects.

So we are on the same page, let's use the default wing in OpenVSP at a moderate AoA of 5 degrees as an example, and assume the same right-handed coordinate system for both the moments and angular rates. Given this information, we expect that Clp and Cnr will be the opposite sign of Clr and Cnp.

Yaw and roll will be dampened by the first two terms because a positive P rate gives a positive L moment, and the same is true for R and N. However, a positive P rate should create a negative N moment, and similarly, a positive R rate should create a negative L moment. I don't see why VLM or panel method aerodynamics would disagree with this since these phenomena are lift- and induced-drag-driven in nature.

I have a feeling that 1) I am overlooking something stupid, or 2) there might be a sign error for the CD results (see the image for explanation)

What are your thoughts?

Thank you always for your time.

All the best,
Franco

VSP_stab_query.PNG

Rob McDonald

unread,
Jun 26, 2022, 1:43:04 AM6/26/22
to ope...@googlegroups.com
In my experience, the more subtle the derivative, the harder it is to intuit...

I know this was just for illustration purposes, but I would encourage you to use more spanwise resolution -- you will find the load distribution shape changes a reasonable amount just from that.

If I were trying to think through from basics, I would start with a straight, un-tapered wing.  And I would set the reference point to the quarter chord.  With default settings, OpenVSP will put the reference point at the nose of the airfoil.  You have some amount of camber here, I ran a case with a NACA 2412 airfoil and got similar - but different results.

I would be tempted to start with a symmetrical airfoil.

One problem I believe you are facing is that you are looking at a very small contribution - the induced drag itself is small, changes in it are small, its contribution to the rolling moment is small, etc.

In particular, lateral-directional moments are dominated by the vertical tail.  Often handbook methods (Datcom, Smetana, etc) will ignore the contributions to these derivatives for the main wing.  When you have a wing-only configuration, you can't ignore it -- but the part you have is small (usually ignored) and defies intuition (usually ignored).

So, after working with a hershey-bar wing, I would then slap a tail on it and see how things work out.

Rob


Franco Staub

unread,
Jun 26, 2022, 2:57:52 AM6/26/22
to ope...@googlegroups.com
One small correction to the above image: the legend on the right should read "a=5 b=0 p=0" for red and "a=5 b=0 p=1" for yellow.

Attached are the same results with a higher tessellation, unswept, constant-chord wing using a NACA 0010 airfoil. The results for the NACA 2412 show that the same trend - that of decreased local drag despite increased local lift - persists.

The reference points for my examples were set to the aerodynamic (where the CMy-alpha curve is more-or-less flat). Moving the reference point forward and aft of the aerodynamic center did not affect this trend.

I agree a tail would solve this problem, but I am working on a tailless design (images). The baseline shape was taken off VSP, but the slats and landing gear are modeled from wind tunnel data. Yes, the drag increments are small, but with the low directional stability at medium to high angles of attack, and low drag to begin with, these drag increments seem to make a difference. If I "turn off" the Cnp and Clr in my simulation, the aircraft handles nicely. 

Franco

VSP_stab_query2.PNG
FS8_capture3.PNG
FS8_capture1.PNG
FS8_capture2.PNG

Rob McDonald

unread,
Jun 26, 2022, 1:58:21 PM6/26/22
to ope...@googlegroups.com
Have you included the winglets in your analysis?  The point of winglets on a flying wing is generally to ensure lateral directional stability -- VSPAERO should capture them well.

If you're still doubting the results, I would encourage you to throw together a quick AVL model of the hershey bar (and then the swept wing).

My team at Uber did this a few years ago (comparing VSPAERO to AVL for a detailed stability derivative question).  We ended up with a difference in yaw that we could not explain.  One of the team chased it down to a particular term in the force/moment summation in AVL's code.  He contacted the AVL devs to try to get to rock bottom.  The explanation ended up being a difference in how AVL and VSPAERO handle wakes -- AVL's wakes always trail in the X direction -- aligned with panel edges and always in straight lines.  VSPAERO's wakes can shed at an angle influenced by alpha and beta -- and also relax to the wake shape.  I don't think this is the same thing (you aren't yawing, which was central to the other case), but certainly comparing to other available tools is a good way to ground yourself.

Have you run the VSPAERO unsteady roll analysis?  It should give essentially the same result (since there is not an alphadot or betadot term) but from a fundamentally different approach.

Finally, are you aware of how a tool like VSPAERO models a steady roll?  Recall that potential flows are a superposition of fundamental solutions.  In a normal case, the strengths of the solutions on the body are summed to equal the RHS.  The RHS captures the influence of the freestream on every panel -- these must be equal and opposite to achieve flow tangency.  For a steady roll, the exact same thing is done, but instead of just a uniform freestream, a swirling component is added everywhere.  So, instead of rolling the airframe, the entire universe spins about the aircraft.

Through this, an unsteady flow in the frame of an observer on the ground is transformed into a steady flow in the frame of the rotating body.  This is a cool trick for rolling aircraft, but it also works (and makes a little more sense) for propellers in isolation.

The unsteady stability analysis on the other hand does a roll, pitch, or yaw pulse and then post-processes the results from that to calculate the derivative (with an additional unsteady term).

Rob


Franco Staub

unread,
Jun 28, 2022, 2:45:56 AM6/28/22
to ope...@googlegroups.com
Rob,

Yes, the winglets are included in the VSP model, and they do provide decent stability at lower angles of attack. But this stability is reduced at higher angles of attack, probably because the winglet sweep is effectively increased. Note also that I have the 2D stall model (Clmax = 1) turned on during the stability analysis. This should not affect the Cnp or Clr at low AoA though.

I made an attempt at getting the same data in XFLR5 yesterday. I got some results, but I don't think they are accurate because I get a few errors in the run log (still learning - and not a fan of the UI compared to VSP). Also, I couldn't figure out how to view the drag and lift distributions with angular rates. From what I understand, their built-in stability analysis works more like the unsteady P Q R analyses in VSPAERO - a response to some perturbation. Anyhow, I will try again when I have the bandwidth (mid-PhD-thesis-writing at the moment).

And yes, I have a general understanding of potential flow methods. I wrote a basic 2D code, and have written several 3D mesh-generation codes for an in-house panel method code, as well the code integrating the mesh with the solver. I can't say I'm a potential flow expert, but I can follow what you wrote clearly.

The thing that will keep me up at night is still the question of "how can there be reduced drag at a give spanwise station, despite an increase in angle of attack and lift?" The universe puzzles me.

All the best,
Franco

PS: Happy to show you the VSP=>Simulink/X-Plane workflow/model I have developed. I'm trying to minimize the number of buttons you need to push going from VSP to a flyable model in X-Plane. Could be useful for education, early-stage design, "first-take" FHQ evaluation, etc. Email me directly if this sounds interesting.


Rob McDonald

unread,
Jun 28, 2022, 1:20:59 PM6/28/22
to ope...@googlegroups.com
I was not suggesting AVL for a complex case -- you might not even need to compare the load distributions.  But you could run a Hershey bar wing and compare the overall moment coefficients.  If they generally agree, then it seems that there is a problem with your intuition on this case.

Truth is, wind axes in a rolling case are a pretty strange concept.  You must choose a single 'freestream' direction.  For a rolling case at zero-alpha and zero-beta, this will be the +X direction.

However, at the wingtips, the flow is not parallel to the freestream direction.  However, CL and CD are still resolved according to a +X freestream.

Let us assume that the local lift and drag are perpendicular (and parallel) to the local freestream -- if we want to think about the wing sections in a very 2D like way.  Also if we want to think about drag should always be positive and induced drag should increase with lift (even though induced drag is not a 2D phenomena).

Locally, at a wing station r, with rotational speed omega, the velocity vector will be <V_inf, 0, omega*r > (assuming the wing is instantaneously oriented in a wings-level attitude).  The other wing will flip the sign of the Z component.

The local angle of attack will be atan( (omega*r)/V_inf ).

If you prefer to think in terms of the tip speed V_t=(omega*R), then the local AoA will be atan( (r/R)*V_t/V_inf ).

What happens to our well behaved 2d intuitive cl,cd when we resolve it in the global freestream frame?  The lift gets rotated into the thrust/drag direction.

In rolling motion, a wing is like a propeller.  Even though there is parasite drag on the foil -- and induced power loss on the propeller (induced drag), it also produces thrust...


I have zero experience with X-Plane.  I also do not have time to invest in tooling up a flight sim or going down that path.

However, I know a lot of other OpenVSP users are very interested in flight simulation.  There are lots of flight sim hobbyists who would appreciate an easier way to go from OpenVSP to a FDM in their tool of choice.  I know there are active FlightGear users who would love an OpenVSP to FlightGear / JBSim work path.

I encourage you to share your tools and to publicize your progress and results on this forum.

Rob


Reply all
Reply to author
Forward
0 new messages