OpenVSP 3.34.0 Released

Although I’ve been furiously working on lots of things, I hadn’t planned on making a release because I didn’t think I had enough stuff ready. I stepped back and took another look and realized that most of the in-work stuff was actually ready and only one big thing (that won’t be ready for a while) was not. So here is a pile of stuff for everyone to enjoy.

It was previously very challenging to get satisfactory results from V-trimming of conformal components. This was partially due to inherently complex behavior — but was exacerbated by terrible default settings. Default values for V-trimming have been improved, hopefully making the existing capability more usable. In addition, a simplified Side 1,2,3,4 approach to V-trimming has been introduced.

In addition to simplifying V-trimming, the V-parameter speed of a trimmed surface used to be very non-uniform. This erratic behavior made features like UV attachment to trimmed conformal components impossible. It also made subsequent analysis of conformal components more difficult.

This behavior has been fixed. The V-parameter speed of a trimmed conformal component is uniform and the V-origin does not shift. The V-parameter of un-trimmed portions of the component remain unchanged. This improvement has a perhaps unexpected effect — end capping is now supported for conformal components with U trimming. Most significantly, this means a trimmed conformal component can now have a rounded end.

Jason Welstead had contributed some improvements and cleanups to the CHARM Automation Python tools. While these are relatively minor changes, this serves as proof of concept for navigating the NASA release process. Look for more updates to come from Jason.

The primary meshing controls for CFDMesh and FEAMesh have been augmented with non-dimensional alternatives. The maximum edge length can now be specified as a fraction of model size (as determined by the bounding box diagonal). The minimum edge length and maximum gap can now be specified as a fraction of the maximum edge length. These changes should make it easier to get to an initial reasonable mesh and to better build intuition in the meshing parameters.

CFDMesh and FEAMesh have been augmented with visualization of the local mesh edge length criteria. Mesh parameters are determined by the interaction of multiple criteria — it is not always obvious which criteria determines the edge length at any particular location. This new visualization mode illustrates the active criteria and should make adjusting meshing parameters more intuitive.

The under-development adjoint version of VSPAERO has been ported to Windows (it was previously only available on Mac and Linux). Now that it is available on all platforms, the developers will be able to start making its capabilities generally available.

U-direction clustering control has been added to fuselage and stack components. This can be used to tailor the wireframe mesh representation or to compensate for a distorted mesh caused by skinning.

Limits on end-cap tessellation requirements have been relaxed. Before, only odd values greater than or equal to three were possible. Now, both even and odd values greater than or equal to two are possible. This will allow finer control of mesh resolution and also allow coarser representations of end caps and trailing edges.

While technically a bug fix, one fix is significant enough to almost be considered a feature. OpenVSP has long behaved erratically when more than one chord value of a given wing were updated at the same time. Although this is impossible through normal interactive use, this occurs commonly when automating some sort of design process via Design Variable support or the API. Various incantations have been tried in the past, most involving frequent calls to Update() — severely slowing any design process that involves changes to the wing chord. This issue has been fixed — or at least an official workaround is now supported.

If you need to change wing section chords from a design process, use the following recipe:

  1. Set all wing section drivers to root-chord, tip-chord, span.
  2. Use the tip-chord to set every chord value possible.
  3. Use the root-chord of the first wing segment to control the root chord of the entire wing.

This recipe should work and will only require a single call to Update() after all Parms have been set. Let me know if you have any trouble with this.

There are a few small bug fixes in this release, but this one was dominated by new features. Download and enjoy.


  • Improved V-trimming defaults for conformal components
  • Side 1,2,3,4 V-trimming for conformal components.
  • Improved skinning of V-trimmed conformal components.
  • End caps for U-trimmed conformal components.
  • Improvements to CHARM automation scripts (thanks Jason Welstead)
  • Non-dimensional CFD/FEA Mesh controls
  • Visualization of CFD/FEA Mesh criteria
  • Windows support for VSPAERO adjoint version
  • U-direction clustering control for Fuse and Stack
  • Relaxed limits on end-cap tessellation


  • Setting multiple chord values in design context.

Comments are closed.