VSPAERO stability increments

39 views
Skip to first unread message

Brian Davis

unread,
May 4, 2026, 5:08:33 PM (10 days ago) May 4
to OpenVSP
With the upgrades to vsp/vspaero, the hardcoded increments applied for steady stability calculations changed. i.e.

Delta_AoA_
Delta_Beta_ 

etc in vspaero.C.

They used to be (pre the major upgrades in 3.46 I think) a couple orders of magnitude larger (Delta_AoA was 1.0, now 0.01 deg). 

Is there any background behind this change? 

I'm noticing on my geometries that the stability derivatives are no longer as reliable, and I'm reverting back to other solvers (e.g. vorlax) and getting better comparison with higher fidelity codes (cart3d).

I'm trying to use the output of the stab solutions for early surface unit loads and the perturbations do not produce sufficient response to compute deltas. I can just specify the deltas manually as one-off runs, but the steady stability options convenient. 

For now, I've just patched the file with higher values of the deltas and recompiled and am getting "better" results especially for surface pressures, but I'm wondering if I'm missing something more fundamental in why they were changed to begin with and if there is any reason I should not do this.

Thanks,
Brian

Rob McDonald

unread,
May 4, 2026, 5:15:56 PM (10 days ago) May 4
to OpenVSP
My main recommendation is that you should now use the adjoint stability mode -- it should compute the exact derivative from VSPAERO's point of view.

I believe the deltas were shrunk as a part of testing the adjoint mode -- they got better agreement in general.

One thing to be sure.  When looking at small changes (whether finite or using the adjoint), it is especially important to make sure that your wake is sufficiently converged.  The default tolerances and wake settings are pretty coarse (and generally good enough), but they may not work as well when making small comparisons.

Rob

Brian Davis

unread,
May 4, 2026, 6:58:36 PM (10 days ago) May 4
to OpenVSP
Thanks for the quick reply and suggestions.

I haven't tried the adjoint stability mode, other than just now. Though it hung for quite some time and then failed:

ERROR 7: Could not open Stab file: {/path/to/}aircraft.adjoint.stab
File: /Users/runner/work/OpenVSP/OpenVSP/src/geom_core/VSPAEROMgr.cpp Line:3297
ERROR 7: Could not open Slice file: {/path/to/}aircraft.slc
File: /Users/runner/work/OpenVSP/OpenVSP/src/geom_core/VSPAEROMgr.cpp Line:4319

and the vspaero console prints:
NumberOfMeshLevels: -502705408
libc++abi: terminating due to uncaught exception of type std::bad_alloc: std::bad_alloc
Done    

The forward solve seemed to go through just fine. I'm less familiar with this workflow, so I can self serve a bit here unless this is allocation error means something obvious to you.

With respect to just manually running the cases I need using vspaero directly, I can specify Mach/Alpha/Beta directly using the `-fs` command line argument, but I don't see any way to specify rates p/q/r other than through the steady stability output. I need those surface pressures for unit loads. Any ideas?

Rob McDonald

unread,
May 5, 2026, 11:19:10 AM (10 days ago) May 5
to OpenVSP
I just ran a super simple case with unsteady adjoint - and it worked fine.  So, there must be something about your case that is causing it to not work.  I suggest you start with something very simple and add in the more complex features of your model progressively.

You might be able to run a generic unsteady run with a groups file -- and specify the motion in the groups file.    However, if you're after the pqr derivatives, the best way right now is to run in the unsteady pqr modes.

Rob
Reply all
Reply to author
Forward
0 new messages