OpenVSP 3.32.0 Released

Perspectives could vary on this release — some may say too soon, others may say long overdue. I suppose it depends on what features you’re most interested in.

Note: If you use the OpenVSP structures capability, make backup copies of your files before updating to this version. There are a bunch of file format changes that will not be backwards compatible. There is a chance of bugs in the new version. So, make a backup to be safe and then help me shake out any bugs in this version.

The last release was three and a half months ago and while there could have been a release sooner, it did not seem like there was enough progress to warrant an update. Now that it is all pulled together, this release looks huge.

FillMass is a feature that was developed in 2016 and never got released. It computes running totals of mass properties (mass, volume, cg, and inertias) as the slicing integral progresses. Along with an option to allow choice of direction for mass slicing, this feature can be used to compute the volume, mass, cg, and inertias of the fuel in a tank as it progresses from empty to full. You probably don’t need this feature, but if you’re worried about fuel driven cg movement and want to generate a cg envelope, then this is for you.

Mousewheel zoom behavior has been changed to be a zoon/scroll rather than a pure zoom. Give it a try.

VSPAERO has been updated, but mostly updates and fixes to the adjoint capability that is under development. Not much for normal users this time.

There is a new mode for Stack and Fuselage components to better allow modeling of engine flowpath. Before, one could build a model with a single representation of the engine flowpath (one of several). This representation is usually tied to the needs of some analysis tool. Changing to a different representation was very difficult. The new integrated flowpath modeling feature makes it easy to build a model once and then change the flowpath representation at a later time.

In related work, the area slice tool was given the MeasureDuct option that will calculate the cross sectional area of a negative volume inside a positive volume. While this may seem like a strange request, it will allow calculation of the flow area through an engine modeled with negative components. Hopefully this works for Andy.

The Analysis and Results managers worked on a basis of name-value pairs. These have been extended to name-value-documentation triples. An API has been created to provide access to the documentation and all analysis inputs and results outputs have been documented. This should make it easier for API users to access OpenVSP analysis capabilities in a general manner.

I’ve received some great feedback from users of the improving structures capability (Thanks Bryan, Jeff/Sandra/Marc, and James). Also a big shout-out to PyNastranGUI for providing a means for me to check a lot of these changes. It is developed by OpenVSP user Steve Doyle.

As this release came together, I decided I would spend a week fixing as many of the small issues they have found as I could. After the end of that week, one of these users asked for ‘one more fix’ for something I have been avoiding. Instead of a quick fix, this one required a significant design change. Eventually I decided to spend a day to see how bad it was — a week and a half later, I finally have it sorted.

That said, there is a chance I missed something or messed something up. These changes required incompatible file format changes (structures only). So, make backup changes and then give this version a good shakedown before committing fully.

Most of the small structures stuff was on the NASTRAN side and CalculiX users might not even notice a difference. Some data fields were not written correctly, elements and nodes were not indexed from one, material property orientation was calculated wrong, BCs written using a different form, split output to *.dat and *.bdf files, etc.

Structures subsurfaces could not be used to keep a limited area of skin while deleting the rest (say for an aileron). This has been fixed, but the previous (shell, beam, shell and beam) option has been separated into two options (keep or delete shell) and (generate beam T/F). When combined with the subsurface (inside, outside, none) option to control how it is applied, this should enable all desired modes.

Structures fixed points should now appear first in the output files and should appear first in the node index order. Furthermore, they should appear in a consistent order as changes are made. This should make it easier to work with the files for things like applying point loads.

The FEA output files (to NASTRAN or CalculiX) can now be prepared in a different scale than the primary aircraft model. This will allow the aircraft designer to work in one set of units (say ft or m) and the structures designer to work in a different set (say in or mm).

Material properties and shell/beam properties can now be input in user-defined units on a per-quantity basis (not just selecting a consistent set). This will allow density to be input in familiar units like lbm/in^3 instead of slinch/in^3 (lbf sec/in^4).

The built-in properties for metals have been updated to correspond to a more appropriate source of aerospace data. Material’s now have a description field where the user can add an extended set of notes about the applicability and validity of the data.

Material and Property association (part X uses beam Y made of material Z) is now done with permanent ID’s instead of array index position. Users had been experiencing bugs where these associations would (seemingly) randomly change. This new approach should resolve any such problems.

OpenVSP will attempt to map your material/property index values to the new ID based approach. However, this might not be perfect. When you open an old file in this version, be sure to check your part/property/material associations.

There are too many other changes to detail, check out the list below and give it all a try.

Everyone should update. Structures users will see a lot of benefit — but they also have some risk with this version. If you use structures, make backups of your files before moving to this version. Once you make the change, give things a thorough once-over before trusting everything. Let me know if you run into issues.


  • Add new engine representation modes to Stack and Fuselage
  • Add documentation to AnalysisMgr and ResultsMgr
  • Add MeasureDuct option to measure negative inside positive area
  • Add subsurface tagging option to Export non-intersected files
  • Add thick/thin flag to vspgeom files — disabled for now
  • Add degen surface support to CFDMesh
  • Add FillMass to mass properties calculations
  • Change MassSliceX to MassSlice – direction independent
  • Merge degenGeomMassSliceX into MassSliceX, eliminating duplicate code
  • Improved mousewheel zoom/scroll functionality, thanks iforce2d

Structures Improvements

  • Write fixed points before other nodes
  • Start node numbering with fixed points
  • Clean up NASTRAN file headers
  • Be less aggressive calculating node/element offsets
  • Improve shell/beam options to clearly enable all combinations
  • Write NASTRAN constraints as SPC1 instead of as part of GRID points
  • Separate NASTRAN output to *.dat and *.bdf
  • Allow FEM units to differ from OpenVSP Model units
  • Allow materials and properties to be input in independent units
  • Track material and property associations by ID instead of index
  • Add description field to material properties
  • Update metal properties to more authoritative aerospace reference
  • Consolidate FeaPart to use simplified subsurface shell flags


  • Fixed VSPGeom viscous drag calculations for wings in VLM mode
  • Unsteady ADJOINT bug fixes, including derivatives wrt rotor RPM
  • Added rotor efficiency as an explicit adjoint objective function
  • Exposed Forward and Adjoint solver matrix – vector, RHS to API
  • Exposed Adjoint partial wrt mesh and wrt solution components to API
  • Replaced if statement cut-offs in Biot-Savart law for near-zero radius distances with a ‘smoother’, core ‘like’ model
  • Kill off dead code in Viewer
  • Move sprintf to snprintf to silence clang warnings

Library Updates

  • Updated stb image library


  • Expand max cl design for 6-series airfoils
  • Add vspaero binaries to MANIFEST, should help Python install
  • Fix example Python scripts for Swig change affecting ErrorMgr getInstance()
  • Fix conformal component with area parameterization of XSec
  • Fix CFDMesh file export extensions
  • Cleanups and fixes to MeshGeom
  • Empty meshes not written to key files.
  • Change sprintf to snprintf to silence clang warnings
  • Typo fixes from Luz Paz

Structures Fixes

  • Fix crash when clicking on Structure header
  • Fix NASTRAN material theta calculation
  • Fix NASTRAN MAT8 density written to wrong field
  • Always start FEA element counting at 1
  • Eliminated use of BuildIndMap, switching to nanoFlann instead
  • Fix bug visualizing QUAD8 elements
  • Don’t write un-used nodes to FEM files
  • Do not allow spaces in material names for CalculiX *.inp files
  • Better handle -0.0 in NASTRAN formatted output
  • Ensure NASTRAN grid points are never -0.0
  • Fix various GUI crashes

Comments are closed.