OpenVSP 3.22.0 Released

After more than three months of cooking, we have a little big release…

OpenVSP generally follows a version of the major.minor.patch versioning system. Major numbers are reserved for really big changes — like the first open source release, or fundamental re-writes that cause input file incompatibility. Minor numbers typically accompany a bunch of features and also updates to the packaged libraries. Patch updates mostly contain bug fixes, but some features always creep in.

It may not look like it to everyone, but this release has a lot to it. Even so, I nearly released it as a patch release 3.21.3 – mostly because a lot of what is here is building to more things down the road. My excitement for what is to come makes me see these changes as a bit less. However, this release does include a small update to Code-Eli, so anyone building it themselves needs to watch for that.

The big change that most users will notice is that OpenVSP should now update significantly faster for complex models. The model Update() routine has been substantially restructured to be much smarter about what needs to be updated depending on which Parm was changed. It also caches more intermediate results to allow a variety of shortcuts when warranted.

This change required major surgery. This does not come without risk. Several volunteers have been testing this for a while, but there is still a chance that something is not right. The most likely problem to watch out for is something doesn’t update when you think it should. Keep an eye out and if you have any problems, please post a bug report to theGoogle Group.

BTW, if you aren’t aware (or subscribed) to the Google Group, it is the best place to ask questions or discuss OpenVSP.

Another big change is a big update to MeshGeom & Friends. (CompGeom, Mass Properties, Area Slice, Wave Drag, etc. These now support ‘negative’ components. The user can designate one or more Geoms as ‘negative’ and instead of contributing to the OML as a union (addition), they contribute as subtraction. CFDMesh has had this capability for some time and CAD export recently joined in the fun. Now MeshGeom & Friends can poke holes in your model too.

Negative component support for MeshGeom was actually a step towards another feature in this version. The ability to meaningfully handle non-watertight surfaces. Some may view non-watertight surfaces as a bad thing — but they don’t have much imagination. OpenVSP has long used non-watertight surfaces to represent things – actuator disks and wakes in CFDMesh, structures in FEAMesh, etc. CompGeom can now work with thin (non-watertight) surfaces mixed with thick watertight bodies. The thin surface representation is derived from the plate or camber Degen representation. So, CompGeom can now process a geometry with (for example) the wing, tail, and propeller surfaces modeled as thin camber surfaces and the fuselage and other things modeled as thick bodies. If this doesn’t excite you, that is OK. Wait for the next version, it will be cool.

A new file format has been defined and set up for export from MeshGeoms and CFDMesh. The *.vspgeom file is similar to a *.tri file, but it adds some information. The surface u/v parameter values are provided at polygon vertices. This means they can be multi-valued where two objects intersect. Although files currently will only contain triangles, the format will represent arbitrary polygons. Furthermore, wake edges are explicitly defined in this file, so downstream analysis programs don’t have to use heuristics to detect them.

For those of you still reading, one cool update is that various tables throughout the GUI now have resizable columns. So no more frustration because the columns are all the wrong size. Just resize them.


  • Faster Update complex models should update more quickly than before.
  • Negative components to MeshGeom & Friends.
  • Thin (non-watertight) surface support for CompGeom.
  • vspgeom file export.
  • Enhanced wedge airfoil type (requested by Mike W. and Liam M.).
  • Print out search path for VSPAERO (thanks Jason W.).
  • Expand API to set VSPAERO search path.
  • Updates to Python tools from Uber team.
  • General code cleanups.
  • API test framework for CFDMesh.
  • Build support for Matlab API. Adds VSP_ENABLE_MATLAB_API CMake flag.
  • Improved FEA Structure spar parameterization (suggested by Mischa P.).
  • Option to rotate FEA Structure ribs with dihedral.
  • Lots of API additions and cleanups.
  • Tables now have resizable columns.
  • Trimmed CAD intersection curve tolerance control.
  • Automatic actuator disk hub diameter.

Bug Fixes:

  • Improvements to automated build process.
  • Fix cross platform browser launching.
  • Fix bug in unit conversion in Python tool.
  • Tag CFDMesh surfaces even when SubSurfaces are not intersected.
  • Fix problems with SuperEllipse XSec Type.
  • Bookkeeping for point masses in Mass Properties.
  • Fix API update issues for VSPAERO, Wave Drag, and Parasite Drag.
  • Many other fixes.

2 thoughts on “OpenVSP 3.22.0 Released

  1. Unable to access Open VSP Ground school chapters, can any one please help me with this.

    Thank you

  2. Any tips for installing OpenVSP in OpenSuSE LINUX? I have never succeeded. I asked our IT guy to try and he had issues too (see below):

    No luck so far. I’m following the build instructions at
    The first try was to pull the source from git and try to build without installing anything else. It got pretty far, but complained that FLTK was missing.
    At the top of the instructions is a line that starts with “apt-get” which lists what packages you need to build OpenVSP. I was able to install a few of them, but 8 packages were not available. I suspect we would have to find and build each missing package to be able to build the whole thing.